ZGlmZiAtLWdpdCBhL2RpY3Rpb25hcmllcy9lbl9HQl93b3JkbGlzdC5jb21iaW5lZC5neiBiL2RpY3Rpb25hcmllcy9lbl9HQl93b3JkbGlzdC5jb21iaW5lZC5negppbmRleCBiM2U1Y2ZjLi45M2M1ZjNkIDEwMDY0NAotLS0gYS9kaWN0aW9uYXJpZXMvZW5fR0Jfd29yZGxpc3QuY29tYmluZWQuZ3oKKysrIGIvZGljdGlvbmFyaWVzL2VuX0dCX3dvcmRsaXN0LmNvbWJpbmVkLmd6CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RpY3Rpb25hcmllcy9lbl9VU193b3JkbGlzdC5jb21iaW5lZC5neiBiL2RpY3Rpb25hcmllcy9lbl9VU193b3JkbGlzdC5jb21iaW5lZC5negppbmRleCA2NzMyOGQ4Li5jMjQyMWRjIDEwMDY0NAotLS0gYS9kaWN0aW9uYXJpZXMvZW5fVVNfd29yZGxpc3QuY29tYmluZWQuZ3oKKysrIGIvZGljdGlvbmFyaWVzL2VuX1VTX3dvcmRsaXN0LmNvbWJpbmVkLmd6CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RpY3Rpb25hcmllcy9lbl93b3JkbGlzdC5jb21iaW5lZC5neiBiL2RpY3Rpb25hcmllcy9lbl93b3JkbGlzdC5jb21iaW5lZC5negppbmRleCA3ZmM2Y2ZmLi4zNzMyOTkzIDEwMDY0NAotLS0gYS9kaWN0aW9uYXJpZXMvZW5fd29yZGxpc3QuY29tYmluZWQuZ3oKKysrIGIvZGljdGlvbmFyaWVzL2VuX3dvcmRsaXN0LmNvbWJpbmVkLmd6CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RpY3Rpb25hcmllcy9mcl93b3JkbGlzdC5jb21iaW5lZC5neiBiL2RpY3Rpb25hcmllcy9mcl93b3JkbGlzdC5jb21iaW5lZC5negppbmRleCBjN2M2OTc3Li43ZGU0NjI1IDEwMDY0NAotLS0gYS9kaWN0aW9uYXJpZXMvZnJfd29yZGxpc3QuY29tYmluZWQuZ3oKKysrIGIvZGljdGlvbmFyaWVzL2ZyX3dvcmRsaXN0LmNvbWJpbmVkLmd6CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RpY3Rpb25hcmllcy9ydV93b3JkbGlzdC5jb21iaW5lZC5neiBiL2RpY3Rpb25hcmllcy9ydV93b3JkbGlzdC5jb21iaW5lZC5negppbmRleCA0ZjkyODA1Li4xY2ZhYjRlIDEwMDY0NAotLS0gYS9kaWN0aW9uYXJpZXMvcnVfd29yZGxpc3QuY29tYmluZWQuZ3oKKysrIGIvZGljdGlvbmFyaWVzL3J1X3dvcmRsaXN0LmNvbWJpbmVkLmd6CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2phdmEvQW5kcm9pZE1hbmlmZXN0LnhtbCBiL2phdmEvQW5kcm9pZE1hbmlmZXN0LnhtbAppbmRleCAxN2QxMWMwLi40YThiOTU1IDEwMDY0NAotLS0gYS9qYXZhL0FuZHJvaWRNYW5pZmVzdC54bWwKKysrIGIvamF2YS9BbmRyb2lkTWFuaWZlc3QueG1sCkBAIC0yMCwyMiArMjAsMjQgQEAKIAogICAgIDx1c2VzLXNkayBhbmRyb2lkOm1pblNka1ZlcnNpb249IjE0IiBhbmRyb2lkOnRhcmdldFNka1ZlcnNpb249IjE3IiAvPgogCi0gICAgPHVzZXMtcGVybWlzc2lvbiBhbmRyb2lkOm5hbWU9ImFuZHJvaWQucGVybWlzc2lvbi5WSUJSQVRFIiAvPgogICAgIDx1c2VzLXBlcm1pc3Npb24gYW5kcm9pZDpuYW1lPSJhbmRyb2lkLnBlcm1pc3Npb24uQUNDRVNTX05FVFdPUktfU1RBVEUiIC8+Ci0gICAgPHVzZXMtcGVybWlzc2lvbiBhbmRyb2lkOm5hbWU9ImFuZHJvaWQucGVybWlzc2lvbi5SRUFEX1VTRVJfRElDVElPTkFSWSIgLz4KLSAgICA8dXNlcy1wZXJtaXNzaW9uIGFuZHJvaWQ6bmFtZT0iYW5kcm9pZC5wZXJtaXNzaW9uLldSSVRFX1VTRVJfRElDVElPTkFSWSIgLz4KLSAgICA8dXNlcy1wZXJtaXNzaW9uIGFuZHJvaWQ6bmFtZT0iYW5kcm9pZC5wZXJtaXNzaW9uLlJFQURfQ09OVEFDVFMiIC8+Ci0gICAgPHVzZXMtcGVybWlzc2lvbiBhbmRyb2lkOm5hbWU9ImFuZHJvaWQucGVybWlzc2lvbi5SRUNFSVZFX0JPT1RfQ09NUExFVEVEIiAvPgotICAgIDx1c2VzLXBlcm1pc3Npb24gYW5kcm9pZDpuYW1lPSJhbmRyb2lkLnBlcm1pc3Npb24uV1JJVEVfRVhURVJOQUxfU1RPUkFHRSIgLz4KICAgICA8dXNlcy1wZXJtaXNzaW9uIGFuZHJvaWQ6bmFtZT0iYW5kcm9pZC5wZXJtaXNzaW9uLkRPV05MT0FEX1dJVEhPVVRfTk9USUZJQ0FUSU9OIiAvPgorICAgIDx1c2VzLXBlcm1pc3Npb24gYW5kcm9pZDpuYW1lPSJhbmRyb2lkLnBlcm1pc3Npb24uR0VUX0FDQ09VTlRTIiAvPgorICAgIDx1c2VzLXBlcm1pc3Npb24gYW5kcm9pZDpuYW1lPSJhbmRyb2lkLnBlcm1pc3Npb24uUkVBRF9DT05UQUNUUyIgLz4KKyAgICA8dXNlcy1wZXJtaXNzaW9uIGFuZHJvaWQ6bmFtZT0iYW5kcm9pZC5wZXJtaXNzaW9uLlJFQURfUFJPRklMRSIgLz4KKyAgICA8dXNlcy1wZXJtaXNzaW9uIGFuZHJvaWQ6bmFtZT0iYW5kcm9pZC5wZXJtaXNzaW9uLlJFQURfVVNFUl9ESUNUSU9OQVJZIiAvPgorICAgIDx1c2VzLXBlcm1pc3Npb24gYW5kcm9pZDpuYW1lPSJhbmRyb2lkLnBlcm1pc3Npb24uUkVDRUlWRV9CT09UX0NPTVBMRVRFRCIgLz4KKyAgICA8dXNlcy1wZXJtaXNzaW9uIGFuZHJvaWQ6bmFtZT0iYW5kcm9pZC5wZXJtaXNzaW9uLlZJQlJBVEUiIC8+CisgICAgPHVzZXMtcGVybWlzc2lvbiBhbmRyb2lkOm5hbWU9ImFuZHJvaWQucGVybWlzc2lvbi5XUklURV9FWFRFUk5BTF9TVE9SQUdFIiAvPgorICAgIDx1c2VzLXBlcm1pc3Npb24gYW5kcm9pZDpuYW1lPSJhbmRyb2lkLnBlcm1pc3Npb24uV1JJVEVfVVNFUl9ESUNUSU9OQVJZIiAvPgogCi0gICAgPGFwcGxpY2F0aW9uIGFuZHJvaWQ6bGFiZWw9IkBzdHJpbmcvYW9zcF9hbmRyb2lkX2tleWJvYXJkX2ltZV9uYW1lIgorICAgIDxhcHBsaWNhdGlvbiBhbmRyb2lkOmxhYmVsPSJAc3RyaW5nL2VuZ2xpc2hfaW1lX25hbWUiCiAgICAgICAgICAgICBhbmRyb2lkOmljb249IkBtaXBtYXAvaWNfaW1lX3NldHRpbmdzIgogICAgICAgICAgICAgYW5kcm9pZDpraWxsQWZ0ZXJSZXN0b3JlPSJmYWxzZSIKICAgICAgICAgICAgIGFuZHJvaWQ6c3VwcG9ydHNSdGw9InRydWUiPgogCiAgICAgICAgIDxzZXJ2aWNlIGFuZHJvaWQ6bmFtZT0iTGF0aW5JTUUiCi0gICAgICAgICAgICAgICAgYW5kcm9pZDpsYWJlbD0iQHN0cmluZy9hb3NwX2FuZHJvaWRfa2V5Ym9hcmRfaW1lX25hbWUiCisgICAgICAgICAgICAgICAgYW5kcm9pZDpsYWJlbD0iQHN0cmluZy9lbmdsaXNoX2ltZV9uYW1lIgogICAgICAgICAgICAgICAgIGFuZHJvaWQ6cGVybWlzc2lvbj0iYW5kcm9pZC5wZXJtaXNzaW9uLkJJTkRfSU5QVVRfTUVUSE9EIj4KICAgICAgICAgICAgIDxpbnRlbnQtZmlsdGVyPgogICAgICAgICAgICAgICAgIDxhY3Rpb24gYW5kcm9pZDpuYW1lPSJhbmRyb2lkLnZpZXcuSW5wdXRNZXRob2QiIC8+CkBAIC00NCw3ICs0Niw3IEBACiAgICAgICAgIDwvc2VydmljZT4KIAogICAgICAgICA8c2VydmljZSBhbmRyb2lkOm5hbWU9Ii5zcGVsbGNoZWNrLkFuZHJvaWRTcGVsbENoZWNrZXJTZXJ2aWNlIgotICAgICAgICAgICAgICAgICBhbmRyb2lkOmxhYmVsPSJAc3RyaW5nL2Fvc3Bfc3BlbGxfY2hlY2tlcl9zZXJ2aWNlX25hbWUiCisgICAgICAgICAgICAgICAgIGFuZHJvaWQ6bGFiZWw9IkBzdHJpbmcvc3BlbGxfY2hlY2tlcl9zZXJ2aWNlX25hbWUiCiAgICAgICAgICAgICAgICAgIGFuZHJvaWQ6cGVybWlzc2lvbj0iYW5kcm9pZC5wZXJtaXNzaW9uLkJJTkRfVEVYVF9TRVJWSUNFIj4KICAgICAgICAgICAgIDxpbnRlbnQtZmlsdGVyPgogICAgICAgICAgICAgICAgIDxhY3Rpb24gYW5kcm9pZDpuYW1lPSJhbmRyb2lkLnNlcnZpY2UudGV4dHNlcnZpY2UuU3BlbGxDaGVja2VyU2VydmljZSIgLz4KQEAgLTUzLDcgKzU1LDcgQEAKICAgICAgICAgPC9zZXJ2aWNlPgogCiAgICAgICAgIDxhY3Rpdml0eSBhbmRyb2lkOm5hbWU9Ii5zZXR1cC5TZXR1cEFjdGl2aXR5IgotICAgICAgICAgICAgICAgIGFuZHJvaWQ6bGFiZWw9IkBzdHJpbmcvYW9zcF9hbmRyb2lkX2tleWJvYXJkX2ltZV9uYW1lIgorICAgICAgICAgICAgICAgIGFuZHJvaWQ6bGFiZWw9IkBzdHJpbmcvZW5nbGlzaF9pbWVfbmFtZSIKICAgICAgICAgICAgICAgICBhbmRyb2lkOmljb249IkBkcmF3YWJsZS9pY19zZXR1cF93aXphcmQiPgogICAgICAgICAgICAgPGludGVudC1maWx0ZXI+CiAgICAgICAgICAgICAgICAgPGFjdGlvbiBhbmRyb2lkOm5hbWU9ImFuZHJvaWQuaW50ZW50LmFjdGlvbi5NQUlOIiAvPgpAQCAtNjksNyArNzEsNyBAQAogICAgICAgICAgICAgPC9pbnRlbnQtZmlsdGVyPgogICAgICAgICA8L3JlY2VpdmVyPgogCi0gICAgICAgIDxhY3Rpdml0eSBhbmRyb2lkOm5hbWU9IlNldHRpbmdzQWN0aXZpdHkiIGFuZHJvaWQ6bGFiZWw9IkBzdHJpbmcvYW9zcF9hbmRyb2lkX2tleWJvYXJkX2ltZV9zZXR0aW5ncyIKKyAgICAgICAgPGFjdGl2aXR5IGFuZHJvaWQ6bmFtZT0iU2V0dGluZ3NBY3Rpdml0eSIgYW5kcm9pZDpsYWJlbD0iQHN0cmluZy9lbmdsaXNoX2ltZV9zZXR0aW5ncyIKICAgICAgICAgICAgICAgICAgIGFuZHJvaWQ6dWlPcHRpb25zPSJzcGxpdEFjdGlvbkJhcldoZW5OYXJyb3ciPgogICAgICAgICAgICAgPGludGVudC1maWx0ZXI+CiAgICAgICAgICAgICAgICAgPGFjdGlvbiBhbmRyb2lkOm5hbWU9ImFuZHJvaWQuaW50ZW50LmFjdGlvbi5NQUlOIiAvPgpAQCAtNzcsNyArNzksNyBAQAogICAgICAgICA8L2FjdGl2aXR5PgogCiAgICAgICAgIDxhY3Rpdml0eSBhbmRyb2lkOm5hbWU9ImNvbS5hbmRyb2lkLmlucHV0bWV0aG9kLmxhdGluLnNwZWxsY2hlY2suU3BlbGxDaGVja2VyU2V0dGluZ3NBY3Rpdml0eSIKLSAgICAgICAgICAgICAgICAgIGFuZHJvaWQ6bGFiZWw9IkBzdHJpbmcvYW9zcF9hbmRyb2lkX3NwZWxsX2NoZWNrZXJfc2VydmljZV9zZXR0aW5ncyI+CisgICAgICAgICAgICAgICAgICBhbmRyb2lkOmxhYmVsPSJAc3RyaW5nL2FuZHJvaWRfc3BlbGxfY2hlY2tlcl9zZXR0aW5ncyI+CiAgICAgICAgICAgICA8aW50ZW50LWZpbHRlcj4KICAgICAgICAgICAgICAgICA8YWN0aW9uIGFuZHJvaWQ6bmFtZT0iYW5kcm9pZC5pbnRlbnQuYWN0aW9uLk1BSU4iIC8+CiAgICAgICAgICAgICA8L2ludGVudC1maWx0ZXI+CmRpZmYgLS1naXQgYS9qYXZhL3Jlcy9jb2xvci9zZXR1cF9zdGVwX2FjdGlvbl9iYWNrZ3JvdW5kLnhtbCBiL2phdmEvcmVzL2NvbG9yL3NldHVwX3N0ZXBfYWN0aW9uX2JhY2tncm91bmQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc5MTIwYjQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL3Jlcy9jb2xvci9zZXR1cF9zdGVwX2FjdGlvbl9iYWNrZ3JvdW5kLnhtbApAQCAtMCwwICsxLDMwIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPCEtLQorLyoKKyoqCisqKiBDb3B5cmlnaHQgMjAxMywgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorKioKKyoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisqKgorKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorKioKKyoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorKi8KKy0tPgorCis8c2VsZWN0b3IgeG1sbnM6YW5kcm9pZD0iaHR0cDovL3NjaGVtYXMuYW5kcm9pZC5jb20vYXBrL3Jlcy9hbmRyb2lkIj4KKyAgICA8aXRlbQorICAgICAgICBhbmRyb2lkOnN0YXRlX2ZvY3VzZWQ9InRydWUiCisgICAgICAgIGFuZHJvaWQ6Y29sb3I9IkBjb2xvci9zZXR1cF90ZXh0X2FjdGlvbiIgLz4KKyAgICA8aXRlbQorICAgICAgICBhbmRyb2lkOnN0YXRlX3ByZXNzZWQ9InRydWUiCisgICAgICAgIGFuZHJvaWQ6Y29sb3I9IkBjb2xvci9zZXR1cF90ZXh0X2FjdGlvbiIgLz4KKyAgICA8aXRlbQorICAgICAgICBhbmRyb2lkOmNvbG9yPSJAY29sb3Ivc2V0dXBfc3RlcF9iYWNrZ3JvdW5kIiAvPgorPC9zZWxlY3Rvcj4KZGlmZiAtLWdpdCBhL2phdmEvcmVzL2NvbG9yL3NldHVwX3N0ZXBfYWN0aW9uX2NvbG9yLnhtbCBiL2phdmEvcmVzL2NvbG9yL3NldHVwX3N0ZXBfYWN0aW9uX2NvbG9yLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNTNlMDI2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9yZXMvY29sb3Ivc2V0dXBfc3RlcF9hY3Rpb25fY29sb3IueG1sCkBAIC0wLDAgKzEsMzAgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8IS0tCisvKgorKioKKyoqIENvcHlyaWdodCAyMDEzLCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisqKgorKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyoqCisqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisqKgorKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisqLworLS0+CisKKzxzZWxlY3RvciB4bWxuczphbmRyb2lkPSJodHRwOi8vc2NoZW1hcy5hbmRyb2lkLmNvbS9hcGsvcmVzL2FuZHJvaWQiPgorICAgIDxpdGVtCisgICAgICAgIGFuZHJvaWQ6c3RhdGVfZm9jdXNlZD0idHJ1ZSIKKyAgICAgICAgYW5kcm9pZDpjb2xvcj0iQGNvbG9yL3NldHVwX3N0ZXBfYmFja2dyb3VuZCIgLz4KKyAgICA8aXRlbQorICAgICAgICBhbmRyb2lkOnN0YXRlX3ByZXNzZWQ9InRydWUiCisgICAgICAgIGFuZHJvaWQ6Y29sb3I9IkBjb2xvci9zZXR1cF9zdGVwX2JhY2tncm91bmQiIC8+CisgICAgPGl0ZW0KKyAgICAgICAgYW5kcm9pZDpjb2xvcj0iQGNvbG9yL3NldHVwX3RleHRfYWN0aW9uIiAvPgorPC9zZWxlY3Rvcj4KZGlmZiAtLWdpdCBhL2phdmEvcmVzL2RyYXdhYmxlLWhkcGkvaWNfbWVudV9hZGQucG5nIGIvamF2YS9yZXMvZHJhd2FibGUtaGRwaS9pY19tZW51X2FkZC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGI2OGY1MgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvcmVzL2RyYXdhYmxlLWhkcGkvaWNfbWVudV9hZGQucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2phdmEvcmVzL2RyYXdhYmxlLWhkcGkvdW5idW5kbGVkX2NoZWNrXzAxLnBuZyBiL2phdmEvcmVzL2RyYXdhYmxlLWhkcGkvdW5idW5kbGVkX2NoZWNrXzAxLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MmNjZTJmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9yZXMvZHJhd2FibGUtaGRwaS91bmJ1bmRsZWRfY2hlY2tfMDEucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2phdmEvcmVzL2RyYXdhYmxlLWhkcGkvdW5idW5kbGVkX2NoZWNrXzAyLnBuZyBiL2phdmEvcmVzL2RyYXdhYmxlLWhkcGkvdW5idW5kbGVkX2NoZWNrXzAyLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kY2QxMjBlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9yZXMvZHJhd2FibGUtaGRwaS91bmJ1bmRsZWRfY2hlY2tfMDIucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2phdmEvcmVzL2RyYXdhYmxlLWhkcGkvdW5idW5kbGVkX2VhcnRoXzAxLnBuZyBiL2phdmEvcmVzL2RyYXdhYmxlLWhkcGkvdW5idW5kbGVkX2VhcnRoXzAxLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YTBmMDg3Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9yZXMvZHJhd2FibGUtaGRwaS91bmJ1bmRsZWRfZWFydGhfMDEucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2phdmEvcmVzL2RyYXdhYmxlLWhkcGkvdW5idW5kbGVkX2VhcnRoXzAyLnBuZyBiL2phdmEvcmVzL2RyYXdhYmxlLWhkcGkvdW5idW5kbGVkX2VhcnRoXzAyLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNGJkNDIxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9yZXMvZHJhd2FibGUtaGRwaS91bmJ1bmRsZWRfZWFydGhfMDIucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2phdmEvcmVzL2RyYXdhYmxlLWhkcGkvdW5idW5kbGVkX2tleV8wMS5wbmcgYi9qYXZhL3Jlcy9kcmF3YWJsZS1oZHBpL3VuYnVuZGxlZF9rZXlfMDEucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg3YzllMmMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL3Jlcy9kcmF3YWJsZS1oZHBpL3VuYnVuZGxlZF9rZXlfMDEucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2phdmEvcmVzL2RyYXdhYmxlLWhkcGkvdW5idW5kbGVkX2tleV8wMi5wbmcgYi9qYXZhL3Jlcy9kcmF3YWJsZS1oZHBpL3VuYnVuZGxlZF9rZXlfMDIucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA3NDczODQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL3Jlcy9kcmF3YWJsZS1oZHBpL3VuYnVuZGxlZF9rZXlfMDIucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2phdmEvcmVzL2RyYXdhYmxlLWhkcGkvdW5idW5kbGVkX3NlbGVjdF8wMS5wbmcgYi9qYXZhL3Jlcy9kcmF3YWJsZS1oZHBpL3VuYnVuZGxlZF9zZWxlY3RfMDEucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJiM2RlMmYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL3Jlcy9kcmF3YWJsZS1oZHBpL3VuYnVuZGxlZF9zZWxlY3RfMDEucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2phdmEvcmVzL2RyYXdhYmxlLWhkcGkvdW5idW5kbGVkX3NlbGVjdF8wMi5wbmcgYi9qYXZhL3Jlcy9kcmF3YWJsZS1oZHBpL3VuYnVuZGxlZF9zZWxlY3RfMDIucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU1NmZkYWIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL3Jlcy9kcmF3YWJsZS1oZHBpL3VuYnVuZGxlZF9zZWxlY3RfMDIucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2phdmEvcmVzL2RyYXdhYmxlLW1kcGkvaWNfbWVudV9hZGQucG5nIGIvamF2YS9yZXMvZHJhd2FibGUtbWRwaS9pY19tZW51X2FkZC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTVmZmFkZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvcmVzL2RyYXdhYmxlLW1kcGkvaWNfbWVudV9hZGQucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2phdmEvcmVzL2RyYXdhYmxlLW1kcGkvdW5idW5kbGVkX2NoZWNrXzAxLnBuZyBiL2phdmEvcmVzL2RyYXdhYmxlLW1kcGkvdW5idW5kbGVkX2NoZWNrXzAxLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMGQwMmEzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9yZXMvZHJhd2FibGUtbWRwaS91bmJ1bmRsZWRfY2hlY2tfMDEucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2phdmEvcmVzL2RyYXdhYmxlLW1kcGkvdW5idW5kbGVkX2NoZWNrXzAyLnBuZyBiL2phdmEvcmVzL2RyYXdhYmxlLW1kcGkvdW5idW5kbGVkX2NoZWNrXzAyLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMzRmYTIyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9yZXMvZHJhd2FibGUtbWRwaS91bmJ1bmRsZWRfY2hlY2tfMDIucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2phdmEvcmVzL2RyYXdhYmxlLW1kcGkvdW5idW5kbGVkX2VhcnRoXzAxLnBuZyBiL2phdmEvcmVzL2RyYXdhYmxlLW1kcGkvdW5idW5kbGVkX2VhcnRoXzAxLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYTYwMTgxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9yZXMvZHJhd2FibGUtbWRwaS91bmJ1bmRsZWRfZWFydGhfMDEucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2phdmEvcmVzL2RyYXdhYmxlLW1kcGkvdW5idW5kbGVkX2VhcnRoXzAyLnBuZyBiL2phdmEvcmVzL2RyYXdhYmxlLW1kcGkvdW5idW5kbGVkX2VhcnRoXzAyLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YzUyNjM4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9yZXMvZHJhd2FibGUtbWRwaS91bmJ1bmRsZWRfZWFydGhfMDIucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2phdmEvcmVzL2RyYXdhYmxlLW1kcGkvdW5idW5kbGVkX2tleV8wMS5wbmcgYi9qYXZhL3Jlcy9kcmF3YWJsZS1tZHBpL3VuYnVuZGxlZF9rZXlfMDEucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhjZDcyZGIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL3Jlcy9kcmF3YWJsZS1tZHBpL3VuYnVuZGxlZF9rZXlfMDEucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2phdmEvcmVzL2RyYXdhYmxlLW1kcGkvdW5idW5kbGVkX2tleV8wMi5wbmcgYi9qYXZhL3Jlcy9kcmF3YWJsZS1tZHBpL3VuYnVuZGxlZF9rZXlfMDIucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRlZjZlMGMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL3Jlcy9kcmF3YWJsZS1tZHBpL3VuYnVuZGxlZF9rZXlfMDIucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2phdmEvcmVzL2RyYXdhYmxlLW1kcGkvdW5idW5kbGVkX3NlbGVjdF8wMS5wbmcgYi9qYXZhL3Jlcy9kcmF3YWJsZS1tZHBpL3VuYnVuZGxlZF9zZWxlY3RfMDEucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlhYjAwOGEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL3Jlcy9kcmF3YWJsZS1tZHBpL3VuYnVuZGxlZF9zZWxlY3RfMDEucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2phdmEvcmVzL2RyYXdhYmxlLW1kcGkvdW5idW5kbGVkX3NlbGVjdF8wMi5wbmcgYi9qYXZhL3Jlcy9kcmF3YWJsZS1tZHBpL3VuYnVuZGxlZF9zZWxlY3RfMDIucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhhZjgwN2IKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL3Jlcy9kcmF3YWJsZS1tZHBpL3VuYnVuZGxlZF9zZWxlY3RfMDIucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2phdmEvcmVzL2RyYXdhYmxlLXhoZHBpL2ljX21lbnVfYWRkLnBuZyBiL2phdmEvcmVzL2RyYXdhYmxlLXhoZHBpL2ljX21lbnVfYWRkLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MjA1MTBlCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9yZXMvZHJhd2FibGUteGhkcGkvaWNfbWVudV9hZGQucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2phdmEvcmVzL2RyYXdhYmxlLXhoZHBpL3VuYnVuZGxlZF9jaGVja18wMS5wbmcgYi9qYXZhL3Jlcy9kcmF3YWJsZS14aGRwaS91bmJ1bmRsZWRfY2hlY2tfMDEucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEzMDBhN2YKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL3Jlcy9kcmF3YWJsZS14aGRwaS91bmJ1bmRsZWRfY2hlY2tfMDEucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2phdmEvcmVzL2RyYXdhYmxlLXhoZHBpL3VuYnVuZGxlZF9jaGVja18wMi5wbmcgYi9qYXZhL3Jlcy9kcmF3YWJsZS14aGRwaS91bmJ1bmRsZWRfY2hlY2tfMDIucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxNTE4ODYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL3Jlcy9kcmF3YWJsZS14aGRwaS91bmJ1bmRsZWRfY2hlY2tfMDIucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2phdmEvcmVzL2RyYXdhYmxlLXhoZHBpL3VuYnVuZGxlZF9lYXJ0aF8wMS5wbmcgYi9qYXZhL3Jlcy9kcmF3YWJsZS14aGRwaS91bmJ1bmRsZWRfZWFydGhfMDEucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI0YjY2MzQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL3Jlcy9kcmF3YWJsZS14aGRwaS91bmJ1bmRsZWRfZWFydGhfMDEucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2phdmEvcmVzL2RyYXdhYmxlLXhoZHBpL3VuYnVuZGxlZF9lYXJ0aF8wMi5wbmcgYi9qYXZhL3Jlcy9kcmF3YWJsZS14aGRwaS91bmJ1bmRsZWRfZWFydGhfMDIucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU5YWEwMzEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL3Jlcy9kcmF3YWJsZS14aGRwaS91bmJ1bmRsZWRfZWFydGhfMDIucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2phdmEvcmVzL2RyYXdhYmxlLXhoZHBpL3VuYnVuZGxlZF9rZXlfMDEucG5nIGIvamF2YS9yZXMvZHJhd2FibGUteGhkcGkvdW5idW5kbGVkX2tleV8wMS5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzhiMTE3YgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvcmVzL2RyYXdhYmxlLXhoZHBpL3VuYnVuZGxlZF9rZXlfMDEucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2phdmEvcmVzL2RyYXdhYmxlLXhoZHBpL3VuYnVuZGxlZF9rZXlfMDIucG5nIGIvamF2YS9yZXMvZHJhd2FibGUteGhkcGkvdW5idW5kbGVkX2tleV8wMi5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGMyZGE1NgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvcmVzL2RyYXdhYmxlLXhoZHBpL3VuYnVuZGxlZF9rZXlfMDIucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2phdmEvcmVzL2RyYXdhYmxlLXhoZHBpL3VuYnVuZGxlZF9zZWxlY3RfMDEucG5nIGIvamF2YS9yZXMvZHJhd2FibGUteGhkcGkvdW5idW5kbGVkX3NlbGVjdF8wMS5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmFmMWU1NQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvcmVzL2RyYXdhYmxlLXhoZHBpL3VuYnVuZGxlZF9zZWxlY3RfMDEucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2phdmEvcmVzL2RyYXdhYmxlLXhoZHBpL3VuYnVuZGxlZF9zZWxlY3RfMDIucG5nIGIvamF2YS9yZXMvZHJhd2FibGUteGhkcGkvdW5idW5kbGVkX3NlbGVjdF8wMi5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWQxMDU4ZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvcmVzL2RyYXdhYmxlLXhoZHBpL3VuYnVuZGxlZF9zZWxlY3RfMDIucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2phdmEvcmVzL2RyYXdhYmxlL2ljX3NldHVwX2ZpbmlzaC54bWwgYi9qYXZhL3Jlcy9kcmF3YWJsZS9pY19zZXR1cF9maW5pc2gueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhhYzhhODYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL3Jlcy9kcmF3YWJsZS9pY19zZXR1cF9maW5pc2gueG1sCkBAIC0wLDAgKzEsMzAgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8IS0tCisvKgorKioKKyoqIENvcHlyaWdodCAyMDEzLCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisqKgorKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyoqCisqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisqKgorKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisqLworLS0+CisKKzxzZWxlY3RvciB4bWxuczphbmRyb2lkPSJodHRwOi8vc2NoZW1hcy5hbmRyb2lkLmNvbS9hcGsvcmVzL2FuZHJvaWQiPgorICAgIDxpdGVtCisgICAgICAgIGFuZHJvaWQ6c3RhdGVfZm9jdXNlZD0idHJ1ZSIKKyAgICAgICAgYW5kcm9pZDpkcmF3YWJsZT0iQGRyYXdhYmxlL3VuYnVuZGxlZF9jaGVja18wMSIgLz4KKyAgICA8aXRlbQorICAgICAgICBhbmRyb2lkOnN0YXRlX3ByZXNzZWQ9InRydWUiCisgICAgICAgIGFuZHJvaWQ6ZHJhd2FibGU9IkBkcmF3YWJsZS91bmJ1bmRsZWRfY2hlY2tfMDEiIC8+CisgICAgPGl0ZW0KKyAgICAgICAgYW5kcm9pZDpkcmF3YWJsZT0iQGRyYXdhYmxlL3VuYnVuZGxlZF9jaGVja18wMiIgLz4KKzwvc2VsZWN0b3I+CmRpZmYgLS1naXQgYS9qYXZhL3Jlcy9kcmF3YWJsZS9pY19zZXR1cF9zdGVwMS54bWwgYi9qYXZhL3Jlcy9kcmF3YWJsZS9pY19zZXR1cF9zdGVwMS54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTI2YWZiMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvcmVzL2RyYXdhYmxlL2ljX3NldHVwX3N0ZXAxLnhtbApAQCAtMCwwICsxLDMwIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPCEtLQorLyoKKyoqCisqKiBDb3B5cmlnaHQgMjAxMywgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorKioKKyoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisqKgorKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorKioKKyoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorKi8KKy0tPgorCis8c2VsZWN0b3IgeG1sbnM6YW5kcm9pZD0iaHR0cDovL3NjaGVtYXMuYW5kcm9pZC5jb20vYXBrL3Jlcy9hbmRyb2lkIj4KKyAgICA8aXRlbQorICAgICAgICBhbmRyb2lkOnN0YXRlX2ZvY3VzZWQ9InRydWUiCisgICAgICAgIGFuZHJvaWQ6ZHJhd2FibGU9IkBkcmF3YWJsZS91bmJ1bmRsZWRfa2V5XzAxIiAvPgorICAgIDxpdGVtCisgICAgICAgIGFuZHJvaWQ6c3RhdGVfcHJlc3NlZD0idHJ1ZSIKKyAgICAgICAgYW5kcm9pZDpkcmF3YWJsZT0iQGRyYXdhYmxlL3VuYnVuZGxlZF9rZXlfMDEiIC8+CisgICAgPGl0ZW0KKyAgICAgICAgYW5kcm9pZDpkcmF3YWJsZT0iQGRyYXdhYmxlL3VuYnVuZGxlZF9rZXlfMDIiIC8+Cis8L3NlbGVjdG9yPgpkaWZmIC0tZ2l0IGEvamF2YS9yZXMvZHJhd2FibGUvaWNfc2V0dXBfc3RlcDIueG1sIGIvamF2YS9yZXMvZHJhd2FibGUvaWNfc2V0dXBfc3RlcDIueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ2ZGIyOTMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL3Jlcy9kcmF3YWJsZS9pY19zZXR1cF9zdGVwMi54bWwKQEAgLTAsMCArMSwzMCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzwhLS0KKy8qCisqKgorKiogQ29weXJpZ2h0IDIwMTMsIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyoqCisqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorKioKKyoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyoqCisqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyovCistLT4KKworPHNlbGVjdG9yIHhtbG5zOmFuZHJvaWQ9Imh0dHA6Ly9zY2hlbWFzLmFuZHJvaWQuY29tL2Fway9yZXMvYW5kcm9pZCI+CisgICAgPGl0ZW0KKyAgICAgICAgYW5kcm9pZDpzdGF0ZV9mb2N1c2VkPSJ0cnVlIgorICAgICAgICBhbmRyb2lkOmRyYXdhYmxlPSJAZHJhd2FibGUvdW5idW5kbGVkX3NlbGVjdF8wMSIgLz4KKyAgICA8aXRlbQorICAgICAgICBhbmRyb2lkOnN0YXRlX3ByZXNzZWQ9InRydWUiCisgICAgICAgIGFuZHJvaWQ6ZHJhd2FibGU9IkBkcmF3YWJsZS91bmJ1bmRsZWRfc2VsZWN0XzAxIiAvPgorICAgIDxpdGVtCisgICAgICAgIGFuZHJvaWQ6ZHJhd2FibGU9IkBkcmF3YWJsZS91bmJ1bmRsZWRfc2VsZWN0XzAyIiAvPgorPC9zZWxlY3Rvcj4KZGlmZiAtLWdpdCBhL2phdmEvcmVzL2RyYXdhYmxlL2ljX3NldHVwX3N0ZXAzLnhtbCBiL2phdmEvcmVzL2RyYXdhYmxlL2ljX3NldHVwX3N0ZXAzLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZmY5ZmQ5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9yZXMvZHJhd2FibGUvaWNfc2V0dXBfc3RlcDMueG1sCkBAIC0wLDAgKzEsMzAgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8IS0tCisvKgorKioKKyoqIENvcHlyaWdodCAyMDEzLCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisqKgorKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyoqCisqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisqKgorKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisqLworLS0+CisKKzxzZWxlY3RvciB4bWxuczphbmRyb2lkPSJodHRwOi8vc2NoZW1hcy5hbmRyb2lkLmNvbS9hcGsvcmVzL2FuZHJvaWQiPgorICAgIDxpdGVtCisgICAgICAgIGFuZHJvaWQ6c3RhdGVfZm9jdXNlZD0idHJ1ZSIKKyAgICAgICAgYW5kcm9pZDpkcmF3YWJsZT0iQGRyYXdhYmxlL3VuYnVuZGxlZF9lYXJ0aF8wMSIgLz4KKyAgICA8aXRlbQorICAgICAgICBhbmRyb2lkOnN0YXRlX3ByZXNzZWQ9InRydWUiCisgICAgICAgIGFuZHJvaWQ6ZHJhd2FibGU9IkBkcmF3YWJsZS91bmJ1bmRsZWRfZWFydGhfMDEiIC8+CisgICAgPGl0ZW0KKyAgICAgICAgYW5kcm9pZDpkcmF3YWJsZT0iQGRyYXdhYmxlL3VuYnVuZGxlZF9lYXJ0aF8wMiIgLz4KKzwvc2VsZWN0b3I+CmRpZmYgLS1naXQgYS9qYXZhL3Jlcy9kcmF3YWJsZS9zZXR1cF9zdGVwX2FjdGlvbl9iYWNrZ3JvdW5kLnhtbCBiL2phdmEvcmVzL2RyYXdhYmxlL3NldHVwX3N0ZXBfYWN0aW9uX2JhY2tncm91bmQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI1NzM4ZTMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL3Jlcy9kcmF3YWJsZS9zZXR1cF9zdGVwX2FjdGlvbl9iYWNrZ3JvdW5kLnhtbApAQCAtMCwwICsxLDMwIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPCEtLQorLyoKKyoqCisqKiBDb3B5cmlnaHQgMjAxMywgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorKioKKyoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisqKgorKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorKioKKyoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorKi8KKy0tPgorCis8c2VsZWN0b3IgeG1sbnM6YW5kcm9pZD0iaHR0cDovL3NjaGVtYXMuYW5kcm9pZC5jb20vYXBrL3Jlcy9hbmRyb2lkIj4KKyAgICA8aXRlbQorICAgICAgICBhbmRyb2lkOnN0YXRlX2ZvY3VzZWQ9InRydWUiCisgICAgICAgIGFuZHJvaWQ6ZHJhd2FibGU9IkBjb2xvci9zZXR1cF90ZXh0X2FjdGlvbiIgLz4KKyAgICA8aXRlbQorICAgICAgICBhbmRyb2lkOnN0YXRlX3ByZXNzZWQ9InRydWUiCisgICAgICAgIGFuZHJvaWQ6ZHJhd2FibGU9IkBjb2xvci9zZXR1cF90ZXh0X2FjdGlvbiIgLz4KKyAgICA8aXRlbQorICAgICAgICBhbmRyb2lkOmRyYXdhYmxlPSJAY29sb3Ivc2V0dXBfc3RlcF9iYWNrZ3JvdW5kIiAvPgorPC9zZWxlY3Rvcj4KZGlmZiAtLWdpdCBhL2phdmEvcmVzL2xheW91dC1sYW5kL3NldHVwX3N0ZXBzX3NjcmVlbi54bWwgYi9qYXZhL3Jlcy9sYXlvdXQtbGFuZC9zZXR1cF9zdGVwc19zY3JlZW4ueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBiNGEwOTYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL3Jlcy9sYXlvdXQtbGFuZC9zZXR1cF9zdGVwc19zY3JlZW4ueG1sCkBAIC0wLDAgKzEsNDAgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8IS0tCisvKgorKioKKyoqIENvcHlyaWdodCAyMDEzLCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisqKgorKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyoqCisqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisqKgorKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisqLworLS0+CisKKzxMaW5lYXJMYXlvdXQgeG1sbnM6YW5kcm9pZD0iaHR0cDovL3NjaGVtYXMuYW5kcm9pZC5jb20vYXBrL3Jlcy9hbmRyb2lkIgorICAgIGFuZHJvaWQ6bGF5b3V0X3dpZHRoPSJtYXRjaF9wYXJlbnQiCisgICAgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSJtYXRjaF9wYXJlbnQiCisgICAgYW5kcm9pZDpvcmllbnRhdGlvbj0iaG9yaXpvbnRhbCIKKyAgICBhbmRyb2lkOmJhc2VsaW5lQWxpZ25lZD0iZmFsc2UiPgorICAgIDxMaW5lYXJMYXlvdXQKKyAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2lkdGg9IjBkcCIKKyAgICAgICAgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSJtYXRjaF9wYXJlbnQiCisgICAgICAgIGFuZHJvaWQ6bGF5b3V0X3dlaWdodD0iQGludGVnZXIvc2V0dXBfdGl0bGVfd2VpZ2h0X2luX3NjcmVlbiIKKyAgICAgICAgYW5kcm9pZDpvcmllbnRhdGlvbj0idmVydGljYWwiPgorICAgICAgICA8aW5jbHVkZSBsYXlvdXQ9IkBsYXlvdXQvc2V0dXBfc3RlcHNfdGl0bGUiIC8+CisgICAgPC9MaW5lYXJMYXlvdXQ+CisgICAgPExpbmVhckxheW91dAorICAgICAgICBhbmRyb2lkOmxheW91dF93aWR0aD0iMGRwIgorICAgICAgICBhbmRyb2lkOmxheW91dF9oZWlnaHQ9Im1hdGNoX3BhcmVudCIKKyAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2VpZ2h0PSJAaW50ZWdlci9zZXR1cF9ib2R5X3dlaWdodF9pbl9zY3JlZW4iCisgICAgICAgIGFuZHJvaWQ6b3JpZW50YXRpb249InZlcnRpY2FsIj4KKyAgICAgICAgPGluY2x1ZGUgbGF5b3V0PSJAbGF5b3V0L3NldHVwX3N0ZXBzX2NhcmRzIiAvPgorICAgIDwvTGluZWFyTGF5b3V0PgorPC9MaW5lYXJMYXlvdXQ+CmRpZmYgLS1naXQgYS9qYXZhL3Jlcy9sYXlvdXQtbGFuZC9zZXR1cF93ZWxjb21lX3NjcmVlbi54bWwgYi9qYXZhL3Jlcy9sYXlvdXQtbGFuZC9zZXR1cF93ZWxjb21lX3NjcmVlbi54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGIxNjJlMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvcmVzL2xheW91dC1sYW5kL3NldHVwX3dlbGNvbWVfc2NyZWVuLnhtbApAQCAtMCwwICsxLDQwIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPCEtLQorLyoKKyoqCisqKiBDb3B5cmlnaHQgMjAxMywgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorKioKKyoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisqKgorKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorKioKKyoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorKi8KKy0tPgorCis8TGluZWFyTGF5b3V0IHhtbG5zOmFuZHJvaWQ9Imh0dHA6Ly9zY2hlbWFzLmFuZHJvaWQuY29tL2Fway9yZXMvYW5kcm9pZCIKKyAgICBhbmRyb2lkOmxheW91dF93aWR0aD0ibWF0Y2hfcGFyZW50IgorICAgIGFuZHJvaWQ6bGF5b3V0X2hlaWdodD0ibWF0Y2hfcGFyZW50IgorICAgIGFuZHJvaWQ6b3JpZW50YXRpb249Imhvcml6b250YWwiCisgICAgYW5kcm9pZDpiYXNlbGluZUFsaWduZWQ9ImZhbHNlIj4KKyAgICA8TGluZWFyTGF5b3V0CisgICAgICAgIGFuZHJvaWQ6bGF5b3V0X3dpZHRoPSIwZHAiCisgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2hlaWdodD0ibWF0Y2hfcGFyZW50IgorICAgICAgICBhbmRyb2lkOmxheW91dF93ZWlnaHQ9IkBpbnRlZ2VyL3NldHVwX3RpdGxlX3dlaWdodF9pbl9zY3JlZW4iCisgICAgICAgIGFuZHJvaWQ6b3JpZW50YXRpb249InZlcnRpY2FsIj4KKyAgICAgICAgPGluY2x1ZGUgbGF5b3V0PSJAbGF5b3V0L3NldHVwX3dlbGNvbWVfdGl0bGUiIC8+CisgICAgPC9MaW5lYXJMYXlvdXQ+CisgICAgPExpbmVhckxheW91dAorICAgICAgICBhbmRyb2lkOmxheW91dF93aWR0aD0iMGRwIgorICAgICAgICBhbmRyb2lkOmxheW91dF9oZWlnaHQ9Im1hdGNoX3BhcmVudCIKKyAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2VpZ2h0PSJAaW50ZWdlci9zZXR1cF9ib2R5X3dlaWdodF9pbl9zY3JlZW4iCisgICAgICAgIGFuZHJvaWQ6b3JpZW50YXRpb249InZlcnRpY2FsIj4KKyAgICAgICAgPGluY2x1ZGUgbGF5b3V0PSJAbGF5b3V0L3NldHVwX3dlbGNvbWVfdmlkZW8iIC8+CisgICAgPC9MaW5lYXJMYXlvdXQ+Cis8L0xpbmVhckxheW91dD4KZGlmZiAtLWdpdCBhL2phdmEvcmVzL2xheW91dC9kaWN0aW9uYXJ5X2xpbmUueG1sIGIvamF2YS9yZXMvbGF5b3V0L2RpY3Rpb25hcnlfbGluZS54bWwKaW5kZXggYThkMTVhYi4uNzI2OGNkNCAxMDA2NDQKLS0tIGEvamF2YS9yZXMvbGF5b3V0L2RpY3Rpb25hcnlfbGluZS54bWwKKysrIGIvamF2YS9yZXMvbGF5b3V0L2RpY3Rpb25hcnlfbGluZS54bWwKQEAgLTUyLDMzICs1Miw2MCBAQAogICAgICAgICBhbmRyb2lkOmVsbGlwc2l6ZT0ibWFycXVlZSIKICAgICAgICAgYW5kcm9pZDpmYWRpbmdFZGdlPSJob3Jpem9udGFsIiAvPgogCi0gICAgPFRleHRWaWV3Ci0gICAgICAgIGFuZHJvaWQ6aWQ9IkArYW5kcm9pZDppZC9zdW1tYXJ5IgotICAgICAgICBhbmRyb2lkOmxheW91dF9tYXJnaW5MZWZ0PSI1ZGlwIgotICAgICAgICBhbmRyb2lkOmxheW91dF9tYXJnaW5TdGFydD0iNWRpcCIKKyAgICA8RnJhbWVMYXlvdXQKICAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2lkdGg9Im1hdGNoX3BhcmVudCIKICAgICAgICAgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSJ3cmFwX2NvbnRlbnQiCi0gICAgICAgIGFuZHJvaWQ6dGV4dEFwcGVhcmFuY2U9Ij9hbmRyb2lkOmF0dHIvdGV4dEFwcGVhcmFuY2VTbWFsbCIKLSAgICAgICAgYW5kcm9pZDp0ZXh0Q29sb3I9Ij9hbmRyb2lkOmF0dHIvdGV4dENvbG9yU2Vjb25kYXJ5IgotICAgICAgICBhbmRyb2lkOm1heExpbmVzPSIxIiAvPgorICAgICAgICBhbmRyb2lkOmxheW91dF9tYXJnaW5TdGFydD0iNWRpcCIKKyAgICAgICAgYW5kcm9pZDpsYXlvdXRfbWFyZ2luTGVmdD0iNWRpcCI+CiAKLSAgICA8IS0tIDxQcm9ncmVzc0JhciAtLT4KLSAgICA8IS0tICAgICBhbmRyb2lkOmlkPSJAK2lkL2RpY3Rpb25hcnlfbGluZV9wcm9ncmVzc19iYXIiIC0tPgotICAgIDwhLS0gICAgIHN0eWxlPSJAYW5kcm9pZDpzdHlsZS9XaWRnZXQuSG9sby5Qcm9ncmVzc0Jhci5Ib3Jpem9udGFsIiAtLT4KLSAgICA8IS0tICAgICBhbmRyb2lkOmxheW91dF93aWR0aD0ibWF0Y2hfcGFyZW50IiAtLT4KLSAgICA8IS0tICAgICBhbmRyb2lkOmxheW91dF9oZWlnaHQ9Im1hdGNoX3BhcmVudCIgLS0+Ci0gICAgPCEtLSAgICAgYW5kcm9pZDpncmF2aXR5PSJjZW50ZXIiIC8+IC0tPgorICAgICAgPFRleHRWaWV3CisgICAgICAgICAgYW5kcm9pZDppZD0iQCthbmRyb2lkOmlkL3N1bW1hcnkiCisgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2lkdGg9Im1hdGNoX3BhcmVudCIKKyAgICAgICAgICBhbmRyb2lkOmxheW91dF9oZWlnaHQ9IndyYXBfY29udGVudCIKKyAgICAgICAgICBhbmRyb2lkOnRleHRBcHBlYXJhbmNlPSI/YW5kcm9pZDphdHRyL3RleHRBcHBlYXJhbmNlU21hbGwiCisgICAgICAgICAgYW5kcm9pZDp0ZXh0Q29sb3I9Ij9hbmRyb2lkOmF0dHIvdGV4dENvbG9yU2Vjb25kYXJ5IgorICAgICAgICAgIGFuZHJvaWQ6bWF4TGluZXM9IjEiIC8+CiAKKyAgICAgIDxjb20uYW5kcm9pZC5pbnB1dG1ldGhvZC5kaWN0aW9uYXJ5cGFjay5EaWN0aW9uYXJ5RG93bmxvYWRQcm9ncmVzc0JhcgorICAgICAgICAgIGFuZHJvaWQ6aWQ9IkAraWQvZGljdGlvbmFyeV9saW5lX3Byb2dyZXNzX2JhciIKKyAgICAgICAgICBzdHlsZT0iQGFuZHJvaWQ6c3R5bGUvV2lkZ2V0LkhvbG8uUHJvZ3Jlc3NCYXIuSG9yaXpvbnRhbCIKKyAgICAgICAgICBhbmRyb2lkOmxheW91dF93aWR0aD0ibWF0Y2hfcGFyZW50IgorICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2hlaWdodD0ibWF0Y2hfcGFyZW50IgorICAgICAgICAgIGFuZHJvaWQ6Z3Jhdml0eT0iY2VudGVyIiAvPgorCisgICAgPC9GcmFtZUxheW91dD4KICAgPC9MaW5lYXJMYXlvdXQ+CiAKLSAgPEJ1dHRvbgotICAgICAgYW5kcm9pZDppZD0iQCthbmRyb2lkOmlkL3dvcmRsaXN0X2J1dHRvbiIKKyAgPGNvbS5hbmRyb2lkLmlucHV0bWV0aG9kLmRpY3Rpb25hcnlwYWNrLkJ1dHRvblN3aXRjaGVyCisgICAgICBhbmRyb2lkOmlkPSJAK2FuZHJvaWQ6aWQvd29yZGxpc3RfYnV0dG9uX3N3aXRjaGVyIgogICAgICAgYW5kcm9pZDpsYXlvdXRfd2VpZ2h0PSIwIgorICAgICAgYW5kcm9pZDpsYXlvdXRfbWFyZ2luU3RhcnQ9IjEzZGlwIgorICAgICAgYW5kcm9pZDpsYXlvdXRfbWFyZ2luTGVmdD0iMTNkaXAiCiAgICAgICBhbmRyb2lkOmxheW91dF93aWR0aD0id3JhcF9jb250ZW50IgotICAgICAgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSJ3cmFwX2NvbnRlbnQiCi0gICAgICBhbmRyb2lkOmxheW91dF9ncmF2aXR5PSJyaWdodHxjZW50ZXJfdmVydGljYWwiCi0gICAgICBhbmRyb2lkOnNpbmdsZUxpbmU9InRydWUiCi0gICAgICBhbmRyb2lkOnRleHRBcHBlYXJhbmNlPSI/YW5kcm9pZDphdHRyL3RleHRBcHBlYXJhbmNlTWVkaXVtIgotICAgICAgYW5kcm9pZDp0ZXh0PSJAc3RyaW5nL2luc3RhbGxfZGljdCIgLz4KLQorICAgICAgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSJ3cmFwX2NvbnRlbnQiPgorICAgIDxCdXR0b24KKyAgICAgICAgYW5kcm9pZDppZD0iQCthbmRyb2lkOmlkL2RpY3RfaW5zdGFsbF9idXR0b24iCisgICAgICAgIGFuZHJvaWQ6bGF5b3V0X3dpZHRoPSJ3cmFwX2NvbnRlbnQiCisgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2hlaWdodD0id3JhcF9jb250ZW50IgorICAgICAgICBhbmRyb2lkOmxheW91dF9ncmF2aXR5PSJyaWdodHxjZW50ZXJfdmVydGljYWwiCisgICAgICAgIGFuZHJvaWQ6c2luZ2xlTGluZT0idHJ1ZSIKKyAgICAgICAgYW5kcm9pZDp0ZXh0QXBwZWFyYW5jZT0iP2FuZHJvaWQ6YXR0ci90ZXh0QXBwZWFyYW5jZU1lZGl1bSIKKyAgICAgICAgYW5kcm9pZDp0ZXh0PSJAc3RyaW5nL2luc3RhbGxfZGljdCIgLz4KKyAgICA8QnV0dG9uCisgICAgICAgIGFuZHJvaWQ6aWQ9IkArYW5kcm9pZDppZC9kaWN0X2NhbmNlbF9idXR0b24iCisgICAgICAgIGFuZHJvaWQ6bGF5b3V0X3dpZHRoPSJ3cmFwX2NvbnRlbnQiCisgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2hlaWdodD0id3JhcF9jb250ZW50IgorICAgICAgICBhbmRyb2lkOmxheW91dF9ncmF2aXR5PSJyaWdodHxjZW50ZXJfdmVydGljYWwiCisgICAgICAgIGFuZHJvaWQ6c2luZ2xlTGluZT0idHJ1ZSIKKyAgICAgICAgYW5kcm9pZDp0ZXh0QXBwZWFyYW5jZT0iP2FuZHJvaWQ6YXR0ci90ZXh0QXBwZWFyYW5jZU1lZGl1bSIKKyAgICAgICAgYW5kcm9pZDp0ZXh0PSJAc3RyaW5nL2NhbmNlbF9kb3dubG9hZF9kaWN0IiAvPgorICAgIDxCdXR0b24KKyAgICAgICAgYW5kcm9pZDppZD0iQCthbmRyb2lkOmlkL2RpY3RfZGVsZXRlX2J1dHRvbiIKKyAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2lkdGg9IndyYXBfY29udGVudCIKKyAgICAgICAgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSJ3cmFwX2NvbnRlbnQiCisgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2dyYXZpdHk9InJpZ2h0fGNlbnRlcl92ZXJ0aWNhbCIKKyAgICAgICAgYW5kcm9pZDpzaW5nbGVMaW5lPSJ0cnVlIgorICAgICAgICBhbmRyb2lkOnRleHRBcHBlYXJhbmNlPSI/YW5kcm9pZDphdHRyL3RleHRBcHBlYXJhbmNlTWVkaXVtIgorICAgICAgICBhbmRyb2lkOnRleHQ9IkBzdHJpbmcvZGVsZXRlX2RpY3QiIC8+CisgIDwvY29tLmFuZHJvaWQuaW5wdXRtZXRob2QuZGljdGlvbmFyeXBhY2suQnV0dG9uU3dpdGNoZXI+CiA8L0xpbmVhckxheW91dD4KZGlmZiAtLWdpdCBhL2phdmEvcmVzL2xheW91dC9zZXR1cF9zdGFydF9pbmRpY2F0b3JfbGFiZWwueG1sIGIvamF2YS9yZXMvbGF5b3V0L3NldHVwX3N0YXJ0X2luZGljYXRvcl9sYWJlbC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzM4NTRiYgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvcmVzL2xheW91dC9zZXR1cF9zdGFydF9pbmRpY2F0b3JfbGFiZWwueG1sCkBAIC0wLDAgKzEsMzIgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8IS0tCisvKgorKioKKyoqIENvcHlyaWdodCAyMDEzLCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisqKgorKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyoqCisqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisqKgorKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisqLworLS0+CisKKzxtZXJnZSB4bWxuczphbmRyb2lkPSJodHRwOi8vc2NoZW1hcy5hbmRyb2lkLmNvbS9hcGsvcmVzL2FuZHJvaWQiPgorICAgIDx2aWV3IGNsYXNzPSJjb20uYW5kcm9pZC5pbnB1dG1ldGhvZC5sYXRpbi5zZXR1cC5TZXR1cFN0YXJ0SW5kaWNhdG9yVmlldyRMYWJlbFZpZXciCisgICAgICAgIGFuZHJvaWQ6aWQ9IkAraWQvc2V0dXBfc3RhcnRfbGFiZWwiCisgICAgICAgIGFuZHJvaWQ6dGV4dD0iQHN0cmluZy9zZXR1cF9zdGFydF9hY3Rpb24iCisgICAgICAgIGFuZHJvaWQ6Z3Jhdml0eT0iZW5kfGNlbnRlcl92ZXJ0aWNhbCIKKyAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2lkdGg9IjBkcCIKKyAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2VpZ2h0PSIxLjAiCisgICAgICAgIHN0eWxlPSJAc3R5bGUvc2V0dXBTdGVwQWN0aW9uTGFiZWxTdHlsZUNvbW1vbiIgLz4KKyAgICA8dmlldyBjbGFzcz0iY29tLmFuZHJvaWQuaW5wdXRtZXRob2QubGF0aW4uc2V0dXAuU2V0dXBTdGFydEluZGljYXRvclZpZXckSW5kaWNhdG9yVmlldyIKKyAgICAgICAgYW5kcm9pZDppZD0iQCtpZC9zZXR1cF9zdGFydF9pbmRpY2F0b3IiCisgICAgICAgIHN0eWxlPSJAc3R5bGUvc2V0dXBTdGVwU3RhcnRJbmRpY2F0b3JTdHlsZSIgLz4KKzwvbWVyZ2U+CmRpZmYgLS1naXQgYS9qYXZhL3Jlcy9sYXlvdXQvc2V0dXBfc3RlcC54bWwgYi9qYXZhL3Jlcy9sYXlvdXQvc2V0dXBfc3RlcC54bWwKaW5kZXggMjZkN2ZlNy4uZmE4NDkwMiAxMDA2NDQKLS0tIGEvamF2YS9yZXMvbGF5b3V0L3NldHVwX3N0ZXAueG1sCisrKyBiL2phdmEvcmVzL2xheW91dC9zZXR1cF9zdGVwLnhtbApAQCAtMjUsMzQgKzI1LDE0IEBACiAgICAgPFRleHRWaWV3CiAgICAgICAgIGFuZHJvaWQ6aWQ9IkAraWQvc2V0dXBfc3RlcF90aXRsZSIKICAgICAgICAgc3R5bGU9IkBzdHlsZS9zZXR1cFN0ZXBUaXRsZVN0eWxlIgotICAgICAgICBhbmRyb2lkOmxheW91dF93aWR0aD0ibWF0Y2hfcGFyZW50IgotICAgICAgICBhbmRyb2lkOmxheW91dF9oZWlnaHQ9IndyYXBfY29udGVudCIKLSAgICAgICAgYW5kcm9pZDpwYWRkaW5nVG9wPSIxNmRwIgotICAgICAgICBhbmRyb2lkOnBhZGRpbmdCb3R0b209IjE2ZHAiCi0gICAgICAgIGFuZHJvaWQ6cGFkZGluZ0xlZnQ9IjI0ZHAiCi0gICAgICAgIGFuZHJvaWQ6cGFkZGluZ1JpZ2h0PSIyNGRwIiAvPgorICAgICAgICBhbmRyb2lkOnBhZGRpbmdUb3A9IkBkaW1lbi9zZXR1cF9zdGVwX3ZlcnRpY2FsX3BhZGRpbmciCisgICAgICAgIGFuZHJvaWQ6cGFkZGluZ0JvdHRvbT0iQGRpbWVuL3NldHVwX3N0ZXBfdmVydGljYWxfcGFkZGluZyIgLz4KICAgICA8VGV4dFZpZXcKICAgICAgICAgYW5kcm9pZDppZD0iQCtpZC9zZXR1cF9zdGVwX2luc3RydWN0aW9uIgogICAgICAgICBzdHlsZT0iQHN0eWxlL3NldHVwU3RlcEluc3RydWN0aW9uU3R5bGUiCi0gICAgICAgIGFuZHJvaWQ6bGF5b3V0X3dpZHRoPSJtYXRjaF9wYXJlbnQiCi0gICAgICAgIGFuZHJvaWQ6bGF5b3V0X2hlaWdodD0id3JhcF9jb250ZW50IgotICAgICAgICBhbmRyb2lkOnBhZGRpbmdCb3R0b209IjE2ZHAiCi0gICAgICAgIGFuZHJvaWQ6cGFkZGluZ0xlZnQ9IjI0ZHAiCi0gICAgICAgIGFuZHJvaWQ6cGFkZGluZ1JpZ2h0PSIyNGRwIiAvPgotICAgIDxWaWV3Ci0gICAgICAgIGFuZHJvaWQ6bGF5b3V0X3dpZHRoPSJtYXRjaF9wYXJlbnQiCi0gICAgICAgIGFuZHJvaWQ6bGF5b3V0X2hlaWdodD0iMmRwIiAvPgorICAgICAgICBhbmRyb2lkOnBhZGRpbmdCb3R0b209IkBkaW1lbi9zZXR1cF9zdGVwX3ZlcnRpY2FsX3BhZGRpbmciIC8+CiAgICAgPFRleHRWaWV3CiAgICAgICAgIGFuZHJvaWQ6aWQ9IkAraWQvc2V0dXBfc3RlcF9hY3Rpb25fbGFiZWwiCiAgICAgICAgIHN0eWxlPSJAc3R5bGUvc2V0dXBTdGVwQWN0aW9uTGFiZWxTdHlsZSIKLSAgICAgICAgYW5kcm9pZDpncmF2aXR5PSJjZW50ZXJfdmVydGljYWwiCi0gICAgICAgIGFuZHJvaWQ6ZHJhd2FibGVQYWRkaW5nPSIxMmRwIgotICAgICAgICBhbmRyb2lkOmxheW91dF93aWR0aD0ibWF0Y2hfcGFyZW50IgotICAgICAgICBhbmRyb2lkOmxheW91dF9oZWlnaHQ9IjQ4ZHAiCi0gICAgICAgIGFuZHJvaWQ6Y2xpY2thYmxlPSJ0cnVlIgotICAgICAgICBhbmRyb2lkOmZvY3VzYWJsZT0idHJ1ZSIKLSAgICAgICAgYW5kcm9pZDpwYWRkaW5nTGVmdD0iMTJkcCIKLSAgICAgICAgYW5kcm9pZDpwYWRkaW5nU3RhcnQ9IjEyZHAiCi0gICAgICAgIGFuZHJvaWQ6cGFkZGluZ1JpZ2h0PSIyNGRwIgotICAgICAgICBhbmRyb2lkOnBhZGRpbmdFbmQ9IjI0ZHAiIC8+CisgICAgICAgIGFuZHJvaWQ6bGF5b3V0X21hcmdpblRvcD0iQGRpbWVuL3NldHVwX3N0ZXBfaG9yaXpvbnRhbF9saW5lX2hlaWdodCIgLz4KIDwvTGluZWFyTGF5b3V0PgpkaWZmIC0tZ2l0IGEvamF2YS9yZXMvbGF5b3V0L3NldHVwX3N0ZXBzX2NhcmRzLnhtbCBiL2phdmEvcmVzL2xheW91dC9zZXR1cF9zdGVwc19jYXJkcy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjQ1MTczMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvcmVzL2xheW91dC9zZXR1cF9zdGVwc19jYXJkcy54bWwKQEAgLTAsMCArMSw2OSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzwhLS0KKy8qCisqKgorKiogQ29weXJpZ2h0IDIwMTMsIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyoqCisqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorKioKKyoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyoqCisqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyovCistLT4KKworPG1lcmdlIHhtbG5zOmFuZHJvaWQ9Imh0dHA6Ly9zY2hlbWFzLmFuZHJvaWQuY29tL2Fway9yZXMvYW5kcm9pZCI+CisgICAgPExpbmVhckxheW91dAorICAgICAgICBhbmRyb2lkOmlkPSJAK2lkL3NldHVwX3N0ZXBfYnVsbGV0cyIKKyAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2lkdGg9Im1hdGNoX3BhcmVudCIKKyAgICAgICAgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSJ3cmFwX2NvbnRlbnQiCisgICAgICAgIGFuZHJvaWQ6bGF5b3V0X21hcmdpblRvcD0iQGRpbWVuL3NldHVwX3N0ZXBfdmVydGljYWxfcGFkZGluZyIKKyAgICAgICAgYW5kcm9pZDpvcmllbnRhdGlvbj0iaG9yaXpvbnRhbCI+CisgICAgICAgIDxUZXh0VmlldworICAgICAgICAgICAgYW5kcm9pZDppZD0iQCtpZC9zZXR1cF9zdGVwMV9idWxsZXQiCisgICAgICAgICAgICBzdHlsZT0iQHN0eWxlL3NldHVwU3RlcEJ1bGxldFN0eWxlIgorICAgICAgICAgICAgYW5kcm9pZDp0ZXh0PSJAc3RyaW5nL3NldHVwX3N0ZXAxX2J1bGxldCIgLz4KKyAgICAgICAgPFRleHRWaWV3CisgICAgICAgICAgICBhbmRyb2lkOmlkPSJAK2lkL3NldHVwX3N0ZXAyX2J1bGxldCIKKyAgICAgICAgICAgIHN0eWxlPSJAc3R5bGUvc2V0dXBTdGVwQnVsbGV0U3R5bGUiCisgICAgICAgICAgICBhbmRyb2lkOnRleHQ9IkBzdHJpbmcvc2V0dXBfc3RlcDJfYnVsbGV0IiAvPgorICAgICAgICA8VGV4dFZpZXcKKyAgICAgICAgICAgIGFuZHJvaWQ6aWQ9IkAraWQvc2V0dXBfc3RlcDNfYnVsbGV0IgorICAgICAgICAgICAgc3R5bGU9IkBzdHlsZS9zZXR1cFN0ZXBCdWxsZXRTdHlsZSIKKyAgICAgICAgICAgIGFuZHJvaWQ6dGV4dD0iQHN0cmluZy9zZXR1cF9zdGVwM19idWxsZXQiIC8+CisgICAgPC9MaW5lYXJMYXlvdXQ+CisgICAgPGNvbS5hbmRyb2lkLmlucHV0bWV0aG9kLmxhdGluLnNldHVwLlNldHVwU3RlcEluZGljYXRvclZpZXcKKyAgICAgICAgYW5kcm9pZDppZD0iQCtpZC9zZXR1cF9zdGVwX2luZGljYXRvciIKKyAgICAgICAgc3R5bGU9IkBzdHlsZS9zZXR1cFN0ZXBJbmRpY2F0b3JTdHlsZSIgLz4KKyAgICA8RnJhbWVMYXlvdXQKKyAgICAgICAgYW5kcm9pZDppZD0iQCtpZC9zZXR1cF9zdGVwc19wYW5lIgorICAgICAgICBhbmRyb2lkOmxheW91dF93aWR0aD0ibWF0Y2hfcGFyZW50IgorICAgICAgICBhbmRyb2lkOmxheW91dF9oZWlnaHQ9IndyYXBfY29udGVudCI+CisgICAgICAgIDxpbmNsdWRlCisgICAgICAgICAgICBhbmRyb2lkOmlkPSJAK2lkL3NldHVwX3N0ZXAxIgorICAgICAgICAgICAgbGF5b3V0PSJAbGF5b3V0L3NldHVwX3N0ZXAiIC8+CisgICAgICAgIDxpbmNsdWRlCisgICAgICAgICAgICBhbmRyb2lkOmlkPSJAK2lkL3NldHVwX3N0ZXAyIgorICAgICAgICAgICAgbGF5b3V0PSJAbGF5b3V0L3NldHVwX3N0ZXAiIC8+CisgICAgICAgIDxpbmNsdWRlCisgICAgICAgICAgICBhbmRyb2lkOmlkPSJAK2lkL3NldHVwX3N0ZXAzIgorICAgICAgICAgICAgbGF5b3V0PSJAbGF5b3V0L3NldHVwX3N0ZXAiIC8+CisgICAgPC9GcmFtZUxheW91dD4KKyAgICA8VGV4dFZpZXcKKyAgICAgICAgYW5kcm9pZDppZD0iQCtpZC9zZXR1cF9uZXh0IgorICAgICAgICBhbmRyb2lkOnRleHQ9IkBzdHJpbmcvc2V0dXBfbmV4dF9hY3Rpb24iCisgICAgICAgIGFuZHJvaWQ6Z3Jhdml0eT0iZW5kfGNlbnRlcl92ZXJ0aWNhbCIKKyAgICAgICAgc3R5bGU9IkBzdHlsZS9zZXR1cFN0ZXBBY3Rpb25MYWJlbFN0eWxlQ29tbW9uIgorICAgICAgICBhbmRyb2lkOmxheW91dF9tYXJnaW5Ub3A9IkBkaW1lbi9zZXR1cF9zdGVwX2hvcml6b250YWxfbGluZV9oZWlnaHQiIC8+CisgICAgPFRleHRWaWV3CisgICAgICAgIGFuZHJvaWQ6aWQ9IkAraWQvc2V0dXBfZmluaXNoIgorICAgICAgICBhbmRyb2lkOnRleHQ9IkBzdHJpbmcvc2V0dXBfZmluaXNoX2FjdGlvbiIKKyAgICAgICAgc3R5bGU9IkBzdHlsZS9zZXR1cFN0ZXBBY3Rpb25MYWJlbFN0eWxlIgorICAgICAgICBhbmRyb2lkOmxheW91dF9tYXJnaW5Ub3A9IkBkaW1lbi9zZXR1cF9zdGVwX2hvcml6b250YWxfbGluZV9oZWlnaHQiIC8+Cis8L21lcmdlPgpkaWZmIC0tZ2l0IGEvamF2YS9yZXMvbGF5b3V0L3NldHVwX3N0ZXBzX3NjcmVlbi54bWwgYi9qYXZhL3Jlcy9sYXlvdXQvc2V0dXBfc3RlcHNfc2NyZWVuLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMTU5YzBhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9yZXMvbGF5b3V0L3NldHVwX3N0ZXBzX3NjcmVlbi54bWwKQEAgLTAsMCArMSwyNyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzwhLS0KKy8qCisqKgorKiogQ29weXJpZ2h0IDIwMTMsIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyoqCisqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorKioKKyoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyoqCisqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyovCistLT4KKworPExpbmVhckxheW91dCB4bWxuczphbmRyb2lkPSJodHRwOi8vc2NoZW1hcy5hbmRyb2lkLmNvbS9hcGsvcmVzL2FuZHJvaWQiCisgICAgYW5kcm9pZDpsYXlvdXRfd2lkdGg9Im1hdGNoX3BhcmVudCIKKyAgICBhbmRyb2lkOmxheW91dF9oZWlnaHQ9Im1hdGNoX3BhcmVudCIKKyAgICBhbmRyb2lkOm9yaWVudGF0aW9uPSJ2ZXJ0aWNhbCI+CisgICAgPGluY2x1ZGUgbGF5b3V0PSJAbGF5b3V0L3NldHVwX3N0ZXBzX3RpdGxlIiAvPgorICAgIDxpbmNsdWRlIGxheW91dD0iQGxheW91dC9zZXR1cF9zdGVwc19jYXJkcyIgLz4KKzwvTGluZWFyTGF5b3V0PgpkaWZmIC0tZ2l0IGEvamF2YS9yZXMvbGF5b3V0L3NldHVwX3N0ZXBzX3RpdGxlLnhtbCBiL2phdmEvcmVzL2xheW91dC9zZXR1cF9zdGVwc190aXRsZS54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTM2OTRiZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvcmVzL2xheW91dC9zZXR1cF9zdGVwc190aXRsZS54bWwKQEAgLTAsMCArMSwyNyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzwhLS0KKy8qCisqKgorKiogQ29weXJpZ2h0IDIwMTMsIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyoqCisqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorKioKKyoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyoqCisqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyovCistLT4KKworPG1lcmdlIHhtbG5zOmFuZHJvaWQ9Imh0dHA6Ly9zY2hlbWFzLmFuZHJvaWQuY29tL2Fway9yZXMvYW5kcm9pZCI+CisgICAgPFRleHRWaWV3CisgICAgICAgIGFuZHJvaWQ6aWQ9IkAraWQvc2V0dXBfdGl0bGUiCisgICAgICAgIHN0eWxlPSJAc3R5bGUvc2V0dXBUaXRsZVN0eWxlIgorICAgICAgICBhbmRyb2lkOmxheW91dF9hbGlnblBhcmVudExlZnQ9InRydWUiCisgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2FsaWduUGFyZW50VG9wPSJ0cnVlIiAvPgorPC9tZXJnZT4KZGlmZiAtLWdpdCBhL2phdmEvcmVzL2xheW91dC9zZXR1cF93ZWxjb21lX3NjcmVlbi54bWwgYi9qYXZhL3Jlcy9sYXlvdXQvc2V0dXBfd2VsY29tZV9zY3JlZW4ueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ0ZTk4ZTIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL3Jlcy9sYXlvdXQvc2V0dXBfd2VsY29tZV9zY3JlZW4ueG1sCkBAIC0wLDAgKzEsMjcgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8IS0tCisvKgorKioKKyoqIENvcHlyaWdodCAyMDEzLCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisqKgorKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyoqCisqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisqKgorKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisqLworLS0+CisKKzxMaW5lYXJMYXlvdXQgeG1sbnM6YW5kcm9pZD0iaHR0cDovL3NjaGVtYXMuYW5kcm9pZC5jb20vYXBrL3Jlcy9hbmRyb2lkIgorICAgIGFuZHJvaWQ6bGF5b3V0X3dpZHRoPSJtYXRjaF9wYXJlbnQiCisgICAgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSJtYXRjaF9wYXJlbnQiCisgICAgYW5kcm9pZDpvcmllbnRhdGlvbj0idmVydGljYWwiPgorICAgIDxpbmNsdWRlIGxheW91dD0iQGxheW91dC9zZXR1cF93ZWxjb21lX3RpdGxlIiAvPgorICAgIDxpbmNsdWRlIGxheW91dD0iQGxheW91dC9zZXR1cF93ZWxjb21lX3ZpZGVvIiAvPgorPC9MaW5lYXJMYXlvdXQ+CmRpZmYgLS1naXQgYS9qYXZhL3Jlcy9sYXlvdXQvc2V0dXBfd2VsY29tZV90aXRsZS54bWwgYi9qYXZhL3Jlcy9sYXlvdXQvc2V0dXBfd2VsY29tZV90aXRsZS54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmU2ZDc4MQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvcmVzL2xheW91dC9zZXR1cF93ZWxjb21lX3RpdGxlLnhtbApAQCAtMCwwICsxLDMyIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPCEtLQorLyoKKyoqCisqKiBDb3B5cmlnaHQgMjAxMywgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorKioKKyoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisqKgorKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorKioKKyoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorKi8KKy0tPgorCis8bWVyZ2UgeG1sbnM6YW5kcm9pZD0iaHR0cDovL3NjaGVtYXMuYW5kcm9pZC5jb20vYXBrL3Jlcy9hbmRyb2lkIj4KKyAgICA8VGV4dFZpZXcKKyAgICAgICAgYW5kcm9pZDppZD0iQCtpZC9zZXR1cF93ZWxjb21lX3RpdGxlIgorICAgICAgICBzdHlsZT0iQHN0eWxlL3NldHVwVGl0bGVTdHlsZSIKKyAgICAgICAgYW5kcm9pZDpsYXlvdXRfYWxpZ25QYXJlbnRMZWZ0PSJ0cnVlIgorICAgICAgICBhbmRyb2lkOmxheW91dF9hbGlnblBhcmVudFRvcD0idHJ1ZSIgLz4KKyAgICA8VGV4dFZpZXcKKyAgICAgICAgYW5kcm9pZDppZD0iQCtpZC9zZXR1cF93ZWxjb21lX2Rlc2NyaXB0aW9uIgorICAgICAgICBhbmRyb2lkOnRleHQ9IkBzdHJpbmcvc2V0dXBfd2VsY29tZV9hZGRpdGlvbmFsX2Rlc2NyaXB0aW9uIgorICAgICAgICBhbmRyb2lkOmxheW91dF9tYXJnaW5Ub3A9IjEyZHAiCisgICAgICAgIHN0eWxlPSJAc3R5bGUvc2V0dXBXZWxjb21lRGVzY3JpdHBpb25TdHlsZSIgLz4KKzwvbWVyZ2U+CmRpZmYgLS1naXQgYS9qYXZhL3Jlcy9sYXlvdXQvc2V0dXBfd2VsY29tZV92aWRlby54bWwgYi9qYXZhL3Jlcy9sYXlvdXQvc2V0dXBfd2VsY29tZV92aWRlby54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGMwNGU2MwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvcmVzL2xheW91dC9zZXR1cF93ZWxjb21lX3ZpZGVvLnhtbApAQCAtMCwwICsxLDUyIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPCEtLQorLyoKKyoqCisqKiBDb3B5cmlnaHQgMjAxMywgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorKioKKyoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisqKgorKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorKioKKyoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorKi8KKy0tPgorCis8bWVyZ2UgeG1sbnM6YW5kcm9pZD0iaHR0cDovL3NjaGVtYXMuYW5kcm9pZC5jb20vYXBrL3Jlcy9hbmRyb2lkIj4KKyAgICA8TGluZWFyTGF5b3V0CisgICAgICAgIGFuZHJvaWQ6bGF5b3V0X3dpZHRoPSJtYXRjaF9wYXJlbnQiCisgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2hlaWdodD0id3JhcF9jb250ZW50IgorICAgICAgICBhbmRyb2lkOm9yaWVudGF0aW9uPSJob3Jpem9udGFsIgorICAgICAgICBhbmRyb2lkOnBhZGRpbmdUb3A9IkBkaW1lbi9zZXR1cF93ZWxjb21lX3ZpZGVvX3ZlcnRpY2FsX21hcmdpbiIKKyAgICAgICAgYW5kcm9pZDpwYWRkaW5nQm90dG9tPSJAZGltZW4vc2V0dXBfd2VsY29tZV92aWRlb192ZXJ0aWNhbF9tYXJnaW4iPgorICAgICAgICA8VmlldworICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2VpZ2h0PSJAaW50ZWdlci9zZXR1cF93ZWxjb21lX3ZpZGVvX2xlZnRfcGFkZGluZ193ZWlnaHRfaW5fc2NyZWVuIgorICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2lkdGg9IjBkcCIKKyAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2hlaWdodD0iMGRwIiAvPgorICAgICAgICA8VmlkZW9WaWV3CisgICAgICAgICAgICBhbmRyb2lkOmlkPSJAK2lkL3NldHVwX3dlbGNvbWVfdmlkZW8iCisgICAgICAgICAgICBhbmRyb2lkOmJhY2tncm91bmQ9IkBjb2xvci9zZXR1cF9iYWNrZ3JvdW5kIgorICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2VpZ2h0PSJAaW50ZWdlci9zZXR1cF93ZWxjb21lX3ZpZGVvX3dlaWdodF9pbl9zY3JlZW4iCisgICAgICAgICAgICBhbmRyb2lkOmxheW91dF93aWR0aD0iMGRwIgorICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSJ3cmFwX2NvbnRlbnQiIC8+CisgICAgICAgIDxJbWFnZVZpZXcKKyAgICAgICAgICAgIGFuZHJvaWQ6aWQ9IkAraWQvc2V0dXBfd2VsY29tZV9pbWFnZSIKKyAgICAgICAgICAgIGFuZHJvaWQ6dmlzaWJpbGl0eT0iZ29uZSIKKyAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X3dlaWdodD0iQGludGVnZXIvc2V0dXBfd2VsY29tZV92aWRlb193ZWlnaHRfaW5fc2NyZWVuIgorICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2lkdGg9IjBkcCIKKyAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2hlaWdodD0id3JhcF9jb250ZW50IiAvPgorICAgICAgICA8VmlldworICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2VpZ2h0PSJAaW50ZWdlci9zZXR1cF93ZWxjb21lX3ZpZGVvX3JpZ2h0X3BhZGRpbmdfd2VpZ2h0X2luX3NjcmVlbiIKKyAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X3dpZHRoPSIwZHAiCisgICAgICAgICAgICBhbmRyb2lkOmxheW91dF9oZWlnaHQ9IjBkcCIgLz4KKyAgICA8L0xpbmVhckxheW91dD4KKyAgICA8Y29tLmFuZHJvaWQuaW5wdXRtZXRob2QubGF0aW4uc2V0dXAuU2V0dXBTdGFydEluZGljYXRvclZpZXcKKyAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2lkdGg9Im1hdGNoX3BhcmVudCIKKyAgICAgICAgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSJ3cmFwX2NvbnRlbnQiIC8+Cis8L21lcmdlPgpkaWZmIC0tZ2l0IGEvamF2YS9yZXMvbGF5b3V0L3NldHVwX3dpemFyZC54bWwgYi9qYXZhL3Jlcy9sYXlvdXQvc2V0dXBfd2l6YXJkLnhtbAppbmRleCBhY2JiZTMwLi4xNzZmODM2IDEwMDY0NAotLS0gYS9qYXZhL3Jlcy9sYXlvdXQvc2V0dXBfd2l6YXJkLnhtbAorKysgYi9qYXZhL3Jlcy9sYXlvdXQvc2V0dXBfd2l6YXJkLnhtbApAQCAtMTgsNjEgKzE4LDE4IEBACiAqLwogLS0+CiAKLTxTY3JvbGxWaWV3IHhtbG5zOmFuZHJvaWQ9Imh0dHA6Ly9zY2hlbWFzLmFuZHJvaWQuY29tL2Fway9yZXMvYW5kcm9pZCIKKzxGcmFtZUxheW91dCB4bWxuczphbmRyb2lkPSJodHRwOi8vc2NoZW1hcy5hbmRyb2lkLmNvbS9hcGsvcmVzL2FuZHJvaWQiCiAgICAgYW5kcm9pZDpsYXlvdXRfd2lkdGg9Im1hdGNoX3BhcmVudCIKICAgICBhbmRyb2lkOmxheW91dF9oZWlnaHQ9Im1hdGNoX3BhcmVudCIKLSAgICBhbmRyb2lkOmZpbGxWaWV3cG9ydD0idHJ1ZSI+Ci0gICAgPFJlbGF0aXZlTGF5b3V0Ci0gICAgICAgIGFuZHJvaWQ6bGF5b3V0X3dpZHRoPSJtYXRjaF9wYXJlbnQiCi0gICAgICAgIGFuZHJvaWQ6bGF5b3V0X2hlaWdodD0id3JhcF9jb250ZW50IgotICAgICAgICBhbmRyb2lkOmJhY2tncm91bmQ9IkBjb2xvci9zZXR1cF9iYWNrZ3JvdW5kIgotICAgICAgICBhbmRyb2lkOnBhZGRpbmdMZWZ0PSJAZGltZW4vc2V0dXBfaG9yaXpvbnRhbF9wYWRkaW5nIgotICAgICAgICBhbmRyb2lkOnBhZGRpbmdSaWdodD0iQGRpbWVuL3NldHVwX2hvcml6b250YWxfcGFkZGluZyIKLSAgICAgICAgYW5kcm9pZDpwYWRkaW5nVG9wPSIxNmRwIgotICAgICAgICBhbmRyb2lkOnBhZGRpbmdCb3R0b209IjE2ZHAiPgotICAgICAgICA8VGV4dFZpZXcKLSAgICAgICAgICAgIGFuZHJvaWQ6aWQ9IkAraWQvc2V0dXBfdGl0bGUiCi0gICAgICAgICAgICBzdHlsZT0iQHN0eWxlL3NldHVwVGl0bGVTdHlsZSIKLSAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X3dpZHRoPSJtYXRjaF9wYXJlbnQiCi0gICAgICAgICAgICBhbmRyb2lkOmxheW91dF9oZWlnaHQ9IndyYXBfY29udGVudCIKLSAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2FsaWduUGFyZW50TGVmdD0idHJ1ZSIKLSAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2FsaWduUGFyZW50U3RhcnQ9InRydWUiCi0gICAgICAgICAgICBhbmRyb2lkOmxheW91dF9hbGlnblBhcmVudFRvcD0idHJ1ZSIgLz4KLSAgICAgICAgPExpbmVhckxheW91dAotICAgICAgICAgICAgYW5kcm9pZDppZD0iQCtpZC9zZXR1cF9zdGVwX2J1bGxldHMiCi0gICAgICAgICAgICBhbmRyb2lkOmxheW91dF93aWR0aD0ibWF0Y2hfcGFyZW50IgotICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSJ3cmFwX2NvbnRlbnQiCi0gICAgICAgICAgICBhbmRyb2lkOmxheW91dF9iZWxvdz0iQGlkL3NldHVwX3RpdGxlIgotICAgICAgICAgICAgYW5kcm9pZDpwYWRkaW5nVG9wPSIxNmRwIgotICAgICAgICAgICAgYW5kcm9pZDpvcmllbnRhdGlvbj0iaG9yaXpvbnRhbCI+Ci0gICAgICAgICAgICA8VGV4dFZpZXcKLSAgICAgICAgICAgICAgICBzdHlsZT0iQHN0eWxlL3NldHVwU3RlcEJ1bGxldFN0eWxlIgotICAgICAgICAgICAgICAgIGFuZHJvaWQ6dGV4dD0iQHN0cmluZy9zZXR1cF9zdGVwMV9idWxsZXQiIC8+Ci0gICAgICAgICAgICA8VGV4dFZpZXcKLSAgICAgICAgICAgICAgICBzdHlsZT0iQHN0eWxlL3NldHVwU3RlcEJ1bGxldFN0eWxlIgotICAgICAgICAgICAgICAgIGFuZHJvaWQ6dGV4dD0iQHN0cmluZy9zZXR1cF9zdGVwMl9idWxsZXQiIC8+Ci0gICAgICAgICAgICA8VGV4dFZpZXcKLSAgICAgICAgICAgICAgICBzdHlsZT0iQHN0eWxlL3NldHVwU3RlcEJ1bGxldFN0eWxlIgotICAgICAgICAgICAgICAgIGFuZHJvaWQ6dGV4dD0iQHN0cmluZy9zZXR1cF9zdGVwM19idWxsZXQiIC8+Ci0gICAgICAgIDwvTGluZWFyTGF5b3V0PgotICAgICAgICA8Y29tLmFuZHJvaWQuaW5wdXRtZXRob2QubGF0aW4uc2V0dXAuU2V0dXBTdGVwSW5kaWNhdG9yVmlldwotICAgICAgICAgICAgYW5kcm9pZDppZD0iQCtpZC9zZXR1cF9zdGVwX2luZGljYXRvciIKLSAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X3dpZHRoPSJtYXRjaF9wYXJlbnQiCi0gICAgICAgICAgICBhbmRyb2lkOmxheW91dF9oZWlnaHQ9IjI0ZHAiCi0gICAgICAgICAgICBhbmRyb2lkOmxheW91dF9iZWxvdz0iQGlkL3NldHVwX3N0ZXBfYnVsbGV0cyIgLz4KLSAgICAgICAgPEZyYW1lTGF5b3V0Ci0gICAgICAgICAgICBhbmRyb2lkOmxheW91dF93aWR0aD0ibWF0Y2hfcGFyZW50IgotICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSJ3cmFwX2NvbnRlbnQiCi0gICAgICAgICAgICBhbmRyb2lkOmxheW91dF9iZWxvdz0iQGlkL3NldHVwX3N0ZXBfaW5kaWNhdG9yIj4KLSAgICAgICAgICAgIDxpbmNsdWRlCi0gICAgICAgICAgICAgICAgYW5kcm9pZDppZD0iQCtpZC9zZXR1cF9zdGVwMSIKLSAgICAgICAgICAgICAgICBsYXlvdXQ9IkBsYXlvdXQvc2V0dXBfc3RlcCIgLz4KLSAgICAgICAgICAgIDxpbmNsdWRlCi0gICAgICAgICAgICAgICAgYW5kcm9pZDppZD0iQCtpZC9zZXR1cF9zdGVwMiIKLSAgICAgICAgICAgICAgICBsYXlvdXQ9IkBsYXlvdXQvc2V0dXBfc3RlcCIgLz4KLSAgICAgICAgICAgIDxpbmNsdWRlCi0gICAgICAgICAgICAgICAgYW5kcm9pZDppZD0iQCtpZC9zZXR1cF9zdGVwMyIKLSAgICAgICAgICAgICAgICBsYXlvdXQ9IkBsYXlvdXQvc2V0dXBfc3RlcCIgLz4KLSAgICAgICAgPC9GcmFtZUxheW91dD4KLSAgICA8L1JlbGF0aXZlTGF5b3V0PgotPC9TY3JvbGxWaWV3PgorICAgIGFuZHJvaWQ6YmFja2dyb3VuZD0iQGNvbG9yL3NldHVwX2JhY2tncm91bmQiCisgICAgYW5kcm9pZDpwYWRkaW5nTGVmdD0iQGRpbWVuL3NldHVwX2hvcml6b250YWxfcGFkZGluZyIKKyAgICBhbmRyb2lkOnBhZGRpbmdSaWdodD0iQGRpbWVuL3NldHVwX2hvcml6b250YWxfcGFkZGluZyIKKyAgICBhbmRyb2lkOnBhZGRpbmdUb3A9IkBkaW1lbi9zZXR1cF92ZXJ0aWNhbF9wYWRkaW5nIgorICAgIGFuZHJvaWQ6cGFkZGluZ0JvdHRvbT0iQGRpbWVuL3NldHVwX3ZlcnRpY2FsX3BhZGRpbmciPgorICAgIDxpbmNsdWRlCisgICAgICAgIGFuZHJvaWQ6aWQ9IkAraWQvc2V0dXBfd2VsY29tZV9zY3JlZW4iCisgICAgICAgIGxheW91dD0iQGxheW91dC9zZXR1cF93ZWxjb21lX3NjcmVlbiIgLz4KKyAgICA8aW5jbHVkZQorICAgICAgICBhbmRyb2lkOmlkPSJAK2lkL3NldHVwX3N0ZXBzX3NjcmVlbiIKKyAgICAgICAgbGF5b3V0PSJAbGF5b3V0L3NldHVwX3N0ZXBzX3NjcmVlbiIgLz4KKzwvRnJhbWVMYXlvdXQ+CmRpZmYgLS1naXQgYS9qYXZhL3Jlcy9sYXlvdXQvdXNlcl9kaWN0aW9uYXJ5X2FkZF93b3JkLnhtbCBiL2phdmEvcmVzL2xheW91dC91c2VyX2RpY3Rpb25hcnlfYWRkX3dvcmQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJiZjliMWIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL3Jlcy9sYXlvdXQvdXNlcl9kaWN0aW9uYXJ5X2FkZF93b3JkLnhtbApAQCAtMCwwICsxLDk5IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPCEtLSBDb3B5cmlnaHQgKEMpIDIwMTMgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorCisgICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorCisgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorCisgICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAgICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAgICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAgICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgIC0tPgorPExpbmVhckxheW91dCB4bWxuczphbmRyb2lkPSJodHRwOi8vc2NoZW1hcy5hbmRyb2lkLmNvbS9hcGsvcmVzL2FuZHJvaWQiCisgICAgYW5kcm9pZDppZD0iQCtpZC91c2VyX2RpY3Rfc2V0dGluZ3NfYWRkX2RpYWxvZ190b3AiCisgICAgYW5kcm9pZDpsYXlvdXRfd2lkdGg9Im1hdGNoX3BhcmVudCIKKyAgICBhbmRyb2lkOmxheW91dF9oZWlnaHQ9IndyYXBfY29udGVudCIKKyAgICBhbmRyb2lkOm9yaWVudGF0aW9uPSJ2ZXJ0aWNhbCIgPgorCisgICAgPExpbmVhckxheW91dAorICAgICAgICBhbmRyb2lkOmxheW91dF93aWR0aD0ibWF0Y2hfcGFyZW50IgorICAgICAgICBhbmRyb2lkOmxheW91dF9oZWlnaHQ9IndyYXBfY29udGVudCIKKyAgICAgICAgYW5kcm9pZDpvcmllbnRhdGlvbj0idmVydGljYWwiID4KKworICAgICAgICA8Y29tLmFuZHJvaWQuaW50ZXJuYWwud2lkZ2V0LkRpYWxvZ1RpdGxlCisgICAgICAgICAgICBzdHlsZT0iP2FuZHJvaWQ6YXR0ci93aW5kb3dUaXRsZVN0eWxlIgorICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2lkdGg9Im1hdGNoX3BhcmVudCIKKyAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2hlaWdodD0iNjRkaXAiCisgICAgICAgICAgICBhbmRyb2lkOmxheW91dF9tYXJnaW5FbmQ9IjE2ZGlwIgorICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfbWFyZ2luU3RhcnQ9IjE2ZGlwIgorICAgICAgICAgICAgYW5kcm9pZDplbGxpcHNpemU9ImVuZCIKKyAgICAgICAgICAgIGFuZHJvaWQ6Z3Jhdml0eT0iY2VudGVyX3ZlcnRpY2FsfHN0YXJ0IgorICAgICAgICAgICAgYW5kcm9pZDpzaW5nbGVMaW5lPSJ0cnVlIgorICAgICAgICAgICAgYW5kcm9pZDp0ZXh0PSJAc3RyaW5nL3VzZXJfZGljdF9zZXR0aW5nc19hZGRfZGlhbG9nX3RpdGxlIiAvPgorCisgICAgICAgIDxWaWV3CisgICAgICAgICAgICBhbmRyb2lkOmxheW91dF93aWR0aD0ibWF0Y2hfcGFyZW50IgorICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSIyZGlwIgorICAgICAgICAgICAgYW5kcm9pZDpiYWNrZ3JvdW5kPSJAYW5kcm9pZDpjb2xvci9ob2xvX2JsdWVfbGlnaHQiIC8+CisgICAgPC9MaW5lYXJMYXlvdXQ+CisKKyAgICA8RWRpdFRleHQKKyAgICAgICAgYW5kcm9pZDppZD0iQCtpZC91c2VyX2RpY3Rpb25hcnlfYWRkX3dvcmRfdGV4dCIKKyAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2lkdGg9Im1hdGNoX3BhcmVudCIKKyAgICAgICAgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSJtYXRjaF9wYXJlbnQiCisgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2dyYXZpdHk9ImZpbGxfaG9yaXpvbnRhbHxjZW50ZXJfdmVydGljYWwiCisgICAgICAgIGFuZHJvaWQ6bGF5b3V0X21hcmdpbkJvdHRvbT0iOGRpcCIKKyAgICAgICAgYW5kcm9pZDpsYXlvdXRfbWFyZ2luU3RhcnQ9IjhkaXAiCisgICAgICAgIGFuZHJvaWQ6bGF5b3V0X21hcmdpblRvcD0iOGRpcCIKKyAgICAgICAgYW5kcm9pZDpoaW50PSJAc3RyaW5nL3VzZXJfZGljdF9zZXR0aW5nc19hZGRfd29yZF9oaW50IgorICAgICAgICBhbmRyb2lkOmltZU9wdGlvbnM9ImZsYWdOb0Z1bGxzY3JlZW4iCisgICAgICAgIGFuZHJvaWQ6aW5wdXRUeXBlPSJ0ZXh0Tm9TdWdnZXN0aW9ucyIKKyAgICAgICAgYW5kcm9pZDptYXhMZW5ndGg9IkBpbnRlZ2VyL3VzZXJfZGljdGlvbmFyeV9tYXhfd29yZF9sZW5ndGgiID4KKworICAgICAgICA8cmVxdWVzdEZvY3VzIC8+CisgICAgPC9FZGl0VGV4dD4KKworICAgIDxMaW5lYXJMYXlvdXQKKyAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2lkdGg9Im1hdGNoX3BhcmVudCIKKyAgICAgICAgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSJ3cmFwX2NvbnRlbnQiCisgICAgICAgIGFuZHJvaWQ6ZGl2aWRlcj0iP2FuZHJvaWQ6YXR0ci9kaXZpZGVySG9yaXpvbnRhbCIKKyAgICAgICAgYW5kcm9pZDpkaXZpZGVyUGFkZGluZz0iMGRpcCIKKyAgICAgICAgYW5kcm9pZDpvcmllbnRhdGlvbj0idmVydGljYWwiCisgICAgICAgIGFuZHJvaWQ6c2hvd0RpdmlkZXJzPSJiZWdpbm5pbmciID4KKworICAgICAgICA8TGluZWFyTGF5b3V0CisgICAgICAgICAgICBzdHlsZT0iP2FuZHJvaWQ6YXR0ci9idXR0b25CYXJTdHlsZSIKKyAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X3dpZHRoPSJtYXRjaF9wYXJlbnQiCisgICAgICAgICAgICBhbmRyb2lkOmxheW91dF9oZWlnaHQ9IndyYXBfY29udGVudCIKKyAgICAgICAgICAgIGFuZHJvaWQ6bWVhc3VyZVdpdGhMYXJnZXN0Q2hpbGQ9InRydWUiCisgICAgICAgICAgICBhbmRyb2lkOm9yaWVudGF0aW9uPSJob3Jpem9udGFsIiA+CisKKyAgICAgICAgICAgIDxCdXR0b24KKyAgICAgICAgICAgICAgICBzdHlsZT0iP2FuZHJvaWQ6YXR0ci9idXR0b25CYXJCdXR0b25TdHlsZSIKKyAgICAgICAgICAgICAgICBhbmRyb2lkOmxheW91dF93aWR0aD0iMGRpcCIKKyAgICAgICAgICAgICAgICBhbmRyb2lkOmxheW91dF9oZWlnaHQ9IndyYXBfY29udGVudCIKKyAgICAgICAgICAgICAgICBhbmRyb2lkOmxheW91dF9ncmF2aXR5PSJzdGFydCIKKyAgICAgICAgICAgICAgICBhbmRyb2lkOmxheW91dF93ZWlnaHQ9IjEiCisgICAgICAgICAgICAgICAgYW5kcm9pZDptYXhMaW5lcz0iMiIKKyAgICAgICAgICAgICAgICBhbmRyb2lkOm9uQ2xpY2s9Im9uQ2xpY2tDYW5jZWwiCisgICAgICAgICAgICAgICAgYW5kcm9pZDp0ZXh0PSJAc3RyaW5nL2NhbmNlbCIKKyAgICAgICAgICAgICAgICBhbmRyb2lkOnRleHRTaXplPSIxNHNwIiAvPgorCisgICAgICAgICAgICA8QnV0dG9uCisgICAgICAgICAgICAgICAgc3R5bGU9Ij9hbmRyb2lkOmF0dHIvYnV0dG9uQmFyQnV0dG9uU3R5bGUiCisgICAgICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2lkdGg9IjBkaXAiCisgICAgICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSJ3cmFwX2NvbnRlbnQiCisgICAgICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfZ3Jhdml0eT0iZW5kIgorICAgICAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X3dlaWdodD0iMSIKKyAgICAgICAgICAgICAgICBhbmRyb2lkOm1heExpbmVzPSIyIgorICAgICAgICAgICAgICAgIGFuZHJvaWQ6b25DbGljaz0ib25DbGlja0NvbmZpcm0iCisgICAgICAgICAgICAgICAgYW5kcm9pZDp0ZXh0PSJAc3RyaW5nL3VzZXJfZGljdF9zZXR0aW5nc19hZGRfZGlhbG9nX2NvbmZpcm0iCisgICAgICAgICAgICAgICAgYW5kcm9pZDp0ZXh0U2l6ZT0iMTRzcCIgLz4KKyAgICAgICAgPC9MaW5lYXJMYXlvdXQ+CisgICAgPC9MaW5lYXJMYXlvdXQ+CisKKzwvTGluZWFyTGF5b3V0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2phdmEvcmVzL2xheW91dC91c2VyX2RpY3Rpb25hcnlfYWRkX3dvcmRfZnVsbHNjcmVlbi54bWwgYi9qYXZhL3Jlcy9sYXlvdXQvdXNlcl9kaWN0aW9uYXJ5X2FkZF93b3JkX2Z1bGxzY3JlZW4ueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc1ZTg2YzUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL3Jlcy9sYXlvdXQvdXNlcl9kaWN0aW9uYXJ5X2FkZF93b3JkX2Z1bGxzY3JlZW4ueG1sCkBAIC0wLDAgKzEsOTEgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8IS0tIENvcHlyaWdodCAoQykgMjAxMyBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisKKyAgICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAgICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisKKyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisKKyAgICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAgICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAgLS0+Cis8TGluZWFyTGF5b3V0IHhtbG5zOmFuZHJvaWQ9Imh0dHA6Ly9zY2hlbWFzLmFuZHJvaWQuY29tL2Fway9yZXMvYW5kcm9pZCIKKyAgICBhbmRyb2lkOmlkPSJAK2lkL3VzZXJfZGljdF9zZXR0aW5nc19hZGRfZGlhbG9nX3RvcCIKKyAgICBhbmRyb2lkOmxheW91dF93aWR0aD0ibWF0Y2hfcGFyZW50IgorICAgIGFuZHJvaWQ6bGF5b3V0X2hlaWdodD0id3JhcF9jb250ZW50IgorICAgIGFuZHJvaWQ6b3JpZW50YXRpb249InZlcnRpY2FsIiA+CisKKyAgICA8VGV4dFZpZXcKKyAgICAgICAgc3R5bGU9Ij9hbmRyb2lkOmF0dHIvbGlzdFNlcGFyYXRvclRleHRWaWV3U3R5bGUiCisgICAgICAgIGFuZHJvaWQ6bGF5b3V0X3dpZHRoPSJtYXRjaF9wYXJlbnQiCisgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2hlaWdodD0id3JhcF9jb250ZW50IgorICAgICAgICBhbmRyb2lkOnRleHQ9IkBzdHJpbmcvdXNlcl9kaWN0X3NldHRpbmdzX2FkZF9zY3JlZW5fdGl0bGUiIC8+CisKKyAgICA8RWRpdFRleHQKKyAgICAgICAgYW5kcm9pZDppZD0iQCtpZC91c2VyX2RpY3Rpb25hcnlfYWRkX3dvcmRfdGV4dCIKKyAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2lkdGg9Im1hdGNoX3BhcmVudCIKKyAgICAgICAgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSJ3cmFwX2NvbnRlbnQiCisgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2dyYXZpdHk9ImZpbGxfaG9yaXpvbnRhbHxjZW50ZXJfdmVydGljYWwiCisgICAgICAgIGFuZHJvaWQ6bGF5b3V0X21hcmdpbkJvdHRvbT0iOGRpcCIKKyAgICAgICAgYW5kcm9pZDpsYXlvdXRfbWFyZ2luU3RhcnQ9IjhkaXAiCisgICAgICAgIGFuZHJvaWQ6bGF5b3V0X21hcmdpblRvcD0iOGRpcCIKKyAgICAgICAgYW5kcm9pZDpoaW50PSJAc3RyaW5nL3VzZXJfZGljdF9zZXR0aW5nc19hZGRfd29yZF9oaW50IgorICAgICAgICBhbmRyb2lkOmltZU9wdGlvbnM9ImZsYWdOb0Z1bGxzY3JlZW4iCisgICAgICAgIGFuZHJvaWQ6aW5wdXRUeXBlPSJ0ZXh0Tm9TdWdnZXN0aW9ucyIKKyAgICAgICAgYW5kcm9pZDptYXhMZW5ndGg9IkBpbnRlZ2VyL3VzZXJfZGljdGlvbmFyeV9tYXhfd29yZF9sZW5ndGgiID4KKworICAgICAgICA8cmVxdWVzdEZvY3VzIC8+CisgICAgPC9FZGl0VGV4dD4KKworICAgIDxHcmlkTGF5b3V0CisgICAgICAgIGFuZHJvaWQ6aWQ9IkAraWQvdXNlcl9kaWN0aW9uYXJ5X2FkZF93b3JkX2dyaWQiCisgICAgICAgIGFuZHJvaWQ6bGF5b3V0X3dpZHRoPSJtYXRjaF9wYXJlbnQiCisgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2hlaWdodD0id3JhcF9jb250ZW50IgorICAgICAgICBhbmRyb2lkOmxheW91dF9tYXJnaW5FbmQ9IjhkaXAiCisgICAgICAgIGFuZHJvaWQ6bGF5b3V0X21hcmdpblN0YXJ0PSI4ZGlwIgorICAgICAgICBhbmRyb2lkOmNvbHVtbkNvdW50PSIyIiA+CisKKyAgICAgICAgPFRleHRWaWV3CisgICAgICAgICAgICBhbmRyb2lkOmlkPSJAK2lkL3VzZXJfZGljdGlvbmFyeV9hZGRfc2hvcnRjdXRfbGFiZWwiCisgICAgICAgICAgICBzdHlsZT0iP2FuZHJvaWQ6YXR0ci90ZXh0QXBwZWFyYW5jZVNtYWxsIgorICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2lkdGg9IndyYXBfY29udGVudCIKKyAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2hlaWdodD0id3JhcF9jb250ZW50IgorICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfZ3Jhdml0eT0ic3RhcnR8Y2VudGVyX3ZlcnRpY2FsIgorICAgICAgICAgICAgYW5kcm9pZDp0ZXh0PSJAc3RyaW5nL3VzZXJfZGljdF9zZXR0aW5nc19hZGRfc2hvcnRjdXRfb3B0aW9uX25hbWUiIC8+CisKKyAgICAgICAgPEVkaXRUZXh0CisgICAgICAgICAgICBhbmRyb2lkOmlkPSJAK2lkL3VzZXJfZGljdGlvbmFyeV9hZGRfc2hvcnRjdXQiCisgICAgICAgICAgICBhbmRyb2lkOmxheW91dF93aWR0aD0id3JhcF9jb250ZW50IgorICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfZ3Jhdml0eT0iZmlsbF9ob3Jpem9udGFsfGNlbnRlcl92ZXJ0aWNhbCIKKyAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X21hcmdpbkJvdHRvbT0iOGRpcCIKKyAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X21hcmdpblN0YXJ0PSI4ZGlwIgorICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfbWFyZ2luVG9wPSI4ZGlwIgorICAgICAgICAgICAgYW5kcm9pZDpoaW50PSJAc3RyaW5nL3VzZXJfZGljdF9zZXR0aW5nc19hZGRfc2hvcnRjdXRfaGludCIKKyAgICAgICAgICAgIGFuZHJvaWQ6aW1lT3B0aW9ucz0iZmxhZ05vRnVsbHNjcmVlbiIKKyAgICAgICAgICAgIGFuZHJvaWQ6aW5wdXRUeXBlPSJ0ZXh0Tm9TdWdnZXN0aW9ucyIKKyAgICAgICAgICAgIGFuZHJvaWQ6bWF4TGVuZ3RoPSJAaW50ZWdlci91c2VyX2RpY3Rpb25hcnlfbWF4X3dvcmRfbGVuZ3RoIiAvPgorCisgICAgICAgIDxUZXh0VmlldworICAgICAgICAgICAgYW5kcm9pZDppZD0iQCtpZC91c2VyX2RpY3Rpb25hcnlfYWRkX2xvY2FsZV9sYWJlbCIKKyAgICAgICAgICAgIHN0eWxlPSI/YW5kcm9pZDphdHRyL3RleHRBcHBlYXJhbmNlU21hbGwiCisgICAgICAgICAgICBhbmRyb2lkOmxheW91dF93aWR0aD0id3JhcF9jb250ZW50IgorICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSJ3cmFwX2NvbnRlbnQiCisgICAgICAgICAgICBhbmRyb2lkOmxheW91dF9ncmF2aXR5PSJzdGFydHxjZW50ZXJfdmVydGljYWwiCisgICAgICAgICAgICBhbmRyb2lkOnRleHQ9IkBzdHJpbmcvdXNlcl9kaWN0X3NldHRpbmdzX2FkZF9sb2NhbGVfb3B0aW9uX25hbWUiCisgICAgICAgICAgICBhbmRyb2lkOnZpc2liaWxpdHk9ImdvbmUiIC8+CisKKyAgICAgICAgPFNwaW5uZXIKKyAgICAgICAgICAgIGFuZHJvaWQ6aWQ9IkAraWQvdXNlcl9kaWN0aW9uYXJ5X2FkZF9sb2NhbGUiCisgICAgICAgICAgICBhbmRyb2lkOmxheW91dF93aWR0aD0id3JhcF9jb250ZW50IgorICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfZ3Jhdml0eT0iZmlsbF9ob3Jpem9udGFsfGNlbnRlcl92ZXJ0aWNhbCIKKyAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X21hcmdpbkJvdHRvbT0iOGRpcCIKKyAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X21hcmdpblN0YXJ0PSI4ZGlwIgorICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfbWFyZ2luVG9wPSI4ZGlwIgorICAgICAgICAgICAgYW5kcm9pZDp2aXNpYmlsaXR5PSJnb25lIiAvPgorICAgIDwvR3JpZExheW91dD4KKworPC9MaW5lYXJMYXlvdXQ+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9yZXMvbGF5b3V0L3VzZXJfZGljdGlvbmFyeV9pdGVtLnhtbCBiL2phdmEvcmVzL2xheW91dC91c2VyX2RpY3Rpb25hcnlfaXRlbS54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTZiYWQ3NwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvcmVzL2xheW91dC91c2VyX2RpY3Rpb25hcnlfaXRlbS54bWwKQEAgLTAsMCArMSw1MSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzwhLS0gQ29weXJpZ2h0IChDKSAyMDEzIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKworICAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAgICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKworICAgICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorCisgICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAgICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAgICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAgICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCistLT4KKzxMaW5lYXJMYXlvdXQgeG1sbnM6YW5kcm9pZD0iaHR0cDovL3NjaGVtYXMuYW5kcm9pZC5jb20vYXBrL3Jlcy9hbmRyb2lkIgorICAgIGFuZHJvaWQ6bGF5b3V0X3dpZHRoPSJtYXRjaF9wYXJlbnQiCisgICAgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSJ3cmFwX2NvbnRlbnQiCisgICAgYW5kcm9pZDpiYWNrZ3JvdW5kPSI/YW5kcm9pZDphdHRyL3NlbGVjdGFibGVJdGVtQmFja2dyb3VuZCIKKyAgICBhbmRyb2lkOmdyYXZpdHk9ImNlbnRlcl92ZXJ0aWNhbCIKKyAgICBhbmRyb2lkOm1pbkhlaWdodD0iP2FuZHJvaWQ6YXR0ci9saXN0UHJlZmVycmVkSXRlbUhlaWdodCIKKyAgICBhbmRyb2lkOnBhZGRpbmdFbmQ9Ij9hbmRyb2lkOmF0dHIvc2Nyb2xsYmFyU2l6ZSIgPgorCisgICAgPFJlbGF0aXZlTGF5b3V0CisgICAgICAgIGFuZHJvaWQ6bGF5b3V0X3dpZHRoPSJ3cmFwX2NvbnRlbnQiCisgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2hlaWdodD0id3JhcF9jb250ZW50IgorICAgICAgICBhbmRyb2lkOnBhZGRpbmc9IjZkaXAiCisgICAgICAgIGFuZHJvaWQ6bGF5b3V0X3dlaWdodD0iMSIgPgorCisgICAgICAgIDxUZXh0VmlldworICAgICAgICAgICAgYW5kcm9pZDppZD0iQCthbmRyb2lkOmlkL3RleHQxIgorICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2lkdGg9IndyYXBfY29udGVudCIKKyAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2hlaWdodD0id3JhcF9jb250ZW50IgorICAgICAgICAgICAgYW5kcm9pZDplbGxpcHNpemU9Im1hcnF1ZWUiCisgICAgICAgICAgICBhbmRyb2lkOmZhZGluZ0VkZ2U9Imhvcml6b250YWwiCisgICAgICAgICAgICBhbmRyb2lkOnNpbmdsZUxpbmU9InRydWUiCisgICAgICAgICAgICBhbmRyb2lkOnRleHRBcHBlYXJhbmNlPSI/YW5kcm9pZDphdHRyL3RleHRBcHBlYXJhbmNlTWVkaXVtIiAvPgorCisgICAgICAgIDxUZXh0VmlldworICAgICAgICAgICAgYW5kcm9pZDppZD0iQCthbmRyb2lkOmlkL3RleHQyIgorICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2lkdGg9IndyYXBfY29udGVudCIKKyAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2hlaWdodD0id3JhcF9jb250ZW50IgorICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfYWxpZ25TdGFydD0iQGFuZHJvaWQ6aWQvdGV4dDEiCisgICAgICAgICAgICBhbmRyb2lkOmxheW91dF9iZWxvdz0iQGFuZHJvaWQ6aWQvdGV4dDEiCisgICAgICAgICAgICBhbmRyb2lkOm1heExpbmVzPSIxIgorICAgICAgICAgICAgYW5kcm9pZDp0ZXh0QXBwZWFyYW5jZT0iP2FuZHJvaWQ6YXR0ci90ZXh0QXBwZWFyYW5jZVNtYWxsIgorICAgICAgICAgICAgYW5kcm9pZDp0ZXh0Q29sb3I9Ij9hbmRyb2lkOmF0dHIvdGV4dENvbG9yU2Vjb25kYXJ5IgorICAgICAgICAgICAgYW5kcm9pZDp2aXNpYmlsaXR5PSJnb25lIiAvPgorICAgIDwvUmVsYXRpdmVMYXlvdXQ+CisKKzwvTGluZWFyTGF5b3V0PgpkaWZmIC0tZ2l0IGEvamF2YS9yZXMvbGF5b3V0L3VzZXJfZGljdGlvbmFyeV9wcmVmZXJlbmNlX2xpc3RfZnJhZ21lbnQueG1sIGIvamF2YS9yZXMvbGF5b3V0L3VzZXJfZGljdGlvbmFyeV9wcmVmZXJlbmNlX2xpc3RfZnJhZ21lbnQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQwZTU2MmMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL3Jlcy9sYXlvdXQvdXNlcl9kaWN0aW9uYXJ5X3ByZWZlcmVuY2VfbGlzdF9mcmFnbWVudC54bWwKQEAgLTAsMCArMSw0NSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzwhLS0KKy8qCisqKiBDb3B5cmlnaHQgMjAxMywgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorKioKKyoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisqKgorKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorKioKKyoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorKi8KKy0tPgorCis8TGluZWFyTGF5b3V0IHhtbG5zOmFuZHJvaWQ9Imh0dHA6Ly9zY2hlbWFzLmFuZHJvaWQuY29tL2Fway9yZXMvYW5kcm9pZCIKKyAgICBhbmRyb2lkOmxheW91dF93aWR0aD0ibWF0Y2hfcGFyZW50IgorICAgIGFuZHJvaWQ6bGF5b3V0X2hlaWdodD0ibWF0Y2hfcGFyZW50IgorICAgIGFuZHJvaWQ6YmFja2dyb3VuZD0iQGFuZHJvaWQ6Y29sb3IvdHJhbnNwYXJlbnQiCisgICAgYW5kcm9pZDpvcmllbnRhdGlvbj0idmVydGljYWwiID4KKworICAgIDxMaXN0VmlldworICAgICAgICBhbmRyb2lkOmlkPSJAYW5kcm9pZDppZC9saXN0IgorICAgICAgICBhbmRyb2lkOmxheW91dF93aWR0aD0ibWF0Y2hfcGFyZW50IgorICAgICAgICBhbmRyb2lkOmxheW91dF9oZWlnaHQ9IjBweCIKKyAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2VpZ2h0PSIxIgorICAgICAgICBhbmRyb2lkOmNhY2hlQ29sb3JIaW50PSJAYW5kcm9pZDpjb2xvci90cmFuc3BhcmVudCIKKyAgICAgICAgYW5kcm9pZDpjbGlwVG9QYWRkaW5nPSJmYWxzZSIKKyAgICAgICAgYW5kcm9pZDpkcmF3U2VsZWN0b3JPblRvcD0iZmFsc2UiCisgICAgICAgIGFuZHJvaWQ6cGFkZGluZ1RvcD0iMGRpcCIKKyAgICAgICAgYW5kcm9pZDpzY3JvbGxiYXJBbHdheXNEcmF3VmVydGljYWxUcmFjaz0idHJ1ZSIgLz4KKworICAgIDxUZXh0VmlldworICAgICAgICBhbmRyb2lkOmlkPSJAYW5kcm9pZDppZC9lbXB0eSIKKyAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2lkdGg9Im1hdGNoX3BhcmVudCIKKyAgICAgICAgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSJtYXRjaF9wYXJlbnQiCisgICAgICAgIGFuZHJvaWQ6Z3Jhdml0eT0iY2VudGVyIgorICAgICAgICBhbmRyb2lkOnBhZGRpbmc9IjVkaXAiCisgICAgICAgIGFuZHJvaWQ6dmlzaWJpbGl0eT0iZ29uZSIgLz4KKworPC9MaW5lYXJMYXlvdXQ+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9yZXMvcmF3L2VtcHR5LmRpY3QgYi9qYXZhL3Jlcy9yYXcvZW1wdHkuZGljdAppbmRleCBkYTFiZjk2Li44MGNlMDY2IDEwMDY0NAotLS0gYS9qYXZhL3Jlcy9yYXcvZW1wdHkuZGljdAorKysgYi9qYXZhL3Jlcy9yYXcvZW1wdHkuZGljdApAQCAtMSArMSBAQAoteLEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCiubwTr+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9yZXMvcmF3L21haW5fZW4uZGljdCBiL2phdmEvcmVzL3Jhdy9tYWluX2VuLmRpY3QKaW5kZXggNTI2NzYxYy4uMDg2ODc0ZCAxMDA2NDQKLS0tIGEvamF2YS9yZXMvcmF3L21haW5fZW4uZGljdAorKysgYi9qYXZhL3Jlcy9yYXcvbWFpbl9lbi5kaWN0CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2phdmEvcmVzL3Jhdy9tYWluX2ZyLmRpY3QgYi9qYXZhL3Jlcy9yYXcvbWFpbl9mci5kaWN0CmluZGV4IDc1MjA4OTguLjkwNDRjN2UgMTAwNjQ0Ci0tLSBhL2phdmEvcmVzL3Jhdy9tYWluX2ZyLmRpY3QKKysrIGIvamF2YS9yZXMvcmF3L21haW5fZnIuZGljdApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9qYXZhL3Jlcy9yYXcvbWFpbl9ydS5kaWN0IGIvamF2YS9yZXMvcmF3L21haW5fcnUuZGljdAppbmRleCAyMTZmZjA5Li43MDc0NDE2IDEwMDY0NAotLS0gYS9qYXZhL3Jlcy9yYXcvbWFpbl9ydS5kaWN0CisrKyBiL2phdmEvcmVzL3Jhdy9tYWluX3J1LmRpY3QKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvamF2YS9yZXMvcmF3L3NldHVwX3dlbGNvbWVfaW1hZ2UucG5nIGIvamF2YS9yZXMvcmF3L3NldHVwX3dlbGNvbWVfaW1hZ2UucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE3ZTMxMTEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL3Jlcy9yYXcvc2V0dXBfd2VsY29tZV9pbWFnZS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvamF2YS9yZXMvcmF3L3NldHVwX3dlbGNvbWVfdmlkZW8ubXA0IGIvamF2YS9yZXMvcmF3L3NldHVwX3dlbGNvbWVfdmlkZW8ubXA0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA5MzU3ZDgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL3Jlcy9yYXcvc2V0dXBfd2VsY29tZV92aWRlby5tcDQKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvamF2YS9yZXMvdmFsdWVzLWFmL3N0cmluZ3MueG1sIGIvamF2YS9yZXMvdmFsdWVzLWFmL3N0cmluZ3MueG1sCmluZGV4IDI4OTI5NDAuLjdkZDYzMGMgMTAwNjQ0Ci0tLSBhL2phdmEvcmVzL3ZhbHVlcy1hZi9zdHJpbmdzLnhtbAorKysgYi9qYXZhL3Jlcy92YWx1ZXMtYWYvc3RyaW5ncy54bWwKQEAgLTUzLDYgKzUzLDggQEAKICAgICA8c3RyaW5nIG5hbWU9InVzZV9kb3VibGVfc3BhY2VfcGVyaW9kX3N1bW1hcnkiIG1zZ2lkPSI2NTMyODkyMTg3MjQ3OTUyNzk5Ij4iRHViYmVsdGlrIG9wIHNwYXNpZWJhbGsgdm9lZyBcJ24gcHVudCBpbiwgZ2V2b2xnIGRldXIgXCduIHNwYXNpZSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImF1dG9fY2FwIiBtc2dpZD0iMTcxOTc0NjY3NDg1NDYyODI1MiI+Ik91dG9ob29mbGV0dGVycyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImF1dG9fY2FwX3N1bW1hcnkiIG1zZ2lkPSI3OTM0NDUyNzYxMDIyOTQ2ODc0Ij4iRGllIGVlcnN0ZSB3b29yZCB2YW4gZWxrZSBzaW4gbW9ldCBtZXQgXCduIGhvb2ZsZXR0ZXIgYmVnaW4iPC9zdHJpbmc+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgZWRpdF9wZXJzb25hbF9kaWN0aW9uYXJ5ICgzOTk2OTEwMDM4OTUyOTQwNDIwKSAtLT4KKyAgICA8c2tpcCAvPgogICAgIDxzdHJpbmcgbmFtZT0iY29uZmlndXJlX2RpY3Rpb25hcmllc190aXRsZSIgbXNnaWQ9IjQyMzg2NTIzMzg1NTY5MDIwNDkiPiJWb2VnIHdvb3JkZWJvZWtlIGJ5Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ibWFpbl9kaWN0aW9uYXJ5IiBtc2dpZD0iNDc5ODc2Mzc4MTgxODM2MTE2OCI+Ikhvb2Z3b29yZGVib2VrIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icHJlZnNfc2hvd19zdWdnZXN0aW9ucyIgbXNnaWQ9IjgwMjY3OTk2NjM0NDU1MzE2MzciPiJXeXMgdm9vcnN0ZWxsZSB2aXIga29ycmlnZXJpbmciPC9zdHJpbmc+CkBAIC0xNzEsOCArMTczLDI3IEBACiAgICAgPHN0cmluZyBuYW1lPSJyZWFkX2V4dGVybmFsX2RpY3Rpb25hcnlfY29uZmlybV9pbnN0YWxsX21lc3NhZ2UiIG1zZ2lkPSI2ODk4NjEwMTYzNzY4OTgwODcwIj4iTW9ldCBoaWVyZGllIGzDqmVyIHJlZ3RpZyB2aXIgPHhsaWZmOmcgaWQ9IkxPQ0FMRV9OQU1FIj4lczwveGxpZmY6Zz4gZ2XDr25zdGFsbGVlciB3b3JkPyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImVycm9yIiBtc2dpZD0iODk0MDc2MzYyNDY2ODUxMzY0OCI+IkRhYXIgd2FzIFwnbiBmb3V0Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYnV0dG9uX2RlZmF1bHQiIG1zZ2lkPSIzOTg4MDE3ODQwNDMxODgxNDkxIj4iVmVyc3RlayI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Imxhbmd1YWdlX3NldHRpbmdzIiBtc2dpZD0iMTY3MTE1MzA1MzIwMTgwOTAzMSI+IlRhYWwgZW4gaW52b2VyIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ic2VsZWN0X2lucHV0X21ldGhvZCIgbXNnaWQ9IjQzMDE2MDIzNzQ2MDkyNzUwMDMiPiJLaWVzIGludm9lcm1ldG9kZSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3dlbGNvbWVfdGl0bGUiIG1zZ2lkPSI2MTEyODIxNzA5ODMyMDMxNzE1Ij4iV2Vsa29tIGJ5IDx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF93ZWxjb21lX2FkZGl0aW9uYWxfZGVzY3JpcHRpb24iIG1zZ2lkPSI4MTUwMjUyMDA4NTQ1NzY4OTUzIj4ibWV0IEdlYmFhci10aWsiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGFydF9hY3Rpb24iIG1zZ2lkPSI4OTM2MDM2NDYwODk3MzQ3NzA4Ij4iS29tIGFhbiBkaWUgZ2FuZyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX25leHRfYWN0aW9uIiBtc2dpZD0iMzcxODIxNDM3OTE1MTQ0NjAzIj4iVm9sZ2VuZGUgc3RhcCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXBzX3RpdGxlIiBtc2dpZD0iNjQwMDM3MzAzNDg3MTgxNjE4MiI+IlN0ZWwgPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPiBvcCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAxX3RpdGxlIiBtc2dpZD0iMzE0Nzk2NzYzMDI1MzQ2MjMxNSI+IkFrdGl2ZWVyIDx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMV9pbnN0cnVjdGlvbiIgbXNnaWQ9IjI1Nzg2MzE5MzY2MjQ2MzcyNDEiPiJWZXJpZmllZXIgYXNzZWJsaWVmIFwiPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPlwiIGluIGpvdSBUYWFsLSBlbiBpbnZvZXJpbnN0ZWxsaW5ncy4gRGl0IHNhbCBkaXQgbWFndGlnIG9tIG9wIGpvdSB0b2VzdGVsIHRlIGxvb3AuIjwvc3RyaW5nPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNldHVwX3N0ZXAxX2ZpbmlzaGVkX2luc3RydWN0aW9uICgxMDc2MTQ4MjAwNDk1Nzk5NCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAxX2FjdGlvbiIgbXNnaWQ9IjQzNjY1MTM1MzQ5OTk5MDE3MjgiPiJBa3RpdmVlciBpbiBpbnN0ZWxsaW5ncyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAyX3RpdGxlIiBtc2dpZD0iNjg2MDcyNTQ0NzkwNjY5MDU5NCI+IlNrYWtlbCBvb3IgbmEgPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAyX2luc3RydWN0aW9uIiBtc2dpZD0iOTE0MTQ4MTk2NDg3MDAyMzMzNiI+IlZvbGdlbmRlLCBraWVzIFwiPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPlwiIGFzIGpvdSBha3RpZXdlIHRla3MtaW52b2VybWV0b2RlLiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAyX2FjdGlvbiIgbXNnaWQ9IjE2NjAzMzAzMDcxNTk4MjQzMzciPiJXaXNzZWwgaW52b2VybWV0b2RlcyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAzX3RpdGxlIiBtc2dpZD0iMzE1NDc1NzE4MzYzMTQ5MDI4MSI+IlZlZWxzIGdlbHVrLCBqeVwncyBnZXJlZWQhIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDNfaW5zdHJ1Y3Rpb24iIG1zZ2lkPSI4MDI1OTgxODI5NjA1NDI2MDAwIj4iTm91IGthbiBqeSBpbiBhbCBqb3UgZ3Vuc3RlbGluZyBwcm9ncmFtbWUgdGlrIG1ldCA8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+LiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAzX2FjdGlvbiIgbXNnaWQ9IjYwMDg3OTc5NzI1Njk0MjI1OSI+IlN0ZWwgYnlrb21lbmRlIHRhbGUgb3AiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9maW5pc2hfYWN0aW9uIiBtc2dpZD0iMjc2NTU5MjQzNDA5NDY1Mzg5Ij4iS2xhYXIiPC9zdHJpbmc+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc2hvd19zZXR1cF93aXphcmRfaWNvbiAoNTAwODAyODU5MDU5MzcxMDgzMCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzaG93X3NldHVwX3dpemFyZF9pY29uX3N1bW1hcnkgKDQxMTk5OTgzMjI1MzY4ODAyMTMpIC0tPgorICAgIDxza2lwIC8+CiAgICAgPHN0cmluZyBuYW1lPSJhcHBfbmFtZSIgbXNnaWQ9IjYzMjAxMDI2Mzc0OTEyMzQ3OTIiPiJXb29yZGVib2VrdmVyc2thZmZlciI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRpY3Rpb25hcnlfcHJvdmlkZXJfbmFtZSIgbXNnaWQ9IjMwMjczMTUwNDUzOTczNjMwNzkiPiJXb29yZGVib2VrdmVyc2thZmZlciI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRpY3Rpb25hcnlfc2VydmljZV9uYW1lIiBtc2dpZD0iNjIzNzQ3MjM1MDY5MzUxMTQ0OCI+Ildvb3JkZWJvZWstZGllbnMiPC9zdHJpbmc+CkBAIC0yMDMsNCArMjI0LDYgQEAKICAgICA8c3RyaW5nIG5hbWU9ImRpY3RfYXZhaWxhYmxlX25vdGlmaWNhdGlvbl90aXRsZSIgbXNnaWQ9IjY1MTQyODg1OTE5NTkxMTcyODgiPiJcJ24gV29vcmRlYm9layBpcyB2aXIgPHhsaWZmOmcgaWQ9IkxBTkdVQUdFIj4lMSRzPC94bGlmZjpnPiBiZXNraWtiYWFyIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGljdF9hdmFpbGFibGVfbm90aWZpY2F0aW9uX2Rlc2NyaXB0aW9uIiBtc2dpZD0iMTA3NTE5NDE2OTQ0MzE2MzQ4NyI+IkRydWsgb20gdGUgaGVyc2llbiBlbiBhZiB0ZSBsYWFpIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idG9hc3RfZG93bmxvYWRpbmdfc3VnZ2VzdGlvbnMiIG1zZ2lkPSIxMzEzMDI3MzUzNTg4NTY2NjYwIj4iTGFhaSB0YW5zIGFmOiB2b29yc3RlbGxlIHZpciA8eGxpZmY6ZyBpZD0iTEFOR1VBR0UiPiUxJHM8L3hsaWZmOmc+IHNhbCBiaW5uZWtvcnQgZ2VyZWVkIHdlZXMuIjwvc3RyaW5nPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHZlcnNpb25fdGV4dCAoMjcxNTM1NDIxNTU2ODQ2OTM4NSkgLS0+CisgICAgPHNraXAgLz4KIDwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvamF2YS9yZXMvdmFsdWVzLWFtL3N0cmluZ3MueG1sIGIvamF2YS9yZXMvdmFsdWVzLWFtL3N0cmluZ3MueG1sCmluZGV4IDAzYThiOTMuLjQyMGI0NDYgMTAwNjQ0Ci0tLSBhL2phdmEvcmVzL3ZhbHVlcy1hbS9zdHJpbmdzLnhtbAorKysgYi9qYXZhL3Jlcy92YWx1ZXMtYW0vc3RyaW5ncy54bWwKQEAgLTUzLDYgKzUzLDcgQEAKICAgICA8c3RyaW5nIG5hbWU9InVzZV9kb3VibGVfc3BhY2VfcGVyaW9kX3N1bW1hcnkiIG1zZ2lkPSI2NTMyODkyMTg3MjQ3OTUyNzk5Ij4i4Yuo4Yqt4Y2N4Ymw4Ym1IOGKoOGInuGIjOGLjSDhiIvhi60g4YiB4YiI4Ym0IOGImOGJsyDhiJvhi7XhiKjhjI0g4Yqg4YqV4Yu1IOGKkOGMpeGJpSDhiqXhipMg4Yqt4Y2N4Ymw4Ym1IOGKoOGIteGKqOGJteGIjiDhi6vhiLXhjIjhiaPhiI0iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJhdXRvX2NhcCIgbXNnaWQ9IjE3MTk3NDY2NzQ4NTQ2MjgyNTIiPiLhiKvhiLUt4Yiw4YitIOGKoOGJouGLrSDhiJvhi7XhiKjhjI0iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJhdXRvX2NhcF9zdW1tYXJ5IiBtc2dpZD0iNzkzNDQ1Mjc2MTAyMjk0Njg3NCI+IuGLqOGKpeGLq+GKleGLs+GKleGLsSDhi5PhiKjhjY3hibAg4YqQ4YyI4YitIOGLqOGImOGMgOGImOGIquGLqyDhiYPhiI0g4Ymg4Yqg4Ymi4YutIOGIhuGIhCDhi6vhiLXhiYDhiJ3hjKEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJlZGl0X3BlcnNvbmFsX2RpY3Rpb25hcnkiIG1zZ2lkPSIzOTk2OTEwMDM4OTUyOTQwNDIwIj4i4Yuo4YyN4YiNIOGImOGLneGMiOGJoC3hiYPhiIvhibUiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjb25maWd1cmVfZGljdGlvbmFyaWVzX3RpdGxlIiBtc2dpZD0iNDIzODY1MjMzODU1NjkwMjA0OSI+IuGImOGLneGMiOGJoCDhiYPhiIvhibbhib0g4Yyo4Yid4YitIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ibWFpbl9kaWN0aW9uYXJ5IiBtc2dpZD0iNDc5ODc2Mzc4MTgxODM2MTE2OCI+IuGLi+GKkyDhiJjhi53hjIjhiaAg4YmD4YiL4Ym1Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icHJlZnNfc2hvd19zdWdnZXN0aW9ucyIgbXNnaWQ9IjgwMjY3OTk2NjM0NDU1MzE2MzciPiLhi6jhiJvhiLXhibDhiqvhiqjhi6sg4Yyl4YmG4Yib4YuO4Ym9IOGKoOGIs+GLrSI8L3N0cmluZz4KQEAgLTE3MSw4ICsxNzIsMjUgQEAKICAgICA8c3RyaW5nIG5hbWU9InJlYWRfZXh0ZXJuYWxfZGljdGlvbmFyeV9jb25maXJtX2luc3RhbGxfbWVzc2FnZSIgbXNnaWQ9IjY4OTg2MTAxNjM3Njg5ODA4NzAiPiLhiqXhi43hipUg4Yut4YiEIOGNi+GLreGIjSDhiIg8eGxpZmY6ZyBpZD0iTE9DQUxFX05BTUUiPiVzPC94bGlmZjpnPiDhi63hjKvhipU/Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZXJyb3IiIG1zZ2lkPSI4OTQwNzYzNjI0NjY4NTEzNjQ4Ij4i4Yi14YiF4Ymw4Ym1IOGJsOGKqOGIteGJtiDhipDhiaDhiK0iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJidXR0b25fZGVmYXVsdCIgbXNnaWQ9IjM5ODgwMTc4NDA0MzE4ODE0OTEiPiLhipDhiaPhiKoiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJsYW5ndWFnZV9zZXR0aW5ncyIgbXNnaWQ9IjE2NzExNTMwNTMyMDE4MDkwMzEiPiLhiYvhipXhiYsg4Yql4YqTIOGMjeGJpOGJtSI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InNlbGVjdF9pbnB1dF9tZXRob2QiIG1zZ2lkPSI0MzAxNjAyMzc0NjA5Mjc1MDAzIj4i4Yuo4YyN4Ymk4Ym1IOGIteGIjeGJtSDhi63hiJ3hiKjhjKEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF93ZWxjb21lX3RpdGxlIiBtc2dpZD0iNjExMjgyMTcwOTgzMjAzMTcxNSI+IuGKpeGKleGKs+GKlSDhi4jhi7AgPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPiDhiaDhi7DhiIXhipMg4YiY4YyhIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfd2VsY29tZV9hZGRpdGlvbmFsX2Rlc2NyaXB0aW9uIiBtc2dpZD0iODE1MDI1MjAwODU0NTc2ODk1MyI+IuGJoOGMo+GJtSDhiJ3hiI3hiq3hibUg4YiY4Ymw4Yuo4YmlIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RhcnRfYWN0aW9uIiBtc2dpZD0iODkzNjAzNjQ2MDg5NzM0NzcwOCI+IuGMgOGIneGIrSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX25leHRfYWN0aW9uIiBtc2dpZD0iMzcxODIxNDM3OTE1MTQ0NjAzIj4i4YmA4Yyj4YutIOGLsOGIqOGMgyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXBzX3RpdGxlIiBtc2dpZD0iNjQwMDM3MzAzNDg3MTgxNjE4MiI+Ijx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz7hipUg4Ymg4Yib4YuL4YmA4YitIOGIi+GLrSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAxX3RpdGxlIiBtc2dpZD0iMzE0Nzk2NzYzMDI1MzQ2MjMxNSI+Ijx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz7hipUg4Yur4YqV4YmBIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDFfaW5zdHJ1Y3Rpb24iIG1zZ2lkPSIyNTc4NjMxOTM2NjI0NjM3MjQxIj4i4Yql4Ymj4Yqt4YuOIMKrPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPsK74YqVIOGJoOGJi+GKleGJiyDhiqXhipMg4YyN4Ymk4Ym1IOGJheGKleGJpeGIruGJveGLjiDhi43hiLXhjKUg4Yur4Yio4YyL4YyN4Yyh4Ym14Y2iIOGLreGIhCDhiqXhiLEg4Ymg4YiY4Yij4Yiq4Yur4YuOIOGIi+GLrSDhiqXhipXhi7LhiIThi7Ug4Yut4Y2I4YmF4Yu14YiI4Ymz4YiN4Y2iIjwvc3RyaW5nPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNldHVwX3N0ZXAxX2ZpbmlzaGVkX2luc3RydWN0aW9uICgxMDc2MTQ4MjAwNDk1Nzk5NCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAxX2FjdGlvbiIgbXNnaWQ9IjQzNjY1MTM1MzQ5OTk5MDE3MjgiPiLhiaDhiYXhipXhiaXhiK7hib0g4YuN4Yi14YylIOGLq+GKleGJgSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAyX3RpdGxlIiBtc2dpZD0iNjg2MDcyNTQ0NzkwNjY5MDU5NCI+IuGLiOGLsCA8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+IOGLreGJgOGLreGIqSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAyX2luc3RydWN0aW9uIiBtc2dpZD0iOTE0MTQ4MTk2NDg3MDAyMzMzNiI+IuGJoOGImOGJgOGMoOGIjSDCqzx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz7Cu+GKlSDhiqXhipXhi7Ag4Yuo4Yy94YiR4Y2NIOGMjeGJpOGJtSDhiLXhiI3hibXhi44g4Yut4Yid4Yio4Yyh4Ym14Y2iIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDJfYWN0aW9uIiBtc2dpZD0iMTY2MDMzMDMwNzE1OTgyNDMzNyI+IuGLqOGMjeGJpOGJtSDhiLXhiI3hibbhib3hipUg4YmA4Yur4Yut4YitIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDNfdGl0bGUiIG1zZ2lkPSIzMTU0NzU3MTgzNjMxNDkwMjgxIj4i4Yql4YqV4Yqz4YqVIOGLsOGItSDhiqDhiIjhi47hibXhjaMg4Ymg4YmDIOGMqOGIreGIsOGLi+GIjSEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwM19pbnN0cnVjdGlvbiIgbXNnaWQ9IjgwMjU5ODE4Mjk2MDU0MjYwMDAiPiLhiqDhiIHhipUg4Ymg4YiB4YiJ4YidIOGJsOGLiOGLs+GMhSDhiJjhibDhjI3hiaDhiKrhi6vhi47hib3hi44g4YiL4YutIOGJoDx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz4g4YiY4Ymw4Yuo4YmlIOGLreGJveGIi+GIieGNoiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAzX2FjdGlvbiIgbXNnaWQ9IjYwMDg3OTc5NzI1Njk0MjI1OSI+IuGJsOGMqOGIm+GIqiDhiYvhipXhiYvhi47hib3hipUg4Yur4YuL4YmF4YipIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfZmluaXNoX2FjdGlvbiIgbXNnaWQ9IjI3NjU1OTI0MzQwOTQ2NTM4OSI+IuGMqOGIreGIt+GIjSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNob3dfc2V0dXBfd2l6YXJkX2ljb24iIG1zZ2lkPSI1MDA4MDI4NTkwNTkzNzEwODMwIj4i4Yuo4YiY4Ymw4YyN4Ymg4Yiq4YurIOGKoOGLtiDhiqDhiLPhi60iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzaG93X3NldHVwX3dpemFyZF9pY29uX3N1bW1hcnkiIG1zZ2lkPSI0MTE5OTk4MzIyNTM2ODgwMjEzIj4i4Yuo4YiY4Ymw4YyN4Ymg4Yiq4YurIOGKoOGLtuGLjeGKlSDhiaDhiJvhiLXhjIDhiJjhiKrhi6vhi40g4YuN4Yi14YylIOGKoOGIs+GLrSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImFwcF9uYW1lIiBtc2dpZD0iNjMyMDEwMjYzNzQ5MTIzNDc5MiI+IuGLqOGImOGLneGMiOGJoC3hiYPhiIvhibUg4Yqg4YmF4Yir4YmiIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGljdGlvbmFyeV9wcm92aWRlcl9uYW1lIiBtc2dpZD0iMzAyNzMxNTA0NTM5NzM2MzA3OSI+IuGLqOGImOGLneGMiOGJoC3hiYPhiIvhibUg4Yqg4YmF4Yir4YmiIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGljdGlvbmFyeV9zZXJ2aWNlX25hbWUiIG1zZ2lkPSI2MjM3NDcyMzUwNjkzNTExNDQ4Ij4i4Yuo4YiY4Yud4YyI4YmgLeGJg+GIi+GJtSDhiqDhjIjhiI3hjI3hiI7hibUiPC9zdHJpbmc+CkBAIC0yMDMsNCArMjIxLDYgQEAKICAgICA8c3RyaW5nIG5hbWU9ImRpY3RfYXZhaWxhYmxlX25vdGlmaWNhdGlvbl90aXRsZSIgbXNnaWQ9IjY1MTQyODg1OTE5NTkxMTcyODgiPiLhiJjhi53hjIjhiaAt4YmD4YiL4Ym1IOGIiDx4bGlmZjpnIGlkPSJMQU5HVUFHRSI+JTEkczwveGxpZmY6Zz4g4Yut4YyI4Yqb4YiNIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGljdF9hdmFpbGFibGVfbm90aWZpY2F0aW9uX2Rlc2NyaXB0aW9uIiBtc2dpZD0iMTA3NTE5NDE2OTQ0MzE2MzQ4NyI+IuGIiOGImOGMiOGIneGMiOGIneGKkyDhiIjhiJvhi43hiKjhi7Ug4Yut4Yyr4YqRIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idG9hc3RfZG93bmxvYWRpbmdfc3VnZ2VzdGlvbnMiIG1zZ2lkPSIxMzEzMDI3MzUzNTg4NTY2NjYwIj4i4Ymg4Yib4YuN4Yio4Yu1IOGIi+GLreGNpiDhi6g8eGxpZmY6ZyBpZD0iTEFOR1VBR0UiPiUxJHM8L3hsaWZmOmc+IOGMpeGJhuGImyDhiqDhiLXhibDhi6vhi6jhibbhib0g4Ymg4YmF4Yit4YmhIOGLneGMjeGMgSDhi63hiIbhipPhiInhjaIiPC9zdHJpbmc+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgdmVyc2lvbl90ZXh0ICgyNzE1MzU0MjE1NTY4NDY5Mzg1KSAtLT4KKyAgICA8c2tpcCAvPgogPC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9qYXZhL3Jlcy92YWx1ZXMtYXIvc3RyaW5ncy54bWwgYi9qYXZhL3Jlcy92YWx1ZXMtYXIvc3RyaW5ncy54bWwKaW5kZXggYzE2ZjIyNC4uM2U1Yjg1NiAxMDA2NDQKLS0tIGEvamF2YS9yZXMvdmFsdWVzLWFyL3N0cmluZ3MueG1sCisrKyBiL2phdmEvcmVzL3ZhbHVlcy1hci9zdHJpbmdzLnhtbApAQCAtNTMsNiArNTMsOCBAQAogICAgIDxzdHJpbmcgbmFtZT0idXNlX2RvdWJsZV9zcGFjZV9wZXJpb2Rfc3VtbWFyeSIgbXNnaWQ9IjY1MzI4OTIxODcyNDc5NTI3OTkiPiLZitik2K/ZiiDYp9mE2YbZgtixINmG2YLYsdmL2Kcg2YXYstiv2YjYrNmL2Kcg2LnZhNmJINmF2YHYqtin2K0g2KfZhNmF2LPYp9mB2Kkg2KXZhNmJINil2K/Yrtin2YQg2YbZgti32Kkg2YXYqtio2YjYudipINio2YXYs9in2YHYqSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImF1dG9fY2FwIiBtc2dpZD0iMTcxOTc0NjY3NDg1NDYyODI1MiI+Itij2K3YsdmBINmD2KjZitix2Kkg2KrZhNmC2KfYptmK2YvYpyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImF1dG9fY2FwX3N1bW1hcnkiIG1zZ2lkPSI3OTM0NDUyNzYxMDIyOTQ2ODc0Ij4i2YPYqtin2KjYqSDYp9mE2K3YsdmBINin2YTYo9mI2YQg2YXZhiDZg9mEINis2YXZhNipINio2K3YsdmBINmD2KjZitixLiI8L3N0cmluZz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBlZGl0X3BlcnNvbmFsX2RpY3Rpb25hcnkgKDM5OTY5MTAwMzg5NTI5NDA0MjApIC0tPgorICAgIDxza2lwIC8+CiAgICAgPHN0cmluZyBuYW1lPSJjb25maWd1cmVfZGljdGlvbmFyaWVzX3RpdGxlIiBtc2dpZD0iNDIzODY1MjMzODU1NjkwMjA0OSI+Itin2YTZgtmI2KfZhdmK2LMg2KfZhNil2LbYp9mB2YrYqSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im1haW5fZGljdGlvbmFyeSIgbXNnaWQ9IjQ3OTg3NjM3ODE4MTgzNjExNjgiPiLYp9mE2YLYp9mF2YjYsyDYp9mE2LHYptmK2LPZiiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InByZWZzX3Nob3dfc3VnZ2VzdGlvbnMiIG1zZ2lkPSI4MDI2Nzk5NjYzNDQ1NTMxNjM3Ij4i2LnYsdi2INin2YLYqtix2KfYrdin2Kog2KfZhNiq2LXYrdmK2K0iPC9zdHJpbmc+CkBAIC0xNzEsOCArMTczLDI3IEBACiAgICAgPHN0cmluZyBuYW1lPSJyZWFkX2V4dGVybmFsX2RpY3Rpb25hcnlfY29uZmlybV9pbnN0YWxsX21lc3NhZ2UiIG1zZ2lkPSI2ODk4NjEwMTYzNzY4OTgwODcwIj4i2YfZhCDYqtix2YrYryDYrdmC2YvYpyDYqtir2KjZitiqINmH2LDYpyDYp9mE2YXZhNmBINmE2YTYutipIDx4bGlmZjpnIGlkPSJMT0NBTEVfTkFNRSI+JXM8L3hsaWZmOmc+2J8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJlcnJvciIgbXNnaWQ9Ijg5NDA3NjM2MjQ2Njg1MTM2NDgiPiLYrdiv2Ksg2K7Yt9ijIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYnV0dG9uX2RlZmF1bHQiIG1zZ2lkPSIzOTg4MDE3ODQwNDMxODgxNDkxIj4i2KfZhNin2YHYqtix2KfYttmK2KkiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJsYW5ndWFnZV9zZXR0aW5ncyIgbXNnaWQ9IjE2NzExNTMwNTMyMDE4MDkwMzEiPiLYp9mE2YTYutipINmI2KfZhNil2K/Yrtin2YQiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJzZWxlY3RfaW5wdXRfbWV0aG9kIiBtc2dpZD0iNDMwMTYwMjM3NDYwOTI3NTAwMyI+Itin2K7YqtmK2KfYsSDYo9iz2YTZiNioINin2YTYpdiv2K7Yp9mEIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfd2VsY29tZV90aXRsZSIgbXNnaWQ9IjYxMTI4MjE3MDk4MzIwMzE3MTUiPiLZhdix2K3YqNinINio2YPZhSDZgdmKIDx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF93ZWxjb21lX2FkZGl0aW9uYWxfZGVzY3JpcHRpb24iIG1zZ2lkPSI4MTUwMjUyMDA4NTQ1NzY4OTUzIj4i2YXYuSDYp9mE2YPYqtin2KjYqSDYqNin2YTYpdi02KfYsdipIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RhcnRfYWN0aW9uIiBtc2dpZD0iODkzNjAzNjQ2MDg5NzM0NzcwOCI+Itio2K/YoSDYp9mE2KfYs9iq2K7Yr9in2YUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9uZXh0X2FjdGlvbiIgbXNnaWQ9IjM3MTgyMTQzNzkxNTE0NDYwMyI+Itin2YTYrti32YjYqSDYp9mE2KrYp9mE2YrYqSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXBzX3RpdGxlIiBtc2dpZD0iNjQwMDM3MzAzNDg3MTgxNjE4MiI+Itil2LnYr9in2K8gPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAxX3RpdGxlIiBtc2dpZD0iMzE0Nzk2NzYzMDI1MzQ2MjMxNSI+Itiq2YXZg9mK2YYgPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAxX2luc3RydWN0aW9uIiBtc2dpZD0iMjU3ODYzMTkzNjYyNDYzNzI0MSI+ItmK2Y/Ysdis2Ykg2KrYrdiv2YrYryBcIjx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz5cIiDZgdmKINil2LnYr9in2K/Yp9iqINin2YTZhNi62Kkg2YjYp9mE2KXYr9iu2KfZhCDYrdmK2Ksg2YrYs9mF2K0g2YfYsNinINin2YTYpdi52K/Yp9ivINio2KrYtNi62YrZhNmHINi52YTZiSDYrNmH2KfYstmDLiI8L3N0cmluZz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzZXR1cF9zdGVwMV9maW5pc2hlZF9pbnN0cnVjdGlvbiAoMTA3NjE0ODIwMDQ5NTc5OTQpIC0tPgorICAgIDxza2lwIC8+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMV9hY3Rpb24iIG1zZ2lkPSI0MzY2NTEzNTM0OTk5OTAxNzI4Ij4i2KrZhdmD2YrZhiDZgdmKINin2YTYpdi52K/Yp9iv2KfYqiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAyX3RpdGxlIiBtc2dpZD0iNjg2MDcyNTQ0NzkwNjY5MDU5NCI+Itin2YTYqtio2K/ZitmEINil2YTZiSA8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+LiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAyX2luc3RydWN0aW9uIiBtc2dpZD0iOTE0MTQ4MTk2NDg3MDAyMzMzNiI+Itio2LnYryDYsNmE2YPYjCDYrdiv2K8gXCI8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+XCIg2KjYp9i52KrYqNin2LHZhyDYo9iz2YTZiNioINil2K/Yrtin2YQg2KfZhNmG2LUg2KfZhNmG2LTYty4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMl9hY3Rpb24iIG1zZ2lkPSIxNjYwMzMwMzA3MTU5ODI0MzM3Ij4i2KrYqNiv2YrZhCDYo9iz2KfZhNmK2Kgg2KfZhNil2K/Yrtin2YQiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwM190aXRsZSIgbXNnaWQ9IjMxNTQ3NTcxODM2MzE0OTAyODEiPiLYqtmH2KfZhtmK2YbYp9iMINio2YfYsNinINiq2YPZiNmGINmC2K8g2KfZhtiq2YfZitiqINmF2YYg2KfZhNil2LnYr9in2K8iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwM19pbnN0cnVjdGlvbiIgbXNnaWQ9IjgwMjU5ODE4Mjk2MDU0MjYwMDAiPiLYp9mE2KLZhiDYo9i12KjYrSDYqNil2YXZg9in2YbZgyDYp9mE2YPYqtin2KjYqSDZgdmKINis2YXZiti5INiq2LfYqNmK2YLYp9iq2YMg2KfZhNmF2YHYttmE2Kkg2KjYp9iz2KrYrtiv2KfZhSA8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+LiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAzX2FjdGlvbiIgbXNnaWQ9IjYwMDg3OTc5NzI1Njk0MjI1OSI+Itiq2YfZitim2Kkg2KfZhNmE2LrYp9iqINin2YTYpdi22KfZgdmK2KkiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9maW5pc2hfYWN0aW9uIiBtc2dpZD0iMjc2NTU5MjQzNDA5NDY1Mzg5Ij4i2KXZhtmH2KfYoSDYp9mE2LnZhdmE2YrYqSI8L3N0cmluZz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzaG93X3NldHVwX3dpemFyZF9pY29uICg1MDA4MDI4NTkwNTkzNzEwODMwKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNob3dfc2V0dXBfd2l6YXJkX2ljb25fc3VtbWFyeSAoNDExOTk5ODMyMjUzNjg4MDIxMykgLS0+CisgICAgPHNraXAgLz4KICAgICA8c3RyaW5nIG5hbWU9ImFwcF9uYW1lIiBtc2dpZD0iNjMyMDEwMjYzNzQ5MTIzNDc5MiI+ItmF2YLYr9mFINin2YTZgtin2YXZiNizIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGljdGlvbmFyeV9wcm92aWRlcl9uYW1lIiBtc2dpZD0iMzAyNzMxNTA0NTM5NzM2MzA3OSI+ItmF2YLYr9mFINin2YTZgtin2YXZiNizIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGljdGlvbmFyeV9zZXJ2aWNlX25hbWUiIG1zZ2lkPSI2MjM3NDcyMzUwNjkzNTExNDQ4Ij4i2K7Yr9mF2Kkg2KfZhNmC2KfZhdmI2LMiPC9zdHJpbmc+CkBAIC0yMDMsNCArMjI0LDYgQEAKICAgICA8c3RyaW5nIG5hbWU9ImRpY3RfYXZhaWxhYmxlX25vdGlmaWNhdGlvbl90aXRsZSIgbXNnaWQ9IjY1MTQyODg1OTE5NTkxMTcyODgiPiLZh9mG2KfZgyDZgtin2YXZiNizINmF2KrZiNmB2LEg2YTZhNi62KkgPHhsaWZmOmcgaWQ9IkxBTkdVQUdFIj4lMSRzPC94bGlmZjpnPiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRpY3RfYXZhaWxhYmxlX25vdGlmaWNhdGlvbl9kZXNjcmlwdGlvbiIgbXNnaWQ9IjEwNzUxOTQxNjk0NDMxNjM0ODciPiLYp9i22LrYtyDZhNmE2YXYsdin2KzYudipINmI2KfZhNiq2YbYstmK2YQiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ0b2FzdF9kb3dubG9hZGluZ19zdWdnZXN0aW9ucyIgbXNnaWQ9IjEzMTMwMjczNTM1ODg1NjY2NjAiPiLYrNin2LHZjSDYp9mE2KrZhtiy2YrZhDog2LPYqtiq2YjZgdixINin2YLYqtix2KfYrdin2Kog2YTZhNi62KkgPHhsaWZmOmcgaWQ9IkxBTkdVQUdFIj4lMSRzPC94bGlmZjpnPiDYqNi52K8g2YLZhNmK2YQuIjwvc3RyaW5nPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHZlcnNpb25fdGV4dCAoMjcxNTM1NDIxNTU2ODQ2OTM4NSkgLS0+CisgICAgPHNraXAgLz4KIDwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvamF2YS9yZXMvdmFsdWVzLWJlL3N0cmluZ3MueG1sIGIvamF2YS9yZXMvdmFsdWVzLWJlL3N0cmluZ3MueG1sCmluZGV4IGVjYTI0ZWIuLmU1MTU1YTEgMTAwNjQ0Ci0tLSBhL2phdmEvcmVzL3ZhbHVlcy1iZS9zdHJpbmdzLnhtbAorKysgYi9qYXZhL3Jlcy92YWx1ZXMtYmUvc3RyaW5ncy54bWwKQEAgLTUzLDYgKzUzLDggQEAKICAgICA8c3RyaW5nIG5hbWU9InVzZV9kb3VibGVfc3BhY2VfcGVyaW9kX3N1bW1hcnkiIG1zZ2lkPSI2NTMyODkyMTg3MjQ3OTUyNzk5Ij4i0J/QsNC00LLQvtC50L3QsNC1INC90LDRhmnRgdC60LDQvdC90LUg0L3QsCDQv9GA0LDQsdC10Lsg0Z7RgdGC0LDRntC70Y/QtSBp0L3RgtGN0YDQstCw0Lsg0Lcg0L3QsNGB0YLRg9C/0L3Ri9C8INC/0YDQsNCx0LXQu9Cw0LwiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJhdXRvX2NhcCIgbXNnaWQ9IjE3MTk3NDY2NzQ4NTQ2MjgyNTIiPiLQkNGe0YLQsNC80LDRgtGL0YfQvdCwINGA0LDQsdGW0YbRjCDQstGP0LvRltC60ZbRjyDQu9GW0YLQsNGA0YsiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJhdXRvX2NhcF9zdW1tYXJ5IiBtc2dpZD0iNzkzNDQ1Mjc2MTAyMjk0Njg3NCI+ItCf0ZbRgdCw0YbRjCDQtyDQt9Cw0LPQsNC70L7RntC90LDQuSDQu9GW0YLQsNGA0Ysg0L/QtdGA0YjQsNC1INGB0LvQvtCy0LAg0Z4g0LrQvtC20L3Ri9C8INGB0LrQsNC30LUiPC9zdHJpbmc+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgZWRpdF9wZXJzb25hbF9kaWN0aW9uYXJ5ICgzOTk2OTEwMDM4OTUyOTQwNDIwKSAtLT4KKyAgICA8c2tpcCAvPgogICAgIDxzdHJpbmcgbmFtZT0iY29uZmlndXJlX2RpY3Rpb25hcmllc190aXRsZSIgbXNnaWQ9IjQyMzg2NTIzMzg1NTY5MDIwNDkiPiLQlNCw0LTQsNGC0LrQvtCy0YvRjyDRgdC70L7RntC90ZbQutGWIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ibWFpbl9kaWN0aW9uYXJ5IiBtc2dpZD0iNDc5ODc2Mzc4MTgxODM2MTE2OCI+ItCQ0YHQvdC+0Z7QvdGLINGB0LvQvtGe0L3RltC6Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icHJlZnNfc2hvd19zdWdnZXN0aW9ucyIgbXNnaWQ9IjgwMjY3OTk2NjM0NDU1MzE2MzciPiLQn9Cw0LrQsNC30LDRhtGMINC/0YDQsNC/0LDQvdC+0LLRiyDQvdCwINCy0YvQv9GA0LDRntC70LXQvdC90LUiPC9zdHJpbmc+CkBAIC0xNzEsOCArMTczLDI3IEBACiAgICAgPHN0cmluZyBuYW1lPSJyZWFkX2V4dGVybmFsX2RpY3Rpb25hcnlfY29uZmlybV9pbnN0YWxsX21lc3NhZ2UiIG1zZ2lkPSI2ODk4NjEwMTYzNzY4OTgwODcwIj4i0KHQsNC/0YDQsNGe0LTRiyDRntGB0YLQsNC70Y/QstCw0YbRjCDQs9GN0YLRiyDRhNCw0LnQuyDQvdCwINC80L7QstC1OiA8eGxpZmY6ZyBpZD0iTE9DQUxFX05BTUUiPiVzPC94bGlmZjpnPj8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJlcnJvciIgbXNnaWQ9Ijg5NDA3NjM2MjQ2Njg1MTM2NDgiPiLQkdGL0LvQsCDQv9Cw0LzRi9C70LrQsCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJ1dHRvbl9kZWZhdWx0IiBtc2dpZD0iMzk4ODAxNzg0MDQzMTg4MTQ5MSI+ItCf0LAg0LfQvNCw0Z7Rh9Cw0L3QvdGWIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibGFuZ3VhZ2Vfc2V0dGluZ3MiIG1zZ2lkPSIxNjcxMTUzMDUzMjAxODA5MDMxIj4i0JzQvtCy0LAg0ZYg0Z7QstC+0LQiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJzZWxlY3RfaW5wdXRfbWV0aG9kIiBtc2dpZD0iNDMwMTYwMjM3NDYwOTI3NTAwMyI+ItCS0YvQsdC10YDRi9GG0LUg0LzQtdGC0LDQtCDRg9Cy0L7QtNGDIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfd2VsY29tZV90aXRsZSIgbXNnaWQ9IjYxMTI4MjE3MDk4MzIwMzE3MTUiPiLQktGW0YLQsNC10Lwg0YMg0L/RgNGL0LrQu9Cw0LTQsNC90L3RliA8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfd2VsY29tZV9hZGRpdGlvbmFsX2Rlc2NyaXB0aW9uIiBtc2dpZD0iODE1MDI1MjAwODU0NTc2ODk1MyI+ItC3INGD0LLQvtC00LDQvCDQttGN0YHRgtCw0LzRliI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0YXJ0X2FjdGlvbiIgbXNnaWQ9Ijg5MzYwMzY0NjA4OTczNDc3MDgiPiLQn9Cw0YfQsNGG0YwiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9uZXh0X2FjdGlvbiIgbXNnaWQ9IjM3MTgyMTQzNzkxNTE0NDYwMyI+ItCU0LDQu9C10LkiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwc190aXRsZSIgbXNnaWQ9IjY0MDAzNzMwMzQ4NzE4MTYxODIiPiLQndCw0LvQsNC00LrQsCDQv9GA0YvQutC70LDQtNCw0L3QvdGPIDx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMV90aXRsZSIgbXNnaWQ9IjMxNDc5Njc2MzAyNTM0NjIzMTUiPiLQo9C60LvRjtGH0YvRhtGMINC/0YDRi9C60LvQsNC00LDQvdC90LUgPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAxX2luc3RydWN0aW9uIiBtc2dpZD0iMjU3ODYzMTkzNjYyNDYzNzI0MSI+ItCf0YDQsNCy0LXRgNGG0LUg0L/RgNGL0LrQu9Cw0LTQsNC90L3QtSBcIjx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz5cIiDQvdCwINGB0LLQsNGR0Lkg0LzQvtCy0LUg0ZYg0L/QsNGA0LDQvNC10YLRgNGLINGe0LLQvtC00YMuINCT0Y3RgtCwINC00LDRgdGG0Ywg0LzQsNCz0YfRi9C80LDRgdGG0Ywg0LTQsNC30LLQvtC70ZbRhtGMINGP0LzRgyDQv9GA0LDRhtCw0LLQsNGG0Ywg0L3QsCDQstCw0YjQsNC5INC/0YDRi9C70LDQtNC30LUuIjwvc3RyaW5nPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNldHVwX3N0ZXAxX2ZpbmlzaGVkX2luc3RydWN0aW9uICgxMDc2MTQ4MjAwNDk1Nzk5NCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAxX2FjdGlvbiIgbXNnaWQ9IjQzNjY1MTM1MzQ5OTk5MDE3MjgiPiLQo9C60LvRjtGH0YvRhtGMINGDINC90LDQu9Cw0LTQsNGFIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDJfdGl0bGUiIG1zZ2lkPSI2ODYwNzI1NDQ3OTA2NjkwNTk0Ij4i0J/QtdGA0LDQutC70Y7Rh9GL0YbRhtCwINC90LAg0L/RgNGL0LrQu9Cw0LTQsNC90L3QtSA8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+LiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAyX2luc3RydWN0aW9uIiBtc2dpZD0iOTE0MTQ4MTk2NDg3MDAyMzMzNiI+ItCS0YvQsdC10YDRi9GG0LUgXCI8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+XCIg0Y/QuiDQsNC60YLRi9Ge0L3RiyDQvNC10YLQsNC0INGD0LLQvtC00YMg0YLRjdC60YHRgtGDLiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAyX2FjdGlvbiIgbXNnaWQ9IjE2NjAzMzAzMDcxNTk4MjQzMzciPiLQn9C10YDQsNC60LvRjtGH0Y3QvdC90LUg0LzQtdGC0LDQtNCw0Z4g0YPQstC+0LTRgyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAzX3RpdGxlIiBtc2dpZD0iMzE1NDc1NzE4MzYzMTQ5MDI4MSI+ItCj0YHRkSDQs9Cw0YLQvtCy0LAhIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDNfaW5zdHJ1Y3Rpb24iIG1zZ2lkPSI4MDI1OTgxODI5NjA1NDI2MDAwIj4i0KbRj9C/0LXRgCDQstGLINC80L7QttCw0YbQtSDRntCy0L7QtNC30ZbRhtGMINGe0YHQtSDRgdCy0LDQtSDQu9GO0LHRltC80YvRjyDQv9GA0YvQutC70LDQtNCw0L3QvdGWINC3IGnQvNC10LwgPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPi4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwM19hY3Rpb24iIG1zZ2lkPSI2MDA4Nzk3OTcyNTY5NDIyNTkiPiLQndCw0LvQsNC00LrQsCDQtNCw0LTQsNGC0LrQvtCy0YvRhSDQvNC+0Z4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9maW5pc2hfYWN0aW9uIiBtc2dpZD0iMjc2NTU5MjQzNDA5NDY1Mzg5Ij4i0JPQsNGC0L7QstCwIjwvc3RyaW5nPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNob3dfc2V0dXBfd2l6YXJkX2ljb24gKDUwMDgwMjg1OTA1OTM3MTA4MzApIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc2hvd19zZXR1cF93aXphcmRfaWNvbl9zdW1tYXJ5ICg0MTE5OTk4MzIyNTM2ODgwMjEzKSAtLT4KKyAgICA8c2tpcCAvPgogICAgIDxzdHJpbmcgbmFtZT0iYXBwX25hbWUiIG1zZ2lkPSI2MzIwMTAyNjM3NDkxMjM0NzkyIj4i0J/QsNGB0YLQsNGe0YjRh9GL0Log0YHQu9C+0Z7QvdGW0LrQsCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRpY3Rpb25hcnlfcHJvdmlkZXJfbmFtZSIgbXNnaWQ9IjMwMjczMTUwNDUzOTczNjMwNzkiPiLQn9Cw0YHRgtCw0Z7RiNGH0YvQuiDRgdC70L7RntC90ZbQutCwIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGljdGlvbmFyeV9zZXJ2aWNlX25hbWUiIG1zZ2lkPSI2MjM3NDcyMzUwNjkzNTExNDQ4Ij4i0KHQu9C+0Z7QvdGW0LoiPC9zdHJpbmc+CkBAIC0yMDMsNCArMjI0LDYgQEAKICAgICA8c3RyaW5nIG5hbWU9ImRpY3RfYXZhaWxhYmxlX25vdGlmaWNhdGlvbl90aXRsZSIgbXNnaWQ9IjY1MTQyODg1OTE5NTkxMTcyODgiPiLQodC70L7RntC90ZbQuiDQtNC70Y8g0LzQvtCy0YsgXCI8eGxpZmY6ZyBpZD0iTEFOR1VBR0UiPiUxJHM8L3hsaWZmOmc+XCIiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkaWN0X2F2YWlsYWJsZV9ub3RpZmljYXRpb25fZGVzY3JpcHRpb24iIG1zZ2lkPSIxMDc1MTk0MTY5NDQzMTYzNDg3Ij4i0J3QsNGGadGB0L1p0YbQtSwg0LrQsNCxINC/0YDQsNCz0LvQtdC00LfQtdGG0YwgaSDRgdC/0LDQvNC/0LDQstCw0YbRjCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InRvYXN0X2Rvd25sb2FkaW5nX3N1Z2dlc3Rpb25zIiBtc2dpZD0iMTMxMzAyNzM1MzU4ODU2NjY2MCI+ItCX0LDQs9GA0YPQt9C60LA6INC/0YDQsNC/0LDQvdC+0LLRiyDQtNC70Y8g0LzQvtCy0YsgXCI8eGxpZmY6ZyBpZD0iTEFOR1VBR0UiPiUxJHM8L3hsaWZmOmc+XCIg0YXRg9GC0LrQsCDQt1wn0Y/QstGP0YbRhtCwLiI8L3N0cmluZz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciB2ZXJzaW9uX3RleHQgKDI3MTUzNTQyMTU1Njg0NjkzODUpIC0tPgorICAgIDxza2lwIC8+CiA8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL2phdmEvcmVzL3ZhbHVlcy1iZy9zdHJpbmdzLnhtbCBiL2phdmEvcmVzL3ZhbHVlcy1iZy9zdHJpbmdzLnhtbAppbmRleCAzYTliNTc5Li41OGMwNDAxIDEwMDY0NAotLS0gYS9qYXZhL3Jlcy92YWx1ZXMtYmcvc3RyaW5ncy54bWwKKysrIGIvamF2YS9yZXMvdmFsdWVzLWJnL3N0cmluZ3MueG1sCkBAIC01Myw2ICs1Myw4IEBACiAgICAgPHN0cmluZyBuYW1lPSJ1c2VfZG91YmxlX3NwYWNlX3BlcmlvZF9zdW1tYXJ5IiBtc2dpZD0iNjUzMjg5MjE4NzI0Nzk1Mjc5OSI+ItCU0LLRg9C60YAuINC00L7QutC+0YHQstCw0L3QtSDQvdCwINC60LvQsNCyLiDQt9CwINC40L3RgtC10YDQstCw0Lsg0LLQvNGK0LrQstCwINGC0L7Rh9C60LAsINGB0LvQtdC00LLQsNC90LAg0L7RgiDQuNC90YLQtdGA0LLQsNC7Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYXV0b19jYXAiIG1zZ2lkPSIxNzE5NzQ2Njc0ODU0NjI4MjUyIj4i0JDQstGC0L7QvNCw0YLQuNGH0L3QviDQv9C+0YHRgtCw0LLRj9C90LUg0L3QsCDQs9C70LDQstC90Lgg0LHRg9C60LLQuCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImF1dG9fY2FwX3N1bW1hcnkiIG1zZ2lkPSI3OTM0NDUyNzYxMDIyOTQ2ODc0Ij4i0J/RgNCw0LLQtdC90LUg0L3QsCDQv9GK0YDQstCw0YLQsCDQtNGD0LzQsCDQvtGCINCy0YHRj9C60L4g0LjQt9GA0LXRh9C10L3QuNC1INCz0LvQsNCy0L3QsCI8L3N0cmluZz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBlZGl0X3BlcnNvbmFsX2RpY3Rpb25hcnkgKDM5OTY5MTAwMzg5NTI5NDA0MjApIC0tPgorICAgIDxza2lwIC8+CiAgICAgPHN0cmluZyBuYW1lPSJjb25maWd1cmVfZGljdGlvbmFyaWVzX3RpdGxlIiBtc2dpZD0iNDIzODY1MjMzODU1NjkwMjA0OSI+ItCU0L7QsdCw0LLQtdC90Lgg0YDQtdGH0L3QuNGG0LgiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJtYWluX2RpY3Rpb25hcnkiIG1zZ2lkPSI0Nzk4NzYzNzgxODE4MzYxMTY4Ij4i0J7RgdC90L7QstC10L0g0YDQtdGH0L3QuNC6Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icHJlZnNfc2hvd19zdWdnZXN0aW9ucyIgbXNnaWQ9IjgwMjY3OTk2NjM0NDU1MzE2MzciPiLQn9C+0LrQsNC30LLQsNC90LUg0L3QsCDQv9GA0LXQtNC70L7QttC10L3QuNGPINC30LAg0L/QvtC/0YDQsNCy0LrQsCI8L3N0cmluZz4KQEAgLTE3MSw4ICsxNzMsMjcgQEAKICAgICA8c3RyaW5nIG5hbWU9InJlYWRfZXh0ZXJuYWxfZGljdGlvbmFyeV9jb25maXJtX2luc3RhbGxfbWVzc2FnZSIgbXNnaWQ9IjY4OTg2MTAxNjM3Njg5ODA4NzAiPiLQndCw0LjRgdGC0LjQvdCwINC70Lgg0LTQsCDRgdC1INC40L3RgdGC0LDQu9C40YDQsCDRgtC+0LfQuCDRhNCw0LnQuyDQt9CwIDx4bGlmZjpnIGlkPSJMT0NBTEVfTkFNRSI+JXM8L3hsaWZmOmc+PyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImVycm9yIiBtc2dpZD0iODk0MDc2MzYyNDY2ODUxMzY0OCI+ItCS0YrQt9C90LjQutC90LAg0LPRgNC10YjQutCwIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYnV0dG9uX2RlZmF1bHQiIG1zZ2lkPSIzOTg4MDE3ODQwNDMxODgxNDkxIj4i0KHRgtCw0L3QtNCw0YDRgtC90LgiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJsYW5ndWFnZV9zZXR0aW5ncyIgbXNnaWQ9IjE2NzExNTMwNTMyMDE4MDkwMzEiPiLQldC30LjQuiDQuCDQstGK0LLQtdC20LTQsNC90LUiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJzZWxlY3RfaW5wdXRfbWV0aG9kIiBtc2dpZD0iNDMwMTYwMjM3NDYwOTI3NTAwMyI+ItCY0LfQsdC+0YAg0L3QsCDQvNC10YLQvtC0INC90LAg0LLRitCy0LXQttC00LDQvdC1Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfd2VsY29tZV90aXRsZSIgbXNnaWQ9IjYxMTI4MjE3MDk4MzIwMzE3MTUiPiLQlNC+0LHRgNC1INC00L7RiNC70Lgg0LIv0YrQsiA8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfd2VsY29tZV9hZGRpdGlvbmFsX2Rlc2NyaXB0aW9uIiBtc2dpZD0iODE1MDI1MjAwODU0NTc2ODk1MyI+ItGBINCy0YrQstC10LbQtNCw0L3QtSDRh9GA0LXQtyDQttC10YHRgiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0YXJ0X2FjdGlvbiIgbXNnaWQ9Ijg5MzYwMzY0NjA4OTczNDc3MDgiPiLQn9GK0YDQstC4INGB0YLRitC/0LrQuCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX25leHRfYWN0aW9uIiBtc2dpZD0iMzcxODIxNDM3OTE1MTQ0NjAzIj4i0KHQu9C10LTQstCw0YnQsCDRgdGC0YrQv9C60LAiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwc190aXRsZSIgbXNnaWQ9IjY0MDAzNzMwMzQ4NzE4MTYxODIiPiLQndCw0YHRgtGA0L7QudCy0LDQvdC1INC90LAgPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAxX3RpdGxlIiBtc2dpZD0iMzE0Nzk2NzYzMDI1MzQ2MjMxNSI+ItCQ0LrRgtC40LLQuNGA0LDQudGC0LUgPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAxX2luc3RydWN0aW9uIiBtc2dpZD0iMjU3ODYzMTkzNjYyNDYzNzI0MSI+ItCf0L7RgdGC0LDQstC10YLQtSDQvtGC0LzQtdGC0LrQsCDQt9CwIDx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz4g0LIg4oCe0JXQt9C40Log0Lgg0LLRitCy0LXQttC00LDQvdC14oCcLiDQotCw0LrQsCDRidC1INGD0L/RitC70L3QvtC80L7RidC40YLQtSDQv9GA0LjQu9C+0LbQtdC90LjQtdGC0L4g0LTQsCDRgdC1INC40LfQv9GK0LvQvdGP0LLQsCDQvdCwINGD0YHRgtGA0L7QudGB0YLQstC+0YLQvi4iPC9zdHJpbmc+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc2V0dXBfc3RlcDFfZmluaXNoZWRfaW5zdHJ1Y3Rpb24gKDEwNzYxNDgyMDA0OTU3OTk0KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDFfYWN0aW9uIiBtc2dpZD0iNDM2NjUxMzUzNDk5OTkwMTcyOCI+ItCQ0LrRgtC40LLQuNGA0LDQvdC1INCyINC90LDRgdGC0YDQvtC50LrQuNGC0LUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMl90aXRsZSIgbXNnaWQ9IjY4NjA3MjU0NDc5MDY2OTA1OTQiPiLQn9GA0LXQstC60LvRjtGH0LXRgtC1INC60YrQvCA8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDJfaW5zdHJ1Y3Rpb24iIG1zZ2lkPSI5MTQxNDgxOTY0ODcwMDIzMzM2Ij4i0KHQu9C10LQg0YLQvtCy0LAg0LjQt9Cx0LXRgNC10YLQtSA8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+INC60LDRgtC+INCw0LrRgtC40LLQtdC9INC80LXRgtC+0LQg0L3QsCDQstGK0LLQtdC20LTQsNC90LUg0L3QsCDRgtC10LrRgdGCLiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAyX2FjdGlvbiIgbXNnaWQ9IjE2NjAzMzAzMDcxNTk4MjQzMzciPiLQn9GA0LXQstC60LvRjtGH0LLQsNC90LUg0L3QsCDQvNC10YLQvtC00LjRgtC1INC90LAg0LLRitCy0LXQttC00LDQvdC1Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDNfdGl0bGUiIG1zZ2lkPSIzMTU0NzU3MTgzNjMxNDkwMjgxIj4i0J/QvtC30LTRgNCw0LLQu9C10L3QuNGPISDQktC10YfQtSDRgdGC0LUg0LPQvtGC0L7QstC4ISI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAzX2luc3RydWN0aW9uIiBtc2dpZD0iODAyNTk4MTgyOTYwNTQyNjAwMCI+ItCS0LXRh9C1INC80L7QttC10YLQtSDQtNCwINC/0LjRiNC10YLQtSDQstGK0LIg0LLRgdC40YfQutC40YLQtSDRgdC4INC70Y7QsdC40LzQuCDQv9GA0LjQu9C+0LbQtdC90LjRjyDQv9C+0YHRgNC10LTRgdGC0LLQvtC8IDx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz4uIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDNfYWN0aW9uIiBtc2dpZD0iNjAwODc5Nzk3MjU2OTQyMjU5Ij4i0JrQvtC90YTQuNCz0YPRgNC40YDQsNC90LUg0L3QsCDQtNC+0L/RitC70L3QuNGC0LXQu9C90Lgg0LXQt9C40YbQuCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX2ZpbmlzaF9hY3Rpb24iIG1zZ2lkPSIyNzY1NTkyNDM0MDk0NjUzODkiPiLQmtGA0LDQuSI8L3N0cmluZz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzaG93X3NldHVwX3dpemFyZF9pY29uICg1MDA4MDI4NTkwNTkzNzEwODMwKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNob3dfc2V0dXBfd2l6YXJkX2ljb25fc3VtbWFyeSAoNDExOTk5ODMyMjUzNjg4MDIxMykgLS0+CisgICAgPHNraXAgLz4KICAgICA8c3RyaW5nIG5hbWU9ImFwcF9uYW1lIiBtc2dpZD0iNjMyMDEwMjYzNzQ5MTIzNDc5MiI+ItCU0L7RgdGC0LDQstGH0LjQuiDQvdCwINGA0LXRh9C90LjQutCwIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGljdGlvbmFyeV9wcm92aWRlcl9uYW1lIiBtc2dpZD0iMzAyNzMxNTA0NTM5NzM2MzA3OSI+ItCU0L7RgdGC0LDQstGH0LjQuiDQvdCwINGA0LXRh9C90LjQutCwIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGljdGlvbmFyeV9zZXJ2aWNlX25hbWUiIG1zZ2lkPSI2MjM3NDcyMzUwNjkzNTExNDQ4Ij4i0KPRgdC70YPQs9CwINC30LAg0YDQtdGH0L3QuNC6Ijwvc3RyaW5nPgpAQCAtMjAzLDQgKzIyNCw2IEBACiAgICAgPHN0cmluZyBuYW1lPSJkaWN0X2F2YWlsYWJsZV9ub3RpZmljYXRpb25fdGl0bGUiIG1zZ2lkPSI2NTE0Mjg4NTkxOTU5MTE3Mjg4Ij4i0JfQsCA8eGxpZmY6ZyBpZD0iTEFOR1VBR0UiPiUxJHM8L3hsaWZmOmc+INC1INC90LDQu9C40YbQtSDRgNC10YfQvdC40LoiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkaWN0X2F2YWlsYWJsZV9ub3RpZmljYXRpb25fZGVzY3JpcHRpb24iIG1zZ2lkPSIxMDc1MTk0MTY5NDQzMTYzNDg3Ij4i0J3QsNGC0LjRgdC90LXRgtC1LCDQt9CwINC00LAg0L/RgNC10LPQu9C10LTQsNGC0LUg0Lgg0LjQt9GC0LXQs9C70LjRgtC1Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idG9hc3RfZG93bmxvYWRpbmdfc3VnZ2VzdGlvbnMiIG1zZ2lkPSIxMzEzMDI3MzUzNTg4NTY2NjYwIj4i0JjQt9GC0LXQs9C70Y8g0YHQtTog0J/RgNC10LTQu9C+0LbQtdC90LjRj9GC0LAg0LfQsCA8eGxpZmY6ZyBpZD0iTEFOR1VBR0UiPiUxJHM8L3hsaWZmOmc+INGJ0LUg0LHRitC00LDRgiDQs9C+0YLQvtCy0Lgg0YHQutC+0YDQvi4iPC9zdHJpbmc+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgdmVyc2lvbl90ZXh0ICgyNzE1MzU0MjE1NTY4NDY5Mzg1KSAtLT4KKyAgICA8c2tpcCAvPgogPC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9qYXZhL3Jlcy92YWx1ZXMtY2Evc3RyaW5ncy54bWwgYi9qYXZhL3Jlcy92YWx1ZXMtY2Evc3RyaW5ncy54bWwKaW5kZXggOWQ2Yzc0YS4uNjE2NTNkNyAxMDA2NDQKLS0tIGEvamF2YS9yZXMvdmFsdWVzLWNhL3N0cmluZ3MueG1sCisrKyBiL2phdmEvcmVzL3ZhbHVlcy1jYS9zdHJpbmdzLnhtbApAQCAtNTMsNiArNTMsOCBAQAogICAgIDxzdHJpbmcgbmFtZT0idXNlX2RvdWJsZV9zcGFjZV9wZXJpb2Rfc3VtbWFyeSIgbXNnaWQ9IjY1MzI4OTIxODcyNDc5NTI3OTkiPiJQaWNhciBkdWVzIHZlZ2FkZXMgbGEgYmFycmEgZFwnZXNwYWkgaW5zZXJlaXggcHVudCBpIGVzcGFpIGJsYW5jIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYXV0b19jYXAiIG1zZ2lkPSIxNzE5NzQ2Njc0ODU0NjI4MjUyIj4iTWFqw7pzY3VsZXMgYXV0b23DoHRpcXVlcyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImF1dG9fY2FwX3N1bW1hcnkiIG1zZ2lkPSI3OTM0NDUyNzYxMDIyOTQ2ODc0Ij4iUG9zYSBlbiBtYWrDunNjdWxhIGxhIHByaW1lcmEgcGFyYXVsYSBkZSBjYWRhIGZyYXNlIjwvc3RyaW5nPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGVkaXRfcGVyc29uYWxfZGljdGlvbmFyeSAoMzk5NjkxMDAzODk1Mjk0MDQyMCkgLS0+CisgICAgPHNraXAgLz4KICAgICA8c3RyaW5nIG5hbWU9ImNvbmZpZ3VyZV9kaWN0aW9uYXJpZXNfdGl0bGUiIG1zZ2lkPSI0MjM4NjUyMzM4NTU2OTAyMDQ5Ij4iRGljY2lvbmFyaXMgY29tcGxlbWVudGFyaXMiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJtYWluX2RpY3Rpb25hcnkiIG1zZ2lkPSI0Nzk4NzYzNzgxODE4MzYxMTY4Ij4iRGljY2lvbmFyaSBwcmluY2lwYWwiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwcmVmc19zaG93X3N1Z2dlc3Rpb25zIiBtc2dpZD0iODAyNjc5OTY2MzQ0NTUzMTYzNyI+IlN1Z2dlcmltZW50cyBkZSBjb3JyZWNjacOzIjwvc3RyaW5nPgpAQCAtMTcxLDggKzE3MywyNyBAQAogICAgIDxzdHJpbmcgbmFtZT0icmVhZF9leHRlcm5hbF9kaWN0aW9uYXJ5X2NvbmZpcm1faW5zdGFsbF9tZXNzYWdlIiBtc2dpZD0iNjg5ODYxMDE2Mzc2ODk4MDg3MCI+IlJlYWxtZW50IHZvbHMgaW5zdGFswrdsYXIgYXF1ZXN0IGZpdHhlciBwZXIgYSA8eGxpZmY6ZyBpZD0iTE9DQUxFX05BTUUiPiVzPC94bGlmZjpnPj8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJlcnJvciIgbXNnaWQ9Ijg5NDA3NjM2MjQ2Njg1MTM2NDgiPiJTXCdoYSBwcm9kdcOvdCB1biBlcnJvciI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJ1dHRvbl9kZWZhdWx0IiBtc2dpZD0iMzk4ODAxNzg0MDQzMTg4MTQ5MSI+IlByZWRldGVybWluYXQiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJsYW5ndWFnZV9zZXR0aW5ncyIgbXNnaWQ9IjE2NzExNTMwNTMyMDE4MDkwMzEiPiJJZGlvbWEgaSBpbnRyb2R1Y2Npw7MiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJzZWxlY3RfaW5wdXRfbWV0aG9kIiBtc2dpZD0iNDMwMTYwMjM3NDYwOTI3NTAwMyI+IlNlbGVjY2nDsyBkZSBtw6h0b2RlcyBkXCdpbnRyb2R1Y2Npw7MiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF93ZWxjb21lX3RpdGxlIiBtc2dpZD0iNjExMjgyMTcwOTgzMjAzMTcxNSI+IkV0IGRvbmVtIGxhIGJlbnZpbmd1ZGEgYSA8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfd2VsY29tZV9hZGRpdGlvbmFsX2Rlc2NyaXB0aW9uIiBtc2dpZD0iODE1MDI1MjAwODU0NTc2ODk1MyI+ImFtYiBFc2NyaXB0dXJhIGdlc3R1YWwiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGFydF9hY3Rpb24iIG1zZ2lkPSI4OTM2MDM2NDYwODk3MzQ3NzA4Ij4iQ29tZW7Dp2EiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9uZXh0X2FjdGlvbiIgbXNnaWQ9IjM3MTgyMTQzNzkxNTE0NDYwMyI+IlBhcyBzZWfDvGVudCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXBzX3RpdGxlIiBtc2dpZD0iNjQwMDM3MzAzNDg3MTgxNjE4MiI+IkNvbmZpZ3VyYWNpw7MgZGUgPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAxX3RpdGxlIiBtc2dpZD0iMzE0Nzk2NzYzMDI1MzQ2MjMxNSI+IkFjdGl2YWNpw7MgZGUgPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAxX2luc3RydWN0aW9uIiBtc2dpZD0iMjU3ODYzMTkzNjYyNDYzNzI0MSI+Ik1hcmNhIFwiPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPlwiIGEgbGEgY29uZmlndXJhY2nDsyBkXCdJZGlvbWEgaSBpbnRyb2R1Y2Npw7MgZGUgdGVtcHMuIERcJ2FxdWVzdGEgbWFuZXJhIGVzIHBvZHLDoCBleGVjdXRhciBhbCBkaXNwb3NpdGl1LiI8L3N0cmluZz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzZXR1cF9zdGVwMV9maW5pc2hlZF9pbnN0cnVjdGlvbiAoMTA3NjE0ODIwMDQ5NTc5OTQpIC0tPgorICAgIDxza2lwIC8+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMV9hY3Rpb24iIG1zZ2lkPSI0MzY2NTEzNTM0OTk5OTAxNzI4Ij4iQWN0aXZhIGEgbGEgY29uZmlndXJhY2nDsyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAyX3RpdGxlIiBtc2dpZD0iNjg2MDcyNTQ0NzkwNjY5MDU5NCI+IkNhbnZpIGEgPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAyX2luc3RydWN0aW9uIiBtc2dpZD0iOTE0MTQ4MTk2NDg3MDAyMzMzNiI+IkEgY29udGludWFjacOzLCBzZWxlY2Npb25hIFwiPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPlwiIGNvbSBhIG3DqHRvZGUgZFwnaW50cm9kdWNjacOzIGRlIHRleHQgYWN0aXUuIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDJfYWN0aW9uIiBtc2dpZD0iMTY2MDMzMDMwNzE1OTgyNDMzNyI+IkNhbnZpYSBlbHMgbcOodG9kZXMgZFwnaW50cm9kdWNjacOzIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDNfdGl0bGUiIG1zZ2lkPSIzMTU0NzU3MTgzNjMxNDkwMjgxIj4iRW5ob3JhYm9uYSwgamEgaGFzIGFjYWJhdCEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwM19pbnN0cnVjdGlvbiIgbXNnaWQ9IjgwMjU5ODE4Mjk2MDU0MjYwMDAiPiJBcmEgamEgcG90cyBlc2NyaXVyZSBhIHRvdGVzIGxlcyB0ZXZlcyBhcGxpY2FjaW9ucyBwcmVmZXJpZGVzIGFtYiA8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+LiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAzX2FjdGlvbiIgbXNnaWQ9IjYwMDg3OTc5NzI1Njk0MjI1OSI+IkNvbmZpZ3VyYSBpZGlvbWVzIGFkZGljaW9uYWxzIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfZmluaXNoX2FjdGlvbiIgbXNnaWQ9IjI3NjU1OTI0MzQwOTQ2NTM4OSI+IkZpbmFsaXR6YXQiPC9zdHJpbmc+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc2hvd19zZXR1cF93aXphcmRfaWNvbiAoNTAwODAyODU5MDU5MzcxMDgzMCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzaG93X3NldHVwX3dpemFyZF9pY29uX3N1bW1hcnkgKDQxMTk5OTgzMjI1MzY4ODAyMTMpIC0tPgorICAgIDxza2lwIC8+CiAgICAgPHN0cmluZyBuYW1lPSJhcHBfbmFtZSIgbXNnaWQ9IjYzMjAxMDI2Mzc0OTEyMzQ3OTIiPiJQcm92ZcOvZG9yIGRlIGRpY2Npb25hcmlzIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGljdGlvbmFyeV9wcm92aWRlcl9uYW1lIiBtc2dpZD0iMzAyNzMxNTA0NTM5NzM2MzA3OSI+IlByb3Zlw69kb3IgZGUgZGljY2lvbmFyaXMiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkaWN0aW9uYXJ5X3NlcnZpY2VfbmFtZSIgbXNnaWQ9IjYyMzc0NzIzNTA2OTM1MTE0NDgiPiJTZXJ2ZWkgZGUgZGljY2lvbmFyaSI8L3N0cmluZz4KQEAgLTIwMyw0ICsyMjQsNiBAQAogICAgIDxzdHJpbmcgbmFtZT0iZGljdF9hdmFpbGFibGVfbm90aWZpY2F0aW9uX3RpdGxlIiBtc2dpZD0iNjUxNDI4ODU5MTk1OTExNzI4OCI+IkhpIGhhIHVuIGRpY2Npb25hcmkgZGlzcG9uaWJsZSBwZXIgYSBsXCdpZGlvbWE6IDx4bGlmZjpnIGlkPSJMQU5HVUFHRSI+JTEkczwveGxpZmY6Zz4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkaWN0X2F2YWlsYWJsZV9ub3RpZmljYXRpb25fZGVzY3JpcHRpb24iIG1zZ2lkPSIxMDc1MTk0MTY5NDQzMTYzNDg3Ij4iUHJlbSBwZXIgcmV2aXNhci1sbyBpIHBlciBiYWl4YXItbG8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ0b2FzdF9kb3dubG9hZGluZ19zdWdnZXN0aW9ucyIgbXNnaWQ9IjEzMTMwMjczNTM1ODg1NjY2NjAiPiJCYWl4YWRhOiBlbHMgc3VnZ2VyaW1lbnRzIHBlciBhIDx4bGlmZjpnIGlkPSJMQU5HVUFHRSI+JTEkczwveGxpZmY6Zz4gZXN0YXJhbiBkaXNwb25pYmxlcyBiZW4gYXZpYXQuIjwvc3RyaW5nPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHZlcnNpb25fdGV4dCAoMjcxNTM1NDIxNTU2ODQ2OTM4NSkgLS0+CisgICAgPHNraXAgLz4KIDwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvamF2YS9yZXMvdmFsdWVzLWNzL3N0cmluZ3MueG1sIGIvamF2YS9yZXMvdmFsdWVzLWNzL3N0cmluZ3MueG1sCmluZGV4IGJkNjQ3NjEuLmI1NzY4MmYgMTAwNjQ0Ci0tLSBhL2phdmEvcmVzL3ZhbHVlcy1jcy9zdHJpbmdzLnhtbAorKysgYi9qYXZhL3Jlcy92YWx1ZXMtY3Mvc3RyaW5ncy54bWwKQEAgLTUzLDYgKzUzLDggQEAKICAgICA8c3RyaW5nIG5hbWU9InVzZV9kb3VibGVfc3BhY2VfcGVyaW9kX3N1bW1hcnkiIG1zZ2lkPSI2NTMyODkyMTg3MjQ3OTUyNzk5Ij4iRHZvasOtbSBrbGVwbnV0w61tIG5hIG1lemVybsOtayB2bG/FvsOtdGUgdGXEjWt1IG7DoXNsZWRvdmFub3UgbWV6ZXJvdS4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJhdXRvX2NhcCIgbXNnaWQ9IjE3MTk3NDY2NzQ4NTQ2MjgyNTIiPiJWZWxrw6EgcMOtc21lbmEgYXV0b21hdGlja3kiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJhdXRvX2NhcF9zdW1tYXJ5IiBtc2dpZD0iNzkzNDQ1Mjc2MTAyMjk0Njg3NCI+IkthcGl0YWxpemFjZSBwcnZuw61obyBzbG92YSBrYcW+ZMOpIHbEm3R5Ijwvc3RyaW5nPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGVkaXRfcGVyc29uYWxfZGljdGlvbmFyeSAoMzk5NjkxMDAzODk1Mjk0MDQyMCkgLS0+CisgICAgPHNraXAgLz4KICAgICA8c3RyaW5nIG5hbWU9ImNvbmZpZ3VyZV9kaWN0aW9uYXJpZXNfdGl0bGUiIG1zZ2lkPSI0MjM4NjUyMzM4NTU2OTAyMDQ5Ij4iRG9wbMWIa292w6kgc2xvdm7DrWt5Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ibWFpbl9kaWN0aW9uYXJ5IiBtc2dpZD0iNDc5ODc2Mzc4MTgxODM2MTE2OCI+IkhsYXZuw60gc2xvdm7DrWsiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwcmVmc19zaG93X3N1Z2dlc3Rpb25zIiBtc2dpZD0iODAyNjc5OTY2MzQ0NTUzMTYzNyI+IlpvYnJheml0IG7DoXZyaHkgb3ByYXYiPC9zdHJpbmc+CkBAIC0xNzEsOCArMTczLDI3IEBACiAgICAgPHN0cmluZyBuYW1lPSJyZWFkX2V4dGVybmFsX2RpY3Rpb25hcnlfY29uZmlybV9pbnN0YWxsX21lc3NhZ2UiIG1zZ2lkPSI2ODk4NjEwMTYzNzY4OTgwODcwIj4iQ2hjZXRlIG5haW5zdGFsb3ZhdCB0ZW50byBzb3Vib3IgcHJvIGphenlrIDx4bGlmZjpnIGlkPSJMT0NBTEVfTkFNRSI+JXM8L3hsaWZmOmc+PyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImVycm9yIiBtc2dpZD0iODk0MDc2MzYyNDY2ODUxMzY0OCI+IkRvxaFsbyBrIGNoeWLEmyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJ1dHRvbl9kZWZhdWx0IiBtc2dpZD0iMzk4ODAxNzg0MDQzMTg4MTQ5MSI+IlbDvWNob3rDrSI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Imxhbmd1YWdlX3NldHRpbmdzIiBtc2dpZD0iMTY3MTE1MzA1MzIwMTgwOTAzMSI+IkphenlrIGEgemFkw6F2w6Fuw60iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJzZWxlY3RfaW5wdXRfbWV0aG9kIiBtc2dpZD0iNDMwMTYwMjM3NDYwOTI3NTAwMyI+IlbDvWLEm3IgbWV0b2R5IHphZMOhdsOhbsOtIGRhdCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3dlbGNvbWVfdGl0bGUiIG1zZ2lkPSI2MTEyODIxNzA5ODMyMDMxNzE1Ij4iVsOtdMOhIHbDoXMgPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3dlbGNvbWVfYWRkaXRpb25hbF9kZXNjcmlwdGlvbiIgbXNnaWQ9IjgxNTAyNTIwMDg1NDU3Njg5NTMiPiJzIHBzYW7DrW0gZ2VzdHkiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGFydF9hY3Rpb24iIG1zZ2lkPSI4OTM2MDM2NDYwODk3MzQ3NzA4Ij4iWmHEjcOtbsOhbWUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9uZXh0X2FjdGlvbiIgbXNnaWQ9IjM3MTgyMTQzNzkxNTE0NDYwMyI+IkRhbMWhw60ga3JvayI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXBzX3RpdGxlIiBtc2dpZD0iNjQwMDM3MzAzNDg3MTgxNjE4MiI+Ik5hc3RhdmVuw60gYXBsaWthY2UgPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAxX3RpdGxlIiBtc2dpZD0iMzE0Nzk2NzYzMDI1MzQ2MjMxNSI+IlphcG51dMOtIGFwbGlrYWNlIDx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMV9pbnN0cnVjdGlvbiIgbXNnaWQ9IjI1Nzg2MzE5MzY2MjQ2MzcyNDEiPiJWIG5hc3RhdmVuw60gSmF6eWsgYSB6YWTDoXbDoW7DrSB6YcWha3J0bsSbdGUgYXBsaWthY2kgPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPiwgcG92b2zDrXRlIHRhayBqZWrDrSBzcHXFoXTEm27DrS4iPC9zdHJpbmc+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc2V0dXBfc3RlcDFfZmluaXNoZWRfaW5zdHJ1Y3Rpb24gKDEwNzYxNDgyMDA0OTU3OTk0KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDFfYWN0aW9uIiBtc2dpZD0iNDM2NjUxMzUzNDk5OTkwMTcyOCI+IkFrdGl2b3ZhdCB2IG5hc3RhdmVuw60iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMl90aXRsZSIgbXNnaWQ9IjY4NjA3MjU0NDc5MDY2OTA1OTQiPiJQxZllcG51dMOtIG5hIGFwbGlrYWNpIDx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMl9pbnN0cnVjdGlvbiIgbXNnaWQ9IjkxNDE0ODE5NjQ4NzAwMjMzMzYiPiJQb3TDqSB2eWJlcnRlIGpha28gYWt0aXZuw60gbWV0b2R1IHphZMOhdsOhbsOtIHRleHR1IG1vxb5ub3N0IDx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz4uIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDJfYWN0aW9uIiBtc2dpZD0iMTY2MDMzMDMwNzE1OTgyNDMzNyI+IlDFmWVwbm91dCBtZXRvZHkgemFkw6F2w6Fuw60iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwM190aXRsZSIgbXNnaWQ9IjMxNTQ3NTcxODM2MzE0OTAyODEiPiJHcmF0dWx1amVtZSwgdsWhZSBqZSBwxZlpcHJhdmVuby4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwM19pbnN0cnVjdGlvbiIgbXNnaWQ9IjgwMjU5ODE4Mjk2MDU0MjYwMDAiPiJOeW7DrSBtxa/FvmV0ZSB2ZSB2xaFlY2ggc3bDvWNoIG9ibMOtYmVuw71jaCBhcGxpa2Fjw61jaCBwc8OhdCBwb21vY8OtIGFwbGlrYWNlIDx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz4uIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDNfYWN0aW9uIiBtc2dpZD0iNjAwODc5Nzk3MjU2OTQyMjU5Ij4iTmFrb25maWd1cm92YXQgZGFsxaHDrSBqYXp5a3kiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9maW5pc2hfYWN0aW9uIiBtc2dpZD0iMjc2NTU5MjQzNDA5NDY1Mzg5Ij4iSG90b3ZvIjwvc3RyaW5nPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNob3dfc2V0dXBfd2l6YXJkX2ljb24gKDUwMDgwMjg1OTA1OTM3MTA4MzApIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc2hvd19zZXR1cF93aXphcmRfaWNvbl9zdW1tYXJ5ICg0MTE5OTk4MzIyNTM2ODgwMjEzKSAtLT4KKyAgICA8c2tpcCAvPgogICAgIDxzdHJpbmcgbmFtZT0iYXBwX25hbWUiIG1zZ2lkPSI2MzIwMTAyNjM3NDkxMjM0NzkyIj4iUG9za3l0b3ZhdGVsIHNsb3Zuw61rdSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRpY3Rpb25hcnlfcHJvdmlkZXJfbmFtZSIgbXNnaWQ9IjMwMjczMTUwNDUzOTczNjMwNzkiPiJQb3NreXRvdmF0ZWwgc2xvdm7DrWt1Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGljdGlvbmFyeV9zZXJ2aWNlX25hbWUiIG1zZ2lkPSI2MjM3NDcyMzUwNjkzNTExNDQ4Ij4iU2x1xb5iYSBzbG92bsOta3UiPC9zdHJpbmc+CkBAIC0yMDMsNCArMjI0LDYgQEAKICAgICA8c3RyaW5nIG5hbWU9ImRpY3RfYXZhaWxhYmxlX25vdGlmaWNhdGlvbl90aXRsZSIgbXNnaWQ9IjY1MTQyODg1OTE5NTkxMTcyODgiPiJKZSBrIGRpc3BvemljaSBzbG92bsOtayBwcm8gamF6eWsgPHhsaWZmOmcgaWQ9IkxBTkdVQUdFIj4lMSRzPC94bGlmZjpnPiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRpY3RfYXZhaWxhYmxlX25vdGlmaWNhdGlvbl9kZXNjcmlwdGlvbiIgbXNnaWQ9IjEwNzUxOTQxNjk0NDMxNjM0ODciPiJTdGlza251dMOtbSB6a29udHJvbHVqZXRlIGEgc3TDoWhuZXRlIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idG9hc3RfZG93bmxvYWRpbmdfc3VnZ2VzdGlvbnMiIG1zZ2lkPSIxMzEzMDI3MzUzNTg4NTY2NjYwIj4iU3RhaG92w6Fuw606IG7DoXZyaHkgcHJvIGphenlrIDx4bGlmZjpnIGlkPSJMQU5HVUFHRSI+JTEkczwveGxpZmY6Zz4gYnVkb3UgYnJ6eSBrIGRpc3BvemljaS4iPC9zdHJpbmc+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgdmVyc2lvbl90ZXh0ICgyNzE1MzU0MjE1NTY4NDY5Mzg1KSAtLT4KKyAgICA8c2tpcCAvPgogPC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9qYXZhL3Jlcy92YWx1ZXMtZGEvc3RyaW5ncy54bWwgYi9qYXZhL3Jlcy92YWx1ZXMtZGEvc3RyaW5ncy54bWwKaW5kZXggNTY0MjkxNy4uNDAxZDcwOCAxMDA2NDQKLS0tIGEvamF2YS9yZXMvdmFsdWVzLWRhL3N0cmluZ3MueG1sCisrKyBiL2phdmEvcmVzL3ZhbHVlcy1kYS9zdHJpbmdzLnhtbApAQCAtNTMsNiArNTMsOCBAQAogICAgIDxzdHJpbmcgbmFtZT0idXNlX2RvdWJsZV9zcGFjZV9wZXJpb2Rfc3VtbWFyeSIgbXNnaWQ9IjY1MzI4OTIxODcyNDc5NTI3OTkiPiJUbyB0cnlrIHDDpSBtZWxsZW1ydW1zdGFzdGVuIGluZHPDpnR0ZXIgZXQgcHVua3R1bSBvZyBldCBtZWxsZW1ydW0iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJhdXRvX2NhcCIgbXNnaWQ9IjE3MTk3NDY2NzQ4NTQ2MjgyNTIiPiJTa3JpdiBhdXQuIG1lZCBzdG9ydCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImF1dG9fY2FwX3N1bW1hcnkiIG1zZ2lkPSI3OTM0NDUyNzYxMDIyOTQ2ODc0Ij4iU2tyaXYgZGV0IGbDuHJzdGUgb3JkIGkgaHZlciBzw6Z0bmluZyBtZWQgc3RvcnQiPC9zdHJpbmc+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgZWRpdF9wZXJzb25hbF9kaWN0aW9uYXJ5ICgzOTk2OTEwMDM4OTUyOTQwNDIwKSAtLT4KKyAgICA8c2tpcCAvPgogICAgIDxzdHJpbmcgbmFtZT0iY29uZmlndXJlX2RpY3Rpb25hcmllc190aXRsZSIgbXNnaWQ9IjQyMzg2NTIzMzg1NTY5MDIwNDkiPiJUaWxsw6Znc29yZGLDuGdlciI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im1haW5fZGljdGlvbmFyeSIgbXNnaWQ9IjQ3OTg3NjM3ODE4MTgzNjExNjgiPiJIb3ZlZG9yZGJvZyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InByZWZzX3Nob3dfc3VnZ2VzdGlvbnMiIG1zZ2lkPSI4MDI2Nzk5NjYzNDQ1NTMxNjM3Ij4iVmlzIHJldHRlbHNlc2ZvcnNsYWciPC9zdHJpbmc+CkBAIC0xNzEsOCArMTczLDI3IEBACiAgICAgPHN0cmluZyBuYW1lPSJyZWFkX2V4dGVybmFsX2RpY3Rpb25hcnlfY29uZmlybV9pbnN0YWxsX21lc3NhZ2UiIG1zZ2lkPSI2ODk4NjEwMTYzNzY4OTgwODcwIj4iRXIgZHUga2xhciB0aWwgYXQgaW5zdGFsbGVyZSBkZW5uZSBmaWwgdGlsIDx4bGlmZjpnIGlkPSJMT0NBTEVfTkFNRSI+JXM8L3hsaWZmOmc+PyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImVycm9yIiBtc2dpZD0iODk0MDc2MzYyNDY2ODUxMzY0OCI+IkRlciBvcHN0b2QgZW4gZmVqbCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJ1dHRvbl9kZWZhdWx0IiBtc2dpZD0iMzk4ODAxNzg0MDQzMTg4MTQ5MSI+IlN0YW5kYXJkIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibGFuZ3VhZ2Vfc2V0dGluZ3MiIG1zZ2lkPSIxNjcxMTUzMDUzMjAxODA5MDMxIj4iU3Byb2cgb2cgaW5wdXQiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJzZWxlY3RfaW5wdXRfbWV0aG9kIiBtc2dpZD0iNDMwMTYwMjM3NDYwOTI3NTAwMyI+IlbDpmxnIGlucHV0bWV0b2RlIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfd2VsY29tZV90aXRsZSIgbXNnaWQ9IjYxMTI4MjE3MDk4MzIwMzE3MTUiPiJWZWxrb21tZW4gdGlsIDx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF93ZWxjb21lX2FkZGl0aW9uYWxfZGVzY3JpcHRpb24iIG1zZ2lkPSI4MTUwMjUyMDA4NTQ1NzY4OTUzIj4ibWVkIEJlcsO4cmluZ3NpbnB1dCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0YXJ0X2FjdGlvbiIgbXNnaWQ9Ijg5MzYwMzY0NjA4OTczNDc3MDgiPiJLb20gZ29kdCBpIGdhbmciPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9uZXh0X2FjdGlvbiIgbXNnaWQ9IjM3MTgyMTQzNzkxNTE0NDYwMyI+Ik7DpnN0ZSB0cmluIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcHNfdGl0bGUiIG1zZ2lkPSI2NDAwMzczMDM0ODcxODE2MTgyIj4iPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPiBrb25maWd1cmVyZXMiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMV90aXRsZSIgbXNnaWQ9IjMxNDc5Njc2MzAyNTM0NjIzMTUiPiJBa3RpdsOpciA8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDFfaW5zdHJ1Y3Rpb24iIG1zZ2lkPSIyNTc4NjMxOTM2NjI0NjM3MjQxIj4iTWFya8OpciBcIjx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz5cIiBpIFNwcm9nIG9nIGlucHV0aW5kc3RpbGxpbmdlci4gRGVybWVkIGbDpXIgYXBwZW4gdGlsbGFkZWxzZSB0aWwgYXQga8O4cmUgcMOlIGRpbiBlbmhlZC4iPC9zdHJpbmc+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc2V0dXBfc3RlcDFfZmluaXNoZWRfaW5zdHJ1Y3Rpb24gKDEwNzYxNDgyMDA0OTU3OTk0KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDFfYWN0aW9uIiBtc2dpZD0iNDM2NjUxMzUzNDk5OTkwMTcyOCI+IkFrdGl2w6lyIGkgSW5kc3RpbGxpbmdlciI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAyX3RpdGxlIiBtc2dpZD0iNjg2MDcyNTQ0NzkwNjY5MDU5NCI+IlNraWZ0IHRpbCA8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDJfaW5zdHJ1Y3Rpb24iIG1zZ2lkPSI5MTQxNDgxOTY0ODcwMDIzMzM2Ij4iRGVybsOmc3Qgc2thbCBkdSB2w6ZsZ2UgXCI8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+XCIgc29tIGRpbiBha3RpdmUgc21zLWluZHRhc3RuaW5nc21ldG9kZS4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMl9hY3Rpb24iIG1zZ2lkPSIxNjYwMzMwMzA3MTU5ODI0MzM3Ij4iU2tpZnQgaW5kdGFzdG5pbmdzbWV0b2RlIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDNfdGl0bGUiIG1zZ2lkPSIzMTU0NzU3MTgzNjMxNDkwMjgxIj4iU8OlIGVyIGR1IGtsYXIuIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDNfaW5zdHJ1Y3Rpb24iIG1zZ2lkPSI4MDI1OTgxODI5NjA1NDI2MDAwIj4iTnUga2FuIGR1IHNrcml2ZSBpIGFsbGUgZGluZSBmYXZvcml0YXBwcyBtZWQgPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPi4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwM19hY3Rpb24iIG1zZ2lkPSI2MDA4Nzk3OTcyNTY5NDIyNTkiPiJLb25maWd1cmVyIGZsZXJlIHNwcm9nIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfZmluaXNoX2FjdGlvbiIgbXNnaWQ9IjI3NjU1OTI0MzQwOTQ2NTM4OSI+IkFmc2x1dCI8L3N0cmluZz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzaG93X3NldHVwX3dpemFyZF9pY29uICg1MDA4MDI4NTkwNTkzNzEwODMwKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNob3dfc2V0dXBfd2l6YXJkX2ljb25fc3VtbWFyeSAoNDExOTk5ODMyMjUzNjg4MDIxMykgLS0+CisgICAgPHNraXAgLz4KICAgICA8c3RyaW5nIG5hbWU9ImFwcF9uYW1lIiBtc2dpZD0iNjMyMDEwMjYzNzQ5MTIzNDc5MiI+IkRpY3Rpb25hcnkgUHJvdmlkZXIiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkaWN0aW9uYXJ5X3Byb3ZpZGVyX25hbWUiIG1zZ2lkPSIzMDI3MzE1MDQ1Mzk3MzYzMDc5Ij4iRGljdGlvbmFyeSBQcm92aWRlciI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRpY3Rpb25hcnlfc2VydmljZV9uYW1lIiBtc2dpZD0iNjIzNzQ3MjM1MDY5MzUxMTQ0OCI+Ik9yZGJvZ3N0amVuZXN0ZSI8L3N0cmluZz4KQEAgLTIwMyw0ICsyMjQsNiBAQAogICAgIDxzdHJpbmcgbmFtZT0iZGljdF9hdmFpbGFibGVfbm90aWZpY2F0aW9uX3RpdGxlIiBtc2dpZD0iNjUxNDI4ODU5MTk1OTExNzI4OCI+IkRlciBlciBlbiB0aWxnw6ZuZ2VsaWcgb3JkYm9nIGZvciA8eGxpZmY6ZyBpZD0iTEFOR1VBR0UiPiUxJHM8L3hsaWZmOmc+Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGljdF9hdmFpbGFibGVfbm90aWZpY2F0aW9uX2Rlc2NyaXB0aW9uIiBtc2dpZD0iMTA3NTE5NDE2OTQ0MzE2MzQ4NyI+IlRyeWsgZm9yIGF0IGdlbm5lbWfDpSBvZyBkb3dubG9hZGUiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ0b2FzdF9kb3dubG9hZGluZ19zdWdnZXN0aW9ucyIgbXNnaWQ9IjEzMTMwMjczNTM1ODg1NjY2NjAiPiJEb3dubG9hZGVyOiBEZXIgdmlsIHNuYXJ0IHbDpnJlIGZvcnNsYWcga2xhciBww6UgPHhsaWZmOmcgaWQ9IkxBTkdVQUdFIj4lMSRzPC94bGlmZjpnPi4iPC9zdHJpbmc+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgdmVyc2lvbl90ZXh0ICgyNzE1MzU0MjE1NTY4NDY5Mzg1KSAtLT4KKyAgICA8c2tpcCAvPgogPC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9qYXZhL3Jlcy92YWx1ZXMtZGUvc3RyaW5ncy54bWwgYi9qYXZhL3Jlcy92YWx1ZXMtZGUvc3RyaW5ncy54bWwKaW5kZXggMWM5YmVjMi4uZmNmYjkzYyAxMDA2NDQKLS0tIGEvamF2YS9yZXMvdmFsdWVzLWRlL3N0cmluZ3MueG1sCisrKyBiL2phdmEvcmVzL3ZhbHVlcy1kZS9zdHJpbmdzLnhtbApAQCAtNTMsNiArNTMsOCBAQAogICAgIDxzdHJpbmcgbmFtZT0idXNlX2RvdWJsZV9zcGFjZV9wZXJpb2Rfc3VtbWFyeSIgbXNnaWQ9IjY1MzI4OTIxODcyNDc5NTI3OTkiPiJGw7xyIFB1bmt0IHBsdXMgTGVlcnplaWNoZW4gendlaW1hbCBhdWYgZGllIExlZXJ0YXN0ZSB0aXBwZW7vu7/vu78iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJhdXRvX2NhcCIgbXNnaWQ9IjE3MTk3NDY2NzQ4NTQ2MjgyNTIiPiJBdXRvbS4gR3Jvw58tL0tsZWluc2NocmVpYnVuZyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImF1dG9fY2FwX3N1bW1hcnkiIG1zZ2lkPSI3OTM0NDUyNzYxMDIyOTQ2ODc0Ij4iRGFzIGVyc3RlIFdvcnQgamVkZXMgU2F0emVzIGdyb8Ofc2NocmVpYmVuIjwvc3RyaW5nPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGVkaXRfcGVyc29uYWxfZGljdGlvbmFyeSAoMzk5NjkxMDAzODk1Mjk0MDQyMCkgLS0+CisgICAgPHNraXAgLz4KICAgICA8c3RyaW5nIG5hbWU9ImNvbmZpZ3VyZV9kaWN0aW9uYXJpZXNfdGl0bGUiIG1zZ2lkPSI0MjM4NjUyMzM4NTU2OTAyMDQ5Ij4iRXJ3ZWl0ZXJ0ZSBXw7ZydGVyYsO8Y2hlciI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im1haW5fZGljdGlvbmFyeSIgbXNnaWQ9IjQ3OTg3NjM3ODE4MTgzNjExNjgiPiJBbGxnZW1laW5lcyBXw7ZydGVyYnVjaCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InByZWZzX3Nob3dfc3VnZ2VzdGlvbnMiIG1zZ2lkPSI4MDI2Nzk5NjYzNDQ1NTMxNjM3Ij4iw4RuZGVydW5nc3ZvcnNjaGzDpGdlIjwvc3RyaW5nPgpAQCAtMTcxLDggKzE3MywyNyBAQAogICAgIDxzdHJpbmcgbmFtZT0icmVhZF9leHRlcm5hbF9kaWN0aW9uYXJ5X2NvbmZpcm1faW5zdGFsbF9tZXNzYWdlIiBtc2dpZD0iNjg5ODYxMDE2Mzc2ODk4MDg3MCI+Ik3DtmNodGVuIFNpZSBkaWVzZSBEYXRlaSBmw7xyIDx4bGlmZjpnIGlkPSJMT0NBTEVfTkFNRSI+JXM8L3hsaWZmOmc+IGluc3RhbGxpZXJlbj8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJlcnJvciIgbXNnaWQ9Ijg5NDA3NjM2MjQ2Njg1MTM2NDgiPiJFcyBpc3QgZWluIEZlaGxlciBhdWZnZXRyZXRlbiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJ1dHRvbl9kZWZhdWx0IiBtc2dpZD0iMzk4ODAxNzg0MDQzMTg4MTQ5MSI+IlN0YW5kYXJkIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibGFuZ3VhZ2Vfc2V0dGluZ3MiIG1zZ2lkPSIxNjcxMTUzMDUzMjAxODA5MDMxIj4iU3ByYWNoZSAmYW1wOyBFaW5nYWJlIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ic2VsZWN0X2lucHV0X21ldGhvZCIgbXNnaWQ9IjQzMDE2MDIzNzQ2MDkyNzUwMDMiPiJFaW5nYWJlbWV0aG9kZSB3w6RobGVuIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfd2VsY29tZV90aXRsZSIgbXNnaWQ9IjYxMTI4MjE3MDk4MzIwMzE3MTUiPiJXaWxsa29tbWVuIGJlaSA8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfd2VsY29tZV9hZGRpdGlvbmFsX2Rlc2NyaXB0aW9uIiBtc2dpZD0iODE1MDI1MjAwODU0NTc2ODk1MyI+Im1pdCBCZXdlZ3VuZ3NlaW5nYWJlIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RhcnRfYWN0aW9uIiBtc2dpZD0iODkzNjAzNjQ2MDg5NzM0NzcwOCI+IkpldHp0IHN0YXJ0ZW4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9uZXh0X2FjdGlvbiIgbXNnaWQ9IjM3MTgyMTQzNzkxNTE0NDYwMyI+Ik7DpGNoc3RlciBTY2hyaXR0Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcHNfdGl0bGUiIG1zZ2lkPSI2NDAwMzczMDM0ODcxODE2MTgyIj4iPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPiBlaW5yaWNodGVuIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDFfdGl0bGUiIG1zZ2lkPSIzMTQ3OTY3NjMwMjUzNDYyMzE1Ij4iPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPiBha3RpdmllcmVuIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDFfaW5zdHJ1Y3Rpb24iIG1zZ2lkPSIyNTc4NjMxOTM2NjI0NjM3MjQxIj4iQWt0aXZpZXJlbiBTaWUgXCI8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+XCIgdW50ZXIgXCJTcHJhY2hlICZhbXA7IEVpbmdhYmVcIi4gRGFtaXQgd2lyZCBkaWUgQXBwIGF1ZiBJaHJlbSBHZXLDpHQgYXV0b3Jpc2llcnQuIjwvc3RyaW5nPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNldHVwX3N0ZXAxX2ZpbmlzaGVkX2luc3RydWN0aW9uICgxMDc2MTQ4MjAwNDk1Nzk5NCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAxX2FjdGlvbiIgbXNnaWQ9IjQzNjY1MTM1MzQ5OTk5MDE3MjgiPiJJbiBkZW4gRWluc3RlbGx1bmdlbiBha3RpdmllcmVuIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDJfdGl0bGUiIG1zZ2lkPSI2ODYwNzI1NDQ3OTA2NjkwNTk0Ij4iWnUgPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPiB3ZWNoc2VsbiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAyX2luc3RydWN0aW9uIiBtc2dpZD0iOTE0MTQ4MTk2NDg3MDAyMzMzNiI+IlfDpGhsZW4gU2llIGRhbm4gXCI8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+XCIgYWxzIElocmUgYWt0aXZlIFRleHRlaW5nYWJlbWV0aG9kZS4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMl9hY3Rpb24iIG1zZ2lkPSIxNjYwMzMwMzA3MTU5ODI0MzM3Ij4iRWluZ2FiZW1ldGhvZGUgd2VjaHNlbG4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwM190aXRsZSIgbXNnaWQ9IjMxNTQ3NTcxODM2MzE0OTAyODEiPiJEaWUgRWlucmljaHR1bmcgaXN0IGFiZ2VzY2hsb3NzZW4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwM19pbnN0cnVjdGlvbiIgbXNnaWQ9IjgwMjU5ODE4Mjk2MDU0MjYwMDAiPiJKZXR6dCBrw7ZubmVuIFNpZSBpbiBhbGxlbiBJaHJlbiBMaWVibGluZ3MtQXBwcyDDvGJlciA8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+IFRleHQgZWluZ2ViZW4uIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDNfYWN0aW9uIiBtc2dpZD0iNjAwODc5Nzk3MjU2OTQyMjU5Ij4iV2VpdGVyZSBTcHJhY2hlbiBrb25maWd1cmllcmVuIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfZmluaXNoX2FjdGlvbiIgbXNnaWQ9IjI3NjU1OTI0MzQwOTQ2NTM4OSI+IkZlcnRpZyI8L3N0cmluZz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzaG93X3NldHVwX3dpemFyZF9pY29uICg1MDA4MDI4NTkwNTkzNzEwODMwKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNob3dfc2V0dXBfd2l6YXJkX2ljb25fc3VtbWFyeSAoNDExOTk5ODMyMjUzNjg4MDIxMykgLS0+CisgICAgPHNraXAgLz4KICAgICA8c3RyaW5nIG5hbWU9ImFwcF9uYW1lIiBtc2dpZD0iNjMyMDEwMjYzNzQ5MTIzNDc5MiI+IlfDtnJ0ZXJidWNoYmVyZWl0c3RlbGx1bmciPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkaWN0aW9uYXJ5X3Byb3ZpZGVyX25hbWUiIG1zZ2lkPSIzMDI3MzE1MDQ1Mzk3MzYzMDc5Ij4iV8O2cnRlcmJ1Y2hiZXJlaXRzdGVsbHVuZyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRpY3Rpb25hcnlfc2VydmljZV9uYW1lIiBtc2dpZD0iNjIzNzQ3MjM1MDY5MzUxMTQ0OCI+IlfDtnJ0ZXJidWNoIjwvc3RyaW5nPgpAQCAtMjAzLDQgKzIyNCw2IEBACiAgICAgPHN0cmluZyBuYW1lPSJkaWN0X2F2YWlsYWJsZV9ub3RpZmljYXRpb25fdGl0bGUiIG1zZ2lkPSI2NTE0Mjg4NTkxOTU5MTE3Mjg4Ij4iRXMgaXN0IGVpbiBXw7ZydGVyYnVjaCBmw7xyIDx4bGlmZjpnIGlkPSJMQU5HVUFHRSI+JTEkczwveGxpZmY6Zz4gdmVyZsO8Z2Jhci4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkaWN0X2F2YWlsYWJsZV9ub3RpZmljYXRpb25fZGVzY3JpcHRpb24iIG1zZ2lkPSIxMDc1MTk0MTY5NDQzMTYzNDg3Ij4iWnVtIExlc2VuIHVuZCBIZXJ1bnRlcmxhZGVuIGRyw7xja2VuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idG9hc3RfZG93bmxvYWRpbmdfc3VnZ2VzdGlvbnMiIG1zZ2lkPSIxMzEzMDI3MzUzNTg4NTY2NjYwIj4iRG93bmxvYWQgd3VyZGUgZ2VzdGFydGV0OiBWb3JzY2hsw6RnZSBmw7xyIDx4bGlmZjpnIGlkPSJMQU5HVUFHRSI+JTEkczwveGxpZmY6Zz4gc2luZCBpbiBLw7xyemUgYmVyZWl0LiI8L3N0cmluZz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciB2ZXJzaW9uX3RleHQgKDI3MTUzNTQyMTU1Njg0NjkzODUpIC0tPgorICAgIDxza2lwIC8+CiA8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL2phdmEvcmVzL3ZhbHVlcy1lbC9zdHJpbmdzLnhtbCBiL2phdmEvcmVzL3ZhbHVlcy1lbC9zdHJpbmdzLnhtbAppbmRleCBmYWQxY2Y1Li5hYjIwNTJmIDEwMDY0NAotLS0gYS9qYXZhL3Jlcy92YWx1ZXMtZWwvc3RyaW5ncy54bWwKKysrIGIvamF2YS9yZXMvdmFsdWVzLWVsL3N0cmluZ3MueG1sCkBAIC01Myw2ICs1Myw4IEBACiAgICAgPHN0cmluZyBuYW1lPSJ1c2VfZG91YmxlX3NwYWNlX3BlcmlvZF9zdW1tYXJ5IiBtc2dpZD0iNjUzMjg5MjE4NzI0Nzk1Mjc5OSI+Is6kzr8gzrTOuc+AzrvPjCDPgM6sz4TOt868zrEgz4TOv8+FIM+AzrvOrs66z4TPgS7OtM65zrHPg8+ELiDOtc65z4POrM6zzrXOuSDOvM65zrEgz4TOtc67zrXOr86xIM66zrHOuSDOrc69zrEgzrrOtc69z4wiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJhdXRvX2NhcCIgbXNnaWQ9IjE3MTk3NDY2NzQ4NTQ2MjgyNTIiPiLOkc+Fz4TPjM68zrHPhM63IM+Hz4HOrs+DzrcgzrrOtc+GzrHOu86xzq/Pic69Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYXV0b19jYXBfc3VtbWFyeSIgbXNnaWQ9Ijc5MzQ0NTI3NjEwMjI5NDY4NzQiPiLOp8+Bzq7Pg863IM66zrXPhs6xzrvOsc6vzr/PhSDPg8+EzrfOvSDPgM+Bz47PhM63IM67zq3Ovs63IM66zqzOuM61IM+Az4HPjM+EzrHPg863z4IiPC9zdHJpbmc+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgZWRpdF9wZXJzb25hbF9kaWN0aW9uYXJ5ICgzOTk2OTEwMDM4OTUyOTQwNDIwKSAtLT4KKyAgICA8c2tpcCAvPgogICAgIDxzdHJpbmcgbmFtZT0iY29uZmlndXJlX2RpY3Rpb25hcmllc190aXRsZSIgbXNnaWQ9IjQyMzg2NTIzMzg1NTY5MDIwNDkiPiLOoM+Bz4zPg864zrXPhM6xIM67zrXOvs65zrrOrCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im1haW5fZGljdGlvbmFyeSIgbXNnaWQ9IjQ3OTg3NjM3ODE4MTgzNjExNjgiPiLOms+Nz4HOuc6/IM67zrXOvs65zrrPjCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InByZWZzX3Nob3dfc3VnZ2VzdGlvbnMiIG1zZ2lkPSI4MDI2Nzk5NjYzNDQ1NTMxNjM3Ij4izpXOvM+GzqzOvc65z4POtyDPgM+Bzr/PhM6sz4POtc+Jzr0gzrTOuc+Mz4HOuM+Jz4POt8+CIjwvc3RyaW5nPgpAQCAtMTcxLDggKzE3MywyNyBAQAogICAgIDxzdHJpbmcgbmFtZT0icmVhZF9leHRlcm5hbF9kaWN0aW9uYXJ5X2NvbmZpcm1faW5zdGFsbF9tZXNzYWdlIiBtc2dpZD0iNjg5ODYxMDE2Mzc2ODk4MDg3MCI+Is6dzrEgzrXOs866zrHPhM6xz4PPhM6xzrjOtc6vIM+Mzr3PhM+Jz4IgzrHPhc+Ez4wgz4TOvyDOsc+Bz4fOtc6vzr8gzrPOuc6xIDx4bGlmZjpnIGlkPSJMT0NBTEVfTkFNRSI+JXM8L3hsaWZmOmc+OyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImVycm9yIiBtc2dpZD0iODk0MDc2MzYyNDY2ODUxMzY0OCI+Is6gzrHPgc6/z4XPg865zqzPg8+EzrfOus61IM+Dz4bOrM67zrzOsS4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJidXR0b25fZGVmYXVsdCIgbXNnaWQ9IjM5ODgwMTc4NDA0MzE4ODE0OTEiPiLOoM+Bzr/Otc+AzrnOu86/zrPOriI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Imxhbmd1YWdlX3NldHRpbmdzIiBtc2dpZD0iMTY3MTE1MzA1MzIwMTgwOTAzMSI+Is6TzrvPjs+Dz4POsSDOus6xzrkgzrXOuc+DzrHOs8+JzrPOriI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InNlbGVjdF9pbnB1dF9tZXRob2QiIG1zZ2lkPSI0MzAxNjAyMzc0NjA5Mjc1MDAzIj4izpXPgM65zrvOv86zzq4gzrzOtc64z4zOtM6/z4UgzrXOuc+DzrHOs8+JzrPOrs+CIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfd2VsY29tZV90aXRsZSIgbXNnaWQ9IjYxMTI4MjE3MDk4MzIwMzE3MTUiPiLOms6xzrvPjs+CIM6/z4HOr8+DzrHPhM61IM+Dz4TOvyA8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfd2VsY29tZV9hZGRpdGlvbmFsX2Rlc2NyaXB0aW9uIiBtc2dpZD0iODE1MDI1MjAwODU0NTc2ODk1MyI+Is68zrUgzqDOu863zrrPhM+Bzr/Ou8+MzrPOt8+DzrcgzrzOtSDOus6vzr3Ot8+DzrciPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGFydF9hY3Rpb24iIG1zZ2lkPSI4OTM2MDM2NDYwODk3MzQ3NzA4Ij4izojOvc6xz4HOvs63Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfbmV4dF9hY3Rpb24iIG1zZ2lkPSIzNzE4MjE0Mzc5MTUxNDQ2MDMiPiLOlc+Az4zOvM61zr3OvyDOss6uzrzOsSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXBzX3RpdGxlIiBtc2dpZD0iNjQwMDM3MzAzNDg3MTgxNjE4MiI+Is6hz43OuM68zrnPg863IM+EzrfPgiDOtc+GzrHPgc68zr/Os86uz4IgPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAxX3RpdGxlIiBtc2dpZD0iMzE0Nzk2NzYzMDI1MzQ2MjMxNSI+Is6Vzr3Otc+BzrPOv8+Azr/Ouc6uz4PPhM61IM+EzrfOvSDOtc+GzrHPgc68zr/Os86uIDx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMV9pbnN0cnVjdGlvbiIgbXNnaWQ9IjI1Nzg2MzE5MzY2MjQ2MzcyNDEiPiLOlc+AzrnOu86tzr7PhM61IFwiPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPlwiIM+Dz4TOuc+CIM+Bz4XOuM68zq/Pg861zrnPgiDOk867z47Pg8+DzrEgzrrOsc65IM61zrnPg86xzrPPic6zzq4sIM6zzrnOsSDOvc6xIM61zrrPhM61zrvOtc+Dz4TOtc6vIM+Dz4TOtyDPg8+Fz4POus61z4XOri4iPC9zdHJpbmc+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc2V0dXBfc3RlcDFfZmluaXNoZWRfaW5zdHJ1Y3Rpb24gKDEwNzYxNDgyMDA0OTU3OTk0KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDFfYWN0aW9uIiBtc2dpZD0iNDM2NjUxMzUzNDk5OTkwMTcyOCI+Is6Vzr3Otc+BzrPOv8+Azr/Or863z4POtyDPg8+EzrnPgiDOoc+FzrjOvM6vz4POtc65z4IiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMl90aXRsZSIgbXNnaWQ9IjY4NjA3MjU0NDc5MDY2OTA1OTQiPiLOnM61z4TOrM6yzrHPg863IM+Dz4TOt869IM61z4bOsc+BzrzOv86zzq4gPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAyX2luc3RydWN0aW9uIiBtc2dpZD0iOTE0MTQ4MTk2NDg3MDAyMzMzNiI+Is6jz4TOtyDPg8+Fzr3Orc+HzrXOuc6xLCDOtc+AzrnOu86tzr7PhM61IFwiPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPlwiIM+Jz4Igz4TOt869IM61zr3Otc+BzrPOriDOvM6tzrjOv860zr8gzrXOuc+DzrHOs8+JzrPOrs+CIM66zrXOuc68zq3Ovc6/z4UuIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDJfYWN0aW9uIiBtc2dpZD0iMTY2MDMzMDMwNzE1OTgyNDMzNyI+Is6Vzr3Osc67zrvOsc6zzq4gzrzOtc64z4zOtM+Jzr0gzrXOuc+DzrHOs8+JzrPOrs+CIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDNfdGl0bGUiIG1zZ2lkPSIzMTU0NzU3MTgzNjMxNDkwMjgxIj4izqPPhc6zz4fOsc+BzrfPhM6uz4HOuc6xLCDOtc6vz4PPhM61IM6tz4TOv865zrzOv865ISI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAzX2luc3RydWN0aW9uIiBtc2dpZD0iODAyNTk4MTgyOTYwNTQyNjAwMCI+Is6gzrvOrc6/zr0gzrzPgM6/z4HOtc6vz4TOtSDOvc6xIM+AzrvOt866z4TPgc6/zrvOv86zzq7Pg861z4TOtSDPjM67zrXPgiDPhM65z4IgzrHOs86xz4DOt868zq3Ovc61z4Igz4POsc+CIM61z4bOsc+BzrzOv86zzq3PgiDOvM61IM+Ezr8gPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPi4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwM19hY3Rpb24iIG1zZ2lkPSI2MDA4Nzk3OTcyNTY5NDIyNTkiPiLOlM65zrHOvM+Mz4HPhs+Jz4POtyDPgM+Bz4zPg864zrXPhM+Jzr0gzrPOu8+Jz4PPg8+Ozr0iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9maW5pc2hfYWN0aW9uIiBtc2dpZD0iMjc2NTU5MjQzNDA5NDY1Mzg5Ij4izp/Ou86/zrrOu863z4HPjs64zrfOus61Ijwvc3RyaW5nPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNob3dfc2V0dXBfd2l6YXJkX2ljb24gKDUwMDgwMjg1OTA1OTM3MTA4MzApIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc2hvd19zZXR1cF93aXphcmRfaWNvbl9zdW1tYXJ5ICg0MTE5OTk4MzIyNTM2ODgwMjEzKSAtLT4KKyAgICA8c2tpcCAvPgogICAgIDxzdHJpbmcgbmFtZT0iYXBwX25hbWUiIG1zZ2lkPSI2MzIwMTAyNjM3NDkxMjM0NzkyIj4izqDOsc+Bzr/Ph86tzrHPgiDOu861zr7Ouc66zr/PjSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRpY3Rpb25hcnlfcHJvdmlkZXJfbmFtZSIgbXNnaWQ9IjMwMjczMTUwNDUzOTczNjMwNzkiPiLOoM6xz4HOv8+Hzq3Osc+CIM67zrXOvs65zrrOv8+NIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGljdGlvbmFyeV9zZXJ2aWNlX25hbWUiIG1zZ2lkPSI2MjM3NDcyMzUwNjkzNTExNDQ4Ij4izqXPgM63z4HOtc+Dzq/OsSDOu861zr7Ouc66zr/PjSI8L3N0cmluZz4KQEAgLTIwMyw0ICsyMjQsNiBAQAogICAgIDxzdHJpbmcgbmFtZT0iZGljdF9hdmFpbGFibGVfbm90aWZpY2F0aW9uX3RpdGxlIiBtc2dpZD0iNjUxNDI4ODU5MTk1OTExNzI4OCI+Is6lz4DOrM+Bz4fOtc65IM60zrnOsc64zq3Pg865zrzOvyDOu861zr7Ouc66z4wgzrPOuc6xIM+EzrEgPHhsaWZmOmcgaWQ9IkxBTkdVQUdFIj4lMSRzPC94bGlmZjpnPiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRpY3RfYXZhaWxhYmxlX25vdGlmaWNhdGlvbl9kZXNjcmlwdGlvbiIgbXNnaWQ9IjEwNzUxOTQxNjk0NDMxNjM0ODciPiLOoM6xz4TOrs+Dz4TOtSDOs865zrEgzq3Ou861zrPPh86/IM66zrHOuSDOu86uz4jOtyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InRvYXN0X2Rvd25sb2FkaW5nX3N1Z2dlc3Rpb25zIiBtc2dpZD0iMTMxMzAyNzM1MzU4ODU2NjY2MCI+Is6bzq7PiM63OiDOn865IM+Az4HOv8+EzqzPg861zrnPgiDOs865zrEgz4TOsSA8eGxpZmY6ZyBpZD0iTEFOR1VBR0UiPiUxJHM8L3hsaWZmOmc+IM64zrEgzrXOr869zrHOuSDOrc+Ezr/Ouc68zrXPgiDPg8+Nzr3PhM6/zrzOsS4iPC9zdHJpbmc+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgdmVyc2lvbl90ZXh0ICgyNzE1MzU0MjE1NTY4NDY5Mzg1KSAtLT4KKyAgICA8c2tpcCAvPgogPC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9qYXZhL3Jlcy92YWx1ZXMtZW4tckdCL3N0cmluZ3MueG1sIGIvamF2YS9yZXMvdmFsdWVzLWVuLXJHQi9zdHJpbmdzLnhtbAppbmRleCBjMGI5ZWRlLi44YTMwYzM0IDEwMDY0NAotLS0gYS9qYXZhL3Jlcy92YWx1ZXMtZW4tckdCL3N0cmluZ3MueG1sCisrKyBiL2phdmEvcmVzL3ZhbHVlcy1lbi1yR0Ivc3RyaW5ncy54bWwKQEAgLTUzLDYgKzUzLDcgQEAKICAgICA8c3RyaW5nIG5hbWU9InVzZV9kb3VibGVfc3BhY2VfcGVyaW9kX3N1bW1hcnkiIG1zZ2lkPSI2NTMyODkyMTg3MjQ3OTUyNzk5Ij4iRG91YmxlIHRhcCBvbiBzcGFjZWJhciBpbnNlcnRzIGEgZnVsbCBzdG9wIGZvbGxvd2VkIGJ5IGEgc3BhY2UiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJhdXRvX2NhcCIgbXNnaWQ9IjE3MTk3NDY2NzQ4NTQ2MjgyNTIiPiJBdXRvLWNhcGl0YWxpc2F0aW9uIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYXV0b19jYXBfc3VtbWFyeSIgbXNnaWQ9Ijc5MzQ0NTI3NjEwMjI5NDY4NzQiPiJDYXBpdGFsaXNlIHRoZSBmaXJzdCB3b3JkIG9mIGVhY2ggc2VudGVuY2UiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJlZGl0X3BlcnNvbmFsX2RpY3Rpb25hcnkiIG1zZ2lkPSIzOTk2OTEwMDM4OTUyOTQwNDIwIj4iUGVyc29uYWwgZGljdGlvbmFyeSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImNvbmZpZ3VyZV9kaWN0aW9uYXJpZXNfdGl0bGUiIG1zZ2lkPSI0MjM4NjUyMzM4NTU2OTAyMDQ5Ij4iQWRkLW9uIGRpY3Rpb25hcmllcyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im1haW5fZGljdGlvbmFyeSIgbXNnaWQ9IjQ3OTg3NjM3ODE4MTgzNjExNjgiPiJNYWluIGRpY3Rpb25hcnkiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwcmVmc19zaG93X3N1Z2dlc3Rpb25zIiBtc2dpZD0iODAyNjc5OTY2MzQ0NTUzMTYzNyI+IlNob3cgY29ycmVjdGlvbiBzdWdnZXN0aW9ucyI8L3N0cmluZz4KQEAgLTE3MSw4ICsxNzIsMjUgQEAKICAgICA8c3RyaW5nIG5hbWU9InJlYWRfZXh0ZXJuYWxfZGljdGlvbmFyeV9jb25maXJtX2luc3RhbGxfbWVzc2FnZSIgbXNnaWQ9IjY4OTg2MTAxNjM3Njg5ODA4NzAiPiJSZWFsbHkgaW5zdGFsbCB0aGlzIGZpbGUgZm9yIDx4bGlmZjpnIGlkPSJMT0NBTEVfTkFNRSI+JXM8L3hsaWZmOmc+PyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImVycm9yIiBtc2dpZD0iODk0MDc2MzYyNDY2ODUxMzY0OCI+IlRoZXJlIHdhcyBhbiBlcnJvciI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJ1dHRvbl9kZWZhdWx0IiBtc2dpZD0iMzk4ODAxNzg0MDQzMTg4MTQ5MSI+IkRlZmF1bHQiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJsYW5ndWFnZV9zZXR0aW5ncyIgbXNnaWQ9IjE2NzExNTMwNTMyMDE4MDkwMzEiPiJMYW5ndWFnZSAmYW1wOyBpbnB1dCI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InNlbGVjdF9pbnB1dF9tZXRob2QiIG1zZ2lkPSI0MzAxNjAyMzc0NjA5Mjc1MDAzIj4iQ2hvb3NlIGlucHV0IG1ldGhvZCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3dlbGNvbWVfdGl0bGUiIG1zZ2lkPSI2MTEyODIxNzA5ODMyMDMxNzE1Ij4iV2VsY29tZSB0byA8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfd2VsY29tZV9hZGRpdGlvbmFsX2Rlc2NyaXB0aW9uIiBtc2dpZD0iODE1MDI1MjAwODU0NTc2ODk1MyI+IndpdGggR2VzdHVyZSBUeXBpbmciPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGFydF9hY3Rpb24iIG1zZ2lkPSI4OTM2MDM2NDYwODk3MzQ3NzA4Ij4iR2V0IHN0YXJ0ZWQiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9uZXh0X2FjdGlvbiIgbXNnaWQ9IjM3MTgyMTQzNzkxNTE0NDYwMyI+Ik5leHQgc3RlcCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXBzX3RpdGxlIiBtc2dpZD0iNjQwMDM3MzAzNDg3MTgxNjE4MiI+IlNldHRpbmcgdXAgPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAxX3RpdGxlIiBtc2dpZD0iMzE0Nzk2NzYzMDI1MzQ2MjMxNSI+IkVuYWJsZSA8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDFfaW5zdHJ1Y3Rpb24iIG1zZ2lkPSIyNTc4NjMxOTM2NjI0NjM3MjQxIj4iUGxlYXNlIHRpY2sgXCI8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+XCIgaW4geW91ciBMYW5ndWFnZSAmYW1wOyBpbnB1dCBzZXR0aW5ncy4gVGhpcyB3aWxsIGF1dGhvcmlzZSBpdCB0byBydW4gb24geW91ciBkZXZpY2UuIjwvc3RyaW5nPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNldHVwX3N0ZXAxX2ZpbmlzaGVkX2luc3RydWN0aW9uICgxMDc2MTQ4MjAwNDk1Nzk5NCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAxX2FjdGlvbiIgbXNnaWQ9IjQzNjY1MTM1MzQ5OTk5MDE3MjgiPiJFbmFibGUgaW4gU2V0dGluZ3MiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMl90aXRsZSIgbXNnaWQ9IjY4NjA3MjU0NDc5MDY2OTA1OTQiPiJTd2l0Y2ggdG8gPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAyX2luc3RydWN0aW9uIiBtc2dpZD0iOTE0MTQ4MTk2NDg3MDAyMzMzNiI+Ik5leHQsIHNlbGVjdCBcIjx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz5cIiBhcyB5b3VyIGFjdGl2ZSB0ZXh0LWlucHV0IG1ldGhvZC4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMl9hY3Rpb24iIG1zZ2lkPSIxNjYwMzMwMzA3MTU5ODI0MzM3Ij4iU3dpdGNoIGlucHV0IG1ldGhvZHMiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwM190aXRsZSIgbXNnaWQ9IjMxNTQ3NTcxODM2MzE0OTAyODEiPiJDb25ncmF0dWxhdGlvbnMsIHlvdVwncmUgYWxsIHNldCEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwM19pbnN0cnVjdGlvbiIgbXNnaWQ9IjgwMjU5ODE4Mjk2MDU0MjYwMDAiPiJOb3cgeW91IGNhbiB0eXBlIGluIGFsbCB5b3VyIGZhdm91cml0ZSBhcHBzIHdpdGggPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPi4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwM19hY3Rpb24iIG1zZ2lkPSI2MDA4Nzk3OTcyNTY5NDIyNTkiPiJDb25maWd1cmUgYWRkaXRpb25hbCBsYW5ndWFnZXMiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9maW5pc2hfYWN0aW9uIiBtc2dpZD0iMjc2NTU5MjQzNDA5NDY1Mzg5Ij4iRmluaXNoZWQiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzaG93X3NldHVwX3dpemFyZF9pY29uIiBtc2dpZD0iNTAwODAyODU5MDU5MzcxMDgzMCI+IlNob3cgYXBwIGljb24iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzaG93X3NldHVwX3dpemFyZF9pY29uX3N1bW1hcnkiIG1zZ2lkPSI0MTE5OTk4MzIyNTM2ODgwMjEzIj4iRGlzcGxheSBhcHBsaWNhdGlvbiBpY29uIGluIHRoZSBsYXVuY2hlciI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImFwcF9uYW1lIiBtc2dpZD0iNjMyMDEwMjYzNzQ5MTIzNDc5MiI+IkRpY3Rpb25hcnkgUHJvdmlkZXIiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkaWN0aW9uYXJ5X3Byb3ZpZGVyX25hbWUiIG1zZ2lkPSIzMDI3MzE1MDQ1Mzk3MzYzMDc5Ij4iRGljdGlvbmFyeSBQcm92aWRlciI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRpY3Rpb25hcnlfc2VydmljZV9uYW1lIiBtc2dpZD0iNjIzNzQ3MjM1MDY5MzUxMTQ0OCI+IkRpY3Rpb25hcnkgU2VydmljZSI8L3N0cmluZz4KQEAgLTIwMyw0ICsyMjEsNSBAQAogICAgIDxzdHJpbmcgbmFtZT0iZGljdF9hdmFpbGFibGVfbm90aWZpY2F0aW9uX3RpdGxlIiBtc2dpZD0iNjUxNDI4ODU5MTk1OTExNzI4OCI+IkEgZGljdGlvbmFyeSBpcyBhdmFpbGFibGUgZm9yIDx4bGlmZjpnIGlkPSJMQU5HVUFHRSI+JTEkczwveGxpZmY6Zz4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkaWN0X2F2YWlsYWJsZV9ub3RpZmljYXRpb25fZGVzY3JpcHRpb24iIG1zZ2lkPSIxMDc1MTk0MTY5NDQzMTYzNDg3Ij4iUHJlc3MgdG8gcmV2aWV3IGFuZCBkb3dubG9hZCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InRvYXN0X2Rvd25sb2FkaW5nX3N1Z2dlc3Rpb25zIiBtc2dpZD0iMTMxMzAyNzM1MzU4ODU2NjY2MCI+IkRvd25sb2FkaW5nOiBzdWdnZXN0aW9ucyBmb3IgPHhsaWZmOmcgaWQ9IkxBTkdVQUdFIj4lMSRzPC94bGlmZjpnPiB3aWxsIGJlIHJlYWR5IHNvb24uIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0idmVyc2lvbl90ZXh0IiBtc2dpZD0iMjcxNTM1NDIxNTU2ODQ2OTM4NSI+IlZlcnNpb24gPHhsaWZmOmcgaWQ9IlZFUlNJT05fTlVNQkVSIj4lMSRzPC94bGlmZjpnPiI8L3N0cmluZz4KIDwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvamF2YS9yZXMvdmFsdWVzLWVzLXJVUy9zdHJpbmdzLnhtbCBiL2phdmEvcmVzL3ZhbHVlcy1lcy1yVVMvc3RyaW5ncy54bWwKaW5kZXggODhmNTg1Ni4uZDZhMjEzMSAxMDA2NDQKLS0tIGEvamF2YS9yZXMvdmFsdWVzLWVzLXJVUy9zdHJpbmdzLnhtbAorKysgYi9qYXZhL3Jlcy92YWx1ZXMtZXMtclVTL3N0cmluZ3MueG1sCkBAIC01Myw2ICs1Myw4IEBACiAgICAgPHN0cmluZyBuYW1lPSJ1c2VfZG91YmxlX3NwYWNlX3BlcmlvZF9zdW1tYXJ5IiBtc2dpZD0iNjUzMjg5MjE4NzI0Nzk1Mjc5OSI+IlRvY2FyIGRvcyB2ZWNlcyBsYSBiYXJyYSBlc3BhY2lhZG9yYSBpbnNlcnRhIHVuIHB1bnRvIHkgZXNwYWNpby4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJhdXRvX2NhcCIgbXNnaWQ9IjE3MTk3NDY2NzQ4NTQ2MjgyNTIiPiJNYXnDunNjdWxhcyBhdXRvbcOhdGljYXMiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJhdXRvX2NhcF9zdW1tYXJ5IiBtc2dpZD0iNzkzNDQ1Mjc2MTAyMjk0Njg3NCI+IkVzY3JpYmUgY29uIG1hecO6c2N1bGEgbGEgcHJpbWVyYSBwYWxhYnJhIGRlIGNhZGEgZnJhc2UiPC9zdHJpbmc+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgZWRpdF9wZXJzb25hbF9kaWN0aW9uYXJ5ICgzOTk2OTEwMDM4OTUyOTQwNDIwKSAtLT4KKyAgICA8c2tpcCAvPgogICAgIDxzdHJpbmcgbmFtZT0iY29uZmlndXJlX2RpY3Rpb25hcmllc190aXRsZSIgbXNnaWQ9IjQyMzg2NTIzMzg1NTY5MDIwNDkiPiJEaWNjaW9uYXJpb3MgY29tcGxlbWVudGFyaW9zIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ibWFpbl9kaWN0aW9uYXJ5IiBtc2dpZD0iNDc5ODc2Mzc4MTgxODM2MTE2OCI+IkRpY2Npb25hcmlvIHByaW5jaXBhbCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InByZWZzX3Nob3dfc3VnZ2VzdGlvbnMiIG1zZ2lkPSI4MDI2Nzk5NjYzNDQ1NTMxNjM3Ij4iTW9zdHJhciBzdWdlcmVuY2lhcyBkZSBjb3JyZWNjaW9uZXMiPC9zdHJpbmc+CkBAIC0xNzEsOCArMTczLDI3IEBACiAgICAgPHN0cmluZyBuYW1lPSJyZWFkX2V4dGVybmFsX2RpY3Rpb25hcnlfY29uZmlybV9pbnN0YWxsX21lc3NhZ2UiIG1zZ2lkPSI2ODk4NjEwMTYzNzY4OTgwODcwIj4iwr9SZWFsbWVudGUgcXVpZXJlcyBpbnN0YWxhciBlc3RlIGFyY2hpdm8gcGFyYSA8eGxpZmY6ZyBpZD0iTE9DQUxFX05BTUUiPiVzPC94bGlmZjpnPj8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJlcnJvciIgbXNnaWQ9Ijg5NDA3NjM2MjQ2Njg1MTM2NDgiPiJTZSBwcm9kdWpvIHVuIGVycm9yLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJ1dHRvbl9kZWZhdWx0IiBtc2dpZD0iMzk4ODAxNzg0MDQzMTg4MTQ5MSI+IlByZWRldGVybWluYWRvIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibGFuZ3VhZ2Vfc2V0dGluZ3MiIG1zZ2lkPSIxNjcxMTUzMDUzMjAxODA5MDMxIj4iVGVjbGFkbyBlIGlkaW9tYSI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InNlbGVjdF9pbnB1dF9tZXRob2QiIG1zZ2lkPSI0MzAxNjAyMzc0NjA5Mjc1MDAzIj4iU2VsZWNjaW9uYXIgbcOpdG9kbyBkZSBlbnRyYWRhIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfd2VsY29tZV90aXRsZSIgbXNnaWQ9IjYxMTI4MjE3MDk4MzIwMzE3MTUiPiJUZSBkYW1vcyBsYSBiaWVudmVuaWRhIGEgPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3dlbGNvbWVfYWRkaXRpb25hbF9kZXNjcmlwdGlvbiIgbXNnaWQ9IjgxNTAyNTIwMDg1NDU3Njg5NTMiPiJjb24gZXNjcml0dXJhIGdlc3R1YWwiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGFydF9hY3Rpb24iIG1zZ2lkPSI4OTM2MDM2NDYwODk3MzQ3NzA4Ij4iQ29tZW56YXIiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9uZXh0X2FjdGlvbiIgbXNnaWQ9IjM3MTgyMTQzNzkxNTE0NDYwMyI+IlNpZ3VpZW50ZSBwYXNvIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcHNfdGl0bGUiIG1zZ2lkPSI2NDAwMzczMDM0ODcxODE2MTgyIj4iQ29uZmlndXJhbmRvIDx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz7igKYiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMV90aXRsZSIgbXNnaWQ9IjMxNDc5Njc2MzAyNTM0NjIzMTUiPiJIYWJpbGl0YXIgPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAxX2luc3RydWN0aW9uIiBtc2dpZD0iMjU3ODYzMTkzNjYyNDYzNzI0MSI+Ik1hcmNhIFwiPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPlwiIGVuIFRlY2xhZG8gZSBpZGlvbWEgcGFyYSBwZXJtaXRpciBxdWUgc2UgZWplY3V0ZSBlbiBlbCBkaXNwb3NpdGl2by4iPC9zdHJpbmc+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc2V0dXBfc3RlcDFfZmluaXNoZWRfaW5zdHJ1Y3Rpb24gKDEwNzYxNDgyMDA0OTU3OTk0KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDFfYWN0aW9uIiBtc2dpZD0iNDM2NjUxMzUzNDk5OTkwMTcyOCI+IkhhYmlsaXRhciBlbiBDb25maWd1cmFjacOzbiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAyX3RpdGxlIiBtc2dpZD0iNjg2MDcyNTQ0NzkwNjY5MDU5NCI+IkNhbWJpYXIgYSA8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDJfaW5zdHJ1Y3Rpb24iIG1zZ2lkPSI5MTQxNDgxOTY0ODcwMDIzMzM2Ij4iQSBjb250aW51YWNpw7NuLCBzZWxlY2Npb25hIFwiPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPlwiIGNvbW8gdHUgbcOpdG9kbyBkZSBlbnRyYWRhIGRlIHRleHRvIGFjdGl2by4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMl9hY3Rpb24iIG1zZ2lkPSIxNjYwMzMwMzA3MTU5ODI0MzM3Ij4iQ2FtYmlhciBtw6l0b2RvcyBkZSBlbnRyYWRhIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDNfdGl0bGUiIG1zZ2lkPSIzMTU0NzU3MTgzNjMxNDkwMjgxIj4iwqFGZWxpY2l0YWNpb25lcywgeWEgdGVybWluYXN0ZSEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwM19pbnN0cnVjdGlvbiIgbXNnaWQ9IjgwMjU5ODE4Mjk2MDU0MjYwMDAiPiJBaG9yYSBwdWVkZXMgZXNjcmliaXIgZW4gdG9kYXMgbGFzIGFwbGljYWNpb25lcyBxdWUgcXVpZXJhcyBjb24gPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPi4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwM19hY3Rpb24iIG1zZ2lkPSI2MDA4Nzk3OTcyNTY5NDIyNTkiPiJDb25maWd1cmFyIG90cm9zIGlkaW9tYXMiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9maW5pc2hfYWN0aW9uIiBtc2dpZD0iMjc2NTU5MjQzNDA5NDY1Mzg5Ij4iTGlzdG8iPC9zdHJpbmc+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc2hvd19zZXR1cF93aXphcmRfaWNvbiAoNTAwODAyODU5MDU5MzcxMDgzMCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzaG93X3NldHVwX3dpemFyZF9pY29uX3N1bW1hcnkgKDQxMTk5OTgzMjI1MzY4ODAyMTMpIC0tPgorICAgIDxza2lwIC8+CiAgICAgPHN0cmluZyBuYW1lPSJhcHBfbmFtZSIgbXNnaWQ9IjYzMjAxMDI2Mzc0OTEyMzQ3OTIiPiJQcm92ZWVkb3IgZGUgZGljY2lvbmFyaW9zIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGljdGlvbmFyeV9wcm92aWRlcl9uYW1lIiBtc2dpZD0iMzAyNzMxNTA0NTM5NzM2MzA3OSI+IlByb3ZlZWRvciBkZSBkaWNjaW9uYXJpb3MiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkaWN0aW9uYXJ5X3NlcnZpY2VfbmFtZSIgbXNnaWQ9IjYyMzc0NzIzNTA2OTM1MTE0NDgiPiJTZXJ2aWNpbyBkZSBkaWNjaW9uYXJpb3MiPC9zdHJpbmc+CkBAIC0yMDMsNCArMjI0LDYgQEAKICAgICA8c3RyaW5nIG5hbWU9ImRpY3RfYXZhaWxhYmxlX25vdGlmaWNhdGlvbl90aXRsZSIgbXNnaWQ9IjY1MTQyODg1OTE5NTkxMTcyODgiPiJIYXkgdW4gZGljY2lvbmFyaW8gZGlzcG9uaWJsZSBkZSA8eGxpZmY6ZyBpZD0iTEFOR1VBR0UiPiUxJHM8L3hsaWZmOmc+LiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRpY3RfYXZhaWxhYmxlX25vdGlmaWNhdGlvbl9kZXNjcmlwdGlvbiIgbXNnaWQ9IjEwNzUxOTQxNjk0NDMxNjM0ODciPiJQdWxzYXIgcGFyYSBvcGluYXIgeSBkZXNjYXJnYXIiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ0b2FzdF9kb3dubG9hZGluZ19zdWdnZXN0aW9ucyIgbXNnaWQ9IjEzMTMwMjczNTM1ODg1NjY2NjAiPiJEZXNjYXJnYW5kbzogbGFzIHN1Z2VyZW5jaWFzIGRlIDx4bGlmZjpnIGlkPSJMQU5HVUFHRSI+JTEkczwveGxpZmY6Zz4gZXN0YXLDoW4gZGlzcG9uaWJsZXMgZW4gYnJldmUuIjwvc3RyaW5nPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHZlcnNpb25fdGV4dCAoMjcxNTM1NDIxNTU2ODQ2OTM4NSkgLS0+CisgICAgPHNraXAgLz4KIDwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvamF2YS9yZXMvdmFsdWVzLWVzL3N0cmluZ3MueG1sIGIvamF2YS9yZXMvdmFsdWVzLWVzL3N0cmluZ3MueG1sCmluZGV4IGE4MzQxZGEuLmY3ZTA4M2EgMTAwNjQ0Ci0tLSBhL2phdmEvcmVzL3ZhbHVlcy1lcy9zdHJpbmdzLnhtbAorKysgYi9qYXZhL3Jlcy92YWx1ZXMtZXMvc3RyaW5ncy54bWwKQEAgLTUzLDYgKzUzLDggQEAKICAgICA8c3RyaW5nIG5hbWU9InVzZV9kb3VibGVfc3BhY2VfcGVyaW9kX3N1bW1hcnkiIG1zZ2lkPSI2NTMyODkyMTg3MjQ3OTUyNzk5Ij4iU2kgdG9jYXMgZG9zIHZlY2VzIGVsIGVzcGFjaW8sIHNlIGluc2VydGEgdW4gcHVudG8gc2VndWlkbyBkZSB1biBlc3BhY2lvIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYXV0b19jYXAiIG1zZ2lkPSIxNzE5NzQ2Njc0ODU0NjI4MjUyIj4iTWF5w7pzY3VsYXMgYXV0b23DoXRpY2FzIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYXV0b19jYXBfc3VtbWFyeSIgbXNnaWQ9Ijc5MzQ0NTI3NjEwMjI5NDY4NzQiPiJQb25lciBsYSBwcmltZXJhIGxldHJhIGRlIGNhZGEgcGFsYWJyYSBlbiBtYXnDunNjdWxhIjwvc3RyaW5nPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGVkaXRfcGVyc29uYWxfZGljdGlvbmFyeSAoMzk5NjkxMDAzODk1Mjk0MDQyMCkgLS0+CisgICAgPHNraXAgLz4KICAgICA8c3RyaW5nIG5hbWU9ImNvbmZpZ3VyZV9kaWN0aW9uYXJpZXNfdGl0bGUiIG1zZ2lkPSI0MjM4NjUyMzM4NTU2OTAyMDQ5Ij4iRGljY2lvbmFyaW9zIGNvbXBsZW1lbnRhcmlvcyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im1haW5fZGljdGlvbmFyeSIgbXNnaWQ9IjQ3OTg3NjM3ODE4MTgzNjExNjgiPiJEaWNjaW9uYXJpbyBwcmluY2lwYWwiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwcmVmc19zaG93X3N1Z2dlc3Rpb25zIiBtc2dpZD0iODAyNjc5OTY2MzQ0NTUzMTYzNyI+IlN1Z2VyZW5jaWFzIGRlIGNvcnJlY2Npb25lcyI8L3N0cmluZz4KQEAgLTE3MSw4ICsxNzMsMjcgQEAKICAgICA8c3RyaW5nIG5hbWU9InJlYWRfZXh0ZXJuYWxfZGljdGlvbmFyeV9jb25maXJtX2luc3RhbGxfbWVzc2FnZSIgbXNnaWQ9IjY4OTg2MTAxNjM3Njg5ODA4NzAiPiLCv1NlZ3VybyBxdWUgcXVpZXJlcyBpbnN0YWxhciBlc3RlIGFyY2hpdm8gcGFyYSA8eGxpZmY6ZyBpZD0iTE9DQUxFX05BTUUiPiVzPC94bGlmZjpnPj8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJlcnJvciIgbXNnaWQ9Ijg5NDA3NjM2MjQ2Njg1MTM2NDgiPiJTZSBoYSBwcm9kdWNpZG8gdW4gZXJyb3IiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJidXR0b25fZGVmYXVsdCIgbXNnaWQ9IjM5ODgwMTc4NDA0MzE4ODE0OTEiPiJQcmVkZXRlcm1pbmFkbyI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Imxhbmd1YWdlX3NldHRpbmdzIiBtc2dpZD0iMTY3MTE1MzA1MzIwMTgwOTAzMSI+IklkaW9tYSBlIGludHJvZHVjY2nDs24gZGUgdGV4dG8iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJzZWxlY3RfaW5wdXRfbWV0aG9kIiBtc2dpZD0iNDMwMTYwMjM3NDYwOTI3NTAwMyI+IlNlbGVjY2lvbmEgdW4gbcOpdG9kbyBkZSBlbnRyYWRhIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfd2VsY29tZV90aXRsZSIgbXNnaWQ9IjYxMTI4MjE3MDk4MzIwMzE3MTUiPiJUZSBkYW1vcyBsYSBiaWVudmVuaWRhIGEgPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3dlbGNvbWVfYWRkaXRpb25hbF9kZXNjcmlwdGlvbiIgbXNnaWQ9IjgxNTAyNTIwMDg1NDU3Njg5NTMiPiJjb24gZXNjcml0dXJhIGdlc3R1YWwiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGFydF9hY3Rpb24iIG1zZ2lkPSI4OTM2MDM2NDYwODk3MzQ3NzA4Ij4iRW1wZXphciI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX25leHRfYWN0aW9uIiBtc2dpZD0iMzcxODIxNDM3OTE1MTQ0NjAzIj4iUGFzbyBzaWd1aWVudGUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwc190aXRsZSIgbXNnaWQ9IjY0MDAzNzMwMzQ4NzE4MTYxODIiPiJDb25maWd1cmFuZG8gPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPi4uLiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAxX3RpdGxlIiBtc2dpZD0iMzE0Nzk2NzYzMDI1MzQ2MjMxNSI+IkhhYmlsaXRhciA8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDFfaW5zdHJ1Y3Rpb24iIG1zZ2lkPSIyNTc4NjMxOTM2NjI0NjM3MjQxIj4iU2VsZWNjaW9uYSA8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+IGVuIElkaW9tYSBlIGludHJvZHVjY2nDs24gZGUgdGV4dG8gcGFyYSBxdWUgcHVlZGEgdXNhcnNlIGVuIHR1IGRpc3Bvc2l0aXZvLiI8L3N0cmluZz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzZXR1cF9zdGVwMV9maW5pc2hlZF9pbnN0cnVjdGlvbiAoMTA3NjE0ODIwMDQ5NTc5OTQpIC0tPgorICAgIDxza2lwIC8+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMV9hY3Rpb24iIG1zZ2lkPSI0MzY2NTEzNTM0OTk5OTAxNzI4Ij4iSGFiaWxpdGFyIGVuIEFqdXN0ZXMiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMl90aXRsZSIgbXNnaWQ9IjY4NjA3MjU0NDc5MDY2OTA1OTQiPiJDYW1iaWFyIGEgPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAyX2luc3RydWN0aW9uIiBtc2dpZD0iOTE0MTQ4MTk2NDg3MDAyMzMzNiI+IkEgY29udGludWFjacOzbiwgc2VsZWNjaW9uYSA8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+IGNvbW8gbcOpdG9kbyBkZSBpbnRyb2R1Y2Npw7NuIGRlIHRleHRvIGFjdGl2by4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMl9hY3Rpb24iIG1zZ2lkPSIxNjYwMzMwMzA3MTU5ODI0MzM3Ij4iQWx0ZXJuYXIgbcOpdG9kb3MgZGUgZW50cmFkYSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAzX3RpdGxlIiBtc2dpZD0iMzE1NDc1NzE4MzYzMTQ5MDI4MSI+IsKhRW5ob3JhYnVlbmEsIGhhcyB0ZXJtaW5hZG8hIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDNfaW5zdHJ1Y3Rpb24iIG1zZ2lkPSI4MDI1OTgxODI5NjA1NDI2MDAwIj4iQWhvcmEgcHVlZGVzIGVzY3JpYmlyIGVuIHRvZGFzIHR1cyBhcGxpY2FjaW9uZXMgZmF2b3JpdGFzIGNvbiA8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+LiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAzX2FjdGlvbiIgbXNnaWQ9IjYwMDg3OTc5NzI1Njk0MjI1OSI+IkNvbmZpZ3VyYSBvdHJvcyBpZGlvbWFzIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfZmluaXNoX2FjdGlvbiIgbXNnaWQ9IjI3NjU1OTI0MzQwOTQ2NTM4OSI+Ikxpc3RvIjwvc3RyaW5nPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNob3dfc2V0dXBfd2l6YXJkX2ljb24gKDUwMDgwMjg1OTA1OTM3MTA4MzApIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc2hvd19zZXR1cF93aXphcmRfaWNvbl9zdW1tYXJ5ICg0MTE5OTk4MzIyNTM2ODgwMjEzKSAtLT4KKyAgICA8c2tpcCAvPgogICAgIDxzdHJpbmcgbmFtZT0iYXBwX25hbWUiIG1zZ2lkPSI2MzIwMTAyNjM3NDkxMjM0NzkyIj4iUHJvdmVlZG9yIGRlbCBkaWNjaW9uYXJpbyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRpY3Rpb25hcnlfcHJvdmlkZXJfbmFtZSIgbXNnaWQ9IjMwMjczMTUwNDUzOTczNjMwNzkiPiJQcm92ZWVkb3IgZGVsIGRpY2Npb25hcmlvIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGljdGlvbmFyeV9zZXJ2aWNlX25hbWUiIG1zZ2lkPSI2MjM3NDcyMzUwNjkzNTExNDQ4Ij4iU2VydmljaW8gZGUgZGljY2lvbmFyaW8iPC9zdHJpbmc+CkBAIC0yMDMsNCArMjI0LDYgQEAKICAgICA8c3RyaW5nIG5hbWU9ImRpY3RfYXZhaWxhYmxlX25vdGlmaWNhdGlvbl90aXRsZSIgbXNnaWQ9IjY1MTQyODg1OTE5NTkxMTcyODgiPiJIYXkgdW4gZGljY2lvbmFyaW8gZGlzcG9uaWJsZSBkZSA8eGxpZmY6ZyBpZD0iTEFOR1VBR0UiPiUxJHM8L3hsaWZmOmc+Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGljdF9hdmFpbGFibGVfbm90aWZpY2F0aW9uX2Rlc2NyaXB0aW9uIiBtc2dpZD0iMTA3NTE5NDE2OTQ0MzE2MzQ4NyI+IlB1bHNhIHBhcmEgY29tcHJvYmFyIHkgZGVzY2FyZ2FyIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idG9hc3RfZG93bmxvYWRpbmdfc3VnZ2VzdGlvbnMiIG1zZ2lkPSIxMzEzMDI3MzUzNTg4NTY2NjYwIj4iRGVzY2FyZ2FuZG86IGxhcyBzdWdlcmVuY2lhcyBkZSA8eGxpZmY6ZyBpZD0iTEFOR1VBR0UiPiUxJHM8L3hsaWZmOmc+IGVzdGFyw6FuIGRpc3BvbmlibGVzIGVuIGJyZXZlLiI8L3N0cmluZz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciB2ZXJzaW9uX3RleHQgKDI3MTUzNTQyMTU1Njg0NjkzODUpIC0tPgorICAgIDxza2lwIC8+CiA8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL2phdmEvcmVzL3ZhbHVlcy1ldC9zdHJpbmdzLnhtbCBiL2phdmEvcmVzL3ZhbHVlcy1ldC9zdHJpbmdzLnhtbAppbmRleCBmYzg1NDcyLi5hZjkwMjI2IDEwMDY0NAotLS0gYS9qYXZhL3Jlcy92YWx1ZXMtZXQvc3RyaW5ncy54bWwKKysrIGIvamF2YS9yZXMvdmFsdWVzLWV0L3N0cmluZ3MueG1sCkBAIC01Myw2ICs1Myw4IEBACiAgICAgPHN0cmluZyBuYW1lPSJ1c2VfZG91YmxlX3NwYWNlX3BlcmlvZF9zdW1tYXJ5IiBtc2dpZD0iNjUzMjg5MjE4NzI0Nzk1Mjc5OSI+IlTDvGhpa3VrbGFodmkga2FrcyBrb3JkYSBwdXVkdXRhZGVzIHNpc2VzdGF0YWtzZSBwdW5rdCBqYSB0w7xoaWsiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJhdXRvX2NhcCIgbXNnaWQ9IjE3MTk3NDY2NzQ4NTQ2MjgyNTIiPiJBdXRvbWFhdG5lIHN1dXJ0w6RodGVkZSBrYXN1dGFtaW5lIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYXV0b19jYXBfc3VtbWFyeSIgbXNnaWQ9Ijc5MzQ0NTI3NjEwMjI5NDY4NzQiPiJJZ2EgbGF1c2UgZXNpbWVzZSBzw7VuYSBraXJqdXRhbWluZSBzdXVyZSBhbGd1c3TDpGhlZ2EiPC9zdHJpbmc+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgZWRpdF9wZXJzb25hbF9kaWN0aW9uYXJ5ICgzOTk2OTEwMDM4OTUyOTQwNDIwKSAtLT4KKyAgICA8c2tpcCAvPgogICAgIDxzdHJpbmcgbmFtZT0iY29uZmlndXJlX2RpY3Rpb25hcmllc190aXRsZSIgbXNnaWQ9IjQyMzg2NTIzMzg1NTY5MDIwNDkiPiJQaXN0aWtzw7VuYXJhYW1hdHVkIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ibWFpbl9kaWN0aW9uYXJ5IiBtc2dpZD0iNDc5ODc2Mzc4MTgxODM2MTE2OCI+IlBlYW1pbmUgc8O1bmFyYWFtYXQiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwcmVmc19zaG93X3N1Z2dlc3Rpb25zIiBtc2dpZD0iODAyNjc5OTY2MzQ0NTUzMTYzNyI+Ikt1dmEgcGFyYW5kdXNzb292aXR1c2kiPC9zdHJpbmc+CkBAIC0xNzEsOCArMTczLDI3IEBACiAgICAgPHN0cmluZyBuYW1lPSJyZWFkX2V4dGVybmFsX2RpY3Rpb25hcnlfY29uZmlybV9pbnN0YWxsX21lc3NhZ2UiIG1zZ2lkPSI2ODk4NjEwMTYzNzY4OTgwODcwIj4iS2FzIHNvb3ZpdGUgdMO1ZXN0aSBpbnN0YWxsaWRhIGZhaWxpIGxva2FhZGlsZSA8eGxpZmY6ZyBpZD0iTE9DQUxFX05BTUUiPiVzPC94bGlmZjpnPj8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJlcnJvciIgbXNnaWQ9Ijg5NDA3NjM2MjQ2Njg1MTM2NDgiPiJJbG1uZXMgdmlnYSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJ1dHRvbl9kZWZhdWx0IiBtc2dpZD0iMzk4ODAxNzg0MDQzMTg4MTQ5MSI+IlZhaWtldsOkw6RydHVzIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibGFuZ3VhZ2Vfc2V0dGluZ3MiIG1zZ2lkPSIxNjcxMTUzMDUzMjAxODA5MDMxIj4iS2VlbGVkIGphIHNpc2VzdGFtaW5lIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ic2VsZWN0X2lucHV0X21ldGhvZCIgbXNnaWQ9IjQzMDE2MDIzNzQ2MDkyNzUwMDMiPiJWYWxpZ2Ugc2lzZXN0dXNtZWV0b2QiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF93ZWxjb21lX3RpdGxlIiBtc2dpZD0iNjExMjgyMTcwOTgzMjAzMTcxNSI+IlRlcmUgdHVsZW1hc3QgcmFrZW5kdXNzZSA8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfd2VsY29tZV9hZGRpdGlvbmFsX2Rlc2NyaXB0aW9uIiBtc2dpZD0iODE1MDI1MjAwODU0NTc2ODk1MyI+Impvb25pc3R1c2VnYSBzaXNlc3RhbWlzZWdhIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RhcnRfYWN0aW9uIiBtc2dpZD0iODkzNjAzNjQ2MDg5NzM0NzcwOCI+IkFsdXN0YW1pbmUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9uZXh0X2FjdGlvbiIgbXNnaWQ9IjM3MTgyMTQzNzkxNTE0NDYwMyI+IkrDpHJnbWluZSB0b2ltaW5nIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcHNfdGl0bGUiIG1zZ2lkPSI2NDAwMzczMDM0ODcxODE2MTgyIj4iUmFrZW5kdXNlIDx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz4gc2VhZGlzdGFtaW5lIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDFfdGl0bGUiIG1zZ2lkPSIzMTQ3OTY3NjMwMjUzNDYyMzE1Ij4iTHViYWdlIDx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMV9pbnN0cnVjdGlvbiIgbXNnaWQ9IjI1Nzg2MzE5MzY2MjQ2MzcyNDEiPiJNw6Rya2lnZSBvbWEga2VlbGUgamEgc2lzZXN0YW1pc2Ugc2VhZGV0ZXMgcmFrZW5kdXMg4oCePHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPuKAnS4gU2VlIGx1YmFiIHJha2VuZHVzZSBrw6RpdGFtaXNlIHRlaWUgc2VhZG1lcy4iPC9zdHJpbmc+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc2V0dXBfc3RlcDFfZmluaXNoZWRfaW5zdHJ1Y3Rpb24gKDEwNzYxNDgyMDA0OTU3OTk0KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDFfYWN0aW9uIiBtc2dpZD0iNDM2NjUxMzUzNDk5OTkwMTcyOCI+Ikx1YmEgc2VhZGV0ZXMiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMl90aXRsZSIgbXNnaWQ9IjY4NjA3MjU0NDc5MDY2OTA1OTQiPiJNaW5nZSDDvGxlIHJha2VuZHVzZWxlIDx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMl9pbnN0cnVjdGlvbiIgbXNnaWQ9IjkxNDE0ODE5NjQ4NzAwMjMzMzYiPiJKw6RyZ21pc2VuYSB2YWxpZ2UgYWt0aWl2c2VrcyB0ZWtzdGlzaXNlc3R1c21lZXRvZGlrcyByYWtlbmR1cyDigJ48eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+4oCdLiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAyX2FjdGlvbiIgbXNnaWQ9IjE2NjAzMzAzMDcxNTk4MjQzMzciPiJWYWhldGEgc2lzZXN0dXNtZWV0b2RlaWQiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwM190aXRsZSIgbXNnaWQ9IjMxNTQ3NTcxODM2MzE0OTAyODEiPiLDlW5uaXRsZW1lLiBLw7VpayBvbiB2YWxtaXMhIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDNfaW5zdHJ1Y3Rpb24iIG1zZ2lkPSI4MDI1OTgxODI5NjA1NDI2MDAwIj4iTsO8w7xkIHNhYXRlIHJha2VuZHVzZWdhIDx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz4gc2lzZXN0YWRhIGvDtWlraWRlcyBvbWEgbGVtbWlrcmFrZW5kdXN0ZXMuIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDNfYWN0aW9uIiBtc2dpZD0iNjAwODc5Nzk3MjU2OTQyMjU5Ij4iU2VhZGlzdGEgbGlzYWtlZWxlZCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX2ZpbmlzaF9hY3Rpb24iIG1zZ2lkPSIyNzY1NTkyNDM0MDk0NjUzODkiPiJMw7VwZXRhdHVkIjwvc3RyaW5nPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNob3dfc2V0dXBfd2l6YXJkX2ljb24gKDUwMDgwMjg1OTA1OTM3MTA4MzApIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc2hvd19zZXR1cF93aXphcmRfaWNvbl9zdW1tYXJ5ICg0MTE5OTk4MzIyNTM2ODgwMjEzKSAtLT4KKyAgICA8c2tpcCAvPgogICAgIDxzdHJpbmcgbmFtZT0iYXBwX25hbWUiIG1zZ2lkPSI2MzIwMTAyNjM3NDkxMjM0NzkyIj4iU8O1bmFzdGlrdXBha2t1amEiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkaWN0aW9uYXJ5X3Byb3ZpZGVyX25hbWUiIG1zZ2lkPSIzMDI3MzE1MDQ1Mzk3MzYzMDc5Ij4iU8O1bmFzdGlrdXBha2t1amEiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkaWN0aW9uYXJ5X3NlcnZpY2VfbmFtZSIgbXNnaWQ9IjYyMzc0NzIzNTA2OTM1MTE0NDgiPiJTw7VuYXN0aWt1dGVlbnVzIjwvc3RyaW5nPgpAQCAtMjAzLDQgKzIyNCw2IEBACiAgICAgPHN0cmluZyBuYW1lPSJkaWN0X2F2YWlsYWJsZV9ub3RpZmljYXRpb25fdGl0bGUiIG1zZ2lkPSI2NTE0Mjg4NTkxOTU5MTE3Mjg4Ij4iU8O1bmFzdGlrIG9uIDx4bGlmZjpnIGlkPSJMQU5HVUFHRSI+JTEkczwveGxpZmY6Zz4ga2VlbGUgamFva3Mgc2FhZGF2YWwiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkaWN0X2F2YWlsYWJsZV9ub3RpZmljYXRpb25fZGVzY3JpcHRpb24iIG1zZ2lkPSIxMDc1MTk0MTY5NDQzMTYzNDg3Ij4iVmFqdXRhZ2Ugw7xsZXZhYXRhbWlzZWtzIGphIGFsbGFsYWFkaW1pc2VrcyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InRvYXN0X2Rvd25sb2FkaW5nX3N1Z2dlc3Rpb25zIiBtc2dpZD0iMTMxMzAyNzM1MzU4ODU2NjY2MCI+IkFsbGFsYWFkaW1pbmU6IDx4bGlmZjpnIGlkPSJMQU5HVUFHRSI+JTEkczwveGxpZmY6Zz4ga2VlbGUgc29vdml0dXNlZCBvbiB2YXJzdGkgc2FhZGF2YWwuIjwvc3RyaW5nPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHZlcnNpb25fdGV4dCAoMjcxNTM1NDIxNTU2ODQ2OTM4NSkgLS0+CisgICAgPHNraXAgLz4KIDwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvamF2YS9yZXMvdmFsdWVzLWZhL3N0cmluZ3MueG1sIGIvamF2YS9yZXMvdmFsdWVzLWZhL3N0cmluZ3MueG1sCmluZGV4IGU3ZjVjOTYuLjEwNTZhNzYgMTAwNjQ0Ci0tLSBhL2phdmEvcmVzL3ZhbHVlcy1mYS9zdHJpbmdzLnhtbAorKysgYi9qYXZhL3Jlcy92YWx1ZXMtZmEvc3RyaW5ncy54bWwKQEAgLTUzLDYgKzUzLDggQEAKICAgICA8c3RyaW5nIG5hbWU9InVzZV9kb3VibGVfc3BhY2VfcGVyaW9kX3N1bW1hcnkiIG1zZ2lkPSI2NTMyODkyMTg3MjQ3OTUyNzk5Ij4i2KjYpyDYr9mI2KjYp9ixINi22LHYqNmHINix2YjbjCDYr9qp2YXZhyDZgdin2LXZhNmHINmG2YLYt9mHINio2Kcg24zaqSDZgdin2LXZhNmHINio2LnYryDYotmGINiv2LHYrCDZhduM4oCM2LTZiNivIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYXV0b19jYXAiIG1zZ2lkPSIxNzE5NzQ2Njc0ODU0NjI4MjUyIj4i2KjYstix2q/igIzaqdix2K/ZhiDYrtmI2K/aqdin2LEg2K3YsdmI2YEiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJhdXRvX2NhcF9zdW1tYXJ5IiBtc2dpZD0iNzkzNDQ1Mjc2MTAyMjk0Njg3NCI+Itio2LLYsdqv4oCM2YbZiNuM2LPbjCDaqdmE2YXZhyDYp9mI2YQg2YfYsSDYrNmF2YTZhyI8L3N0cmluZz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBlZGl0X3BlcnNvbmFsX2RpY3Rpb25hcnkgKDM5OTY5MTAwMzg5NTI5NDA0MjApIC0tPgorICAgIDxza2lwIC8+CiAgICAgPHN0cmluZyBuYW1lPSJjb25maWd1cmVfZGljdGlvbmFyaWVzX3RpdGxlIiBtc2dpZD0iNDIzODY1MjMzODU1NjkwMjA0OSI+ItmB2LHZh9mG2q/igIzZh9in24wg2YTYutiqINin2YHYstmI2K/ZhtuMIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ibWFpbl9kaWN0aW9uYXJ5IiBtc2dpZD0iNDc5ODc2Mzc4MTgxODM2MTE2OCI+ItmB2LHZh9mG2q/igIwg2YTYutiqINin2LXZhNuMIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icHJlZnNfc2hvd19zdWdnZXN0aW9ucyIgbXNnaWQ9IjgwMjY3OTk2NjM0NDU1MzE2MzciPiLZhtmF2KfbjNi0INm+24zYtNmG2YfYp9iv2KfYqiDYqti12K3bjNitIjwvc3RyaW5nPgpAQCAtMTc1LDggKzE3NywyNyBAQAogICAgIDxzdHJpbmcgbmFtZT0icmVhZF9leHRlcm5hbF9kaWN0aW9uYXJ5X2NvbmZpcm1faW5zdGFsbF9tZXNzYWdlIiBtc2dpZD0iNjg5ODYxMDE2Mzc2ODk4MDg3MCI+Itin24zZhiDZgdin24zZhCDZiNin2YLYudin2Ysg2KjYsdin24wgPHhsaWZmOmcgaWQ9IkxPQ0FMRV9OQU1FIj4lczwveGxpZmY6Zz4g2YbYtdioINi02YjYr9ifIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZXJyb3IiIG1zZ2lkPSI4OTQwNzYzNjI0NjY4NTEzNjQ4Ij4i2K7Yt9in24zbjCDYsdmI24wg2K/Yp9ivIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYnV0dG9uX2RlZmF1bHQiIG1zZ2lkPSIzOTg4MDE3ODQwNDMxODgxNDkxIj4i2b7bjNi04oCM2YHYsdi2Ijwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibGFuZ3VhZ2Vfc2V0dGluZ3MiIG1zZ2lkPSIxNjcxMTUzMDUzMjAxODA5MDMxIj4i2LLYqNin2YYg2Ygg2YjYsdmI2K/bjCI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InNlbGVjdF9pbnB1dF9tZXRob2QiIG1zZ2lkPSI0MzAxNjAyMzc0NjA5Mjc1MDAzIj4i2KfZhtiq2K7Yp9ioINix2YjYtCDZiNix2YjYr9uMIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfd2VsY29tZV90aXRsZSIgbXNnaWQ9IjYxMTI4MjE3MDk4MzIwMzE3MTUiPiLYqNmHIDx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz4g2K7ZiNi0INii2YXYr9uM2K8iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF93ZWxjb21lX2FkZGl0aW9uYWxfZGVzY3JpcHRpb24iIG1zZ2lkPSI4MTUwMjUyMDA4NTQ1NzY4OTUzIj4i2KjYpyDZiNix2YjYr9uMINin2LTYp9ix2YfigIzYp9uMIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RhcnRfYWN0aW9uIiBtc2dpZD0iODkzNjAzNjQ2MDg5NzM0NzcwOCI+Iti02LHZiNi5INio2Ycg2qnYp9ixIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfbmV4dF9hY3Rpb24iIG1zZ2lkPSIzNzE4MjE0Mzc5MTUxNDQ2MDMiPiLZhdix2K3ZhNmHINio2LnYryI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXBzX3RpdGxlIiBtc2dpZD0iNjQwMDM3MzAzNDg3MTgxNjE4MiI+Itix2KfZh+KAjNin2YbYr9in2LLbjCA8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDFfdGl0bGUiIG1zZ2lkPSIzMTQ3OTY3NjMwMjUzNDYyMzE1Ij4i2YHYudin2YTigIzYs9in2LLbjCA8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDFfaW5zdHJ1Y3Rpb24iIG1zZ2lkPSIyNTc4NjMxOTM2NjI0NjM3MjQxIj4i2YTYt9mB2KfZiyDCqzx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz7CuyDYsdinINiv2LEg2KrZhti424zZhdin2Kog2LLYqNin2YYg2Ygg2YjYsdmI2K/bjCDYrtmI2K8g2LnZhNin2YXYqiDYqNiy2YbbjNivLiDYp9uM2YYg2qnYp9ixINmF2KzZiNiyINin2KzYsdin24wg2KLZhiDYr9ixINiv2LPYqtqv2KfZhyDYtNmF2Kcg2KfYs9iqLiI8L3N0cmluZz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzZXR1cF9zdGVwMV9maW5pc2hlZF9pbnN0cnVjdGlvbiAoMTA3NjE0ODIwMDQ5NTc5OTQpIC0tPgorICAgIDxza2lwIC8+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMV9hY3Rpb24iIG1zZ2lkPSI0MzY2NTEzNTM0OTk5OTAxNzI4Ij4i2YHYudin2YTigIzYs9in2LLbjCDYr9ixINiq2YbYuNuM2YXYp9iqIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDJfdGl0bGUiIG1zZ2lkPSI2ODYwNzI1NDQ3OTA2NjkwNTk0Ij4i2KzYp9io2KzYp9uM24wg2KjZhyA8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDJfaW5zdHJ1Y3Rpb24iIG1zZ2lkPSI5MTQxNDgxOTY0ODcwMDIzMzM2Ij4i2K/YsSDZhdix2K3ZhNmHINio2LnYr9uM2Iwgwqs8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+wrsg2LHYpyDYqNmHINi52YbZiNin2YYg2LHZiNi0INmI2LHZiNiv24wg2YbZiNi02KrYp9ixINmB2LnYp9mEINiu2YjYryDYp9mG2KrYrtin2Kgg2YbZhdin24zbjNivLiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAyX2FjdGlvbiIgbXNnaWQ9IjE2NjAzMzAzMDcxNTk4MjQzMzciPiLYqti624zbjNixINix2YjYtOKAjNmH2KfbjCDZiNix2YjYr9uMIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDNfdGl0bGUiIG1zZ2lkPSIzMTU0NzU3MTgzNjMxNDkwMjgxIj4i2KrYqNix24zaqSDZhduM4oCM2q/ZiNuM24zZhdiMINin2qnZhtmI2YYg2qnYp9mF2YTYp9mLINii2YXYp9iv2Ycg2YfYs9iq24zYryEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwM19pbnN0cnVjdGlvbiIgbXNnaWQ9IjgwMjU5ODE4Mjk2MDU0MjYwMDAiPiLYp9qp2YbZiNmGINmF24zigIzYqtmI2KfZhtuM2K8g2K/YsSDZh9mF2Ycg2KjYsdmG2KfZhdmH4oCM2YfYp9uMINiv2YTYrtmI2KfZhyDYrtmI2K8g2KjYpyA8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+INiq2KfbjNm+INqp2YbbjNivLiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAzX2FjdGlvbiIgbXNnaWQ9IjYwMDg3OTc5NzI1Njk0MjI1OSI+Itm+24zaqdix2KjZhtiv24wg2LLYqNin2YbigIzZh9in24wg2K/bjNqv2LEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9maW5pc2hfYWN0aW9uIiBtc2dpZD0iMjc2NTU5MjQzNDA5NDY1Mzg5Ij4i2KrZhdin2YUg2LTYryI8L3N0cmluZz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzaG93X3NldHVwX3dpemFyZF9pY29uICg1MDA4MDI4NTkwNTkzNzEwODMwKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNob3dfc2V0dXBfd2l6YXJkX2ljb25fc3VtbWFyeSAoNDExOTk5ODMyMjUzNjg4MDIxMykgLS0+CisgICAgPHNraXAgLz4KICAgICA8c3RyaW5nIG5hbWU9ImFwcF9uYW1lIiBtc2dpZD0iNjMyMDEwMjYzNzQ5MTIzNDc5MiI+Itin2LHYp9im2YfigIzYr9mH2YbYr9mHINmB2LHZh9mG2q8g2YTYutiqIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGljdGlvbmFyeV9wcm92aWRlcl9uYW1lIiBtc2dpZD0iMzAyNzMxNTA0NTM5NzM2MzA3OSI+Itin2LHYp9im2YfigIzYr9mH2YbYr9mHINmB2LHZh9mG2q8g2YTYutiqIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGljdGlvbmFyeV9zZXJ2aWNlX25hbWUiIG1zZ2lkPSI2MjM3NDcyMzUwNjkzNTExNDQ4Ij4i2LPYsdmI24zYsyDZgdix2YfZhtqvINmE2LrYqiI8L3N0cmluZz4KQEAgLTIwNyw0ICsyMjgsNiBAQAogICAgIDxzdHJpbmcgbmFtZT0iZGljdF9hdmFpbGFibGVfbm90aWZpY2F0aW9uX3RpdGxlIiBtc2dpZD0iNjUxNDI4ODU5MTk1OTExNzI4OCI+ItuM2qkg2YHYsdmH2YbaryDZhNi62Kog2KjYsdin24wgPHhsaWZmOmcgaWQ9IkxBTkdVQUdFIj4lMSRzPC94bGlmZjpnPiDZhdmI2KzZiNivINin2LPYqiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRpY3RfYXZhaWxhYmxlX25vdGlmaWNhdGlvbl9kZXNjcmlwdGlvbiIgbXNnaWQ9IjEwNzUxOTQxNjk0NDMxNjM0ODciPiLYqNix2KfbjCDZhdix2YjYsSDZiCDYr9in2YbZhNmI2K8g2YHYtNin2LEg2K/Zh9uM2K8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ0b2FzdF9kb3dubG9hZGluZ19zdWdnZXN0aW9ucyIgbXNnaWQ9IjEzMTMwMjczNTM1ODg1NjY2NjAiPiLYr9in2YbZhNmI2K8g2YTYutin2Kog2b7bjNi02YbZh9in2K/bjCDYqNix2KfbjCA8eGxpZmY6ZyBpZD0iTEFOR1VBR0UiPiUxJHM8L3hsaWZmOmc+INio2Ycg2LLZiNiv24wg2LTYsdmI2Lkg2YXbjOKAjNi02YjYry4iPC9zdHJpbmc+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgdmVyc2lvbl90ZXh0ICgyNzE1MzU0MjE1NTY4NDY5Mzg1KSAtLT4KKyAgICA8c2tpcCAvPgogPC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9qYXZhL3Jlcy92YWx1ZXMtZmkvc3RyaW5ncy54bWwgYi9qYXZhL3Jlcy92YWx1ZXMtZmkvc3RyaW5ncy54bWwKaW5kZXggNjQ5OTEzNi4uZDQzMWM2MCAxMDA2NDQKLS0tIGEvamF2YS9yZXMvdmFsdWVzLWZpL3N0cmluZ3MueG1sCisrKyBiL2phdmEvcmVzL3ZhbHVlcy1maS9zdHJpbmdzLnhtbApAQCAtNTMsNiArNTMsOCBAQAogICAgIDxzdHJpbmcgbmFtZT0idXNlX2RvdWJsZV9zcGFjZV9wZXJpb2Rfc3VtbWFyeSIgbXNnaWQ9IjY1MzI4OTIxODcyNDc5NTI3OTkiPiJWw6RsaWx5w7ZubmluIGtha3NvaXNuYXBhdXR1cyBsaXPDpMOkIHRla3N0aWluIHBpc3RlZW4gamEgdsOkbGlsecO2bm5pbiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImF1dG9fY2FwIiBtc2dpZD0iMTcxOTc0NjY3NDg1NDYyODI1MiI+IkF1dG9tYWF0dGlzZXQgaXNvdCBraXJqYWltZXQiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJhdXRvX2NhcF9zdW1tYXJ5IiBtc2dpZD0iNzkzNDQ1Mjc2MTAyMjk0Njg3NCI+IktpcmpvaXRhIGpva2Fpc2VuIGxhdXNlZW4gZW5zaW1tw6RpbmVuIHNhbmEgaXNvbGxhIGFsa3VraXJqYWltZWxsYSI8L3N0cmluZz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBlZGl0X3BlcnNvbmFsX2RpY3Rpb25hcnkgKDM5OTY5MTAwMzg5NTI5NDA0MjApIC0tPgorICAgIDxza2lwIC8+CiAgICAgPHN0cmluZyBuYW1lPSJjb25maWd1cmVfZGljdGlvbmFyaWVzX3RpdGxlIiBtc2dpZD0iNDIzODY1MjMzODU1NjkwMjA0OSI+Ikxpc8Okc2FuYWtpcmphdCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im1haW5fZGljdGlvbmFyeSIgbXNnaWQ9IjQ3OTg3NjM3ODE4MTgzNjExNjgiPiJQw6TDpHNhbmFraXJqYSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InByZWZzX3Nob3dfc3VnZ2VzdGlvbnMiIG1zZ2lkPSI4MDI2Nzk5NjYzNDQ1NTMxNjM3Ij4iTsOkeXTDpCBrb3JqYXVzZWhkb3R1a3NldCI8L3N0cmluZz4KQEAgLTE3MSw4ICsxNzMsMjcgQEAKICAgICA8c3RyaW5nIG5hbWU9InJlYWRfZXh0ZXJuYWxfZGljdGlvbmFyeV9jb25maXJtX2luc3RhbGxfbWVzc2FnZSIgbXNnaWQ9IjY4OTg2MTAxNjM3Njg5ODA4NzAiPiJIYWx1YXRrbyBhc2VudGFhIHTDpG3DpCB0aWVkb3N0b24ga2llbGVsbGUgPHhsaWZmOmcgaWQ9IkxPQ0FMRV9OQU1FIj4lczwveGxpZmY6Zz4/Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZXJyb3IiIG1zZ2lkPSI4OTQwNzYzNjI0NjY4NTEzNjQ4Ij4iVGFwYWh0dWkgdmlyaGUiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJidXR0b25fZGVmYXVsdCIgbXNnaWQ9IjM5ODgwMTc4NDA0MzE4ODE0OTEiPiJPbGV0dXNhcnZvdCI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Imxhbmd1YWdlX3NldHRpbmdzIiBtc2dpZD0iMTY3MTE1MzA1MzIwMTgwOTAzMSI+IktpZWxpIGphIHN5w7Z0dMO2dGFwYSI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InNlbGVjdF9pbnB1dF9tZXRob2QiIG1zZ2lkPSI0MzAxNjAyMzc0NjA5Mjc1MDAzIj4iVmFsaXRzZSBzecO2dHTDtnRhcGEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF93ZWxjb21lX3RpdGxlIiBtc2dpZD0iNjExMjgyMTcwOTgzMjAzMTcxNSI+IlRlcnZldHVsb2Ega8OkeXR0w6Rtw6TDpG4gc292ZWxsdXN0YSA8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfd2VsY29tZV9hZGRpdGlvbmFsX2Rlc2NyaXB0aW9uIiBtc2dpZD0iODE1MDI1MjAwODU0NTc2ODk1MyI+InNla8OkIHBpaXJ0b2tpcmpvaXR1cyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0YXJ0X2FjdGlvbiIgbXNnaWQ9Ijg5MzYwMzY0NjA4OTczNDc3MDgiPiJBbG9pdGEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9uZXh0X2FjdGlvbiIgbXNnaWQ9IjM3MTgyMTQzNzkxNTE0NDYwMyI+IlNldXJhYXZhIHZhaWhlIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcHNfdGl0bGUiIG1zZ2lkPSI2NDAwMzczMDM0ODcxODE2MTgyIj4iU292ZWxsdWtzZW4gPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPiBhc2V0dWtzZXQiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMV90aXRsZSIgbXNnaWQ9IjMxNDc5Njc2MzAyNTM0NjIzMTUiPiJPdGEgPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPiBrw6R5dHTDtsO2biI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAxX2luc3RydWN0aW9uIiBtc2dpZD0iMjU3ODYzMTkzNjYyNDYzNzI0MSI+IlZhbGl0c2UgPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPiBraWVsaS0gamEgc3nDtnR0w7Z0YXBhLWFzZXR1a3Npc3NhLCBtaWvDpCB2YWx0dXV0dGFhIHNvdmVsLiBsYWl0dGVlbGxlc2kuIjwvc3RyaW5nPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNldHVwX3N0ZXAxX2ZpbmlzaGVkX2luc3RydWN0aW9uICgxMDc2MTQ4MjAwNDk1Nzk5NCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAxX2FjdGlvbiIgbXNnaWQ9IjQzNjY1MTM1MzQ5OTk5MDE3MjgiPiJPdGEga8OkeXR0w7bDtm4gYXNldHVrc2lzc2EiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMl90aXRsZSIgbXNnaWQ9IjY4NjA3MjU0NDc5MDY2OTA1OTQiPiJTaWlycnkgc292ZWxsdWtzZWVuIDx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMl9pbnN0cnVjdGlvbiIgbXNnaWQ9IjkxNDE0ODE5NjQ4NzAwMjMzMzYiPiJWYWxpdHNlIDx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz4ga8OkeXTDtnNzw6Qgb2xldmFrc2kgdGVrc3RpbnN5w7Z0dMO2dGF2YWtzaS4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMl9hY3Rpb24iIG1zZ2lkPSIxNjYwMzMwMzA3MTU5ODI0MzM3Ij4iVmFpaGRhIHN5w7Z0dMO2dGFwYWEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwM190aXRsZSIgbXNnaWQ9IjMxNTQ3NTcxODM2MzE0OTAyODEiPiJPbm5la3NpIG9sa29vbiwgdmFsbWlzdGEgdHVsaSEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwM19pbnN0cnVjdGlvbiIgbXNnaWQ9IjgwMjU5ODE4Mjk2MDU0MjYwMDAiPiJOeXQgdm9pdCBraXJqb2l0dGFhIGthaWtraWluIGxlbXBpc292ZWxsdWtzaWlzaSBzb3ZlbGx1a3NlbiA8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+IGF2dWxsYS4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwM19hY3Rpb24iIG1zZ2lkPSI2MDA4Nzk3OTcyNTY5NDIyNTkiPiJNw6TDpHJpdMOkIGxpc8Okw6Qga2llbGnDpCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX2ZpbmlzaF9hY3Rpb24iIG1zZ2lkPSIyNzY1NTkyNDM0MDk0NjUzODkiPiJWYWxtaXMiPC9zdHJpbmc+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc2hvd19zZXR1cF93aXphcmRfaWNvbiAoNTAwODAyODU5MDU5MzcxMDgzMCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzaG93X3NldHVwX3dpemFyZF9pY29uX3N1bW1hcnkgKDQxMTk5OTgzMjI1MzY4ODAyMTMpIC0tPgorICAgIDxza2lwIC8+CiAgICAgPHN0cmluZyBuYW1lPSJhcHBfbmFtZSIgbXNnaWQ9IjYzMjAxMDI2Mzc0OTEyMzQ3OTIiPiJTYW5ha2lyamFuIHRhcmpvYWphIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGljdGlvbmFyeV9wcm92aWRlcl9uYW1lIiBtc2dpZD0iMzAyNzMxNTA0NTM5NzM2MzA3OSI+IlNhbmFraXJqYW4gdGFyam9hamEiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkaWN0aW9uYXJ5X3NlcnZpY2VfbmFtZSIgbXNnaWQ9IjYyMzc0NzIzNTA2OTM1MTE0NDgiPiJTYW5ha2lyamFwYWx2ZWx1Ijwvc3RyaW5nPgpAQCAtMjAzLDQgKzIyNCw2IEBACiAgICAgPHN0cmluZyBuYW1lPSJkaWN0X2F2YWlsYWJsZV9ub3RpZmljYXRpb25fdGl0bGUiIG1zZ2lkPSI2NTE0Mjg4NTkxOTU5MTE3Mjg4Ij4iS2llbGVuIDx4bGlmZjpnIGlkPSJMQU5HVUFHRSI+JTEkczwveGxpZmY6Zz4gc2FuYWtpcmphIG9uIHNhYXRhdmlsbGEiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkaWN0X2F2YWlsYWJsZV9ub3RpZmljYXRpb25fZGVzY3JpcHRpb24iIG1zZ2lkPSIxMDc1MTk0MTY5NDQzMTYzNDg3Ij4iUGFpbmEgdMOkdMOkLCBqb3MgaGFsdWF0IHRhcmthc3RlbGxhIGtvaGRldHRhIHRhaSBsYWRhdGEgc2VuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idG9hc3RfZG93bmxvYWRpbmdfc3VnZ2VzdGlvbnMiIG1zZ2lkPSIxMzEzMDI3MzUzNTg4NTY2NjYwIj4iTGFkYXRhYW46IHBpYW4gZWhkb3R1a3NpYSBuw6R5dGV0w6TDpG4ga2llbGVsbMOkIDx4bGlmZjpnIGlkPSJMQU5HVUFHRSI+JTEkczwveGxpZmY6Zz4uIjwvc3RyaW5nPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHZlcnNpb25fdGV4dCAoMjcxNTM1NDIxNTU2ODQ2OTM4NSkgLS0+CisgICAgPHNraXAgLz4KIDwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvamF2YS9yZXMvdmFsdWVzLWZyL3N0cmluZ3MueG1sIGIvamF2YS9yZXMvdmFsdWVzLWZyL3N0cmluZ3MueG1sCmluZGV4IDRjNmFlNzAuLjViYzFmN2EgMTAwNjQ0Ci0tLSBhL2phdmEvcmVzL3ZhbHVlcy1mci9zdHJpbmdzLnhtbAorKysgYi9qYXZhL3Jlcy92YWx1ZXMtZnIvc3RyaW5ncy54bWwKQEAgLTUzLDkgKzUzLDExIEBACiAgICAgPHN0cmluZyBuYW1lPSJ1c2VfZG91YmxlX3NwYWNlX3BlcmlvZF9zdW1tYXJ5IiBtc2dpZD0iNjUzMjg5MjE4NzI0Nzk1Mjc5OSI+IkFwcHV5ZXogZGV1eCBmb2lzIHN1ciBsYSBiYXJyZSBkXCdlc3BhY2UgcG91ciBpbnPDqXJlciB1biBwb2ludCBldCB1biBlc3BhY2UuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYXV0b19jYXAiIG1zZ2lkPSIxNzE5NzQ2Njc0ODU0NjI4MjUyIj4iTWFqdXNjdWxlcyBhdXRvIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYXV0b19jYXBfc3VtbWFyeSIgbXNnaWQ9Ijc5MzQ0NTI3NjEwMjI5NDY4NzQiPiJNYWp1c2N1bGUgYXUgcHJlbWllciBtb3QgZGUgY2hhcXVlIHBocmFzZSI8L3N0cmluZz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBlZGl0X3BlcnNvbmFsX2RpY3Rpb25hcnkgKDM5OTY5MTAwMzg5NTI5NDA0MjApIC0tPgorICAgIDxza2lwIC8+CiAgICAgPHN0cmluZyBuYW1lPSJjb25maWd1cmVfZGljdGlvbmFyaWVzX3RpdGxlIiBtc2dpZD0iNDIzODY1MjMzODU1NjkwMjA0OSI+IkRpY3Rpb25uYWlyZXMgY29tcGzDqW1lbnRhaXJlcyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im1haW5fZGljdGlvbmFyeSIgbXNnaWQ9IjQ3OTg3NjM3ODE4MTgzNjExNjgiPiJEaWN0aW9ubmFpcmUgcHJpbmNpcGFsIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0icHJlZnNfc2hvd19zdWdnZXN0aW9ucyIgbXNnaWQ9IjgwMjY3OTk2NjM0NDU1MzE2MzciPiJTdWdnZXN0aW9ucyBkZSBjb3JyZWN0aW9uIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0icHJlZnNfc2hvd19zdWdnZXN0aW9ucyIgbXNnaWQ9IjgwMjY3OTk2NjM0NDU1MzE2MzciPiJBZmZpY2hlciBsZXMgc3VnZ2VzdGlvbnMgZGUgY29ycmVjdGlvbiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InByZWZzX3Nob3dfc3VnZ2VzdGlvbnNfc3VtbWFyeSIgbXNnaWQ9IjE1ODMxMzIyNzk0OTg1MDI4MjUiPiJBZmZpY2hlciBsZXMgc3VnZ2VzdGlvbnMgZGUgdGVybWUgbG9ycyBkZSBsYSBzYWlzaWUiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwcmVmc19zdWdnZXN0aW9uX3Zpc2liaWxpdHlfc2hvd19uYW1lIiBtc2dpZD0iMzIxOTkxNjU5NDA2NzU1MTMwMyI+IlRvdWpvdXJzIGFmZmljaGVyIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icHJlZnNfc3VnZ2VzdGlvbl92aXNpYmlsaXR5X3Nob3dfb25seV9wb3J0cmFpdF9uYW1lIiBtc2dpZD0iMzg1OTc4Mzc2NzQzNTIzOTExOCI+IkFmZmljaGVyIGVuIG1vZGUgUG9ydHJhaXQiPC9zdHJpbmc+CkBAIC0xNzEsOCArMTczLDI3IEBACiAgICAgPHN0cmluZyBuYW1lPSJyZWFkX2V4dGVybmFsX2RpY3Rpb25hcnlfY29uZmlybV9pbnN0YWxsX21lc3NhZ2UiIG1zZ2lkPSI2ODk4NjEwMTYzNzY4OTgwODcwIj4iSW5zdGFsbGVyIGNlIGZpY2hpZXIgcG91ciBsYSBsYW5ndWUgXCI8eGxpZmY6ZyBpZD0iTE9DQUxFX05BTUUiPiVzPC94bGlmZjpnPlwiwqA/Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZXJyb3IiIG1zZ2lkPSI4OTQwNzYzNjI0NjY4NTEzNjQ4Ij4iVW5lIGVycmV1ciBzXCdlc3QgcHJvZHVpdGUiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJidXR0b25fZGVmYXVsdCIgbXNnaWQ9IjM5ODgwMTc4NDA0MzE4ODE0OTEiPiJQYXIgZMOpZmF1dCI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Imxhbmd1YWdlX3NldHRpbmdzIiBtc2dpZD0iMTY3MTE1MzA1MzIwMTgwOTAzMSI+Ikxhbmd1ZSBldCBzYWlzaWUiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJzZWxlY3RfaW5wdXRfbWV0aG9kIiBtc2dpZD0iNDMwMTYwMjM3NDYwOTI3NTAwMyI+IlPDqWxlY3Rpb25uZXogbGUgbW9kZSBkZSBzYWlzaWUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF93ZWxjb21lX3RpdGxlIiBtc2dpZD0iNjExMjgyMTcwOTgzMjAzMTcxNSI+IkJpZW52ZW51ZSBkYW5zIDx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF93ZWxjb21lX2FkZGl0aW9uYWxfZGVzY3JpcHRpb24iIG1zZ2lkPSI4MTUwMjUyMDA4NTQ1NzY4OTUzIj4iYXZlYyBsYSBzYWlzaWUgZ2VzdHVlbGxlIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RhcnRfYWN0aW9uIiBtc2dpZD0iODkzNjAzNjQ2MDg5NzM0NzcwOCI+IkNvbW1lbmNlciI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX25leHRfYWN0aW9uIiBtc2dpZD0iMzcxODIxNDM3OTE1MTQ0NjAzIj4iw4l0YXBlIHN1aXZhbnRlIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcHNfdGl0bGUiIG1zZ2lkPSI2NDAwMzczMDM0ODcxODE2MTgyIj4iQ29uZmlndXJlciA8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDFfdGl0bGUiIG1zZ2lkPSIzMTQ3OTY3NjMwMjUzNDYyMzE1Ij4iQWN0aXZlciA8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDFfaW5zdHJ1Y3Rpb24iIG1zZ2lkPSIyNTc4NjMxOTM2NjI0NjM3MjQxIj4iU291cyBcIkxhbmd1ZSBldCBzYWlzaWVcIiwgY29jaGV6IFwiPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPlwiIHBvdXIgYXV0b3Jpc2VyIHNvbiBleMOpY3V0aW9uIHN1ciBsXCdhcHBhcmVpbC4iPC9zdHJpbmc+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc2V0dXBfc3RlcDFfZmluaXNoZWRfaW5zdHJ1Y3Rpb24gKDEwNzYxNDgyMDA0OTU3OTk0KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDFfYWN0aW9uIiBtc2dpZD0iNDM2NjUxMzUzNDk5OTkwMTcyOCI+IkFjdGl2ZXIgbGUgY2xhdmllciBkYW5zIGxlcyBwYXJhbcOodHJlcyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAyX3RpdGxlIiBtc2dpZD0iNjg2MDcyNTQ0NzkwNjY5MDU5NCI+IkJhc2N1bGVyIHZlcnMgPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAyX2luc3RydWN0aW9uIiBtc2dpZD0iOTE0MTQ4MTk2NDg3MDAyMzMzNiI+IlPDqWxlY3Rpb25uZXogZW5zdWl0ZSBcIjx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz5cIiBjb21tZSBtb2RlIGRlIHNhaXNpZSBhY3RpZi4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMl9hY3Rpb24iIG1zZ2lkPSIxNjYwMzMwMzA3MTU5ODI0MzM3Ij4iQ2hhbmdlciBkZSBtb2RlIGRlIHNhaXNpZSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAzX3RpdGxlIiBtc2dpZD0iMzE1NDc1NzE4MzYzMTQ5MDI4MSI+IkbDqWxpY2l0YXRpb25zLCBsXCdvcMOpcmF0aW9uIGVzdCB0ZXJtaW7DqWUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwM19pbnN0cnVjdGlvbiIgbXNnaWQ9IjgwMjU5ODE4Mjk2MDU0MjYwMDAiPiJBdmVjIDx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz4sIHZvdXMgcG91dmV6IHNhaXNpciBkdSB0ZXh0ZSBkYW5zIHRvdXRlcyB2b3MgYXBwbGljYXRpb25zIHByw6lmw6lyw6llcy4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwM19hY3Rpb24iIG1zZ2lkPSI2MDA4Nzk3OTcyNTY5NDIyNTkiPiJDb25maWd1cmVyIGRlcyBsYW5ndWVzIHN1cHBsw6ltZW50YWlyZXMiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9maW5pc2hfYWN0aW9uIiBtc2dpZD0iMjc2NTU5MjQzNDA5NDY1Mzg5Ij4iT0siPC9zdHJpbmc+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc2hvd19zZXR1cF93aXphcmRfaWNvbiAoNTAwODAyODU5MDU5MzcxMDgzMCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzaG93X3NldHVwX3dpemFyZF9pY29uX3N1bW1hcnkgKDQxMTk5OTgzMjI1MzY4ODAyMTMpIC0tPgorICAgIDxza2lwIC8+CiAgICAgPHN0cmluZyBuYW1lPSJhcHBfbmFtZSIgbXNnaWQ9IjYzMjAxMDI2Mzc0OTEyMzQ3OTIiPiJGb3Vybmlzc2V1ciBkZSBkaWN0aW9ubmFpcmVzIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGljdGlvbmFyeV9wcm92aWRlcl9uYW1lIiBtc2dpZD0iMzAyNzMxNTA0NTM5NzM2MzA3OSI+IkZvdXJuaXNzZXVyIGRlIGRpY3Rpb25uYWlyZXMiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkaWN0aW9uYXJ5X3NlcnZpY2VfbmFtZSIgbXNnaWQ9IjYyMzc0NzIzNTA2OTM1MTE0NDgiPiJTZXJ2aWNlIGRlIGRpY3Rpb25uYWlyZXMiPC9zdHJpbmc+CkBAIC0yMDMsNCArMjI0LDYgQEAKICAgICA8c3RyaW5nIG5hbWU9ImRpY3RfYXZhaWxhYmxlX25vdGlmaWNhdGlvbl90aXRsZSIgbXNnaWQ9IjY1MTQyODg1OTE5NTkxMTcyODgiPiJVbiBkaWN0aW9ubmFpcmUgZXN0IGRpc3BvbmlibGUgZW4gPHhsaWZmOmcgaWQ9IkxBTkdVQUdFIj4lMSRzPC94bGlmZjpnPiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRpY3RfYXZhaWxhYmxlX25vdGlmaWNhdGlvbl9kZXNjcmlwdGlvbiIgbXNnaWQ9IjEwNzUxOTQxNjk0NDMxNjM0ODciPiJBcHB1eWV6IGljaSBwb3VyIGNvbnN1bHRlciBldCB0w6lsw6ljaGFyZ2VyIGxlIGRpY3Rpb25uYWlyZS4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ0b2FzdF9kb3dubG9hZGluZ19zdWdnZXN0aW9ucyIgbXNnaWQ9IjEzMTMwMjczNTM1ODg1NjY2NjAiPiJFbiBjb3VycyBkZSB0w6lsw6ljaGFyZ2VtZW50LiBEZXMgc3VnZ2VzdGlvbnMgcG91ciBsYSBsYW5ndWUgc3VpdmFudGUgc2Vyb250IGJpZW50w7R0IGRpc3BvbmlibGVzwqA6IDx4bGlmZjpnIGlkPSJMQU5HVUFHRSI+JTEkczwveGxpZmY6Zz4uIjwvc3RyaW5nPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHZlcnNpb25fdGV4dCAoMjcxNTM1NDIxNTU2ODQ2OTM4NSkgLS0+CisgICAgPHNraXAgLz4KIDwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvamF2YS9yZXMvdmFsdWVzLWgxMjAwZHAtcG9ydC9zZXR1cC1kaW1lbnMtbGFyZ2UtdGFibGV0LXBvcnQueG1sIGIvamF2YS9yZXMvdmFsdWVzLWgxMjAwZHAtcG9ydC9zZXR1cC1kaW1lbnMtbGFyZ2UtdGFibGV0LXBvcnQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFkNjFjMWEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL3Jlcy92YWx1ZXMtaDEyMDBkcC1wb3J0L3NldHVwLWRpbWVucy1sYXJnZS10YWJsZXQtcG9ydC54bWwKQEAgLTAsMCArMSw0MCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzwhLS0gQ29weXJpZ2h0IChDKSAyMDEzIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKworICAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAgICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKworICAgICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorCisgICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAgICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAgICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAgICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCistLT4KKworPHJlc291cmNlcyB4bWxuczphbmRyb2lkPSJodHRwOi8vc2NoZW1hcy5hbmRyb2lkLmNvbS9hcGsvcmVzL2FuZHJvaWQiPgorICAgIDwhLS0gU2V0dXAgd2l6YXJkIGRpbWVuc2lvbnMgZm9yIGxhcmdlLXRhYmxldC9wb3J0cmFpdC4gLS0+CisgICAgPGRpbWVuIG5hbWU9InNldHVwX3RpdGxlX3RleHRfc2l6ZSI+NzJzcDwvZGltZW4+CisgICAgPGRpbWVuIG5hbWU9InNldHVwX3dlbGNvbWVfZGVzY3JpcHRpb25fdGV4dF9zaXplIj4zNnNwPC9kaW1lbj4KKyAgICA8ZGltZW4gbmFtZT0ic2V0dXBfc3RlcF9idWxsZXRfdGV4dF9zaXplIj4yNHNwPC9kaW1lbj4KKyAgICA8ZGltZW4gbmFtZT0ic2V0dXBfc3RlcF90cmlhbmdsZV9pbmRpY2F0b3JfaGVpZ2h0Ij4yNGRwPC9kaW1lbj4KKyAgICA8ZGltZW4gbmFtZT0ic2V0dXBfc3RlcF9pbmRpY2F0b3JfaGVpZ2h0Ij4yNGRwPC9kaW1lbj4KKyAgICA8ZGltZW4gbmFtZT0ic2V0dXBfc3RlcF90aXRsZV90ZXh0X3NpemUiPjI0c3A8L2RpbWVuPgorICAgIDxkaW1lbiBuYW1lPSJzZXR1cF9zdGVwX2luc3RydWN0aW9uX3RleHRfc2l6ZSI+MThzcDwvZGltZW4+CisgICAgPGRpbWVuIG5hbWU9InNldHVwX3N0ZXBfYWN0aW9uX3RleHRfc2l6ZSI+MjBzcDwvZGltZW4+CisgICAgPGRpbWVuIG5hbWU9InNldHVwX3ZlcnRpY2FsX3BhZGRpbmciPjk2ZHA8L2RpbWVuPgorICAgIDxkaW1lbiBuYW1lPSJzZXR1cF9ob3Jpem9udGFsX3BhZGRpbmciPjE0NGRwPC9kaW1lbj4KKyAgICA8ZGltZW4gbmFtZT0ic2V0dXBfc3RlcF9hY3Rpb25faGVpZ2h0Ij40OGRwPC9kaW1lbj4KKyAgICA8ZGltZW4gbmFtZT0ic2V0dXBfc3RlcF9ob3Jpem9udGFsX3BhZGRpbmciPjI0ZHA8L2RpbWVuPgorICAgIDxkaW1lbiBuYW1lPSJzZXR1cF9zdGVwX2hvcml6b250YWxfcGFkZGluZ19oYWxmIj4xMmRwPC9kaW1lbj4KKyAgICA8ZGltZW4gbmFtZT0ic2V0dXBfc3RlcF92ZXJ0aWNhbF9wYWRkaW5nIj4xNmRwPC9kaW1lbj4KKyAgICA8ZGltZW4gbmFtZT0ic2V0dXBfc3RlcF9ob3Jpem9udGFsX2xpbmVfaGVpZ2h0Ij4yZHA8L2RpbWVuPgorICAgIDxpbnRlZ2VyIG5hbWU9InNldHVwX3RpdGxlX3dlaWdodF9pbl9zY3JlZW4iPjQwPC9pbnRlZ2VyPgorICAgIDxpbnRlZ2VyIG5hbWU9InNldHVwX2JvZHlfd2VpZ2h0X2luX3NjcmVlbiI+NjA8L2ludGVnZXI+CisgICAgPGRpbWVuIG5hbWU9InNldHVwX3dlbGNvbWVfdmlkZW9fdmVydGljYWxfbWFyZ2luIj4yNGRwPC9kaW1lbj4KKyAgICA8aW50ZWdlciBuYW1lPSJzZXR1cF93ZWxjb21lX3ZpZGVvX3dlaWdodF9pbl9zY3JlZW4iPjUwPC9pbnRlZ2VyPgorICAgIDxpbnRlZ2VyIG5hbWU9InNldHVwX3dlbGNvbWVfdmlkZW9fbGVmdF9wYWRkaW5nX3dlaWdodF9pbl9zY3JlZW4iPjI1PC9pbnRlZ2VyPgorICAgIDxpbnRlZ2VyIG5hbWU9InNldHVwX3dlbGNvbWVfdmlkZW9fcmlnaHRfcGFkZGluZ193ZWlnaHRfaW5fc2NyZWVuIj4yNTwvaW50ZWdlcj4KKzwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvamF2YS9yZXMvdmFsdWVzLWgzMzBkcC1sYW5kL3NldHVwLWRpbWVucy1sYXJnZS1waG9uZS1sYW5kLnhtbCBiL2phdmEvcmVzL3ZhbHVlcy1oMzMwZHAtbGFuZC9zZXR1cC1kaW1lbnMtbGFyZ2UtcGhvbmUtbGFuZC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjlhOGE3YQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvcmVzL3ZhbHVlcy1oMzMwZHAtbGFuZC9zZXR1cC1kaW1lbnMtbGFyZ2UtcGhvbmUtbGFuZC54bWwKQEAgLTAsMCArMSw0MCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzwhLS0gQ29weXJpZ2h0IChDKSAyMDEzIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKworICAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAgICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKworICAgICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorCisgICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAgICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAgICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAgICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCistLT4KKworPHJlc291cmNlcyB4bWxuczphbmRyb2lkPSJodHRwOi8vc2NoZW1hcy5hbmRyb2lkLmNvbS9hcGsvcmVzL2FuZHJvaWQiPgorICAgIDwhLS0gU2V0dXAgd2l6YXJkIGRpbWVuc2lvbnMgZm9yIGxhcmdlLXBob25lL2xhbmRzY2FwZS4gLS0+CisgICAgPGRpbWVuIG5hbWU9InNldHVwX3RpdGxlX3RleHRfc2l6ZSI+NDJzcDwvZGltZW4+CisgICAgPGRpbWVuIG5hbWU9InNldHVwX3dlbGNvbWVfZGVzY3JpcHRpb25fdGV4dF9zaXplIj4yNHNwPC9kaW1lbj4KKyAgICA8ZGltZW4gbmFtZT0ic2V0dXBfc3RlcF9idWxsZXRfdGV4dF9zaXplIj4yMnNwPC9kaW1lbj4KKyAgICA8ZGltZW4gbmFtZT0ic2V0dXBfc3RlcF90cmlhbmdsZV9pbmRpY2F0b3JfaGVpZ2h0Ij4yNGRwPC9kaW1lbj4KKyAgICA8ZGltZW4gbmFtZT0ic2V0dXBfc3RlcF9pbmRpY2F0b3JfaGVpZ2h0Ij4yNGRwPC9kaW1lbj4KKyAgICA8ZGltZW4gbmFtZT0ic2V0dXBfc3RlcF90aXRsZV90ZXh0X3NpemUiPjIyc3A8L2RpbWVuPgorICAgIDxkaW1lbiBuYW1lPSJzZXR1cF9zdGVwX2luc3RydWN0aW9uX3RleHRfc2l6ZSI+MTRzcDwvZGltZW4+CisgICAgPGRpbWVuIG5hbWU9InNldHVwX3N0ZXBfYWN0aW9uX3RleHRfc2l6ZSI+MThzcDwvZGltZW4+CisgICAgPGRpbWVuIG5hbWU9InNldHVwX3ZlcnRpY2FsX3BhZGRpbmciPjE2ZHA8L2RpbWVuPgorICAgIDxkaW1lbiBuYW1lPSJzZXR1cF9ob3Jpem9udGFsX3BhZGRpbmciPjE2ZHA8L2RpbWVuPgorICAgIDxkaW1lbiBuYW1lPSJzZXR1cF9zdGVwX2FjdGlvbl9oZWlnaHQiPjQ4ZHA8L2RpbWVuPgorICAgIDxkaW1lbiBuYW1lPSJzZXR1cF9zdGVwX2hvcml6b250YWxfcGFkZGluZyI+MjRkcDwvZGltZW4+CisgICAgPGRpbWVuIG5hbWU9InNldHVwX3N0ZXBfaG9yaXpvbnRhbF9wYWRkaW5nX2hhbGYiPjEyZHA8L2RpbWVuPgorICAgIDxkaW1lbiBuYW1lPSJzZXR1cF9zdGVwX3ZlcnRpY2FsX3BhZGRpbmciPjE2ZHA8L2RpbWVuPgorICAgIDxkaW1lbiBuYW1lPSJzZXR1cF9zdGVwX2hvcml6b250YWxfbGluZV9oZWlnaHQiPjJkcDwvZGltZW4+CisgICAgPGludGVnZXIgbmFtZT0ic2V0dXBfdGl0bGVfd2VpZ2h0X2luX3NjcmVlbiI+NDA8L2ludGVnZXI+CisgICAgPGludGVnZXIgbmFtZT0ic2V0dXBfYm9keV93ZWlnaHRfaW5fc2NyZWVuIj42MDwvaW50ZWdlcj4KKyAgICA8ZGltZW4gbmFtZT0ic2V0dXBfd2VsY29tZV92aWRlb192ZXJ0aWNhbF9tYXJnaW4iPjI0ZHA8L2RpbWVuPgorICAgIDxpbnRlZ2VyIG5hbWU9InNldHVwX3dlbGNvbWVfdmlkZW9fd2VpZ2h0X2luX3NjcmVlbiI+ODA8L2ludGVnZXI+CisgICAgPGludGVnZXIgbmFtZT0ic2V0dXBfd2VsY29tZV92aWRlb19sZWZ0X3BhZGRpbmdfd2VpZ2h0X2luX3NjcmVlbiI+MTA8L2ludGVnZXI+CisgICAgPGludGVnZXIgbmFtZT0ic2V0dXBfd2VsY29tZV92aWRlb19yaWdodF9wYWRkaW5nX3dlaWdodF9pbl9zY3JlZW4iPjEwPC9pbnRlZ2VyPgorPC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9qYXZhL3Jlcy92YWx1ZXMtaDUyMGRwLWxhbmQvc2V0dXAtZGltZW5zLXNtYWxsLXRhYmxldC1sYW5kLnhtbCBiL2phdmEvcmVzL3ZhbHVlcy1oNTIwZHAtbGFuZC9zZXR1cC1kaW1lbnMtc21hbGwtdGFibGV0LWxhbmQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZhMTRkNTkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL3Jlcy92YWx1ZXMtaDUyMGRwLWxhbmQvc2V0dXAtZGltZW5zLXNtYWxsLXRhYmxldC1sYW5kLnhtbApAQCAtMCwwICsxLDQwIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPCEtLSBDb3B5cmlnaHQgKEMpIDIwMTMgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorCisgICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorCisgICAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisKKyAgICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAgICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy0tPgorCis8cmVzb3VyY2VzIHhtbG5zOmFuZHJvaWQ9Imh0dHA6Ly9zY2hlbWFzLmFuZHJvaWQuY29tL2Fway9yZXMvYW5kcm9pZCI+CisgICAgPCEtLSBTZXR1cCB3aXphcmQgZGltZW5zaW9ucyBmb3Igc21hbGwtdGFibGV0L2xhbmRzY2FwZS4gLS0+CisgICAgPGRpbWVuIG5hbWU9InNldHVwX3RpdGxlX3RleHRfc2l6ZSI+NTZzcDwvZGltZW4+CisgICAgPGRpbWVuIG5hbWU9InNldHVwX3dlbGNvbWVfZGVzY3JpcHRpb25fdGV4dF9zaXplIj4yOHNwPC9kaW1lbj4KKyAgICA8ZGltZW4gbmFtZT0ic2V0dXBfc3RlcF9idWxsZXRfdGV4dF9zaXplIj4yNHNwPC9kaW1lbj4KKyAgICA8ZGltZW4gbmFtZT0ic2V0dXBfc3RlcF90cmlhbmdsZV9pbmRpY2F0b3JfaGVpZ2h0Ij4yNGRwPC9kaW1lbj4KKyAgICA8ZGltZW4gbmFtZT0ic2V0dXBfc3RlcF9pbmRpY2F0b3JfaGVpZ2h0Ij4yNGRwPC9kaW1lbj4KKyAgICA8ZGltZW4gbmFtZT0ic2V0dXBfc3RlcF90aXRsZV90ZXh0X3NpemUiPjI0c3A8L2RpbWVuPgorICAgIDxkaW1lbiBuYW1lPSJzZXR1cF9zdGVwX2luc3RydWN0aW9uX3RleHRfc2l6ZSI+MThzcDwvZGltZW4+CisgICAgPGRpbWVuIG5hbWU9InNldHVwX3N0ZXBfYWN0aW9uX3RleHRfc2l6ZSI+MjBzcDwvZGltZW4+CisgICAgPGRpbWVuIG5hbWU9InNldHVwX3ZlcnRpY2FsX3BhZGRpbmciPjMyZHA8L2RpbWVuPgorICAgIDxkaW1lbiBuYW1lPSJzZXR1cF9ob3Jpem9udGFsX3BhZGRpbmciPjk2ZHA8L2RpbWVuPgorICAgIDxkaW1lbiBuYW1lPSJzZXR1cF9zdGVwX2FjdGlvbl9oZWlnaHQiPjQ4ZHA8L2RpbWVuPgorICAgIDxkaW1lbiBuYW1lPSJzZXR1cF9zdGVwX2hvcml6b250YWxfcGFkZGluZyI+MjRkcDwvZGltZW4+CisgICAgPGRpbWVuIG5hbWU9InNldHVwX3N0ZXBfaG9yaXpvbnRhbF9wYWRkaW5nX2hhbGYiPjEyZHA8L2RpbWVuPgorICAgIDxkaW1lbiBuYW1lPSJzZXR1cF9zdGVwX3ZlcnRpY2FsX3BhZGRpbmciPjE2ZHA8L2RpbWVuPgorICAgIDxkaW1lbiBuYW1lPSJzZXR1cF9zdGVwX2hvcml6b250YWxfbGluZV9oZWlnaHQiPjJkcDwvZGltZW4+CisgICAgPGludGVnZXIgbmFtZT0ic2V0dXBfdGl0bGVfd2VpZ2h0X2luX3NjcmVlbiI+NDA8L2ludGVnZXI+CisgICAgPGludGVnZXIgbmFtZT0ic2V0dXBfYm9keV93ZWlnaHRfaW5fc2NyZWVuIj42MDwvaW50ZWdlcj4KKyAgICA8ZGltZW4gbmFtZT0ic2V0dXBfd2VsY29tZV92aWRlb192ZXJ0aWNhbF9tYXJnaW4iPjI0ZHA8L2RpbWVuPgorICAgIDxpbnRlZ2VyIG5hbWU9InNldHVwX3dlbGNvbWVfdmlkZW9fd2VpZ2h0X2luX3NjcmVlbiI+NjA8L2ludGVnZXI+CisgICAgPGludGVnZXIgbmFtZT0ic2V0dXBfd2VsY29tZV92aWRlb19sZWZ0X3BhZGRpbmdfd2VpZ2h0X2luX3NjcmVlbiI+MjA8L2ludGVnZXI+CisgICAgPGludGVnZXIgbmFtZT0ic2V0dXBfd2VsY29tZV92aWRlb19yaWdodF9wYWRkaW5nX3dlaWdodF9pbl9zY3JlZW4iPjIwPC9pbnRlZ2VyPgorPC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9qYXZhL3Jlcy92YWx1ZXMtaDU0MGRwLXBvcnQvc2V0dXAtZGltZW5zLWxhcmdlLXBob25lLXBvcnQueG1sIGIvamF2YS9yZXMvdmFsdWVzLWg1NDBkcC1wb3J0L3NldHVwLWRpbWVucy1sYXJnZS1waG9uZS1wb3J0LnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOGRkMzNkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9yZXMvdmFsdWVzLWg1NDBkcC1wb3J0L3NldHVwLWRpbWVucy1sYXJnZS1waG9uZS1wb3J0LnhtbApAQCAtMCwwICsxLDQwIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPCEtLSBDb3B5cmlnaHQgKEMpIDIwMTMgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorCisgICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorCisgICAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisKKyAgICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAgICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy0tPgorCis8cmVzb3VyY2VzIHhtbG5zOmFuZHJvaWQ9Imh0dHA6Ly9zY2hlbWFzLmFuZHJvaWQuY29tL2Fway9yZXMvYW5kcm9pZCI+CisgICAgPCEtLSBTZXR1cCB3aXphcmQgZGltZW5zaW9ucyBmb3IgbGFyZ2UtcGhvbmUvcG9ydHJhaXQuIC0tPgorICAgIDxkaW1lbiBuYW1lPSJzZXR1cF90aXRsZV90ZXh0X3NpemUiPjQ2c3A8L2RpbWVuPgorICAgIDxkaW1lbiBuYW1lPSJzZXR1cF93ZWxjb21lX2Rlc2NyaXB0aW9uX3RleHRfc2l6ZSI+MjZzcDwvZGltZW4+CisgICAgPGRpbWVuIG5hbWU9InNldHVwX3N0ZXBfYnVsbGV0X3RleHRfc2l6ZSI+MjJzcDwvZGltZW4+CisgICAgPGRpbWVuIG5hbWU9InNldHVwX3N0ZXBfdHJpYW5nbGVfaW5kaWNhdG9yX2hlaWdodCI+MjRkcDwvZGltZW4+CisgICAgPGRpbWVuIG5hbWU9InNldHVwX3N0ZXBfaW5kaWNhdG9yX2hlaWdodCI+MjRkcDwvZGltZW4+CisgICAgPGRpbWVuIG5hbWU9InNldHVwX3N0ZXBfdGl0bGVfdGV4dF9zaXplIj4yMnNwPC9kaW1lbj4KKyAgICA8ZGltZW4gbmFtZT0ic2V0dXBfc3RlcF9pbnN0cnVjdGlvbl90ZXh0X3NpemUiPjE0c3A8L2RpbWVuPgorICAgIDxkaW1lbiBuYW1lPSJzZXR1cF9zdGVwX2FjdGlvbl90ZXh0X3NpemUiPjE4c3A8L2RpbWVuPgorICAgIDxkaW1lbiBuYW1lPSJzZXR1cF92ZXJ0aWNhbF9wYWRkaW5nIj4xNmRwPC9kaW1lbj4KKyAgICA8ZGltZW4gbmFtZT0ic2V0dXBfaG9yaXpvbnRhbF9wYWRkaW5nIj4xNmRwPC9kaW1lbj4KKyAgICA8ZGltZW4gbmFtZT0ic2V0dXBfc3RlcF9hY3Rpb25faGVpZ2h0Ij40OGRwPC9kaW1lbj4KKyAgICA8ZGltZW4gbmFtZT0ic2V0dXBfc3RlcF9ob3Jpem9udGFsX3BhZGRpbmciPjI0ZHA8L2RpbWVuPgorICAgIDxkaW1lbiBuYW1lPSJzZXR1cF9zdGVwX2hvcml6b250YWxfcGFkZGluZ19oYWxmIj4xMmRwPC9kaW1lbj4KKyAgICA8ZGltZW4gbmFtZT0ic2V0dXBfc3RlcF92ZXJ0aWNhbF9wYWRkaW5nIj4xNmRwPC9kaW1lbj4KKyAgICA8ZGltZW4gbmFtZT0ic2V0dXBfc3RlcF9ob3Jpem9udGFsX2xpbmVfaGVpZ2h0Ij4yZHA8L2RpbWVuPgorICAgIDxpbnRlZ2VyIG5hbWU9InNldHVwX3RpdGxlX3dlaWdodF9pbl9zY3JlZW4iPjQwPC9pbnRlZ2VyPgorICAgIDxpbnRlZ2VyIG5hbWU9InNldHVwX2JvZHlfd2VpZ2h0X2luX3NjcmVlbiI+NjA8L2ludGVnZXI+CisgICAgPGRpbWVuIG5hbWU9InNldHVwX3dlbGNvbWVfdmlkZW9fdmVydGljYWxfbWFyZ2luIj4yNGRwPC9kaW1lbj4KKyAgICA8aW50ZWdlciBuYW1lPSJzZXR1cF93ZWxjb21lX3ZpZGVvX3dlaWdodF9pbl9zY3JlZW4iPjgwPC9pbnRlZ2VyPgorICAgIDxpbnRlZ2VyIG5hbWU9InNldHVwX3dlbGNvbWVfdmlkZW9fbGVmdF9wYWRkaW5nX3dlaWdodF9pbl9zY3JlZW4iPjEwPC9pbnRlZ2VyPgorICAgIDxpbnRlZ2VyIG5hbWU9InNldHVwX3dlbGNvbWVfdmlkZW9fcmlnaHRfcGFkZGluZ193ZWlnaHRfaW5fc2NyZWVuIj4xMDwvaW50ZWdlcj4KKzwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvamF2YS9yZXMvdmFsdWVzLWg3MjBkcC1sYW5kL3NldHVwLWRpbWVucy1sYXJnZS10YWJsZXQtbGFuZC54bWwgYi9qYXZhL3Jlcy92YWx1ZXMtaDcyMGRwLWxhbmQvc2V0dXAtZGltZW5zLWxhcmdlLXRhYmxldC1sYW5kLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMDA0YTNjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9yZXMvdmFsdWVzLWg3MjBkcC1sYW5kL3NldHVwLWRpbWVucy1sYXJnZS10YWJsZXQtbGFuZC54bWwKQEAgLTAsMCArMSw0MCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzwhLS0gQ29weXJpZ2h0IChDKSAyMDEzIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKworICAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAgICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKworICAgICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorCisgICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAgICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAgICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAgICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCistLT4KKworPHJlc291cmNlcyB4bWxuczphbmRyb2lkPSJodHRwOi8vc2NoZW1hcy5hbmRyb2lkLmNvbS9hcGsvcmVzL2FuZHJvaWQiPgorICAgIDwhLS0gU2V0dXAgd2l6YXJkIGRpbWVuc2lvbnMgZm9yIGxhcmdlLXRhYmxldC9sYW5kc2NhcGUuIC0tPgorICAgIDxkaW1lbiBuYW1lPSJzZXR1cF90aXRsZV90ZXh0X3NpemUiPjU4c3A8L2RpbWVuPgorICAgIDxkaW1lbiBuYW1lPSJzZXR1cF93ZWxjb21lX2Rlc2NyaXB0aW9uX3RleHRfc2l6ZSI+MjhzcDwvZGltZW4+CisgICAgPGRpbWVuIG5hbWU9InNldHVwX3N0ZXBfYnVsbGV0X3RleHRfc2l6ZSI+MjRzcDwvZGltZW4+CisgICAgPGRpbWVuIG5hbWU9InNldHVwX3N0ZXBfdHJpYW5nbGVfaW5kaWNhdG9yX2hlaWdodCI+MjRkcDwvZGltZW4+CisgICAgPGRpbWVuIG5hbWU9InNldHVwX3N0ZXBfaW5kaWNhdG9yX2hlaWdodCI+MjRkcDwvZGltZW4+CisgICAgPGRpbWVuIG5hbWU9InNldHVwX3N0ZXBfdGl0bGVfdGV4dF9zaXplIj4yNHNwPC9kaW1lbj4KKyAgICA8ZGltZW4gbmFtZT0ic2V0dXBfc3RlcF9pbnN0cnVjdGlvbl90ZXh0X3NpemUiPjE4c3A8L2RpbWVuPgorICAgIDxkaW1lbiBuYW1lPSJzZXR1cF9zdGVwX2FjdGlvbl90ZXh0X3NpemUiPjIwc3A8L2RpbWVuPgorICAgIDxkaW1lbiBuYW1lPSJzZXR1cF92ZXJ0aWNhbF9wYWRkaW5nIj45NmRwPC9kaW1lbj4KKyAgICA8ZGltZW4gbmFtZT0ic2V0dXBfaG9yaXpvbnRhbF9wYWRkaW5nIj4xOTJkcDwvZGltZW4+CisgICAgPGRpbWVuIG5hbWU9InNldHVwX3N0ZXBfYWN0aW9uX2hlaWdodCI+NDhkcDwvZGltZW4+CisgICAgPGRpbWVuIG5hbWU9InNldHVwX3N0ZXBfaG9yaXpvbnRhbF9wYWRkaW5nIj4yNGRwPC9kaW1lbj4KKyAgICA8ZGltZW4gbmFtZT0ic2V0dXBfc3RlcF9ob3Jpem9udGFsX3BhZGRpbmdfaGFsZiI+MTJkcDwvZGltZW4+CisgICAgPGRpbWVuIG5hbWU9InNldHVwX3N0ZXBfdmVydGljYWxfcGFkZGluZyI+MTZkcDwvZGltZW4+CisgICAgPGRpbWVuIG5hbWU9InNldHVwX3N0ZXBfaG9yaXpvbnRhbF9saW5lX2hlaWdodCI+MmRwPC9kaW1lbj4KKyAgICA8aW50ZWdlciBuYW1lPSJzZXR1cF90aXRsZV93ZWlnaHRfaW5fc2NyZWVuIj40MDwvaW50ZWdlcj4KKyAgICA8aW50ZWdlciBuYW1lPSJzZXR1cF9ib2R5X3dlaWdodF9pbl9zY3JlZW4iPjYwPC9pbnRlZ2VyPgorICAgIDxkaW1lbiBuYW1lPSJzZXR1cF93ZWxjb21lX3ZpZGVvX3ZlcnRpY2FsX21hcmdpbiI+MjRkcDwvZGltZW4+CisgICAgPGludGVnZXIgbmFtZT0ic2V0dXBfd2VsY29tZV92aWRlb193ZWlnaHRfaW5fc2NyZWVuIj41MDwvaW50ZWdlcj4KKyAgICA8aW50ZWdlciBuYW1lPSJzZXR1cF93ZWxjb21lX3ZpZGVvX2xlZnRfcGFkZGluZ193ZWlnaHRfaW5fc2NyZWVuIj4yNTwvaW50ZWdlcj4KKyAgICA8aW50ZWdlciBuYW1lPSJzZXR1cF93ZWxjb21lX3ZpZGVvX3JpZ2h0X3BhZGRpbmdfd2VpZ2h0X2luX3NjcmVlbiI+MjU8L2ludGVnZXI+Cis8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL2phdmEvcmVzL3ZhbHVlcy1oODAwZHAtcG9ydC9zZXR1cC1kaW1lbnMtc21hbGwtdGFibGV0LXBvcnQueG1sIGIvamF2YS9yZXMvdmFsdWVzLWg4MDBkcC1wb3J0L3NldHVwLWRpbWVucy1zbWFsbC10YWJsZXQtcG9ydC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODdjOTkxYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvcmVzL3ZhbHVlcy1oODAwZHAtcG9ydC9zZXR1cC1kaW1lbnMtc21hbGwtdGFibGV0LXBvcnQueG1sCkBAIC0wLDAgKzEsNDAgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8IS0tIENvcHlyaWdodCAoQykgMjAxMyBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisKKyAgICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAgICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisKKyAgICAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKworICAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLS0+CisKKzxyZXNvdXJjZXMgeG1sbnM6YW5kcm9pZD0iaHR0cDovL3NjaGVtYXMuYW5kcm9pZC5jb20vYXBrL3Jlcy9hbmRyb2lkIj4KKyAgICA8IS0tIFNldHVwIHdpemFyZCBkaW1lbnNpb25zIGZvciBzbWFsbC10YWJsZXQvcG9ydHJhaXQuIC0tPgorICAgIDxkaW1lbiBuYW1lPSJzZXR1cF90aXRsZV90ZXh0X3NpemUiPjcyc3A8L2RpbWVuPgorICAgIDxkaW1lbiBuYW1lPSJzZXR1cF93ZWxjb21lX2Rlc2NyaXB0aW9uX3RleHRfc2l6ZSI+MzZzcDwvZGltZW4+CisgICAgPGRpbWVuIG5hbWU9InNldHVwX3N0ZXBfYnVsbGV0X3RleHRfc2l6ZSI+MjRzcDwvZGltZW4+CisgICAgPGRpbWVuIG5hbWU9InNldHVwX3N0ZXBfdHJpYW5nbGVfaW5kaWNhdG9yX2hlaWdodCI+MjRkcDwvZGltZW4+CisgICAgPGRpbWVuIG5hbWU9InNldHVwX3N0ZXBfaW5kaWNhdG9yX2hlaWdodCI+MjRkcDwvZGltZW4+CisgICAgPGRpbWVuIG5hbWU9InNldHVwX3N0ZXBfdGl0bGVfdGV4dF9zaXplIj4yNHNwPC9kaW1lbj4KKyAgICA8ZGltZW4gbmFtZT0ic2V0dXBfc3RlcF9pbnN0cnVjdGlvbl90ZXh0X3NpemUiPjE4c3A8L2RpbWVuPgorICAgIDxkaW1lbiBuYW1lPSJzZXR1cF9zdGVwX2FjdGlvbl90ZXh0X3NpemUiPjIwc3A8L2RpbWVuPgorICAgIDxkaW1lbiBuYW1lPSJzZXR1cF92ZXJ0aWNhbF9wYWRkaW5nIj4zMmRwPC9kaW1lbj4KKyAgICA8ZGltZW4gbmFtZT0ic2V0dXBfaG9yaXpvbnRhbF9wYWRkaW5nIj42NGRwPC9kaW1lbj4KKyAgICA8ZGltZW4gbmFtZT0ic2V0dXBfc3RlcF9hY3Rpb25faGVpZ2h0Ij40OGRwPC9kaW1lbj4KKyAgICA8ZGltZW4gbmFtZT0ic2V0dXBfc3RlcF9ob3Jpem9udGFsX3BhZGRpbmciPjI0ZHA8L2RpbWVuPgorICAgIDxkaW1lbiBuYW1lPSJzZXR1cF9zdGVwX2hvcml6b250YWxfcGFkZGluZ19oYWxmIj4xMmRwPC9kaW1lbj4KKyAgICA8ZGltZW4gbmFtZT0ic2V0dXBfc3RlcF92ZXJ0aWNhbF9wYWRkaW5nIj4xNmRwPC9kaW1lbj4KKyAgICA8ZGltZW4gbmFtZT0ic2V0dXBfc3RlcF9ob3Jpem9udGFsX2xpbmVfaGVpZ2h0Ij4yZHA8L2RpbWVuPgorICAgIDxpbnRlZ2VyIG5hbWU9InNldHVwX3RpdGxlX3dlaWdodF9pbl9zY3JlZW4iPjQwPC9pbnRlZ2VyPgorICAgIDxpbnRlZ2VyIG5hbWU9InNldHVwX2JvZHlfd2VpZ2h0X2luX3NjcmVlbiI+NjA8L2ludGVnZXI+CisgICAgPGRpbWVuIG5hbWU9InNldHVwX3dlbGNvbWVfdmlkZW9fdmVydGljYWxfbWFyZ2luIj4yNGRwPC9kaW1lbj4KKyAgICA8aW50ZWdlciBuYW1lPSJzZXR1cF93ZWxjb21lX3ZpZGVvX3dlaWdodF9pbl9zY3JlZW4iPjYwPC9pbnRlZ2VyPgorICAgIDxpbnRlZ2VyIG5hbWU9InNldHVwX3dlbGNvbWVfdmlkZW9fbGVmdF9wYWRkaW5nX3dlaWdodF9pbl9zY3JlZW4iPjIwPC9pbnRlZ2VyPgorICAgIDxpbnRlZ2VyIG5hbWU9InNldHVwX3dlbGNvbWVfdmlkZW9fcmlnaHRfcGFkZGluZ193ZWlnaHRfaW5fc2NyZWVuIj4yMDwvaW50ZWdlcj4KKzwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvamF2YS9yZXMvdmFsdWVzLWhpL3N0cmluZ3MueG1sIGIvamF2YS9yZXMvdmFsdWVzLWhpL3N0cmluZ3MueG1sCmluZGV4IGJkNzQ1Y2MuLjcxY2VkMGMgMTAwNjQ0Ci0tLSBhL2phdmEvcmVzL3ZhbHVlcy1oaS9zdHJpbmdzLnhtbAorKysgYi9qYXZhL3Jlcy92YWx1ZXMtaGkvc3RyaW5ncy54bWwKQEAgLTUzLDYgKzUzLDggQEAKICAgICA8c3RyaW5nIG5hbWU9InVzZV9kb3VibGVfc3BhY2VfcGVyaW9kX3N1bW1hcnkiIG1zZ2lkPSI2NTMyODkyMTg3MjQ3OTUyNzk5Ij4i4KS44KWN4KSq4KWH4KS44KSs4KS+4KSwIOCkquCksCDgpKHgpKzgpLIg4KSf4KWI4KSqIOCkleCksOCkqOClhyDgpLjgpYcg4KSq4KWA4KSw4KS/4KSv4KShIOCktuCkvuCkruCkv+CksiDgpLngpYsg4KSc4KS+4KSk4KS+IOCkueCliCDgpJzgpL/gpLjgpJXgpYcg4KSs4KS+4KSmIOCkj+CklSDgpLDgpL/gpJXgpY3gpKTgpL8g4KS54KWL4KSk4KWAIOCkueCliCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImF1dG9fY2FwIiBtc2dpZD0iMTcxOTc0NjY3NDg1NDYyODI1MiI+IuCkuOCljeKAjeCkteCkpDog4KSF4KSV4KWN4KS34KSwIOCkrOCkoeCkvOClhyDgpJXgpLDgpKjgpL4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJhdXRvX2NhcF9zdW1tYXJ5IiBtc2dpZD0iNzkzNDQ1Mjc2MTAyMjk0Njg3NCI+IuCkquCljeCksOCkpOCljeCkr+Clh+CklSDgpLXgpL7gpJXgpY3gpK8g4KSV4KWHIOCkquCkueCksuClhyDgpLbgpKzgpY3gpKYg4KSV4KWLIOCkrOCkoeCkvOCkviDgpLLgpL/gpJbgpYfgpIIiPC9zdHJpbmc+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgZWRpdF9wZXJzb25hbF9kaWN0aW9uYXJ5ICgzOTk2OTEwMDM4OTUyOTQwNDIwKSAtLT4KKyAgICA8c2tpcCAvPgogICAgIDxzdHJpbmcgbmFtZT0iY29uZmlndXJlX2RpY3Rpb25hcmllc190aXRsZSIgbXNnaWQ9IjQyMzg2NTIzMzg1NTY5MDIwNDkiPiLgpI/gpKEt4KSR4KSoIOCkoeCkv+CkleCljeCktuCkqOCksOClgCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im1haW5fZGljdGlvbmFyeSIgbXNnaWQ9IjQ3OTg3NjM3ODE4MTgzNjExNjgiPiLgpK7gpYHgpJbgpY3igI3gpK8g4KSh4KS/4KSV4KWN4oCN4KS24KSo4KSw4KWAIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icHJlZnNfc2hvd19zdWdnZXN0aW9ucyIgbXNnaWQ9IjgwMjY3OTk2NjM0NDU1MzE2MzciPiLgpLjgpYHgpKfgpL7gpLAg4KS44KWB4KSd4KS+4KS1IOCkpuCkv+CkluCkvuCkj+CkgiI8L3N0cmluZz4KQEAgLTE3MSw4ICsxNzMsMjcgQEAKICAgICA8c3RyaW5nIG5hbWU9InJlYWRfZXh0ZXJuYWxfZGljdGlvbmFyeV9jb25maXJtX2luc3RhbGxfbWVzc2FnZSIgbXNnaWQ9IjY4OTg2MTAxNjM3Njg5ODA4NzAiPiI8eGxpZmY6ZyBpZD0iTE9DQUxFX05BTUUiPiVzPC94bGlmZjpnPiDgpJXgpYcg4KSy4KS/4KSPIOCkteCkvuCkuOCljeCkpOCktSDgpK7gpYfgpIIg4KSv4KS5IOCkq+CkvOCkvuCkh+CksiDgpIfgpILgpLjgpY3gpJ/gpYngpLIg4KSV4KSw4KWH4KSCPyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImVycm9yIiBtc2dpZD0iODk0MDc2MzYyNDY2ODUxMzY0OCI+IuCkleCli+CkiCDgpKTgpY3gpLDgpYHgpJ/gpL8g4KS54KWB4KSIIOCkpeClgCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJ1dHRvbl9kZWZhdWx0IiBtc2dpZD0iMzk4ODAxNzg0MDQzMTg4MTQ5MSI+IuCkoeCkv+Ckq+CkvOClieCksuCljeCknyI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Imxhbmd1YWdlX3NldHRpbmdzIiBtc2dpZD0iMTY3MTE1MzA1MzIwMTgwOTAzMSI+IuCkreCkvuCkt+CkviDgpJTgpLAg4KSH4KSo4KSq4KWB4KSfIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ic2VsZWN0X2lucHV0X21ldGhvZCIgbXNnaWQ9IjQzMDE2MDIzNzQ2MDkyNzUwMDMiPiLgpIfgpKjgpKrgpYHgpJ8g4KSq4KSm4KWN4KSn4KSk4KS/IOCkmuClgeCkqOClh+CkgiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3dlbGNvbWVfdGl0bGUiIG1zZ2lkPSI2MTEyODIxNzA5ODMyMDMxNzE1Ij4iPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPiDgpK7gpYfgpIIg4KSG4KSq4KSV4KS+IOCkuOCljeCkteCkvuCkl+CkpCDgpLngpYgiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF93ZWxjb21lX2FkZGl0aW9uYWxfZGVzY3JpcHRpb24iIG1zZ2lkPSI4MTUwMjUyMDA4NTQ1NzY4OTUzIj4i4KS54KS+4KS14KSt4KS+4KS1IOCksuClh+CkluCkqCDgpJXgpYcg4KS44KS+4KSlIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RhcnRfYWN0aW9uIiBtc2dpZD0iODkzNjAzNjQ2MDg5NzM0NzcwOCI+IuCkhuCksOCkguCkrSDgpJXgpLDgpYfgpIIiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9uZXh0X2FjdGlvbiIgbXNnaWQ9IjM3MTgyMTQzNzkxNTE0NDYwMyI+IuCkheCkl+CksuCkviDgpJrgpLDgpKMiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwc190aXRsZSIgbXNnaWQ9IjY0MDAzNzMwMzQ4NzE4MTYxODIiPiI8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+IOCkuOClh+CknyDgpJXgpLDgpKjgpL4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMV90aXRsZSIgbXNnaWQ9IjMxNDc5Njc2MzAyNTM0NjIzMTUiPiI8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+IOCkleCliyDgpLjgpJXgpY3gpLfgpK4g4KSV4KSw4KWH4KSCIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDFfaW5zdHJ1Y3Rpb24iIG1zZ2lkPSIyNTc4NjMxOTM2NjI0NjM3MjQxIj4i4KSV4KWD4KSq4KSv4KS+IOCkheCkquCkqOClgCDgpK3gpL7gpLfgpL4g4KSU4KSwIOCkh+CkqOCkquClgeCknyDgpLjgpYfgpJ/gpL/gpILgpJcg4KSu4KWH4KSCIFwiPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPlwiIOCkleCliyDgpJrgpYfgpJUg4KSV4KSw4KWH4KSCLiDgpIfgpLjgpLjgpYcg4KS14KS5IOCkhuCkquCkleClhyDgpIngpKrgpJXgpLDgpKMg4KSq4KSwIOCkmuCksuCkqOClhyDgpJXgpYcg4KSy4KS/4KSPIOCkheCkp+Ckv+CkleClg+CkpCDgpLngpYsg4KSc4KS+4KSP4KSX4KS+LiI8L3N0cmluZz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzZXR1cF9zdGVwMV9maW5pc2hlZF9pbnN0cnVjdGlvbiAoMTA3NjE0ODIwMDQ5NTc5OTQpIC0tPgorICAgIDxza2lwIC8+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMV9hY3Rpb24iIG1zZ2lkPSI0MzY2NTEzNTM0OTk5OTAxNzI4Ij4i4KS44KWH4KSf4KS/4KSC4KSXIOCkruClh+CkgiDgpLjgpJXgpY3gpLfgpK4g4KSV4KSw4KWH4KSCIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDJfdGl0bGUiIG1zZ2lkPSI2ODYwNzI1NDQ3OTA2NjkwNTk0Ij4iPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPiDgpKrgpLAg4KS44KWN4KS14KS/4KSaIOCkleCksOClh+CkgiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAyX2luc3RydWN0aW9uIiBtc2dpZD0iOTE0MTQ4MTk2NDg3MDAyMzMzNiI+IuCkh+CkuOCkleClhyDgpKzgpL7gpKYsIFwiPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPlwiIOCkleCliyDgpIXgpKrgpKjgpYAg4KS44KSV4KWN4KSw4KS/4KSvIOCkquCkvuCkoC3gpIfgpKjgpKrgpYHgpJ8g4KSq4KSm4KWN4KSn4KSk4KS/IOCkleClhyDgpLDgpYLgpKog4KSu4KWH4KSCIOCkmuClgeCkqOClh+Ckgi4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMl9hY3Rpb24iIG1zZ2lkPSIxNjYwMzMwMzA3MTU5ODI0MzM3Ij4i4KSH4KSo4KSq4KWB4KSfIOCkquCkpuCljeCkp+CkpOCkv+Ckr+CkvuCkgiDgpLjgpY3gpLXgpL/gpJog4KSV4KSw4KWH4KSCIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDNfdGl0bGUiIG1zZ2lkPSIzMTU0NzU3MTgzNjMxNDkwMjgxIj4i4KSs4KSn4KS+4KSIIOCkueCliywg4KSG4KSqIOCkrOCkv+CksuCljeCkleClgeCksiDgpKTgpYjgpK/gpL7gpLAg4KS54KWI4KSCISI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAzX2luc3RydWN0aW9uIiBtc2dpZD0iODAyNTk4MTgyOTYwNTQyNjAwMCI+IuCkheCkrCDgpIbgpKogPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPiDgpJXgpYcg4KS44KS+4KSlIOCkheCkquCkqOClhyDgpLjgpK3gpYAg4KSq4KS44KSC4KSm4KWA4KSm4KS+IOCkj+CkquCljeCksuCkv+CkleClh+CktuCkqCDgpK7gpYfgpIIg4KSy4KS/4KSWIOCkuOCkleCkpOClhyDgpLngpYjgpIIuIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDNfYWN0aW9uIiBtc2dpZD0iNjAwODc5Nzk3MjU2OTQyMjU5Ij4i4KSF4KSk4KS/4KSw4KS/4KSV4KWN4KSkIOCkreCkvuCkt+CkvuCkj+CkgiDgpJXgpYngpKjgpY3gpKvgpLzgpL/gpJfgpLAg4KSV4KSw4KSo4KS+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfZmluaXNoX2FjdGlvbiIgbXNnaWQ9IjI3NjU1OTI0MzQwOTQ2NTM4OSI+IuCkuOCkruCkvuCkquCljeCkpCI8L3N0cmluZz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzaG93X3NldHVwX3dpemFyZF9pY29uICg1MDA4MDI4NTkwNTkzNzEwODMwKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNob3dfc2V0dXBfd2l6YXJkX2ljb25fc3VtbWFyeSAoNDExOTk5ODMyMjUzNjg4MDIxMykgLS0+CisgICAgPHNraXAgLz4KICAgICA8c3RyaW5nIG5hbWU9ImFwcF9uYW1lIiBtc2dpZD0iNjMyMDEwMjYzNzQ5MTIzNDc5MiI+IuCkoeCkv+CkleCljeKAjeCktuCkqOCksOClgCDgpKrgpY3gpLDgpKbgpL7gpKTgpL4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkaWN0aW9uYXJ5X3Byb3ZpZGVyX25hbWUiIG1zZ2lkPSIzMDI3MzE1MDQ1Mzk3MzYzMDc5Ij4i4KSh4KS/4KSV4KWN4oCN4KS24KSo4KSw4KWAIOCkquCljeCksOCkpuCkvuCkpOCkviI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRpY3Rpb25hcnlfc2VydmljZV9uYW1lIiBtc2dpZD0iNjIzNzQ3MjM1MDY5MzUxMTQ0OCI+IuCkoeCkv+CkleCljeKAjeCktuCkqOCksOClgCDgpLjgpYfgpLXgpL4iPC9zdHJpbmc+CkBAIC0yMDMsNCArMjI0LDYgQEAKICAgICA8c3RyaW5nIG5hbWU9ImRpY3RfYXZhaWxhYmxlX25vdGlmaWNhdGlvbl90aXRsZSIgbXNnaWQ9IjY1MTQyODg1OTE5NTkxMTcyODgiPiI8eGxpZmY6ZyBpZD0iTEFOR1VBR0UiPiUxJHM8L3hsaWZmOmc+IOCkleClhyDgpLLgpL/gpI8g4KSh4KS/4KSV4KWN4oCN4KS24KSo4KSw4KWAIOCkieCkquCksuCkrOCljeKAjeCkpyDgpLngpYgiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkaWN0X2F2YWlsYWJsZV9ub3RpZmljYXRpb25fZGVzY3JpcHRpb24iIG1zZ2lkPSIxMDc1MTk0MTY5NDQzMTYzNDg3Ij4i4KS44KSu4KWA4KSV4KWN4KS34KS+IOCkleCksOCkqOClhyDgpJTgpLAg4KSh4KS+4KSJ4KSo4KSy4KWL4KShIOCkleCksOCkqOClhyDgpJXgpYcg4KSy4KS/4KSPIOCkpuCkrOCkvuCkj+CkgiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InRvYXN0X2Rvd25sb2FkaW5nX3N1Z2dlc3Rpb25zIiBtc2dpZD0iMTMxMzAyNzM1MzU4ODU2NjY2MCI+IuCkoeCkvuCkieCkqOCksuCli+CkoSDgpLngpYsg4KSw4KS54KS+IOCkueCliDogPHhsaWZmOmcgaWQ9IkxBTkdVQUdFIj4lMSRzPC94bGlmZjpnPiDgpJXgpYcg4KSy4KS/4KSPIOCkuOClgeCkneCkvuCktSDgpJzgpLLgpY3gpKbgpYAg4KS54KWAIOCkpOCliOCkr+CkvuCksCDgpLngpYsg4KSc4KS+4KSP4KSC4KSX4KWHLiI8L3N0cmluZz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciB2ZXJzaW9uX3RleHQgKDI3MTUzNTQyMTU1Njg0NjkzODUpIC0tPgorICAgIDxza2lwIC8+CiA8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL2phdmEvcmVzL3ZhbHVlcy1oci9zdHJpbmdzLnhtbCBiL2phdmEvcmVzL3ZhbHVlcy1oci9zdHJpbmdzLnhtbAppbmRleCA2YjQxOGExLi44OGUwZDBkIDEwMDY0NAotLS0gYS9qYXZhL3Jlcy92YWx1ZXMtaHIvc3RyaW5ncy54bWwKKysrIGIvamF2YS9yZXMvdmFsdWVzLWhyL3N0cmluZ3MueG1sCkBAIC01Myw2ICs1Myw4IEBACiAgICAgPHN0cmluZyBuYW1lPSJ1c2VfZG91YmxlX3NwYWNlX3BlcmlvZF9zdW1tYXJ5IiBtc2dpZD0iNjUzMjg5MjE4NzI0Nzk1Mjc5OSI+IkR2b3N0cnVraW0gZG9kaXJpdmFuamVtIHJhem1ha25pY2UgdW1lxId1IHNlIHRvxI1rYSBpIHJhem1hayI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImF1dG9fY2FwIiBtc2dpZD0iMTcxOTc0NjY3NDg1NDYyODI1MiI+IkF1dG9tYXRza28gcGlzYW5qZSB2ZWxpa2loIHNsb3ZhIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYXV0b19jYXBfc3VtbWFyeSIgbXNnaWQ9Ijc5MzQ0NTI3NjEwMjI5NDY4NzQiPiJOYXBpxaFpIHZlbGlraW0gc2xvdm9tIHBydnUgcmlqZcSNIHN2YWtlIHJlxI1lbmljZSI8L3N0cmluZz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBlZGl0X3BlcnNvbmFsX2RpY3Rpb25hcnkgKDM5OTY5MTAwMzg5NTI5NDA0MjApIC0tPgorICAgIDxza2lwIC8+CiAgICAgPHN0cmluZyBuYW1lPSJjb25maWd1cmVfZGljdGlvbmFyaWVzX3RpdGxlIiBtc2dpZD0iNDIzODY1MjMzODU1NjkwMjA0OSI+IlJqZcSNbmljaS1kb2RhY2kiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJtYWluX2RpY3Rpb25hcnkiIG1zZ2lkPSI0Nzk4NzYzNzgxODE4MzYxMTY4Ij4iR2xhdm5pIHJqZcSNbmlrIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icHJlZnNfc2hvd19zdWdnZXN0aW9ucyIgbXNnaWQ9IjgwMjY3OTk2NjM0NDU1MzE2MzciPiJQb2thxb5pIHByaWplZGxvZ2UgaXNwcmF2a2EiPC9zdHJpbmc+CkBAIC0xNzEsOCArMTczLDI3IEBACiAgICAgPHN0cmluZyBuYW1lPSJyZWFkX2V4dGVybmFsX2RpY3Rpb25hcnlfY29uZmlybV9pbnN0YWxsX21lc3NhZ2UiIG1zZ2lkPSI2ODk4NjEwMTYzNzY4OTgwODcwIj4ixb1lbGl0ZSBsaSBkb2lzdGEgaW5zdGFsaXJhdGkgb3Z1IGRhdG90ZWt1IHphIDx4bGlmZjpnIGlkPSJMT0NBTEVfTkFNRSI+JXM8L3hsaWZmOmc+PyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImVycm9yIiBtc2dpZD0iODk0MDc2MzYyNDY2ODUxMzY0OCI+IkRvxaFsbyBqZSBkbyBwb2dyZcWha2UiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJidXR0b25fZGVmYXVsdCIgbXNnaWQ9IjM5ODgwMTc4NDA0MzE4ODE0OTEiPiJaYWRhbm8iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJsYW5ndWFnZV9zZXR0aW5ncyIgbXNnaWQ9IjE2NzExNTMwNTMyMDE4MDkwMzEiPiJKZXppayBpIHVub3MiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJzZWxlY3RfaW5wdXRfbWV0aG9kIiBtc2dpZD0iNDMwMTYwMjM3NDYwOTI3NTAwMyI+Ik9kYWJpciBuYcSNaW5hIHVub3NhIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfd2VsY29tZV90aXRsZSIgbXNnaWQ9IjYxMTI4MjE3MDk4MzIwMzE3MTUiPiJEb2JybyBkb8WhbGkgdSBhcGxpa2FjaWp1IDx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF93ZWxjb21lX2FkZGl0aW9uYWxfZGVzY3JpcHRpb24iIG1zZ2lkPSI4MTUwMjUyMDA4NTQ1NzY4OTUzIj4icyBQaXNhbmplbSBrcmV0bmphbWEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGFydF9hY3Rpb24iIG1zZ2lkPSI4OTM2MDM2NDYwODk3MzQ3NzA4Ij4iUG/EjW5pdGUgcyByYWRvbSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX25leHRfYWN0aW9uIiBtc2dpZD0iMzcxODIxNDM3OTE1MTQ0NjAzIj4iU2xqZWRlxIdpIGtvcmFrIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcHNfdGl0bGUiIG1zZ2lkPSI2NDAwMzczMDM0ODcxODE2MTgyIj4iUG9zdGF2bGphbmplIGFwbGlrYWNpamUgPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAxX3RpdGxlIiBtc2dpZD0iMzE0Nzk2NzYzMDI1MzQ2MjMxNSI+Ik9tb2d1xIdpdGUgYXBsaWthY2lqdSA8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDFfaW5zdHJ1Y3Rpb24iIG1zZ2lkPSIyNTc4NjMxOTM2NjI0NjM3MjQxIj4iUG90dnJkaXRlIGFwbGlrYWNpanUgXCI8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+XCIgdSBwb3N0YXZrYW1hIEplemlrIGkgdW5vcyBpIG92bGFzdGl0ZSBqZSB6YSBwb2tyZXRhbmplLiI8L3N0cmluZz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzZXR1cF9zdGVwMV9maW5pc2hlZF9pbnN0cnVjdGlvbiAoMTA3NjE0ODIwMDQ5NTc5OTQpIC0tPgorICAgIDxza2lwIC8+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMV9hY3Rpb24iIG1zZ2lkPSI0MzY2NTEzNTM0OTk5OTAxNzI4Ij4iT21vZ3XEh2kgdSBwb3N0YXZrYW1hIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDJfdGl0bGUiIG1zZ2lkPSI2ODYwNzI1NDQ3OTA2NjkwNTk0Ij4iUHJpamXEkWl0ZSBuYSBhcGxpa2FjaWp1IDx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMl9pbnN0cnVjdGlvbiIgbXNnaWQ9IjkxNDE0ODE5NjQ4NzAwMjMzMzYiPiJaYXRpbSBvZGFiZXJpdGUgYXBsaWthY2lqdSBcIjx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz5cIiBrYW8gYWt0aXZhbiBuYcSNaW4gdW5vc2EgdGVrc3RhLiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAyX2FjdGlvbiIgbXNnaWQ9IjE2NjAzMzAzMDcxNTk4MjQzMzciPiJQcmViYWNpIG5hIGRydWdpIG5hxI1pbiB1bm9zYSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAzX3RpdGxlIiBtc2dpZD0iMzE1NDc1NzE4MzYzMTQ5MDI4MSI+Ikl6dnJzbm8sIHNwcmVtbmkgc3RlISI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAzX2luc3RydWN0aW9uIiBtc2dpZD0iODAyNTk4MTgyOTYwNTQyNjAwMCI+IlNhZGEgbW/FvmV0ZSBwaXNhdGkgdSBzdmltIHN2b2ppbSBvbWlsamVuaW0gYXBsaWthY2lqYW1hIHBvbW/Eh3UgYXBsaWthY2lqZSA8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+LiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAzX2FjdGlvbiIgbXNnaWQ9IjYwMDg3OTc5NzI1Njk0MjI1OSI+IktvbmZpZ3VyaXJhaiBkb2RhdG5lIGplemlrZSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX2ZpbmlzaF9hY3Rpb24iIG1zZ2lkPSIyNzY1NTkyNDM0MDk0NjUzODkiPiJaYXZyxaFlbm8iPC9zdHJpbmc+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc2hvd19zZXR1cF93aXphcmRfaWNvbiAoNTAwODAyODU5MDU5MzcxMDgzMCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzaG93X3NldHVwX3dpemFyZF9pY29uX3N1bW1hcnkgKDQxMTk5OTgzMjI1MzY4ODAyMTMpIC0tPgorICAgIDxza2lwIC8+CiAgICAgPHN0cmluZyBuYW1lPSJhcHBfbmFtZSIgbXNnaWQ9IjYzMjAxMDI2Mzc0OTEyMzQ3OTIiPiJEYXZhdGVsaiByamXEjW5pa2EiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkaWN0aW9uYXJ5X3Byb3ZpZGVyX25hbWUiIG1zZ2lkPSIzMDI3MzE1MDQ1Mzk3MzYzMDc5Ij4iRGF2YXRlbGogcmplxI1uaWthIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGljdGlvbmFyeV9zZXJ2aWNlX25hbWUiIG1zZ2lkPSI2MjM3NDcyMzUwNjkzNTExNDQ4Ij4iVXNsdWdhIHJqZcSNbmlrYSI8L3N0cmluZz4KQEAgLTIwMyw0ICsyMjQsNiBAQAogICAgIDxzdHJpbmcgbmFtZT0iZGljdF9hdmFpbGFibGVfbm90aWZpY2F0aW9uX3RpdGxlIiBtc2dpZD0iNjUxNDI4ODU5MTk1OTExNzI4OCI+IkRvc3R1cGFuIGplIHJqZcSNbmlrIHphIDx4bGlmZjpnIGlkPSJMQU5HVUFHRSI+JTEkczwveGxpZmY6Zz4gamV6aWsiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkaWN0X2F2YWlsYWJsZV9ub3RpZmljYXRpb25fZGVzY3JpcHRpb24iIG1zZ2lkPSIxMDc1MTk0MTY5NDQzMTYzNDg3Ij4iUHJpdGlzbml0ZSB6YSBwcmVnbGVkIGkgcHJldXppbWFuamUiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ0b2FzdF9kb3dubG9hZGluZ19zdWdnZXN0aW9ucyIgbXNnaWQ9IjEzMTMwMjczNTM1ODg1NjY2NjAiPiJQcmV1emltYW5qZTogcHJpamVkbG96aSB6YSA8eGxpZmY6ZyBpZD0iTEFOR1VBR0UiPiUxJHM8L3hsaWZmOmc+IGJpdCDEh2Ugc3ByZW1uaSB1c2tvcm8uIjwvc3RyaW5nPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHZlcnNpb25fdGV4dCAoMjcxNTM1NDIxNTU2ODQ2OTM4NSkgLS0+CisgICAgPHNraXAgLz4KIDwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvamF2YS9yZXMvdmFsdWVzLWh1L3N0cmluZ3MueG1sIGIvamF2YS9yZXMvdmFsdWVzLWh1L3N0cmluZ3MueG1sCmluZGV4IGUxZTZkYzcuLmI4YjkyZDQgMTAwNjQ0Ci0tLSBhL2phdmEvcmVzL3ZhbHVlcy1odS9zdHJpbmdzLnhtbAorKysgYi9qYXZhL3Jlcy92YWx1ZXMtaHUvc3RyaW5ncy54bWwKQEAgLTUzLDYgKzUzLDggQEAKICAgICA8c3RyaW5nIG5hbWU9InVzZV9kb3VibGVfc3BhY2VfcGVyaW9kX3N1bW1hcnkiIG1zZ2lkPSI2NTMyODkyMTg3MjQ3OTUyNzk5Ij4iQSBzesOza8O2eiBrw6l0c3plcmkgbWVnw6lyaW50w6lzZSBiZXN6w7pyIGVneSBwb250b3QsIG1hamQgZWd5IHN6w7Nrw7Z6dCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImF1dG9fY2FwIiBtc2dpZD0iMTcxOTc0NjY3NDg1NDYyODI1MiI+IkF1dG9tYXRpa3VzYW4gbmFneSBrZXpkxZFiZXTFsSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImF1dG9fY2FwX3N1bW1hcnkiIG1zZ2lkPSI3OTM0NDUyNzYxMDIyOTQ2ODc0Ij4iTWluZGVuIG1vbmRhdCBlbHPFkSBzemF2YSBuYWd5YmV0xbF2ZWwiPC9zdHJpbmc+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgZWRpdF9wZXJzb25hbF9kaWN0aW9uYXJ5ICgzOTk2OTEwMDM4OTUyOTQwNDIwKSAtLT4KKyAgICA8c2tpcCAvPgogICAgIDxzdHJpbmcgbmFtZT0iY29uZmlndXJlX2RpY3Rpb25hcmllc190aXRsZSIgbXNnaWQ9IjQyMzg2NTIzMzg1NTY5MDIwNDkiPiJCxZF2w610bcOpbnllazogc3rDs3TDoXJhayI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im1haW5fZGljdGlvbmFyeSIgbXNnaWQ9IjQ3OTg3NjM3ODE4MTgzNjExNjgiPiJGxZEgc3rDs3TDoXIiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwcmVmc19zaG93X3N1Z2dlc3Rpb25zIiBtc2dpZD0iODAyNjc5OTY2MzQ0NTUzMTYzNyI+IkphdsOtdMOhc2kgYWrDoW5sw6Fzb2sgbWVnamVsZW7DrXTDqXNlIjwvc3RyaW5nPgpAQCAtMTcxLDggKzE3MywyNyBAQAogICAgIDxzdHJpbmcgbmFtZT0icmVhZF9leHRlcm5hbF9kaWN0aW9uYXJ5X2NvbmZpcm1faW5zdGFsbF9tZXNzYWdlIiBtc2dpZD0iNjg5ODYxMDE2Mzc2ODk4MDg3MCI+IlZhbMOzYmFuIHRlbGVww610aSBlenQgYSBmw6FqbHQgPHhsaWZmOmcgaWQ9IkxPQ0FMRV9OQU1FIj4lczwveGxpZmY6Zz4gbnllbHZoZXo/Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZXJyb3IiIG1zZ2lkPSI4OTQwNzYzNjI0NjY4NTEzNjQ4Ij4iSGliYSB0w7ZydMOpbnQuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYnV0dG9uX2RlZmF1bHQiIG1zZ2lkPSIzOTg4MDE3ODQwNDMxODgxNDkxIj4iQWxhcMOpcnRlbG1lemV0dCI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Imxhbmd1YWdlX3NldHRpbmdzIiBtc2dpZD0iMTY3MTE1MzA1MzIwMTgwOTAzMSI+Ik55ZWx2IMOpcyBiZXZpdGVsIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ic2VsZWN0X2lucHV0X21ldGhvZCIgbXNnaWQ9IjQzMDE2MDIzNzQ2MDkyNzUwMDMiPiJCZXZpdGVsaSBtw7NkIGtpdsOhbGFzenTDoXNhIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfd2VsY29tZV90aXRsZSIgbXNnaWQ9IjYxMTI4MjE3MDk4MzIwMzE3MTUiPiLDnGR2w7Z6bGkgYSh6KSA8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+ISI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3dlbGNvbWVfYWRkaXRpb25hbF9kZXNjcmlwdGlvbiIgbXNnaWQ9IjgxNTAyNTIwMDg1NDU3Njg5NTMiPiJrw6l6bW96ZHVsYXRva2thbCB0w7ZydMOpbsWRIGJldml0ZWxsZWwiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGFydF9hY3Rpb24iIG1zZ2lkPSI4OTM2MDM2NDYwODk3MzQ3NzA4Ij4iRWxzxZEgbMOpcMOpc2VrIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfbmV4dF9hY3Rpb24iIG1zZ2lkPSIzNzE4MjE0Mzc5MTUxNDQ2MDMiPiJLw7Z2ZXRrZXrFkSBsw6lww6lzIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcHNfdGl0bGUiIG1zZ2lkPSI2NDAwMzczMDM0ODcxODE2MTgyIj4iQSh6KSA8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+IGJlw6FsbMOtdMOhc2EiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMV90aXRsZSIgbXNnaWQ9IjMxNDc5Njc2MzAyNTM0NjIzMTUiPiJBKHopIDx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz4gZW5nZWTDqWx5ZXrDqXNlIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDFfaW5zdHJ1Y3Rpb24iIG1zZ2lkPSIyNTc4NjMxOTM2NjI0NjM3MjQxIj4iSmVsw7ZsamUgYmUgYSh6KSDigJ48eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+4oCdIGFsa2FsbWF6w6FzdCBhIOKAnk55ZWx2IMOpcyBiZXZpdGVs4oCdIGFsYXR0IGEgZnV0dGF0w6FzIMOpcmRla8OpYmVuLiI8L3N0cmluZz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzZXR1cF9zdGVwMV9maW5pc2hlZF9pbnN0cnVjdGlvbiAoMTA3NjE0ODIwMDQ5NTc5OTQpIC0tPgorICAgIDxza2lwIC8+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMV9hY3Rpb24iIG1zZ2lkPSI0MzY2NTEzNTM0OTk5OTAxNzI4Ij4iRW5nZWTDqWx5ZXrDqXMgYSBCZcOhbGzDrXTDoXNvayBrw7Z6w7Z0dCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAyX3RpdGxlIiBtc2dpZD0iNjg2MDcyNTQ0NzkwNjY5MDU5NCI+IlbDoWx0w6FzIGEoeikgPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPiBhbGthbG1hesOhc3JhIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDJfaW5zdHJ1Y3Rpb24iIG1zZ2lkPSI5MTQxNDgxOTY0ODcwMDIzMzM2Ij4iRXp1dMOhbiB2w6FsYXNzemEgYSh6KSDigJ48eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+4oCdICBhbGthbG1hesOhc3QgYWt0w612IHN6w7Z2ZWdiZXZpdGVsaSBtw7Nkc3plcmvDqW50LiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAyX2FjdGlvbiIgbXNnaWQ9IjE2NjAzMzAzMDcxNTk4MjQzMzciPiJWw6FsdMOhcyBhIGJldml0ZWxpIG3Ds2RvayBrw7Z6w7Z0dCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAzX3RpdGxlIiBtc2dpZD0iMzE1NDc1NzE4MzYzMTQ5MDI4MSI+IkdyYXR1bMOhbHVuaywgbcOhcmlzIGVsa8Opc3rDvGx0ISI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAzX2luc3RydWN0aW9uIiBtc2dpZD0iODAyNTk4MTgyOTYwNTQyNjAwMCI+IkltbcOhciBtaW5kZW4ga2VkdmVuYyBhbGthbG1hesOhc8OhYmFuIGfDqXBlbGhldCBhKHopIDx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz4gc2Vnw610c8OpZ8OpdmVsLiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAzX2FjdGlvbiIgbXNnaWQ9IjYwMDg3OTc5NzI1Njk0MjI1OSI+IsOBbGzDrXRzb24gYmUgdG92w6FiYmkgbnllbHZla2V0Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfZmluaXNoX2FjdGlvbiIgbXNnaWQ9IjI3NjU1OTI0MzQwOTQ2NTM4OSI+IkJlZmVqZXrFkWTDtnR0Ijwvc3RyaW5nPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNob3dfc2V0dXBfd2l6YXJkX2ljb24gKDUwMDgwMjg1OTA1OTM3MTA4MzApIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc2hvd19zZXR1cF93aXphcmRfaWNvbl9zdW1tYXJ5ICg0MTE5OTk4MzIyNTM2ODgwMjEzKSAtLT4KKyAgICA8c2tpcCAvPgogICAgIDxzdHJpbmcgbmFtZT0iYXBwX25hbWUiIG1zZ2lkPSI2MzIwMTAyNjM3NDkxMjM0NzkyIj4iU3rDs3TDoXJzem9sZ8OhbHRhdMOzIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGljdGlvbmFyeV9wcm92aWRlcl9uYW1lIiBtc2dpZD0iMzAyNzMxNTA0NTM5NzM2MzA3OSI+IlN6w7N0w6Fyc3pvbGfDoWx0YXTDsyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRpY3Rpb25hcnlfc2VydmljZV9uYW1lIiBtc2dpZD0iNjIzNzQ3MjM1MDY5MzUxMTQ0OCI+IlN6w7N0w6Fyc3pvbGfDoWx0YXTDoXMiPC9zdHJpbmc+CkBAIC0yMDMsNCArMjI0LDYgQEAKICAgICA8c3RyaW5nIG5hbWU9ImRpY3RfYXZhaWxhYmxlX25vdGlmaWNhdGlvbl90aXRsZSIgbXNnaWQ9IjY1MTQyODg1OTE5NTkxMTcyODgiPiI8eGxpZmY6ZyBpZD0iTEFOR1VBR0UiPiUxJHM8L3hsaWZmOmc+IG55ZWx2aGV6IHZhbiByZW5kZWxrZXrDqXNyZSDDoWxsw7Mgc3rDs3TDoXIiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkaWN0X2F2YWlsYWJsZV9ub3RpZmljYXRpb25fZGVzY3JpcHRpb24iIG1zZ2lkPSIxMDc1MTk0MTY5NDQzMTYzNDg3Ij4iTnlvbWphIG1lZyBheiDDoXR0ZWtpbnTDqXNoZXogw6lzIGxldMO2bHTDqXNoZXoiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ0b2FzdF9kb3dubG9hZGluZ19zdWdnZXN0aW9ucyIgbXNnaWQ9IjEzMTMwMjczNTM1ODg1NjY2NjAiPiJMZXTDtmx0w6lzOiBhKHopIDx4bGlmZjpnIGlkPSJMQU5HVUFHRSI+JTEkczwveGxpZmY6Zz4gbnllbHZ2ZWwga2FwY3NvbGF0b3MgamF2YXNsYXRvayBoYW1hcm9zYW4gZWzDqXJoZXTFkWsgbGVzem5lay4iPC9zdHJpbmc+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgdmVyc2lvbl90ZXh0ICgyNzE1MzU0MjE1NTY4NDY5Mzg1KSAtLT4KKyAgICA8c2tpcCAvPgogPC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9qYXZhL3Jlcy92YWx1ZXMtaW4vc3RyaW5ncy54bWwgYi9qYXZhL3Jlcy92YWx1ZXMtaW4vc3RyaW5ncy54bWwKaW5kZXggNTA3MmI5YS4uMWE2NjY0NCAxMDA2NDQKLS0tIGEvamF2YS9yZXMvdmFsdWVzLWluL3N0cmluZ3MueG1sCisrKyBiL2phdmEvcmVzL3ZhbHVlcy1pbi9zdHJpbmdzLnhtbApAQCAtNTMsNiArNTMsOCBAQAogICAgIDxzdHJpbmcgbmFtZT0idXNlX2RvdWJsZV9zcGFjZV9wZXJpb2Rfc3VtbWFyeSIgbXNnaWQ9IjY1MzI4OTIxODcyNDc5NTI3OTkiPiJNZW5nZXR1ayB0b21ib2wgc3Bhc2kgZHVhIGthbGkgYWthbiBtZW1hc3Vra2FuIHRpdGlrIGRpaWt1dGkgc2F0dSBzcGFzaSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImF1dG9fY2FwIiBtc2dpZD0iMTcxOTc0NjY3NDg1NDYyODI1MiI+IkthcGl0YWxpc2FzaSBvdG9tYXRpcyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImF1dG9fY2FwX3N1bW1hcnkiIG1zZ2lkPSI3OTM0NDUyNzYxMDIyOTQ2ODc0Ij4iS2FwaXRhbGlzYXNpIGthdGEgcGVydGFtYSBkaSBzZXRpYXAga2FsaW1hdCI8L3N0cmluZz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBlZGl0X3BlcnNvbmFsX2RpY3Rpb25hcnkgKDM5OTY5MTAwMzg5NTI5NDA0MjApIC0tPgorICAgIDxza2lwIC8+CiAgICAgPHN0cmluZyBuYW1lPSJjb25maWd1cmVfZGljdGlvbmFyaWVzX3RpdGxlIiBtc2dpZD0iNDIzODY1MjMzODU1NjkwMjA0OSI+IkthbXVzIHBlbmdheWEiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJtYWluX2RpY3Rpb25hcnkiIG1zZ2lkPSI0Nzk4NzYzNzgxODE4MzYxMTY4Ij4iS2FtdXMgdXRhbWEiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwcmVmc19zaG93X3N1Z2dlc3Rpb25zIiBtc2dpZD0iODAyNjc5OTY2MzQ0NTUzMTYzNyI+IlRhbXBpbGthbiBzYXJhbiBrb3Jla3NpIjwvc3RyaW5nPgpAQCAtMTcxLDggKzE3MywyNyBAQAogICAgIDxzdHJpbmcgbmFtZT0icmVhZF9leHRlcm5hbF9kaWN0aW9uYXJ5X2NvbmZpcm1faW5zdGFsbF9tZXNzYWdlIiBtc2dpZD0iNjg5ODYxMDE2Mzc2ODk4MDg3MCI+Illha2luIGluZ2luIG1lbWFzYW5nIGZpbGUgaW5pIHVudHVrIDx4bGlmZjpnIGlkPSJMT0NBTEVfTkFNRSI+JXM8L3hsaWZmOmc+PyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImVycm9yIiBtc2dpZD0iODk0MDc2MzYyNDY2ODUxMzY0OCI+IlRlcmphZGkga2VzYWxhaGFuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYnV0dG9uX2RlZmF1bHQiIG1zZ2lkPSIzOTg4MDE3ODQwNDMxODgxNDkxIj4iRGVmYXVsdCI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Imxhbmd1YWdlX3NldHRpbmdzIiBtc2dpZD0iMTY3MTE1MzA1MzIwMTgwOTAzMSI+IkJhaGFzYSAmYW1wOyBtYXN1a2FuIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ic2VsZWN0X2lucHV0X21ldGhvZCIgbXNnaWQ9IjQzMDE2MDIzNzQ2MDkyNzUwMDMiPiJQaWxpaCBtZXRvZGUgbWFzdWthbiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3dlbGNvbWVfdGl0bGUiIG1zZ2lkPSI2MTEyODIxNzA5ODMyMDMxNzE1Ij4iU2VsYW1hdCBkYXRhbmcgZGkgPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3dlbGNvbWVfYWRkaXRpb25hbF9kZXNjcmlwdGlvbiIgbXNnaWQ9IjgxNTAyNTIwMDg1NDU3Njg5NTMiPiJkZW5nYW4gS2V0aWthbiBJc3lhcmF0Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RhcnRfYWN0aW9uIiBtc2dpZD0iODkzNjAzNjQ2MDg5NzM0NzcwOCI+Ik1lbXVsYWkiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9uZXh0X2FjdGlvbiIgbXNnaWQ9IjM3MTgyMTQzNzkxNTE0NDYwMyI+IkxhbmdrYWggYmVyaWt1dG55YSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXBzX3RpdGxlIiBtc2dpZD0iNjQwMDM3MzAzNDg3MTgxNjE4MiI+Ik1lbnlpYXBrYW4gPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAxX3RpdGxlIiBtc2dpZD0iMzE0Nzk2NzYzMDI1MzQ2MjMxNSI+IkFrdGlma2FuIDx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMV9pbnN0cnVjdGlvbiIgbXNnaWQ9IjI1Nzg2MzE5MzY2MjQ2MzcyNDEiPiJDZW50YW5nIFwiPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPlwiIGRpIHNldGVsYW4gQmFoYXNhICZhbXA7IG1hc3VrYW4gQW5kYS4gVGluZGFrYW4gaW5pIGFrYW4gbWVuZ2l6aW5rYW5ueWEgYmVyamFsYW4gZGkgcGVyYW5na2F0IEFuZGEuIjwvc3RyaW5nPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNldHVwX3N0ZXAxX2ZpbmlzaGVkX2luc3RydWN0aW9uICgxMDc2MTQ4MjAwNDk1Nzk5NCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAxX2FjdGlvbiIgbXNnaWQ9IjQzNjY1MTM1MzQ5OTk5MDE3MjgiPiJBa3RpZmthbiBkYWxhbSBTZXRlbGFuIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDJfdGl0bGUiIG1zZ2lkPSI2ODYwNzI1NDQ3OTA2NjkwNTk0Ij4iQmVyYWxpaCBrZSA8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDJfaW5zdHJ1Y3Rpb24iIG1zZ2lkPSI5MTQxNDgxOTY0ODcwMDIzMzM2Ij4iTGFsdSwgcGlsaWggXCI8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+XCIgc2ViYWdhaSBtZXRvZGUgbWFzdWthbiB0ZWtzIGFrdGlmIEFuZGEuIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDJfYWN0aW9uIiBtc2dpZD0iMTY2MDMzMDMwNzE1OTgyNDMzNyI+IkFsaWhrYW4gbWV0b2RlIG1hc3VrYW4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwM190aXRsZSIgbXNnaWQ9IjMxNTQ3NTcxODM2MzE0OTAyODEiPiJTZWxhbWF0LCBBbmRhIHN1ZGFoIHNpYXAhIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDNfaW5zdHJ1Y3Rpb24iIG1zZ2lkPSI4MDI1OTgxODI5NjA1NDI2MDAwIj4iU2VrYXJhbmcgQW5kYSBkYXBhdCBtZW5nZXRpayBkaSBzZW11YSBhcGxpa2FzaSBmYXZvcml0IEFuZGEgZGVuZ2FuIDx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz4uIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDNfYWN0aW9uIiBtc2dpZD0iNjAwODc5Nzk3MjU2OTQyMjU5Ij4iS29uZmlndXJhc2lrYW4gYmFoYXNhIHRhbWJhaGFuIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfZmluaXNoX2FjdGlvbiIgbXNnaWQ9IjI3NjU1OTI0MzQwOTQ2NTM4OSI+IlNlbGVzYWkiPC9zdHJpbmc+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc2hvd19zZXR1cF93aXphcmRfaWNvbiAoNTAwODAyODU5MDU5MzcxMDgzMCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzaG93X3NldHVwX3dpemFyZF9pY29uX3N1bW1hcnkgKDQxMTk5OTgzMjI1MzY4ODAyMTMpIC0tPgorICAgIDxza2lwIC8+CiAgICAgPHN0cmluZyBuYW1lPSJhcHBfbmFtZSIgbXNnaWQ9IjYzMjAxMDI2Mzc0OTEyMzQ3OTIiPiJQZW55ZWRpYSBLYW11cyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRpY3Rpb25hcnlfcHJvdmlkZXJfbmFtZSIgbXNnaWQ9IjMwMjczMTUwNDUzOTczNjMwNzkiPiJQZW55ZWRpYSBLYW11cyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRpY3Rpb25hcnlfc2VydmljZV9uYW1lIiBtc2dpZD0iNjIzNzQ3MjM1MDY5MzUxMTQ0OCI+IkxheWFuYW4gS2FtdXMiPC9zdHJpbmc+CkBAIC0yMDMsNCArMjI0LDYgQEAKICAgICA8c3RyaW5nIG5hbWU9ImRpY3RfYXZhaWxhYmxlX25vdGlmaWNhdGlvbl90aXRsZSIgbXNnaWQ9IjY1MTQyODg1OTE5NTkxMTcyODgiPiJLYW11cyB0ZXJzZWRpYSB1bnR1ayBiYWhhc2EgPHhsaWZmOmcgaWQ9IkxBTkdVQUdFIj4lMSRzPC94bGlmZjpnPiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRpY3RfYXZhaWxhYmxlX25vdGlmaWNhdGlvbl9kZXNjcmlwdGlvbiIgbXNnaWQ9IjEwNzUxOTQxNjk0NDMxNjM0ODciPiJUZWthbiB1bnR1ayBtZW5pbmphdSBkYW4gbWVuZ3VuZHVoIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idG9hc3RfZG93bmxvYWRpbmdfc3VnZ2VzdGlvbnMiIG1zZ2lkPSIxMzEzMDI3MzUzNTg4NTY2NjYwIj4iTWVuZ3VuZHVoOiBzYXJhbiB1bnR1ayBiYWhhc2EgPHhsaWZmOmcgaWQ9IkxBTkdVQUdFIj4lMSRzPC94bGlmZjpnPiBha2FuIHNlZ2VyYSB0ZXJzZWRpYS4iPC9zdHJpbmc+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgdmVyc2lvbl90ZXh0ICgyNzE1MzU0MjE1NTY4NDY5Mzg1KSAtLT4KKyAgICA8c2tpcCAvPgogPC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9qYXZhL3Jlcy92YWx1ZXMtaXMvc3RyaW5ncy54bWwgYi9qYXZhL3Jlcy92YWx1ZXMtaXMvc3RyaW5ncy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGE0YjllMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvcmVzL3ZhbHVlcy1pcy9zdHJpbmdzLnhtbApAQCAtMCwwICsxLDQyMCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzwhLS0gCisvKgorKioKKyoqIENvcHlyaWdodCAyMDA4LCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisqKgorKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyoqCisqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisqKgorKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisqLworIC0tPgorCis8cmVzb3VyY2VzIHhtbG5zOmFuZHJvaWQ9Imh0dHA6Ly9zY2hlbWFzLmFuZHJvaWQuY29tL2Fway9yZXMvYW5kcm9pZCIKKyAgICB4bWxuczp4bGlmZj0idXJuOm9hc2lzOm5hbWVzOnRjOnhsaWZmOmRvY3VtZW50OjEuMiI+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgYW9zcF9hbmRyb2lkX2tleWJvYXJkX2ltZV9uYW1lICg4MjUwOTkyNjEzNjE2NzkyMzIxKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGFvc3BfYW5kcm9pZF9rZXlib2FyZF9pbWVfc2V0dGluZ3MgKDQyMzYxNTg3NzE3NDg1MDI2NykgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBhb3NwX3NwZWxsX2NoZWNrZXJfc2VydmljZV9uYW1lICg1MTE5NTA0NzcxOTk5NDgwNDgpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgYW9zcF9hbmRyb2lkX3NwZWxsX2NoZWNrZXJfc2VydmljZV9zZXR0aW5ncyAoMjk3MDUzNTg5NDMyNzI4ODQyMSkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBlbmdsaXNoX2ltZV9pbnB1dF9vcHRpb25zICgzOTA5OTQ1NjEyOTM5NjY4NTU0KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGVuZ2xpc2hfaW1lX3Jlc2VhcmNoX2xvZyAoODQ5MjYwMjI5NTY5NjU3Nzg1MSkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciB1c2VfY29udGFjdHNfZm9yX3NwZWxsY2hlY2tpbmdfb3B0aW9uX3RpdGxlICg1Mzc0MTIwOTk4MTI1MzUzODk4KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHVzZV9jb250YWN0c19mb3Jfc3BlbGxjaGVja2luZ19vcHRpb25fc3VtbWFyeSAoODc1NDQxMzM4MjU0MzMwNzcxMykgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciB2aWJyYXRlX29uX2tleXByZXNzICg1MjU4MDc5NDk0Mjc2OTU1NDYwKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNvdW5kX29uX2tleXByZXNzICg2MDkzNTkyMjk3MTk4MjQzNjQ0KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHBvcHVwX29uX2tleXByZXNzICgxMjM4OTQ4MTU3MjM1MTI5NDQpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgZ2VuZXJhbF9jYXRlZ29yeSAoMTg1OTA4ODQ2NzAxNzU3MzE5NSkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBjb3JyZWN0aW9uX2NhdGVnb3J5ICgyMjM2NzUwOTE1MDU2NjA3NjEzKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGdlc3R1cmVfdHlwaW5nX2NhdGVnb3J5ICg0OTcyNjM2MTIxMzA1MzI2MzApIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgbWlzY19jYXRlZ29yeSAoNjg5NDE5MjgxNDg2ODIzMzQ1MykgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBhZHZhbmNlZF9zZXR0aW5ncyAoMzYyODk1MTQ0NDk1NTkxNDYzKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGFkdmFuY2VkX3NldHRpbmdzX3N1bW1hcnkgKDQ0ODc5ODA0NTYxNTI4MzAyNzEpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgaW5jbHVkZV9vdGhlcl9pbWVzX2luX2xhbmd1YWdlX3N3aXRjaF9saXN0ICg0NTMzNjg5OTYwMzA4NTY1NTE5KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGluY2x1ZGVfb3RoZXJfaW1lc19pbl9sYW5ndWFnZV9zd2l0Y2hfbGlzdF9zdW1tYXJ5ICg4NDA2MzcxMjkxMDMzMTc2MzUpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc2hvd19sYW5ndWFnZV9zd2l0Y2hfa2V5ICg1OTE1NDc4ODI4MzE4Nzc0Mzg0KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNob3dfbGFuZ3VhZ2Vfc3dpdGNoX2tleV9zdW1tYXJ5ICg3MzQzNDAzNjQ3NDc0MjY1NzEzKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNsaWRpbmdfa2V5X2lucHV0X3ByZXZpZXcgKDY2MDQyNjIzNTk1MTAwNjgzNzApIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc2xpZGluZ19rZXlfaW5wdXRfcHJldmlld19zdW1tYXJ5ICg2MzQwNTI0MzQ1NzI5MDkzODg2KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGtleV9wcmV2aWV3X3BvcHVwX2Rpc21pc3NfZGVsYXkgKDYyMTMxNjQ4OTc0NDMwNjgyNDgpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Iga2V5X3ByZXZpZXdfcG9wdXBfZGlzbWlzc19ub19kZWxheSAoMjA5NjEyMzE1MTU3MTQ1ODA2NCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBrZXlfcHJldmlld19wb3B1cF9kaXNtaXNzX2RlZmF1bHRfZGVsYXkgKDIxNjY5NjQzMzM5MDM5MDY3MzQpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgYWJicmV2aWF0aW9uX3VuaXRfbWlsbGlzZWNvbmRzICg4NzAwMjg2MDk0MDI4MzIzMzYzKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHVzZV9jb250YWN0c19kaWN0ICg0NDM1MzE3OTc3ODA0MTgwODE1KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHVzZV9jb250YWN0c19kaWN0X3N1bW1hcnkgKDY1OTk5ODMzMzQ1MDc4Nzk5NTkpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgdXNlX2RvdWJsZV9zcGFjZV9wZXJpb2QgKDg3ODE1Mjk5Njk0MjUwODI4NjApIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgdXNlX2RvdWJsZV9zcGFjZV9wZXJpb2Rfc3VtbWFyeSAoNjUzMjg5MjE4NzI0Nzk1Mjc5OSkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBhdXRvX2NhcCAoMTcxOTc0NjY3NDg1NDYyODI1MikgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBhdXRvX2NhcF9zdW1tYXJ5ICg3OTM0NDUyNzYxMDIyOTQ2ODc0KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGVkaXRfcGVyc29uYWxfZGljdGlvbmFyeSAoMzk5NjkxMDAzODk1Mjk0MDQyMCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBjb25maWd1cmVfZGljdGlvbmFyaWVzX3RpdGxlICg0MjM4NjUyMzM4NTU2OTAyMDQ5KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIG1haW5fZGljdGlvbmFyeSAoNDc5ODc2Mzc4MTgxODM2MTE2OCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBwcmVmc19zaG93X3N1Z2dlc3Rpb25zICg4MDI2Nzk5NjYzNDQ1NTMxNjM3KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHByZWZzX3Nob3dfc3VnZ2VzdGlvbnNfc3VtbWFyeSAoMTU4MzEzMjI3OTQ5ODUwMjgyNSkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBwcmVmc19zdWdnZXN0aW9uX3Zpc2liaWxpdHlfc2hvd19uYW1lICgzMjE5OTE2NTk0MDY3NTUxMzAzKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHByZWZzX3N1Z2dlc3Rpb25fdmlzaWJpbGl0eV9zaG93X29ubHlfcG9ydHJhaXRfbmFtZSAoMzg1OTc4Mzc2NzQzNTIzOTExOCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBwcmVmc19zdWdnZXN0aW9uX3Zpc2liaWxpdHlfaGlkZV9uYW1lICg2MzA5MTQzOTI2NDIyMjM0NjczKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGF1dG9fY29ycmVjdGlvbiAoNzYzMDcyMDg4NTE5NDk5Njk1MCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBhdXRvX2NvcnJlY3Rpb25fc3VtbWFyeSAoNTYyNTc1MTU1MTEzNDY1ODAwNikgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBhdXRvX2NvcnJlY3Rpb25fdGhyZXNob2xkX21vZGVfb2ZmICg4NDcwODgyNjY1NDE3OTQ0MDI2KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGF1dG9fY29ycmVjdGlvbl90aHJlc2hvbGRfbW9kZV9tb2Rlc3QgKDg3ODgzNjY2OTA2MjA3OTkwOTcpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgYXV0b19jb3JyZWN0aW9uX3RocmVzaG9sZF9tb2RlX2FnZ2VyZXNzaXZlICgzNTI0MDI5MTAzNzM0OTIzODE5KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGF1dG9fY29ycmVjdGlvbl90aHJlc2hvbGRfbW9kZV92ZXJ5X2FnZ2VyZXNzaXZlICgzMzg2NzgyMjM1NTQwNTQ3Njc4KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGJpZ3JhbV9wcmVkaWN0aW9uICgxMDg0NDQ5MTg3NzIzOTQ4NTUwKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGJpZ3JhbV9wcmVkaWN0aW9uX3N1bW1hcnkgKDM4OTYzNjI2ODI3NTExMDk2NzcpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgZ2VzdHVyZV9pbnB1dCAoODI2OTUxMTUyMjU0NTYzODI3KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGdlc3R1cmVfaW5wdXRfc3VtbWFyeSAoOTE4MDM1MDYzOTMwNTczMTIzMSkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBnZXN0dXJlX3ByZXZpZXdfdHJhaWwgKDM4MDIzMzMzNjkzMzU3MjIyMjEpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgZ2VzdHVyZV9mbG9hdGluZ19wcmV2aWV3X3RleHQgKDQ0NDMyNDAzMzQ3MzkzODEwNTMpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgZ2VzdHVyZV9mbG9hdGluZ19wcmV2aWV3X3RleHRfc3VtbWFyeSAoNDQ3MjY5NjIxMzk5NjIwMzUzMykgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBhZGRlZF93b3JkICg4OTkzODgzMzU0NjIyNDg0MzcyKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDxzdHJpbmcgbmFtZT0ibGFiZWxfZ29fa2V5IiBtc2dpZD0iMTYzNTE0ODA4MjEzNzIxOTE0OCI+IsOBZnJhbSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImxhYmVsX25leHRfa2V5IiBtc2dpZD0iMzYyOTcyODQ0NTI1NjcyNTY4Ij4iTsOmc3RhIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibGFiZWxfcHJldmlvdXNfa2V5IiBtc2dpZD0iMTIxMTg2ODExODA3MTM4Njc4NyI+IkZ5cnJhIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibGFiZWxfZG9uZV9rZXkiIG1zZ2lkPSIyNDQxNTc4NzQ4NzcyNTI5Mjg4Ij4iTG9racOwIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibGFiZWxfc2VuZF9rZXkiIG1zZ2lkPSIyODE1MDU2NTM0NDMzNzE3NDQ0Ij4iU2VuZGEiPC9zdHJpbmc+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgbGFiZWxfcGF1c2Vfa2V5ICgxODEwOTgzMDg0MjgwMzUzNDApIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgbGFiZWxfd2FpdF9rZXkgKDY0MDIxNTI2MDA4NzgwOTMxMzQpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc3Bva2VuX3VzZV9oZWFkcGhvbmVzICg4OTY5NjE3ODEyODcyODM0OTMpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc3Bva2VuX2N1cnJlbnRfdGV4dF9pcyAoMjQ4NTcyMzAxMTI3MjU4Mzg0NSkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzcG9rZW5fbm9fdGV4dF9lbnRlcmVkICg3NDc5Njg1MjI1NTk3MzQ0NDk2KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNwb2tlbl9kZXNjcmlwdGlvbl91bmtub3duICgzMTk3NDM0MDEwNDAyMTc5MTU3KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNwb2tlbl9kZXNjcmlwdGlvbl9zaGlmdCAoMjQ0MTk3ODgzMjkyNTQ5MzA4KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNwb2tlbl9kZXNjcmlwdGlvbl9zaGlmdF9zaGlmdGVkICgxNjgxODc3MzIzMzQ0MTk1MDM1KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNwb2tlbl9kZXNjcmlwdGlvbl9jYXBzX2xvY2sgKDMyNzY0NzgyNjk1MjYzMDQ0MzIpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc3Bva2VuX2Rlc2NyaXB0aW9uX2RlbGV0ZSAoODc0MDM3Njk0NDI3NjE5OTgwMSkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzcG9rZW5fZGVzY3JpcHRpb25fdG9fc3ltYm9sICg1NDg2MzQwMTA3NTAwNDQ4OTY5KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNwb2tlbl9kZXNjcmlwdGlvbl90b19hbHBoYSAoMjMxMjkzMzg4MTk3NzE4MDcpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc3Bva2VuX2Rlc2NyaXB0aW9uX3RvX251bWVyaWMgKDU5MTc1MjA5MjY4NTE2MTczMikgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzcG9rZW5fZGVzY3JpcHRpb25fc2V0dGluZ3MgKDQ2Mjc0NjI2ODk2MDM4MzgwOTkpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc3Bva2VuX2Rlc2NyaXB0aW9uX3RhYiAoMjY2NzcxNjAwMjY2MzQ4MjI0OCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzcG9rZW5fZGVzY3JpcHRpb25fc3BhY2UgKDI1ODI1MjEwNTAwNDk4NjA4NTkpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc3Bva2VuX2Rlc2NyaXB0aW9uX21pYyAoNjE1NTM2NzQ4ODgyNjExOTUwKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNwb2tlbl9kZXNjcmlwdGlvbl9zbWlsZXkgKDIyNTYzMDk4MjYyMDAxMTM5MTgpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc3Bva2VuX2Rlc2NyaXB0aW9uX3JldHVybiAoODE3ODA4MzE3NzIzODMxNTY0NykgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzcG9rZW5fZGVzY3JpcHRpb25fc2VhcmNoICgxMjQ3MjM2MTYzNzU1OTIwODA4KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNwb2tlbl9kZXNjcmlwdGlvbl9kb3QgKDQwNzExMDgyNDM1MjMxNjczKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNwb2tlbl9kZXNjcmlwdGlvbl9sYW5ndWFnZV9zd2l0Y2ggKDU1MDcwOTEzMjgyMjIzMzEzMTYpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc3Bva2VuX2Rlc2NyaXB0aW9uX2FjdGlvbl9uZXh0ICg4NjM2MDc4Mjc2NjY0MTUwMzI0KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNwb2tlbl9kZXNjcmlwdGlvbl9hY3Rpb25fcHJldmlvdXMgKDgwMDg3MjQxNTAwOTMzNjIwOCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzcG9rZW5fZGVzY3JpcHRpb25fc2hpZnRtb2RlX29uICg1NzAwNDQwNzk4NjA5NTc0NTg5KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNwb2tlbl9kZXNjcmlwdGlvbl9zaGlmdG1vZGVfbG9ja2VkICg1OTMxNzU4MDMxODE3MDE4MzApIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc3Bva2VuX2Rlc2NyaXB0aW9uX3NoaWZ0bW9kZV9vZmYgKDY1NzIxOTk5ODQ0OTE3NDgwOCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzcG9rZW5fZGVzY3JpcHRpb25fbW9kZV9zeW1ib2wgKDcxODMzNDM4Nzk5MDk3NDc2NDIpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc3Bva2VuX2Rlc2NyaXB0aW9uX21vZGVfYWxwaGEgKDM1MjgzMDc2NzQzOTAxNTY5NTYpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc3Bva2VuX2Rlc2NyaXB0aW9uX21vZGVfcGhvbmUgKDY1MjAyMDc5NDMxMzIwMjYyNjQpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc3Bva2VuX2Rlc2NyaXB0aW9uX21vZGVfcGhvbmVfc2hpZnQgKDU0OTk2Mjk3NTM5NjI2NDEyMjcpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgYW5ub3VuY2Vfa2V5Ym9hcmRfaGlkZGVuICg4NzE4OTI3ODM1NTMxNDI5ODA3KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGFubm91bmNlX2tleWJvYXJkX21vZGUgKDQ3MjkwODEwNTU0Mzg1MDgzMjEpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Iga2V5Ym9hcmRfbW9kZV9kYXRlICgzMTM3NTIwMTY2ODE3MTI4MTAyKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGtleWJvYXJkX21vZGVfZGF0ZV90aW1lICgzMzk1OTMzNTg0ODg4NTEwNzIpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Iga2V5Ym9hcmRfbW9kZV9lbWFpbCAoNjIxNjI0ODA3ODEyODI5NDI2MikgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBrZXlib2FyZF9tb2RlX2ltICgxMTM3NDA1MDg5NzY2NTU3MDQ4KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGtleWJvYXJkX21vZGVfbnVtYmVyICg3OTkxNjIzNDQwNjk5OTU3MDY5KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGtleWJvYXJkX21vZGVfcGhvbmUgKDY4NTE2Mjc1Mjc0MDE0MzMyMjkpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Iga2V5Ym9hcmRfbW9kZV90ZXh0ICg2NDc5NDM2Njg3ODk5NzAxNjE5KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGtleWJvYXJkX21vZGVfdGltZSAoNDM4MTg1Njg4NTU4MjE0MzI3NykgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBrZXlib2FyZF9tb2RlX3VybCAoMTUxOTgxOTgzNTUxNDkxMTIxOCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciB2b2ljZV9pbnB1dCAoMzU4MzI1ODU4MzUyMTM5NzU0OCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciB2b2ljZV9pbnB1dF9tb2Rlc19tYWluX2tleWJvYXJkICgzMzYwNjYwMzQxMTIxMDgzMTc0KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHZvaWNlX2lucHV0X21vZGVzX3N5bWJvbHNfa2V5Ym9hcmQgKDcyMDMyMTMyNDA3ODYwODQwNjcpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igdm9pY2VfaW5wdXRfbW9kZXNfb2ZmICgzNzQ1Njk5NzQ4MjE4MDgyMDE0KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHZvaWNlX2lucHV0X21vZGVzX3N1bW1hcnlfbWFpbl9rZXlib2FyZCAoNjU4NjU0NDI5MjkwMDMxNDMzOSkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciB2b2ljZV9pbnB1dF9tb2Rlc19zdW1tYXJ5X3N5bWJvbHNfa2V5Ym9hcmQgKDUyMzM3MjU5MjcyODE5MzIzOTEpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igdm9pY2VfaW5wdXRfbW9kZXNfc3VtbWFyeV9vZmYgKDYzODc1NjA5NTkxODk3NjA3KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGNvbmZpZ3VyZV9pbnB1dF9tZXRob2QgKDM3MzM1NjI3MDI5MDc0MjQ1OSkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBsYW5ndWFnZV9zZWxlY3Rpb25fdGl0bGUgKDE2NTEyOTk1OTg1NTUzMjY3NTApIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc2VuZF9mZWVkYmFjayAoMTc4MDQzMTg4NDEwOTM5MjA0NikgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzZWxlY3RfbGFuZ3VhZ2UgKDM2OTM4MTU1ODg3Nzc5MjY4NDgpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgaGludF9hZGRfdG9fZGljdGlvbmFyeSAoNTczNjc4NjU2OTQ2MDg1MzgwKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGhhc19kaWN0aW9uYXJ5ICg2MDcxODQ3OTczNDY2NjI1MDA3KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHByZWZzX2VuYWJsZV9sb2cgKDY2MjA0MjQ1MDUwNzI5NjM1NTcpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgcHJlZnNfZGVzY3JpcHRpb25fbG9nICg3NTI1MjI1NTg0NTU1NDI5MjExKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGtleWJvYXJkX2xheW91dCAoODQ1MTE2NDc4MzUxMDQ4NzUwMSkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzdWJ0eXBlX2VuX0dCICg4ODE3MDYwMTk0MjMxMTM1NSkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzdWJ0eXBlX2VuX1VTICg2MTYwNDUyMzM2NjM0NTM0MjM5KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHN1YnR5cGVfZXNfVVMgKDU1ODMxNDUxOTE0MzAxODAyMDApIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc3VidHlwZV93aXRoX2xheW91dF9lbl9HQiAoMjE3OTA5Nzc0ODcyNDcyNTkwNikgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzdWJ0eXBlX3dpdGhfbGF5b3V0X2VuX1VTICgxMzYyNTgxMzQ3NTc2NzE0NTc5KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHN1YnR5cGVfd2l0aF9sYXlvdXRfZXNfVVMgKDYyNjE3OTEwNTcwMDc4OTAxODkpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc3VidHlwZV9ub19sYW5ndWFnZSAoMTQxNDIwODU3ODA4ODAxNzQ2KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHN1YnR5cGVfbm9fbGFuZ3VhZ2VfcXdlcnR5ICgyOTU2MTIxNDUxNjE2NjMzMTMzKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHN1YnR5cGVfbm9fbGFuZ3VhZ2VfcXdlcnR6ICgxMTc3ODQ4MTcyMzk3MjAyODkwKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHN1YnR5cGVfbm9fbGFuZ3VhZ2VfYXplcnR5ICg4NzIxNDYwOTY4MTQxMTg3Mzk0KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHN1YnR5cGVfbm9fbGFuZ3VhZ2VfZHZvcmFrICgzMTIyOTc2NzM3NjY5ODIzOTM1KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHN1YnR5cGVfbm9fbGFuZ3VhZ2VfY29sZW1hayAoNDIwNTk5Mjk5NDkwNjA5NzI0NCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzdWJ0eXBlX25vX2xhbmd1YWdlX3BjcXdlcnR5ICg4ODQwOTI4Mzc0Mzk0MTgwMTg5KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGN1c3RvbV9pbnB1dF9zdHlsZXNfdGl0bGUgKDg0Mjk5NTI0NDE4MjEyNTE1MTIpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgYWRkX3N0eWxlICg2MTYzMTI2NjE0NTE0NDg5OTUxKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGFkZCAoODI5OTY5OTgwNTY4ODAxNzc5OCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciByZW1vdmUgKDQ0ODYwODE2NTg3NTI5NDQ2MDYpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc2F2ZSAoNzY0NjczODU5NzE5Njc2NzIxNCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzdWJ0eXBlX2xvY2FsZSAoODU3NjQ0MzQ0MDczODE0Mzc2NCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBrZXlib2FyZF9sYXlvdXRfc2V0ICg0MzA5MjMzNjk4MTk0NTY1NjA5KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGN1c3RvbV9pbnB1dF9zdHlsZV9ub3RlX21lc3NhZ2UgKDg4MjY3MzEzMjA4NDYzNjM0MjMpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgZW5hYmxlICg1MDMxMjk0NDQ0NjMwNTIzMjQ3KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIG5vdF9ub3cgKDYxNzI0NjI4ODgyMDI3OTA0ODIpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgY3VzdG9tX2lucHV0X3N0eWxlX2FscmVhZHlfZXhpc3RzICg4MDA4NzI4OTUyMjE1NDQ5NzA3KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHByZWZzX3VzYWJpbGl0eV9zdHVkeV9tb2RlICgxMjYxMTMwNTU1MTM0NTk1MjU0KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHByZWZzX2tleV9sb25ncHJlc3NfdGltZW91dF9zZXR0aW5ncyAoNjEwMjI0MDI5ODkzMjg5Nzg3MykgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBwcmVmc19rZXlwcmVzc192aWJyYXRpb25fZHVyYXRpb25fc2V0dGluZ3MgKDc5MTgzNDE0NTk5NDc0MzkyMjYpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgcHJlZnNfa2V5cHJlc3Nfc291bmRfdm9sdW1lX3NldHRpbmdzICg2MDI3MDA3MzM3MDM2ODkxNjIzKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHByZWZzX3JlYWRfZXh0ZXJuYWxfZGljdGlvbmFyeSAoMjU4ODkzMTQxODU3NTAxMzA2NykgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciByZWFkX2V4dGVybmFsX2RpY3Rpb25hcnlfbm9fZmlsZXNfbWVzc2FnZSAoNDk0NzQyMDk0MjIyNDYyMzc5MikgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciByZWFkX2V4dGVybmFsX2RpY3Rpb25hcnlfbXVsdGlwbGVfZmlsZXNfdGl0bGUgKDc2Mzc3NDkwNDQyNjU4MDg2MjgpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgcmVhZF9leHRlcm5hbF9kaWN0aW9uYXJ5X2NvbmZpcm1faW5zdGFsbF9tZXNzYWdlICg2ODk4NjEwMTYzNzY4OTgwODcwKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGVycm9yICg4OTQwNzYzNjI0NjY4NTEzNjQ4KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGJ1dHRvbl9kZWZhdWx0ICgzOTg4MDE3ODQwNDMxODgxNDkxKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNldHVwX3dlbGNvbWVfdGl0bGUgKDYxMTI4MjE3MDk4MzIwMzE3MTUpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc2V0dXBfd2VsY29tZV9hZGRpdGlvbmFsX2Rlc2NyaXB0aW9uICg4MTUwMjUyMDA4NTQ1NzY4OTUzKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNldHVwX3N0YXJ0X2FjdGlvbiAoODkzNjAzNjQ2MDg5NzM0NzcwOCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzZXR1cF9uZXh0X2FjdGlvbiAoMzcxODIxNDM3OTE1MTQ0NjAzKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNldHVwX3N0ZXBzX3RpdGxlICg2NDAwMzczMDM0ODcxODE2MTgyKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNldHVwX3N0ZXAxX3RpdGxlICgzMTQ3OTY3NjMwMjUzNDYyMzE1KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNldHVwX3N0ZXAxX2luc3RydWN0aW9uICgyNTc4NjMxOTM2NjI0NjM3MjQxKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNldHVwX3N0ZXAxX2ZpbmlzaGVkX2luc3RydWN0aW9uICgxMDc2MTQ4MjAwNDk1Nzk5NCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzZXR1cF9zdGVwMV9hY3Rpb24gKDQzNjY1MTM1MzQ5OTk5MDE3MjgpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc2V0dXBfc3RlcDJfdGl0bGUgKDY4NjA3MjU0NDc5MDY2OTA1OTQpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc2V0dXBfc3RlcDJfaW5zdHJ1Y3Rpb24gKDkxNDE0ODE5NjQ4NzAwMjMzMzYpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc2V0dXBfc3RlcDJfYWN0aW9uICgxNjYwMzMwMzA3MTU5ODI0MzM3KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNldHVwX3N0ZXAzX3RpdGxlICgzMTU0NzU3MTgzNjMxNDkwMjgxKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNldHVwX3N0ZXAzX2luc3RydWN0aW9uICg4MDI1OTgxODI5NjA1NDI2MDAwKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNldHVwX3N0ZXAzX2FjdGlvbiAoNjAwODc5Nzk3MjU2OTQyMjU5KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNldHVwX2ZpbmlzaF9hY3Rpb24gKDI3NjU1OTI0MzQwOTQ2NTM4OSkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzaG93X3NldHVwX3dpemFyZF9pY29uICg1MDA4MDI4NTkwNTkzNzEwODMwKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNob3dfc2V0dXBfd2l6YXJkX2ljb25fc3VtbWFyeSAoNDExOTk5ODMyMjUzNjg4MDIxMykgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBhcHBfbmFtZSAoNjMyMDEwMjYzNzQ5MTIzNDc5MikgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBkaWN0aW9uYXJ5X3Byb3ZpZGVyX25hbWUgKDMwMjczMTUwNDUzOTczNjMwNzkpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgZGljdGlvbmFyeV9zZXJ2aWNlX25hbWUgKDYyMzc0NzIzNTA2OTM1MTE0NDgpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgZG93bmxvYWRfZGVzY3JpcHRpb24gKDYwMTQ4MzUyODMxMTkxOTg1OTEpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgZGljdGlvbmFyeV9zZXR0aW5nc190aXRsZSAoODA5MTQxNzY3NjA0NTY5MzMxMykgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBkaWN0aW9uYXJ5X2luc3RhbGxfb3Zlcl9tZXRlcmVkX25ldHdvcmtfcHJvbXB0ICgzNTg3NTE3ODcwMDA2MzMyOTgwKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGRpY3Rpb25hcnlfc2V0dGluZ3Nfc3VtbWFyeSAoNTMwNTY5NDk4Nzc5OTgyNDM0OSkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciB1c2VyX2RpY3Rpb25hcmllcyAoMzU4MjMzMjA1NTg5MjI1Mjg0NSkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBkZWZhdWx0X3VzZXJfZGljdF9wcmVmX25hbWUgKDE2MjUwNTU3MjA0ODkyODA1MzApIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgZGljdGlvbmFyeV9hdmFpbGFibGUgKDQ3Mjg5NzUzNDU4MTUyMTQyMTgpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgZGljdGlvbmFyeV9kb3dubG9hZGluZyAoMjk4MjY1MDUyNDYyMjYyMDk4MykgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBkaWN0aW9uYXJ5X2luc3RhbGxlZCAoODA4MTU1ODM0MzU1OTM0Mjk2MikgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBkaWN0aW9uYXJ5X2Rpc2FibGVkICg4OTUwMzgzMjE5NTY0NjIxNzYyKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGNhbm5vdF9jb25uZWN0X3RvX2RpY3Rfc2VydmljZSAoOTIxNjkzMzY5NTc2NTczMjM5OCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBub19kaWN0aW9uYXJpZXNfYXZhaWxhYmxlICg4MDM5OTIwNzE2NTY2MTMyNjExKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGNoZWNrX2Zvcl91cGRhdGVzX25vdyAoODA4NzY4ODQ0MDkxNjM4ODU4MSkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBsYXN0X3VwZGF0ZSAoNzMwNDY3NTQ5OTEzNTg4NzgwKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIG1lc3NhZ2VfdXBkYXRpbmcgKDQ0NTc3NjEzOTM5MzIzNzUyMTkpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgbWVzc2FnZV9sb2FkaW5nICg4Njg5MDk2NjM2ODc0NzU4ODE0KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIG1haW5fZGljdF9kZXNjcmlwdGlvbiAoMzA3MjgyMTM1Mjc5MzQ5MjE0MykgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBjYW5jZWwgKDY4MzA5ODAzOTk4NjU2ODMzMjQpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgaW5zdGFsbF9kaWN0ICgxODA4NTI3NzI1NjIxODkzNjUpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgY2FuY2VsX2Rvd25sb2FkX2RpY3QgKDc4NDMzNDAyNzg1MDcwMTkzMDMpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgZGVsZXRlX2RpY3QgKDc1Njg1MzI2ODA4ODMzMDA1NCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzaG91bGRfZG93bmxvYWRfb3Zlcl9tZXRlcmVkX3Byb21wdCAoMjg3ODYyOTU5ODY2NzY1ODg0NSkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBkb3dubG9hZF9vdmVyX21ldGVyZWQgKDE2NDMwNjU4NTExNTk0MDk1NDYpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgZG9fbm90X2Rvd25sb2FkX292ZXJfbWV0ZXJlZCAoMjE3NjIwOTU3OTMxMzk0MTU4MykgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBkaWN0X2F2YWlsYWJsZV9ub3RpZmljYXRpb25fdGl0bGUgKDY1MTQyODg1OTE5NTkxMTcyODgpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgZGljdF9hdmFpbGFibGVfbm90aWZpY2F0aW9uX2Rlc2NyaXB0aW9uICgxMDc1MTk0MTY5NDQzMTYzNDg3KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHRvYXN0X2Rvd25sb2FkaW5nX3N1Z2dlc3Rpb25zICgxMzEzMDI3MzUzNTg4NTY2NjYwKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHZlcnNpb25fdGV4dCAoMjcxNTM1NDIxNTU2ODQ2OTM4NSkgLS0+CisgICAgPHNraXAgLz4KKzwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvamF2YS9yZXMvdmFsdWVzLWl0L3N0cmluZ3MueG1sIGIvamF2YS9yZXMvdmFsdWVzLWl0L3N0cmluZ3MueG1sCmluZGV4IGM2NDU0M2EuLjM4M2QxYWIgMTAwNjQ0Ci0tLSBhL2phdmEvcmVzL3ZhbHVlcy1pdC9zdHJpbmdzLnhtbAorKysgYi9qYXZhL3Jlcy92YWx1ZXMtaXQvc3RyaW5ncy54bWwKQEAgLTUzLDYgKzUzLDcgQEAKICAgICA8c3RyaW5nIG5hbWU9InVzZV9kb3VibGVfc3BhY2VfcGVyaW9kX3N1bW1hcnkiIG1zZ2lkPSI2NTMyODkyMTg3MjQ3OTUyNzk5Ij4iVG9jY2EgZHVlIHZvbHRlIGJhcnJhIHNwYXppYXRyLiBwZXIgaW5zZXJpcmUgcHVudG8gc2VndWl0byBkYSBzcGF6aW8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJhdXRvX2NhcCIgbXNnaWQ9IjE3MTk3NDY2NzQ4NTQ2MjgyNTIiPiJNYWl1c2NvbGUgYXV0b21hdGljaGUiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJhdXRvX2NhcF9zdW1tYXJ5IiBtc2dpZD0iNzkzNDQ1Mjc2MTAyMjk0Njg3NCI+IkluaXppYWxlIG1haXVzY29sYSBwZXIgbGEgcHJpbWEgcGFyb2xhIGRpIG9nbmkgZnJhc2UiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJlZGl0X3BlcnNvbmFsX2RpY3Rpb25hcnkiIG1zZ2lkPSIzOTk2OTEwMDM4OTUyOTQwNDIwIj4iRGl6aW9uYXJpbyBwZXJzb25hbGUiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjb25maWd1cmVfZGljdGlvbmFyaWVzX3RpdGxlIiBtc2dpZD0iNDIzODY1MjMzODU1NjkwMjA0OSI+IkRpemlvbmFyaSBhZ2dpdW50aXZpIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ibWFpbl9kaWN0aW9uYXJ5IiBtc2dpZD0iNDc5ODc2Mzc4MTgxODM2MTE2OCI+IkRpemlvbmFyaW8gcHJpbmNpcGFsZSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InByZWZzX3Nob3dfc3VnZ2VzdGlvbnMiIG1zZ2lkPSI4MDI2Nzk5NjYzNDQ1NTMxNjM3Ij4iTW9zdHJhIHN1Z2dlcmltZW50aSBjb3JyZXppb25pIjwvc3RyaW5nPgpAQCAtMTcxLDggKzE3MiwyNSBAQAogICAgIDxzdHJpbmcgbmFtZT0icmVhZF9leHRlcm5hbF9kaWN0aW9uYXJ5X2NvbmZpcm1faW5zdGFsbF9tZXNzYWdlIiBtc2dpZD0iNjg5ODYxMDE2Mzc2ODk4MDg3MCI+Ikluc3RhbGxhcmUgcXVlc3RvIGZpbGUgcGVyIDx4bGlmZjpnIGlkPSJMT0NBTEVfTkFNRSI+JXM8L3hsaWZmOmc+PyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImVycm9yIiBtc2dpZD0iODk0MDc2MzYyNDY2ODUxMzY0OCI+IlNpIMOoIHZlcmlmaWNhdG8gdW4gZXJyb3JlIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYnV0dG9uX2RlZmF1bHQiIG1zZ2lkPSIzOTg4MDE3ODQwNDMxODgxNDkxIj4iUHJlZGVmaW5pdG8iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJsYW5ndWFnZV9zZXR0aW5ncyIgbXNnaWQ9IjE2NzExNTMwNTMyMDE4MDkwMzEiPiJMaW5ndWEgZSBpbnB1dCI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InNlbGVjdF9pbnB1dF9tZXRob2QiIG1zZ2lkPSI0MzAxNjAyMzc0NjA5Mjc1MDAzIj4iU2NlZ2xpIGlsIG1ldG9kbyBkaSBpbW1pc3Npb25lIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfd2VsY29tZV90aXRsZSIgbXNnaWQ9IjYxMTI4MjE3MDk4MzIwMzE3MTUiPiJCZW52ZW51dG8gaW4gPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3dlbGNvbWVfYWRkaXRpb25hbF9kZXNjcmlwdGlvbiIgbXNnaWQ9IjgxNTAyNTIwMDg1NDU3Njg5NTMiPiJjb24gbGEgRGlnaXRhemlvbmUgZ2VzdHVhbGUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGFydF9hY3Rpb24iIG1zZ2lkPSI4OTM2MDM2NDYwODk3MzQ3NzA4Ij4iSW5pemlhIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfbmV4dF9hY3Rpb24iIG1zZ2lkPSIzNzE4MjE0Mzc5MTUxNDQ2MDMiPiJQYXNzYWdnaW8gc3VjY2Vzc2l2byI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXBzX3RpdGxlIiBtc2dpZD0iNjQwMDM3MzAzNDg3MTgxNjE4MiI+IkNvbmZpZ3VyYXppb25lIGRpIDx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMV90aXRsZSIgbXNnaWQ9IjMxNDc5Njc2MzAyNTM0NjIzMTUiPiJBYmlsaXRhIDx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMV9pbnN0cnVjdGlvbiIgbXNnaWQ9IjI1Nzg2MzE5MzY2MjQ2MzcyNDEiPiJTZWxlemlvbmEgXCI8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+XCIgbmVsbGUgaW1wb3N0YXppb25pIExpbmd1YSBlIGltbWlzc2lvbmUgcGVyIGF1dG9yaXp6YXJuZSBsXCdlc2VjdXppb25lIHN1bCBkaXNwb3NpdGl2by4iPC9zdHJpbmc+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc2V0dXBfc3RlcDFfZmluaXNoZWRfaW5zdHJ1Y3Rpb24gKDEwNzYxNDgyMDA0OTU3OTk0KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDFfYWN0aW9uIiBtc2dpZD0iNDM2NjUxMzUzNDk5OTkwMTcyOCI+IkFiaWxpdGEgbmVsbGUgaW1wb3N0YXppb25pIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDJfdGl0bGUiIG1zZ2lkPSI2ODYwNzI1NDQ3OTA2NjkwNTk0Ij4iUGFzc2EgYSA8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDJfaW5zdHJ1Y3Rpb24iIG1zZ2lkPSI5MTQxNDgxOTY0ODcwMDIzMzM2Ij4iUXVpbmRpIHNlbGV6aW9uYSBcIjx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz5cIiBjb21lIG1ldG9kbyBkaSBpbW1pc3Npb25lIHRlc3RvIGF0dGl2by4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMl9hY3Rpb24iIG1zZ2lkPSIxNjYwMzMwMzA3MTU5ODI0MzM3Ij4iQ2FtYmlhIG1ldG9kbyBkaSBpbW1pc3Npb25lIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDNfdGl0bGUiIG1zZ2lkPSIzMTU0NzU3MTgzNjMxNDkwMjgxIj4iR3JhemllLCBhZGVzc28gc2VpIHByb250byEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwM19pbnN0cnVjdGlvbiIgbXNnaWQ9IjgwMjU5ODE4Mjk2MDU0MjYwMDAiPiJPcmEgcHVvaSBkaWdpdGFyZSBpbiB0dXR0ZSBsZSB0dWUgYXBwIHByZWZlcml0ZSBjb24gPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPi4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwM19hY3Rpb24iIG1zZ2lkPSI2MDA4Nzk3OTcyNTY5NDIyNTkiPiJDb25maWd1cmEgYWx0cmUgbGluZ3VlIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfZmluaXNoX2FjdGlvbiIgbXNnaWQ9IjI3NjU1OTI0MzQwOTQ2NTM4OSI+IlRlcm1pbmF0byI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNob3dfc2V0dXBfd2l6YXJkX2ljb24iIG1zZ2lkPSI1MDA4MDI4NTkwNTkzNzEwODMwIj4iTW9zdHJhIGljb25hIGFwcCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNob3dfc2V0dXBfd2l6YXJkX2ljb25fc3VtbWFyeSIgbXNnaWQ9IjQxMTk5OTgzMjI1MzY4ODAyMTMiPiJNb3N0cmEgbFwnaWNvbmEgZGVsbFwnYXBwIGluIEF2dmlvIGFwcGxpY2F6aW9uaSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImFwcF9uYW1lIiBtc2dpZD0iNjMyMDEwMjYzNzQ5MTIzNDc5MiI+IkRpY3Rpb25hcnkgUHJvdmlkZXIiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkaWN0aW9uYXJ5X3Byb3ZpZGVyX25hbWUiIG1zZ2lkPSIzMDI3MzE1MDQ1Mzk3MzYzMDc5Ij4iRGljdGlvbmFyeSBQcm92aWRlciI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRpY3Rpb25hcnlfc2VydmljZV9uYW1lIiBtc2dpZD0iNjIzNzQ3MjM1MDY5MzUxMTQ0OCI+IlNlcnZpemlvIGRpemlvbmFyaW8iPC9zdHJpbmc+CkBAIC0yMDMsNCArMjIxLDYgQEAKICAgICA8c3RyaW5nIG5hbWU9ImRpY3RfYXZhaWxhYmxlX25vdGlmaWNhdGlvbl90aXRsZSIgbXNnaWQ9IjY1MTQyODg1OTE5NTkxMTcyODgiPiLDiCBkaXNwb25pYmlsZSB1biBkaXppb25hcmlvIHBlciA8eGxpZmY6ZyBpZD0iTEFOR1VBR0UiPiUxJHM8L3hsaWZmOmc+Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGljdF9hdmFpbGFibGVfbm90aWZpY2F0aW9uX2Rlc2NyaXB0aW9uIiBtc2dpZD0iMTA3NTE5NDE2OTQ0MzE2MzQ4NyI+IlByZW1pIHBlciBlc2FtaW5hcmUgZSBzY2FyaWNhcmUiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ0b2FzdF9kb3dubG9hZGluZ19zdWdnZXN0aW9ucyIgbXNnaWQ9IjEzMTMwMjczNTM1ODg1NjY2NjAiPiJEb3dubG9hZDogaSBzdWdnZXJpbWVudGkgcGVyIDx4bGlmZjpnIGlkPSJMQU5HVUFHRSI+JTEkczwveGxpZmY6Zz4gc2FyYW5ubyBwcm9udGkgYSBicmV2ZS4iPC9zdHJpbmc+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgdmVyc2lvbl90ZXh0ICgyNzE1MzU0MjE1NTY4NDY5Mzg1KSAtLT4KKyAgICA8c2tpcCAvPgogPC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9qYXZhL3Jlcy92YWx1ZXMtaXcvc3RyaW5ncy54bWwgYi9qYXZhL3Jlcy92YWx1ZXMtaXcvc3RyaW5ncy54bWwKaW5kZXggZDQ3NmMzMi4uM2VmODZjNyAxMDA2NDQKLS0tIGEvamF2YS9yZXMvdmFsdWVzLWl3L3N0cmluZ3MueG1sCisrKyBiL2phdmEvcmVzL3ZhbHVlcy1pdy9zdHJpbmdzLnhtbApAQCAtNTMsNiArNTMsNyBAQAogICAgIDxzdHJpbmcgbmFtZT0idXNlX2RvdWJsZV9zcGFjZV9wZXJpb2Rfc3VtbWFyeSIgbXNnaWQ9IjY1MzI4OTIxODcyNDc5NTI3OTkiPiLXlNen16nXlCDXpNei157XmdeZ150g16LXnCDXnten16kg15TXqNeV15XXlyDXnteW15nXoNeUINeg16fXldeT15Qg15XXkNeX16jXmdeUINeo15XXldeXIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYXV0b19jYXAiIG1zZ2lkPSIxNzE5NzQ2Njc0ODU0NjI4MjUyIj4i15TXpNeZ15vXqiDXkNeV16rXmdeV16og15zXqNeZ16nXmdeV16og15HXkNeV16TXnyDXkNeV15jXldee15jXmSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImF1dG9fY2FwX3N1bW1hcnkiIG1zZ2lkPSI3OTM0NDUyNzYxMDIyOTQ2ODc0Ij4i15TXqdeq157XqSDXkdeQ15XXqiDXkteT15XXnNeUINeR157Xmdec15Qg15TXqNeQ16nXldeg15Qg16nXnCDXm9ecINee16nXpNeYIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iZWRpdF9wZXJzb25hbF9kaWN0aW9uYXJ5IiBtc2dpZD0iMzk5NjkxMDAzODk1Mjk0MDQyMCI+Itee15nXnNeV158g15DXmdep15kiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJjb25maWd1cmVfZGljdGlvbmFyaWVzX3RpdGxlIiBtc2dpZD0iNDIzODY1MjMzODU1NjkwMjA0OSI+IteU15XXodek16og157Xmdec15XXoNeZ150iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJtYWluX2RpY3Rpb25hcnkiIG1zZ2lkPSI0Nzk4NzYzNzgxODE4MzYxMTY4Ij4i157Xmdec15XXnyDXqNeQ16nXmSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InByZWZzX3Nob3dfc3VnZ2VzdGlvbnMiIG1zZ2lkPSI4MDI2Nzk5NjYzNDQ1NTMxNjM3Ij4i15TXpteSINeU16bXoteV16og15zXqteZ16fXldeg15nXnSI8L3N0cmluZz4KQEAgLTE3MSw4ICsxNzIsMjUgQEAKICAgICA8c3RyaW5nIG5hbWU9InJlYWRfZXh0ZXJuYWxfZGljdGlvbmFyeV9jb25maXJtX2luc3RhbGxfbWVzc2FnZSIgbXNnaWQ9IjY4OTg2MTAxNjM3Njg5ODA4NzAiPiLXlNeQ150g15HXkNee16og15zXlNeq16fXmdefINeQ16og15TXp9eV15HXpSDXlNeW15Qg16LXkdeV16ggPHhsaWZmOmcgaWQ9IkxPQ0FMRV9OQU1FIj4lczwveGxpZmY6Zz4/Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZXJyb3IiIG1zZ2lkPSI4OTQwNzYzNjI0NjY4NTEzNjQ4Ij4i15DXmdeo16LXlCDXqdeS15nXkNeUIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYnV0dG9uX2RlZmF1bHQiIG1zZ2lkPSIzOTg4MDE3ODQwNDMxODgxNDkxIj4i15HXqNeZ16jXqiDXnteX15PXnCI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Imxhbmd1YWdlX3NldHRpbmdzIiBtc2dpZD0iMTY3MTE1MzA1MzIwMTgwOTAzMSI+Itep16TXlCDXlden15zXmCI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InNlbGVjdF9pbnB1dF9tZXRob2QiIG1zZ2lkPSI0MzAxNjAyMzc0NjA5Mjc1MDAzIj4i15HXl9eZ16jXqiDXqdeZ15jXqiDXp9ec15giPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF93ZWxjb21lX3RpdGxlIiBtc2dpZD0iNjExMjgyMTcwOTgzMjAzMTcxNSI+IteR16jXldeaINeU15HXkCDXkNecIDx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF93ZWxjb21lX2FkZGl0aW9uYWxfZGVzY3JpcHRpb24iIG1zZ2lkPSI4MTUwMjUyMDA4NTQ1NzY4OTUzIj4i16LXnSDXlNen15zXk9eqINeU15fXnNen15QiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGFydF9hY3Rpb24iIG1zZ2lkPSI4OTM2MDM2NDYwODk3MzQ3NzA4Ij4i15TXqteX15wiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9uZXh0X2FjdGlvbiIgbXNnaWQ9IjM3MTgyMTQzNzkxNTE0NDYwMyI+IteU16nXnNeRINeU15HXkCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXBzX3RpdGxlIiBtc2dpZD0iNjQwMDM3MzAzNDg3MTgxNjE4MiI+IteU15LXk9eo16ogPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAxX3RpdGxlIiBtc2dpZD0iMzE0Nzk2NzYzMDI1MzQ2MjMxNSI+IteU16TXotecINeQ16ogPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAxX2luc3RydWN0aW9uIiBtc2dpZD0iMjU3ODYzMTkzNjYyNDYzNzI0MSI+Iteh157XnyDXkNeqIFwiPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPlwiINeR15TXkteT16jXldeqINeU16nXpNeUINeV15TXp9ec15gg16nXnNeaLiDXpNei15XXnNeUINeW15Ug16rXkNek16nXqCDXnNeVINec16TXoteV15wg15HXnteb16nXmdeoINep15zXmi4iPC9zdHJpbmc+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc2V0dXBfc3RlcDFfZmluaXNoZWRfaW5zdHJ1Y3Rpb24gKDEwNzYxNDgyMDA0OTU3OTk0KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDFfYWN0aW9uIiBtc2dpZD0iNDM2NjUxMzUzNDk5OTkwMTcyOCI+IteU16TXotecINeR15TXkteT16jXldeqIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDJfdGl0bGUiIG1zZ2lkPSI2ODYwNzI1NDQ3OTA2NjkwNTk0Ij4i16LXkdeV16gg15DXnCA8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDJfaW5zdHJ1Y3Rpb24iIG1zZ2lkPSI5MTQxNDgxOTY0ODcwMDIzMzM2Ij4i15HXqdec15Eg15TXkdeQLCDXkdeX16gg15EtXCc8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+XCcg15vXkNee16bXoteZINeU16fXnNeYINeU16TXoteZ15wg15zXlNeW16DXqiDXmNen16HXmC4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMl9hY3Rpb24iIG1zZ2lkPSIxNjYwMzMwMzA3MTU5ODI0MzM3Ij4i15TXl9ec16Mg16nXmdeY15XXqiDXp9ec15giPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwM190aXRsZSIgbXNnaWQ9IjMxNTQ3NTcxODM2MzE0OTAyODEiPiLXkdeo15vXldeq15nXoNeVLCDXlNeb15wg157Xldeb158hIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDNfaW5zdHJ1Y3Rpb24iIG1zZ2lkPSI4MDI1OTgxODI5NjA1NDI2MDAwIj4i15vXoteqINeq15XXm9ecINec15TXp9ec15nXkyDXkdeb15wg15TXmdeZ16nXldee15nXnSDXlNee15XXoteT16TXmdedINei15zXmdeaINeR15DXntem16LXldeqIDx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz4uIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDNfYWN0aW9uIiBtc2dpZD0iNjAwODc5Nzk3MjU2OTQyMjU5Ij4i15TXkteT16gg16nXpNeV16og16DXldeh16TXldeqIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfZmluaXNoX2FjdGlvbiIgbXNnaWQ9IjI3NjU1OTI0MzQwOTQ2NTM4OSI+Iteh15nXldedIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2hvd19zZXR1cF93aXphcmRfaWNvbiIgbXNnaWQ9IjUwMDgwMjg1OTA1OTM3MTA4MzAiPiLXlNem15Ig15DXqiDXodee15wg15TXmdeZ16nXldedIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2hvd19zZXR1cF93aXphcmRfaWNvbl9zdW1tYXJ5IiBtc2dpZD0iNDExOTk5ODMyMjUzNjg4MDIxMyI+IteU16bXkiDXkNeqINeh157XnCDXlNeZ15nXqdeV150g15HXntek16LXmdecIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYXBwX25hbWUiIG1zZ2lkPSI2MzIwMTAyNjM3NDkxMjM0NzkyIj4i16HXpNenINeU157Xmdec15XXnyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRpY3Rpb25hcnlfcHJvdmlkZXJfbmFtZSIgbXNnaWQ9IjMwMjczMTUwNDUzOTczNjMwNzkiPiLXodek16cg15TXnteZ15zXldefIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGljdGlvbmFyeV9zZXJ2aWNlX25hbWUiIG1zZ2lkPSI2MjM3NDcyMzUwNjkzNTExNDQ4Ij4i16nXmdeo15XXqiDXnteZ15zXldefIjwvc3RyaW5nPgpAQCAtMjAzLDQgKzIyMSw2IEBACiAgICAgPHN0cmluZyBuYW1lPSJkaWN0X2F2YWlsYWJsZV9ub3RpZmljYXRpb25fdGl0bGUiIG1zZ2lkPSI2NTE0Mjg4NTkxOTU5MTE3Mjg4Ij4i15nXqSDXnteZ15zXldefINeW157XmdefINei15HXldeoIDx4bGlmZjpnIGlkPSJMQU5HVUFHRSI+JTEkczwveGxpZmY6Zz4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkaWN0X2F2YWlsYWJsZV9ub3RpZmljYXRpb25fZGVzY3JpcHRpb24iIG1zZ2lkPSIxMDc1MTk0MTY5NDQzMTYzNDg3Ij4i15zXl9elINeb15PXmSDXnNei15nXmdefINeV15zXlNeV16jXmdeTIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idG9hc3RfZG93bmxvYWRpbmdfc3VnZ2VzdGlvbnMiIG1zZ2lkPSIxMzEzMDI3MzUzNTg4NTY2NjYwIj4i157Xldeo15nXkzog15TXptei15XXqiDXkTx4bGlmZjpnIGlkPSJMQU5HVUFHRSI+JTEkczwveGxpZmY6Zz4g15nXlNeZ15Ug157Xldeb16DXldeqINeR16fXqNeV15EuIjwvc3RyaW5nPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHZlcnNpb25fdGV4dCAoMjcxNTM1NDIxNTU2ODQ2OTM4NSkgLS0+CisgICAgPHNraXAgLz4KIDwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvamF2YS9yZXMvdmFsdWVzLWphL3N0cmluZ3MueG1sIGIvamF2YS9yZXMvdmFsdWVzLWphL3N0cmluZ3MueG1sCmluZGV4IDI2NzE0OGMuLjAyNDdlNmIgMTAwNjQ0Ci0tLSBhL2phdmEvcmVzL3ZhbHVlcy1qYS9zdHJpbmdzLnhtbAorKysgYi9qYXZhL3Jlcy92YWx1ZXMtamEvc3RyaW5ncy54bWwKQEAgLTUzLDYgKzUzLDggQEAKICAgICA8c3RyaW5nIG5hbWU9InVzZV9kb3VibGVfc3BhY2VfcGVyaW9kX3N1bW1hcnkiIG1zZ2lkPSI2NTMyODkyMTg3MjQ3OTUyNzk5Ij4i44K544Oa44O844K544OQ44O844KS44OA44OW44Or44K/44OD44OX44GZ44KL44Go44OU44Oq44Kq44OJ44Go44K544Oa44O844K544KS5oy/5YWl44Gn44GN44G+44GZIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYXV0b19jYXAiIG1zZ2lkPSIxNzE5NzQ2Njc0ODU0NjI4MjUyIj4i6Ieq5YuV5aSn5paH5a2X5aSJ5o+bIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYXV0b19jYXBfc3VtbWFyeSIgbXNnaWQ9Ijc5MzQ0NTI3NjEwMjI5NDY4NzQiPiLoi7HlrZflhaXlipvjgaflkITmlofjga7mnIDliJ3jga7ljZjoqp7jgpLlpKfmloflrZfjgavjgZfjgb7jgZkiPC9zdHJpbmc+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgZWRpdF9wZXJzb25hbF9kaWN0aW9uYXJ5ICgzOTk2OTEwMDM4OTUyOTQwNDIwKSAtLT4KKyAgICA8c2tpcCAvPgogICAgIDxzdHJpbmcgbmFtZT0iY29uZmlndXJlX2RpY3Rpb25hcmllc190aXRsZSIgbXNnaWQ9IjQyMzg2NTIzMzg1NTY5MDIwNDkiPiLjgqLjg4njgqrjg7Povp7mm7giPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJtYWluX2RpY3Rpb25hcnkiIG1zZ2lkPSI0Nzk4NzYzNzgxODE4MzYxMTY4Ij4i44Oh44Kk44Oz6L6e5pu4Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icHJlZnNfc2hvd19zdWdnZXN0aW9ucyIgbXNnaWQ9IjgwMjY3OTk2NjM0NDU1MzE2MzciPiLkv67mraPlgJnoo5zjgpLooajnpLrjgZnjgosiPC9zdHJpbmc+CkBAIC0xNzEsOCArMTczLDI3IEBACiAgICAgPHN0cmluZyBuYW1lPSJyZWFkX2V4dGVybmFsX2RpY3Rpb25hcnlfY29uZmlybV9pbnN0YWxsX21lc3NhZ2UiIG1zZ2lkPSI2ODk4NjEwMTYzNzY4OTgwODcwIj4i44GT44GuPHhsaWZmOmcgaWQ9IkxPQ0FMRV9OQU1FIj4lczwveGxpZmY6Zz7jga7jg5XjgqHjgqTjg6vjgpLjgqTjg7Pjgrnjg4jjg7zjg6vjgZfjgabjgoLjgojjgo3jgZfjgYTjgafjgZnjgYvvvJ8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJlcnJvciIgbXNnaWQ9Ijg5NDA3NjM2MjQ2Njg1MTM2NDgiPiLjgqjjg6njg7zjgYznmbrnlJ/jgZfjgb7jgZfjgZ8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJidXR0b25fZGVmYXVsdCIgbXNnaWQ9IjM5ODgwMTc4NDA0MzE4ODE0OTEiPiLjg4fjg5Xjgqnjg6vjg4giPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJsYW5ndWFnZV9zZXR0aW5ncyIgbXNnaWQ9IjE2NzExNTMwNTMyMDE4MDkwMzEiPiLoqIDoqp7jgajlhaXlipsiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJzZWxlY3RfaW5wdXRfbWV0aG9kIiBtc2dpZD0iNDMwMTYwMjM3NDYwOTI3NTAwMyI+IuWFpeWKm+aWueazleOBrumBuOaKniI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3dlbGNvbWVfdGl0bGUiIG1zZ2lkPSI2MTEyODIxNzA5ODMyMDMxNzE1Ij4iPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPuOBuOOCiOOBhuOBk+OBnSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3dlbGNvbWVfYWRkaXRpb25hbF9kZXNjcmlwdGlvbiIgbXNnaWQ9IjgxNTAyNTIwMDg1NDU3Njg5NTMiPiLjgrjjgqfjgrnjg4Hjg6Pjg7zlhaXlipvjga7kvb/nlKgiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGFydF9hY3Rpb24iIG1zZ2lkPSI4OTM2MDM2NDYwODk3MzQ3NzA4Ij4i6ZaL5aeLIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfbmV4dF9hY3Rpb24iIG1zZ2lkPSIzNzE4MjE0Mzc5MTUxNDQ2MDMiPiLmrKHjga7jgrnjg4bjg4Pjg5ciPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwc190aXRsZSIgbXNnaWQ9IjY0MDAzNzMwMzQ4NzE4MTYxODIiPiI8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+44Gu6Kit5a6aIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDFfdGl0bGUiIG1zZ2lkPSIzMTQ3OTY3NjMwMjUzNDYyMzE1Ij4iPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPuOBruacieWKueWMliI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAxX2luc3RydWN0aW9uIiBtc2dpZD0iMjU3ODYzMTkzNjYyNDYzNzI0MSI+IlvoqIDoqp7jgajlhaXliptd44GnWzx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz5d44Gu44OB44Kn44OD44Kv44Oc44OD44Kv44K544KS44Kq44Oz44Gr44GX44Gm44GP44Gg44GV44GE44CC44GT44KM44Gn44CB56uv5pyr44Gn44Ki44OX44Oq44KS5a6f6KGM44Gn44GN44KL44KI44GG44Gr44Gq44KK44G+44GZ44CCIjwvc3RyaW5nPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNldHVwX3N0ZXAxX2ZpbmlzaGVkX2luc3RydWN0aW9uICgxMDc2MTQ4MjAwNDk1Nzk5NCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAxX2FjdGlvbiIgbXNnaWQ9IjQzNjY1MTM1MzQ5OTk5MDE3MjgiPiLoqK3lrprjgafjga7mnInlirnljJYiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMl90aXRsZSIgbXNnaWQ9IjY4NjA3MjU0NDc5MDY2OTA1OTQiPiI8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+44G444Gu5YiH44KK5pu/44GIIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDJfaW5zdHJ1Y3Rpb24iIG1zZ2lkPSI5MTQxNDgxOTY0ODcwMDIzMzM2Ij4i5qyh44Gr44CB5pyJ5Yq544Gq44OG44Kt44K544OI5YWl5Yqb5pa55rOV44Go44GX44Gm44CMPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPuOAjeOCkumBuOaKnuOBl+OBvuOBmeOAgiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAyX2FjdGlvbiIgbXNnaWQ9IjE2NjAzMzAzMDcxNTk4MjQzMzciPiLlhaXlipvmlrnms5XjgpLliIfjgormm7/jgYjjgosiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwM190aXRsZSIgbXNnaWQ9IjMxNTQ3NTcxODM2MzE0OTAyODEiPiLoqK3lrprlrozkuoYiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwM19pbnN0cnVjdGlvbiIgbXNnaWQ9IjgwMjU5ODE4Mjk2MDU0MjYwMDAiPiLjgZPjgozjgafjgIHjgYrmsJfjgavlhaXjgorjga7jgZnjgbnjgabjga7jgqLjg5fjg6rjgac8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+44KS5L2/55So44GX44Gm5YWl5Yqb44Gn44GN44G+44GZ44CCIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDNfYWN0aW9uIiBtc2dpZD0iNjAwODc5Nzk3MjU2OTQyMjU5Ij4i5Yil44Gu6KiA6Kqe44KS6Kit5a6a44GZ44KLIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfZmluaXNoX2FjdGlvbiIgbXNnaWQ9IjI3NjU1OTI0MzQwOTQ2NTM4OSI+IuWujOS6hiI8L3N0cmluZz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzaG93X3NldHVwX3dpemFyZF9pY29uICg1MDA4MDI4NTkwNTkzNzEwODMwKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNob3dfc2V0dXBfd2l6YXJkX2ljb25fc3VtbWFyeSAoNDExOTk5ODMyMjUzNjg4MDIxMykgLS0+CisgICAgPHNraXAgLz4KICAgICA8c3RyaW5nIG5hbWU9ImFwcF9uYW1lIiBtc2dpZD0iNjMyMDEwMjYzNzQ5MTIzNDc5MiI+Iui+nuabuOaPkOS+m+WFgyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRpY3Rpb25hcnlfcHJvdmlkZXJfbmFtZSIgbXNnaWQ9IjMwMjczMTUwNDUzOTczNjMwNzkiPiLovp7mm7jmj5DkvpvlhYMiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkaWN0aW9uYXJ5X3NlcnZpY2VfbmFtZSIgbXNnaWQ9IjYyMzc0NzIzNTA2OTM1MTE0NDgiPiLovp7mm7giPC9zdHJpbmc+CkBAIC0yMDMsNCArMjI0LDYgQEAKICAgICA8c3RyaW5nIG5hbWU9ImRpY3RfYXZhaWxhYmxlX25vdGlmaWNhdGlvbl90aXRsZSIgbXNnaWQ9IjY1MTQyODg1OTE5NTkxMTcyODgiPiI8eGxpZmY6ZyBpZD0iTEFOR1VBR0UiPiUxJHM8L3hsaWZmOmc+44Gu6L6e5pu444KS5Yip55So44Gn44GN44G+44GZIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGljdF9hdmFpbGFibGVfbm90aWZpY2F0aW9uX2Rlc2NyaXB0aW9uIiBtc2dpZD0iMTA3NTE5NDE2OTQ0MzE2MzQ4NyI+IuaKvOOBmeOBqOeiuuiqjS/jg4Djgqbjg7Pjg63jg7zjg4njgafjgY3jgb7jgZkiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ0b2FzdF9kb3dubG9hZGluZ19zdWdnZXN0aW9ucyIgbXNnaWQ9IjEzMTMwMjczNTM1ODg1NjY2NjAiPiLjg4Djgqbjg7Pjg63jg7zjg4nkuK06IDx4bGlmZjpnIGlkPSJMQU5HVUFHRSI+JTEkczwveGxpZmY6Zz7jga7lhaXlipvlgJnoo5zjgpLjgb7jgoLjgarjgY/liKnnlKjjgafjgY3jgb7jgZnjgIIiPC9zdHJpbmc+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgdmVyc2lvbl90ZXh0ICgyNzE1MzU0MjE1NTY4NDY5Mzg1KSAtLT4KKyAgICA8c2tpcCAvPgogPC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9qYXZhL3Jlcy92YWx1ZXMta2Evc3RyaW5ncy54bWwgYi9qYXZhL3Jlcy92YWx1ZXMta2Evc3RyaW5ncy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTRmMTVlZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvcmVzL3ZhbHVlcy1rYS9zdHJpbmdzLnhtbApAQCAtMCwwICsxLDQyMCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzwhLS0gCisvKgorKioKKyoqIENvcHlyaWdodCAyMDA4LCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisqKgorKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyoqCisqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisqKgorKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisqLworIC0tPgorCis8cmVzb3VyY2VzIHhtbG5zOmFuZHJvaWQ9Imh0dHA6Ly9zY2hlbWFzLmFuZHJvaWQuY29tL2Fway9yZXMvYW5kcm9pZCIKKyAgICB4bWxuczp4bGlmZj0idXJuOm9hc2lzOm5hbWVzOnRjOnhsaWZmOmRvY3VtZW50OjEuMiI+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgYW9zcF9hbmRyb2lkX2tleWJvYXJkX2ltZV9uYW1lICg4MjUwOTkyNjEzNjE2NzkyMzIxKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGFvc3BfYW5kcm9pZF9rZXlib2FyZF9pbWVfc2V0dGluZ3MgKDQyMzYxNTg3NzE3NDg1MDI2NykgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBhb3NwX3NwZWxsX2NoZWNrZXJfc2VydmljZV9uYW1lICg1MTE5NTA0NzcxOTk5NDgwNDgpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgYW9zcF9hbmRyb2lkX3NwZWxsX2NoZWNrZXJfc2VydmljZV9zZXR0aW5ncyAoMjk3MDUzNTg5NDMyNzI4ODQyMSkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBlbmdsaXNoX2ltZV9pbnB1dF9vcHRpb25zICgzOTA5OTQ1NjEyOTM5NjY4NTU0KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGVuZ2xpc2hfaW1lX3Jlc2VhcmNoX2xvZyAoODQ5MjYwMjI5NTY5NjU3Nzg1MSkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciB1c2VfY29udGFjdHNfZm9yX3NwZWxsY2hlY2tpbmdfb3B0aW9uX3RpdGxlICg1Mzc0MTIwOTk4MTI1MzUzODk4KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHVzZV9jb250YWN0c19mb3Jfc3BlbGxjaGVja2luZ19vcHRpb25fc3VtbWFyeSAoODc1NDQxMzM4MjU0MzMwNzcxMykgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciB2aWJyYXRlX29uX2tleXByZXNzICg1MjU4MDc5NDk0Mjc2OTU1NDYwKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNvdW5kX29uX2tleXByZXNzICg2MDkzNTkyMjk3MTk4MjQzNjQ0KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHBvcHVwX29uX2tleXByZXNzICgxMjM4OTQ4MTU3MjM1MTI5NDQpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgZ2VuZXJhbF9jYXRlZ29yeSAoMTg1OTA4ODQ2NzAxNzU3MzE5NSkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBjb3JyZWN0aW9uX2NhdGVnb3J5ICgyMjM2NzUwOTE1MDU2NjA3NjEzKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGdlc3R1cmVfdHlwaW5nX2NhdGVnb3J5ICg0OTcyNjM2MTIxMzA1MzI2MzApIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgbWlzY19jYXRlZ29yeSAoNjg5NDE5MjgxNDg2ODIzMzQ1MykgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBhZHZhbmNlZF9zZXR0aW5ncyAoMzYyODk1MTQ0NDk1NTkxNDYzKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGFkdmFuY2VkX3NldHRpbmdzX3N1bW1hcnkgKDQ0ODc5ODA0NTYxNTI4MzAyNzEpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgaW5jbHVkZV9vdGhlcl9pbWVzX2luX2xhbmd1YWdlX3N3aXRjaF9saXN0ICg0NTMzNjg5OTYwMzA4NTY1NTE5KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGluY2x1ZGVfb3RoZXJfaW1lc19pbl9sYW5ndWFnZV9zd2l0Y2hfbGlzdF9zdW1tYXJ5ICg4NDA2MzcxMjkxMDMzMTc2MzUpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc2hvd19sYW5ndWFnZV9zd2l0Y2hfa2V5ICg1OTE1NDc4ODI4MzE4Nzc0Mzg0KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNob3dfbGFuZ3VhZ2Vfc3dpdGNoX2tleV9zdW1tYXJ5ICg3MzQzNDAzNjQ3NDc0MjY1NzEzKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNsaWRpbmdfa2V5X2lucHV0X3ByZXZpZXcgKDY2MDQyNjIzNTk1MTAwNjgzNzApIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc2xpZGluZ19rZXlfaW5wdXRfcHJldmlld19zdW1tYXJ5ICg2MzQwNTI0MzQ1NzI5MDkzODg2KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGtleV9wcmV2aWV3X3BvcHVwX2Rpc21pc3NfZGVsYXkgKDYyMTMxNjQ4OTc0NDMwNjgyNDgpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Iga2V5X3ByZXZpZXdfcG9wdXBfZGlzbWlzc19ub19kZWxheSAoMjA5NjEyMzE1MTU3MTQ1ODA2NCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBrZXlfcHJldmlld19wb3B1cF9kaXNtaXNzX2RlZmF1bHRfZGVsYXkgKDIxNjY5NjQzMzM5MDM5MDY3MzQpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgYWJicmV2aWF0aW9uX3VuaXRfbWlsbGlzZWNvbmRzICg4NzAwMjg2MDk0MDI4MzIzMzYzKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHVzZV9jb250YWN0c19kaWN0ICg0NDM1MzE3OTc3ODA0MTgwODE1KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHVzZV9jb250YWN0c19kaWN0X3N1bW1hcnkgKDY1OTk5ODMzMzQ1MDc4Nzk5NTkpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgdXNlX2RvdWJsZV9zcGFjZV9wZXJpb2QgKDg3ODE1Mjk5Njk0MjUwODI4NjApIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgdXNlX2RvdWJsZV9zcGFjZV9wZXJpb2Rfc3VtbWFyeSAoNjUzMjg5MjE4NzI0Nzk1Mjc5OSkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBhdXRvX2NhcCAoMTcxOTc0NjY3NDg1NDYyODI1MikgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBhdXRvX2NhcF9zdW1tYXJ5ICg3OTM0NDUyNzYxMDIyOTQ2ODc0KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGVkaXRfcGVyc29uYWxfZGljdGlvbmFyeSAoMzk5NjkxMDAzODk1Mjk0MDQyMCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBjb25maWd1cmVfZGljdGlvbmFyaWVzX3RpdGxlICg0MjM4NjUyMzM4NTU2OTAyMDQ5KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIG1haW5fZGljdGlvbmFyeSAoNDc5ODc2Mzc4MTgxODM2MTE2OCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBwcmVmc19zaG93X3N1Z2dlc3Rpb25zICg4MDI2Nzk5NjYzNDQ1NTMxNjM3KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHByZWZzX3Nob3dfc3VnZ2VzdGlvbnNfc3VtbWFyeSAoMTU4MzEzMjI3OTQ5ODUwMjgyNSkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBwcmVmc19zdWdnZXN0aW9uX3Zpc2liaWxpdHlfc2hvd19uYW1lICgzMjE5OTE2NTk0MDY3NTUxMzAzKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHByZWZzX3N1Z2dlc3Rpb25fdmlzaWJpbGl0eV9zaG93X29ubHlfcG9ydHJhaXRfbmFtZSAoMzg1OTc4Mzc2NzQzNTIzOTExOCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBwcmVmc19zdWdnZXN0aW9uX3Zpc2liaWxpdHlfaGlkZV9uYW1lICg2MzA5MTQzOTI2NDIyMjM0NjczKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGF1dG9fY29ycmVjdGlvbiAoNzYzMDcyMDg4NTE5NDk5Njk1MCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBhdXRvX2NvcnJlY3Rpb25fc3VtbWFyeSAoNTYyNTc1MTU1MTEzNDY1ODAwNikgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBhdXRvX2NvcnJlY3Rpb25fdGhyZXNob2xkX21vZGVfb2ZmICg4NDcwODgyNjY1NDE3OTQ0MDI2KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGF1dG9fY29ycmVjdGlvbl90aHJlc2hvbGRfbW9kZV9tb2Rlc3QgKDg3ODgzNjY2OTA2MjA3OTkwOTcpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgYXV0b19jb3JyZWN0aW9uX3RocmVzaG9sZF9tb2RlX2FnZ2VyZXNzaXZlICgzNTI0MDI5MTAzNzM0OTIzODE5KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGF1dG9fY29ycmVjdGlvbl90aHJlc2hvbGRfbW9kZV92ZXJ5X2FnZ2VyZXNzaXZlICgzMzg2NzgyMjM1NTQwNTQ3Njc4KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGJpZ3JhbV9wcmVkaWN0aW9uICgxMDg0NDQ5MTg3NzIzOTQ4NTUwKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGJpZ3JhbV9wcmVkaWN0aW9uX3N1bW1hcnkgKDM4OTYzNjI2ODI3NTExMDk2NzcpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgZ2VzdHVyZV9pbnB1dCAoODI2OTUxMTUyMjU0NTYzODI3KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGdlc3R1cmVfaW5wdXRfc3VtbWFyeSAoOTE4MDM1MDYzOTMwNTczMTIzMSkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBnZXN0dXJlX3ByZXZpZXdfdHJhaWwgKDM4MDIzMzMzNjkzMzU3MjIyMjEpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgZ2VzdHVyZV9mbG9hdGluZ19wcmV2aWV3X3RleHQgKDQ0NDMyNDAzMzQ3MzkzODEwNTMpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgZ2VzdHVyZV9mbG9hdGluZ19wcmV2aWV3X3RleHRfc3VtbWFyeSAoNDQ3MjY5NjIxMzk5NjIwMzUzMykgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBhZGRlZF93b3JkICg4OTkzODgzMzU0NjIyNDg0MzcyKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDxzdHJpbmcgbmFtZT0ibGFiZWxfZ29fa2V5IiBtc2dpZD0iMTYzNTE0ODA4MjEzNzIxOTE0OCI+IuGDkuGDkOGDk+GDkOGDoeGDleGDmuGDkCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImxhYmVsX25leHRfa2V5IiBtc2dpZD0iMzYyOTcyODQ0NTI1NjcyNTY4Ij4i4YOo4YOU4YOb4YOT4YOU4YOS4YOYIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibGFiZWxfcHJldmlvdXNfa2V5IiBtc2dpZD0iMTIxMTg2ODExODA3MTM4Njc4NyI+IuGDrOGDmOGDnOGDkCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImxhYmVsX2RvbmVfa2V5IiBtc2dpZD0iMjQ0MTU3ODc0ODc3MjUyOTI4OCI+IuGDqOGDlOGDoeGDoOGDo+GDmuGDlOGDkeGDo+GDmuGDmOGDkCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImxhYmVsX3NlbmRfa2V5IiBtc2dpZD0iMjgxNTA1NjUzNDQzMzcxNzQ0NCI+IuGDkuGDkOGDkuGDluGDkOGDleGDnOGDkCI8L3N0cmluZz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBsYWJlbF9wYXVzZV9rZXkgKDE4MTA5ODMwODQyODAzNTM0MCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBsYWJlbF93YWl0X2tleSAoNjQwMjE1MjYwMDg3ODA5MzEzNCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzcG9rZW5fdXNlX2hlYWRwaG9uZXMgKDg5Njk2MTc4MTI4NzI4MzQ5MykgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzcG9rZW5fY3VycmVudF90ZXh0X2lzICgyNDg1NzIzMDExMjcyNTgzODQ1KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNwb2tlbl9ub190ZXh0X2VudGVyZWQgKDc0Nzk2ODUyMjU1OTczNDQ0OTYpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc3Bva2VuX2Rlc2NyaXB0aW9uX3Vua25vd24gKDMxOTc0MzQwMTA0MDIxNzkxNTcpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc3Bva2VuX2Rlc2NyaXB0aW9uX3NoaWZ0ICgyNDQxOTc4ODMyOTI1NDkzMDgpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc3Bva2VuX2Rlc2NyaXB0aW9uX3NoaWZ0X3NoaWZ0ZWQgKDE2ODE4NzczMjMzNDQxOTUwMzUpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc3Bva2VuX2Rlc2NyaXB0aW9uX2NhcHNfbG9jayAoMzI3NjQ3ODI2OTUyNjMwNDQzMikgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzcG9rZW5fZGVzY3JpcHRpb25fZGVsZXRlICg4NzQwMzc2OTQ0Mjc2MTk5ODAxKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNwb2tlbl9kZXNjcmlwdGlvbl90b19zeW1ib2wgKDU0ODYzNDAxMDc1MDA0NDg5NjkpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc3Bva2VuX2Rlc2NyaXB0aW9uX3RvX2FscGhhICgyMzEyOTMzODgxOTc3MTgwNykgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzcG9rZW5fZGVzY3JpcHRpb25fdG9fbnVtZXJpYyAoNTkxNzUyMDkyNjg1MTYxNzMyKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNwb2tlbl9kZXNjcmlwdGlvbl9zZXR0aW5ncyAoNDYyNzQ2MjY4OTYwMzgzODA5OSkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzcG9rZW5fZGVzY3JpcHRpb25fdGFiICgyNjY3NzE2MDAyNjYzNDgyMjQ4KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNwb2tlbl9kZXNjcmlwdGlvbl9zcGFjZSAoMjU4MjUyMTA1MDA0OTg2MDg1OSkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzcG9rZW5fZGVzY3JpcHRpb25fbWljICg2MTU1MzY3NDg4ODI2MTE5NTApIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc3Bva2VuX2Rlc2NyaXB0aW9uX3NtaWxleSAoMjI1NjMwOTgyNjIwMDExMzkxOCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzcG9rZW5fZGVzY3JpcHRpb25fcmV0dXJuICg4MTc4MDgzMTc3MjM4MzE1NjQ3KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNwb2tlbl9kZXNjcmlwdGlvbl9zZWFyY2ggKDEyNDcyMzYxNjM3NTU5MjA4MDgpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc3Bva2VuX2Rlc2NyaXB0aW9uX2RvdCAoNDA3MTEwODI0MzUyMzE2NzMpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc3Bva2VuX2Rlc2NyaXB0aW9uX2xhbmd1YWdlX3N3aXRjaCAoNTUwNzA5MTMyODIyMjMzMTMxNikgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzcG9rZW5fZGVzY3JpcHRpb25fYWN0aW9uX25leHQgKDg2MzYwNzgyNzY2NjQxNTAzMjQpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc3Bva2VuX2Rlc2NyaXB0aW9uX2FjdGlvbl9wcmV2aW91cyAoODAwODcyNDE1MDA5MzM2MjA4KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNwb2tlbl9kZXNjcmlwdGlvbl9zaGlmdG1vZGVfb24gKDU3MDA0NDA3OTg2MDk1NzQ1ODkpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc3Bva2VuX2Rlc2NyaXB0aW9uX3NoaWZ0bW9kZV9sb2NrZWQgKDU5MzE3NTgwMzE4MTcwMTgzMCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzcG9rZW5fZGVzY3JpcHRpb25fc2hpZnRtb2RlX29mZiAoNjU3MjE5OTk4NDQ5MTc0ODA4KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNwb2tlbl9kZXNjcmlwdGlvbl9tb2RlX3N5bWJvbCAoNzE4MzM0Mzg3OTkwOTc0NzY0MikgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzcG9rZW5fZGVzY3JpcHRpb25fbW9kZV9hbHBoYSAoMzUyODMwNzY3NDM5MDE1Njk1NikgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzcG9rZW5fZGVzY3JpcHRpb25fbW9kZV9waG9uZSAoNjUyMDIwNzk0MzEzMjAyNjI2NCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzcG9rZW5fZGVzY3JpcHRpb25fbW9kZV9waG9uZV9zaGlmdCAoNTQ5OTYyOTc1Mzk2MjY0MTIyNykgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBhbm5vdW5jZV9rZXlib2FyZF9oaWRkZW4gKDg3MTg5Mjc4MzU1MzE0Mjk4MDcpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgYW5ub3VuY2Vfa2V5Ym9hcmRfbW9kZSAoNDcyOTA4MTA1NTQzODUwODMyMSkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBrZXlib2FyZF9tb2RlX2RhdGUgKDMxMzc1MjAxNjY4MTcxMjgxMDIpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Iga2V5Ym9hcmRfbW9kZV9kYXRlX3RpbWUgKDMzOTU5MzM1ODQ4ODg1MTA3MikgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBrZXlib2FyZF9tb2RlX2VtYWlsICg2MjE2MjQ4MDc4MTI4Mjk0MjYyKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGtleWJvYXJkX21vZGVfaW0gKDExMzc0MDUwODk3NjY1NTcwNDgpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Iga2V5Ym9hcmRfbW9kZV9udW1iZXIgKDc5OTE2MjM0NDA2OTk5NTcwNjkpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Iga2V5Ym9hcmRfbW9kZV9waG9uZSAoNjg1MTYyNzUyNzQwMTQzMzIyOSkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBrZXlib2FyZF9tb2RlX3RleHQgKDY0Nzk0MzY2ODc4OTk3MDE2MTkpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Iga2V5Ym9hcmRfbW9kZV90aW1lICg0MzgxODU2ODg1NTgyMTQzMjc3KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGtleWJvYXJkX21vZGVfdXJsICgxNTE5ODE5ODM1NTE0OTExMjE4KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHZvaWNlX2lucHV0ICgzNTgzMjU4NTgzNTIxMzk3NTQ4KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHZvaWNlX2lucHV0X21vZGVzX21haW5fa2V5Ym9hcmQgKDMzNjA2NjAzNDExMjEwODMxNzQpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igdm9pY2VfaW5wdXRfbW9kZXNfc3ltYm9sc19rZXlib2FyZCAoNzIwMzIxMzI0MDc4NjA4NDA2NykgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciB2b2ljZV9pbnB1dF9tb2Rlc19vZmYgKDM3NDU2OTk3NDgyMTgwODIwMTQpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igdm9pY2VfaW5wdXRfbW9kZXNfc3VtbWFyeV9tYWluX2tleWJvYXJkICg2NTg2NTQ0MjkyOTAwMzE0MzM5KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHZvaWNlX2lucHV0X21vZGVzX3N1bW1hcnlfc3ltYm9sc19rZXlib2FyZCAoNTIzMzcyNTkyNzI4MTkzMjM5MSkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciB2b2ljZV9pbnB1dF9tb2Rlc19zdW1tYXJ5X29mZiAoNjM4NzU2MDk1OTE4OTc2MDcpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgY29uZmlndXJlX2lucHV0X21ldGhvZCAoMzczMzU2MjcwMjkwNzQyNDU5KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGxhbmd1YWdlX3NlbGVjdGlvbl90aXRsZSAoMTY1MTI5OTU5ODU1NTMyNjc1MCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzZW5kX2ZlZWRiYWNrICgxNzgwNDMxODg0MTA5MzkyMDQ2KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNlbGVjdF9sYW5ndWFnZSAoMzY5MzgxNTU4ODc3NzkyNjg0OCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBoaW50X2FkZF90b19kaWN0aW9uYXJ5ICg1NzM2Nzg2NTY5NDYwODUzODApIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgaGFzX2RpY3Rpb25hcnkgKDYwNzE4NDc5NzM0NjY2MjUwMDcpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgcHJlZnNfZW5hYmxlX2xvZyAoNjYyMDQyNDUwNTA3Mjk2MzU1NykgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBwcmVmc19kZXNjcmlwdGlvbl9sb2cgKDc1MjUyMjU1ODQ1NTU0MjkyMTEpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Iga2V5Ym9hcmRfbGF5b3V0ICg4NDUxMTY0NzgzNTEwNDg3NTAxKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHN1YnR5cGVfZW5fR0IgKDg4MTcwNjAxOTQyMzExMzU1KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHN1YnR5cGVfZW5fVVMgKDYxNjA0NTIzMzY2MzQ1MzQyMzkpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc3VidHlwZV9lc19VUyAoNTU4MzE0NTE5MTQzMDE4MDIwMCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzdWJ0eXBlX3dpdGhfbGF5b3V0X2VuX0dCICgyMTc5MDk3NzQ4NzI0NzI1OTA2KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHN1YnR5cGVfd2l0aF9sYXlvdXRfZW5fVVMgKDEzNjI1ODEzNDc1NzY3MTQ1NzkpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc3VidHlwZV93aXRoX2xheW91dF9lc19VUyAoNjI2MTc5MTA1NzAwNzg5MDE4OSkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzdWJ0eXBlX25vX2xhbmd1YWdlICgxNDE0MjA4NTc4MDg4MDE3NDYpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc3VidHlwZV9ub19sYW5ndWFnZV9xd2VydHkgKDI5NTYxMjE0NTE2MTY2MzMxMzMpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc3VidHlwZV9ub19sYW5ndWFnZV9xd2VydHogKDExNzc4NDgxNzIzOTcyMDI4OTApIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc3VidHlwZV9ub19sYW5ndWFnZV9hemVydHkgKDg3MjE0NjA5NjgxNDExODczOTQpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc3VidHlwZV9ub19sYW5ndWFnZV9kdm9yYWsgKDMxMjI5NzY3Mzc2Njk4MjM5MzUpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc3VidHlwZV9ub19sYW5ndWFnZV9jb2xlbWFrICg0MjA1OTkyOTk0OTA2MDk3MjQ0KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHN1YnR5cGVfbm9fbGFuZ3VhZ2VfcGNxd2VydHkgKDg4NDA5MjgzNzQzOTQxODAxODkpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgY3VzdG9tX2lucHV0X3N0eWxlc190aXRsZSAoODQyOTk1MjQ0MTgyMTI1MTUxMikgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBhZGRfc3R5bGUgKDYxNjMxMjY2MTQ1MTQ0ODk5NTEpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgYWRkICg4Mjk5Njk5ODA1Njg4MDE3Nzk4KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHJlbW92ZSAoNDQ4NjA4MTY1ODc1Mjk0NDYwNikgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzYXZlICg3NjQ2NzM4NTk3MTk2NzY3MjE0KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHN1YnR5cGVfbG9jYWxlICg4NTc2NDQzNDQwNzM4MTQzNzY0KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGtleWJvYXJkX2xheW91dF9zZXQgKDQzMDkyMzM2OTgxOTQ1NjU2MDkpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgY3VzdG9tX2lucHV0X3N0eWxlX25vdGVfbWVzc2FnZSAoODgyNjczMTMyMDg0NjM2MzQyMykgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBlbmFibGUgKDUwMzEyOTQ0NDQ2MzA1MjMyNDcpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igbm90X25vdyAoNjE3MjQ2Mjg4ODIwMjc5MDQ4MikgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBjdXN0b21faW5wdXRfc3R5bGVfYWxyZWFkeV9leGlzdHMgKDgwMDg3Mjg5NTIyMTU0NDk3MDcpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgcHJlZnNfdXNhYmlsaXR5X3N0dWR5X21vZGUgKDEyNjExMzA1NTUxMzQ1OTUyNTQpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgcHJlZnNfa2V5X2xvbmdwcmVzc190aW1lb3V0X3NldHRpbmdzICg2MTAyMjQwMjk4OTMyODk3ODczKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHByZWZzX2tleXByZXNzX3ZpYnJhdGlvbl9kdXJhdGlvbl9zZXR0aW5ncyAoNzkxODM0MTQ1OTk0NzQzOTIyNikgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBwcmVmc19rZXlwcmVzc19zb3VuZF92b2x1bWVfc2V0dGluZ3MgKDYwMjcwMDczMzcwMzY4OTE2MjMpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgcHJlZnNfcmVhZF9leHRlcm5hbF9kaWN0aW9uYXJ5ICgyNTg4OTMxNDE4NTc1MDEzMDY3KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHJlYWRfZXh0ZXJuYWxfZGljdGlvbmFyeV9ub19maWxlc19tZXNzYWdlICg0OTQ3NDIwOTQyMjI0NjIzNzkyKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHJlYWRfZXh0ZXJuYWxfZGljdGlvbmFyeV9tdWx0aXBsZV9maWxlc190aXRsZSAoNzYzNzc0OTA0NDI2NTgwODYyOCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciByZWFkX2V4dGVybmFsX2RpY3Rpb25hcnlfY29uZmlybV9pbnN0YWxsX21lc3NhZ2UgKDY4OTg2MTAxNjM3Njg5ODA4NzApIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgZXJyb3IgKDg5NDA3NjM2MjQ2Njg1MTM2NDgpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgYnV0dG9uX2RlZmF1bHQgKDM5ODgwMTc4NDA0MzE4ODE0OTEpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc2V0dXBfd2VsY29tZV90aXRsZSAoNjExMjgyMTcwOTgzMjAzMTcxNSkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzZXR1cF93ZWxjb21lX2FkZGl0aW9uYWxfZGVzY3JpcHRpb24gKDgxNTAyNTIwMDg1NDU3Njg5NTMpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc2V0dXBfc3RhcnRfYWN0aW9uICg4OTM2MDM2NDYwODk3MzQ3NzA4KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNldHVwX25leHRfYWN0aW9uICgzNzE4MjE0Mzc5MTUxNDQ2MDMpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc2V0dXBfc3RlcHNfdGl0bGUgKDY0MDAzNzMwMzQ4NzE4MTYxODIpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc2V0dXBfc3RlcDFfdGl0bGUgKDMxNDc5Njc2MzAyNTM0NjIzMTUpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc2V0dXBfc3RlcDFfaW5zdHJ1Y3Rpb24gKDI1Nzg2MzE5MzY2MjQ2MzcyNDEpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc2V0dXBfc3RlcDFfZmluaXNoZWRfaW5zdHJ1Y3Rpb24gKDEwNzYxNDgyMDA0OTU3OTk0KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNldHVwX3N0ZXAxX2FjdGlvbiAoNDM2NjUxMzUzNDk5OTkwMTcyOCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzZXR1cF9zdGVwMl90aXRsZSAoNjg2MDcyNTQ0NzkwNjY5MDU5NCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzZXR1cF9zdGVwMl9pbnN0cnVjdGlvbiAoOTE0MTQ4MTk2NDg3MDAyMzMzNikgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzZXR1cF9zdGVwMl9hY3Rpb24gKDE2NjAzMzAzMDcxNTk4MjQzMzcpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc2V0dXBfc3RlcDNfdGl0bGUgKDMxNTQ3NTcxODM2MzE0OTAyODEpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc2V0dXBfc3RlcDNfaW5zdHJ1Y3Rpb24gKDgwMjU5ODE4Mjk2MDU0MjYwMDApIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc2V0dXBfc3RlcDNfYWN0aW9uICg2MDA4Nzk3OTcyNTY5NDIyNTkpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc2V0dXBfZmluaXNoX2FjdGlvbiAoMjc2NTU5MjQzNDA5NDY1Mzg5KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNob3dfc2V0dXBfd2l6YXJkX2ljb24gKDUwMDgwMjg1OTA1OTM3MTA4MzApIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc2hvd19zZXR1cF93aXphcmRfaWNvbl9zdW1tYXJ5ICg0MTE5OTk4MzIyNTM2ODgwMjEzKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGFwcF9uYW1lICg2MzIwMTAyNjM3NDkxMjM0NzkyKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGRpY3Rpb25hcnlfcHJvdmlkZXJfbmFtZSAoMzAyNzMxNTA0NTM5NzM2MzA3OSkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBkaWN0aW9uYXJ5X3NlcnZpY2VfbmFtZSAoNjIzNzQ3MjM1MDY5MzUxMTQ0OCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBkb3dubG9hZF9kZXNjcmlwdGlvbiAoNjAxNDgzNTI4MzExOTE5ODU5MSkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBkaWN0aW9uYXJ5X3NldHRpbmdzX3RpdGxlICg4MDkxNDE3Njc2MDQ1NjkzMzEzKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGRpY3Rpb25hcnlfaW5zdGFsbF9vdmVyX21ldGVyZWRfbmV0d29ya19wcm9tcHQgKDM1ODc1MTc4NzAwMDYzMzI5ODApIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgZGljdGlvbmFyeV9zZXR0aW5nc19zdW1tYXJ5ICg1MzA1Njk0OTg3Nzk5ODI0MzQ5KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHVzZXJfZGljdGlvbmFyaWVzICgzNTgyMzMyMDU1ODkyMjUyODQ1KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGRlZmF1bHRfdXNlcl9kaWN0X3ByZWZfbmFtZSAoMTYyNTA1NTcyMDQ4OTI4MDUzMCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBkaWN0aW9uYXJ5X2F2YWlsYWJsZSAoNDcyODk3NTM0NTgxNTIxNDIxOCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBkaWN0aW9uYXJ5X2Rvd25sb2FkaW5nICgyOTgyNjUwNTI0NjIyNjIwOTgzKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGRpY3Rpb25hcnlfaW5zdGFsbGVkICg4MDgxNTU4MzQzNTU5MzQyOTYyKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGRpY3Rpb25hcnlfZGlzYWJsZWQgKDg5NTAzODMyMTk1NjQ2MjE3NjIpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgY2Fubm90X2Nvbm5lY3RfdG9fZGljdF9zZXJ2aWNlICg5MjE2OTMzNjk1NzY1NzMyMzk4KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIG5vX2RpY3Rpb25hcmllc19hdmFpbGFibGUgKDgwMzk5MjA3MTY1NjYxMzI2MTEpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgY2hlY2tfZm9yX3VwZGF0ZXNfbm93ICg4MDg3Njg4NDQwOTE2Mzg4NTgxKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGxhc3RfdXBkYXRlICg3MzA0Njc1NDk5MTM1ODg3ODApIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgbWVzc2FnZV91cGRhdGluZyAoNDQ1Nzc2MTM5MzkzMjM3NTIxOSkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBtZXNzYWdlX2xvYWRpbmcgKDg2ODkwOTY2MzY4NzQ3NTg4MTQpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgbWFpbl9kaWN0X2Rlc2NyaXB0aW9uICgzMDcyODIxMzUyNzkzNDkyMTQzKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGNhbmNlbCAoNjgzMDk4MDM5OTg2NTY4MzMyNCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBpbnN0YWxsX2RpY3QgKDE4MDg1Mjc3MjU2MjE4OTM2NSkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBjYW5jZWxfZG93bmxvYWRfZGljdCAoNzg0MzM0MDI3ODUwNzAxOTMwMykgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBkZWxldGVfZGljdCAoNzU2ODUzMjY4MDg4MzMwMDU0KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNob3VsZF9kb3dubG9hZF9vdmVyX21ldGVyZWRfcHJvbXB0ICgyODc4NjI5NTk4NjY3NjU4ODQ1KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGRvd25sb2FkX292ZXJfbWV0ZXJlZCAoMTY0MzA2NTg1MTE1OTQwOTU0NikgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBkb19ub3RfZG93bmxvYWRfb3Zlcl9tZXRlcmVkICgyMTc2MjA5NTc5MzEzOTQxNTgzKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGRpY3RfYXZhaWxhYmxlX25vdGlmaWNhdGlvbl90aXRsZSAoNjUxNDI4ODU5MTk1OTExNzI4OCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBkaWN0X2F2YWlsYWJsZV9ub3RpZmljYXRpb25fZGVzY3JpcHRpb24gKDEwNzUxOTQxNjk0NDMxNjM0ODcpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgdG9hc3RfZG93bmxvYWRpbmdfc3VnZ2VzdGlvbnMgKDEzMTMwMjczNTM1ODg1NjY2NjApIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgdmVyc2lvbl90ZXh0ICgyNzE1MzU0MjE1NTY4NDY5Mzg1KSAtLT4KKyAgICA8c2tpcCAvPgorPC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9qYXZhL3Jlcy92YWx1ZXMta28vc3RyaW5ncy54bWwgYi9qYXZhL3Jlcy92YWx1ZXMta28vc3RyaW5ncy54bWwKaW5kZXggN2VhMzFhMy4uMWVjOGI0ZCAxMDA2NDQKLS0tIGEvamF2YS9yZXMvdmFsdWVzLWtvL3N0cmluZ3MueG1sCisrKyBiL2phdmEvcmVzL3ZhbHVlcy1rby9zdHJpbmdzLnhtbApAQCAtNTMsNiArNTMsOCBAQAogICAgIDxzdHJpbmcgbmFtZT0idXNlX2RvdWJsZV9zcGFjZV9wZXJpb2Rfc3VtbWFyeSIgbXNnaWQ9IjY1MzI4OTIxODcyNDc5NTI3OTkiPiLsiqTtjpjsnbTsiqTrsJTrpbwg65GQIOuyiCDtg63tlZjrqbQg66eI7Lmo7ZGc7JmAIOqzteuwsSDtlZwg6rCc6rCAIOyCveyeheuQqeuLiOuLpC4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJhdXRvX2NhcCIgbXNnaWQ9IjE3MTk3NDY2NzQ4NTQ2MjgyNTIiPiLsnpDrj5kg64yA66y47J6Q7ZmUIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYXV0b19jYXBfc3VtbWFyeSIgbXNnaWQ9Ijc5MzQ0NTI3NjEwMjI5NDY4NzQiPiLrrLjsnqXsnZgg7LKrIOuLqOyWtOulvCDrjIDrrLjsnpDroZwg7ZGc7IucIjwvc3RyaW5nPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGVkaXRfcGVyc29uYWxfZGljdGlvbmFyeSAoMzk5NjkxMDAzODk1Mjk0MDQyMCkgLS0+CisgICAgPHNraXAgLz4KICAgICA8c3RyaW5nIG5hbWU9ImNvbmZpZ3VyZV9kaWN0aW9uYXJpZXNfdGl0bGUiIG1zZ2lkPSI0MjM4NjUyMzM4NTU2OTAyMDQ5Ij4i7IKs7KCEIOy2lOqwgCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im1haW5fZGljdGlvbmFyeSIgbXNnaWQ9IjQ3OTg3NjM3ODE4MTgzNjExNjgiPiLquLDrs7gg7IKs7KCEIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icHJlZnNfc2hvd19zdWdnZXN0aW9ucyIgbXNnaWQ9IjgwMjY3OTk2NjM0NDU1MzE2MzciPiLsiJjsoJUg7KCc7JWIIO2RnOyLnCI8L3N0cmluZz4KQEAgLTE3MSw4ICsxNzMsMjcgQEAKICAgICA8c3RyaW5nIG5hbWU9InJlYWRfZXh0ZXJuYWxfZGljdGlvbmFyeV9jb25maXJtX2luc3RhbGxfbWVzc2FnZSIgbXNnaWQ9IjY4OTg2MTAxNjM3Njg5ODA4NzAiPiLsnbQg7YyM7J287J2EIDx4bGlmZjpnIGlkPSJMT0NBTEVfTkFNRSI+JXM8L3hsaWZmOmc+KOycvCnroZwg7ISk7LmY7ZWY7Iuc6rKg7Iq164uI6rmMPyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImVycm9yIiBtc2dpZD0iODk0MDc2MzYyNDY2ODUxMzY0OCI+IuyYpOulmCDrsJzsg50iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJidXR0b25fZGVmYXVsdCIgbXNnaWQ9IjM5ODgwMTc4NDA0MzE4ODE0OTEiPiLquLDrs7jqsJIiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJsYW5ndWFnZV9zZXR0aW5ncyIgbXNnaWQ9IjE2NzExNTMwNTMyMDE4MDkwMzEiPiLslrjslrQg67CPIO2CpOuztOuTnCI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InNlbGVjdF9pbnB1dF9tZXRob2QiIG1zZ2lkPSI0MzAxNjAyMzc0NjA5Mjc1MDAzIj4i7J6F66ClIOuwqeuylSDshKDtg50iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF93ZWxjb21lX3RpdGxlIiBtc2dpZD0iNjExMjgyMTcwOTgzMjAzMTcxNSI+Ijx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz7sl5Ag7Jik7IugIOqyg+ydhCDtmZjsmIHtlanri4jri6QuIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfd2VsY29tZV9hZGRpdGlvbmFsX2Rlc2NyaXB0aW9uIiBtc2dpZD0iODE1MDI1MjAwODU0NTc2ODk1MyI+IuygnOyKpOyymCDtg4DsnbTtlZEg7IKs7JqpIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RhcnRfYWN0aW9uIiBtc2dpZD0iODkzNjAzNjQ2MDg5NzM0NzcwOCI+IuyLnOyeke2VmOq4sCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX25leHRfYWN0aW9uIiBtc2dpZD0iMzcxODIxNDM3OTE1MTQ0NjAzIj4i64uk7J2MIOuLqOqzhCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXBzX3RpdGxlIiBtc2dpZD0iNjQwMDM3MzAzNDg3MTgxNjE4MiI+Ijx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz4g7ISk7KCVIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDFfdGl0bGUiIG1zZ2lkPSIzMTQ3OTY3NjMwMjUzNDYyMzE1Ij4iPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPiDsgqzsmqkg7ISk7KCVIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDFfaW5zdHJ1Y3Rpb24iIG1zZ2lkPSIyNTc4NjMxOTM2NjI0NjM3MjQxIj4i7Ja47Ja0IOuwjyDsnoXroKUg7ISk7KCV7JeQ7IScIFwnPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPlwn7J2EKOulvCkg7ZmV7J247ZWY7IS47JqULiDslaDtlIzrpqzsvIDsnbTshZjsnYQg6riw6riw7JeQ7IScIOyLpO2Wie2VoCDsiJgg7J6I64+E66GdIOyKueyduO2VqeuLiOuLpC4iPC9zdHJpbmc+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc2V0dXBfc3RlcDFfZmluaXNoZWRfaW5zdHJ1Y3Rpb24gKDEwNzYxNDgyMDA0OTU3OTk0KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDFfYWN0aW9uIiBtc2dpZD0iNDM2NjUxMzUzNDk5OTkwMTcyOCI+Ilwn7ISk7KCVXCfsl5DshJwg7IKs7JqpIOyEpOyglSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAyX3RpdGxlIiBtc2dpZD0iNjg2MDcyNTQ0NzkwNjY5MDU5NCI+Ijx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz4o7Jy8KeuhnCDsoITtmZgiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMl9pbnN0cnVjdGlvbiIgbXNnaWQ9IjkxNDE0ODE5NjQ4NzAwMjMzMzYiPiLqt7jrn7Ag64uk7J2MLCDthY3siqTtirgg7J6F66ClIOuwqeuyleycvOuhnCBcJzx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz5cJ+ydhCjrpbwpIOyEoO2Dne2VqeuLiOuLpC4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMl9hY3Rpb24iIG1zZ2lkPSIxNjYwMzMwMzA3MTU5ODI0MzM3Ij4i7J6F66ClIOuwqeuylSDsoITtmZgiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwM190aXRsZSIgbXNnaWQ9IjMxNTQ3NTcxODM2MzE0OTAyODEiPiLrqqjrk6Ag7ISk7KCV7J20IOyZhOujjOuQmOyXiOyKteuLiOuLpC4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwM19pbnN0cnVjdGlvbiIgbXNnaWQ9IjgwMjU5ODE4Mjk2MDU0MjYwMDAiPiLsnbTsoJwg7KaQ6rKo7LC+64qUIOyVseydhCA8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+7JeQIOyeheugpe2VoCDsiJgg7J6I7Iq164uI64ukLiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAzX2FjdGlvbiIgbXNnaWQ9IjYwMDg3OTc5NzI1Njk0MjI1OSI+Iuy2lOqwgCDslrjslrQg7ISk7KCVIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfZmluaXNoX2FjdGlvbiIgbXNnaWQ9IjI3NjU1OTI0MzQwOTQ2NTM4OSI+IuyZhOujjOuQqCI8L3N0cmluZz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzaG93X3NldHVwX3dpemFyZF9pY29uICg1MDA4MDI4NTkwNTkzNzEwODMwKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNob3dfc2V0dXBfd2l6YXJkX2ljb25fc3VtbWFyeSAoNDExOTk5ODMyMjUzNjg4MDIxMykgLS0+CisgICAgPHNraXAgLz4KICAgICA8c3RyaW5nIG5hbWU9ImFwcF9uYW1lIiBtc2dpZD0iNjMyMDEwMjYzNzQ5MTIzNDc5MiI+IuyCrOyghCDsoJzqs7Xsl4XssrQiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkaWN0aW9uYXJ5X3Byb3ZpZGVyX25hbWUiIG1zZ2lkPSIzMDI3MzE1MDQ1Mzk3MzYzMDc5Ij4i7IKs7KCEIOygnOqzteyXheyytCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRpY3Rpb25hcnlfc2VydmljZV9uYW1lIiBtc2dpZD0iNjIzNzQ3MjM1MDY5MzUxMTQ0OCI+IuyCrOyghCDshJzruYTsiqQiPC9zdHJpbmc+CkBAIC0yMDMsNCArMjI0LDYgQEAKICAgICA8c3RyaW5nIG5hbWU9ImRpY3RfYXZhaWxhYmxlX25vdGlmaWNhdGlvbl90aXRsZSIgbXNnaWQ9IjY1MTQyODg1OTE5NTkxMTcyODgiPiI8eGxpZmY6ZyBpZD0iTEFOR1VBR0UiPiUxJHM8L3hsaWZmOmc+IOyCrOyghOydhCDsgqzsmqntlaAg7IiYIOyeiOyKteuLiOuLpC4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkaWN0X2F2YWlsYWJsZV9ub3RpZmljYXRpb25fZGVzY3JpcHRpb24iIG1zZ2lkPSIxMDc1MTk0MTY5NDQzMTYzNDg3Ij4i6rKA7Yag7ZWY6rOgIOuLpOyatOuhnOuTnO2VmOugpOuptCDriITrpbTshLjsmpQuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idG9hc3RfZG93bmxvYWRpbmdfc3VnZ2VzdGlvbnMiIG1zZ2lkPSIxMzEzMDI3MzUzNTg4NTY2NjYwIj4i64uk7Jq066Gc65OcIOykkTogPHhsaWZmOmcgaWQ9IkxBTkdVQUdFIj4lMSRzPC94bGlmZjpnPuyXkCDrjIDtlZwg7LaU7LKc7ZWt66qp7J20IOqzpyDspIDruYTrkKnri4jri6QuIjwvc3RyaW5nPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHZlcnNpb25fdGV4dCAoMjcxNTM1NDIxNTU2ODQ2OTM4NSkgLS0+CisgICAgPHNraXAgLz4KIDwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvamF2YS9yZXMvdmFsdWVzLWxhbmQvc2V0dXAtZGltZW5zLXNtYWxsLXBob25lLWxhbmQueG1sIGIvamF2YS9yZXMvdmFsdWVzLWxhbmQvc2V0dXAtZGltZW5zLXNtYWxsLXBob25lLWxhbmQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYzZjQ2NjEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL3Jlcy92YWx1ZXMtbGFuZC9zZXR1cC1kaW1lbnMtc21hbGwtcGhvbmUtbGFuZC54bWwKQEAgLTAsMCArMSw0MCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzwhLS0gQ29weXJpZ2h0IChDKSAyMDEzIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKworICAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAgICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKworICAgICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorCisgICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAgICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAgICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAgICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCistLT4KKworPHJlc291cmNlcyB4bWxuczphbmRyb2lkPSJodHRwOi8vc2NoZW1hcy5hbmRyb2lkLmNvbS9hcGsvcmVzL2FuZHJvaWQiPgorICAgIDwhLS0gU2V0dXAgd2l6YXJkIGRpbWVuc2lvbnMgZm9yIHNtYWxsLXBob25lL2xhbmRzY2FwZS4gLS0+CisgICAgPGRpbWVuIG5hbWU9InNldHVwX3RpdGxlX3RleHRfc2l6ZSI+MzZzcDwvZGltZW4+CisgICAgPGRpbWVuIG5hbWU9InNldHVwX3dlbGNvbWVfZGVzY3JpcHRpb25fdGV4dF9zaXplIj4xOHNwPC9kaW1lbj4KKyAgICA8ZGltZW4gbmFtZT0ic2V0dXBfc3RlcF9idWxsZXRfdGV4dF9zaXplIj4xOHNwPC9kaW1lbj4KKyAgICA8ZGltZW4gbmFtZT0ic2V0dXBfc3RlcF90cmlhbmdsZV9pbmRpY2F0b3JfaGVpZ2h0Ij4xOGRwPC9kaW1lbj4KKyAgICA8ZGltZW4gbmFtZT0ic2V0dXBfc3RlcF9pbmRpY2F0b3JfaGVpZ2h0Ij4xOGRwPC9kaW1lbj4KKyAgICA8ZGltZW4gbmFtZT0ic2V0dXBfc3RlcF90aXRsZV90ZXh0X3NpemUiPjE4c3A8L2RpbWVuPgorICAgIDxkaW1lbiBuYW1lPSJzZXR1cF9zdGVwX2luc3RydWN0aW9uX3RleHRfc2l6ZSI+MTRzcDwvZGltZW4+CisgICAgPGRpbWVuIG5hbWU9InNldHVwX3N0ZXBfYWN0aW9uX3RleHRfc2l6ZSI+MTZzcDwvZGltZW4+CisgICAgPGRpbWVuIG5hbWU9InNldHVwX3ZlcnRpY2FsX3BhZGRpbmciPjEyZHA8L2RpbWVuPgorICAgIDxkaW1lbiBuYW1lPSJzZXR1cF9ob3Jpem9udGFsX3BhZGRpbmciPjEyZHA8L2RpbWVuPgorICAgIDxkaW1lbiBuYW1lPSJzZXR1cF9zdGVwX2FjdGlvbl9oZWlnaHQiPjQyZHA8L2RpbWVuPgorICAgIDxkaW1lbiBuYW1lPSJzZXR1cF9zdGVwX2hvcml6b250YWxfcGFkZGluZyI+MjBkcDwvZGltZW4+CisgICAgPGRpbWVuIG5hbWU9InNldHVwX3N0ZXBfaG9yaXpvbnRhbF9wYWRkaW5nX2hhbGYiPjEwZHA8L2RpbWVuPgorICAgIDxkaW1lbiBuYW1lPSJzZXR1cF9zdGVwX3ZlcnRpY2FsX3BhZGRpbmciPjEyZHA8L2RpbWVuPgorICAgIDxkaW1lbiBuYW1lPSJzZXR1cF9zdGVwX2hvcml6b250YWxfbGluZV9oZWlnaHQiPjJkcDwvZGltZW4+CisgICAgPGludGVnZXIgbmFtZT0ic2V0dXBfdGl0bGVfd2VpZ2h0X2luX3NjcmVlbiI+NDA8L2ludGVnZXI+CisgICAgPGludGVnZXIgbmFtZT0ic2V0dXBfYm9keV93ZWlnaHRfaW5fc2NyZWVuIj42MDwvaW50ZWdlcj4KKyAgICA8ZGltZW4gbmFtZT0ic2V0dXBfd2VsY29tZV92aWRlb192ZXJ0aWNhbF9tYXJnaW4iPjI0ZHA8L2RpbWVuPgorICAgIDxpbnRlZ2VyIG5hbWU9InNldHVwX3dlbGNvbWVfdmlkZW9fd2VpZ2h0X2luX3NjcmVlbiI+ODA8L2ludGVnZXI+CisgICAgPGludGVnZXIgbmFtZT0ic2V0dXBfd2VsY29tZV92aWRlb19sZWZ0X3BhZGRpbmdfd2VpZ2h0X2luX3NjcmVlbiI+MTA8L2ludGVnZXI+CisgICAgPGludGVnZXIgbmFtZT0ic2V0dXBfd2VsY29tZV92aWRlb19yaWdodF9wYWRkaW5nX3dlaWdodF9pbl9zY3JlZW4iPjEwPC9pbnRlZ2VyPgorPC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9qYXZhL3Jlcy92YWx1ZXMtbHQvc3RyaW5ncy54bWwgYi9qYXZhL3Jlcy92YWx1ZXMtbHQvc3RyaW5ncy54bWwKaW5kZXggMjgzMDEzYy4uOTMwZGU3YiAxMDA2NDQKLS0tIGEvamF2YS9yZXMvdmFsdWVzLWx0L3N0cmluZ3MueG1sCisrKyBiL2phdmEvcmVzL3ZhbHVlcy1sdC9zdHJpbmdzLnhtbApAQCAtNTMsNiArNTMsOCBAQAogICAgIDxzdHJpbmcgbmFtZT0idXNlX2RvdWJsZV9zcGFjZV9wZXJpb2Rfc3VtbWFyeSIgbXNnaWQ9IjY1MzI4OTIxODcyNDc5NTI3OTkiPiJEdWthcnQgcGFsaWV0dXMgdGFycG8ga2xhdmnFocSFIMSvdGVycGlhbWFzIHRhxaFrYXMgaXIgdGFycGFzLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImF1dG9fY2FwIiBtc2dpZD0iMTcxOTc0NjY3NDg1NDYyODI1MiI+IkF1dG9tYXRpbmlzIGRpZMW+acWzasWzIHJhaWTFvmnFsyByYcWheW1hcyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImF1dG9fY2FwX3N1bW1hcnkiIG1zZ2lkPSI3OTM0NDUyNzYxMDIyOTQ2ODc0Ij4iS2lla3ZpZW5vIHNha2luaW8gcGlybcSFIMW+b2TEryByYcWheXRpIGnFoSBkaWTFvmlvc2lvcyByYWlkxJdzIjwvc3RyaW5nPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGVkaXRfcGVyc29uYWxfZGljdGlvbmFyeSAoMzk5NjkxMDAzODk1Mjk0MDQyMCkgLS0+CisgICAgPHNraXAgLz4KICAgICA8c3RyaW5nIG5hbWU9ImNvbmZpZ3VyZV9kaWN0aW9uYXJpZXNfdGl0bGUiIG1zZ2lkPSI0MjM4NjUyMzM4NTU2OTAyMDQ5Ij4iUGFwaWxkb21pIMW+b2R5bmFpIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ibWFpbl9kaWN0aW9uYXJ5IiBtc2dpZD0iNDc5ODc2Mzc4MTgxODM2MTE2OCI+IlBhZ3JpbmRpbmlzIMW+b2R5bmFzIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icHJlZnNfc2hvd19zdWdnZXN0aW9ucyIgbXNnaWQ9IjgwMjY3OTk2NjM0NDU1MzE2MzciPiJSb2R5dGkgdGFpc3ltbyBwYXNpxatseW11cyI8L3N0cmluZz4KQEAgLTE3MSw4ICsxNzMsMjcgQEAKICAgICA8c3RyaW5nIG5hbWU9InJlYWRfZXh0ZXJuYWxfZGljdGlvbmFyeV9jb25maXJtX2luc3RhbGxfbWVzc2FnZSIgbXNnaWQ9IjY4OTg2MTAxNjM3Njg5ODA4NzAiPiJBciB0aWtyYWkgxK9kaWVndGkgxaHEryBmYWlsxIUgPHhsaWZmOmcgaWQ9IkxPQ0FMRV9OQU1FIj4lczwveGxpZmY6Zz4/Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZXJyb3IiIG1zZ2lkPSI4OTQwNzYzNjI0NjY4NTEzNjQ4Ij4ixK52eWtvIGtsYWlkYSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJ1dHRvbl9kZWZhdWx0IiBtc2dpZD0iMzk4ODAxNzg0MDQzMTg4MTQ5MSI+Ik51bWF0eXRpZWppIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibGFuZ3VhZ2Vfc2V0dGluZ3MiIG1zZ2lkPSIxNjcxMTUzMDUzMjAxODA5MDMxIj4iS2FsYmEgaXIgxK92ZXN0aXMiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJzZWxlY3RfaW5wdXRfbWV0aG9kIiBtc2dpZD0iNDMwMTYwMjM3NDYwOTI3NTAwMyI+IlBhc2lyaW5raXRlIMSvdmVzdGllcyBtZXRvZMSFIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfd2VsY29tZV90aXRsZSIgbXNnaWQ9IjYxMTI4MjE3MDk4MzIwMzE3MTUiPiJTdmVpa2khIFRhaSDigJ48eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+4oCcIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfd2VsY29tZV9hZGRpdGlvbmFsX2Rlc2NyaXB0aW9uIiBtc2dpZD0iODE1MDI1MjAwODU0NTc2ODk1MyI+Im5hdWRvamFudCDEr3Zlc3TEryBnZXN0YWlzIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RhcnRfYWN0aW9uIiBtc2dpZD0iODkzNjAzNjQ2MDg5NzM0NzcwOCI+IlByYWTEl3RpIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfbmV4dF9hY3Rpb24iIG1zZ2lkPSIzNzE4MjE0Mzc5MTUxNDQ2MDMiPiJLaXRhcyB2ZWlrc21hcyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXBzX3RpdGxlIiBtc2dpZD0iNjQwMDM3MzAzNDg3MTgxNjE4MiI+IuKAnjx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz7igJwgc8SFcmFua2EiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMV90aXRsZSIgbXNnaWQ9IjMxNDc5Njc2MzAyNTM0NjIzMTUiPiLErmdhbGlua2l0ZSDigJ48eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+4oCcIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDFfaW5zdHJ1Y3Rpb24iIG1zZ2lkPSIyNTc4NjMxOTM2NjI0NjM3MjQxIj4iU2tpbHR5amUg4oCeS2FsYm9zIGlyIMSvdmVzdGllcyBudXN0YXR5bWFp4oCcIMW+ci4g4oCePHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPuKAnCAocHJvZ3IuIGJ1cyDEr2dhbC4gdmVpa3RpIMSvci4pLiI8L3N0cmluZz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzZXR1cF9zdGVwMV9maW5pc2hlZF9pbnN0cnVjdGlvbiAoMTA3NjE0ODIwMDQ5NTc5OTQpIC0tPgorICAgIDxza2lwIC8+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMV9hY3Rpb24iIG1zZ2lkPSI0MzY2NTEzNTM0OTk5OTAxNzI4Ij4ixK5nYWxpbnRpIG51c3RhdHltdW9zZSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAyX3RpdGxlIiBtc2dpZD0iNjg2MDcyNTQ0NzkwNjY5MDU5NCI+IlBlcmp1bmdpbWFzIMSvIOKAnjx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz7igJwiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMl9pbnN0cnVjdGlvbiIgbXNnaWQ9IjkxNDE0ODE5NjQ4NzAwMjMzMzYiPiJUb2xpYXUgcGFzaXJpbmtpdGUg4oCePHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPuKAnCBrYWlwIGFrdHl2xbMgdGVrc3RvIMSvdmVzdGllcyBtZXRvZMSFLiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAyX2FjdGlvbiIgbXNnaWQ9IjE2NjAzMzAzMDcxNTk4MjQzMzciPiJQZXJqdW5ndGkgxK92ZXN0aWVzIG1ldG9kdXMiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwM190aXRsZSIgbXNnaWQ9IjMxNTQ3NTcxODM2MzE0OTAyODEiPiJTdmVpa2luYW1lLCB2aXNrxIUgbnVzdGF0xJd0ZSEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwM19pbnN0cnVjdGlvbiIgbXNnaWQ9IjgwMjU5ODE4Mjk2MDU0MjYwMDAiPiJEYWJhciBnYWxpdGUgxK92ZXN0aSB2aXNhcyBtxJdnc3RhbWFzIHByb2dyYW1hcyBuYXVkb2RhbWkg4oCePHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPuKAnC4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwM19hY3Rpb24iIG1zZ2lkPSI2MDA4Nzk3OTcyNTY5NDIyNTkiPiJLb25maWfFq3J1b2tpdGUgcGFwaWxkb21hcyBrYWxiYXMiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9maW5pc2hfYWN0aW9uIiBtc2dpZD0iMjc2NTU5MjQzNDA5NDY1Mzg5Ij4iQmFpZ3RhIjwvc3RyaW5nPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNob3dfc2V0dXBfd2l6YXJkX2ljb24gKDUwMDgwMjg1OTA1OTM3MTA4MzApIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc2hvd19zZXR1cF93aXphcmRfaWNvbl9zdW1tYXJ5ICg0MTE5OTk4MzIyNTM2ODgwMjEzKSAtLT4KKyAgICA8c2tpcCAvPgogICAgIDxzdHJpbmcgbmFtZT0iYXBwX25hbWUiIG1zZ2lkPSI2MzIwMTAyNjM3NDkxMjM0NzkyIj4ixb1vZHlubyB0ZWlrxJdqYXMiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkaWN0aW9uYXJ5X3Byb3ZpZGVyX25hbWUiIG1zZ2lkPSIzMDI3MzE1MDQ1Mzk3MzYzMDc5Ij4ixb1vZHlubyB0ZWlrxJdqYXMiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkaWN0aW9uYXJ5X3NlcnZpY2VfbmFtZSIgbXNnaWQ9IjYyMzc0NzIzNTA2OTM1MTE0NDgiPiLFvW9keW5vIHBhc2xhdWdhIjwvc3RyaW5nPgpAQCAtMjAzLDQgKzIyNCw2IEBACiAgICAgPHN0cmluZyBuYW1lPSJkaWN0X2F2YWlsYWJsZV9ub3RpZmljYXRpb25fdGl0bGUiIG1zZ2lkPSI2NTE0Mjg4NTkxOTU5MTE3Mjg4Ij4iR2FsaW1hcyA8eGxpZmY6ZyBpZD0iTEFOR1VBR0UiPiUxJHM8L3hsaWZmOmc+IMW+b2R5bmFzIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGljdF9hdmFpbGFibGVfbm90aWZpY2F0aW9uX2Rlc2NyaXB0aW9uIiBtc2dpZD0iMTA3NTE5NDE2OTQ0MzE2MzQ4NyI+IlBhc3BhdXNraXRlLCBrYWQgcGVyxb5pxatyxJd0dW3El3RlIGlyIGF0c2lzacWzc3R1bcSXdGUiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ0b2FzdF9kb3dubG9hZGluZ19zdWdnZXN0aW9ucyIgbXNnaWQ9IjEzMTMwMjczNTM1ODg1NjY2NjAiPiJBdHNpc2l1bsSNaWFtYS4gTmV0cnVrdXMgYnVzIGdhbGltaSA8eGxpZmY6ZyBpZD0iTEFOR1VBR0UiPiUxJHM8L3hsaWZmOmc+IHBhc2nFq2x5bWFpLiI8L3N0cmluZz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciB2ZXJzaW9uX3RleHQgKDI3MTUzNTQyMTU1Njg0NjkzODUpIC0tPgorICAgIDxza2lwIC8+CiA8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL2phdmEvcmVzL3ZhbHVlcy1sdi9zdHJpbmdzLnhtbCBiL2phdmEvcmVzL3ZhbHVlcy1sdi9zdHJpbmdzLnhtbAppbmRleCA4NGIxMWY2Li4wYmVmMmJjIDEwMDY0NAotLS0gYS9qYXZhL3Jlcy92YWx1ZXMtbHYvc3RyaW5ncy54bWwKKysrIGIvamF2YS9yZXMvdmFsdWVzLWx2L3N0cmluZ3MueG1sCkBAIC01Myw2ICs1Myw4IEBACiAgICAgPHN0cmluZyBuYW1lPSJ1c2VfZG91YmxlX3NwYWNlX3BlcmlvZF9zdW1tYXJ5IiBtc2dpZD0iNjUzMjg5MjE4NzI0Nzk1Mjc5OSI+IkRpdnJlaXogcGllc2thcm90aWVzIGF0c3QuIHRhdXN0acWGYW0sIGlldmFkYSBwdW5rdHUgdW4gYXRzdGFycGkuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYXV0b19jYXAiIG1zZ2lkPSIxNzE5NzQ2Njc0ODU0NjI4MjUyIj4iQXV0b23EgXRpc2thIGxpZWxvIGJ1cnR1IGxpZXRvxaFhbmEiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJhdXRvX2NhcF9zdW1tYXJ5IiBtc2dpZD0iNzkzNDQ1Mjc2MTAyMjk0Njg3NCI+IkthdHJhIHRlaWt1bWEgcGlybW8gdsSBcmR1IHJha3N0xKt0IGFyIGxpZWxvIGJ1cnR1LiI8L3N0cmluZz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBlZGl0X3BlcnNvbmFsX2RpY3Rpb25hcnkgKDM5OTY5MTAwMzg5NTI5NDA0MjApIC0tPgorICAgIDxza2lwIC8+CiAgICAgPHN0cmluZyBuYW1lPSJjb25maWd1cmVfZGljdGlvbmFyaWVzX3RpdGxlIiBtc2dpZD0iNDIzODY1MjMzODU1NjkwMjA0OSI+IlBhcGlsZGluxIFqdW11IHbEgXJkbsSrY2FzIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ibWFpbl9kaWN0aW9uYXJ5IiBtc2dpZD0iNDc5ODc2Mzc4MTgxODM2MTE2OCI+IkdhbHZlbsSBIHbEgXJkbsSrY2EiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwcmVmc19zaG93X3N1Z2dlc3Rpb25zIiBtc2dpZD0iODAyNjc5OTY2MzQ0NTUzMTYzNyI+IlLEgWTEq3QgbGFib2p1bXUgaWV0ZWlrdW11cyI8L3N0cmluZz4KQEAgLTE3MSw4ICsxNzMsMjcgQEAKICAgICA8c3RyaW5nIG5hbWU9InJlYWRfZXh0ZXJuYWxfZGljdGlvbmFyeV9jb25maXJtX2luc3RhbGxfbWVzc2FnZSIgbXNnaWQ9IjY4OTg2MTAxNjM3Njg5ODA4NzAiPiJWYWkgaW5zdGFsxJN0IMWhbyBmYWlsdSDFocSBZGFpIHZhbG9kYWk6IDx4bGlmZjpnIGlkPSJMT0NBTEVfTkFNRSI+JXM8L3hsaWZmOmc+PyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImVycm9yIiBtc2dpZD0iODk0MDc2MzYyNDY2ODUxMzY0OCI+IlJhZMSBcyBrxLzFq2RhIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYnV0dG9uX2RlZmF1bHQiIG1zZ2lkPSIzOTg4MDE3ODQwNDMxODgxNDkxIj4iTm9rbHVzxJNqdW1zIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibGFuZ3VhZ2Vfc2V0dGluZ3MiIG1zZ2lkPSIxNjcxMTUzMDUzMjAxODA5MDMxIj4iVmFsb2RhIHVuIGlldmFkZSI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InNlbGVjdF9pbnB1dF9tZXRob2QiIG1zZ2lkPSI0MzAxNjAyMzc0NjA5Mjc1MDAzIj4iSWV2YWRlcyBtZXRvZGVzIGl6dsSTbGUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF93ZWxjb21lX3RpdGxlIiBtc2dpZD0iNjExMjgyMTcwOTgzMjAzMTcxNSI+IkxhaXBuaSBsxatkemFtIHBha2FscG9qdW3EgSA8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+LCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3dlbGNvbWVfYWRkaXRpb25hbF9kZXNjcmlwdGlvbiIgbXNnaWQ9IjgxNTAyNTIwMDg1NDU3Njg5NTMiPiJrdXLEgSB2YXJhdCBpem1hbnRvdCBpZXZhZGkgYXIgxb5lc3RpZW0iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGFydF9hY3Rpb24iIG1zZ2lkPSI4OTM2MDM2NDYwODk3MzQ3NzA4Ij4iU8SBa3QgZGFyYnUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9uZXh0X2FjdGlvbiIgbXNnaWQ9IjM3MTgyMTQzNzkxNTE0NDYwMyI+Ik7EgWthbcSBIGRhcmLEq2JhIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcHNfdGl0bGUiIG1zZ2lkPSI2NDAwMzczMDM0ODcxODE2MTgyIj4iTGlldG9qdW1wcm9ncmFtbWFzIDx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz4gaWVzdGF0xKvFoWFuYSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAxX3RpdGxlIiBtc2dpZD0iMzE0Nzk2NzYzMDI1MzQ2MjMxNSI+IkxpZXRvanVtcHJvZ3JhbW1hcyA8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+IGllc3DEk2pvxaFhbmEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMV9pbnN0cnVjdGlvbiIgbXNnaWQ9IjI1Nzg2MzE5MzY2MjQ2MzcyNDEiPiJWYWxvZGFzIHVuIGlldmFkZXMgaWVzdGF0xKtqdW1vcyBhdHrEq23Ek2ppZXQg4oCcPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPuKAnSwgYXV0b3JpesSTam90IHTEgXMgcGFsYWnFoWFudSBpZXLEq2PEky4iPC9zdHJpbmc+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc2V0dXBfc3RlcDFfZmluaXNoZWRfaW5zdHJ1Y3Rpb24gKDEwNzYxNDgyMDA0OTU3OTk0KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDFfYWN0aW9uIiBtc2dpZD0iNDM2NjUxMzUzNDk5OTkwMTcyOCI+Ikllc3DEk2pvdCBpZXN0YXTEq2p1bW9zIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDJfdGl0bGUiIG1zZ2lkPSI2ODYwNzI1NDQ3OTA2NjkwNTk0Ij4iUMSBcnNsxJNnxaFhbsSBcyB1eiBsaWV0b2p1bXByb2dyYW1tdSA8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDJfaW5zdHJ1Y3Rpb24iIG1zZ2lkPSI5MTQxNDgxOTY0ODcwMDIzMzM2Ij4iUMSTYyB0YW0gYXRsYXNpZXQg4oCcPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPuKAnSBrxIEgYWt0xKt2byBpZXZhZGVzIG1ldG9kaS4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMl9hY3Rpb24iIG1zZ2lkPSIxNjYwMzMwMzA3MTU5ODI0MzM3Ij4iUMSBcnNsxJNndCBpZXZhZGVzIG1ldG9kZXMiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwM190aXRsZSIgbXNnaWQ9IjMxNTQ3NTcxODM2MzE0OTAyODEiPiJHYXRhdnMhIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDNfaW5zdHJ1Y3Rpb24iIG1zZ2lkPSI4MDI1OTgxODI5NjA1NDI2MDAwIj4iSXptYW50b2pvdCBsaWV0b2p1bXByb2dyYW1tdSA8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+LCB2YXJhdCByYWtzdMSrdCB2aXPEgXMgaWVjaWVuxKt0xIFrYWrEgXMgbGlldG90bsSTcy4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwM19hY3Rpb24iIG1zZ2lkPSI2MDA4Nzk3OTcyNTY5NDIyNTkiPiJLb25maWd1csSTdCBwYXBpbGR1IHZhbG9kYXMiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9maW5pc2hfYWN0aW9uIiBtc2dpZD0iMjc2NTU5MjQzNDA5NDY1Mzg5Ij4iUGFiZWlndHMiPC9zdHJpbmc+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc2hvd19zZXR1cF93aXphcmRfaWNvbiAoNTAwODAyODU5MDU5MzcxMDgzMCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzaG93X3NldHVwX3dpemFyZF9pY29uX3N1bW1hcnkgKDQxMTk5OTgzMjI1MzY4ODAyMTMpIC0tPgorICAgIDxza2lwIC8+CiAgICAgPHN0cmluZyBuYW1lPSJhcHBfbmFtZSIgbXNnaWQ9IjYzMjAxMDI2Mzc0OTEyMzQ3OTIiPiJWxIFyZG7Eq2NhcyBub2Ryb8WhaW7EgXTEgWpzIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGljdGlvbmFyeV9wcm92aWRlcl9uYW1lIiBtc2dpZD0iMzAyNzMxNTA0NTM5NzM2MzA3OSI+IlbEgXJkbsSrY2FzIG5vZHJvxaFpbsSBdMSBanMiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkaWN0aW9uYXJ5X3NlcnZpY2VfbmFtZSIgbXNnaWQ9IjYyMzc0NzIzNTA2OTM1MTE0NDgiPiJWxIFyZG7Eq2NhcyBwYWthbHBvanVtcyI8L3N0cmluZz4KQEAgLTIwMyw0ICsyMjQsNiBAQAogICAgIDxzdHJpbmcgbmFtZT0iZGljdF9hdmFpbGFibGVfbm90aWZpY2F0aW9uX3RpdGxlIiBtc2dpZD0iNjUxNDI4ODU5MTk1OTExNzI4OCI+IklyIHBpZWVqYW1hIHbEgXJkbsSrY2EgxaHEgWRhaSB2YWxvZGFpOiA8eGxpZmY6ZyBpZD0iTEFOR1VBR0UiPiUxJHM8L3hsaWZmOmc+Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGljdF9hdmFpbGFibGVfbm90aWZpY2F0aW9uX2Rlc2NyaXB0aW9uIiBtc2dpZD0iMTA3NTE5NDE2OTQ0MzE2MzQ4NyI+Ik5vc3BpZWRpZXQsIGxhaSBwxIFyc2thdMSrdHUgdW4gbGVqdXBpZWzEgWTEk3R1Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idG9hc3RfZG93bmxvYWRpbmdfc3VnZ2VzdGlvbnMiIG1zZ2lkPSIxMzEzMDI3MzUzNTg4NTY2NjYwIj4iTm90aWVrIGxlanVwaWVsxIFkZS4gRHLEq3ogYsWrcyBwaWVlamFtaSBpZXRlaWt1bWkgxaHEgWRhaSB2YWxvZGFpOiA8eGxpZmY6ZyBpZD0iTEFOR1VBR0UiPiUxJHM8L3hsaWZmOmc+LiI8L3N0cmluZz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciB2ZXJzaW9uX3RleHQgKDI3MTUzNTQyMTU1Njg0NjkzODUpIC0tPgorICAgIDxza2lwIC8+CiA8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL2phdmEvcmVzL3ZhbHVlcy1tay9zdHJpbmdzLnhtbCBiL2phdmEvcmVzL3ZhbHVlcy1tay9zdHJpbmdzLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMjQxYmI4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9yZXMvdmFsdWVzLW1rL3N0cmluZ3MueG1sCkBAIC0wLDAgKzEsNDIwIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPCEtLSAKKy8qCisqKgorKiogQ29weXJpZ2h0IDIwMDgsIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyoqCisqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorKioKKyoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyoqCisqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyovCisgLS0+CisKKzxyZXNvdXJjZXMgeG1sbnM6YW5kcm9pZD0iaHR0cDovL3NjaGVtYXMuYW5kcm9pZC5jb20vYXBrL3Jlcy9hbmRyb2lkIgorICAgIHhtbG5zOnhsaWZmPSJ1cm46b2FzaXM6bmFtZXM6dGM6eGxpZmY6ZG9jdW1lbnQ6MS4yIj4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBhb3NwX2FuZHJvaWRfa2V5Ym9hcmRfaW1lX25hbWUgKDgyNTA5OTI2MTM2MTY3OTIzMjEpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgYW9zcF9hbmRyb2lkX2tleWJvYXJkX2ltZV9zZXR0aW5ncyAoNDIzNjE1ODc3MTc0ODUwMjY3KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGFvc3Bfc3BlbGxfY2hlY2tlcl9zZXJ2aWNlX25hbWUgKDUxMTk1MDQ3NzE5OTk0ODA0OCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBhb3NwX2FuZHJvaWRfc3BlbGxfY2hlY2tlcl9zZXJ2aWNlX3NldHRpbmdzICgyOTcwNTM1ODk0MzI3Mjg4NDIxKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGVuZ2xpc2hfaW1lX2lucHV0X29wdGlvbnMgKDM5MDk5NDU2MTI5Mzk2Njg1NTQpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgZW5nbGlzaF9pbWVfcmVzZWFyY2hfbG9nICg4NDkyNjAyMjk1Njk2NTc3ODUxKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHVzZV9jb250YWN0c19mb3Jfc3BlbGxjaGVja2luZ19vcHRpb25fdGl0bGUgKDUzNzQxMjA5OTgxMjUzNTM4OTgpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgdXNlX2NvbnRhY3RzX2Zvcl9zcGVsbGNoZWNraW5nX29wdGlvbl9zdW1tYXJ5ICg4NzU0NDEzMzgyNTQzMzA3NzEzKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHZpYnJhdGVfb25fa2V5cHJlc3MgKDUyNTgwNzk0OTQyNzY5NTU0NjApIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc291bmRfb25fa2V5cHJlc3MgKDYwOTM1OTIyOTcxOTgyNDM2NDQpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgcG9wdXBfb25fa2V5cHJlc3MgKDEyMzg5NDgxNTcyMzUxMjk0NCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBnZW5lcmFsX2NhdGVnb3J5ICgxODU5MDg4NDY3MDE3NTczMTk1KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGNvcnJlY3Rpb25fY2F0ZWdvcnkgKDIyMzY3NTA5MTUwNTY2MDc2MTMpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgZ2VzdHVyZV90eXBpbmdfY2F0ZWdvcnkgKDQ5NzI2MzYxMjEzMDUzMjYzMCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBtaXNjX2NhdGVnb3J5ICg2ODk0MTkyODE0ODY4MjMzNDUzKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGFkdmFuY2VkX3NldHRpbmdzICgzNjI4OTUxNDQ0OTU1OTE0NjMpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgYWR2YW5jZWRfc2V0dGluZ3Nfc3VtbWFyeSAoNDQ4Nzk4MDQ1NjE1MjgzMDI3MSkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBpbmNsdWRlX290aGVyX2ltZXNfaW5fbGFuZ3VhZ2Vfc3dpdGNoX2xpc3QgKDQ1MzM2ODk5NjAzMDg1NjU1MTkpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgaW5jbHVkZV9vdGhlcl9pbWVzX2luX2xhbmd1YWdlX3N3aXRjaF9saXN0X3N1bW1hcnkgKDg0MDYzNzEyOTEwMzMxNzYzNSkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzaG93X2xhbmd1YWdlX3N3aXRjaF9rZXkgKDU5MTU0Nzg4MjgzMTg3NzQzODQpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc2hvd19sYW5ndWFnZV9zd2l0Y2hfa2V5X3N1bW1hcnkgKDczNDM0MDM2NDc0NzQyNjU3MTMpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc2xpZGluZ19rZXlfaW5wdXRfcHJldmlldyAoNjYwNDI2MjM1OTUxMDA2ODM3MCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzbGlkaW5nX2tleV9pbnB1dF9wcmV2aWV3X3N1bW1hcnkgKDYzNDA1MjQzNDU3MjkwOTM4ODYpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Iga2V5X3ByZXZpZXdfcG9wdXBfZGlzbWlzc19kZWxheSAoNjIxMzE2NDg5NzQ0MzA2ODI0OCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBrZXlfcHJldmlld19wb3B1cF9kaXNtaXNzX25vX2RlbGF5ICgyMDk2MTIzMTUxNTcxNDU4MDY0KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGtleV9wcmV2aWV3X3BvcHVwX2Rpc21pc3NfZGVmYXVsdF9kZWxheSAoMjE2Njk2NDMzMzkwMzkwNjczNCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBhYmJyZXZpYXRpb25fdW5pdF9taWxsaXNlY29uZHMgKDg3MDAyODYwOTQwMjgzMjMzNjMpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgdXNlX2NvbnRhY3RzX2RpY3QgKDQ0MzUzMTc5Nzc4MDQxODA4MTUpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgdXNlX2NvbnRhY3RzX2RpY3Rfc3VtbWFyeSAoNjU5OTk4MzMzNDUwNzg3OTk1OSkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciB1c2VfZG91YmxlX3NwYWNlX3BlcmlvZCAoODc4MTUyOTk2OTQyNTA4Mjg2MCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciB1c2VfZG91YmxlX3NwYWNlX3BlcmlvZF9zdW1tYXJ5ICg2NTMyODkyMTg3MjQ3OTUyNzk5KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGF1dG9fY2FwICgxNzE5NzQ2Njc0ODU0NjI4MjUyKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGF1dG9fY2FwX3N1bW1hcnkgKDc5MzQ0NTI3NjEwMjI5NDY4NzQpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgZWRpdF9wZXJzb25hbF9kaWN0aW9uYXJ5ICgzOTk2OTEwMDM4OTUyOTQwNDIwKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGNvbmZpZ3VyZV9kaWN0aW9uYXJpZXNfdGl0bGUgKDQyMzg2NTIzMzg1NTY5MDIwNDkpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgbWFpbl9kaWN0aW9uYXJ5ICg0Nzk4NzYzNzgxODE4MzYxMTY4KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHByZWZzX3Nob3dfc3VnZ2VzdGlvbnMgKDgwMjY3OTk2NjM0NDU1MzE2MzcpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgcHJlZnNfc2hvd19zdWdnZXN0aW9uc19zdW1tYXJ5ICgxNTgzMTMyMjc5NDk4NTAyODI1KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHByZWZzX3N1Z2dlc3Rpb25fdmlzaWJpbGl0eV9zaG93X25hbWUgKDMyMTk5MTY1OTQwNjc1NTEzMDMpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgcHJlZnNfc3VnZ2VzdGlvbl92aXNpYmlsaXR5X3Nob3dfb25seV9wb3J0cmFpdF9uYW1lICgzODU5NzgzNzY3NDM1MjM5MTE4KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHByZWZzX3N1Z2dlc3Rpb25fdmlzaWJpbGl0eV9oaWRlX25hbWUgKDYzMDkxNDM5MjY0MjIyMzQ2NzMpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgYXV0b19jb3JyZWN0aW9uICg3NjMwNzIwODg1MTk0OTk2OTUwKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGF1dG9fY29ycmVjdGlvbl9zdW1tYXJ5ICg1NjI1NzUxNTUxMTM0NjU4MDA2KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGF1dG9fY29ycmVjdGlvbl90aHJlc2hvbGRfbW9kZV9vZmYgKDg0NzA4ODI2NjU0MTc5NDQwMjYpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgYXV0b19jb3JyZWN0aW9uX3RocmVzaG9sZF9tb2RlX21vZGVzdCAoODc4ODM2NjY5MDYyMDc5OTA5NykgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBhdXRvX2NvcnJlY3Rpb25fdGhyZXNob2xkX21vZGVfYWdnZXJlc3NpdmUgKDM1MjQwMjkxMDM3MzQ5MjM4MTkpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgYXV0b19jb3JyZWN0aW9uX3RocmVzaG9sZF9tb2RlX3ZlcnlfYWdnZXJlc3NpdmUgKDMzODY3ODIyMzU1NDA1NDc2NzgpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgYmlncmFtX3ByZWRpY3Rpb24gKDEwODQ0NDkxODc3MjM5NDg1NTApIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgYmlncmFtX3ByZWRpY3Rpb25fc3VtbWFyeSAoMzg5NjM2MjY4Mjc1MTEwOTY3NykgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBnZXN0dXJlX2lucHV0ICg4MjY5NTExNTIyNTQ1NjM4MjcpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgZ2VzdHVyZV9pbnB1dF9zdW1tYXJ5ICg5MTgwMzUwNjM5MzA1NzMxMjMxKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGdlc3R1cmVfcHJldmlld190cmFpbCAoMzgwMjMzMzM2OTMzNTcyMjIyMSkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBnZXN0dXJlX2Zsb2F0aW5nX3ByZXZpZXdfdGV4dCAoNDQ0MzI0MDMzNDczOTM4MTA1MykgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBnZXN0dXJlX2Zsb2F0aW5nX3ByZXZpZXdfdGV4dF9zdW1tYXJ5ICg0NDcyNjk2MjEzOTk2MjAzNTMzKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGFkZGVkX3dvcmQgKDg5OTM4ODMzNTQ2MjI0ODQzNzIpIC0tPgorICAgIDxza2lwIC8+CisgICAgPHN0cmluZyBuYW1lPSJsYWJlbF9nb19rZXkiIG1zZ2lkPSIxNjM1MTQ4MDgyMTM3MjE5MTQ4Ij4i0J7QtNC4Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibGFiZWxfbmV4dF9rZXkiIG1zZ2lkPSIzNjI5NzI4NDQ1MjU2NzI1NjgiPiLQodC70LXQtNC90L4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJsYWJlbF9wcmV2aW91c19rZXkiIG1zZ2lkPSIxMjExODY4MTE4MDcxMzg2Nzg3Ij4i0J/RgNC10YLRhdC+0LTQvdC+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibGFiZWxfZG9uZV9rZXkiIG1zZ2lkPSIyNDQxNTc4NzQ4NzcyNTI5Mjg4Ij4i0JPQvtGC0L7QstC+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibGFiZWxfc2VuZF9rZXkiIG1zZ2lkPSIyODE1MDU2NTM0NDMzNzE3NDQ0Ij4i0JjRgdC/0YDQsNGC0LgiPC9zdHJpbmc+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgbGFiZWxfcGF1c2Vfa2V5ICgxODEwOTgzMDg0MjgwMzUzNDApIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgbGFiZWxfd2FpdF9rZXkgKDY0MDIxNTI2MDA4NzgwOTMxMzQpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc3Bva2VuX3VzZV9oZWFkcGhvbmVzICg4OTY5NjE3ODEyODcyODM0OTMpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc3Bva2VuX2N1cnJlbnRfdGV4dF9pcyAoMjQ4NTcyMzAxMTI3MjU4Mzg0NSkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzcG9rZW5fbm9fdGV4dF9lbnRlcmVkICg3NDc5Njg1MjI1NTk3MzQ0NDk2KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNwb2tlbl9kZXNjcmlwdGlvbl91bmtub3duICgzMTk3NDM0MDEwNDAyMTc5MTU3KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNwb2tlbl9kZXNjcmlwdGlvbl9zaGlmdCAoMjQ0MTk3ODgzMjkyNTQ5MzA4KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNwb2tlbl9kZXNjcmlwdGlvbl9zaGlmdF9zaGlmdGVkICgxNjgxODc3MzIzMzQ0MTk1MDM1KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNwb2tlbl9kZXNjcmlwdGlvbl9jYXBzX2xvY2sgKDMyNzY0NzgyNjk1MjYzMDQ0MzIpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc3Bva2VuX2Rlc2NyaXB0aW9uX2RlbGV0ZSAoODc0MDM3Njk0NDI3NjE5OTgwMSkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzcG9rZW5fZGVzY3JpcHRpb25fdG9fc3ltYm9sICg1NDg2MzQwMTA3NTAwNDQ4OTY5KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNwb2tlbl9kZXNjcmlwdGlvbl90b19hbHBoYSAoMjMxMjkzMzg4MTk3NzE4MDcpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc3Bva2VuX2Rlc2NyaXB0aW9uX3RvX251bWVyaWMgKDU5MTc1MjA5MjY4NTE2MTczMikgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzcG9rZW5fZGVzY3JpcHRpb25fc2V0dGluZ3MgKDQ2Mjc0NjI2ODk2MDM4MzgwOTkpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc3Bva2VuX2Rlc2NyaXB0aW9uX3RhYiAoMjY2NzcxNjAwMjY2MzQ4MjI0OCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzcG9rZW5fZGVzY3JpcHRpb25fc3BhY2UgKDI1ODI1MjEwNTAwNDk4NjA4NTkpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc3Bva2VuX2Rlc2NyaXB0aW9uX21pYyAoNjE1NTM2NzQ4ODgyNjExOTUwKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNwb2tlbl9kZXNjcmlwdGlvbl9zbWlsZXkgKDIyNTYzMDk4MjYyMDAxMTM5MTgpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc3Bva2VuX2Rlc2NyaXB0aW9uX3JldHVybiAoODE3ODA4MzE3NzIzODMxNTY0NykgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzcG9rZW5fZGVzY3JpcHRpb25fc2VhcmNoICgxMjQ3MjM2MTYzNzU1OTIwODA4KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNwb2tlbl9kZXNjcmlwdGlvbl9kb3QgKDQwNzExMDgyNDM1MjMxNjczKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNwb2tlbl9kZXNjcmlwdGlvbl9sYW5ndWFnZV9zd2l0Y2ggKDU1MDcwOTEzMjgyMjIzMzEzMTYpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc3Bva2VuX2Rlc2NyaXB0aW9uX2FjdGlvbl9uZXh0ICg4NjM2MDc4Mjc2NjY0MTUwMzI0KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNwb2tlbl9kZXNjcmlwdGlvbl9hY3Rpb25fcHJldmlvdXMgKDgwMDg3MjQxNTAwOTMzNjIwOCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzcG9rZW5fZGVzY3JpcHRpb25fc2hpZnRtb2RlX29uICg1NzAwNDQwNzk4NjA5NTc0NTg5KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNwb2tlbl9kZXNjcmlwdGlvbl9zaGlmdG1vZGVfbG9ja2VkICg1OTMxNzU4MDMxODE3MDE4MzApIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc3Bva2VuX2Rlc2NyaXB0aW9uX3NoaWZ0bW9kZV9vZmYgKDY1NzIxOTk5ODQ0OTE3NDgwOCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzcG9rZW5fZGVzY3JpcHRpb25fbW9kZV9zeW1ib2wgKDcxODMzNDM4Nzk5MDk3NDc2NDIpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc3Bva2VuX2Rlc2NyaXB0aW9uX21vZGVfYWxwaGEgKDM1MjgzMDc2NzQzOTAxNTY5NTYpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc3Bva2VuX2Rlc2NyaXB0aW9uX21vZGVfcGhvbmUgKDY1MjAyMDc5NDMxMzIwMjYyNjQpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc3Bva2VuX2Rlc2NyaXB0aW9uX21vZGVfcGhvbmVfc2hpZnQgKDU0OTk2Mjk3NTM5NjI2NDEyMjcpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgYW5ub3VuY2Vfa2V5Ym9hcmRfaGlkZGVuICg4NzE4OTI3ODM1NTMxNDI5ODA3KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGFubm91bmNlX2tleWJvYXJkX21vZGUgKDQ3MjkwODEwNTU0Mzg1MDgzMjEpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Iga2V5Ym9hcmRfbW9kZV9kYXRlICgzMTM3NTIwMTY2ODE3MTI4MTAyKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGtleWJvYXJkX21vZGVfZGF0ZV90aW1lICgzMzk1OTMzNTg0ODg4NTEwNzIpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Iga2V5Ym9hcmRfbW9kZV9lbWFpbCAoNjIxNjI0ODA3ODEyODI5NDI2MikgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBrZXlib2FyZF9tb2RlX2ltICgxMTM3NDA1MDg5NzY2NTU3MDQ4KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGtleWJvYXJkX21vZGVfbnVtYmVyICg3OTkxNjIzNDQwNjk5OTU3MDY5KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGtleWJvYXJkX21vZGVfcGhvbmUgKDY4NTE2Mjc1Mjc0MDE0MzMyMjkpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Iga2V5Ym9hcmRfbW9kZV90ZXh0ICg2NDc5NDM2Njg3ODk5NzAxNjE5KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGtleWJvYXJkX21vZGVfdGltZSAoNDM4MTg1Njg4NTU4MjE0MzI3NykgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBrZXlib2FyZF9tb2RlX3VybCAoMTUxOTgxOTgzNTUxNDkxMTIxOCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciB2b2ljZV9pbnB1dCAoMzU4MzI1ODU4MzUyMTM5NzU0OCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciB2b2ljZV9pbnB1dF9tb2Rlc19tYWluX2tleWJvYXJkICgzMzYwNjYwMzQxMTIxMDgzMTc0KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHZvaWNlX2lucHV0X21vZGVzX3N5bWJvbHNfa2V5Ym9hcmQgKDcyMDMyMTMyNDA3ODYwODQwNjcpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igdm9pY2VfaW5wdXRfbW9kZXNfb2ZmICgzNzQ1Njk5NzQ4MjE4MDgyMDE0KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHZvaWNlX2lucHV0X21vZGVzX3N1bW1hcnlfbWFpbl9rZXlib2FyZCAoNjU4NjU0NDI5MjkwMDMxNDMzOSkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciB2b2ljZV9pbnB1dF9tb2Rlc19zdW1tYXJ5X3N5bWJvbHNfa2V5Ym9hcmQgKDUyMzM3MjU5MjcyODE5MzIzOTEpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igdm9pY2VfaW5wdXRfbW9kZXNfc3VtbWFyeV9vZmYgKDYzODc1NjA5NTkxODk3NjA3KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGNvbmZpZ3VyZV9pbnB1dF9tZXRob2QgKDM3MzM1NjI3MDI5MDc0MjQ1OSkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBsYW5ndWFnZV9zZWxlY3Rpb25fdGl0bGUgKDE2NTEyOTk1OTg1NTUzMjY3NTApIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc2VuZF9mZWVkYmFjayAoMTc4MDQzMTg4NDEwOTM5MjA0NikgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzZWxlY3RfbGFuZ3VhZ2UgKDM2OTM4MTU1ODg3Nzc5MjY4NDgpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgaGludF9hZGRfdG9fZGljdGlvbmFyeSAoNTczNjc4NjU2OTQ2MDg1MzgwKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGhhc19kaWN0aW9uYXJ5ICg2MDcxODQ3OTczNDY2NjI1MDA3KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHByZWZzX2VuYWJsZV9sb2cgKDY2MjA0MjQ1MDUwNzI5NjM1NTcpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgcHJlZnNfZGVzY3JpcHRpb25fbG9nICg3NTI1MjI1NTg0NTU1NDI5MjExKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGtleWJvYXJkX2xheW91dCAoODQ1MTE2NDc4MzUxMDQ4NzUwMSkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzdWJ0eXBlX2VuX0dCICg4ODE3MDYwMTk0MjMxMTM1NSkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzdWJ0eXBlX2VuX1VTICg2MTYwNDUyMzM2NjM0NTM0MjM5KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHN1YnR5cGVfZXNfVVMgKDU1ODMxNDUxOTE0MzAxODAyMDApIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc3VidHlwZV93aXRoX2xheW91dF9lbl9HQiAoMjE3OTA5Nzc0ODcyNDcyNTkwNikgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzdWJ0eXBlX3dpdGhfbGF5b3V0X2VuX1VTICgxMzYyNTgxMzQ3NTc2NzE0NTc5KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHN1YnR5cGVfd2l0aF9sYXlvdXRfZXNfVVMgKDYyNjE3OTEwNTcwMDc4OTAxODkpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc3VidHlwZV9ub19sYW5ndWFnZSAoMTQxNDIwODU3ODA4ODAxNzQ2KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHN1YnR5cGVfbm9fbGFuZ3VhZ2VfcXdlcnR5ICgyOTU2MTIxNDUxNjE2NjMzMTMzKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHN1YnR5cGVfbm9fbGFuZ3VhZ2VfcXdlcnR6ICgxMTc3ODQ4MTcyMzk3MjAyODkwKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHN1YnR5cGVfbm9fbGFuZ3VhZ2VfYXplcnR5ICg4NzIxNDYwOTY4MTQxMTg3Mzk0KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHN1YnR5cGVfbm9fbGFuZ3VhZ2VfZHZvcmFrICgzMTIyOTc2NzM3NjY5ODIzOTM1KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHN1YnR5cGVfbm9fbGFuZ3VhZ2VfY29sZW1hayAoNDIwNTk5Mjk5NDkwNjA5NzI0NCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzdWJ0eXBlX25vX2xhbmd1YWdlX3BjcXdlcnR5ICg4ODQwOTI4Mzc0Mzk0MTgwMTg5KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGN1c3RvbV9pbnB1dF9zdHlsZXNfdGl0bGUgKDg0Mjk5NTI0NDE4MjEyNTE1MTIpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgYWRkX3N0eWxlICg2MTYzMTI2NjE0NTE0NDg5OTUxKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGFkZCAoODI5OTY5OTgwNTY4ODAxNzc5OCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciByZW1vdmUgKDQ0ODYwODE2NTg3NTI5NDQ2MDYpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc2F2ZSAoNzY0NjczODU5NzE5Njc2NzIxNCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzdWJ0eXBlX2xvY2FsZSAoODU3NjQ0MzQ0MDczODE0Mzc2NCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBrZXlib2FyZF9sYXlvdXRfc2V0ICg0MzA5MjMzNjk4MTk0NTY1NjA5KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGN1c3RvbV9pbnB1dF9zdHlsZV9ub3RlX21lc3NhZ2UgKDg4MjY3MzEzMjA4NDYzNjM0MjMpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgZW5hYmxlICg1MDMxMjk0NDQ0NjMwNTIzMjQ3KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIG5vdF9ub3cgKDYxNzI0NjI4ODgyMDI3OTA0ODIpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgY3VzdG9tX2lucHV0X3N0eWxlX2FscmVhZHlfZXhpc3RzICg4MDA4NzI4OTUyMjE1NDQ5NzA3KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHByZWZzX3VzYWJpbGl0eV9zdHVkeV9tb2RlICgxMjYxMTMwNTU1MTM0NTk1MjU0KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHByZWZzX2tleV9sb25ncHJlc3NfdGltZW91dF9zZXR0aW5ncyAoNjEwMjI0MDI5ODkzMjg5Nzg3MykgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBwcmVmc19rZXlwcmVzc192aWJyYXRpb25fZHVyYXRpb25fc2V0dGluZ3MgKDc5MTgzNDE0NTk5NDc0MzkyMjYpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgcHJlZnNfa2V5cHJlc3Nfc291bmRfdm9sdW1lX3NldHRpbmdzICg2MDI3MDA3MzM3MDM2ODkxNjIzKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHByZWZzX3JlYWRfZXh0ZXJuYWxfZGljdGlvbmFyeSAoMjU4ODkzMTQxODU3NTAxMzA2NykgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciByZWFkX2V4dGVybmFsX2RpY3Rpb25hcnlfbm9fZmlsZXNfbWVzc2FnZSAoNDk0NzQyMDk0MjIyNDYyMzc5MikgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciByZWFkX2V4dGVybmFsX2RpY3Rpb25hcnlfbXVsdGlwbGVfZmlsZXNfdGl0bGUgKDc2Mzc3NDkwNDQyNjU4MDg2MjgpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgcmVhZF9leHRlcm5hbF9kaWN0aW9uYXJ5X2NvbmZpcm1faW5zdGFsbF9tZXNzYWdlICg2ODk4NjEwMTYzNzY4OTgwODcwKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGVycm9yICg4OTQwNzYzNjI0NjY4NTEzNjQ4KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGJ1dHRvbl9kZWZhdWx0ICgzOTg4MDE3ODQwNDMxODgxNDkxKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNldHVwX3dlbGNvbWVfdGl0bGUgKDYxMTI4MjE3MDk4MzIwMzE3MTUpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc2V0dXBfd2VsY29tZV9hZGRpdGlvbmFsX2Rlc2NyaXB0aW9uICg4MTUwMjUyMDA4NTQ1NzY4OTUzKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNldHVwX3N0YXJ0X2FjdGlvbiAoODkzNjAzNjQ2MDg5NzM0NzcwOCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzZXR1cF9uZXh0X2FjdGlvbiAoMzcxODIxNDM3OTE1MTQ0NjAzKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNldHVwX3N0ZXBzX3RpdGxlICg2NDAwMzczMDM0ODcxODE2MTgyKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNldHVwX3N0ZXAxX3RpdGxlICgzMTQ3OTY3NjMwMjUzNDYyMzE1KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNldHVwX3N0ZXAxX2luc3RydWN0aW9uICgyNTc4NjMxOTM2NjI0NjM3MjQxKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNldHVwX3N0ZXAxX2ZpbmlzaGVkX2luc3RydWN0aW9uICgxMDc2MTQ4MjAwNDk1Nzk5NCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzZXR1cF9zdGVwMV9hY3Rpb24gKDQzNjY1MTM1MzQ5OTk5MDE3MjgpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc2V0dXBfc3RlcDJfdGl0bGUgKDY4NjA3MjU0NDc5MDY2OTA1OTQpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc2V0dXBfc3RlcDJfaW5zdHJ1Y3Rpb24gKDkxNDE0ODE5NjQ4NzAwMjMzMzYpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc2V0dXBfc3RlcDJfYWN0aW9uICgxNjYwMzMwMzA3MTU5ODI0MzM3KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNldHVwX3N0ZXAzX3RpdGxlICgzMTU0NzU3MTgzNjMxNDkwMjgxKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNldHVwX3N0ZXAzX2luc3RydWN0aW9uICg4MDI1OTgxODI5NjA1NDI2MDAwKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNldHVwX3N0ZXAzX2FjdGlvbiAoNjAwODc5Nzk3MjU2OTQyMjU5KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNldHVwX2ZpbmlzaF9hY3Rpb24gKDI3NjU1OTI0MzQwOTQ2NTM4OSkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzaG93X3NldHVwX3dpemFyZF9pY29uICg1MDA4MDI4NTkwNTkzNzEwODMwKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNob3dfc2V0dXBfd2l6YXJkX2ljb25fc3VtbWFyeSAoNDExOTk5ODMyMjUzNjg4MDIxMykgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBhcHBfbmFtZSAoNjMyMDEwMjYzNzQ5MTIzNDc5MikgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBkaWN0aW9uYXJ5X3Byb3ZpZGVyX25hbWUgKDMwMjczMTUwNDUzOTczNjMwNzkpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgZGljdGlvbmFyeV9zZXJ2aWNlX25hbWUgKDYyMzc0NzIzNTA2OTM1MTE0NDgpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgZG93bmxvYWRfZGVzY3JpcHRpb24gKDYwMTQ4MzUyODMxMTkxOTg1OTEpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgZGljdGlvbmFyeV9zZXR0aW5nc190aXRsZSAoODA5MTQxNzY3NjA0NTY5MzMxMykgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBkaWN0aW9uYXJ5X2luc3RhbGxfb3Zlcl9tZXRlcmVkX25ldHdvcmtfcHJvbXB0ICgzNTg3NTE3ODcwMDA2MzMyOTgwKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGRpY3Rpb25hcnlfc2V0dGluZ3Nfc3VtbWFyeSAoNTMwNTY5NDk4Nzc5OTgyNDM0OSkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciB1c2VyX2RpY3Rpb25hcmllcyAoMzU4MjMzMjA1NTg5MjI1Mjg0NSkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBkZWZhdWx0X3VzZXJfZGljdF9wcmVmX25hbWUgKDE2MjUwNTU3MjA0ODkyODA1MzApIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgZGljdGlvbmFyeV9hdmFpbGFibGUgKDQ3Mjg5NzUzNDU4MTUyMTQyMTgpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgZGljdGlvbmFyeV9kb3dubG9hZGluZyAoMjk4MjY1MDUyNDYyMjYyMDk4MykgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBkaWN0aW9uYXJ5X2luc3RhbGxlZCAoODA4MTU1ODM0MzU1OTM0Mjk2MikgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBkaWN0aW9uYXJ5X2Rpc2FibGVkICg4OTUwMzgzMjE5NTY0NjIxNzYyKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGNhbm5vdF9jb25uZWN0X3RvX2RpY3Rfc2VydmljZSAoOTIxNjkzMzY5NTc2NTczMjM5OCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBub19kaWN0aW9uYXJpZXNfYXZhaWxhYmxlICg4MDM5OTIwNzE2NTY2MTMyNjExKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGNoZWNrX2Zvcl91cGRhdGVzX25vdyAoODA4NzY4ODQ0MDkxNjM4ODU4MSkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBsYXN0X3VwZGF0ZSAoNzMwNDY3NTQ5OTEzNTg4NzgwKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIG1lc3NhZ2VfdXBkYXRpbmcgKDQ0NTc3NjEzOTM5MzIzNzUyMTkpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgbWVzc2FnZV9sb2FkaW5nICg4Njg5MDk2NjM2ODc0NzU4ODE0KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIG1haW5fZGljdF9kZXNjcmlwdGlvbiAoMzA3MjgyMTM1Mjc5MzQ5MjE0MykgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBjYW5jZWwgKDY4MzA5ODAzOTk4NjU2ODMzMjQpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgaW5zdGFsbF9kaWN0ICgxODA4NTI3NzI1NjIxODkzNjUpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgY2FuY2VsX2Rvd25sb2FkX2RpY3QgKDc4NDMzNDAyNzg1MDcwMTkzMDMpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgZGVsZXRlX2RpY3QgKDc1Njg1MzI2ODA4ODMzMDA1NCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzaG91bGRfZG93bmxvYWRfb3Zlcl9tZXRlcmVkX3Byb21wdCAoMjg3ODYyOTU5ODY2NzY1ODg0NSkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBkb3dubG9hZF9vdmVyX21ldGVyZWQgKDE2NDMwNjU4NTExNTk0MDk1NDYpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgZG9fbm90X2Rvd25sb2FkX292ZXJfbWV0ZXJlZCAoMjE3NjIwOTU3OTMxMzk0MTU4MykgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBkaWN0X2F2YWlsYWJsZV9ub3RpZmljYXRpb25fdGl0bGUgKDY1MTQyODg1OTE5NTkxMTcyODgpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgZGljdF9hdmFpbGFibGVfbm90aWZpY2F0aW9uX2Rlc2NyaXB0aW9uICgxMDc1MTk0MTY5NDQzMTYzNDg3KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHRvYXN0X2Rvd25sb2FkaW5nX3N1Z2dlc3Rpb25zICgxMzEzMDI3MzUzNTg4NTY2NjYwKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHZlcnNpb25fdGV4dCAoMjcxNTM1NDIxNTU2ODQ2OTM4NSkgLS0+CisgICAgPHNraXAgLz4KKzwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvamF2YS9yZXMvdmFsdWVzLW1uL3N0cmluZ3MueG1sIGIvamF2YS9yZXMvdmFsdWVzLW1uL3N0cmluZ3MueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE3M2ZlZTEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL3Jlcy92YWx1ZXMtbW4vc3RyaW5ncy54bWwKQEAgLTAsMCArMSw0MjAgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8IS0tIAorLyoKKyoqCisqKiBDb3B5cmlnaHQgMjAwOCwgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorKioKKyoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisqKgorKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorKioKKyoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorKi8KKyAtLT4KKworPHJlc291cmNlcyB4bWxuczphbmRyb2lkPSJodHRwOi8vc2NoZW1hcy5hbmRyb2lkLmNvbS9hcGsvcmVzL2FuZHJvaWQiCisgICAgeG1sbnM6eGxpZmY9InVybjpvYXNpczpuYW1lczp0Yzp4bGlmZjpkb2N1bWVudDoxLjIiPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGFvc3BfYW5kcm9pZF9rZXlib2FyZF9pbWVfbmFtZSAoODI1MDk5MjYxMzYxNjc5MjMyMSkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBhb3NwX2FuZHJvaWRfa2V5Ym9hcmRfaW1lX3NldHRpbmdzICg0MjM2MTU4NzcxNzQ4NTAyNjcpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgYW9zcF9zcGVsbF9jaGVja2VyX3NlcnZpY2VfbmFtZSAoNTExOTUwNDc3MTk5OTQ4MDQ4KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGFvc3BfYW5kcm9pZF9zcGVsbF9jaGVja2VyX3NlcnZpY2Vfc2V0dGluZ3MgKDI5NzA1MzU4OTQzMjcyODg0MjEpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgZW5nbGlzaF9pbWVfaW5wdXRfb3B0aW9ucyAoMzkwOTk0NTYxMjkzOTY2ODU1NCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBlbmdsaXNoX2ltZV9yZXNlYXJjaF9sb2cgKDg0OTI2MDIyOTU2OTY1Nzc4NTEpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgdXNlX2NvbnRhY3RzX2Zvcl9zcGVsbGNoZWNraW5nX29wdGlvbl90aXRsZSAoNTM3NDEyMDk5ODEyNTM1Mzg5OCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciB1c2VfY29udGFjdHNfZm9yX3NwZWxsY2hlY2tpbmdfb3B0aW9uX3N1bW1hcnkgKDg3NTQ0MTMzODI1NDMzMDc3MTMpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgdmlicmF0ZV9vbl9rZXlwcmVzcyAoNTI1ODA3OTQ5NDI3Njk1NTQ2MCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzb3VuZF9vbl9rZXlwcmVzcyAoNjA5MzU5MjI5NzE5ODI0MzY0NCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBwb3B1cF9vbl9rZXlwcmVzcyAoMTIzODk0ODE1NzIzNTEyOTQ0KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGdlbmVyYWxfY2F0ZWdvcnkgKDE4NTkwODg0NjcwMTc1NzMxOTUpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgY29ycmVjdGlvbl9jYXRlZ29yeSAoMjIzNjc1MDkxNTA1NjYwNzYxMykgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBnZXN0dXJlX3R5cGluZ19jYXRlZ29yeSAoNDk3MjYzNjEyMTMwNTMyNjMwKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIG1pc2NfY2F0ZWdvcnkgKDY4OTQxOTI4MTQ4NjgyMzM0NTMpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgYWR2YW5jZWRfc2V0dGluZ3MgKDM2Mjg5NTE0NDQ5NTU5MTQ2MykgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBhZHZhbmNlZF9zZXR0aW5nc19zdW1tYXJ5ICg0NDg3OTgwNDU2MTUyODMwMjcxKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGluY2x1ZGVfb3RoZXJfaW1lc19pbl9sYW5ndWFnZV9zd2l0Y2hfbGlzdCAoNDUzMzY4OTk2MDMwODU2NTUxOSkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBpbmNsdWRlX290aGVyX2ltZXNfaW5fbGFuZ3VhZ2Vfc3dpdGNoX2xpc3Rfc3VtbWFyeSAoODQwNjM3MTI5MTAzMzE3NjM1KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNob3dfbGFuZ3VhZ2Vfc3dpdGNoX2tleSAoNTkxNTQ3ODgyODMxODc3NDM4NCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzaG93X2xhbmd1YWdlX3N3aXRjaF9rZXlfc3VtbWFyeSAoNzM0MzQwMzY0NzQ3NDI2NTcxMykgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzbGlkaW5nX2tleV9pbnB1dF9wcmV2aWV3ICg2NjA0MjYyMzU5NTEwMDY4MzcwKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNsaWRpbmdfa2V5X2lucHV0X3ByZXZpZXdfc3VtbWFyeSAoNjM0MDUyNDM0NTcyOTA5Mzg4NikgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBrZXlfcHJldmlld19wb3B1cF9kaXNtaXNzX2RlbGF5ICg2MjEzMTY0ODk3NDQzMDY4MjQ4KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGtleV9wcmV2aWV3X3BvcHVwX2Rpc21pc3Nfbm9fZGVsYXkgKDIwOTYxMjMxNTE1NzE0NTgwNjQpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Iga2V5X3ByZXZpZXdfcG9wdXBfZGlzbWlzc19kZWZhdWx0X2RlbGF5ICgyMTY2OTY0MzMzOTAzOTA2NzM0KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGFiYnJldmlhdGlvbl91bml0X21pbGxpc2Vjb25kcyAoODcwMDI4NjA5NDAyODMyMzM2MykgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciB1c2VfY29udGFjdHNfZGljdCAoNDQzNTMxNzk3NzgwNDE4MDgxNSkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciB1c2VfY29udGFjdHNfZGljdF9zdW1tYXJ5ICg2NTk5OTgzMzM0NTA3ODc5OTU5KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHVzZV9kb3VibGVfc3BhY2VfcGVyaW9kICg4NzgxNTI5OTY5NDI1MDgyODYwKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHVzZV9kb3VibGVfc3BhY2VfcGVyaW9kX3N1bW1hcnkgKDY1MzI4OTIxODcyNDc5NTI3OTkpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgYXV0b19jYXAgKDE3MTk3NDY2NzQ4NTQ2MjgyNTIpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgYXV0b19jYXBfc3VtbWFyeSAoNzkzNDQ1Mjc2MTAyMjk0Njg3NCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBlZGl0X3BlcnNvbmFsX2RpY3Rpb25hcnkgKDM5OTY5MTAwMzg5NTI5NDA0MjApIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgY29uZmlndXJlX2RpY3Rpb25hcmllc190aXRsZSAoNDIzODY1MjMzODU1NjkwMjA0OSkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBtYWluX2RpY3Rpb25hcnkgKDQ3OTg3NjM3ODE4MTgzNjExNjgpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgcHJlZnNfc2hvd19zdWdnZXN0aW9ucyAoODAyNjc5OTY2MzQ0NTUzMTYzNykgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBwcmVmc19zaG93X3N1Z2dlc3Rpb25zX3N1bW1hcnkgKDE1ODMxMzIyNzk0OTg1MDI4MjUpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgcHJlZnNfc3VnZ2VzdGlvbl92aXNpYmlsaXR5X3Nob3dfbmFtZSAoMzIxOTkxNjU5NDA2NzU1MTMwMykgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBwcmVmc19zdWdnZXN0aW9uX3Zpc2liaWxpdHlfc2hvd19vbmx5X3BvcnRyYWl0X25hbWUgKDM4NTk3ODM3Njc0MzUyMzkxMTgpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgcHJlZnNfc3VnZ2VzdGlvbl92aXNpYmlsaXR5X2hpZGVfbmFtZSAoNjMwOTE0MzkyNjQyMjIzNDY3MykgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBhdXRvX2NvcnJlY3Rpb24gKDc2MzA3MjA4ODUxOTQ5OTY5NTApIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgYXV0b19jb3JyZWN0aW9uX3N1bW1hcnkgKDU2MjU3NTE1NTExMzQ2NTgwMDYpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgYXV0b19jb3JyZWN0aW9uX3RocmVzaG9sZF9tb2RlX29mZiAoODQ3MDg4MjY2NTQxNzk0NDAyNikgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBhdXRvX2NvcnJlY3Rpb25fdGhyZXNob2xkX21vZGVfbW9kZXN0ICg4Nzg4MzY2NjkwNjIwNzk5MDk3KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGF1dG9fY29ycmVjdGlvbl90aHJlc2hvbGRfbW9kZV9hZ2dlcmVzc2l2ZSAoMzUyNDAyOTEwMzczNDkyMzgxOSkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBhdXRvX2NvcnJlY3Rpb25fdGhyZXNob2xkX21vZGVfdmVyeV9hZ2dlcmVzc2l2ZSAoMzM4Njc4MjIzNTU0MDU0NzY3OCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBiaWdyYW1fcHJlZGljdGlvbiAoMTA4NDQ0OTE4NzcyMzk0ODU1MCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBiaWdyYW1fcHJlZGljdGlvbl9zdW1tYXJ5ICgzODk2MzYyNjgyNzUxMTA5Njc3KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGdlc3R1cmVfaW5wdXQgKDgyNjk1MTE1MjI1NDU2MzgyNykgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBnZXN0dXJlX2lucHV0X3N1bW1hcnkgKDkxODAzNTA2MzkzMDU3MzEyMzEpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgZ2VzdHVyZV9wcmV2aWV3X3RyYWlsICgzODAyMzMzMzY5MzM1NzIyMjIxKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGdlc3R1cmVfZmxvYXRpbmdfcHJldmlld190ZXh0ICg0NDQzMjQwMzM0NzM5MzgxMDUzKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGdlc3R1cmVfZmxvYXRpbmdfcHJldmlld190ZXh0X3N1bW1hcnkgKDQ0NzI2OTYyMTM5OTYyMDM1MzMpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgYWRkZWRfd29yZCAoODk5Mzg4MzM1NDYyMjQ4NDM3MikgLS0+CisgICAgPHNraXAgLz4KKyAgICA8c3RyaW5nIG5hbWU9ImxhYmVsX2dvX2tleSIgbXNnaWQ9IjE2MzUxNDgwODIxMzcyMTkxNDgiPiLQntGH0LjRhSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImxhYmVsX25leHRfa2V5IiBtc2dpZD0iMzYyOTcyODQ0NTI1NjcyNTY4Ij4i0JTQsNGA0LDQsNCz0LjQudC9Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibGFiZWxfcHJldmlvdXNfa2V5IiBtc2dpZD0iMTIxMTg2ODExODA3MTM4Njc4NyI+ItOo0LzQvdOp0YUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJsYWJlbF9kb25lX2tleSIgbXNnaWQ9IjI0NDE1Nzg3NDg3NzI1MjkyODgiPiLQpdC40LnQs9C00LvRjdGNIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibGFiZWxfc2VuZF9rZXkiIG1zZ2lkPSIyODE1MDU2NTM0NDMzNzE3NDQ0Ij4i0JjQu9Cz0Y3RjdGFIjwvc3RyaW5nPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGxhYmVsX3BhdXNlX2tleSAoMTgxMDk4MzA4NDI4MDM1MzQwKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGxhYmVsX3dhaXRfa2V5ICg2NDAyMTUyNjAwODc4MDkzMTM0KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNwb2tlbl91c2VfaGVhZHBob25lcyAoODk2OTYxNzgxMjg3MjgzNDkzKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNwb2tlbl9jdXJyZW50X3RleHRfaXMgKDI0ODU3MjMwMTEyNzI1ODM4NDUpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc3Bva2VuX25vX3RleHRfZW50ZXJlZCAoNzQ3OTY4NTIyNTU5NzM0NDQ5NikgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzcG9rZW5fZGVzY3JpcHRpb25fdW5rbm93biAoMzE5NzQzNDAxMDQwMjE3OTE1NykgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzcG9rZW5fZGVzY3JpcHRpb25fc2hpZnQgKDI0NDE5Nzg4MzI5MjU0OTMwOCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzcG9rZW5fZGVzY3JpcHRpb25fc2hpZnRfc2hpZnRlZCAoMTY4MTg3NzMyMzM0NDE5NTAzNSkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzcG9rZW5fZGVzY3JpcHRpb25fY2Fwc19sb2NrICgzMjc2NDc4MjY5NTI2MzA0NDMyKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNwb2tlbl9kZXNjcmlwdGlvbl9kZWxldGUgKDg3NDAzNzY5NDQyNzYxOTk4MDEpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc3Bva2VuX2Rlc2NyaXB0aW9uX3RvX3N5bWJvbCAoNTQ4NjM0MDEwNzUwMDQ0ODk2OSkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzcG9rZW5fZGVzY3JpcHRpb25fdG9fYWxwaGEgKDIzMTI5MzM4ODE5NzcxODA3KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNwb2tlbl9kZXNjcmlwdGlvbl90b19udW1lcmljICg1OTE3NTIwOTI2ODUxNjE3MzIpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc3Bva2VuX2Rlc2NyaXB0aW9uX3NldHRpbmdzICg0NjI3NDYyNjg5NjAzODM4MDk5KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNwb2tlbl9kZXNjcmlwdGlvbl90YWIgKDI2Njc3MTYwMDI2NjM0ODIyNDgpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc3Bva2VuX2Rlc2NyaXB0aW9uX3NwYWNlICgyNTgyNTIxMDUwMDQ5ODYwODU5KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNwb2tlbl9kZXNjcmlwdGlvbl9taWMgKDYxNTUzNjc0ODg4MjYxMTk1MCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzcG9rZW5fZGVzY3JpcHRpb25fc21pbGV5ICgyMjU2MzA5ODI2MjAwMTEzOTE4KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNwb2tlbl9kZXNjcmlwdGlvbl9yZXR1cm4gKDgxNzgwODMxNzcyMzgzMTU2NDcpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc3Bva2VuX2Rlc2NyaXB0aW9uX3NlYXJjaCAoMTI0NzIzNjE2Mzc1NTkyMDgwOCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzcG9rZW5fZGVzY3JpcHRpb25fZG90ICg0MDcxMTA4MjQzNTIzMTY3MykgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzcG9rZW5fZGVzY3JpcHRpb25fbGFuZ3VhZ2Vfc3dpdGNoICg1NTA3MDkxMzI4MjIyMzMxMzE2KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNwb2tlbl9kZXNjcmlwdGlvbl9hY3Rpb25fbmV4dCAoODYzNjA3ODI3NjY2NDE1MDMyNCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzcG9rZW5fZGVzY3JpcHRpb25fYWN0aW9uX3ByZXZpb3VzICg4MDA4NzI0MTUwMDkzMzYyMDgpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc3Bva2VuX2Rlc2NyaXB0aW9uX3NoaWZ0bW9kZV9vbiAoNTcwMDQ0MDc5ODYwOTU3NDU4OSkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzcG9rZW5fZGVzY3JpcHRpb25fc2hpZnRtb2RlX2xvY2tlZCAoNTkzMTc1ODAzMTgxNzAxODMwKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNwb2tlbl9kZXNjcmlwdGlvbl9zaGlmdG1vZGVfb2ZmICg2NTcyMTk5OTg0NDkxNzQ4MDgpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc3Bva2VuX2Rlc2NyaXB0aW9uX21vZGVfc3ltYm9sICg3MTgzMzQzODc5OTA5NzQ3NjQyKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNwb2tlbl9kZXNjcmlwdGlvbl9tb2RlX2FscGhhICgzNTI4MzA3Njc0MzkwMTU2OTU2KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNwb2tlbl9kZXNjcmlwdGlvbl9tb2RlX3Bob25lICg2NTIwMjA3OTQzMTMyMDI2MjY0KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNwb2tlbl9kZXNjcmlwdGlvbl9tb2RlX3Bob25lX3NoaWZ0ICg1NDk5NjI5NzUzOTYyNjQxMjI3KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGFubm91bmNlX2tleWJvYXJkX2hpZGRlbiAoODcxODkyNzgzNTUzMTQyOTgwNykgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBhbm5vdW5jZV9rZXlib2FyZF9tb2RlICg0NzI5MDgxMDU1NDM4NTA4MzIxKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGtleWJvYXJkX21vZGVfZGF0ZSAoMzEzNzUyMDE2NjgxNzEyODEwMikgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBrZXlib2FyZF9tb2RlX2RhdGVfdGltZSAoMzM5NTkzMzU4NDg4ODUxMDcyKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGtleWJvYXJkX21vZGVfZW1haWwgKDYyMTYyNDgwNzgxMjgyOTQyNjIpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Iga2V5Ym9hcmRfbW9kZV9pbSAoMTEzNzQwNTA4OTc2NjU1NzA0OCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBrZXlib2FyZF9tb2RlX251bWJlciAoNzk5MTYyMzQ0MDY5OTk1NzA2OSkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBrZXlib2FyZF9tb2RlX3Bob25lICg2ODUxNjI3NTI3NDAxNDMzMjI5KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGtleWJvYXJkX21vZGVfdGV4dCAoNjQ3OTQzNjY4Nzg5OTcwMTYxOSkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBrZXlib2FyZF9tb2RlX3RpbWUgKDQzODE4NTY4ODU1ODIxNDMyNzcpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Iga2V5Ym9hcmRfbW9kZV91cmwgKDE1MTk4MTk4MzU1MTQ5MTEyMTgpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igdm9pY2VfaW5wdXQgKDM1ODMyNTg1ODM1MjEzOTc1NDgpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igdm9pY2VfaW5wdXRfbW9kZXNfbWFpbl9rZXlib2FyZCAoMzM2MDY2MDM0MTEyMTA4MzE3NCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciB2b2ljZV9pbnB1dF9tb2Rlc19zeW1ib2xzX2tleWJvYXJkICg3MjAzMjEzMjQwNzg2MDg0MDY3KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHZvaWNlX2lucHV0X21vZGVzX29mZiAoMzc0NTY5OTc0ODIxODA4MjAxNCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciB2b2ljZV9pbnB1dF9tb2Rlc19zdW1tYXJ5X21haW5fa2V5Ym9hcmQgKDY1ODY1NDQyOTI5MDAzMTQzMzkpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igdm9pY2VfaW5wdXRfbW9kZXNfc3VtbWFyeV9zeW1ib2xzX2tleWJvYXJkICg1MjMzNzI1OTI3MjgxOTMyMzkxKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHZvaWNlX2lucHV0X21vZGVzX3N1bW1hcnlfb2ZmICg2Mzg3NTYwOTU5MTg5NzYwNykgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBjb25maWd1cmVfaW5wdXRfbWV0aG9kICgzNzMzNTYyNzAyOTA3NDI0NTkpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgbGFuZ3VhZ2Vfc2VsZWN0aW9uX3RpdGxlICgxNjUxMjk5NTk4NTU1MzI2NzUwKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNlbmRfZmVlZGJhY2sgKDE3ODA0MzE4ODQxMDkzOTIwNDYpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc2VsZWN0X2xhbmd1YWdlICgzNjkzODE1NTg4Nzc3OTI2ODQ4KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGhpbnRfYWRkX3RvX2RpY3Rpb25hcnkgKDU3MzY3ODY1Njk0NjA4NTM4MCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBoYXNfZGljdGlvbmFyeSAoNjA3MTg0Nzk3MzQ2NjYyNTAwNykgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBwcmVmc19lbmFibGVfbG9nICg2NjIwNDI0NTA1MDcyOTYzNTU3KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHByZWZzX2Rlc2NyaXB0aW9uX2xvZyAoNzUyNTIyNTU4NDU1NTQyOTIxMSkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBrZXlib2FyZF9sYXlvdXQgKDg0NTExNjQ3ODM1MTA0ODc1MDEpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc3VidHlwZV9lbl9HQiAoODgxNzA2MDE5NDIzMTEzNTUpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc3VidHlwZV9lbl9VUyAoNjE2MDQ1MjMzNjYzNDUzNDIzOSkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzdWJ0eXBlX2VzX1VTICg1NTgzMTQ1MTkxNDMwMTgwMjAwKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHN1YnR5cGVfd2l0aF9sYXlvdXRfZW5fR0IgKDIxNzkwOTc3NDg3MjQ3MjU5MDYpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc3VidHlwZV93aXRoX2xheW91dF9lbl9VUyAoMTM2MjU4MTM0NzU3NjcxNDU3OSkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzdWJ0eXBlX3dpdGhfbGF5b3V0X2VzX1VTICg2MjYxNzkxMDU3MDA3ODkwMTg5KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHN1YnR5cGVfbm9fbGFuZ3VhZ2UgKDE0MTQyMDg1NzgwODgwMTc0NikgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzdWJ0eXBlX25vX2xhbmd1YWdlX3F3ZXJ0eSAoMjk1NjEyMTQ1MTYxNjYzMzEzMykgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzdWJ0eXBlX25vX2xhbmd1YWdlX3F3ZXJ0eiAoMTE3Nzg0ODE3MjM5NzIwMjg5MCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzdWJ0eXBlX25vX2xhbmd1YWdlX2F6ZXJ0eSAoODcyMTQ2MDk2ODE0MTE4NzM5NCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzdWJ0eXBlX25vX2xhbmd1YWdlX2R2b3JhayAoMzEyMjk3NjczNzY2OTgyMzkzNSkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzdWJ0eXBlX25vX2xhbmd1YWdlX2NvbGVtYWsgKDQyMDU5OTI5OTQ5MDYwOTcyNDQpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc3VidHlwZV9ub19sYW5ndWFnZV9wY3F3ZXJ0eSAoODg0MDkyODM3NDM5NDE4MDE4OSkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBjdXN0b21faW5wdXRfc3R5bGVzX3RpdGxlICg4NDI5OTUyNDQxODIxMjUxNTEyKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGFkZF9zdHlsZSAoNjE2MzEyNjYxNDUxNDQ4OTk1MSkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBhZGQgKDgyOTk2OTk4MDU2ODgwMTc3OTgpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgcmVtb3ZlICg0NDg2MDgxNjU4NzUyOTQ0NjA2KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNhdmUgKDc2NDY3Mzg1OTcxOTY3NjcyMTQpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc3VidHlwZV9sb2NhbGUgKDg1NzY0NDM0NDA3MzgxNDM3NjQpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Iga2V5Ym9hcmRfbGF5b3V0X3NldCAoNDMwOTIzMzY5ODE5NDU2NTYwOSkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBjdXN0b21faW5wdXRfc3R5bGVfbm90ZV9tZXNzYWdlICg4ODI2NzMxMzIwODQ2MzYzNDIzKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGVuYWJsZSAoNTAzMTI5NDQ0NDYzMDUyMzI0NykgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBub3Rfbm93ICg2MTcyNDYyODg4MjAyNzkwNDgyKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGN1c3RvbV9pbnB1dF9zdHlsZV9hbHJlYWR5X2V4aXN0cyAoODAwODcyODk1MjIxNTQ0OTcwNykgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBwcmVmc191c2FiaWxpdHlfc3R1ZHlfbW9kZSAoMTI2MTEzMDU1NTEzNDU5NTI1NCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBwcmVmc19rZXlfbG9uZ3ByZXNzX3RpbWVvdXRfc2V0dGluZ3MgKDYxMDIyNDAyOTg5MzI4OTc4NzMpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgcHJlZnNfa2V5cHJlc3NfdmlicmF0aW9uX2R1cmF0aW9uX3NldHRpbmdzICg3OTE4MzQxNDU5OTQ3NDM5MjI2KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHByZWZzX2tleXByZXNzX3NvdW5kX3ZvbHVtZV9zZXR0aW5ncyAoNjAyNzAwNzMzNzAzNjg5MTYyMykgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBwcmVmc19yZWFkX2V4dGVybmFsX2RpY3Rpb25hcnkgKDI1ODg5MzE0MTg1NzUwMTMwNjcpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgcmVhZF9leHRlcm5hbF9kaWN0aW9uYXJ5X25vX2ZpbGVzX21lc3NhZ2UgKDQ5NDc0MjA5NDIyMjQ2MjM3OTIpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgcmVhZF9leHRlcm5hbF9kaWN0aW9uYXJ5X211bHRpcGxlX2ZpbGVzX3RpdGxlICg3NjM3NzQ5MDQ0MjY1ODA4NjI4KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHJlYWRfZXh0ZXJuYWxfZGljdGlvbmFyeV9jb25maXJtX2luc3RhbGxfbWVzc2FnZSAoNjg5ODYxMDE2Mzc2ODk4MDg3MCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBlcnJvciAoODk0MDc2MzYyNDY2ODUxMzY0OCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBidXR0b25fZGVmYXVsdCAoMzk4ODAxNzg0MDQzMTg4MTQ5MSkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzZXR1cF93ZWxjb21lX3RpdGxlICg2MTEyODIxNzA5ODMyMDMxNzE1KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNldHVwX3dlbGNvbWVfYWRkaXRpb25hbF9kZXNjcmlwdGlvbiAoODE1MDI1MjAwODU0NTc2ODk1MykgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzZXR1cF9zdGFydF9hY3Rpb24gKDg5MzYwMzY0NjA4OTczNDc3MDgpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc2V0dXBfbmV4dF9hY3Rpb24gKDM3MTgyMTQzNzkxNTE0NDYwMykgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzZXR1cF9zdGVwc190aXRsZSAoNjQwMDM3MzAzNDg3MTgxNjE4MikgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzZXR1cF9zdGVwMV90aXRsZSAoMzE0Nzk2NzYzMDI1MzQ2MjMxNSkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzZXR1cF9zdGVwMV9pbnN0cnVjdGlvbiAoMjU3ODYzMTkzNjYyNDYzNzI0MSkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzZXR1cF9zdGVwMV9maW5pc2hlZF9pbnN0cnVjdGlvbiAoMTA3NjE0ODIwMDQ5NTc5OTQpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc2V0dXBfc3RlcDFfYWN0aW9uICg0MzY2NTEzNTM0OTk5OTAxNzI4KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNldHVwX3N0ZXAyX3RpdGxlICg2ODYwNzI1NDQ3OTA2NjkwNTk0KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNldHVwX3N0ZXAyX2luc3RydWN0aW9uICg5MTQxNDgxOTY0ODcwMDIzMzM2KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNldHVwX3N0ZXAyX2FjdGlvbiAoMTY2MDMzMDMwNzE1OTgyNDMzNykgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzZXR1cF9zdGVwM190aXRsZSAoMzE1NDc1NzE4MzYzMTQ5MDI4MSkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzZXR1cF9zdGVwM19pbnN0cnVjdGlvbiAoODAyNTk4MTgyOTYwNTQyNjAwMCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzZXR1cF9zdGVwM19hY3Rpb24gKDYwMDg3OTc5NzI1Njk0MjI1OSkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzZXR1cF9maW5pc2hfYWN0aW9uICgyNzY1NTkyNDM0MDk0NjUzODkpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc2hvd19zZXR1cF93aXphcmRfaWNvbiAoNTAwODAyODU5MDU5MzcxMDgzMCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzaG93X3NldHVwX3dpemFyZF9pY29uX3N1bW1hcnkgKDQxMTk5OTgzMjI1MzY4ODAyMTMpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgYXBwX25hbWUgKDYzMjAxMDI2Mzc0OTEyMzQ3OTIpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgZGljdGlvbmFyeV9wcm92aWRlcl9uYW1lICgzMDI3MzE1MDQ1Mzk3MzYzMDc5KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGRpY3Rpb25hcnlfc2VydmljZV9uYW1lICg2MjM3NDcyMzUwNjkzNTExNDQ4KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGRvd25sb2FkX2Rlc2NyaXB0aW9uICg2MDE0ODM1MjgzMTE5MTk4NTkxKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGRpY3Rpb25hcnlfc2V0dGluZ3NfdGl0bGUgKDgwOTE0MTc2NzYwNDU2OTMzMTMpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgZGljdGlvbmFyeV9pbnN0YWxsX292ZXJfbWV0ZXJlZF9uZXR3b3JrX3Byb21wdCAoMzU4NzUxNzg3MDAwNjMzMjk4MCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBkaWN0aW9uYXJ5X3NldHRpbmdzX3N1bW1hcnkgKDUzMDU2OTQ5ODc3OTk4MjQzNDkpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgdXNlcl9kaWN0aW9uYXJpZXMgKDM1ODIzMzIwNTU4OTIyNTI4NDUpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgZGVmYXVsdF91c2VyX2RpY3RfcHJlZl9uYW1lICgxNjI1MDU1NzIwNDg5MjgwNTMwKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGRpY3Rpb25hcnlfYXZhaWxhYmxlICg0NzI4OTc1MzQ1ODE1MjE0MjE4KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGRpY3Rpb25hcnlfZG93bmxvYWRpbmcgKDI5ODI2NTA1MjQ2MjI2MjA5ODMpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgZGljdGlvbmFyeV9pbnN0YWxsZWQgKDgwODE1NTgzNDM1NTkzNDI5NjIpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgZGljdGlvbmFyeV9kaXNhYmxlZCAoODk1MDM4MzIxOTU2NDYyMTc2MikgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBjYW5ub3RfY29ubmVjdF90b19kaWN0X3NlcnZpY2UgKDkyMTY5MzM2OTU3NjU3MzIzOTgpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igbm9fZGljdGlvbmFyaWVzX2F2YWlsYWJsZSAoODAzOTkyMDcxNjU2NjEzMjYxMSkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBjaGVja19mb3JfdXBkYXRlc19ub3cgKDgwODc2ODg0NDA5MTYzODg1ODEpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgbGFzdF91cGRhdGUgKDczMDQ2NzU0OTkxMzU4ODc4MCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBtZXNzYWdlX3VwZGF0aW5nICg0NDU3NzYxMzkzOTMyMzc1MjE5KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIG1lc3NhZ2VfbG9hZGluZyAoODY4OTA5NjYzNjg3NDc1ODgxNCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBtYWluX2RpY3RfZGVzY3JpcHRpb24gKDMwNzI4MjEzNTI3OTM0OTIxNDMpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgY2FuY2VsICg2ODMwOTgwMzk5ODY1NjgzMzI0KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGluc3RhbGxfZGljdCAoMTgwODUyNzcyNTYyMTg5MzY1KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGNhbmNlbF9kb3dubG9hZF9kaWN0ICg3ODQzMzQwMjc4NTA3MDE5MzAzKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGRlbGV0ZV9kaWN0ICg3NTY4NTMyNjgwODgzMzAwNTQpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc2hvdWxkX2Rvd25sb2FkX292ZXJfbWV0ZXJlZF9wcm9tcHQgKDI4Nzg2Mjk1OTg2Njc2NTg4NDUpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgZG93bmxvYWRfb3Zlcl9tZXRlcmVkICgxNjQzMDY1ODUxMTU5NDA5NTQ2KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGRvX25vdF9kb3dubG9hZF9vdmVyX21ldGVyZWQgKDIxNzYyMDk1NzkzMTM5NDE1ODMpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgZGljdF9hdmFpbGFibGVfbm90aWZpY2F0aW9uX3RpdGxlICg2NTE0Mjg4NTkxOTU5MTE3Mjg4KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGRpY3RfYXZhaWxhYmxlX25vdGlmaWNhdGlvbl9kZXNjcmlwdGlvbiAoMTA3NTE5NDE2OTQ0MzE2MzQ4NykgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciB0b2FzdF9kb3dubG9hZGluZ19zdWdnZXN0aW9ucyAoMTMxMzAyNzM1MzU4ODU2NjY2MCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciB2ZXJzaW9uX3RleHQgKDI3MTUzNTQyMTU1Njg0NjkzODUpIC0tPgorICAgIDxza2lwIC8+Cis8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL2phdmEvcmVzL3ZhbHVlcy1tcy9zdHJpbmdzLnhtbCBiL2phdmEvcmVzL3ZhbHVlcy1tcy9zdHJpbmdzLnhtbAppbmRleCA2N2ZkZWE5Li5kMTlkMDFlIDEwMDY0NAotLS0gYS9qYXZhL3Jlcy92YWx1ZXMtbXMvc3RyaW5ncy54bWwKKysrIGIvamF2YS9yZXMvdmFsdWVzLW1zL3N0cmluZ3MueG1sCkBAIC01Myw2ICs1Myw4IEBACiAgICAgPHN0cmluZyBuYW1lPSJ1c2VfZG91YmxlX3NwYWNlX3BlcmlvZF9zdW1tYXJ5IiBtc2dpZD0iNjUzMjg5MjE4NzI0Nzk1Mjc5OSI+Ik1lbmdldGlrIDJYIHBhZGEgYmFyIHJ1YW5nIG1lbWFzdWtrYW4gdGl0aWsgZGlpa3V0aSBkZW5nYW4gcnVhbmciPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJhdXRvX2NhcCIgbXNnaWQ9IjE3MTk3NDY2NzQ4NTQ2MjgyNTIiPiJIdXJ1ZiBiZXNhciBhdXRvIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYXV0b19jYXBfc3VtbWFyeSIgbXNnaWQ9Ijc5MzQ0NTI3NjEwMjI5NDY4NzQiPiJCZXNhcmthbiBwZXJrYXRhYW4gcGVydGFtYSBzZXRpYXAgYXlhdCI8L3N0cmluZz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBlZGl0X3BlcnNvbmFsX2RpY3Rpb25hcnkgKDM5OTY5MTAwMzg5NTI5NDA0MjApIC0tPgorICAgIDxza2lwIC8+CiAgICAgPHN0cmluZyBuYW1lPSJjb25maWd1cmVfZGljdGlvbmFyaWVzX3RpdGxlIiBtc2dpZD0iNDIzODY1MjMzODU1NjkwMjA0OSI+IkthbXVzIHRhbWJhaGFuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ibWFpbl9kaWN0aW9uYXJ5IiBtc2dpZD0iNDc5ODc2Mzc4MTgxODM2MTE2OCI+IkthbXVzIHV0YW1hIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icHJlZnNfc2hvd19zdWdnZXN0aW9ucyIgbXNnaWQ9IjgwMjY3OTk2NjM0NDU1MzE2MzciPiJUdW5qdWtrYW4gY2FkYW5nYW4gcGVtYmV0dWxhbiI8L3N0cmluZz4KQEAgLTE3MSw4ICsxNzMsMjcgQEAKICAgICA8c3RyaW5nIG5hbWU9InJlYWRfZXh0ZXJuYWxfZGljdGlvbmFyeV9jb25maXJtX2luc3RhbGxfbWVzc2FnZSIgbXNnaWQ9IjY4OTg2MTAxNjM3Njg5ODA4NzAiPiJCZXR1bC1iZXR1bCBwYXNhbmcgZmFpbCBpbmkgdW50dWsgPHhsaWZmOmcgaWQ9IkxPQ0FMRV9OQU1FIj4lczwveGxpZmY6Zz4/Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZXJyb3IiIG1zZ2lkPSI4OTQwNzYzNjI0NjY4NTEzNjQ4Ij4iQmVybGFrdSByYWxhdCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJ1dHRvbl9kZWZhdWx0IiBtc2dpZD0iMzk4ODAxNzg0MDQzMTg4MTQ5MSI+IkxhbGFpIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibGFuZ3VhZ2Vfc2V0dGluZ3MiIG1zZ2lkPSIxNjcxMTUzMDUzMjAxODA5MDMxIj4iQmFoYXNhICZhbXA7IGlucHV0Ijwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ic2VsZWN0X2lucHV0X21ldGhvZCIgbXNnaWQ9IjQzMDE2MDIzNzQ2MDkyNzUwMDMiPiJQaWxpaCBrYWVkYWggaW5wdXQiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF93ZWxjb21lX3RpdGxlIiBtc2dpZD0iNjExMjgyMTcwOTgzMjAzMTcxNSI+IlNlbGFtYXQgZGF0YW5nIGtlIDx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF93ZWxjb21lX2FkZGl0aW9uYWxfZGVzY3JpcHRpb24iIG1zZ2lkPSI4MTUwMjUyMDA4NTQ1NzY4OTUzIj4iZGVuZ2FuIFRhaXBhbiBHZXJhayBJc3lhcmF0Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RhcnRfYWN0aW9uIiBtc2dpZD0iODkzNjAzNjQ2MDg5NzM0NzcwOCI+IkJlcm11bGEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9uZXh0X2FjdGlvbiIgbXNnaWQ9IjM3MTgyMTQzNzkxNTE0NDYwMyI+IkxhbmdrYWggc2V0ZXJ1c255YSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXBzX3RpdGxlIiBtc2dpZD0iNjQwMDM3MzAzNDg3MTgxNjE4MiI+Ik1lbnllZGlha2FuIDx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMV90aXRsZSIgbXNnaWQ9IjMxNDc5Njc2MzAyNTM0NjIzMTUiPiJEYXlha2FuIDx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMV9pbnN0cnVjdGlvbiIgbXNnaWQ9IjI1Nzg2MzE5MzY2MjQ2MzcyNDEiPiJTaWxhIHNlbWFrIFwiPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPlwiIGRsbSB0dHBuIEJocyAmYW1wOyBpbnB1dC4gSW5pIG1ibmFya24gYXBsIGRqbG5rbiBwZCBwcmFudGkgYW5kYS4iPC9zdHJpbmc+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc2V0dXBfc3RlcDFfZmluaXNoZWRfaW5zdHJ1Y3Rpb24gKDEwNzYxNDgyMDA0OTU3OTk0KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDFfYWN0aW9uIiBtc2dpZD0iNDM2NjUxMzUzNDk5OTkwMTcyOCI+IkRheWFrYW4gZGFsYW0gVGV0YXBhbiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAyX3RpdGxlIiBtc2dpZD0iNjg2MDcyNTQ0NzkwNjY5MDU5NCI+IkJlcmFsaWgga2UgPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAyX2luc3RydWN0aW9uIiBtc2dpZD0iOTE0MTQ4MTk2NDg3MDAyMzMzNiI+IlNldGVydXNueWEsIHBpbGloIFwiPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPlwiIHNlYmFnYWkga2FlZGFoIGlucHV0IHRla3MgYWt0aWYgYW5kYS4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMl9hY3Rpb24iIG1zZ2lkPSIxNjYwMzMwMzA3MTU5ODI0MzM3Ij4iVHVrYXIga2FlZGFoIGlucHV0Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDNfdGl0bGUiIG1zZ2lkPSIzMTU0NzU3MTgzNjMxNDkwMjgxIj4iVGFobmlhaCwgYW5kYSBzdWRhaCBzZWRpYSEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwM19pbnN0cnVjdGlvbiIgbXNnaWQ9IjgwMjU5ODE4Mjk2MDU0MjYwMDAiPiJLaW5pIGFuZGEgYm9sZWggbWVuYWlwIGRhbGFtIHNlbXVhIGFwbCBrZWdlbWFyYW4gYW5kYSBkZW5nYW4gPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPi4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwM19hY3Rpb24iIG1zZ2lkPSI2MDA4Nzk3OTcyNTY5NDIyNTkiPiJLb25maWd1cmFzaWthbiBiYWhhc2EgdGFtYmFoYW4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9maW5pc2hfYWN0aW9uIiBtc2dpZD0iMjc2NTU5MjQzNDA5NDY1Mzg5Ij4iU2VsZXNhaSI8L3N0cmluZz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzaG93X3NldHVwX3dpemFyZF9pY29uICg1MDA4MDI4NTkwNTkzNzEwODMwKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNob3dfc2V0dXBfd2l6YXJkX2ljb25fc3VtbWFyeSAoNDExOTk5ODMyMjUzNjg4MDIxMykgLS0+CisgICAgPHNraXAgLz4KICAgICA8c3RyaW5nIG5hbWU9ImFwcF9uYW1lIiBtc2dpZD0iNjMyMDEwMjYzNzQ5MTIzNDc5MiI+IlBlbWJla2FsIEthbXVzIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGljdGlvbmFyeV9wcm92aWRlcl9uYW1lIiBtc2dpZD0iMzAyNzMxNTA0NTM5NzM2MzA3OSI+IlBlbWJla2FsIEthbXVzIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGljdGlvbmFyeV9zZXJ2aWNlX25hbWUiIG1zZ2lkPSI2MjM3NDcyMzUwNjkzNTExNDQ4Ij4iUGVya2hpZG1hdGFuIEthbXVzIjwvc3RyaW5nPgpAQCAtMjAzLDQgKzIyNCw2IEBACiAgICAgPHN0cmluZyBuYW1lPSJkaWN0X2F2YWlsYWJsZV9ub3RpZmljYXRpb25fdGl0bGUiIG1zZ2lkPSI2NTE0Mjg4NTkxOTU5MTE3Mjg4Ij4iS2FtdXMgdGVyc2VkaWEgdW50dWsgPHhsaWZmOmcgaWQ9IkxBTkdVQUdFIj4lMSRzPC94bGlmZjpnPiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRpY3RfYXZhaWxhYmxlX25vdGlmaWNhdGlvbl9kZXNjcmlwdGlvbiIgbXNnaWQ9IjEwNzUxOTQxNjk0NDMxNjM0ODciPiJUZWthbiB1bnR1ayBtZW5ndWxhcyBkYW4gbWVtdWF0IHR1cnVuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idG9hc3RfZG93bmxvYWRpbmdfc3VnZ2VzdGlvbnMiIG1zZ2lkPSIxMzEzMDI3MzUzNTg4NTY2NjYwIj4iTWVtdWF0IHR1cnVuOiBjYWRhbmdhbiB1bnR1ayA8eGxpZmY6ZyBpZD0iTEFOR1VBR0UiPiUxJHM8L3hsaWZmOmc+IGFrYW4gc2VkaWEgdGlkYWsgbGFtYSBsYWdpLiI8L3N0cmluZz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciB2ZXJzaW9uX3RleHQgKDI3MTUzNTQyMTU1Njg0NjkzODUpIC0tPgorICAgIDxza2lwIC8+CiA8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL2phdmEvcmVzL3ZhbHVlcy1uYi9zdHJpbmdzLnhtbCBiL2phdmEvcmVzL3ZhbHVlcy1uYi9zdHJpbmdzLnhtbAppbmRleCBjYWE5OGNjLi5jZGUxYWQxIDEwMDY0NAotLS0gYS9qYXZhL3Jlcy92YWx1ZXMtbmIvc3RyaW5ncy54bWwKKysrIGIvamF2YS9yZXMvdmFsdWVzLW5iL3N0cmluZ3MueG1sCkBAIC01Myw2ICs1Myw4IEBACiAgICAgPHN0cmluZyBuYW1lPSJ1c2VfZG91YmxlX3NwYWNlX3BlcmlvZF9zdW1tYXJ5IiBtc2dpZD0iNjUzMjg5MjE4NzI0Nzk1Mjc5OSI+IkRvYmJlbHRyeWtrIHDDpSBtZWxsb21yb21zdGFzdGVuIGZvciBwdW5rdHVtIGV0dGVyZnVsZ3QgYXYgbWVsbG9tcm9tIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYXV0b19jYXAiIG1zZ2lkPSIxNzE5NzQ2Njc0ODU0NjI4MjUyIj4iU3RvciBmb3Jib2tzdGF2Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYXV0b19jYXBfc3VtbWFyeSIgbXNnaWQ9Ijc5MzQ0NTI3NjEwMjI5NDY4NzQiPiJTZXR0IHN0b3IgYm9rc3RhdiBpIGRldCBmw7hyc3RlIG9yZGV0IGkgaHZlciBzZXRuaW5nIjwvc3RyaW5nPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGVkaXRfcGVyc29uYWxfZGljdGlvbmFyeSAoMzk5NjkxMDAzODk1Mjk0MDQyMCkgLS0+CisgICAgPHNraXAgLz4KICAgICA8c3RyaW5nIG5hbWU9ImNvbmZpZ3VyZV9kaWN0aW9uYXJpZXNfdGl0bGUiIG1zZ2lkPSI0MjM4NjUyMzM4NTU2OTAyMDQ5Ij4iVGlsbGVnZ3NvcmRiw7hrZXIiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJtYWluX2RpY3Rpb25hcnkiIG1zZ2lkPSI0Nzk4NzYzNzgxODE4MzYxMTY4Ij4iSG92ZWRvcmRsaXN0ZSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InByZWZzX3Nob3dfc3VnZ2VzdGlvbnMiIG1zZ2lkPSI4MDI2Nzk5NjYzNDQ1NTMxNjM3Ij4iVmlzIHJldHRpbmdzZm9yc2xhZyI8L3N0cmluZz4KQEAgLTE3MSw4ICsxNzMsMjcgQEAKICAgICA8c3RyaW5nIG5hbWU9InJlYWRfZXh0ZXJuYWxfZGljdGlvbmFyeV9jb25maXJtX2luc3RhbGxfbWVzc2FnZSIgbXNnaWQ9IjY4OTg2MTAxNjM3Njg5ODA4NzAiPiJWaWwgZHUgdmlya2VsaWcgaW5zdGFsbGVyZSBkZW5uZSBmaWxlbiBmb3IgPHhsaWZmOmcgaWQ9IkxPQ0FMRV9OQU1FIj4lczwveGxpZmY6Zz4/Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZXJyb3IiIG1zZ2lkPSI4OTQwNzYzNjI0NjY4NTEzNjQ4Ij4iRGV0IG9wcHN0byBlbiBmZWlsIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYnV0dG9uX2RlZmF1bHQiIG1zZ2lkPSIzOTg4MDE3ODQwNDMxODgxNDkxIj4iU3RhbmRhcmQiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJsYW5ndWFnZV9zZXR0aW5ncyIgbXNnaWQ9IjE2NzExNTMwNTMyMDE4MDkwMzEiPiJTcHLDpWsgb2cgaW5uZGF0YSI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InNlbGVjdF9pbnB1dF9tZXRob2QiIG1zZ2lkPSI0MzAxNjAyMzc0NjA5Mjc1MDAzIj4iVmVsZyBpbm5kYXRhbWV0b2RlIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfd2VsY29tZV90aXRsZSIgbXNnaWQ9IjYxMTI4MjE3MDk4MzIwMzE3MTUiPiJWZWxrb21tZW4gdGlsIDx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF93ZWxjb21lX2FkZGl0aW9uYWxfZGVzY3JpcHRpb24iIG1zZ2lkPSI4MTUwMjUyMDA4NTQ1NzY4OTUzIj4ibWVkIE9yZGbDuHJpbmciPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGFydF9hY3Rpb24iIG1zZ2lkPSI4OTM2MDM2NDYwODk3MzQ3NzA4Ij4iU3RhcnR2ZWlsZWRuaW5nIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfbmV4dF9hY3Rpb24iIG1zZ2lkPSIzNzE4MjE0Mzc5MTUxNDQ2MDMiPiJOZXN0ZSB0cmlubiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXBzX3RpdGxlIiBtc2dpZD0iNjQwMDM3MzAzNDg3MTgxNjE4MiI+IktvbmZpZ3VyZXJlciA8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDFfdGl0bGUiIG1zZ2lkPSIzMTQ3OTY3NjMwMjUzNDYyMzE1Ij4iQWt0aXZlciA8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDFfaW5zdHJ1Y3Rpb24iIG1zZ2lkPSIyNTc4NjMxOTM2NjI0NjM3MjQxIj4iU2pla2sgPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPiBpIFNwcsOlayBvZyBpbm5kYXRhLWlubnN0aWxsaW5nZW5lIGRpbmUuIERldHRlIHRpbGxhdGVyIGFwcGVuIMOlIGtqw7hyZSBww6UgZW5oZXRlbi4iPC9zdHJpbmc+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc2V0dXBfc3RlcDFfZmluaXNoZWRfaW5zdHJ1Y3Rpb24gKDEwNzYxNDgyMDA0OTU3OTk0KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDFfYWN0aW9uIiBtc2dpZD0iNDM2NjUxMzUzNDk5OTkwMTcyOCI+IkFrdGl2ZXIgaSBJbm5zdGlsbGluZ2VyIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDJfdGl0bGUiIG1zZ2lkPSI2ODYwNzI1NDQ3OTA2NjkwNTk0Ij4iQnl0dCB0aWwgPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAyX2luc3RydWN0aW9uIiBtc2dpZD0iOTE0MTQ4MTk2NDg3MDAyMzMzNiI+IkRlcmV0dGVyIHZlbGdlciBkdSAgwqs8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+wrsgc29tIGRlbiBha3RpdmUgaW5uZGF0YW1ldG9kZW4gZm9yIHRla3N0LiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAyX2FjdGlvbiIgbXNnaWQ9IjE2NjAzMzAzMDcxNTk4MjQzMzciPiJCeXR0IGlubmRhdGFtZXRvZGUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwM190aXRsZSIgbXNnaWQ9IjMxNTQ3NTcxODM2MzE0OTAyODEiPiJHcmF0dWxlcmVyLCBkdSBlciBrbGFyISI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAzX2luc3RydWN0aW9uIiBtc2dpZD0iODAyNTk4MTgyOTYwNTQyNjAwMCI+Ik7DpSBrYW4gZHUgc2tyaXZlIGlubiBhbGxlIGZhdm9yaXR0YXBwZW5lIGRpbmUgbWVkIDx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz4uIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDNfYWN0aW9uIiBtc2dpZD0iNjAwODc5Nzk3MjU2OTQyMjU5Ij4iS29uZmlndXJlciBmbGVyZSBzcHLDpWsiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9maW5pc2hfYWN0aW9uIiBtc2dpZD0iMjc2NTU5MjQzNDA5NDY1Mzg5Ij4iRnVsbGbDuHJ0Ijwvc3RyaW5nPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNob3dfc2V0dXBfd2l6YXJkX2ljb24gKDUwMDgwMjg1OTA1OTM3MTA4MzApIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc2hvd19zZXR1cF93aXphcmRfaWNvbl9zdW1tYXJ5ICg0MTE5OTk4MzIyNTM2ODgwMjEzKSAtLT4KKyAgICA8c2tpcCAvPgogICAgIDxzdHJpbmcgbmFtZT0iYXBwX25hbWUiIG1zZ2lkPSI2MzIwMTAyNjM3NDkxMjM0NzkyIj4iT3JkbGlzdGVsZXZlcmFuZMO4ciI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRpY3Rpb25hcnlfcHJvdmlkZXJfbmFtZSIgbXNnaWQ9IjMwMjczMTUwNDUzOTczNjMwNzkiPiJPcmRsaXN0ZWxldmVyYW5kw7hyIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGljdGlvbmFyeV9zZXJ2aWNlX25hbWUiIG1zZ2lkPSI2MjM3NDcyMzUwNjkzNTExNDQ4Ij4iT3JkbGlzdGV0amVuZXN0ZSI8L3N0cmluZz4KQEAgLTIwMyw0ICsyMjQsNiBAQAogICAgIDxzdHJpbmcgbmFtZT0iZGljdF9hdmFpbGFibGVfbm90aWZpY2F0aW9uX3RpdGxlIiBtc2dpZD0iNjUxNDI4ODU5MTk1OTExNzI4OCI+IkVuIG9yZGxpc3RlIGVyIHRpbGdqZW5nZWxpZyBmb3IgPHhsaWZmOmcgaWQ9IkxBTkdVQUdFIj4lMSRzPC94bGlmZjpnPiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRpY3RfYXZhaWxhYmxlX25vdGlmaWNhdGlvbl9kZXNjcmlwdGlvbiIgbXNnaWQ9IjEwNzUxOTQxNjk0NDMxNjM0ODciPiJUcnlrayBmb3Igw6Ugc2UgZ2plbm5vbSBvZyBsYXN0ZSBuZWQiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ0b2FzdF9kb3dubG9hZGluZ19zdWdnZXN0aW9ucyIgbXNnaWQ9IjEzMTMwMjczNTM1ODg1NjY2NjAiPiJMYXN0ZXIgbmVkOiBmb3JzbGFnIGJsaXIgc25hcnQgdGlsZ2plbmdlbGlnZSBmb3IgPHhsaWZmOmcgaWQ9IkxBTkdVQUdFIj4lMSRzPC94bGlmZjpnPi4iPC9zdHJpbmc+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgdmVyc2lvbl90ZXh0ICgyNzE1MzU0MjE1NTY4NDY5Mzg1KSAtLT4KKyAgICA8c2tpcCAvPgogPC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9qYXZhL3Jlcy92YWx1ZXMtbmwvc3RyaW5ncy54bWwgYi9qYXZhL3Jlcy92YWx1ZXMtbmwvc3RyaW5ncy54bWwKaW5kZXggNTQ4MDQzMC4uNzEzNTE1ZSAxMDA2NDQKLS0tIGEvamF2YS9yZXMvdmFsdWVzLW5sL3N0cmluZ3MueG1sCisrKyBiL2phdmEvcmVzL3ZhbHVlcy1ubC9zdHJpbmdzLnhtbApAQCAtNTMsNiArNTMsOCBAQAogICAgIDxzdHJpbmcgbmFtZT0idXNlX2RvdWJsZV9zcGFjZV9wZXJpb2Rfc3VtbWFyeSIgbXNnaWQ9IjY1MzI4OTIxODcyNDc5NTI3OTkiPiJEdWJiZWx0aWsgb3Agc3BhdGllYmFsayB2b29yIGVlbiBwdW50IGdldm9sZ2QgZG9vciBlZW4gc3BhdGllIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYXV0b19jYXAiIG1zZ2lkPSIxNzE5NzQ2Njc0ODU0NjI4MjUyIj4iQXV0by1ob29mZGxldHRlcmdlYnJ1aWsiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJhdXRvX2NhcF9zdW1tYXJ5IiBtc2dpZD0iNzkzNDQ1Mjc2MTAyMjk0Njg3NCI+IkhldCBlZXJzdGUgd29vcmQgdmFuIGVsa2UgemluIG1ldCBlZW4gaG9vZmRsZXR0ZXIgc2NocmlqdmVuIjwvc3RyaW5nPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGVkaXRfcGVyc29uYWxfZGljdGlvbmFyeSAoMzk5NjkxMDAzODk1Mjk0MDQyMCkgLS0+CisgICAgPHNraXAgLz4KICAgICA8c3RyaW5nIG5hbWU9ImNvbmZpZ3VyZV9kaWN0aW9uYXJpZXNfdGl0bGUiIG1zZ2lkPSI0MjM4NjUyMzM4NTU2OTAyMDQ5Ij4iV29vcmRlbmJvZWtlbiB0b2V2b2VnZW4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJtYWluX2RpY3Rpb25hcnkiIG1zZ2lkPSI0Nzk4NzYzNzgxODE4MzYxMTY4Ij4iQWxnZW1lZW4gd29vcmRlbmJvZWsiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwcmVmc19zaG93X3N1Z2dlc3Rpb25zIiBtc2dpZD0iODAyNjc5OTY2MzQ0NTUzMTYzNyI+IkNvcnJlY3RpZXZvb3JzdGVsbGVuIHdlZXJnZXZlbiI8L3N0cmluZz4KQEAgLTE3MSw4ICsxNzMsMjcgQEAKICAgICA8c3RyaW5nIG5hbWU9InJlYWRfZXh0ZXJuYWxfZGljdGlvbmFyeV9jb25maXJtX2luc3RhbGxfbWVzc2FnZSIgbXNnaWQ9IjY4OTg2MTAxNjM3Njg5ODA4NzAiPiJXaWx0IHUgZGl0IGJlc3RhbmQgdm9vciA8eGxpZmY6ZyBpZD0iTE9DQUxFX05BTUUiPiVzPC94bGlmZjpnPiBlY2h0IGluc3RhbGxlcmVuPyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImVycm9yIiBtc2dpZD0iODk0MDc2MzYyNDY2ODUxMzY0OCI+IkVyIGlzIGVlbiBmb3V0IG9wZ2V0cmVkZW4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJidXR0b25fZGVmYXVsdCIgbXNnaWQ9IjM5ODgwMTc4NDA0MzE4ODE0OTEiPiJTdGFuZGFhcmQiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJsYW5ndWFnZV9zZXR0aW5ncyIgbXNnaWQ9IjE2NzExNTMwNTMyMDE4MDkwMzEiPiJUYWFsIGVuIGludm9lciI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InNlbGVjdF9pbnB1dF9tZXRob2QiIG1zZ2lkPSI0MzAxNjAyMzc0NjA5Mjc1MDAzIj4iSW52b2VybWV0aG9kZSBzZWxlY3RlcmVuIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfd2VsY29tZV90aXRsZSIgbXNnaWQ9IjYxMTI4MjE3MDk4MzIwMzE3MTUiPiJXZWxrb20gYmlqIDx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF93ZWxjb21lX2FkZGl0aW9uYWxfZGVzY3JpcHRpb24iIG1zZ2lkPSI4MTUwMjUyMDA4NTQ1NzY4OTUzIj4ibWV0IEludm9lciBtZXQgYmV3ZWdpbmdlbiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0YXJ0X2FjdGlvbiIgbXNnaWQ9Ijg5MzYwMzY0NjA4OTczNDc3MDgiPiJBYW4gZGUgc2xhZyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX25leHRfYWN0aW9uIiBtc2dpZD0iMzcxODIxNDM3OTE1MTQ0NjAzIj4iVm9sZ2VuZGUgc3RhcCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXBzX3RpdGxlIiBtc2dpZD0iNjQwMDM3MzAzNDg3MTgxNjE4MiI+Ijx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz4gaW5zdGVsbGVuIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDFfdGl0bGUiIG1zZ2lkPSIzMTQ3OTY3NjMwMjUzNDYyMzE1Ij4iPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPiBpbnNjaGFrZWxlbiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAxX2luc3RydWN0aW9uIiBtc2dpZD0iMjU3ODYzMTkzNjYyNDYzNzI0MSI+IlZpbmsgXCc8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+XCcgYWFuIGluIFwnSW5zdGVsbGluZ2VuIHZvb3IgdGFhbCBlbiBpbnZvZXJcJy4gRGUgYXBwIGthbiBkYW4gd29yZGVuIHVpdGdldm9lcmQgb3AgdXcgYXBwYXJhYXQuIjwvc3RyaW5nPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNldHVwX3N0ZXAxX2ZpbmlzaGVkX2luc3RydWN0aW9uICgxMDc2MTQ4MjAwNDk1Nzk5NCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAxX2FjdGlvbiIgbXNnaWQ9IjQzNjY1MTM1MzQ5OTk5MDE3MjgiPiJJbnNjaGFrZWxlbiBpbiBcJ0luc3RlbGxpbmdlblwnIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDJfdGl0bGUiIG1zZ2lkPSI2ODYwNzI1NDQ3OTA2NjkwNTk0Ij4iT3ZlcnNjaGFrZWxlbiBuYWFyIDx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMl9pbnN0cnVjdGlvbiIgbXNnaWQ9IjkxNDE0ODE5NjQ4NzAwMjMzMzYiPiJTZWxlY3RlZXIgdmVydm9sZ2VucyBcJzx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz5cJyBhbHMgYWN0aWV2ZSB0ZWtzdGludm9lcm1ldGhvZGUuIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDJfYWN0aW9uIiBtc2dpZD0iMTY2MDMzMDMwNzE1OTgyNDMzNyI+IlNjaGFrZWxlbiB0dXNzZW4gaW52b2VybWV0aG9kZW4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwM190aXRsZSIgbXNnaWQ9IjMxNTQ3NTcxODM2MzE0OTAyODEiPiJHZWZlbGljaXRlZXJkLCB1IGt1bnQgbnUgYWFuIGRlIHNsYWcuIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDNfaW5zdHJ1Y3Rpb24iIG1zZ2lkPSI4MDI1OTgxODI5NjA1NDI2MDAwIj4iVSBrdW50IG51IGluIGFsIHV3IGZhdm9yaWV0ZSBhcHBzIHR5cGVuIG1ldCA8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+LiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAzX2FjdGlvbiIgbXNnaWQ9IjYwMDg3OTc5NzI1Njk0MjI1OSI+IkV4dHJhIHRhbGVuIGNvbmZpZ3VyZXJlbiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX2ZpbmlzaF9hY3Rpb24iIG1zZ2lkPSIyNzY1NTkyNDM0MDk0NjUzODkiPiJWb2x0b29pZCI8L3N0cmluZz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzaG93X3NldHVwX3dpemFyZF9pY29uICg1MDA4MDI4NTkwNTkzNzEwODMwKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNob3dfc2V0dXBfd2l6YXJkX2ljb25fc3VtbWFyeSAoNDExOTk5ODMyMjUzNjg4MDIxMykgLS0+CisgICAgPHNraXAgLz4KICAgICA8c3RyaW5nIG5hbWU9ImFwcF9uYW1lIiBtc2dpZD0iNjMyMDEwMjYzNzQ5MTIzNDc5MiI+Ildvb3JkZW5ib2VrbGV2ZXJhbmNpZXIiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkaWN0aW9uYXJ5X3Byb3ZpZGVyX25hbWUiIG1zZ2lkPSIzMDI3MzE1MDQ1Mzk3MzYzMDc5Ij4iV29vcmRlbmJvZWtsZXZlcmFuY2llciI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRpY3Rpb25hcnlfc2VydmljZV9uYW1lIiBtc2dpZD0iNjIzNzQ3MjM1MDY5MzUxMTQ0OCI+Ildvb3JkZW5ib2Vrc2VydmljZSI8L3N0cmluZz4KQEAgLTIwMyw0ICsyMjQsNiBAQAogICAgIDxzdHJpbmcgbmFtZT0iZGljdF9hdmFpbGFibGVfbm90aWZpY2F0aW9uX3RpdGxlIiBtc2dpZD0iNjUxNDI4ODU5MTk1OTExNzI4OCI+IkVyIGlzIGVlbiB3b29yZGVuYm9layBiZXNjaGlrYmFhciB2b29yIGhldCA8eGxpZmY6ZyBpZD0iTEFOR1VBR0UiPiUxJHM8L3hsaWZmOmc+Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGljdF9hdmFpbGFibGVfbm90aWZpY2F0aW9uX2Rlc2NyaXB0aW9uIiBtc2dpZD0iMTA3NTE5NDE2OTQ0MzE2MzQ4NyI+IkRydWsgb20gdGUgY29udHJvbGVyZW4gZW4gdGUgZG93bmxvYWRlbiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InRvYXN0X2Rvd25sb2FkaW5nX3N1Z2dlc3Rpb25zIiBtc2dpZD0iMTMxMzAyNzM1MzU4ODU2NjY2MCI+IkRvd25sb2FkZW46IHN1Z2dlc3RpZXMgdm9vciBoZXQgPHhsaWZmOmcgaWQ9IkxBTkdVQUdFIj4lMSRzPC94bGlmZjpnPiB6aWpuIHN0cmFrcyBiZXNjaGlrYmFhci4iPC9zdHJpbmc+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgdmVyc2lvbl90ZXh0ICgyNzE1MzU0MjE1NTY4NDY5Mzg1KSAtLT4KKyAgICA8c2tpcCAvPgogPC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9qYXZhL3Jlcy92YWx1ZXMtcGwvc3RyaW5ncy54bWwgYi9qYXZhL3Jlcy92YWx1ZXMtcGwvc3RyaW5ncy54bWwKaW5kZXggZjk3MWUyOC4uMjc0M2E1MiAxMDA2NDQKLS0tIGEvamF2YS9yZXMvdmFsdWVzLXBsL3N0cmluZ3MueG1sCisrKyBiL2phdmEvcmVzL3ZhbHVlcy1wbC9zdHJpbmdzLnhtbApAQCAtNTMsNiArNTMsOCBAQAogICAgIDxzdHJpbmcgbmFtZT0idXNlX2RvdWJsZV9zcGFjZV9wZXJpb2Rfc3VtbWFyeSIgbXNnaWQ9IjY1MzI4OTIxODcyNDc5NTI3OTkiPiJEd3Vrcm90bmUga2xpa25pxJljaWUgc3BhY2ppIHdzdGF3aWEga3JvcGvEmSB6ZSBzcGFjasSFIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYXV0b19jYXAiIG1zZ2lkPSIxNzE5NzQ2Njc0ODU0NjI4MjUyIj4iV3N0YXdpYWogd2llbGtpZSBsaXRlcnkiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJhdXRvX2NhcF9zdW1tYXJ5IiBtc2dpZD0iNzkzNDQ1Mjc2MTAyMjk0Njg3NCI+IlphY3p5bmFqIGthxbxkZSB6ZGFuaWUgd2llbGvEhSBsaXRlcsSFIjwvc3RyaW5nPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGVkaXRfcGVyc29uYWxfZGljdGlvbmFyeSAoMzk5NjkxMDAzODk1Mjk0MDQyMCkgLS0+CisgICAgPHNraXAgLz4KICAgICA8c3RyaW5nIG5hbWU9ImNvbmZpZ3VyZV9kaWN0aW9uYXJpZXNfdGl0bGUiIG1zZ2lkPSI0MjM4NjUyMzM4NTU2OTAyMDQ5Ij4iRG9kYXRrb3dlIHPFgm93bmlraSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im1haW5fZGljdGlvbmFyeSIgbXNnaWQ9IjQ3OTg3NjM3ODE4MTgzNjExNjgiPiJTxYJvd25payBnxYLDs3dueSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InByZWZzX3Nob3dfc3VnZ2VzdGlvbnMiIG1zZ2lkPSI4MDI2Nzk5NjYzNDQ1NTMxNjM3Ij4iUG9rYXp1aiBwcm9wb3p5Y2plIHBvcHJhd2VrIjwvc3RyaW5nPgpAQCAtMTcxLDggKzE3MywyNyBAQAogICAgIDxzdHJpbmcgbmFtZT0icmVhZF9leHRlcm5hbF9kaWN0aW9uYXJ5X2NvbmZpcm1faW5zdGFsbF9tZXNzYWdlIiBtc2dpZD0iNjg5ODYxMDE2Mzc2ODk4MDg3MCI+IkN6eSBuYSBwZXdubyB6YWluc3RhbG93YcSHIHRlbiBwbGlrIGRsYSBqxJl6eWthOiA8eGxpZmY6ZyBpZD0iTE9DQUxFX05BTUUiPiVzPC94bGlmZjpnPj8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJlcnJvciIgbXNnaWQ9Ijg5NDA3NjM2MjQ2Njg1MTM2NDgiPiJXeXN0xIVwacWCIGLFgsSFZCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJ1dHRvbl9kZWZhdWx0IiBtc2dpZD0iMzk4ODAxNzg0MDQzMTg4MTQ5MSI+IkRvbXnFm2xuZSI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Imxhbmd1YWdlX3NldHRpbmdzIiBtc2dpZD0iMTY3MTE1MzA1MzIwMTgwOTAzMSI+IkrEmXp5aywga2xhd2lhdHVyYSwgZ8WCb3MiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJzZWxlY3RfaW5wdXRfbWV0aG9kIiBtc2dpZD0iNDMwMTYwMjM3NDYwOTI3NTAwMyI+Ild5YmllcnogbWV0b2TEmSB3cHJvd2FkemFuaWEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF93ZWxjb21lX3RpdGxlIiBtc2dpZD0iNjExMjgyMTcwOTgzMjAzMTcxNSI+IldpdGFteSB3IGFwbGlrYWNqaSA8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfd2VsY29tZV9hZGRpdGlvbmFsX2Rlc2NyaXB0aW9uIiBtc2dpZD0iODE1MDI1MjAwODU0NTc2ODk1MyI+InogcGlzYW5pZW0gZ2VzdGFtaSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0YXJ0X2FjdGlvbiIgbXNnaWQ9Ijg5MzYwMzY0NjA4OTczNDc3MDgiPiJSb3pwb2N6bmlqIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfbmV4dF9hY3Rpb24iIG1zZ2lkPSIzNzE4MjE0Mzc5MTUxNDQ2MDMiPiJOYXN0xJlwbnkga3JvayI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXBzX3RpdGxlIiBtc2dpZD0iNjQwMDM3MzAzNDg3MTgxNjE4MiI+IktvbmZpZ3Vyb3dhbmllIGFwbGlrYWNqaSA8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDFfdGl0bGUiIG1zZ2lkPSIzMTQ3OTY3NjMwMjUzNDYyMzE1Ij4iV8WCxIVjeiBhcGxpa2FjasSZIDx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMV9pbnN0cnVjdGlvbiIgbXNnaWQ9IjI1Nzg2MzE5MzY2MjQ2MzcyNDEiPiJaYXpuYWN6IGFwbGlrYWNqxJkg4oCePHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPuKAnSB3IHVzdGF3aWVuaWFjaCBKxJl6eWssIGtsYXdpYXR1cmEgaSBnxYJvcy4gVW1vxbxsaXdpIHRvIGplaiB1cnVjaGFtaWFuaWUgbmEgdXJ6xIVkemVuaXUuIjwvc3RyaW5nPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNldHVwX3N0ZXAxX2ZpbmlzaGVkX2luc3RydWN0aW9uICgxMDc2MTQ4MjAwNDk1Nzk5NCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAxX2FjdGlvbiIgbXNnaWQ9IjQzNjY1MTM1MzQ5OTk5MDE3MjgiPiJXxYLEhWN6IHcgVXN0YXdpZW5pYWNoIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDJfdGl0bGUiIG1zZ2lkPSI2ODYwNzI1NDQ3OTA2NjkwNTk0Ij4iUHJ6ZcWCxIVjeiBzacSZIG5hIGFwbGlrYWNqxJkgPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAyX2luc3RydWN0aW9uIiBtc2dpZD0iOTE0MTQ4MTk2NDg3MDAyMzMzNiI+Ik5hc3TEmXBuaWUgd3liaWVyeiDigJ48eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+4oCdIGpha28gYWt0eXduxIUgbWV0b2TEmSB3cHJvd2FkemFuaWEgdGVrc3R1LiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAyX2FjdGlvbiIgbXNnaWQ9IjE2NjAzMzAzMDcxNTk4MjQzMzciPiJQcnplxYLEhWN6IG1ldG9keSB3cHJvd2FkemFuaWEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwM190aXRsZSIgbXNnaWQ9IjMxNTQ3NTcxODM2MzE0OTAyODEiPiJHcmF0dWxhY2plISBXc3p5c3RrbyBnb3Rvd2UuIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDNfaW5zdHJ1Y3Rpb24iIG1zZ2lkPSI4MDI1OTgxODI5NjA1NDI2MDAwIj4iVGVyYXogbW/FvGVzeiBwaXNhxIcgd2Ugd3N6eXN0a2ljaCBzd29pY2ggdWx1YmlvbnljaCBhcGxpa2FjamFjaCwgdcW8eXdhasSFYyBhcGxpa2FjamkgPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPi4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwM19hY3Rpb24iIG1zZ2lkPSI2MDA4Nzk3OTcyNTY5NDIyNTkiPiJTa29uZmlndXJ1aiBkb2RhdGtvd2UgasSZenlraSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX2ZpbmlzaF9hY3Rpb24iIG1zZ2lkPSIyNzY1NTkyNDM0MDk0NjUzODkiPiJaYWtvxYRjem9uZSI8L3N0cmluZz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzaG93X3NldHVwX3dpemFyZF9pY29uICg1MDA4MDI4NTkwNTkzNzEwODMwKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNob3dfc2V0dXBfd2l6YXJkX2ljb25fc3VtbWFyeSAoNDExOTk5ODMyMjUzNjg4MDIxMykgLS0+CisgICAgPHNraXAgLz4KICAgICA8c3RyaW5nIG5hbWU9ImFwcF9uYW1lIiBtc2dpZD0iNjMyMDEwMjYzNzQ5MTIzNDc5MiI+IkRvc3Rhd2NhIHPFgm93bmlrYSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRpY3Rpb25hcnlfcHJvdmlkZXJfbmFtZSIgbXNnaWQ9IjMwMjczMTUwNDUzOTczNjMwNzkiPiJEb3N0YXdjYSBzxYJvd25pa2EiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkaWN0aW9uYXJ5X3NlcnZpY2VfbmFtZSIgbXNnaWQ9IjYyMzc0NzIzNTA2OTM1MTE0NDgiPiJVc8WCdWdhIHPFgm93bmlrYSI8L3N0cmluZz4KQEAgLTIwMyw0ICsyMjQsNiBAQAogICAgIDxzdHJpbmcgbmFtZT0iZGljdF9hdmFpbGFibGVfbm90aWZpY2F0aW9uX3RpdGxlIiBtc2dpZD0iNjUxNDI4ODU5MTk1OTExNzI4OCI+IkRvc3TEmXBueSBqZXN0IHPFgm93bmlrIDx4bGlmZjpnIGlkPSJMQU5HVUFHRSI+JTEkczwveGxpZmY6Zz4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkaWN0X2F2YWlsYWJsZV9ub3RpZmljYXRpb25fZGVzY3JpcHRpb24iIG1zZ2lkPSIxMDc1MTk0MTY5NDQzMTYzNDg3Ij4iTmFjacWbbmlqLCBieSBzcHJhd2R6acSHIGkgcG9icmHEhyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InRvYXN0X2Rvd25sb2FkaW5nX3N1Z2dlc3Rpb25zIiBtc2dpZD0iMTMxMzAyNzM1MzU4ODU2NjY2MCI+IlBvYmllcmFuaWUg4oCTIHdrcsOzdGNlIGLEmWTEhSBkb3N0xJlwbmUgc3VnZXN0aWUgdyB0eW0gasSZenlrdTogPHhsaWZmOmcgaWQ9IkxBTkdVQUdFIj4lMSRzPC94bGlmZjpnPi4iPC9zdHJpbmc+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgdmVyc2lvbl90ZXh0ICgyNzE1MzU0MjE1NTY4NDY5Mzg1KSAtLT4KKyAgICA8c2tpcCAvPgogPC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9qYXZhL3Jlcy92YWx1ZXMtcG9ydC9zZXR1cC1kaW1lbnMtc21hbGwtcGhvbmUtcG9ydC54bWwgYi9qYXZhL3Jlcy92YWx1ZXMtcG9ydC9zZXR1cC1kaW1lbnMtc21hbGwtcGhvbmUtcG9ydC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzRmNGQ5MgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvcmVzL3ZhbHVlcy1wb3J0L3NldHVwLWRpbWVucy1zbWFsbC1waG9uZS1wb3J0LnhtbApAQCAtMCwwICsxLDQwIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPCEtLSBDb3B5cmlnaHQgKEMpIDIwMTMgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorCisgICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorCisgICAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisKKyAgICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAgICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy0tPgorCis8cmVzb3VyY2VzIHhtbG5zOmFuZHJvaWQ9Imh0dHA6Ly9zY2hlbWFzLmFuZHJvaWQuY29tL2Fway9yZXMvYW5kcm9pZCI+CisgICAgPCEtLSBTZXR1cCB3aXphcmQgZGltZW5zaW9ucyBmb3Igc21hbGwtcGhvbmUvcG9ydHJhaXQuIC0tPgorICAgIDxkaW1lbiBuYW1lPSJzZXR1cF90aXRsZV90ZXh0X3NpemUiPjQwc3A8L2RpbWVuPgorICAgIDxkaW1lbiBuYW1lPSJzZXR1cF93ZWxjb21lX2Rlc2NyaXB0aW9uX3RleHRfc2l6ZSI+MjBzcDwvZGltZW4+CisgICAgPGRpbWVuIG5hbWU9InNldHVwX3N0ZXBfYnVsbGV0X3RleHRfc2l6ZSI+MThzcDwvZGltZW4+CisgICAgPGRpbWVuIG5hbWU9InNldHVwX3N0ZXBfdHJpYW5nbGVfaW5kaWNhdG9yX2hlaWdodCI+MThkcDwvZGltZW4+CisgICAgPGRpbWVuIG5hbWU9InNldHVwX3N0ZXBfaW5kaWNhdG9yX2hlaWdodCI+MThkcDwvZGltZW4+CisgICAgPGRpbWVuIG5hbWU9InNldHVwX3N0ZXBfdGl0bGVfdGV4dF9zaXplIj4xOHNwPC9kaW1lbj4KKyAgICA8ZGltZW4gbmFtZT0ic2V0dXBfc3RlcF9pbnN0cnVjdGlvbl90ZXh0X3NpemUiPjE0c3A8L2RpbWVuPgorICAgIDxkaW1lbiBuYW1lPSJzZXR1cF9zdGVwX2FjdGlvbl90ZXh0X3NpemUiPjE2c3A8L2RpbWVuPgorICAgIDxkaW1lbiBuYW1lPSJzZXR1cF92ZXJ0aWNhbF9wYWRkaW5nIj4xMmRwPC9kaW1lbj4KKyAgICA8ZGltZW4gbmFtZT0ic2V0dXBfaG9yaXpvbnRhbF9wYWRkaW5nIj4xMmRwPC9kaW1lbj4KKyAgICA8ZGltZW4gbmFtZT0ic2V0dXBfc3RlcF9hY3Rpb25faGVpZ2h0Ij40MmRwPC9kaW1lbj4KKyAgICA8ZGltZW4gbmFtZT0ic2V0dXBfc3RlcF9ob3Jpem9udGFsX3BhZGRpbmciPjIwZHA8L2RpbWVuPgorICAgIDxkaW1lbiBuYW1lPSJzZXR1cF9zdGVwX2hvcml6b250YWxfcGFkZGluZ19oYWxmIj4xMGRwPC9kaW1lbj4KKyAgICA8ZGltZW4gbmFtZT0ic2V0dXBfc3RlcF92ZXJ0aWNhbF9wYWRkaW5nIj4xMmRwPC9kaW1lbj4KKyAgICA8ZGltZW4gbmFtZT0ic2V0dXBfc3RlcF9ob3Jpem9udGFsX2xpbmVfaGVpZ2h0Ij4yZHA8L2RpbWVuPgorICAgIDxpbnRlZ2VyIG5hbWU9InNldHVwX3RpdGxlX3dlaWdodF9pbl9zY3JlZW4iPjQwPC9pbnRlZ2VyPgorICAgIDxpbnRlZ2VyIG5hbWU9InNldHVwX2JvZHlfd2VpZ2h0X2luX3NjcmVlbiI+NjA8L2ludGVnZXI+CisgICAgPGRpbWVuIG5hbWU9InNldHVwX3dlbGNvbWVfdmlkZW9fdmVydGljYWxfbWFyZ2luIj4xNmRwPC9kaW1lbj4KKyAgICA8aW50ZWdlciBuYW1lPSJzZXR1cF93ZWxjb21lX3ZpZGVvX3dlaWdodF9pbl9zY3JlZW4iPjgwPC9pbnRlZ2VyPgorICAgIDxpbnRlZ2VyIG5hbWU9InNldHVwX3dlbGNvbWVfdmlkZW9fbGVmdF9wYWRkaW5nX3dlaWdodF9pbl9zY3JlZW4iPjEwPC9pbnRlZ2VyPgorICAgIDxpbnRlZ2VyIG5hbWU9InNldHVwX3dlbGNvbWVfdmlkZW9fcmlnaHRfcGFkZGluZ193ZWlnaHRfaW5fc2NyZWVuIj4xMDwvaW50ZWdlcj4KKzwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvamF2YS9yZXMvdmFsdWVzLXB0LXJQVC9zdHJpbmdzLnhtbCBiL2phdmEvcmVzL3ZhbHVlcy1wdC1yUFQvc3RyaW5ncy54bWwKaW5kZXggNDc5ZmY5NC4uNjI5N2QzYyAxMDA2NDQKLS0tIGEvamF2YS9yZXMvdmFsdWVzLXB0LXJQVC9zdHJpbmdzLnhtbAorKysgYi9qYXZhL3Jlcy92YWx1ZXMtcHQtclBUL3N0cmluZ3MueG1sCkBAIC01Myw2ICs1Myw4IEBACiAgICAgPHN0cmluZyBuYW1lPSJ1c2VfZG91YmxlX3NwYWNlX3BlcmlvZF9zdW1tYXJ5IiBtc2dpZD0iNjUzMjg5MjE4NzI0Nzk1Mjc5OSI+IlRvY2FyIGR1YXMgdmV6ZXMgbmEgYmFycmEgZXNwYcOnbyBpbnNlcmUgcG9udG8gc2VndWlkbyBkZSBlc3Bhw6dvIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYXV0b19jYXAiIG1zZ2lkPSIxNzE5NzQ2Njc0ODU0NjI4MjUyIj4iTGV0cmFzIG1hacO6c2N1bGFzIGF1dG9tw6F0aWNhcyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImF1dG9fY2FwX3N1bW1hcnkiIG1zZ2lkPSI3OTM0NDUyNzYxMDIyOTQ2ODc0Ij4iTWFpw7pzY3VsYSBubyBpbsOtY2lvIGRhIGZyYXNlIjwvc3RyaW5nPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGVkaXRfcGVyc29uYWxfZGljdGlvbmFyeSAoMzk5NjkxMDAzODk1Mjk0MDQyMCkgLS0+CisgICAgPHNraXAgLz4KICAgICA8c3RyaW5nIG5hbWU9ImNvbmZpZ3VyZV9kaWN0aW9uYXJpZXNfdGl0bGUiIG1zZ2lkPSI0MjM4NjUyMzM4NTU2OTAyMDQ5Ij4iRGljaW9uw6FyaW9zIGV4dHJhcyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im1haW5fZGljdGlvbmFyeSIgbXNnaWQ9IjQ3OTg3NjM3ODE4MTgzNjExNjgiPiJEaWNpb27DoXJpbyBwcmluY2lwYWwiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwcmVmc19zaG93X3N1Z2dlc3Rpb25zIiBtc2dpZD0iODAyNjc5OTY2MzQ0NTUzMTYzNyI+Ik1vc3RyYXIgc3VnZXN0w7VlcyBkZSBjb3JyZWPDp8OjbyI8L3N0cmluZz4KQEAgLTE3MSw4ICsxNzMsMjcgQEAKICAgICA8c3RyaW5nIG5hbWU9InJlYWRfZXh0ZXJuYWxfZGljdGlvbmFyeV9jb25maXJtX2luc3RhbGxfbWVzc2FnZSIgbXNnaWQ9IjY4OTg2MTAxNjM3Njg5ODA4NzAiPiJJbnN0YWxhciBtZXNtbyBlc3RlIGZpY2hlaXJvIHBhcmEgPHhsaWZmOmcgaWQ9IkxPQ0FMRV9OQU1FIj4lczwveGxpZmY6Zz4/Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZXJyb3IiIG1zZ2lkPSI4OTQwNzYzNjI0NjY4NTEzNjQ4Ij4iT2NvcnJldSB1bSBlcnJvIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYnV0dG9uX2RlZmF1bHQiIG1zZ2lkPSIzOTg4MDE3ODQwNDMxODgxNDkxIj4iUHJlZGVmaW5pZG8iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJsYW5ndWFnZV9zZXR0aW5ncyIgbXNnaWQ9IjE2NzExNTMwNTMyMDE4MDkwMzEiPiJJZGlvbWEgZSBlbnRyYWRhIGRlIHNvbSI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InNlbGVjdF9pbnB1dF9tZXRob2QiIG1zZ2lkPSI0MzAxNjAyMzc0NjA5Mjc1MDAzIj4iRXNjb2xoZXIgbyBtw6l0b2RvIGRlIGVudHJhZGEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF93ZWxjb21lX3RpdGxlIiBtc2dpZD0iNjExMjgyMTcwOTgzMjAzMTcxNSI+IkJlbS12aW5kbyhhKSBhIDx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF93ZWxjb21lX2FkZGl0aW9uYWxfZGVzY3JpcHRpb24iIG1zZ2lkPSI4MTUwMjUyMDA4NTQ1NzY4OTUzIj4iY29tIGEgRXNjcml0YSBjb20gR2VzdG9zIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RhcnRfYWN0aW9uIiBtc2dpZD0iODkzNjAzNjQ2MDg5NzM0NzcwOCI+IkNvbWXDp2FyIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfbmV4dF9hY3Rpb24iIG1zZ2lkPSIzNzE4MjE0Mzc5MTUxNDQ2MDMiPiJQYXNzbyBzZWd1aW50ZSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXBzX3RpdGxlIiBtc2dpZD0iNjQwMDM3MzAzNDg3MTgxNjE4MiI+IkNvbmZpZ3VyYXIgPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAxX3RpdGxlIiBtc2dpZD0iMzE0Nzk2NzYzMDI1MzQ2MjMxNSI+IkF0aXZhciA8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDFfaW5zdHJ1Y3Rpb24iIG1zZ2lkPSIyNTc4NjMxOTM2NjI0NjM3MjQxIj4iTWFycXVlIFwiPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPlwiIG5hcyBkZWZpbmnDp8O1ZXMgZGUgSWRpb21hIGUgaW50cm9kdcOnw6NvIHAvIGF1dG9yaXphciBhIGV4ZWN1w6fDo28gbm8gZGlzcG9zaXRpdm8uIjwvc3RyaW5nPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNldHVwX3N0ZXAxX2ZpbmlzaGVkX2luc3RydWN0aW9uICgxMDc2MTQ4MjAwNDk1Nzk5NCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAxX2FjdGlvbiIgbXNnaWQ9IjQzNjY1MTM1MzQ5OTk5MDE3MjgiPiJBdGl2YXIgbmFzIERlZmluacOnw7VlcyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAyX3RpdGxlIiBtc2dpZD0iNjg2MDcyNTQ0NzkwNjY5MDU5NCI+Ik11ZGFyIHBhcmEgPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAyX2luc3RydWN0aW9uIiBtc2dpZD0iOTE0MTQ4MTk2NDg3MDAyMzMzNiI+IkVtIHNlZ3VpZGEsIHNlbGVjaW9uZSBcIjx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz5cIiBjb21vIG8gc2V1IG3DqXRvZG8gZGUgaW50cm9kdcOnw6NvIGRlIHRleHRvIGF0aXZvLiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAyX2FjdGlvbiIgbXNnaWQ9IjE2NjAzMzAzMDcxNTk4MjQzMzciPiJNdWRhciBtw6l0b2RvcyBkZSBpbnRyb2R1w6fDo28iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwM190aXRsZSIgbXNnaWQ9IjMxNTQ3NTcxODM2MzE0OTAyODEiPiJQYXJhYsOpbnMsIGVzdMOhIHByb250byBwYXJhIGNvbWXDp2FyISI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAzX2luc3RydWN0aW9uIiBtc2dpZD0iODAyNTk4MTgyOTYwNTQyNjAwMCI+IkFnb3JhIHBvZGUgZXNjcmV2ZXIgZW0gdG9kYXMgYXMgc3VhcyBhcGxpY2HDp8O1ZXMgZmF2b3JpdGFzIGNvbSA8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+LiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAzX2FjdGlvbiIgbXNnaWQ9IjYwMDg3OTc5NzI1Njk0MjI1OSI+IkNvbmZpZ3VyYXIgaWRpb21hcyBhZGljaW9uYWlzIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfZmluaXNoX2FjdGlvbiIgbXNnaWQ9IjI3NjU1OTI0MzQwOTQ2NTM4OSI+IkNvbmNsdcOtZG8iPC9zdHJpbmc+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc2hvd19zZXR1cF93aXphcmRfaWNvbiAoNTAwODAyODU5MDU5MzcxMDgzMCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzaG93X3NldHVwX3dpemFyZF9pY29uX3N1bW1hcnkgKDQxMTk5OTgzMjI1MzY4ODAyMTMpIC0tPgorICAgIDxza2lwIC8+CiAgICAgPHN0cmluZyBuYW1lPSJhcHBfbmFtZSIgbXNnaWQ9IjYzMjAxMDI2Mzc0OTEyMzQ3OTIiPiJGb3JuZWNlZG9yIGRlIERpY2lvbsOhcmlvIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGljdGlvbmFyeV9wcm92aWRlcl9uYW1lIiBtc2dpZD0iMzAyNzMxNTA0NTM5NzM2MzA3OSI+IkZvcm5lY2Vkb3IgZGUgRGljaW9uw6FyaW8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkaWN0aW9uYXJ5X3NlcnZpY2VfbmFtZSIgbXNnaWQ9IjYyMzc0NzIzNTA2OTM1MTE0NDgiPiJTZXJ2acOnbyBkZSBEaWNpb27DoXJpbyI8L3N0cmluZz4KQEAgLTIwMyw0ICsyMjQsNiBAQAogICAgIDxzdHJpbmcgbmFtZT0iZGljdF9hdmFpbGFibGVfbm90aWZpY2F0aW9uX3RpdGxlIiBtc2dpZD0iNjUxNDI4ODU5MTk1OTExNzI4OCI+IkVzdMOhIGRpc3BvbsOtdmVsIHVtIGRpY2lvbsOhcmlvIHBhcmEgPHhsaWZmOmcgaWQ9IkxBTkdVQUdFIj4lMSRzPC94bGlmZjpnPiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRpY3RfYXZhaWxhYmxlX25vdGlmaWNhdGlvbl9kZXNjcmlwdGlvbiIgbXNnaWQ9IjEwNzUxOTQxNjk0NDMxNjM0ODciPiJQcmltYSBwYXJhIGNvbnN1bHRhciBlIHRyYW5zZmVyaXIiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ0b2FzdF9kb3dubG9hZGluZ19zdWdnZXN0aW9ucyIgbXNnaWQ9IjEzMTMwMjczNTM1ODg1NjY2NjAiPiJBIHRyYW5zZmVyaXI6IGFzIHN1Z2VzdMO1ZXMgcGFyYSA8eGxpZmY6ZyBpZD0iTEFOR1VBR0UiPiUxJHM8L3hsaWZmOmc+IGVzdGFyw6NvIHByb250YXMgZW0gYnJldmUuIjwvc3RyaW5nPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHZlcnNpb25fdGV4dCAoMjcxNTM1NDIxNTU2ODQ2OTM4NSkgLS0+CisgICAgPHNraXAgLz4KIDwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvamF2YS9yZXMvdmFsdWVzLXB0L3N0cmluZ3MueG1sIGIvamF2YS9yZXMvdmFsdWVzLXB0L3N0cmluZ3MueG1sCmluZGV4IGRjMDFjNWIuLmJjNmJjMGEgMTAwNjQ0Ci0tLSBhL2phdmEvcmVzL3ZhbHVlcy1wdC9zdHJpbmdzLnhtbAorKysgYi9qYXZhL3Jlcy92YWx1ZXMtcHQvc3RyaW5ncy54bWwKQEAgLTUzLDYgKzUzLDggQEAKICAgICA8c3RyaW5nIG5hbWU9InVzZV9kb3VibGVfc3BhY2VfcGVyaW9kX3N1bW1hcnkiIG1zZ2lkPSI2NTMyODkyMTg3MjQ3OTUyNzk5Ij4iVG9xdWUgZHVwbG8gbmEgYmFycmEgZGUgZXNwYcOnbyBpbnNlcmUgdW0gcG9udG8gc2VndWlkbyBkZSBlc3Bhw6dvIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYXV0b19jYXAiIG1zZ2lkPSIxNzE5NzQ2Njc0ODU0NjI4MjUyIj4iQ2FwaXRhbGl6LiBhdXRvbcOhdGljYSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImF1dG9fY2FwX3N1bW1hcnkiIG1zZ2lkPSI3OTM0NDUyNzYxMDIyOTQ2ODc0Ij4iSW5pY2lhciBhIHByaW1laXJhIHBhbGF2cmEgZGUgY2FkYSBmcmFzZSBjb20gbGV0cmEgbWFpw7pzY3VsYSI8L3N0cmluZz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBlZGl0X3BlcnNvbmFsX2RpY3Rpb25hcnkgKDM5OTY5MTAwMzg5NTI5NDA0MjApIC0tPgorICAgIDxza2lwIC8+CiAgICAgPHN0cmluZyBuYW1lPSJjb25maWd1cmVfZGljdGlvbmFyaWVzX3RpdGxlIiBtc2dpZD0iNDIzODY1MjMzODU1NjkwMjA0OSI+IkRpY2lvbsOhcmlvcyBjb21wbGVtZW50YXJlcyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im1haW5fZGljdGlvbmFyeSIgbXNnaWQ9IjQ3OTg3NjM3ODE4MTgzNjExNjgiPiJEaWNpb27DoXJpbyBwcmluY2lwYWwiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwcmVmc19zaG93X3N1Z2dlc3Rpb25zIiBtc2dpZD0iODAyNjc5OTY2MzQ0NTUzMTYzNyI+IkV4aWJpciBzdWdlc3TDtWVzIGRlIGNvcnJlw6fDo28iPC9zdHJpbmc+CkBAIC0xNzEsOCArMTczLDI3IEBACiAgICAgPHN0cmluZyBuYW1lPSJyZWFkX2V4dGVybmFsX2RpY3Rpb25hcnlfY29uZmlybV9pbnN0YWxsX21lc3NhZ2UiIG1zZ2lkPSI2ODk4NjEwMTYzNzY4OTgwODcwIj4iRGVzZWphIGluc3RhbGFyIGVzdGUgYXJxdWl2byBwYXJhIDx4bGlmZjpnIGlkPSJMT0NBTEVfTkFNRSI+JXM8L3hsaWZmOmc+PyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImVycm9yIiBtc2dpZD0iODk0MDc2MzYyNDY2ODUxMzY0OCI+Ik9jb3JyZXUgdW0gZXJybyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJ1dHRvbl9kZWZhdWx0IiBtc2dpZD0iMzk4ODAxNzg0MDQzMTg4MTQ5MSI+IlBhZHLDo28iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJsYW5ndWFnZV9zZXR0aW5ncyIgbXNnaWQ9IjE2NzExNTMwNTMyMDE4MDkwMzEiPiJJZGlvbWEgZSBlbnRyYWRhIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ic2VsZWN0X2lucHV0X21ldGhvZCIgbXNnaWQ9IjQzMDE2MDIzNzQ2MDkyNzUwMDMiPiJTZWxlY2lvbmUgbyBtw6l0b2RvIGRlIGVudHJhZGEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF93ZWxjb21lX3RpdGxlIiBtc2dpZD0iNjExMjgyMTcwOTgzMjAzMTcxNSI+IkJlbS12aW5kbyBhbyA8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfd2VsY29tZV9hZGRpdGlvbmFsX2Rlc2NyaXB0aW9uIiBtc2dpZD0iODE1MDI1MjAwODU0NTc2ODk1MyI+ImNvbSBlbnRyYWRhIHBvciBnZXN0b3MiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGFydF9hY3Rpb24iIG1zZ2lkPSI4OTM2MDM2NDYwODk3MzQ3NzA4Ij4iQ29tZcOnYXIiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9uZXh0X2FjdGlvbiIgbXNnaWQ9IjM3MTgyMTQzNzkxNTE0NDYwMyI+IlByw7N4aW1hIGV0YXBhIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcHNfdGl0bGUiIG1zZ2lkPSI2NDAwMzczMDM0ODcxODE2MTgyIj4iQ29uZmlndXJhbmRvIG8gPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAxX3RpdGxlIiBtc2dpZD0iMzE0Nzk2NzYzMDI1MzQ2MjMxNSI+IkF0aXZlIG8gPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAxX2luc3RydWN0aW9uIiBtc2dpZD0iMjU3ODYzMTkzNjYyNDYzNzI0MSI+Ik1hcnF1ZSBcIjx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz5cIiBlbSBcIkNvbmZpZ3VyYcOnw7VlcyBkZSBpZGlvbWEgZSBlbnRyYWRhXCIgcGFyYSBhdXRvcml6YXIgYSBleGVjdcOnw6NvLiI8L3N0cmluZz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzZXR1cF9zdGVwMV9maW5pc2hlZF9pbnN0cnVjdGlvbiAoMTA3NjE0ODIwMDQ5NTc5OTQpIC0tPgorICAgIDxza2lwIC8+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMV9hY3Rpb24iIG1zZ2lkPSI0MzY2NTEzNTM0OTk5OTAxNzI4Ij4iQXRpdmFyIGVtIFwiQ29uZmlndXJhw6fDtWVzXCIiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMl90aXRsZSIgbXNnaWQ9IjY4NjA3MjU0NDc5MDY2OTA1OTQiPiJBYnJhIG8gPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAyX2luc3RydWN0aW9uIiBtc2dpZD0iOTE0MTQ4MTk2NDg3MDAyMzMzNiI+IkVtIHNlZ3VpZGEsIHNlbGVjaW9uZSBcIjx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz5cIiBjb21vIG8gbcOpdG9kbyBkZSBlbnRyYWRhIGRlIHRleHRvIGF0aXZvLiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAyX2FjdGlvbiIgbXNnaWQ9IjE2NjAzMzAzMDcxNTk4MjQzMzciPiJBbHRlcm5hciBtw6l0b2RvcyBkZSBlbnRyYWRhIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDNfdGl0bGUiIG1zZ2lkPSIzMTU0NzU3MTgzNjMxNDkwMjgxIj4iUGFyYWLDqW5zLCB2b2PDqiB0ZXJtaW5vdSEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwM19pbnN0cnVjdGlvbiIgbXNnaWQ9IjgwMjU5ODE4Mjk2MDU0MjYwMDAiPiJBZ29yYSB2b2PDqiBwb2RlIGRpZ2l0YXIgZW0gdG9kb3Mgb3Mgc2V1cyBhcGxpY2F0aXZvcyBmYXZvcml0b3MgY29tIG8gPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPi4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwM19hY3Rpb24iIG1zZ2lkPSI2MDA4Nzk3OTcyNTY5NDIyNTkiPiJDb25maWd1cmFyIGlkaW9tYXMgYWRpY2lvbmFpcyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX2ZpbmlzaF9hY3Rpb24iIG1zZ2lkPSIyNzY1NTkyNDM0MDk0NjUzODkiPiJDb25jbHXDrWRvIjwvc3RyaW5nPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNob3dfc2V0dXBfd2l6YXJkX2ljb24gKDUwMDgwMjg1OTA1OTM3MTA4MzApIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc2hvd19zZXR1cF93aXphcmRfaWNvbl9zdW1tYXJ5ICg0MTE5OTk4MzIyNTM2ODgwMjEzKSAtLT4KKyAgICA8c2tpcCAvPgogICAgIDxzdHJpbmcgbmFtZT0iYXBwX25hbWUiIG1zZ2lkPSI2MzIwMTAyNjM3NDkxMjM0NzkyIj4iUHJvdmVkb3IgZGUgZGljaW9uw6FyaW8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkaWN0aW9uYXJ5X3Byb3ZpZGVyX25hbWUiIG1zZ2lkPSIzMDI3MzE1MDQ1Mzk3MzYzMDc5Ij4iUHJvdmVkb3IgZGUgZGljaW9uw6FyaW8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkaWN0aW9uYXJ5X3NlcnZpY2VfbmFtZSIgbXNnaWQ9IjYyMzc0NzIzNTA2OTM1MTE0NDgiPiJTZXJ2acOnbyBkZSBkaWNpb27DoXJpbyI8L3N0cmluZz4KQEAgLTIwMyw0ICsyMjQsNiBAQAogICAgIDxzdHJpbmcgbmFtZT0iZGljdF9hdmFpbGFibGVfbm90aWZpY2F0aW9uX3RpdGxlIiBtc2dpZD0iNjUxNDI4ODU5MTk1OTExNzI4OCI+IkjDoSB1bSBkaWNpb27DoXJpbyBkaXNwb27DrXZlbCBwYXJhIDx4bGlmZjpnIGlkPSJMQU5HVUFHRSI+JTEkczwveGxpZmY6Zz4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkaWN0X2F2YWlsYWJsZV9ub3RpZmljYXRpb25fZGVzY3JpcHRpb24iIG1zZ2lkPSIxMDc1MTk0MTY5NDQzMTYzNDg3Ij4iUHJlc3Npb25lIHBhcmEgY29uc3VsdGFyIGUgZmF6ZXIgbyBkb3dubG9hZCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InRvYXN0X2Rvd25sb2FkaW5nX3N1Z2dlc3Rpb25zIiBtc2dpZD0iMTMxMzAyNzM1MzU4ODU2NjY2MCI+IkRvd25sb2FkIGVtIGFuZGFtZW50bzogYXMgc3VnZXN0w7VlcyBwYXJhIDx4bGlmZjpnIGlkPSJMQU5HVUFHRSI+JTEkczwveGxpZmY6Zz4gZXN0YXLDo28gcHJvbnRhcyBlbSBicmV2ZS4iPC9zdHJpbmc+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgdmVyc2lvbl90ZXh0ICgyNzE1MzU0MjE1NTY4NDY5Mzg1KSAtLT4KKyAgICA8c2tpcCAvPgogPC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9qYXZhL3Jlcy92YWx1ZXMtcm0vc3RyaW5ncy54bWwgYi9qYXZhL3Jlcy92YWx1ZXMtcm0vc3RyaW5ncy54bWwKaW5kZXggMTVjZDMyNy4uNjY4MzExNCAxMDA2NDQKLS0tIGEvamF2YS9yZXMvdmFsdWVzLXJtL3N0cmluZ3MueG1sCisrKyBiL2phdmEvcmVzL3ZhbHVlcy1ybS9zdHJpbmdzLnhtbApAQCAtODIsNiArODIsOCBAQAogICAgIDxzdHJpbmcgbmFtZT0iYXV0b19jYXAiIG1zZ2lkPSIxNzE5NzQ2Njc0ODU0NjI4MjUyIj4iTWFpdXNjbGFzIGF1dG9tYXRpY2FzIjwvc3RyaW5nPgogICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGF1dG9fY2FwX3N1bW1hcnkgKDc5MzQ0NTI3NjEwMjI5NDY4NzQpIC0tPgogICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgZWRpdF9wZXJzb25hbF9kaWN0aW9uYXJ5ICgzOTk2OTEwMDM4OTUyOTQwNDIwKSAtLT4KKyAgICA8c2tpcCAvPgogICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGNvbmZpZ3VyZV9kaWN0aW9uYXJpZXNfdGl0bGUgKDQyMzg2NTIzMzg1NTY5MDIwNDkpIC0tPgogICAgIDxza2lwIC8+CiAgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgbWFpbl9kaWN0aW9uYXJ5ICg0Nzk4NzYzNzgxODE4MzYxMTY4KSAtLT4KQEAgLTMxMCw5ICszMTIsNDEgQEAKICAgICA8c2tpcCAvPgogICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGJ1dHRvbl9kZWZhdWx0ICgzOTg4MDE3ODQwNDMxODgxNDkxKSAtLT4KICAgICA8c2tpcCAvPgotICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGxhbmd1YWdlX3NldHRpbmdzICgxNjcxMTUzMDUzMjAxODA5MDMxKSAtLT4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzZXR1cF93ZWxjb21lX3RpdGxlICg2MTEyODIxNzA5ODMyMDMxNzE1KSAtLT4KICAgICA8c2tpcCAvPgotICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNlbGVjdF9pbnB1dF9tZXRob2QgKDQzMDE2MDIzNzQ2MDkyNzUwMDMpIC0tPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNldHVwX3dlbGNvbWVfYWRkaXRpb25hbF9kZXNjcmlwdGlvbiAoODE1MDI1MjAwODU0NTc2ODk1MykgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzZXR1cF9zdGFydF9hY3Rpb24gKDg5MzYwMzY0NjA4OTczNDc3MDgpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc2V0dXBfbmV4dF9hY3Rpb24gKDM3MTgyMTQzNzkxNTE0NDYwMykgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzZXR1cF9zdGVwc190aXRsZSAoNjQwMDM3MzAzNDg3MTgxNjE4MikgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzZXR1cF9zdGVwMV90aXRsZSAoMzE0Nzk2NzYzMDI1MzQ2MjMxNSkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzZXR1cF9zdGVwMV9pbnN0cnVjdGlvbiAoMjU3ODYzMTkzNjYyNDYzNzI0MSkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzZXR1cF9zdGVwMV9maW5pc2hlZF9pbnN0cnVjdGlvbiAoMTA3NjE0ODIwMDQ5NTc5OTQpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc2V0dXBfc3RlcDFfYWN0aW9uICg0MzY2NTEzNTM0OTk5OTAxNzI4KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNldHVwX3N0ZXAyX3RpdGxlICg2ODYwNzI1NDQ3OTA2NjkwNTk0KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNldHVwX3N0ZXAyX2luc3RydWN0aW9uICg5MTQxNDgxOTY0ODcwMDIzMzM2KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNldHVwX3N0ZXAyX2FjdGlvbiAoMTY2MDMzMDMwNzE1OTgyNDMzNykgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzZXR1cF9zdGVwM190aXRsZSAoMzE1NDc1NzE4MzYzMTQ5MDI4MSkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzZXR1cF9zdGVwM19pbnN0cnVjdGlvbiAoODAyNTk4MTgyOTYwNTQyNjAwMCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzZXR1cF9zdGVwM19hY3Rpb24gKDYwMDg3OTc5NzI1Njk0MjI1OSkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzZXR1cF9maW5pc2hfYWN0aW9uICgyNzY1NTkyNDM0MDk0NjUzODkpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc2hvd19zZXR1cF93aXphcmRfaWNvbiAoNTAwODAyODU5MDU5MzcxMDgzMCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzaG93X3NldHVwX3dpemFyZF9pY29uX3N1bW1hcnkgKDQxMTk5OTgzMjI1MzY4ODAyMTMpIC0tPgogICAgIDxza2lwIC8+CiAgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgYXBwX25hbWUgKDYzMjAxMDI2Mzc0OTEyMzQ3OTIpIC0tPgogICAgIDxza2lwIC8+CkBAIC0zNzMsNCArNDA3LDYgQEAKICAgICA8c2tpcCAvPgogICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHRvYXN0X2Rvd25sb2FkaW5nX3N1Z2dlc3Rpb25zICgxMzEzMDI3MzUzNTg4NTY2NjYwKSAtLT4KICAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHZlcnNpb25fdGV4dCAoMjcxNTM1NDIxNTU2ODQ2OTM4NSkgLS0+CisgICAgPHNraXAgLz4KIDwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvamF2YS9yZXMvdmFsdWVzLXJvL3N0cmluZ3MueG1sIGIvamF2YS9yZXMvdmFsdWVzLXJvL3N0cmluZ3MueG1sCmluZGV4IDQwNjU2ZDEuLjNhMmNlYzEgMTAwNjQ0Ci0tLSBhL2phdmEvcmVzL3ZhbHVlcy1yby9zdHJpbmdzLnhtbAorKysgYi9qYXZhL3Jlcy92YWx1ZXMtcm8vc3RyaW5ncy54bWwKQEAgLTUzLDYgKzUzLDggQEAKICAgICA8c3RyaW5nIG5hbWU9InVzZV9kb3VibGVfc3BhY2VfcGVyaW9kX3N1bW1hcnkiIG1zZ2lkPSI2NTMyODkyMTg3MjQ3OTUyNzk5Ij4iRHVibGEgYXRpbmdlcmUgYSBiYXJlaSBkZSBzcGHIm2l1IGluc2VyZWF6xIMgcHVuY3QgdXJtYXQgZGUgc3BhyJtpdSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImF1dG9fY2FwIiBtc2dpZD0iMTcxOTc0NjY3NDg1NDYyODI1MiI+IkF1dG8tY2FwaXRhbGl6YXJlIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYXV0b19jYXBfc3VtbWFyeSIgbXNnaWQ9Ijc5MzQ0NTI3NjEwMjI5NDY4NzQiPiJTY3JpZSBjdSBtYWp1c2N1bMSDIHByaW11bCBjdXbDom50IGRpbiBmaWVjYXJlIHByb3BvemnFo2llIjwvc3RyaW5nPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGVkaXRfcGVyc29uYWxfZGljdGlvbmFyeSAoMzk5NjkxMDAzODk1Mjk0MDQyMCkgLS0+CisgICAgPHNraXAgLz4KICAgICA8c3RyaW5nIG5hbWU9ImNvbmZpZ3VyZV9kaWN0aW9uYXJpZXNfdGl0bGUiIG1zZ2lkPSI0MjM4NjUyMzM4NTU2OTAyMDQ5Ij4iRGljxaNpb25hcmUgc3VwbGltZW50YXJlIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ibWFpbl9kaWN0aW9uYXJ5IiBtc2dpZD0iNDc5ODc2Mzc4MTgxODM2MTE2OCI+IkRpY8WjaW9uYXIgcHJpbmNpcGFsIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icHJlZnNfc2hvd19zdWdnZXN0aW9ucyIgbXNnaWQ9IjgwMjY3OTk2NjM0NDU1MzE2MzciPiJBZmnFn2HFo2kgc3VnZXN0aWkgZGUgY29yZWN0YXJlIjwvc3RyaW5nPgpAQCAtMTcxLDggKzE3MywyNyBAQAogICAgIDxzdHJpbmcgbmFtZT0icmVhZF9leHRlcm5hbF9kaWN0aW9uYXJ5X2NvbmZpcm1faW5zdGFsbF9tZXNzYWdlIiBtc2dpZD0iNjg5ODYxMDE2Mzc2ODk4MDg3MCI+IkRvcmnIm2kgc8SDIGluc3RhbGHIm2kgYWNlc3QgZmnImWllciBwZW50cnUgPHhsaWZmOmcgaWQ9IkxPQ0FMRV9OQU1FIj4lczwveGxpZmY6Zz4/Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZXJyb3IiIG1zZ2lkPSI4OTQwNzYzNjI0NjY4NTEzNjQ4Ij4iQSBhcMSDcnV0IG8gZXJvYXJlIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYnV0dG9uX2RlZmF1bHQiIG1zZ2lkPSIzOTg4MDE3ODQwNDMxODgxNDkxIj4iUHJlc3RhYmlsaXQiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJsYW5ndWFnZV9zZXR0aW5ncyIgbXNnaWQ9IjE2NzExNTMwNTMyMDE4MDkwMzEiPiJMaW1ixIMgyJlpIGludHJvZHVjZXJlIGRlIHRleHQiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJzZWxlY3RfaW5wdXRfbWV0aG9kIiBtc2dpZD0iNDMwMTYwMjM3NDYwOTI3NTAwMyI+IkFsZWdlyJtpIG1ldG9kYSBkZSBpbnRyb2R1Y2VyZSBkZSB0ZXh0Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfd2VsY29tZV90aXRsZSIgbXNnaWQ9IjYxMTI4MjE3MDk4MzIwMzE3MTUiPiJCdW4gdmVuaXQgbGEgPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3dlbGNvbWVfYWRkaXRpb25hbF9kZXNjcmlwdGlvbiIgbXNnaWQ9IjgxNTAyNTIwMDg1NDU3Njg5NTMiPiJjdSBUYXN0YXJlYSBnZXN0dWFsxIMiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGFydF9hY3Rpb24iIG1zZ2lkPSI4OTM2MDM2NDYwODk3MzQ3NzA4Ij4iw45uY2VwZcibaSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX25leHRfYWN0aW9uIiBtc2dpZD0iMzcxODIxNDM3OTE1MTQ0NjAzIj4iUGFzdWwgdXJtxIN0b3IiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwc190aXRsZSIgbXNnaWQ9IjY0MDAzNzMwMzQ4NzE4MTYxODIiPiJDb25maWd1cmFyZWEgPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAxX3RpdGxlIiBtc2dpZD0iMzE0Nzk2NzYzMDI1MzQ2MjMxNSI+IkFjdGl2YcibaSA8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDFfaW5zdHJ1Y3Rpb24iIG1zZ2lkPSIyNTc4NjMxOTM2NjI0NjM3MjQxIj4iQmlmYcibaSDigJ48eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+4oCdIGRpbiBzZXTEg3JpbGUgTGltYsSDIMiZaSBpbnRyb2R1Y2VyZSBkZSB0ZXh0LiBBc3RmZWwsIG8gYXV0b3JpemHIm2kgc8SDIHJ1bGV6ZSBwZSBkaXNwb3ppdGl2LiI8L3N0cmluZz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzZXR1cF9zdGVwMV9maW5pc2hlZF9pbnN0cnVjdGlvbiAoMTA3NjE0ODIwMDQ5NTc5OTQpIC0tPgorICAgIDxza2lwIC8+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMV9hY3Rpb24iIG1zZ2lkPSI0MzY2NTEzNTM0OTk5OTAxNzI4Ij4iQWN0aXZhyJtpIMOubiBTZXTEg3JpIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDJfdGl0bGUiIG1zZ2lkPSI2ODYwNzI1NDQ3OTA2NjkwNTk0Ij4iQ29tdXRhyJtpIGxhIDx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz4uIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDJfaW5zdHJ1Y3Rpb24iIG1zZ2lkPSI5MTQxNDgxOTY0ODcwMDIzMzM2Ij4iQXBvaSwgc2VsZWN0YcibaSDigJ48eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+4oCdIGNhIG1ldG9kxIMgZGUgaW50cm9kdWNlcmUgYSB0ZXh0dWx1aSBhY3RpdsSDLiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAyX2FjdGlvbiIgbXNnaWQ9IjE2NjAzMzAzMDcxNTk4MjQzMzciPiJDb211dGHIm2kgw65udHJlIG1ldG9kZWxlIGRlIGludHJvZHVjZXJlIGEgdGV4dHVsdWkiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwM190aXRsZSIgbXNnaWQ9IjMxNTQ3NTcxODM2MzE0OTAyODEiPiJGZWxpY2l0xINyaSwgc3VudGXIm2kgZ2F0YSEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwM19pbnN0cnVjdGlvbiIgbXNnaWQ9IjgwMjU5ODE4Mjk2MDU0MjYwMDAiPiJBY3VtLCBwdXRlyJtpIGludHJvZHVjZSB0ZXh0IMOubiB0b2F0ZSBhcGxpY2HIm2lpbGUgcHJlZmVyYXRlLCB1dGlsaXrDom5kIDx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz4uIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDNfYWN0aW9uIiBtc2dpZD0iNjAwODc5Nzk3MjU2OTQyMjU5Ij4iQ29uZmlndXJhyJtpIGxpbWJpIHN1cGxpbWVudGFyZSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX2ZpbmlzaF9hY3Rpb24iIG1zZ2lkPSIyNzY1NTkyNDM0MDk0NjUzODkiPiJGaW5hbGl6YXQiPC9zdHJpbmc+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc2hvd19zZXR1cF93aXphcmRfaWNvbiAoNTAwODAyODU5MDU5MzcxMDgzMCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzaG93X3NldHVwX3dpemFyZF9pY29uX3N1bW1hcnkgKDQxMTk5OTgzMjI1MzY4ODAyMTMpIC0tPgorICAgIDxza2lwIC8+CiAgICAgPHN0cmluZyBuYW1lPSJhcHBfbmFtZSIgbXNnaWQ9IjYzMjAxMDI2Mzc0OTEyMzQ3OTIiPiJGdXJuaXpvciBkaWPIm2lvbmFyIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGljdGlvbmFyeV9wcm92aWRlcl9uYW1lIiBtc2dpZD0iMzAyNzMxNTA0NTM5NzM2MzA3OSI+IkZ1cm5pem9yIGRpY8ibaW9uYXIiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkaWN0aW9uYXJ5X3NlcnZpY2VfbmFtZSIgbXNnaWQ9IjYyMzc0NzIzNTA2OTM1MTE0NDgiPiJTZXJ2aWNpdSBkaWPIm2lvbmFyIjwvc3RyaW5nPgpAQCAtMjAzLDQgKzIyNCw2IEBACiAgICAgPHN0cmluZyBuYW1lPSJkaWN0X2F2YWlsYWJsZV9ub3RpZmljYXRpb25fdGl0bGUiIG1zZ2lkPSI2NTE0Mjg4NTkxOTU5MTE3Mjg4Ij4iRXN0ZSBkaXNwb25pYmlsIHVuIGRpY8ibaW9uYXIgcGVudHJ1IDx4bGlmZjpnIGlkPSJMQU5HVUFHRSI+JTEkczwveGxpZmY6Zz4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkaWN0X2F2YWlsYWJsZV9ub3RpZmljYXRpb25fZGVzY3JpcHRpb24iIG1zZ2lkPSIxMDc1MTk0MTY5NDQzMTYzNDg3Ij4iQXDEg3NhyJtpIHBlbnRydSBleGFtaW5hcmUgyJlpIGRlc2PEg3JjYXJlIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idG9hc3RfZG93bmxvYWRpbmdfc3VnZ2VzdGlvbnMiIG1zZ2lkPSIxMzEzMDI3MzUzNTg4NTY2NjYwIj4iU2UgZGVzY2FyY8SDOiBzdWdlc3RpaWxlIHBlbnRydSA8eGxpZmY6ZyBpZD0iTEFOR1VBR0UiPiUxJHM8L3hsaWZmOmc+IHZvciBmaSBnYXRhIMOubiBjdXLDom5kLiI8L3N0cmluZz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciB2ZXJzaW9uX3RleHQgKDI3MTUzNTQyMTU1Njg0NjkzODUpIC0tPgorICAgIDxza2lwIC8+CiA8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL2phdmEvcmVzL3ZhbHVlcy1ydS9zdHJpbmdzLnhtbCBiL2phdmEvcmVzL3ZhbHVlcy1ydS9zdHJpbmdzLnhtbAppbmRleCA3YmYxMGFlLi42OTFmMDMwIDEwMDY0NAotLS0gYS9qYXZhL3Jlcy92YWx1ZXMtcnUvc3RyaW5ncy54bWwKKysrIGIvamF2YS9yZXMvdmFsdWVzLXJ1L3N0cmluZ3MueG1sCkBAIC01Myw2ICs1Myw4IEBACiAgICAgPHN0cmluZyBuYW1lPSJ1c2VfZG91YmxlX3NwYWNlX3BlcmlvZF9zdW1tYXJ5IiBtc2dpZD0iNjUzMjg5MjE4NzI0Nzk1Mjc5OSI+ItCS0LLQvtC00LjRgtGMINGC0L7Rh9C60YMg0YEg0L/RgNC+0LHQtdC70L7QvCDQtNCy0L7QudC90YvQvCDQvdCw0LbQsNGC0LjQtdC8INC60L3QvtC/0LrQuCBcItCf0YDQvtCx0LXQu1wiLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImF1dG9fY2FwIiBtc2dpZD0iMTcxOTc0NjY3NDg1NDYyODI1MiI+ItCX0LDQs9C70LDQstC90YvQtSDQsNCy0YLQvtC80LDRgtC40YfQtdGB0LrQuCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImF1dG9fY2FwX3N1bW1hcnkiIG1zZ2lkPSI3OTM0NDUyNzYxMDIyOTQ2ODc0Ij4i0J/QuNGB0LDRgtGMINC/0LXRgNCy0L7QtSDRgdC70L7QstC+INC/0YDQtdC00LvQvtC20LXQvdC40Y8g0YEg0L/RgNC+0L/QuNGB0L3QvtC5INCx0YPQutCy0YsiPC9zdHJpbmc+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgZWRpdF9wZXJzb25hbF9kaWN0aW9uYXJ5ICgzOTk2OTEwMDM4OTUyOTQwNDIwKSAtLT4KKyAgICA8c2tpcCAvPgogICAgIDxzdHJpbmcgbmFtZT0iY29uZmlndXJlX2RpY3Rpb25hcmllc190aXRsZSIgbXNnaWQ9IjQyMzg2NTIzMzg1NTY5MDIwNDkiPiLQlNC+0L/QvtC70L3QuNGC0LXQu9GM0L3Ri9C1INGB0LvQvtCy0LDRgNC4Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ibWFpbl9kaWN0aW9uYXJ5IiBtc2dpZD0iNDc5ODc2Mzc4MTgxODM2MTE2OCI+ItCe0YHQvdC+0LLQvdC+0Lkg0YHQu9C+0LLQsNGA0YwiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwcmVmc19zaG93X3N1Z2dlc3Rpb25zIiBtc2dpZD0iODAyNjc5OTY2MzQ0NTUzMTYzNyI+ItCS0LDRgNC40LDQvdGC0Ysg0LjRgdC/0YDQsNCy0LvQtdC90LjQuSI8L3N0cmluZz4KQEAgLTE3MSw4ICsxNzMsMjcgQEAKICAgICA8c3RyaW5nIG5hbWU9InJlYWRfZXh0ZXJuYWxfZGljdGlvbmFyeV9jb25maXJtX2luc3RhbGxfbWVzc2FnZSIgbXNnaWQ9IjY4OTg2MTAxNjM3Njg5ODA4NzAiPiLQo9GB0YLQsNC90L7QstC40YLRjCDRjdGC0L7RgiDRhNCw0LnQuyDQtNC70Y8g0YHQu9C10LTRg9GO0YnQtdCz0L4g0Y/Qt9GL0LrQsDogPHhsaWZmOmcgaWQ9IkxPQ0FMRV9OQU1FIj4lczwveGxpZmY6Zz4/Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZXJyb3IiIG1zZ2lkPSI4OTQwNzYzNjI0NjY4NTEzNjQ4Ij4i0J7RiNC40LHQutCwIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYnV0dG9uX2RlZmF1bHQiIG1zZ2lkPSIzOTg4MDE3ODQwNDMxODgxNDkxIj4i0J/QviDRg9C80L7Qu9GH0LDQvdC40Y4iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJsYW5ndWFnZV9zZXR0aW5ncyIgbXNnaWQ9IjE2NzExNTMwNTMyMDE4MDkwMzEiPiLQr9C30YvQuiDQuCDQstCy0L7QtCI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InNlbGVjdF9pbnB1dF9tZXRob2QiIG1zZ2lkPSI0MzAxNjAyMzc0NjA5Mjc1MDAzIj4i0JLRi9Cx0LXRgNC40YLQtSDRgdC/0L7RgdC+0LEg0LLQstC+0LTQsCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3dlbGNvbWVfdGl0bGUiIG1zZ2lkPSI2MTEyODIxNzA5ODMyMDMxNzE1Ij4i0J/RgNC10LTRgdGC0LDQstC70Y/QtdC8INC/0YDQuNC70L7QttC10L3QuNC1IFwiPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPlwiIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfd2VsY29tZV9hZGRpdGlvbmFsX2Rlc2NyaXB0aW9uIiBtc2dpZD0iODE1MDI1MjAwODU0NTc2ODk1MyI+ItGBINC90LXQv9GA0LXRgNGL0LLQvdGL0Lwg0LLQstC+0LTQvtC8Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RhcnRfYWN0aW9uIiBtc2dpZD0iODkzNjAzNjQ2MDg5NzM0NzcwOCI+ItCd0LDRh9Cw0YLRjCDRgNCw0LHQvtGC0YMiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9uZXh0X2FjdGlvbiIgbXNnaWQ9IjM3MTgyMTQzNzkxNTE0NDYwMyI+ItCU0LDQu9C10LUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwc190aXRsZSIgbXNnaWQ9IjY0MDAzNzMwMzQ4NzE4MTYxODIiPiI8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+OiDQvdCw0YHRgtGA0L7QudC60LAiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMV90aXRsZSIgbXNnaWQ9IjMxNDc5Njc2MzAyNTM0NjIzMTUiPiI8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+OiDQstC60LvRjtGH0LXQvdC40LUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMV9pbnN0cnVjdGlvbiIgbXNnaWQ9IjI1Nzg2MzE5MzY2MjQ2MzcyNDEiPiLQo9GB0YLQsNC90L7QstC40YLQtSDRhNC70LDQttC+0LogPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPiDQsiDQvNC10L3RjiBcItCv0LfRi9C6INC4INCy0LLQvtC0XCIsINGH0YLQvtCx0Ysg0LjRgdC/0L7Qu9GM0LfQvtCy0LDRgtGMINGN0YLQvtGCINGB0L/QvtGB0L7QsSDQstCy0L7QtNCwINC90LAg0YPRgdGC0YDQvtC50YHRgtCy0LUuIjwvc3RyaW5nPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNldHVwX3N0ZXAxX2ZpbmlzaGVkX2luc3RydWN0aW9uICgxMDc2MTQ4MjAwNDk1Nzk5NCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAxX2FjdGlvbiIgbXNnaWQ9IjQzNjY1MTM1MzQ5OTk5MDE3MjgiPiLQktC60LvRjtGH0LjRgtGMINCyINC90LDRgdGC0YDQvtC50LrQsNGFIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDJfdGl0bGUiIG1zZ2lkPSI2ODYwNzI1NDQ3OTA2NjkwNTk0Ij4iPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPjog0LDQutGC0LjQstCw0YbQuNGPIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDJfaW5zdHJ1Y3Rpb24iIG1zZ2lkPSI5MTQxNDgxOTY0ODcwMDIzMzM2Ij4i0JLRi9Cx0LXRgNC40YLQtSDQv9GA0LjQu9C+0LbQtdC90LjQtSBcIjx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz5cIiDQutCw0Log0YLQtdC60YPRidC40Lkg0YHQv9C+0YHQvtCxINCy0LLQvtC00LAuIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDJfYWN0aW9uIiBtc2dpZD0iMTY2MDMzMDMwNzE1OTgyNDMzNyI+ItCU0YDRg9Cz0L7QuSDRgdC/0L7RgdC+0LEg0LLQstC+0LTQsCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAzX3RpdGxlIiBtc2dpZD0iMzE1NDc1NzE4MzYzMTQ5MDI4MSI+ItCd0LDRgdGC0YDQvtC50YLQtSDQtNC+0L/QvtC70L3QuNGC0LXQu9GM0L3Ri9C1INGP0LfRi9C60LguIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDNfaW5zdHJ1Y3Rpb24iIG1zZ2lkPSI4MDI1OTgxODI5NjA1NDI2MDAwIj4i0KLQtdC/0LXRgNGMINCy0Ysg0LzQvtC20LXRgtC1INC40YHQv9C+0LvRjNC30L7QstCw0YLRjCDQv9GA0LjQu9C+0LbQtdC90LjQtSBcIjx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz5cIiDQtNC70Y8g0L3QsNCx0L7RgNCwINGC0LXQutGB0YLQsC4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwM19hY3Rpb24iIG1zZ2lkPSI2MDA4Nzk3OTcyNTY5NDIyNTkiPiLQndCw0YHRgtGA0L7QuNGC0Ywg0LTQvtC/0L7Qu9C90LjRgtC10LvRjNC90YvQtSDRj9C30YvQutC4Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfZmluaXNoX2FjdGlvbiIgbXNnaWQ9IjI3NjU1OTI0MzQwOTQ2NTM4OSI+ItCT0L7RgtC+0LLQviI8L3N0cmluZz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzaG93X3NldHVwX3dpemFyZF9pY29uICg1MDA4MDI4NTkwNTkzNzEwODMwKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNob3dfc2V0dXBfd2l6YXJkX2ljb25fc3VtbWFyeSAoNDExOTk5ODMyMjUzNjg4MDIxMykgLS0+CisgICAgPHNraXAgLz4KICAgICA8c3RyaW5nIG5hbWU9ImFwcF9uYW1lIiBtc2dpZD0iNjMyMDEwMjYzNzQ5MTIzNDc5MiI+ItCf0L7RgdGC0LDQstGJ0LjQuiDRgdC70L7QstCw0YDQtdC5Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGljdGlvbmFyeV9wcm92aWRlcl9uYW1lIiBtc2dpZD0iMzAyNzMxNTA0NTM5NzM2MzA3OSI+ItCf0L7RgdGC0LDQstGJ0LjQuiDRgdC70L7QstCw0YDQtdC5Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGljdGlvbmFyeV9zZXJ2aWNlX25hbWUiIG1zZ2lkPSI2MjM3NDcyMzUwNjkzNTExNDQ4Ij4i0KHQu9GD0LbQsdCwINGB0LvQvtCy0LDRgNC10LkiPC9zdHJpbmc+CkBAIC0yMDMsNCArMjI0LDYgQEAKICAgICA8c3RyaW5nIG5hbWU9ImRpY3RfYXZhaWxhYmxlX25vdGlmaWNhdGlvbl90aXRsZSIgbXNnaWQ9IjY1MTQyODg1OTE5NTkxMTcyODgiPiLQlNC+0YHRgtGD0L/QtdC9INGB0LvQvtCy0LDRgNGMOiA8eGxpZmY6ZyBpZD0iTEFOR1VBR0UiPiUxJHM8L3hsaWZmOmc+Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGljdF9hdmFpbGFibGVfbm90aWZpY2F0aW9uX2Rlc2NyaXB0aW9uIiBtc2dpZD0iMTA3NTE5NDE2OTQ0MzE2MzQ4NyI+ItCd0LDQttC80LjRgtC1LCDRh9GC0L7QsdGLINC/0YDQvtGB0LzQvtGC0YDQtdGC0Ywg0Lgg0LfQsNCz0YDRg9C30LjRgtGMIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idG9hc3RfZG93bmxvYWRpbmdfc3VnZ2VzdGlvbnMiIG1zZ2lkPSIxMzEzMDI3MzUzNTg4NTY2NjYwIj4i0JfQsNCz0YDRg9C30LrQsCDRgdC70L7QstCw0YDRjzogPHhsaWZmOmcgaWQ9IkxBTkdVQUdFIj4lMSRzPC94bGlmZjpnPuKApiI8L3N0cmluZz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciB2ZXJzaW9uX3RleHQgKDI3MTUzNTQyMTU1Njg0NjkzODUpIC0tPgorICAgIDxza2lwIC8+CiA8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL2phdmEvcmVzL3ZhbHVlcy1zay9zdHJpbmdzLnhtbCBiL2phdmEvcmVzL3ZhbHVlcy1zay9zdHJpbmdzLnhtbAppbmRleCBiMDFlMzI1Li5kNTAzNjczIDEwMDY0NAotLS0gYS9qYXZhL3Jlcy92YWx1ZXMtc2svc3RyaW5ncy54bWwKKysrIGIvamF2YS9yZXMvdmFsdWVzLXNrL3N0cmluZ3MueG1sCkBAIC01Myw2ICs1Myw4IEBACiAgICAgPHN0cmluZyBuYW1lPSJ1c2VfZG91YmxlX3NwYWNlX3BlcmlvZF9zdW1tYXJ5IiBtc2dpZD0iNjUzMjg5MjE4NzI0Nzk1Mjc5OSI+IkR2b2ppdMO9bSBrbGVwbnV0w61tIG5hIG1lZHplcm7DrWsgdmxvxb7DrXRlIGJvZGt1IGEgbWVkemVydS4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJhdXRvX2NhcCIgbXNnaWQ9IjE3MTk3NDY2NzQ4NTQ2MjgyNTIiPiJWZcS+a8OpIHDDrXNtZW7DoSBhdXRvbWF0aWNreSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImF1dG9fY2FwX3N1bW1hcnkiIG1zZ2lkPSI3OTM0NDUyNzYxMDIyOTQ2ODc0Ij4iUMOtc2FuaWUgcHJ2w6lobyBzbG92YSB2IGthxb5kZWogdmV0ZSB2ZcS+a8O9bSBww61zbWVub20iPC9zdHJpbmc+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgZWRpdF9wZXJzb25hbF9kaWN0aW9uYXJ5ICgzOTk2OTEwMDM4OTUyOTQwNDIwKSAtLT4KKyAgICA8c2tpcCAvPgogICAgIDxzdHJpbmcgbmFtZT0iY29uZmlndXJlX2RpY3Rpb25hcmllc190aXRsZSIgbXNnaWQ9IjQyMzg2NTIzMzg1NTY5MDIwNDkiPiJEb3BsbmtvdsOpIHNsb3Zuw61reSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im1haW5fZGljdGlvbmFyeSIgbXNnaWQ9IjQ3OTg3NjM3ODE4MTgzNjExNjgiPiJIbGF2bsO9IHNsb3Zuw61rIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icHJlZnNfc2hvd19zdWdnZXN0aW9ucyIgbXNnaWQ9IjgwMjY3OTk2NjM0NDU1MzE2MzciPiJab2JyYXppxaUgbsOhdnJoeSBvcHLDoXYiPC9zdHJpbmc+CkBAIC0xNzEsOCArMTczLDI3IEBACiAgICAgPHN0cmluZyBuYW1lPSJyZWFkX2V4dGVybmFsX2RpY3Rpb25hcnlfY29uZmlybV9pbnN0YWxsX21lc3NhZ2UiIG1zZ2lkPSI2ODk4NjEwMTYzNzY4OTgwODcwIj4iQ2hjZXRlIG5haW7FoXRhbG92YcWlIHRlbnRvIHPDumJvciBwcmUgamF6eWsgPHhsaWZmOmcgaWQ9IkxPQ0FMRV9OQU1FIj4lczwveGxpZmY6Zz4/Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZXJyb3IiIG1zZ2lkPSI4OTQwNzYzNjI0NjY4NTEzNjQ4Ij4iVnlza3l0bGEgc2EgY2h5YmEiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJidXR0b25fZGVmYXVsdCIgbXNnaWQ9IjM5ODgwMTc4NDA0MzE4ODE0OTEiPiJQcmVkdm9sZW7DqSI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Imxhbmd1YWdlX3NldHRpbmdzIiBtc2dpZD0iMTY3MTE1MzA1MzIwMTgwOTAzMSI+IkphenlrICZhbXA7IHZzdHVwIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ic2VsZWN0X2lucHV0X21ldGhvZCIgbXNnaWQ9IjQzMDE2MDIzNzQ2MDkyNzUwMDMiPiJadm9sacWlIG1ldMOzZHUgdnN0dXB1Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfd2VsY29tZV90aXRsZSIgbXNnaWQ9IjYxMTI4MjE3MDk4MzIwMzE3MTUiPiJWaXRhanRlIHYgYXBsaWvDoWNpaSA8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfd2VsY29tZV9hZGRpdGlvbmFsX2Rlc2NyaXB0aW9uIiBtc2dpZD0iODE1MDI1MjAwODU0NTc2ODk1MyI+InMgZnVua2Npb3UgUMOtc2FuaWUgZ2VzdGFtaSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0YXJ0X2FjdGlvbiIgbXNnaWQ9Ijg5MzYwMzY0NjA4OTczNDc3MDgiPiJaYcSNYcWlIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfbmV4dF9hY3Rpb24iIG1zZ2lkPSIzNzE4MjE0Mzc5MTUxNDQ2MDMiPiLEjmFsxaHDrSBrcm9rIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcHNfdGl0bGUiIG1zZ2lkPSI2NDAwMzczMDM0ODcxODE2MTgyIj4iTmFzdGF2ZW5pZSBhcGxpa8OhY2llIDx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMV90aXRsZSIgbXNnaWQ9IjMxNDc5Njc2MzAyNTM0NjIzMTUiPiJQb3ZvxL50ZSBhcGxpa8OhY2l1IDx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMV9pbnN0cnVjdGlvbiIgbXNnaWQ9IjI1Nzg2MzE5MzY2MjQ2MzcyNDEiPiJWIG5hc3RhdmVuaWFjaCB2c3R1cHUgYSBqYXp5a2EgemHEjWlhcmtuaXRlIHBvbMOtxI1rbyA8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+LiBUw71tdG8gYXBsaWvDoWNpaSBwb3ZvbMOtdGUgc3B1c3RlbmllIHYgemFyaWFkZW7DrS4iPC9zdHJpbmc+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc2V0dXBfc3RlcDFfZmluaXNoZWRfaW5zdHJ1Y3Rpb24gKDEwNzYxNDgyMDA0OTU3OTk0KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDFfYWN0aW9uIiBtc2dpZD0iNDM2NjUxMzUzNDk5OTkwMTcyOCI+IlBvdm9sacWlIHYgTmFzdGF2ZW5pYWNoIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDJfdGl0bGUiIG1zZ2lkPSI2ODYwNzI1NDQ3OTA2NjkwNTk0Ij4iUHJlcG5pdGUgbmEgYXBsaWvDoWNpdSA8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+LiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAyX2luc3RydWN0aW9uIiBtc2dpZD0iOTE0MTQ4MTk2NDg3MDAyMzMzNiI+IlBvdG9tIHZ5YmVydGUgYXBsaWvDoWNpdSA8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+IGFrbyBha3TDrXZudSBtZXTDs2R1IHRleHRvdsOpaG8gdnN0dXB1LiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAyX2FjdGlvbiIgbXNnaWQ9IjE2NjAzMzAzMDcxNTk4MjQzMzciPiJQcmVwbsO6xaUgbWV0w7NkdSB2c3R1cHUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwM190aXRsZSIgbXNnaWQ9IjMxNTQ3NTcxODM2MzE0OTAyODEiPiJCbGFob8W+ZWzDoW1lLCB2xaFldGtvIGplIG5hc3RhdmVuw6khIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDNfaW5zdHJ1Y3Rpb24iIG1zZ2lkPSI4MDI1OTgxODI5NjA1NDI2MDAwIj4iUG9tb2NvdSBhcGxpa8OhY2llIDx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz4gdGVyYXogbcO0xb5ldGUgemFkw6F2YcWlIHRleHQgdm8gdsWhZXRrw71jaCBvYsS+w7piZW7DvWNoIGFwbGlrw6FjacOhY2guIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDNfYWN0aW9uIiBtc2dpZD0iNjAwODc5Nzk3MjU2OTQyMjU5Ij4iTmFrb25maWd1cnVqdGUgxI9hbMWhaWUgamF6eWt5Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfZmluaXNoX2FjdGlvbiIgbXNnaWQ9IjI3NjU1OTI0MzQwOTQ2NTM4OSI+IkhvdG92byI8L3N0cmluZz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzaG93X3NldHVwX3dpemFyZF9pY29uICg1MDA4MDI4NTkwNTkzNzEwODMwKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNob3dfc2V0dXBfd2l6YXJkX2ljb25fc3VtbWFyeSAoNDExOTk5ODMyMjUzNjg4MDIxMykgLS0+CisgICAgPHNraXAgLz4KICAgICA8c3RyaW5nIG5hbWU9ImFwcF9uYW1lIiBtc2dpZD0iNjMyMDEwMjYzNzQ5MTIzNDc5MiI+IlBvc2t5dG92YXRlxL4gc2xvdm7DrWthIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGljdGlvbmFyeV9wcm92aWRlcl9uYW1lIiBtc2dpZD0iMzAyNzMxNTA0NTM5NzM2MzA3OSI+IlBvc2t5dG92YXRlxL4gc2xvdm7DrWthIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGljdGlvbmFyeV9zZXJ2aWNlX25hbWUiIG1zZ2lkPSI2MjM3NDcyMzUwNjkzNTExNDQ4Ij4iU2x1xb5iYSBzbG92bsOta2EiPC9zdHJpbmc+CkBAIC0yMDMsNCArMjI0LDYgQEAKICAgICA8c3RyaW5nIG5hbWU9ImRpY3RfYXZhaWxhYmxlX25vdGlmaWNhdGlvbl90aXRsZSIgbXNnaWQ9IjY1MTQyODg1OTE5NTkxMTcyODgiPiJLIGRpc3BvesOtY2lpIGplIHNsb3Zuw61rIHByZSBqYXp5ayA8eGxpZmY6ZyBpZD0iTEFOR1VBR0UiPiUxJHM8L3hsaWZmOmc+Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGljdF9hdmFpbGFibGVfbm90aWZpY2F0aW9uX2Rlc2NyaXB0aW9uIiBtc2dpZD0iMTA3NTE5NDE2OTQ0MzE2MzQ4NyI+IlN0bGHEjWVuw61tIHNrb250cm9sdWpldGUgYSBwcmV2ZXptZXRlIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idG9hc3RfZG93bmxvYWRpbmdfc3VnZ2VzdGlvbnMiIG1zZ2lkPSIxMzEzMDI3MzUzNTg4NTY2NjYwIj4iUHJlYmVyYW5pZTogbsOhdnJoeSBwcmUgamF6eWsgPHhsaWZmOmcgaWQ9IkxBTkdVQUdFIj4lMSRzPC94bGlmZjpnPiBidWTDuiDEjW9za29ybyBrIGRpc3BvesOtY2lpLiI8L3N0cmluZz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciB2ZXJzaW9uX3RleHQgKDI3MTUzNTQyMTU1Njg0NjkzODUpIC0tPgorICAgIDxza2lwIC8+CiA8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL2phdmEvcmVzL3ZhbHVlcy1zbC9zdHJpbmdzLnhtbCBiL2phdmEvcmVzL3ZhbHVlcy1zbC9zdHJpbmdzLnhtbAppbmRleCA5MjQzYjEyLi45YTM4ODU2IDEwMDY0NAotLS0gYS9qYXZhL3Jlcy92YWx1ZXMtc2wvc3RyaW5ncy54bWwKKysrIGIvamF2YS9yZXMvdmFsdWVzLXNsL3N0cmluZ3MueG1sCkBAIC01Myw2ICs1Myw4IEBACiAgICAgPHN0cmluZyBuYW1lPSJ1c2VfZG91YmxlX3NwYWNlX3BlcmlvZF9zdW1tYXJ5IiBtc2dpZD0iNjUzMjg5MjE4NzI0Nzk1Mjc5OSI+IlogZHZvam5pbSBkb3Rpa29tIHByZXNsZWRuaWNlIHZzdGF2aXRlIHBpa28gaW4gemEgbmpvIHByZXNsZWRlayI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImF1dG9fY2FwIiBtc2dpZD0iMTcxOTc0NjY3NDg1NDYyODI1MiI+IlNhbW9kLiB2ZWxpa2UgemHEjWV0bmljZSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImF1dG9fY2FwX3N1bW1hcnkiIG1zZ2lkPSI3OTM0NDUyNzYxMDIyOTQ2ODc0Ij4iUHJ2byBiZXNlZG8gc3RhdmthIHBpxaFpIHogdmVsaWtvIHphxI1ldG5pY28iPC9zdHJpbmc+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgZWRpdF9wZXJzb25hbF9kaWN0aW9uYXJ5ICgzOTk2OTEwMDM4OTUyOTQwNDIwKSAtLT4KKyAgICA8c2tpcCAvPgogICAgIDxzdHJpbmcgbmFtZT0iY29uZmlndXJlX2RpY3Rpb25hcmllc190aXRsZSIgbXNnaWQ9IjQyMzg2NTIzMzg1NTY5MDIwNDkiPiJEb2RhdG5pIHNsb3ZhcmppIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ibWFpbl9kaWN0aW9uYXJ5IiBtc2dpZD0iNDc5ODc2Mzc4MTgxODM2MTE2OCI+IkdsYXZuaSBzbG92YXIiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwcmVmc19zaG93X3N1Z2dlc3Rpb25zIiBtc2dpZD0iODAyNjc5OTY2MzQ0NTUzMTYzNyI+IlBva2HFvmkgcHJlZGxvZ2UgcG9wcmF2a292Ijwvc3RyaW5nPgpAQCAtMTcxLDggKzE3MywyNyBAQAogICAgIDxzdHJpbmcgbmFtZT0icmVhZF9leHRlcm5hbF9kaWN0aW9uYXJ5X2NvbmZpcm1faW5zdGFsbF9tZXNzYWdlIiBtc2dpZD0iNjg5ODYxMDE2Mzc2ODk4MDg3MCI+IlphcmVzIMW+ZWxpdGUgbmFtZXN0aXRpIHRvIGRhdG90ZWtvIHphIGplemlrIDx4bGlmZjpnIGlkPSJMT0NBTEVfTkFNRSI+JXM8L3hsaWZmOmc+PyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImVycm9yIiBtc2dpZD0iODk0MDc2MzYyNDY2ODUxMzY0OCI+IlByacWhbG8gamUgZG8gbmFwYWtlIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYnV0dG9uX2RlZmF1bHQiIG1zZ2lkPSIzOTg4MDE3ODQwNDMxODgxNDkxIj4iUHJpdnpldG8iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJsYW5ndWFnZV9zZXR0aW5ncyIgbXNnaWQ9IjE2NzExNTMwNTMyMDE4MDkwMzEiPiJKZXppayBpbiB2bm9zIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ic2VsZWN0X2lucHV0X21ldGhvZCIgbXNnaWQ9IjQzMDE2MDIzNzQ2MDkyNzUwMDMiPiJJemJpcmEgbmHEjWluYSB2bm9zYSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3dlbGNvbWVfdGl0bGUiIG1zZ2lkPSI2MTEyODIxNzA5ODMyMDMxNzE1Ij4iUG96ZHJhdmxqZW5pIHYgYXBsaWthY2lqaSA8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfd2VsY29tZV9hZGRpdGlvbmFsX2Rlc2NyaXB0aW9uIiBtc2dpZD0iODE1MDI1MjAwODU0NTc2ODk1MyI+InMgcGlzYW5qZW0gcyBrcmV0bmphbWkiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGFydF9hY3Rpb24iIG1zZ2lkPSI4OTM2MDM2NDYwODk3MzQ3NzA4Ij4iWmHEjW5pdGUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9uZXh0X2FjdGlvbiIgbXNnaWQ9IjM3MTgyMTQzNzkxNTE0NDYwMyI+Ik5hc2xlZG5qaSBrb3JhayI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXBzX3RpdGxlIiBtc2dpZD0iNjQwMDM3MzAzNDg3MTgxNjE4MiI+Ik5hc3Rhdml0ZXYgYXBsaWthY2lqZSA8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDFfdGl0bGUiIG1zZ2lkPSIzMTQ3OTY3NjMwMjUzNDYyMzE1Ij4iT21vZ2/EjWFuamUgYXBsaWthY2lqZSA8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDFfaW5zdHJ1Y3Rpb24iIG1zZ2lkPSIyNTc4NjMxOTM2NjI0NjM3MjQxIj4iViBuYXN0YXZpdHZhaCB6YSBqZXppayBpbiB2bm9zIGl6YmVyaXRlIGFwbGlrYWNpam8gwrs8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+wqsuIFMgdGVtIGppIG9tb2dvxI1pdGUgaXp2YWphbmplIHYgbmFwcmF2aS4iPC9zdHJpbmc+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc2V0dXBfc3RlcDFfZmluaXNoZWRfaW5zdHJ1Y3Rpb24gKDEwNzYxNDgyMDA0OTU3OTk0KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDFfYWN0aW9uIiBtc2dpZD0iNDM2NjUxMzUzNDk5OTkwMTcyOCI+Ik9tb2dvxI1pIHYgbmFzdGF2aXR2YWgiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMl90aXRsZSIgbXNnaWQ9IjY4NjA3MjU0NDc5MDY2OTA1OTQiPiJQcmVrbG9wIG5hIGFwbGlrYWNpam8gPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAyX2luc3RydWN0aW9uIiBtc2dpZD0iOTE0MTQ4MTk2NDg3MDAyMzMzNiI+Ik5hdG8gaXpiZXJpdGUgYXBsaWthY2lqbyDCuzx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz7CqyBrb3QgYWt0aXZuaSBuYcSNaW4gdm5vc2EgYmVzZWRpbGEuIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDJfYWN0aW9uIiBtc2dpZD0iMTY2MDMzMDMwNzE1OTgyNDMzNyI+IlByZWtsb3BpIG5hxI1pbiB2bm9zYSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAzX3RpdGxlIiBtc2dpZD0iMzE1NDc1NzE4MzYzMTQ5MDI4MSI+IsSMZXN0aXRhbW8sIHByaXByYXZsamVuaSBzdGUuIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDNfaW5zdHJ1Y3Rpb24iIG1zZ2lkPSI4MDI1OTgxODI5NjA1NDI2MDAwIj4iWmRhaiBsYWhrbyB6IGFwbGlrYWNpam8gPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPiB0aXBrYXRlIHYgdnNlaCBzdm9qaWggcHJpbGp1YmxqZW5paCBhcGxpa2FjaWphaC4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwM19hY3Rpb24iIG1zZ2lkPSI2MDA4Nzk3OTcyNTY5NDIyNTkiPiJLb25maWd1cmFjaWphIGRvZGF0bmloIGplemlrb3YiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9maW5pc2hfYWN0aW9uIiBtc2dpZD0iMjc2NTU5MjQzNDA5NDY1Mzg5Ij4iS29uxI1hbm8iPC9zdHJpbmc+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc2hvd19zZXR1cF93aXphcmRfaWNvbiAoNTAwODAyODU5MDU5MzcxMDgzMCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzaG93X3NldHVwX3dpemFyZF9pY29uX3N1bW1hcnkgKDQxMTk5OTgzMjI1MzY4ODAyMTMpIC0tPgorICAgIDxza2lwIC8+CiAgICAgPHN0cmluZyBuYW1lPSJhcHBfbmFtZSIgbXNnaWQ9IjYzMjAxMDI2Mzc0OTEyMzQ3OTIiPiJQb251ZG5payBzbG92YXJqYSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRpY3Rpb25hcnlfcHJvdmlkZXJfbmFtZSIgbXNnaWQ9IjMwMjczMTUwNDUzOTczNjMwNzkiPiJQb251ZG5payBzbG92YXJqYSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRpY3Rpb25hcnlfc2VydmljZV9uYW1lIiBtc2dpZD0iNjIzNzQ3MjM1MDY5MzUxMTQ0OCI+IlN0b3JpdGV2IHNsb3ZhcmphIjwvc3RyaW5nPgpAQCAtMjAzLDQgKzIyNCw2IEBACiAgICAgPHN0cmluZyBuYW1lPSJkaWN0X2F2YWlsYWJsZV9ub3RpZmljYXRpb25fdGl0bGUiIG1zZ2lkPSI2NTE0Mjg4NTkxOTU5MTE3Mjg4Ij4iU2xvdmFyIGplIG5hIHZvbGpvIHphIGplemlrIDx4bGlmZjpnIGlkPSJMQU5HVUFHRSI+JTEkczwveGxpZmY6Zz4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkaWN0X2F2YWlsYWJsZV9ub3RpZmljYXRpb25fZGVzY3JpcHRpb24iIG1zZ2lkPSIxMDc1MTk0MTY5NDQzMTYzNDg3Ij4iUHJpdGlzbml0ZSB6YSBwcmVnbGVkIGluIHByZW5vcyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InRvYXN0X2Rvd25sb2FkaW5nX3N1Z2dlc3Rpb25zIiBtc2dpZD0iMTMxMzAyNzM1MzU4ODU2NjY2MCI+IlByZWRsb2dpIHphIHByZW5vcyB6YSBqZXppayA8eGxpZmY6ZyBpZD0iTEFOR1VBR0UiPiUxJHM8L3hsaWZmOmc+IGJvZG8ga21hbHUgcHJpcHJhdmxqZW5pLiI8L3N0cmluZz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciB2ZXJzaW9uX3RleHQgKDI3MTUzNTQyMTU1Njg0NjkzODUpIC0tPgorICAgIDxza2lwIC8+CiA8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL2phdmEvcmVzL3ZhbHVlcy1zci9zdHJpbmdzLnhtbCBiL2phdmEvcmVzL3ZhbHVlcy1zci9zdHJpbmdzLnhtbAppbmRleCBjZWRlNjdjLi45NjIwOWNjIDEwMDY0NAotLS0gYS9qYXZhL3Jlcy92YWx1ZXMtc3Ivc3RyaW5ncy54bWwKKysrIGIvamF2YS9yZXMvdmFsdWVzLXNyL3N0cmluZ3MueG1sCkBAIC01Myw2ICs1Myw4IEBACiAgICAgPHN0cmluZyBuYW1lPSJ1c2VfZG91YmxlX3NwYWNlX3BlcmlvZF9zdW1tYXJ5IiBtc2dpZD0iNjUzMjg5MjE4NzI0Nzk1Mjc5OSI+ItCU0LLQvtGB0YLRgNGD0LrQuNC8INC00L7QtNC40YDQvtC8INGA0LDQt9C80LDQutCwINGD0LzQtdGb0LUg0YHQtSDRgtCw0YfQutCwINC/0YDQsNGb0LXQvdCwINGA0LDQt9C80LDQutC+0LwiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJhdXRvX2NhcCIgbXNnaWQ9IjE3MTk3NDY2NzQ4NTQ2MjgyNTIiPiLQkNGD0YLQvtC80LDRgtGB0LrQuCDRg9C90L7RgSDQstC10LvQuNC60LjRhSDRgdC70L7QstCwIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYXV0b19jYXBfc3VtbWFyeSIgbXNnaWQ9Ijc5MzQ0NTI3NjEwMjI5NDY4NzQiPiLQn9C40YHQsNGa0LUg0LLQtdC70LjQutC+0LMg0YHQu9C+0LLQsCDQvdCwINC/0L7Rh9C10YLQutGDINGB0LLQsNC60LUg0YDQtdGH0LXQvdC40YbQtSI8L3N0cmluZz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBlZGl0X3BlcnNvbmFsX2RpY3Rpb25hcnkgKDM5OTY5MTAwMzg5NTI5NDA0MjApIC0tPgorICAgIDxza2lwIC8+CiAgICAgPHN0cmluZyBuYW1lPSJjb25maWd1cmVfZGljdGlvbmFyaWVzX3RpdGxlIiBtc2dpZD0iNDIzODY1MjMzODU1NjkwMjA0OSI+ItCf0L7QvNC+0ZvQvdC4INGA0LXRh9C90LjRhtC4Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ibWFpbl9kaWN0aW9uYXJ5IiBtc2dpZD0iNDc5ODc2Mzc4MTgxODM2MTE2OCI+ItCT0LvQsNCy0L3QuCDRgNC10YfQvdC40LoiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwcmVmc19zaG93X3N1Z2dlc3Rpb25zIiBtc2dpZD0iODAyNjc5OTY2MzQ0NTUzMTYzNyI+ItCf0YDQuNC60LDQttC4INC/0YDQtdC00LvQvtCz0LUg0LfQsCDQuNGB0L/RgNCw0LLQutGDIjwvc3RyaW5nPgpAQCAtMTcxLDggKzE3MywyNyBAQAogICAgIDxzdHJpbmcgbmFtZT0icmVhZF9leHRlcm5hbF9kaWN0aW9uYXJ5X2NvbmZpcm1faW5zdGFsbF9tZXNzYWdlIiBtc2dpZD0iNjg5ODYxMDE2Mzc2ODk4MDg3MCI+ItCW0LXQu9C40YLQtSDQu9C4INGB0YLQstCw0YDQvdC+INC00LAg0LjQvdGB0YLQsNC70LjRgNCw0YLQtSDQvtCy0YMg0LTQsNGC0L7RgtC10LrRgyDQt9CwIDx4bGlmZjpnIGlkPSJMT0NBTEVfTkFNRSI+JXM8L3hsaWZmOmc+PyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImVycm9yIiBtc2dpZD0iODk0MDc2MzYyNDY2ODUxMzY0OCI+ItCU0L7RiNC70L4g0ZjQtSDQtNC+INCz0YDQtdGI0LrQtSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJ1dHRvbl9kZWZhdWx0IiBtc2dpZD0iMzk4ODAxNzg0MDQzMTg4MTQ5MSI+ItCf0L7QtNGA0LDQt9GD0LzQtdCy0LDQvdC+Ijwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibGFuZ3VhZ2Vfc2V0dGluZ3MiIG1zZ2lkPSIxNjcxMTUzMDUzMjAxODA5MDMxIj4i0IjQtdC30LjQuiDQuCDRg9C90L7RgSI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InNlbGVjdF9pbnB1dF9tZXRob2QiIG1zZ2lkPSI0MzAxNjAyMzc0NjA5Mjc1MDAzIj4i0JjQt9Cx0L7RgCDQvNC10YLQvtC00LAg0YPQvdC+0YHQsCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3dlbGNvbWVfdGl0bGUiIG1zZ2lkPSI2MTEyODIxNzA5ODMyMDMxNzE1Ij4i0JTQvtCx0YDQviDQtNC+0YjQu9C4INGDIDx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF93ZWxjb21lX2FkZGl0aW9uYWxfZGVzY3JpcHRpb24iIG1zZ2lkPSI4MTUwMjUyMDA4NTQ1NzY4OTUzIj4i0L/QvtC80L7Rm9GDINCa0YPRhtCw0ZrQsCDQv9C+0LrRgNC10YLQuNC80LAiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGFydF9hY3Rpb24iIG1zZ2lkPSI4OTM2MDM2NDYwODk3MzQ3NzA4Ij4i0JfQsNC/0L7Rh9C90LjQvNC+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfbmV4dF9hY3Rpb24iIG1zZ2lkPSIzNzE4MjE0Mzc5MTUxNDQ2MDMiPiLQodC70LXQtNC10ZvQuCDQutC+0YDQsNC6Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcHNfdGl0bGUiIG1zZ2lkPSI2NDAwMzczMDM0ODcxODE2MTgyIj4i0J/QvtC00LXRiNCw0LLQsNGa0LUg0LDQv9C70LjQutCw0YbQuNGY0LUgPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAxX3RpdGxlIiBtc2dpZD0iMzE0Nzk2NzYzMDI1MzQ2MjMxNSI+ItCe0LzQvtCz0YPRm9C40YLQtSDQsNC/0LvQuNC60LDRhtC40ZjRgyA8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDFfaW5zdHJ1Y3Rpb24iIG1zZ2lkPSIyNTc4NjMxOTM2NjI0NjM3MjQxIj4i0J/QvtGC0LLRgNC00LjRgtC1INCw0L/Qu9C40LrQsNGG0LjRmNGDIOKAnjx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz7igJwg0YMg0J/QvtC00LXRiNCw0LLQsNGa0LjQvNCwINGY0LXQt9C40LrQsCDQuCDRg9C90L7RgdCwLiDQotCw0LrQviDRmNC+0Zgg0L7QtNC+0LHRgNCw0LLQsNGC0LUg0L/QvtC60YDQtdGC0LDRmtC1INC90LAg0YPRgNC10ZLQsNGY0YMuIjwvc3RyaW5nPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNldHVwX3N0ZXAxX2ZpbmlzaGVkX2luc3RydWN0aW9uICgxMDc2MTQ4MjAwNDk1Nzk5NCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAxX2FjdGlvbiIgbXNnaWQ9IjQzNjY1MTM1MzQ5OTk5MDE3MjgiPiLQntC80L7Qs9GD0ZvQuCDRgyDQn9C+0LTQtdGI0LDQstCw0ZrQuNC80LAiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMl90aXRsZSIgbXNnaWQ9IjY4NjA3MjU0NDc5MDY2OTA1OTQiPiLQn9GA0LXQsdCw0YbQuNGC0LUg0L3QsCA8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDJfaW5zdHJ1Y3Rpb24iIG1zZ2lkPSI5MTQxNDgxOTY0ODcwMDIzMzM2Ij4i0JfQsNGC0LjQvCDQuNC30LDQsdC10YDQuNGC0LUg4oCePHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPuKAnCDQutCw0L4g0LDQutGC0LjQstC90Lgg0LzQtdGC0L7QtCDRg9C90L7RgdCwINGC0LXQutGB0YLQsC4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMl9hY3Rpb24iIG1zZ2lkPSIxNjYwMzMwMzA3MTU5ODI0MzM3Ij4i0J/RgNC10LHQsNGG0Lgg0LzQtdGC0L7QtNC1INGD0L3QvtGB0LAiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwM190aXRsZSIgbXNnaWQ9IjMxNTQ3NTcxODM2MzE0OTAyODEiPiLQp9C10YHRgtC40YLQsNC80L4sINGB0LLQtSDRmNC1INGB0L/RgNC10LzQvdC+ISI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAzX2luc3RydWN0aW9uIiBtc2dpZD0iODAyNTk4MTgyOTYwNTQyNjAwMCI+ItCh0LDQtNCwINC80L7QttC10YLQtSDQtNCwINC60YPRhtCw0YLQtSDRgyDRgdCy0LjQvCDQvtC80LjRmdC10L3QuNC8INCw0L/Qu9C40LrQsNGG0LjRmNCw0LzQsCDQv9C+0LzQvtGb0YMgPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPi4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwM19hY3Rpb24iIG1zZ2lkPSI2MDA4Nzk3OTcyNTY5NDIyNTkiPiLQmtC+0L3RhNC40LPRg9GA0LjRiNC4INC00L7QtNCw0YLQvdC1INGY0LXQt9C40LrQtSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX2ZpbmlzaF9hY3Rpb24iIG1zZ2lkPSIyNzY1NTkyNDM0MDk0NjUzODkiPiLQl9Cw0LLRgNGI0LXQvdC+Ijwvc3RyaW5nPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNob3dfc2V0dXBfd2l6YXJkX2ljb24gKDUwMDgwMjg1OTA1OTM3MTA4MzApIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc2hvd19zZXR1cF93aXphcmRfaWNvbl9zdW1tYXJ5ICg0MTE5OTk4MzIyNTM2ODgwMjEzKSAtLT4KKyAgICA8c2tpcCAvPgogICAgIDxzdHJpbmcgbmFtZT0iYXBwX25hbWUiIG1zZ2lkPSI2MzIwMTAyNjM3NDkxMjM0NzkyIj4i0JTQvtCx0LDQstGZ0LDRhyDRgNC10YfQvdC40LrQsCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRpY3Rpb25hcnlfcHJvdmlkZXJfbmFtZSIgbXNnaWQ9IjMwMjczMTUwNDUzOTczNjMwNzkiPiLQlNC+0LHQsNCy0ZnQsNGHINGA0LXRh9C90LjQutCwIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGljdGlvbmFyeV9zZXJ2aWNlX25hbWUiIG1zZ2lkPSI2MjM3NDcyMzUwNjkzNTExNDQ4Ij4i0KPRgdC70YPQs9CwINGA0LXRh9C90LjQutCwIjwvc3RyaW5nPgpAQCAtMjAzLDQgKzIyNCw2IEBACiAgICAgPHN0cmluZyBuYW1lPSJkaWN0X2F2YWlsYWJsZV9ub3RpZmljYXRpb25fdGl0bGUiIG1zZ2lkPSI2NTE0Mjg4NTkxOTU5MTE3Mjg4Ij4i0KDQtdGH0L3QuNC6INGY0LUg0LTQvtGB0YLRg9C/0LDQvSDQt9CwIDx4bGlmZjpnIGlkPSJMQU5HVUFHRSI+JTEkczwveGxpZmY6Zz4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkaWN0X2F2YWlsYWJsZV9ub3RpZmljYXRpb25fZGVzY3JpcHRpb24iIG1zZ2lkPSIxMDc1MTk0MTY5NDQzMTYzNDg3Ij4i0J/RgNC40YLQuNGB0L3QuNGC0LUg0LfQsCDQv9GA0LXQs9C70LXQtCDQuCDQv9GA0LXRg9C30LjQvNCw0ZrQtSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InRvYXN0X2Rvd25sb2FkaW5nX3N1Z2dlc3Rpb25zIiBtc2dpZD0iMTMxMzAyNzM1MzU4ODU2NjY2MCI+ItCf0YDQtdGD0LfQuNC80LDRmtC1OiDQn9GA0LXQtNC70L7Qt9C4INC30LAgPHhsaWZmOmcgaWQ9IkxBTkdVQUdFIj4lMSRzPC94bGlmZjpnPiDRm9C1INGD0YHQutC+0YDQviDQsdC40YLQuCDRgdC/0YDQtdC80L3QuC4iPC9zdHJpbmc+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgdmVyc2lvbl90ZXh0ICgyNzE1MzU0MjE1NTY4NDY5Mzg1KSAtLT4KKyAgICA8c2tpcCAvPgogPC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9qYXZhL3Jlcy92YWx1ZXMtc3Yvc3RyaW5ncy54bWwgYi9qYXZhL3Jlcy92YWx1ZXMtc3Yvc3RyaW5ncy54bWwKaW5kZXggOGFjNmMyYy4uMDA0M2IxMyAxMDA2NDQKLS0tIGEvamF2YS9yZXMvdmFsdWVzLXN2L3N0cmluZ3MueG1sCisrKyBiL2phdmEvcmVzL3ZhbHVlcy1zdi9zdHJpbmdzLnhtbApAQCAtNTMsNiArNTMsOCBAQAogICAgIDxzdHJpbmcgbmFtZT0idXNlX2RvdWJsZV9zcGFjZV9wZXJpb2Rfc3VtbWFyeSIgbXNnaWQ9IjY1MzI4OTIxODcyNDc5NTI3OTkiPiJEdWJiZWx0IGJsYW5rc3RlZyBnZXIgZW4gcHVua3QgZsO2bGp0IGF2IG1lbGxhbnNsYWciPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJhdXRvX2NhcCIgbXNnaWQ9IjE3MTk3NDY2NzQ4NTQ2MjgyNTIiPiJBdXRvbWF0aXNrYSB2ZXJzYWxlciI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImF1dG9fY2FwX3N1bW1hcnkiIG1zZ2lkPSI3OTM0NDUyNzYxMDIyOTQ2ODc0Ij4iQXV0b21hdGlzayBzdG9yIGJva3N0YXYgZsO2cnN0IGkgdmFyamUgbWVuaW5nIjwvc3RyaW5nPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGVkaXRfcGVyc29uYWxfZGljdGlvbmFyeSAoMzk5NjkxMDAzODk1Mjk0MDQyMCkgLS0+CisgICAgPHNraXAgLz4KICAgICA8c3RyaW5nIG5hbWU9ImNvbmZpZ3VyZV9kaWN0aW9uYXJpZXNfdGl0bGUiIG1zZ2lkPSI0MjM4NjUyMzM4NTU2OTAyMDQ5Ij4iVGlsbMOkZ2dzb3JkbGlzdG9yIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ibWFpbl9kaWN0aW9uYXJ5IiBtc2dpZD0iNDc5ODc2Mzc4MTgxODM2MTE2OCI+Ikh1dnVkb3JkbGlzdGFuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icHJlZnNfc2hvd19zdWdnZXN0aW9ucyIgbXNnaWQ9IjgwMjY3OTk2NjM0NDU1MzE2MzciPiJWaXNhIHLDpHR0bmluZ3Nmw7Zyc2xhZyI8L3N0cmluZz4KQEAgLTE3MSw4ICsxNzMsMjcgQEAKICAgICA8c3RyaW5nIG5hbWU9InJlYWRfZXh0ZXJuYWxfZGljdGlvbmFyeV9jb25maXJtX2luc3RhbGxfbWVzc2FnZSIgbXNnaWQ9IjY4OTg2MTAxNjM3Njg5ODA4NzAiPiJWaWxsIGR1IHZlcmtsaWdlbiBpbnN0YWxsZXJhIGZpbGVuIGbDtnIgPHhsaWZmOmcgaWQ9IkxPQ0FMRV9OQU1FIj4lczwveGxpZmY6Zz4/Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZXJyb3IiIG1zZ2lkPSI4OTQwNzYzNjI0NjY4NTEzNjQ4Ij4iRXR0IGZlbCB1cHBzdG9kIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYnV0dG9uX2RlZmF1bHQiIG1zZ2lkPSIzOTg4MDE3ODQwNDMxODgxNDkxIj4iU3RhbmRhcmQiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJsYW5ndWFnZV9zZXR0aW5ncyIgbXNnaWQ9IjE2NzExNTMwNTMyMDE4MDkwMzEiPiJTcHLDpWsgJmFtcDsgaW5tYXRuaW5nIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ic2VsZWN0X2lucHV0X21ldGhvZCIgbXNnaWQ9IjQzMDE2MDIzNzQ2MDkyNzUwMDMiPiJWw6RsaiBpbm1hdG5pbmdzbWV0b2QiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF93ZWxjb21lX3RpdGxlIiBtc2dpZD0iNjExMjgyMTcwOTgzMjAzMTcxNSI+IlbDpGxrb21tZW4gdGlsbCA8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfd2VsY29tZV9hZGRpdGlvbmFsX2Rlc2NyaXB0aW9uIiBtc2dpZD0iODE1MDI1MjAwODU0NTc2ODk1MyI+Im1lZCBzdmVwc2tyaXZuaW5nIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RhcnRfYWN0aW9uIiBtc2dpZD0iODkzNjAzNjQ2MDg5NzM0NzcwOCI+IktvbSBpZ8OlbmciPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9uZXh0X2FjdGlvbiIgbXNnaWQ9IjM3MTgyMTQzNzkxNTE0NDYwMyI+Ik7DpHN0YSBzdGVnIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcHNfdGl0bGUiIG1zZ2lkPSI2NDAwMzczMDM0ODcxODE2MTgyIj4iS29uZmlndXJlcmEgPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAxX3RpdGxlIiBtc2dpZD0iMzE0Nzk2NzYzMDI1MzQ2MjMxNSI+IkFrdGl2ZXJhIDx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMV9pbnN0cnVjdGlvbiIgbXNnaWQ9IjI1Nzg2MzE5MzY2MjQ2MzcyNDEiPiJNYXJrZXJhIDx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz4gaSBpbnN0w6RsbG5pbmdhcm5hIGbDtnIgc3Byw6VrIG9jaCBpbm1hdG5pbmcgc8OlIGF0dCBhcHBlbiBrYW4ga8O2cmFzLiI8L3N0cmluZz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzZXR1cF9zdGVwMV9maW5pc2hlZF9pbnN0cnVjdGlvbiAoMTA3NjE0ODIwMDQ5NTc5OTQpIC0tPgorICAgIDxza2lwIC8+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMV9hY3Rpb24iIG1zZ2lkPSI0MzY2NTEzNTM0OTk5OTAxNzI4Ij4iQWt0aXZlcmEgaSBpbnN0w6RsbG5pbmdhcm5hIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDJfdGl0bGUiIG1zZ2lkPSI2ODYwNzI1NDQ3OTA2NjkwNTk0Ij4iQnl0IHRpbGwgPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAyX2luc3RydWN0aW9uIiBtc2dpZD0iOTE0MTQ4MTk2NDg3MDAyMzMzNiI+IlbDpGxqIHNlZGFuIDx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz4gc29tIGRpbiBha3RpdmEgdGV4dGlubWF0bmluZ3NtZXRvZC4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMl9hY3Rpb24iIG1zZ2lkPSIxNjYwMzMwMzA3MTU5ODI0MzM3Ij4iQnl0IGlubWF0bmluZ3NtZXRvZCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAzX3RpdGxlIiBtc2dpZD0iMzE1NDc1NzE4MzYzMTQ5MDI4MSI+IkdyYXR0aXMhIE51IMOkciBkZXQga2xhcnQuIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDNfaW5zdHJ1Y3Rpb24iIG1zZ2lkPSI4MDI1OTgxODI5NjA1NDI2MDAwIj4iTnUga2FuIGR1IHNrcml2YSBpIGFsbGEgZGluYSBmYXZvcml0YXBwYXIgbWVkIDx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz4uIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDNfYWN0aW9uIiBtc2dpZD0iNjAwODc5Nzk3MjU2OTQyMjU5Ij4iS29uZmlndXJlcmEgeXR0ZXJsaWdhcmUgc3Byw6VrIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfZmluaXNoX2FjdGlvbiIgbXNnaWQ9IjI3NjU1OTI0MzQwOTQ2NTM4OSI+IlNsdXRmw7ZyZGEiPC9zdHJpbmc+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc2hvd19zZXR1cF93aXphcmRfaWNvbiAoNTAwODAyODU5MDU5MzcxMDgzMCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzaG93X3NldHVwX3dpemFyZF9pY29uX3N1bW1hcnkgKDQxMTk5OTgzMjI1MzY4ODAyMTMpIC0tPgorICAgIDxza2lwIC8+CiAgICAgPHN0cmluZyBuYW1lPSJhcHBfbmFtZSIgbXNnaWQ9IjYzMjAxMDI2Mzc0OTEyMzQ3OTIiPiJEaWN0aW9uYXJ5IFByb3ZpZGVyIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGljdGlvbmFyeV9wcm92aWRlcl9uYW1lIiBtc2dpZD0iMzAyNzMxNTA0NTM5NzM2MzA3OSI+IkRpY3Rpb25hcnkgUHJvdmlkZXIiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkaWN0aW9uYXJ5X3NlcnZpY2VfbmFtZSIgbXNnaWQ9IjYyMzc0NzIzNTA2OTM1MTE0NDgiPiJPcmRsaXN0ZXRqw6Ruc3QiPC9zdHJpbmc+CkBAIC0yMDMsNCArMjI0LDYgQEAKICAgICA8c3RyaW5nIG5hbWU9ImRpY3RfYXZhaWxhYmxlX25vdGlmaWNhdGlvbl90aXRsZSIgbXNnaWQ9IjY1MTQyODg1OTE5NTkxMTcyODgiPiJFbiBvcmRsaXN0YSDDpHIgdGlsbGfDpG5nbGlnIGbDtnIgPHhsaWZmOmcgaWQ9IkxBTkdVQUdFIj4lMSRzPC94bGlmZjpnPiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRpY3RfYXZhaWxhYmxlX25vdGlmaWNhdGlvbl9kZXNjcmlwdGlvbiIgbXNnaWQ9IjEwNzUxOTQxNjk0NDMxNjM0ODciPiJUcnljayBvbSBkdSB2aWxsIGdyYW5za2Egb2NoIGjDpG10YSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InRvYXN0X2Rvd25sb2FkaW5nX3N1Z2dlc3Rpb25zIiBtc2dpZD0iMTMxMzAyNzM1MzU4ODU2NjY2MCI+IkjDpG10YXI6IGbDtnJzbGFnIGbDtnIgPHhsaWZmOmcgaWQ9IkxBTkdVQUdFIj4lMSRzPC94bGlmZjpnPiDDpHIgc25hcnQga2xhcmEuIjwvc3RyaW5nPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHZlcnNpb25fdGV4dCAoMjcxNTM1NDIxNTU2ODQ2OTM4NSkgLS0+CisgICAgPHNraXAgLz4KIDwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvamF2YS9yZXMvdmFsdWVzLXN3L3N0cmluZ3MueG1sIGIvamF2YS9yZXMvdmFsdWVzLXN3L3N0cmluZ3MueG1sCmluZGV4IDg3MDI2MDEuLjE2M2JhNjkgMTAwNjQ0Ci0tLSBhL2phdmEvcmVzL3ZhbHVlcy1zdy9zdHJpbmdzLnhtbAorKysgYi9qYXZhL3Jlcy92YWx1ZXMtc3cvc3RyaW5ncy54bWwKQEAgLTUzLDYgKzUzLDggQEAKICAgICA8c3RyaW5nIG5hbWU9InVzZV9kb3VibGVfc3BhY2VfcGVyaW9kX3N1bW1hcnkiIG1zZ2lkPSI2NTMyODkyMTg3MjQ3OTUyNzk5Ij4iS3Vnb25nYSBtYXJhIG1iaWxpIGt3ZW55ZSB1cGF1IG5hZmFzaSBrdW5haW5naXphIGtpdG9uZSBraWtpZnVhdGl3YSBuYSBuYWZhc2kiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJhdXRvX2NhcCIgbXNnaWQ9IjE3MTk3NDY2NzQ4NTQ2MjgyNTIiPiJVd2VrYWppIHdhIGhlcnVmaSBrdWJ3YSBraW90b21hdGlraSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImF1dG9fY2FwX3N1bW1hcnkiIG1zZ2lkPSI3OTM0NDUyNzYxMDIyOTQ2ODc0Ij4iRmFueWEgaGVydWZpIGt1YndhIG5lbm8gbGEga3dhbnphIGxhIGtpbGEgc2VudGVuc2kiPC9zdHJpbmc+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgZWRpdF9wZXJzb25hbF9kaWN0aW9uYXJ5ICgzOTk2OTEwMDM4OTUyOTQwNDIwKSAtLT4KKyAgICA8c2tpcCAvPgogICAgIDxzdHJpbmcgbmFtZT0iY29uZmlndXJlX2RpY3Rpb25hcmllc190aXRsZSIgbXNnaWQ9IjQyMzg2NTIzMzg1NTY5MDIwNDkiPiJOeW9uZ2V6YSB6YSBrYW11c2kiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJtYWluX2RpY3Rpb25hcnkiIG1zZ2lkPSI0Nzk4NzYzNzgxODE4MzYxMTY4Ij4iS2FtdXNpIGt1dSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InByZWZzX3Nob3dfc3VnZ2VzdGlvbnMiIG1zZ2lkPSI4MDI2Nzk5NjYzNDQ1NTMxNjM3Ij4iT255ZXNoYSBtYXBlbmRla2V6byB5YSBtYXJla2ViaXNobyI8L3N0cmluZz4KQEAgLTE3MSw4ICsxNzMsMjcgQEAKICAgICA8c3RyaW5nIG5hbWU9InJlYWRfZXh0ZXJuYWxfZGljdGlvbmFyeV9jb25maXJtX2luc3RhbGxfbWVzc2FnZSIgbXNnaWQ9IjY4OTg2MTAxNjM3Njg5ODA4NzAiPiJJc2FraW5pc2hlIGZhaWxpIGhpaSBrd2EgPHhsaWZmOmcgaWQ9IkxPQ0FMRV9OQU1FIj4lczwveGxpZmY6Zz4ga3dlbGk/Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZXJyb3IiIG1zZ2lkPSI4OTQwNzYzNjI0NjY4NTEzNjQ4Ij4iS3VsaWt1d2EgbmEgaGl0aWxhZnUiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJidXR0b25fZGVmYXVsdCIgbXNnaWQ9IjM5ODgwMTc4NDA0MzE4ODE0OTEiPiJDaGFndW8tbXNpbmdpIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibGFuZ3VhZ2Vfc2V0dGluZ3MiIG1zZ2lkPSIxNjcxMTUzMDUzMjAxODA5MDMxIj4iTHVnaGEgbmEgdWluZ2l6YWppIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ic2VsZWN0X2lucHV0X21ldGhvZCIgbXNnaWQ9IjQzMDE2MDIzNzQ2MDkyNzUwMDMiPiJDaGFndWEgbWJpbnUgeWEga3VpbmdpemEgZGF0YSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3dlbGNvbWVfdGl0bGUiIG1zZ2lkPSI2MTEyODIxNzA5ODMyMDMxNzE1Ij4iS2FyaWJ1IGt3ZW55ZSA8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfd2VsY29tZV9hZGRpdGlvbmFsX2Rlc2NyaXB0aW9uIiBtc2dpZD0iODE1MDI1MjAwODU0NTc2ODk1MyI+Imt3YSBLdWFuZGlrYSBrd2EgaXNoYXJhIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RhcnRfYWN0aW9uIiBtc2dpZD0iODkzNjAzNjQ2MDg5NzM0NzcwOCI+IkFuemEga3V0dW1pYSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX25leHRfYWN0aW9uIiBtc2dpZD0iMzcxODIxNDM3OTE1MTQ0NjAzIj4iSGF0dWEgaW5heW9mdWF0YSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXBzX3RpdGxlIiBtc2dpZD0iNjQwMDM3MzAzNDg3MTgxNjE4MiI+IkluYXNhbmlkaSA8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDFfdGl0bGUiIG1zZ2lkPSIzMTQ3OTY3NjMwMjUzNDYyMzE1Ij4iV2FzaGEgPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAxX2luc3RydWN0aW9uIiBtc2dpZD0iMjU3ODYzMTkzNjYyNDYzNzI0MSI+IlRhZmFkaGFsaSBhbmdhbGlhIFwiPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPlwiIGthdGlrYSBsdWdoYSB5YWtvIG5hIG1pcGFuZ2lsaW8geWEga3VpbmdpemEuIEhpaSBpdGFpZGhpbmlzaGEgaWxpIGllbmRlc2h3ZSBrd2VueWUga2lmYWEgY2hha28uIjwvc3RyaW5nPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNldHVwX3N0ZXAxX2ZpbmlzaGVkX2luc3RydWN0aW9uICgxMDc2MTQ4MjAwNDk1Nzk5NCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAxX2FjdGlvbiIgbXNnaWQ9IjQzNjY1MTM1MzQ5OTk5MDE3MjgiPiJXYXNoYSBrYXRpa2EgTWlwYW5naWxpbyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAyX3RpdGxlIiBtc2dpZD0iNjg2MDcyNTQ0NzkwNjY5MDU5NCI+IkJhZGlsaXNoYSBrd2VuZGEgPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAyX2luc3RydWN0aW9uIiBtc2dpZD0iOTE0MTQ4MTk2NDg3MDAyMzMzNiI+Iktpc2hhLCBjaGFndWEgXCI8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+XCIga2FtYSBtYmludSB5YWtvIGluYXlvdHVtaWthIHlhIGt1aW5naXphIGRhdGEgeWEgbWFhbmRpc2hpLiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAyX2FjdGlvbiIgbXNnaWQ9IjE2NjAzMzAzMDcxNTk4MjQzMzciPiJCYWRpbGlzaGEgbWJpbnUgemEga3VpbmdpemEgZGF0YSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAzX3RpdGxlIiBtc2dpZD0iMzE1NDc1NzE4MzYzMTQ5MDI4MSI+IkhvbmdlcmEsIHVrbyB0YXlhcmkhIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDNfaW5zdHJ1Y3Rpb24iIG1zZ2lkPSI4MDI1OTgxODI5NjA1NDI2MDAwIj4iU2FzYSB1bmF3ZXphIGt1Y2hhcGEgcHJvZ3JhbXUgemFrbyB6b3RlIHV6aXBlbmRhem8gdWtpdHVtaWEgPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPi4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwM19hY3Rpb24iIG1zZ2lkPSI2MDA4Nzk3OTcyNTY5NDIyNTkiPiJTYW5pZGkgbHVnaGEgemEgemlhZGEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9maW5pc2hfYWN0aW9uIiBtc2dpZD0iMjc2NTU5MjQzNDA5NDY1Mzg5Ij4iSW1lbWFsaXphIjwvc3RyaW5nPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNob3dfc2V0dXBfd2l6YXJkX2ljb24gKDUwMDgwMjg1OTA1OTM3MTA4MzApIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc2hvd19zZXR1cF93aXphcmRfaWNvbl9zdW1tYXJ5ICg0MTE5OTk4MzIyNTM2ODgwMjEzKSAtLT4KKyAgICA8c2tpcCAvPgogICAgIDxzdHJpbmcgbmFtZT0iYXBwX25hbWUiIG1zZ2lkPSI2MzIwMTAyNjM3NDkxMjM0NzkyIj4iUHJvZ3JhbXUgeWEga2FtdXNpIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGljdGlvbmFyeV9wcm92aWRlcl9uYW1lIiBtc2dpZD0iMzAyNzMxNTA0NTM5NzM2MzA3OSI+IlByb2dyYW11IHlhIGthbXVzaSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRpY3Rpb25hcnlfc2VydmljZV9uYW1lIiBtc2dpZD0iNjIzNzQ3MjM1MDY5MzUxMTQ0OCI+Ikh1ZHVtYSB5YSBLYW11c2kiPC9zdHJpbmc+CkBAIC0yMDMsNCArMjI0LDYgQEAKICAgICA8c3RyaW5nIG5hbWU9ImRpY3RfYXZhaWxhYmxlX25vdGlmaWNhdGlvbl90aXRsZSIgbXNnaWQ9IjY1MTQyODg1OTE5NTkxMTcyODgiPiJLYW11c2kgeWEgPHhsaWZmOmcgaWQ9IkxBTkdVQUdFIj4lMSRzPC94bGlmZjpnPiBpbmFwYXRpa2FuYSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRpY3RfYXZhaWxhYmxlX25vdGlmaWNhdGlvbl9kZXNjcmlwdGlvbiIgbXNnaWQ9IjEwNzUxOTQxNjk0NDMxNjM0ODciPiJCb255ZXphIGlsaSBrdWthZ3VhIG5hIGt1cGFrdWEiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ0b2FzdF9kb3dubG9hZGluZ19zdWdnZXN0aW9ucyIgbXNnaWQ9IjEzMTMwMjczNTM1ODg1NjY2NjAiPiJJbmFwYWt1YTogbWFwZW5kZWtlem8geWEgPHhsaWZmOmcgaWQ9IkxBTkdVQUdFIj4lMSRzPC94bGlmZjpnPiB5YXRha3V3YSB0YXlhcmkgaGl2aSBrYXJpYnVuaS4iPC9zdHJpbmc+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgdmVyc2lvbl90ZXh0ICgyNzE1MzU0MjE1NTY4NDY5Mzg1KSAtLT4KKyAgICA8c2tpcCAvPgogPC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9qYXZhL3Jlcy92YWx1ZXMtc3c2MDBkcC1sYW5kL3NldHVwLWRpbWVucy54bWwgYi9qYXZhL3Jlcy92YWx1ZXMtc3c2MDBkcC1sYW5kL3NldHVwLWRpbWVucy54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlhZWEyMTQuLjAwMDAwMDAKLS0tIGEvamF2YS9yZXMvdmFsdWVzLXN3NjAwZHAtbGFuZC9zZXR1cC1kaW1lbnMueG1sCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KLTwhLS0gQ29weXJpZ2h0IChDKSAyMDEzIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKLQotICAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKLSAgICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgotICAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLQotICAgICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAotCi0gICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSAgICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSAgICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCi0gICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKLSAgICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0tLT4KLQotPHJlc291cmNlcyB4bWxuczphbmRyb2lkPSJodHRwOi8vc2NoZW1hcy5hbmRyb2lkLmNvbS9hcGsvcmVzL2FuZHJvaWQiPgotICAgIDxkaW1lbiBuYW1lPSJzZXR1cF90aXRsZV90ZXh0X3NpemUiPjY0c3A8L2RpbWVuPgotICAgIDxkaW1lbiBuYW1lPSJzZXR1cF9ob3Jpem9udGFsX3BhZGRpbmciPjk2ZHA8L2RpbWVuPgotPC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9qYXZhL3Jlcy92YWx1ZXMtc3c3NjhkcC1sYW5kL3NldHVwLWRpbWVucy54bWwgYi9qYXZhL3Jlcy92YWx1ZXMtc3c3NjhkcC1sYW5kL3NldHVwLWRpbWVucy54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBkMmFmMTcuLjAwMDAwMDAKLS0tIGEvamF2YS9yZXMvdmFsdWVzLXN3NzY4ZHAtbGFuZC9zZXR1cC1kaW1lbnMueG1sCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KLTwhLS0gQ29weXJpZ2h0IChDKSAyMDEzIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKLQotICAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKLSAgICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgotICAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLQotICAgICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAotCi0gICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSAgICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSAgICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCi0gICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKLSAgICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0tLT4KLQotPHJlc291cmNlcyB4bWxuczphbmRyb2lkPSJodHRwOi8vc2NoZW1hcy5hbmRyb2lkLmNvbS9hcGsvcmVzL2FuZHJvaWQiPgotICAgIDxkaW1lbiBuYW1lPSJzZXR1cF90aXRsZV90ZXh0X3NpemUiPjY0c3A8L2RpbWVuPgotICAgIDxkaW1lbiBuYW1lPSJzZXR1cF9ob3Jpem9udGFsX3BhZGRpbmciPjE5MmRwPC9kaW1lbj4KLTwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvamF2YS9yZXMvdmFsdWVzLXRoL3N0cmluZ3MueG1sIGIvamF2YS9yZXMvdmFsdWVzLXRoL3N0cmluZ3MueG1sCmluZGV4IGI2YTBkNjYuLjBjZjE0NGUgMTAwNjQ0Ci0tLSBhL2phdmEvcmVzL3ZhbHVlcy10aC9zdHJpbmdzLnhtbAorKysgYi9qYXZhL3Jlcy92YWx1ZXMtdGgvc3RyaW5ncy54bWwKQEAgLTUzLDYgKzUzLDggQEAKICAgICA8c3RyaW5nIG5hbWU9InVzZV9kb3VibGVfc3BhY2VfcGVyaW9kX3N1bW1hcnkiIG1zZ2lkPSI2NTMyODkyMTg3MjQ3OTUyNzk5Ij4i4LmB4LiV4LiwIFNwYWNlYmFyIOC4quC4reC4h+C4hOC4o+C4seC5ieC4h+C4iOC4sOC5geC4l+C4o+C4geC4iOC4uOC4lOC4leC4suC4oeC4lOC5ieC4p+C4ouC4iuC5iOC4reC4h+C4p+C5iOC4suC4h+C4q+C4meC4tuC5iOC4h+C4iuC5iOC4reC4hyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImF1dG9fY2FwIiBtc2dpZD0iMTcxOTc0NjY3NDg1NDYyODI1MiI+IuC4m+C4o+C4seC4muC5gOC4m+C5h+C4meC4leC4seC4p+C4nuC4tOC4oeC4nuC5jOC5g+C4q+C4jeC5iOC4reC4seC4leC5guC4meC4oeC4seC4leC4tCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImF1dG9fY2FwX3N1bW1hcnkiIG1zZ2lkPSI3OTM0NDUyNzYxMDIyOTQ2ODc0Ij4i4LiX4Liz4LmD4Lir4LmJ4LiE4Liz4LmB4Lij4LiB4LiC4Lit4LiH4LiX4Li44LiB4Lib4Lij4Liw4LmC4Lii4LiE4LmA4Lib4LmH4LiZ4LiV4Lix4Lin4Lie4Li04Lih4Lie4LmM4LmD4Lir4LiN4LmIIjwvc3RyaW5nPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGVkaXRfcGVyc29uYWxfZGljdGlvbmFyeSAoMzk5NjkxMDAzODk1Mjk0MDQyMCkgLS0+CisgICAgPHNraXAgLz4KICAgICA8c3RyaW5nIG5hbWU9ImNvbmZpZ3VyZV9kaWN0aW9uYXJpZXNfdGl0bGUiIG1zZ2lkPSI0MjM4NjUyMzM4NTU2OTAyMDQ5Ij4i4Lie4LiI4LiZ4Liy4LiZ4Li44LiB4Lij4LihIEFkZC1PbiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im1haW5fZGljdGlvbmFyeSIgbXNnaWQ9IjQ3OTg3NjM3ODE4MTgzNjExNjgiPiLguJ7guIjguJnguLLguJnguLjguIHguKPguKHguKvguKXguLHguIEiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwcmVmc19zaG93X3N1Z2dlc3Rpb25zIiBtc2dpZD0iODAyNjc5OTY2MzQ0NTUzMTYzNyI+IuC5geC4quC4lOC4h+C4hOC4s+C5geC4meC4sOC4meC4s+C4geC4suC4o+C5geC4geC5ieC5hOC4giI8L3N0cmluZz4KQEAgLTE3MSw4ICsxNzMsMjcgQEAKICAgICA8c3RyaW5nIG5hbWU9InJlYWRfZXh0ZXJuYWxfZGljdGlvbmFyeV9jb25maXJtX2luc3RhbGxfbWVzc2FnZSIgbXNnaWQ9IjY4OTg2MTAxNjM3Njg5ODA4NzAiPiLguJXguLTguJTguJXguLHguYnguIfguYTguJ/guKXguYzguJnguLXguYnguKrguLPguKvguKPguLHguJogPHhsaWZmOmcgaWQ9IkxPQ0FMRV9OQU1FIj4lczwveGxpZmY6Zz4g4LiI4Lij4Li04LiH4LmGIOC4q+C4o+C4t+C4rSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImVycm9yIiBtc2dpZD0iODk0MDc2MzYyNDY2ODUxMzY0OCI+IuC5gOC4geC4tOC4lOC4guC5ieC4reC4nOC4tOC4lOC4nuC4peC4suC4lCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJ1dHRvbl9kZWZhdWx0IiBtc2dpZD0iMzk4ODAxNzg0MDQzMTg4MTQ5MSI+IuC4hOC5iOC4suC5gOC4o+C4tOC5iOC4oeC4leC5ieC4mSI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Imxhbmd1YWdlX3NldHRpbmdzIiBtc2dpZD0iMTY3MTE1MzA1MzIwMTgwOTAzMSI+IuC4oOC4suC4qeC4suC5geC4peC4sOC4geC4suC4o+C4m+C5ieC4reC4meC4guC5ieC4reC4oeC4ueC4pSI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InNlbGVjdF9pbnB1dF9tZXRob2QiIG1zZ2lkPSI0MzAxNjAyMzc0NjA5Mjc1MDAzIj4i4LmA4Lil4Li34Lit4LiB4Lin4Li04LiY4Li14LiB4Liy4Lij4Lib4LmJ4Lit4LiZ4LiC4LmJ4Lit4Lih4Li54LilIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfd2VsY29tZV90aXRsZSIgbXNnaWQ9IjYxMTI4MjE3MDk4MzIwMzE3MTUiPiLguKLguLTguJnguJTguLXguJXguYnguK3guJnguKPguLHguJrguKrguLnguYggPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3dlbGNvbWVfYWRkaXRpb25hbF9kZXNjcmlwdGlvbiIgbXNnaWQ9IjgxNTAyNTIwMDg1NDU3Njg5NTMiPiLguJ7guKPguYnguK3guKHguIHguLLguKPguJvguYnguK3guJnguILguYnguK3guKHguLnguKXguJTguYnguKfguKLguJfguYjguLLguJfguLLguIciPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGFydF9hY3Rpb24iIG1zZ2lkPSI4OTM2MDM2NDYwODk3MzQ3NzA4Ij4i4LmA4Lij4Li04LmI4Lih4LiV4LmJ4LiZ4LmD4LiK4LmJ4LiH4Liy4LiZIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfbmV4dF9hY3Rpb24iIG1zZ2lkPSIzNzE4MjE0Mzc5MTUxNDQ2MDMiPiLguILguLHguYnguJnguJXguK3guJnguJbguLHguJTguYTguJsiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwc190aXRsZSIgbXNnaWQ9IjY0MDAzNzMwMzQ4NzE4MTYxODIiPiLguIHguLLguKPguJXguLHguYnguIfguITguYjguLIgPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAxX3RpdGxlIiBtc2dpZD0iMzE0Nzk2NzYzMDI1MzQ2MjMxNSI+IuC5gOC4m+C4tOC4lOC5g+C4iuC5ieC4h+C4suC4mSA8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDFfaW5zdHJ1Y3Rpb24iIG1zZ2lkPSIyNTc4NjMxOTM2NjI0NjM3MjQxIj4i4LmC4Lib4Lij4LiU4LiV4Lij4Lin4LiI4Liq4Lit4LiaIFwiPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPlwiIOC5g+C4meC4geC4suC4o+C4leC4seC5ieC4h+C4hOC5iOC4suC4oOC4suC4qeC4suC5geC4peC4sOC4geC4suC4o+C4m+C5ieC4reC4meC4guC5ieC4reC4oeC4ueC4peC4guC4reC4h+C4hOC4uOC4kyDguIvguLbguYjguIfguIjguLDguK3guJnguLjguI3guLLguJXguYPguKvguYnguYHguK3guJvguJfguLPguIfguLLguJnguJrguJnguK3guLjguJvguIHguKPguJPguYzguILguK3guIfguITguLjguJMiPC9zdHJpbmc+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc2V0dXBfc3RlcDFfZmluaXNoZWRfaW5zdHJ1Y3Rpb24gKDEwNzYxNDgyMDA0OTU3OTk0KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDFfYWN0aW9uIiBtc2dpZD0iNDM2NjUxMzUzNDk5OTkwMTcyOCI+IuC5gOC4m+C4tOC4lOC5g+C4iuC5ieC4h+C4suC4meC5g+C4meC4geC4suC4o+C4leC4seC5ieC4h+C4hOC5iOC4siI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAyX3RpdGxlIiBtc2dpZD0iNjg2MDcyNTQ0NzkwNjY5MDU5NCI+IuC4quC4peC4seC4muC5hOC4m+C5g+C4iuC5iSA8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDJfaW5zdHJ1Y3Rpb24iIG1zZ2lkPSI5MTQxNDgxOTY0ODcwMDIzMzM2Ij4i4LiW4Lix4LiU4LmE4LibIOC5gOC4peC4t+C4reC4gSBcIjx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz5cIiDguYDguJvguYfguJnguKfguLTguJjguLXguIHguLLguKPguJvguYnguK3guJnguILguYnguK3guITguKfguLLguKHguJfguLXguYjguYPguIrguYnguIfguLLguJnguILguK3guIfguITguLjguJMiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMl9hY3Rpb24iIG1zZ2lkPSIxNjYwMzMwMzA3MTU5ODI0MzM3Ij4i4Liq4Lil4Lix4Lia4Lin4Li04LiY4Li14LiB4Liy4Lij4Lib4LmJ4Lit4LiZ4LiC4LmJ4Lit4Lih4Li54LilIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDNfdGl0bGUiIG1zZ2lkPSIzMTU0NzU3MTgzNjMxNDkwMjgxIj4i4Lii4Li04LiZ4LiU4Li14LiU4LmJ4Lin4LiiIOC4hOC4uOC4k+C4nuC4o+C5ieC4reC4oeC5g+C4iuC5ieC4h+C4suC4meC5geC4peC5ieC4pyEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwM19pbnN0cnVjdGlvbiIgbXNnaWQ9IjgwMjU5ODE4Mjk2MDU0MjYwMDAiPiLguJXguK3guJnguJnguLXguYnguITguLjguJPguKrguLLguKHguLLguKPguJbguJ7guLTguKHguJ7guYzguILguYnguK3guKHguLnguKXguKXguIfguYPguJnguYHguK3guJvguJfguLXguYjguIrguLfguYjguJnguIrguK3guJrguJfguLHguYnguIfguKvguKHguJTguJTguYnguKfguKIgPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAzX2FjdGlvbiIgbXNnaWQ9IjYwMDg3OTc5NzI1Njk0MjI1OSI+IuC4geC4s+C4q+C4meC4lOC4hOC5iOC4suC4oOC4suC4qeC4suC5gOC4nuC4tOC5iOC4oeC5gOC4leC4tOC4oSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX2ZpbmlzaF9hY3Rpb24iIG1zZ2lkPSIyNzY1NTkyNDM0MDk0NjUzODkiPiLguYDguKrguKPguYfguIjguKrguLTguYnguJkiPC9zdHJpbmc+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc2hvd19zZXR1cF93aXphcmRfaWNvbiAoNTAwODAyODU5MDU5MzcxMDgzMCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzaG93X3NldHVwX3dpemFyZF9pY29uX3N1bW1hcnkgKDQxMTk5OTgzMjI1MzY4ODAyMTMpIC0tPgorICAgIDxza2lwIC8+CiAgICAgPHN0cmluZyBuYW1lPSJhcHBfbmFtZSIgbXNnaWQ9IjYzMjAxMDI2Mzc0OTEyMzQ3OTIiPiLguJzguLnguYnguYPguKvguYnguJrguKPguLTguIHguLLguKPguJ7guIjguJnguLLguJnguLjguIHguKPguKEiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkaWN0aW9uYXJ5X3Byb3ZpZGVyX25hbWUiIG1zZ2lkPSIzMDI3MzE1MDQ1Mzk3MzYzMDc5Ij4i4Lic4Li54LmJ4LmD4Lir4LmJ4Lia4Lij4Li04LiB4Liy4Lij4Lie4LiI4LiZ4Liy4LiZ4Li44LiB4Lij4LihIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGljdGlvbmFyeV9zZXJ2aWNlX25hbWUiIG1zZ2lkPSI2MjM3NDcyMzUwNjkzNTExNDQ4Ij4i4Lia4Lij4Li04LiB4Liy4Lij4Lie4LiI4LiZ4Liy4LiZ4Li44LiB4Lij4LihIjwvc3RyaW5nPgpAQCAtMjAzLDQgKzIyNCw2IEBACiAgICAgPHN0cmluZyBuYW1lPSJkaWN0X2F2YWlsYWJsZV9ub3RpZmljYXRpb25fdGl0bGUiIG1zZ2lkPSI2NTE0Mjg4NTkxOTU5MTE3Mjg4Ij4i4Lih4Li14Lie4LiI4LiZ4Liy4LiZ4Li44LiB4Lij4Lih4LmD4Lir4LmJ4LmD4LiK4LmJ4LiH4Liy4LiZ4LmD4LiZ4Lig4Liy4Lip4LiyIDx4bGlmZjpnIGlkPSJMQU5HVUFHRSI+JTEkczwveGxpZmY6Zz4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkaWN0X2F2YWlsYWJsZV9ub3RpZmljYXRpb25fZGVzY3JpcHRpb24iIG1zZ2lkPSIxMDc1MTk0MTY5NDQzMTYzNDg3Ij4i4LiB4LiU4LmA4Lie4Li34LmI4Lit4LiV4Lij4Lin4LiI4Liq4Lit4Lia4LmB4Lil4Liw4LiU4Liy4Lin4LiZ4LmM4LmC4Lir4Lil4LiUIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idG9hc3RfZG93bmxvYWRpbmdfc3VnZ2VzdGlvbnMiIG1zZ2lkPSIxMzEzMDI3MzUzNTg4NTY2NjYwIj4i4LiB4Liz4Lil4Lix4LiH4LiU4Liy4Lin4LiZ4LmM4LmC4Lir4Lil4LiUOiDguITguLPguYHguJnguLDguJnguLPguKrguLPguKvguKPguLHguJogPHhsaWZmOmcgaWQ9IkxBTkdVQUdFIj4lMSRzPC94bGlmZjpnPiDguIjguLDguJ7guKPguYnguK3guKHguYPguIrguYnguIfguLLguJnguYDguKPguYfguKfguYYg4LiZ4Li14LmJIjwvc3RyaW5nPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHZlcnNpb25fdGV4dCAoMjcxNTM1NDIxNTU2ODQ2OTM4NSkgLS0+CisgICAgPHNraXAgLz4KIDwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvamF2YS9yZXMvdmFsdWVzLXRsL3N0cmluZ3MueG1sIGIvamF2YS9yZXMvdmFsdWVzLXRsL3N0cmluZ3MueG1sCmluZGV4IDI1NjBmYzcuLjdiNjM4N2MgMTAwNjQ0Ci0tLSBhL2phdmEvcmVzL3ZhbHVlcy10bC9zdHJpbmdzLnhtbAorKysgYi9qYXZhL3Jlcy92YWx1ZXMtdGwvc3RyaW5ncy54bWwKQEAgLTUzLDYgKzUzLDggQEAKICAgICA8c3RyaW5nIG5hbWU9InVzZV9kb3VibGVfc3BhY2VfcGVyaW9kX3N1bW1hcnkiIG1zZ2lkPSI2NTMyODkyMTg3MjQ3OTUyNzk5Ij4iTmFnbGFsYWdheSBuZyB0dWxkb2sgbmEgbWF5IHB1d2FuZyBhbmcgcGFnLWRvdWJsZSB0YXAgc2Egc3BhY2ViYXIiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJhdXRvX2NhcCIgbXNnaWQ9IjE3MTk3NDY2NzQ4NTQ2MjgyNTIiPiJBdXRvLWNhcGl0YWxpemF0aW9uIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYXV0b19jYXBfc3VtbWFyeSIgbXNnaWQ9Ijc5MzQ0NTI3NjEwMjI5NDY4NzQiPiJJLWNhcGl0YWxpemUgYW5nIHVuYW5nIHNhbGl0YSBuZyBiYXdhdCBwYW5ndW5ndXNhcCI8L3N0cmluZz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBlZGl0X3BlcnNvbmFsX2RpY3Rpb25hcnkgKDM5OTY5MTAwMzg5NTI5NDA0MjApIC0tPgorICAgIDxza2lwIC8+CiAgICAgPHN0cmluZyBuYW1lPSJjb25maWd1cmVfZGljdGlvbmFyaWVzX3RpdGxlIiBtc2dpZD0iNDIzODY1MjMzODU1NjkwMjA0OSI+Ik1nYSBkaWtzeXVuYXJ5byBuYSBhZGQtb24iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJtYWluX2RpY3Rpb25hcnkiIG1zZ2lkPSI0Nzk4NzYzNzgxODE4MzYxMTY4Ij4iUGFuZ3VuYWhpbmcgZGlrc3l1bmFyeW8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwcmVmc19zaG93X3N1Z2dlc3Rpb25zIiBtc2dpZD0iODAyNjc5OTY2MzQ0NTUzMTYzNyI+Ik1hZ3Bha2l0YSBuZyBtZ2Egc3VoZXN0aXlvbiBuZyBwYWd3YXdhc3RvIjwvc3RyaW5nPgpAQCAtMTcxLDggKzE3MywyNyBAQAogICAgIDxzdHJpbmcgbmFtZT0icmVhZF9leHRlcm5hbF9kaWN0aW9uYXJ5X2NvbmZpcm1faW5zdGFsbF9tZXNzYWdlIiBtc2dpZD0iNjg5ODYxMDE2Mzc2ODk4MDg3MCI+IkktaW5zdGFsbCB0YWxhZ2EgYW5nIGZpbGUgbmEgaXRvIHBhcmEgc2EgPHhsaWZmOmcgaWQ9IkxPQ0FMRV9OQU1FIj4lczwveGxpZmY6Zz4/Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZXJyb3IiIG1zZ2lkPSI4OTQwNzYzNjI0NjY4NTEzNjQ4Ij4iTmFna2Fyb29uIG5nIGVycm9yIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYnV0dG9uX2RlZmF1bHQiIG1zZ2lkPSIzOTg4MDE3ODQwNDMxODgxNDkxIj4iRGVmYXVsdCI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Imxhbmd1YWdlX3NldHRpbmdzIiBtc2dpZD0iMTY3MTE1MzA1MzIwMTgwOTAzMSI+Ildpa2EgYXQgaW5wdXQiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJzZWxlY3RfaW5wdXRfbWV0aG9kIiBtc2dpZD0iNDMwMTYwMjM3NDYwOTI3NTAwMyI+IlB1bWlsaSBuZyBwYW1hbWFyYWFuIG5nIHBhZy1pbnB1dCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3dlbGNvbWVfdGl0bGUiIG1zZ2lkPSI2MTEyODIxNzA5ODMyMDMxNzE1Ij4iTWFsaWdheWFuZyBwYWdkYXRpbmcgc2EgPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3dlbGNvbWVfYWRkaXRpb25hbF9kZXNjcmlwdGlvbiIgbXNnaWQ9IjgxNTAyNTIwMDg1NDU3Njg5NTMiPiJnYW1pdCBhbmcgR2VzdHVyZSBuYSBQYWctdHlwZSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0YXJ0X2FjdGlvbiIgbXNnaWQ9Ijg5MzYwMzY0NjA4OTczNDc3MDgiPiJNYWdzaW11bGEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9uZXh0X2FjdGlvbiIgbXNnaWQ9IjM3MTgyMTQzNzkxNTE0NDYwMyI+IlN1c3Vub2QgbmEgaGFrYmFuZyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXBzX3RpdGxlIiBtc2dpZD0iNjQwMDM3MzAzNDg3MTgxNjE4MiI+IlNpbmUtc2V0IHVwIGFuZyA8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDFfdGl0bGUiIG1zZ2lkPSIzMTQ3OTY3NjMwMjUzNDYyMzE1Ij4iUGFnYW5haGluIGFuZyA8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDFfaW5zdHJ1Y3Rpb24iIG1zZ2lkPSIyNTc4NjMxOTM2NjI0NjM3MjQxIj4iUGFraS1jaGVjayBhbmcgXCI8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+XCIgc2EgbWdhIHNldHRpbmcgbW8gbmcgV2lrYSBhdCBpbnB1dC4gTWFwYXBhaGludHVsdXRhbiBpdG9uZyB0dW1ha2JvIHNhIGRldmljZSBtby4iPC9zdHJpbmc+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc2V0dXBfc3RlcDFfZmluaXNoZWRfaW5zdHJ1Y3Rpb24gKDEwNzYxNDgyMDA0OTU3OTk0KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDFfYWN0aW9uIiBtc2dpZD0iNDM2NjUxMzUzNDk5OTkwMTcyOCI+IkktZW5hYmxlIHNhIE1nYSBTZXR0aW5nIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDJfdGl0bGUiIG1zZ2lkPSI2ODYwNzI1NDQ3OTA2NjkwNTk0Ij4iTHVtaXBhdCBzYSA8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDJfaW5zdHJ1Y3Rpb24iIG1zZ2lkPSI5MTQxNDgxOTY0ODcwMDIzMzM2Ij4iU3VzdW5vZCwgcGlsaWluIGFuZyBcIjx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz5cIiBiaWxhbmcgaXlvbmcgYWt0aWJvbmcgcGFtYW1hcmFhbiBuZyBwYWctaW5wdXQgbmcgdGVrc3RvLiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAyX2FjdGlvbiIgbXNnaWQ9IjE2NjAzMzAzMDcxNTk4MjQzMzciPiJNYWdwYWxpdCBuZyBwYW1hbWFyYWFuIG5nIHBhZy1pbnB1dCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAzX3RpdGxlIiBtc2dpZD0iMzE1NDc1NzE4MzYzMTQ5MDI4MSI+IkJpbmFiYXRpIGtpdGEsIGhhbmRhIGthIG5hISI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAzX2luc3RydWN0aW9uIiBtc2dpZD0iODAyNTk4MTgyOTYwNTQyNjAwMCI+Ik5nYXlvbiwgbWF0YS10eXBlIG1vIG5hIGFuZyBsYWhhdCBuZyBwYWJvcml0byBtb25nIGFwcHMgZ2FtaXQgYW5nIDx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz4uIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDNfYWN0aW9uIiBtc2dpZD0iNjAwODc5Nzk3MjU2OTQyMjU5Ij4iTWFnLWNvbmZpZ3VyZSBuZyBtZ2Ega2FyYWdkYWdhbmcgd2lrYSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX2ZpbmlzaF9hY3Rpb24iIG1zZ2lkPSIyNzY1NTkyNDM0MDk0NjUzODkiPiJUYXBvcyBuYSI8L3N0cmluZz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzaG93X3NldHVwX3dpemFyZF9pY29uICg1MDA4MDI4NTkwNTkzNzEwODMwKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNob3dfc2V0dXBfd2l6YXJkX2ljb25fc3VtbWFyeSAoNDExOTk5ODMyMjUzNjg4MDIxMykgLS0+CisgICAgPHNraXAgLz4KICAgICA8c3RyaW5nIG5hbWU9ImFwcF9uYW1lIiBtc2dpZD0iNjMyMDEwMjYzNzQ5MTIzNDc5MiI+IlByb3ZpZGVyIG5nIERpa3N5dW5hcnlvIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGljdGlvbmFyeV9wcm92aWRlcl9uYW1lIiBtc2dpZD0iMzAyNzMxNTA0NTM5NzM2MzA3OSI+IlByb3ZpZGVyIG5nIERpa3N5dW5hcnlvIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGljdGlvbmFyeV9zZXJ2aWNlX25hbWUiIG1zZ2lkPSI2MjM3NDcyMzUwNjkzNTExNDQ4Ij4iU2VyYmlzeW8gbmcgRGlrc3l1bmFyeW8iPC9zdHJpbmc+CkBAIC0yMDMsNCArMjI0LDYgQEAKICAgICA8c3RyaW5nIG5hbWU9ImRpY3RfYXZhaWxhYmxlX25vdGlmaWNhdGlvbl90aXRsZSIgbXNnaWQ9IjY1MTQyODg1OTE5NTkxMTcyODgiPiJNYXkgYXZhaWxhYmxlIG5hIGRpa3N5dW5hcnlvIHBhcmEgc2EgPHhsaWZmOmcgaWQ9IkxBTkdVQUdFIj4lMSRzPC94bGlmZjpnPiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRpY3RfYXZhaWxhYmxlX25vdGlmaWNhdGlvbl9kZXNjcmlwdGlvbiIgbXNnaWQ9IjEwNzUxOTQxNjk0NDMxNjM0ODciPiJQaW5kdXRpbiB1cGFuZyBzdXJpaW4gYXQgaS1kb3dubG9hZCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InRvYXN0X2Rvd25sb2FkaW5nX3N1Z2dlc3Rpb25zIiBtc2dpZD0iMTMxMzAyNzM1MzU4ODU2NjY2MCI+IkRpbmEtZG93bmxvYWQ6IG1hbGFwaXQgbmFuZyBtYWdpbmcgaGFuZGEgYW5nIG1nYSBzdWhlc3RpeW9uIHBhcmEgc2EgPHhsaWZmOmcgaWQ9IkxBTkdVQUdFIj4lMSRzPC94bGlmZjpnPi4iPC9zdHJpbmc+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgdmVyc2lvbl90ZXh0ICgyNzE1MzU0MjE1NTY4NDY5Mzg1KSAtLT4KKyAgICA8c2tpcCAvPgogPC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9qYXZhL3Jlcy92YWx1ZXMtdHIvc3RyaW5ncy54bWwgYi9qYXZhL3Jlcy92YWx1ZXMtdHIvc3RyaW5ncy54bWwKaW5kZXggYTBhNmE2Ny4uNzYzOWI0ZCAxMDA2NDQKLS0tIGEvamF2YS9yZXMvdmFsdWVzLXRyL3N0cmluZ3MueG1sCisrKyBiL2phdmEvcmVzL3ZhbHVlcy10ci9zdHJpbmdzLnhtbApAQCAtNTMsNiArNTMsOCBAQAogICAgIDxzdHJpbmcgbmFtZT0idXNlX2RvdWJsZV9zcGFjZV9wZXJpb2Rfc3VtbWFyeSIgbXNnaWQ9IjY1MzI4OTIxODcyNDc5NTI3OTkiPiJCb8WfbHVrIMOndWJ1xJ91bmEgaWtpIGtleiB2dXJtYWsgbm9rdGEgdmUgYXJkxLFuZGFuIGJpciBib8WfbHVrIGVrbGVyIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYXV0b19jYXAiIG1zZ2lkPSIxNzE5NzQ2Njc0ODU0NjI4MjUyIj4iT3RvbWF0aWsgb2xhcmFrIGLDvHnDvGsgaGFyZiB5YXAiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJhdXRvX2NhcF9zdW1tYXJ5IiBtc2dpZD0iNzkzNDQ1Mjc2MTAyMjk0Njg3NCI+IkhlciBjw7xtbGVuaW4gaWxrIGtlbGltZXNpbmkgYsO8ecO8ayBoYXJmIHlhcCI8L3N0cmluZz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBlZGl0X3BlcnNvbmFsX2RpY3Rpb25hcnkgKDM5OTY5MTAwMzg5NTI5NDA0MjApIC0tPgorICAgIDxza2lwIC8+CiAgICAgPHN0cmluZyBuYW1lPSJjb25maWd1cmVfZGljdGlvbmFyaWVzX3RpdGxlIiBtc2dpZD0iNDIzODY1MjMzODU1NjkwMjA0OSI+IkVrIHPDtnpsw7xrbGVyIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ibWFpbl9kaWN0aW9uYXJ5IiBtc2dpZD0iNDc5ODc2Mzc4MTgxODM2MTE2OCI+IkFuYSBzw7Z6bMO8ayI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InByZWZzX3Nob3dfc3VnZ2VzdGlvbnMiIG1zZ2lkPSI4MDI2Nzk5NjYzNDQ1NTMxNjM3Ij4iRMO8emVsdG1lIMO2bmVyaWxlcmluaSBnw7ZzdGVyIjwvc3RyaW5nPgpAQCAtMTcxLDggKzE3MywyNyBAQAogICAgIDxzdHJpbmcgbmFtZT0icmVhZF9leHRlcm5hbF9kaWN0aW9uYXJ5X2NvbmZpcm1faW5zdGFsbF9tZXNzYWdlIiBtc2dpZD0iNjg5ODYxMDE2Mzc2ODk4MDg3MCI+Ijx4bGlmZjpnIGlkPSJMT0NBTEVfTkFNRSI+JXM8L3hsaWZmOmc+IGnDp2luIGJ1IGRvc3lhIGdlcsOnZWt0ZW4gecO8a2xlbnNpbiBtaT8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJlcnJvciIgbXNnaWQ9Ijg5NDA3NjM2MjQ2Njg1MTM2NDgiPiJCaXIgaGF0YSBvbHXFn3R1Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYnV0dG9uX2RlZmF1bHQiIG1zZ2lkPSIzOTg4MDE3ODQwNDMxODgxNDkxIj4iVmFyc2F5xLFsYW4iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJsYW5ndWFnZV9zZXR0aW5ncyIgbXNnaWQ9IjE2NzExNTMwNTMyMDE4MDkwMzEiPiJEaWwgdmUgZ2lyacWfIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ic2VsZWN0X2lucHV0X21ldGhvZCIgbXNnaWQ9IjQzMDE2MDIzNzQ2MDkyNzUwMDMiPiJHaXJpxZ8gecO2bnRlbWluaSBzZcOnaW4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF93ZWxjb21lX3RpdGxlIiBtc2dpZD0iNjExMjgyMTcwOTgzMjAzMTcxNSI+Ijx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz4gdXlndWxhbWFzxLFuYSBob8WfIGdlbGRpbml6Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfd2VsY29tZV9hZGRpdGlvbmFsX2Rlc2NyaXB0aW9uIiBtc2dpZD0iODE1MDI1MjAwODU0NTc2ODk1MyI+IkhhcmVrZXRsZSBZYXptYXnEsSBpw6dlcmlyIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RhcnRfYWN0aW9uIiBtc2dpZD0iODkzNjAzNjQ2MDg5NzM0NzcwOCI+IkJhxZ9sYXnEsW4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9uZXh0X2FjdGlvbiIgbXNnaWQ9IjM3MTgyMTQzNzkxNTE0NDYwMyI+IlNvbnJha2kgYWTEsW0iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwc190aXRsZSIgbXNnaWQ9IjY0MDAzNzMwMzQ4NzE4MTYxODIiPiI8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+IHV5Z3VsYW1hc8SxbsSxIGt1cm1hIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDFfdGl0bGUiIG1zZ2lkPSIzMTQ3OTY3NjMwMjUzNDYyMzE1Ij4iPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPiB1eWd1bGFtYXPEsW7EsSBldGtpbmxlxZ90aXJpbiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAxX2luc3RydWN0aW9uIiBtc2dpZD0iMjU3ODYzMTkzNjYyNDYzNzI0MSI+IkzDvHRmZW4gXCI8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+XCIgdXlndWxhbWFzxLFuxLEga2VuZGkgRGlsIHZlIGdpcmnFnyBheWFybGFyxLFuxLF6ZGEgacWfYXJldGxleWluLiBCdSBpxZ9sZW0sIHV5Z3VsYW1heWEgY2loYXrEsW7EsXpkYSDDp2FsxLHFn21hIHlldGtpc2kgdmVyZWNla3Rpci4iPC9zdHJpbmc+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc2V0dXBfc3RlcDFfZmluaXNoZWRfaW5zdHJ1Y3Rpb24gKDEwNzYxNDgyMDA0OTU3OTk0KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDFfYWN0aW9uIiBtc2dpZD0iNDM2NjUxMzUzNDk5OTkwMTcyOCI+IkF5YXJsYXJkYSBldGtpbmxlxZ90aXIiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMl90aXRsZSIgbXNnaWQ9IjY4NjA3MjU0NDc5MDY2OTA1OTQiPiI8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+IHV5Z3VsYW1hc8SxbmEgZ2XDp2luIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDJfaW5zdHJ1Y3Rpb24iIG1zZ2lkPSI5MTQxNDgxOTY0ODcwMDIzMzM2Ij4iU29ucmEsIFwiPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPlwiIHV5Z3VsYW1hc8SxbsSxIGV0a2luIG1ldGluIGdpcmnFnyB5w7ZudGVtaW5peiBvbGFyYWsgc2XDp2luLiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAyX2FjdGlvbiIgbXNnaWQ9IjE2NjAzMzAzMDcxNTk4MjQzMzciPiJHaXJpxZ8gecO2bnRlbWluaSBkZcSfacWfdGlyIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDNfdGl0bGUiIG1zZ2lkPSIzMTU0NzU3MTgzNjMxNDkwMjgxIj4iVGVicmlrbGVyLCBiaXRpcmRpbml6ISI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAzX2luc3RydWN0aW9uIiBtc2dpZD0iODAyNTk4MTgyOTYwNTQyNjAwMCI+IkFydMSxayA8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+IGlsZSB0w7xtIGZhdm9yaSB1eWd1bGFtYWxhcsSxbsSxemRhIHlhemFiaWxpcnNpbml6LiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAzX2FjdGlvbiIgbXNnaWQ9IjYwMDg3OTc5NzI1Njk0MjI1OSI+IkVrIGRpbGxlcmkgeWFwxLFsYW5kxLFyxLFuIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfZmluaXNoX2FjdGlvbiIgbXNnaWQ9IjI3NjU1OTI0MzQwOTQ2NTM4OSI+IlRhbWFtbGFuZMSxIjwvc3RyaW5nPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNob3dfc2V0dXBfd2l6YXJkX2ljb24gKDUwMDgwMjg1OTA1OTM3MTA4MzApIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc2hvd19zZXR1cF93aXphcmRfaWNvbl9zdW1tYXJ5ICg0MTE5OTk4MzIyNTM2ODgwMjEzKSAtLT4KKyAgICA8c2tpcCAvPgogICAgIDxzdHJpbmcgbmFtZT0iYXBwX25hbWUiIG1zZ2lkPSI2MzIwMTAyNjM3NDkxMjM0NzkyIj4iU8O2emzDvGsgU2HEn2xhecSxY8SxIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGljdGlvbmFyeV9wcm92aWRlcl9uYW1lIiBtc2dpZD0iMzAyNzMxNTA0NTM5NzM2MzA3OSI+IlPDtnpsw7xrIFNhxJ9sYXnEsWPEsSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRpY3Rpb25hcnlfc2VydmljZV9uYW1lIiBtc2dpZD0iNjIzNzQ3MjM1MDY5MzUxMTQ0OCI+IlPDtnpsw7xrIEhpem1ldGkiPC9zdHJpbmc+CkBAIC0yMDMsNCArMjI0LDYgQEAKICAgICA8c3RyaW5nIG5hbWU9ImRpY3RfYXZhaWxhYmxlX25vdGlmaWNhdGlvbl90aXRsZSIgbXNnaWQ9IjY1MTQyODg1OTE5NTkxMTcyODgiPiI8eGxpZmY6ZyBpZD0iTEFOR1VBR0UiPiUxJHM8L3hsaWZmOmc+IGnDp2luIGt1bGxhbsSxbGFiaWxlY2VrIGJpciBzw7Z6bMO8ayBtZXZjdXQiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkaWN0X2F2YWlsYWJsZV9ub3RpZmljYXRpb25fZGVzY3JpcHRpb24iIG1zZ2lkPSIxMDc1MTk0MTY5NDQzMTYzNDg3Ij4ixLBuY2VsZW1layB2ZSBpbmRpcm1layBpw6dpbiBiYXPEsW4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ0b2FzdF9kb3dubG9hZGluZ19zdWdnZXN0aW9ucyIgbXNnaWQ9IjEzMTMwMjczNTM1ODg1NjY2NjAiPiI8eGxpZmY6ZyBpZD0iTEFOR1VBR0UiPiUxJHM8L3hsaWZmOmc+IGnDp2luIMO2bmVyaWxlcmluIGluZGlyaWxtZXNpbmUga8Sxc2Egc8O8cmUgacOnaW5kZSBiYcWfbGFuYWNhay4iPC9zdHJpbmc+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgdmVyc2lvbl90ZXh0ICgyNzE1MzU0MjE1NTY4NDY5Mzg1KSAtLT4KKyAgICA8c2tpcCAvPgogPC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9qYXZhL3Jlcy92YWx1ZXMtdWsvc3RyaW5ncy54bWwgYi9qYXZhL3Jlcy92YWx1ZXMtdWsvc3RyaW5ncy54bWwKaW5kZXggMzYxOTNhYS4uYTg0ODUwZCAxMDA2NDQKLS0tIGEvamF2YS9yZXMvdmFsdWVzLXVrL3N0cmluZ3MueG1sCisrKyBiL2phdmEvcmVzL3ZhbHVlcy11ay9zdHJpbmdzLnhtbApAQCAtNTMsNiArNTMsOCBAQAogICAgIDxzdHJpbmcgbmFtZT0idXNlX2RvdWJsZV9zcGFjZV9wZXJpb2Rfc3VtbWFyeSIgbXNnaWQ9IjY1MzI4OTIxODcyNDc5NTI3OTkiPiLQn9C+0LTQstGW0LnQvdC1INC90LDRgtC40YHQutCw0L3QvdGPINC/0YDQvtCx0ZbQu9GDINCy0YHRgtCw0LLQu9GP0ZQg0LrRgNCw0L/QutGDINC3INC/0YDQvtCx0ZbQu9C+0Lwg0L/RltGB0LvRjyDQvdC10ZciPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJhdXRvX2NhcCIgbXNnaWQ9IjE3MTk3NDY2NzQ4NTQ2MjgyNTIiPiLQkNCy0YLQviDQstC40LrQvtGALiDQstC10LsuINC70ZbRgtC10YAiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJhdXRvX2NhcF9zdW1tYXJ5IiBtc2dpZD0iNzkzNDQ1Mjc2MTAyMjk0Njg3NCI+ItCf0LjRgdCw0YLQuCDQv9C10YDRiNC1INGB0LvQvtCy0L4g0LIg0LrQvtC20L3QvtC80YMg0YDQtdGH0LXQvdC90ZYg0Lcg0LLQtdC70LjQutC+0Zcg0LvRltGC0LXRgNC4Ijwvc3RyaW5nPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGVkaXRfcGVyc29uYWxfZGljdGlvbmFyeSAoMzk5NjkxMDAzODk1Mjk0MDQyMCkgLS0+CisgICAgPHNraXAgLz4KICAgICA8c3RyaW5nIG5hbWU9ImNvbmZpZ3VyZV9kaWN0aW9uYXJpZXNfdGl0bGUiIG1zZ2lkPSI0MjM4NjUyMzM4NTU2OTAyMDQ5Ij4i0JTQvtC00LDQvdGWINGB0LvQvtCy0L3QuNC60LgiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJtYWluX2RpY3Rpb25hcnkiIG1zZ2lkPSI0Nzk4NzYzNzgxODE4MzYxMTY4Ij4i0J7RgdC90L7QstC90LjQuSDRgdC70L7QstC90LjQuiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InByZWZzX3Nob3dfc3VnZ2VzdGlvbnMiIG1zZ2lkPSI4MDI2Nzk5NjYzNDQ1NTMxNjM3Ij4i0J/QvtC60LDQt9GD0LLQsNGC0Lgg0L/RgNC+0L/QvtC30LjRhtGW0Zcg0LLQuNC/0YDQsNCy0LvQtdC90YwiPC9zdHJpbmc+CkBAIC0xNzEsOCArMTczLDI3IEBACiAgICAgPHN0cmluZyBuYW1lPSJyZWFkX2V4dGVybmFsX2RpY3Rpb25hcnlfY29uZmlybV9pbnN0YWxsX21lc3NhZ2UiIG1zZ2lkPSI2ODk4NjEwMTYzNzY4OTgwODcwIj4i0KHQv9GA0LDQstC00ZYg0LLRgdGC0LDQvdC+0LLQuNGC0Lgg0YbQtdC5INGE0LDQudC7INC00LvRjyDRgtCw0LrQvtGXINC80L7QstC4OiA8eGxpZmY6ZyBpZD0iTE9DQUxFX05BTUUiPiVzPC94bGlmZjpnPj8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJlcnJvciIgbXNnaWQ9Ijg5NDA3NjM2MjQ2Njg1MTM2NDgiPiLQodGC0LDQu9Cw0YHRjyDQv9C+0LzQuNC70LrQsCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJ1dHRvbl9kZWZhdWx0IiBtc2dpZD0iMzk4ODAxNzg0MDQzMTg4MTQ5MSI+ItCX0LAg0YPQvNC+0LLRh9Cw0L3QvdGP0LwiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJsYW5ndWFnZV9zZXR0aW5ncyIgbXNnaWQ9IjE2NzExNTMwNTMyMDE4MDkwMzEiPiLQnNC+0LLQsCDRgtCwINCy0LLQtdC00LXQvdC90Y8iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJzZWxlY3RfaW5wdXRfbWV0aG9kIiBtc2dpZD0iNDMwMTYwMjM3NDYwOTI3NTAwMyI+ItCS0LjQsdGA0LDRgtC4INC80LXRgtC+0LQg0LLQstC10LTQtdC90L3RjyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3dlbGNvbWVfdGl0bGUiIG1zZ2lkPSI2MTEyODIxNzA5ODMyMDMxNzE1Ij4i0JLRltGC0LDRlNC80L4g0LIg0L/RgNC+0LPRgNCw0LzRliA8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfd2VsY29tZV9hZGRpdGlvbmFsX2Rlc2NyaXB0aW9uIiBtc2dpZD0iODE1MDI1MjAwODU0NTc2ODk1MyI+ItC3INGE0YPQvdC60YbRltGU0Y4g0JLQstGW0LQg0LbQtdGB0YLQsNC80LgiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGFydF9hY3Rpb24iIG1zZ2lkPSI4OTM2MDM2NDYwODk3MzQ3NzA4Ij4i0KDQvtC30L/QvtGH0LDRgtC4Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfbmV4dF9hY3Rpb24iIG1zZ2lkPSIzNzE4MjE0Mzc5MTUxNDQ2MDMiPiLQndCw0YHRgtGD0L/QvdC40Lkg0LrRgNC+0LoiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwc190aXRsZSIgbXNnaWQ9IjY0MDAzNzMwMzQ4NzE4MTYxODIiPiLQndCw0LvQsNGI0YLRg9Cy0LDQvdC90Y8g0L/RgNC+0LPRgNCw0LzQuCA8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDFfdGl0bGUiIG1zZ2lkPSIzMTQ3OTY3NjMwMjUzNDYyMzE1Ij4i0KPQstGW0LzQutC90ZbRgtGMINC/0YDQvtCz0YDQsNC80YMgPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAxX2luc3RydWN0aW9uIiBtc2dpZD0iMjU3ODYzMTkzNjYyNDYzNzI0MSI+ItCS0LjQsdC10YDRltGC0YwgXCI8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+XCIg0YMg0L3QsNC70LDRiNGC0YPQstCw0L3QvdGP0YUgXCLQnNC+0LLQsCDRgtCwINCy0LLQtdC00LXQvdC90Y9cIiwg0YnQvtCxINC00L7Qt9Cy0L7Qu9C40YLQuCDQt9Cw0L/Rg9GB0Log0YbRltGU0Zcg0L/RgNC+0LPRgNCw0LzQuCDQvdCwINC/0YDQuNGB0YLRgNC+0ZcuIjwvc3RyaW5nPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNldHVwX3N0ZXAxX2ZpbmlzaGVkX2luc3RydWN0aW9uICgxMDc2MTQ4MjAwNDk1Nzk5NCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAxX2FjdGlvbiIgbXNnaWQ9IjQzNjY1MTM1MzQ5OTk5MDE3MjgiPiLQo9Cy0ZbQvNC60L3Rg9GC0Lgg0LIg0L3QsNC70LDRiNGC0YPQstCw0L3QvdGP0YUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMl90aXRsZSIgbXNnaWQ9IjY4NjA3MjU0NDc5MDY2OTA1OTQiPiLQn9C10YDQtdC50LTRltGC0Ywg0LTQviDQv9GA0L7Qs9GA0LDQvNC4IDx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMl9pbnN0cnVjdGlvbiIgbXNnaWQ9IjkxNDE0ODE5NjQ4NzAwMjMzMzYiPiLQlNCw0LvRliDQstC40LHQtdGA0ZbRgtGMIFwiPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPlwiINGP0Log0L/QvtGC0L7Rh9C90LjQuSDQvNC10YLQvtC0INCy0LLQtdC00LXQvdC90Y8g0YLQtdC60YHRgtGDLiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAyX2FjdGlvbiIgbXNnaWQ9IjE2NjAzMzAzMDcxNTk4MjQzMzciPiLQl9C80ZbQvdC40YLQuCDQvNC10YLQvtC0INCy0LLQtdC00LXQvdC90Y8iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwM190aXRsZSIgbXNnaWQ9IjMxNTQ3NTcxODM2MzE0OTAyODEiPiLQktGW0YLQsNGU0LzQviEg0J3QsNC70LDRiNGC0YPQstCw0L3QvdGPINC30LDQstC10YDRiNC10L3Qvi4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwM19pbnN0cnVjdGlvbiIgbXNnaWQ9IjgwMjU5ODE4Mjk2MDU0MjYwMDAiPiLQotC10L/QtdGAINCy0Lgg0LzQvtC20LXRgtC1INCy0LLQvtC00LjRgtC4INGC0LXQutGB0YIg0YMg0LLRgdGW0YUg0YHQstC+0ZfRhSDRg9C70Y7QsdC70LXQvdC40YUg0L/RgNC+0LPRgNCw0LzQsNGFINC30LAg0LTQvtC/0L7QvNC+0LPQvtGOIDx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz4uIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDNfYWN0aW9uIiBtc2dpZD0iNjAwODc5Nzk3MjU2OTQyMjU5Ij4i0J3QsNC70LDRiNGC0YPQstCw0YLQuCDQtNC+0LTQsNGC0LrQvtCy0ZYg0LzQvtCy0LgiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9maW5pc2hfYWN0aW9uIiBtc2dpZD0iMjc2NTU5MjQzNDA5NDY1Mzg5Ij4i0JfQsNCy0LXRgNGI0LXQvdC+Ijwvc3RyaW5nPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNob3dfc2V0dXBfd2l6YXJkX2ljb24gKDUwMDgwMjg1OTA1OTM3MTA4MzApIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc2hvd19zZXR1cF93aXphcmRfaWNvbl9zdW1tYXJ5ICg0MTE5OTk4MzIyNTM2ODgwMjEzKSAtLT4KKyAgICA8c2tpcCAvPgogICAgIDxzdHJpbmcgbmFtZT0iYXBwX25hbWUiIG1zZ2lkPSI2MzIwMTAyNjM3NDkxMjM0NzkyIj4i0J/QvtGB0YLQsNGH0LDQu9GM0L3QuNC6INGB0LvQvtCy0L3QuNC60LAiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkaWN0aW9uYXJ5X3Byb3ZpZGVyX25hbWUiIG1zZ2lkPSIzMDI3MzE1MDQ1Mzk3MzYzMDc5Ij4i0J/QvtGB0YLQsNGH0LDQu9GM0L3QuNC6INGB0LvQvtCy0L3QuNC60LAiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkaWN0aW9uYXJ5X3NlcnZpY2VfbmFtZSIgbXNnaWQ9IjYyMzc0NzIzNTA2OTM1MTE0NDgiPiLQodC70YPQttCx0LAg0YHQu9C+0LLQvdC40LrQsCI8L3N0cmluZz4KQEAgLTIwMyw0ICsyMjQsNiBAQAogICAgIDxzdHJpbmcgbmFtZT0iZGljdF9hdmFpbGFibGVfbm90aWZpY2F0aW9uX3RpdGxlIiBtc2dpZD0iNjUxNDI4ODU5MTk1OTExNzI4OCI+ItCU0L7RgdGC0YPQv9C90LjQuSDRgdC70L7QstC90LjQuiDQtNC70Y8g0YLQsNC60L7RlyDQvNC+0LLQuDogPHhsaWZmOmcgaWQ9IkxBTkdVQUdFIj4lMSRzPC94bGlmZjpnPiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRpY3RfYXZhaWxhYmxlX25vdGlmaWNhdGlvbl9kZXNjcmlwdGlvbiIgbXNnaWQ9IjEwNzUxOTQxNjk0NDMxNjM0ODciPiLQndCw0YLQuNGB0L3RltGC0YwsINGJ0L7QsSDQv9C10YDQtdCz0LvRj9C90YPRgtC4INGC0LAg0LfQsNCy0LDQvdGC0LDQttC40YLQuCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InRvYXN0X2Rvd25sb2FkaW5nX3N1Z2dlc3Rpb25zIiBtc2dpZD0iMTMxMzAyNzM1MzU4ODU2NjY2MCI+ItCh0LrQvtGA0L4g0L/QvtGH0L3QtdGC0YzRgdGPINC30LDQstCw0L3RgtCw0LbQtdC90L3RjyDQv9GA0L7Qv9C+0LfQuNGG0ZbQuSDQtNC70Y8g0YLQsNC60L7RlyDQvNC+0LLQuDogPHhsaWZmOmcgaWQ9IkxBTkdVQUdFIj4lMSRzPC94bGlmZjpnPi4iPC9zdHJpbmc+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgdmVyc2lvbl90ZXh0ICgyNzE1MzU0MjE1NTY4NDY5Mzg1KSAtLT4KKyAgICA8c2tpcCAvPgogPC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9qYXZhL3Jlcy92YWx1ZXMvc2V0dXAtZGltZW5zLnhtbCBiL2phdmEvcmVzL3ZhbHVlcy12MTcvc2V0dXAtc3R5bGVzLnhtbApzaW1pbGFyaXR5IGluZGV4IDY4JQpyZW5hbWUgZnJvbSBqYXZhL3Jlcy92YWx1ZXMvc2V0dXAtZGltZW5zLnhtbApyZW5hbWUgdG8gamF2YS9yZXMvdmFsdWVzLXYxNy9zZXR1cC1zdHlsZXMueG1sCmluZGV4IDAwNzkwNmQuLjhhOWQ2NjQgMTAwNjQ0Ci0tLSBhL2phdmEvcmVzL3ZhbHVlcy9zZXR1cC1kaW1lbnMueG1sCisrKyBiL2phdmEvcmVzL3ZhbHVlcy12MTcvc2V0dXAtc3R5bGVzLnhtbApAQCAtMTUsNiArMTUsMTEgQEAKIC0tPgogCiA8cmVzb3VyY2VzIHhtbG5zOmFuZHJvaWQ9Imh0dHA6Ly9zY2hlbWFzLmFuZHJvaWQuY29tL2Fway9yZXMvYW5kcm9pZCI+Ci0gICAgPGRpbWVuIG5hbWU9InNldHVwX3RpdGxlX3RleHRfc2l6ZSI+NDZzcDwvZGltZW4+Ci0gICAgPGRpbWVuIG5hbWU9InNldHVwX2hvcml6b250YWxfcGFkZGluZyI+MTZkcDwvZGltZW4+CisgICAgPHN0eWxlIG5hbWU9InNldHVwVGl0bGVTdHlsZSIgcGFyZW50PSJzZXR1cFRpdGxlU3R5bGVDb21tb24iPgorICAgICAgICA8aXRlbSBuYW1lPSJhbmRyb2lkOmxheW91dF9hbGlnblBhcmVudFN0YXJ0Ij50cnVlPC9pdGVtPgorICAgIDwvc3R5bGU+CisgICAgPHN0eWxlIG5hbWU9InNldHVwU3RlcEFjdGlvbkxhYmVsU3R5bGUiIHBhcmVudD0ic2V0dXBTdGVwQWN0aW9uTGFiZWxTdHlsZUNvbW1vbiI+CisgICAgICAgIDxpdGVtIG5hbWU9ImFuZHJvaWQ6cGFkZGluZ1N0YXJ0Ij4xMmRwPC9pdGVtPgorICAgICAgICA8aXRlbSBuYW1lPSJhbmRyb2lkOnBhZGRpbmdFbmQiPjI0ZHA8L2l0ZW0+CisgICAgPC9zdHlsZT4KIDwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvamF2YS9yZXMvdmFsdWVzLXZpL3N0cmluZ3MueG1sIGIvamF2YS9yZXMvdmFsdWVzLXZpL3N0cmluZ3MueG1sCmluZGV4IGQwNjI2MzAuLjMzMjFjZjEgMTAwNjQ0Ci0tLSBhL2phdmEvcmVzL3ZhbHVlcy12aS9zdHJpbmdzLnhtbAorKysgYi9qYXZhL3Jlcy92YWx1ZXMtdmkvc3RyaW5ncy54bWwKQEAgLTUzLDYgKzUzLDggQEAKICAgICA8c3RyaW5nIG5hbWU9InVzZV9kb3VibGVfc3BhY2VfcGVyaW9kX3N1bW1hcnkiIG1zZ2lkPSI2NTMyODkyMTg3MjQ3OTUyNzk5Ij4iTmjhuqVuIMSRw7pwIHbDoG8gcGjDrW0gY8OhY2ggc+G6vSBjaMOobiB0aMOqbSBt4buZdCBk4bqldSBzYXUgZOG6pXUgY8OhY2giPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJhdXRvX2NhcCIgbXNnaWQ9IjE3MTk3NDY2NzQ4NTQ2MjgyNTIiPiJU4buxIMSR4buZbmcgdmnhur90IGhvYSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImF1dG9fY2FwX3N1bW1hcnkiIG1zZ2lkPSI3OTM0NDUyNzYxMDIyOTQ2ODc0Ij4iVmnhur90IGhvYSBjaOG7ryDEkeG6p3UgdGnDqm4gY+G7p2EgbeG7l2kgY8OidSI8L3N0cmluZz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBlZGl0X3BlcnNvbmFsX2RpY3Rpb25hcnkgKDM5OTY5MTAwMzg5NTI5NDA0MjApIC0tPgorICAgIDxza2lwIC8+CiAgICAgPHN0cmluZyBuYW1lPSJjb25maWd1cmVfZGljdGlvbmFyaWVzX3RpdGxlIiBtc2dpZD0iNDIzODY1MjMzODU1NjkwMjA0OSI+IlRow6ptIHThu6sgxJFp4buDbiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im1haW5fZGljdGlvbmFyeSIgbXNnaWQ9IjQ3OTg3NjM3ODE4MTgzNjExNjgiPiJU4burIMSRaeG7g24gY2jDrW5oIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icHJlZnNfc2hvd19zdWdnZXN0aW9ucyIgbXNnaWQ9IjgwMjY3OTk2NjM0NDU1MzE2MzciPiJIaeG7g24gdGjhu4sgZ+G7o2kgw70gc+G7rWEiPC9zdHJpbmc+CkBAIC0xNzEsOCArMTczLDI3IEBACiAgICAgPHN0cmluZyBuYW1lPSJyZWFkX2V4dGVybmFsX2RpY3Rpb25hcnlfY29uZmlybV9pbnN0YWxsX21lc3NhZ2UiIG1zZ2lkPSI2ODk4NjEwMTYzNzY4OTgwODcwIj4iVGjhu7FjIHPhu7EgY8OgaSDEkeG6t3QgdOG7h3AgbsOgeSBjaG8gPHhsaWZmOmcgaWQ9IkxPQ0FMRV9OQU1FIj4lczwveGxpZmY6Zz4/Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZXJyb3IiIG1zZ2lkPSI4OTQwNzYzNjI0NjY4NTEzNjQ4Ij4ixJDDoyB44bqjeSByYSBs4buXaSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJ1dHRvbl9kZWZhdWx0IiBtc2dpZD0iMzk4ODAxNzg0MDQzMTg4MTQ5MSI+Ik3hurdjIMSR4buLbmgiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJsYW5ndWFnZV9zZXR0aW5ncyIgbXNnaWQ9IjE2NzExNTMwNTMyMDE4MDkwMzEiPiJOZ8O0biBuZ+G7ryB2w6AgcGjGsMahbmcgdGjhu6ljIG5o4bqtcCI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InNlbGVjdF9pbnB1dF9tZXRob2QiIG1zZ2lkPSI0MzAxNjAyMzc0NjA5Mjc1MDAzIj4iQ2jhu41uIHBoxrDGoW5nIHRo4bupYyBuaOG6rXAiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF93ZWxjb21lX3RpdGxlIiBtc2dpZD0iNjExMjgyMTcwOTgzMjAzMTcxNSI+IkNow6BvIG3hu6tuZyBi4bqhbiDEkeG6v24gduG7m2kgPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3dlbGNvbWVfYWRkaXRpb25hbF9kZXNjcmlwdGlvbiIgbXNnaWQ9IjgxNTAyNTIwMDg1NDU3Njg5NTMiPiJ24bubaSBOaOG6rXAgYuG6sW5nIGPhu60gY2jhu4kiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGFydF9hY3Rpb24iIG1zZ2lkPSI4OTM2MDM2NDYwODk3MzQ3NzA4Ij4iQuG6r3QgxJHhuqd1Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfbmV4dF9hY3Rpb24iIG1zZ2lkPSIzNzE4MjE0Mzc5MTUxNDQ2MDMiPiJCxrDhu5tjIHRp4bq/cCB0aGVvIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcHNfdGl0bGUiIG1zZ2lkPSI2NDAwMzczMDM0ODcxODE2MTgyIj4iVGhp4bq/dCBs4bqtcCA8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDFfdGl0bGUiIG1zZ2lkPSIzMTQ3OTY3NjMwMjUzNDYyMzE1Ij4iQuG6rXQgPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAxX2luc3RydWN0aW9uIiBtc2dpZD0iMjU3ODYzMTkzNjYyNDYzNzI0MSI+IlZ1aSBsw7JuZyBraeG7g20gdHJhIFwiPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPlwiIHRyb25nIGPDoGkgxJHhurd0IG5nw7RuIG5n4buvIHbDoCBwaMawxqFuZyB0aOG7qWMgbmjhuq1wIGPhu6dhIGLhuqFuLiDEkGnhu4F1IG7DoHkgc+G6vSDhu6d5IHF1eeG7gW4gY2hvIOG7qW5nIGThu6VuZyBjaOG6oXkgdHLDqm4gdGhp4bq/dCBi4buLIGPhu6dhIGLhuqFuLiI8L3N0cmluZz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzZXR1cF9zdGVwMV9maW5pc2hlZF9pbnN0cnVjdGlvbiAoMTA3NjE0ODIwMDQ5NTc5OTQpIC0tPgorICAgIDxza2lwIC8+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMV9hY3Rpb24iIG1zZ2lkPSI0MzY2NTEzNTM0OTk5OTAxNzI4Ij4iQuG6rXQgdHJvbmcgQ8OgaSDEkeG6t3QiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMl90aXRsZSIgbXNnaWQ9IjY4NjA3MjU0NDc5MDY2OTA1OTQiPiJDaHV54buDbiBzYW5nIDx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMl9pbnN0cnVjdGlvbiIgbXNnaWQ9IjkxNDE0ODE5NjQ4NzAwMjMzMzYiPiJUaeG6v3AgdGhlbywgY2jhu41uIFwiPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPlwiIGzDoG0gcGjGsMahbmcgdGjhu6ljIG5o4bqtcCB2xINuIGLhuqNuIGhv4bqhdCDEkeG7mW5nIGPhu6dhIGLhuqFuLiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAyX2FjdGlvbiIgbXNnaWQ9IjE2NjAzMzAzMDcxNTk4MjQzMzciPiJDaHV54buDbiBwaMawxqFuZyB0aOG7qWMgbmjhuq1wIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDNfdGl0bGUiIG1zZ2lkPSIzMTU0NzU3MTgzNjMxNDkwMjgxIj4iWGluIGNow7pjIG3hu6tuZywgYuG6oW4gxJHDoyBjw6BpIMSR4bq3dCB4b25nISI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAzX2luc3RydWN0aW9uIiBtc2dpZD0iODAyNTk4MTgyOTYwNTQyNjAwMCI+IkLDonkgZ2nhu50gYuG6oW4gY8OzIHRo4buDIG5o4bqtcCB2w6BvIHThuqV0IGPhuqMg4bupbmcgZOG7pW5nIHnDqnUgdGjDrWNoIGPhu6dhIG3DrG5oIHbhu5tpIDx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz4uIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDNfYWN0aW9uIiBtc2dpZD0iNjAwODc5Nzk3MjU2OTQyMjU5Ij4ixJDhu4tuaCBj4bqldSBow6xuaCBjw6FjIG5nw7RuIG5n4buvIGtow6FjIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfZmluaXNoX2FjdGlvbiIgbXNnaWQ9IjI3NjU1OTI0MzQwOTQ2NTM4OSI+IsSQw6MgeG9uZyI8L3N0cmluZz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzaG93X3NldHVwX3dpemFyZF9pY29uICg1MDA4MDI4NTkwNTkzNzEwODMwKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNob3dfc2V0dXBfd2l6YXJkX2ljb25fc3VtbWFyeSAoNDExOTk5ODMyMjUzNjg4MDIxMykgLS0+CisgICAgPHNraXAgLz4KICAgICA8c3RyaW5nIG5hbWU9ImFwcF9uYW1lIiBtc2dpZD0iNjMyMDEwMjYzNzQ5MTIzNDc5MiI+Ik5ow6AgY3VuZyBj4bqlcCB04burIMSRaeG7g24iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkaWN0aW9uYXJ5X3Byb3ZpZGVyX25hbWUiIG1zZ2lkPSIzMDI3MzE1MDQ1Mzk3MzYzMDc5Ij4iTmjDoCBjdW5nIGPhuqVwIHThu6sgxJFp4buDbiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRpY3Rpb25hcnlfc2VydmljZV9uYW1lIiBtc2dpZD0iNjIzNzQ3MjM1MDY5MzUxMTQ0OCI+IkThu4tjaCB24bulIHThu6sgxJFp4buDbiI8L3N0cmluZz4KQEAgLTIwMyw0ICsyMjQsNiBAQAogICAgIDxzdHJpbmcgbmFtZT0iZGljdF9hdmFpbGFibGVfbm90aWZpY2F0aW9uX3RpdGxlIiBtc2dpZD0iNjUxNDI4ODU5MTk1OTExNzI4OCI+IkPDsyBz4bq1biB04burIMSRaeG7g24gY2hvIDx4bGlmZjpnIGlkPSJMQU5HVUFHRSI+JTEkczwveGxpZmY6Zz4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkaWN0X2F2YWlsYWJsZV9ub3RpZmljYXRpb25fZGVzY3JpcHRpb24iIG1zZ2lkPSIxMDc1MTk0MTY5NDQzMTYzNDg3Ij4iTmjhuqVuIMSR4buDIHhlbSBs4bqhaSB2w6AgdOG6o2kgeHXhu5FuZyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InRvYXN0X2Rvd25sb2FkaW5nX3N1Z2dlc3Rpb25zIiBtc2dpZD0iMTMxMzAyNzM1MzU4ODU2NjY2MCI+IlThuqNpIHh14buRbmc6IMSR4buBIHh14bqldCDEkeG7kWkgduG7m2kgPHhsaWZmOmcgaWQ9IkxBTkdVQUdFIj4lMSRzPC94bGlmZjpnPiBz4bq9IHPhu5ttIHPhurVuIHPDoG5nLiI8L3N0cmluZz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciB2ZXJzaW9uX3RleHQgKDI3MTUzNTQyMTU1Njg0NjkzODUpIC0tPgorICAgIDxza2lwIC8+CiA8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL2phdmEvcmVzL3ZhbHVlcy16aC1yQ04vc3RyaW5ncy54bWwgYi9qYXZhL3Jlcy92YWx1ZXMtemgtckNOL3N0cmluZ3MueG1sCmluZGV4IGQwNjU1N2UuLjVlOTlhMDcgMTAwNjQ0Ci0tLSBhL2phdmEvcmVzL3ZhbHVlcy16aC1yQ04vc3RyaW5ncy54bWwKKysrIGIvamF2YS9yZXMvdmFsdWVzLXpoLXJDTi9zdHJpbmdzLnhtbApAQCAtNTMsNiArNTMsOCBAQAogICAgIDxzdHJpbmcgbmFtZT0idXNlX2RvdWJsZV9zcGFjZV9wZXJpb2Rfc3VtbWFyeSIgbXNnaWQ9IjY1MzI4OTIxODcyNDc5NTI3OTkiPiLlj4zlh7vnqbrmoLzplK7lj6/mj5LlhaXlj6Xlj7flubblkI7ot5/nqbrmoLwiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJhdXRvX2NhcCIgbXNnaWQ9IjE3MTk3NDY2NzQ4NTQ2MjgyNTIiPiLoh6rliqjlpKflhpkiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJhdXRvX2NhcF9zdW1tYXJ5IiBtc2dpZD0iNzkzNDQ1Mjc2MTAyMjk0Njg3NCI+IuWPpemmluWtl+ivjeWkp+WGmSI8L3N0cmluZz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBlZGl0X3BlcnNvbmFsX2RpY3Rpb25hcnkgKDM5OTY5MTAwMzg5NTI5NDA0MjApIC0tPgorICAgIDxza2lwIC8+CiAgICAgPHN0cmluZyBuYW1lPSJjb25maWd1cmVfZGljdGlvbmFyaWVzX3RpdGxlIiBtc2dpZD0iNDIzODY1MjMzODU1NjkwMjA0OSI+IumZhOWKoOivjeWFuCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im1haW5fZGljdGlvbmFyeSIgbXNnaWQ9IjQ3OTg3NjM3ODE4MTgzNjExNjgiPiLkuLvor43lhbgiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwcmVmc19zaG93X3N1Z2dlc3Rpb25zIiBtc2dpZD0iODAyNjc5OTY2MzQ0NTUzMTYzNyI+IuaYvuekuuabtOato+W7uuiuriI8L3N0cmluZz4KQEAgLTE3MSw4ICsxNzMsMjcgQEAKICAgICA8c3RyaW5nIG5hbWU9InJlYWRfZXh0ZXJuYWxfZGljdGlvbmFyeV9jb25maXJtX2luc3RhbGxfbWVzc2FnZSIgbXNnaWQ9IjY4OTg2MTAxNjM3Njg5ODA4NzAiPiLnoa7lrpropoHkuLo8eGxpZmY6ZyBpZD0iTE9DQUxFX05BTUUiPiVzPC94bGlmZjpnPuWuieijheatpOaWh+S7tuWQl++8nyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImVycm9yIiBtc2dpZD0iODk0MDc2MzYyNDY2ODUxMzY0OCI+IuWHuueOsOmUmeivryI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJ1dHRvbl9kZWZhdWx0IiBtc2dpZD0iMzk4ODAxNzg0MDQzMTg4MTQ5MSI+Ium7mOiupCI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Imxhbmd1YWdlX3NldHRpbmdzIiBtc2dpZD0iMTY3MTE1MzA1MzIwMTgwOTAzMSI+IuivreiogOWSjOi+k+WFpeazlSI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InNlbGVjdF9pbnB1dF9tZXRob2QiIG1zZ2lkPSI0MzAxNjAyMzc0NjA5Mjc1MDAzIj4i6YCJ5oup6L6T5YWl5rOVIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfd2VsY29tZV90aXRsZSIgbXNnaWQ9IjYxMTI4MjE3MDk4MzIwMzE3MTUiPiLmrKLov47kvb/nlKggPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3dlbGNvbWVfYWRkaXRpb25hbF9kZXNjcmlwdGlvbiIgbXNnaWQ9IjgxNTAyNTIwMDg1NDU3Njg5NTMiPiLkvZPpqozpobrnlYXnmoTmu5HooYzovpPlhaXkvZPpqowiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGFydF9hY3Rpb24iIG1zZ2lkPSI4OTM2MDM2NDYwODk3MzQ3NzA4Ij4i5byA5aeLIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfbmV4dF9hY3Rpb24iIG1zZ2lkPSIzNzE4MjE0Mzc5MTUxNDQ2MDMiPiLkuIvkuIDmraUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwc190aXRsZSIgbXNnaWQ9IjY0MDAzNzMwMzQ4NzE4MTYxODIiPiLorr7nva4gPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAxX3RpdGxlIiBtc2dpZD0iMzE0Nzk2NzYzMDI1MzQ2MjMxNSI+IuWQr+eUqCA8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDFfaW5zdHJ1Y3Rpb24iIG1zZ2lkPSIyNTc4NjMxOTM2NjI0NjM3MjQxIj4i6K+35Zyo4oCc6K+t6KiA5ZKM6L6T5YWl5rOV4oCd6K6+572u5Lit6YCJ5Lit4oCcPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPuKAne+8jOaOiOadg+i/memhueW6lOeUqOWcqOaCqOeahOiuvuWkh+S4iui/kOihjOOAgiI8L3N0cmluZz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzZXR1cF9zdGVwMV9maW5pc2hlZF9pbnN0cnVjdGlvbiAoMTA3NjE0ODIwMDQ5NTc5OTQpIC0tPgorICAgIDxza2lwIC8+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMV9hY3Rpb24iIG1zZ2lkPSI0MzY2NTEzNTM0OTk5OTAxNzI4Ij4i5Zyo6K6+572u5Lit5ZCv55SoIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDJfdGl0bGUiIG1zZ2lkPSI2ODYwNzI1NDQ3OTA2NjkwNTk0Ij4i5YiH5o2i5YiwIDx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMl9pbnN0cnVjdGlvbiIgbXNnaWQ9IjkxNDE0ODE5NjQ4NzAwMjMzMzYiPiLmjqXkuIvmnaXvvIzor7fpgInmi6nigJw8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+4oCd5L2c5Li65oKo6KaB5L2/55So55qE5paH5a2X6L6T5YWl5rOV44CCIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDJfYWN0aW9uIiBtc2dpZD0iMTY2MDMzMDMwNzE1OTgyNDMzNyI+IuWIh+aNoui+k+WFpeazlSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAzX3RpdGxlIiBtc2dpZD0iMzE1NDc1NzE4MzYzMTQ5MDI4MSI+IuaBreWWnO+8jOaCqOW3suWujOaIkOS6huiuvue9ru+8gSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAzX2luc3RydWN0aW9uIiBtc2dpZD0iODAyNTk4MTgyOTYwNTQyNjAwMCI+IueOsOWcqO+8jOaCqOWPr+S7peWcqOiHquW3seWWnOasoueahOaJgOacieW6lOeUqOS4reS9v+eUqCA8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+5p2l6L6T5YWl5YaF5a655LqG44CCIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDNfYWN0aW9uIiBtc2dpZD0iNjAwODc5Nzk3MjU2OTQyMjU5Ij4i6YWN572u5YW25LuW6K+t6KiAIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfZmluaXNoX2FjdGlvbiIgbXNnaWQ9IjI3NjU1OTI0MzQwOTQ2NTM4OSI+IuWujOaIkCI8L3N0cmluZz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzaG93X3NldHVwX3dpemFyZF9pY29uICg1MDA4MDI4NTkwNTkzNzEwODMwKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNob3dfc2V0dXBfd2l6YXJkX2ljb25fc3VtbWFyeSAoNDExOTk5ODMyMjUzNjg4MDIxMykgLS0+CisgICAgPHNraXAgLz4KICAgICA8c3RyaW5nIG5hbWU9ImFwcF9uYW1lIiBtc2dpZD0iNjMyMDEwMjYzNzQ5MTIzNDc5MiI+IuivjeWFuOaPkOS+m+eoi+W6jyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRpY3Rpb25hcnlfcHJvdmlkZXJfbmFtZSIgbXNnaWQ9IjMwMjczMTUwNDUzOTczNjMwNzkiPiLor43lhbjmj5DkvpvnqIvluo8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkaWN0aW9uYXJ5X3NlcnZpY2VfbmFtZSIgbXNnaWQ9IjYyMzc0NzIzNTA2OTM1MTE0NDgiPiLor43lhbjmnI3liqEiPC9zdHJpbmc+CkBAIC0yMDMsNCArMjI0LDYgQEAKICAgICA8c3RyaW5nIG5hbWU9ImRpY3RfYXZhaWxhYmxlX25vdGlmaWNhdGlvbl90aXRsZSIgbXNnaWQ9IjY1MTQyODg1OTE5NTkxMTcyODgiPiI8eGxpZmY6ZyBpZD0iTEFOR1VBR0UiPiUxJHM8L3hsaWZmOmc+6K+N5YW45Y+v5L6b5LiL6L29Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGljdF9hdmFpbGFibGVfbm90aWZpY2F0aW9uX2Rlc2NyaXB0aW9uIiBtc2dpZD0iMTA3NTE5NDE2OTQ0MzE2MzQ4NyI+IuaMieatpOmAmuefpeWNs+WPr+afpeeci+WSjOS4i+i9vSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InRvYXN0X2Rvd25sb2FkaW5nX3N1Z2dlc3Rpb25zIiBtc2dpZD0iMTMxMzAyNzM1MzU4ODU2NjY2MCI+IuS4i+i9veS4re+8muW+iOW/q+WwseiDveWQr+eUqDx4bGlmZjpnIGlkPSJMQU5HVUFHRSI+JTEkczwveGxpZmY6Zz7nmoTor43lhbjlu7rorq7mnI3liqHkuobvvIEiPC9zdHJpbmc+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgdmVyc2lvbl90ZXh0ICgyNzE1MzU0MjE1NTY4NDY5Mzg1KSAtLT4KKyAgICA8c2tpcCAvPgogPC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9qYXZhL3Jlcy92YWx1ZXMtemgtclRXL3N0cmluZ3MueG1sIGIvamF2YS9yZXMvdmFsdWVzLXpoLXJUVy9zdHJpbmdzLnhtbAppbmRleCAyNmEyNmM3Li5iZTM0NmI5IDEwMDY0NAotLS0gYS9qYXZhL3Jlcy92YWx1ZXMtemgtclRXL3N0cmluZ3MueG1sCisrKyBiL2phdmEvcmVzL3ZhbHVlcy16aC1yVFcvc3RyaW5ncy54bWwKQEAgLTUzLDYgKzUzLDggQEAKICAgICA8c3RyaW5nIG5hbWU9InVzZV9kb3VibGVfc3BhY2VfcGVyaW9kX3N1bW1hcnkiIG1zZ2lkPSI2NTMyODkyMTg3MjQ3OTUyNzk5Ij4i6LyV5oyJ5YWp5LiL56m65qC86Y215Y+v5o+S5YWl5Y+l6Jmf5Y+m5Yqg5LiA5YCL56m65qC8Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYXV0b19jYXAiIG1zZ2lkPSIxNzE5NzQ2Njc0ODU0NjI4MjUyIj4i6Ieq5YuV5aSn5a+rIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYXV0b19jYXBfc3VtbWFyeSIgbXNnaWQ9Ijc5MzQ0NTI3NjEwMjI5NDY4NzQiPiLlj6XpppblrZfoqZ7lpKflr6siPC9zdHJpbmc+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgZWRpdF9wZXJzb25hbF9kaWN0aW9uYXJ5ICgzOTk2OTEwMDM4OTUyOTQwNDIwKSAtLT4KKyAgICA8c2tpcCAvPgogICAgIDxzdHJpbmcgbmFtZT0iY29uZmlndXJlX2RpY3Rpb25hcmllc190aXRsZSIgbXNnaWQ9IjQyMzg2NTIzMzg1NTY5MDIwNDkiPiLlpJbmjpvlrZflhbgiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJtYWluX2RpY3Rpb25hcnkiIG1zZ2lkPSI0Nzk4NzYzNzgxODE4MzYxMTY4Ij4i5Li76KaB5a2X5YW4Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icHJlZnNfc2hvd19zdWdnZXN0aW9ucyIgbXNnaWQ9IjgwMjY3OTk2NjM0NDU1MzE2MzciPiLpoa/npLrkv67mraPlu7rorbAiPC9zdHJpbmc+CkBAIC0xNzEsOCArMTczLDI3IEBACiAgICAgPHN0cmluZyBuYW1lPSJyZWFkX2V4dGVybmFsX2RpY3Rpb25hcnlfY29uZmlybV9pbnN0YWxsX21lc3NhZ2UiIG1zZ2lkPSI2ODk4NjEwMTYzNzY4OTgwODcwIj4i5rqW5YKZ54K6PHhsaWZmOmcgaWQ9IkxPQ0FMRV9OQU1FIj4lczwveGxpZmY6Zz7niYjmnKzlronoo53pgJnlgIvmqpTmoYjll47vvJ8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJlcnJvciIgbXNnaWQ9Ijg5NDA3NjM2MjQ2Njg1MTM2NDgiPiLnmbznlJ/pjK/oqqQiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJidXR0b25fZGVmYXVsdCIgbXNnaWQ9IjM5ODgwMTc4NDA0MzE4ODE0OTEiPiLpoJDoqK0iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJsYW5ndWFnZV9zZXR0aW5ncyIgbXNnaWQ9IjE2NzExNTMwNTMyMDE4MDkwMzEiPiLoqp7oqIDoiIfovLjlhaXoqK3lrpoiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJzZWxlY3RfaW5wdXRfbWV0aG9kIiBtc2dpZD0iNDMwMTYwMjM3NDYwOTI3NTAwMyI+IumBuOaTh+i8uOWFpeazlSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3dlbGNvbWVfdGl0bGUiIG1zZ2lkPSI2MTEyODIxNzA5ODMyMDMxNzE1Ij4i5q2h6L+O5L2/55So44CMPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPuOAjSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3dlbGNvbWVfYWRkaXRpb25hbF9kZXNjcmlwdGlvbiIgbXNnaWQ9IjgxNTAyNTIwMDg1NDU3Njg5NTMiPiLlkKvmiYvli6LovLjlhaXlip/og70iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGFydF9hY3Rpb24iIG1zZ2lkPSI4OTM2MDM2NDYwODk3MzQ3NzA4Ij4i6ZaL5aeL6Kit5a6aIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfbmV4dF9hY3Rpb24iIG1zZ2lkPSIzNzE4MjE0Mzc5MTUxNDQ2MDMiPiLkuIvkuIDmraUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwc190aXRsZSIgbXNnaWQ9IjY0MDAzNzMwMzQ4NzE4MTYxODIiPiLmraPlnKjoqK3lrprjgIw8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+44CNIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDFfdGl0bGUiIG1zZ2lkPSIzMTQ3OTY3NjMwMjUzNDYyMzE1Ij4i5ZWf55So44CMPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPuOAjSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAxX2luc3RydWN0aW9uIiBtc2dpZD0iMjU3ODYzMTkzNjYyNDYzNzI0MSI+Iuiri+WcqOiqnuiogOiIh+i8uOWFpeioreWumuS4reWLvumBuOOAjDx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz7jgI3vvIzmjojmrIrpgJnpoIXmh4nnlKjnqIvlvI/lnKjmgqjnmoToo53nva7kuIrln7fooYzjgIIiPC9zdHJpbmc+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc2V0dXBfc3RlcDFfZmluaXNoZWRfaW5zdHJ1Y3Rpb24gKDEwNzYxNDgyMDA0OTU3OTk0KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDFfYWN0aW9uIiBtc2dpZD0iNDM2NjUxMzUzNDk5OTkwMTcyOCI+IuWcqOioreWumuS4reWVn+eUqCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAyX3RpdGxlIiBtc2dpZD0iNjg2MDcyNTQ0NzkwNjY5MDU5NCI+IuWIh+aPm+iHs+OAjDx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz7jgI0iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMl9pbnN0cnVjdGlvbiIgbXNnaWQ9IjkxNDE0ODE5NjQ4NzAwMjMzMzYiPiLmjqXokZfvvIzoq4vpgbjlj5bjgIw8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+44CN5YGa54K655uu5YmN5L2/55So55qE5paH5a2X6Ly45YWl5rOV44CCIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDJfYWN0aW9uIiBtc2dpZD0iMTY2MDMzMDMwNzE1OTgyNDMzNyI+IuWIh+aPm+i8uOWFpeazlSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAzX3RpdGxlIiBtc2dpZD0iMzE1NDc1NzE4MzYzMTQ5MDI4MSI+IuaBreWWnO+8jOaCqOW3suWujOaIkOioreWumu+8gSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAzX2luc3RydWN0aW9uIiBtc2dpZD0iODAyNTk4MTgyOTYwNTQyNjAwMCI+IuePvuWcqO+8jOaCqOWPr+S7peWcqOiHquW3seWWnOaEm+eahOaJgOacieaHieeUqOeoi+W8j+S4reS9v+eUqOOAjDx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz7jgI3ovLjlhaXmloflrZfjgIIiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwM19hY3Rpb24iIG1zZ2lkPSI2MDA4Nzk3OTcyNTY5NDIyNTkiPiLoqK3lrprlhbbku5boqp7oqIAiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9maW5pc2hfYWN0aW9uIiBtc2dpZD0iMjc2NTU5MjQzNDA5NDY1Mzg5Ij4i5a6M5oiQIjwvc3RyaW5nPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNob3dfc2V0dXBfd2l6YXJkX2ljb24gKDUwMDgwMjg1OTA1OTM3MTA4MzApIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc2hvd19zZXR1cF93aXphcmRfaWNvbl9zdW1tYXJ5ICg0MTE5OTk4MzIyNTM2ODgwMjEzKSAtLT4KKyAgICA8c2tpcCAvPgogICAgIDxzdHJpbmcgbmFtZT0iYXBwX25hbWUiIG1zZ2lkPSI2MzIwMTAyNjM3NDkxMjM0NzkyIj4i5a2X5YW45o+Q5L6b6ICFIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGljdGlvbmFyeV9wcm92aWRlcl9uYW1lIiBtc2dpZD0iMzAyNzMxNTA0NTM5NzM2MzA3OSI+IuWtl+WFuOaPkOS+m+iAhSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRpY3Rpb25hcnlfc2VydmljZV9uYW1lIiBtc2dpZD0iNjIzNzQ3MjM1MDY5MzUxMTQ0OCI+IuWtl+WFuOacjeWLmSI8L3N0cmluZz4KQEAgLTIwMyw0ICsyMjQsNiBAQAogICAgIDxzdHJpbmcgbmFtZT0iZGljdF9hdmFpbGFibGVfbm90aWZpY2F0aW9uX3RpdGxlIiBtc2dpZD0iNjUxNDI4ODU5MTk1OTExNzI4OCI+IuaUr+aPtDx4bGlmZjpnIGlkPSJMQU5HVUFHRSI+JTEkczwveGxpZmY6Zz7lrZflhbgiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkaWN0X2F2YWlsYWJsZV9ub3RpZmljYXRpb25fZGVzY3JpcHRpb24iIG1zZ2lkPSIxMDc1MTk0MTY5NDQzMTYzNDg3Ij4i5oyJ5LiL5Y2z5Y+v5p+l55yL5Lim5LiL6LyJIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idG9hc3RfZG93bmxvYWRpbmdfc3VnZ2VzdGlvbnMiIG1zZ2lkPSIxMzEzMDI3MzUzNTg4NTY2NjYwIj4i5LiL6LyJ5Lit77ya5Y2z5bCH5ZWf55SoPHhsaWZmOmcgaWQ9IkxBTkdVQUdFIj4lMSRzPC94bGlmZjpnPuWtl+ipnuW7uuitsOacjeWLmeOAgiI8L3N0cmluZz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciB2ZXJzaW9uX3RleHQgKDI3MTUzNTQyMTU1Njg0NjkzODUpIC0tPgorICAgIDxza2lwIC8+CiA8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL2phdmEvcmVzL3ZhbHVlcy16dS9zdHJpbmdzLnhtbCBiL2phdmEvcmVzL3ZhbHVlcy16dS9zdHJpbmdzLnhtbAppbmRleCAxNDY2MjdmLi44MTY5NmYzIDEwMDY0NAotLS0gYS9qYXZhL3Jlcy92YWx1ZXMtenUvc3RyaW5ncy54bWwKKysrIGIvamF2YS9yZXMvdmFsdWVzLXp1L3N0cmluZ3MueG1sCkBAIC01Myw2ICs1Myw4IEBACiAgICAgPHN0cmluZyBuYW1lPSJ1c2VfZG91YmxlX3NwYWNlX3BlcmlvZF9zdW1tYXJ5IiBtc2dpZD0iNjUzMjg5MjE4NzI0Nzk1Mjc5OSI+IlVrdXRoZXBoYSBrYWJpbGkga3ViaGEgeWVzaWtoYWxhIGt1ZmFrYSBpc2lraGF0aGkgZXNpbGFuZGVsd2EgeWlzaWtoYWxhIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYXV0b19jYXAiIG1zZ2lkPSIxNzE5NzQ2Njc0ODU0NjI4MjUyIj4iVWt3ZW56YSBvZmVsZWJhIG9rdXplbnpha2FsZWxheW8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJhdXRvX2NhcF9zdW1tYXJ5IiBtc2dpZD0iNzkzNDQ1Mjc2MTAyMjk0Njg3NCI+IlllbnphIHVmZWxlYmEgd2VnYW1hIGxva3VxYWxhIGxvbXVzaG8gbmdhbXVueWUiPC9zdHJpbmc+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgZWRpdF9wZXJzb25hbF9kaWN0aW9uYXJ5ICgzOTk2OTEwMDM4OTUyOTQwNDIwKSAtLT4KKyAgICA8c2tpcCAvPgogICAgIDxzdHJpbmcgbmFtZT0iY29uZmlndXJlX2RpY3Rpb25hcmllc190aXRsZSIgbXNnaWQ9IjQyMzg2NTIzMzg1NTY5MDIwNDkiPiJGYWthIGl6aWNoYXphbWF6d2kiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJtYWluX2RpY3Rpb25hcnkiIG1zZ2lkPSI0Nzk4NzYzNzgxODE4MzYxMTY4Ij4iSXNpY2hhemFtYXp3aSBzYWtobyBuZ3FhbmdpIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icHJlZnNfc2hvd19zdWdnZXN0aW9ucyIgbXNnaWQ9IjgwMjY3OTk2NjM0NDU1MzE2MzciPiJCb25pc2EgdWt1c2lrZXNlbGEga29rdWx1bmdpc2EiPC9zdHJpbmc+CkBAIC0xNzEsOCArMTczLDI3IEBACiAgICAgPHN0cmluZyBuYW1lPSJyZWFkX2V4dGVybmFsX2RpY3Rpb25hcnlfY29uZmlybV9pbnN0YWxsX21lc3NhZ2UiIG1zZ2lkPSI2ODk4NjEwMTYzNzY4OTgwODcwIj4iVWZ1bmEgdWt1ZmFrZWxhIGktPHhsaWZmOmcgaWQ9IkxPQ0FMRV9OQU1FIj4lczwveGxpZmY6Zz4gbGVsaSBmYXllbGEgbmdva3dlcWluaXNvPyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImVycm9yIiBtc2dpZD0iODk0MDc2MzYyNDY2ODUxMzY0OCI+Ikt1YmUgbmVwaHV0aGEiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJidXR0b25fZGVmYXVsdCIgbXNnaWQ9IjM5ODgwMTc4NDA0MzE4ODE0OTEiPiJPa3V6ZW56YWthbGVsYXlvIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibGFuZ3VhZ2Vfc2V0dGluZ3MiIG1zZ2lkPSIxNjcxMTUzMDUzMjAxODA5MDMxIj4iVWxpbWkgbm9rb2t1ZmFrd2F5byI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InNlbGVjdF9pbnB1dF9tZXRob2QiIG1zZ2lkPSI0MzAxNjAyMzc0NjA5Mjc1MDAzIj4iS2hldGhhIGluZGxlbGEgeW9rdWZha2EiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF93ZWxjb21lX3RpdGxlIiBtc2dpZD0iNjExMjgyMTcwOTgzMjAzMTcxNSI+IlNpeWFrd2FtdWtlbGEga3UtPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3dlbGNvbWVfYWRkaXRpb25hbF9kZXNjcmlwdGlvbiIgbXNnaWQ9IjgxNTAyNTIwMDg1NDU3Njg5NTMiPiJub2t1dGhheWlwaGEgbmdva3V0aGludGEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGFydF9hY3Rpb24iIG1zZ2lkPSI4OTM2MDM2NDYwODk3MzQ3NzA4Ij4iUWFsaXNhIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfbmV4dF9hY3Rpb24iIG1zZ2lkPSIzNzE4MjE0Mzc5MTUxNDQ2MDMiPiJJc2lueWF0aGVsbyBlc2lsYW5kZWxheW8iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwc190aXRsZSIgbXNnaWQ9IjY0MDAzNzMwMzQ4NzE4MTYxODIiPiJLdXNldGh3YSBpLTx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMV90aXRsZSIgbXNnaWQ9IjMxNDc5Njc2MzAyNTM0NjIzMTUiPiJOaWthIGFtYW5kbGEgaS08eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDFfaW5zdHJ1Y3Rpb24iIG1zZ2lkPSIyNTc4NjMxOTM2NjI0NjM3MjQxIj4iU2ljZWxhIHVobG9sZSBpLVwiPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPlwiIG5nb2xpbWkgbHdha2hvIG5lemlsdW5naXNlbGVsbyB6b2tva3VmYWthLiBMb2todSBrdXpveWlndW55YXphIHVrdXRoaSBpc2ViZW56ZSBrdWRpdmF5aXNpIHlha2hvLiI8L3N0cmluZz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzZXR1cF9zdGVwMV9maW5pc2hlZF9pbnN0cnVjdGlvbiAoMTA3NjE0ODIwMDQ5NTc5OTQpIC0tPgorICAgIDxza2lwIC8+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMV9hY3Rpb24iIG1zZ2lkPSI0MzY2NTEzNTM0OTk5OTAxNzI4Ij4iTmlrYSBhbWFuZGxhIGt1emlsdW5naXNlbGVsbyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAyX3RpdGxlIiBtc2dpZD0iNjg2MDcyNTQ0NzkwNjY5MDU5NCI+IlNoaW50c2hlbGEga3UtPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPi4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMl9pbnN0cnVjdGlvbiIgbXNnaWQ9IjkxNDE0ODE5NjQ4NzAwMjMzMzYiPiJPa3VsYW5kZWxheW8sIGtoZXRoYSBpLVwiPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPlwiIG5qZW5nZW5kbGVsYSB5YWtobyB5b2t1ZmFrYSB1bWJoYWxvIG9zZWJlbnpheW8uIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDJfYWN0aW9uIiBtc2dpZD0iMTY2MDMzMDMwNzE1OTgyNDMzNyI+IlNoaW50c2hhIGl6aW5kbGVsYSB6b2t1ZmFrYSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAzX3RpdGxlIiBtc2dpZD0iMzE1NDc1NzE4MzYzMTQ5MDI4MSI+IlNpeWFrdWhhbGFsaXNlbGEsIHVzdW1pIG5nb211bW8hIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDNfaW5zdHJ1Y3Rpb24iIG1zZ2lkPSI4MDI1OTgxODI5NjA1NDI2MDAwIj4iTWFuamUgdXN1bmdhdGhheWlwaGEgbmdva3VmYWthIHpvbmtlIGl6aW5obGVsbyB6b2t1c2ViZW56YSBleml5aXppbnRhbmRva2F6aSB6YWtobyBuZ2UtPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPi4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwM19hY3Rpb24iIG1zZ2lkPSI2MDA4Nzk3OTcyNTY5NDIyNTkiPiJMdW5naXNlbGVsYSBpemlsaW1pIGV6aW5nZXppd2UiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9maW5pc2hfYWN0aW9uIiBtc2dpZD0iMjc2NTU5MjQzNDA5NDY1Mzg5Ij4iSXFlZGlsZSI8L3N0cmluZz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzaG93X3NldHVwX3dpemFyZF9pY29uICg1MDA4MDI4NTkwNTkzNzEwODMwKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNob3dfc2V0dXBfd2l6YXJkX2ljb25fc3VtbWFyeSAoNDExOTk5ODMyMjUzNjg4MDIxMykgLS0+CisgICAgPHNraXAgLz4KICAgICA8c3RyaW5nIG5hbWU9ImFwcF9uYW1lIiBtc2dpZD0iNjMyMDEwMjYzNzQ5MTIzNDc5MiI+IlVtaGxpbnpla2kgd2VzaWNoYXphbWF6d2kiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkaWN0aW9uYXJ5X3Byb3ZpZGVyX25hbWUiIG1zZ2lkPSIzMDI3MzE1MDQ1Mzk3MzYzMDc5Ij4iVW1obGluemVraSB3ZXNpY2hhemFtYXp3aSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRpY3Rpb25hcnlfc2VydmljZV9uYW1lIiBtc2dpZD0iNjIzNzQ3MjM1MDY5MzUxMTQ0OCI+IklzZXZpc2kgeWVzaWNoYXphbWF6d2kiPC9zdHJpbmc+CkBAIC0yMDMsNCArMjI0LDYgQEAKICAgICA8c3RyaW5nIG5hbWU9ImRpY3RfYXZhaWxhYmxlX25vdGlmaWNhdGlvbl90aXRsZSIgbXNnaWQ9IjY1MTQyODg1OTE5NTkxMTcyODgiPiJJc2ljaGF6YW1hendpIHNlLTx4bGlmZjpnIGlkPSJMQU5HVUFHRSI+JTEkczwveGxpZmY6Zz4gc2l5YXRob2xha2FsYSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRpY3RfYXZhaWxhYmxlX25vdGlmaWNhdGlvbl9kZXNjcmlwdGlvbiIgbXNnaWQ9IjEwNzUxOTQxNjk0NDMxNjM0ODciPiJDaW5kZXplbGEgdWt1emUgdWJ1eWVrZXplIHVwaGluZGUgdWxhbmRlIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idG9hc3RfZG93bmxvYWRpbmdfc3VnZ2VzdGlvbnMiIG1zZ2lkPSIxMzEzMDI3MzUzNTg4NTY2NjYwIj4iVWt1bGFuZGE6IGl6aXBoYWthbWlzbyB6ZS08eGxpZmY6ZyBpZD0iTEFOR1VBR0UiPiUxJHM8L3hsaWZmOmc+IHppem9sdW5nYSBtYWR1emUuIjwvc3RyaW5nPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHZlcnNpb25fdGV4dCAoMjcxNTM1NDIxNTU2ODQ2OTM4NSkgLS0+CisgICAgPHNraXAgLz4KIDwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvamF2YS9yZXMvdmFsdWVzL2NvbmZpZy54bWwgYi9qYXZhL3Jlcy92YWx1ZXMvY29uZmlnLnhtbAppbmRleCA0ZTI5MzZjLi4zM2U2YTg2IDEwMDY0NAotLS0gYS9qYXZhL3Jlcy92YWx1ZXMvY29uZmlnLnhtbAorKysgYi9qYXZhL3Jlcy92YWx1ZXMvY29uZmlnLnhtbApAQCAtNzUsNiArNzUsNyBAQAogICAgIDwhLS0gU2hvd2luZyBtb3JlIGtleXMga2V5Ym9hcmQsIGp1c3QgYWJvdmUgdGhlIHRvdWNoZWQgcG9pbnQgaWYgdHJ1ZSwgYWxpZ25lZCB0byB0aGUga2V5IGlmCiAgICAgICAgICBmYWxzZSAtLT4KICAgICA8Ym9vbCBuYW1lPSJjb25maWdfc2hvd19tb3JlX2tleXNfa2V5Ym9hcmRfYXRfdG91Y2hlZF9wb2ludCI+ZmFsc2U8L2Jvb2w+CisgICAgPGJvb2wgbmFtZT0iY29uZmlnX2Jsb2NrX3BvdGVudGlhbGx5X29mZmVuc2l2ZSI+dHJ1ZTwvYm9vbD4KICAgICA8aW50ZWdlciBuYW1lPSJjb25maWdfZ2VzdHVyZV9mbG9hdGluZ19wcmV2aWV3X3RleHRfbGluZ2VyX3RpbWVvdXQiPjIwMDwvaW50ZWdlcj4KICAgICA8aW50ZWdlciBuYW1lPSJjb25maWdfZ2VzdHVyZV9wcmV2aWV3X3RyYWlsX2ZhZGVvdXRfc3RhcnRfZGVsYXkiPjEwMDwvaW50ZWdlcj4KICAgICA8aW50ZWdlciBuYW1lPSJjb25maWdfZ2VzdHVyZV9wcmV2aWV3X3RyYWlsX2ZhZGVvdXRfZHVyYXRpb24iPjgwMDwvaW50ZWdlcj4KQEAgLTExMSwxNSArMTEyLDEzIEBACiAgICAgICAgIDwhLS0gQWdncmVzc2l2ZSAtLT4KICAgICAgICAgPGl0ZW0+MC4wNjc8L2l0ZW0+CiAgICAgICAgIDwhLS0gVmVyeSBBZ2dyZXNzaXZlIDogU3VnZ2VzdGlvbiB3aG9zZSBub3JtYWxpemVkIHNjb3JlIGlzIGdyZWF0ZXIgdGhhbiB0aGlzIHZhbHVlCi0gICAgICAgICAgICAgd2lsbCBiZSBzdWJqZWN0IHRvIGF1dG8tY29ycmVjdGlvbi4gLS0+Ci0gICAgICAgIDxpdGVtPjA8L2l0ZW0+CisgICAgICAgICAgICAgd2lsbCBiZSBzdWJqZWN0IHRvIGF1dG8tY29ycmVjdGlvbi4gImZsb2F0TmVnYXRpdmVJbmZpbml0eSIgaXMgYSBzcGVjaWFsIG1hcmtlcgorICAgICAgICAgICAgIHN0cmluZyBmb3IgRmxvYXQuTkVHQVRJVkVfSU5GSU5JVFkgLS0+CisgICAgICAgIDxpdGVtPmZsb2F0TmVnYXRpdmVJbmZpbml0eTwvaXRlbT4KICAgICA8L3N0cmluZy1hcnJheT4KICAgICA8IS0tIFRocmVzaG9sZCBvZiB0aGUgbm9ybWFsaXplZCBzY29yZSBvZiB0aGUgYmVzdCBzdWdnZXN0aW9uIGZvciB0aGUgc3BlbGwgY2hlY2tlciB0byBkZWNsYXJlCiAgICAgICAgICBhIHdvcmQgdG8gYmUgInJlY29tbWVuZGVkIiAtLT4KICAgICA8c3RyaW5nIG5hbWU9InNwZWxsY2hlY2tlcl9yZWNvbW1lbmRlZF90aHJlc2hvbGRfdmFsdWUiIHRyYW5zbGF0YWJsZT0iZmFsc2UiPjAuMTE8L3N0cmluZz4KLSAgICA8IS0tIFRocmVzaG9sZCBvZiB0aGUgbm9ybWFsaXplZCBzY29yZSBvZiBhbnkgZGljdGlvbmFyeSBsb29rdXAgdG8gYmUgb2ZmZXJlZCBhcyBhIHN1Z2dlc3Rpb24KLSAgICAgICAgIGJ5IHRoZSBzcGVsbCBjaGVja2VyIC0tPgotICAgIDxzdHJpbmcgbmFtZT0ic3BlbGxjaGVja2VyX3N1Z2dlc3Rpb25fdGhyZXNob2xkX3ZhbHVlIiB0cmFuc2xhdGFibGU9ImZhbHNlIj4wLjAzPC9zdHJpbmc+CiAgICAgPCEtLSAgU2NyZWVuIG1ldHJpY3MgZm9yIGxvZ2dpbmcuCiAgICAgICAgICAgICAwID0gIm1kcGkgcGhvbmUgc2NyZWVuIgogICAgICAgICAgICAgMSA9ICJoZHBpIHBob25lIHNjcmVlbiIKZGlmZiAtLWdpdCBhL2phdmEvcmVzL3ZhbHVlcy9kaW1lbnMueG1sIGIvamF2YS9yZXMvdmFsdWVzL2RpbWVucy54bWwKaW5kZXggZTliMzRhYS4uZGE3MzVjZiAxMDA2NDQKLS0tIGEvamF2YS9yZXMvdmFsdWVzL2RpbWVucy54bWwKKysrIGIvamF2YS9yZXMvdmFsdWVzL2RpbWVucy54bWwKQEAgLTExNyw0ICsxMTcsNiBAQAogCiAgICAgPCEtLSBJbnNldCB1c2VkIGluIEFjY2Vzc2liaWxpdHkgbW9kZSB0byBhdm9pZCBhY2NpZGVudGFsIGtleSBwcmVzc2VzIHdoZW4gYSBmaW5nZXIgc2xpZGVzIG9mZiB0aGUgc2NyZWVuLiAtLT4KICAgICA8ZGltZW4gbmFtZT0iYWNjZXNzaWJpbGl0eV9lZGdlX3Nsb3AiPjhkcDwvZGltZW4+CisKKyAgICA8aW50ZWdlciBuYW1lPSJ1c2VyX2RpY3Rpb25hcnlfbWF4X3dvcmRfbGVuZ3RoIiB0cmFuc2xhdGFibGU9ImZhbHNlIj40ODwvaW50ZWdlcj4KIDwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvamF2YS9yZXMvdmFsdWVzL3NldHVwLXN0eWxlcy1jb21tb24ueG1sIGIvamF2YS9yZXMvdmFsdWVzL3NldHVwLXN0eWxlcy1jb21tb24ueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY4NmRlY2YKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL3Jlcy92YWx1ZXMvc2V0dXAtc3R5bGVzLWNvbW1vbi54bWwKQEAgLTAsMCArMSw3MyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzwhLS0gQ29weXJpZ2h0IChDKSAyMDEzIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKworICAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAgICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKworICAgICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorCisgICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAgICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAgICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAgICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCistLT4KKworPHJlc291cmNlcyB4bWxuczphbmRyb2lkPSJodHRwOi8vc2NoZW1hcy5hbmRyb2lkLmNvbS9hcGsvcmVzL2FuZHJvaWQiPgorICAgIDxzdHlsZSBuYW1lPSJzZXR1cFRpdGxlU3R5bGVDb21tb24iPgorICAgICAgICA8aXRlbSBuYW1lPSJhbmRyb2lkOnRleHRDb2xvciI+QGNvbG9yL3NldHVwX3RleHRfZGFyazwvaXRlbT4KKyAgICAgICAgPGl0ZW0gbmFtZT0iYW5kcm9pZDp0ZXh0U2l6ZSI+QGRpbWVuL3NldHVwX3RpdGxlX3RleHRfc2l6ZTwvaXRlbT4KKyAgICAgICAgPGl0ZW0gbmFtZT0iYW5kcm9pZDpsYXlvdXRfd2lkdGgiPm1hdGNoX3BhcmVudDwvaXRlbT4KKyAgICAgICAgPGl0ZW0gbmFtZT0iYW5kcm9pZDpsYXlvdXRfaGVpZ2h0Ij53cmFwX2NvbnRlbnQ8L2l0ZW0+CisgICAgPC9zdHlsZT4KKyAgICA8c3R5bGUgbmFtZT0ic2V0dXBXZWxjb21lRGVzY3JpdHBpb25TdHlsZSIgcGFyZW50PSJzZXR1cFRpdGxlU3R5bGUiPgorICAgICAgICA8aXRlbSBuYW1lPSJhbmRyb2lkOnRleHRTaXplIj5AZGltZW4vc2V0dXBfd2VsY29tZV9kZXNjcmlwdGlvbl90ZXh0X3NpemU8L2l0ZW0+CisgICAgPC9zdHlsZT4KKyAgICA8c3R5bGUgbmFtZT0ic2V0dXBTdGVwSW5kaWNhdG9yU3R5bGUiPgorICAgICAgICA8aXRlbSBuYW1lPSJhbmRyb2lkOmxheW91dF93aWR0aCI+bWF0Y2hfcGFyZW50PC9pdGVtPgorICAgICAgICA8aXRlbSBuYW1lPSJhbmRyb2lkOmxheW91dF9oZWlnaHQiPkBkaW1lbi9zZXR1cF9zdGVwX3RyaWFuZ2xlX2luZGljYXRvcl9oZWlnaHQ8L2l0ZW0+CisgICAgPC9zdHlsZT4KKyAgICA8c3R5bGUgbmFtZT0ic2V0dXBTdGVwQnVsbGV0U3R5bGUiPgorICAgICAgICA8aXRlbSBuYW1lPSJhbmRyb2lkOnRleHRDb2xvciI+QGNvbG9yL3NldHVwX3RleHRfZGFyazwvaXRlbT4KKyAgICAgICAgPGl0ZW0gbmFtZT0iYW5kcm9pZDp0ZXh0U2l6ZSI+QGRpbWVuL3NldHVwX3N0ZXBfYnVsbGV0X3RleHRfc2l6ZTwvaXRlbT4KKyAgICAgICAgPGl0ZW0gbmFtZT0iYW5kcm9pZDpsYXlvdXRfd2lkdGgiPjBkcDwvaXRlbT4KKyAgICAgICAgPGl0ZW0gbmFtZT0iYW5kcm9pZDpsYXlvdXRfd2VpZ2h0Ij4xLjA8L2l0ZW0+CisgICAgICAgIDxpdGVtIG5hbWU9ImFuZHJvaWQ6bGF5b3V0X2hlaWdodCI+d3JhcF9jb250ZW50PC9pdGVtPgorICAgICAgICA8aXRlbSBuYW1lPSJhbmRyb2lkOmdyYXZpdHkiPmNlbnRlcl9ob3Jpem9udGFsPC9pdGVtPgorICAgIDwvc3R5bGU+CisgICAgPHN0eWxlIG5hbWU9InNldHVwU3RlcEJhc2VTdHlsZSI+CisgICAgICAgIDxpdGVtIG5hbWU9ImFuZHJvaWQ6dGV4dENvbG9yIj5AY29sb3Ivc2V0dXBfdGV4dF9kYXJrPC9pdGVtPgorICAgICAgICA8aXRlbSBuYW1lPSJhbmRyb2lkOmJhY2tncm91bmQiPkBjb2xvci9zZXR1cF9zdGVwX2JhY2tncm91bmQ8L2l0ZW0+CisgICAgICAgIDxpdGVtIG5hbWU9ImFuZHJvaWQ6bGF5b3V0X3dpZHRoIj5tYXRjaF9wYXJlbnQ8L2l0ZW0+CisgICAgICAgIDxpdGVtIG5hbWU9ImFuZHJvaWQ6bGF5b3V0X2hlaWdodCI+d3JhcF9jb250ZW50PC9pdGVtPgorICAgICAgICA8aXRlbSBuYW1lPSJhbmRyb2lkOnBhZGRpbmdMZWZ0Ij5AZGltZW4vc2V0dXBfc3RlcF9ob3Jpem9udGFsX3BhZGRpbmc8L2l0ZW0+CisgICAgICAgIDxpdGVtIG5hbWU9ImFuZHJvaWQ6cGFkZGluZ1JpZ2h0Ij5AZGltZW4vc2V0dXBfc3RlcF9ob3Jpem9udGFsX3BhZGRpbmc8L2l0ZW0+CisgICAgPC9zdHlsZT4KKyAgICA8c3R5bGUgbmFtZT0ic2V0dXBTdGVwVGl0bGVTdHlsZSIgcGFyZW50PSJzZXR1cFN0ZXBCYXNlU3R5bGUiPgorICAgICAgICA8aXRlbSBuYW1lPSJhbmRyb2lkOnRleHRTaXplIj5AZGltZW4vc2V0dXBfc3RlcF90aXRsZV90ZXh0X3NpemU8L2l0ZW0+CisgICAgPC9zdHlsZT4KKyAgICA8c3R5bGUgbmFtZT0ic2V0dXBTdGVwSW5zdHJ1Y3Rpb25TdHlsZSIgcGFyZW50PSJzZXR1cFN0ZXBCYXNlU3R5bGUiPgorICAgICAgICA8aXRlbSBuYW1lPSJhbmRyb2lkOnRleHRTaXplIj5AZGltZW4vc2V0dXBfc3RlcF9pbnN0cnVjdGlvbl90ZXh0X3NpemU8L2l0ZW0+CisgICAgPC9zdHlsZT4KKyAgICA8c3R5bGUgbmFtZT0ic2V0dXBTdGVwU3RhcnRJbmRpY2F0b3JTdHlsZSI+CisgICAgICAgIDwhLS0gVGhlIHRyaWFuZ2xlIGluZGljYXRvciBoZXJlIGlzIHBsYWNlZCBzaWRld2F5cy4gLS0+CisgICAgICAgIDxpdGVtIG5hbWU9ImFuZHJvaWQ6bGF5b3V0X3dpZHRoIj5AZGltZW4vc2V0dXBfc3RlcF90cmlhbmdsZV9pbmRpY2F0b3JfaGVpZ2h0PC9pdGVtPgorICAgICAgICA8aXRlbSBuYW1lPSJhbmRyb2lkOmxheW91dF9oZWlnaHQiPkBkaW1lbi9zZXR1cF9zdGVwX2FjdGlvbl9oZWlnaHQ8L2l0ZW0+CisgICAgPC9zdHlsZT4KKyAgICA8c3R5bGUgbmFtZT0ic2V0dXBTdGVwQWN0aW9uTGFiZWxTdHlsZUNvbW1vbiIgcGFyZW50PSJzZXR1cFN0ZXBCYXNlU3R5bGUiPgorICAgICAgICA8aXRlbSBuYW1lPSJhbmRyb2lkOnRleHRDb2xvciI+QGNvbG9yL3NldHVwX3N0ZXBfYWN0aW9uX2NvbG9yPC9pdGVtPgorICAgICAgICA8aXRlbSBuYW1lPSJhbmRyb2lkOmJhY2tncm91bmQiPkBkcmF3YWJsZS9zZXR1cF9zdGVwX2FjdGlvbl9iYWNrZ3JvdW5kPC9pdGVtPgorICAgICAgICA8aXRlbSBuYW1lPSJhbmRyb2lkOmxheW91dF9oZWlnaHQiPkBkaW1lbi9zZXR1cF9zdGVwX2FjdGlvbl9oZWlnaHQ8L2l0ZW0+CisgICAgICAgIDxpdGVtIG5hbWU9ImFuZHJvaWQ6cGFkZGluZ0xlZnQiPkBkaW1lbi9zZXR1cF9zdGVwX2hvcml6b250YWxfcGFkZGluZ19oYWxmPC9pdGVtPgorICAgICAgICA8aXRlbSBuYW1lPSJhbmRyb2lkOnRleHRTaXplIj5AZGltZW4vc2V0dXBfc3RlcF9hY3Rpb25fdGV4dF9zaXplPC9pdGVtPgorICAgICAgICA8aXRlbSBuYW1lPSJhbmRyb2lkOmRyYXdhYmxlUGFkZGluZyI+QGRpbWVuL3NldHVwX3N0ZXBfaG9yaXpvbnRhbF9wYWRkaW5nX2hhbGY8L2l0ZW0+CisgICAgICAgIDxpdGVtIG5hbWU9ImFuZHJvaWQ6Z3Jhdml0eSI+Y2VudGVyX3ZlcnRpY2FsPC9pdGVtPgorICAgICAgICA8aXRlbSBuYW1lPSJhbmRyb2lkOmNsaWNrYWJsZSI+dHJ1ZTwvaXRlbT4KKyAgICAgICAgPGl0ZW0gbmFtZT0iYW5kcm9pZDpmb2N1c2FibGUiPnRydWU8L2l0ZW0+CisgICAgPC9zdHlsZT4KKyAgICA8c3R5bGUgbmFtZT0ic2V0dXBTdGVwU3RhcnRBY3Rpb25MYWJlbFN0eWxlQ29tbW9uIiBwYXJlbnQ9InNldHVwU3RlcEFjdGlvbkxhYmVsU3R5bGVDb21tb24iPgorICAgICAgICA8aXRlbSBuYW1lPSJhbmRyb2lkOnBhZGRpbmdMZWZ0Ij5AZGltZW4vc2V0dXBfc3RlcF9ob3Jpem9udGFsX3BhZGRpbmc8L2l0ZW0+CisgICAgICAgIDxpdGVtIG5hbWU9ImFuZHJvaWQ6cGFkZGluZ1JpZ2h0Ij5AZGltZW4vc2V0dXBfc3RlcF9ob3Jpem9udGFsX3BhZGRpbmc8L2l0ZW0+CisgICAgPC9zdHlsZT4KKzwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvamF2YS9yZXMvdmFsdWVzL3NldHVwLXN0eWxlcy54bWwgYi9qYXZhL3Jlcy92YWx1ZXMvc2V0dXAtc3R5bGVzLnhtbAppbmRleCBjZmM2ODlhLi4xZmZlOGNhIDEwMDY0NAotLS0gYS9qYXZhL3Jlcy92YWx1ZXMvc2V0dXAtc3R5bGVzLnhtbAorKysgYi9qYXZhL3Jlcy92YWx1ZXMvc2V0dXAtc3R5bGVzLnhtbApAQCAtMTUsMzEgKzE1LDYgQEAKIC0tPgogCiA8cmVzb3VyY2VzIHhtbG5zOmFuZHJvaWQ9Imh0dHA6Ly9zY2hlbWFzLmFuZHJvaWQuY29tL2Fway9yZXMvYW5kcm9pZCI+Ci0gICAgPHN0eWxlIG5hbWU9InNldHVwVGl0bGVTdHlsZSI+Ci0gICAgICAgIDxpdGVtIG5hbWU9ImFuZHJvaWQ6dGV4dENvbG9yIj5AY29sb3Ivc2V0dXBfdGV4dF9kYXJrPC9pdGVtPgotICAgICAgICA8aXRlbSBuYW1lPSJhbmRyb2lkOnRleHRTaXplIj5AZGltZW4vc2V0dXBfdGl0bGVfdGV4dF9zaXplPC9pdGVtPgotICAgIDwvc3R5bGU+Ci0gICAgPHN0eWxlIG5hbWU9InNldHVwU3RlcEJ1bGxldFN0eWxlIj4KLSAgICAgICAgPGl0ZW0gbmFtZT0iYW5kcm9pZDp0ZXh0Q29sb3IiPkBjb2xvci9zZXR1cF90ZXh0X2Rhcms8L2l0ZW0+Ci0gICAgICAgIDxpdGVtIG5hbWU9ImFuZHJvaWQ6dGV4dFNpemUiPjIyc3A8L2l0ZW0+Ci0gICAgICAgIDxpdGVtIG5hbWU9ImFuZHJvaWQ6bGF5b3V0X3dpZHRoIj4wZHA8L2l0ZW0+Ci0gICAgICAgIDxpdGVtIG5hbWU9ImFuZHJvaWQ6bGF5b3V0X3dlaWdodCI+MS4wPC9pdGVtPgotICAgICAgICA8aXRlbSBuYW1lPSJhbmRyb2lkOmxheW91dF9oZWlnaHQiPndyYXBfY29udGVudDwvaXRlbT4KLSAgICAgICAgPGl0ZW0gbmFtZT0iYW5kcm9pZDpncmF2aXR5Ij5jZW50ZXJfaG9yaXpvbnRhbDwvaXRlbT4KLSAgICA8L3N0eWxlPgotICAgIDxzdHlsZSBuYW1lPSJzZXR1cFN0ZXBUaXRsZVN0eWxlIj4KLSAgICAgICAgPGl0ZW0gbmFtZT0iYW5kcm9pZDpiYWNrZ3JvdW5kIj5AY29sb3Ivc2V0dXBfc3RlcF9iYWNrZ3JvdW5kPC9pdGVtPgotICAgICAgICA8aXRlbSBuYW1lPSJhbmRyb2lkOnRleHRDb2xvciI+QGNvbG9yL3NldHVwX3RleHRfZGFyazwvaXRlbT4KLSAgICAgICAgPGl0ZW0gbmFtZT0iYW5kcm9pZDp0ZXh0U2l6ZSI+MjJzcDwvaXRlbT4KLSAgICA8L3N0eWxlPgotICAgIDxzdHlsZSBuYW1lPSJzZXR1cFN0ZXBJbnN0cnVjdGlvblN0eWxlIj4KLSAgICAgICAgPGl0ZW0gbmFtZT0iYW5kcm9pZDpiYWNrZ3JvdW5kIj5AY29sb3Ivc2V0dXBfc3RlcF9iYWNrZ3JvdW5kPC9pdGVtPgotICAgICAgICA8aXRlbSBuYW1lPSJhbmRyb2lkOnRleHRDb2xvciI+QGNvbG9yL3NldHVwX3RleHRfZGFyazwvaXRlbT4KLSAgICAgICAgPGl0ZW0gbmFtZT0iYW5kcm9pZDp0ZXh0U2l6ZSI+MTRzcDwvaXRlbT4KLSAgICA8L3N0eWxlPgotICAgIDxzdHlsZSBuYW1lPSJzZXR1cFN0ZXBBY3Rpb25MYWJlbFN0eWxlIj4KLSAgICAgICAgPGl0ZW0gbmFtZT0iYW5kcm9pZDpiYWNrZ3JvdW5kIj5AY29sb3Ivc2V0dXBfc3RlcF9iYWNrZ3JvdW5kPC9pdGVtPgotICAgICAgICA8aXRlbSBuYW1lPSJhbmRyb2lkOnRleHRDb2xvciI+QGNvbG9yL3NldHVwX3RleHRfYWN0aW9uPC9pdGVtPgotICAgICAgICA8aXRlbSBuYW1lPSJhbmRyb2lkOnRleHRTaXplIj4xOHNwPC9pdGVtPgotICAgIDwvc3R5bGU+CisgICAgPHN0eWxlIG5hbWU9InNldHVwVGl0bGVTdHlsZSIgcGFyZW50PSJzZXR1cFRpdGxlU3R5bGVDb21tb24iIC8+CisgICAgPHN0eWxlIG5hbWU9InNldHVwU3RlcEFjdGlvbkxhYmVsU3R5bGUiIHBhcmVudD0ic2V0dXBTdGVwQWN0aW9uTGFiZWxTdHlsZUNvbW1vbiIgLz4KIDwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvamF2YS9yZXMvdmFsdWVzL3N0cmluZ3MtYXBwbmFtZS54bWwgYi9qYXZhL3Jlcy92YWx1ZXMvc3RyaW5ncy1hcHBuYW1lLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NmQ4YzQ0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9yZXMvdmFsdWVzL3N0cmluZ3MtYXBwbmFtZS54bWwKQEAgLTAsMCArMSwzNyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzwhLS0KKy8qCisqKgorKiogQ29weXJpZ2h0IDIwMTMsIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyoqCisqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorKioKKyoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyoqCisqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyovCistLT4KKworPHJlc291cmNlcz4KKyAgICA8IS0tIEFwcGxpY2F0aW9uIG5hbWUgZm9yIG9wZW5zb3VyY2UgQW5kcm9pZCBrZXlib2FyZC4gQU9TUChBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QpIHNob3VsZCBub3QgYmUgdHJhbnNsYXRlZC4KKyAgICAgICAgIFRoaXMgcmVzb3VyY2Ugc2hvdWxkIGJlIGNvcGllZCBmcm9tIG1zZ2lkPSI4MjUwOTkyNjEzNjE2NzkyMzIxIiAtLT4KKyAgICA8c3RyaW5nIG5hbWU9ImVuZ2xpc2hfaW1lX25hbWUiPkFuZHJvaWQgS2V5Ym9hcmQgKEFPU1ApPC9zdHJpbmc+CisKKyAgICA8IS0tIE5hbWUgb2YgQW5kcm9pZCBzcGVsbCBjaGVja2VyIHNlcnZpY2UuIEFPU1AoQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0KSBzaG91bGQgbm90IGJlIHRyYW5zbGF0ZWQuCisgICAgICAgICBUaGlzIHJlc291cmNlIHNob3VsZCBiZSBjb3BpZWQgZnJvbSBtc2dpZD0iNTExOTUwNDc3MTk5OTQ4MDQ4IiAtLT4KKyAgICA8c3RyaW5nIG5hbWU9InNwZWxsX2NoZWNrZXJfc2VydmljZV9uYW1lIj5BbmRyb2lkIFNwZWxsIENoZWNrZXIgKEFPU1ApPC9zdHJpbmc+CisKKyAgICA8IS0tIFRpdGxlIGZvciBBbmRyb2lkIEtleWJvYXJkIHNldHRpbmdzIHNjcmVlbi4gQU9TUChBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QpIHNob3VsZCBub3QgYmUgdHJhbnNsYXRlZC4KKyAgICAgICAgIFRoaXMgcmVzb3VyY2Ugc2hvdWxkIGJlIGNvcGllZCBmcm9tIG1zZ2lkPSI0MjM2MTU4NzcxNzQ4NTAyNjciIC0tPgorICAgIDxzdHJpbmcgbmFtZT0iZW5nbGlzaF9pbWVfc2V0dGluZ3MiPkFuZHJvaWQgS2V5Ym9hcmQgU2V0dGluZ3MgKEFPU1ApPC9zdHJpbmc+CisKKyAgICA8IS0tIFRpdGxlIGZvciB0aGUgc3BlbGwgY2hlY2tpbmcgc2VydmljZSBzZXR0aW5ncyBzY3JlZW4uIEFPU1AoQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0KSBzaG91bGQgbm90IGJlIHRyYW5zbGF0ZWQuCisgICAgICAgICBUaGlzIHJlc291cmNlIHNob3VsZCBiZSBjb3BpZWQgZnJvbSBtc2dpZD0iMjk3MDUzNTg5NDMyNzI4ODQyMSIgLS0+CisgICAgPHN0cmluZyBuYW1lPSJhbmRyb2lkX3NwZWxsX2NoZWNrZXJfc2V0dGluZ3MiPkFuZHJvaWQgU3BlbGwgQ2hlY2tlciBTZXR0aW5ncyAoQU9TUCk8L3N0cmluZz4KKzwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvamF2YS9yZXMvdmFsdWVzL3N0cmluZ3MueG1sIGIvamF2YS9yZXMvdmFsdWVzL3N0cmluZ3MueG1sCmluZGV4IGRiYWRmYWIuLjg1YWJiMDggMTAwNjQ0Ci0tLSBhL2phdmEvcmVzL3ZhbHVlcy9zdHJpbmdzLnhtbAorKysgYi9qYXZhL3Jlcy92YWx1ZXMvc3RyaW5ncy54bWwKQEAgLTE4LDE4ICsxOCw2IEBACiAqLwogLS0+CiA8cmVzb3VyY2VzIHhtbG5zOnhsaWZmPSJ1cm46b2FzaXM6bmFtZXM6dGM6eGxpZmY6ZG9jdW1lbnQ6MS4yIj4KLSAgICA8IS0tIEFwcGxpY2F0aW9uIG5hbWUgZm9yIG9wZW5zb3VyY2UgQW5kcm9pZCBrZXlib2FyZC4gQU9TUChBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QpIHNob3VsZCBub3QgYmUgdHJhbnNsYXRlZC4gLS0+Ci0gICAgPHN0cmluZyBuYW1lPSJhb3NwX2FuZHJvaWRfa2V5Ym9hcmRfaW1lX25hbWUiPkFuZHJvaWQgS2V5Ym9hcmQgKEFPU1ApPC9zdHJpbmc+Ci0KLSAgICA8IS0tIFRpdGxlIGZvciBBbmRyb2lkIEtleWJvYXJkIHNldHRpbmdzIHNjcmVlbi4gQU9TUChBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QpIHNob3VsZCBub3QgYmUgdHJhbnNsYXRlZC4gLS0+Ci0gICAgPHN0cmluZyBuYW1lPSJhb3NwX2FuZHJvaWRfa2V5Ym9hcmRfaW1lX3NldHRpbmdzIj5BbmRyb2lkIEtleWJvYXJkIFNldHRpbmdzIChBT1NQKTwvc3RyaW5nPgotCi0gICAgPCEtLSBOYW1lIG9mIEFuZHJvaWQgc3BlbGwgY2hlY2tlciBzZXJ2aWNlLiBBT1NQKEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdCkgc2hvdWxkIG5vdCBiZSB0cmFuc2xhdGVkLiAtLT4KLSAgICA8c3RyaW5nIG5hbWU9ImFvc3Bfc3BlbGxfY2hlY2tlcl9zZXJ2aWNlX25hbWUiPkFuZHJvaWQgU3BlbGwgQ2hlY2tlciAoQU9TUCk8L3N0cmluZz4KLQotICAgIDwhLS0gVGl0bGUgZm9yIHRoZSBzcGVsbCBjaGVja2luZyBzZXJ2aWNlIHNldHRpbmdzIHNjcmVlbi4gQU9TUChBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QpIHNob3VsZCBub3QgYmUgdHJhbnNsYXRlZC4gLS0+Ci0gICAgPHN0cmluZyBuYW1lPSJhb3NwX2FuZHJvaWRfc3BlbGxfY2hlY2tlcl9zZXJ2aWNlX3NldHRpbmdzIj5BbmRyb2lkIFNwZWxsIENoZWNrZXIgU2V0dGluZ3MgKEFPU1ApPC9zdHJpbmc+Ci0KICAgICA8IS0tIFRpdGxlIGZvciBMYXRpbiBrZXlib2FyZCBpbnB1dCBvcHRpb25zIGRpYWxvZyBbQ0hBUiBMSU1JVD0yNV0gLS0+CiAgICAgPHN0cmluZyBuYW1lPSJlbmdsaXNoX2ltZV9pbnB1dF9vcHRpb25zIj5JbnB1dCBvcHRpb25zPC9zdHJpbmc+CiAKQEAgLTEwNyw2ICs5NSw5IEBACiAgICAgPCEtLSBEZXNjcmlwdGlvbiBmb3Igb3B0aW9uIHRvIGVuYWJsZSBhdXRvIGNhcGl0YWxpemF0aW9uIG9mIHNlbnRlbmNlcyAtLT4KICAgICA8c3RyaW5nIG5hbWU9ImF1dG9fY2FwX3N1bW1hcnkiPkNhcGl0YWxpemUgdGhlIGZpcnN0IHdvcmQgb2YgZWFjaCBzZW50ZW5jZTwvc3RyaW5nPgogCisgICAgPCEtLSBPcHRpb24gdG8gZWRpdCBwZXJzb25hbCBkaWN0aW9uYXJ5LiBbQ0hBUl9MSU1JVD0zMF0tLT4KKyAgICA8c3RyaW5nIG5hbWU9ImVkaXRfcGVyc29uYWxfZGljdGlvbmFyeSI+UGVyc29uYWwgZGljdGlvbmFyeTwvc3RyaW5nPgorCiAgICAgPCEtLSBPcHRpb24gdG8gY29uZmlndXJlIGRpY3Rpb25hcmllcyAtLT4KICAgICA8c3RyaW5nIG5hbWU9ImNvbmZpZ3VyZV9kaWN0aW9uYXJpZXNfdGl0bGUiPkFkZC1vbiBkaWN0aW9uYXJpZXM8L3N0cmluZz4KICAgICA8IS0tIE5hbWUgb2YgdGhlIG1haW4gZGljdGlvbmFyeSwgYXMgb3Bwb3NlZCB0byBhdXhpbGlhcnkgZGljdGlvbmFyaWVzIChtZWRpY2FsL2VudGVydGFpbm1lbnQvc3BvcnRzLi4uKSAtLT4KQEAgLTEyMCw2ICsxMTEsMTEgQEAKICAgICA8c3RyaW5nIG5hbWU9InByZWZzX3N1Z2dlc3Rpb25fdmlzaWJpbGl0eV9zaG93X29ubHlfcG9ydHJhaXRfbmFtZSI+U2hvdyBpbiBwb3J0cmFpdCBtb2RlPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwcmVmc19zdWdnZXN0aW9uX3Zpc2liaWxpdHlfaGlkZV9uYW1lIj5BbHdheXMgaGlkZTwvc3RyaW5nPgogCisgICAgPCEtLSBPcHRpb24gdG8gYmxvY2sgcG90ZW50aWFsbHkgb2ZmZW5zaXZlIHdvcmRzIHRvIGJlIHNob3duIFtDSEFSX0xJTUlUPTMwXSAtLT4KKyAgICA8c3RyaW5nIG5hbWU9InByZWZzX2Jsb2NrX3BvdGVudGlhbGx5X29mZmVuc2l2ZV90aXRsZSI+QmxvY2sgb2ZmZW5zaXZlIHdvcmRzPC9zdHJpbmc+CisgICAgPCEtLSBTdW1tYXJ5IGZvciBvcHRpb24gdG8gYmxvY2sgcG90ZW50aWFsbHkgb2ZmZW5zaXZlIHdvcmRzIHRvIGJlIHNob3duIFtDSEFSX0xJTUlUPTgwICh0d28gbGluZXMpIG9yIDQwIChmaXRzIG9uIG9uZSBsaW5lLCBwcmVmZXJhYmxlKV0gLS0+CisgICAgPHN0cmluZyBuYW1lPSJwcmVmc19ibG9ja19wb3RlbnRpYWxseV9vZmZlbnNpdmVfc3VtbWFyeSI+RG8gbm90IHN1Z2dlc3QgcG90ZW50aWFsbHkgb2ZmZW5zaXZlIHdvcmRzPC9zdHJpbmc+CisKICAgICA8IS0tIE9wdGlvbiB0byBkZWNpZGUgdGhlIGF1dG8gY29ycmVjdGlvbiB0aHJlc2hvbGQgc2NvcmUgLS0+CiAgICAgPCEtLSBPcHRpb24gdG8gZW5hYmxlIGF1dG8gY29ycmVjdGlvbiBbQ0hBUiBMSU1JVD0yMF0tLT4KICAgICA8c3RyaW5nIG5hbWU9ImF1dG9fY29ycmVjdGlvbiI+QXV0by1jb3JyZWN0aW9uPC9zdHJpbmc+CkBAIC00NDIsMzMgKzQzOCw0OCBAQAogICAgIDwhLS0gVGl0bGUgb2YgdGhlIGJ1dHRvbiB0byByZXZlcnQgdG8gdGhlIGRlZmF1bHQgdmFsdWUgb2YgdGhlIGRldmljZSBpbiB0aGUgc2V0dGluZ3MgZGlhbG9nIFtDSEFSIExJTUlUPTE1XSAtLT4KICAgICA8c3RyaW5nIG5hbWU9ImJ1dHRvbl9kZWZhdWx0Ij5EZWZhdWx0PC9zdHJpbmc+CiAKLSAgICA8IS0tIFRPRE86IFJlbW92ZSB0cmFuc2xhdGFibGU9ImZhbHNlIiBvbmNlIHdvcmRpbmdzIGFyZSBmaW5hbGl6ZWQuIC0tPgorICAgIDwhLS0gVGl0bGUgb2YgdGhlIHNldHVwIHdpemFyZCB3ZWxjb21lIHNjcmVlbi4gW0NIQVIgTElNVD00MF0gLS0+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF93ZWxjb21lX3RpdGxlIj4iV2VsY29tZSB0byA8eGxpZmY6ZyBpZD0iYXBwbGljYXRpb25fbmFtZSI+JXM8L3hsaWZmOmc+Ijwvc3RyaW5nPgorICAgIDwhLS0gQWRkaXRpb25hbCB0aXRsZSBvZiB0aGUgc2V0dXAgd2l6YXJkIHdlbGNvbWUgc2NyZWVuLCBqdXN0IGJlbG93IHRoZSBzZXR1cF93ZWxjb21lX3RpdGxlLiBbQ0hBUl9MSU1JVD02NF0gLS0+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF93ZWxjb21lX2FkZGl0aW9uYWxfZGVzY3JpcHRpb24iPndpdGggR2VzdHVyZSBUeXBpbmc8L3N0cmluZz4KKyAgICA8IS0tIFRoZSBsYWJlbCBvZiB0aGUgYnV0dG9uIHRoYXQgc3RhcnRzIHRoZSBzZXR1cCB3aXphcmQuIFtDSEFSX0xJTUlUPTY0XSAtLT4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0YXJ0X2FjdGlvbiI+R2V0IHN0YXJ0ZWQ8L3N0cmluZz4KKyAgICA8IS0tIFRoZSBsYWJlbCBvZiB0aGUgYnV0dG9uIHRoYXQgbmF2aWdhdGVzIHRoZSB1c2VyIHRvIHRoZSBuZXh0IHN0ZXAgb2YgdGhlIHNldHVwIHdpemFyZC4gW0NIQVJfTElNSVQ9NjRdIC0tPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfbmV4dF9hY3Rpb24iPk5leHQgc3RlcDwvc3RyaW5nPgogICAgIDwhLS0gVGl0bGUgb2YgdGhlIHNldHVwIHdpemFyZC4gW0NIQVIgTElNVD00MF0gLS0+Ci0gICAgPHN0cmluZyBuYW1lPSJzZXR1cF90aXRsZSIgdHJhbnNsYXRhYmxlPSJmYWxzZSI+Ikluc3RhbGxpbmcgPHhsaWZmOmcgaWQ9ImFwcGxpY2F0aW9uX25hbWUiPiVzPC94bGlmZjpnPiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXBzX3RpdGxlIj4iU2V0dGluZyB1cCA8eGxpZmY6ZyBpZD0iYXBwbGljYXRpb25fbmFtZSI+JXM8L3hsaWZmOmc+Ijwvc3RyaW5nPgogICAgIDwhLS0gT3JkaW5hbCBudW1iZXIgb2YgdGhlIDFzdCBzdGVwIGluIHRoZSBzZXR1cCB3aXphcmQuIFtDSEFSIExJTUlUPTVdIC0tPgogICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDFfYnVsbGV0IiB0cmFuc2xhdGFibGU9ImZhbHNlIj4xPC9zdHJpbmc+CiAgICAgPCEtLSBUaXRsZSBvZiB0aGUgMXN0IHN0ZXAgaW4gdGhlIHNldHVwIHdpemFyZC4gW0NIQVIgTElNSVQ9NjRdIC0tPgotICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDFfdGl0bGUiIHRyYW5zbGF0YWJsZT0iZmFsc2UiPiJFbmFibGUgPHhsaWZmOmcgaWQ9ImFwcGxpY2F0aW9uX25hbWUiPiVzPC94bGlmZjpnPiBpbiBzZXR0aW5ncy4iPC9zdHJpbmc+Ci0gICAgPCEtLSBEZXRhaWxlZCBpbnN0cnVjdGlvbiBvZiB0aGUgMXN0IHN0ZXAgaW4gdGhlIHNldHVwIHdpemFyZC4gW0NIQVIgTElNSVQ9ODBdIC0tPgotICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDFfaW5zdHJ1Y3Rpb24iIHRyYW5zbGF0YWJsZT0iZmFsc2UiPiJGb3Igc2VjdXJpdHksIHBsZWFzZSBjaGVjayBcIjx4bGlmZjpnIGlkPSJhcHBsaWNhdGlvbl9uYW1lIj4lczwveGxpZmY6Zz5cIiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAxX3RpdGxlIj4iRW5hYmxlIDx4bGlmZjpnIGlkPSJhcHBsaWNhdGlvbl9uYW1lIj4lczwveGxpZmY6Zz4iPC9zdHJpbmc+CisgICAgPCEtLSBEZXRhaWxlZCBpbnN0cnVjdGlvbiBvZiB0aGUgMXN0IHN0ZXAgaW4gdGhlIHNldHVwIHdpemFyZC4gW0NIQVIgTElNSVQ9MTIwXSAtLT4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAxX2luc3RydWN0aW9uIj4iUGxlYXNlIGNoZWNrIFwiPHhsaWZmOmcgaWQ9ImFwcGxpY2F0aW9uX25hbWUiPiVzPC94bGlmZjpnPlwiIGluIHlvdXIgTGFuZ3VhZ2UgJmFtcDsgaW5wdXQgc2V0dGluZ3MuIFRoaXMgd2lsbCBhdXRob3JpemUgaXQgdG8gcnVuIG9uIHlvdXIgZGV2aWNlLiI8L3N0cmluZz4KKyAgICA8IS0tIERldGFpbGVkIGluc3RydWN0aW9uIG9mIHRoZSBhbHJlYWR5IGZpbmlzaGVkIDFzdCBzdGVwIGluIHRoZSBzZXR1cCB3aXphcmQuIFtDSEFSIExJTUlUPTEyMF0gLS0+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMV9maW5pc2hlZF9pbnN0cnVjdGlvbiI+Ijx4bGlmZjpnIGlkPSJhcHBsaWNhdGlvbl9uYW1lIj4lczwveGxpZmY6Zz4gaXMgYWxyZWFkeSBlbmFibGVkIGluIHlvdXIgTGFuZ3VhZ2UgJmFtcDsgaW5wdXQgc2V0dGluZ3MsIHNvIHRoaXMgc3RlcCBpcyBkb25lLiBPbiB0byB0aGUgbmV4dCBvbmUhIjwvc3RyaW5nPgorICAgIDwhLS0gVGhlIGxhYmVsIG9mIHRoZSBidXR0b24gdGhhdCB0cmlnZ2VycyB0aGUgTGFuZ3VhZ2UgJiBpbnB1dCBzZXR0aW5ncyBpbiBvcmRlciB0byBlbmFibGUgdGhlIGtleWJvYXJkLiBbQ0hBUl9MSU1JVD02NF0gLS0+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMV9hY3Rpb24iPkVuYWJsZSBpbiBTZXR0aW5nczwvc3RyaW5nPgogICAgIDwhLS0gT3JkaW5hbCBudW1iZXIgb2YgdGhlIDJuZCBzdGVwIGluIHRoZSBzZXR1cCB3aXphcmQuIFtDSEFSIExJTUlUPTVdIC0tPgogICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDJfYnVsbGV0IiB0cmFuc2xhdGFibGU9ImZhbHNlIj4yPC9zdHJpbmc+CiAgICAgPCEtLSBUaXRsZSBvZiB0aGUgMm5kIHN0ZXAgaW4gdGhlIHNldHVwIHdpemFyZC4gW0NIQVIgTElNSVQ9NjRdIC0tPgotICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDJfdGl0bGUiIHRyYW5zbGF0YWJsZT0iZmFsc2UiPiJTd2l0Y2ggdG8gPHhsaWZmOmcgaWQ9ImFwcGxpY2F0aW9uX25hbWUiPiVzPC94bGlmZjpnPi4iPC9zdHJpbmc+Ci0gICAgPCEtLSBEZXRhaWxlZCBpbnN0cnVjdGlvbiBvZiB0aGUgMm5kIHN0ZXAgaW4gdGhlIHNldHVwIHdpemFyZC4gW0NIQVIgTElNSVQ9ODBdIC0tPgotICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDJfaW5zdHJ1Y3Rpb24iIHRyYW5zbGF0YWJsZT0iZmFsc2UiPiJOb3cgdGhhdCB5b3UndmUgZW5hYmxlZCA8eGxpZmY6ZyBpZD0iYXBwbGljYXRpb25fbmFtZSI+JXM8L3hsaWZmOmc+LCB5b3UgY2FuIHN3aXRjaCB0byBpdC4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMl90aXRsZSI+IlN3aXRjaCB0byA8eGxpZmY6ZyBpZD0iYXBwbGljYXRpb25fbmFtZSI+JXM8L3hsaWZmOmc+Ijwvc3RyaW5nPgorICAgIDwhLS0gRGV0YWlsZWQgaW5zdHJ1Y3Rpb24gb2YgdGhlIDJuZCBzdGVwIGluIHRoZSBzZXR1cCB3aXphcmQuIFtDSEFSIExJTUlUPTEyMF0gLS0+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMl9pbnN0cnVjdGlvbiI+Ik5leHQsIHNlbGVjdCBcIjx4bGlmZjpnIGlkPSJhcHBsaWNhdGlvbl9uYW1lIj4lczwveGxpZmY6Zz5cIiBhcyB5b3VyIGFjdGl2ZSB0ZXh0LWlucHV0IG1ldGhvZC4iPC9zdHJpbmc+CisgICAgPCEtLSBUaGUgbGFiZWwgb2YgdGhlIGJ1dHRvbiB0aGF0IHRyaWdnZXJzIHRoZSBjaG9vc2UgaW5wdXQgbWV0aG9kIGRpYWxvZyBpbiBvcmRlciB0byBzZWxlY3QgdGhlIGtleWJvYXJkLiBbQ0hBUl9MSU1JVD02NF0gLS0+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMl9hY3Rpb24iPlN3aXRjaCBpbnB1dCBtZXRob2RzPC9zdHJpbmc+CiAgICAgPCEtLSBPcmRpbmFsIG51bWJlciBvZiB0aGUgM3JkIHN0ZXAgaW4gdGhlIHNldHVwIHdpemFyZC4gW0NIQVIgTElNSVQ9NV0gLS0+CiAgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwM19idWxsZXQiIHRyYW5zbGF0YWJsZT0iZmFsc2UiPjM8L3N0cmluZz4KICAgICA8IS0tIFRpdGxlIG9mIHRoZSAzcmQgc3RlcCBpbiB0aGUgc2V0dXAgd2l6YXJkLiBbQ0hBUiBMSU1JVD02NF0gLS0+Ci0gICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwM190aXRsZSIgdHJhbnNsYXRhYmxlPSJmYWxzZSI+IkNvbmdyYXR1bGF0aW9ucywgeW91J3JlIGFsbCBzZXQhIjwvc3RyaW5nPgotICAgIDwhLS0gRGV0YWlsZWQgaW5zdHJ1Y3Rpb24gb2YgdGhlIDNyZCBzdGVwIGluIHRoZSBzZXR1cCB3aXphcmQuIFtDSEFSIExJTUlUPTgwXSAtLT4KLSAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAzX2luc3RydWN0aW9uIiB0cmFuc2xhdGFibGU9ImZhbHNlIj5Db25maWd1cmUgYWRkaXRpb25hbCBsYW5ndWFnZXM8L3N0cmluZz4KLSAgICA8IS0tIFRpdGxlIG9mIHRoZSBMYW5ndWFnZSAmIGlucHV0IHNldHRpbmdzLiBUaGlzIHNob3VsZCBiZSBhbGlnbmVkIHdpdGggbXNnaWQ9IjUyOTI3MTY3NDcyNjQ0NDIzNTkiIC0tPgotICAgIDxzdHJpbmcgbmFtZT0ibGFuZ3VhZ2Vfc2V0dGluZ3MiPkxhbmd1YWdlICZhbXA7IGlucHV0PC9zdHJpbmc+Ci0gICAgPCEtLSBUaXRsZSBvZiB0aGUgSW5wdXQgbWV0aG9kIHBpY2tlci4gVGhpcyBzaG91bGQgYmUgYWxpZ25lZCB3aXRoIG1zZ2lkPSI0NjUzMzg3MzM2NzkxMjIyOTc4IiAtLT4KLSAgICA8c3RyaW5nIG5hbWU9InNlbGVjdF9pbnB1dF9tZXRob2QiPkNob29zZSBpbnB1dCBtZXRob2Q8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAzX3RpdGxlIj4iQ29uZ3JhdHVsYXRpb25zLCB5b3UncmUgYWxsIHNldCEiPC9zdHJpbmc+CisgICAgPCEtLSBEZXRhaWxlZCBpbnN0cnVjdGlvbiBvZiB0aGUgM3JkIHN0ZXAgaW4gdGhlIHNldHVwIHdpemFyZC4gW0NIQVIgTElNSVQ9MTIwXSAtLT4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAzX2luc3RydWN0aW9uIj5Ob3cgeW91IGNhbiB0eXBlIGluIGFsbCB5b3VyIGZhdm9yaXRlIGFwcHMgd2l0aCA8eGxpZmY6ZyBpZD0iYXBwbGljYXRpb25fbmFtZSI+JXM8L3hsaWZmOmc+Ljwvc3RyaW5nPgorICAgIDwhLS0gVGhlIGxhYmVsIG9mIHRoZSBidXR0b24gdGhhdCB0cmlnZ2VycyB0aGUgc2NyZWVuIGZvciBjb25maWd1YXJpbmcgYWRkaXRpb25hbCBsYW5ndWFnZXMgb2YgdGhlIGtleWJvYXJkLiBbQ0hBUl9MSU1JVD02NF0gLS0+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwM19hY3Rpb24iPkNvbmZpZ3VyZSBhZGRpdGlvbmFsIGxhbmd1YWdlczwvc3RyaW5nPgorICAgIDwhLS0gVGhlIGxhYmVsIG9mIHRoZSBidXR0b24gdGhhdCBmaW5pc2hlcyB0aGUgc2V0dXAgd2l6YXJkLiBbQ0hBUl9MSU1JVD02NF0gLS0+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9maW5pc2hfYWN0aW9uIj5GaW5pc2hlZDwvc3RyaW5nPgogICAgIDwhLS0gT3B0aW9uIHRvIHNob3cgc2V0dXAgd2l6YXJkIGljb24uIFtDSEFSIExJTUlUPTMwXS0tPgotICAgIDxzdHJpbmcgbmFtZT0ic2hvd19zZXR1cF93aXphcmRfaWNvbiIgdHJhbnNsYXRhYmxlPSJmYWxzZSI+U2hvdyBzZXR1cCB3aXphcmQgaWNvbjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2hvd19zZXR1cF93aXphcmRfaWNvbiI+U2hvdyBhcHAgaWNvbjwvc3RyaW5nPgorICAgIDwhLS0gRGVzY3JpcHRpb24gZm9yIHRoZSBvcHRpb24gdG8gc2hvdyBzZXR1cCB3aXphcmQgYXBwbGljYXRpb24gaWNvbiBvZiB0aGlzIElNRSBpbiB0aGUgbGF1Y2hlci4gW0NIQVJfTElNSVQ9NjVdIC0tPgorICAgIDxzdHJpbmcgbmFtZT0ic2hvd19zZXR1cF93aXphcmRfaWNvbl9zdW1tYXJ5Ij5EaXNwbGF5IGFwcGxpY2F0aW9uIGljb24gaW4gdGhlIGxhdW5jaGVyPC9zdHJpbmc+CiAKICAgICA8IS0tIFRoZSBkaWN0aW9uYXJ5IHByb3ZpZGVyIGFwcGxpY2F0aW9uIG5hbWUuIFZpc2libGUgaW4gU2V0dGluZ3MvQXBwbGljYXRpb25zL01hbmFnZSBhcHBsaWNhdGlvbnMuIC0tPgogICAgIDxzdHJpbmcgbmFtZT0iYXBwX25hbWUiPkRpY3Rpb25hcnkgUHJvdmlkZXI8L3N0cmluZz4KQEAgLTQ5OCw5ICs1MDksOSBAQAogICAgIDwhLS0gTWVzc2FnZSBhYm91dCBzb21lIGRpY3Rpb25hcnkgaW5kaWNhdGluZyB0aGUgZmlsZSBpcyBpbnN0YWxsZWQsIGJ1dCB0aGUgZGljdGlvbmFyeSBpcyBkaXNhYmxlZCAtLT4KICAgICA8c3RyaW5nIG5hbWU9ImRpY3Rpb25hcnlfZGlzYWJsZWQiPkluc3RhbGxlZCwgZGlzYWJsZWQ8L3N0cmluZz4KIAotICAgIDwhLS0gTWVzc2FnZSB0byBkaXNwbGF5IGluIHRoZSBkaWN0aW9uYXJpZXMgc2V0dGluZyBzY3JlZW4gd2hlbiBzb21lIGVycm9yIHByZXZlbnRlZCB1cyB0byBsaXN0IGluc3RhbGxlZCBkaWN0aW9uYXJpZXMgW0NIQVIgTElNSVQ9NTBdIC0tPgorICAgIDwhLS0gTWVzc2FnZSB0byBkaXNwbGF5IGluIHRoZSBkaWN0aW9uYXJpZXMgc2V0dGluZyBzY3JlZW4gd2hlbiBzb21lIGVycm9yIHByZXZlbnRlZCB1cyB0byBsaXN0IGluc3RhbGxlZCBkaWN0aW9uYXJpZXMgW0NIQVIgTElNSVQ9MjBdIC0tPgogICAgIDxzdHJpbmcgbmFtZT0iY2Fubm90X2Nvbm5lY3RfdG9fZGljdF9zZXJ2aWNlIj5Qcm9ibGVtIGNvbm5lY3RpbmcgdG8gZGljdGlvbmFyeSBzZXJ2aWNlPC9zdHJpbmc+Ci0gICAgPCEtLSBNZXNzYWdlIHRvIGRpc3BsYXkgaW4gdGhlIGRpY3Rpb25hcmllcyBzZXR0aW5nIHNjcmVlbiB3aGVuIHdlIGZvdW5kIHRoYXQgbm8gZGljdGlvbmFyaWVzIGFyZSBhdmFpbGFibGUgW0NIQVIgTElNSVQ9NTBdLS0+CisgICAgPCEtLSBNZXNzYWdlIHRvIGRpc3BsYXkgaW4gdGhlIGRpY3Rpb25hcmllcyBzZXR0aW5nIHNjcmVlbiB3aGVuIHdlIGZvdW5kIHRoYXQgbm8gZGljdGlvbmFyaWVzIGFyZSBhdmFpbGFibGUgW0NIQVIgTElNSVQ9MjBdLS0+CiAgICAgPHN0cmluZyBuYW1lPSJub19kaWN0aW9uYXJpZXNfYXZhaWxhYmxlIj5ObyBkaWN0aW9uYXJpZXMgYXZhaWxhYmxlPC9zdHJpbmc+CiAKICAgICA8IS0tIFRpdGxlIG9mIHRoZSBvcHRpb25zIHRvIHByZXNzIHRvIHJlZnJlc2ggdGhlIGxpc3QgKGFzIGluLCBjaGVjayBmb3IgdXBkYXRlcyBub3cpIFtDSEFSX0xJTUlUPTUwXSAtLT4KQEAgLTU0Myw0ICs1NTQsNzAgQEAKIAogICAgIDwhLS0gVGhlIHRleHQgb2YgdGhlIHRvYXN0IHdhcm5pbmcgYSBkb3dubG9hZCBpcyBzdGFydGluZyBhdXRvbWF0aWNhbGx5IHRvIGVuYWJsZSBzdWdnZXN0aW9ucyBmb3IgdGhlIHNlbGVjdGVkIGxhbmd1YWdlIFtDSEFSIExJTUlUPTEwMF0gLS0+CiAgICAgPHN0cmluZyBuYW1lPSJ0b2FzdF9kb3dubG9hZGluZ19zdWdnZXN0aW9ucyI+RG93bmxvYWRpbmc6IHN1Z2dlc3Rpb25zIGZvciA8eGxpZmY6ZyBpZD0ibGFuZ3VhZ2UiIGV4YW1wbGU9IkVuZ2xpc2giPiUxJHM8L3hsaWZmOmc+IHdpbGwgYmUgcmVhZHkgc29vbi48L3N0cmluZz4KKworICAgIDwhLS0gVmVyc2lvbiB0ZXh0IFtDSEFSIExJTUlUPTMwXS0tPgorICAgIDxzdHJpbmcgbmFtZT0idmVyc2lvbl90ZXh0Ij5WZXJzaW9uIDx4bGlmZjpnIGlkPSJ2ZXJzaW9uX251bWJlciIgZXhhbXBsZT0iMS4wLjE4NjQuNjQzNTIxIj4lMSRzPC94bGlmZjpnPjwvc3RyaW5nPgorCisgICAgPCEtLSBVc2VyIGRpY3Rpb25hcnkgc2V0dGluZ3MgLS0+CisgICAgPCEtLSBVc2VyIGRpY3Rpb25hcnkgc2V0dGluZ3MuICBUaGUgc3VtbWFyeSBvZiB0aGUgbGlzdGVtIGl0ZW0gdG8gZ28gaW50byB0aGUgVXNlciBkaWN0aW9uYXJ5IHNldHRpbmdzIHNjcmVlbi4gLS0+CisgICAgPHN0cmluZyBuYW1lPSJ1c2VyX2RpY3Rfc2V0dGluZ3Nfc3VtbWFyeSIgdHJhbnNsYXRhYmxlPSJmYWxzZSI+IiI8L3N0cmluZz4KKyAgICA8IS0tIFVzZXIgZGljdGlvbmFyeSBzZXR0aW5ncy4gVGhlIHRpdGxlIG9mIHRoZSBtZW51IGl0ZW0gdG8gYWRkIGEgbmV3IHdvcmQgdG8gdGhlIHVzZXIgZGljdGlvbmFyeS4gLS0+CisgICAgPCEtLSBUaGlzIHJlc291cmNlIGlzIGNvcnJlc3BvbmRpbmcgdG8gIG1zZ2lkPSI0MDU2NzYyNzU3MTQ5OTIzNTUxIiAtLT4KKyAgICA8c3RyaW5nIG5hbWU9InVzZXJfZGljdF9zZXR0aW5nc19hZGRfbWVudV90aXRsZSI+QWRkPC9zdHJpbmc+CisgICAgPCEtLSBVc2VyIGRpY3Rpb25hcnkgc2V0dGluZ3MuIFRoZSB0aXRsZSBvZiB0aGUgZGlhbG9nIHRvIGFkZCBhIG5ldyB3b3JkIHRvIHRoZSB1c2VyIGRpY3Rpb25hcnkuIFtDSEFSIExJTUlUPTI1XSAtLT4KKyAgICA8IS0tIFRoaXMgcmVzb3VyY2UgaXMgY29ycmVzcG9uZGluZyB0byBtc2dpZD0iNDcwMjYxMzk5MDE3NDEyNjQ4MiIgLS0+CisgICAgPHN0cmluZyBuYW1lPSJ1c2VyX2RpY3Rfc2V0dGluZ3NfYWRkX2RpYWxvZ190aXRsZSI+QWRkIHRvIGRpY3Rpb25hcnk8L3N0cmluZz4KKyAgICA8IS0tIFVzZXIgZGljdGlvbmFyeSBzZXR0aW5ncy4gVGhlIHRpdGxlIG9mIHRoZSBzY3JlZW4gdG8gYWRkL2VkaXQgYSBuZXcgd29yZCB0byB0aGUgdXNlciBkaWN0aW9uYXJ5OyBpdCBkZXNjcmliZXMgdGhlIHBocmFzZSB0aGF0IHdpbGwgYmUgYWRkZWQgdG8gdGhlIHVzZXIgZGljdGlvbmFyeS4gW0NIQVIgTElNSVQ9MjVdIC0tPgorICAgIDwhLS0gVGhpcyByZXNvdXJjZSBpcyBjb3JyZXNwb25kaW5nIHRvIG1zZ2lkPSI3NDI1ODA3MjAxMjQzNDQyOTEiIC0tPgorICAgIDxzdHJpbmcgbmFtZT0idXNlcl9kaWN0X3NldHRpbmdzX2FkZF9zY3JlZW5fdGl0bGUiPlBocmFzZTwvc3RyaW5nPgorICAgIDwhLS0gVXNlciBkaWN0aW9uYXJ5IHNldHRpbmdzLiBUZXh0IG9uIHRoZSBkaWFsb2cgYnV0dG9uIHRvIHBvcCBtb3JlIG9wdGlvbnMgZm9yIGFkZGluZyBhIHdvcmQuIFtDSEFSIExJTUlUPTE2XSAtLT4KKyAgICA8IS0tIFRoaXMgcmVzb3VyY2UgaXMgY29ycmVzcG9uZGluZyB0byBtc2dpZD0iODg0ODc5ODM3MDc0NjAxOTgyNSIgLS0+CisgICAgPHN0cmluZyBuYW1lPSJ1c2VyX2RpY3Rfc2V0dGluZ3NfYWRkX2RpYWxvZ19tb3JlX29wdGlvbnMiPk1vcmUgb3B0aW9uczwvc3RyaW5nPgorICAgIDwhLS0gVXNlciBkaWN0aW9uYXJ5IHNldHRpbmdzLiBUZXh0IG9uIHRoZSBkaWFsb2cgYnV0dG9uIG1hc2sgYWR2YW5jZWQgb3B0aW9ucy4gW0NIQVIgTElNSVQ9MTVdIC0tPgorICAgIDwhLS0gVGhpcyByZXNvdXJjZSBpcyBjb3JyZXNwb25kaW5nIHRvIG1zZ2lkPSIyNDQxNzg1MjY4NzI2MDM2MTAxIiAtLT4KKyAgICA8c3RyaW5nIG5hbWU9InVzZXJfZGljdF9zZXR0aW5nc19hZGRfZGlhbG9nX2xlc3Nfb3B0aW9ucyI+TGVzcyBvcHRpb25zPC9zdHJpbmc+CisgICAgPCEtLSBVc2VyIGRpY3Rpb25hcnkgc2V0dGluZ3MuIFRleHQgb24gdGhlIGRpYWxvZyBidXR0b24gdG8gY29uZmlybSBhZGRpbmcgYSB3b3JkLiBbQ0hBUiBMSU1JVD0xNV0gLS0+CisgICAgPCEtLSBUaGlzIHJlc291cmNlIGlzIGNvcnJlc3BvbmRpbmcgdG8gbXNnaWQ9IjYyMjU4MjM2MjUzMzI0MTYxNDQiIC0tPgorICAgIDxzdHJpbmcgbmFtZT0idXNlcl9kaWN0X3NldHRpbmdzX2FkZF9kaWFsb2dfY29uZmlybSI+T0s8L3N0cmluZz4KKyAgICA8IS0tIFVzZXIgZGljdGlvbmFyeSBzZXR0aW5ncy4gTGFiZWwgdG8gcHV0IGJlZm9yZSB0aGUgd29yZCBmaWVsZCAodGhhdCdzIHRoZSB3b3JkIHRoYXQgd2lsbCBhY3R1YWxseSBiZSBhZGRlZCB0byB0aGUgdXNlciBkaWN0aW9uYXJ5IHdoZW4gT0sgaXMgcHJlc3NlZCkuIFtDSEFSIExJTUlUPTIwXSAtLT4KKyAgICA8IS0tIFRoaXMgcmVzb3VyY2UgaXMgY29ycmVzcG9uZGluZyB0byBtc2dpZD0iNzg2ODg3OTE3NDkwNTk2MzEzNSIgLS0+CisgICAgPHN0cmluZyBuYW1lPSJ1c2VyX2RpY3Rfc2V0dGluZ3NfYWRkX3dvcmRfb3B0aW9uX25hbWUiPldvcmQ6PC9zdHJpbmc+CisgICAgPCEtLSBVc2VyIGRpY3Rpb25hcnkgc2V0dGluZ3MuIExhYmVsIHRvIHB1dCBiZWZvcmUgdGhlIHNob3J0Y3V0IGZpZWxkIChvbmNlIGEgc2hvcnRjdXQgaXMgcmVnaXN0ZXJlZCwgdGhlIHVzZXIgY2FuIHR5cGUgdGhlIHNob3J0Y3V0IGFuZCBnZXQgdGhlIHdvcmQgaXQgcG9pbnRzIHRvIGluIHRoZSBzdWdnZXN0aW9ucykuIFtDSEFSIExJTUlUPTIwXSAtLT4KKyAgICA8IS0tIFRoaXMgcmVzb3VyY2UgaXMgY29ycmVzcG9uZGluZyB0byBtc2dpZD0iNjYwMDg5MjU4ODY2MDYzOTI1IiAtLT4KKyAgICA8c3RyaW5nIG5hbWU9InVzZXJfZGljdF9zZXR0aW5nc19hZGRfc2hvcnRjdXRfb3B0aW9uX25hbWUiPlNob3J0Y3V0Ojwvc3RyaW5nPgorICAgIDwhLS0gVXNlciBkaWN0aW9uYXJ5IHNldHRpbmdzLiBMYWJlbCB0byBwdXQgYmVmb3JlIHRoZSBsYW5ndWFnZSBmaWVsZC4gW0NIQVIgTElNSVQ9MjBdIC0tPgorICAgIDwhLS0gVGhpcyByZXNvdXJjZSBpcyBjb3JyZXNwb25kaW5nIHRvIG1zZ2lkPSI1Njk2MzU4MzE3MDYxMzE4NTMyIiAtLT4KKyAgICA8c3RyaW5nIG5hbWU9InVzZXJfZGljdF9zZXR0aW5nc19hZGRfbG9jYWxlX29wdGlvbl9uYW1lIj5MYW5ndWFnZTo8L3N0cmluZz4KKyAgICA8IS0tIFVzZXIgZGljdGlvbmFyeSBzZXR0aW5ncy4gSGludCBmb3IgdGhlIHRleHQgZmllbGQgdG8gdHlwZSB0aGUgd29yZCB0byBhZGQgdG8gdGhlIHVzZXIgZGljdGlvbmFyeS4gW0NIQVIgTElNSVQ9MzVdIC0tPgorICAgIDwhLS0gVGhpcyByZXNvdXJjZSBpcyBjb3JyZXNwb25kaW5nIHRvIG1zZ2lkPSI1NzI1MjU0MDc2NTU2ODIxMjQ3IiAtLT4KKyAgICA8c3RyaW5nIG5hbWU9InVzZXJfZGljdF9zZXR0aW5nc19hZGRfd29yZF9oaW50Ij5UeXBlIGEgd29yZDwvc3RyaW5nPgorICAgIDwhLS0gVXNlciBkaWN0aW9uYXJ5IHNldHRpbmdzLiBIaW50IGZvciB0aGUgdGV4dCBmaWVsZCB0byB0eXBlIHRoZSBvcHRpb25hbCBzaG9ydGN1dCB0byBhZGQgdG8gdGhlIHVzZXIgZGljdGlvbmFyeS4gW0NIQVIgTElNSVQ9MzVdIC0tPgorICAgIDwhLS0gVGhpcyByZXNvdXJjZSBpcyBjb3JyZXNwb25kaW5nIHRvIG1zZ2lkPSI3MzMzNzYzNDU2NTYxODczNDQ1IiAtLT4KKyAgICA8c3RyaW5nIG5hbWU9InVzZXJfZGljdF9zZXR0aW5nc19hZGRfc2hvcnRjdXRfaGludCI+T3B0aW9uYWwgc2hvcnRjdXQ8L3N0cmluZz4KKyAgICA8IS0tIFVzZXIgZGljdGlvbmFyeSBzZXR0aW5ncy4gVGhlIHRpdGxlIG9mIHRoZSBkaWFsb2cgdG8gZWRpdCBhbiBleGlzdGluZyB3b3JkIGluIHRoZSB1c2VyIGRpY3Rpb25hcnkuIC0tPgorICAgIDwhLS0gVGhpcyByZXNvdXJjZSBpcyBjb3JyZXNwb25kaW5nIHRvIG1zZ2lkPSI4OTY3NDc2NDQ0ODQwNTQ4Njc0IiAtLT4KKyAgICA8c3RyaW5nIG5hbWU9InVzZXJfZGljdF9zZXR0aW5nc19lZGl0X2RpYWxvZ190aXRsZSI+RWRpdCB3b3JkPC9zdHJpbmc+CisgICAgPCEtLSBVc2VyIGRpY3Rpb25hcnkgc2V0dGluZ3MuIFRoZSB0aXRsZSBvZiB0aGUgY29udGV4dCBtZW51IGl0ZW0gdG8gZWRpdCB0aGUgY3VycmVudCB3b3JkIC0tPgorICAgIDwhLS0gVGhpcyByZXNvdXJjZSBpcyBjb3JyZXNwb25kaW5nIHRvIG1zZ2lkPSIyMjEwNTY0ODc5MzIwMDA0ODM3IiAtLT4KKyAgICA8c3RyaW5nIG5hbWU9InVzZXJfZGljdF9zZXR0aW5nc19jb250ZXh0X21lbnVfZWRpdF90aXRsZSI+RWRpdDwvc3RyaW5nPgorICAgIDwhLS0gVXNlciBkaWN0aW9uYXJ5IHNldHRpbmdzLiBUaGUgdGl0bGUgb2YgdGhlIGNvbnRleHQgbWVudSBpdGVtIHRvIGRlbGV0ZSB0aGUgY3VycmVudCB3b3JkIC0tPgorICAgIDwhLS0gVGhpcyByZXNvdXJjZSBpcyBjb3JyZXNwb25kaW5nIHRvIG1zZ2lkPSI5MTQwNzAzOTEzNzc2NTQ5MDU0IiAtLT4KKyAgICA8c3RyaW5nIG5hbWU9InVzZXJfZGljdF9zZXR0aW5nc19jb250ZXh0X21lbnVfZGVsZXRlX3RpdGxlIj5EZWxldGU8L3N0cmluZz4KKyAgICA8IS0tIFVzZXIgZGljdGlvbmFyeSBzZXR0aW5ncy4gVGhlIHRleHQgdG8gc2hvdyB3aGVuIHRoZXJlIGFyZSBubyB1c2VyLWRlZmluZWQgd29yZHMgaW4gdGhlIGRpY3Rpb25hcnkgIFtDSEFSIExJTUlUPTIwMF0gLS0+CisgICAgPCEtLSBUaGlzIHJlc291cmNlIGlzIGNvcnJlc3BvbmRpbmcgdG8gbXNnaWQ9IjgxNjUyNzMzNzk5NDIxMDUyNzEiIC0tPgorICAgIDxzdHJpbmcgbmFtZT0idXNlcl9kaWN0X3NldHRpbmdzX2VtcHR5X3RleHQiPllvdSBkb25cJ3QgaGF2ZSBhbnkgd29yZHMgaW4gdGhlIHVzZXIgZGljdGlvbmFyeS4gQWRkIGEgd29yZCBieSB0b3VjaGluZyB0aGUgQWRkICgrKSBidXR0b24uPC9zdHJpbmc+CisgICAgPCEtLSBVc2VyIGRpY3Rpb25hcnkgc2V0dGluZ3MuIFRoZSBsaXN0IGl0ZW0gdG8gY2hvb3NlIHRvIGluc2VydCBhIHdvcmQgaW50byB0aGUgdXNlciBkaWN0aW9uYXJ5IGZvciBhbGwgbGFuZ3VhZ2VzIC0tPgorICAgIDwhLS0gVGhpcyByZXNvdXJjZSBpcyBjb3JyZXNwb25kaW5nIHRvIG1zZ2lkPSI2NzQyMDAwMDQwOTc1OTU5MjQ3IiAtLT4KKyAgICA8c3RyaW5nIG5hbWU9InVzZXJfZGljdF9zZXR0aW5nc19hbGxfbGFuZ3VhZ2VzIj5Gb3IgYWxsIGxhbmd1YWdlczwvc3RyaW5nPgorICAgIDwhLS0gVXNlciBkaWN0aW9uYXJ5IHNldHRpbmdzLiBUaGUgdGV4dCB0byBzaG93IGZvciB0aGUgb3B0aW9uIHRoYXQgc2hvd3MgdGhlIGVudGlyZSBsaXN0IG9mIHN1cHBvcnRlZCBsb2NhbGVzIHRvIGNob29zZSBvbmUgW0NIQVIgTElNSVQ9MzBdIC0tPgorICAgIDwhLS0gVGhpcyByZXNvdXJjZSBpcyBjb3JyZXNwb25kaW5nIHRvIG1zZ2lkPSI3MzE2Mzc1OTQ0Njg0OTc3OTEwIiAtLT4KKyAgICA8c3RyaW5nIG5hbWU9InVzZXJfZGljdF9zZXR0aW5nc19tb3JlX2xhbmd1YWdlcyI+TW9yZSBsYW5ndWFnZXPigKY8L3N0cmluZz4KKyAgICA8IS0tIFVzZXIgZGljdGlvbmFyeSBzZXR0aW5ncy4gTGFiZWwgdG8gZGVsZXRlIGFuIGVudHJ5IGluIHRoZSB1c2VyIGRpY3Rpb25hcnkgW0NIQVIgTElNSVQ9MzBdCisgICAgICAgICBUaGlzIHJlc291cmNlIGlzIGNvcGllZCBmcm9tIHBhY2thZ2VzL2FwcHMvU2V0dGluZ3MvcmVzL3ZhbHVlcy9zdHJpbmdzLnhtbCAtLT4KKyAgICA8IS0tIFRoaXMgcmVzb3VyY2UgaXMgY29ycmVzcG9uZGluZyB0byBtc2dpZD0iNDIxOTI0MzQxMjMyNTE2MzAwMyIgLS0+CisgICAgPHN0cmluZyBuYW1lPSJ1c2VyX2RpY3Rfc2V0dGluZ3NfZGVsZXRlIj5EZWxldGU8L3N0cmluZz4KKyAgICA8IS0tIFVzZXIgZGljdGlvbmFyeSBzZXR0aW5ncy4gSW5kZXggb2YgdGhlIHVzZXIgZGljdGlvbmFyeSBbQ0hBUiBMSU1JVD0zMF0KKyAgICAgICAgIFRoaXMgcmVzb3VyY2UgaXMgY29waWVkIGZyb20gcGFja2FnZXMvYXBwcy9TZXR0aW5ncy9yZXMvdmFsdWVzL3N0cmluZ3MueG1sIC0tPgorICAgIDwhLS0gVGhpcyByZXNvdXJjZSBpcyBjb3JyZXNwb25kaW5nIHRvIG1zZ2lkPSI1NDMzMjc1NDg1NDk5MDM5MTk5IiAtLT4KKyAgICA8c3RyaW5nIG5hbWU9InVzZXJfZGljdF9mYXN0X3Njcm9sbF9hbHBoYWJldCI+XHUwMDIwQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVo8L3N0cmluZz4KIDwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvamF2YS9yZXMvdmFsdWVzL3N0eWxlcy54bWwgYi9qYXZhL3Jlcy92YWx1ZXMvc3R5bGVzLnhtbAppbmRleCA0MzZlMDgwLi5kYWQ3ZTIwIDEwMDY0NAotLS0gYS9qYXZhL3Jlcy92YWx1ZXMvc3R5bGVzLnhtbAorKysgYi9qYXZhL3Jlcy92YWx1ZXMvc3R5bGVzLnhtbApAQCAtOTQsOCArOTQsMTAgQEAKICAgICAgICAgPGl0ZW0gbmFtZT0ic2hvd01vcmVLZXlzS2V5Ym9hcmRBdFRvdWNoZWRQb2ludCI+QGJvb2wvY29uZmlnX3Nob3dfbW9yZV9rZXlzX2tleWJvYXJkX2F0X3RvdWNoZWRfcG9pbnQ8L2l0ZW0+CiAgICAgICAgIDxpdGVtIG5hbWU9Imxhbmd1YWdlT25TcGFjZWJhckZpbmFsQWxwaGEiPkBpbnRlZ2VyL2NvbmZpZ19sYW5ndWFnZV9vbl9zcGFjZWJhcl9maW5hbF9hbHBoYTwvaXRlbT4KICAgICAgICAgPGl0ZW0gbmFtZT0ibGFuZ3VhZ2VPblNwYWNlYmFyRmFkZW91dEFuaW1hdG9yIj5AYW5pbS9sYW5ndWFnZV9vbl9zcGFjZWJhcl9mYWRlb3V0PC9pdGVtPgorICAgICAgICA8IS0tIFJlbW92ZSBhbmltYXRpb25zIGZvciBub3cgYmVjYXVzZSBpdCBjb3VsZCBkcmFpbiBhIG5vbi1uZWdsaWdpYmxlIGFtb3VudCBvZiBiYXR0ZXJ5IHdoaWxlIHR5cGluZy4KICAgICAgICAgPGl0ZW0gbmFtZT0iYWx0Q29kZUtleVdoaWxlVHlwaW5nRmFkZW91dEFuaW1hdG9yIj5AYW5pbS9hbHRfY29kZV9rZXlfd2hpbGVfdHlwaW5nX2ZhZGVvdXQ8L2l0ZW0+CiAgICAgICAgIDxpdGVtIG5hbWU9ImFsdENvZGVLZXlXaGlsZVR5cGluZ0ZhZGVpbkFuaW1hdG9yIj5AYW5pbS9hbHRfY29kZV9rZXlfd2hpbGVfdHlwaW5nX2ZhZGVpbjwvaXRlbT4KKyAgICAgICAgLS0+CiAgICAgICAgIDwhLS0gQ29tbW9uIGF0dHJpYnV0ZXMgb2YgTWFpbktleWJvYXJkVmlldyBmb3IgZ2VzdHVyZSB0eXBpbmcgZGV0ZWN0aW9uIGFuZCByZWNvZ25pdGlvbiAtLT4KICAgICAgICAgPGl0ZW0gbmFtZT0iZ2VzdHVyZUZsb2F0aW5nUHJldmlld1RleHRMaW5nZXJUaW1lb3V0Ij5AaW50ZWdlci9jb25maWdfZ2VzdHVyZV9mbG9hdGluZ19wcmV2aWV3X3RleHRfbGluZ2VyX3RpbWVvdXQ8L2l0ZW0+CiAgICAgICAgIDxpdGVtIG5hbWU9Imdlc3R1cmVTdGF0aWNUaW1lVGhyZXNob2xkQWZ0ZXJGYXN0VHlwaW5nIj5AaW50ZWdlci9jb25maWdfZ2VzdHVyZV9zdGF0aWNfdGltZV90aHJlc2hvbGRfYWZ0ZXJfZmFzdF90eXBpbmc8L2l0ZW0+CmRpZmYgLS1naXQgYS9qYXZhL3Jlcy94bWwvcHJlZnMueG1sIGIvamF2YS9yZXMveG1sL3ByZWZzLnhtbAppbmRleCAxNTgxZTVmLi41MWUzNDIwIDEwMDY0NAotLS0gYS9qYXZhL3Jlcy94bWwvcHJlZnMueG1sCisrKyBiL2phdmEvcmVzL3htbC9wcmVmcy54bWwKQEAgLTU0LDYgKzU0LDExIEBACiAgICAgICAgIGFuZHJvaWQ6dGl0bGU9IkBzdHJpbmcvY29ycmVjdGlvbl9jYXRlZ29yeSIKICAgICAgICAgYW5kcm9pZDprZXk9ImNvcnJlY3Rpb25fc2V0dGluZ3MiPgogICAgICAgICA8UHJlZmVyZW5jZVNjcmVlbgorICAgICAgICAgICAgYW5kcm9pZDprZXk9ImVkaXRfcGVyc29uYWxfZGljdGlvbmFyeSIKKyAgICAgICAgICAgIGFuZHJvaWQ6dGl0bGU9IkBzdHJpbmcvZWRpdF9wZXJzb25hbF9kaWN0aW9uYXJ5Ij4KKyAgICAgICAgICAgIDxpbnRlbnQgYW5kcm9pZDphY3Rpb249ImFuZHJvaWQuc2V0dGluZ3MuVVNFUl9ESUNUSU9OQVJZX1NFVFRJTkdTIiAvPgorICAgICAgICA8L1ByZWZlcmVuY2VTY3JlZW4+CisgICAgICAgIDxQcmVmZXJlbmNlU2NyZWVuCiAgICAgICAgICAgICBhbmRyb2lkOmtleT0iY29uZmlndXJlX2RpY3Rpb25hcmllc19rZXkiCiAgICAgICAgICAgICBhbmRyb2lkOnRpdGxlPSJAc3RyaW5nL2NvbmZpZ3VyZV9kaWN0aW9uYXJpZXNfdGl0bGUiPgogICAgICAgICAgICA8aW50ZW50CkBAIC02NCw2ICs2OSwxMiBAQAogICAgICAgICAgICAgICAgICBhbmRyb2lkOnZhbHVlPSJAc3RyaW5nL2RpY3Rpb25hcnlfcGFja19jbGllbnRfaWQiIC8+CiAgICAgICAgICAgIDwvaW50ZW50PgogICAgICAgICA8L1ByZWZlcmVuY2VTY3JlZW4+CisgICAgICAgIDxDaGVja0JveFByZWZlcmVuY2UKKyAgICAgICAgICAgIGFuZHJvaWQ6a2V5PSJwcmVmX2tleV9ibG9ja19wb3RlbnRpYWxseV9vZmZlbnNpdmUiCisgICAgICAgICAgICBhbmRyb2lkOnRpdGxlPSJAc3RyaW5nL3ByZWZzX2Jsb2NrX3BvdGVudGlhbGx5X29mZmVuc2l2ZV90aXRsZSIKKyAgICAgICAgICAgIGFuZHJvaWQ6c3VtbWFyeT0iQHN0cmluZy9wcmVmc19ibG9ja19wb3RlbnRpYWxseV9vZmZlbnNpdmVfc3VtbWFyeSIKKyAgICAgICAgICAgIGFuZHJvaWQ6cGVyc2lzdGVudD0idHJ1ZSIKKyAgICAgICAgICAgIGFuZHJvaWQ6ZGVmYXVsdFZhbHVlPSJAYm9vbC9jb25maWdfYmxvY2tfcG90ZW50aWFsbHlfb2ZmZW5zaXZlIiAvPgogICAgICAgICA8TGlzdFByZWZlcmVuY2UKICAgICAgICAgICAgIGFuZHJvaWQ6a2V5PSJhdXRvX2NvcnJlY3Rpb25fdGhyZXNob2xkIgogICAgICAgICAgICAgYW5kcm9pZDp0aXRsZT0iQHN0cmluZy9hdXRvX2NvcnJlY3Rpb24iCkBAIC0xNzIsMTYgKzE4MywxOSBAQAogICAgICAgICAgICAgICAgIGFuZHJvaWQ6a2V5PSJwcmVmX2tleXByZXNzX3NvdW5kX3ZvbHVtZSIKICAgICAgICAgICAgICAgICBhbmRyb2lkOnRpdGxlPSJAc3RyaW5nL3ByZWZzX2tleXByZXNzX3NvdW5kX3ZvbHVtZV9zZXR0aW5ncyIKICAgICAgICAgICAgICAgICBsYXRpbjptYXhWYWx1ZT0iMTAwIiAvPiA8IS0tIHBlcmNlbnQgLS0+Ci0gICAgICAgICAgICA8IS0tIFRoZSBzaG93IHNldHVwIHdpemFyZCBpY29uIHNldHRpbmdzIHNob3VsZG4ndCBiZSBwZXJzaXN0ZW50IGFuZCB0aGUgZGVmYXVsdCB2YWx1ZQotICAgICAgICAgICAgICAgICBpcyBhZGRlZCBwcm9ncmFtbWF0aWNhbGx5LiAtLT4KKyAgICAgICAgICAgIDwhLS0gVGhlIHNldHRpZ3MgZm9yIHNob3dpbmcgc2V0dXAgd2l6YXJkIGFwcGxpY2F0aW9uIGljb24gc2hvdWxkbid0IGJlIHBlcnNpc3RlbnQgYW5kCisgICAgICAgICAgICAgICAgIHRoZSBkZWZhdWx0IHZhbHVlIGlzIGFkZGVkIHByb2dyYW1tYXRpY2FsbHkuIC0tPgogICAgICAgICAgICAgPENoZWNrQm94UHJlZmVyZW5jZQogICAgICAgICAgICAgICAgIGFuZHJvaWQ6a2V5PSJwcmVmX3Nob3dfc2V0dXBfd2l6YXJkX2ljb24iCi0gICAgICAgICAgICAgICAgYW5kcm9pZDp0aXRsZT0iQHN0cmluZy9zaG93X3NldHVwX3dpemFyZF9pY29uIiAvPgorICAgICAgICAgICAgICAgIGFuZHJvaWQ6dGl0bGU9IkBzdHJpbmcvc2hvd19zZXR1cF93aXphcmRfaWNvbiIKKyAgICAgICAgICAgICAgICBhbmRyb2lkOnN1bW1hcnk9IkBzdHJpbmcvc2hvd19zZXR1cF93aXphcmRfaWNvbl9zdW1tYXJ5IiAvPgogICAgICAgICA8L1ByZWZlcmVuY2VTY3JlZW4+CiAgICAgICAgIDxQcmVmZXJlbmNlU2NyZWVuCiAgICAgICAgICAgICBhbmRyb2lkOmtleT0ic2VuZF9mZWVkYmFjayIKICAgICAgICAgICAgIGFuZHJvaWQ6dGl0bGU9IkBzdHJpbmcvc2VuZF9mZWVkYmFjayIgLz4KICAgICAgICAgPFByZWZlcmVuY2VTY3JlZW4KKyAgICAgICAgICAgIGFuZHJvaWQ6a2V5PSJhYm91dF9rZXlib2FyZCIgLz4KKyAgICAgICAgPFByZWZlcmVuY2VTY3JlZW4KICAgICAgICAgICAgIGFuZHJvaWQ6a2V5PSJkZWJ1Z19zZXR0aW5ncyIKICAgICAgICAgICAgIGFuZHJvaWQ6dGl0bGU9IkRlYnVnIHNldHRpbmdzIgogICAgICAgICAgICAgYW5kcm9pZDpwZXJzaXN0ZW50PSJ0cnVlIgpkaWZmIC0tZ2l0IGEvamF2YS9yZXMveG1sL3NwZWxsY2hlY2tlci54bWwgYi9qYXZhL3Jlcy94bWwvc3BlbGxjaGVja2VyLnhtbAppbmRleCA4MTMzMTljLi4xM2U2MTMyIDEwMDY0NAotLS0gYS9qYXZhL3Jlcy94bWwvc3BlbGxjaGVja2VyLnhtbAorKysgYi9qYXZhL3Jlcy94bWwvc3BlbGxjaGVja2VyLnhtbApAQCAtMjEsNyArMjEsNyBAQAogICAgICBmb3IgdGhlIHNwZWxsIGNoZWNrZXIgLS0+CiAKIDxzcGVsbC1jaGVja2VyIHhtbG5zOmFuZHJvaWQ9Imh0dHA6Ly9zY2hlbWFzLmFuZHJvaWQuY29tL2Fway9yZXMvYW5kcm9pZCIKLSAgICAgICAgYW5kcm9pZDpsYWJlbD0iQHN0cmluZy9hb3NwX3NwZWxsX2NoZWNrZXJfc2VydmljZV9uYW1lIgorICAgICAgICBhbmRyb2lkOmxhYmVsPSJAc3RyaW5nL3NwZWxsX2NoZWNrZXJfc2VydmljZV9uYW1lIgogICAgICAgICBhbmRyb2lkOnNldHRpbmdzQWN0aXZpdHk9ImNvbS5hbmRyb2lkLmlucHV0bWV0aG9kLmxhdGluLnNwZWxsY2hlY2suU3BlbGxDaGVja2VyU2V0dGluZ3NBY3Rpdml0eSI+CiAgICAgPHN1YnR5cGUKICAgICAgICAgICAgIGFuZHJvaWQ6bGFiZWw9IkBzdHJpbmcvc3VidHlwZV9nZW5lcmljIgpkaWZmIC0tZ2l0IGEvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvY29tcGF0L1RleHRWaWV3Q29tcGF0VXRpbHMuamF2YSBiL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2NvbXBhdC9UZXh0Vmlld0NvbXBhdFV0aWxzLmphdmEKaW5kZXggZDRmMWVhOC4uZjhlMTkwMiAxMDA2NDQKLS0tIGEvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvY29tcGF0L1RleHRWaWV3Q29tcGF0VXRpbHMuamF2YQorKysgYi9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9jb21wYXQvVGV4dFZpZXdDb21wYXRVdGlscy5qYXZhCkBAIC0yMiwyMyArMjIsMjMgQEAKIGltcG9ydCBqYXZhLmxhbmcucmVmbGVjdC5NZXRob2Q7CiAKIHB1YmxpYyBmaW5hbCBjbGFzcyBUZXh0Vmlld0NvbXBhdFV0aWxzIHsKLSAgICAvLyBOb3RlIHRoYXQgVGV4dFZpZXcuc2V0Q29tcG91bmREcmF3YWJsZXNSZWxhdGl2ZShEcmF3YWJsZSxEcmF3YWJsZSxEcmF3YWJsZSxEcmF3YWJsZSkgaGFzCi0gICAgLy8gYmVlbiBpbnRyb2R1Y2VkIGluIEFQSSBsZXZlbCAxNyAoQnVpbGQuVkVSU0lPTl9DT0RFLkpFTExZX0JFQU5fTVIxKS4KLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBNZXRob2QgTUVUSE9EX3NldENvbXBvdW5kRHJhd2FibGVzUmVsYXRpdmUgPSBDb21wYXRVdGlscy5nZXRNZXRob2QoCi0gICAgICAgICAgICBUZXh0Vmlldy5jbGFzcywgInNldENvbXBvdW5kRHJhd2FibGVzUmVsYXRpdmUiLAorICAgIC8vIE5vdGUgdGhhdCBUZXh0Vmlldy5zZXRDb21wb3VuZERyYXdhYmxlc1JlbGF0aXZlV2l0aEludHJpbnNpY0JvdW5kcyhEcmF3YWJsZSxEcmF3YWJsZSwKKyAgICAvLyBEcmF3YWJsZSxEcmF3YWJsZSkgaGFzIGJlZW4gaW50cm9kdWNlZCBpbiBBUEkgbGV2ZWwgMTcgKEJ1aWxkLlZFUlNJT05fQ09ERS5KRUxMWV9CRUFOX01SMSkuCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgTWV0aG9kIE1FVEhPRF9zZXRDb21wb3VuZERyYXdhYmxlc1JlbGF0aXZlV2l0aEludHJpbnNpY0JvdW5kcyA9CisgICAgICAgICAgICBDb21wYXRVdGlscy5nZXRNZXRob2QoVGV4dFZpZXcuY2xhc3MsICJzZXRDb21wb3VuZERyYXdhYmxlc1JlbGF0aXZlV2l0aEludHJpbnNpY0JvdW5kcyIsCiAgICAgICAgICAgICBEcmF3YWJsZS5jbGFzcywgRHJhd2FibGUuY2xhc3MsIERyYXdhYmxlLmNsYXNzLCBEcmF3YWJsZS5jbGFzcyk7CiAKICAgICBwcml2YXRlIFRleHRWaWV3Q29tcGF0VXRpbHMoKSB7CiAgICAgICAgIC8vIFRoaXMgdXRpbGl0eSBjbGFzcyBpcyBub3QgcHVibGljbHkgaW5zdGFudGlhYmxlLgogICAgIH0KIAotICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBzZXRDb21wb3VuZERyYXdhYmxlc1JlbGF0aXZlKGZpbmFsIFRleHRWaWV3IHRleHRWaWV3LCBmaW5hbCBEcmF3YWJsZSBzdGFydCwKLSAgICAgICAgICAgIGZpbmFsIERyYXdhYmxlIHRvcCwgZmluYWwgRHJhd2FibGUgZW5kLCBmaW5hbCBEcmF3YWJsZSBib3R0b20pIHsKLSAgICAgICAgaWYgKE1FVEhPRF9zZXRDb21wb3VuZERyYXdhYmxlc1JlbGF0aXZlID09IG51bGwpIHsKLSAgICAgICAgICAgIHRleHRWaWV3LnNldENvbXBvdW5kRHJhd2FibGVzKHN0YXJ0LCB0b3AsIGVuZCwgYm90dG9tKTsKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgc2V0Q29tcG91bmREcmF3YWJsZXNSZWxhdGl2ZVdpdGhJbnRyaW5zaWNCb3VuZHMoZmluYWwgVGV4dFZpZXcgdGV4dFZpZXcsCisgICAgICAgICAgICBmaW5hbCBEcmF3YWJsZSBzdGFydCwgZmluYWwgRHJhd2FibGUgdG9wLCBmaW5hbCBEcmF3YWJsZSBlbmQsIGZpbmFsIERyYXdhYmxlIGJvdHRvbSkgeworICAgICAgICBpZiAoTUVUSE9EX3NldENvbXBvdW5kRHJhd2FibGVzUmVsYXRpdmVXaXRoSW50cmluc2ljQm91bmRzID09IG51bGwpIHsKKyAgICAgICAgICAgIHRleHRWaWV3LnNldENvbXBvdW5kRHJhd2FibGVzV2l0aEludHJpbnNpY0JvdW5kcyhzdGFydCwgdG9wLCBlbmQsIGJvdHRvbSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgQ29tcGF0VXRpbHMuaW52b2tlKHRleHRWaWV3LCBudWxsLCBNRVRIT0Rfc2V0Q29tcG91bmREcmF3YWJsZXNSZWxhdGl2ZSwKKyAgICAgICAgQ29tcGF0VXRpbHMuaW52b2tlKHRleHRWaWV3LCBudWxsLCBNRVRIT0Rfc2V0Q29tcG91bmREcmF3YWJsZXNSZWxhdGl2ZVdpdGhJbnRyaW5zaWNCb3VuZHMsCiAgICAgICAgICAgICAgICAgc3RhcnQsIHRvcCwgZW5kLCBib3R0b20pOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2NvbXBhdC9Vc2VyRGljdGlvbmFyeUNvbXBhdFV0aWxzLmphdmEgYi9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9jb21wYXQvVXNlckRpY3Rpb25hcnlDb21wYXRVdGlscy5qYXZhCmluZGV4IGZmNjU2MWMuLmEwZDc2NDEgMTAwNjQ0Ci0tLSBhL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2NvbXBhdC9Vc2VyRGljdGlvbmFyeUNvbXBhdFV0aWxzLmphdmEKKysrIGIvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvY29tcGF0L1VzZXJEaWN0aW9uYXJ5Q29tcGF0VXRpbHMuamF2YQpAQCAtMjgsNiArMjgsNyBAQAogICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIE1ldGhvZCBNRVRIT0RfYWRkV29yZCA9IENvbXBhdFV0aWxzLmdldE1ldGhvZChXb3Jkcy5jbGFzcywgImFkZFdvcmQiLAogICAgICAgICAgICAgQ29udGV4dC5jbGFzcywgU3RyaW5nLmNsYXNzLCBJbnRlZ2VyLlRZUEUsIFN0cmluZy5jbGFzcywgTG9jYWxlLmNsYXNzKTsKIAorICAgIEBTdXBwcmVzc1dhcm5pbmdzKCJkZXByZWNhdGlvbiIpCiAgICAgcHVibGljIHN0YXRpYyB2b2lkIGFkZFdvcmQoZmluYWwgQ29udGV4dCBjb250ZXh0LCBmaW5hbCBTdHJpbmcgd29yZCwgZmluYWwgaW50IGZyZXEsCiAgICAgICAgICAgICBmaW5hbCBTdHJpbmcgc2hvcnRjdXQsIGZpbmFsIExvY2FsZSBsb2NhbGUpIHsKICAgICAgICAgaWYgKGhhc05ld2VyQWRkV29yZCgpKSB7CkBAIC0zOSwxMyArNDAsMTggQEAKICAgICAgICAgICAgIGlmIChudWxsID09IGxvY2FsZSkgewogICAgICAgICAgICAgICAgIGxvY2FsZVR5cGUgPSBXb3Jkcy5MT0NBTEVfVFlQRV9BTEw7CiAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGxvY2FsZVR5cGUgPSBXb3Jkcy5MT0NBTEVfVFlQRV9DVVJSRU5UOworICAgICAgICAgICAgICAgIGZpbmFsIExvY2FsZSBjdXJyZW50TG9jYWxlID0gY29udGV4dC5nZXRSZXNvdXJjZXMoKS5nZXRDb25maWd1cmF0aW9uKCkubG9jYWxlOworICAgICAgICAgICAgICAgIGlmIChsb2NhbGUuZXF1YWxzKGN1cnJlbnRMb2NhbGUpKSB7CisgICAgICAgICAgICAgICAgICAgIGxvY2FsZVR5cGUgPSBXb3Jkcy5MT0NBTEVfVFlQRV9DVVJSRU5UOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGxvY2FsZVR5cGUgPSBXb3Jkcy5MT0NBTEVfVFlQRV9BTEw7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICAgICAgV29yZHMuYWRkV29yZChjb250ZXh0LCB3b3JkLCBmcmVxLCBsb2NhbGVUeXBlKTsKICAgICAgICAgfQogICAgIH0KIAotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGJvb2xlYW4gaGFzTmV3ZXJBZGRXb3JkKCkgeworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgYm9vbGVhbiBoYXNOZXdlckFkZFdvcmQoKSB7CiAgICAgICAgIHJldHVybiBudWxsICE9IE1FVEhPRF9hZGRXb3JkOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2RpY3Rpb25hcnlwYWNrL0FjdGlvbkJhdGNoLmphdmEgYi9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9kaWN0aW9uYXJ5cGFjay9BY3Rpb25CYXRjaC5qYXZhCmluZGV4IGRmNGE1MmYuLmJmMjIzMDUgMTAwNjQ0Ci0tLSBhL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2RpY3Rpb25hcnlwYWNrL0FjdGlvbkJhdGNoLmphdmEKKysrIGIvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvZGljdGlvbmFyeXBhY2svQWN0aW9uQmF0Y2guamF2YQpAQCAtMTM4LDcgKzEzOCwxMiBAQAogICAgICAgICAgICAgaWYgKG51bGwgPT0gbWFuYWdlcikgcmV0dXJuOwogCiAgICAgICAgICAgICAvLyBUaGlzIGlzIGFuIHVwZ3JhZGVkIHdvcmQgbGlzdDogd2Ugc2hvdWxkIGRvd25sb2FkIGl0LgotICAgICAgICAgICAgZmluYWwgVXJpIHVyaSA9IFVyaS5wYXJzZShtV29yZExpc3QubVJlbW90ZUZpbGVuYW1lKTsKKyAgICAgICAgICAgIC8vIEFkZGluZyBhIGRpc2FtYmlndWF0b3IgdG8gY2lyY3VtdmVudCBhIGJ1ZyBpbiBvbGRlciB2ZXJzaW9ucyBvZiBEb3dubG9hZE1hbmFnZXIuCisgICAgICAgICAgICAvLyBEb3dubG9hZE1hbmFnZXIgYWxzbyBzdHVwaWRseSBjdXRzIHRoZSBleHRlbnNpb24gdG8gcmVwbGFjZSB3aXRoIGl0cyBvd24gdGhhdCBpdAorICAgICAgICAgICAgLy8gZ2V0cyBmcm9tIHRoZSBjb250ZW50LXR5cGUuIFdlIG5lZWQgdG8gY2lyY3VtdmVudCB0aGlzLgorICAgICAgICAgICAgZmluYWwgU3RyaW5nIGRpc2FtYmlndWF0b3IgPSAiIyIgKyBTeXN0ZW0uY3VycmVudFRpbWVNaWxsaXMoKQorICAgICAgICAgICAgICAgICAgICArIGNvbS5hbmRyb2lkLmlucHV0bWV0aG9kLmxhdGluLlV0aWxzLmdldFZlcnNpb25OYW1lKGNvbnRleHQpICsgIi5kaWN0IjsKKyAgICAgICAgICAgIGZpbmFsIFVyaSB1cmkgPSBVcmkucGFyc2UobVdvcmRMaXN0Lm1SZW1vdGVGaWxlbmFtZSArIGRpc2FtYmlndWF0b3IpOwogICAgICAgICAgICAgZmluYWwgUmVxdWVzdCByZXF1ZXN0ID0gbmV3IFJlcXVlc3QodXJpKTsKIAogICAgICAgICAgICAgZmluYWwgUmVzb3VyY2VzIHJlcyA9IGNvbnRleHQuZ2V0UmVzb3VyY2VzKCk7CkBAIC0xNzQsNyArMTc5LDcgQEAKICAgICAgICAgICAgIGZpbmFsIGxvbmcgZG93bmxvYWRJZCA9IFVwZGF0ZUhhbmRsZXIucmVnaXN0ZXJEb3dubG9hZFJlcXVlc3QobWFuYWdlciwgcmVxdWVzdCwgZGIsCiAgICAgICAgICAgICAgICAgICAgIG1Xb3JkTGlzdC5tSWQsIG1Xb3JkTGlzdC5tVmVyc2lvbik7CiAgICAgICAgICAgICBVdGlscy5sKCJTdGFydGluZyBkb3dubG9hZCBvZiIsIHVyaSwgIndpdGggaWQiLCBkb3dubG9hZElkKTsKLSAgICAgICAgICAgIFByaXZhdGVMb2cubG9nKCJTdGFydGluZyBkb3dubG9hZCBvZiAiICsgdXJpICsgIiwgaWQgOiAiICsgZG93bmxvYWRJZCwgY29udGV4dCk7CisgICAgICAgICAgICBQcml2YXRlTG9nLmxvZygiU3RhcnRpbmcgZG93bmxvYWQgb2YgIiArIHVyaSArICIsIGlkIDogIiArIGRvd25sb2FkSWQpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0zMzMsNyArMzM4LDcgQEAKICAgICAgICAgICAgICAgICAgICAgbVdvcmRMaXN0Lm1SZW1vdGVGaWxlbmFtZSwgbVdvcmRMaXN0Lm1MYXN0VXBkYXRlLCBtV29yZExpc3QubUNoZWNrc3VtLAogICAgICAgICAgICAgICAgICAgICBtV29yZExpc3QubUZpbGVTaXplLCBtV29yZExpc3QubVZlcnNpb24sIG1Xb3JkTGlzdC5tRm9ybWF0VmVyc2lvbik7CiAgICAgICAgICAgICBQcml2YXRlTG9nLmxvZygiSW5zZXJ0ICdhdmFpbGFibGUnIHJlY29yZCBmb3IgIiArIG1Xb3JkTGlzdC5tRGVzY3JpcHRpb24KLSAgICAgICAgICAgICAgICAgICAgKyAiIGFuZCBsb2NhbGUgIiArIG1Xb3JkTGlzdC5tTG9jYWxlLCBjb250ZXh0KTsKKyAgICAgICAgICAgICAgICAgICAgKyAiIGFuZCBsb2NhbGUgIiArIG1Xb3JkTGlzdC5tTG9jYWxlKTsKICAgICAgICAgICAgIGRiLmluc2VydChNZXRhZGF0YURiSGVscGVyLk1FVEFEQVRBX1RBQkxFX05BTUUsIG51bGwsIHZhbHVlcyk7CiAgICAgICAgIH0KICAgICB9CkBAIC0zODMsNyArMzg4LDcgQEAKICAgICAgICAgICAgICAgICAgICAgbVdvcmRMaXN0Lm1DaGVja3N1bSwgbVdvcmRMaXN0Lm1GaWxlU2l6ZSwgbVdvcmRMaXN0Lm1WZXJzaW9uLAogICAgICAgICAgICAgICAgICAgICBtV29yZExpc3QubUZvcm1hdFZlcnNpb24pOwogICAgICAgICAgICAgUHJpdmF0ZUxvZy5sb2coIkluc2VydCAncHJlaW5zdGFsbGVkJyByZWNvcmQgZm9yICIgKyBtV29yZExpc3QubURlc2NyaXB0aW9uCi0gICAgICAgICAgICAgICAgICAgICsgIiBhbmQgbG9jYWxlICIgKyBtV29yZExpc3QubUxvY2FsZSwgY29udGV4dCk7CisgICAgICAgICAgICAgICAgICAgICsgIiBhbmQgbG9jYWxlICIgKyBtV29yZExpc3QubUxvY2FsZSk7CiAgICAgICAgICAgICBkYi5pbnNlcnQoTWV0YWRhdGFEYkhlbHBlci5NRVRBREFUQV9UQUJMRV9OQU1FLCBudWxsLCB2YWx1ZXMpOwogICAgICAgICB9CiAgICAgfQpAQCAtNDI0LDcgKzQyOSw3IEBACiAgICAgICAgICAgICAgICAgICAgIG1Xb3JkTGlzdC5tUmVtb3RlRmlsZW5hbWUsIG1Xb3JkTGlzdC5tTGFzdFVwZGF0ZSwgbVdvcmRMaXN0Lm1DaGVja3N1bSwKICAgICAgICAgICAgICAgICAgICAgbVdvcmRMaXN0Lm1GaWxlU2l6ZSwgbVdvcmRMaXN0Lm1WZXJzaW9uLCBtV29yZExpc3QubUZvcm1hdFZlcnNpb24pOwogICAgICAgICAgICAgUHJpdmF0ZUxvZy5sb2coIlVwZGF0aW5nIHJlY29yZCBmb3IgIiArIG1Xb3JkTGlzdC5tRGVzY3JpcHRpb24KLSAgICAgICAgICAgICAgICAgICAgKyAiIGFuZCBsb2NhbGUgIiArIG1Xb3JkTGlzdC5tTG9jYWxlLCBjb250ZXh0KTsKKyAgICAgICAgICAgICAgICAgICAgKyAiIGFuZCBsb2NhbGUgIiArIG1Xb3JkTGlzdC5tTG9jYWxlKTsKICAgICAgICAgICAgIGRiLnVwZGF0ZShNZXRhZGF0YURiSGVscGVyLk1FVEFEQVRBX1RBQkxFX05BTUUsIHZhbHVlcywKICAgICAgICAgICAgICAgICAgICAgTWV0YWRhdGFEYkhlbHBlci5XT1JETElTVElEX0NPTFVNTiArICIgPSA/IEFORCAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBNZXRhZGF0YURiSGVscGVyLlZFUlNJT05fQ09MVU1OICsgIiA9ID8iLApAQCAtNDc4LDEzICs0ODMsMTQgQEAKICAgICAgICAgICAgIGlmIChNZXRhZGF0YURiSGVscGVyLlNUQVRVU19JTlNUQUxMRUQgPT0gc3RhdHVzCiAgICAgICAgICAgICAgICAgICAgIHx8IE1ldGFkYXRhRGJIZWxwZXIuU1RBVFVTX0RJU0FCTEVEID09IHN0YXR1cwogICAgICAgICAgICAgICAgICAgICB8fCBNZXRhZGF0YURiSGVscGVyLlNUQVRVU19ERUxFVElORyA9PSBzdGF0dXMpIHsKLSAgICAgICAgICAgICAgICAvLyBJZiBpdCBpcyBpbnN0YWxsZWQgb3IgZGlzYWJsZWQsIHRoZW4gd2UgY2Fubm90IHJlbW92ZSB0aGUgZW50cnkgbGVzdCB0aGUgdXNlcgotICAgICAgICAgICAgICAgIC8vIGxvc2UgdGhlIGFiaWxpdHkgdG8gZGVsZXRlIHRoZSBmaWxlIG9yIG90aGVyd2lzZSBhZG1pbmlzdHJhdGUgaXQuIFdlIHdpbGwgdGh1cwotICAgICAgICAgICAgICAgIC8vIGxlYXZlIGl0IGFzIGlzLCBidXQgcmVtb3ZlIHRoZSBVUkkgZnJvbSB0aGUgZGF0YWJhc2Ugc2luY2UgaXQgaXMgbm90IHN1cHBvc2VkIHRvCi0gICAgICAgICAgICAgICAgLy8gYmUgYWNjZXNzaWJsZSBhbnkgbW9yZS4KKyAgICAgICAgICAgICAgICAvLyBJZiBpdCBpcyBpbnN0YWxsZWQgb3IgZGlzYWJsZWQsIHdlIG5lZWQgdG8gbWFyayBpdCBhcyBkZWxldGVkIHNvIHRoYXQgTGF0aW5JTUUKKyAgICAgICAgICAgICAgICAvLyB3aWxsIHJlbW92ZSBpdCBuZXh0IHRpbWUgaXQgZW5xdWlyZXMgZm9yIGRpY3Rpb25hcmllcy4KICAgICAgICAgICAgICAgICAvLyBJZiBpdCBpcyBkZWxldGluZyBhbmQgd2UgZG9uJ3QgaGF2ZSBhIG5ldyB2ZXJzaW9uLCB0aGVuIHdlIGhhdmUgdG8gd2FpdCB1bnRpbAotICAgICAgICAgICAgICAgIC8vIEFuZHJvaWQgS2V5Ym9hcmQgYWN0dWFsbHkgaGFzIGRlbGV0ZWQgaXQgYmVmb3JlIHdlIGNhbiByZW1vdmUgaXRzIG1ldGFkYXRhLgorICAgICAgICAgICAgICAgIC8vIExhdGluSU1FIGFjdHVhbGx5IGhhcyBkZWxldGVkIGl0IGJlZm9yZSB3ZSBjYW4gcmVtb3ZlIGl0cyBtZXRhZGF0YS4KKyAgICAgICAgICAgICAgICAvLyBJbiBib3RoIGNhc2VzLCByZW1vdmUgdGhlIFVSSSBmcm9tIHRoZSBkYXRhYmFzZSBzaW5jZSBpdCBpcyBub3Qgc3VwcG9zZWQgdG8KKyAgICAgICAgICAgICAgICAvLyBiZSBhY2Nlc3NpYmxlIGFueSBtb3JlLgogICAgICAgICAgICAgICAgIHZhbHVlcy5wdXQoTWV0YWRhdGFEYkhlbHBlci5SRU1PVEVfRklMRU5BTUVfQ09MVU1OLCAiIik7CisgICAgICAgICAgICAgICAgdmFsdWVzLnB1dChNZXRhZGF0YURiSGVscGVyLlNUQVRVU19DT0xVTU4sIE1ldGFkYXRhRGJIZWxwZXIuU1RBVFVTX0RFTEVUSU5HKTsKICAgICAgICAgICAgICAgICBkYi51cGRhdGUoTWV0YWRhdGFEYkhlbHBlci5NRVRBREFUQV9UQUJMRV9OQU1FLCB2YWx1ZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICBNZXRhZGF0YURiSGVscGVyLldPUkRMSVNUSURfQ09MVU1OICsgIiA9ID8gQU5EICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBNZXRhZGF0YURiSGVscGVyLlZFUlNJT05fQ09MVU1OICsgIiA9ID8iLApkaWZmIC0tZ2l0IGEvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvZGljdGlvbmFyeXBhY2svQnV0dG9uU3dpdGNoZXIuamF2YSBiL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2RpY3Rpb25hcnlwYWNrL0J1dHRvblN3aXRjaGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWFiOTRhNAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2RpY3Rpb25hcnlwYWNrL0J1dHRvblN3aXRjaGVyLmphdmEKQEAgLTAsMCArMSwxNTUgQEAKKy8qKgorICogQ29weXJpZ2h0IChDKSAyMDEzIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QKKyAqIHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5CisgKiBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQKKyAqIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gU2VlIHRoZQorICogTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKK3BhY2thZ2UgY29tLmFuZHJvaWQuaW5wdXRtZXRob2QuZGljdGlvbmFyeXBhY2s7CisKK2ltcG9ydCBhbmRyb2lkLmFuaW1hdGlvbi5BbmltYXRvcjsKK2ltcG9ydCBhbmRyb2lkLmFuaW1hdGlvbi5BbmltYXRvckxpc3RlbmVyQWRhcHRlcjsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQuQ29udGV4dDsKK2ltcG9ydCBhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0OworaW1wb3J0IGFuZHJvaWQudmlldy5WaWV3OworaW1wb3J0IGFuZHJvaWQudmlldy5WaWV3UHJvcGVydHlBbmltYXRvcjsKK2ltcG9ydCBhbmRyb2lkLndpZGdldC5CdXR0b247CitpbXBvcnQgYW5kcm9pZC53aWRnZXQuRnJhbWVMYXlvdXQ7CisKK2ltcG9ydCBjb20uYW5kcm9pZC5pbnB1dG1ldGhvZC5sYXRpbi5SOworCisvKioKKyAqIEEgdmlldyB0aGF0IGhhbmRsZXMgYnV0dG9ucyBpbnNpZGUgaXQgYWNjb3JkaW5nIHRvIGEgc3RhdHVzLgorICovCitwdWJsaWMgY2xhc3MgQnV0dG9uU3dpdGNoZXIgZXh0ZW5kcyBGcmFtZUxheW91dCB7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgTk9UX0lOSVRJQUxJWkVEID0gLTE7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgU1RBVFVTX05PX0JVVFRPTiA9IDA7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgU1RBVFVTX0lOU1RBTEwgPSAxOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFNUQVRVU19DQU5DRUwgPSAyOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFNUQVRVU19ERUxFVEUgPSAzOworICAgIC8vIE9uZSBvZiB0aGUgYWJvdmUKKyAgICBwcml2YXRlIGludCBtU3RhdHVzID0gTk9UX0lOSVRJQUxJWkVEOworICAgIHByaXZhdGUgaW50IG1BbmltYXRlVG9TdGF0dXMgPSBOT1RfSU5JVElBTElaRUQ7CisKKyAgICAvLyBBbmltYXRpb24gZGlyZWN0aW9ucworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEFOSU1BVElPTl9JTiA9IDE7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQU5JTUFUSU9OX09VVCA9IDI7CisKKyAgICBwcml2YXRlIEJ1dHRvbiBtSW5zdGFsbEJ1dHRvbjsKKyAgICBwcml2YXRlIEJ1dHRvbiBtQ2FuY2VsQnV0dG9uOworICAgIHByaXZhdGUgQnV0dG9uIG1EZWxldGVCdXR0b247CisgICAgcHJpdmF0ZSBPbkNsaWNrTGlzdGVuZXIgbU9uQ2xpY2tMaXN0ZW5lcjsKKworICAgIHB1YmxpYyBCdXR0b25Td2l0Y2hlcihDb250ZXh0IGNvbnRleHQsIEF0dHJpYnV0ZVNldCBhdHRycykgeworICAgICAgICBzdXBlcihjb250ZXh0LCBhdHRycyk7CisgICAgfQorCisgICAgcHVibGljIEJ1dHRvblN3aXRjaGVyKENvbnRleHQgY29udGV4dCwgQXR0cmlidXRlU2V0IGF0dHJzLCBpbnQgZGVmU3R5bGUpIHsKKyAgICAgICAgc3VwZXIoY29udGV4dCwgYXR0cnMsIGRlZlN0eWxlKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwcm90ZWN0ZWQgdm9pZCBvbkxheW91dChmaW5hbCBib29sZWFuIGNoYW5nZWQsIGZpbmFsIGludCBsZWZ0LCBmaW5hbCBpbnQgdG9wLCBmaW5hbCBpbnQgcmlnaHQsCisgICAgICAgICAgICBmaW5hbCBpbnQgYm90dG9tKSB7CisgICAgICAgIHN1cGVyLm9uTGF5b3V0KGNoYW5nZWQsIGxlZnQsIHRvcCwgcmlnaHQsIGJvdHRvbSk7CisgICAgICAgIG1JbnN0YWxsQnV0dG9uID0gKEJ1dHRvbilmaW5kVmlld0J5SWQoUi5pZC5kaWN0X2luc3RhbGxfYnV0dG9uKTsKKyAgICAgICAgbUNhbmNlbEJ1dHRvbiA9IChCdXR0b24pZmluZFZpZXdCeUlkKFIuaWQuZGljdF9jYW5jZWxfYnV0dG9uKTsKKyAgICAgICAgbURlbGV0ZUJ1dHRvbiA9IChCdXR0b24pZmluZFZpZXdCeUlkKFIuaWQuZGljdF9kZWxldGVfYnV0dG9uKTsKKyAgICAgICAgbUluc3RhbGxCdXR0b24uc2V0T25DbGlja0xpc3RlbmVyKG1PbkNsaWNrTGlzdGVuZXIpOworICAgICAgICBtQ2FuY2VsQnV0dG9uLnNldE9uQ2xpY2tMaXN0ZW5lcihtT25DbGlja0xpc3RlbmVyKTsKKyAgICAgICAgbURlbGV0ZUJ1dHRvbi5zZXRPbkNsaWNrTGlzdGVuZXIobU9uQ2xpY2tMaXN0ZW5lcik7CisgICAgICAgIHNldEJ1dHRvblBvc2l0aW9uV2l0aG91dEFuaW1hdGlvbihtU3RhdHVzKTsKKyAgICAgICAgaWYgKG1BbmltYXRlVG9TdGF0dXMgIT0gTk9UX0lOSVRJQUxJWkVEKSB7CisgICAgICAgICAgICAvLyBXZSBoYXZlIGJlZW4gYXNrZWQgdG8gYW5pbWF0ZSBiZWZvcmUgd2Ugd2VyZSByZWFkeSwgc28gd2UgdG9vayBhIG5vdGUgb2YgaXQuCisgICAgICAgICAgICAvLyBXZSBhcmUgbm93IHJlYWR5OiBsYXVuY2ggdGhlIGFuaW1hdGlvbi4KKyAgICAgICAgICAgIGFuaW1hdGVCdXR0b25Qb3NpdGlvbihtU3RhdHVzLCBtQW5pbWF0ZVRvU3RhdHVzKTsKKyAgICAgICAgICAgIG1TdGF0dXMgPSBtQW5pbWF0ZVRvU3RhdHVzOworICAgICAgICAgICAgbUFuaW1hdGVUb1N0YXR1cyA9IE5PVF9JTklUSUFMSVpFRDsKKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgQnV0dG9uIGdldEJ1dHRvbihmaW5hbCBpbnQgc3RhdHVzKSB7CisgICAgICAgIHN3aXRjaChzdGF0dXMpIHsKKyAgICAgICAgY2FzZSBTVEFUVVNfSU5TVEFMTDoKKyAgICAgICAgICAgIHJldHVybiBtSW5zdGFsbEJ1dHRvbjsKKyAgICAgICAgY2FzZSBTVEFUVVNfQ0FOQ0VMOgorICAgICAgICAgICAgcmV0dXJuIG1DYW5jZWxCdXR0b247CisgICAgICAgIGNhc2UgU1RBVFVTX0RFTEVURToKKyAgICAgICAgICAgIHJldHVybiBtRGVsZXRlQnV0dG9uOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRTdGF0dXNBbmRVcGRhdGVWaXN1YWxzKGZpbmFsIGludCBzdGF0dXMpIHsKKyAgICAgICAgaWYgKG1TdGF0dXMgPT0gTk9UX0lOSVRJQUxJWkVEKSB7CisgICAgICAgICAgICBzZXRCdXR0b25Qb3NpdGlvbldpdGhvdXRBbmltYXRpb24oc3RhdHVzKTsKKyAgICAgICAgICAgIG1TdGF0dXMgPSBzdGF0dXM7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAobnVsbCA9PSBtSW5zdGFsbEJ1dHRvbikgeworICAgICAgICAgICAgICAgIC8vIFdlIG1heSBjb21lIGhlcmUgYmVmb3JlIHdlIGhhdmUgYmVlbiBsYXlvdXQuIEluIHRoaXMgY2FzZSB3ZSBkb24ndCBrbm93IG91cgorICAgICAgICAgICAgICAgIC8vIHNpemUgeWV0IHNvIHdlIGNhbid0IHN0YXJ0IGFuaW1hdGlvbnMgc28gd2UgbmVlZCB0byByZW1lbWJlciB3aGF0IGFuaW1hdGlvbiB0bworICAgICAgICAgICAgICAgIC8vIHN0YXJ0IG9uY2UgbGF5b3V0IGhhcyBnb25lIHRocm91Z2guCisgICAgICAgICAgICAgICAgbUFuaW1hdGVUb1N0YXR1cyA9IHN0YXR1czsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgYW5pbWF0ZUJ1dHRvblBvc2l0aW9uKG1TdGF0dXMsIHN0YXR1cyk7CisgICAgICAgICAgICAgICAgbVN0YXR1cyA9IHN0YXR1czsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBzZXRCdXR0b25Qb3NpdGlvbldpdGhvdXRBbmltYXRpb24oZmluYWwgaW50IHN0YXR1cykgeworICAgICAgICAvLyBUaGlzIG1heSBiZSBjYWxsZWQgYnkgc2V0U3RhdHVzKCkgYmVmb3JlIHRoZSBsYXlvdXQgaGFzIGNvbWUgeWV0LgorICAgICAgICBpZiAobnVsbCA9PSBtSW5zdGFsbEJ1dHRvbikgcmV0dXJuOworICAgICAgICBmaW5hbCBpbnQgd2lkdGggPSBnZXRXaWR0aCgpOworICAgICAgICAvLyBTZXQgdG8gb3V0IG9mIHRoZSBzY3JlZW4gaWYgdGhhdCdzIG5vdCB0aGUgY3VycmVudGx5IGRpc3BsYXllZCBzdGF0dXMKKyAgICAgICAgbUluc3RhbGxCdXR0b24uc2V0VHJhbnNsYXRpb25YKFNUQVRVU19JTlNUQUxMID09IHN0YXR1cyA/IDAgOiB3aWR0aCk7CisgICAgICAgIG1DYW5jZWxCdXR0b24uc2V0VHJhbnNsYXRpb25YKFNUQVRVU19DQU5DRUwgPT0gc3RhdHVzID8gMCA6IHdpZHRoKTsKKyAgICAgICAgbURlbGV0ZUJ1dHRvbi5zZXRUcmFuc2xhdGlvblgoU1RBVFVTX0RFTEVURSA9PSBzdGF0dXMgPyAwIDogd2lkdGgpOworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBhbmltYXRlQnV0dG9uUG9zaXRpb24oZmluYWwgaW50IG9sZFN0YXR1cywgZmluYWwgaW50IG5ld1N0YXR1cykgeworICAgICAgICBmaW5hbCBWaWV3IG9sZEJ1dHRvbiA9IGdldEJ1dHRvbihvbGRTdGF0dXMpOworICAgICAgICBmaW5hbCBWaWV3IG5ld0J1dHRvbiA9IGdldEJ1dHRvbihuZXdTdGF0dXMpOworICAgICAgICBpZiAobnVsbCAhPSBvbGRCdXR0b24gJiYgbnVsbCAhPSBuZXdCdXR0b24pIHsKKyAgICAgICAgICAgIC8vIFRyYW5zaXRpb24gYmV0d2VlbiB0d28gYnV0dG9ucyA6IGFuaW1hdGUgb3V0LCB0aGVuIGluCisgICAgICAgICAgICBhbmltYXRlQnV0dG9uKG9sZEJ1dHRvbiwgQU5JTUFUSU9OX09VVCkuc2V0TGlzdGVuZXIoCisgICAgICAgICAgICAgICAgICAgIG5ldyBBbmltYXRvckxpc3RlbmVyQWRhcHRlcigpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIEBPdmVycmlkZQorICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIHZvaWQgb25BbmltYXRpb25FbmQoZmluYWwgQW5pbWF0b3IgYW5pbWF0aW9uKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5ld1N0YXR1cyAhPSBtU3RhdHVzKSByZXR1cm47CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5pbWF0ZUJ1dHRvbihuZXdCdXR0b24sIEFOSU1BVElPTl9JTik7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICB9IGVsc2UgaWYgKG51bGwgIT0gb2xkQnV0dG9uKSB7CisgICAgICAgICAgICBhbmltYXRlQnV0dG9uKG9sZEJ1dHRvbiwgQU5JTUFUSU9OX09VVCk7CisgICAgICAgIH0gZWxzZSBpZiAobnVsbCAhPSBuZXdCdXR0b24pIHsKKyAgICAgICAgICAgIGFuaW1hdGVCdXR0b24obmV3QnV0dG9uLCBBTklNQVRJT05fSU4pOworICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0SW50ZXJuYWxPbkNsaWNrTGlzdGVuZXIoZmluYWwgT25DbGlja0xpc3RlbmVyIGxpc3RlbmVyKSB7CisgICAgICAgIG1PbkNsaWNrTGlzdGVuZXIgPSBsaXN0ZW5lcjsKKyAgICB9CisKKyAgICBwcml2YXRlIFZpZXdQcm9wZXJ0eUFuaW1hdG9yIGFuaW1hdGVCdXR0b24oZmluYWwgVmlldyBidXR0b24sIGZpbmFsIGludCBkaXJlY3Rpb24pIHsKKyAgICAgICAgZmluYWwgZmxvYXQgb3V0ZXJYID0gZ2V0V2lkdGgoKTsKKyAgICAgICAgZmluYWwgZmxvYXQgaW5uZXJYID0gYnV0dG9uLmdldFgoKSAtIGJ1dHRvbi5nZXRUcmFuc2xhdGlvblgoKTsKKyAgICAgICAgaWYgKEFOSU1BVElPTl9JTiA9PSBkaXJlY3Rpb24pIHsKKyAgICAgICAgICAgIGJ1dHRvbi5zZXRDbGlja2FibGUodHJ1ZSk7CisgICAgICAgICAgICByZXR1cm4gYnV0dG9uLmFuaW1hdGUoKS50cmFuc2xhdGlvblgoMCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBidXR0b24uc2V0Q2xpY2thYmxlKGZhbHNlKTsKKyAgICAgICAgICAgIHJldHVybiBidXR0b24uYW5pbWF0ZSgpLnRyYW5zbGF0aW9uWChvdXRlclggLSBpbm5lclgpOworICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvZGljdGlvbmFyeXBhY2svRGljdGlvbmFyeURvd25sb2FkUHJvZ3Jlc3NCYXIuamF2YSBiL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2RpY3Rpb25hcnlwYWNrL0RpY3Rpb25hcnlEb3dubG9hZFByb2dyZXNzQmFyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODhiNTAzMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2RpY3Rpb25hcnlwYWNrL0RpY3Rpb25hcnlEb3dubG9hZFByb2dyZXNzQmFyLmphdmEKQEAgLTAsMCArMSwxNzggQEAKKy8qKgorICogQ29weXJpZ2h0IChDKSAyMDEzIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QKKyAqIHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5CisgKiBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQKKyAqIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gU2VlIHRoZQorICogTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKK3BhY2thZ2UgY29tLmFuZHJvaWQuaW5wdXRtZXRob2QuZGljdGlvbmFyeXBhY2s7CisKK2ltcG9ydCBhbmRyb2lkLmFwcC5Eb3dubG9hZE1hbmFnZXI7CitpbXBvcnQgYW5kcm9pZC5hcHAuRG93bmxvYWRNYW5hZ2VyLlF1ZXJ5OworaW1wb3J0IGFuZHJvaWQuY29udGVudC5Db250ZW50VmFsdWVzOworaW1wb3J0IGFuZHJvaWQuY29udGVudC5Db250ZXh0OworaW1wb3J0IGFuZHJvaWQuZGF0YWJhc2UuQ3Vyc29yOworaW1wb3J0IGFuZHJvaWQuZGF0YWJhc2Uuc3FsaXRlLlNRTGl0ZURhdGFiYXNlOworaW1wb3J0IGFuZHJvaWQub3MuSGFuZGxlcjsKK2ltcG9ydCBhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0OworaW1wb3J0IGFuZHJvaWQudXRpbC5Mb2c7CitpbXBvcnQgYW5kcm9pZC52aWV3LlZpZXc7CitpbXBvcnQgYW5kcm9pZC53aWRnZXQuUHJvZ3Jlc3NCYXI7CisKK3B1YmxpYyBjbGFzcyBEaWN0aW9uYXJ5RG93bmxvYWRQcm9ncmVzc0JhciBleHRlbmRzIFByb2dyZXNzQmFyIHsKKyAgICBAU3VwcHJlc3NXYXJuaW5ncygidW51c2VkIikKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgVEFHID0gRGljdGlvbmFyeURvd25sb2FkUHJvZ3Jlc3NCYXIuY2xhc3MuZ2V0U2ltcGxlTmFtZSgpOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBOT1RfQV9ET1dOTE9BRE1BTkFHRVJfUEVORElOR19JRCA9IDA7CisKKyAgICBwcml2YXRlIFN0cmluZyBtQ2xpZW50SWQ7CisgICAgcHJpdmF0ZSBTdHJpbmcgbVdvcmRsaXN0SWQ7CisgICAgcHJpdmF0ZSBib29sZWFuIG1Jc0N1cnJlbnRseUF0dGFjaGVkVG9XaW5kb3cgPSBmYWxzZTsKKyAgICBwcml2YXRlIFRocmVhZCBtUmVwb3J0ZXJUaHJlYWQgPSBudWxsOworCisgICAgcHVibGljIERpY3Rpb25hcnlEb3dubG9hZFByb2dyZXNzQmFyKGZpbmFsIENvbnRleHQgY29udGV4dCkgeworICAgICAgICBzdXBlcihjb250ZXh0KTsKKyAgICB9CisKKyAgICBwdWJsaWMgRGljdGlvbmFyeURvd25sb2FkUHJvZ3Jlc3NCYXIoZmluYWwgQ29udGV4dCBjb250ZXh0LCBmaW5hbCBBdHRyaWJ1dGVTZXQgYXR0cnMpIHsKKyAgICAgICAgc3VwZXIoY29udGV4dCwgYXR0cnMpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldElkcyhmaW5hbCBTdHJpbmcgY2xpZW50SWQsIGZpbmFsIFN0cmluZyB3b3JkbGlzdElkKSB7CisgICAgICAgIG1DbGllbnRJZCA9IGNsaWVudElkOworICAgICAgICBtV29yZGxpc3RJZCA9IHdvcmRsaXN0SWQ7CisgICAgfQorCisgICAgc3RhdGljIHByaXZhdGUgaW50IGdldERvd25sb2FkTWFuYWdlclBlbmRpbmdJZEZyb21Xb3JkbGlzdElkKGZpbmFsIENvbnRleHQgY29udGV4dCwKKyAgICAgICAgICAgIGZpbmFsIFN0cmluZyBjbGllbnRJZCwgZmluYWwgU3RyaW5nIHdvcmRsaXN0SWQpIHsKKyAgICAgICAgZmluYWwgU1FMaXRlRGF0YWJhc2UgZGIgPSBNZXRhZGF0YURiSGVscGVyLmdldERiKGNvbnRleHQsIGNsaWVudElkKTsKKyAgICAgICAgZmluYWwgQ29udGVudFZhbHVlcyB3b3JkbGlzdFZhbHVlcyA9CisgICAgICAgICAgICAgICAgTWV0YWRhdGFEYkhlbHBlci5nZXRDb250ZW50VmFsdWVzT2ZMYXRlc3RBdmFpbGFibGVXb3JkbGlzdEJ5SWQoZGIsIHdvcmRsaXN0SWQpOworICAgICAgICBpZiAobnVsbCA9PSB3b3JkbGlzdFZhbHVlcykgeworICAgICAgICAgICAgLy8gV2UgZG9uJ3Qga25vdyBhbnl0aGluZyBhYm91dCBhIHdvcmQgbGlzdCB3aXRoIHRoaXMgaWQuIEJ1Zz8gVGhpcyBzaG91bGQgbmV2ZXIKKyAgICAgICAgICAgIC8vIGhhcHBlbiwgYnV0IHN0aWxsIHJldHVybiB0byBwcmV2ZW50IGEgY3Jhc2guCisgICAgICAgICAgICBMb2cuZShUQUcsICJVbmV4cGVjdGVkIHdvcmQgbGlzdCBJRDogIiArIHdvcmRsaXN0SWQpOworICAgICAgICAgICAgcmV0dXJuIE5PVF9BX0RPV05MT0FETUFOQUdFUl9QRU5ESU5HX0lEOworICAgICAgICB9CisgICAgICAgIHJldHVybiB3b3JkbGlzdFZhbHVlcy5nZXRBc0ludGVnZXIoTWV0YWRhdGFEYkhlbHBlci5QRU5ESU5HSURfQ09MVU1OKTsKKyAgICB9CisKKyAgICAvKgorICAgICAqIFRoaXMgbWV0aG9kIHdpbGwgc3RvcCBhbnkgcnVubmluZyB1cGRhdGVyIHRocmVhZCBmb3IgdGhpcyBwcm9ncmVzcyBiYXIgYW5kIGNyZWF0ZSBhbmQgcnVuCisgICAgICogYSBuZXcgb25lIG9ubHkgaWYgdGhlIHByb2dyZXNzIGJhciBpcyB2aXNpYmxlLgorICAgICAqIEhlbmNlLCBhcyBhIHJlc3VsdCBvZiBjYWxsaW5nIHRoaXMgbWV0aG9kLCB0aGUgcHJvZ3Jlc3MgYmFyIHdpbGwgaGF2ZSBhbiB1cGRhdGVyIHRocmVhZAorICAgICAqIHJ1bm5pbmcgaWYgYW5kIG9ubHkgaWYgdGhlIHByb2dyZXNzIGJhciBpcyB2aXNpYmxlLgorICAgICAqLworICAgIHByaXZhdGUgdm9pZCB1cGRhdGVSZXBvcnRlclRocmVhZFJ1bm5pbmdTdGF0dXNBY2NvcmRpbmdUb1Zpc2liaWxpdHkoKSB7CisgICAgICAgIGlmIChudWxsICE9IG1SZXBvcnRlclRocmVhZCkgbVJlcG9ydGVyVGhyZWFkLmludGVycnVwdCgpOworICAgICAgICBpZiAobUlzQ3VycmVudGx5QXR0YWNoZWRUb1dpbmRvdyAmJiBWaWV3LlZJU0lCTEUgPT0gZ2V0VmlzaWJpbGl0eSgpKSB7CisgICAgICAgICAgICBmaW5hbCBpbnQgZG93bmxvYWRNYW5hZ2VyUGVuZGluZ0lkID0KKyAgICAgICAgICAgICAgICAgICAgZ2V0RG93bmxvYWRNYW5hZ2VyUGVuZGluZ0lkRnJvbVdvcmRsaXN0SWQoZ2V0Q29udGV4dCgpLCBtQ2xpZW50SWQsIG1Xb3JkbGlzdElkKTsKKyAgICAgICAgICAgIGlmIChOT1RfQV9ET1dOTE9BRE1BTkFHRVJfUEVORElOR19JRCA9PSBkb3dubG9hZE1hbmFnZXJQZW5kaW5nSWQpIHsKKyAgICAgICAgICAgICAgICAvLyBDYW4ndCBnZXQgdGhlIElELiBUaGlzIGlzIG5ldmVyIHN1cHBvc2VkIHRvIGhhcHBlbiwgYnV0IHN0aWxsIGNsZWFyIHRoZSB1cGRhdGVyCisgICAgICAgICAgICAgICAgLy8gdGhyZWFkIGFuZCByZXR1cm4gdG8gYXZvaWQgYSBjcmFzaC4KKyAgICAgICAgICAgICAgICBtUmVwb3J0ZXJUaHJlYWQgPSBudWxsOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGZpbmFsIFVwZGF0ZXJUaHJlYWQgdXBkYXRlclRocmVhZCA9CisgICAgICAgICAgICAgICAgICAgIG5ldyBVcGRhdGVyVGhyZWFkKGdldENvbnRleHQoKSwgZG93bmxvYWRNYW5hZ2VyUGVuZGluZ0lkKTsKKyAgICAgICAgICAgIHVwZGF0ZXJUaHJlYWQuc3RhcnQoKTsKKyAgICAgICAgICAgIG1SZXBvcnRlclRocmVhZCA9IHVwZGF0ZXJUaHJlYWQ7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBXZSdyZSBub3QgZ29pbmcgdG8gcmVzdGFydCB0aGUgdGhyZWFkIGFueXdheSwgc28gd2UgbWF5IGFzIHdlbGwgZ2FyYmFnZSBjb2xsZWN0IGl0LgorICAgICAgICAgICAgbVJlcG9ydGVyVGhyZWFkID0gbnVsbDsKKyAgICAgICAgfQorICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHByb3RlY3RlZCB2b2lkIG9uQXR0YWNoZWRUb1dpbmRvdygpIHsKKyAgICAgICAgbUlzQ3VycmVudGx5QXR0YWNoZWRUb1dpbmRvdyA9IHRydWU7CisgICAgICAgIHVwZGF0ZVJlcG9ydGVyVGhyZWFkUnVubmluZ1N0YXR1c0FjY29yZGluZ1RvVmlzaWJpbGl0eSgpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHByb3RlY3RlZCB2b2lkIG9uRGV0YWNoZWRGcm9tV2luZG93KCkgeworICAgICAgICBtSXNDdXJyZW50bHlBdHRhY2hlZFRvV2luZG93ID0gZmFsc2U7CisgICAgICAgIHVwZGF0ZVJlcG9ydGVyVGhyZWFkUnVubmluZ1N0YXR1c0FjY29yZGluZ1RvVmlzaWJpbGl0eSgpOworICAgIH0KKworICAgIHByaXZhdGUgY2xhc3MgVXBkYXRlclRocmVhZCBleHRlbmRzIFRocmVhZCB7CisgICAgICAgIHByaXZhdGUgZmluYWwgc3RhdGljIGludCBSRVBPUlRfUEVSSU9EID0gMTUwOyAvLyBob3cgb2Z0ZW4gdG8gcmVwb3J0IHByb2dyZXNzLCBpbiBtcworICAgICAgICBmaW5hbCBEb3dubG9hZE1hbmFnZXIgbURvd25sb2FkTWFuYWdlcjsKKyAgICAgICAgZmluYWwgaW50IG1JZDsKKyAgICAgICAgcHVibGljIFVwZGF0ZXJUaHJlYWQoZmluYWwgQ29udGV4dCBjb250ZXh0LCBmaW5hbCBpbnQgaWQpIHsKKyAgICAgICAgICAgIHN1cGVyKCk7CisgICAgICAgICAgICBtRG93bmxvYWRNYW5hZ2VyID0gKERvd25sb2FkTWFuYWdlcikgY29udGV4dC5nZXRTeXN0ZW1TZXJ2aWNlKENvbnRleHQuRE9XTkxPQURfU0VSVklDRSk7CisgICAgICAgICAgICBtSWQgPSBpZDsKKyAgICAgICAgfQorICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIHZvaWQgcnVuKCkgeworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAvLyBJdCdzIGFsbW9zdCBpbXBvc3NpYmxlIHRoYXQgbURvd25sb2FkTWFuYWdlciBpcyBudWxsIChpdCB3b3VsZCBtZWFuIGl0IGhhcyBiZWVuCisgICAgICAgICAgICAgICAgLy8gZGlzYWJsZWQgYmV0d2VlbiBwcmVzc2luZyB0aGUgJ2luc3RhbGwnIGJ1dHRvbiBhbmQgZGlzcGxheWluZyB0aGUgcHJvZ3Jlc3MKKyAgICAgICAgICAgICAgICAvLyBiYXIpLCBidXQganVzdCBpbiBjYXNlLgorICAgICAgICAgICAgICAgIGlmIChudWxsID09IG1Eb3dubG9hZE1hbmFnZXIpIHJldHVybjsKKyAgICAgICAgICAgICAgICBmaW5hbCBVcGRhdGVIZWxwZXIgdXBkYXRlSGVscGVyID0gbmV3IFVwZGF0ZUhlbHBlcigpOworICAgICAgICAgICAgICAgIGZpbmFsIFF1ZXJ5IHF1ZXJ5ID0gbmV3IFF1ZXJ5KCkuc2V0RmlsdGVyQnlJZChtSWQpOworICAgICAgICAgICAgICAgIGludCBsYXN0UHJvZ3Jlc3MgPSAwOworICAgICAgICAgICAgICAgIHNldEluZGV0ZXJtaW5hdGUodHJ1ZSk7CisgICAgICAgICAgICAgICAgd2hpbGUgKCFpc0ludGVycnVwdGVkKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgZmluYWwgQ3Vyc29yIGN1cnNvciA9IG1Eb3dubG9hZE1hbmFnZXIucXVlcnkocXVlcnkpOworICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCA9PSBjdXJzb3IpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIENhbid0IGNvbnRhY3QgRG93bmxvYWRNYW5hZ2VyOiB0aGlzIHNob3VsZCBuZXZlciBoYXBwZW4uCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjdXJzb3IubW92ZVRvTmV4dCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWwgaW50IGNvbHVtbkJ5dGVzRG93bmxvYWRlZFNvRmFyID0gY3Vyc29yLmdldENvbHVtbkluZGV4KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRG93bmxvYWRNYW5hZ2VyLkNPTFVNTl9CWVRFU19ET1dOTE9BREVEX1NPX0ZBUik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWwgaW50IGJ5dGVzRG93bmxvYWRlZFNvRmFyID0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnNvci5nZXRJbnQoY29sdW1uQnl0ZXNEb3dubG9hZGVkU29GYXIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZUhlbHBlci5zZXRQcm9ncmVzc0Zyb21Bbm90aGVyVGhyZWFkKGJ5dGVzRG93bmxvYWRlZFNvRmFyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRG93bmxvYWQgaGFzIGZpbmlzaGVkIGFuZCBEb3dubG9hZE1hbmFnZXIgaGFzIGFscmVhZHkgYmVlbiBhc2tlZCB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNsZWFuIHVwIHRoZSBkYiBlbnRyeS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVIZWxwZXIuc2V0UHJvZ3Jlc3NGcm9tQW5vdGhlclRocmVhZChnZXRNYXgoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9IGZpbmFsbHkgeworICAgICAgICAgICAgICAgICAgICAgICAgY3Vyc29yLmNsb3NlKCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgVGhyZWFkLnNsZWVwKFJFUE9SVF9QRVJJT0QpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gY2F0Y2ggKEludGVycnVwdGVkRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICAvLyBEbyBub3RoaW5nIGFuZCB0ZXJtaW5hdGUgbm9ybWFsbHkuCisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBwcml2YXRlIGNsYXNzIFVwZGF0ZUhlbHBlciBpbXBsZW1lbnRzIFJ1bm5hYmxlIHsKKyAgICAgICAgICAgIHByaXZhdGUgaW50IG1Qcm9ncmVzczsKKyAgICAgICAgICAgIEBPdmVycmlkZQorICAgICAgICAgICAgcHVibGljIHZvaWQgcnVuKCkgeworICAgICAgICAgICAgICAgIHNldEluZGV0ZXJtaW5hdGUoZmFsc2UpOworICAgICAgICAgICAgICAgIHNldFByb2dyZXNzKG1Qcm9ncmVzcyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBwdWJsaWMgdm9pZCBzZXRQcm9ncmVzc0Zyb21Bbm90aGVyVGhyZWFkKGZpbmFsIGludCBwcm9ncmVzcykgeworICAgICAgICAgICAgICAgIGlmIChtUHJvZ3Jlc3MgIT0gcHJvZ3Jlc3MpIHsKKyAgICAgICAgICAgICAgICAgICAgbVByb2dyZXNzID0gcHJvZ3Jlc3M7CisgICAgICAgICAgICAgICAgICAgIC8vIEZvciBzb21lIHVua25vd24gcmVhc29uLCBzZXRQcm9ncmVzcyBqdXN0IGRvZXMgbm90IHdvcmsgZnJvbSBhIHNlcGFyYXRlCisgICAgICAgICAgICAgICAgICAgIC8vIHRocmVhZCwgYWx0aG91Z2ggdGhlIGNvZGUgaW4gUHJvZ3Jlc3NCYXIgbG9va3MgbGlrZSBpdCBzaG91bGQuIFRodXMsIHdlCisgICAgICAgICAgICAgICAgICAgIC8vIHJlc29ydCB0byBhIHJ1bm5hYmxlIHBvc3RlZCB0byB0aGUgaGFuZGxlciBvZiB0aGUgdmlldy4KKyAgICAgICAgICAgICAgICAgICAgZmluYWwgSGFuZGxlciBoYW5kbGVyID0gZ2V0SGFuZGxlcigpOworICAgICAgICAgICAgICAgICAgICAvLyBJdCdzIHBvc3NpYmxlIHRvIGNvbWUgaGVyZSBiZWZvcmUgdGhpcyB2aWV3IGhhcyBiZWVuIGxhaWQgb3V0LiBJZiBzbywKKyAgICAgICAgICAgICAgICAgICAgLy8ganVzdCBpZ25vcmUgdGhlIGNhbGwgLSBpdCB3aWxsIGJlIHVwZGF0ZWQgYWdhaW4gbGF0ZXIuCisgICAgICAgICAgICAgICAgICAgIGlmIChudWxsID09IGhhbmRsZXIpIHJldHVybjsKKyAgICAgICAgICAgICAgICAgICAgaGFuZGxlci5wb3N0KHRoaXMpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2RpY3Rpb25hcnlwYWNrL0RpY3Rpb25hcnlMaXN0SW50ZXJmYWNlU3RhdGUuamF2YSBiL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2RpY3Rpb25hcnlwYWNrL0RpY3Rpb25hcnlMaXN0SW50ZXJmYWNlU3RhdGUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZTM3MTFjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvZGljdGlvbmFyeXBhY2svRGljdGlvbmFyeUxpc3RJbnRlcmZhY2VTdGF0ZS5qYXZhCkBAIC0wLDAgKzEsNjcgQEAKKy8qKgorICogQ29weXJpZ2h0IChDKSAyMDEzIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QKKyAqIHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5CisgKiBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQKKyAqIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gU2VlIHRoZQorICogTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKK3BhY2thZ2UgY29tLmFuZHJvaWQuaW5wdXRtZXRob2QuZGljdGlvbmFyeXBhY2s7CisKK2ltcG9ydCBjb20uYW5kcm9pZC5pbnB1dG1ldGhvZC5sYXRpbi5Db2xsZWN0aW9uVXRpbHM7CisKK2ltcG9ydCBqYXZhLnV0aWwuSGFzaE1hcDsKKworLyoqCisgKiBIZWxwZXIgY2xhc3MgdG8gbWFpbnRhaW4gdGhlIGludGVyZmFjZSBzdGF0ZSBvZiB3b3JkIGxpc3QgcHJlZmVyZW5jZXMuCisgKgorICogVGhpcyBpcyBuZWNlc3NhcnkgYmVjYXVzZSB0aGUgdmlld3MgYXJlIGNyZWF0ZWQgb24tZGVtYW5kIGJ5IGNhbGxpbmcgY29kZS4gVGhlcmUgYXJlIG1hbnkKKyAqIHNpdHVhdGlvbnMgd2hlcmUgdmlld3MgYXJlIHJlbmV3ZWQgd2l0aCBsaXR0bGUgcmVsYXRpb24gd2l0aCB1c2VyIGludGVyYWN0aW9uLiBGb3IgZXhhbXBsZSwKKyAqIHdoZW4gc2Nyb2xsaW5nLCB0aGUgdmlldyBpcyByZXVzZWQgc28gaXQgZG9lc24ndCBrZWVwIGl0cyBzdGF0ZSwgd2hpY2ggbWVhbnMgd2UgbmVlZCB0byBrZWVwCisgKiBpdCBzZXBhcmF0ZWx5LiBBbHNvIHdoZW5ldmVyIHRoZSB1bmRlcmx5aW5nIGRpY3Rpb25hcnkgbGlzdCB1bmRlcmdvZXMgYSBjaGFuZ2UgKGZvciBleGFtcGxlLAorICogdXBkYXRlIHRoZSBtZXRhZGF0YSwgb3IgZmluaXNoIGRvd25sb2FkaW5nKSB0aGUgd2hvbGUgbGlzdCBoYXMgdG8gYmUgdGhyb3duIG91dCBhbmQgcmVjcmVhdGVkCisgKiBpbiBjYXNlIHNvbWUgZGljdGlvbmFyaWVzIGFwcGVhcmVkLCBkaXNhcHBlYXJlZCwgY2hhbmdlZCBzdGF0ZXMgZXRjLgorICovCitwdWJsaWMgY2xhc3MgRGljdGlvbmFyeUxpc3RJbnRlcmZhY2VTdGF0ZSB7CisgICAgcHJpdmF0ZSBzdGF0aWMgY2xhc3MgU3RhdGUgeworICAgICAgICBwdWJsaWMgYm9vbGVhbiBtT3BlbiA9IGZhbHNlOworICAgICAgICBwdWJsaWMgaW50IG1TdGF0dXMgPSBNZXRhZGF0YURiSGVscGVyLlNUQVRVU19VTktOT1dOOworICAgIH0KKworICAgIHByaXZhdGUgSGFzaE1hcDxTdHJpbmcsIFN0YXRlPiBtV29yZGxpc3RUb1N0YXRlID0gQ29sbGVjdGlvblV0aWxzLm5ld0hhc2hNYXAoKTsKKworICAgIHB1YmxpYyBib29sZWFuIGlzT3BlbihmaW5hbCBTdHJpbmcgd29yZGxpc3RJZCkgeworICAgICAgICBmaW5hbCBTdGF0ZSBzdGF0ZSA9IG1Xb3JkbGlzdFRvU3RhdGUuZ2V0KHdvcmRsaXN0SWQpOworICAgICAgICBpZiAobnVsbCA9PSBzdGF0ZSkgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gc3RhdGUubU9wZW47CisgICAgfQorCisgICAgcHVibGljIGludCBnZXRTdGF0dXMoZmluYWwgU3RyaW5nIHdvcmRsaXN0SWQpIHsKKyAgICAgICAgZmluYWwgU3RhdGUgc3RhdGUgPSBtV29yZGxpc3RUb1N0YXRlLmdldCh3b3JkbGlzdElkKTsKKyAgICAgICAgaWYgKG51bGwgPT0gc3RhdGUpIHJldHVybiBNZXRhZGF0YURiSGVscGVyLlNUQVRVU19VTktOT1dOOworICAgICAgICByZXR1cm4gc3RhdGUubVN0YXR1czsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRPcGVuKGZpbmFsIFN0cmluZyB3b3JkbGlzdElkLCBmaW5hbCBpbnQgc3RhdHVzKSB7CisgICAgICAgIGZpbmFsIFN0YXRlIG5ld1N0YXRlOworICAgICAgICBmaW5hbCBTdGF0ZSBzdGF0ZSA9IG1Xb3JkbGlzdFRvU3RhdGUuZ2V0KHdvcmRsaXN0SWQpOworICAgICAgICBuZXdTdGF0ZSA9IG51bGwgPT0gc3RhdGUgPyBuZXcgU3RhdGUoKSA6IHN0YXRlOworICAgICAgICBuZXdTdGF0ZS5tT3BlbiA9IHRydWU7CisgICAgICAgIG5ld1N0YXRlLm1TdGF0dXMgPSBzdGF0dXM7CisgICAgICAgIG1Xb3JkbGlzdFRvU3RhdGUucHV0KHdvcmRsaXN0SWQsIG5ld1N0YXRlKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBjbG9zZUFsbCgpIHsKKyAgICAgICAgZm9yIChmaW5hbCBTdGF0ZSBzdGF0ZSA6IG1Xb3JkbGlzdFRvU3RhdGUudmFsdWVzKCkpIHsKKyAgICAgICAgICAgIHN0YXRlLm1PcGVuID0gZmFsc2U7CisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9kaWN0aW9uYXJ5cGFjay9EaWN0aW9uYXJ5UHJvdmlkZXIuamF2YSBiL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2RpY3Rpb25hcnlwYWNrL0RpY3Rpb25hcnlQcm92aWRlci5qYXZhCmluZGV4IGY4ZDFjNGYuLjRmYmUxNjIgMTAwNjQ0Ci0tLSBhL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2RpY3Rpb25hcnlwYWNrL0RpY3Rpb25hcnlQcm92aWRlci5qYXZhCisrKyBiL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2RpY3Rpb25hcnlwYWNrL0RpY3Rpb25hcnlQcm92aWRlci5qYXZhCkBAIC0xODksNyArMTg5LDcgQEAKICAgICAgKi8KICAgICBAT3ZlcnJpZGUKICAgICBwdWJsaWMgU3RyaW5nIGdldFR5cGUoZmluYWwgVXJpIHVyaSkgewotICAgICAgICBQcml2YXRlTG9nLmxvZygiQXNrZWQgZm9yIHR5cGUgb2YgOiAiICsgdXJpLCB0aGlzKTsKKyAgICAgICAgUHJpdmF0ZUxvZy5sb2coIkFza2VkIGZvciB0eXBlIG9mIDogIiArIHVyaSk7CiAgICAgICAgIGZpbmFsIGludCBtYXRjaCA9IG1hdGNoVXJpKHVyaSk7CiAgICAgICAgIHN3aXRjaCAobWF0Y2gpIHsKICAgICAgICAgICAgIGNhc2UgTk9fTUFUQ0g6IHJldHVybiBudWxsOwpAQCAtMjIwLDcgKzIyMCw3IEBACiAgICAgcHVibGljIEN1cnNvciBxdWVyeShmaW5hbCBVcmkgdXJpLCBmaW5hbCBTdHJpbmdbXSBwcm9qZWN0aW9uLCBmaW5hbCBTdHJpbmcgc2VsZWN0aW9uLAogICAgICAgICAgICAgZmluYWwgU3RyaW5nW10gc2VsZWN0aW9uQXJncywgZmluYWwgU3RyaW5nIHNvcnRPcmRlcikgewogICAgICAgICBVdGlscy5sKCJVcmkgPSIsIHVyaSk7Ci0gICAgICAgIFByaXZhdGVMb2cubG9nKCJRdWVyeSA6ICIgKyB1cmksIHRoaXMpOworICAgICAgICBQcml2YXRlTG9nLmxvZygiUXVlcnkgOiAiICsgdXJpKTsKICAgICAgICAgZmluYWwgU3RyaW5nIGNsaWVudElkID0gZ2V0Q2xpZW50SWQodXJpKTsKICAgICAgICAgZmluYWwgaW50IG1hdGNoID0gbWF0Y2hVcmkodXJpKTsKICAgICAgICAgc3dpdGNoIChtYXRjaCkgewpAQCAtMjI4LDcgKzIyOCw3IEBACiAgICAgICAgICAgICBjYXNlIERJQ1RJT05BUllfVjJfV0hPTEVfTElTVDoKICAgICAgICAgICAgICAgICBmaW5hbCBDdXJzb3IgYyA9IE1ldGFkYXRhRGJIZWxwZXIucXVlcnlEaWN0aW9uYXJpZXMoZ2V0Q29udGV4dCgpLCBjbGllbnRJZCk7CiAgICAgICAgICAgICAgICAgVXRpbHMubCgiTGlzdCBvZiBkaWN0aW9uYXJpZXMgd2l0aCBjb3VudCIsIGMuZ2V0Q291bnQoKSk7Ci0gICAgICAgICAgICAgICAgUHJpdmF0ZUxvZy5sb2coIlJldHVybmVkIGEgbGlzdCBvZiAiICsgYy5nZXRDb3VudCgpICsgIiBpdGVtcyIsIHRoaXMpOworICAgICAgICAgICAgICAgIFByaXZhdGVMb2cubG9nKCJSZXR1cm5lZCBhIGxpc3Qgb2YgIiArIGMuZ2V0Q291bnQoKSArICIgaXRlbXMiKTsKICAgICAgICAgICAgICAgICByZXR1cm4gYzsKICAgICAgICAgICAgIGNhc2UgRElDVElPTkFSWV9WMl9ESUNUX0lORk86CiAgICAgICAgICAgICAgICAgLy8gSW4gcHJvdG9jb2wgdmVyc2lvbiAyLCB3ZSByZXR1cm4gbnVsbCBpZiB0aGUgY2xpZW50IGlzIHVua25vd24uIE90aGVyd2lzZQpAQCAtMjQ4LDEwICsyNDgsMTAgQEAKICAgICAgICAgICAgICAgICAvLyBUT0RPOiBwYXNzIGNsaWVudElkIHRvIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb24KICAgICAgICAgICAgICAgICBEaWN0aW9uYXJ5U2VydmljZS51cGRhdGVOb3dJZk5vdFVwZGF0ZWRJbkFWZXJ5TG9uZ1RpbWUoZ2V0Q29udGV4dCgpKTsKICAgICAgICAgICAgICAgICBpZiAobnVsbCAhPSBkaWN0RmlsZXMgJiYgZGljdEZpbGVzLnNpemUoKSA+IDApIHsKLSAgICAgICAgICAgICAgICAgICAgUHJpdmF0ZUxvZy5sb2coIlJldHVybmVkICIgKyBkaWN0RmlsZXMuc2l6ZSgpICsgIiBmaWxlcyIsIHRoaXMpOworICAgICAgICAgICAgICAgICAgICBQcml2YXRlTG9nLmxvZygiUmV0dXJuZWQgIiArIGRpY3RGaWxlcy5zaXplKCkgKyAiIGZpbGVzIik7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUmVzb3VyY2VQYXRoQ3Vyc29yKGRpY3RGaWxlcyk7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgUHJpdmF0ZUxvZy5sb2coIk5vIGRpY3Rpb25hcnkgZmlsZXMgZm9yIHRoaXMgVVJMIiwgdGhpcyk7CisgICAgICAgICAgICAgICAgICAgIFByaXZhdGVMb2cubG9nKCJObyBkaWN0aW9uYXJ5IGZpbGVzIGZvciB0aGlzIFVSTCIpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFJlc291cmNlUGF0aEN1cnNvcihDb2xsZWN0aW9ucy48V29yZExpc3RJbmZvPmVtcHR5TGlzdCgpKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAvLyBWMl9NRVRBREFUQSBhbmQgVjJfREFUQUZJTEUgYXJlIG5vdCBzdXBwb3J0ZWQgZm9yIHF1ZXJ5KCkKQEAgLTQ4OCw3ICs0ODgsNyBAQAogICAgIHB1YmxpYyBVcmkgaW5zZXJ0KGZpbmFsIFVyaSB1cmksIGZpbmFsIENvbnRlbnRWYWx1ZXMgdmFsdWVzKQogICAgICAgICAgICAgdGhyb3dzIFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uIHsKICAgICAgICAgaWYgKG51bGwgPT0gdXJpIHx8IG51bGwgPT0gdmFsdWVzKSByZXR1cm4gbnVsbDsgLy8gU2hvdWxkIG5ldmVyIGhhcHBlbiBidXQgbGV0J3MgYmUgc2FmZQotICAgICAgICBQcml2YXRlTG9nLmxvZygiSW5zZXJ0LCB1cmkgPSAiICsgdXJpLnRvU3RyaW5nKCksIHRoaXMpOworICAgICAgICBQcml2YXRlTG9nLmxvZygiSW5zZXJ0LCB1cmkgPSAiICsgdXJpLnRvU3RyaW5nKCkpOwogICAgICAgICBmaW5hbCBTdHJpbmcgY2xpZW50SWQgPSBnZXRDbGllbnRJZCh1cmkpOwogICAgICAgICBzd2l0Y2ggKG1hdGNoVXJpKHVyaSkpIHsKICAgICAgICAgICAgIGNhc2UgRElDVElPTkFSWV9WMl9NRVRBREFUQToKQEAgLTUxNyw3ICs1MTcsNyBAQAogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBESUNUSU9OQVJZX1YxX1dIT0xFX0xJU1Q6CiAgICAgICAgICAgICBjYXNlIERJQ1RJT05BUllfVjFfRElDVF9JTkZPOgotICAgICAgICAgICAgICAgIFByaXZhdGVMb2cubG9nKCJBdHRlbXB0IHRvIGluc2VydCA6ICIgKyB1cmksIHRoaXMpOworICAgICAgICAgICAgICAgIFByaXZhdGVMb2cubG9nKCJBdHRlbXB0IHRvIGluc2VydCA6ICIgKyB1cmkpOwogICAgICAgICAgICAgICAgIHRocm93IG5ldyBVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbigKICAgICAgICAgICAgICAgICAgICAgICAgICJJbnNlcnRpb24gaW4gdGhlIGRpY3Rpb25hcnkgaXMgbm90IHN1cHBvcnRlZCBpbiB0aGlzIHZlcnNpb24iKTsKICAgICAgICAgfQpAQCAtNTMyLDcgKzUzMiw3IEBACiAgICAgQE92ZXJyaWRlCiAgICAgcHVibGljIGludCB1cGRhdGUoZmluYWwgVXJpIHVyaSwgZmluYWwgQ29udGVudFZhbHVlcyB2YWx1ZXMsIGZpbmFsIFN0cmluZyBzZWxlY3Rpb24sCiAgICAgICAgICAgICBmaW5hbCBTdHJpbmdbXSBzZWxlY3Rpb25BcmdzKSB0aHJvd3MgVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24gewotICAgICAgICBQcml2YXRlTG9nLmxvZygiQXR0ZW1wdCB0byB1cGRhdGUgOiAiICsgdXJpLCB0aGlzKTsKKyAgICAgICAgUHJpdmF0ZUxvZy5sb2coIkF0dGVtcHQgdG8gdXBkYXRlIDogIiArIHVyaSk7CiAgICAgICAgIHRocm93IG5ldyBVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbigiVXBkYXRpbmcgZGljdGlvbmFyeSB3b3JkcyBpcyBub3Qgc3VwcG9ydGVkIik7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvZGljdGlvbmFyeXBhY2svRGljdGlvbmFyeVNlcnZpY2UuamF2YSBiL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2RpY3Rpb25hcnlwYWNrL0RpY3Rpb25hcnlTZXJ2aWNlLmphdmEKaW5kZXggNTgxN2ViNC4uNDZiYjU1NCAxMDA2NDQKLS0tIGEvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvZGljdGlvbmFyeXBhY2svRGljdGlvbmFyeVNlcnZpY2UuamF2YQorKysgYi9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9kaWN0aW9uYXJ5cGFjay9EaWN0aW9uYXJ5U2VydmljZS5qYXZhCkBAIC0yMSw3ICsyMSw2IEBACiBpbXBvcnQgYW5kcm9pZC5hcHAuU2VydmljZTsKIGltcG9ydCBhbmRyb2lkLmNvbnRlbnQuQ29udGV4dDsKIGltcG9ydCBhbmRyb2lkLmNvbnRlbnQuSW50ZW50OwotaW1wb3J0IGFuZHJvaWQuY29udGVudC5TaGFyZWRQcmVmZXJlbmNlczsKIGltcG9ydCBhbmRyb2lkLm9zLklCaW5kZXI7CiBpbXBvcnQgYW5kcm9pZC50ZXh0LmZvcm1hdC5EYXRlVXRpbHM7CiBpbXBvcnQgYW5kcm9pZC51dGlsLkxvZzsKQEAgLTE5MCw3ICsxODksNyBAQAogICAgICAgICAvLyBpcyBzdGlsbCBtb3JlIHJlY2VudCB0aGFuIFVQREFURV9GUkVRVUVOQ1ksIGRvIG5vdGhpbmcuCiAgICAgICAgIGlmICghaXNMYXN0VXBkYXRlQXRMZWFzdFRoaXNPbGQoY29udGV4dCwgVVBEQVRFX0ZSRVFVRU5DWSkpIHJldHVybjsKIAotICAgICAgICBQcml2YXRlTG9nLmxvZygiRGF0ZSBjaGFuZ2VkIC0gcmVnaXN0ZXJpbmcgYWxhcm0iLCBjb250ZXh0KTsKKyAgICAgICAgUHJpdmF0ZUxvZy5sb2coIkRhdGUgY2hhbmdlZCAtIHJlZ2lzdGVyaW5nIGFsYXJtIik7CiAgICAgICAgIEFsYXJtTWFuYWdlciBhbGFybU1hbmFnZXIgPSAoQWxhcm1NYW5hZ2VyKWNvbnRleHQuZ2V0U3lzdGVtU2VydmljZShDb250ZXh0LkFMQVJNX1NFUlZJQ0UpOwogCiAgICAgICAgIC8vIEJlc3QgZWZmb3J0IHRvIHdha2UgYmV0d2VlbiBtaWRuaWdodCBhbmQgTUFYX0FMQVJNX0RFTEFZIGluIHRoZSBtb3JuaW5nLgpAQCAtMjE1LDcgKzIxNCw3IEBACiAgICAgcHJpdmF0ZSBzdGF0aWMgYm9vbGVhbiBpc0xhc3RVcGRhdGVBdExlYXN0VGhpc09sZChmaW5hbCBDb250ZXh0IGNvbnRleHQsIGZpbmFsIGxvbmcgdGltZSkgewogICAgICAgICBmaW5hbCBsb25nIG5vdyA9IFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpOwogICAgICAgICBmaW5hbCBsb25nIGxhc3RVcGRhdGUgPSBNZXRhZGF0YURiSGVscGVyLmdldE9sZGVzdFVwZGF0ZVRpbWUoY29udGV4dCk7Ci0gICAgICAgIFByaXZhdGVMb2cubG9nKCJMYXN0IHVwZGF0ZSB3YXMgIiArIGxhc3RVcGRhdGUsIGNvbnRleHQpOworICAgICAgICBQcml2YXRlTG9nLmxvZygiTGFzdCB1cGRhdGUgd2FzICIgKyBsYXN0VXBkYXRlKTsKICAgICAgICAgcmV0dXJuIGxhc3RVcGRhdGUgKyB0aW1lIDwgbm93OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvZGljdGlvbmFyeXBhY2svRGljdGlvbmFyeVNldHRpbmdzRnJhZ21lbnQuamF2YSBiL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2RpY3Rpb25hcnlwYWNrL0RpY3Rpb25hcnlTZXR0aW5nc0ZyYWdtZW50LmphdmEKaW5kZXggOWUyN2MxZi4uZmI3NWQ2ZCAxMDA2NDQKLS0tIGEvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvZGljdGlvbmFyeXBhY2svRGljdGlvbmFyeVNldHRpbmdzRnJhZ21lbnQuamF2YQorKysgYi9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9kaWN0aW9uYXJ5cGFjay9EaWN0aW9uYXJ5U2V0dGluZ3NGcmFnbWVudC5qYXZhCkBAIC02NCw2ICs2NCw4IEBACiAgICAgcHJpdmF0ZSBDb25uZWN0aXZpdHlNYW5hZ2VyIG1Db25uZWN0aXZpdHlNYW5hZ2VyOwogICAgIHByaXZhdGUgTWVudUl0ZW0gbVVwZGF0ZU5vd01lbnU7CiAgICAgcHJpdmF0ZSBib29sZWFuIG1DaGFuZ2VkU2V0dGluZ3M7CisgICAgcHJpdmF0ZSBEaWN0aW9uYXJ5TGlzdEludGVyZmFjZVN0YXRlIG1EaWN0aW9uYXJ5TGlzdEludGVyZmFjZVN0YXRlID0KKyAgICAgICAgICAgIG5ldyBEaWN0aW9uYXJ5TGlzdEludGVyZmFjZVN0YXRlKCk7CiAKICAgICBwcml2YXRlIGZpbmFsIEJyb2FkY2FzdFJlY2VpdmVyIG1Db25uZWN0aXZpdHlDaGFuZ2VkUmVjZWl2ZXIgPSBuZXcgQnJvYWRjYXN0UmVjZWl2ZXIoKSB7CiAgICAgICAgICAgICBAT3ZlcnJpZGUKQEAgLTI4Myw2ICsyODUsNyBAQAogICAgICAgICAgICAgZmluYWwgaW50IGxvY2FsZUluZGV4ID0gY3Vyc29yLmdldENvbHVtbkluZGV4KE1ldGFkYXRhRGJIZWxwZXIuTE9DQUxFX0NPTFVNTik7CiAgICAgICAgICAgICBmaW5hbCBpbnQgZGVzY3JpcHRpb25JbmRleCA9IGN1cnNvci5nZXRDb2x1bW5JbmRleChNZXRhZGF0YURiSGVscGVyLkRFU0NSSVBUSU9OX0NPTFVNTik7CiAgICAgICAgICAgICBmaW5hbCBpbnQgc3RhdHVzSW5kZXggPSBjdXJzb3IuZ2V0Q29sdW1uSW5kZXgoTWV0YWRhdGFEYkhlbHBlci5TVEFUVVNfQ09MVU1OKTsKKyAgICAgICAgICAgIGZpbmFsIGludCBmaWxlc2l6ZUluZGV4ID0gY3Vyc29yLmdldENvbHVtbkluZGV4KE1ldGFkYXRhRGJIZWxwZXIuRklMRVNJWkVfQ09MVU1OKTsKICAgICAgICAgICAgIGRvIHsKICAgICAgICAgICAgICAgICBmaW5hbCBTdHJpbmcgd29yZGxpc3RJZCA9IGN1cnNvci5nZXRTdHJpbmcoaWRJbmRleCk7CiAgICAgICAgICAgICAgICAgZmluYWwgaW50IHZlcnNpb24gPSBjdXJzb3IuZ2V0SW50KHZlcnNpb25JbmRleCk7CkBAIC0yOTIsMTMgKzI5NSwxNSBAQAogICAgICAgICAgICAgICAgIGZpbmFsIGludCBzdGF0dXMgPSBjdXJzb3IuZ2V0SW50KHN0YXR1c0luZGV4KTsKICAgICAgICAgICAgICAgICBmaW5hbCBpbnQgbWF0Y2hMZXZlbCA9IExvY2FsZVV0aWxzLmdldE1hdGNoTGV2ZWwoc3lzdGVtTG9jYWxlU3RyaW5nLCBsb2NhbGVTdHJpbmcpOwogICAgICAgICAgICAgICAgIGZpbmFsIFN0cmluZyBtYXRjaExldmVsU3RyaW5nID0gTG9jYWxlVXRpbHMuZ2V0TWF0Y2hMZXZlbFNvcnRlZFN0cmluZyhtYXRjaExldmVsKTsKKyAgICAgICAgICAgICAgICBmaW5hbCBpbnQgZmlsZXNpemUgPSBjdXJzb3IuZ2V0SW50KGZpbGVzaXplSW5kZXgpOwogICAgICAgICAgICAgICAgIC8vIFRoZSBrZXkgaXMgc29ydGVkIGluIGxleGljb2dyYXBoaWMgb3JkZXIsIGFjY29yZGluZyB0byB0aGUgbWF0Y2ggbGV2ZWwsIHRoZW4KICAgICAgICAgICAgICAgICAvLyB0aGUgZGVzY3JpcHRpb24uCiAgICAgICAgICAgICAgICAgZmluYWwgU3RyaW5nIGtleSA9IG1hdGNoTGV2ZWxTdHJpbmcgKyAiLiIgKyBkZXNjcmlwdGlvbiArICIuIiArIHdvcmRsaXN0SWQ7CiAgICAgICAgICAgICAgICAgZmluYWwgV29yZExpc3RQcmVmZXJlbmNlIGV4aXN0aW5nUHJlZiA9IHByZWZMaXN0LmdldChrZXkpOwogICAgICAgICAgICAgICAgIGlmIChudWxsID09IGV4aXN0aW5nUHJlZiB8fCBoYXNQcmlvcml0eShzdGF0dXMsIGV4aXN0aW5nUHJlZi5tU3RhdHVzKSkgewotICAgICAgICAgICAgICAgICAgICBmaW5hbCBXb3JkTGlzdFByZWZlcmVuY2UgcHJlZiA9IG5ldyBXb3JkTGlzdFByZWZlcmVuY2UoYWN0aXZpdHksIG1DbGllbnRJZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB3b3JkbGlzdElkLCB2ZXJzaW9uLCBsb2NhbGUsIGRlc2NyaXB0aW9uLCBzdGF0dXMpOworICAgICAgICAgICAgICAgICAgICBmaW5hbCBXb3JkTGlzdFByZWZlcmVuY2UgcHJlZiA9IG5ldyBXb3JkTGlzdFByZWZlcmVuY2UoYWN0aXZpdHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbURpY3Rpb25hcnlMaXN0SW50ZXJmYWNlU3RhdGUsIG1DbGllbnRJZCwgd29yZGxpc3RJZCwgdmVyc2lvbiwgbG9jYWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uLCBzdGF0dXMsIGZpbGVzaXplKTsKICAgICAgICAgICAgICAgICAgICAgcHJlZkxpc3QucHV0KGtleSwgcHJlZik7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSB3aGlsZSAoY3Vyc29yLm1vdmVUb05leHQoKSk7CmRpZmYgLS1naXQgYS9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9kaWN0aW9uYXJ5cGFjay9Mb2dQcm9ibGVtUmVwb3J0ZXIuamF2YSBiL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2RpY3Rpb25hcnlwYWNrL0xvZ1Byb2JsZW1SZXBvcnRlci5qYXZhCmluZGV4IGMxMjdhZDUuLmM5ZTEyOGQgMTAwNjQ0Ci0tLSBhL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2RpY3Rpb25hcnlwYWNrL0xvZ1Byb2JsZW1SZXBvcnRlci5qYXZhCisrKyBiL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2RpY3Rpb25hcnlwYWNrL0xvZ1Byb2JsZW1SZXBvcnRlci5qYXZhCkBAIC0yOCw3ICsyOCw4IEBACiAgICAgICAgIFRBRyA9IHRhZzsKICAgICB9CiAKKyAgICBAT3ZlcnJpZGUKICAgICBwdWJsaWMgdm9pZCByZXBvcnQoZmluYWwgRXhjZXB0aW9uIGUpIHsKLSAgICAgICAgTG9nLmUoVEFHLCAiUmVwb3J0aW5nIHByb2JsZW0gOiAiICsgZSk7CisgICAgICAgIExvZy5lKFRBRywgIlJlcG9ydGluZyBwcm9ibGVtIiwgZSk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvZGljdGlvbmFyeXBhY2svTWV0YWRhdGFEYkhlbHBlci5qYXZhIGIvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvZGljdGlvbmFyeXBhY2svTWV0YWRhdGFEYkhlbHBlci5qYXZhCmluZGV4IDU1ZjU0NWEuLjAzZWQyNjcgMTAwNjQ0Ci0tLSBhL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2RpY3Rpb25hcnlwYWNrL01ldGFkYXRhRGJIZWxwZXIuamF2YQorKysgYi9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9kaWN0aW9uYXJ5cGFjay9NZXRhZGF0YURiSGVscGVyLmphdmEKQEAgLTE2LDEzICsxNiwxMSBAQAogCiBwYWNrYWdlIGNvbS5hbmRyb2lkLmlucHV0bWV0aG9kLmRpY3Rpb25hcnlwYWNrOwogCi1pbXBvcnQgYW5kcm9pZC5jb250ZW50LkNvbnRlbnRSZXNvbHZlcjsKIGltcG9ydCBhbmRyb2lkLmNvbnRlbnQuQ29udGVudFZhbHVlczsKIGltcG9ydCBhbmRyb2lkLmNvbnRlbnQuQ29udGV4dDsKIGltcG9ydCBhbmRyb2lkLmRhdGFiYXNlLkN1cnNvcjsKIGltcG9ydCBhbmRyb2lkLmRhdGFiYXNlLnNxbGl0ZS5TUUxpdGVEYXRhYmFzZTsKIGltcG9ydCBhbmRyb2lkLmRhdGFiYXNlLnNxbGl0ZS5TUUxpdGVPcGVuSGVscGVyOwotaW1wb3J0IGFuZHJvaWQucHJvdmlkZXIuU2V0dGluZ3M7CiBpbXBvcnQgYW5kcm9pZC50ZXh0LlRleHRVdGlsczsKIGltcG9ydCBhbmRyb2lkLnV0aWwuTG9nOwogCkBAIC00NywxNiArNDUsMTYgQEAKICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgTUVUQURBVEFfREFUQUJBU0VfSU5JVElBTF9WRVJTSU9OID0gMzsKICAgICAvLyBUaGlzIGlzIHRoZSBmaXJzdCByZWxlYXNlZCB2ZXJzaW9uIG9mIHRoZSBkYXRhYmFzZSB0aGF0IGltcGxlbWVudHMgQ0xJRU5USUQuIEl0IGlzCiAgICAgLy8gdXNlZCB0byBpZGVudGlmeSB0aGUgdmVyc2lvbnMgZm9yIHVwZ3JhZGVzLiBUaGlzIHNob3VsZCBuZXZlciBjaGFuZ2UgZ29pbmcgZm9yd2FyZC4KLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgTUVUQURBVEFfREFUQUJBU0VfVkVSU0lPTl9XSVRIX0NMSUVOVElEID0gNTsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgTUVUQURBVEFfREFUQUJBU0VfVkVSU0lPTl9XSVRIX0NMSUVOVElEID0gNjsKICAgICAvLyBUaGlzIGlzIHRoZSBjdXJyZW50IGRhdGFiYXNlIHZlcnNpb24uIEl0IHNob3VsZCBiZSB1cGRhdGVkIHdoZW4gdGhlIGRhdGFiYXNlIHNjaGVtYQogICAgIC8vIGdldHMgdXBkYXRlZC4gSXQgaXMgcGFzc2VkIHRvIHRoZSBmcmFtZXdvcmsgY29uc3RydWN0b3Igb2YgU1FMaXRlT3BlbkhlbHBlciwgc28KICAgICAvLyB0aGF0J3Mgd2hhdCB0aGUgZnJhbWV3b3JrIHVzZXMgdG8gdHJhY2sgb3VyIGRhdGFiYXNlIHZlcnNpb24uCi0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IE1FVEFEQVRBX0RBVEFCQVNFX1ZFUlNJT04gPSA1OworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBNRVRBREFUQV9EQVRBQkFTRV9WRVJTSU9OID0gNjsKIAogICAgIHByaXZhdGUgZmluYWwgc3RhdGljIGxvbmcgTk9UX0FfRE9XTkxPQURfSUQgPSAtMTsKIAogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIE1FVEFEQVRBX1RBQkxFX05BTUUgPSAicGVuZGluZ1VwZGF0ZXMiOwotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBDTElFTlRfVEFCTEVfTkFNRSA9ICJjbGllbnRzIjsKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIENMSUVOVF9UQUJMRV9OQU1FID0gImNsaWVudHMiOwogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFBFTkRJTkdJRF9DT0xVTU4gPSAicGVuZGluZ2lkIjsgLy8gRG93bmxvYWQgTWFuYWdlciBJRAogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFRZUEVfQ09MVU1OID0gInR5cGUiOwogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFNUQVRVU19DT0xVTU4gPSAic3RhdHVzIjsKQEAgLTc1LDYgKzczLDcgQEAKIAogICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBDTElFTlRfQ0xJRU5UX0lEX0NPTFVNTiA9ICJjbGllbnRpZCI7CiAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIENMSUVOVF9NRVRBREFUQV9VUklfQ09MVU1OID0gInVyaSI7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIENMSUVOVF9NRVRBREFUQV9BRERJVElPTkFMX0lEX0NPTFVNTiA9ICJhZGRpdGlvbmFsaWQiOwogICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBDTElFTlRfTEFTVF9VUERBVEVfREFURV9DT0xVTU4gPSAibGFzdHVwZGF0ZSI7CiAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIENMSUVOVF9QRU5ESU5HSURfQ09MVU1OID0gInBlbmRpbmdpZCI7IC8vIERvd25sb2FkIE1hbmFnZXIgSUQKIApAQCAtMTMwLDYgKzEyOSw3IEBACiAgICAgICAgICAgICAiQ1JFQVRFIFRBQkxFIElGIE5PVCBFWElTVFMgIiArIENMSUVOVF9UQUJMRV9OQU1FICsgIiAoIgogICAgICAgICAgICAgKyBDTElFTlRfQ0xJRU5UX0lEX0NPTFVNTiArICIgVEVYVCwgIgogICAgICAgICAgICAgKyBDTElFTlRfTUVUQURBVEFfVVJJX0NPTFVNTiArICIgVEVYVCwgIgorICAgICAgICAgICAgKyBDTElFTlRfTUVUQURBVEFfQURESVRJT05BTF9JRF9DT0xVTU4gKyAiIFRFWFQsICIKICAgICAgICAgICAgICsgQ0xJRU5UX0xBU1RfVVBEQVRFX0RBVEVfQ09MVU1OICsgIiBJTlRFR0VSIE5PVCBOVUxMIERFRkFVTFQgMCwgIgogICAgICAgICAgICAgKyBDTElFTlRfUEVORElOR0lEX0NPTFVNTiArICIgSU5URUdFUiwgIgogICAgICAgICAgICAgKyBGTEFHU19DT0xVTU4gKyAiIElOVEVHRVIsICIKQEAgLTI4NCwxNCArMjg0LDE1IEBACiAgICAgICogQHJldHVybiB0aGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBVUkkKICAgICAgKi8KICAgICBwdWJsaWMgc3RhdGljIFN0cmluZyBnZXRNZXRhZGF0YVVyaUFzU3RyaW5nKGZpbmFsIENvbnRleHQgY29udGV4dCwgZmluYWwgU3RyaW5nIGNsaWVudElkKSB7Ci0gICAgICAgIFNRTGl0ZURhdGFiYXNlIGRlZmF1bHREYiA9IGdldERiKGNvbnRleHQsIG51bGwpOwotICAgICAgICBmaW5hbCBDdXJzb3IgY3Vyc29yID0gZGVmYXVsdERiLnF1ZXJ5KENMSUVOVF9UQUJMRV9OQU1FLAotICAgICAgICAgICAgICAgIG5ldyBTdHJpbmdbXSB7IENMSUVOVF9NRVRBREFUQV9VUklfQ09MVU1OIH0sCi0gICAgICAgICAgICAgICAgQ0xJRU5UX0NMSUVOVF9JRF9DT0xVTU4gKyAiID0gPyIsIG5ldyBTdHJpbmdbXSB7IGNsaWVudElkIH0sCisgICAgICAgIFNRTGl0ZURhdGFiYXNlIGRlZmF1bHREYiA9IE1ldGFkYXRhRGJIZWxwZXIuZ2V0RGIoY29udGV4dCwgbnVsbCk7CisgICAgICAgIGZpbmFsIEN1cnNvciBjdXJzb3IgPSBkZWZhdWx0RGIucXVlcnkoTWV0YWRhdGFEYkhlbHBlci5DTElFTlRfVEFCTEVfTkFNRSwKKyAgICAgICAgICAgICAgICBuZXcgU3RyaW5nW10geyBNZXRhZGF0YURiSGVscGVyLkNMSUVOVF9NRVRBREFUQV9VUklfQ09MVU1OLAorICAgICAgICAgICAgICAgICAgICAgICAgTWV0YWRhdGFEYkhlbHBlci5DTElFTlRfTUVUQURBVEFfQURESVRJT05BTF9JRF9DT0xVTU4gfSwKKyAgICAgICAgICAgICAgICBNZXRhZGF0YURiSGVscGVyLkNMSUVOVF9DTElFTlRfSURfQ09MVU1OICsgIiA9ID8iLCBuZXcgU3RyaW5nW10geyBjbGllbnRJZCB9LAogICAgICAgICAgICAgICAgIG51bGwsIG51bGwsIG51bGwsIG51bGwpOwogICAgICAgICB0cnkgewogICAgICAgICAgICAgaWYgKCFjdXJzb3IubW92ZVRvRmlyc3QoKSkgcmV0dXJuIG51bGw7Ci0gICAgICAgICAgICByZXR1cm4gY3Vyc29yLmdldFN0cmluZygwKTsgLy8gT25seSBvbmUgY29sdW1uLCByZXR1cm4gaXQKKyAgICAgICAgICAgIHJldHVybiBNZXRhZGF0YVVyaUdldHRlci5nZXRVcmkoY29udGV4dCwgY3Vyc29yLmdldFN0cmluZygwKSwgY3Vyc29yLmdldFN0cmluZygxKSk7CiAgICAgICAgIH0gZmluYWxseSB7CiAgICAgICAgICAgICBjdXJzb3IuY2xvc2UoKTsKICAgICAgICAgfQpAQCAtMzAwLDcgKzMwMSw4IEBACiAgICAgLyoqCiAgICAgICogVXBkYXRlIHRoZSBsYXN0IG1ldGFkYXRhIHVwZGF0ZSB0aW1lIGZvciBhbGwgY2xpZW50cyB1c2luZyBhIHBhcnRpY3VsYXIgVVJJLgogICAgICAqCi0gICAgICogQWxsIGNsaWVudHMgdXNpbmcgdGhpcyBtZXRhZGF0YSBVUkkgd2lsbCBiZSBpbmRpY2F0ZWQgYXMgaGF2aW5nIGJlZW4gdXBkYXRlZCBub3cuCisgICAgICogVGhpcyBtZXRob2Qgc2VhcmNoZXMgZm9yIGFsbCBjbGllbnRzIHVzaW5nIGEgcGFydGljdWxhciBVUkkgYW5kIHVwZGF0ZXMgdGhlIGxhc3QKKyAgICAgKiB1cGRhdGUgdGltZSBmb3IgdGhpcyBjbGllbnQuCiAgICAgICogVGhlIGN1cnJlbnQgdGltZSBpcyB1c2VkIGFzIHRoZSBsYXRlc3QgdXBkYXRlIHRpbWUuIFRoaXMgc2F2ZWQgZGF0ZSB3aWxsIGJlIHdoYXQKICAgICAgKiBpcyByZXR1cm5lZCBoZW5jZWZvcnRoIGJ5IHtAbGluayAjZ2V0TGFzdFVwZGF0ZURhdGVGb3JDbGllbnQoQ29udGV4dCwgU3RyaW5nKX0sCiAgICAgICogdW50aWwgdGhpcyBtZXRob2QgaXMgY2FsbGVkIGFnYWluLgpAQCAtMzA5LDEzICszMTEsMjYgQEAKICAgICAgKiBAcGFyYW0gdXJpIHRoZSBtZXRhZGF0YSBVUkkgd2UganVzdCBkb3dubG9hZGVkCiAgICAgICovCiAgICAgcHVibGljIHN0YXRpYyB2b2lkIHNhdmVMYXN0VXBkYXRlVGltZU9mVXJpKGZpbmFsIENvbnRleHQgY29udGV4dCwgZmluYWwgU3RyaW5nIHVyaSkgewotICAgICAgICBQcml2YXRlTG9nLmxvZygiU2F2ZSBsYXN0IHVwZGF0ZSB0aW1lIG9mIFVSSSA6ICIgKyB1cmkgKyAiICIgKyBTeXN0ZW0uY3VycmVudFRpbWVNaWxsaXMoKSwKLSAgICAgICAgICAgICAgICBjb250ZXh0KTsKKyAgICAgICAgUHJpdmF0ZUxvZy5sb2coIlNhdmUgbGFzdCB1cGRhdGUgdGltZSBvZiBVUkkgOiAiICsgdXJpICsgIiAiICsgU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCkpOwogICAgICAgICBmaW5hbCBDb250ZW50VmFsdWVzIHZhbHVlcyA9IG5ldyBDb250ZW50VmFsdWVzKCk7CiAgICAgICAgIHZhbHVlcy5wdXQoQ0xJRU5UX0xBU1RfVVBEQVRFX0RBVEVfQ09MVU1OLCBTeXN0ZW0uY3VycmVudFRpbWVNaWxsaXMoKSk7CiAgICAgICAgIGZpbmFsIFNRTGl0ZURhdGFiYXNlIGRlZmF1bHREYiA9IGdldERiKGNvbnRleHQsIG51bGwpOwotICAgICAgICBkZWZhdWx0RGIudXBkYXRlKENMSUVOVF9UQUJMRV9OQU1FLCB2YWx1ZXMsCi0gICAgICAgICAgICAgICAgQ0xJRU5UX01FVEFEQVRBX1VSSV9DT0xVTU4gKyAiID0gPyIsIG5ldyBTdHJpbmdbXSB7IHVyaSB9KTsKKyAgICAgICAgZmluYWwgQ3Vyc29yIGN1cnNvciA9IE1ldGFkYXRhRGJIZWxwZXIucXVlcnlDbGllbnRJZHMoY29udGV4dCk7CisgICAgICAgIGlmIChudWxsID09IGN1cnNvcikgcmV0dXJuOworICAgICAgICB0cnkgeworICAgICAgICAgICAgaWYgKCFjdXJzb3IubW92ZVRvRmlyc3QoKSkgcmV0dXJuOworICAgICAgICAgICAgZG8geworICAgICAgICAgICAgICAgIGZpbmFsIFN0cmluZyBjbGllbnRJZCA9IGN1cnNvci5nZXRTdHJpbmcoMCk7CisgICAgICAgICAgICAgICAgZmluYWwgU3RyaW5nIG1ldGFkYXRhVXJpID0KKyAgICAgICAgICAgICAgICAgICAgICAgIE1ldGFkYXRhRGJIZWxwZXIuZ2V0TWV0YWRhdGFVcmlBc1N0cmluZyhjb250ZXh0LCBjbGllbnRJZCk7CisgICAgICAgICAgICAgICAgaWYgKG1ldGFkYXRhVXJpLmVxdWFscyh1cmkpKSB7CisgICAgICAgICAgICAgICAgICAgIGRlZmF1bHREYi51cGRhdGUoQ0xJRU5UX1RBQkxFX05BTUUsIHZhbHVlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDTElFTlRfQ0xJRU5UX0lEX0NPTFVNTiArICIgPSA/IiwgbmV3IFN0cmluZ1tdIHsgY2xpZW50SWQgfSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSB3aGlsZSAoY3Vyc29yLm1vdmVUb05leHQoKSk7CisgICAgICAgIH0gZmluYWxseSB7CisgICAgICAgICAgICBjdXJzb3IuY2xvc2UoKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIC8qKgpAQCAtNzMwLDExICs3NDUsMTMgQEAKICAgICAvKioKICAgICAgKiBVcGRhdGVzIGluZm9ybWF0aW9uIHJlbGF0aXZlIHRvIGEgc3BlY2lmaWMgY2xpZW50LgogICAgICAqCi0gICAgICogVXBkYXRhYmxlIGluZm9ybWF0aW9uIGluY2x1ZGVzIG9ubHkgdGhlIG1ldGFkYXRhIFVSSSwgYnV0IG1heSBiZSBleHBhbmRlZCBpbiB0aGUgZnV0dXJlLgorICAgICAqIFVwZGF0YWJsZSBpbmZvcm1hdGlvbiBpbmNsdWRlcyB0aGUgbWV0YWRhdGEgVVJJIGFuZCB0aGUgYWRkaXRpb25hbCBJRCBjb2x1bW4uIEl0IG1heSBiZQorICAgICAqIGV4cGFuZGVkIGluIHRoZSBmdXR1cmUuCiAgICAgICogVGhlIHBhc3NlZCB2YWx1ZXMgbXVzdCBpbmNsdWRlIGEgY2xpZW50IElEIGluIHRoZSBrZXkgQ0xJRU5UX0NMSUVOVF9JRF9DT0xVTU4sIGFuZCBpdCBtdXN0Ci0gICAgICogYmUgZXF1YWwgdG8gdGhlIHN0cmluZyBwYXNzZWQgYXMgYW4gYXJndW1lbnQgZm9yIGNsaWVudElkLgotICAgICAqIFRoZSBwYXNzZWQgdmFsdWVzIG11c3QgYWxzbyBpbmNsdWRlIGEgbm9uLWVtcHR5IG1ldGFkYXRhIFVSSSBpbiB0aGUKLSAgICAgKiBDTElFTlRfTUVUQURBVEFfVVJJX0NPTFVNTiBjb2x1bW4uCisgICAgICogYmUgZXF1YWwgdG8gdGhlIHN0cmluZyBwYXNzZWQgYXMgYW4gYXJndW1lbnQgZm9yIGNsaWVudElkLiBJdCBtYXkgbm90IGJlIGVtcHR5LgorICAgICAqIFRoZSBwYXNzZWQgdmFsdWVzIG11c3QgYWxzbyBpbmNsdWRlIGEgbm9uLW51bGwgbWV0YWRhdGEgVVJJIGluIHRoZQorICAgICAqIENMSUVOVF9NRVRBREFUQV9VUklfQ09MVU1OIGNvbHVtbiwgYXMgd2VsbCBhcyBhIG5vbi1udWxsIGFkZGl0aW9uYWwgSUQgaW4gdGhlCisgICAgICogQ0xJRU5UX01FVEFEQVRBX0FERElUSU9OQUxfSURfQ09MVU1OLiBCb3RoIHRoZXNlIHN0cmluZ3MgbWF5IGJlIGVtcHR5LgogICAgICAqIElmIGFueSBvZiB0aGUgYWJvdmUgaXMgbm90IGNvbXBsaWVkIHdpdGgsIHRoaXMgZnVuY3Rpb24gcmV0dXJucyB3aXRob3V0IHVwZGF0aW5nIGRhdGEuCiAgICAgICoKICAgICAgKiBAcGFyYW0gY29udGV4dCB0aGUgY29udGV4dCwgdG8gb3BlbiB0aGUgZGF0YWJhc2UKQEAgLTc0NiwxMCArNzYzLDE2IEBACiAgICAgICAgIC8vIFNhbml0eSBjaGVjayB0aGUgY29udGVudCB2YWx1ZXMKICAgICAgICAgZmluYWwgU3RyaW5nIHZhbHVlc0NsaWVudElkID0gdmFsdWVzLmdldEFzU3RyaW5nKENMSUVOVF9DTElFTlRfSURfQ09MVU1OKTsKICAgICAgICAgZmluYWwgU3RyaW5nIHZhbHVlc01ldGFkYXRhVXJpID0gdmFsdWVzLmdldEFzU3RyaW5nKENMSUVOVF9NRVRBREFUQV9VUklfQ09MVU1OKTsKLSAgICAgICAgLy8gRW1wdHkgc3RyaW5nIGlzIGEgdmFsaWQgY2xpZW50IElELCBidXQgZXh0ZXJuYWwgYXBwcyBtYXkgbm90IGNvbmZpZ3VyZSBpdC4KLSAgICAgICAgLy8gRW1wdHkgc3RyaW5nIGlzIGEgdmFsaWQgbWV0YWRhdGEgVVJJIGlmIHRoZSBjbGllbnQgZG9lcyBub3Qgd2FudCB1cGRhdGVzLgotICAgICAgICBpZiAoVGV4dFV0aWxzLmlzRW1wdHkodmFsdWVzQ2xpZW50SWQpIHx8IG51bGwgPT0gdmFsdWVzTWV0YWRhdGFVcmkpIHsKLSAgICAgICAgICAgIC8vIFdlIG5lZWQgYm90aCB0aGVzZSBjb2x1bW5zIHRvIGJlIGZpbGxlZCBpbgorICAgICAgICBmaW5hbCBTdHJpbmcgdmFsdWVzTWV0YWRhdGFBZGRpdGlvbmFsSWQgPQorICAgICAgICAgICAgICAgIHZhbHVlcy5nZXRBc1N0cmluZyhDTElFTlRfTUVUQURBVEFfQURESVRJT05BTF9JRF9DT0xVTU4pOworICAgICAgICAvLyBFbXB0eSBzdHJpbmcgaXMgYSB2YWxpZCBjbGllbnQgSUQsIGJ1dCBleHRlcm5hbCBhcHBzIG1heSBub3QgY29uZmlndXJlIGl0LCBzbyBkaXNhbGxvdworICAgICAgICAvLyBib3RoIG51bGwgYW5kIGVtcHR5IHN0cmluZy4KKyAgICAgICAgLy8gRW1wdHkgc3RyaW5nIGlzIGEgdmFsaWQgbWV0YWRhdGEgVVJJIGlmIHRoZSBjbGllbnQgZG9lcyBub3Qgd2FudCB1cGRhdGVzLCBzbyBhbGxvdworICAgICAgICAvLyBlbXB0eSBzdHJpbmcgYnV0IGRpc2FsbG93IG51bGwuCisgICAgICAgIC8vIEVtcHR5IHN0cmluZyBpcyBhIHZhbGlkIGFkZGl0aW9uYWwgSUQgc28gYWxsb3cgZW1wdHkgc3RyaW5nIGJ1dCBkaXNhbGxvdyBudWxsLgorICAgICAgICBpZiAoVGV4dFV0aWxzLmlzRW1wdHkodmFsdWVzQ2xpZW50SWQpIHx8IG51bGwgPT0gdmFsdWVzTWV0YWRhdGFVcmkKKyAgICAgICAgICAgICAgICB8fCBudWxsID09IHZhbHVlc01ldGFkYXRhQWRkaXRpb25hbElkKSB7CisgICAgICAgICAgICAvLyBXZSBuZWVkIGFsbCB0aGVzZSBjb2x1bW5zIHRvIGJlIGZpbGxlZCBpbgogICAgICAgICAgICAgVXRpbHMubCgiTWlzc2luZyBwYXJhbWV0ZXIgZm9yIHVwZGF0ZUNsaWVudEluZm8iKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtNzgwLDggKzgwMyw5IEBACiAgICAgICogUmVnaXN0ZXIgYSBkb3dubG9hZCBJRCBmb3IgYSBzcGVjaWZpYyBtZXRhZGF0YSBVUkkuCiAgICAgICoKICAgICAgKiBUaGlzIG1ldGhvZCBzaG91bGQgYmUgY2FsbGVkIHdoZW4gYSBkb3dubG9hZCBmb3IgYSBtZXRhZGF0YSBVUkkgaXMgc3RhcnRpbmcuIEl0IHdpbGwKLSAgICAgKiByZWdpc3RlciB0aGUgZG93bmxvYWQgSUQgZm9yIGFsbCBjbGllbnRzIHVzaW5nIHRoaXMgbWV0YWRhdGEgVVJJIGludG8gdGhlIGRhdGFiYXNlCi0gICAgICogZm9yIGxhdGVyIHJldHJpZXZhbCBieSB7QGxpbmsgI2dldERvd25sb2FkUmVjb3Jkc0ZvckRvd25sb2FkSWQoQ29udGV4dCwgbG9uZyl9LgorICAgICAqIHNlYXJjaCBmb3IgYWxsIGNsaWVudHMgdXNpbmcgdGhpcyBtZXRhZGF0YSBVUkkgYW5kIHdpbGwgcmVnaXN0ZXIgZm9yIGVhY2ggb2YgdGhlbQorICAgICAqIHRoZSBkb3dubG9hZCBJRCBpbnRvIHRoZSBkYXRhYmFzZSBmb3IgbGF0ZXIgcmV0cmlldmFsIGJ5CisgICAgICoge0BsaW5rICNnZXREb3dubG9hZFJlY29yZHNGb3JEb3dubG9hZElkKENvbnRleHQsIGxvbmcpfS4KICAgICAgKgogICAgICAqIEBwYXJhbSBjb250ZXh0IGEgY29udGV4dCBmb3Igb3BlbmluZyBkYXRhYmFzZXMKICAgICAgKiBAcGFyYW0gdXJpIHRoZSBtZXRhZGF0YSBVUkkKQEAgLTc5Miw4ICs4MTYsMjIgQEAKICAgICAgICAgZmluYWwgQ29udGVudFZhbHVlcyB2YWx1ZXMgPSBuZXcgQ29udGVudFZhbHVlcygpOwogICAgICAgICB2YWx1ZXMucHV0KENMSUVOVF9QRU5ESU5HSURfQ09MVU1OLCBkb3dubG9hZElkKTsKICAgICAgICAgZmluYWwgU1FMaXRlRGF0YWJhc2UgZGVmYXVsdERiID0gZ2V0RGIoY29udGV4dCwgIiIpOwotICAgICAgICBkZWZhdWx0RGIudXBkYXRlKENMSUVOVF9UQUJMRV9OQU1FLCB2YWx1ZXMsCi0gICAgICAgICAgICAgICAgQ0xJRU5UX01FVEFEQVRBX1VSSV9DT0xVTU4gKyAiID0gPyIsIG5ldyBTdHJpbmdbXSB7IHVyaSB9KTsKKyAgICAgICAgZmluYWwgQ3Vyc29yIGN1cnNvciA9IE1ldGFkYXRhRGJIZWxwZXIucXVlcnlDbGllbnRJZHMoY29udGV4dCk7CisgICAgICAgIGlmIChudWxsID09IGN1cnNvcikgcmV0dXJuOworICAgICAgICB0cnkgeworICAgICAgICAgICAgaWYgKCFjdXJzb3IubW92ZVRvRmlyc3QoKSkgcmV0dXJuOworICAgICAgICAgICAgZG8geworICAgICAgICAgICAgICAgIGZpbmFsIFN0cmluZyBjbGllbnRJZCA9IGN1cnNvci5nZXRTdHJpbmcoMCk7CisgICAgICAgICAgICAgICAgZmluYWwgU3RyaW5nIG1ldGFkYXRhVXJpID0KKyAgICAgICAgICAgICAgICAgICAgICAgIE1ldGFkYXRhRGJIZWxwZXIuZ2V0TWV0YWRhdGFVcmlBc1N0cmluZyhjb250ZXh0LCBjbGllbnRJZCk7CisgICAgICAgICAgICAgICAgaWYgKG1ldGFkYXRhVXJpLmVxdWFscyh1cmkpKSB7CisgICAgICAgICAgICAgICAgICAgIGRlZmF1bHREYi51cGRhdGUoQ0xJRU5UX1RBQkxFX05BTUUsIHZhbHVlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDTElFTlRfQ0xJRU5UX0lEX0NPTFVNTiArICIgPSA/IiwgbmV3IFN0cmluZ1tdIHsgY2xpZW50SWQgfSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSB3aGlsZSAoY3Vyc29yLm1vdmVUb05leHQoKSk7CisgICAgICAgIH0gZmluYWxseSB7CisgICAgICAgICAgICBjdXJzb3IuY2xvc2UoKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIC8qKgpkaWZmIC0tZ2l0IGEvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvZGljdGlvbmFyeXBhY2svTWV0YWRhdGFVcmlHZXR0ZXIuamF2YSBiL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2RpY3Rpb25hcnlwYWNrL01ldGFkYXRhVXJpR2V0dGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWQ4MTc2NQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2RpY3Rpb25hcnlwYWNrL01ldGFkYXRhVXJpR2V0dGVyLmphdmEKQEAgLTAsMCArMSwzMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7IHlvdSBtYXkgbm90CisgKiB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZgorICogdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUCisgKiBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuIFNlZSB0aGUKKyAqIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zIHVuZGVyCisgKiB0aGUgTGljZW5zZS4KKyAqLworCitwYWNrYWdlIGNvbS5hbmRyb2lkLmlucHV0bWV0aG9kLmRpY3Rpb25hcnlwYWNrOworCitpbXBvcnQgYW5kcm9pZC5jb250ZW50LkNvbnRleHQ7CisKKy8qKgorICogSGVscGVyIHRvIGdldCB0aGUgbWV0YWRhdGEgVVJJIGZyb20gaXRzIGJhc2UgVVJJIGFuZCB0aGUgYWRkaXRpb25hbCBJRCwgaWYgYW55LgorICovCitwdWJsaWMgY2xhc3MgTWV0YWRhdGFVcmlHZXR0ZXIgeworICAgIHByaXZhdGUgTWV0YWRhdGFVcmlHZXR0ZXIoKSB7CisgICAgICAgIC8vIFRoaXMgaGVscGVyIGNsYXNzIGlzIG5vdCBpbnN0YW50aWFibGUuCisgICAgfQorCisgICAgcHVibGljIHN0YXRpYyBTdHJpbmcgZ2V0VXJpKGZpbmFsIENvbnRleHQgY29udGV4dCwgZmluYWwgU3RyaW5nIGJhc2VVcmksCisgICAgICAgICAgICBmaW5hbCBTdHJpbmcgYWRkaXRpb25hbElkKSB7CisgICAgICAgIHJldHVybiBiYXNlVXJpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2RpY3Rpb25hcnlwYWNrL1ByaXZhdGVMb2cuamF2YSBiL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2RpY3Rpb25hcnlwYWNrL1ByaXZhdGVMb2cuamF2YQppbmRleCA4NTkzYzFjLi42N2RkN2I5IDEwMDY0NAotLS0gYS9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9kaWN0aW9uYXJ5cGFjay9Qcml2YXRlTG9nLmphdmEKKysrIGIvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvZGljdGlvbmFyeXBhY2svUHJpdmF0ZUxvZy5qYXZhCkBAIC0xNiw3ICsxNiw2IEBACiAKIHBhY2thZ2UgY29tLmFuZHJvaWQuaW5wdXRtZXRob2QuZGljdGlvbmFyeXBhY2s7CiAKLWltcG9ydCBhbmRyb2lkLmNvbnRlbnQuQ29udGVudFByb3ZpZGVyOwogaW1wb3J0IGFuZHJvaWQuY29udGVudC5Db250ZW50VmFsdWVzOwogaW1wb3J0IGFuZHJvaWQuY29udGVudC5Db250ZXh0OwogaW1wb3J0IGFuZHJvaWQuZGF0YWJhc2Uuc3FsaXRlLlNRTGl0ZURhdGFiYXNlOwpAQCAtMjQsNiArMjMsNyBAQAogCiBpbXBvcnQgamF2YS50ZXh0LlNpbXBsZURhdGVGb3JtYXQ7CiBpbXBvcnQgamF2YS51dGlsLkRhdGU7CitpbXBvcnQgamF2YS51dGlsLkxvY2FsZTsKIAogLyoqCiAgKiBDbGFzcyB0byBrZWVwIGxvbmctdGVybSBsb2cuIFRoaXMgaXMgaW5hY3RpdmUgaW4gcHJvZHVjdGlvbiwgYW5kIGlzIG9ubHkgZm9yIGRlYnVnIHB1cnBvc2VzLgpAQCAtNDQsMTAgKzQ0LDEwIEBACiAgICAgICAgICAgICArIENPTFVNTl9FVkVOVCArICIgVEVYVCk7IjsKIAogICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFNpbXBsZURhdGVGb3JtYXQgc0RhdGVGb3JtYXQgPQotICAgICAgICAgICAgbmV3IFNpbXBsZURhdGVGb3JtYXQoInl5eXkvTU0vZGQgSEg6bW06c3MiKTsKKyAgICAgICAgICAgIG5ldyBTaW1wbGVEYXRlRm9ybWF0KCJ5eXl5L01NL2RkIEhIOm1tOnNzIiwgTG9jYWxlLlVTKTsKIAogICAgIHByaXZhdGUgc3RhdGljIFByaXZhdGVMb2cgc0luc3RhbmNlID0gbmV3IFByaXZhdGVMb2coKTsKLSAgICBwcml2YXRlIHN0YXRpYyBEZWJ1Z0hlbHBlciBtRGVidWdIZWxwZXIgPSBudWxsOworICAgIHByaXZhdGUgc3RhdGljIERlYnVnSGVscGVyIHNEZWJ1Z0hlbHBlciA9IG51bGw7CiAKICAgICBwcml2YXRlIFByaXZhdGVMb2coKSB7CiAgICAgfQpAQCAtNTUsOCArNTUsOCBAQAogICAgIHB1YmxpYyBzdGF0aWMgc3luY2hyb25pemVkIFByaXZhdGVMb2cgZ2V0SW5zdGFuY2UoZmluYWwgQ29udGV4dCBjb250ZXh0KSB7CiAgICAgICAgIGlmICghREVCVUcpIHJldHVybiBzSW5zdGFuY2U7CiAgICAgICAgIHN5bmNocm9uaXplZChQcml2YXRlTG9nLmNsYXNzKSB7Ci0gICAgICAgICAgICBpZiAoc0luc3RhbmNlLm1EZWJ1Z0hlbHBlciA9PSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgc0luc3RhbmNlLm1EZWJ1Z0hlbHBlciA9IG5ldyBEZWJ1Z0hlbHBlcihjb250ZXh0KTsKKyAgICAgICAgICAgIGlmIChzRGVidWdIZWxwZXIgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgIHNEZWJ1Z0hlbHBlciA9IG5ldyBEZWJ1Z0hlbHBlcihjb250ZXh0KTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybiBzSW5zdGFuY2U7CiAgICAgICAgIH0KQEAgLTk0LDE2ICs5NCw5IEBACiAKICAgICB9CiAKLSAgICBwdWJsaWMgc3RhdGljIHZvaWQgbG9nKFN0cmluZyBldmVudCwgQ29udGV4dCBjb250ZXh0KSB7CisgICAgcHVibGljIHN0YXRpYyB2b2lkIGxvZyhTdHJpbmcgZXZlbnQpIHsKICAgICAgICAgaWYgKCFERUJVRykgcmV0dXJuOwotICAgICAgICBmaW5hbCBTUUxpdGVEYXRhYmFzZSBsID0gZ2V0SW5zdGFuY2UoY29udGV4dCkubURlYnVnSGVscGVyLmdldFdyaXRhYmxlRGF0YWJhc2UoKTsKLSAgICAgICAgbURlYnVnSGVscGVyLmluc2VydChsLCBldmVudCk7Ci0gICAgfQotCi0gICAgcHVibGljIHN0YXRpYyB2b2lkIGxvZyhTdHJpbmcgZXZlbnQsIENvbnRlbnRQcm92aWRlciBwcm92aWRlcikgewotICAgICAgICBpZiAoIURFQlVHKSByZXR1cm47Ci0gICAgICAgIGZpbmFsIFNRTGl0ZURhdGFiYXNlIGwgPQotICAgICAgICAgICAgICAgIGdldEluc3RhbmNlKHByb3ZpZGVyLmdldENvbnRleHQoKSkubURlYnVnSGVscGVyLmdldFdyaXRhYmxlRGF0YWJhc2UoKTsKLSAgICAgICAgbURlYnVnSGVscGVyLmluc2VydChsLCBldmVudCk7CisgICAgICAgIGZpbmFsIFNRTGl0ZURhdGFiYXNlIGwgPSBzRGVidWdIZWxwZXIuZ2V0V3JpdGFibGVEYXRhYmFzZSgpOworICAgICAgICBEZWJ1Z0hlbHBlci5pbnNlcnQobCwgZXZlbnQpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2RpY3Rpb25hcnlwYWNrL1VwZGF0ZUhhbmRsZXIuamF2YSBiL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2RpY3Rpb25hcnlwYWNrL1VwZGF0ZUhhbmRsZXIuamF2YQppbmRleCAzMTczZTkxLi4zZjkxN2YxIDEwMDY0NAotLS0gYS9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9kaWN0aW9uYXJ5cGFjay9VcGRhdGVIYW5kbGVyLmphdmEKKysrIGIvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvZGljdGlvbmFyeXBhY2svVXBkYXRlSGFuZGxlci5qYXZhCkBAIC0xODMsNyArMTgzLDcgQEAKICAgICAgICAgICAgICAgICBmaW5hbCBTdHJpbmcgY2xpZW50SWQgPSBjdXJzb3IuZ2V0U3RyaW5nKDApOwogICAgICAgICAgICAgICAgIGZpbmFsIFN0cmluZyBtZXRhZGF0YVVyaSA9CiAgICAgICAgICAgICAgICAgICAgICAgICBNZXRhZGF0YURiSGVscGVyLmdldE1ldGFkYXRhVXJpQXNTdHJpbmcoY29udGV4dCwgY2xpZW50SWQpOwotICAgICAgICAgICAgICAgIFByaXZhdGVMb2cubG9nKCJVcGRhdGUgZm9yIGNsaWVudElkICIgKyBVdGlscy5zKGNsaWVudElkKSwgY29udGV4dCk7CisgICAgICAgICAgICAgICAgUHJpdmF0ZUxvZy5sb2coIlVwZGF0ZSBmb3IgY2xpZW50SWQgIiArIFV0aWxzLnMoY2xpZW50SWQpKTsKICAgICAgICAgICAgICAgICBVdGlscy5sKCJVcGRhdGUgZm9yIGNsaWVudElkIiwgY2xpZW50SWQsICIgd2hpY2ggdXNlcyBVUkkgIiwgbWV0YWRhdGFVcmkpOwogICAgICAgICAgICAgICAgIHVyaXMuYWRkKG1ldGFkYXRhVXJpKTsKICAgICAgICAgICAgIH0gd2hpbGUgKGN1cnNvci5tb3ZlVG9OZXh0KCkpOwpAQCAtMjExLDggKzIxMSwxMyBAQAogICAgICAqLwogICAgIHByaXZhdGUgc3RhdGljIHZvaWQgdXBkYXRlQ2xpZW50c1dpdGhNZXRhZGF0YVVyaShmaW5hbCBDb250ZXh0IGNvbnRleHQsCiAgICAgICAgICAgICBmaW5hbCBib29sZWFuIHVwZGF0ZU5vdywgZmluYWwgU3RyaW5nIG1ldGFkYXRhVXJpKSB7Ci0gICAgICAgIFByaXZhdGVMb2cubG9nKCJVcGRhdGUgZm9yIG1ldGFkYXRhIFVSSSAiICsgVXRpbHMucyhtZXRhZGF0YVVyaSksIGNvbnRleHQpOwotICAgICAgICBmaW5hbCBSZXF1ZXN0IG1ldGFkYXRhUmVxdWVzdCA9IG5ldyBSZXF1ZXN0KFVyaS5wYXJzZShtZXRhZGF0YVVyaSkpOworICAgICAgICBQcml2YXRlTG9nLmxvZygiVXBkYXRlIGZvciBtZXRhZGF0YSBVUkkgIiArIFV0aWxzLnMobWV0YWRhdGFVcmkpKTsKKyAgICAgICAgLy8gQWRkaW5nIGEgZGlzYW1iaWd1YXRvciB0byBjaXJjdW12ZW50IGEgYnVnIGluIG9sZGVyIHZlcnNpb25zIG9mIERvd25sb2FkTWFuYWdlci4KKyAgICAgICAgLy8gRG93bmxvYWRNYW5hZ2VyIGFsc28gc3R1cGlkbHkgY3V0cyB0aGUgZXh0ZW5zaW9uIHRvIHJlcGxhY2Ugd2l0aCBpdHMgb3duIHRoYXQgaXQKKyAgICAgICAgLy8gZ2V0cyBmcm9tIHRoZSBjb250ZW50LXR5cGUuIFdlIG5lZWQgdG8gY2lyY3VtdmVudCB0aGlzLgorICAgICAgICBmaW5hbCBTdHJpbmcgZGlzYW1iaWd1YXRvciA9ICIjIiArIFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpCisgICAgICAgICAgICAgICAgKyBjb20uYW5kcm9pZC5pbnB1dG1ldGhvZC5sYXRpbi5VdGlscy5nZXRWZXJzaW9uTmFtZShjb250ZXh0KSArICIuanNvbiI7CisgICAgICAgIGZpbmFsIFJlcXVlc3QgbWV0YWRhdGFSZXF1ZXN0ID0gbmV3IFJlcXVlc3QoVXJpLnBhcnNlKG1ldGFkYXRhVXJpICsgZGlzYW1iaWd1YXRvcikpOwogICAgICAgICBVdGlscy5sKCJSZXF1ZXN0ID0iLCBtZXRhZGF0YVJlcXVlc3QpOwogCiAgICAgICAgIGZpbmFsIFJlc291cmNlcyByZXMgPSBjb250ZXh0LmdldFJlc291cmNlcygpOwpAQCAtMjU3LDcgKzI2Miw3IEBACiAgICAgICAgICAgICAvLyBtZXRob2Qgd2lsbCBpZ25vcmUgaXQuCiAgICAgICAgICAgICB3cml0ZU1ldGFkYXRhRG93bmxvYWRJZChjb250ZXh0LCBtZXRhZGF0YVVyaSwgZG93bmxvYWRJZCk7CiAgICAgICAgIH0KLSAgICAgICAgUHJpdmF0ZUxvZy5sb2coIlJlcXVlc3RlZCBkb3dubG9hZCB3aXRoIGlkICIgKyBkb3dubG9hZElkLCBjb250ZXh0KTsKKyAgICAgICAgUHJpdmF0ZUxvZy5sb2coIlJlcXVlc3RlZCBkb3dubG9hZCB3aXRoIGlkICIgKyBkb3dubG9hZElkKTsKICAgICB9CiAKICAgICAvKioKQEAgLTM1MSw3ICszNTYsMTMgQEAKICAgICAgICAgICAgICAgICBmaW5hbCBpbnQgY29sdW1uVXJpID0gY3Vyc29yLmdldENvbHVtbkluZGV4KERvd25sb2FkTWFuYWdlci5DT0xVTU5fVVJJKTsKICAgICAgICAgICAgICAgICBmaW5hbCBpbnQgZXJyb3IgPSBjdXJzb3IuZ2V0SW50KGNvbHVtbkVycm9yKTsKICAgICAgICAgICAgICAgICBzdGF0dXMgPSBjdXJzb3IuZ2V0SW50KGNvbHVtblN0YXR1cyk7Ci0gICAgICAgICAgICAgICAgdXJpID0gY3Vyc29yLmdldFN0cmluZyhjb2x1bW5VcmkpOworICAgICAgICAgICAgICAgIGZpbmFsIFN0cmluZyB1cmlXaXRoQW5jaG9yID0gY3Vyc29yLmdldFN0cmluZyhjb2x1bW5VcmkpOworICAgICAgICAgICAgICAgIGludCBhbmNob3JJbmRleCA9IHVyaVdpdGhBbmNob3IuaW5kZXhPZignIycpOworICAgICAgICAgICAgICAgIGlmIChhbmNob3JJbmRleCAhPSAtMSkgeworICAgICAgICAgICAgICAgICAgICB1cmkgPSB1cmlXaXRoQW5jaG9yLnN1YnN0cmluZygwLCBhbmNob3JJbmRleCk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgdXJpID0gdXJpV2l0aEFuY2hvcjsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgaWYgKERvd25sb2FkTWFuYWdlci5TVEFUVVNfU1VDQ0VTU0ZVTCAhPSBzdGF0dXMpIHsKICAgICAgICAgICAgICAgICAgICAgTG9nLmUoVEFHLCAiUGVybWFuZW50IGZhaWx1cmUgb2YgZG93bmxvYWQgIiArIGRvd25sb2FkSWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICArICIgd2l0aCBlcnJvciBjb2RlOiAiICsgZXJyb3IpOwpAQCAtNDA0LDcgKzQxNSw3IEBACiAgICAgLyogcGFja2FnZSAqLyBzdGF0aWMgdm9pZCBkb3dubG9hZEZpbmlzaGVkKGZpbmFsIENvbnRleHQgY29udGV4dCwgZmluYWwgSW50ZW50IGludGVudCkgewogICAgICAgICAvLyBHZXQgYW5kIGNoZWNrIHRoZSBJRCBvZiB0aGUgZmlsZSB0aGF0IHdhcyBkb3dubG9hZGVkCiAgICAgICAgIGZpbmFsIGxvbmcgZmlsZUlkID0gaW50ZW50LmdldExvbmdFeHRyYShEb3dubG9hZE1hbmFnZXIuRVhUUkFfRE9XTkxPQURfSUQsIE5PVF9BTl9JRCk7Ci0gICAgICAgIFByaXZhdGVMb2cubG9nKCJEb3dubG9hZCBmaW5pc2hlZCB3aXRoIGlkICIgKyBmaWxlSWQsIGNvbnRleHQpOworICAgICAgICBQcml2YXRlTG9nLmxvZygiRG93bmxvYWQgZmluaXNoZWQgd2l0aCBpZCAiICsgZmlsZUlkKTsKICAgICAgICAgVXRpbHMubCgiRG93bmxvYWRGaW5pc2hlZCB3aXRoIGlkIiwgZmlsZUlkKTsKICAgICAgICAgaWYgKE5PVF9BTl9JRCA9PSBmaWxlSWQpIHJldHVybjsgLy8gU3B1cmlvdXMgd2FrZS11cDogaWdub3JlCiAKQEAgLTQ5MSw3ICs1MDIsNyBAQAogCiAgICAgcHJpdmF0ZSBzdGF0aWMgdm9pZCBwdWJsaXNoVXBkYXRlQ3ljbGVDb21wbGV0ZWRFdmVudChmaW5hbCBDb250ZXh0IGNvbnRleHQpIHsKICAgICAgICAgLy8gRXZlbiBpZiB0aGlzIGlzIG5vdCBzdWNjZXNzZnVsLCB3ZSBoYXZlIHRvIHB1Ymxpc2ggdGhlIG5ldyBzdGF0ZS4KLSAgICAgICAgUHJpdmF0ZUxvZy5sb2coIlB1Ymxpc2hpbmcgdXBkYXRlIGN5Y2xlIGNvbXBsZXRlZCBldmVudCIsIGNvbnRleHQpOworICAgICAgICBQcml2YXRlTG9nLmxvZygiUHVibGlzaGluZyB1cGRhdGUgY3ljbGUgY29tcGxldGVkIGV2ZW50Iik7CiAgICAgICAgIFV0aWxzLmwoIlB1Ymxpc2hpbmcgdXBkYXRlIGN5Y2xlIGNvbXBsZXRlZCBldmVudCIpOwogICAgICAgICBmb3IgKFVwZGF0ZUV2ZW50TGlzdGVuZXIgbGlzdGVuZXIgOiBsaW5rZWRDb3B5T2ZMaXN0KHNVcGRhdGVFdmVudExpc3RlbmVycykpIHsKICAgICAgICAgICAgIGxpc3RlbmVyLnVwZGF0ZUN5Y2xlQ29tcGxldGVkKCk7CkBAIC01ODIsNyArNTkzLDcgQEAKICAgICAgICAgfQogCiAgICAgICAgIFV0aWxzLmwoIkRvd25sb2FkZWQgbWV0YWRhdGEgOiIsIG5ld01ldGFkYXRhKTsKLSAgICAgICAgUHJpdmF0ZUxvZy5sb2coIkRvd25sb2FkZWQgbWV0YWRhdGFcbiIgKyBuZXdNZXRhZGF0YSwgY29udGV4dCk7CisgICAgICAgIFByaXZhdGVMb2cubG9nKCJEb3dubG9hZGVkIG1ldGFkYXRhXG4iICsgbmV3TWV0YWRhdGEpOwogCiAgICAgICAgIGZpbmFsIEFjdGlvbkJhdGNoIGFjdGlvbnMgPSBjb21wdXRlVXBncmFkZVRvKGNvbnRleHQsIGNsaWVudElkLCBuZXdNZXRhZGF0YSk7CiAgICAgICAgIC8vIFRPRE86IENoZWNrIHdpdGggVVggaG93IHdlIHNob3VsZCByZXBvcnQgdG8gdGhlIHVzZXIKQEAgLTYxMCw3ICs2MjEsNyBAQAogICAgICAgICAgICAgICAgIE1ldGFkYXRhRGJIZWxwZXIuREVTQ1JJUFRJT05fQ09MVU1OKSwgImZvciIsIGRvd25sb2FkUmVjb3JkLm1DbGllbnRJZCk7CiAgICAgICAgIFByaXZhdGVMb2cubG9nKCJEb3dubG9hZGVkIGEgbmV3IHdvcmQgbGlzdCB3aXRoIGRlc2NyaXB0aW9uIDogIgogICAgICAgICAgICAgICAgICsgZG93bmxvYWRSZWNvcmQubUF0dHJpYnV0ZXMuZ2V0QXNTdHJpbmcoTWV0YWRhdGFEYkhlbHBlci5ERVNDUklQVElPTl9DT0xVTU4pCi0gICAgICAgICAgICAgICAgKyAiIGZvciAiICsgZG93bmxvYWRSZWNvcmQubUNsaWVudElkLCBjb250ZXh0KTsKKyAgICAgICAgICAgICAgICArICIgZm9yICIgKyBkb3dubG9hZFJlY29yZC5tQ2xpZW50SWQpOwogCiAgICAgICAgIGZpbmFsIFN0cmluZyBsb2NhbGUgPQogICAgICAgICAgICAgICAgIGRvd25sb2FkUmVjb3JkLm1BdHRyaWJ1dGVzLmdldEFzU3RyaW5nKE1ldGFkYXRhRGJIZWxwZXIuTE9DQUxFX0NPTFVNTik7CmRpZmYgLS1naXQgYS9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9kaWN0aW9uYXJ5cGFjay9Xb3JkTGlzdFByZWZlcmVuY2UuamF2YSBiL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2RpY3Rpb25hcnlwYWNrL1dvcmRMaXN0UHJlZmVyZW5jZS5qYXZhCmluZGV4IDBkOTIzYWUuLjI5MDE1ZDYgMTAwNjQ0Ci0tLSBhL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2RpY3Rpb25hcnlwYWNrL1dvcmRMaXN0UHJlZmVyZW5jZS5qYXZhCisrKyBiL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2RpY3Rpb25hcnlwYWNrL1dvcmRMaXN0UHJlZmVyZW5jZS5qYXZhCkBAIC0xNiwxNCArMTYsMTUgQEAKIAogcGFja2FnZSBjb20uYW5kcm9pZC5pbnB1dG1ldGhvZC5kaWN0aW9uYXJ5cGFjazsKIAotaW1wb3J0IGFuZHJvaWQuYXBwLkRpYWxvZzsKIGltcG9ydCBhbmRyb2lkLmNvbnRlbnQuQ29udGV4dDsKIGltcG9ydCBhbmRyb2lkLmNvbnRlbnQuU2hhcmVkUHJlZmVyZW5jZXM7Ci1pbXBvcnQgYW5kcm9pZC5wcmVmZXJlbmNlLkRpYWxvZ1ByZWZlcmVuY2U7CitpbXBvcnQgYW5kcm9pZC5wcmVmZXJlbmNlLlByZWZlcmVuY2U7CiBpbXBvcnQgYW5kcm9pZC51dGlsLkxvZzsKIGltcG9ydCBhbmRyb2lkLnZpZXcuVmlldzsKIGltcG9ydCBhbmRyb2lkLnZpZXcuVmlld0dyb3VwOwotaW1wb3J0IGFuZHJvaWQud2lkZ2V0LkJ1dHRvbjsKK2ltcG9ydCBhbmRyb2lkLnZpZXcuVmlld1BhcmVudDsKK2ltcG9ydCBhbmRyb2lkLndpZGdldC5MaXN0VmlldzsKK2ltcG9ydCBhbmRyb2lkLndpZGdldC5UZXh0VmlldzsKIAogaW1wb3J0IGNvbS5hbmRyb2lkLmlucHV0bWV0aG9kLmxhdGluLlI7CiAKQEAgLTM2LDcgKzM3LDcgQEAKICAqIHBhY2suIFVwb24gYmVpbmcgcHJlc3NlZCwgaXQgZGlzcGxheXMgYSBtZW51IHRvIGFsbG93IHRoZSB1c2VyIHRvIGluc3RhbGwsIGRpc2FibGUsCiAgKiBlbmFibGUgb3IgZGVsZXRlIGl0IGFzIGFwcHJvcHJpYXRlIGZvciB0aGUgY3VycmVudCBzdGF0ZSBvZiB0aGUgd29yZCBsaXN0LgogICovCi1wdWJsaWMgZmluYWwgY2xhc3MgV29yZExpc3RQcmVmZXJlbmNlIGV4dGVuZHMgRGlhbG9nUHJlZmVyZW5jZSB7CitwdWJsaWMgZmluYWwgY2xhc3MgV29yZExpc3RQcmVmZXJlbmNlIGV4dGVuZHMgUHJlZmVyZW5jZSB7CiAgICAgc3RhdGljIGZpbmFsIHByaXZhdGUgU3RyaW5nIFRBRyA9IFdvcmRMaXN0UHJlZmVyZW5jZS5jbGFzcy5nZXRTaW1wbGVOYW1lKCk7CiAKICAgICAvLyBXaGF0IHRvIGRpc3BsYXkgaW4gdGhlICJzdGF0dXMiIGZpZWxkIHdoZW4gd2UgcmVjZWl2ZSB1bmtub3duIGRhdGEgYXMgYSBzdGF0dXMgZnJvbQpAQCAtNTksMjQgKzYwLDI2IEBACiAgICAgcHVibGljIGZpbmFsIGludCBtVmVyc2lvbjsKICAgICAvLyBUaGUgc3RhdHVzCiAgICAgcHVibGljIGludCBtU3RhdHVzOworICAgIC8vIFRoZSBzaXplIG9mIHRoZSBkaWN0aW9uYXJ5IGZpbGUKKyAgICBwcml2YXRlIGZpbmFsIGludCBtRmlsZXNpemU7CiAKLSAgICAvLyBBbmltYXRpb24gZGlyZWN0aW9ucwotICAgIHN0YXRpYyBmaW5hbCBwcml2YXRlIGludCBBTklNQVRJT05fSU4gPSAxOwotICAgIHN0YXRpYyBmaW5hbCBwcml2YXRlIGludCBBTklNQVRJT05fT1VUID0gMjsKLQotICAgIHByaXZhdGUgc3RhdGljIEJ1dHRvbiBzTGFzdENsaWNrZWRBY3Rpb25CdXR0b24gPSBudWxsOworICAgIHByaXZhdGUgZmluYWwgRGljdGlvbmFyeUxpc3RJbnRlcmZhY2VTdGF0ZSBtSW50ZXJmYWNlU3RhdGU7CiAgICAgcHJpdmF0ZSBmaW5hbCBPbldvcmRMaXN0UHJlZmVyZW5jZUNsaWNrIG1QcmVmZXJlbmNlQ2xpY2tIYW5kbGVyID0KICAgICAgICAgICAgIG5ldyBPbldvcmRMaXN0UHJlZmVyZW5jZUNsaWNrKCk7CiAgICAgcHJpdmF0ZSBmaW5hbCBPbkFjdGlvbkJ1dHRvbkNsaWNrIG1BY3Rpb25CdXR0b25DbGlja0hhbmRsZXIgPQogICAgICAgICAgICAgbmV3IE9uQWN0aW9uQnV0dG9uQ2xpY2soKTsKIAotICAgIHB1YmxpYyBXb3JkTGlzdFByZWZlcmVuY2UoZmluYWwgQ29udGV4dCBjb250ZXh0LCBmaW5hbCBTdHJpbmcgY2xpZW50SWQsIGZpbmFsIFN0cmluZyB3b3JkbGlzdElkLAotICAgICAgICAgICAgZmluYWwgaW50IHZlcnNpb24sIGZpbmFsIExvY2FsZSBsb2NhbGUsIGZpbmFsIFN0cmluZyBkZXNjcmlwdGlvbiwgZmluYWwgaW50IHN0YXR1cykgeworICAgIHB1YmxpYyBXb3JkTGlzdFByZWZlcmVuY2UoZmluYWwgQ29udGV4dCBjb250ZXh0LAorICAgICAgICAgICAgZmluYWwgRGljdGlvbmFyeUxpc3RJbnRlcmZhY2VTdGF0ZSBkaWN0aW9uYXJ5TGlzdEludGVyZmFjZVN0YXRlLCBmaW5hbCBTdHJpbmcgY2xpZW50SWQsCisgICAgICAgICAgICBmaW5hbCBTdHJpbmcgd29yZGxpc3RJZCwgZmluYWwgaW50IHZlcnNpb24sIGZpbmFsIExvY2FsZSBsb2NhbGUsCisgICAgICAgICAgICBmaW5hbCBTdHJpbmcgZGVzY3JpcHRpb24sIGZpbmFsIGludCBzdGF0dXMsIGZpbmFsIGludCBmaWxlc2l6ZSkgewogICAgICAgICBzdXBlcihjb250ZXh0LCBudWxsKTsKICAgICAgICAgbUNvbnRleHQgPSBjb250ZXh0OworICAgICAgICBtSW50ZXJmYWNlU3RhdGUgPSBkaWN0aW9uYXJ5TGlzdEludGVyZmFjZVN0YXRlOwogICAgICAgICBtQ2xpZW50SWQgPSBjbGllbnRJZDsKICAgICAgICAgbVZlcnNpb24gPSB2ZXJzaW9uOwogICAgICAgICBtV29yZGxpc3RJZCA9IHdvcmRsaXN0SWQ7CisgICAgICAgIG1GaWxlc2l6ZSA9IGZpbGVzaXplOwogCiAgICAgICAgIHNldExheW91dFJlc291cmNlKFIubGF5b3V0LmRpY3Rpb25hcnlfbGluZSk7CiAKQEAgLTg5LDEyICs5Miw2IEBACiAgICAgICAgIGlmIChzdGF0dXMgPT0gbVN0YXR1cykgcmV0dXJuOwogICAgICAgICBtU3RhdHVzID0gc3RhdHVzOwogICAgICAgICBzZXRTdW1tYXJ5KGdldFN1bW1hcnkoc3RhdHVzKSk7Ci0gICAgICAgIC8vIElmIHdlIGFyZSBjdXJyZW50bHkgZGlzcGxheWluZyB0aGUgZGlhbG9nLCB3ZSBzaG91bGQgdXBkYXRlIGl0LCBvciBhdCBsZWFzdAotICAgICAgICAvLyBkaXNtaXNzIGl0LgotICAgICAgICBmaW5hbCBEaWFsb2cgZGlhbG9nID0gZ2V0RGlhbG9nKCk7Ci0gICAgICAgIGlmIChudWxsICE9IGRpYWxvZykgewotICAgICAgICAgICAgZGlhbG9nLmRpc21pc3MoKTsKLSAgICAgICAgfQogICAgIH0KIAogICAgIHByaXZhdGUgU3RyaW5nIGdldFN1bW1hcnkoZmluYWwgaW50IHN0YXR1cykgewpAQCAtMTE3LDI5ICsxMTQsMzEgQEAKICAgICAgICAgfQogICAgIH0KIAorICAgIC8vIFRoZSB0YWJsZSBiZWxvdyBuZWVkcyB0byBiZSBrZXB0IGluIHN5bmMgd2l0aCBNZXRhZGF0YURiSGVscGVyLlNUQVRVU18qIHNpbmNlIGl0IHVzZXMKKyAgICAvLyB0aGUgdmFsdWVzIGFzIGluZGljZXMuCiAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IHNTdGF0dXNBY3Rpb25MaXN0W11bXSA9IHsKICAgICAgICAgLy8gTWV0YWRhdGFEYkhlbHBlci5TVEFUVVNfVU5LTk9XTgogICAgICAgICB7fSwKICAgICAgICAgLy8gTWV0YWRhdGFEYkhlbHBlci5TVEFUVVNfQVZBSUxBQkxFCi0gICAgICAgIHsgUi5zdHJpbmcuaW5zdGFsbF9kaWN0LCBBQ1RJT05fRU5BQkxFX0RJQ1QgfSwKKyAgICAgICAgeyBCdXR0b25Td2l0Y2hlci5TVEFUVVNfSU5TVEFMTCwgQUNUSU9OX0VOQUJMRV9ESUNUIH0sCiAgICAgICAgIC8vIE1ldGFkYXRhRGJIZWxwZXIuU1RBVFVTX0RPV05MT0FESU5HCi0gICAgICAgIHsgUi5zdHJpbmcuY2FuY2VsX2Rvd25sb2FkX2RpY3QsIEFDVElPTl9ESVNBQkxFX0RJQ1QgfSwKKyAgICAgICAgeyBCdXR0b25Td2l0Y2hlci5TVEFUVVNfQ0FOQ0VMLCBBQ1RJT05fRElTQUJMRV9ESUNUIH0sCiAgICAgICAgIC8vIE1ldGFkYXRhRGJIZWxwZXIuU1RBVFVTX0lOU1RBTExFRAotICAgICAgICB7IFIuc3RyaW5nLmRlbGV0ZV9kaWN0LCBBQ1RJT05fREVMRVRFX0RJQ1QgfSwKKyAgICAgICAgeyBCdXR0b25Td2l0Y2hlci5TVEFUVVNfREVMRVRFLCBBQ1RJT05fREVMRVRFX0RJQ1QgfSwKICAgICAgICAgLy8gTWV0YWRhdGFEYkhlbHBlci5TVEFUVVNfRElTQUJMRUQKLSAgICAgICAgeyBSLnN0cmluZy5kZWxldGVfZGljdCwgQUNUSU9OX0RFTEVURV9ESUNUIH0sCisgICAgICAgIHsgQnV0dG9uU3dpdGNoZXIuU1RBVFVTX0RFTEVURSwgQUNUSU9OX0RFTEVURV9ESUNUIH0sCiAgICAgICAgIC8vIE1ldGFkYXRhRGJIZWxwZXIuU1RBVFVTX0RFTEVUSU5HCiAgICAgICAgIC8vIFdlIHNob3cgJ2luc3RhbGwnIGJlY2F1c2UgdGhlIGZpbGUgaXMgc3VwcG9zZWQgdG8gYmUgZGVsZXRlZC4KICAgICAgICAgLy8gVGhlIHVzZXIgbWF5IHJlaW5zdGFsbCBpdC4KLSAgICAgICAgeyBSLnN0cmluZy5pbnN0YWxsX2RpY3QsIEFDVElPTl9FTkFCTEVfRElDVCB9CisgICAgICAgIHsgQnV0dG9uU3dpdGNoZXIuU1RBVFVTX0lOU1RBTEwsIEFDVElPTl9FTkFCTEVfRElDVCB9CiAgICAgfTsKIAotICAgIHByaXZhdGUgQ2hhclNlcXVlbmNlIGdldEJ1dHRvbkxhYmVsKGZpbmFsIGludCBzdGF0dXMpIHsKKyAgICBwcml2YXRlIGludCBnZXRCdXR0b25Td2l0Y2hlclN0YXR1cyhmaW5hbCBpbnQgc3RhdHVzKSB7CiAgICAgICAgIGlmIChzdGF0dXMgPj0gc1N0YXR1c0FjdGlvbkxpc3QubGVuZ3RoKSB7CiAgICAgICAgICAgICBMb2cuZShUQUcsICJVbmtub3duIHN0YXR1cyAiICsgc3RhdHVzKTsKLSAgICAgICAgICAgIHJldHVybiAiIjsKKyAgICAgICAgICAgIHJldHVybiBCdXR0b25Td2l0Y2hlci5TVEFUVVNfTk9fQlVUVE9OOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiBtQ29udGV4dC5nZXRTdHJpbmcoc1N0YXR1c0FjdGlvbkxpc3Rbc3RhdHVzXVswXSk7CisgICAgICAgIHJldHVybiBzU3RhdHVzQWN0aW9uTGlzdFtzdGF0dXNdWzBdOwogICAgIH0KIAogICAgIHByaXZhdGUgc3RhdGljIGludCBnZXRBY3Rpb25JZEZyb21TdGF0dXNBbmRNZW51RW50cnkoZmluYWwgaW50IHN0YXR1cykgewpAQCAtMTk0LDM2ICsxOTMsNzAgQEAKICAgICBwcm90ZWN0ZWQgdm9pZCBvbkJpbmRWaWV3KGZpbmFsIFZpZXcgdmlldykgewogICAgICAgICBzdXBlci5vbkJpbmRWaWV3KHZpZXcpOwogICAgICAgICAoKFZpZXdHcm91cCl2aWV3KS5zZXRMYXlvdXRUcmFuc2l0aW9uKG51bGwpOwotICAgICAgICBmaW5hbCBCdXR0b24gYnV0dG9uID0gKEJ1dHRvbil2aWV3LmZpbmRWaWV3QnlJZChSLmlkLndvcmRsaXN0X2J1dHRvbik7Ci0gICAgICAgIGJ1dHRvbi5zZXRUZXh0KGdldEJ1dHRvbkxhYmVsKG1TdGF0dXMpKTsKLSAgICAgICAgYnV0dG9uLnNldFZpc2liaWxpdHkoVmlldy5JTlZJU0lCTEUpOwotICAgICAgICBidXR0b24uc2V0T25DbGlja0xpc3RlbmVyKG1BY3Rpb25CdXR0b25DbGlja0hhbmRsZXIpOworCisgICAgICAgIGZpbmFsIERpY3Rpb25hcnlEb3dubG9hZFByb2dyZXNzQmFyIHByb2dyZXNzQmFyID0KKyAgICAgICAgICAgICAgICAoRGljdGlvbmFyeURvd25sb2FkUHJvZ3Jlc3NCYXIpdmlldy5maW5kVmlld0J5SWQoUi5pZC5kaWN0aW9uYXJ5X2xpbmVfcHJvZ3Jlc3NfYmFyKTsKKyAgICAgICAgZmluYWwgVGV4dFZpZXcgc3RhdHVzID0gKFRleHRWaWV3KXZpZXcuZmluZFZpZXdCeUlkKGFuZHJvaWQuUi5pZC5zdW1tYXJ5KTsKKyAgICAgICAgcHJvZ3Jlc3NCYXIuc2V0SWRzKG1DbGllbnRJZCwgbVdvcmRsaXN0SWQpOworICAgICAgICBwcm9ncmVzc0Jhci5zZXRNYXgobUZpbGVzaXplKTsKKyAgICAgICAgZmluYWwgYm9vbGVhbiBzaG93UHJvZ3Jlc3NCYXIgPSAoTWV0YWRhdGFEYkhlbHBlci5TVEFUVVNfRE9XTkxPQURJTkcgPT0gbVN0YXR1cyk7CisgICAgICAgIHN0YXR1cy5zZXRWaXNpYmlsaXR5KHNob3dQcm9ncmVzc0JhciA/IFZpZXcuSU5WSVNJQkxFIDogVmlldy5WSVNJQkxFKTsKKyAgICAgICAgcHJvZ3Jlc3NCYXIuc2V0VmlzaWJpbGl0eShzaG93UHJvZ3Jlc3NCYXIgPyBWaWV3LlZJU0lCTEUgOiBWaWV3LklOVklTSUJMRSk7CisKKyAgICAgICAgZmluYWwgQnV0dG9uU3dpdGNoZXIgYnV0dG9uU3dpdGNoZXIgPQorICAgICAgICAgICAgICAgIChCdXR0b25Td2l0Y2hlcil2aWV3LmZpbmRWaWV3QnlJZChSLmlkLndvcmRsaXN0X2J1dHRvbl9zd2l0Y2hlcik7CisgICAgICAgIGlmIChtSW50ZXJmYWNlU3RhdGUuaXNPcGVuKG1Xb3JkbGlzdElkKSkgeworICAgICAgICAgICAgLy8gVGhlIGJ1dHRvbiBpcyBvcGVuLgorICAgICAgICAgICAgZmluYWwgaW50IHByZXZpb3VzU3RhdHVzID0gbUludGVyZmFjZVN0YXRlLmdldFN0YXR1cyhtV29yZGxpc3RJZCk7CisgICAgICAgICAgICBidXR0b25Td2l0Y2hlci5zZXRTdGF0dXNBbmRVcGRhdGVWaXN1YWxzKGdldEJ1dHRvblN3aXRjaGVyU3RhdHVzKHByZXZpb3VzU3RhdHVzKSk7CisgICAgICAgICAgICBpZiAocHJldmlvdXNTdGF0dXMgIT0gbVN0YXR1cykgeworICAgICAgICAgICAgICAgIC8vIFdlIGNvbWUgaGVyZSBpZiB0aGUgc3RhdHVzIGhhcyBjaGFuZ2VkIHNpbmNlIGxhc3QgdGltZS4gV2UgbmVlZCB0byBhbmltYXRlCisgICAgICAgICAgICAgICAgLy8gdGhlIHRyYW5zaXRpb24uCisgICAgICAgICAgICAgICAgYnV0dG9uU3dpdGNoZXIuc2V0U3RhdHVzQW5kVXBkYXRlVmlzdWFscyhnZXRCdXR0b25Td2l0Y2hlclN0YXR1cyhtU3RhdHVzKSk7CisgICAgICAgICAgICAgICAgbUludGVyZmFjZVN0YXRlLnNldE9wZW4obVdvcmRsaXN0SWQsIG1TdGF0dXMpOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gVGhlIGJ1dHRvbiBpcyBjbG9zZWQuCisgICAgICAgICAgICBidXR0b25Td2l0Y2hlci5zZXRTdGF0dXNBbmRVcGRhdGVWaXN1YWxzKEJ1dHRvblN3aXRjaGVyLlNUQVRVU19OT19CVVRUT04pOworICAgICAgICB9CisgICAgICAgIGJ1dHRvblN3aXRjaGVyLnNldEludGVybmFsT25DbGlja0xpc3RlbmVyKG1BY3Rpb25CdXR0b25DbGlja0hhbmRsZXIpOwogICAgICAgICB2aWV3LnNldE9uQ2xpY2tMaXN0ZW5lcihtUHJlZmVyZW5jZUNsaWNrSGFuZGxlcik7CiAgICAgfQogCiAgICAgcHJpdmF0ZSBjbGFzcyBPbldvcmRMaXN0UHJlZmVyZW5jZUNsaWNrIGltcGxlbWVudHMgVmlldy5PbkNsaWNrTGlzdGVuZXIgewogICAgICAgICBAT3ZlcnJpZGUKICAgICAgICAgcHVibGljIHZvaWQgb25DbGljayhmaW5hbCBWaWV3IHYpIHsKLSAgICAgICAgICAgIGZpbmFsIEJ1dHRvbiBidXR0b24gPSAoQnV0dG9uKXYuZmluZFZpZXdCeUlkKFIuaWQud29yZGxpc3RfYnV0dG9uKTsKLSAgICAgICAgICAgIGlmIChudWxsICE9IHNMYXN0Q2xpY2tlZEFjdGlvbkJ1dHRvbikgewotICAgICAgICAgICAgICAgIGFuaW1hdGVCdXR0b24oc0xhc3RDbGlja2VkQWN0aW9uQnV0dG9uLCBBTklNQVRJT05fT1VUKTsKKyAgICAgICAgICAgIC8vIE5vdGUgOiB2IGlzIHRoZSBwcmVmZXJlbmNlIHZpZXcKKyAgICAgICAgICAgIGZpbmFsIFZpZXdQYXJlbnQgcGFyZW50ID0gdi5nZXRQYXJlbnQoKTsKKyAgICAgICAgICAgIC8vIEp1c3QgaW4gY2FzZSBzb21ldGhpbmcgY2hhbmdlZCBpbiB0aGUgZnJhbWV3b3JrLCB0ZXN0IGZvciB0aGUgY29uY3JldGUgY2xhc3MKKyAgICAgICAgICAgIGlmICghKHBhcmVudCBpbnN0YW5jZW9mIExpc3RWaWV3KSkgcmV0dXJuOworICAgICAgICAgICAgZmluYWwgTGlzdFZpZXcgbGlzdFZpZXcgPSAoTGlzdFZpZXcpcGFyZW50OworICAgICAgICAgICAgZmluYWwgaW50IGluZGV4VG9PcGVuOworICAgICAgICAgICAgLy8gQ2xvc2UgYWxsIGZpcnN0LCB3ZSdsbCBvcGVuIGJhY2sgYW55IGl0ZW0gdGhhdCBuZWVkcyB0byBiZSBvcGVuLgorICAgICAgICAgICAgZmluYWwgYm9vbGVhbiB3YXNPcGVuID0gbUludGVyZmFjZVN0YXRlLmlzT3BlbihtV29yZGxpc3RJZCk7CisgICAgICAgICAgICBtSW50ZXJmYWNlU3RhdGUuY2xvc2VBbGwoKTsKKyAgICAgICAgICAgIGlmICh3YXNPcGVuKSB7CisgICAgICAgICAgICAgICAgLy8gVGhpcyBidXR0b24gYmVpbmcgc2hvd24uIFRha2Ugbm90ZSB0aGF0IHdlIGRvbid0IHdhbnQgdG8gb3BlbiBhbnkgYnV0dG9uIGluIHRoZQorICAgICAgICAgICAgICAgIC8vIGxvb3AgYmVsb3cuCisgICAgICAgICAgICAgICAgaW5kZXhUb09wZW4gPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgLy8gVGhpcyBidXR0b24gd2FzIG5vdCBiZWluZyBzaG93bi4gT3BlbiBpdCwgYW5kIHJlbWVtYmVyIHRoZSBpbmRleCBvZiB0aGlzCisgICAgICAgICAgICAgICAgLy8gY2hpbGQgYXMgdGhlIG9uZSB0byBvcGVuIGluIHRoZSBmb2xsb3dpbmcgbG9vcC4KKyAgICAgICAgICAgICAgICBtSW50ZXJmYWNlU3RhdGUuc2V0T3BlbihtV29yZGxpc3RJZCwgbVN0YXR1cyk7CisgICAgICAgICAgICAgICAgaW5kZXhUb09wZW4gPSBsaXN0Vmlldy5pbmRleE9mQ2hpbGQodik7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBhbmltYXRlQnV0dG9uKGJ1dHRvbiwgQU5JTUFUSU9OX0lOKTsKLSAgICAgICAgICAgIHNMYXN0Q2xpY2tlZEFjdGlvbkJ1dHRvbiA9IGJ1dHRvbjsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHByaXZhdGUgdm9pZCBhbmltYXRlQnV0dG9uKGZpbmFsIEJ1dHRvbiBidXR0b24sIGZpbmFsIGludCBkaXJlY3Rpb24pIHsKLSAgICAgICAgZmluYWwgZmxvYXQgb3V0ZXJYID0gKChWaWV3KWJ1dHRvbi5nZXRQYXJlbnQoKSkuZ2V0V2lkdGgoKTsKLSAgICAgICAgZmluYWwgZmxvYXQgaW5uZXJYID0gYnV0dG9uLmdldFgoKSAtIGJ1dHRvbi5nZXRUcmFuc2xhdGlvblgoKTsKLSAgICAgICAgaWYgKFZpZXcuSU5WSVNJQkxFID09IGJ1dHRvbi5nZXRWaXNpYmlsaXR5KCkpIHsKLSAgICAgICAgICAgIGJ1dHRvbi5zZXRUcmFuc2xhdGlvblgob3V0ZXJYIC0gaW5uZXJYKTsKLSAgICAgICAgICAgIGJ1dHRvbi5zZXRWaXNpYmlsaXR5KFZpZXcuVklTSUJMRSk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKEFOSU1BVElPTl9JTiA9PSBkaXJlY3Rpb24pIHsKLSAgICAgICAgICAgIGJ1dHRvbi5hbmltYXRlKCkudHJhbnNsYXRpb25YKDApOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgYnV0dG9uLmFuaW1hdGUoKS50cmFuc2xhdGlvblgob3V0ZXJYIC0gaW5uZXJYKTsKKyAgICAgICAgICAgIGZpbmFsIGludCBsYXN0RGlzcGxheWVkSW5kZXggPQorICAgICAgICAgICAgICAgICAgICBsaXN0Vmlldy5nZXRMYXN0VmlzaWJsZVBvc2l0aW9uKCkgLSBsaXN0Vmlldy5nZXRGaXJzdFZpc2libGVQb3NpdGlvbigpOworICAgICAgICAgICAgLy8gVGhlICJsYXN0RGlzcGxheWVkSW5kZXgiIGlzIGFjdHVhbGx5IGRpc3BsYXllZCwgaGVuY2UgdGhlIDw9CisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8PSBsYXN0RGlzcGxheWVkSW5kZXg7ICsraSkgeworICAgICAgICAgICAgICAgIGZpbmFsIEJ1dHRvblN3aXRjaGVyIGJ1dHRvblN3aXRjaGVyID0gKEJ1dHRvblN3aXRjaGVyKWxpc3RWaWV3LmdldENoaWxkQXQoaSkKKyAgICAgICAgICAgICAgICAgICAgICAgIC5maW5kVmlld0J5SWQoUi5pZC53b3JkbGlzdF9idXR0b25fc3dpdGNoZXIpOworICAgICAgICAgICAgICAgIGlmIChpID09IGluZGV4VG9PcGVuKSB7CisgICAgICAgICAgICAgICAgICAgIGJ1dHRvblN3aXRjaGVyLnNldFN0YXR1c0FuZFVwZGF0ZVZpc3VhbHMoZ2V0QnV0dG9uU3dpdGNoZXJTdGF0dXMobVN0YXR1cykpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGJ1dHRvblN3aXRjaGVyLnNldFN0YXR1c0FuZFVwZGF0ZVZpc3VhbHMoQnV0dG9uU3dpdGNoZXIuU1RBVFVTX05PX0JVVFRPTik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9rZXlib2FyZC9NYWluS2V5Ym9hcmRWaWV3LmphdmEgYi9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9rZXlib2FyZC9NYWluS2V5Ym9hcmRWaWV3LmphdmEKaW5kZXggYmE3OGQwMS4uYTBhYzQ3NSAxMDA2NDQKLS0tIGEvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2Qva2V5Ym9hcmQvTWFpbktleWJvYXJkVmlldy5qYXZhCisrKyBiL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2tleWJvYXJkL01haW5LZXlib2FyZFZpZXcuamF2YQpAQCAtMzMzLDYgKzMzMywxMCBAQAogCiAgICAgICAgIHByaXZhdGUgc3RhdGljIHZvaWQgY2FuY2VsQW5kU3RhcnRBbmltYXRvcnMoZmluYWwgT2JqZWN0QW5pbWF0b3IgYW5pbWF0b3JUb0NhbmNlbCwKICAgICAgICAgICAgICAgICBmaW5hbCBPYmplY3RBbmltYXRvciBhbmltYXRvclRvU3RhcnQpIHsKKyAgICAgICAgICAgIGlmIChhbmltYXRvclRvQ2FuY2VsID09IG51bGwgfHwgYW5pbWF0b3JUb1N0YXJ0ID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICAvLyBUT0RPOiBTdG9wIHVzaW5nIG51bGwgYXMgYSBuby1vcGVyYXRpb24gYW5pbWF0b3IuCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQogICAgICAgICAgICAgZmxvYXQgc3RhcnRGcmFjdGlvbiA9IDAuMGY7CiAgICAgICAgICAgICBpZiAoYW5pbWF0b3JUb0NhbmNlbC5pc1N0YXJ0ZWQoKSkgewogICAgICAgICAgICAgICAgIGFuaW1hdG9yVG9DYW5jZWwuY2FuY2VsKCk7CkBAIC0zNjYsNyArMzcwLDkgQEAKICAgICAgICAgICAgIC8vIFdoZW4gdXNlciBoaXRzIHRoZSBzcGFjZSBvciB0aGUgZW50ZXIga2V5LCBqdXN0IGNhbmNlbCB0aGUgd2hpbGUtdHlwaW5nIHRpbWVyLgogICAgICAgICAgICAgZmluYWwgaW50IHR5cGVkQ29kZSA9IHR5cGVkS2V5Lm1Db2RlOwogICAgICAgICAgICAgaWYgKHR5cGVkQ29kZSA9PSBDb25zdGFudHMuQ09ERV9TUEFDRSB8fCB0eXBlZENvZGUgPT0gQ29uc3RhbnRzLkNPREVfRU5URVIpIHsKLSAgICAgICAgICAgICAgICBzdGFydFdoaWxlVHlwaW5nRmFkZWluQW5pbWF0aW9uKGtleWJvYXJkVmlldyk7CisgICAgICAgICAgICAgICAgaWYgKGlzVHlwaW5nKSB7CisgICAgICAgICAgICAgICAgICAgIHN0YXJ0V2hpbGVUeXBpbmdGYWRlaW5BbmltYXRpb24oa2V5Ym9hcmRWaWV3KTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogCkBAIC01ODEsNiArNTg3LDcgQEAKIAogICAgIHByaXZhdGUgT2JqZWN0QW5pbWF0b3IgbG9hZE9iamVjdEFuaW1hdG9yKGZpbmFsIGludCByZXNJZCwgZmluYWwgT2JqZWN0IHRhcmdldCkgewogICAgICAgICBpZiAocmVzSWQgPT0gMCkgeworICAgICAgICAgICAgLy8gVE9ETzogU3RvcCByZXR1cm5pbmcgbnVsbC4KICAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICB9CiAgICAgICAgIGZpbmFsIE9iamVjdEFuaW1hdG9yIGFuaW1hdG9yID0gKE9iamVjdEFuaW1hdG9yKUFuaW1hdG9ySW5mbGF0ZXIubG9hZEFuaW1hdG9yKApAQCAtNjA5LDggKzYxNiwxOCBAQAogCiAgICAgQEV4dGVybmFsbHlSZWZlcmVuY2VkCiAgICAgcHVibGljIHZvaWQgc2V0QWx0Q29kZUtleVdoaWxlVHlwaW5nQW5pbUFscGhhKGZpbmFsIGludCBhbHBoYSkgeworICAgICAgICBpZiAobUFsdENvZGVLZXlXaGlsZVR5cGluZ0FuaW1BbHBoYSA9PSBhbHBoYSkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIC8vIFVwZGF0ZSB0aGUgdmlzdWFsIG9mIGFsdC1jb2RlLWtleS13aGlsZS10eXBpbmcuCiAgICAgICAgIG1BbHRDb2RlS2V5V2hpbGVUeXBpbmdBbmltQWxwaGEgPSBhbHBoYTsKLSAgICAgICAgdXBkYXRlQWx0Q29kZUtleVdoaWxlVHlwaW5nKCk7CisgICAgICAgIGZpbmFsIEtleWJvYXJkIGtleWJvYXJkID0gZ2V0S2V5Ym9hcmQoKTsKKyAgICAgICAgaWYgKGtleWJvYXJkID09IG51bGwpIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBmb3IgKGZpbmFsIEtleSBrZXkgOiBrZXlib2FyZC5tQWx0Q29kZUtleXNXaGlsZVR5cGluZykgeworICAgICAgICAgICAgaW52YWxpZGF0ZUtleShrZXkpOworICAgICAgICB9CiAgICAgfQogCiAgICAgcHVibGljIHZvaWQgc2V0S2V5Ym9hcmRBY3Rpb25MaXN0ZW5lcihmaW5hbCBLZXlib2FyZEFjdGlvbkxpc3RlbmVyIGxpc3RlbmVyKSB7CkBAIC0xMDU0LDYgKzEwNzEsNyBAQAogCiAgICAgQE92ZXJyaWRlCiAgICAgcHVibGljIHZvaWQgb25TaG93TW9yZUtleXNQYW5lbChmaW5hbCBNb3JlS2V5c1BhbmVsIHBhbmVsKSB7CisgICAgICAgIGxvY2F0ZVByZXZpZXdQbGFjZXJWaWV3KCk7CiAgICAgICAgIGlmIChpc1Nob3dpbmdNb3JlS2V5c1BhbmVsKCkpIHsKICAgICAgICAgICAgIG9uRGlzbWlzc01vcmVLZXlzUGFuZWwoKTsKICAgICAgICAgfQpAQCAtMTE4OSwxMCArMTIwNywxMiBAQAogICAgICAgICAgICAgICAgIGlmIChFTkFCTEVfVVNBQklMSVRZX1NUVURZX0xPRykgewogICAgICAgICAgICAgICAgICAgICB3cml0ZVVzYWJpbGl0eVN0dWR5TG9nKG1lLCBhY3Rpb24sIGV2ZW50VGltZSwgaSwgcG9pbnRlcklkLCBweCwgcHkpOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoUHJvZHVjdGlvbkZsYWcuVVNFU19ERVZFTE9QTUVOVF9PTkxZX0RJQUdOT1NUSUNTKSB7Ci0gICAgICAgICAgICAgICAgICAgIFJlc2VhcmNoTG9nZ2VyLm1haW5LZXlib2FyZFZpZXdfcHJvY2Vzc01vdGlvbkV2ZW50KAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lLCBhY3Rpb24sIGV2ZW50VGltZSwgaSwgcG9pbnRlcklkLCBweCwgcHkpOwotICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAvLyBUT0RPOiBUaGlzIHNlZW1zIHRvIGJlIG5vIGxvbmdlciBuZWNlc3NhcnksIGFuZCBjb25mdXNpbmcgYmVjYXVzZSBpdCBsZWFkcyB0bworICAgICAgICAgICAgICAgIC8vIGR1cGxpY2F0ZSBNb3Rpb25FdmVudHMgYmVpbmcgcmVjb3JkZWQuCisgICAgICAgICAgICAgICAgLy8gaWYgKFByb2R1Y3Rpb25GbGFnLlVTRVNfREVWRUxPUE1FTlRfT05MWV9ESUFHTk9TVElDUykgeworICAgICAgICAgICAgICAgIC8vICAgICBSZXNlYXJjaExvZ2dlci5tYWluS2V5Ym9hcmRWaWV3X3Byb2Nlc3NNb3Rpb25FdmVudCgKKyAgICAgICAgICAgICAgICAvLyAgICAgICAgICAgICBtZSwgYWN0aW9uLCBldmVudFRpbWUsIGksIHBvaW50ZXJJZCwgcHgsIHB5KTsKKyAgICAgICAgICAgICAgICAvLyB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBmaW5hbCBQb2ludGVyVHJhY2tlciB0cmFja2VyID0gUG9pbnRlclRyYWNrZXIuZ2V0UG9pbnRlclRyYWNrZXIoaWQsIHRoaXMpOwpAQCAtMTI3NCwxNiArMTI5NCw2IEBACiAgICAgICAgIGludmFsaWRhdGVLZXkoc2hvcnRjdXRLZXkpOwogICAgIH0KIAotICAgIHByaXZhdGUgdm9pZCB1cGRhdGVBbHRDb2RlS2V5V2hpbGVUeXBpbmcoKSB7Ci0gICAgICAgIGZpbmFsIEtleWJvYXJkIGtleWJvYXJkID0gZ2V0S2V5Ym9hcmQoKTsKLSAgICAgICAgaWYgKGtleWJvYXJkID09IG51bGwpIHsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBmb3IgKGZpbmFsIEtleSBrZXkgOiBrZXlib2FyZC5tQWx0Q29kZUtleXNXaGlsZVR5cGluZykgewotICAgICAgICAgICAgaW52YWxpZGF0ZUtleShrZXkpOwotICAgICAgICB9Ci0gICAgfQotCiAgICAgcHVibGljIHZvaWQgc3RhcnREaXNwbGF5TGFuZ3VhZ2VPblNwYWNlYmFyKGZpbmFsIGJvb2xlYW4gc3VidHlwZUNoYW5nZWQsCiAgICAgICAgICAgICBmaW5hbCBib29sZWFuIG5lZWRzVG9EaXNwbGF5TGFuZ3VhZ2UsIGZpbmFsIGJvb2xlYW4gaGFzTXVsdGlwbGVFbmFibGVkSU1Fc09yU3VidHlwZXMpIHsKICAgICAgICAgbU5lZWRzVG9EaXNwbGF5TGFuZ3VhZ2UgPSBuZWVkc1RvRGlzcGxheUxhbmd1YWdlOwpkaWZmIC0tZ2l0IGEvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2Qva2V5Ym9hcmQvUG9pbnRlclRyYWNrZXIuamF2YSBiL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2tleWJvYXJkL1BvaW50ZXJUcmFja2VyLmphdmEKaW5kZXggOTFjNDMxOS4uYzFiMTQ4ZCAxMDA2NDQKLS0tIGEvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2Qva2V5Ym9hcmQvUG9pbnRlclRyYWNrZXIuamF2YQorKysgYi9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9rZXlib2FyZC9Qb2ludGVyVHJhY2tlci5qYXZhCkBAIC0zMTgsOCArMzE4LDggQEAKICAgICAvLyB0cnVlIGlmIGtleWJvYXJkIGxheW91dCBoYXMgYmVlbiBjaGFuZ2VkLgogICAgIHByaXZhdGUgYm9vbGVhbiBtS2V5Ym9hcmRMYXlvdXRIYXNCZWVuQ2hhbmdlZDsKIAotICAgIC8vIHRydWUgaWYgdGhpcyBwb2ludGVyIGlzIG5vIGxvbmdlciB0cmFja2luZyB0b3VjaCBldmVudC4KLSAgICBwcml2YXRlIGJvb2xlYW4gbUlzVHJhY2tpbmdDYW5jZWxlZDsKKyAgICAvLyB0cnVlIGlmIHRoaXMgcG9pbnRlciBpcyBubyBsb25nZXIgdHJpZ2dlcmluZyBhbnkgYWN0aW9uIGJlY2F1c2UgaXQgaGFzIGJlZW4gY2FuY2VsZWQuCisgICAgcHJpdmF0ZSBib29sZWFuIG1Jc1RyYWNraW5nRm9yQWN0aW9uRGlzYWJsZWQ7CiAKICAgICAvLyB0aGUgbW9yZSBrZXlzIHBhbmVsIGN1cnJlbnRseSBiZWluZyBzaG93bi4gZXF1YWxzIG51bGwgaWYgbm8gcGFuZWwgaXMgYWN0aXZlLgogICAgIHByaXZhdGUgTW9yZUtleXNQYW5lbCBtTW9yZUtleXNQYW5lbDsKQEAgLTQ0MSw3ICs0NDEsMTEgQEAKIAogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiBrZXlib2FyZCBoYXMgYmVlbiBjaGFuZ2VkIGJ5IHRoaXMgY2FsbGJhY2suCiAgICAgcHJpdmF0ZSBib29sZWFuIGNhbGxMaXN0ZW5lck9uUHJlc3NBbmRDaGVja0tleWJvYXJkTGF5b3V0Q2hhbmdlKGZpbmFsIEtleSBrZXkpIHsKLSAgICAgICAgaWYgKHNJbkdlc3R1cmUgfHwgbUlzRGV0ZWN0aW5nR2VzdHVyZSkgeworICAgICAgICAvLyBXaGlsZSBnZXN0dXJlIGlucHV0IGlzIGdvaW5nIG9uLCB0aGlzIG1ldGhvZCBzaG91bGQgYmUgYSBuby1vcGVyYXRpb24uIEJ1dCB3aGVuIGdlc3R1cmUKKyAgICAgICAgLy8gaW5wdXQgaGFzIGJlZW4gY2FuY2VsZWQsIDxjb2RlPnNJbkdlc3R1cmU8L2NvZGU+IGFuZCA8Y29kZT5tSXNEZXRlY3RpbmdHZXN0dXJlPC9jb2RlPgorICAgICAgICAvLyBhcmUgc2V0IHRvIGZhbHNlLiBUbyBrZWVwIHRoaXMgbWV0aG9kIGlzIGEgbm8tb3BlcmF0aW9uLAorICAgICAgICAvLyA8Y29kZT5tSXNUcmFja2luZ0ZvckFjdGlvbkRpc2FibGVkPC9jb2RlPiBzaG91bGQgYWxzbyBiZSB0YWtlbiBhY2NvdW50IG9mLgorICAgICAgICBpZiAoc0luR2VzdHVyZSB8fCBtSXNEZXRlY3RpbmdHZXN0dXJlIHx8IG1Jc1RyYWNraW5nRm9yQWN0aW9uRGlzYWJsZWQpIHsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAgICBmaW5hbCBib29sZWFuIGlnbm9yZU1vZGlmaWVyS2V5ID0gbUlzSW5TbGlkaW5nS2V5SW5wdXQgJiYga2V5LmlzTW9kaWZpZXIoKTsKQEAgLTUwMCw3ICs1MDQsOCBAQAogICAgIC8vIHByaW1hcnlDb2RlIGlzIGRpZmZlcmVudCBmcm9tIHtAbGluayBLZXkjbUNvZGV9LgogICAgIHByaXZhdGUgdm9pZCBjYWxsTGlzdGVuZXJPblJlbGVhc2UoZmluYWwgS2V5IGtleSwgZmluYWwgaW50IHByaW1hcnlDb2RlLAogICAgICAgICAgICAgZmluYWwgYm9vbGVhbiB3aXRoU2xpZGluZykgewotICAgICAgICBpZiAoc0luR2VzdHVyZSB8fCBtSXNEZXRlY3RpbmdHZXN0dXJlKSB7CisgICAgICAgIC8vIFNlZSB0aGUgY29tbWVudCBhdCB7QGxpbmsgI2NhbGxMaXN0ZW5lck9uUHJlc3NBbmRDaGVja0tleWJvYXJkTGF5b3V0Q2hhbmdlKEtleX19LgorICAgICAgICBpZiAoc0luR2VzdHVyZSB8fCBtSXNEZXRlY3RpbmdHZXN0dXJlIHx8IG1Jc1RyYWNraW5nRm9yQWN0aW9uRGlzYWJsZWQpIHsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBmaW5hbCBib29sZWFuIGlnbm9yZU1vZGlmaWVyS2V5ID0gbUlzSW5TbGlkaW5nS2V5SW5wdXQgJiYga2V5LmlzTW9kaWZpZXIoKTsKQEAgLTc0NSw3ICs3NTAsNyBAQAogICAgICAgICBpZiAoa2V5ICE9IG51bGwpIHsKICAgICAgICAgICAgIHVwZGF0ZUJhdGNoSW5wdXQoZXZlbnRUaW1lKTsKICAgICAgICAgfQotICAgICAgICBpZiAobUlzVHJhY2tpbmdDYW5jZWxlZCkgeworICAgICAgICBpZiAobUlzVHJhY2tpbmdGb3JBY3Rpb25EaXNhYmxlZCkgewogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIG1EcmF3aW5nUHJveHkuc2hvd0dlc3R1cmVQcmV2aWV3VHJhaWwodGhpcyk7CkBAIC03NzcsNyArNzgyLDcgQEAKICAgICAgICAgICAgICAgICBzSW5HZXN0dXJlID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgc1RpbWVSZWNvcmRlci5vbkVuZEJhdGNoSW5wdXQoZXZlbnRUaW1lKTsKICAgICAgICAgICAgICAgICBtVGltZXJQcm94eS5jYW5jZWxBbGxVcGRhdGVCYXRjaElucHV0VGltZXJzKCk7Ci0gICAgICAgICAgICAgICAgaWYgKCFtSXNUcmFja2luZ0NhbmNlbGVkKSB7CisgICAgICAgICAgICAgICAgaWYgKCFtSXNUcmFja2luZ0ZvckFjdGlvbkRpc2FibGVkKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChERUJVR19MSVNURU5FUikgewogICAgICAgICAgICAgICAgICAgICAgICAgTG9nLmQoVEFHLCBTdHJpbmcuZm9ybWF0KCJbJWRdIG9uRW5kQmF0Y2hJbnB1dCAgIDogYmF0Y2hQb2ludHM9JWQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtUG9pbnRlcklkLCBzQWdncmVncmF0ZWRQb2ludGVycy5nZXRQb2ludGVyU2l6ZSgpKSk7CkBAIC03ODYsNyArNzkxLDcgQEAKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgaWYgKG1Jc1RyYWNraW5nQ2FuY2VsZWQpIHsKKyAgICAgICAgaWYgKG1Jc1RyYWNraW5nRm9yQWN0aW9uRGlzYWJsZWQpIHsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBtRHJhd2luZ1Byb3h5LnNob3dHZXN0dXJlUHJldmlld1RyYWlsKHRoaXMpOwpAQCAtODQ2LDcgKzg1MSw3IEBACiAgICAgICAgICAgICAgICAgaWYgKFByb2R1Y3Rpb25GbGFnLlVTRVNfREVWRUxPUE1FTlRfT05MWV9ESUFHTk9TVElDUykgewogICAgICAgICAgICAgICAgICAgICBSZXNlYXJjaExvZ2dlci5wb2ludGVyVHJhY2tlcl9vbkRvd25FdmVudChkZWx0YVQsIGRpc3RhbmNlICogZGlzdGFuY2UpOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBjYW5jZWxUcmFja2luZygpOworICAgICAgICAgICAgICAgIGNhbmNlbFRyYWNraW5nRm9yQWN0aW9uKCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC04ODcsNyArODkyLDcgQEAKICAgICAgICAgICAgICAgICB8fCAoa2V5ICE9IG51bGwgJiYga2V5LmlzTW9kaWZpZXIoKSkKICAgICAgICAgICAgICAgICB8fCBtS2V5RGV0ZWN0b3IuYWx3YXlzQWxsb3dzU2xpZGluZ0lucHV0KCk7CiAgICAgICAgIG1LZXlib2FyZExheW91dEhhc0JlZW5DaGFuZ2VkID0gZmFsc2U7Ci0gICAgICAgIG1Jc1RyYWNraW5nQ2FuY2VsZWQgPSBmYWxzZTsKKyAgICAgICAgbUlzVHJhY2tpbmdGb3JBY3Rpb25EaXNhYmxlZCA9IGZhbHNlOwogICAgICAgICByZXNldFNsaWRpbmdLZXlJbnB1dCgpOwogICAgICAgICBpZiAoa2V5ICE9IG51bGwpIHsKICAgICAgICAgICAgIC8vIFRoaXMgb25QcmVzcyBjYWxsIG1heSBoYXZlIGNoYW5nZWQga2V5Ym9hcmQgbGF5b3V0LiBUaG9zZSBjYXNlcyBhcmUgZGV0ZWN0ZWQgYXQKQEAgLTk0Nyw3ICs5NTIsNyBAQAogICAgICAgICBpZiAoREVCVUdfTU9WRV9FVkVOVCkgewogICAgICAgICAgICAgcHJpbnRUb3VjaEV2ZW50KCJvbk1vdmVFdmVudDoiLCB4LCB5LCBldmVudFRpbWUpOwogICAgICAgICB9Ci0gICAgICAgIGlmIChtSXNUcmFja2luZ0NhbmNlbGVkKSB7CisgICAgICAgIGlmIChtSXNUcmFja2luZ0ZvckFjdGlvbkRpc2FibGVkKSB7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtOTg1LDYgKzk5MCw5IEBACiAgICAgICAgICAgICBrZXkgPSBvbk1vdmVLZXkoeCwgeSk7CiAgICAgICAgIH0KICAgICAgICAgb25Nb3ZlVG9OZXdLZXkoa2V5LCB4LCB5KTsKKyAgICAgICAgaWYgKG1Jc1RyYWNraW5nRm9yQWN0aW9uRGlzYWJsZWQpIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQogICAgICAgICBzdGFydExvbmdQcmVzc1RpbWVyKGtleSk7CiAgICAgICAgIHNldFByZXNzZWRLZXlHcmFwaGljcyhrZXksIGV2ZW50VGltZSk7CiAgICAgfQpAQCAtMTA2OSwxMSArMTA3NywxMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgKyAiIGRldGVjdGVkIHNsaWRpbmcgZmluZ2VyIHdoaWxlIG11bHRpIHRvdWNoaW5nIiwgbVBvaW50ZXJJZCkpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgb25VcEV2ZW50KHgsIHksIGV2ZW50VGltZSk7Ci0gICAgICAgICAgICBjYW5jZWxUcmFja2luZygpOworICAgICAgICAgICAgY2FuY2VsVHJhY2tpbmdGb3JBY3Rpb24oKTsKICAgICAgICAgICAgIHNldFJlbGVhc2VkS2V5R3JhcGhpY3Mob2xkS2V5KTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGlmICghbUlzRGV0ZWN0aW5nR2VzdHVyZSkgewotICAgICAgICAgICAgICAgIGNhbmNlbFRyYWNraW5nKCk7CisgICAgICAgICAgICAgICAgY2FuY2VsVHJhY2tpbmdGb3JBY3Rpb24oKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHNldFJlbGVhc2VkS2V5R3JhcGhpY3Mob2xkS2V5KTsKICAgICAgICAgfQpAQCAtMTA4Nyw3ICsxMDk1LDcgQEAKICAgICAgICAgICAgIG9uTW92ZVRvTmV3S2V5KG51bGwsIHgsIHkpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgaWYgKCFtSXNEZXRlY3RpbmdHZXN0dXJlKSB7Ci0gICAgICAgICAgICAgICAgY2FuY2VsVHJhY2tpbmcoKTsKKyAgICAgICAgICAgICAgICBjYW5jZWxUcmFja2luZ0ZvckFjdGlvbigpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpAQCAtMTE1NSw3ICsxMTYzLDcgQEAKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBvblVwRXZlbnRJbnRlcm5hbChtTGFzdFgsIG1MYXN0WSwgZXZlbnRUaW1lKTsKLSAgICAgICAgY2FuY2VsVHJhY2tpbmcoKTsKKyAgICAgICAgY2FuY2VsVHJhY2tpbmdGb3JBY3Rpb24oKTsKICAgICB9CiAKICAgICBwcml2YXRlIHZvaWQgb25VcEV2ZW50SW50ZXJuYWwoZmluYWwgaW50IHgsIGZpbmFsIGludCB5LCBmaW5hbCBsb25nIGV2ZW50VGltZSkgewpAQCAtMTE2OCw3ICsxMTc2LDcgQEAKICAgICAgICAgc2V0UmVsZWFzZWRLZXlHcmFwaGljcyhjdXJyZW50S2V5KTsKIAogICAgICAgICBpZiAoaXNTaG93aW5nTW9yZUtleXNQYW5lbCgpKSB7Ci0gICAgICAgICAgICBpZiAoIW1Jc1RyYWNraW5nQ2FuY2VsZWQpIHsKKyAgICAgICAgICAgIGlmICghbUlzVHJhY2tpbmdGb3JBY3Rpb25EaXNhYmxlZCkgewogICAgICAgICAgICAgICAgIGZpbmFsIGludCB0cmFuc2xhdGVkWCA9IG1Nb3JlS2V5c1BhbmVsLnRyYW5zbGF0ZVgoeCk7CiAgICAgICAgICAgICAgICAgZmluYWwgaW50IHRyYW5zbGF0ZWRZID0gbU1vcmVLZXlzUGFuZWwudHJhbnNsYXRlWSh5KTsKICAgICAgICAgICAgICAgICBtTW9yZUtleXNQYW5lbC5vblVwRXZlbnQodHJhbnNsYXRlZFgsIHRyYW5zbGF0ZWRZLCBtUG9pbnRlcklkLCBldmVudFRpbWUpOwpAQCAtMTE4Niw3ICsxMTk0LDcgQEAKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChtSXNUcmFja2luZ0NhbmNlbGVkKSB7CisgICAgICAgIGlmIChtSXNUcmFja2luZ0ZvckFjdGlvbkRpc2FibGVkKSB7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgaWYgKGN1cnJlbnRLZXkgIT0gbnVsbCAmJiAhY3VycmVudEtleS5pc1JlcGVhdGFibGUoKSkgewpAQCAtMTIwMywxNiArMTIxMSwxNiBAQAogICAgIH0KIAogICAgIEBPdmVycmlkZQotICAgIHB1YmxpYyB2b2lkIGNhbmNlbFRyYWNraW5nKCkgeworICAgIHB1YmxpYyB2b2lkIGNhbmNlbFRyYWNraW5nRm9yQWN0aW9uKCkgewogICAgICAgICBpZiAoaXNTaG93aW5nTW9yZUtleXNQYW5lbCgpKSB7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgbUlzVHJhY2tpbmdDYW5jZWxlZCA9IHRydWU7CisgICAgICAgIG1Jc1RyYWNraW5nRm9yQWN0aW9uRGlzYWJsZWQgPSB0cnVlOwogICAgIH0KIAogICAgIHB1YmxpYyB2b2lkIG9uTG9uZ1ByZXNzZWQoKSB7CiAgICAgICAgIHJlc2V0U2xpZGluZ0tleUlucHV0KCk7Ci0gICAgICAgIGNhbmNlbFRyYWNraW5nKCk7CisgICAgICAgIGNhbmNlbFRyYWNraW5nRm9yQWN0aW9uKCk7CiAgICAgICAgIHNldFJlbGVhc2VkS2V5R3JhcGhpY3MobUN1cnJlbnRLZXkpOwogICAgICAgICBzUG9pbnRlclRyYWNrZXJRdWV1ZS5yZW1vdmUodGhpcyk7CiAgICAgfQpAQCAtMTMxNiw2ICsxMzI0LDYgQEAKICAgICAgICAgZmluYWwgS2V5IGtleSA9IG1LZXlEZXRlY3Rvci5kZXRlY3RIaXRLZXkoeCwgeSk7CiAgICAgICAgIGZpbmFsIFN0cmluZyBjb2RlID0gS2V5RGV0ZWN0b3IucHJpbnRhYmxlQ29kZShrZXkpOwogICAgICAgICBMb2cuZChUQUcsIFN0cmluZy5mb3JtYXQoIlslZF0lcyVzICU0ZCAlNGQgJTVkICVzIiwgbVBvaW50ZXJJZCwKLSAgICAgICAgICAgICAgICAobUlzVHJhY2tpbmdDYW5jZWxlZCA/ICItIiA6ICIgIiksIHRpdGxlLCB4LCB5LCBldmVudFRpbWUsIGNvZGUpKTsKKyAgICAgICAgICAgICAgICAobUlzVHJhY2tpbmdGb3JBY3Rpb25EaXNhYmxlZCA/ICItIiA6ICIgIiksIHRpdGxlLCB4LCB5LCBldmVudFRpbWUsIGNvZGUpKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9rZXlib2FyZC9pbnRlcm5hbC9Qb2ludGVyVHJhY2tlclF1ZXVlLmphdmEgYi9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9rZXlib2FyZC9pbnRlcm5hbC9Qb2ludGVyVHJhY2tlclF1ZXVlLmphdmEKaW5kZXggNmJjNmFjYy4uODkwMWY5OSAxMDA2NDQKLS0tIGEvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2Qva2V5Ym9hcmQvaW50ZXJuYWwvUG9pbnRlclRyYWNrZXJRdWV1ZS5qYXZhCisrKyBiL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2tleWJvYXJkL2ludGVybmFsL1BvaW50ZXJUcmFja2VyUXVldWUuamF2YQpAQCAtMzAsNyArMzAsNyBAQAogICAgICAgICBwdWJsaWMgYm9vbGVhbiBpc01vZGlmaWVyKCk7CiAgICAgICAgIHB1YmxpYyBib29sZWFuIGlzSW5TbGlkaW5nS2V5SW5wdXQoKTsKICAgICAgICAgcHVibGljIHZvaWQgb25QaGFudG9tVXBFdmVudChsb25nIGV2ZW50VGltZSk7Ci0gICAgICAgIHB1YmxpYyB2b2lkIGNhbmNlbFRyYWNraW5nKCk7CisgICAgICAgIHB1YmxpYyB2b2lkIGNhbmNlbFRyYWNraW5nRm9yQWN0aW9uKCk7CiAgICAgfQogCiAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IElOSVRJQUxfQ0FQQUNJVFkgPSAxMDsKQEAgLTIwNiw3ICsyMDYsNyBAQAogICAgICAgICAgICAgZmluYWwgaW50IGFycmF5U2l6ZSA9IG1BcnJheVNpemU7CiAgICAgICAgICAgICBmb3IgKGludCBpbmRleCA9IDA7IGluZGV4IDwgYXJyYXlTaXplOyBpbmRleCsrKSB7CiAgICAgICAgICAgICAgICAgZmluYWwgRWxlbWVudCBlbGVtZW50ID0gZXhwYW5kYWJsZUFycmF5LmdldChpbmRleCk7Ci0gICAgICAgICAgICAgICAgZWxlbWVudC5jYW5jZWxUcmFja2luZygpOworICAgICAgICAgICAgICAgIGVsZW1lbnQuY2FuY2VsVHJhY2tpbmdGb3JBY3Rpb24oKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2xhdGluL0JpbmFyeURpY3Rpb25hcnkuamF2YSBiL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2xhdGluL0JpbmFyeURpY3Rpb25hcnkuamF2YQppbmRleCBkYmMyYjkwLi40ZmMxOTE5IDEwMDY0NAotLS0gYS9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9sYXRpbi9CaW5hcnlEaWN0aW9uYXJ5LmphdmEKKysrIGIvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvbGF0aW4vQmluYXJ5RGljdGlvbmFyeS5qYXZhCkBAIC0xMDcsMTMgKzEwNywxNiBAQAogCiAgICAgQE92ZXJyaWRlCiAgICAgcHVibGljIEFycmF5TGlzdDxTdWdnZXN0ZWRXb3JkSW5mbz4gZ2V0U3VnZ2VzdGlvbnMoZmluYWwgV29yZENvbXBvc2VyIGNvbXBvc2VyLAotICAgICAgICAgICAgZmluYWwgU3RyaW5nIHByZXZXb3JkLCBmaW5hbCBQcm94aW1pdHlJbmZvIHByb3hpbWl0eUluZm8pIHsKLSAgICAgICAgcmV0dXJuIGdldFN1Z2dlc3Rpb25zV2l0aFNlc3Npb25JZChjb21wb3NlciwgcHJldldvcmQsIHByb3hpbWl0eUluZm8sIDApOworICAgICAgICAgICAgZmluYWwgU3RyaW5nIHByZXZXb3JkLCBmaW5hbCBQcm94aW1pdHlJbmZvIHByb3hpbWl0eUluZm8sCisgICAgICAgICAgICBmaW5hbCBib29sZWFuIGJsb2NrT2ZmZW5zaXZlV29yZHMpIHsKKyAgICAgICAgcmV0dXJuIGdldFN1Z2dlc3Rpb25zV2l0aFNlc3Npb25JZChjb21wb3NlciwgcHJldldvcmQsIHByb3hpbWl0eUluZm8sIGJsb2NrT2ZmZW5zaXZlV29yZHMsCisgICAgICAgICAgICAgICAgMCAvKiBzZXNzaW9uSWQgKi8pOwogICAgIH0KIAogICAgIEBPdmVycmlkZQogICAgIHB1YmxpYyBBcnJheUxpc3Q8U3VnZ2VzdGVkV29yZEluZm8+IGdldFN1Z2dlc3Rpb25zV2l0aFNlc3Npb25JZChmaW5hbCBXb3JkQ29tcG9zZXIgY29tcG9zZXIsCi0gICAgICAgICAgICBmaW5hbCBTdHJpbmcgcHJldldvcmQsIGZpbmFsIFByb3hpbWl0eUluZm8gcHJveGltaXR5SW5mbywgaW50IHNlc3Npb25JZCkgeworICAgICAgICAgICAgZmluYWwgU3RyaW5nIHByZXZXb3JkLCBmaW5hbCBQcm94aW1pdHlJbmZvIHByb3hpbWl0eUluZm8sCisgICAgICAgICAgICBmaW5hbCBib29sZWFuIGJsb2NrT2ZmZW5zaXZlV29yZHMsIGZpbmFsIGludCBzZXNzaW9uSWQpIHsKICAgICAgICAgaWYgKCFpc1ZhbGlkRGljdGlvbmFyeSgpKSByZXR1cm4gbnVsbDsKIAogICAgICAgICBBcnJheXMuZmlsbChtSW5wdXRDb2RlUG9pbnRzLCBDb25zdGFudHMuTk9UX0FfQ09ERSk7CkBAIC0xNDcsMTAgKzE1MCwyMSBAQAogICAgICAgICAgICAgICAgICsrbGVuOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKGxlbiA+IDApIHsKLSAgICAgICAgICAgICAgICBmaW5hbCBpbnQgc2NvcmUgPSBTdWdnZXN0ZWRXb3JkSW5mby5LSU5EX1dISVRFTElTVCA9PSBtT3V0cHV0VHlwZXNbal0KKyAgICAgICAgICAgICAgICBmaW5hbCBpbnQgZmxhZ3MgPSBtT3V0cHV0VHlwZXNbal0gJiBTdWdnZXN0ZWRXb3JkSW5mby5LSU5EX01BU0tfRkxBR1M7CisgICAgICAgICAgICAgICAgaWYgKGJsb2NrT2ZmZW5zaXZlV29yZHMKKyAgICAgICAgICAgICAgICAgICAgICAgICYmIDAgIT0gKGZsYWdzICYgU3VnZ2VzdGVkV29yZEluZm8uS0lORF9GTEFHX1BPU1NJQkxZX09GRkVOU0lWRSkKKyAgICAgICAgICAgICAgICAgICAgICAgICYmIDAgPT0gKGZsYWdzICYgU3VnZ2VzdGVkV29yZEluZm8uS0lORF9GTEFHX0VYQUNUX01BVENIKSkgeworICAgICAgICAgICAgICAgICAgICAvLyBJZiB3ZSBibG9jayBwb3RlbnRpYWxseSBvZmZlbnNpdmUgd29yZHMsIGFuZCBpZiB0aGUgd29yZCBpcyBwb3NzaWJseQorICAgICAgICAgICAgICAgICAgICAvLyBvZmZlbnNpdmUsIHRoZW4gd2UgZG9uJ3Qgb3V0cHV0IGl0IHVubGVzcyBpdCdzIGFsc28gYW4gZXhhY3QgbWF0Y2guCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBmaW5hbCBpbnQga2luZCA9IG1PdXRwdXRUeXBlc1tqXSAmIFN1Z2dlc3RlZFdvcmRJbmZvLktJTkRfTUFTS19LSU5EOworICAgICAgICAgICAgICAgIGZpbmFsIGludCBzY29yZSA9IFN1Z2dlc3RlZFdvcmRJbmZvLktJTkRfV0hJVEVMSVNUID09IGtpbmQKICAgICAgICAgICAgICAgICAgICAgICAgID8gU3VnZ2VzdGVkV29yZEluZm8uTUFYX1NDT1JFIDogbU91dHB1dFNjb3Jlc1tqXTsKKyAgICAgICAgICAgICAgICAvLyBUT0RPOiBjaGVjayB0aGF0IGFsbCB1c2VycyBvZiB0aGUgYGtpbmQnIHBhcmFtZXRlciBhcmUgcmVhZHkgdG8gYWNjZXB0CisgICAgICAgICAgICAgICAgLy8gZmxhZ3MgdG9vIGFuZCBwYXNzIG1PdXRwdXRUeXBlc1tqXSBpbnN0ZWFkIG9mIGtpbmQKICAgICAgICAgICAgICAgICBzdWdnZXN0aW9ucy5hZGQobmV3IFN1Z2dlc3RlZFdvcmRJbmZvKG5ldyBTdHJpbmcobU91dHB1dENvZGVQb2ludHMsIHN0YXJ0LCBsZW4pLAotICAgICAgICAgICAgICAgICAgICAgICAgc2NvcmUsIG1PdXRwdXRUeXBlc1tqXSwgbURpY3RUeXBlKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBzY29yZSwga2luZCwgbURpY3RUeXBlKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHN1Z2dlc3Rpb25zOwpkaWZmIC0tZ2l0IGEvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvbGF0aW4vQmluYXJ5RGljdGlvbmFyeUZpbGVEdW1wZXIuamF2YSBiL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2xhdGluL0JpbmFyeURpY3Rpb25hcnlGaWxlRHVtcGVyLmphdmEKaW5kZXggNDJmNzEzNi4uYTliNThkZSAxMDA2NDQKLS0tIGEvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvbGF0aW4vQmluYXJ5RGljdGlvbmFyeUZpbGVEdW1wZXIuamF2YQorKysgYi9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9sYXRpbi9CaW5hcnlEaWN0aW9uYXJ5RmlsZUR1bXBlci5qYXZhCkBAIC04MSw2ICs4MSw3IEBACiAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFFVRVJZX1BBVEhfTUVUQURBVEEgPSAibWV0YWRhdGEiOwogICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBJTlNFUlRfTUVUQURBVEFfQ0xJRU5UX0lEX0NPTFVNTiA9ICJjbGllbnRpZCI7CiAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIElOU0VSVF9NRVRBREFUQV9NRVRBREFUQV9VUklfQ09MVU1OID0gInVyaSI7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIElOU0VSVF9NRVRBREFUQV9NRVRBREFUQV9BRERJVElPTkFMX0lEX0NPTFVNTiA9ICJhZGRpdGlvbmFsaWQiOwogCiAgICAgLy8gUHJldmVudHMgdGhpcyBjbGFzcyB0byBiZSBhY2NpZGVudGFsbHkgaW5zdGFudGlhdGVkLgogICAgIHByaXZhdGUgQmluYXJ5RGljdGlvbmFyeUZpbGVEdW1wZXIoKSB7CkBAIC0yMDksNyArMjEwLDcgQEAKICAgICAgKiB0byB0aGUgY2FjaGUgZmlsZSBuYW1lIGRlc2lnbmF0ZWQgYnkgaXRzIGlkIGFuZCBsb2NhbGUsIG92ZXJ3cml0aW5nIGl0IGlmIGFscmVhZHkgcHJlc2VudAogICAgICAqIGFuZCBjcmVhdGluZyBpdCAoYW5kIGl0cyBjb250YWluaW5nIGRpcmVjdG9yeSkgaWYgbmVjZXNzYXJ5LgogICAgICAqLwotICAgIHByaXZhdGUgc3RhdGljIEFzc2V0RmlsZUFkZHJlc3MgY2FjaGVXb3JkTGlzdChmaW5hbCBTdHJpbmcgd29yZGxpc3RJZCwgZmluYWwgU3RyaW5nIGxvY2FsZSwKKyAgICBwcml2YXRlIHN0YXRpYyB2b2lkIGNhY2hlV29yZExpc3QoZmluYWwgU3RyaW5nIHdvcmRsaXN0SWQsIGZpbmFsIFN0cmluZyBsb2NhbGUsCiAgICAgICAgICAgICBmaW5hbCBDb250ZW50UHJvdmlkZXJDbGllbnQgcHJvdmlkZXJDbGllbnQsIGZpbmFsIENvbnRleHQgY29udGV4dCkgewogICAgICAgICBmaW5hbCBpbnQgQ09NUFJFU1NFRF9DUllQVEVEX0NPTVBSRVNTRUQgPSAwOwogICAgICAgICBmaW5hbCBpbnQgQ1JZUFRFRF9DT01QUkVTU0VEID0gMTsKQEAgLTIyNyw3ICsyMjgsNyBAQAogICAgICAgICAgICAgICAgICAgICBwcm92aWRlckNsaWVudCwgUVVFUllfUEFUSF9EQVRBRklMRSwgd29yZGxpc3RJZCAvKiBleHRyYVBhdGggKi8pOwogICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZSkgewogICAgICAgICAgICAgTG9nLmUoVEFHLCAiQ2FuJ3QgY29tbXVuaWNhdGUgd2l0aCB0aGUgZGljdGlvbmFyeSBwYWNrIiwgZSk7Ci0gICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBmaW5hbCBTdHJpbmcgZmluYWxGaWxlTmFtZSA9CiAgICAgICAgICAgICAgICAgRGljdGlvbmFyeUluZm9VdGlscy5nZXRDYWNoZUZpbGVOYW1lKHdvcmRsaXN0SWQsIGxvY2FsZSwgY29udGV4dCk7CkBAIC0yMzYsMTEgKzIzNywxMSBAQAogICAgICAgICAgICAgdGVtcEZpbGVOYW1lID0gQmluYXJ5RGljdGlvbmFyeUdldHRlci5nZXRUZW1wRmlsZU5hbWUod29yZGxpc3RJZCwgY29udGV4dCk7CiAgICAgICAgIH0gY2F0Y2ggKElPRXhjZXB0aW9uIGUpIHsKICAgICAgICAgICAgIExvZy5lKFRBRywgIkNhbid0IG9wZW4gdGhlIHRlbXBvcmFyeSBmaWxlIiwgZSk7Ci0gICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIGZvciAoaW50IG1vZGUgPSBNT0RFX01JTjsgbW9kZSA8PSBNT0RFX01BWDsgKyttb2RlKSB7Ci0gICAgICAgICAgICBJbnB1dFN0cmVhbSBvcmlnaW5hbFNvdXJjZVN0cmVhbSA9IG51bGw7CisgICAgICAgICAgICBmaW5hbCBJbnB1dFN0cmVhbSBvcmlnaW5hbFNvdXJjZVN0cmVhbTsKICAgICAgICAgICAgIElucHV0U3RyZWFtIGlucHV0U3RyZWFtID0gbnVsbDsKICAgICAgICAgICAgIElucHV0U3RyZWFtIHVuY29tcHJlc3NlZFN0cmVhbSA9IG51bGw7CiAgICAgICAgICAgICBJbnB1dFN0cmVhbSBkZWNyeXB0ZWRTdHJlYW0gPSBudWxsOwpAQCAtMjUzLDcgKzI1NCw3IEBACiAgICAgICAgICAgICAgICAgLy8gT3BlbiBpbnB1dC4KICAgICAgICAgICAgICAgICBhZmQgPSBvcGVuQXNzZXRGaWxlRGVzY3JpcHRvcihwcm92aWRlckNsaWVudCwgd29yZExpc3RVcmkpOwogICAgICAgICAgICAgICAgIC8vIElmIHdlIGNhbid0IG9wZW4gaXQgYXQgYWxsLCBkb24ndCBldmVuIHRyeSBhIG51bWJlciBvZiB0aW1lcy4KLSAgICAgICAgICAgICAgICBpZiAobnVsbCA9PSBhZmQpIHJldHVybiBudWxsOworICAgICAgICAgICAgICAgIGlmIChudWxsID09IGFmZCkgcmV0dXJuOwogICAgICAgICAgICAgICAgIG9yaWdpbmFsU291cmNlU3RyZWFtID0gYWZkLmNyZWF0ZUlucHV0U3RyZWFtKCk7CiAgICAgICAgICAgICAgICAgLy8gT3BlbiBvdXRwdXQuCiAgICAgICAgICAgICAgICAgb3V0cHV0RmlsZSA9IG5ldyBGaWxlKHRlbXBGaWxlTmFtZSk7CkBAIC0zMDQsNyArMzA1LDcgQEAKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgQmluYXJ5RGljdGlvbmFyeUdldHRlci5yZW1vdmVGaWxlc1dpdGhJZEV4Y2VwdChjb250ZXh0LCB3b3JkbGlzdElkLCBmaW5hbEZpbGUpOwogICAgICAgICAgICAgICAgIC8vIFN1Y2Nlc3MhIENsb3NlIGZpbGVzICh0aHJvdWdoIHRoZSBmaW5hbGx5e30gY2xhdXNlKSBhbmQgcmV0dXJuLgotICAgICAgICAgICAgICAgIHJldHVybiBBc3NldEZpbGVBZGRyZXNzLm1ha2VGcm9tRmlsZU5hbWUoZmluYWxGaWxlTmFtZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKICAgICAgICAgICAgICAgICBpZiAoREVCVUcpIHsKICAgICAgICAgICAgICAgICAgICAgTG9nLmkoVEFHLCAiQ2FuJ3Qgb3BlbiB3b3JkIGxpc3QgaW4gbW9kZSAiICsgbW9kZSwgZSk7CkBAIC0zMTksNyArMzIwLDcgQEAKICAgICAgICAgICAgIH0gZmluYWxseSB7CiAgICAgICAgICAgICAgICAgLy8gSWdub3JlIGV4Y2VwdGlvbnMgd2hpbGUgY2xvc2luZyBmaWxlcy4KICAgICAgICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgICAgICAvLyBpbnB1dFN0cmVhbS5jbG9zZSgpIHdpbGwgY2xvc2UgYWZkLCB3ZSBzaG91bGQgbm90IGNhbGwgYWZkLmNsb3NlKCkuCisgICAgICAgICAgICAgICAgICAgIGlmIChudWxsICE9IGFmZCkgYWZkLmNsb3NlKCk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChudWxsICE9IGlucHV0U3RyZWFtKSBpbnB1dFN0cmVhbS5jbG9zZSgpOwogICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCAhPSB1bmNvbXByZXNzZWRTdHJlYW0pIHVuY29tcHJlc3NlZFN0cmVhbS5jbG9zZSgpOwogICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCAhPSBkZWNyeXB0ZWRTdHJlYW0pIGRlY3J5cHRlZFN0cmVhbS5jbG9zZSgpOwpAQCAtMzQ5LDcgKzM1MCw2IEBACiAgICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBlKSB7CiAgICAgICAgICAgICBMb2cuZShUQUcsICJJbiBhZGRpdGlvbiwgY29tbXVuaWNhdGlvbiB3aXRoIHRoZSBkaWN0aW9uYXJ5IHByb3ZpZGVyIHdhcyBjdXQiLCBlKTsKICAgICAgICAgfQotICAgICAgICByZXR1cm4gbnVsbDsKICAgICB9CiAKICAgICAvKioKQEAgLTM1OCwzMCArMzU4LDIzIEBACiAgICAgICogVGhpcyB3aWxsIHF1ZXJ5IGEgY29udGVudCBwcm92aWRlciBmb3Igd29yZCBsaXN0IGRhdGEgZm9yIGEgZ2l2ZW4gbG9jYWxlLCBhbmQgY29weSB0aGUKICAgICAgKiBmaWxlcyBsb2NhbGx5IHNvIHRoYXQgdGhleSBjYW4gYmUgbW1hcCdlZC4gVGhpcyBtYXkgb3ZlcndyaXRlIHByZXZpb3VzbHkgY2FjaGVkIHdvcmQgbGlzdHMKICAgICAgKiB3aXRoIG5ld2VyIHZlcnNpb25zIGlmIGEgbmV3ZXIgdmVyc2lvbiBpcyBtYWRlIGF2YWlsYWJsZSBieSB0aGUgY29udGVudCBwcm92aWRlci4KLSAgICAgKiBAcmV0dXJucyB0aGUgYWRkcmVzc2VzIG9mIHRoZSB3b3JkIGxpc3QgZmlsZXMsIG9yIG51bGwgaWYgbm8gZGF0YSBjb3VsZCBiZSBvYnRhaW5lZC4KICAgICAgKiBAdGhyb3cgRmlsZU5vdEZvdW5kRXhjZXB0aW9uIGlmIHRoZSBwcm92aWRlciByZXR1cm5zIG5vbi1leGlzdGVudCBkYXRhLgogICAgICAqIEB0aHJvdyBJT0V4Y2VwdGlvbiBpZiB0aGUgcHJvdmlkZXItcmV0dXJuZWQgZGF0YSBjb3VsZCBub3QgYmUgcmVhZC4KICAgICAgKi8KLSAgICBwdWJsaWMgc3RhdGljIExpc3Q8QXNzZXRGaWxlQWRkcmVzcz4gY2FjaGVXb3JkTGlzdHNGcm9tQ29udGVudFByb3ZpZGVyKGZpbmFsIExvY2FsZSBsb2NhbGUsCisgICAgcHVibGljIHN0YXRpYyB2b2lkIGNhY2hlV29yZExpc3RzRnJvbUNvbnRlbnRQcm92aWRlcihmaW5hbCBMb2NhbGUgbG9jYWxlLAogICAgICAgICAgICAgZmluYWwgQ29udGV4dCBjb250ZXh0LCBmaW5hbCBib29sZWFuIGhhc0RlZmF1bHRXb3JkTGlzdCkgewogICAgICAgICBmaW5hbCBDb250ZW50UHJvdmlkZXJDbGllbnQgcHJvdmlkZXJDbGllbnQgPSBjb250ZXh0LmdldENvbnRlbnRSZXNvbHZlcigpLgogICAgICAgICAgICAgICAgIGFjcXVpcmVDb250ZW50UHJvdmlkZXJDbGllbnQoZ2V0UHJvdmlkZXJVcmlCdWlsZGVyKCIiKS5idWlsZCgpKTsKICAgICAgICAgaWYgKG51bGwgPT0gcHJvdmlkZXJDbGllbnQpIHsKICAgICAgICAgICAgIExvZy5lKFRBRywgIkNhbid0IGVzdGFibGlzaCBjb21tdW5pY2F0aW9uIHdpdGggdGhlIGRpY3Rpb25hcnkgcHJvdmlkZXIiKTsKLSAgICAgICAgICAgIHJldHVybiBDb2xsZWN0aW9uVXRpbHMubmV3QXJyYXlMaXN0KCk7CisgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgIGZpbmFsIExpc3Q8V29yZExpc3RJbmZvPiBpZExpc3QgPSBnZXRXb3JkTGlzdFdvcmRMaXN0SW5mb3MobG9jYWxlLCBjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICBoYXNEZWZhdWx0V29yZExpc3QpOwotICAgICAgICAgICAgZmluYWwgQXJyYXlMaXN0PEFzc2V0RmlsZUFkZHJlc3M+IGZpbGVBZGRyZXNzTGlzdCA9IENvbGxlY3Rpb25VdGlscy5uZXdBcnJheUxpc3QoKTsKICAgICAgICAgICAgIGZvciAoV29yZExpc3RJbmZvIGlkIDogaWRMaXN0KSB7Ci0gICAgICAgICAgICAgICAgZmluYWwgQXNzZXRGaWxlQWRkcmVzcyBhZmQgPQotICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGVXb3JkTGlzdChpZC5tSWQsIGlkLm1Mb2NhbGUsIHByb3ZpZGVyQ2xpZW50LCBjb250ZXh0KTsKLSAgICAgICAgICAgICAgICBpZiAobnVsbCAhPSBhZmQpIHsKLSAgICAgICAgICAgICAgICAgICAgZmlsZUFkZHJlc3NMaXN0LmFkZChhZmQpOwotICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjYWNoZVdvcmRMaXN0KGlkLm1JZCwgaWQubUxvY2FsZSwgcHJvdmlkZXJDbGllbnQsIGNvbnRleHQpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIGZpbGVBZGRyZXNzTGlzdDsKICAgICAgICAgfSBmaW5hbGx5IHsKICAgICAgICAgICAgIHByb3ZpZGVyQ2xpZW50LnJlbGVhc2UoKTsKICAgICAgICAgfQpAQCAtNDIzLDYgKzQxNiw3IEBACiAgICAgcHJpdmF0ZSBzdGF0aWMgdm9pZCByZWluaXRpYWxpemVDbGllbnRSZWNvcmRJbkRpY3Rpb25hcnlDb250ZW50UHJvdmlkZXIoZmluYWwgQ29udGV4dCBjb250ZXh0LAogICAgICAgICAgICAgZmluYWwgQ29udGVudFByb3ZpZGVyQ2xpZW50IGNsaWVudCwgZmluYWwgU3RyaW5nIGNsaWVudElkKSB0aHJvd3MgUmVtb3RlRXhjZXB0aW9uIHsKICAgICAgICAgZmluYWwgU3RyaW5nIG1ldGFkYXRhRmlsZVVyaSA9IE1ldGFkYXRhRmlsZVVyaUdldHRlci5nZXRNZXRhZGF0YVVyaShjb250ZXh0KTsKKyAgICAgICAgZmluYWwgU3RyaW5nIG1ldGFkYXRhQWRkaXRpb25hbElkID0gTWV0YWRhdGFGaWxlVXJpR2V0dGVyLmdldE1ldGFkYXRhQWRkaXRpb25hbElkKGNvbnRleHQpOwogICAgICAgICBpZiAoVGV4dFV0aWxzLmlzRW1wdHkobWV0YWRhdGFGaWxlVXJpKSkgcmV0dXJuOwogICAgICAgICAvLyBUZWxsIHRoZSBjb250ZW50IHByb3ZpZGVyIHRvIHJlc2V0IGFsbCBpbmZvcm1hdGlvbiBhYm91dCB0aGlzIGNsaWVudCBpZAogICAgICAgICBmaW5hbCBVcmkgbWV0YWRhdGFDb250ZW50VXJpID0gZ2V0UHJvdmlkZXJVcmlCdWlsZGVyKGNsaWVudElkKQpAQCAtNDM0LDYgKzQyOCw3IEBACiAgICAgICAgIGZpbmFsIENvbnRlbnRWYWx1ZXMgbWV0YWRhdGFWYWx1ZXMgPSBuZXcgQ29udGVudFZhbHVlcygpOwogICAgICAgICBtZXRhZGF0YVZhbHVlcy5wdXQoSU5TRVJUX01FVEFEQVRBX0NMSUVOVF9JRF9DT0xVTU4sIGNsaWVudElkKTsKICAgICAgICAgbWV0YWRhdGFWYWx1ZXMucHV0KElOU0VSVF9NRVRBREFUQV9NRVRBREFUQV9VUklfQ09MVU1OLCBtZXRhZGF0YUZpbGVVcmkpOworICAgICAgICBtZXRhZGF0YVZhbHVlcy5wdXQoSU5TRVJUX01FVEFEQVRBX01FVEFEQVRBX0FERElUSU9OQUxfSURfQ09MVU1OLCBtZXRhZGF0YUFkZGl0aW9uYWxJZCk7CiAgICAgICAgIGNsaWVudC5pbnNlcnQobWV0YWRhdGFDb250ZW50VXJpLCBtZXRhZGF0YVZhbHVlcyk7CiAKICAgICAgICAgLy8gVXBkYXRlIHRoZSBkaWN0aW9uYXJ5IGxpc3QuCmRpZmYgLS1naXQgYS9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9sYXRpbi9CaW5hcnlEaWN0aW9uYXJ5R2V0dGVyLmphdmEgYi9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9sYXRpbi9CaW5hcnlEaWN0aW9uYXJ5R2V0dGVyLmphdmEKaW5kZXggMjk0MzEyOC4uOThlYWRjYSAxMDA2NDQKLS0tIGEvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvbGF0aW4vQmluYXJ5RGljdGlvbmFyeUdldHRlci5qYXZhCisrKyBiL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2xhdGluL0JpbmFyeURpY3Rpb25hcnlHZXR0ZXIuamF2YQpAQCAtNzIsMTAgKzcyLDE2IEBACiAgICAgcHVibGljIHN0YXRpYyBTdHJpbmcgZ2V0VGVtcEZpbGVOYW1lKGZpbmFsIFN0cmluZyBpZCwgZmluYWwgQ29udGV4dCBjb250ZXh0KQogICAgICAgICAgICAgdGhyb3dzIElPRXhjZXB0aW9uIHsKICAgICAgICAgZmluYWwgU3RyaW5nIHNhZmVJZCA9IERpY3Rpb25hcnlJbmZvVXRpbHMucmVwbGFjZUZpbGVOYW1lRGFuZ2Vyb3VzQ2hhcmFjdGVycyhpZCk7CisgICAgICAgIGZpbmFsIEZpbGUgZGlyZWN0b3J5ID0gbmV3IEZpbGUoRGljdGlvbmFyeUluZm9VdGlscy5nZXRXb3JkTGlzdFRlbXBEaXJlY3RvcnkoY29udGV4dCkpOworICAgICAgICBpZiAoIWRpcmVjdG9yeS5leGlzdHMoKSkgeworICAgICAgICAgICAgaWYgKCFkaXJlY3RvcnkubWtkaXJzKCkpIHsKKyAgICAgICAgICAgICAgICBMb2cuZShUQUcsICJDb3VsZCBub3QgY3JlYXRlIHRoZSB0ZW1wb3JhcnkgZGlyZWN0b3J5Iik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAgICAgICAgLy8gSWYgdGhlIGZpcnN0IGFyZ3VtZW50IGlzIGxlc3MgdGhhbiB0aHJlZSBjaGFycywgY3JlYXRlVGVtcEZpbGUgdGhyb3dzIGEKICAgICAgICAgLy8gUnVudGltZUV4Y2VwdGlvbi4gV2UgZG9uJ3QgcmVhbGx5IGNhcmUgYWJvdXQgd2hhdCBuYW1lIHdlIGdldCwgc28ganVzdAogICAgICAgICAvLyBwdXQgYSB0aHJlZS1jaGFycyBwcmVmaXggbWFrZXMgdXMgc2FmZS4KLSAgICAgICAgcmV0dXJuIEZpbGUuY3JlYXRlVGVtcEZpbGUoInh4eCIgKyBzYWZlSWQsIG51bGwpLmdldEFic29sdXRlUGF0aCgpOworICAgICAgICByZXR1cm4gRmlsZS5jcmVhdGVUZW1wRmlsZSgieHh4IiArIHNhZmVJZCwgbnVsbCwgZGlyZWN0b3J5KS5nZXRBYnNvbHV0ZVBhdGgoKTsKICAgICB9CiAKICAgICAvKioKQEAgLTg5LDggKzk1LDE2IEBACiAgICAgICAgICAgICAgICAgICAgICsgZmFsbGJhY2tSZXNJZCk7CiAgICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICAgfQotICAgICAgICByZXR1cm4gQXNzZXRGaWxlQWRkcmVzcy5tYWtlRnJvbUZpbGVOYW1lQW5kT2Zmc2V0KAotICAgICAgICAgICAgICAgIGNvbnRleHQuZ2V0QXBwbGljYXRpb25JbmZvKCkuc291cmNlRGlyLCBhZmQuZ2V0U3RhcnRPZmZzZXQoKSwgYWZkLmdldExlbmd0aCgpKTsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHJldHVybiBBc3NldEZpbGVBZGRyZXNzLm1ha2VGcm9tRmlsZU5hbWVBbmRPZmZzZXQoCisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZ2V0QXBwbGljYXRpb25JbmZvKCkuc291cmNlRGlyLCBhZmQuZ2V0U3RhcnRPZmZzZXQoKSwgYWZkLmdldExlbmd0aCgpKTsKKyAgICAgICAgfSBmaW5hbGx5IHsKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgYWZkLmNsb3NlKCk7CisgICAgICAgICAgICB9IGNhdGNoIChJT0V4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgICAgLy8gSWdub3JlZAorICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgfQogCiAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgY2xhc3MgRGljdFBhY2tTZXR0aW5ncyB7CkBAIC0yNzYsOSArMjkwLDYgQEAKICAgICAgICAgICAgIGZpbmFsIENvbnRleHQgY29udGV4dCkgewogCiAgICAgICAgIGZpbmFsIGJvb2xlYW4gaGFzRGVmYXVsdFdvcmRMaXN0ID0gRGljdGlvbmFyeUZhY3RvcnkuaXNEaWN0aW9uYXJ5QXZhaWxhYmxlKGNvbnRleHQsIGxvY2FsZSk7Ci0gICAgICAgIC8vIGNhY2hlV29yZExpc3RzRnJvbUNvbnRlbnRQcm92aWRlciByZXR1cm5zIHRoZSBsaXN0IG9mIGZpbGVzIGl0IGNvcGllZCB0byBsb2NhbAotICAgICAgICAvLyBzdG9yYWdlLCBidXQgd2UgZG9uJ3QgcmVhbGx5IGNhcmUgYWJvdXQgd2hhdCB3YXMgY29waWVkIE5PVzogd2hhdCB3ZSB3YW50IGlzIHRoZQotICAgICAgICAvLyBsaXN0IG9mIGV2ZXJ5dGhpbmcgd2UgZXZlciBjYWNoZWQsIHNvIHdlIGlnbm9yZSB0aGUgcmV0dXJuIHZhbHVlLgogICAgICAgICAvLyBUT0RPOiBUaGUgZGV2ZWxvcG1lbnQtb25seS1kaWFnbm9zdGljIHZlcnNpb24gaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgRGljdGlvbmFyeSBQYWNrCiAgICAgICAgIC8vIFNlcnZpY2UgeWV0CiAgICAgICAgIGlmICghUHJvZHVjdGlvbkZsYWcuVVNFU19ERVZFTE9QTUVOVF9PTkxZX0RJQUdOT1NUSUNTKSB7CmRpZmYgLS1naXQgYS9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9sYXRpbi9EZWJ1Z1NldHRpbmdzLmphdmEgYi9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9sYXRpbi9EZWJ1Z1NldHRpbmdzLmphdmEKaW5kZXggYzJhYWRlNi4uNTk2OWE2MyAxMDA2NDQKLS0tIGEvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvbGF0aW4vRGVidWdTZXR0aW5ncy5qYXZhCisrKyBiL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2xhdGluL0RlYnVnU2V0dGluZ3MuamF2YQpAQCAtMTIxLDE4ICsxMjEsOCBAQAogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIGJvb2xlYW4gaXNEZWJ1Z01vZGUgPSBtRGVidWdNb2RlLmlzQ2hlY2tlZCgpOwotICAgICAgICBTdHJpbmcgdmVyc2lvbiA9ICIiOwotICAgICAgICB0cnkgewotICAgICAgICAgICAgZmluYWwgQ29udGV4dCBjb250ZXh0ID0gZ2V0QWN0aXZpdHkoKTsKLSAgICAgICAgICAgIGlmIChjb250ZXh0ID09IG51bGwpIHsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBmaW5hbCBTdHJpbmcgcGFja2FnZU5hbWUgPSBjb250ZXh0LmdldFBhY2thZ2VOYW1lKCk7Ci0gICAgICAgICAgICBQYWNrYWdlSW5mbyBpbmZvID0gY29udGV4dC5nZXRQYWNrYWdlTWFuYWdlcigpLmdldFBhY2thZ2VJbmZvKHBhY2thZ2VOYW1lLCAwKTsKLSAgICAgICAgICAgIHZlcnNpb24gPSAiVmVyc2lvbiAiICsgaW5mby52ZXJzaW9uTmFtZTsKLSAgICAgICAgfSBjYXRjaCAoTmFtZU5vdEZvdW5kRXhjZXB0aW9uIGUpIHsKLSAgICAgICAgICAgIExvZy5lKFRBRywgIkNvdWxkIG5vdCBmaW5kIHZlcnNpb24gaW5mby4iKTsKLSAgICAgICAgfQorICAgICAgICBmaW5hbCBTdHJpbmcgdmVyc2lvbiA9IGdldFJlc291cmNlcygpLmdldFN0cmluZygKKyAgICAgICAgICAgICAgICBSLnN0cmluZy52ZXJzaW9uX3RleHQsIFV0aWxzLmdldFZlcnNpb25OYW1lKGdldEFjdGl2aXR5KCkpKTsKICAgICAgICAgaWYgKCFpc0RlYnVnTW9kZSkgewogICAgICAgICAgICAgbURlYnVnTW9kZS5zZXRUaXRsZSh2ZXJzaW9uKTsKICAgICAgICAgICAgIG1EZWJ1Z01vZGUuc2V0U3VtbWFyeSgiIik7CmRpZmYgLS1naXQgYS9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9sYXRpbi9EaWN0aW9uYXJ5LmphdmEgYi9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9sYXRpbi9EaWN0aW9uYXJ5LmphdmEKaW5kZXggOTY5MWZhMi4uYWNkN2MyYSAxMDA2NDQKLS0tIGEvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvbGF0aW4vRGljdGlvbmFyeS5qYXZhCisrKyBiL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2xhdGluL0RpY3Rpb25hcnkuamF2YQpAQCAtNTEsMTggKzUxLDIxIEBACiAgICAgICogQHBhcmFtIGNvbXBvc2VyIHRoZSBrZXkgc2VxdWVuY2UgdG8gbWF0Y2ggd2l0aCBjb29yZGluYXRlIGluZm8sIGFzIGEgV29yZENvbXBvc2VyCiAgICAgICogQHBhcmFtIHByZXZXb3JkIHRoZSBwcmV2aW91cyB3b3JkLCBvciBudWxsIGlmIG5vbmUKICAgICAgKiBAcGFyYW0gcHJveGltaXR5SW5mbyB0aGUgb2JqZWN0IGZvciBrZXkgcHJveGltaXR5LiBNYXkgYmUgaWdub3JlZCBieSBzb21lIGltcGxlbWVudGF0aW9ucy4KKyAgICAgKiBAcGFyYW0gYmxvY2tPZmZlbnNpdmVXb3JkcyB3aGV0aGVyIHRvIGJsb2NrIHBvdGVudGlhbGx5IG9mZmVuc2l2ZSB3b3JkcwogICAgICAqIEByZXR1cm4gdGhlIGxpc3Qgb2Ygc3VnZ2VzdGlvbnMgKHBvc3NpYmx5IG51bGwgaWYgbm9uZSkKICAgICAgKi8KICAgICAvLyBUT0RPOiBwYXNzIG1vcmUgY29udGV4dCB0aGFuIGp1c3QgdGhlIHByZXZpb3VzIHdvcmQsIHRvIGVuYWJsZSBiZXR0ZXIgc3VnZ2VzdGlvbnMgKG4tZ3JhbQogICAgIC8vIGFuZCBtb3JlKQogICAgIGFic3RyYWN0IHB1YmxpYyBBcnJheUxpc3Q8U3VnZ2VzdGVkV29yZEluZm8+IGdldFN1Z2dlc3Rpb25zKGZpbmFsIFdvcmRDb21wb3NlciBjb21wb3NlciwKLSAgICAgICAgICAgIGZpbmFsIFN0cmluZyBwcmV2V29yZCwgZmluYWwgUHJveGltaXR5SW5mbyBwcm94aW1pdHlJbmZvKTsKKyAgICAgICAgICAgIGZpbmFsIFN0cmluZyBwcmV2V29yZCwgZmluYWwgUHJveGltaXR5SW5mbyBwcm94aW1pdHlJbmZvLAorICAgICAgICAgICAgZmluYWwgYm9vbGVhbiBibG9ja09mZmVuc2l2ZVdvcmRzKTsKIAogICAgIC8vIFRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIG9mIHRoaXMgbWV0aG9kIGlnbm9yZXMgc2Vzc2lvbklkLgogICAgIC8vIFN1YmNsYXNzZXMgdGhhdCB3YW50IHRvIHVzZSBzZXNzaW9uSWQgbmVlZCB0byBvdmVycmlkZSB0aGlzIG1ldGhvZC4KICAgICBwdWJsaWMgQXJyYXlMaXN0PFN1Z2dlc3RlZFdvcmRJbmZvPiBnZXRTdWdnZXN0aW9uc1dpdGhTZXNzaW9uSWQoZmluYWwgV29yZENvbXBvc2VyIGNvbXBvc2VyLAotICAgICAgICAgICAgZmluYWwgU3RyaW5nIHByZXZXb3JkLCBmaW5hbCBQcm94aW1pdHlJbmZvIHByb3hpbWl0eUluZm8sIGZpbmFsIGludCBzZXNzaW9uSWQpIHsKLSAgICAgICAgcmV0dXJuIGdldFN1Z2dlc3Rpb25zKGNvbXBvc2VyLCBwcmV2V29yZCwgcHJveGltaXR5SW5mbyk7CisgICAgICAgICAgICBmaW5hbCBTdHJpbmcgcHJldldvcmQsIGZpbmFsIFByb3hpbWl0eUluZm8gcHJveGltaXR5SW5mbywKKyAgICAgICAgICAgIGZpbmFsIGJvb2xlYW4gYmxvY2tPZmZlbnNpdmVXb3JkcywgZmluYWwgaW50IHNlc3Npb25JZCkgeworICAgICAgICByZXR1cm4gZ2V0U3VnZ2VzdGlvbnMoY29tcG9zZXIsIHByZXZXb3JkLCBwcm94aW1pdHlJbmZvLCBibG9ja09mZmVuc2l2ZVdvcmRzKTsKICAgICB9CiAKICAgICAvKioKZGlmZiAtLWdpdCBhL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2xhdGluL0RpY3Rpb25hcnlDb2xsZWN0aW9uLmphdmEgYi9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9sYXRpbi9EaWN0aW9uYXJ5Q29sbGVjdGlvbi5qYXZhCmluZGV4IDI4MzJhZDQuLmVkMmI0NDIgMTAwNjQ0Ci0tLSBhL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2xhdGluL0RpY3Rpb25hcnlDb2xsZWN0aW9uLmphdmEKKysrIGIvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvbGF0aW4vRGljdGlvbmFyeUNvbGxlY3Rpb24uamF2YQpAQCAtNTYsMTggKzU2LDE5IEBACiAKICAgICBAT3ZlcnJpZGUKICAgICBwdWJsaWMgQXJyYXlMaXN0PFN1Z2dlc3RlZFdvcmRJbmZvPiBnZXRTdWdnZXN0aW9ucyhmaW5hbCBXb3JkQ29tcG9zZXIgY29tcG9zZXIsCi0gICAgICAgICAgICBmaW5hbCBTdHJpbmcgcHJldldvcmQsIGZpbmFsIFByb3hpbWl0eUluZm8gcHJveGltaXR5SW5mbykgeworICAgICAgICAgICAgZmluYWwgU3RyaW5nIHByZXZXb3JkLCBmaW5hbCBQcm94aW1pdHlJbmZvIHByb3hpbWl0eUluZm8sCisgICAgICAgICAgICBmaW5hbCBib29sZWFuIGJsb2NrT2ZmZW5zaXZlV29yZHMpIHsKICAgICAgICAgZmluYWwgQ29weU9uV3JpdGVBcnJheUxpc3Q8RGljdGlvbmFyeT4gZGljdGlvbmFyaWVzID0gbURpY3Rpb25hcmllczsKICAgICAgICAgaWYgKGRpY3Rpb25hcmllcy5pc0VtcHR5KCkpIHJldHVybiBudWxsOwogICAgICAgICAvLyBUbyBhdm9pZCBjcmVhdGluZyB1bm5lY2Vzc2FyeSBvYmplY3RzLCB3ZSBnZXQgdGhlIGxpc3Qgb3V0IG9mIHRoZSBmaXJzdAogICAgICAgICAvLyBkaWN0aW9uYXJ5IGFuZCBhZGQgdGhlIHJlc3QgdG8gaXQgaWYgbm90IG51bGwsIGhlbmNlIHRoZSBnZXQoMCkKICAgICAgICAgQXJyYXlMaXN0PFN1Z2dlc3RlZFdvcmRJbmZvPiBzdWdnZXN0aW9ucyA9IGRpY3Rpb25hcmllcy5nZXQoMCkuZ2V0U3VnZ2VzdGlvbnMoY29tcG9zZXIsCi0gICAgICAgICAgICAgICAgcHJldldvcmQsIHByb3hpbWl0eUluZm8pOworICAgICAgICAgICAgICAgIHByZXZXb3JkLCBwcm94aW1pdHlJbmZvLCBibG9ja09mZmVuc2l2ZVdvcmRzKTsKICAgICAgICAgaWYgKG51bGwgPT0gc3VnZ2VzdGlvbnMpIHN1Z2dlc3Rpb25zID0gQ29sbGVjdGlvblV0aWxzLm5ld0FycmF5TGlzdCgpOwogICAgICAgICBmaW5hbCBpbnQgbGVuZ3RoID0gZGljdGlvbmFyaWVzLnNpemUoKTsKICAgICAgICAgZm9yIChpbnQgaSA9IDE7IGkgPCBsZW5ndGg7ICsrIGkpIHsKICAgICAgICAgICAgIGZpbmFsIEFycmF5TGlzdDxTdWdnZXN0ZWRXb3JkSW5mbz4gc3VnZyA9IGRpY3Rpb25hcmllcy5nZXQoaSkuZ2V0U3VnZ2VzdGlvbnMoY29tcG9zZXIsCi0gICAgICAgICAgICAgICAgICAgIHByZXZXb3JkLCBwcm94aW1pdHlJbmZvKTsKKyAgICAgICAgICAgICAgICAgICAgcHJldldvcmQsIHByb3hpbWl0eUluZm8sIGJsb2NrT2ZmZW5zaXZlV29yZHMpOwogICAgICAgICAgICAgaWYgKG51bGwgIT0gc3VnZykgc3VnZ2VzdGlvbnMuYWRkQWxsKHN1Z2cpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBzdWdnZXN0aW9uczsKZGlmZiAtLWdpdCBhL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2xhdGluL0RpY3Rpb25hcnlJbmZvVXRpbHMuamF2YSBiL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2xhdGluL0RpY3Rpb25hcnlJbmZvVXRpbHMuamF2YQppbmRleCBkY2ZhNDgzLi5kZjdiYWQ4IDEwMDY0NAotLS0gYS9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9sYXRpbi9EaWN0aW9uYXJ5SW5mb1V0aWxzLmphdmEKKysrIGIvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvbGF0aW4vRGljdGlvbmFyeUluZm9VdGlscy5qYXZhCkBAIC0xMjksNiArMTI5LDEzIEBACiAgICAgfQogCiAgICAgLyoqCisgICAgICogSGVscGVyIG1ldGhvZCB0byBnZXQgdGhlIHRvcCBsZXZlbCB0ZW1wIGRpcmVjdG9yeS4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIFN0cmluZyBnZXRXb3JkTGlzdFRlbXBEaXJlY3RvcnkoZmluYWwgQ29udGV4dCBjb250ZXh0KSB7CisgICAgICAgIHJldHVybiBjb250ZXh0LmdldEZpbGVzRGlyKCkgKyBGaWxlLnNlcGFyYXRvciArICJ0bXAiOworICAgIH0KKworICAgIC8qKgogICAgICAqIFJldmVyc2UgZXNjYXBpbmcgZG9uZSBieSByZXBsYWNlRmlsZU5hbWVEYW5nZXJvdXNDaGFyYWN0ZXJzLgogICAgICAqLwogICAgIHB1YmxpYyBzdGF0aWMgU3RyaW5nIGdldFdvcmRMaXN0SWRGcm9tRmlsZU5hbWUoZmluYWwgU3RyaW5nIGZuYW1lKSB7CmRpZmYgLS1naXQgYS9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9sYXRpbi9FeHBhbmRhYmxlQmluYXJ5RGljdGlvbmFyeS5qYXZhIGIvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvbGF0aW4vRXhwYW5kYWJsZUJpbmFyeURpY3Rpb25hcnkuamF2YQppbmRleCA0YjE5NzVhLi44ODdkNjU3IDEwMDY0NAotLS0gYS9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9sYXRpbi9FeHBhbmRhYmxlQmluYXJ5RGljdGlvbmFyeS5qYXZhCisrKyBiL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2xhdGluL0V4cGFuZGFibGVCaW5hcnlEaWN0aW9uYXJ5LmphdmEKQEAgLTIwMCwxMiArMjAwLDE0IEBACiAKICAgICBAT3ZlcnJpZGUKICAgICBwdWJsaWMgQXJyYXlMaXN0PFN1Z2dlc3RlZFdvcmRJbmZvPiBnZXRTdWdnZXN0aW9ucyhmaW5hbCBXb3JkQ29tcG9zZXIgY29tcG9zZXIsCi0gICAgICAgICAgICBmaW5hbCBTdHJpbmcgcHJldldvcmQsIGZpbmFsIFByb3hpbWl0eUluZm8gcHJveGltaXR5SW5mbykgeworICAgICAgICAgICAgZmluYWwgU3RyaW5nIHByZXZXb3JkLCBmaW5hbCBQcm94aW1pdHlJbmZvIHByb3hpbWl0eUluZm8sCisgICAgICAgICAgICBmaW5hbCBib29sZWFuIGJsb2NrT2ZmZW5zaXZlV29yZHMpIHsKICAgICAgICAgYXN5bmNSZWxvYWREaWN0aW9uYXJ5SWZSZXF1aXJlZCgpOwogICAgICAgICBpZiAobUxvY2FsRGljdGlvbmFyeUNvbnRyb2xsZXIudHJ5TG9jaygpKSB7CiAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgIGlmIChtQmluYXJ5RGljdGlvbmFyeSAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBtQmluYXJ5RGljdGlvbmFyeS5nZXRTdWdnZXN0aW9ucyhjb21wb3NlciwgcHJldldvcmQsIHByb3hpbWl0eUluZm8pOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gbUJpbmFyeURpY3Rpb25hcnkuZ2V0U3VnZ2VzdGlvbnMoY29tcG9zZXIsIHByZXZXb3JkLCBwcm94aW1pdHlJbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrT2ZmZW5zaXZlV29yZHMpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0gZmluYWxseSB7CiAgICAgICAgICAgICAgICAgbUxvY2FsRGljdGlvbmFyeUNvbnRyb2xsZXIudW5sb2NrKCk7CmRpZmYgLS1naXQgYS9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9sYXRpbi9FeHBhbmRhYmxlRGljdGlvbmFyeS5qYXZhIGIvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvbGF0aW4vRXhwYW5kYWJsZURpY3Rpb25hcnkuamF2YQppbmRleCBmZDgxZDEzLi4wZGFiZGI4IDEwMDY0NAotLS0gYS9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9sYXRpbi9FeHBhbmRhYmxlRGljdGlvbmFyeS5qYXZhCisrKyBiL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2xhdGluL0V4cGFuZGFibGVEaWN0aW9uYXJ5LmphdmEKQEAgLTI1Myw3ICsyNTMsOCBAQAogCiAgICAgQE92ZXJyaWRlCiAgICAgcHVibGljIEFycmF5TGlzdDxTdWdnZXN0ZWRXb3JkSW5mbz4gZ2V0U3VnZ2VzdGlvbnMoZmluYWwgV29yZENvbXBvc2VyIGNvbXBvc2VyLAotICAgICAgICAgICAgZmluYWwgU3RyaW5nIHByZXZXb3JkLCBmaW5hbCBQcm94aW1pdHlJbmZvIHByb3hpbWl0eUluZm8pIHsKKyAgICAgICAgICAgIGZpbmFsIFN0cmluZyBwcmV2V29yZCwgZmluYWwgUHJveGltaXR5SW5mbyBwcm94aW1pdHlJbmZvLAorICAgICAgICAgICAgZmluYWwgYm9vbGVhbiBibG9ja09mZmVuc2l2ZVdvcmRzKSB7CiAgICAgICAgIGlmIChyZWxvYWREaWN0aW9uYXJ5SWZSZXF1aXJlZCgpKSByZXR1cm4gbnVsbDsKICAgICAgICAgaWYgKGNvbXBvc2VyLnNpemUoKSA+IDEpIHsKICAgICAgICAgICAgIGlmIChjb21wb3Nlci5zaXplKCkgPj0gQ29uc3RhbnRzLkRpY3Rpb25hcnkuTUFYX1dPUkRfTEVOR1RIKSB7CmRpZmYgLS1naXQgYS9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9sYXRpbi9GZWVkYmFja1V0aWxzLmphdmEgYi9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9sYXRpbi9GZWVkYmFja1V0aWxzLmphdmEKaW5kZXggMWU1MjYwZS4uMDU4Mjc2MyAxMDA2NDQKLS0tIGEvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvbGF0aW4vRmVlZGJhY2tVdGlscy5qYXZhCisrKyBiL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2xhdGluL0ZlZWRiYWNrVXRpbHMuamF2YQpAQCAtMTcsNiArMTcsNyBAQAogcGFja2FnZSBjb20uYW5kcm9pZC5pbnB1dG1ldGhvZC5sYXRpbjsKIAogaW1wb3J0IGFuZHJvaWQuY29udGVudC5Db250ZXh0OworaW1wb3J0IGFuZHJvaWQuY29udGVudC5JbnRlbnQ7CiAKIHB1YmxpYyBjbGFzcyBGZWVkYmFja1V0aWxzIHsKICAgICBwdWJsaWMgc3RhdGljIGJvb2xlYW4gaXNGZWVkYmFja0Zvcm1TdXBwb3J0ZWQoKSB7CkBAIC0yNSw0ICsyNiwxMiBAQAogCiAgICAgcHVibGljIHN0YXRpYyB2b2lkIHNob3dGZWVkYmFja0Zvcm0oQ29udGV4dCBjb250ZXh0KSB7CiAgICAgfQorCisgICAgcHVibGljIHN0YXRpYyBpbnQgZ2V0QWJvdXRLZXlib2FyZFRpdGxlUmVzSWQoKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIHB1YmxpYyBzdGF0aWMgSW50ZW50IGdldEFib3V0S2V5Ym9hcmRJbnRlbnQoQ29udGV4dCBjb250ZXh0KSB7CisgICAgICAgIHJldHVybiBudWxsOworICAgIH0KIH0KZGlmZiAtLWdpdCBhL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2xhdGluL0puaVV0aWxzLmphdmEgYi9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9sYXRpbi9KbmlVdGlscy5qYXZhCmluZGV4IGY5MzA1OTkuLjhhZWRlZTUgMTAwNjQ0Ci0tLSBhL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2xhdGluL0puaVV0aWxzLmphdmEKKysrIGIvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvbGF0aW4vSm5pVXRpbHMuamF2YQpAQCAtMjMsMTUgKzIzLDE5IEBACiBwdWJsaWMgZmluYWwgY2xhc3MgSm5pVXRpbHMgewogICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBUQUcgPSBKbmlVdGlscy5jbGFzcy5nZXRTaW1wbGVOYW1lKCk7CiAKLSAgICBwcml2YXRlIEpuaVV0aWxzKCkgewotICAgICAgICAvLyBUaGlzIHV0aWxpdHkgY2xhc3MgaXMgbm90IHB1YmxpY2x5IGluc3RhbnRpYWJsZS4KLSAgICB9Ci0KLSAgICBwdWJsaWMgc3RhdGljIHZvaWQgbG9hZE5hdGl2ZUxpYnJhcnkoKSB7CisgICAgc3RhdGljIHsKICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgIFN5c3RlbS5sb2FkTGlicmFyeShKbmlMaWJOYW1lLkpOSV9MSUJfTkFNRSk7CiAgICAgICAgIH0gY2F0Y2ggKFVuc2F0aXNmaWVkTGlua0Vycm9yIHVsZSkgewogICAgICAgICAgICAgTG9nLmUoVEFHLCAiQ291bGQgbm90IGxvYWQgbmF0aXZlIGxpYnJhcnkgIiArIEpuaUxpYk5hbWUuSk5JX0xJQl9OQU1FLCB1bGUpOwogICAgICAgICB9CiAgICAgfQorCisgICAgcHJpdmF0ZSBKbmlVdGlscygpIHsKKyAgICAgICAgLy8gVGhpcyB1dGlsaXR5IGNsYXNzIGlzIG5vdCBwdWJsaWNseSBpbnN0YW50aWFibGUuCisgICAgfQorCisgICAgcHVibGljIHN0YXRpYyB2b2lkIGxvYWROYXRpdmVMaWJyYXJ5KCkgeworICAgICAgICAvLyBFbnN1cmVzIHRoZSBzdGF0aWMgaW5pdGlhbGl6ZXIgaXMgY2FsbGVkCisgICAgfQogfQpkaWZmIC0tZ2l0IGEvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvbGF0aW4vTGF0aW5JTUUuamF2YSBiL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2xhdGluL0xhdGluSU1FLmphdmEKaW5kZXggNWVmMjEyMC4uOTUzZWMzMSAxMDA2NDQKLS0tIGEvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvbGF0aW4vTGF0aW5JTUUuamF2YQorKysgYi9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9sYXRpbi9MYXRpbklNRS5qYXZhCkBAIC0yMTg1LDYgKzIxODUsNyBAQAogICAgICAgICAgICAgICAgIG1Db25uZWN0aW9uLmdldE50aFByZXZpb3VzV29yZChtU2V0dGluZ3MuZ2V0Q3VycmVudCgpLm1Xb3JkU2VwYXJhdG9ycywKICAgICAgICAgICAgICAgICBtV29yZENvbXBvc2VyLmlzQ29tcG9zaW5nV29yZCgpID8gMiA6IDEpOwogICAgICAgICByZXR1cm4gbVN1Z2dlc3QuZ2V0U3VnZ2VzdGVkV29yZHMobVdvcmRDb21wb3NlciwgcHJldldvcmQsIGtleWJvYXJkLmdldFByb3hpbWl0eUluZm8oKSwKKyAgICAgICAgICAgICAgICBtU2V0dGluZ3MuZ2V0QmxvY2tQb3RlbnRpYWxseU9mZmVuc2l2ZSgpLAogICAgICAgICAgICAgICAgIG1TZXR0aW5ncy5nZXRDdXJyZW50KCkubUNvcnJlY3Rpb25FbmFibGVkLCBzZXNzaW9uSWQpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvbGF0aW4vTWV0YWRhdGFGaWxlVXJpR2V0dGVyLmphdmEgYi9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9sYXRpbi9NZXRhZGF0YUZpbGVVcmlHZXR0ZXIuamF2YQppbmRleCBlNmRjNmRiLi5hOThlY2M3IDEwMDY0NAotLS0gYS9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9sYXRpbi9NZXRhZGF0YUZpbGVVcmlHZXR0ZXIuamF2YQorKysgYi9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9sYXRpbi9NZXRhZGF0YUZpbGVVcmlHZXR0ZXIuamF2YQpAQCAtMTksMTAgKzE5LDE4IEBACiBpbXBvcnQgYW5kcm9pZC5jb250ZW50LkNvbnRleHQ7CiAKIC8qKgotICogSGVscGVyIGNsYXNzIHRvIGdldCB0aGUgbWV0YWRhdGEgVVJJLgorICogSGVscGVyIGNsYXNzIHRvIGdldCB0aGUgbWV0YWRhdGEgVVJJIGFuZCB0aGUgYWRkaXRpb25hbCBJRC4KICAqLwogcHVibGljIGNsYXNzIE1ldGFkYXRhRmlsZVVyaUdldHRlciB7Ci0gICAgcHVibGljIHN0YXRpYyBTdHJpbmcgZ2V0TWV0YWRhdGFVcmkoQ29udGV4dCBjb250ZXh0KSB7CisgICAgcHJpdmF0ZSBNZXRhZGF0YUZpbGVVcmlHZXR0ZXIoKSB7CisgICAgICAgIC8vIFRoaXMgaGVscGVyIGNsYXNzIGlzIG5vdCBpbnN0YW50aWFibGUuCisgICAgfQorCisgICAgcHVibGljIHN0YXRpYyBTdHJpbmcgZ2V0TWV0YWRhdGFVcmkoZmluYWwgQ29udGV4dCBjb250ZXh0KSB7CiAgICAgICAgIHJldHVybiBjb250ZXh0LmdldFN0cmluZyhSLnN0cmluZy5kaWN0aW9uYXJ5X3BhY2tfbWV0YWRhdGFfdXJpKTsKICAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIFN0cmluZyBnZXRNZXRhZGF0YUFkZGl0aW9uYWxJZChmaW5hbCBDb250ZXh0IGNvbnRleHQpIHsKKyAgICAgICAgcmV0dXJuICIiOworICAgIH0KIH0KZGlmZiAtLWdpdCBhL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2xhdGluL1JpY2hJbnB1dE1ldGhvZE1hbmFnZXIuamF2YSBiL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2xhdGluL1JpY2hJbnB1dE1ldGhvZE1hbmFnZXIuamF2YQppbmRleCBlMzlhYWU5Li4zZjdiZTk5IDEwMDY0NAotLS0gYS9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9sYXRpbi9SaWNoSW5wdXRNZXRob2RNYW5hZ2VyLmphdmEKKysrIGIvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvbGF0aW4vUmljaElucHV0TWV0aG9kTWFuYWdlci5qYXZhCkBAIC0yMiw2ICsyMiw3IEBACiBpbXBvcnQgYW5kcm9pZC5jb250ZW50LlNoYXJlZFByZWZlcmVuY2VzOwogaW1wb3J0IGFuZHJvaWQub3MuSUJpbmRlcjsKIGltcG9ydCBhbmRyb2lkLnByZWZlcmVuY2UuUHJlZmVyZW5jZU1hbmFnZXI7CitpbXBvcnQgYW5kcm9pZC51dGlsLkxvZzsKIGltcG9ydCBhbmRyb2lkLnZpZXcuaW5wdXRtZXRob2QuSW5wdXRNZXRob2RJbmZvOwogaW1wb3J0IGFuZHJvaWQudmlldy5pbnB1dG1ldGhvZC5JbnB1dE1ldGhvZE1hbmFnZXI7CiBpbXBvcnQgYW5kcm9pZC52aWV3LmlucHV0bWV0aG9kLklucHV0TWV0aG9kU3VidHlwZTsKQEAgLTQ2LDYgKzQ3LDggQEAKICAgICBwcml2YXRlIElucHV0TWV0aG9kTWFuYWdlckNvbXBhdFdyYXBwZXIgbUltbVdyYXBwZXI7CiAgICAgcHJpdmF0ZSBJbnB1dE1ldGhvZEluZm8gbUlucHV0TWV0aG9kSW5mb09mVGhpc0ltZTsKIAorICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBJTkRFWF9OT1RfRk9VTkQgPSAtMTsKKwogICAgIHB1YmxpYyBzdGF0aWMgUmljaElucHV0TWV0aG9kTWFuYWdlciBnZXRJbnN0YW5jZSgpIHsKICAgICAgICAgc0luc3RhbmNlLmNoZWNrSW5pdGlhbGl6ZWQoKTsKICAgICAgICAgcmV0dXJuIHNJbnN0YW5jZTsKQEAgLTk4LDExICsxMDEsMTAwIEBACiAgICAgfQogCiAgICAgcHVibGljIGJvb2xlYW4gc3dpdGNoVG9OZXh0SW5wdXRNZXRob2QoZmluYWwgSUJpbmRlciB0b2tlbiwgZmluYWwgYm9vbGVhbiBvbmx5Q3VycmVudEltZSkgewotICAgICAgICBmaW5hbCBib29sZWFuIHJlc3VsdCA9IG1JbW1XcmFwcGVyLnN3aXRjaFRvTmV4dElucHV0TWV0aG9kKHRva2VuLCBvbmx5Q3VycmVudEltZSk7Ci0gICAgICAgIGlmICghcmVzdWx0KSB7Ci0gICAgICAgICAgICBtSW1tV3JhcHBlci5tSW1tLnN3aXRjaFRvTGFzdElucHV0TWV0aG9kKHRva2VuKTsKKyAgICAgICAgaWYgKG1JbW1XcmFwcGVyLnN3aXRjaFRvTmV4dElucHV0TWV0aG9kKHRva2VuLCBvbmx5Q3VycmVudEltZSkpIHsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIC8vIFdhcyBub3QgYWJsZSB0byBjYWxsIHtAbGluayBJbnB1dE1ldGhvZE1hbmFnZXIjc3dpdGNoVG9OZXh0SW5wdXRNZXRob2RJQmluZGVyLGJvb2xlYW4pfQorICAgICAgICAvLyBiZWNhdXNlIHRoZSBjdXJyZW50IGRldmljZSBpcyBydW5uaW5nIElDUyBvciBwcmV2aW91cyBhbmQgbGFja3MgdGhlIEFQSS4KKyAgICAgICAgaWYgKHN3aXRjaFRvTmV4dElucHV0U3VidHlwZUluVGhpc0ltZSh0b2tlbiwgb25seUN1cnJlbnRJbWUpKSB7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gc3dpdGNoVG9OZXh0SW5wdXRNZXRob2RBbmRTdWJ0eXBlKHRva2VuKTsKKyAgICB9CisKKyAgICBwcml2YXRlIGJvb2xlYW4gc3dpdGNoVG9OZXh0SW5wdXRTdWJ0eXBlSW5UaGlzSW1lKGZpbmFsIElCaW5kZXIgdG9rZW4sCisgICAgICAgICAgICBmaW5hbCBib29sZWFuIG9ubHlDdXJyZW50SW1lKSB7CisgICAgICAgIGZpbmFsIElucHV0TWV0aG9kTWFuYWdlciBpbW0gPSBtSW1tV3JhcHBlci5tSW1tOworICAgICAgICBmaW5hbCBJbnB1dE1ldGhvZFN1YnR5cGUgY3VycmVudFN1YnR5cGUgPSBpbW0uZ2V0Q3VycmVudElucHV0TWV0aG9kU3VidHlwZSgpOworICAgICAgICBmaW5hbCBMaXN0PElucHV0TWV0aG9kU3VidHlwZT4gZW5hYmxlZFN1YnR5cGVzID0gaW1tLmdldEVuYWJsZWRJbnB1dE1ldGhvZFN1YnR5cGVMaXN0KAorICAgICAgICAgICAgICAgIG1JbnB1dE1ldGhvZEluZm9PZlRoaXNJbWUsIHRydWUgLyogYWxsb3dzSW1wbGljaXRseVNlbGVjdGVkU3VidHlwZXMgKi8pOworICAgICAgICBmaW5hbCBpbnQgY3VycmVudEluZGV4ID0gZ2V0U3VidHlwZUluZGV4SW5MaXN0KGN1cnJlbnRTdWJ0eXBlLCBlbmFibGVkU3VidHlwZXMpOworICAgICAgICBpZiAoY3VycmVudEluZGV4ID09IElOREVYX05PVF9GT1VORCkgeworICAgICAgICAgICAgTG9nLncoVEFHLCAiQ2FuJ3QgZmluZCBjdXJyZW50IHN1YnR5cGUgaW4gZW5hYmxlZCBzdWJ0eXBlczogc3VidHlwZT0iCisgICAgICAgICAgICAgICAgICAgICsgU3VidHlwZUxvY2FsZS5nZXRTdWJ0eXBlRGlzcGxheU5hbWUoY3VycmVudFN1YnR5cGUpKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQorICAgICAgICBmaW5hbCBpbnQgbmV4dEluZGV4ID0gKGN1cnJlbnRJbmRleCArIDEpICUgZW5hYmxlZFN1YnR5cGVzLnNpemUoKTsKKyAgICAgICAgaWYgKG5leHRJbmRleCA8PSBjdXJyZW50SW5kZXggJiYgIW9ubHlDdXJyZW50SW1lKSB7CisgICAgICAgICAgICAvLyBUaGUgY3VycmVudCBzdWJ0eXBlIGlzIHRoZSBsYXN0IG9yIG9ubHkgZW5hYmxlZCBvbmUgYW5kIGl0IG5lZWRzIHRvIHN3aXRjaCB0bworICAgICAgICAgICAgLy8gbmV4dCBJTUUuCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgZmluYWwgSW5wdXRNZXRob2RTdWJ0eXBlIG5leHRTdWJ0eXBlID0gZW5hYmxlZFN1YnR5cGVzLmdldChuZXh0SW5kZXgpOworICAgICAgICBzZXRJbnB1dE1ldGhvZEFuZFN1YnR5cGUodG9rZW4sIG5leHRTdWJ0eXBlKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgcHJpdmF0ZSBib29sZWFuIHN3aXRjaFRvTmV4dElucHV0TWV0aG9kQW5kU3VidHlwZShmaW5hbCBJQmluZGVyIHRva2VuKSB7CisgICAgICAgIGZpbmFsIElucHV0TWV0aG9kTWFuYWdlciBpbW0gPSBtSW1tV3JhcHBlci5tSW1tOworICAgICAgICBmaW5hbCBMaXN0PElucHV0TWV0aG9kSW5mbz4gZW5hYmxlZEltaXMgPSBpbW0uZ2V0RW5hYmxlZElucHV0TWV0aG9kTGlzdCgpOworICAgICAgICBmaW5hbCBpbnQgY3VycmVudEluZGV4ID0gZ2V0SW1pSW5kZXhJbkxpc3QobUlucHV0TWV0aG9kSW5mb09mVGhpc0ltZSwgZW5hYmxlZEltaXMpOworICAgICAgICBpZiAoY3VycmVudEluZGV4ID09IElOREVYX05PVF9GT1VORCkgeworICAgICAgICAgICAgTG9nLncoVEFHLCAiQ2FuJ3QgZmluZCBjdXJyZW50IElNRSBpbiBlbmFibGVkIElNRXM6IElNRSBwYWNrYWdlPSIKKyAgICAgICAgICAgICAgICAgICAgKyBtSW5wdXRNZXRob2RJbmZvT2ZUaGlzSW1lLmdldFBhY2thZ2VOYW1lKCkpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIGZpbmFsIElucHV0TWV0aG9kSW5mbyBuZXh0SW1pID0gZ2V0TmV4dE5vbkF1eGlsaWFyeUltZShjdXJyZW50SW5kZXgsIGVuYWJsZWRJbWlzKTsKKyAgICAgICAgZmluYWwgTGlzdDxJbnB1dE1ldGhvZFN1YnR5cGU+IGVuYWJsZWRTdWJ0eXBlcyA9IGltbS5nZXRFbmFibGVkSW5wdXRNZXRob2RTdWJ0eXBlTGlzdCgKKyAgICAgICAgICAgICAgICBuZXh0SW1pLCB0cnVlIC8qIGFsbG93c0ltcGxpY2l0bHlTZWxlY3RlZFN1YnR5cGVzICovKTsKKyAgICAgICAgaWYgKGVuYWJsZWRTdWJ0eXBlcy5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIC8vIFRoZSBuZXh0IElNRSBoYXMgbm8gc3VidHlwZS4KKyAgICAgICAgICAgIGltbS5zZXRJbnB1dE1ldGhvZCh0b2tlbiwgbmV4dEltaS5nZXRJZCgpKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIGZpbmFsIElucHV0TWV0aG9kU3VidHlwZSBmaXJzdFN1YnR5cGUgPSBlbmFibGVkU3VidHlwZXMuZ2V0KDApOworICAgICAgICBpbW0uc2V0SW5wdXRNZXRob2RBbmRTdWJ0eXBlKHRva2VuLCBuZXh0SW1pLmdldElkKCksIGZpcnN0U3VidHlwZSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIGludCBnZXRJbWlJbmRleEluTGlzdChmaW5hbCBJbnB1dE1ldGhvZEluZm8gaW5wdXRNZXRob2RJbmZvLAorICAgICAgICAgICAgZmluYWwgTGlzdDxJbnB1dE1ldGhvZEluZm8+IGltaUxpc3QpIHsKKyAgICAgICAgZmluYWwgaW50IGNvdW50ID0gaW1pTGlzdC5zaXplKCk7CisgICAgICAgIGZvciAoaW50IGluZGV4ID0gMDsgaW5kZXggPCBjb3VudDsgaW5kZXgrKykgeworICAgICAgICAgICAgZmluYWwgSW5wdXRNZXRob2RJbmZvIGltaSA9IGltaUxpc3QuZ2V0KGluZGV4KTsKKyAgICAgICAgICAgIGlmIChpbWkuZXF1YWxzKGlucHV0TWV0aG9kSW5mbykpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gaW5kZXg7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIElOREVYX05PVF9GT1VORDsKKyAgICB9CisKKyAgICAvLyBUaGlzIG1ldGhvZCBtaW1pY3Mge0BsaW5rIElucHV0TWV0aG9kTWFuYWdlciNzd2l0Y2hUb05leHRJbnB1dE1ldGhvZChJQmluZGVyLGJvb2xlYW4pfS4KKyAgICBwcml2YXRlIHN0YXRpYyBJbnB1dE1ldGhvZEluZm8gZ2V0TmV4dE5vbkF1eGlsaWFyeUltZShmaW5hbCBpbnQgY3VycmVudEluZGV4LAorICAgICAgICAgICAgZmluYWwgTGlzdDxJbnB1dE1ldGhvZEluZm8+IGltaUxpc3QpIHsKKyAgICAgICAgZmluYWwgaW50IGNvdW50ID0gaW1pTGlzdC5zaXplKCk7CisgICAgICAgIGZvciAoaW50IGkgPSAxOyBpIDwgY291bnQ7IGkrKykgeworICAgICAgICAgICAgZmluYWwgaW50IG5leHRJbmRleCA9IChjdXJyZW50SW5kZXggKyBpKSAlIGNvdW50OworICAgICAgICAgICAgZmluYWwgSW5wdXRNZXRob2RJbmZvIG5leHRJbWkgPSBpbWlMaXN0LmdldChuZXh0SW5kZXgpOworICAgICAgICAgICAgaWYgKCFpc0F1eGlsaWFyeUltZShuZXh0SW1pKSkgeworICAgICAgICAgICAgICAgIHJldHVybiBuZXh0SW1pOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiBpbWlMaXN0LmdldChjdXJyZW50SW5kZXgpOworICAgIH0KKworICAgIC8vIENvcGllZCBmcm9tIHtAbGluayBJbnB1dE1ldGhvZEluZm99LiBTZWUgaG93IGF1eGlsaWFyeSBvZiBJTUUgaXMgZGV0ZXJtaW5lZC4KKyAgICBwcml2YXRlIHN0YXRpYyBib29sZWFuIGlzQXV4aWxpYXJ5SW1lKGZpbmFsIElucHV0TWV0aG9kSW5mbyBpbWkpIHsKKyAgICAgICAgZmluYWwgaW50IGNvdW50ID0gaW1pLmdldFN1YnR5cGVDb3VudCgpOworICAgICAgICBpZiAoY291bnQgPT0gMCkgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIGZvciAoaW50IGluZGV4ID0gMDsgaW5kZXggPCBjb3VudDsgaW5kZXgrKykgeworICAgICAgICAgICAgZmluYWwgSW5wdXRNZXRob2RTdWJ0eXBlIHN1YnR5cGUgPSBpbWkuZ2V0U3VidHlwZUF0KGluZGV4KTsKKyAgICAgICAgICAgIGlmICghc3VidHlwZS5pc0F1eGlsaWFyeSgpKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIApAQCAtMTM2LDI0ICsyMjgsMzUgQEAKIAogICAgIHByaXZhdGUgc3RhdGljIGJvb2xlYW4gY2hlY2tJZlN1YnR5cGVCZWxvbmdzVG9MaXN0KGZpbmFsIElucHV0TWV0aG9kU3VidHlwZSBzdWJ0eXBlLAogICAgICAgICAgICAgZmluYWwgTGlzdDxJbnB1dE1ldGhvZFN1YnR5cGU+IHN1YnR5cGVzKSB7Ci0gICAgICAgIGZvciAoZmluYWwgSW5wdXRNZXRob2RTdWJ0eXBlIGltcyA6IHN1YnR5cGVzKSB7CisgICAgICAgIHJldHVybiBnZXRTdWJ0eXBlSW5kZXhJbkxpc3Qoc3VidHlwZSwgc3VidHlwZXMpICE9IElOREVYX05PVF9GT1VORDsKKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyBpbnQgZ2V0U3VidHlwZUluZGV4SW5MaXN0KGZpbmFsIElucHV0TWV0aG9kU3VidHlwZSBzdWJ0eXBlLAorICAgICAgICAgICAgZmluYWwgTGlzdDxJbnB1dE1ldGhvZFN1YnR5cGU+IHN1YnR5cGVzKSB7CisgICAgICAgIGZpbmFsIGludCBjb3VudCA9IHN1YnR5cGVzLnNpemUoKTsKKyAgICAgICAgZm9yIChpbnQgaW5kZXggPSAwOyBpbmRleCA8IGNvdW50OyBpbmRleCsrKSB7CisgICAgICAgICAgICBmaW5hbCBJbnB1dE1ldGhvZFN1YnR5cGUgaW1zID0gc3VidHlwZXMuZ2V0KGluZGV4KTsKICAgICAgICAgICAgIGlmIChpbXMuZXF1YWxzKHN1YnR5cGUpKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgcmV0dXJuIGluZGV4OwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIElOREVYX05PVF9GT1VORDsKICAgICB9CiAKICAgICBwdWJsaWMgYm9vbGVhbiBjaGVja0lmU3VidHlwZUJlbG9uZ3NUb1RoaXNJbWUoZmluYWwgSW5wdXRNZXRob2RTdWJ0eXBlIHN1YnR5cGUpIHsKLSAgICAgICAgZmluYWwgSW5wdXRNZXRob2RJbmZvIG15SW1pID0gbUlucHV0TWV0aG9kSW5mb09mVGhpc0ltZTsKLSAgICAgICAgZmluYWwgaW50IGNvdW50ID0gbXlJbWkuZ2V0U3VidHlwZUNvdW50KCk7Ci0gICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY291bnQ7IGkrKykgewotICAgICAgICAgICAgZmluYWwgSW5wdXRNZXRob2RTdWJ0eXBlIGltcyA9IG15SW1pLmdldFN1YnR5cGVBdChpKTsKKyAgICAgICAgcmV0dXJuIGdldFN1YnR5cGVJbmRleEluSW1lKHN1YnR5cGUsIG1JbnB1dE1ldGhvZEluZm9PZlRoaXNJbWUpICE9IElOREVYX05PVF9GT1VORDsKKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyBpbnQgZ2V0U3VidHlwZUluZGV4SW5JbWUoZmluYWwgSW5wdXRNZXRob2RTdWJ0eXBlIHN1YnR5cGUsCisgICAgICAgICAgICBmaW5hbCBJbnB1dE1ldGhvZEluZm8gaW1pKSB7CisgICAgICAgIGZpbmFsIGludCBjb3VudCA9IGltaS5nZXRTdWJ0eXBlQ291bnQoKTsKKyAgICAgICAgZm9yIChpbnQgaW5kZXggPSAwOyBpbmRleCA8IGNvdW50OyBpbmRleCsrKSB7CisgICAgICAgICAgICBmaW5hbCBJbnB1dE1ldGhvZFN1YnR5cGUgaW1zID0gaW1pLmdldFN1YnR5cGVBdChpbmRleCk7CiAgICAgICAgICAgICBpZiAoaW1zLmVxdWFscyhzdWJ0eXBlKSkgewotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIHJldHVybiBpbmRleDsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBJTkRFWF9OT1RfRk9VTkQ7CiAgICAgfQogCiAgICAgcHVibGljIElucHV0TWV0aG9kU3VidHlwZSBnZXRDdXJyZW50SW5wdXRNZXRob2RTdWJ0eXBlKApkaWZmIC0tZ2l0IGEvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvbGF0aW4vU2V0dGluZ3MuamF2YSBiL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2xhdGluL1NldHRpbmdzLmphdmEKaW5kZXggNzJlMDg3MC4uOWZlZmI1OCAxMDA2NDQKLS0tIGEvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvbGF0aW4vU2V0dGluZ3MuamF2YQorKysgYi9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9sYXRpbi9TZXR0aW5ncy5qYXZhCkBAIC0zNiw2ICszNiw3IEBACiAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgUFJFRl9QT1BVUF9PTiA9ICJwb3B1cF9vbiI7CiAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgUFJFRl9WT0lDRV9NT0RFID0gInZvaWNlX21vZGUiOwogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFBSRUZfQ09SUkVDVElPTl9TRVRUSU5HUyA9ICJjb3JyZWN0aW9uX3NldHRpbmdzIjsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBQUkVGX0VESVRfUEVSU09OQUxfRElDVElPTkFSWSA9ICJlZGl0X3BlcnNvbmFsX2RpY3Rpb25hcnkiOwogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFBSRUZfQ09ORklHVVJFX0RJQ1RJT05BUklFU19LRVkgPSAiY29uZmlndXJlX2RpY3Rpb25hcmllc19rZXkiOwogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFBSRUZfQVVUT19DT1JSRUNUSU9OX1RIUkVTSE9MRCA9ICJhdXRvX2NvcnJlY3Rpb25fdGhyZXNob2xkIjsKICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBQUkVGX1NIT1dfU1VHR0VTVElPTlNfU0VUVElORyA9ICJzaG93X3N1Z2dlc3Rpb25zX3NldHRpbmciOwpAQCAtNDYsNiArNDcsOCBAQAogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFBSRUZfS0VZX1VTRV9DT05UQUNUU19ESUNUID0gInByZWZfa2V5X3VzZV9jb250YWN0c19kaWN0IjsKICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBQUkVGX0tFWV9VU0VfRE9VQkxFX1NQQUNFX1BFUklPRCA9CiAgICAgICAgICAgICAicHJlZl9rZXlfdXNlX2RvdWJsZV9zcGFjZV9wZXJpb2QiOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFBSRUZfQkxPQ0tfUE9URU5USUFMTFlfT0ZGRU5TSVZFID0KKyAgICAgICAgICAgICJwcmVmX2tleV9ibG9ja19wb3RlbnRpYWxseV9vZmZlbnNpdmUiOwogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFBSRUZfU0hPV19MQU5HVUFHRV9TV0lUQ0hfS0VZID0KICAgICAgICAgICAgICJwcmVmX3Nob3dfbGFuZ3VhZ2Vfc3dpdGNoX2tleSI7CiAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgUFJFRl9JTkNMVURFX09USEVSX0lNRVNfSU5fTEFOR1VBR0VfU1dJVENIX0xJU1QgPQpAQCAtNzgsNiArODEsNyBAQAogICAgICAgICAgICAgInByZWZfc3VwcHJlc3NfbGFuZ3VhZ2Vfc3dpdGNoX2tleSI7CiAKICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBQUkVGX1NFTkRfRkVFREJBQ0sgPSAic2VuZF9mZWVkYmFjayI7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgUFJFRl9BQk9VVF9LRVlCT0FSRCA9ICJhYm91dF9rZXlib2FyZCI7CiAKICAgICBwcml2YXRlIFJlc291cmNlcyBtUmVzOwogICAgIHByaXZhdGUgU2hhcmVkUHJlZmVyZW5jZXMgbVByZWZzOwpAQCAtMTQyLDYgKzE0NiwxMCBAQAogICAgICAgICByZXR1cm4gbUN1cnJlbnRMb2NhbGU7CiAgICAgfQogCisgICAgcHVibGljIGJvb2xlYW4gZ2V0QmxvY2tQb3RlbnRpYWxseU9mZmVuc2l2ZSgpIHsKKyAgICAgICAgcmV0dXJuIG1TZXR0aW5nc1ZhbHVlcy5tQmxvY2tQb3RlbnRpYWxseU9mZmVuc2l2ZTsKKyAgICB9CisKICAgICAvLyBBY2Nlc3NlZCBmcm9tIHRoZSBzZXR0aW5ncyBpbnRlcmZhY2UsIGhlbmNlIHB1YmxpYwogICAgIHB1YmxpYyBzdGF0aWMgYm9vbGVhbiByZWFkS2V5cHJlc3NTb3VuZEVuYWJsZWQoZmluYWwgU2hhcmVkUHJlZmVyZW5jZXMgcHJlZnMsCiAgICAgICAgICAgICBmaW5hbCBSZXNvdXJjZXMgcmVzKSB7CkBAIC0xNjMsNiArMTcxLDEyIEBACiAgICAgICAgIHJldHVybiAhY3VycmVudEF1dG9Db3JyZWN0aW9uU2V0dGluZy5lcXVhbHMoYXV0b0NvcnJlY3Rpb25PZmYpOwogICAgIH0KIAorICAgIHB1YmxpYyBzdGF0aWMgYm9vbGVhbiByZWFkQmxvY2tQb3RlbnRpYWxseU9mZmVuc2l2ZShmaW5hbCBTaGFyZWRQcmVmZXJlbmNlcyBwcmVmcywKKyAgICAgICAgICAgIGZpbmFsIFJlc291cmNlcyByZXMpIHsKKyAgICAgICAgcmV0dXJuIHByZWZzLmdldEJvb2xlYW4oU2V0dGluZ3MuUFJFRl9CTE9DS19QT1RFTlRJQUxMWV9PRkZFTlNJVkUsCisgICAgICAgICAgICAgICAgcmVzLmdldEJvb2xlYW4oUi5ib29sLmNvbmZpZ19ibG9ja19wb3RlbnRpYWxseV9vZmZlbnNpdmUpKTsKKyAgICB9CisKICAgICBwdWJsaWMgc3RhdGljIGJvb2xlYW4gcmVhZEZyb21CdWlsZENvbmZpZ0lmR2VzdHVyZUlucHV0RW5hYmxlZChmaW5hbCBSZXNvdXJjZXMgcmVzKSB7CiAgICAgICAgIHJldHVybiByZXMuZ2V0Qm9vbGVhbihSLmJvb2wuY29uZmlnX2dlc3R1cmVfaW5wdXRfZW5hYmxlZF9ieV9idWlsZF9jb25maWcpOwogICAgIH0KZGlmZiAtLWdpdCBhL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2xhdGluL1NldHRpbmdzRnJhZ21lbnQuamF2YSBiL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2xhdGluL1NldHRpbmdzRnJhZ21lbnQuamF2YQppbmRleCBhOTZjOTk3Li44MzVlZjdiIDEwMDY0NAotLS0gYS9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9sYXRpbi9TZXR0aW5nc0ZyYWdtZW50LmphdmEKKysrIGIvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvbGF0aW4vU2V0dGluZ3NGcmFnbWVudC5qYXZhCkBAIC0xNiwxMCArMTYsMTMgQEAKIAogcGFja2FnZSBjb20uYW5kcm9pZC5pbnB1dG1ldGhvZC5sYXRpbjsKIAoraW1wb3J0IGFuZHJvaWQuYXBwLkFjdGl2aXR5OwogaW1wb3J0IGFuZHJvaWQuYXBwLmJhY2t1cC5CYWNrdXBNYW5hZ2VyOwogaW1wb3J0IGFuZHJvaWQuY29udGVudC5Db250ZXh0OwogaW1wb3J0IGFuZHJvaWQuY29udGVudC5JbnRlbnQ7CiBpbXBvcnQgYW5kcm9pZC5jb250ZW50LlNoYXJlZFByZWZlcmVuY2VzOworaW1wb3J0IGFuZHJvaWQuY29udGVudC5wbS5QYWNrYWdlTWFuYWdlcjsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQucG0uUmVzb2x2ZUluZm87CiBpbXBvcnQgYW5kcm9pZC5jb250ZW50LnJlcy5SZXNvdXJjZXM7CiBpbXBvcnQgYW5kcm9pZC5tZWRpYS5BdWRpb01hbmFnZXI7CiBpbXBvcnQgYW5kcm9pZC5vcy5CdW5kbGU7CkBAIC0zMSwxMyArMzQsMTkgQEAKIGltcG9ydCBhbmRyb2lkLnByZWZlcmVuY2UuUHJlZmVyZW5jZVNjcmVlbjsKIGltcG9ydCBhbmRyb2lkLnZpZXcuaW5wdXRtZXRob2QuSW5wdXRNZXRob2RTdWJ0eXBlOwogCitpbXBvcnQgamF2YS51dGlsLlRyZWVTZXQ7CisKIGltcG9ydCBjb20uYW5kcm9pZC5pbnB1dG1ldGhvZC5kaWN0aW9uYXJ5cGFjay5EaWN0aW9uYXJ5U2V0dGluZ3NBY3Rpdml0eTsKIGltcG9ydCBjb20uYW5kcm9pZC5pbnB1dG1ldGhvZC5sYXRpbi5kZWZpbmUuUHJvZHVjdGlvbkZsYWc7CiBpbXBvcnQgY29tLmFuZHJvaWQuaW5wdXRtZXRob2QubGF0aW4uc2V0dXAuTGF1bmNoZXJJY29uVmlzaWJpbGl0eU1hbmFnZXI7CitpbXBvcnQgY29tLmFuZHJvaWQuaW5wdXRtZXRob2QubGF0aW4udXNlcmRpY3Rpb25hcnkuVXNlckRpY3Rpb25hcnlMaXN0OworaW1wb3J0IGNvbS5hbmRyb2lkLmlucHV0bWV0aG9kLmxhdGluLnVzZXJkaWN0aW9uYXJ5LlVzZXJEaWN0aW9uYXJ5U2V0dGluZ3M7CiBpbXBvcnQgY29tLmFuZHJvaWQuaW5wdXRtZXRob2Rjb21tb24uSW5wdXRNZXRob2RTZXR0aW5nc0ZyYWdtZW50OwogCiBwdWJsaWMgZmluYWwgY2xhc3MgU2V0dGluZ3NGcmFnbWVudCBleHRlbmRzIElucHV0TWV0aG9kU2V0dGluZ3NGcmFnbWVudAogICAgICAgICBpbXBsZW1lbnRzIFNoYXJlZFByZWZlcmVuY2VzLk9uU2hhcmVkUHJlZmVyZW5jZUNoYW5nZUxpc3RlbmVyIHsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBib29sZWFuIERCR19VU0VfSU5URVJOQUxfVVNFUl9ESUNUSU9OQVJZX1NFVFRJTkdTID0gZmFsc2U7CisKICAgICBwcml2YXRlIExpc3RQcmVmZXJlbmNlIG1Wb2ljZVByZWZlcmVuY2U7CiAgICAgcHJpdmF0ZSBMaXN0UHJlZmVyZW5jZSBtU2hvd0NvcnJlY3Rpb25TdWdnZXN0aW9uc1ByZWZlcmVuY2U7CiAgICAgcHJpdmF0ZSBMaXN0UHJlZmVyZW5jZSBtQXV0b0NvcnJlY3Rpb25UaHJlc2hvbGRQcmVmZXJlbmNlOwpAQCAtNzcsMTAgKzg2LDEzIEBACiAgICAgICAgIGZpbmFsIFJlc291cmNlcyByZXMgPSBnZXRSZXNvdXJjZXMoKTsKICAgICAgICAgZmluYWwgQ29udGV4dCBjb250ZXh0ID0gZ2V0QWN0aXZpdHkoKTsKIAotICAgICAgICAvLyBXaGVuIHdlIGFyZSBjYWxsZWQgZnJvbSB0aGUgU2V0dGluZ3MgYXBwbGljYXRpb24gYnV0IHdlIGFyZSBub3QgYWxyZWFkeSBydW5uaW5nLCB0aGUKLSAgICAgICAgLy8ge0BsaW5rIFN1YnR5cGVMb2NhbGV9IGNsYXNzIG1heSBub3QgaGF2ZSBiZWVuIGluaXRpYWxpemVkLiBJdCBpcyBzYWZlIHRvIGNhbGwKLSAgICAgICAgLy8ge0BsaW5rIFN1YnR5cGVMb2NhbGUjaW5pdChDb250ZXh0KX0gbXVsdGlwbGUgdGltZXMuCisgICAgICAgIC8vIFdoZW4gd2UgYXJlIGNhbGxlZCBmcm9tIHRoZSBTZXR0aW5ncyBhcHBsaWNhdGlvbiBidXQgd2UgYXJlIG5vdCBhbHJlYWR5IHJ1bm5pbmcsIHNvbWUKKyAgICAgICAgLy8gc2luZ2xldG9uIGFuZCB1dGlsaXR5IGNsYXNzZXMgbWF5IG5vdCBoYXZlIGJlZW4gaW5pdGlhbGl6ZWQuICBXZSBoYXZlIHRvIGNhbGwKKyAgICAgICAgLy8gaW5pdGlhbGl6YXRpb24gbWV0aG9kIG9mIHRoZXNlIGNsYXNzZXMgaGVyZS4gU2VlIHtAbGluayBMYXRpbklNRSNvbkNyZWF0ZSgpfS4KKyAgICAgICAgU3VidHlwZVN3aXRjaGVyLmluaXQoY29udGV4dCk7CiAgICAgICAgIFN1YnR5cGVMb2NhbGUuaW5pdChjb250ZXh0KTsKKyAgICAgICAgQXVkaW9BbmRIYXB0aWNGZWVkYmFja01hbmFnZXIuaW5pdChjb250ZXh0KTsKKwogICAgICAgICBtVm9pY2VQcmVmZXJlbmNlID0gKExpc3RQcmVmZXJlbmNlKSBmaW5kUHJlZmVyZW5jZShTZXR0aW5ncy5QUkVGX1ZPSUNFX01PREUpOwogICAgICAgICBtU2hvd0NvcnJlY3Rpb25TdWdnZXN0aW9uc1ByZWZlcmVuY2UgPQogICAgICAgICAgICAgICAgIChMaXN0UHJlZmVyZW5jZSkgZmluZFByZWZlcmVuY2UoU2V0dGluZ3MuUFJFRl9TSE9XX1NVR0dFU1RJT05TX1NFVFRJTkcpOwpAQCAtMTEwLDYgKzEyMiw3IEBACiAgICAgICAgIH0KIAogICAgICAgICBmaW5hbCBQcmVmZXJlbmNlIGZlZWRiYWNrU2V0dGluZ3MgPSBmaW5kUHJlZmVyZW5jZShTZXR0aW5ncy5QUkVGX1NFTkRfRkVFREJBQ0spOworICAgICAgICBmaW5hbCBQcmVmZXJlbmNlIGFib3V0U2V0dGluZ3MgPSBmaW5kUHJlZmVyZW5jZShTZXR0aW5ncy5QUkVGX0FCT1VUX0tFWUJPQVJEKTsKICAgICAgICAgaWYgKGZlZWRiYWNrU2V0dGluZ3MgIT0gbnVsbCkgewogICAgICAgICAgICAgaWYgKEZlZWRiYWNrVXRpbHMuaXNGZWVkYmFja0Zvcm1TdXBwb3J0ZWQoKSkgewogICAgICAgICAgICAgICAgIGZlZWRiYWNrU2V0dGluZ3Muc2V0T25QcmVmZXJlbmNlQ2xpY2tMaXN0ZW5lcihuZXcgT25QcmVmZXJlbmNlQ2xpY2tMaXN0ZW5lcigpIHsKQEAgLTExOSw4ICsxMzIsMTEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgYWJvdXRTZXR0aW5ncy5zZXRUaXRsZShGZWVkYmFja1V0aWxzLmdldEFib3V0S2V5Ym9hcmRUaXRsZVJlc0lkKCkpOworICAgICAgICAgICAgICAgIGFib3V0U2V0dGluZ3Muc2V0SW50ZW50KEZlZWRiYWNrVXRpbHMuZ2V0QWJvdXRLZXlib2FyZEludGVudChnZXRBY3Rpdml0eSgpKSk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIG1pc2NTZXR0aW5ncy5yZW1vdmVQcmVmZXJlbmNlKGZlZWRiYWNrU2V0dGluZ3MpOworICAgICAgICAgICAgICAgIG1pc2NTZXR0aW5ncy5yZW1vdmVQcmVmZXJlbmNlKGFib3V0U2V0dGluZ3MpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKQEAgLTE4MCw2ICsxOTYsMTUgQEAKICAgICAgICAgICAgIHRleHRDb3JyZWN0aW9uR3JvdXAucmVtb3ZlUHJlZmVyZW5jZShkaWN0aW9uYXJ5TGluayk7CiAgICAgICAgIH0KIAorICAgICAgICBmaW5hbCBQcmVmZXJlbmNlIGVkaXRQZXJzb25hbERpY3Rpb25hcnkgPQorICAgICAgICAgICAgICAgIGZpbmRQcmVmZXJlbmNlKFNldHRpbmdzLlBSRUZfRURJVF9QRVJTT05BTF9ESUNUSU9OQVJZKTsKKyAgICAgICAgZmluYWwgSW50ZW50IGVkaXRQZXJzb25hbERpY3Rpb25hcnlJbnRlbnQgPSBlZGl0UGVyc29uYWxEaWN0aW9uYXJ5LmdldEludGVudCgpOworICAgICAgICBmaW5hbCBSZXNvbHZlSW5mbyByaSA9IGNvbnRleHQuZ2V0UGFja2FnZU1hbmFnZXIoKS5yZXNvbHZlQWN0aXZpdHkoCisgICAgICAgICAgICAgICAgZWRpdFBlcnNvbmFsRGljdGlvbmFyeUludGVudCwgUGFja2FnZU1hbmFnZXIuTUFUQ0hfREVGQVVMVF9PTkxZKTsKKyAgICAgICAgaWYgKERCR19VU0VfSU5URVJOQUxfVVNFUl9ESUNUSU9OQVJZX1NFVFRJTkdTIHx8IHJpID09IG51bGwpIHsKKyAgICAgICAgICAgIHVwZGF0ZVVzZXJEaWN0aW9uYXJ5UHJlZmVyZW5jZShlZGl0UGVyc29uYWxEaWN0aW9uYXJ5KTsKKyAgICAgICAgfQorCiAgICAgICAgIGlmICghU2V0dGluZ3MucmVhZEZyb21CdWlsZENvbmZpZ0lmR2VzdHVyZUlucHV0RW5hYmxlZChyZXMpKSB7CiAgICAgICAgICAgICByZW1vdmVQcmVmZXJlbmNlKFNldHRpbmdzLlBSRUZfR0VTVFVSRV9TRVRUSU5HUywgZ2V0UHJlZmVyZW5jZVNjcmVlbigpKTsKICAgICAgICAgfQpAQCAtMzg2LDQgKzQxMSwyOCBAQAogICAgICAgICAgICAgfQogICAgICAgICB9KTsKICAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgdXBkYXRlVXNlckRpY3Rpb25hcnlQcmVmZXJlbmNlKFByZWZlcmVuY2UgdXNlckRpY3Rpb25hcnlQcmVmZXJlbmNlKSB7CisgICAgICAgIGZpbmFsIEFjdGl2aXR5IGFjdGl2aXR5ID0gZ2V0QWN0aXZpdHkoKTsKKyAgICAgICAgZmluYWwgVHJlZVNldDxTdHJpbmc+IGxvY2FsZUxpc3QgPSBVc2VyRGljdGlvbmFyeUxpc3QuZ2V0VXNlckRpY3Rpb25hcnlMb2NhbGVzU2V0KGFjdGl2aXR5KTsKKyAgICAgICAgaWYgKG51bGwgPT0gbG9jYWxlTGlzdCkgeworICAgICAgICAgICAgLy8gVGhlIGxvY2FsZSBsaXN0IGlzIG51bGwgaWYgYW5kIG9ubHkgaWYgdGhlIHVzZXIgZGljdGlvbmFyeSBzZXJ2aWNlIGlzCisgICAgICAgICAgICAvLyBub3QgcHJlc2VudCBvciBkaXNhYmxlZC4gSW4gdGhpcyBjYXNlIHdlIG5lZWQgdG8gcmVtb3ZlIHRoZSBwcmVmZXJlbmNlLgorICAgICAgICAgICAgZ2V0UHJlZmVyZW5jZVNjcmVlbigpLnJlbW92ZVByZWZlcmVuY2UodXNlckRpY3Rpb25hcnlQcmVmZXJlbmNlKTsKKyAgICAgICAgfSBlbHNlIGlmIChsb2NhbGVMaXN0LnNpemUoKSA8PSAxKSB7CisgICAgICAgICAgICB1c2VyRGljdGlvbmFyeVByZWZlcmVuY2Uuc2V0RnJhZ21lbnQoVXNlckRpY3Rpb25hcnlTZXR0aW5ncy5jbGFzcy5nZXROYW1lKCkpOworICAgICAgICAgICAgLy8gSWYgdGhlIHNpemUgb2YgbG9jYWxlTGlzdCBpcyAwLCB3ZSBkb24ndCBzZXQgdGhlIGxvY2FsZSBwYXJhbWV0ZXIgaW4gdGhlCisgICAgICAgICAgICAvLyBleHRyYXMuIFRoaXMgd2lsbCBiZSBpbnRlcnByZXRlZCBieSB0aGUgVXNlckRpY3Rpb25hcnlTZXR0aW5ncyBjbGFzcyBhcworICAgICAgICAgICAgLy8gbWVhbmluZyAidGhlIGN1cnJlbnQgbG9jYWxlIi4KKyAgICAgICAgICAgIC8vIE5vdGUgdGhhdCB3aXRoIHRoZSBjdXJyZW50IGNvZGUgZm9yIFVzZXJEaWN0aW9uYXJ5TGlzdCNnZXRVc2VyRGljdGlvbmFyeUxvY2FsZXNTZXQoKQorICAgICAgICAgICAgLy8gdGhlIGxvY2FsZSBsaXN0IGFsd2F5cyBoYXMgYXQgbGVhc3Qgb25lIGVsZW1lbnQsIHNpbmNlIGl0IGFsd2F5cyBpbmNsdWRlcyB0aGUgY3VycmVudAorICAgICAgICAgICAgLy8gbG9jYWxlIGV4cGxpY2l0bHkuIEBzZWUgVXNlckRpY3Rpb25hcnlMaXN0LmdldFVzZXJEaWN0aW9uYXJ5TG9jYWxlc1NldCgpLgorICAgICAgICAgICAgaWYgKGxvY2FsZUxpc3Quc2l6ZSgpID09IDEpIHsKKyAgICAgICAgICAgICAgICBmaW5hbCBTdHJpbmcgbG9jYWxlID0gKFN0cmluZylsb2NhbGVMaXN0LnRvQXJyYXkoKVswXTsKKyAgICAgICAgICAgICAgICB1c2VyRGljdGlvbmFyeVByZWZlcmVuY2UuZ2V0RXh0cmFzKCkucHV0U3RyaW5nKCJsb2NhbGUiLCBsb2NhbGUpOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdXNlckRpY3Rpb25hcnlQcmVmZXJlbmNlLnNldEZyYWdtZW50KFVzZXJEaWN0aW9uYXJ5TGlzdC5jbGFzcy5nZXROYW1lKCkpOworICAgICAgICB9CisgICAgfQogfQpkaWZmIC0tZ2l0IGEvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvbGF0aW4vU2V0dGluZ3NWYWx1ZXMuamF2YSBiL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2xhdGluL1NldHRpbmdzVmFsdWVzLmphdmEKaW5kZXggZjc3YTkyOC4uNjE1YjJkZiAxMDA2NDQKLS0tIGEvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvbGF0aW4vU2V0dGluZ3NWYWx1ZXMuamF2YQorKysgYi9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9sYXRpbi9TZXR0aW5nc1ZhbHVlcy5qYXZhCkBAIC0zNCw2ICszNCw5IEBACiAgKi8KIHB1YmxpYyBmaW5hbCBjbGFzcyBTZXR0aW5nc1ZhbHVlcyB7CiAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFRBRyA9IFNldHRpbmdzVmFsdWVzLmNsYXNzLmdldFNpbXBsZU5hbWUoKTsKKyAgICAvLyAiZmxvYXROZWdhdGl2ZUluZmluaXR5IiBpcyBhIHNwZWNpYWwgbWFya2VyIHN0cmluZyBmb3IgRmxvYXQuTkVHQVRJVkVfSU5GSU5JVEUKKyAgICAvLyBjdXJyZW50bHkgdXNlZCBmb3IgYXV0by1jb3JyZWN0aW9uCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIEZMT0FUX05FR0FUSVZFX0lORklOSVRZX01BUktFUl9TVFJJTkcgPSAiZmxvYXROZWdhdGl2ZUluZmluaXR5IjsKIAogICAgIC8vIEZyb20gcmVzb3VyY2VzOgogICAgIHB1YmxpYyBmaW5hbCBpbnQgbURlbGF5VXBkYXRlT2xkU3VnZ2VzdGlvbnM7CkBAIC01NCw2ICs1Nyw3IEBACiAgICAgcHVibGljIGZpbmFsIGJvb2xlYW4gbVNob3dzTGFuZ3VhZ2VTd2l0Y2hLZXk7CiAgICAgcHVibGljIGZpbmFsIGJvb2xlYW4gbVVzZUNvbnRhY3RzRGljdDsKICAgICBwdWJsaWMgZmluYWwgYm9vbGVhbiBtVXNlRG91YmxlU3BhY2VQZXJpb2Q7CisgICAgcHVibGljIGZpbmFsIGJvb2xlYW4gbUJsb2NrUG90ZW50aWFsbHlPZmZlbnNpdmU7CiAgICAgLy8gVXNlIGJpZ3JhbXMgdG8gcHJlZGljdCB0aGUgbmV4dCB3b3JkIHdoZW4gdGhlcmUgaXMgbm8gaW5wdXQgZm9yIGl0IHlldAogICAgIHB1YmxpYyBmaW5hbCBib29sZWFuIG1CaWdyYW1QcmVkaWN0aW9uRW5hYmxlZDsKICAgICBwdWJsaWMgZmluYWwgYm9vbGVhbiBtR2VzdHVyZUlucHV0RW5hYmxlZDsKQEAgLTEyMyw2ICsxMjcsNyBAQAogICAgICAgICBtU2hvd3NMYW5ndWFnZVN3aXRjaEtleSA9IFNldHRpbmdzLnJlYWRTaG93c0xhbmd1YWdlU3dpdGNoS2V5KHByZWZzKTsKICAgICAgICAgbVVzZUNvbnRhY3RzRGljdCA9IHByZWZzLmdldEJvb2xlYW4oU2V0dGluZ3MuUFJFRl9LRVlfVVNFX0NPTlRBQ1RTX0RJQ1QsIHRydWUpOwogICAgICAgICBtVXNlRG91YmxlU3BhY2VQZXJpb2QgPSBwcmVmcy5nZXRCb29sZWFuKFNldHRpbmdzLlBSRUZfS0VZX1VTRV9ET1VCTEVfU1BBQ0VfUEVSSU9ELCB0cnVlKTsKKyAgICAgICAgbUJsb2NrUG90ZW50aWFsbHlPZmZlbnNpdmUgPSBTZXR0aW5ncy5yZWFkQmxvY2tQb3RlbnRpYWxseU9mZmVuc2l2ZShwcmVmcywgcmVzKTsKICAgICAgICAgbUF1dG9Db3JyZWN0RW5hYmxlZCA9IFNldHRpbmdzLnJlYWRBdXRvQ29ycmVjdEVuYWJsZWQoYXV0b0NvcnJlY3Rpb25UaHJlc2hvbGRSYXdWYWx1ZSwgcmVzKTsKICAgICAgICAgbUJpZ3JhbVByZWRpY3Rpb25FbmFibGVkID0gcmVhZEJpZ3JhbVByZWRpY3Rpb25FbmFibGVkKHByZWZzLCByZXMpOwogCkBAIC0yNjYsOCArMjcxLDEyIEBACiAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICBmaW5hbCBpbnQgYXJyYXlJbmRleCA9IEludGVnZXIudmFsdWVPZihjdXJyZW50QXV0b0NvcnJlY3Rpb25TZXR0aW5nKTsKICAgICAgICAgICAgIGlmIChhcnJheUluZGV4ID49IDAgJiYgYXJyYXlJbmRleCA8IGF1dG9Db3JyZWN0aW9uVGhyZXNob2xkVmFsdWVzLmxlbmd0aCkgewotICAgICAgICAgICAgICAgIGF1dG9Db3JyZWN0aW9uVGhyZXNob2xkID0gRmxvYXQucGFyc2VGbG9hdCgKLSAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9Db3JyZWN0aW9uVGhyZXNob2xkVmFsdWVzW2FycmF5SW5kZXhdKTsKKyAgICAgICAgICAgICAgICBmaW5hbCBTdHJpbmcgdmFsID0gYXV0b0NvcnJlY3Rpb25UaHJlc2hvbGRWYWx1ZXNbYXJyYXlJbmRleF07CisgICAgICAgICAgICAgICAgaWYgKEZMT0FUX05FR0FUSVZFX0lORklOSVRZX01BUktFUl9TVFJJTkcuZXF1YWxzKHZhbCkpIHsKKyAgICAgICAgICAgICAgICAgICAgYXV0b0NvcnJlY3Rpb25UaHJlc2hvbGQgPSBGbG9hdC5ORUdBVElWRV9JTkZJTklUWTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBhdXRvQ29ycmVjdGlvblRocmVzaG9sZCA9IEZsb2F0LnBhcnNlRmxvYXQodmFsKTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gY2F0Y2ggKE51bWJlckZvcm1hdEV4Y2VwdGlvbiBlKSB7CiAgICAgICAgICAgICAvLyBXaGVuZXZlciB0aGUgdGhyZXNob2xkIHNldHRpbmdzIGFyZSBjb3JyZWN0LCBuZXZlciBjb21lIGhlcmUuCkBAIC0yNzUsNyArMjg0LDcgQEAKICAgICAgICAgICAgIExvZy53KFRBRywgIkNhbm5vdCBsb2FkIGF1dG8gY29ycmVjdGlvbiB0aHJlc2hvbGQgc2V0dGluZy4iCiAgICAgICAgICAgICAgICAgICAgICsgIiBjdXJyZW50QXV0b0NvcnJlY3Rpb25TZXR0aW5nOiAiICsgY3VycmVudEF1dG9Db3JyZWN0aW9uU2V0dGluZwogICAgICAgICAgICAgICAgICAgICArICIsIGF1dG9Db3JyZWN0aW9uVGhyZXNob2xkVmFsdWVzOiAiCi0gICAgICAgICAgICAgICAgICAgICsgQXJyYXlzLnRvU3RyaW5nKGF1dG9Db3JyZWN0aW9uVGhyZXNob2xkVmFsdWVzKSk7CisgICAgICAgICAgICAgICAgICAgICsgQXJyYXlzLnRvU3RyaW5nKGF1dG9Db3JyZWN0aW9uVGhyZXNob2xkVmFsdWVzKSwgZSk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIGF1dG9Db3JyZWN0aW9uVGhyZXNob2xkOwogICAgIH0KZGlmZiAtLWdpdCBhL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2xhdGluL1N1YnR5cGVTd2l0Y2hlci5qYXZhIGIvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvbGF0aW4vU3VidHlwZVN3aXRjaGVyLmphdmEKaW5kZXggMmY5ZTM0Zi4uYmVmOGEzYyAxMDA2NDQKLS0tIGEvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvbGF0aW4vU3VidHlwZVN3aXRjaGVyLmphdmEKKysrIGIvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvbGF0aW4vU3VidHlwZVN3aXRjaGVyLmphdmEKQEAgLTgwLDYgKzgwLDcgQEAKIAogICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBpbml0KGZpbmFsIENvbnRleHQgY29udGV4dCkgewogICAgICAgICBTdWJ0eXBlTG9jYWxlLmluaXQoY29udGV4dCk7CisgICAgICAgIFJpY2hJbnB1dE1ldGhvZE1hbmFnZXIuaW5pdChjb250ZXh0KTsKICAgICAgICAgc0luc3RhbmNlLmluaXRpYWxpemUoY29udGV4dCk7CiAgICAgfQogCkBAIC04NywxMCArODgsMTMgQEAKICAgICAgICAgLy8gSW50ZW50aW9uYWwgZW1wdHkgY29uc3RydWN0b3IgZm9yIHNpbmdsZXRvbi4KICAgICB9CiAKLSAgICBwcml2YXRlIHZvaWQgaW5pdGlhbGl6ZShmaW5hbCBDb250ZXh0IHNlcnZpY2UpIHsKLSAgICAgICAgbVJlc291cmNlcyA9IHNlcnZpY2UuZ2V0UmVzb3VyY2VzKCk7CisgICAgcHJpdmF0ZSB2b2lkIGluaXRpYWxpemUoZmluYWwgQ29udGV4dCBjb250ZXh0KSB7CisgICAgICAgIGlmIChtUmVzb3VyY2VzICE9IG51bGwpIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBtUmVzb3VyY2VzID0gY29udGV4dC5nZXRSZXNvdXJjZXMoKTsKICAgICAgICAgbVJpY2hJbW0gPSBSaWNoSW5wdXRNZXRob2RNYW5hZ2VyLmdldEluc3RhbmNlKCk7Ci0gICAgICAgIG1Db25uZWN0aXZpdHlNYW5hZ2VyID0gKENvbm5lY3Rpdml0eU1hbmFnZXIpIHNlcnZpY2UuZ2V0U3lzdGVtU2VydmljZSgKKyAgICAgICAgbUNvbm5lY3Rpdml0eU1hbmFnZXIgPSAoQ29ubmVjdGl2aXR5TWFuYWdlcikgY29udGV4dC5nZXRTeXN0ZW1TZXJ2aWNlKAogICAgICAgICAgICAgICAgIENvbnRleHQuQ09OTkVDVElWSVRZX1NFUlZJQ0UpOwogICAgICAgICBtTm9MYW5ndWFnZVN1YnR5cGUgPSBtUmljaEltbS5maW5kU3VidHlwZUJ5TG9jYWxlQW5kS2V5Ym9hcmRMYXlvdXRTZXQoCiAgICAgICAgICAgICAgICAgU3VidHlwZUxvY2FsZS5OT19MQU5HVUFHRSwgU3VidHlwZUxvY2FsZS5RV0VSVFkpOwpkaWZmIC0tZ2l0IGEvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvbGF0aW4vU3VnZ2VzdC5qYXZhIGIvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvbGF0aW4vU3VnZ2VzdC5qYXZhCmluZGV4IDU5ZDAyMDcuLmRjOWJlZjIgMTAwNjQ0Ci0tLSBhL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2xhdGluL1N1Z2dlc3QuamF2YQorKysgYi9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9sYXRpbi9TdWdnZXN0LmphdmEKQEAgLTE3NCwyMSArMTc0LDIyIEBACiAKICAgICBwdWJsaWMgU3VnZ2VzdGVkV29yZHMgZ2V0U3VnZ2VzdGVkV29yZHMoZmluYWwgV29yZENvbXBvc2VyIHdvcmRDb21wb3NlciwKICAgICAgICAgICAgIGZpbmFsIFN0cmluZyBwcmV2V29yZEZvckJpZ3JhbSwgZmluYWwgUHJveGltaXR5SW5mbyBwcm94aW1pdHlJbmZvLAotICAgICAgICAgICAgZmluYWwgYm9vbGVhbiBpc0NvcnJlY3Rpb25FbmFibGVkLCBmaW5hbCBpbnQgc2Vzc2lvbklkKSB7CisgICAgICAgICAgICBmaW5hbCBib29sZWFuIGJsb2NrT2ZmZW5zaXZlV29yZHMsIGZpbmFsIGJvb2xlYW4gaXNDb3JyZWN0aW9uRW5hYmxlZCwKKyAgICAgICAgICAgIGZpbmFsIGludCBzZXNzaW9uSWQpIHsKICAgICAgICAgTGF0aW5JbWVMb2dnZXIub25TdGFydFN1Z2dlc3Rpb24ocHJldldvcmRGb3JCaWdyYW0pOwogICAgICAgICBpZiAod29yZENvbXBvc2VyLmlzQmF0Y2hNb2RlKCkpIHsKICAgICAgICAgICAgIHJldHVybiBnZXRTdWdnZXN0ZWRXb3Jkc0ZvckJhdGNoSW5wdXQoCi0gICAgICAgICAgICAgICAgICAgIHdvcmRDb21wb3NlciwgcHJldldvcmRGb3JCaWdyYW0sIHByb3hpbWl0eUluZm8sIHNlc3Npb25JZCk7CisgICAgICAgICAgICAgICAgICAgIHdvcmRDb21wb3NlciwgcHJldldvcmRGb3JCaWdyYW0sIHByb3hpbWl0eUluZm8sIGJsb2NrT2ZmZW5zaXZlV29yZHMsIHNlc3Npb25JZCk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICByZXR1cm4gZ2V0U3VnZ2VzdGVkV29yZHNGb3JUeXBpbmdJbnB1dCh3b3JkQ29tcG9zZXIsIHByZXZXb3JkRm9yQmlncmFtLCBwcm94aW1pdHlJbmZvLAotICAgICAgICAgICAgICAgICAgICBpc0NvcnJlY3Rpb25FbmFibGVkKTsKKyAgICAgICAgICAgICAgICAgICAgYmxvY2tPZmZlbnNpdmVXb3JkcywgaXNDb3JyZWN0aW9uRW5hYmxlZCk7CiAgICAgICAgIH0KICAgICB9CiAKICAgICAvLyBSZXRyaWV2ZXMgc3VnZ2VzdGlvbnMgZm9yIHRoZSB0eXBpbmcgaW5wdXQuCiAgICAgcHJpdmF0ZSBTdWdnZXN0ZWRXb3JkcyBnZXRTdWdnZXN0ZWRXb3Jkc0ZvclR5cGluZ0lucHV0KGZpbmFsIFdvcmRDb21wb3NlciB3b3JkQ29tcG9zZXIsCiAgICAgICAgICAgICBmaW5hbCBTdHJpbmcgcHJldldvcmRGb3JCaWdyYW0sIGZpbmFsIFByb3hpbWl0eUluZm8gcHJveGltaXR5SW5mbywKLSAgICAgICAgICAgIGZpbmFsIGJvb2xlYW4gaXNDb3JyZWN0aW9uRW5hYmxlZCkgeworICAgICAgICAgICAgZmluYWwgYm9vbGVhbiBibG9ja09mZmVuc2l2ZVdvcmRzLCBmaW5hbCBib29sZWFuIGlzQ29ycmVjdGlvbkVuYWJsZWQpIHsKICAgICAgICAgZmluYWwgaW50IHRyYWlsaW5nU2luZ2xlUXVvdGVzQ291bnQgPSB3b3JkQ29tcG9zZXIudHJhaWxpbmdTaW5nbGVRdW90ZXNDb3VudCgpOwogICAgICAgICBmaW5hbCBCb3VuZGVkVHJlZVNldCBzdWdnZXN0aW9uc1NldCA9IG5ldyBCb3VuZGVkVHJlZVNldChzU3VnZ2VzdGVkV29yZEluZm9Db21wYXJhdG9yLAogICAgICAgICAgICAgICAgIE1BWF9TVUdHRVNUSU9OUyk7CkBAIC0yMTIsNyArMjEzLDcgQEAKICAgICAgICAgZm9yIChmaW5hbCBTdHJpbmcga2V5IDogbURpY3Rpb25hcmllcy5rZXlTZXQoKSkgewogICAgICAgICAgICAgZmluYWwgRGljdGlvbmFyeSBkaWN0aW9uYXJ5ID0gbURpY3Rpb25hcmllcy5nZXQoa2V5KTsKICAgICAgICAgICAgIHN1Z2dlc3Rpb25zU2V0LmFkZEFsbChkaWN0aW9uYXJ5LmdldFN1Z2dlc3Rpb25zKAotICAgICAgICAgICAgICAgICAgICB3b3JkQ29tcG9zZXJGb3JMb29rdXAsIHByZXZXb3JkRm9yQmlncmFtLCBwcm94aW1pdHlJbmZvKSk7CisgICAgICAgICAgICAgICAgICAgIHdvcmRDb21wb3NlckZvckxvb2t1cCwgcHJldldvcmRGb3JCaWdyYW0sIHByb3hpbWl0eUluZm8sIGJsb2NrT2ZmZW5zaXZlV29yZHMpKTsKICAgICAgICAgfQogCiAgICAgICAgIGZpbmFsIFN0cmluZyB3aGl0ZWxpc3RlZFdvcmQ7CkBAIC0zMDEsNyArMzAyLDcgQEAKICAgICAvLyBSZXRyaWV2ZXMgc3VnZ2VzdGlvbnMgZm9yIHRoZSBiYXRjaCBpbnB1dC4KICAgICBwcml2YXRlIFN1Z2dlc3RlZFdvcmRzIGdldFN1Z2dlc3RlZFdvcmRzRm9yQmF0Y2hJbnB1dChmaW5hbCBXb3JkQ29tcG9zZXIgd29yZENvbXBvc2VyLAogICAgICAgICAgICAgZmluYWwgU3RyaW5nIHByZXZXb3JkRm9yQmlncmFtLCBmaW5hbCBQcm94aW1pdHlJbmZvIHByb3hpbWl0eUluZm8sCi0gICAgICAgICAgICBmaW5hbCBpbnQgc2Vzc2lvbklkKSB7CisgICAgICAgICAgICBmaW5hbCBib29sZWFuIGJsb2NrT2ZmZW5zaXZlV29yZHMsIGZpbmFsIGludCBzZXNzaW9uSWQpIHsKICAgICAgICAgZmluYWwgQm91bmRlZFRyZWVTZXQgc3VnZ2VzdGlvbnNTZXQgPSBuZXcgQm91bmRlZFRyZWVTZXQoc1N1Z2dlc3RlZFdvcmRJbmZvQ29tcGFyYXRvciwKICAgICAgICAgICAgICAgICBNQVhfU1VHR0VTVElPTlMpOwogCkBAIC0zMTQsOCArMzE1LDggQEAKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGZpbmFsIERpY3Rpb25hcnkgZGljdGlvbmFyeSA9IG1EaWN0aW9uYXJpZXMuZ2V0KGtleSk7Ci0gICAgICAgICAgICBzdWdnZXN0aW9uc1NldC5hZGRBbGwoZGljdGlvbmFyeS5nZXRTdWdnZXN0aW9uc1dpdGhTZXNzaW9uSWQoCi0gICAgICAgICAgICAgICAgICAgIHdvcmRDb21wb3NlciwgcHJldldvcmRGb3JCaWdyYW0sIHByb3hpbWl0eUluZm8sIHNlc3Npb25JZCkpOworICAgICAgICAgICAgc3VnZ2VzdGlvbnNTZXQuYWRkQWxsKGRpY3Rpb25hcnkuZ2V0U3VnZ2VzdGlvbnNXaXRoU2Vzc2lvbklkKHdvcmRDb21wb3NlciwKKyAgICAgICAgICAgICAgICAgICAgcHJldldvcmRGb3JCaWdyYW0sIHByb3hpbWl0eUluZm8sIGJsb2NrT2ZmZW5zaXZlV29yZHMsIHNlc3Npb25JZCkpOwogICAgICAgICB9CiAKICAgICAgICAgZm9yIChTdWdnZXN0ZWRXb3JkSW5mbyB3b3JkSW5mbyA6IHN1Z2dlc3Rpb25zU2V0KSB7CmRpZmYgLS1naXQgYS9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9sYXRpbi9TdWdnZXN0ZWRXb3Jkcy5qYXZhIGIvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvbGF0aW4vU3VnZ2VzdGVkV29yZHMuamF2YQppbmRleCA2MTZlMTkxLi5kZmRkYjBmIDEwMDY0NAotLS0gYS9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9sYXRpbi9TdWdnZXN0ZWRXb3Jkcy5qYXZhCisrKyBiL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2xhdGluL1N1Z2dlc3RlZFdvcmRzLmphdmEKQEAgLTEyMiw2ICsxMjIsNyBAQAogCiAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBjbGFzcyBTdWdnZXN0ZWRXb3JkSW5mbyB7CiAgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IE1BWF9TQ09SRSA9IEludGVnZXIuTUFYX1ZBTFVFOworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBLSU5EX01BU0tfS0lORCA9IDB4RkY7IC8vIE1hc2sgdG8gZ2V0IG9ubHkgdGhlIGtpbmQKICAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgS0lORF9UWVBFRCA9IDA7IC8vIFdoYXQgdXNlciB0eXBlZAogICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBLSU5EX0NPUlJFQ1RJT04gPSAxOyAvLyBTaW1wbGUgY29ycmVjdGlvbi9zdWdnZXN0aW9uCiAgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEtJTkRfQ09NUExFVElPTiA9IDI7IC8vIENvbXBsZXRpb24gKHN1Z2dlc3Rpb24gd2l0aCBhcHBlbmRlZCBjaGFycykKQEAgLTEzMiw2ICsxMzMsMTEgQEAKICAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgS0lORF9TSE9SVENVVCA9IDc7IC8vIEEgc2hvcnRjdXQKICAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgS0lORF9QUkVESUNUSU9OID0gODsgLy8gQSBwcmVkaWN0aW9uICg9PSBhIHN1Z2dlc3Rpb24gd2l0aCBubyBpbnB1dCkKICAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgS0lORF9SRVNVTUVEID0gOTsgLy8gQSByZXN1bWVkIHN1Z2dlc3Rpb24gKGNvbWVzIGZyb20gYSBzcGFuKQorCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEtJTkRfTUFTS19GTEFHUyA9IDB4RkZGRkZGMDA7IC8vIE1hc2sgdG8gZ2V0IHRoZSBmbGFncworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBLSU5EX0ZMQUdfUE9TU0lCTFlfT0ZGRU5TSVZFID0gMHg4MDAwMDAwMDsKKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgS0lORF9GTEFHX0VYQUNUX01BVENIID0gMHg0MDAwMDAwMDsKKwogICAgICAgICBwdWJsaWMgZmluYWwgU3RyaW5nIG1Xb3JkOwogICAgICAgICBwdWJsaWMgZmluYWwgaW50IG1TY29yZTsKICAgICAgICAgcHVibGljIGZpbmFsIGludCBtS2luZDsgLy8gb25lIG9mIHRoZSBLSU5EXyogY29uc3RhbnRzIGFib3ZlCmRpZmYgLS1naXQgYS9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9sYXRpbi9TeW5jaHJvbm91c2x5TG9hZGVkQ29udGFjdHNCaW5hcnlEaWN0aW9uYXJ5LmphdmEgYi9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9sYXRpbi9TeW5jaHJvbm91c2x5TG9hZGVkQ29udGFjdHNCaW5hcnlEaWN0aW9uYXJ5LmphdmEKaW5kZXggZWM0ZGMxNC4uOTJmOTZjMCAxMDA2NDQKLS0tIGEvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvbGF0aW4vU3luY2hyb25vdXNseUxvYWRlZENvbnRhY3RzQmluYXJ5RGljdGlvbmFyeS5qYXZhCisrKyBiL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2xhdGluL1N5bmNocm9ub3VzbHlMb2FkZWRDb250YWN0c0JpbmFyeURpY3Rpb25hcnkuamF2YQpAQCAtMzMsOSArMzMsMTAgQEAKIAogICAgIEBPdmVycmlkZQogICAgIHB1YmxpYyBzeW5jaHJvbml6ZWQgQXJyYXlMaXN0PFN1Z2dlc3RlZFdvcmRJbmZvPiBnZXRTdWdnZXN0aW9ucyhmaW5hbCBXb3JkQ29tcG9zZXIgY29kZXMsCi0gICAgICAgICAgICBmaW5hbCBTdHJpbmcgcHJldldvcmRGb3JCaWdyYW1zLCBmaW5hbCBQcm94aW1pdHlJbmZvIHByb3hpbWl0eUluZm8pIHsKKyAgICAgICAgICAgIGZpbmFsIFN0cmluZyBwcmV2V29yZEZvckJpZ3JhbXMsIGZpbmFsIFByb3hpbWl0eUluZm8gcHJveGltaXR5SW5mbywKKyAgICAgICAgICAgIGZpbmFsIGJvb2xlYW4gYmxvY2tPZmZlbnNpdmVXb3JkcykgewogICAgICAgICBzeW5jUmVsb2FkRGljdGlvbmFyeUlmUmVxdWlyZWQoKTsKLSAgICAgICAgcmV0dXJuIHN1cGVyLmdldFN1Z2dlc3Rpb25zKGNvZGVzLCBwcmV2V29yZEZvckJpZ3JhbXMsIHByb3hpbWl0eUluZm8pOworICAgICAgICByZXR1cm4gc3VwZXIuZ2V0U3VnZ2VzdGlvbnMoY29kZXMsIHByZXZXb3JkRm9yQmlncmFtcywgcHJveGltaXR5SW5mbywgYmxvY2tPZmZlbnNpdmVXb3Jkcyk7CiAgICAgfQogCiAgICAgQE92ZXJyaWRlCmRpZmYgLS1naXQgYS9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9sYXRpbi9TeW5jaHJvbm91c2x5TG9hZGVkVXNlckJpbmFyeURpY3Rpb25hcnkuamF2YSBiL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2xhdGluL1N5bmNocm9ub3VzbHlMb2FkZWRVc2VyQmluYXJ5RGljdGlvbmFyeS5qYXZhCmluZGV4IDRiZGFmMjAuLjMzZmU4OTYgMTAwNjQ0Ci0tLSBhL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2xhdGluL1N5bmNocm9ub3VzbHlMb2FkZWRVc2VyQmluYXJ5RGljdGlvbmFyeS5qYXZhCisrKyBiL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2xhdGluL1N5bmNocm9ub3VzbHlMb2FkZWRVc2VyQmluYXJ5RGljdGlvbmFyeS5qYXZhCkBAIC0zNiw5ICszNiwxMCBAQAogCiAgICAgQE92ZXJyaWRlCiAgICAgcHVibGljIHN5bmNocm9uaXplZCBBcnJheUxpc3Q8U3VnZ2VzdGVkV29yZEluZm8+IGdldFN1Z2dlc3Rpb25zKGZpbmFsIFdvcmRDb21wb3NlciBjb2RlcywKLSAgICAgICAgICAgIGZpbmFsIFN0cmluZyBwcmV2V29yZEZvckJpZ3JhbXMsIGZpbmFsIFByb3hpbWl0eUluZm8gcHJveGltaXR5SW5mbykgeworICAgICAgICAgICAgZmluYWwgU3RyaW5nIHByZXZXb3JkRm9yQmlncmFtcywgZmluYWwgUHJveGltaXR5SW5mbyBwcm94aW1pdHlJbmZvLAorICAgICAgICAgICAgZmluYWwgYm9vbGVhbiBibG9ja09mZmVuc2l2ZVdvcmRzKSB7CiAgICAgICAgIHN5bmNSZWxvYWREaWN0aW9uYXJ5SWZSZXF1aXJlZCgpOwotICAgICAgICByZXR1cm4gc3VwZXIuZ2V0U3VnZ2VzdGlvbnMoY29kZXMsIHByZXZXb3JkRm9yQmlncmFtcywgcHJveGltaXR5SW5mbyk7CisgICAgICAgIHJldHVybiBzdXBlci5nZXRTdWdnZXN0aW9ucyhjb2RlcywgcHJldldvcmRGb3JCaWdyYW1zLCBwcm94aW1pdHlJbmZvLCBibG9ja09mZmVuc2l2ZVdvcmRzKTsKICAgICB9CiAKICAgICBAT3ZlcnJpZGUKZGlmZiAtLWdpdCBhL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2xhdGluL1V0aWxzLmphdmEgYi9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9sYXRpbi9VdGlscy5qYXZhCmluZGV4IGFmZjVkMTcuLjBmOTZjNTQgMTAwNjQ0Ci0tLSBhL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2xhdGluL1V0aWxzLmphdmEKKysrIGIvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvbGF0aW4vVXRpbHMuamF2YQpAQCAtMjEsNiArMjEsNyBAQAogaW1wb3J0IGFuZHJvaWQuY29udGVudC5Db250ZXh0OwogaW1wb3J0IGFuZHJvaWQuY29udGVudC5JbnRlbnQ7CiBpbXBvcnQgYW5kcm9pZC5jb250ZW50LnBtLkFjdGl2aXR5SW5mbzsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQucG0uUGFja2FnZUluZm87CiBpbXBvcnQgYW5kcm9pZC5jb250ZW50LnBtLlBhY2thZ2VNYW5hZ2VyOwogaW1wb3J0IGFuZHJvaWQuY29udGVudC5wbS5QYWNrYWdlTWFuYWdlci5OYW1lTm90Rm91bmRFeGNlcHRpb247CiBpbXBvcnQgYW5kcm9pZC5pbnB1dG1ldGhvZHNlcnZpY2UuSW5wdXRNZXRob2RTZXJ2aWNlOwpAQCAtNDczLDQgKzQ3NCwxOCBAQAogICAgICAgICB9CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KKworICAgIHB1YmxpYyBzdGF0aWMgU3RyaW5nIGdldFZlcnNpb25OYW1lKENvbnRleHQgY29udGV4dCkgeworICAgICAgICB0cnkgeworICAgICAgICAgICAgaWYgKGNvbnRleHQgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgIHJldHVybiAiIjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGZpbmFsIFN0cmluZyBwYWNrYWdlTmFtZSA9IGNvbnRleHQuZ2V0UGFja2FnZU5hbWUoKTsKKyAgICAgICAgICAgIFBhY2thZ2VJbmZvIGluZm8gPSBjb250ZXh0LmdldFBhY2thZ2VNYW5hZ2VyKCkuZ2V0UGFja2FnZUluZm8ocGFja2FnZU5hbWUsIDApOworICAgICAgICAgICAgcmV0dXJuIGluZm8udmVyc2lvbk5hbWU7CisgICAgICAgIH0gY2F0Y2ggKE5hbWVOb3RGb3VuZEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBMb2cuZShUQUcsICJDb3VsZCBub3QgZmluZCB2ZXJzaW9uIGluZm8uIiwgZSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuICIiOworICAgIH0KIH0KZGlmZiAtLWdpdCBhL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2xhdGluL3NldHVwL1NldHVwQWN0aXZpdHkuamF2YSBiL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2xhdGluL3NldHVwL1NldHVwQWN0aXZpdHkuamF2YQppbmRleCAxNWQwYmFjLi5iZjI0YjExIDEwMDY0NAotLS0gYS9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9sYXRpbi9zZXR1cC9TZXR1cEFjdGl2aXR5LmphdmEKKysrIGIvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvbGF0aW4vc2V0dXAvU2V0dXBBY3Rpdml0eS5qYXZhCkBAIC0xNywxOCArMTcsMjIgQEAKIHBhY2thZ2UgY29tLmFuZHJvaWQuaW5wdXRtZXRob2QubGF0aW4uc2V0dXA7CiAKIGltcG9ydCBhbmRyb2lkLmFwcC5BY3Rpdml0eTsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQuQ29udGVudFJlc29sdmVyOwogaW1wb3J0IGFuZHJvaWQuY29udGVudC5Db250ZXh0OwogaW1wb3J0IGFuZHJvaWQuY29udGVudC5JbnRlbnQ7CiBpbXBvcnQgYW5kcm9pZC5jb250ZW50LnJlcy5SZXNvdXJjZXM7Ci1pbXBvcnQgYW5kcm9pZC5ncmFwaGljcy5Qb3J0ZXJEdWZmOwotaW1wb3J0IGFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGU7CitpbXBvcnQgYW5kcm9pZC5tZWRpYS5NZWRpYVBsYXllcjsKK2ltcG9ydCBhbmRyb2lkLm5ldC5Vcmk7CiBpbXBvcnQgYW5kcm9pZC5vcy5CdW5kbGU7CiBpbXBvcnQgYW5kcm9pZC5vcy5NZXNzYWdlOwogaW1wb3J0IGFuZHJvaWQucHJvdmlkZXIuU2V0dGluZ3M7CitpbXBvcnQgYW5kcm9pZC51dGlsLkxvZzsKIGltcG9ydCBhbmRyb2lkLnZpZXcuVmlldzsKIGltcG9ydCBhbmRyb2lkLnZpZXcuaW5wdXRtZXRob2QuSW5wdXRNZXRob2RJbmZvOwogaW1wb3J0IGFuZHJvaWQudmlldy5pbnB1dG1ldGhvZC5JbnB1dE1ldGhvZE1hbmFnZXI7CitpbXBvcnQgYW5kcm9pZC53aWRnZXQuSW1hZ2VWaWV3OwogaW1wb3J0IGFuZHJvaWQud2lkZ2V0LlRleHRWaWV3OworaW1wb3J0IGFuZHJvaWQud2lkZ2V0LlZpZGVvVmlldzsKIAogaW1wb3J0IGNvbS5hbmRyb2lkLmlucHV0bWV0aG9kLmNvbXBhdC5UZXh0Vmlld0NvbXBhdFV0aWxzOwogaW1wb3J0IGNvbS5hbmRyb2lkLmlucHV0bWV0aG9kLmNvbXBhdC5WaWV3Q29tcGF0VXRpbHM7CkBAIC0zOCwxNiArNDIsMjggQEAKIGltcG9ydCBjb20uYW5kcm9pZC5pbnB1dG1ldGhvZC5sYXRpbi5TZXR0aW5nc0FjdGl2aXR5OwogaW1wb3J0IGNvbS5hbmRyb2lkLmlucHV0bWV0aG9kLmxhdGluLlN0YXRpY0lubmVySGFuZGxlcldyYXBwZXI7CiAKLWltcG9ydCBqYXZhLnV0aWwuSGFzaE1hcDsKK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OwogCi1wdWJsaWMgZmluYWwgY2xhc3MgU2V0dXBBY3Rpdml0eSBleHRlbmRzIEFjdGl2aXR5IHsKLSAgICBwcml2YXRlIFNldHVwU3RlcEluZGljYXRvclZpZXcgbVN0ZXBJbmRpY2F0b3JWaWV3OwotICAgIHByaXZhdGUgZmluYWwgU2V0dXBTdGVwR3JvdXAgbVNldHVwU3RlcHMgPSBuZXcgU2V0dXBTdGVwR3JvdXAoKTsKKy8vIFRPRE86IFVzZSBGcmFnbWVudCB0byBpbXBsZW1lbnQgd2VsY29tZSBzY3JlZW4gYW5kIHNldHVwIHN0ZXBzLgorcHVibGljIGZpbmFsIGNsYXNzIFNldHVwQWN0aXZpdHkgZXh0ZW5kcyBBY3Rpdml0eSBpbXBsZW1lbnRzIFZpZXcuT25DbGlja0xpc3RlbmVyIHsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgVEFHID0gU2V0dXBBY3Rpdml0eS5jbGFzcy5nZXRTaW1wbGVOYW1lKCk7CisKKyAgICBwcml2YXRlIFZpZXcgbVdlbGNvbWVTY3JlZW47CisgICAgcHJpdmF0ZSBWaWV3IG1TZXR1cFNjcmVlbjsKKyAgICBwcml2YXRlIFVyaSBtV2VsY29tZVZpZGVvVXJpOworICAgIHByaXZhdGUgVmlkZW9WaWV3IG1XZWxjb21lVmlkZW9WaWV3OworICAgIHByaXZhdGUgVmlldyBtQWN0aW9uU3RhcnQ7CisgICAgcHJpdmF0ZSBWaWV3IG1BY3Rpb25OZXh0OworICAgIHByaXZhdGUgVGV4dFZpZXcgbVN0ZXAxQnVsbGV0OworICAgIHByaXZhdGUgVGV4dFZpZXcgbUFjdGlvbkZpbmlzaDsKKyAgICBwcml2YXRlIFNldHVwU3RlcEdyb3VwIG1TZXR1cFN0ZXBHcm91cDsKICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgU1RBVEVfU1RFUCA9ICJzdGVwIjsKICAgICBwcml2YXRlIGludCBtU3RlcE51bWJlcjsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgU1RFUF8wID0gMDsKICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgU1RFUF8xID0gMTsKICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgU1RFUF8yID0gMjsKICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgU1RFUF8zID0gMzsKKyAgICBwcml2YXRlIGJvb2xlYW4gbVdhc0xhbmd1YWdlQW5kSW5wdXRTZXR0aW5nc0ludm9rZWQ7CiAKICAgICBwcml2YXRlIGZpbmFsIFNldHRpbmdzUG9vbGluZ0hhbmRsZXIgbUhhbmRsZXIgPSBuZXcgU2V0dGluZ3NQb29saW5nSGFuZGxlcih0aGlzKTsKIApAQCAtMTA5LDE3ICsxMjUsMjYgQEAKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIC8vIFRPRE86IFVzZSBzYW5zLXNlcmlmLXRoaW4gZm9udCBmYW1pbHkgZGVwZW5kaW5nIG9uIHRoZSBzeXN0ZW0gbG9jYWxlIHdoaXRlIGxpc3QgYW5kCi0gICAgICAgIC8vIHRoZSBTREsgdmVyc2lvbi4KLSAgICAgICAgZmluYWwgVGV4dFZpZXcgdGl0bGVWaWV3ID0gKFRleHRWaWV3KWZpbmRWaWV3QnlJZChSLmlkLnNldHVwX3RpdGxlKTsKLSAgICAgICAgZmluYWwgaW50IGFwcE5hbWUgPSBnZXRBcHBsaWNhdGlvbkluZm8oKS5sYWJlbFJlczsKLSAgICAgICAgdGl0bGVWaWV3LnNldFRleHQoZ2V0U3RyaW5nKFIuc3RyaW5nLnNldHVwX3RpdGxlLCBnZXRTdHJpbmcoYXBwTmFtZSkpKTsKKyAgICAgICAgZmluYWwgU3RyaW5nIGFwcGxpY2F0aW9uTmFtZSA9IGdldFJlc291cmNlcygpLmdldFN0cmluZyhnZXRBcHBsaWNhdGlvbkluZm8oKS5sYWJlbFJlcyk7CisgICAgICAgIG1XZWxjb21lU2NyZWVuID0gZmluZFZpZXdCeUlkKFIuaWQuc2V0dXBfd2VsY29tZV9zY3JlZW4pOworICAgICAgICBmaW5hbCBUZXh0VmlldyB3ZWxjb21lVGl0bGUgPSAoVGV4dFZpZXcpZmluZFZpZXdCeUlkKFIuaWQuc2V0dXBfd2VsY29tZV90aXRsZSk7CisgICAgICAgIHdlbGNvbWVUaXRsZS5zZXRUZXh0KGdldFN0cmluZyhSLnN0cmluZy5zZXR1cF93ZWxjb21lX3RpdGxlLCBhcHBsaWNhdGlvbk5hbWUpKTsKIAotICAgICAgICBtU3RlcEluZGljYXRvclZpZXcgPSAoU2V0dXBTdGVwSW5kaWNhdG9yVmlldylmaW5kVmlld0J5SWQoUi5pZC5zZXR1cF9zdGVwX2luZGljYXRvcik7CisgICAgICAgIG1TZXR1cFNjcmVlbiA9IGZpbmRWaWV3QnlJZChSLmlkLnNldHVwX3N0ZXBzX3NjcmVlbik7CisgICAgICAgIGZpbmFsIFRleHRWaWV3IHN0ZXBzVGl0bGUgPSAoVGV4dFZpZXcpZmluZFZpZXdCeUlkKFIuaWQuc2V0dXBfdGl0bGUpOworICAgICAgICBzdGVwc1RpdGxlLnNldFRleHQoZ2V0U3RyaW5nKFIuc3RyaW5nLnNldHVwX3N0ZXBzX3RpdGxlLCBhcHBsaWNhdGlvbk5hbWUpKTsKIAotICAgICAgICBmaW5hbCBTZXR1cFN0ZXAgc3RlcDEgPSBuZXcgU2V0dXBTdGVwKGZpbmRWaWV3QnlJZChSLmlkLnNldHVwX3N0ZXAxKSwKLSAgICAgICAgICAgICAgICBhcHBOYW1lLCBSLnN0cmluZy5zZXR1cF9zdGVwMV90aXRsZSwgUi5zdHJpbmcuc2V0dXBfc3RlcDFfaW5zdHJ1Y3Rpb24sCi0gICAgICAgICAgICAgICAgUi5kcmF3YWJsZS5pY19zZXR0aW5nc19sYW5ndWFnZSwgUi5zdHJpbmcubGFuZ3VhZ2Vfc2V0dGluZ3MpOworICAgICAgICBmaW5hbCBTZXR1cFN0ZXBJbmRpY2F0b3JWaWV3IGluZGljYXRvclZpZXcgPQorICAgICAgICAgICAgICAgIChTZXR1cFN0ZXBJbmRpY2F0b3JWaWV3KWZpbmRWaWV3QnlJZChSLmlkLnNldHVwX3N0ZXBfaW5kaWNhdG9yKTsKKyAgICAgICAgbVNldHVwU3RlcEdyb3VwID0gbmV3IFNldHVwU3RlcEdyb3VwKGluZGljYXRvclZpZXcpOworCisgICAgICAgIG1TdGVwMUJ1bGxldCA9IChUZXh0VmlldylmaW5kVmlld0J5SWQoUi5pZC5zZXR1cF9zdGVwMV9idWxsZXQpOworICAgICAgICBtU3RlcDFCdWxsZXQuc2V0T25DbGlja0xpc3RlbmVyKHRoaXMpOworICAgICAgICBmaW5hbCBTZXR1cFN0ZXAgc3RlcDEgPSBuZXcgU2V0dXBTdGVwKFNURVBfMSwgYXBwbGljYXRpb25OYW1lLAorICAgICAgICAgICAgICAgIG1TdGVwMUJ1bGxldCwgZmluZFZpZXdCeUlkKFIuaWQuc2V0dXBfc3RlcDEpLAorICAgICAgICAgICAgICAgIFIuc3RyaW5nLnNldHVwX3N0ZXAxX3RpdGxlLCBSLnN0cmluZy5zZXR1cF9zdGVwMV9pbnN0cnVjdGlvbiwKKyAgICAgICAgICAgICAgICBSLnN0cmluZy5zZXR1cF9zdGVwMV9maW5pc2hlZF9pbnN0cnVjdGlvbiwgUi5kcmF3YWJsZS5pY19zZXR1cF9zdGVwMSwKKyAgICAgICAgICAgICAgICBSLnN0cmluZy5zZXR1cF9zdGVwMV9hY3Rpb24pOwogICAgICAgICBzdGVwMS5zZXRBY3Rpb24obmV3IFJ1bm5hYmxlKCkgewogICAgICAgICAgICAgQE92ZXJyaWRlCiAgICAgICAgICAgICBwdWJsaWMgdm9pZCBydW4oKSB7CkBAIC0xMjcsMTEgKzE1MiwxMyBAQAogICAgICAgICAgICAgICAgIG1IYW5kbGVyLnN0YXJ0UG9sbGluZ0ltZVNldHRpbmdzKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0pOwotICAgICAgICBtU2V0dXBTdGVwcy5hZGRTdGVwKFNURVBfMSwgc3RlcDEpOworICAgICAgICBtU2V0dXBTdGVwR3JvdXAuYWRkU3RlcChzdGVwMSk7CiAKLSAgICAgICAgZmluYWwgU2V0dXBTdGVwIHN0ZXAyID0gbmV3IFNldHVwU3RlcChmaW5kVmlld0J5SWQoUi5pZC5zZXR1cF9zdGVwMiksCi0gICAgICAgICAgICAgICAgYXBwTmFtZSwgUi5zdHJpbmcuc2V0dXBfc3RlcDJfdGl0bGUsIFIuc3RyaW5nLnNldHVwX3N0ZXAyX2luc3RydWN0aW9uLAotICAgICAgICAgICAgICAgIDAgLyogYWN0aW9uSWNvbiAqLywgUi5zdHJpbmcuc2VsZWN0X2lucHV0X21ldGhvZCk7CisgICAgICAgIGZpbmFsIFNldHVwU3RlcCBzdGVwMiA9IG5ldyBTZXR1cFN0ZXAoU1RFUF8yLCBhcHBsaWNhdGlvbk5hbWUsCisgICAgICAgICAgICAgICAgKFRleHRWaWV3KWZpbmRWaWV3QnlJZChSLmlkLnNldHVwX3N0ZXAyX2J1bGxldCksIGZpbmRWaWV3QnlJZChSLmlkLnNldHVwX3N0ZXAyKSwKKyAgICAgICAgICAgICAgICBSLnN0cmluZy5zZXR1cF9zdGVwMl90aXRsZSwgUi5zdHJpbmcuc2V0dXBfc3RlcDJfaW5zdHJ1Y3Rpb24sCisgICAgICAgICAgICAgICAgMCAvKiBmaW5pc2hlZEluc3RydWN0aW9uICovLCBSLmRyYXdhYmxlLmljX3NldHVwX3N0ZXAyLAorICAgICAgICAgICAgICAgIFIuc3RyaW5nLnNldHVwX3N0ZXAyX2FjdGlvbik7CiAgICAgICAgIHN0ZXAyLnNldEFjdGlvbihuZXcgUnVubmFibGUoKSB7CiAgICAgICAgICAgICBAT3ZlcnJpZGUKICAgICAgICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKQEAgLTE0MCwxOCArMTY3LDg0IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAuc2hvd0lucHV0TWV0aG9kUGlja2VyKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0pOwotICAgICAgICBtU2V0dXBTdGVwcy5hZGRTdGVwKFNURVBfMiwgc3RlcDIpOworICAgICAgICBtU2V0dXBTdGVwR3JvdXAuYWRkU3RlcChzdGVwMik7CiAKLSAgICAgICAgZmluYWwgU2V0dXBTdGVwIHN0ZXAzID0gbmV3IFNldHVwU3RlcChmaW5kVmlld0J5SWQoUi5pZC5zZXR1cF9zdGVwMyksCi0gICAgICAgICAgICAgICAgYXBwTmFtZSwgUi5zdHJpbmcuc2V0dXBfc3RlcDNfdGl0bGUsIDAgLyogaW5zdHJ1Y3Rpb24gKi8sCi0gICAgICAgICAgICAgICAgUi5kcmF3YWJsZS5zeW1fa2V5Ym9hcmRfbGFuZ3VhZ2Vfc3dpdGNoLCBSLnN0cmluZy5zZXR1cF9zdGVwM19pbnN0cnVjdGlvbik7CisgICAgICAgIGZpbmFsIFNldHVwU3RlcCBzdGVwMyA9IG5ldyBTZXR1cFN0ZXAoU1RFUF8zLCBhcHBsaWNhdGlvbk5hbWUsCisgICAgICAgICAgICAgICAgKFRleHRWaWV3KWZpbmRWaWV3QnlJZChSLmlkLnNldHVwX3N0ZXAzX2J1bGxldCksIGZpbmRWaWV3QnlJZChSLmlkLnNldHVwX3N0ZXAzKSwKKyAgICAgICAgICAgICAgICBSLnN0cmluZy5zZXR1cF9zdGVwM190aXRsZSwgUi5zdHJpbmcuc2V0dXBfc3RlcDNfaW5zdHJ1Y3Rpb24sCisgICAgICAgICAgICAgICAgMCAvKiBmaW5pc2hlZEluc3RydWN0aW9uICovLCBSLmRyYXdhYmxlLmljX3NldHVwX3N0ZXAzLAorICAgICAgICAgICAgICAgIFIuc3RyaW5nLnNldHVwX3N0ZXAzX2FjdGlvbik7CiAgICAgICAgIHN0ZXAzLnNldEFjdGlvbihuZXcgUnVubmFibGUoKSB7CiAgICAgICAgICAgICBAT3ZlcnJpZGUKICAgICAgICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKICAgICAgICAgICAgICAgICBpbnZva2VTdWJ0eXBlRW5hYmxlck9mVGhpc0ltZSgpOwogICAgICAgICAgICAgfQogICAgICAgICB9KTsKLSAgICAgICAgbVNldHVwU3RlcHMuYWRkU3RlcChTVEVQXzMsIHN0ZXAzKTsKKyAgICAgICAgbVNldHVwU3RlcEdyb3VwLmFkZFN0ZXAoc3RlcDMpOworCisgICAgICAgIG1XZWxjb21lVmlkZW9VcmkgPSBuZXcgVXJpLkJ1aWxkZXIoKQorICAgICAgICAgICAgICAgIC5zY2hlbWUoQ29udGVudFJlc29sdmVyLlNDSEVNRV9BTkRST0lEX1JFU09VUkNFKQorICAgICAgICAgICAgICAgIC5hdXRob3JpdHkoZ2V0UGFja2FnZU5hbWUoKSkKKyAgICAgICAgICAgICAgICAucGF0aChJbnRlZ2VyLnRvU3RyaW5nKFIucmF3LnNldHVwX3dlbGNvbWVfdmlkZW8pKQorICAgICAgICAgICAgICAgIC5idWlsZCgpOworICAgICAgICBtV2VsY29tZVZpZGVvVmlldyA9IChWaWRlb1ZpZXcpZmluZFZpZXdCeUlkKFIuaWQuc2V0dXBfd2VsY29tZV92aWRlbyk7CisgICAgICAgIG1XZWxjb21lVmlkZW9WaWV3LnNldE9uQ29tcGxldGlvbkxpc3RlbmVyKG5ldyBNZWRpYVBsYXllci5PbkNvbXBsZXRpb25MaXN0ZW5lcigpIHsKKyAgICAgICAgICAgIEBPdmVycmlkZQorICAgICAgICAgICAgcHVibGljIHZvaWQgb25Db21wbGV0aW9uKGZpbmFsIE1lZGlhUGxheWVyIG1wKSB7CisgICAgICAgICAgICAgICAgbXAuc3RhcnQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisgICAgICAgIG1XZWxjb21lVmlkZW9WaWV3LnNldE9uUHJlcGFyZWRMaXN0ZW5lcihuZXcgTWVkaWFQbGF5ZXIuT25QcmVwYXJlZExpc3RlbmVyKCkgeworICAgICAgICAgICAgQE92ZXJyaWRlCisgICAgICAgICAgICBwdWJsaWMgdm9pZCBvblByZXBhcmVkKGZpbmFsIE1lZGlhUGxheWVyIG1wKSB7CisgICAgICAgICAgICAgICAgLy8gTm93IFZpZGVvVmlldyBoYXMgYmVlbiBsYWlkLW91dCBhbmQgcmVhZHkgdG8gcGxheSwgcmVtb3ZlIGJhY2tncm91bmQgb2YgaXQgdG8KKyAgICAgICAgICAgICAgICAvLyByZXZlYWwgdGhlIHZpZGVvLgorICAgICAgICAgICAgICAgIG1XZWxjb21lVmlkZW9WaWV3LnNldEJhY2tncm91bmRSZXNvdXJjZSgwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisgICAgICAgIGZpbmFsIEltYWdlVmlldyB3ZWxjb21lSW1hZ2VWaWV3ID0gKEltYWdlVmlldylmaW5kVmlld0J5SWQoUi5pZC5zZXR1cF93ZWxjb21lX2ltYWdlKTsKKyAgICAgICAgbVdlbGNvbWVWaWRlb1ZpZXcuc2V0T25FcnJvckxpc3RlbmVyKG5ldyBNZWRpYVBsYXllci5PbkVycm9yTGlzdGVuZXIoKSB7CisgICAgICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgICAgIHB1YmxpYyBib29sZWFuIG9uRXJyb3IoZmluYWwgTWVkaWFQbGF5ZXIgbXAsIGZpbmFsIGludCB3aGF0LCBmaW5hbCBpbnQgZXh0cmEpIHsKKyAgICAgICAgICAgICAgICBMb2cuZShUQUcsICJQbGF5aW5nIHdlbGNvbWUgdmlkZW8gY2F1c2VzIGVycm9yOiB3aGF0PSIgKyB3aGF0ICsgIiBleHRyYT0iICsgZXh0cmEpOworICAgICAgICAgICAgICAgIG1XZWxjb21lVmlkZW9WaWV3LnNldFZpc2liaWxpdHkoVmlldy5HT05FKTsKKyAgICAgICAgICAgICAgICB3ZWxjb21lSW1hZ2VWaWV3LnNldEltYWdlUmVzb3VyY2UoUi5yYXcuc2V0dXBfd2VsY29tZV9pbWFnZSk7CisgICAgICAgICAgICAgICAgd2VsY29tZUltYWdlVmlldy5zZXRWaXNpYmlsaXR5KFZpZXcuVklTSUJMRSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0pOworCisgICAgICAgIG1BY3Rpb25TdGFydCA9IGZpbmRWaWV3QnlJZChSLmlkLnNldHVwX3N0YXJ0X2xhYmVsKTsKKyAgICAgICAgbUFjdGlvblN0YXJ0LnNldE9uQ2xpY2tMaXN0ZW5lcih0aGlzKTsKKyAgICAgICAgbUFjdGlvbk5leHQgPSBmaW5kVmlld0J5SWQoUi5pZC5zZXR1cF9uZXh0KTsKKyAgICAgICAgbUFjdGlvbk5leHQuc2V0T25DbGlja0xpc3RlbmVyKHRoaXMpOworICAgICAgICBtQWN0aW9uRmluaXNoID0gKFRleHRWaWV3KWZpbmRWaWV3QnlJZChSLmlkLnNldHVwX2ZpbmlzaCk7CisgICAgICAgIFRleHRWaWV3Q29tcGF0VXRpbHMuc2V0Q29tcG91bmREcmF3YWJsZXNSZWxhdGl2ZVdpdGhJbnRyaW5zaWNCb3VuZHMobUFjdGlvbkZpbmlzaCwKKyAgICAgICAgICAgICAgICBnZXRSZXNvdXJjZXMoKS5nZXREcmF3YWJsZShSLmRyYXdhYmxlLmljX3NldHVwX2ZpbmlzaCksIG51bGwsIG51bGwsIG51bGwpOworICAgICAgICBtQWN0aW9uRmluaXNoLnNldE9uQ2xpY2tMaXN0ZW5lcih0aGlzKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgdm9pZCBvbkNsaWNrKGZpbmFsIFZpZXcgdikgeworICAgICAgICBpZiAodiA9PSBtQWN0aW9uRmluaXNoKSB7CisgICAgICAgICAgICBmaW5pc2goKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBmaW5hbCBpbnQgc3RlcFN0YXRlID0gZGV0ZXJtaW5lU2V0dXBTdGF0ZSgpOworICAgICAgICBmaW5hbCBpbnQgbmV4dFN0ZXA7CisgICAgICAgIGlmICh2ID09IG1BY3Rpb25TdGFydCkgeworICAgICAgICAgICAgbmV4dFN0ZXAgPSBTVEVQXzE7CisgICAgICAgIH0gZWxzZSBpZiAodiA9PSBtQWN0aW9uTmV4dCkgeworICAgICAgICAgICAgbmV4dFN0ZXAgPSBtU3RlcE51bWJlciArIDE7CisgICAgICAgIH0gZWxzZSBpZiAodiA9PSBtU3RlcDFCdWxsZXQgJiYgc3RlcFN0YXRlID09IFNURVBfMikgeworICAgICAgICAgICAgbmV4dFN0ZXAgPSBTVEVQXzE7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBuZXh0U3RlcCA9IG1TdGVwTnVtYmVyOworICAgICAgICB9CisgICAgICAgIGlmIChtU3RlcE51bWJlciAhPSBuZXh0U3RlcCkgeworICAgICAgICAgICAgbVN0ZXBOdW1iZXIgPSBuZXh0U3RlcDsKKyAgICAgICAgICAgIHVwZGF0ZVNldHVwU3RlcFZpZXcoKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIHByaXZhdGUgdm9pZCBpbnZva2VTZXR1cFdpemFyZE9mVGhpc0ltZSgpIHsKQEAgLTE3NSw2ICsyNjgsNyBAQAogICAgICAgICBpbnRlbnQuc2V0QWN0aW9uKFNldHRpbmdzLkFDVElPTl9JTlBVVF9NRVRIT0RfU0VUVElOR1MpOwogICAgICAgICBpbnRlbnQuYWRkQ2F0ZWdvcnkoSW50ZW50LkNBVEVHT1JZX0RFRkFVTFQpOwogICAgICAgICBzdGFydEFjdGl2aXR5KGludGVudCk7CisgICAgICAgIG1XYXNMYW5ndWFnZUFuZElucHV0U2V0dGluZ3NJbnZva2VkID0gdHJ1ZTsKICAgICB9CiAKICAgICBwcml2YXRlIHZvaWQgaW52b2tlU3VidHlwZUVuYWJsZXJPZlRoaXNJbWUoKSB7CkBAIC0yMjIsNyArMzE2LDcgQEAKICAgICAgICAgcmV0dXJuIG15SW1pLmdldElkKCkuZXF1YWxzKGN1cnJlbnRJbWVJZCk7CiAgICAgfQogCi0gICAgcHJpdmF0ZSBpbnQgZGV0ZXJtaW5lU2V0dXBTdGVwTnVtYmVyKCkgeworICAgIHByaXZhdGUgaW50IGRldGVybWluZVNldHVwU3RhdGUoKSB7CiAgICAgICAgIG1IYW5kbGVyLmNhbmNlbFBvbGxpbmdJbWVTZXR0aW5ncygpOwogICAgICAgICBpZiAoIWlzVGhpc0ltZUVuYWJsZWQodGhpcykpIHsKICAgICAgICAgICAgIHJldHVybiBTVEVQXzE7CkBAIC0yMzMsNiArMzI3LDE0IEBACiAgICAgICAgIHJldHVybiBTVEVQXzM7CiAgICAgfQogCisgICAgcHJpdmF0ZSBpbnQgZGV0ZXJtaW5lU2V0dXBTdGVwTnVtYmVyKCkgeworICAgICAgICBmaW5hbCBpbnQgc3RlcFN0YXRlID0gZGV0ZXJtaW5lU2V0dXBTdGF0ZSgpOworICAgICAgICBpZiAoc3RlcFN0YXRlID09IFNURVBfMSkgeworICAgICAgICAgICAgcmV0dXJuIG1XYXNMYW5ndWFnZUFuZElucHV0U2V0dGluZ3NJbnZva2VkID8gU1RFUF8xIDogU1RFUF8wOworICAgICAgICB9CisgICAgICAgIHJldHVybiBzdGVwU3RhdGU7CisgICAgfQorCiAgICAgQE92ZXJyaWRlCiAgICAgcHJvdGVjdGVkIHZvaWQgb25TYXZlSW5zdGFuY2VTdGF0ZShmaW5hbCBCdW5kbGUgb3V0U3RhdGUpIHsKICAgICAgICAgc3VwZXIub25TYXZlSW5zdGFuY2VTdGF0ZShvdXRTdGF0ZSk7CkBAIC0yNjQsNiArMzY2LDIyIEBACiAgICAgfQogCiAgICAgQE92ZXJyaWRlCisgICAgcHVibGljIHZvaWQgb25CYWNrUHJlc3NlZCgpIHsKKyAgICAgICAgaWYgKG1TdGVwTnVtYmVyID09IFNURVBfMSkgeworICAgICAgICAgICAgbVN0ZXBOdW1iZXIgPSBTVEVQXzA7CisgICAgICAgICAgICB1cGRhdGVTZXR1cFN0ZXBWaWV3KCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgc3VwZXIub25CYWNrUHJlc3NlZCgpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHByb3RlY3RlZCB2b2lkIG9uUGF1c2UoKSB7CisgICAgICAgIG1XZWxjb21lVmlkZW9WaWV3LnN0b3BQbGF5YmFjaygpOworICAgICAgICBzdXBlci5vblBhdXNlKCk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCiAgICAgcHVibGljIHZvaWQgb25XaW5kb3dGb2N1c0NoYW5nZWQoZmluYWwgYm9vbGVhbiBoYXNGb2N1cykgewogICAgICAgICBzdXBlci5vbldpbmRvd0ZvY3VzQ2hhbmdlZChoYXNGb2N1cyk7CiAgICAgICAgIGlmICghaGFzRm9jdXMpIHsKQEAgLTI3NCw1NyArMzkyLDY3IEBACiAgICAgfQogCiAgICAgcHJpdmF0ZSB2b2lkIHVwZGF0ZVNldHVwU3RlcFZpZXcoKSB7Ci0gICAgICAgIGZpbmFsIGludCBsYXlvdXREaXJlY3Rpb24gPSBWaWV3Q29tcGF0VXRpbHMuZ2V0TGF5b3V0RGlyZWN0aW9uKG1TdGVwSW5kaWNhdG9yVmlldyk7Ci0gICAgICAgIG1TdGVwSW5kaWNhdG9yVmlldy5zZXRJbmRpY2F0b3JQb3NpdGlvbigKLSAgICAgICAgICAgICAgICBnZXRJbmRpY2F0b3JQb3NpdGlvbihtU3RlcE51bWJlciwgbVNldHVwU3RlcHMuZ2V0VG90YWxTdGVwKCksIGxheW91dERpcmVjdGlvbikpOwotICAgICAgICBtU2V0dXBTdGVwcy5lbmFibGVTdGVwKG1TdGVwTnVtYmVyKTsKLSAgICB9Ci0KLSAgICBwcml2YXRlIHN0YXRpYyBmbG9hdCBnZXRJbmRpY2F0b3JQb3NpdGlvbihmaW5hbCBpbnQgc3RlcCwgZmluYWwgaW50IHRvdGFsU3RlcCwKLSAgICAgICAgICAgIGZpbmFsIGludCBsYXlvdXREaXJlY3Rpb24pIHsKLSAgICAgICAgZmluYWwgZmxvYXQgcG9zID0gKChzdGVwIC0gU1RFUF8xKSAqIDIgKyAxKSAvIChmbG9hdCkodG90YWxTdGVwICogMik7Ci0gICAgICAgIHJldHVybiAobGF5b3V0RGlyZWN0aW9uID09IFZpZXdDb21wYXRVdGlscy5MQVlPVVRfRElSRUNUSU9OX1JUTCkgPyAxLjBmIC0gcG9zIDogcG9zOworICAgICAgICBmaW5hbCBib29sZWFuIHdlbGNvbWVTY3JlZW4gPSAobVN0ZXBOdW1iZXIgPT0gU1RFUF8wKTsKKyAgICAgICAgbVdlbGNvbWVTY3JlZW4uc2V0VmlzaWJpbGl0eSh3ZWxjb21lU2NyZWVuID8gVmlldy5WSVNJQkxFIDogVmlldy5HT05FKTsKKyAgICAgICAgbVNldHVwU2NyZWVuLnNldFZpc2liaWxpdHkod2VsY29tZVNjcmVlbiA/IFZpZXcuR09ORTogVmlldy5WSVNJQkxFKTsKKyAgICAgICAgaWYgKHdlbGNvbWVTY3JlZW4pIHsKKyAgICAgICAgICAgIG1XZWxjb21lVmlkZW9WaWV3LnNldFZpZGVvVVJJKG1XZWxjb21lVmlkZW9VcmkpOworICAgICAgICAgICAgbVdlbGNvbWVWaWRlb1ZpZXcuc3RhcnQoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBtV2VsY29tZVZpZGVvVmlldy5zdG9wUGxheWJhY2soKTsKKyAgICAgICAgZmluYWwgYm9vbGVhbiBpc1N0ZXBBY3Rpb25BbHJlYWR5RG9uZSA9IG1TdGVwTnVtYmVyIDwgZGV0ZXJtaW5lU2V0dXBTdGF0ZSgpOworICAgICAgICBtU2V0dXBTdGVwR3JvdXAuZW5hYmxlU3RlcChtU3RlcE51bWJlciwgaXNTdGVwQWN0aW9uQWxyZWFkeURvbmUpOworICAgICAgICBtQWN0aW9uTmV4dC5zZXRWaXNpYmlsaXR5KGlzU3RlcEFjdGlvbkFscmVhZHlEb25lID8gVmlldy5WSVNJQkxFIDogVmlldy5HT05FKTsKKyAgICAgICAgbUFjdGlvbkZpbmlzaC5zZXRWaXNpYmlsaXR5KChtU3RlcE51bWJlciA9PSBTVEVQXzMpID8gVmlldy5WSVNJQkxFIDogVmlldy5HT05FKTsKICAgICB9CiAKICAgICBzdGF0aWMgZmluYWwgY2xhc3MgU2V0dXBTdGVwIGltcGxlbWVudHMgVmlldy5PbkNsaWNrTGlzdGVuZXIgewotICAgICAgICBwcml2YXRlIGZpbmFsIFZpZXcgbVJvb3RWaWV3OworICAgICAgICBwdWJsaWMgZmluYWwgaW50IG1TdGVwTm87CisgICAgICAgIHByaXZhdGUgZmluYWwgVmlldyBtU3RlcFZpZXc7CisgICAgICAgIHByaXZhdGUgZmluYWwgVGV4dFZpZXcgbUJ1bGxldFZpZXc7CisgICAgICAgIHByaXZhdGUgZmluYWwgaW50IG1BY3RpdmF0ZWRDb2xvcjsKKyAgICAgICAgcHJpdmF0ZSBmaW5hbCBpbnQgbURlYWN0aXZhdGVkQ29sb3I7CisgICAgICAgIHByaXZhdGUgZmluYWwgU3RyaW5nIG1JbnN0cnVjdGlvbjsKKyAgICAgICAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgbUZpbmlzaGVkSW5zdHJ1Y3Rpb247CiAgICAgICAgIHByaXZhdGUgZmluYWwgVGV4dFZpZXcgbUFjdGlvbkxhYmVsOwogICAgICAgICBwcml2YXRlIFJ1bm5hYmxlIG1BY3Rpb247CiAKLSAgICAgICAgcHVibGljIFNldHVwU3RlcChmaW5hbCBWaWV3IHJvb3RWaWV3LCBmaW5hbCBpbnQgYXBwTmFtZSwgZmluYWwgaW50IHRpdGxlLAotICAgICAgICAgICAgICAgIGZpbmFsIGludCBpbnN0cnVjdGlvbiwgZmluYWwgaW50IGFjdGlvbkljb24sIGZpbmFsIGludCBhY3Rpb25MYWJlbCkgewotICAgICAgICAgICAgbVJvb3RWaWV3ID0gcm9vdFZpZXc7Ci0gICAgICAgICAgICBmaW5hbCBSZXNvdXJjZXMgcmVzID0gcm9vdFZpZXcuZ2V0UmVzb3VyY2VzKCk7Ci0gICAgICAgICAgICBmaW5hbCBTdHJpbmcgYXBwbGljYXRpb25OYW1lID0gcmVzLmdldFN0cmluZyhhcHBOYW1lKTsKKyAgICAgICAgcHVibGljIFNldHVwU3RlcChmaW5hbCBpbnQgc3RlcE5vLCBmaW5hbCBTdHJpbmcgYXBwbGljYXRpb25OYW1lLCBmaW5hbCBUZXh0VmlldyBidWxsZXRWaWV3LAorICAgICAgICAgICAgICAgIGZpbmFsIFZpZXcgc3RlcFZpZXcsIGZpbmFsIGludCB0aXRsZSwgZmluYWwgaW50IGluc3RydWN0aW9uLAorICAgICAgICAgICAgICAgIGZpbmFsIGludCBmaW5pc2hlZEluc3RydWN0aW9uLGZpbmFsIGludCBhY3Rpb25JY29uLCBmaW5hbCBpbnQgYWN0aW9uTGFiZWwpIHsKKyAgICAgICAgICAgIG1TdGVwTm8gPSBzdGVwTm87CisgICAgICAgICAgICBtU3RlcFZpZXcgPSBzdGVwVmlldzsKKyAgICAgICAgICAgIG1CdWxsZXRWaWV3ID0gYnVsbGV0VmlldzsKKyAgICAgICAgICAgIGZpbmFsIFJlc291cmNlcyByZXMgPSBzdGVwVmlldy5nZXRSZXNvdXJjZXMoKTsKKyAgICAgICAgICAgIG1BY3RpdmF0ZWRDb2xvciA9IHJlcy5nZXRDb2xvcihSLmNvbG9yLnNldHVwX3RleHRfYWN0aW9uKTsKKyAgICAgICAgICAgIG1EZWFjdGl2YXRlZENvbG9yID0gcmVzLmdldENvbG9yKFIuY29sb3Iuc2V0dXBfdGV4dF9kYXJrKTsKIAotICAgICAgICAgICAgZmluYWwgVGV4dFZpZXcgdGl0bGVWaWV3ID0gKFRleHRWaWV3KXJvb3RWaWV3LmZpbmRWaWV3QnlJZChSLmlkLnNldHVwX3N0ZXBfdGl0bGUpOworICAgICAgICAgICAgZmluYWwgVGV4dFZpZXcgdGl0bGVWaWV3ID0gKFRleHRWaWV3KW1TdGVwVmlldy5maW5kVmlld0J5SWQoUi5pZC5zZXR1cF9zdGVwX3RpdGxlKTsKICAgICAgICAgICAgIHRpdGxlVmlldy5zZXRUZXh0KHJlcy5nZXRTdHJpbmcodGl0bGUsIGFwcGxpY2F0aW9uTmFtZSkpOworICAgICAgICAgICAgbUluc3RydWN0aW9uID0gKGluc3RydWN0aW9uID09IDApID8gbnVsbAorICAgICAgICAgICAgICAgICAgICA6IHJlcy5nZXRTdHJpbmcoaW5zdHJ1Y3Rpb24sIGFwcGxpY2F0aW9uTmFtZSk7CisgICAgICAgICAgICBtRmluaXNoZWRJbnN0cnVjdGlvbiA9IChmaW5pc2hlZEluc3RydWN0aW9uID09IDApID8gbnVsbAorICAgICAgICAgICAgICAgICAgICA6IHJlcy5nZXRTdHJpbmcoZmluaXNoZWRJbnN0cnVjdGlvbiwgYXBwbGljYXRpb25OYW1lKTsKIAotICAgICAgICAgICAgZmluYWwgVGV4dFZpZXcgaW5zdHJ1Y3Rpb25WaWV3ID0gKFRleHRWaWV3KXJvb3RWaWV3LmZpbmRWaWV3QnlJZCgKLSAgICAgICAgICAgICAgICAgICAgUi5pZC5zZXR1cF9zdGVwX2luc3RydWN0aW9uKTsKLSAgICAgICAgICAgIGlmIChpbnN0cnVjdGlvbiA9PSAwKSB7Ci0gICAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb25WaWV3LnNldFZpc2liaWxpdHkoVmlldy5HT05FKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb25WaWV3LnNldFRleHQocmVzLmdldFN0cmluZyhpbnN0cnVjdGlvbiwgYXBwbGljYXRpb25OYW1lKSk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIG1BY3Rpb25MYWJlbCA9IChUZXh0Vmlldylyb290Vmlldy5maW5kVmlld0J5SWQoUi5pZC5zZXR1cF9zdGVwX2FjdGlvbl9sYWJlbCk7CisgICAgICAgICAgICBtQWN0aW9uTGFiZWwgPSAoVGV4dFZpZXcpbVN0ZXBWaWV3LmZpbmRWaWV3QnlJZChSLmlkLnNldHVwX3N0ZXBfYWN0aW9uX2xhYmVsKTsKICAgICAgICAgICAgIG1BY3Rpb25MYWJlbC5zZXRUZXh0KHJlcy5nZXRTdHJpbmcoYWN0aW9uTGFiZWwpKTsKICAgICAgICAgICAgIGlmIChhY3Rpb25JY29uID09IDApIHsKICAgICAgICAgICAgICAgICBmaW5hbCBpbnQgcGFkZGluZ0VuZCA9IFZpZXdDb21wYXRVdGlscy5nZXRQYWRkaW5nRW5kKG1BY3Rpb25MYWJlbCk7CiAgICAgICAgICAgICAgICAgVmlld0NvbXBhdFV0aWxzLnNldFBhZGRpbmdSZWxhdGl2ZShtQWN0aW9uTGFiZWwsIHBhZGRpbmdFbmQsIDAsIHBhZGRpbmdFbmQsIDApOwogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBmaW5hbCBpbnQgb3ZlcnJpZGVDb2xvciA9IHJlcy5nZXRDb2xvcihSLmNvbG9yLnNldHVwX3RleHRfYWN0aW9uKTsKLSAgICAgICAgICAgICAgICBmaW5hbCBEcmF3YWJsZSBpY29uID0gcmVzLmdldERyYXdhYmxlKGFjdGlvbkljb24pOwotICAgICAgICAgICAgICAgIGljb24uc2V0Q29sb3JGaWx0ZXIob3ZlcnJpZGVDb2xvciwgUG9ydGVyRHVmZi5Nb2RlLk1VTFRJUExZKTsKLSAgICAgICAgICAgICAgICBpY29uLnNldEJvdW5kcygwLCAwLCBpY29uLmdldEludHJpbnNpY1dpZHRoKCksIGljb24uZ2V0SW50cmluc2ljSGVpZ2h0KCkpOwotICAgICAgICAgICAgICAgIFRleHRWaWV3Q29tcGF0VXRpbHMuc2V0Q29tcG91bmREcmF3YWJsZXNSZWxhdGl2ZSgKLSAgICAgICAgICAgICAgICAgICAgICAgIG1BY3Rpb25MYWJlbCwgaWNvbiwgbnVsbCwgbnVsbCwgbnVsbCk7CisgICAgICAgICAgICAgICAgVGV4dFZpZXdDb21wYXRVdGlscy5zZXRDb21wb3VuZERyYXdhYmxlc1JlbGF0aXZlV2l0aEludHJpbnNpY0JvdW5kcygKKyAgICAgICAgICAgICAgICAgICAgICAgIG1BY3Rpb25MYWJlbCwgcmVzLmdldERyYXdhYmxlKGFjdGlvbkljb24pLCBudWxsLCBudWxsLCBudWxsKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIHB1YmxpYyB2b2lkIHNldEVuYWJsZWQoZmluYWwgYm9vbGVhbiBlbmFibGVkKSB7Ci0gICAgICAgICAgICBtUm9vdFZpZXcuc2V0VmlzaWJpbGl0eShlbmFibGVkID8gVmlldy5WSVNJQkxFIDogVmlldy5HT05FKTsKKyAgICAgICAgcHVibGljIHZvaWQgc2V0RW5hYmxlZChmaW5hbCBib29sZWFuIGVuYWJsZWQsIGZpbmFsIGJvb2xlYW4gaXNTdGVwQWN0aW9uQWxyZWFkeURvbmUpIHsKKyAgICAgICAgICAgIG1TdGVwVmlldy5zZXRWaXNpYmlsaXR5KGVuYWJsZWQgPyBWaWV3LlZJU0lCTEUgOiBWaWV3LkdPTkUpOworICAgICAgICAgICAgbUJ1bGxldFZpZXcuc2V0VGV4dENvbG9yKGVuYWJsZWQgPyBtQWN0aXZhdGVkQ29sb3IgOiBtRGVhY3RpdmF0ZWRDb2xvcik7CisgICAgICAgICAgICBmaW5hbCBUZXh0VmlldyBpbnN0cnVjdGlvblZpZXcgPSAoVGV4dFZpZXcpbVN0ZXBWaWV3LmZpbmRWaWV3QnlJZCgKKyAgICAgICAgICAgICAgICAgICAgUi5pZC5zZXR1cF9zdGVwX2luc3RydWN0aW9uKTsKKyAgICAgICAgICAgIGluc3RydWN0aW9uVmlldy5zZXRUZXh0KGlzU3RlcEFjdGlvbkFscmVhZHlEb25lID8gbUZpbmlzaGVkSW5zdHJ1Y3Rpb24gOiBtSW5zdHJ1Y3Rpb24pOworICAgICAgICAgICAgbUFjdGlvbkxhYmVsLnNldFZpc2liaWxpdHkoaXNTdGVwQWN0aW9uQWxyZWFkeURvbmUgPyBWaWV3LkdPTkUgOiBWaWV3LlZJU0lCTEUpOwogICAgICAgICB9CiAKICAgICAgICAgcHVibGljIHZvaWQgc2V0QWN0aW9uKGZpbmFsIFJ1bm5hYmxlIGFjdGlvbikgewpAQCAtMzM0LDI4ICs0NjIsMzAgQEAKIAogICAgICAgICBAT3ZlcnJpZGUKICAgICAgICAgcHVibGljIHZvaWQgb25DbGljayhmaW5hbCBWaWV3IHYpIHsKLSAgICAgICAgICAgIGlmIChtQWN0aW9uICE9IG51bGwpIHsKKyAgICAgICAgICAgIGlmICh2ID09IG1BY3Rpb25MYWJlbCAmJiBtQWN0aW9uICE9IG51bGwpIHsKICAgICAgICAgICAgICAgICBtQWN0aW9uLnJ1bigpOworICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIAogICAgIHN0YXRpYyBmaW5hbCBjbGFzcyBTZXR1cFN0ZXBHcm91cCB7Ci0gICAgICAgIHByaXZhdGUgZmluYWwgSGFzaE1hcDxJbnRlZ2VyLCBTZXR1cFN0ZXA+IG1Hcm91cCA9IENvbGxlY3Rpb25VdGlscy5uZXdIYXNoTWFwKCk7CisgICAgICAgIHByaXZhdGUgZmluYWwgU2V0dXBTdGVwSW5kaWNhdG9yVmlldyBtSW5kaWNhdG9yVmlldzsKKyAgICAgICAgcHJpdmF0ZSBmaW5hbCBBcnJheUxpc3Q8U2V0dXBTdGVwPiBtR3JvdXAgPSBDb2xsZWN0aW9uVXRpbHMubmV3QXJyYXlMaXN0KCk7CiAKLSAgICAgICAgcHVibGljIHZvaWQgYWRkU3RlcChmaW5hbCBpbnQgc3RlcE5vLCBmaW5hbCBTZXR1cFN0ZXAgc3RlcCkgewotICAgICAgICAgICAgbUdyb3VwLnB1dChzdGVwTm8sIHN0ZXApOworICAgICAgICBwdWJsaWMgU2V0dXBTdGVwR3JvdXAoZmluYWwgU2V0dXBTdGVwSW5kaWNhdG9yVmlldyBpbmRpY2F0b3JWaWV3KSB7CisgICAgICAgICAgICBtSW5kaWNhdG9yVmlldyA9IGluZGljYXRvclZpZXc7CiAgICAgICAgIH0KIAotICAgICAgICBwdWJsaWMgdm9pZCBlbmFibGVTdGVwKGZpbmFsIGludCBlbmFibGVTdGVwTm8pIHsKLSAgICAgICAgICAgIGZvciAoZmluYWwgSW50ZWdlciBzdGVwTm8gOiBtR3JvdXAua2V5U2V0KCkpIHsKLSAgICAgICAgICAgICAgICBmaW5hbCBTZXR1cFN0ZXAgc3RlcCA9IG1Hcm91cC5nZXQoc3RlcE5vKTsKLSAgICAgICAgICAgICAgICBzdGVwLnNldEVuYWJsZWQoc3RlcE5vID09IGVuYWJsZVN0ZXBObyk7CisgICAgICAgIHB1YmxpYyB2b2lkIGFkZFN0ZXAoZmluYWwgU2V0dXBTdGVwIHN0ZXApIHsKKyAgICAgICAgICAgIG1Hcm91cC5hZGQoc3RlcCk7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgdm9pZCBlbmFibGVTdGVwKGZpbmFsIGludCBlbmFibGVTdGVwTm8sIGZpbmFsIGJvb2xlYW4gaXNTdGVwQWN0aW9uQWxyZWFkeURvbmUpIHsKKyAgICAgICAgICAgIGZvciAoZmluYWwgU2V0dXBTdGVwIHN0ZXAgOiBtR3JvdXApIHsKKyAgICAgICAgICAgICAgICBzdGVwLnNldEVuYWJsZWQoc3RlcC5tU3RlcE5vID09IGVuYWJsZVN0ZXBObywgaXNTdGVwQWN0aW9uQWxyZWFkeURvbmUpOwogICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgcHVibGljIGludCBnZXRUb3RhbFN0ZXAoKSB7Ci0gICAgICAgICAgICByZXR1cm4gbUdyb3VwLnNpemUoKTsKKyAgICAgICAgICAgIG1JbmRpY2F0b3JWaWV3LnNldEluZGljYXRvclBvc2l0aW9uKGVuYWJsZVN0ZXBObyAtIFNURVBfMSwgbUdyb3VwLnNpemUoKSk7CiAgICAgICAgIH0KICAgICB9CiB9CmRpZmYgLS1naXQgYS9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9sYXRpbi9zZXR1cC9TZXR1cFN0YXJ0SW5kaWNhdG9yVmlldy5qYXZhIGIvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvbGF0aW4vc2V0dXAvU2V0dXBTdGFydEluZGljYXRvclZpZXcuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NzRkZmRkCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvbGF0aW4vc2V0dXAvU2V0dXBTdGFydEluZGljYXRvclZpZXcuamF2YQpAQCAtMCwwICsxLDEyMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKK3BhY2thZ2UgY29tLmFuZHJvaWQuaW5wdXRtZXRob2QubGF0aW4uc2V0dXA7CisKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQuQ29udGV4dDsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQucmVzLkNvbG9yU3RhdGVMaXN0OworaW1wb3J0IGFuZHJvaWQuZ3JhcGhpY3MuQ2FudmFzOworaW1wb3J0IGFuZHJvaWQuZ3JhcGhpY3MuUGFpbnQ7CitpbXBvcnQgYW5kcm9pZC5ncmFwaGljcy5QYXRoOworaW1wb3J0IGFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQ7CitpbXBvcnQgYW5kcm9pZC52aWV3LkxheW91dEluZmxhdGVyOworaW1wb3J0IGFuZHJvaWQudmlldy5WaWV3OworaW1wb3J0IGFuZHJvaWQud2lkZ2V0LkxpbmVhckxheW91dDsKK2ltcG9ydCBhbmRyb2lkLndpZGdldC5UZXh0VmlldzsKKworaW1wb3J0IGNvbS5hbmRyb2lkLmlucHV0bWV0aG9kLmNvbXBhdC5WaWV3Q29tcGF0VXRpbHM7CitpbXBvcnQgY29tLmFuZHJvaWQuaW5wdXRtZXRob2QubGF0aW4uUjsKKworcHVibGljIGZpbmFsIGNsYXNzIFNldHVwU3RhcnRJbmRpY2F0b3JWaWV3IGV4dGVuZHMgTGluZWFyTGF5b3V0IHsKKyAgICBwdWJsaWMgU2V0dXBTdGFydEluZGljYXRvclZpZXcoZmluYWwgQ29udGV4dCBjb250ZXh0LCBmaW5hbCBBdHRyaWJ1dGVTZXQgYXR0cnMpIHsKKyAgICAgICAgc3VwZXIoY29udGV4dCwgYXR0cnMpOworICAgICAgICBzZXRPcmllbnRhdGlvbihIT1JJWk9OVEFMKTsKKyAgICAgICAgTGF5b3V0SW5mbGF0ZXIuZnJvbShjb250ZXh0KS5pbmZsYXRlKFIubGF5b3V0LnNldHVwX3N0YXJ0X2luZGljYXRvcl9sYWJlbCwgdGhpcyk7CisKKyAgICAgICAgZmluYWwgTGFiZWxWaWV3IGxhYmVsVmlldyA9IChMYWJlbFZpZXcpZmluZFZpZXdCeUlkKFIuaWQuc2V0dXBfc3RhcnRfbGFiZWwpOworICAgICAgICBsYWJlbFZpZXcuc2V0SW5kaWNhdG9yVmlldyhmaW5kVmlld0J5SWQoUi5pZC5zZXR1cF9zdGFydF9pbmRpY2F0b3IpKTsKKyAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGNsYXNzIExhYmVsVmlldyBleHRlbmRzIFRleHRWaWV3IHsKKyAgICAgICAgcHJpdmF0ZSBWaWV3IG1JbmRpY2F0b3JWaWV3OworCisgICAgICAgIHB1YmxpYyBMYWJlbFZpZXcoZmluYWwgQ29udGV4dCBjb250ZXh0LCBmaW5hbCBBdHRyaWJ1dGVTZXQgYXR0cnMpIHsKKyAgICAgICAgICAgIHN1cGVyKGNvbnRleHQsIGF0dHJzKTsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyB2b2lkIHNldEluZGljYXRvclZpZXcoZmluYWwgVmlldyBpbmRpY2F0b3JWaWV3KSB7CisgICAgICAgICAgICBtSW5kaWNhdG9yVmlldyA9IGluZGljYXRvclZpZXc7CisgICAgICAgIH0KKworICAgICAgICAvLyBUT0RPOiBPbmNlIHdlIHN0b3Agc3VwcG9ydGluZyBJQ1MsIHVuY29tbWVudCB7QGxpbmsgI3NldFByZXNzZWQoYm9vbGVhbil9IG1ldGhvZCBhbmQKKyAgICAgICAgLy8gcmVtb3ZlIHRoaXMgbWV0aG9kLgorICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHJvdGVjdGVkIHZvaWQgZHJhd2FibGVTdGF0ZUNoYW5nZWQoKSB7CisgICAgICAgICAgICBzdXBlci5kcmF3YWJsZVN0YXRlQ2hhbmdlZCgpOworICAgICAgICAgICAgZm9yIChmaW5hbCBpbnQgc3RhdGUgOiBnZXREcmF3YWJsZVN0YXRlKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoc3RhdGUgPT0gYW5kcm9pZC5SLmF0dHIuc3RhdGVfcHJlc3NlZCkgeworICAgICAgICAgICAgICAgICAgICB1cGRhdGVJbmRpY2F0b3JWaWV3KHRydWUgLyogcHJlc3NlZCAqLyk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICB1cGRhdGVJbmRpY2F0b3JWaWV3KGZhbHNlIC8qIHByZXNzZWQgKi8pOworICAgICAgICB9CisKKyAgICAgICAgLy8gVE9ETzogT25jZSB3ZSBzdG9wIHN1cHBvcnRpbmcgSUNTLCB1bmNvbW1lbnQgdGhpcyBtZXRob2QgYW5kIHJlbW92ZQorICAgICAgICAvLyB7QGxpbmsgI2RyYXdhYmxlU3RhdGVDaGFuZ2VkKCl9IG1ldGhvZC4KKy8vICAgICAgICBAT3ZlcnJpZGUKKy8vICAgICAgICBwdWJsaWMgdm9pZCBzZXRQcmVzc2VkKGZpbmFsIGJvb2xlYW4gcHJlc3NlZCkgeworLy8gICAgICAgICAgICBzdXBlci5zZXRQcmVzc2VkKHByZXNzZWQpOworLy8gICAgICAgICAgICB1cGRhdGVJbmRpY2F0b3JWaWV3KHByZXNzZWQpOworLy8gICAgICAgIH0KKworICAgICAgICBwcml2YXRlIHZvaWQgdXBkYXRlSW5kaWNhdG9yVmlldyhmaW5hbCBib29sZWFuIHByZXNzZWQpIHsKKyAgICAgICAgICAgIGlmIChtSW5kaWNhdG9yVmlldyAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgbUluZGljYXRvclZpZXcuc2V0UHJlc3NlZChwcmVzc2VkKTsKKyAgICAgICAgICAgICAgICBtSW5kaWNhdG9yVmlldy5pbnZhbGlkYXRlKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGNsYXNzIEluZGljYXRvclZpZXcgZXh0ZW5kcyBWaWV3IHsKKyAgICAgICAgcHJpdmF0ZSBmaW5hbCBQYXRoIG1JbmRpY2F0b3JQYXRoID0gbmV3IFBhdGgoKTsKKyAgICAgICAgcHJpdmF0ZSBmaW5hbCBQYWludCBtSW5kaWNhdG9yUGFpbnQgPSBuZXcgUGFpbnQoKTsKKyAgICAgICAgcHJpdmF0ZSBmaW5hbCBDb2xvclN0YXRlTGlzdCBtSW5kaWNhdG9yQ29sb3I7CisKKyAgICAgICAgcHVibGljIEluZGljYXRvclZpZXcoZmluYWwgQ29udGV4dCBjb250ZXh0LCBmaW5hbCBBdHRyaWJ1dGVTZXQgYXR0cnMpIHsKKyAgICAgICAgICAgIHN1cGVyKGNvbnRleHQsIGF0dHJzKTsKKyAgICAgICAgICAgIG1JbmRpY2F0b3JDb2xvciA9IGdldFJlc291cmNlcygpLmdldENvbG9yU3RhdGVMaXN0KAorICAgICAgICAgICAgICAgICAgICBSLmNvbG9yLnNldHVwX3N0ZXBfYWN0aW9uX2JhY2tncm91bmQpOworICAgICAgICAgICAgbUluZGljYXRvclBhaW50LnNldFN0eWxlKFBhaW50LlN0eWxlLkZJTEwpOworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHByb3RlY3RlZCB2b2lkIG9uRHJhdyhmaW5hbCBDYW52YXMgY2FudmFzKSB7CisgICAgICAgICAgICBzdXBlci5vbkRyYXcoY2FudmFzKTsKKyAgICAgICAgICAgIGZpbmFsIGludCBsYXlvdXREaXJlY3Rpb24gPSBWaWV3Q29tcGF0VXRpbHMuZ2V0TGF5b3V0RGlyZWN0aW9uKHRoaXMpOworICAgICAgICAgICAgZmluYWwgaW50IHdpZHRoID0gZ2V0V2lkdGgoKTsKKyAgICAgICAgICAgIGZpbmFsIGludCBoZWlnaHQgPSBnZXRIZWlnaHQoKTsKKyAgICAgICAgICAgIGZpbmFsIGZsb2F0IGhhbGZIZWlnaHQgPSBoZWlnaHQgLyAyLjBmOworICAgICAgICAgICAgZmluYWwgUGF0aCBwYXRoID0gbUluZGljYXRvclBhdGg7CisgICAgICAgICAgICBwYXRoLnJld2luZCgpOworICAgICAgICAgICAgaWYgKGxheW91dERpcmVjdGlvbiA9PSBWaWV3Q29tcGF0VXRpbHMuTEFZT1VUX0RJUkVDVElPTl9SVEwpIHsKKyAgICAgICAgICAgICAgICAvLyBMZWZ0IGFycm93CisgICAgICAgICAgICAgICAgcGF0aC5tb3ZlVG8od2lkdGgsIDAuMGYpOworICAgICAgICAgICAgICAgIHBhdGgubGluZVRvKDAuMGYsIGhhbGZIZWlnaHQpOworICAgICAgICAgICAgICAgIHBhdGgubGluZVRvKHdpZHRoLCBoZWlnaHQpOworICAgICAgICAgICAgfSBlbHNlIHsgLy8gTEFZT1VUX0RJUkVDVElPTl9MVFIKKyAgICAgICAgICAgICAgICAvLyBSaWdodCBhcnJvdworICAgICAgICAgICAgICAgIHBhdGgubW92ZVRvKDAuMGYsIDAuMGYpOworICAgICAgICAgICAgICAgIHBhdGgubGluZVRvKHdpZHRoLCBoYWxmSGVpZ2h0KTsKKyAgICAgICAgICAgICAgICBwYXRoLmxpbmVUbygwLjBmLCBoZWlnaHQpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcGF0aC5jbG9zZSgpOworICAgICAgICAgICAgZmluYWwgaW50W10gc3RhdGVTZXQgPSBnZXREcmF3YWJsZVN0YXRlKCk7CisgICAgICAgICAgICBmaW5hbCBpbnQgY29sb3IgPSBtSW5kaWNhdG9yQ29sb3IuZ2V0Q29sb3JGb3JTdGF0ZShzdGF0ZVNldCwgMCk7CisgICAgICAgICAgICBtSW5kaWNhdG9yUGFpbnQuc2V0Q29sb3IoY29sb3IpOworICAgICAgICAgICAgY2FudmFzLmRyYXdQYXRoKHBhdGgsIG1JbmRpY2F0b3JQYWludCk7CisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9sYXRpbi9zZXR1cC9TZXR1cFN0ZXBJbmRpY2F0b3JWaWV3LmphdmEgYi9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9sYXRpbi9zZXR1cC9TZXR1cFN0ZXBJbmRpY2F0b3JWaWV3LmphdmEKaW5kZXggMDc3YTIxNy4uYzkwOTUwNyAxMDA2NDQKLS0tIGEvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvbGF0aW4vc2V0dXAvU2V0dXBTdGVwSW5kaWNhdG9yVmlldy5qYXZhCisrKyBiL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2xhdGluL3NldHVwL1NldHVwU3RlcEluZGljYXRvclZpZXcuamF2YQpAQCAtMjMsNiArMjMsNyBAQAogaW1wb3J0IGFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQ7CiBpbXBvcnQgYW5kcm9pZC52aWV3LlZpZXc7CiAKK2ltcG9ydCBjb20uYW5kcm9pZC5pbnB1dG1ldGhvZC5jb21wYXQuVmlld0NvbXBhdFV0aWxzOwogaW1wb3J0IGNvbS5hbmRyb2lkLmlucHV0bWV0aG9kLmxhdGluLlI7CiAKIHB1YmxpYyBmaW5hbCBjbGFzcyBTZXR1cFN0ZXBJbmRpY2F0b3JWaWV3IGV4dGVuZHMgVmlldyB7CkBAIC0zNiw4ICszNywxMyBAQAogICAgICAgICBtSW5kaWNhdG9yUGFpbnQuc2V0U3R5bGUoUGFpbnQuU3R5bGUuRklMTCk7CiAgICAgfQogCi0gICAgcHVibGljIHZvaWQgc2V0SW5kaWNhdG9yUG9zaXRpb24oZmluYWwgZmxvYXQgeFJhdGlvKSB7Ci0gICAgICAgIG1YUmF0aW8gPSB4UmF0aW87CisgICAgcHVibGljIHZvaWQgc2V0SW5kaWNhdG9yUG9zaXRpb24oZmluYWwgaW50IHN0ZXBQb3MsIGZpbmFsIGludCB0b3RhbFN0ZXBOdW0pIHsKKyAgICAgICAgZmluYWwgaW50IGxheW91dERpcmVjdGlvbiA9IFZpZXdDb21wYXRVdGlscy5nZXRMYXlvdXREaXJlY3Rpb24odGhpcyk7CisgICAgICAgIC8vIFRoZSBpbmRpY2F0b3IgcG9zaXRpb24gaXMgdGhlIGNlbnRlciBvZiB0aGUgcGFydGl0aW9uIHRoYXQgaXMgZXF1YWxseSBkaXZpZGVkIGludG8KKyAgICAgICAgLy8gdGhlIHRvdGFsIHN0ZXAgbnVtYmVyLgorICAgICAgICBmaW5hbCBmbG9hdCBwYXJ0aW9uV2lkdGggPSAxLjBmIC8gdG90YWxTdGVwTnVtOworICAgICAgICBmaW5hbCBmbG9hdCBwb3MgPSBzdGVwUG9zICogcGFydGlvbldpZHRoICsgcGFydGlvbldpZHRoIC8gMi4wZjsKKyAgICAgICAgbVhSYXRpbyA9IChsYXlvdXREaXJlY3Rpb24gPT0gVmlld0NvbXBhdFV0aWxzLkxBWU9VVF9ESVJFQ1RJT05fUlRMKSA/IDEuMGYgLSBwb3MgOiBwb3M7CiAgICAgICAgIGludmFsaWRhdGUoKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2xhdGluL3NwZWxsY2hlY2svQW5kcm9pZFNwZWxsQ2hlY2tlclNlcnZpY2UuamF2YSBiL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2xhdGluL3NwZWxsY2hlY2svQW5kcm9pZFNwZWxsQ2hlY2tlclNlcnZpY2UuamF2YQppbmRleCAxNjY3MDU5Li5hYTYwNDk2IDEwMDY0NAotLS0gYS9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9sYXRpbi9zcGVsbGNoZWNrL0FuZHJvaWRTcGVsbENoZWNrZXJTZXJ2aWNlLmphdmEKKysrIGIvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvbGF0aW4vc3BlbGxjaGVjay9BbmRyb2lkU3BlbGxDaGVja2VyU2VydmljZS5qYXZhCkBAIC02NCw4ICs2NCw2IEBACiAgICAgICAgICAgICBDb2xsZWN0aW9uVXRpbHMubmV3U3luY2hyb25pemVkVHJlZU1hcCgpOwogICAgIHByaXZhdGUgQ29udGFjdHNCaW5hcnlEaWN0aW9uYXJ5IG1Db250YWN0c0RpY3Rpb25hcnk7CiAKLSAgICAvLyBUaGUgdGhyZXNob2xkIGZvciBhIGNhbmRpZGF0ZSB0byBiZSBvZmZlcmVkIGFzIGEgc3VnZ2VzdGlvbi4KLSAgICBwcml2YXRlIGZsb2F0IG1TdWdnZXN0aW9uVGhyZXNob2xkOwogICAgIC8vIFRoZSB0aHJlc2hvbGQgZm9yIGEgc3VnZ2VzdGlvbiB0byBiZSBjb25zaWRlcmVkICJyZWNvbW1lbmRlZCIuCiAgICAgcHJpdmF0ZSBmbG9hdCBtUmVjb21tZW5kZWRUaHJlc2hvbGQ7CiAgICAgLy8gV2hldGhlciB0byB1c2UgdGhlIGNvbnRhY3RzIGRpY3Rpb25hcnkKQEAgLTExMiw4ICsxMTAsNiBAQAogCiAgICAgQE92ZXJyaWRlIHB1YmxpYyB2b2lkIG9uQ3JlYXRlKCkgewogICAgICAgICBzdXBlci5vbkNyZWF0ZSgpOwotICAgICAgICBtU3VnZ2VzdGlvblRocmVzaG9sZCA9Ci0gICAgICAgICAgICAgICAgRmxvYXQucGFyc2VGbG9hdChnZXRTdHJpbmcoUi5zdHJpbmcuc3BlbGxjaGVja2VyX3N1Z2dlc3Rpb25fdGhyZXNob2xkX3ZhbHVlKSk7CiAgICAgICAgIG1SZWNvbW1lbmRlZFRocmVzaG9sZCA9CiAgICAgICAgICAgICAgICAgRmxvYXQucGFyc2VGbG9hdChnZXRTdHJpbmcoUi5zdHJpbmcuc3BlbGxjaGVja2VyX3JlY29tbWVuZGVkX3RocmVzaG9sZF92YWx1ZSkpOwogICAgICAgICBmaW5hbCBTaGFyZWRQcmVmZXJlbmNlcyBwcmVmcyA9IFByZWZlcmVuY2VNYW5hZ2VyLmdldERlZmF1bHRTaGFyZWRQcmVmZXJlbmNlcyh0aGlzKTsKQEAgLTE5OCw4ICsxOTQsNyBAQAogICAgIH0KIAogICAgIHB1YmxpYyBTdWdnZXN0aW9uc0dhdGhlcmVyIG5ld1N1Z2dlc3Rpb25zR2F0aGVyZXIoZmluYWwgU3RyaW5nIHRleHQsIGludCBtYXhMZW5ndGgpIHsKLSAgICAgICAgcmV0dXJuIG5ldyBTdWdnZXN0aW9uc0dhdGhlcmVyKAotICAgICAgICAgICAgICAgIHRleHQsIG1TdWdnZXN0aW9uVGhyZXNob2xkLCBtUmVjb21tZW5kZWRUaHJlc2hvbGQsIG1heExlbmd0aCk7CisgICAgICAgIHJldHVybiBuZXcgU3VnZ2VzdGlvbnNHYXRoZXJlcih0ZXh0LCBtUmVjb21tZW5kZWRUaHJlc2hvbGQsIG1heExlbmd0aCk7CiAgICAgfQogCiAgICAgLy8gVE9ETzogcmVtb3ZlIHRoaXMgY2xhc3MgYW5kIHJlcGxhY2UgaXQgYnkgc3RvcmFnZSBsb2NhbCB0byB0aGUgc2Vzc2lvbi4KQEAgLTIxNyw3ICsyMTIsNiBAQAogICAgICAgICBwcml2YXRlIGZpbmFsIEFycmF5TGlzdDxTdHJpbmc+IG1TdWdnZXN0aW9uczsKICAgICAgICAgcHJpdmF0ZSBmaW5hbCBpbnRbXSBtU2NvcmVzOwogICAgICAgICBwcml2YXRlIGZpbmFsIFN0cmluZyBtT3JpZ2luYWxUZXh0OwotICAgICAgICBwcml2YXRlIGZpbmFsIGZsb2F0IG1TdWdnZXN0aW9uVGhyZXNob2xkOwogICAgICAgICBwcml2YXRlIGZpbmFsIGZsb2F0IG1SZWNvbW1lbmRlZFRocmVzaG9sZDsKICAgICAgICAgcHJpdmF0ZSBmaW5hbCBpbnQgbU1heExlbmd0aDsKICAgICAgICAgcHJpdmF0ZSBpbnQgbUxlbmd0aCA9IDA7CkBAIC0yMjcsMTAgKzIyMSw5IEBACiAgICAgICAgIHByaXZhdGUgU3RyaW5nIG1CZXN0U3VnZ2VzdGlvbiA9IG51bGw7CiAgICAgICAgIHByaXZhdGUgaW50IG1CZXN0U2NvcmUgPSBJbnRlZ2VyLk1JTl9WQUxVRTsgLy8gQXMgc21hbGwgYXMgcG9zc2libGUKIAotICAgICAgICBTdWdnZXN0aW9uc0dhdGhlcmVyKGZpbmFsIFN0cmluZyBvcmlnaW5hbFRleHQsIGZpbmFsIGZsb2F0IHN1Z2dlc3Rpb25UaHJlc2hvbGQsCi0gICAgICAgICAgICAgICAgZmluYWwgZmxvYXQgcmVjb21tZW5kZWRUaHJlc2hvbGQsIGZpbmFsIGludCBtYXhMZW5ndGgpIHsKKyAgICAgICAgU3VnZ2VzdGlvbnNHYXRoZXJlcihmaW5hbCBTdHJpbmcgb3JpZ2luYWxUZXh0LCBmaW5hbCBmbG9hdCByZWNvbW1lbmRlZFRocmVzaG9sZCwKKyAgICAgICAgICAgICAgICBmaW5hbCBpbnQgbWF4TGVuZ3RoKSB7CiAgICAgICAgICAgICBtT3JpZ2luYWxUZXh0ID0gb3JpZ2luYWxUZXh0OwotICAgICAgICAgICAgbVN1Z2dlc3Rpb25UaHJlc2hvbGQgPSBzdWdnZXN0aW9uVGhyZXNob2xkOwogICAgICAgICAgICAgbVJlY29tbWVuZGVkVGhyZXNob2xkID0gcmVjb21tZW5kZWRUaHJlc2hvbGQ7CiAgICAgICAgICAgICBtTWF4TGVuZ3RoID0gbWF4TGVuZ3RoOwogICAgICAgICAgICAgbVN1Z2dlc3Rpb25zID0gQ29sbGVjdGlvblV0aWxzLm5ld0FycmF5TGlzdChtYXhMZW5ndGggKyAxKTsKZGlmZiAtLWdpdCBhL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2xhdGluL3NwZWxsY2hlY2svQW5kcm9pZFdvcmRMZXZlbFNwZWxsQ2hlY2tlclNlc3Npb24uamF2YSBiL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2xhdGluL3NwZWxsY2hlY2svQW5kcm9pZFdvcmRMZXZlbFNwZWxsQ2hlY2tlclNlc3Npb24uamF2YQppbmRleCBkYTg2NTcyLi5jMDNiNzdkIDEwMDY0NAotLS0gYS9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9sYXRpbi9zcGVsbGNoZWNrL0FuZHJvaWRXb3JkTGV2ZWxTcGVsbENoZWNrZXJTZXNzaW9uLmphdmEKKysrIGIvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvbGF0aW4vc3BlbGxjaGVjay9BbmRyb2lkV29yZExldmVsU3BlbGxDaGVja2VyU2Vzc2lvbi5qYXZhCkBAIC0zMDYsOSArMzA2LDEwIEBACiAgICAgICAgICAgICAgICAgaWYgKCFEaWN0aW9uYXJ5UG9vbC5pc0FWYWxpZERpY3Rpb25hcnkoZGljdEluZm8pKSB7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBBbmRyb2lkU3BlbGxDaGVja2VyU2VydmljZS5nZXROb3RJbkRpY3RFbXB0eVN1Z2dlc3Rpb25zKCk7CiAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIC8vIFRPRE86IG1ha2UgYSBzcGVsbCBjaGVja2VyIG9wdGlvbiB0byBibG9jayBvZmZlbnNpdmUgd29yZHMgb3Igbm90CiAgICAgICAgICAgICAgICAgZmluYWwgQXJyYXlMaXN0PFN1Z2dlc3RlZFdvcmRJbmZvPiBzdWdnZXN0aW9ucyA9CiAgICAgICAgICAgICAgICAgICAgICAgICBkaWN0SW5mby5tRGljdGlvbmFyeS5nZXRTdWdnZXN0aW9ucyhjb21wb3NlciwgcHJldldvcmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpY3RJbmZvLm1Qcm94aW1pdHlJbmZvKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGljdEluZm8ubVByb3hpbWl0eUluZm8sIHRydWUgLyogYmxvY2tPZmZlbnNpdmVXb3JkcyAqLyk7CiAgICAgICAgICAgICAgICAgZm9yIChmaW5hbCBTdWdnZXN0ZWRXb3JkSW5mbyBzdWdnZXN0aW9uIDogc3VnZ2VzdGlvbnMpIHsKICAgICAgICAgICAgICAgICAgICAgZmluYWwgU3RyaW5nIHN1Z2dlc3Rpb25TdHIgPSBzdWdnZXN0aW9uLm1Xb3JkOwogICAgICAgICAgICAgICAgICAgICBzdWdnZXN0aW9uc0dhdGhlcmVyLmFkZFdvcmQoc3VnZ2VzdGlvblN0ci50b0NoYXJBcnJheSgpLCBudWxsLCAwLApkaWZmIC0tZ2l0IGEvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvbGF0aW4vc3BlbGxjaGVjay9EaWN0aW9uYXJ5UG9vbC5qYXZhIGIvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvbGF0aW4vc3BlbGxjaGVjay9EaWN0aW9uYXJ5UG9vbC5qYXZhCmluZGV4IDgxZGQ5MmQuLjI3OTY0YjMgMTAwNjQ0Ci0tLSBhL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2xhdGluL3NwZWxsY2hlY2svRGljdGlvbmFyeVBvb2wuamF2YQorKysgYi9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9sYXRpbi9zcGVsbGNoZWNrL0RpY3Rpb25hcnlQb29sLmphdmEKQEAgLTUxLDcgKzUxLDggQEAKICAgICAgICAgICAgIG5ldyBEaWN0aW9uYXJ5KERpY3Rpb25hcnkuVFlQRV9NQUlOKSB7CiAgICAgICAgICAgICAgICAgQE92ZXJyaWRlCiAgICAgICAgICAgICAgICAgcHVibGljIEFycmF5TGlzdDxTdWdnZXN0ZWRXb3JkSW5mbz4gZ2V0U3VnZ2VzdGlvbnMoZmluYWwgV29yZENvbXBvc2VyIGNvbXBvc2VyLAotICAgICAgICAgICAgICAgICAgICAgICAgZmluYWwgU3RyaW5nIHByZXZXb3JkLCBmaW5hbCBQcm94aW1pdHlJbmZvIHByb3hpbWl0eUluZm8pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsIFN0cmluZyBwcmV2V29yZCwgZmluYWwgUHJveGltaXR5SW5mbyBwcm94aW1pdHlJbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgZmluYWwgYm9vbGVhbiBibG9ja09mZmVuc2l2ZVdvcmRzKSB7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBub1N1Z2dlc3Rpb25zOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBAT3ZlcnJpZGUKZGlmZiAtLWdpdCBhL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2xhdGluL3N1Z2dlc3Rpb25zL01vcmVTdWdnZXN0aW9ucy5qYXZhIGIvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvbGF0aW4vc3VnZ2VzdGlvbnMvTW9yZVN1Z2dlc3Rpb25zLmphdmEKaW5kZXggMzAzNzY2OS4uMDlmODFkNCAxMDA2NDQKLS0tIGEvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvbGF0aW4vc3VnZ2VzdGlvbnMvTW9yZVN1Z2dlc3Rpb25zLmphdmEKKysrIGIvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvbGF0aW4vc3VnZ2VzdGlvbnMvTW9yZVN1Z2dlc3Rpb25zLmphdmEKQEAgLTIzLDE5ICsyMywyOCBAQAogCiBpbXBvcnQgY29tLmFuZHJvaWQuaW5wdXRtZXRob2Qua2V5Ym9hcmQuS2V5OwogaW1wb3J0IGNvbS5hbmRyb2lkLmlucHV0bWV0aG9kLmtleWJvYXJkLktleWJvYXJkOworaW1wb3J0IGNvbS5hbmRyb2lkLmlucHV0bWV0aG9kLmtleWJvYXJkLktleWJvYXJkQWN0aW9uTGlzdGVuZXI7CiBpbXBvcnQgY29tLmFuZHJvaWQuaW5wdXRtZXRob2Qua2V5Ym9hcmQuVHlwZWZhY2VVdGlsczsKIGltcG9ydCBjb20uYW5kcm9pZC5pbnB1dG1ldGhvZC5rZXlib2FyZC5pbnRlcm5hbC5LZXlib2FyZEJ1aWxkZXI7CiBpbXBvcnQgY29tLmFuZHJvaWQuaW5wdXRtZXRob2Qua2V5Ym9hcmQuaW50ZXJuYWwuS2V5Ym9hcmRJY29uc1NldDsKIGltcG9ydCBjb20uYW5kcm9pZC5pbnB1dG1ldGhvZC5rZXlib2FyZC5pbnRlcm5hbC5LZXlib2FyZFBhcmFtczsKIGltcG9ydCBjb20uYW5kcm9pZC5pbnB1dG1ldGhvZC5sYXRpbi5SOwogaW1wb3J0IGNvbS5hbmRyb2lkLmlucHV0bWV0aG9kLmxhdGluLlN1Z2dlc3RlZFdvcmRzOworaW1wb3J0IGNvbS5hbmRyb2lkLmlucHV0bWV0aG9kLmxhdGluLlN1Z2dlc3RlZFdvcmRzLlN1Z2dlc3RlZFdvcmRJbmZvOwogaW1wb3J0IGNvbS5hbmRyb2lkLmlucHV0bWV0aG9kLmxhdGluLlV0aWxzOwogCiBwdWJsaWMgZmluYWwgY2xhc3MgTW9yZVN1Z2dlc3Rpb25zIGV4dGVuZHMgS2V5Ym9hcmQgewogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFNVR0dFU1RJT05fQ09ERV9CQVNFID0gMTAyNDsKIAotICAgIE1vcmVTdWdnZXN0aW9ucyhmaW5hbCBNb3JlU3VnZ2VzdGlvbnNQYXJhbSBwYXJhbXMpIHsKKyAgICBwdWJsaWMgZmluYWwgU3VnZ2VzdGVkV29yZHMgbVN1Z2dlc3RlZFdvcmRzOworCisgICAgcHVibGljIHN0YXRpYyBhYnN0cmFjdCBjbGFzcyBNb3JlU3VnZ2VzdGlvbnNMaXN0ZW5lciBleHRlbmRzIEtleWJvYXJkQWN0aW9uTGlzdGVuZXIuQWRhcHRlciB7CisgICAgICAgIHB1YmxpYyBhYnN0cmFjdCB2b2lkIG9uU3VnZ2VzdGlvblNlbGVjdGVkKGZpbmFsIGludCBpbmRleCwgZmluYWwgU3VnZ2VzdGVkV29yZEluZm8gaW5mbyk7CisgICAgfQorCisgICAgTW9yZVN1Z2dlc3Rpb25zKGZpbmFsIE1vcmVTdWdnZXN0aW9uc1BhcmFtIHBhcmFtcywgZmluYWwgU3VnZ2VzdGVkV29yZHMgc3VnZ2VzdGVkV29yZHMpIHsKICAgICAgICAgc3VwZXIocGFyYW1zKTsKKyAgICAgICAgbVN1Z2dlc3RlZFdvcmRzID0gc3VnZ2VzdGVkV29yZHM7CiAgICAgfQogCiAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgY2xhc3MgTW9yZVN1Z2dlc3Rpb25zUGFyYW0gZXh0ZW5kcyBLZXlib2FyZFBhcmFtcyB7CkBAIC01Miw4ICs2MSw5IEBACiAgICAgICAgICAgICBzdXBlcigpOwogICAgICAgICB9CiAKLSAgICAgICAgcHVibGljIGludCBsYXlvdXQoZmluYWwgU3VnZ2VzdGVkV29yZHMgc3VnZ2VzdGlvbnMsIGZpbmFsIGludCBmcm9tUG9zLCBmaW5hbCBpbnQgbWF4V2lkdGgsCi0gICAgICAgICAgICAgICAgZmluYWwgaW50IG1pbldpZHRoLCBmaW5hbCBpbnQgbWF4Um93LCBmaW5hbCBQYWludCBwYWludCwgZmluYWwgUmVzb3VyY2VzIHJlcykgeworICAgICAgICBwdWJsaWMgaW50IGxheW91dChmaW5hbCBTdWdnZXN0ZWRXb3JkcyBzdWdnZXN0ZWRXb3JkcywgZmluYWwgaW50IGZyb21Qb3MsCisgICAgICAgICAgICAgICAgZmluYWwgaW50IG1heFdpZHRoLCBmaW5hbCBpbnQgbWluV2lkdGgsIGZpbmFsIGludCBtYXhSb3csIGZpbmFsIFBhaW50IHBhaW50LAorICAgICAgICAgICAgICAgIGZpbmFsIFJlc291cmNlcyByZXMpIHsKICAgICAgICAgICAgIGNsZWFyS2V5cygpOwogICAgICAgICAgICAgbURpdmlkZXIgPSByZXMuZ2V0RHJhd2FibGUoUi5kcmF3YWJsZS5tb3JlX3N1Z2dlc3Rpb25zX2RpdmlkZXIpOwogICAgICAgICAgICAgbURpdmlkZXJXaWR0aCA9IG1EaXZpZGVyLmdldEludHJpbnNpY1dpZHRoKCk7CkBAIC02MSw5ICs3MSw5IEBACiAKICAgICAgICAgICAgIGludCByb3cgPSAwOwogICAgICAgICAgICAgaW50IHBvcyA9IGZyb21Qb3MsIHJvd1N0YXJ0UG9zID0gZnJvbVBvczsKLSAgICAgICAgICAgIGZpbmFsIGludCBzaXplID0gTWF0aC5taW4oc3VnZ2VzdGlvbnMuc2l6ZSgpLCBTdWdnZXN0aW9uU3RyaXBWaWV3Lk1BWF9TVUdHRVNUSU9OUyk7CisgICAgICAgICAgICBmaW5hbCBpbnQgc2l6ZSA9IE1hdGgubWluKHN1Z2dlc3RlZFdvcmRzLnNpemUoKSwgU3VnZ2VzdGlvblN0cmlwVmlldy5NQVhfU1VHR0VTVElPTlMpOwogICAgICAgICAgICAgd2hpbGUgKHBvcyA8IHNpemUpIHsKLSAgICAgICAgICAgICAgICBmaW5hbCBTdHJpbmcgd29yZCA9IHN1Z2dlc3Rpb25zLmdldFdvcmQocG9zKTsKKyAgICAgICAgICAgICAgICBmaW5hbCBTdHJpbmcgd29yZCA9IHN1Z2dlc3RlZFdvcmRzLmdldFdvcmQocG9zKTsKICAgICAgICAgICAgICAgICAvLyBUT0RPOiBTaG91bGQgdGFrZSBjYXJlIG9mIHRleHQgeC1zY2FsaW5nLgogICAgICAgICAgICAgICAgIG1XaWR0aHNbcG9zXSA9IChpbnQpKFR5cGVmYWNlVXRpbHMuZ2V0TGFiZWxXaWR0aCh3b3JkLCBwYWludCkgKyBwYWRkaW5nKTsKICAgICAgICAgICAgICAgICBmaW5hbCBpbnQgbnVtQ29sdW1uID0gcG9zIC0gcm93U3RhcnRQb3MgKyAxOwpAQCAtMTYzLDcgKzE3Myw3IEBACiAKICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGNsYXNzIEJ1aWxkZXIgZXh0ZW5kcyBLZXlib2FyZEJ1aWxkZXI8TW9yZVN1Z2dlc3Rpb25zUGFyYW0+IHsKICAgICAgICAgcHJpdmF0ZSBmaW5hbCBNb3JlU3VnZ2VzdGlvbnNWaWV3IG1QYW5lVmlldzsKLSAgICAgICAgcHJpdmF0ZSBTdWdnZXN0ZWRXb3JkcyBtU3VnZ2VzdGlvbnM7CisgICAgICAgIHByaXZhdGUgU3VnZ2VzdGVkV29yZHMgbVN1Z2dlc3RlZFdvcmRzOwogICAgICAgICBwcml2YXRlIGludCBtRnJvbVBvczsKICAgICAgICAgcHJpdmF0ZSBpbnQgbVRvUG9zOwogCkBAIC0xNzIsNyArMTgyLDcgQEAKICAgICAgICAgICAgIG1QYW5lVmlldyA9IHBhbmVWaWV3OwogICAgICAgICB9CiAKLSAgICAgICAgcHVibGljIEJ1aWxkZXIgbGF5b3V0KGZpbmFsIFN1Z2dlc3RlZFdvcmRzIHN1Z2dlc3Rpb25zLCBmaW5hbCBpbnQgZnJvbVBvcywKKyAgICAgICAgcHVibGljIEJ1aWxkZXIgbGF5b3V0KGZpbmFsIFN1Z2dlc3RlZFdvcmRzIHN1Z2dlc3RlZFdvcmRzLCBmaW5hbCBpbnQgZnJvbVBvcywKICAgICAgICAgICAgICAgICBmaW5hbCBpbnQgbWF4V2lkdGgsIGZpbmFsIGludCBtaW5XaWR0aCwgZmluYWwgaW50IG1heFJvdywKICAgICAgICAgICAgICAgICBmaW5hbCBLZXlib2FyZCBwYXJlbnRLZXlib2FyZCkgewogICAgICAgICAgICAgZmluYWwgaW50IHhtbElkID0gUi54bWwua2JkX3N1Z2dlc3Rpb25zX3BhbmVfdGVtcGxhdGU7CkBAIC0xODAsMTEgKzE5MCwxMSBAQAogICAgICAgICAgICAgbVBhcmFtcy5tVmVydGljYWxHYXAgPSBtUGFyYW1zLm1Ub3BQYWRkaW5nID0gcGFyZW50S2V5Ym9hcmQubVZlcnRpY2FsR2FwIC8gMjsKIAogICAgICAgICAgICAgbVBhbmVWaWV3LnVwZGF0ZUtleWJvYXJkR2VvbWV0cnkobVBhcmFtcy5tRGVmYXVsdFJvd0hlaWdodCk7Ci0gICAgICAgICAgICBmaW5hbCBpbnQgY291bnQgPSBtUGFyYW1zLmxheW91dChzdWdnZXN0aW9ucywgZnJvbVBvcywgbWF4V2lkdGgsIG1pbldpZHRoLCBtYXhSb3csCisgICAgICAgICAgICBmaW5hbCBpbnQgY291bnQgPSBtUGFyYW1zLmxheW91dChzdWdnZXN0ZWRXb3JkcywgZnJvbVBvcywgbWF4V2lkdGgsIG1pbldpZHRoLCBtYXhSb3csCiAgICAgICAgICAgICAgICAgICAgIG1QYW5lVmlldy5uZXdMYWJlbFBhaW50KG51bGwgLyoga2V5ICovKSwgbVJlc291cmNlcyk7CiAgICAgICAgICAgICBtRnJvbVBvcyA9IGZyb21Qb3M7CiAgICAgICAgICAgICBtVG9Qb3MgPSBmcm9tUG9zICsgY291bnQ7Ci0gICAgICAgICAgICBtU3VnZ2VzdGlvbnMgPSBzdWdnZXN0aW9uczsKKyAgICAgICAgICAgIG1TdWdnZXN0ZWRXb3JkcyA9IHN1Z2dlc3RlZFdvcmRzOwogICAgICAgICAgICAgcmV0dXJuIHRoaXM7CiAgICAgICAgIH0KIApAQCAtMTk1LDggKzIwNSw4IEBACiAgICAgICAgICAgICAgICAgZmluYWwgaW50IHggPSBwYXJhbXMuZ2V0WChwb3MpOwogICAgICAgICAgICAgICAgIGZpbmFsIGludCB5ID0gcGFyYW1zLmdldFkocG9zKTsKICAgICAgICAgICAgICAgICBmaW5hbCBpbnQgd2lkdGggPSBwYXJhbXMuZ2V0V2lkdGgocG9zKTsKLSAgICAgICAgICAgICAgICBmaW5hbCBTdHJpbmcgd29yZCA9IG1TdWdnZXN0aW9ucy5nZXRXb3JkKHBvcykudG9TdHJpbmcoKTsKLSAgICAgICAgICAgICAgICBmaW5hbCBTdHJpbmcgaW5mbyA9IFV0aWxzLmdldERlYnVnSW5mbyhtU3VnZ2VzdGlvbnMsIHBvcyk7CisgICAgICAgICAgICAgICAgZmluYWwgU3RyaW5nIHdvcmQgPSBtU3VnZ2VzdGVkV29yZHMuZ2V0V29yZChwb3MpOworICAgICAgICAgICAgICAgIGZpbmFsIFN0cmluZyBpbmZvID0gVXRpbHMuZ2V0RGVidWdJbmZvKG1TdWdnZXN0ZWRXb3JkcywgcG9zKTsKICAgICAgICAgICAgICAgICBmaW5hbCBpbnQgaW5kZXggPSBwb3MgKyBTVUdHRVNUSU9OX0NPREVfQkFTRTsKICAgICAgICAgICAgICAgICBmaW5hbCBLZXkga2V5ID0gbmV3IEtleSgKICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcywgd29yZCwgaW5mbywgS2V5Ym9hcmRJY29uc1NldC5JQ09OX1VOREVGSU5FRCwgaW5kZXgsIG51bGwsIHgsIHksCkBAIC0yMTEsNyArMjIxLDcgQEAKICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLm9uQWRkS2V5KGRpdmlkZXIpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBuZXcgTW9yZVN1Z2dlc3Rpb25zKHBhcmFtcyk7CisgICAgICAgICAgICByZXR1cm4gbmV3IE1vcmVTdWdnZXN0aW9ucyhwYXJhbXMsIG1TdWdnZXN0ZWRXb3Jkcyk7CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2xhdGluL3N1Z2dlc3Rpb25zL01vcmVTdWdnZXN0aW9uc1ZpZXcuamF2YSBiL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2xhdGluL3N1Z2dlc3Rpb25zL01vcmVTdWdnZXN0aW9uc1ZpZXcuamF2YQppbmRleCA2NTA5ZjM5Li5kNTg1YjVjIDEwMDY0NAotLS0gYS9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9sYXRpbi9zdWdnZXN0aW9ucy9Nb3JlU3VnZ2VzdGlvbnNWaWV3LmphdmEKKysrIGIvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvbGF0aW4vc3VnZ2VzdGlvbnMvTW9yZVN1Z2dlc3Rpb25zVmlldy5qYXZhCkBAIC0xOCwxNSArMTgsMjEgQEAKIAogaW1wb3J0IGFuZHJvaWQuY29udGVudC5Db250ZXh0OwogaW1wb3J0IGFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQ7CitpbXBvcnQgYW5kcm9pZC51dGlsLkxvZzsKIAoraW1wb3J0IGNvbS5hbmRyb2lkLmlucHV0bWV0aG9kLmtleWJvYXJkLktleWJvYXJkOwogaW1wb3J0IGNvbS5hbmRyb2lkLmlucHV0bWV0aG9kLmtleWJvYXJkLk1vcmVLZXlzS2V5Ym9hcmRWaWV3OwogaW1wb3J0IGNvbS5hbmRyb2lkLmlucHV0bWV0aG9kLmxhdGluLlI7CitpbXBvcnQgY29tLmFuZHJvaWQuaW5wdXRtZXRob2QubGF0aW4uU3VnZ2VzdGVkV29yZHM7CitpbXBvcnQgY29tLmFuZHJvaWQuaW5wdXRtZXRob2QubGF0aW4uc3VnZ2VzdGlvbnMuTW9yZVN1Z2dlc3Rpb25zLk1vcmVTdWdnZXN0aW9uc0xpc3RlbmVyOwogCiAvKioKICAqIEEgdmlldyB0aGF0IHJlbmRlcnMgYSB2aXJ0dWFsIHtAbGluayBNb3JlU3VnZ2VzdGlvbnN9LiBJdCBoYW5kbGVzIHJlbmRlcmluZyBvZiBrZXlzIGFuZCBkZXRlY3RpbmcKICAqIGtleSBwcmVzc2VzIGFuZCB0b3VjaCBtb3ZlbWVudHMuCiAgKi8KIHB1YmxpYyBmaW5hbCBjbGFzcyBNb3JlU3VnZ2VzdGlvbnNWaWV3IGV4dGVuZHMgTW9yZUtleXNLZXlib2FyZFZpZXcgeworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBUQUcgPSBNb3JlU3VnZ2VzdGlvbnNWaWV3LmNsYXNzLmdldFNpbXBsZU5hbWUoKTsKKwogICAgIHB1YmxpYyBNb3JlU3VnZ2VzdGlvbnNWaWV3KGZpbmFsIENvbnRleHQgY29udGV4dCwgZmluYWwgQXR0cmlidXRlU2V0IGF0dHJzKSB7CiAgICAgICAgIHRoaXMoY29udGV4dCwgYXR0cnMsIFIuYXR0ci5tb3JlU3VnZ2VzdGlvbnNWaWV3U3R5bGUpOwogICAgIH0KQEAgLTU0LDkgKzYwLDI0IEBACiAKICAgICBAT3ZlcnJpZGUKICAgICBwdWJsaWMgdm9pZCBvbkNvZGVJbnB1dChmaW5hbCBpbnQgY29kZSwgZmluYWwgaW50IHgsIGZpbmFsIGludCB5KSB7Ci0gICAgICAgIGZpbmFsIGludCBpbmRleCA9IGNvZGUgLSBNb3JlU3VnZ2VzdGlvbnMuU1VHR0VTVElPTl9DT0RFX0JBU0U7Ci0gICAgICAgIGlmIChpbmRleCA+PSAwICYmIGluZGV4IDwgU3VnZ2VzdGlvblN0cmlwVmlldy5NQVhfU1VHR0VTVElPTlMpIHsKLSAgICAgICAgICAgIG1MaXN0ZW5lci5vbkN1c3RvbVJlcXVlc3QoaW5kZXgpOworICAgICAgICBmaW5hbCBLZXlib2FyZCBrZXlib2FyZCA9IGdldEtleWJvYXJkKCk7CisgICAgICAgIGlmICghKGtleWJvYXJkIGluc3RhbmNlb2YgTW9yZVN1Z2dlc3Rpb25zKSkgeworICAgICAgICAgICAgTG9nLmUoVEFHLCAiRXhwZWN0ZWQga2V5Ym9hcmQgaXMgTW9yZVN1Z2dlc3Rpb25zLCBidXQgZm91bmQgIgorICAgICAgICAgICAgICAgICAgICArIGtleWJvYXJkLmdldENsYXNzKCkuZ2V0TmFtZSgpKTsKKyAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQorICAgICAgICBmaW5hbCBTdWdnZXN0ZWRXb3JkcyBzdWdnZXN0ZWRXb3JkcyA9ICgoTW9yZVN1Z2dlc3Rpb25zKWtleWJvYXJkKS5tU3VnZ2VzdGVkV29yZHM7CisgICAgICAgIGZpbmFsIGludCBpbmRleCA9IGNvZGUgLSBNb3JlU3VnZ2VzdGlvbnMuU1VHR0VTVElPTl9DT0RFX0JBU0U7CisgICAgICAgIGlmIChpbmRleCA8IDAgfHwgaW5kZXggPj0gc3VnZ2VzdGVkV29yZHMuc2l6ZSgpKSB7CisgICAgICAgICAgICBMb2cuZShUQUcsICJTZWxlY3RlZCBzdWdnZXN0aW9uIGhhcyBhbiBpbGxlZ2FsIGluZGV4OiAiICsgaW5kZXgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGlmICghKG1MaXN0ZW5lciBpbnN0YW5jZW9mIE1vcmVTdWdnZXN0aW9uc0xpc3RlbmVyKSkgeworICAgICAgICAgICAgTG9nLmUoVEFHLCAiRXhwZWN0ZWQgbUxpc3RlbmVyIGlzIE1vcmVTdWdnZXN0aW9uc0xpc3RlbmVyLCBidXQgZm91bmQgIgorICAgICAgICAgICAgICAgICAgICArIG1MaXN0ZW5lci5nZXRDbGFzcygpLmdldE5hbWUoKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgKChNb3JlU3VnZ2VzdGlvbnNMaXN0ZW5lciltTGlzdGVuZXIpLm9uU3VnZ2VzdGlvblNlbGVjdGVkKAorICAgICAgICAgICAgICAgIGluZGV4LCBzdWdnZXN0ZWRXb3Jkcy5nZXRJbmZvKGluZGV4KSk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvbGF0aW4vc3VnZ2VzdGlvbnMvU3VnZ2VzdGlvblN0cmlwVmlldy5qYXZhIGIvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvbGF0aW4vc3VnZ2VzdGlvbnMvU3VnZ2VzdGlvblN0cmlwVmlldy5qYXZhCmluZGV4IDJhMjFlYzIuLmFkMzUwYTAgMTAwNjQ0Ci0tLSBhL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2xhdGluL3N1Z2dlc3Rpb25zL1N1Z2dlc3Rpb25TdHJpcFZpZXcuamF2YQorKysgYi9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9sYXRpbi9zdWdnZXN0aW9ucy9TdWdnZXN0aW9uU3RyaXBWaWV3LmphdmEKQEAgLTUwLDcgKzUwLDYgQEAKIGltcG9ydCBhbmRyb2lkLndpZGdldC5UZXh0VmlldzsKIAogaW1wb3J0IGNvbS5hbmRyb2lkLmlucHV0bWV0aG9kLmtleWJvYXJkLktleWJvYXJkOwotaW1wb3J0IGNvbS5hbmRyb2lkLmlucHV0bWV0aG9kLmtleWJvYXJkLktleWJvYXJkQWN0aW9uTGlzdGVuZXI7CiBpbXBvcnQgY29tLmFuZHJvaWQuaW5wdXRtZXRob2Qua2V5Ym9hcmQuS2V5Ym9hcmRTd2l0Y2hlcjsKIGltcG9ydCBjb20uYW5kcm9pZC5pbnB1dG1ldGhvZC5rZXlib2FyZC5NYWluS2V5Ym9hcmRWaWV3OwogaW1wb3J0IGNvbS5hbmRyb2lkLmlucHV0bWV0aG9kLmtleWJvYXJkLk1vcmVLZXlzUGFuZWw7CkBAIC02NSw2ICs2NCw3IEBACiBpbXBvcnQgY29tLmFuZHJvaWQuaW5wdXRtZXRob2QubGF0aW4uU3VnZ2VzdGVkV29yZHMuU3VnZ2VzdGVkV29yZEluZm87CiBpbXBvcnQgY29tLmFuZHJvaWQuaW5wdXRtZXRob2QubGF0aW4uVXRpbHM7CiBpbXBvcnQgY29tLmFuZHJvaWQuaW5wdXRtZXRob2QubGF0aW4uZGVmaW5lLlByb2R1Y3Rpb25GbGFnOworaW1wb3J0IGNvbS5hbmRyb2lkLmlucHV0bWV0aG9kLmxhdGluLnN1Z2dlc3Rpb25zLk1vcmVTdWdnZXN0aW9ucy5Nb3JlU3VnZ2VzdGlvbnNMaXN0ZW5lcjsKIGltcG9ydCBjb20uYW5kcm9pZC5pbnB1dG1ldGhvZC5yZXNlYXJjaC5SZXNlYXJjaExvZ2dlcjsKIAogaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7CkBAIC05Myw3ICs5Myw3IEBACiAgICAgcHJpdmF0ZSBmaW5hbCBBcnJheUxpc3Q8Vmlldz4gbURpdmlkZXJzID0gQ29sbGVjdGlvblV0aWxzLm5ld0FycmF5TGlzdCgpOwogCiAgICAgTGlzdGVuZXIgbUxpc3RlbmVyOwotICAgIFN1Z2dlc3RlZFdvcmRzIG1TdWdnZXN0ZWRXb3JkcyA9IFN1Z2dlc3RlZFdvcmRzLkVNUFRZOworICAgIHByaXZhdGUgU3VnZ2VzdGVkV29yZHMgbVN1Z2dlc3RlZFdvcmRzID0gU3VnZ2VzdGVkV29yZHMuRU1QVFk7CiAKICAgICBwcml2YXRlIGZpbmFsIFN1Z2dlc3Rpb25TdHJpcFZpZXdQYXJhbXMgbVBhcmFtczsKICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBmbG9hdCBNSU5fVEVYVF9YU0NBTEUgPSAwLjcwZjsKQEAgLTY1MiwxNSArNjUyLDExIEBACiAgICAgICAgIGRpc21pc3NNb3JlU3VnZ2VzdGlvbnMoKTsKICAgICB9CiAKLSAgICBwcml2YXRlIGZpbmFsIEtleWJvYXJkQWN0aW9uTGlzdGVuZXIgbU1vcmVTdWdnZXN0aW9uc0xpc3RlbmVyID0KLSAgICAgICAgICAgIG5ldyBLZXlib2FyZEFjdGlvbkxpc3RlbmVyLkFkYXB0ZXIoKSB7CisgICAgcHJpdmF0ZSBmaW5hbCBNb3JlU3VnZ2VzdGlvbnNMaXN0ZW5lciBtTW9yZVN1Z2dlc3Rpb25zTGlzdGVuZXIgPSBuZXcgTW9yZVN1Z2dlc3Rpb25zTGlzdGVuZXIoKSB7CiAgICAgICAgIEBPdmVycmlkZQotICAgICAgICBwdWJsaWMgYm9vbGVhbiBvbkN1c3RvbVJlcXVlc3QoZmluYWwgaW50IHJlcXVlc3RDb2RlKSB7Ci0gICAgICAgICAgICBmaW5hbCBpbnQgaW5kZXggPSByZXF1ZXN0Q29kZTsKLSAgICAgICAgICAgIGZpbmFsIFN1Z2dlc3RlZFdvcmRJbmZvIHdvcmRJbmZvID0gbVN1Z2dlc3RlZFdvcmRzLmdldEluZm8oaW5kZXgpOworICAgICAgICBwdWJsaWMgdm9pZCBvblN1Z2dlc3Rpb25TZWxlY3RlZChmaW5hbCBpbnQgaW5kZXgsIGZpbmFsIFN1Z2dlc3RlZFdvcmRJbmZvIHdvcmRJbmZvKSB7CiAgICAgICAgICAgICBtTGlzdGVuZXIucGlja1N1Z2dlc3Rpb25NYW51YWxseShpbmRleCwgd29yZEluZm8pOwogICAgICAgICAgICAgZGlzbWlzc01vcmVTdWdnZXN0aW9ucygpOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KIAogICAgICAgICBAT3ZlcnJpZGUKZGlmZiAtLWdpdCBhL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2xhdGluL3VzZXJkaWN0aW9uYXJ5L1VzZXJEaWN0aW9uYXJ5QWRkV29yZENvbnRlbnRzLmphdmEgYi9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9sYXRpbi91c2VyZGljdGlvbmFyeS9Vc2VyRGljdGlvbmFyeUFkZFdvcmRDb250ZW50cy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJiNmZkYTMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9sYXRpbi91c2VyZGljdGlvbmFyeS9Vc2VyRGljdGlvbmFyeUFkZFdvcmRDb250ZW50cy5qYXZhCkBAIC0wLDAgKzEsMjYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworcGFja2FnZSBjb20uYW5kcm9pZC5pbnB1dG1ldGhvZC5sYXRpbi51c2VyZGljdGlvbmFyeTsKKworaW1wb3J0IGNvbS5hbmRyb2lkLmlucHV0bWV0aG9kLmNvbXBhdC5Vc2VyRGljdGlvbmFyeUNvbXBhdFV0aWxzOworaW1wb3J0IGNvbS5hbmRyb2lkLmlucHV0bWV0aG9kLmxhdGluLkxvY2FsZVV0aWxzOworaW1wb3J0IGNvbS5hbmRyb2lkLmlucHV0bWV0aG9kLmxhdGluLlI7CisKK2ltcG9ydCBhbmRyb2lkLmFwcC5BY3Rpdml0eTsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQuQ29udGVudFJlc29sdmVyOworaW1wb3J0IGFuZHJvaWQuY29udGVudC5Db250ZXh0OworaW1wb3J0IGFuZHJvaWQuZGF0YWJhc2UuQ3Vyc29yOworaW1wb3J0IGFuZHJvaWQub3MuQnVuZGxlOworaW1wb3J0IGFuZHJvaWQucHJvdmlkZXIuVXNlckRpY3Rpb25hcnk7CitpbXBvcnQgYW5kcm9pZC50ZXh0LlRleHRVdGlsczsKK2ltcG9ydCBhbmRyb2lkLnZpZXcuVmlldzsKK2ltcG9ydCBhbmRyb2lkLndpZGdldC5FZGl0VGV4dDsKKworaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7CitpbXBvcnQgamF2YS51dGlsLkxvY2FsZTsKK2ltcG9ydCBqYXZhLnV0aWwuVHJlZVNldDsKKworLy8gQ2F2ZWF0OiBUaGlzIGNsYXNzIGlzIGJhc2ljYWxseSB0YWtlbiBmcm9tCisvLyBwYWNrYWdlcy9hcHBzL1NldHRpbmdzL3NyYy9jb20vYW5kcm9pZC9zZXR0aW5ncy9pbnB1dG1ldGhvZC9Vc2VyRGljdGlvbmFyeUFkZFdvcmRDb250ZW50cy5qYXZhCisvLyBpbiBvcmRlciB0byBkZWFsIHdpdGggc29tZSBkZXZpY2VzIHRoYXQgaGF2ZSBpc3N1ZXMgd2l0aCB0aGUgdXNlciBkaWN0aW9uYXJ5IGhhbmRsaW5nCisKKy8qKgorICogQSBjb250YWluZXIgY2xhc3MgdG8gZmFjdG9yIGNvbW1vbiBjb2RlIHRvIFVzZXJEaWN0aW9uYXJ5QWRkV29yZEZyYWdtZW50CisgKiBhbmQgVXNlckRpY3Rpb25hcnlBZGRXb3JkQWN0aXZpdHkuCisgKi8KK3B1YmxpYyBjbGFzcyBVc2VyRGljdGlvbmFyeUFkZFdvcmRDb250ZW50cyB7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgRVhUUkFfTU9ERSA9ICJtb2RlIjsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBFWFRSQV9XT1JEID0gIndvcmQiOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEVYVFJBX1NIT1JUQ1VUID0gInNob3J0Y3V0IjsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBFWFRSQV9MT0NBTEUgPSAibG9jYWxlIjsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBFWFRSQV9PUklHSU5BTF9XT1JEID0gIm9yaWdpbmFsV29yZCI7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgRVhUUkFfT1JJR0lOQUxfU0hPUlRDVVQgPSAib3JpZ2luYWxTaG9ydGN1dCI7CisKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBNT0RFX0VESVQgPSAwOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IE1PREVfSU5TRVJUID0gMTsKKworICAgIC8qIHBhY2thZ2UgKi8gc3RhdGljIGZpbmFsIGludCBDT0RFX1dPUkRfQURERUQgPSAwOworICAgIC8qIHBhY2thZ2UgKi8gc3RhdGljIGZpbmFsIGludCBDT0RFX0NBTkNFTCA9IDE7CisgICAgLyogcGFja2FnZSAqLyBzdGF0aWMgZmluYWwgaW50IENPREVfQUxSRUFEWV9QUkVTRU5UID0gMjsKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBGUkVRVUVOQ1lfRk9SX1VTRVJfRElDVElPTkFSWV9BRERTID0gMjUwOworCisgICAgcHJpdmF0ZSBmaW5hbCBpbnQgbU1vZGU7IC8vIEVpdGhlciBNT0RFX0VESVQgb3IgTU9ERV9JTlNFUlQKKyAgICBwcml2YXRlIGZpbmFsIEVkaXRUZXh0IG1Xb3JkRWRpdFRleHQ7CisgICAgcHJpdmF0ZSBmaW5hbCBFZGl0VGV4dCBtU2hvcnRjdXRFZGl0VGV4dDsKKyAgICBwcml2YXRlIFN0cmluZyBtTG9jYWxlOworICAgIHByaXZhdGUgZmluYWwgU3RyaW5nIG1PbGRXb3JkOworICAgIHByaXZhdGUgZmluYWwgU3RyaW5nIG1PbGRTaG9ydGN1dDsKKworICAgIC8qIHBhY2thZ2UgKi8gVXNlckRpY3Rpb25hcnlBZGRXb3JkQ29udGVudHMoZmluYWwgVmlldyB2aWV3LCBmaW5hbCBCdW5kbGUgYXJncykgeworICAgICAgICBtV29yZEVkaXRUZXh0ID0gKEVkaXRUZXh0KXZpZXcuZmluZFZpZXdCeUlkKFIuaWQudXNlcl9kaWN0aW9uYXJ5X2FkZF93b3JkX3RleHQpOworICAgICAgICBtU2hvcnRjdXRFZGl0VGV4dCA9IChFZGl0VGV4dCl2aWV3LmZpbmRWaWV3QnlJZChSLmlkLnVzZXJfZGljdGlvbmFyeV9hZGRfc2hvcnRjdXQpOworICAgICAgICBpZiAoIVVzZXJEaWN0aW9uYXJ5U2V0dGluZ3MuSVNfU0hPUlRDVVRfQVBJX1NVUFBPUlRFRCkgeworICAgICAgICAgICAgbVNob3J0Y3V0RWRpdFRleHQuc2V0VmlzaWJpbGl0eShWaWV3LkdPTkUpOworICAgICAgICAgICAgdmlldy5maW5kVmlld0J5SWQoUi5pZC51c2VyX2RpY3Rpb25hcnlfYWRkX3Nob3J0Y3V0X2xhYmVsKS5zZXRWaXNpYmlsaXR5KFZpZXcuR09ORSk7CisgICAgICAgIH0KKyAgICAgICAgZmluYWwgU3RyaW5nIHdvcmQgPSBhcmdzLmdldFN0cmluZyhFWFRSQV9XT1JEKTsKKyAgICAgICAgaWYgKG51bGwgIT0gd29yZCkgeworICAgICAgICAgICAgbVdvcmRFZGl0VGV4dC5zZXRUZXh0KHdvcmQpOworICAgICAgICAgICAgbVdvcmRFZGl0VGV4dC5zZXRTZWxlY3Rpb24od29yZC5sZW5ndGgoKSk7CisgICAgICAgIH0KKyAgICAgICAgZmluYWwgU3RyaW5nIHNob3J0Y3V0OworICAgICAgICBpZiAoVXNlckRpY3Rpb25hcnlTZXR0aW5ncy5JU19TSE9SVENVVF9BUElfU1VQUE9SVEVEKSB7CisgICAgICAgICAgICBzaG9ydGN1dCA9IGFyZ3MuZ2V0U3RyaW5nKEVYVFJBX1NIT1JUQ1VUKTsKKyAgICAgICAgICAgIGlmIChudWxsICE9IHNob3J0Y3V0ICYmIG51bGwgIT0gbVNob3J0Y3V0RWRpdFRleHQpIHsKKyAgICAgICAgICAgICAgICBtU2hvcnRjdXRFZGl0VGV4dC5zZXRUZXh0KHNob3J0Y3V0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1PbGRTaG9ydGN1dCA9IGFyZ3MuZ2V0U3RyaW5nKEVYVFJBX1NIT1JUQ1VUKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHNob3J0Y3V0ID0gbnVsbDsKKyAgICAgICAgICAgIG1PbGRTaG9ydGN1dCA9IG51bGw7CisgICAgICAgIH0KKyAgICAgICAgbU1vZGUgPSBhcmdzLmdldEludChFWFRSQV9NT0RFKTsgLy8gZGVmYXVsdCByZXR1cm4gdmFsdWUgZm9yICNnZXRJbnQoKSBpcyAwID0gTU9ERV9FRElUCisgICAgICAgIG1PbGRXb3JkID0gYXJncy5nZXRTdHJpbmcoRVhUUkFfV09SRCk7CisgICAgICAgIHVwZGF0ZUxvY2FsZShhcmdzLmdldFN0cmluZyhFWFRSQV9MT0NBTEUpKTsKKyAgICB9CisKKyAgICAvLyBsb2NhbGUgbWF5IGJlIG51bGwsIHRoaXMgbWVhbnMgZGVmYXVsdCBsb2NhbGUKKyAgICAvLyBJdCBtYXkgYWxzbyBiZSB0aGUgZW1wdHkgc3RyaW5nLCB3aGljaCBtZWFucyAiYWxsIGxvY2FsZXMiCisgICAgLyogcGFja2FnZSAqLyB2b2lkIHVwZGF0ZUxvY2FsZShmaW5hbCBTdHJpbmcgbG9jYWxlKSB7CisgICAgICAgIG1Mb2NhbGUgPSBudWxsID09IGxvY2FsZSA/IExvY2FsZS5nZXREZWZhdWx0KCkudG9TdHJpbmcoKSA6IGxvY2FsZTsKKyAgICB9CisKKyAgICAvKiBwYWNrYWdlICovIHZvaWQgc2F2ZVN0YXRlSW50b0J1bmRsZShmaW5hbCBCdW5kbGUgb3V0U3RhdGUpIHsKKyAgICAgICAgb3V0U3RhdGUucHV0U3RyaW5nKEVYVFJBX1dPUkQsIG1Xb3JkRWRpdFRleHQuZ2V0VGV4dCgpLnRvU3RyaW5nKCkpOworICAgICAgICBvdXRTdGF0ZS5wdXRTdHJpbmcoRVhUUkFfT1JJR0lOQUxfV09SRCwgbU9sZFdvcmQpOworICAgICAgICBpZiAobnVsbCAhPSBtU2hvcnRjdXRFZGl0VGV4dCkgeworICAgICAgICAgICAgb3V0U3RhdGUucHV0U3RyaW5nKEVYVFJBX1NIT1JUQ1VULCBtU2hvcnRjdXRFZGl0VGV4dC5nZXRUZXh0KCkudG9TdHJpbmcoKSk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKG51bGwgIT0gbU9sZFNob3J0Y3V0KSB7CisgICAgICAgICAgICBvdXRTdGF0ZS5wdXRTdHJpbmcoRVhUUkFfT1JJR0lOQUxfU0hPUlRDVVQsIG1PbGRTaG9ydGN1dCk7CisgICAgICAgIH0KKyAgICAgICAgb3V0U3RhdGUucHV0U3RyaW5nKEVYVFJBX0xPQ0FMRSwgbUxvY2FsZSk7CisgICAgfQorCisgICAgLyogcGFja2FnZSAqLyB2b2lkIGRlbGV0ZShmaW5hbCBDb250ZXh0IGNvbnRleHQpIHsKKyAgICAgICAgaWYgKE1PREVfRURJVCA9PSBtTW9kZSAmJiAhVGV4dFV0aWxzLmlzRW1wdHkobU9sZFdvcmQpKSB7CisgICAgICAgICAgICAvLyBNb2RlIGVkaXQ6IHJlbW92ZSB0aGUgb2xkIGVudHJ5LgorICAgICAgICAgICAgZmluYWwgQ29udGVudFJlc29sdmVyIHJlc29sdmVyID0gY29udGV4dC5nZXRDb250ZW50UmVzb2x2ZXIoKTsKKyAgICAgICAgICAgIFVzZXJEaWN0aW9uYXJ5U2V0dGluZ3MuZGVsZXRlV29yZChtT2xkV29yZCwgbU9sZFNob3J0Y3V0LCByZXNvbHZlcik7CisgICAgICAgIH0KKyAgICAgICAgLy8gSWYgd2UgYXJlIGluIGFkZCBtb2RlLCBub3RoaW5nIHdhcyBhZGRlZCwgc28gd2UgZG9uJ3QgbmVlZCB0byBkbyBhbnl0aGluZy4KKyAgICB9CisKKyAgICAvKiBwYWNrYWdlICovCisgICAgaW50IGFwcGx5KGZpbmFsIENvbnRleHQgY29udGV4dCwgZmluYWwgQnVuZGxlIG91dFBhcmFtZXRlcnMpIHsKKyAgICAgICAgaWYgKG51bGwgIT0gb3V0UGFyYW1ldGVycykgc2F2ZVN0YXRlSW50b0J1bmRsZShvdXRQYXJhbWV0ZXJzKTsKKyAgICAgICAgZmluYWwgQ29udGVudFJlc29sdmVyIHJlc29sdmVyID0gY29udGV4dC5nZXRDb250ZW50UmVzb2x2ZXIoKTsKKyAgICAgICAgaWYgKE1PREVfRURJVCA9PSBtTW9kZSAmJiAhVGV4dFV0aWxzLmlzRW1wdHkobU9sZFdvcmQpKSB7CisgICAgICAgICAgICAvLyBNb2RlIGVkaXQ6IHJlbW92ZSB0aGUgb2xkIGVudHJ5LgorICAgICAgICAgICAgVXNlckRpY3Rpb25hcnlTZXR0aW5ncy5kZWxldGVXb3JkKG1PbGRXb3JkLCBtT2xkU2hvcnRjdXQsIHJlc29sdmVyKTsKKyAgICAgICAgfQorICAgICAgICBmaW5hbCBTdHJpbmcgbmV3V29yZCA9IG1Xb3JkRWRpdFRleHQuZ2V0VGV4dCgpLnRvU3RyaW5nKCk7CisgICAgICAgIGZpbmFsIFN0cmluZyBuZXdTaG9ydGN1dDsKKyAgICAgICAgaWYgKCFVc2VyRGljdGlvbmFyeVNldHRpbmdzLklTX1NIT1JUQ1VUX0FQSV9TVVBQT1JURUQpIHsKKyAgICAgICAgICAgIG5ld1Nob3J0Y3V0ID0gbnVsbDsKKyAgICAgICAgfSBlbHNlIGlmIChudWxsID09IG1TaG9ydGN1dEVkaXRUZXh0KSB7CisgICAgICAgICAgICBuZXdTaG9ydGN1dCA9IG51bGw7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBmaW5hbCBTdHJpbmcgdG1wU2hvcnRjdXQgPSBtU2hvcnRjdXRFZGl0VGV4dC5nZXRUZXh0KCkudG9TdHJpbmcoKTsKKyAgICAgICAgICAgIGlmIChUZXh0VXRpbHMuaXNFbXB0eSh0bXBTaG9ydGN1dCkpIHsKKyAgICAgICAgICAgICAgICBuZXdTaG9ydGN1dCA9IG51bGw7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIG5ld1Nob3J0Y3V0ID0gdG1wU2hvcnRjdXQ7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYgKFRleHRVdGlscy5pc0VtcHR5KG5ld1dvcmQpKSB7CisgICAgICAgICAgICAvLyBJZiB0aGUgd29yZCBpcyBzb21laG93IGVtcHR5LCBkb24ndCBpbnNlcnQgaXQuCisgICAgICAgICAgICByZXR1cm4gQ09ERV9DQU5DRUw7CisgICAgICAgIH0KKyAgICAgICAgLy8gSWYgdGhlcmUgaXMgbm8gc2hvcnRjdXQsIGFuZCB0aGUgd29yZCBhbHJlYWR5IGV4aXN0cyBpbiB0aGUgZGF0YWJhc2UsIHRoZW4gd2UKKyAgICAgICAgLy8gc2hvdWxkIG5vdCBpbnNlcnQsIGJlY2F1c2UgZWl0aGVyIEEuIHRoZSB3b3JkIGV4aXN0cyB3aXRoIG5vIHNob3J0Y3V0LCBpbiB3aGljaAorICAgICAgICAvLyBjYXNlIHRoZSBleGFjdCBzYW1lIHRoaW5nIHdlIHdhbnQgdG8gaW5zZXJ0IGlzIGFscmVhZHkgdGhlcmUsIG9yIEIuIHRoZSB3b3JkCisgICAgICAgIC8vIGV4aXN0cyB3aXRoIGF0IGxlYXN0IG9uZSBzaG9ydGN1dCwgaW4gd2hpY2ggY2FzZSBpdCBoYXMgcHJpb3JpdHkgb24gb3VyIHdvcmQuCisgICAgICAgIGlmIChoYXNXb3JkKG5ld1dvcmQsIGNvbnRleHQpKSByZXR1cm4gQ09ERV9BTFJFQURZX1BSRVNFTlQ7CisKKyAgICAgICAgLy8gRGlzYWxsb3cgZHVwbGljYXRlcy4gSWYgdGhlIHNhbWUgd29yZCB3aXRoIG5vIHNob3J0Y3V0IGlzIGRlZmluZWQsIHJlbW92ZSBpdDsgaWYKKyAgICAgICAgLy8gdGhlIHNhbWUgd29yZCB3aXRoIHRoZSBzYW1lIHNob3J0Y3V0IGlzIGRlZmluZWQsIHJlbW92ZSBpdDsgYnV0IHdlIGRvbid0IG1pbmQgaWYKKyAgICAgICAgLy8gdGhlcmUgaXMgdGhlIHNhbWUgd29yZCB3aXRoIGEgZGlmZmVyZW50LCBub24tZW1wdHkgc2hvcnRjdXQuCisgICAgICAgIFVzZXJEaWN0aW9uYXJ5U2V0dGluZ3MuZGVsZXRlV29yZChuZXdXb3JkLCBudWxsLCByZXNvbHZlcik7CisgICAgICAgIGlmICghVGV4dFV0aWxzLmlzRW1wdHkobmV3U2hvcnRjdXQpKSB7CisgICAgICAgICAgICAvLyBJZiBuZXdTaG9ydGN1dCBpcyBlbXB0eSB3ZSBqdXN0IGRlbGV0ZWQgdGhpcywgbm8gbmVlZCB0byBkbyBpdCBhZ2FpbgorICAgICAgICAgICAgVXNlckRpY3Rpb25hcnlTZXR0aW5ncy5kZWxldGVXb3JkKG5ld1dvcmQsIG5ld1Nob3J0Y3V0LCByZXNvbHZlcik7CisgICAgICAgIH0KKworICAgICAgICAvLyBJbiB0aGlzIGNsYXNzIHdlIHVzZSB0aGUgZW1wdHkgc3RyaW5nIHRvIHJlcHJlc2VudCAnYWxsIGxvY2FsZXMnIGFuZCBtTG9jYWxlIGNhbm5vdAorICAgICAgICAvLyBiZSBudWxsLiBIb3dldmVyIHRoZSBhZGRXb3JkIG1ldGhvZCB0YWtlcyBudWxsIHRvIG1lYW4gJ2FsbCBsb2NhbGVzJy4KKyAgICAgICAgVXNlckRpY3Rpb25hcnlDb21wYXRVdGlscy5hZGRXb3JkKGNvbnRleHQsIG5ld1dvcmQudG9TdHJpbmcoKSwKKyAgICAgICAgICAgICAgICBGUkVRVUVOQ1lfRk9SX1VTRVJfRElDVElPTkFSWV9BRERTLCBuZXdTaG9ydGN1dCwgVGV4dFV0aWxzLmlzRW1wdHkobUxvY2FsZSkgPworICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCA6IExvY2FsZVV0aWxzLmNvbnN0cnVjdExvY2FsZUZyb21TdHJpbmcobUxvY2FsZSkpOworCisgICAgICAgIHJldHVybiBDT0RFX1dPUkRfQURERUQ7CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nW10gSEFTX1dPUkRfUFJPSkVDVElPTiA9IHsgVXNlckRpY3Rpb25hcnkuV29yZHMuV09SRCB9OworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBIQVNfV09SRF9TRUxFQ1RJT05fT05FX0xPQ0FMRSA9IFVzZXJEaWN0aW9uYXJ5LldvcmRzLldPUkQKKyAgICAgICAgICAgICsgIj0/IEFORCAiICsgVXNlckRpY3Rpb25hcnkuV29yZHMuTE9DQUxFICsgIj0/IjsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgSEFTX1dPUkRfU0VMRUNUSU9OX0FMTF9MT0NBTEVTID0gVXNlckRpY3Rpb25hcnkuV29yZHMuV09SRAorICAgICAgICAgICAgKyAiPT8gQU5EICIgKyBVc2VyRGljdGlvbmFyeS5Xb3Jkcy5MT0NBTEUgKyAiIGlzIG51bGwiOworICAgIHByaXZhdGUgYm9vbGVhbiBoYXNXb3JkKGZpbmFsIFN0cmluZyB3b3JkLCBmaW5hbCBDb250ZXh0IGNvbnRleHQpIHsKKyAgICAgICAgZmluYWwgQ3Vyc29yIGN1cnNvcjsKKyAgICAgICAgLy8gbUxvY2FsZSA9PSAiIiBpbmRpY2F0ZXMgdGhpcyBpcyBhbiBlbnRyeSBmb3IgYWxsIGxhbmd1YWdlcy4gSGVyZSwgbUxvY2FsZSBjYW4ndAorICAgICAgICAvLyBiZSBudWxsIGF0IGFsbCAoaXQncyBlbnN1cmVkIGJ5IHRoZSB1cGRhdGVMb2NhbGUgbWV0aG9kKS4KKyAgICAgICAgaWYgKCIiLmVxdWFscyhtTG9jYWxlKSkgeworICAgICAgICAgICAgY3Vyc29yID0gY29udGV4dC5nZXRDb250ZW50UmVzb2x2ZXIoKS5xdWVyeShVc2VyRGljdGlvbmFyeS5Xb3Jkcy5DT05URU5UX1VSSSwKKyAgICAgICAgICAgICAgICAgICAgICBIQVNfV09SRF9QUk9KRUNUSU9OLCBIQVNfV09SRF9TRUxFQ1RJT05fQUxMX0xPQ0FMRVMsCisgICAgICAgICAgICAgICAgICAgICAgbmV3IFN0cmluZ1tdIHsgd29yZCB9LCBudWxsIC8qIHNvcnQgb3JkZXIgKi8pOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgY3Vyc29yID0gY29udGV4dC5nZXRDb250ZW50UmVzb2x2ZXIoKS5xdWVyeShVc2VyRGljdGlvbmFyeS5Xb3Jkcy5DT05URU5UX1VSSSwKKyAgICAgICAgICAgICAgICAgICAgICBIQVNfV09SRF9QUk9KRUNUSU9OLCBIQVNfV09SRF9TRUxFQ1RJT05fT05FX0xPQ0FMRSwKKyAgICAgICAgICAgICAgICAgICAgICBuZXcgU3RyaW5nW10geyB3b3JkLCBtTG9jYWxlIH0sIG51bGwgLyogc29ydCBvcmRlciAqLyk7CisgICAgICAgIH0KKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGlmIChudWxsID09IGN1cnNvcikgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgcmV0dXJuIGN1cnNvci5nZXRDb3VudCgpID4gMDsKKyAgICAgICAgfSBmaW5hbGx5IHsKKyAgICAgICAgICAgIGlmIChudWxsICE9IGN1cnNvcikgY3Vyc29yLmNsb3NlKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIGNsYXNzIExvY2FsZVJlbmRlcmVyIHsKKyAgICAgICAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgbUxvY2FsZVN0cmluZzsKKyAgICAgICAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgbURlc2NyaXB0aW9uOworICAgICAgICAvLyBMb2NhbGVTdHJpbmcgbWF5IE5PVCBiZSBudWxsLgorICAgICAgICBwdWJsaWMgTG9jYWxlUmVuZGVyZXIoZmluYWwgQ29udGV4dCBjb250ZXh0LCBmaW5hbCBTdHJpbmcgbG9jYWxlU3RyaW5nKSB7CisgICAgICAgICAgICBtTG9jYWxlU3RyaW5nID0gbG9jYWxlU3RyaW5nOworICAgICAgICAgICAgaWYgKG51bGwgPT0gbG9jYWxlU3RyaW5nKSB7CisgICAgICAgICAgICAgICAgbURlc2NyaXB0aW9uID0gY29udGV4dC5nZXRTdHJpbmcoUi5zdHJpbmcudXNlcl9kaWN0X3NldHRpbmdzX21vcmVfbGFuZ3VhZ2VzKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoIiIuZXF1YWxzKGxvY2FsZVN0cmluZykpIHsKKyAgICAgICAgICAgICAgICBtRGVzY3JpcHRpb24gPSBjb250ZXh0LmdldFN0cmluZyhSLnN0cmluZy51c2VyX2RpY3Rfc2V0dGluZ3NfYWxsX2xhbmd1YWdlcyk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIG1EZXNjcmlwdGlvbiA9IExvY2FsZVV0aWxzLmNvbnN0cnVjdExvY2FsZUZyb21TdHJpbmcobG9jYWxlU3RyaW5nKS5nZXREaXNwbGF5TmFtZSgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkgeworICAgICAgICAgICAgcmV0dXJuIG1EZXNjcmlwdGlvbjsKKyAgICAgICAgfQorICAgICAgICBwdWJsaWMgU3RyaW5nIGdldExvY2FsZVN0cmluZygpIHsKKyAgICAgICAgICAgIHJldHVybiBtTG9jYWxlU3RyaW5nOworICAgICAgICB9CisgICAgICAgIC8vICJNb3JlIGxhbmd1YWdlcy4uLiIgaXMgbnVsbCA7ICJBbGwgbGFuZ3VhZ2VzIiBpcyB0aGUgZW1wdHkgc3RyaW5nLgorICAgICAgICBwdWJsaWMgYm9vbGVhbiBpc01vcmVMYW5ndWFnZXMoKSB7CisgICAgICAgICAgICByZXR1cm4gbnVsbCA9PSBtTG9jYWxlU3RyaW5nOworICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgdm9pZCBhZGRMb2NhbGVEaXNwbGF5TmFtZVRvTGlzdChmaW5hbCBDb250ZXh0IGNvbnRleHQsCisgICAgICAgICAgICBmaW5hbCBBcnJheUxpc3Q8TG9jYWxlUmVuZGVyZXI+IGxpc3QsIGZpbmFsIFN0cmluZyBsb2NhbGUpIHsKKyAgICAgICAgaWYgKG51bGwgIT0gbG9jYWxlKSB7CisgICAgICAgICAgICBsaXN0LmFkZChuZXcgTG9jYWxlUmVuZGVyZXIoY29udGV4dCwgbG9jYWxlKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBIZWxwZXIgbWV0aG9kIHRvIGdldCB0aGUgbGlzdCBvZiBsb2NhbGVzIHRvIGRpc3BsYXkgZm9yIHRoaXMgd29yZAorICAgIHB1YmxpYyBBcnJheUxpc3Q8TG9jYWxlUmVuZGVyZXI+IGdldExvY2FsZXNMaXN0KGZpbmFsIEFjdGl2aXR5IGFjdGl2aXR5KSB7CisgICAgICAgIGZpbmFsIFRyZWVTZXQ8U3RyaW5nPiBsb2NhbGVzID0gVXNlckRpY3Rpb25hcnlMaXN0LmdldFVzZXJEaWN0aW9uYXJ5TG9jYWxlc1NldChhY3Rpdml0eSk7CisgICAgICAgIC8vIFJlbW92ZSBvdXIgbG9jYWxlIGlmIGl0J3MgaW4sIGJlY2F1c2Ugd2UncmUgYWx3YXlzIGdvbm5hIHB1dCBpdCBhdCB0aGUgdG9wCisgICAgICAgIGxvY2FsZXMucmVtb3ZlKG1Mb2NhbGUpOyAvLyBtTG9jYWxlIG1heSBub3QgYmUgbnVsbAorICAgICAgICBmaW5hbCBTdHJpbmcgc3lzdGVtTG9jYWxlID0gTG9jYWxlLmdldERlZmF1bHQoKS50b1N0cmluZygpOworICAgICAgICAvLyBUaGUgc3lzdGVtIGxvY2FsZSBzaG91bGQgYmUgaW5zaWRlLiBXZSB3YW50IGl0IGF0IHRoZSAybmQgc3BvdC4KKyAgICAgICAgbG9jYWxlcy5yZW1vdmUoc3lzdGVtTG9jYWxlKTsgLy8gc3lzdGVtIGxvY2FsZSBtYXkgbm90IGJlIG51bGwKKyAgICAgICAgbG9jYWxlcy5yZW1vdmUoIiIpOyAvLyBSZW1vdmUgdGhlIGVtcHR5IHN0cmluZyBpZiBpdCdzIHRoZXJlCisgICAgICAgIGZpbmFsIEFycmF5TGlzdDxMb2NhbGVSZW5kZXJlcj4gbG9jYWxlc0xpc3QgPSBuZXcgQXJyYXlMaXN0PExvY2FsZVJlbmRlcmVyPigpOworICAgICAgICAvLyBBZGQgdGhlIHBhc3NlZCBsb2NhbGUsIHRoZW4gdGhlIHN5c3RlbSBsb2NhbGUgYXQgdGhlIHRvcCBvZiB0aGUgbGlzdC4gQWRkIGFuCisgICAgICAgIC8vICJhbGwgbGFuZ3VhZ2VzIiBlbnRyeSBhdCB0aGUgYm90dG9tIG9mIHRoZSBsaXN0LgorICAgICAgICBhZGRMb2NhbGVEaXNwbGF5TmFtZVRvTGlzdChhY3Rpdml0eSwgbG9jYWxlc0xpc3QsIG1Mb2NhbGUpOworICAgICAgICBpZiAoIXN5c3RlbUxvY2FsZS5lcXVhbHMobUxvY2FsZSkpIHsKKyAgICAgICAgICAgIGFkZExvY2FsZURpc3BsYXlOYW1lVG9MaXN0KGFjdGl2aXR5LCBsb2NhbGVzTGlzdCwgc3lzdGVtTG9jYWxlKTsKKyAgICAgICAgfQorICAgICAgICBmb3IgKGZpbmFsIFN0cmluZyBsIDogbG9jYWxlcykgeworICAgICAgICAgICAgLy8gVE9ETzogc29ydCBpbiB1bmljb2RlIG9yZGVyCisgICAgICAgICAgICBhZGRMb2NhbGVEaXNwbGF5TmFtZVRvTGlzdChhY3Rpdml0eSwgbG9jYWxlc0xpc3QsIGwpOworICAgICAgICB9CisgICAgICAgIGlmICghIiIuZXF1YWxzKG1Mb2NhbGUpKSB7CisgICAgICAgICAgICAvLyBJZiBtTG9jYWxlIGlzICIiLCB0aGVuIHdlIGFscmVhZHkgaW5zZXJ0ZWQgdGhlICJhbGwgbGFuZ3VhZ2VzIiBpdGVtLCBzbyBkb24ndCBkbyBpdAorICAgICAgICAgICAgYWRkTG9jYWxlRGlzcGxheU5hbWVUb0xpc3QoYWN0aXZpdHksIGxvY2FsZXNMaXN0LCAiIik7IC8vIG1lYW5pbmc6IGFsbCBsYW5ndWFnZXMKKyAgICAgICAgfQorICAgICAgICBsb2NhbGVzTGlzdC5hZGQobmV3IExvY2FsZVJlbmRlcmVyKGFjdGl2aXR5LCBudWxsKSk7IC8vIG1lYW5pbmc6IHNlbGVjdCBhbm90aGVyIGxvY2FsZQorICAgICAgICByZXR1cm4gbG9jYWxlc0xpc3Q7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvbGF0aW4vdXNlcmRpY3Rpb25hcnkvVXNlckRpY3Rpb25hcnlBZGRXb3JkRnJhZ21lbnQuamF2YSBiL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2xhdGluL3VzZXJkaWN0aW9uYXJ5L1VzZXJEaWN0aW9uYXJ5QWRkV29yZEZyYWdtZW50LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWY0YzQ0NgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2xhdGluL3VzZXJkaWN0aW9uYXJ5L1VzZXJEaWN0aW9uYXJ5QWRkV29yZEZyYWdtZW50LmphdmEKQEAgLTAsMCArMSwxNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCitwYWNrYWdlIGNvbS5hbmRyb2lkLmlucHV0bWV0aG9kLmxhdGluLnVzZXJkaWN0aW9uYXJ5OworCitpbXBvcnQgY29tLmFuZHJvaWQuaW5wdXRtZXRob2QubGF0aW4uUjsKK2ltcG9ydCBjb20uYW5kcm9pZC5pbnB1dG1ldGhvZC5sYXRpbi51c2VyZGljdGlvbmFyeS5Vc2VyRGljdGlvbmFyeUFkZFdvcmRDb250ZW50cy5Mb2NhbGVSZW5kZXJlcjsKK2ltcG9ydCBjb20uYW5kcm9pZC5pbnB1dG1ldGhvZC5sYXRpbi51c2VyZGljdGlvbmFyeS5Vc2VyRGljdGlvbmFyeUxvY2FsZVBpY2tlci5Mb2NhdGlvbkNoYW5nZWRMaXN0ZW5lcjsKKworaW1wb3J0IGFuZHJvaWQuYXBwLkZyYWdtZW50OworaW1wb3J0IGFuZHJvaWQub3MuQnVuZGxlOworaW1wb3J0IGFuZHJvaWQucHJlZmVyZW5jZS5QcmVmZXJlbmNlQWN0aXZpdHk7CitpbXBvcnQgYW5kcm9pZC52aWV3LkxheW91dEluZmxhdGVyOworaW1wb3J0IGFuZHJvaWQudmlldy5NZW51OworaW1wb3J0IGFuZHJvaWQudmlldy5NZW51SW5mbGF0ZXI7CitpbXBvcnQgYW5kcm9pZC52aWV3Lk1lbnVJdGVtOworaW1wb3J0IGFuZHJvaWQudmlldy5WaWV3OworaW1wb3J0IGFuZHJvaWQudmlldy5WaWV3R3JvdXA7CitpbXBvcnQgYW5kcm9pZC53aWRnZXQuQWRhcHRlclZpZXc7CitpbXBvcnQgYW5kcm9pZC53aWRnZXQuQXJyYXlBZGFwdGVyOworaW1wb3J0IGFuZHJvaWQud2lkZ2V0LlNwaW5uZXI7CisKK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OworaW1wb3J0IGphdmEudXRpbC5Mb2NhbGU7CisKKy8vIENhdmVhdDogVGhpcyBjbGFzcyBpcyBiYXNpY2FsbHkgdGFrZW4gZnJvbQorLy8gcGFja2FnZXMvYXBwcy9TZXR0aW5ncy9zcmMvY29tL2FuZHJvaWQvc2V0dGluZ3MvaW5wdXRtZXRob2QvVXNlckRpY3Rpb25hcnlBZGRXb3JkRnJhZ21lbnQuamF2YQorLy8gaW4gb3JkZXIgdG8gZGVhbCB3aXRoIHNvbWUgZGV2aWNlcyB0aGF0IGhhdmUgaXNzdWVzIHdpdGggdGhlIHVzZXIgZGljdGlvbmFyeSBoYW5kbGluZworCisvKioKKyAqIEZyYWdtZW50IHRvIGFkZCBhIHdvcmQvc2hvcnRjdXQgdG8gdGhlIHVzZXIgZGljdGlvbmFyeS4KKyAqCisgKiBBcyBvcHBvc2VkIHRvIHRoZSBVc2VyRGljdGlvbmFyeUFjdGl2aXR5LCB0aGlzIGlzIG9ubHkgaW52b2tlZCB3aXRoaW4gU2V0dGluZ3MKKyAqIGZyb20gdGhlIFVzZXJEaWN0aW9uYXJ5U2V0dGluZ3MuCisgKi8KK3B1YmxpYyBjbGFzcyBVc2VyRGljdGlvbmFyeUFkZFdvcmRGcmFnbWVudCBleHRlbmRzIEZyYWdtZW50CisgICAgICAgIGltcGxlbWVudHMgQWRhcHRlclZpZXcuT25JdGVtU2VsZWN0ZWRMaXN0ZW5lciwgTG9jYXRpb25DaGFuZ2VkTGlzdGVuZXIgeworCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IE9QVElPTlNfTUVOVV9BREQgPSBNZW51LkZJUlNUOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBPUFRJT05TX01FTlVfREVMRVRFID0gTWVudS5GSVJTVCArIDE7CisKKyAgICBwcml2YXRlIFVzZXJEaWN0aW9uYXJ5QWRkV29yZENvbnRlbnRzIG1Db250ZW50czsKKyAgICBwcml2YXRlIFZpZXcgbVJvb3RWaWV3OworICAgIHByaXZhdGUgYm9vbGVhbiBtSXNEZWxldGluZyA9IGZhbHNlOworCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIHZvaWQgb25BY3Rpdml0eUNyZWF0ZWQoQnVuZGxlIHNhdmVkSW5zdGFuY2VTdGF0ZSkgeworICAgICAgICBzdXBlci5vbkFjdGl2aXR5Q3JlYXRlZChzYXZlZEluc3RhbmNlU3RhdGUpOworICAgICAgICBzZXRIYXNPcHRpb25zTWVudSh0cnVlKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgVmlldyBvbkNyZWF0ZVZpZXcoTGF5b3V0SW5mbGF0ZXIgaW5mbGF0ZXIsIFZpZXdHcm91cCBjb250YWluZXIsIEJ1bmRsZSBzYXZlZFN0YXRlKSB7CisgICAgICAgIG1Sb290VmlldyA9IGluZmxhdGVyLmluZmxhdGUoUi5sYXlvdXQudXNlcl9kaWN0aW9uYXJ5X2FkZF93b3JkX2Z1bGxzY3JlZW4sIG51bGwpOworICAgICAgICBtSXNEZWxldGluZyA9IGZhbHNlOworICAgICAgICBpZiAobnVsbCA9PSBtQ29udGVudHMpIHsKKyAgICAgICAgICAgIG1Db250ZW50cyA9IG5ldyBVc2VyRGljdGlvbmFyeUFkZFdvcmRDb250ZW50cyhtUm9vdFZpZXcsIGdldEFyZ3VtZW50cygpKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbVJvb3RWaWV3OworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyB2b2lkIG9uQ3JlYXRlT3B0aW9uc01lbnUoTWVudSBtZW51LCBNZW51SW5mbGF0ZXIgaW5mbGF0ZXIpIHsKKyAgICAgICAgZmluYWwgTWVudUl0ZW0gYWN0aW9uSXRlbURlbGV0ZSA9IG1lbnUuYWRkKDAsIE9QVElPTlNfTUVOVV9ERUxFVEUsIDAsCisgICAgICAgICAgICAgICAgUi5zdHJpbmcudXNlcl9kaWN0X3NldHRpbmdzX2RlbGV0ZSkuc2V0SWNvbihhbmRyb2lkLlIuZHJhd2FibGUuaWNfbWVudV9kZWxldGUpOworICAgICAgICBhY3Rpb25JdGVtRGVsZXRlLnNldFNob3dBc0FjdGlvbigKKyAgICAgICAgICAgICAgICBNZW51SXRlbS5TSE9XX0FTX0FDVElPTl9JRl9ST09NIHwgTWVudUl0ZW0uU0hPV19BU19BQ1RJT05fV0lUSF9URVhUKTsKKyAgICAgICAgZmluYWwgTWVudUl0ZW0gYWN0aW9uSXRlbUFkZCA9IG1lbnUuYWRkKDAsIE9QVElPTlNfTUVOVV9BREQsIDAsCisgICAgICAgICAgICAgICAgUi5zdHJpbmcudXNlcl9kaWN0X3NldHRpbmdzX2RlbGV0ZSkuc2V0SWNvbihSLmRyYXdhYmxlLmljX21lbnVfYWRkKTsKKyAgICAgICAgYWN0aW9uSXRlbUFkZC5zZXRTaG93QXNBY3Rpb24oCisgICAgICAgICAgICAgICAgTWVudUl0ZW0uU0hPV19BU19BQ1RJT05fSUZfUk9PTSB8IE1lbnVJdGVtLlNIT1dfQVNfQUNUSU9OX1dJVEhfVEVYVCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ2FsbGJhY2sgZm9yIHRoZSBmcmFtZXdvcmsgd2hlbiBhIG1lbnUgb3B0aW9uIGlzIHByZXNzZWQuCisgICAgICoKKyAgICAgKiBAcGFyYW0gTWVudUl0ZW0gdGhlIGl0ZW0gdGhhdCB3YXMgcHJlc3NlZAorICAgICAqIEByZXR1cm4gZmFsc2UgdG8gYWxsb3cgbm9ybWFsIG1lbnUgcHJvY2Vzc2luZyB0byBwcm9jZWVkLCB0cnVlIHRvIGNvbnN1bWUgaXQgaGVyZQorICAgICAqLworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBib29sZWFuIG9uT3B0aW9uc0l0ZW1TZWxlY3RlZChNZW51SXRlbSBpdGVtKSB7CisgICAgICAgIGlmIChpdGVtLmdldEl0ZW1JZCgpID09IE9QVElPTlNfTUVOVV9BREQpIHsKKyAgICAgICAgICAgIC8vIGFkZGVkIHRoZSBlbnRyeSBpbiAib25QYXVzZSIKKyAgICAgICAgICAgIGdldEFjdGl2aXR5KCkub25CYWNrUHJlc3NlZCgpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGl0ZW0uZ2V0SXRlbUlkKCkgPT0gT1BUSU9OU19NRU5VX0RFTEVURSkgeworICAgICAgICAgICAgbUNvbnRlbnRzLmRlbGV0ZShnZXRBY3Rpdml0eSgpKTsKKyAgICAgICAgICAgIG1Jc0RlbGV0aW5nID0gdHJ1ZTsKKyAgICAgICAgICAgIGdldEFjdGl2aXR5KCkub25CYWNrUHJlc3NlZCgpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyB2b2lkIG9uUmVzdW1lKCkgeworICAgICAgICBzdXBlci5vblJlc3VtZSgpOworICAgICAgICAvLyBXZSBhcmUgYmVpbmcgc2hvd246IGRpc3BsYXkgdGhlIHdvcmQKKyAgICAgICAgdXBkYXRlU3Bpbm5lcigpOworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCB1cGRhdGVTcGlubmVyKCkgeworICAgICAgICBmaW5hbCBBcnJheUxpc3Q8TG9jYWxlUmVuZGVyZXI+IGxvY2FsZXNMaXN0ID0gbUNvbnRlbnRzLmdldExvY2FsZXNMaXN0KGdldEFjdGl2aXR5KCkpOworCisgICAgICAgIGZpbmFsIFNwaW5uZXIgbG9jYWxlU3Bpbm5lciA9CisgICAgICAgICAgICAgICAgKFNwaW5uZXIpbVJvb3RWaWV3LmZpbmRWaWV3QnlJZChSLmlkLnVzZXJfZGljdGlvbmFyeV9hZGRfbG9jYWxlKTsKKyAgICAgICAgZmluYWwgQXJyYXlBZGFwdGVyPExvY2FsZVJlbmRlcmVyPiBhZGFwdGVyID0gbmV3IEFycmF5QWRhcHRlcjxMb2NhbGVSZW5kZXJlcj4oZ2V0QWN0aXZpdHkoKSwKKyAgICAgICAgICAgICAgICBhbmRyb2lkLlIubGF5b3V0LnNpbXBsZV9zcGlubmVyX2l0ZW0sIGxvY2FsZXNMaXN0KTsKKyAgICAgICAgYWRhcHRlci5zZXREcm9wRG93blZpZXdSZXNvdXJjZShhbmRyb2lkLlIubGF5b3V0LnNpbXBsZV9zcGlubmVyX2Ryb3Bkb3duX2l0ZW0pOworICAgICAgICBsb2NhbGVTcGlubmVyLnNldEFkYXB0ZXIoYWRhcHRlcik7CisgICAgICAgIGxvY2FsZVNwaW5uZXIuc2V0T25JdGVtU2VsZWN0ZWRMaXN0ZW5lcih0aGlzKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgdm9pZCBvblBhdXNlKCkgeworICAgICAgICBzdXBlci5vblBhdXNlKCk7CisgICAgICAgIC8vIFdlIGFyZSBiZWluZyBoaWRkZW46IGNvbW1pdCBjaGFuZ2VzIHRvIHRoZSB1c2VyIGRpY3Rpb25hcnksIHVubGVzcyB3ZSB3ZXJlIGRlbGV0aW5nIGl0CisgICAgICAgIGlmICghbUlzRGVsZXRpbmcpIHsKKyAgICAgICAgICAgIG1Db250ZW50cy5hcHBseShnZXRBY3Rpdml0eSgpLCBudWxsKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyB2b2lkIG9uSXRlbVNlbGVjdGVkKGZpbmFsIEFkYXB0ZXJWaWV3PD8+IHBhcmVudCwgZmluYWwgVmlldyB2aWV3LCBmaW5hbCBpbnQgcG9zLAorICAgICAgICAgICAgZmluYWwgbG9uZyBpZCkgeworICAgICAgICBmaW5hbCBMb2NhbGVSZW5kZXJlciBsb2NhbGUgPSAoTG9jYWxlUmVuZGVyZXIpcGFyZW50LmdldEl0ZW1BdFBvc2l0aW9uKHBvcyk7CisgICAgICAgIGlmIChsb2NhbGUuaXNNb3JlTGFuZ3VhZ2VzKCkpIHsKKyAgICAgICAgICAgIFByZWZlcmVuY2VBY3Rpdml0eSBwcmVmZXJlbmNlQWN0aXZpdHkgPSAoUHJlZmVyZW5jZUFjdGl2aXR5KWdldEFjdGl2aXR5KCk7CisgICAgICAgICAgICBwcmVmZXJlbmNlQWN0aXZpdHkuc3RhcnRQcmVmZXJlbmNlRnJhZ21lbnQobmV3IFVzZXJEaWN0aW9uYXJ5TG9jYWxlUGlja2VyKCksIHRydWUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbUNvbnRlbnRzLnVwZGF0ZUxvY2FsZShsb2NhbGUuZ2V0TG9jYWxlU3RyaW5nKCkpOworICAgICAgICB9CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIHZvaWQgb25Ob3RoaW5nU2VsZWN0ZWQoZmluYWwgQWRhcHRlclZpZXc8Pz4gcGFyZW50KSB7CisgICAgICAgIC8vIEknbSBub3Qgc3VyZSB3ZSBjYW4gY29tZSBoZXJlLCBidXQgaWYgd2UgZG8sIHRoYXQncyB0aGUgcmlnaHQgdGhpbmcgdG8gZG8uCisgICAgICAgIGZpbmFsIEJ1bmRsZSBhcmdzID0gZ2V0QXJndW1lbnRzKCk7CisgICAgICAgIG1Db250ZW50cy51cGRhdGVMb2NhbGUoYXJncy5nZXRTdHJpbmcoVXNlckRpY3Rpb25hcnlBZGRXb3JkQ29udGVudHMuRVhUUkFfTE9DQUxFKSk7CisgICAgfQorCisgICAgLy8gQ2FsbGVkIGJ5IHRoZSBsb2NhbGUgcGlja2VyCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIHZvaWQgb25Mb2NhbGVTZWxlY3RlZChmaW5hbCBMb2NhbGUgbG9jYWxlKSB7CisgICAgICAgIG1Db250ZW50cy51cGRhdGVMb2NhbGUobG9jYWxlLnRvU3RyaW5nKCkpOworICAgICAgICBnZXRBY3Rpdml0eSgpLm9uQmFja1ByZXNzZWQoKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9sYXRpbi91c2VyZGljdGlvbmFyeS9Vc2VyRGljdGlvbmFyeUxpc3QuamF2YSBiL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2xhdGluL3VzZXJkaWN0aW9uYXJ5L1VzZXJEaWN0aW9uYXJ5TGlzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZlNjQ4ODIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9sYXRpbi91c2VyZGljdGlvbmFyeS9Vc2VyRGljdGlvbmFyeUxpc3QuamF2YQpAQCAtMCwwICsxLDEyNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKK3BhY2thZ2UgY29tLmFuZHJvaWQuaW5wdXRtZXRob2QubGF0aW4udXNlcmRpY3Rpb25hcnk7CisKK2ltcG9ydCBjb20uYW5kcm9pZC5pbnB1dG1ldGhvZC5sYXRpbi5Mb2NhbGVVdGlsczsKK2ltcG9ydCBjb20uYW5kcm9pZC5pbnB1dG1ldGhvZC5sYXRpbi5SOworCitpbXBvcnQgYW5kcm9pZC5hcHAuQWN0aXZpdHk7CitpbXBvcnQgYW5kcm9pZC5jb250ZW50LkludGVudDsKK2ltcG9ydCBhbmRyb2lkLmRhdGFiYXNlLkN1cnNvcjsKK2ltcG9ydCBhbmRyb2lkLm9zLkJ1bmRsZTsKK2ltcG9ydCBhbmRyb2lkLnByZWZlcmVuY2UuUHJlZmVyZW5jZTsKK2ltcG9ydCBhbmRyb2lkLnByZWZlcmVuY2UuUHJlZmVyZW5jZUZyYWdtZW50OworaW1wb3J0IGFuZHJvaWQucHJlZmVyZW5jZS5QcmVmZXJlbmNlR3JvdXA7CitpbXBvcnQgYW5kcm9pZC5wcm92aWRlci5Vc2VyRGljdGlvbmFyeTsKK2ltcG9ydCBhbmRyb2lkLnRleHQuVGV4dFV0aWxzOworCitpbXBvcnQgamF2YS51dGlsLkxvY2FsZTsKK2ltcG9ydCBqYXZhLnV0aWwuVHJlZVNldDsKKworLy8gQ2F2ZWF0OiBUaGlzIGNsYXNzIGlzIGJhc2ljYWxseSB0YWtlbiBmcm9tCisvLyBwYWNrYWdlcy9hcHBzL1NldHRpbmdzL3NyYy9jb20vYW5kcm9pZC9zZXR0aW5ncy9pbnB1dG1ldGhvZC9Vc2VyRGljdGlvbmFyeUxpc3QuamF2YQorLy8gaW4gb3JkZXIgdG8gZGVhbCB3aXRoIHNvbWUgZGV2aWNlcyB0aGF0IGhhdmUgaXNzdWVzIHdpdGggdGhlIHVzZXIgZGljdGlvbmFyeSBoYW5kbGluZworCitwdWJsaWMgY2xhc3MgVXNlckRpY3Rpb25hcnlMaXN0IGV4dGVuZHMgUHJlZmVyZW5jZUZyYWdtZW50IHsKKworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFVTRVJfRElDVElPTkFSWV9TRVRUSU5HU19JTlRFTlRfQUNUSU9OID0KKyAgICAgICAgICAgICJhbmRyb2lkLnNldHRpbmdzLlVTRVJfRElDVElPTkFSWV9TRVRUSU5HUyI7CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgdm9pZCBvbkNyZWF0ZShCdW5kbGUgaWNpY2xlKSB7CisgICAgICAgIHN1cGVyLm9uQ3JlYXRlKGljaWNsZSk7CisgICAgICAgIHNldFByZWZlcmVuY2VTY3JlZW4oZ2V0UHJlZmVyZW5jZU1hbmFnZXIoKS5jcmVhdGVQcmVmZXJlbmNlU2NyZWVuKGdldEFjdGl2aXR5KCkpKTsKKyAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIFRyZWVTZXQ8U3RyaW5nPiBnZXRVc2VyRGljdGlvbmFyeUxvY2FsZXNTZXQoQWN0aXZpdHkgYWN0aXZpdHkpIHsKKyAgICAgICAgQFN1cHByZXNzV2FybmluZ3MoImRlcHJlY2F0aW9uIikKKyAgICAgICAgZmluYWwgQ3Vyc29yIGN1cnNvciA9IGFjdGl2aXR5Lm1hbmFnZWRRdWVyeShVc2VyRGljdGlvbmFyeS5Xb3Jkcy5DT05URU5UX1VSSSwKKyAgICAgICAgICAgICAgICBuZXcgU3RyaW5nW10geyBVc2VyRGljdGlvbmFyeS5Xb3Jkcy5MT0NBTEUgfSwKKyAgICAgICAgICAgICAgICBudWxsLCBudWxsLCBudWxsKTsKKyAgICAgICAgZmluYWwgVHJlZVNldDxTdHJpbmc+IGxvY2FsZUxpc3QgPSBuZXcgVHJlZVNldDxTdHJpbmc+KCk7CisgICAgICAgIGJvb2xlYW4gYWRkZWRBbGxMb2NhbGUgPSBmYWxzZTsKKyAgICAgICAgaWYgKG51bGwgPT0gY3Vyc29yKSB7CisgICAgICAgICAgICAvLyBUaGUgdXNlciBkaWN0aW9uYXJ5IHNlcnZpY2UgaXMgbm90IHByZXNlbnQgb3IgZGlzYWJsZWQuIFJldHVybiBudWxsLgorICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgIH0gZWxzZSBpZiAoY3Vyc29yLm1vdmVUb0ZpcnN0KCkpIHsKKyAgICAgICAgICAgIGZpbmFsIGludCBjb2x1bW5JbmRleCA9IGN1cnNvci5nZXRDb2x1bW5JbmRleChVc2VyRGljdGlvbmFyeS5Xb3Jkcy5MT0NBTEUpOworICAgICAgICAgICAgZG8geworICAgICAgICAgICAgICAgIGZpbmFsIFN0cmluZyBsb2NhbGUgPSBjdXJzb3IuZ2V0U3RyaW5nKGNvbHVtbkluZGV4KTsKKyAgICAgICAgICAgICAgICBmaW5hbCBib29sZWFuIGFsbExvY2FsZSA9IFRleHRVdGlscy5pc0VtcHR5KGxvY2FsZSk7CisgICAgICAgICAgICAgICAgbG9jYWxlTGlzdC5hZGQoYWxsTG9jYWxlID8gIiIgOiBsb2NhbGUpOworICAgICAgICAgICAgICAgIGlmIChhbGxMb2NhbGUpIHsKKyAgICAgICAgICAgICAgICAgICAgYWRkZWRBbGxMb2NhbGUgPSB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gd2hpbGUgKGN1cnNvci5tb3ZlVG9OZXh0KCkpOworICAgICAgICB9CisgICAgICAgIGlmICghVXNlckRpY3Rpb25hcnlTZXR0aW5ncy5JU19TSE9SVENVVF9BUElfU1VQUE9SVEVEICYmICFhZGRlZEFsbExvY2FsZSkgeworICAgICAgICAgICAgLy8gRm9yIElDUywgd2UgbmVlZCB0byBzaG93ICJGb3IgYWxsIGxhbmd1YWdlcyIgaW4gY2FzZSB0aGF0IHRoZSBrZXlib2FyZCBsb2NhbGUKKyAgICAgICAgICAgIC8vIGlzIGRpZmZlcmVudCBmcm9tIHRoZSBzeXN0ZW0gbG9jYWxlCisgICAgICAgICAgICBsb2NhbGVMaXN0LmFkZCgiIik7CisgICAgICAgIH0KKyAgICAgICAgbG9jYWxlTGlzdC5hZGQoTG9jYWxlLmdldERlZmF1bHQoKS50b1N0cmluZygpKTsKKyAgICAgICAgcmV0dXJuIGxvY2FsZUxpc3Q7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ3JlYXRlcyB0aGUgZW50cmllcyB0aGF0IGFsbG93IHRoZSB1c2VyIHRvIGdvIGludG8gdGhlIHVzZXIgZGljdGlvbmFyeSBmb3IgZWFjaCBsb2NhbGUuCisgICAgICogQHBhcmFtIHVzZXJEaWN0R3JvdXAgVGhlIGdyb3VwIHRvIHB1dCB0aGUgc2V0dGluZ3MgaW4uCisgICAgICovCisgICAgcHJvdGVjdGVkIHZvaWQgY3JlYXRlVXNlckRpY3RTZXR0aW5ncyhQcmVmZXJlbmNlR3JvdXAgdXNlckRpY3RHcm91cCkgeworICAgICAgICBmaW5hbCBBY3Rpdml0eSBhY3Rpdml0eSA9IGdldEFjdGl2aXR5KCk7CisgICAgICAgIHVzZXJEaWN0R3JvdXAucmVtb3ZlQWxsKCk7CisgICAgICAgIGZpbmFsIFRyZWVTZXQ8U3RyaW5nPiBsb2NhbGVMaXN0ID0KKyAgICAgICAgICAgICAgICBVc2VyRGljdGlvbmFyeUxpc3QuZ2V0VXNlckRpY3Rpb25hcnlMb2NhbGVzU2V0KGFjdGl2aXR5KTsKKworICAgICAgICBpZiAobG9jYWxlTGlzdC5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIHVzZXJEaWN0R3JvdXAuYWRkUHJlZmVyZW5jZShjcmVhdGVVc2VyRGljdGlvbmFyeVByZWZlcmVuY2UobnVsbCwgYWN0aXZpdHkpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGZvciAoU3RyaW5nIGxvY2FsZSA6IGxvY2FsZUxpc3QpIHsKKyAgICAgICAgICAgICAgICB1c2VyRGljdEdyb3VwLmFkZFByZWZlcmVuY2UoY3JlYXRlVXNlckRpY3Rpb25hcnlQcmVmZXJlbmNlKGxvY2FsZSwgYWN0aXZpdHkpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIENyZWF0ZSBhIHNpbmdsZSBVc2VyIERpY3Rpb25hcnkgUHJlZmVyZW5jZSBvYmplY3QsIHdpdGggaXRzIHBhcmFtZXRlcnMgc2V0LgorICAgICAqIEBwYXJhbSBsb2NhbGUgVGhlIGxvY2FsZSBmb3Igd2hpY2ggdGhpcyB1c2VyIGRpY3Rpb25hcnkgaXMgZm9yLgorICAgICAqIEByZXR1cm4gVGhlIGNvcnJlc3BvbmRpbmcgcHJlZmVyZW5jZS4KKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgUHJlZmVyZW5jZSBjcmVhdGVVc2VyRGljdGlvbmFyeVByZWZlcmVuY2UoU3RyaW5nIGxvY2FsZSwgQWN0aXZpdHkgYWN0aXZpdHkpIHsKKyAgICAgICAgZmluYWwgUHJlZmVyZW5jZSBuZXdQcmVmID0gbmV3IFByZWZlcmVuY2UoZ2V0QWN0aXZpdHkoKSk7CisgICAgICAgIGZpbmFsIEludGVudCBpbnRlbnQgPSBuZXcgSW50ZW50KFVTRVJfRElDVElPTkFSWV9TRVRUSU5HU19JTlRFTlRfQUNUSU9OKTsKKyAgICAgICAgaWYgKG51bGwgPT0gbG9jYWxlKSB7CisgICAgICAgICAgICBuZXdQcmVmLnNldFRpdGxlKExvY2FsZS5nZXREZWZhdWx0KCkuZ2V0RGlzcGxheU5hbWUoKSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAoIiIuZXF1YWxzKGxvY2FsZSkpCisgICAgICAgICAgICAgICAgbmV3UHJlZi5zZXRUaXRsZShnZXRTdHJpbmcoUi5zdHJpbmcudXNlcl9kaWN0X3NldHRpbmdzX2FsbF9sYW5ndWFnZXMpKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBuZXdQcmVmLnNldFRpdGxlKExvY2FsZVV0aWxzLmNvbnN0cnVjdExvY2FsZUZyb21TdHJpbmcobG9jYWxlKS5nZXREaXNwbGF5TmFtZSgpKTsKKyAgICAgICAgICAgIGludGVudC5wdXRFeHRyYSgibG9jYWxlIiwgbG9jYWxlKTsKKyAgICAgICAgICAgIG5ld1ByZWYuZ2V0RXh0cmFzKCkucHV0U3RyaW5nKCJsb2NhbGUiLCBsb2NhbGUpOworICAgICAgICB9CisgICAgICAgIG5ld1ByZWYuc2V0SW50ZW50KGludGVudCk7CisgICAgICAgIG5ld1ByZWYuc2V0RnJhZ21lbnQoVXNlckRpY3Rpb25hcnlTZXR0aW5ncy5jbGFzcy5nZXROYW1lKCkpOworICAgICAgICByZXR1cm4gbmV3UHJlZjsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgdm9pZCBvblJlc3VtZSgpIHsKKyAgICAgICAgc3VwZXIub25SZXN1bWUoKTsKKyAgICAgICAgY3JlYXRlVXNlckRpY3RTZXR0aW5ncyhnZXRQcmVmZXJlbmNlU2NyZWVuKCkpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2xhdGluL3VzZXJkaWN0aW9uYXJ5L1VzZXJEaWN0aW9uYXJ5TG9jYWxlUGlja2VyLmphdmEgYi9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9sYXRpbi91c2VyZGljdGlvbmFyeS9Vc2VyRGljdGlvbmFyeUxvY2FsZVBpY2tlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU4ZDNmYjkKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9sYXRpbi91c2VyZGljdGlvbmFyeS9Vc2VyRGljdGlvbmFyeUxvY2FsZVBpY2tlci5qYXZhCkBAIC0wLDAgKzEsMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCitwYWNrYWdlIGNvbS5hbmRyb2lkLmlucHV0bWV0aG9kLmxhdGluLnVzZXJkaWN0aW9uYXJ5OworCitpbXBvcnQgYW5kcm9pZC5hcHAuRnJhZ21lbnQ7CisKK2ltcG9ydCBqYXZhLnV0aWwuTG9jYWxlOworCisvLyBDYXZlYXQ6IFRoaXMgY2xhc3MgaXMgYmFzaWNhbGx5IHRha2VuIGZyb20KKy8vIHBhY2thZ2VzL2FwcHMvU2V0dGluZ3Mvc3JjL2NvbS9hbmRyb2lkL3NldHRpbmdzL2lucHV0bWV0aG9kL1VzZXJEaWN0aW9uYXJ5TG9jYWxlUGlja2VyLmphdmEKKy8vIGluIG9yZGVyIHRvIGRlYWwgd2l0aCBzb21lIGRldmljZXMgdGhhdCBoYXZlIGlzc3VlcyB3aXRoIHRoZSB1c2VyIGRpY3Rpb25hcnkgaGFuZGxpbmcKKworcHVibGljIGNsYXNzIFVzZXJEaWN0aW9uYXJ5TG9jYWxlUGlja2VyIGV4dGVuZHMgRnJhZ21lbnQgeworICAgIHB1YmxpYyBVc2VyRGljdGlvbmFyeUxvY2FsZVBpY2tlcigpIHsKKyAgICAgICAgc3VwZXIoKTsKKyAgICAgICAgLy8gVE9ETzogaW1wbGVtZW50CisgICAgfQorCisgICAgcHVibGljIGludGVyZmFjZSBMb2NhdGlvbkNoYW5nZWRMaXN0ZW5lciB7CisgICAgICAgIHB1YmxpYyB2b2lkIG9uTG9jYWxlU2VsZWN0ZWQoTG9jYWxlIGxvY2FsZSk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvbGF0aW4vdXNlcmRpY3Rpb25hcnkvVXNlckRpY3Rpb25hcnlTZXR0aW5ncy5qYXZhIGIvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvbGF0aW4vdXNlcmRpY3Rpb25hcnkvVXNlckRpY3Rpb25hcnlTZXR0aW5ncy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM2YmM1YmEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9sYXRpbi91c2VyZGljdGlvbmFyeS9Vc2VyRGljdGlvbmFyeVNldHRpbmdzLmphdmEKQEAgLTAsMCArMSwzMzMgQEAKKy8qKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuCisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7IHlvdSBtYXkgbm90CisgKiB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weQorICogb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUCisgKiBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuIFNlZSB0aGUKKyAqIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCitwYWNrYWdlIGNvbS5hbmRyb2lkLmlucHV0bWV0aG9kLmxhdGluLnVzZXJkaWN0aW9uYXJ5OworCitpbXBvcnQgY29tLmFuZHJvaWQuaW5wdXRtZXRob2QubGF0aW4uUjsKKworaW1wb3J0IGFuZHJvaWQuYXBwLkxpc3RGcmFnbWVudDsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQuQ29udGVudFJlc29sdmVyOworaW1wb3J0IGFuZHJvaWQuY29udGVudC5Db250ZXh0OworaW1wb3J0IGFuZHJvaWQuY29udGVudC5JbnRlbnQ7CitpbXBvcnQgYW5kcm9pZC5kYXRhYmFzZS5DdXJzb3I7CitpbXBvcnQgYW5kcm9pZC5vcy5CdWlsZDsKK2ltcG9ydCBhbmRyb2lkLm9zLkJ1bmRsZTsKK2ltcG9ydCBhbmRyb2lkLnByb3ZpZGVyLlVzZXJEaWN0aW9uYXJ5OworaW1wb3J0IGFuZHJvaWQudGV4dC5UZXh0VXRpbHM7CitpbXBvcnQgYW5kcm9pZC52aWV3LkxheW91dEluZmxhdGVyOworaW1wb3J0IGFuZHJvaWQudmlldy5NZW51OworaW1wb3J0IGFuZHJvaWQudmlldy5NZW51SW5mbGF0ZXI7CitpbXBvcnQgYW5kcm9pZC52aWV3Lk1lbnVJdGVtOworaW1wb3J0IGFuZHJvaWQudmlldy5WaWV3OworaW1wb3J0IGFuZHJvaWQudmlldy5WaWV3R3JvdXA7CitpbXBvcnQgYW5kcm9pZC53aWRnZXQuQWxwaGFiZXRJbmRleGVyOworaW1wb3J0IGFuZHJvaWQud2lkZ2V0Lkxpc3RBZGFwdGVyOworaW1wb3J0IGFuZHJvaWQud2lkZ2V0Lkxpc3RWaWV3OworaW1wb3J0IGFuZHJvaWQud2lkZ2V0LlNlY3Rpb25JbmRleGVyOworaW1wb3J0IGFuZHJvaWQud2lkZ2V0LlNpbXBsZUN1cnNvckFkYXB0ZXI7CitpbXBvcnQgYW5kcm9pZC53aWRnZXQuVGV4dFZpZXc7CisKK2ltcG9ydCBqYXZhLnV0aWwuTG9jYWxlOworCisvLyBDYXZlYXQ6IFRoaXMgY2xhc3MgaXMgYmFzaWNhbGx5IHRha2VuIGZyb20KKy8vIHBhY2thZ2VzL2FwcHMvU2V0dGluZ3Mvc3JjL2NvbS9hbmRyb2lkL3NldHRpbmdzL2lucHV0bWV0aG9kL1VzZXJEaWN0aW9uYXJ5U2V0dGluZ3MuamF2YQorLy8gaW4gb3JkZXIgdG8gZGVhbCB3aXRoIHNvbWUgZGV2aWNlcyB0aGF0IGhhdmUgaXNzdWVzIHdpdGggdGhlIHVzZXIgZGljdGlvbmFyeSBoYW5kbGluZworCitwdWJsaWMgY2xhc3MgVXNlckRpY3Rpb25hcnlTZXR0aW5ncyBleHRlbmRzIExpc3RGcmFnbWVudCB7CisKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGJvb2xlYW4gSVNfU0hPUlRDVVRfQVBJX1NVUFBPUlRFRCA9CisgICAgICAgICAgICBCdWlsZC5WRVJTSU9OLlNES19JTlQgPj0gQnVpbGQuVkVSU0lPTl9DT0RFUy5KRUxMWV9CRUFOOworCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nW10gUVVFUllfUFJPSkVDVElPTl9TSE9SVENVVF9VTlNVUFBPUlRFRCA9CisgICAgICAgICAgICB7IFVzZXJEaWN0aW9uYXJ5LldvcmRzLl9JRCwgVXNlckRpY3Rpb25hcnkuV29yZHMuV09SRH07CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nW10gUVVFUllfUFJPSkVDVElPTl9TSE9SVENVVF9TVVBQT1JURUQgPQorICAgICAgICAgICAgeyBVc2VyRGljdGlvbmFyeS5Xb3Jkcy5fSUQsIFVzZXJEaWN0aW9uYXJ5LldvcmRzLldPUkQsIFVzZXJEaWN0aW9uYXJ5LldvcmRzLlNIT1JUQ1VUfTsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmdbXSBRVUVSWV9QUk9KRUNUSU9OID0KKyAgICAgICAgICAgIElTX1NIT1JUQ1VUX0FQSV9TVVBQT1JURUQgPworICAgICAgICAgICAgICAgICAgICBRVUVSWV9QUk9KRUNUSU9OX1NIT1JUQ1VUX1NVUFBPUlRFRCA6IFFVRVJZX1BST0pFQ1RJT05fU0hPUlRDVVRfVU5TVVBQT1JURUQ7CisKKyAgICAvLyBUaGUgaW5kZXggb2YgdGhlIHNob3J0Y3V0IGluIHRoZSBhYm92ZSBhcnJheS4KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgSU5ERVhfU0hPUlRDVVQgPSAyOworCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nW10gQURBUFRFUl9GUk9NX1NIT1JUQ1VUX1VOU1VQUE9SVEVEID0geworICAgICAgICBVc2VyRGljdGlvbmFyeS5Xb3Jkcy5XT1JELAorICAgIH07CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmdbXSBBREFQVEVSX0ZST01fU0hPUlRDVVRfU1VQUE9SVEVEID0geworICAgICAgICBVc2VyRGljdGlvbmFyeS5Xb3Jkcy5XT1JELCBVc2VyRGljdGlvbmFyeS5Xb3Jkcy5TSE9SVENVVAorICAgIH07CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmdbXSBBREFQVEVSX0ZST00gPSBJU19TSE9SVENVVF9BUElfU1VQUE9SVEVEID8KKyAgICAgICAgICAgIEFEQVBURVJfRlJPTV9TSE9SVENVVF9TVVBQT1JURUQgOiBBREFQVEVSX0ZST01fU0hPUlRDVVRfVU5TVVBQT1JURUQ7CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnRbXSBBREFQVEVSX1RPX1NIT1JUQ1VUX1VOU1VQUE9SVEVEID0geworICAgICAgICBhbmRyb2lkLlIuaWQudGV4dDEsCisgICAgfTsKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludFtdIEFEQVBURVJfVE9fU0hPUlRDVVRfU1VQUE9SVEVEID0geworICAgICAgICBhbmRyb2lkLlIuaWQudGV4dDEsIGFuZHJvaWQuUi5pZC50ZXh0MgorICAgIH07CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnRbXSBBREFQVEVSX1RPID0gSVNfU0hPUlRDVVRfQVBJX1NVUFBPUlRFRCA/CisgICAgICAgICAgICBBREFQVEVSX1RPX1NIT1JUQ1VUX1NVUFBPUlRFRCA6IEFEQVBURVJfVE9fU0hPUlRDVVRfVU5TVVBQT1JURUQ7CisKKyAgICAvLyBFaXRoZXIgdGhlIGxvY2FsZSBpcyBlbXB0eSAobWVhbnMgdGhlIHdvcmQgaXMgYXBwbGljYWJsZSB0byBhbGwgbG9jYWxlcykKKyAgICAvLyBvciB0aGUgd29yZCBlcXVhbHMgb3VyIGN1cnJlbnQgbG9jYWxlCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFFVRVJZX1NFTEVDVElPTiA9CisgICAgICAgICAgICBVc2VyRGljdGlvbmFyeS5Xb3Jkcy5MT0NBTEUgKyAiPT8iOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBRVUVSWV9TRUxFQ1RJT05fQUxMX0xPQ0FMRVMgPQorICAgICAgICAgICAgVXNlckRpY3Rpb25hcnkuV29yZHMuTE9DQUxFICsgIiBpcyBudWxsIjsKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBERUxFVEVfU0VMRUNUSU9OX1dJVEhfU0hPUlRDVVQgPSBVc2VyRGljdGlvbmFyeS5Xb3Jkcy5XT1JECisgICAgICAgICAgICArICI9PyBBTkQgIiArIFVzZXJEaWN0aW9uYXJ5LldvcmRzLlNIT1JUQ1VUICsgIj0/IjsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgREVMRVRFX1NFTEVDVElPTl9XSVRIT1VUX1NIT1JUQ1VUID0gVXNlckRpY3Rpb25hcnkuV29yZHMuV09SRAorICAgICAgICAgICAgKyAiPT8gQU5EICIgKyBVc2VyRGljdGlvbmFyeS5Xb3Jkcy5TSE9SVENVVCArICIgaXMgbnVsbCBPUiAiCisgICAgICAgICAgICArIFVzZXJEaWN0aW9uYXJ5LldvcmRzLlNIT1JUQ1VUICsgIj0nJyI7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIERFTEVURV9TRUxFQ1RJT05fU0hPUlRDVVRfVU5TVVBQT1JURUQgPQorICAgICAgICAgICAgVXNlckRpY3Rpb25hcnkuV29yZHMuV09SRCArICI9PyI7CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgT1BUSU9OU19NRU5VX0FERCA9IE1lbnUuRklSU1Q7CisKKyAgICBwcml2YXRlIEN1cnNvciBtQ3Vyc29yOworCisgICAgcHJvdGVjdGVkIFN0cmluZyBtTG9jYWxlOworCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIHZvaWQgb25DcmVhdGUoQnVuZGxlIHNhdmVkSW5zdGFuY2VTdGF0ZSkgeworICAgICAgICBzdXBlci5vbkNyZWF0ZShzYXZlZEluc3RhbmNlU3RhdGUpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBWaWV3IG9uQ3JlYXRlVmlldygKKyAgICAgICAgICAgIExheW91dEluZmxhdGVyIGluZmxhdGVyLCBWaWV3R3JvdXAgY29udGFpbmVyLCBCdW5kbGUgc2F2ZWRJbnN0YW5jZVN0YXRlKSB7CisgICAgICAgIHJldHVybiBpbmZsYXRlci5pbmZsYXRlKAorICAgICAgICAgICAgICAgIFIubGF5b3V0LnVzZXJfZGljdGlvbmFyeV9wcmVmZXJlbmNlX2xpc3RfZnJhZ21lbnQsIGNvbnRhaW5lciwgZmFsc2UpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyB2b2lkIG9uQWN0aXZpdHlDcmVhdGVkKEJ1bmRsZSBzYXZlZEluc3RhbmNlU3RhdGUpIHsKKyAgICAgICAgc3VwZXIub25BY3Rpdml0eUNyZWF0ZWQoc2F2ZWRJbnN0YW5jZVN0YXRlKTsKKworICAgICAgICBmaW5hbCBJbnRlbnQgaW50ZW50ID0gZ2V0QWN0aXZpdHkoKS5nZXRJbnRlbnQoKTsKKyAgICAgICAgZmluYWwgU3RyaW5nIGxvY2FsZUZyb21JbnRlbnQgPQorICAgICAgICAgICAgICAgIG51bGwgPT0gaW50ZW50ID8gbnVsbCA6IGludGVudC5nZXRTdHJpbmdFeHRyYSgibG9jYWxlIik7CisKKyAgICAgICAgZmluYWwgQnVuZGxlIGFyZ3VtZW50cyA9IGdldEFyZ3VtZW50cygpOworICAgICAgICBmaW5hbCBTdHJpbmcgbG9jYWxlRnJvbUFyZ3VtZW50cyA9CisgICAgICAgICAgICAgICAgbnVsbCA9PSBhcmd1bWVudHMgPyBudWxsIDogYXJndW1lbnRzLmdldFN0cmluZygibG9jYWxlIik7CisKKyAgICAgICAgZmluYWwgU3RyaW5nIGxvY2FsZTsKKyAgICAgICAgaWYgKG51bGwgIT0gbG9jYWxlRnJvbUFyZ3VtZW50cykgeworICAgICAgICAgICAgbG9jYWxlID0gbG9jYWxlRnJvbUFyZ3VtZW50czsKKyAgICAgICAgfSBlbHNlIGlmIChudWxsICE9IGxvY2FsZUZyb21JbnRlbnQpIHsKKyAgICAgICAgICAgIGxvY2FsZSA9IGxvY2FsZUZyb21JbnRlbnQ7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBsb2NhbGUgPSBudWxsOworICAgICAgICB9CisKKyAgICAgICAgbUxvY2FsZSA9IGxvY2FsZTsKKyAgICAgICAgbUN1cnNvciA9IGNyZWF0ZUN1cnNvcihsb2NhbGUpOworICAgICAgICBUZXh0VmlldyBlbXB0eVZpZXcgPSAoVGV4dFZpZXcpIGdldFZpZXcoKS5maW5kVmlld0J5SWQoYW5kcm9pZC5SLmlkLmVtcHR5KTsKKyAgICAgICAgZW1wdHlWaWV3LnNldFRleHQoUi5zdHJpbmcudXNlcl9kaWN0X3NldHRpbmdzX2VtcHR5X3RleHQpOworCisgICAgICAgIGZpbmFsIExpc3RWaWV3IGxpc3RWaWV3ID0gZ2V0TGlzdFZpZXcoKTsKKyAgICAgICAgbGlzdFZpZXcuc2V0QWRhcHRlcihjcmVhdGVBZGFwdGVyKCkpOworICAgICAgICBsaXN0Vmlldy5zZXRGYXN0U2Nyb2xsRW5hYmxlZCh0cnVlKTsKKyAgICAgICAgbGlzdFZpZXcuc2V0RW1wdHlWaWV3KGVtcHR5Vmlldyk7CisKKyAgICAgICAgc2V0SGFzT3B0aW9uc01lbnUodHJ1ZSk7CisKKyAgICB9CisKKyAgICBAU3VwcHJlc3NXYXJuaW5ncygiZGVwcmVjYXRpb24iKQorICAgIHByaXZhdGUgQ3Vyc29yIGNyZWF0ZUN1cnNvcihmaW5hbCBTdHJpbmcgbG9jYWxlKSB7CisgICAgICAgIC8vIExvY2FsZSBjYW4gYmUgYW55IG9mOgorICAgICAgICAvLyAtIFRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYSBsb2NhbGUsIGFzIHJldHVybmVkIGJ5IExvY2FsZSN0b1N0cmluZygpCisgICAgICAgIC8vIC0gVGhlIGVtcHR5IHN0cmluZy4gVGhpcyBtZWFucyB3ZSB3YW50IGEgY3Vyc29yIHJldHVybmluZyB3b3JkcyB2YWxpZCBmb3IgYWxsIGxvY2FsZXMuCisgICAgICAgIC8vIC0gbnVsbC4gVGhpcyBtZWFucyB3ZSB3YW50IGEgY3Vyc29yIGZvciB0aGUgY3VycmVudCBsb2NhbGUsIHdoYXRldmVyIHRoaXMgaXMuCisgICAgICAgIC8vIE5vdGUgdGhhdCB0aGlzIGNvbnRyYXN0cyB3aXRoIHRoZSBkYXRhIGluc2lkZSB0aGUgZGF0YWJhc2UsIHdoZXJlIE5VTEwgbWVhbnMgImFsbAorICAgICAgICAvLyBsb2NhbGVzIiBhbmQgdGhlcmUgc2hvdWxkIG5ldmVyIGJlIGFuIGVtcHR5IHN0cmluZy4gVGhlIGNvbmZ1c2lvbiBpcyBjYWxsZWQgYnkgdGhlCisgICAgICAgIC8vIGhpc3RvcmljYWwgdXNlIG9mIG51bGwgZm9yICJhbGwgbG9jYWxlcyIuCisgICAgICAgIC8vIFRPRE86IGl0IHNob3VsZCBiZSBlYXN5IHRvIG1ha2UgdGhpcyBtb3JlIHJlYWRhYmxlIGJ5IG1ha2luZyB0aGUgc3BlY2lhbCB2YWx1ZXMKKyAgICAgICAgLy8gaHVtYW4tcmVhZGFibGUsIGxpa2UgImFsbF9sb2NhbGVzIiBhbmQgImN1cnJlbnRfbG9jYWxlcyIgc3RyaW5ncywgcHJvdmlkZWQgdGhleQorICAgICAgICAvLyBjYW4gYmUgZ3VhcmFudGVlZCBub3QgdG8gbWF0Y2ggbG9jYWxlcyB0aGF0IG1heSBleGlzdC4KKyAgICAgICAgaWYgKCIiLmVxdWFscyhsb2NhbGUpKSB7CisgICAgICAgICAgICAvLyBDYXNlLWluc2Vuc2l0aXZlIHNvcnQKKyAgICAgICAgICAgIHJldHVybiBnZXRBY3Rpdml0eSgpLm1hbmFnZWRRdWVyeShVc2VyRGljdGlvbmFyeS5Xb3Jkcy5DT05URU5UX1VSSSwgUVVFUllfUFJPSkVDVElPTiwKKyAgICAgICAgICAgICAgICAgICAgUVVFUllfU0VMRUNUSU9OX0FMTF9MT0NBTEVTLCBudWxsLAorICAgICAgICAgICAgICAgICAgICAiVVBQRVIoIiArIFVzZXJEaWN0aW9uYXJ5LldvcmRzLldPUkQgKyAiKSIpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZmluYWwgU3RyaW5nIHF1ZXJ5TG9jYWxlID0gbnVsbCAhPSBsb2NhbGUgPyBsb2NhbGUgOiBMb2NhbGUuZ2V0RGVmYXVsdCgpLnRvU3RyaW5nKCk7CisgICAgICAgICAgICByZXR1cm4gZ2V0QWN0aXZpdHkoKS5tYW5hZ2VkUXVlcnkoVXNlckRpY3Rpb25hcnkuV29yZHMuQ09OVEVOVF9VUkksIFFVRVJZX1BST0pFQ1RJT04sCisgICAgICAgICAgICAgICAgICAgIFFVRVJZX1NFTEVDVElPTiwgbmV3IFN0cmluZ1tdIHsgcXVlcnlMb2NhbGUgfSwKKyAgICAgICAgICAgICAgICAgICAgIlVQUEVSKCIgKyBVc2VyRGljdGlvbmFyeS5Xb3Jkcy5XT1JEICsgIikiKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgTGlzdEFkYXB0ZXIgY3JlYXRlQWRhcHRlcigpIHsKKyAgICAgICAgcmV0dXJuIG5ldyBNeUFkYXB0ZXIoZ2V0QWN0aXZpdHkoKSwgUi5sYXlvdXQudXNlcl9kaWN0aW9uYXJ5X2l0ZW0sIG1DdXJzb3IsCisgICAgICAgICAgICAgICAgQURBUFRFUl9GUk9NLCBBREFQVEVSX1RPLCB0aGlzKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgdm9pZCBvbkxpc3RJdGVtQ2xpY2soTGlzdFZpZXcgbCwgVmlldyB2LCBpbnQgcG9zaXRpb24sIGxvbmcgaWQpIHsKKyAgICAgICAgZmluYWwgU3RyaW5nIHdvcmQgPSBnZXRXb3JkKHBvc2l0aW9uKTsKKyAgICAgICAgZmluYWwgU3RyaW5nIHNob3J0Y3V0ID0gZ2V0U2hvcnRjdXQocG9zaXRpb24pOworICAgICAgICBpZiAod29yZCAhPSBudWxsKSB7CisgICAgICAgICAgICBzaG93QWRkT3JFZGl0RGlhbG9nKHdvcmQsIHNob3J0Y3V0KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyB2b2lkIG9uQ3JlYXRlT3B0aW9uc01lbnUoTWVudSBtZW51LCBNZW51SW5mbGF0ZXIgaW5mbGF0ZXIpIHsKKyAgICAgICAgaWYgKCFVc2VyRGljdGlvbmFyeVNldHRpbmdzLklTX1NIT1JUQ1VUX0FQSV9TVVBQT1JURUQpIHsKKyAgICAgICAgICAgIGZpbmFsIExvY2FsZSBzeXN0ZW1Mb2NhbGUgPSBnZXRSZXNvdXJjZXMoKS5nZXRDb25maWd1cmF0aW9uKCkubG9jYWxlOworICAgICAgICAgICAgaWYgKCFUZXh0VXRpbHMuaXNFbXB0eShtTG9jYWxlKSAmJiAhbUxvY2FsZS5lcXVhbHMoc3lzdGVtTG9jYWxlLnRvU3RyaW5nKCkpKSB7CisgICAgICAgICAgICAgICAgLy8gSGlkZSB0aGUgYWRkIGJ1dHRvbiBmb3IgSUNTIGJlY2F1c2UgaXQgZG9lc24ndCBzdXBwb3J0IHNwZWNpZnlpbmcgYSBsb2NhbGUKKyAgICAgICAgICAgICAgICAvLyBmb3IgYW4gZW50cnkuIFRoaXMgbmV3ICJsb2NhbGUiLWF3YXJlIEFQSSBoYXMgYmVlbiBhZGRlZCBpbiBjb25qdW5jdGlvbgorICAgICAgICAgICAgICAgIC8vIHdpdGggdGhlIHNob3J0Y3V0IEFQSS4KKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgTWVudUl0ZW0gYWN0aW9uSXRlbSA9CisgICAgICAgICAgICAgICAgbWVudS5hZGQoMCwgT1BUSU9OU19NRU5VX0FERCwgMCwgUi5zdHJpbmcudXNlcl9kaWN0X3NldHRpbmdzX2FkZF9tZW51X3RpdGxlKQorICAgICAgICAgICAgICAgIC5zZXRJY29uKFIuZHJhd2FibGUuaWNfbWVudV9hZGQpOworICAgICAgICBhY3Rpb25JdGVtLnNldFNob3dBc0FjdGlvbigKKyAgICAgICAgICAgICAgICBNZW51SXRlbS5TSE9XX0FTX0FDVElPTl9JRl9ST09NIHwgTWVudUl0ZW0uU0hPV19BU19BQ1RJT05fV0lUSF9URVhUKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgYm9vbGVhbiBvbk9wdGlvbnNJdGVtU2VsZWN0ZWQoTWVudUl0ZW0gaXRlbSkgeworICAgICAgICBpZiAoaXRlbS5nZXRJdGVtSWQoKSA9PSBPUFRJT05TX01FTlVfQUREKSB7CisgICAgICAgICAgICBzaG93QWRkT3JFZGl0RGlhbG9nKG51bGwsIG51bGwpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIC8qKgorICAgICAqIEFkZCBvciBlZGl0IGEgd29yZC4gSWYgZWRpdGluZ1dvcmQgaXMgbnVsbCwgaXQncyBhbiBhZGQ7IG90aGVyd2lzZSwgaXQncyBhbiBlZGl0LgorICAgICAqIEBwYXJhbSBlZGl0aW5nV29yZCB0aGUgd29yZCB0byBlZGl0LCBvciBudWxsIGlmIGl0J3MgYW4gYWRkLgorICAgICAqIEBwYXJhbSBlZGl0aW5nU2hvcnRjdXQgdGhlIHNob3J0Y3V0IGZvciB0aGlzIGVudHJ5LCBvciBudWxsIGlmIG5vbmUuCisgICAgICovCisgICAgcHJpdmF0ZSB2b2lkIHNob3dBZGRPckVkaXREaWFsb2coZmluYWwgU3RyaW5nIGVkaXRpbmdXb3JkLCBmaW5hbCBTdHJpbmcgZWRpdGluZ1Nob3J0Y3V0KSB7CisgICAgICAgIGZpbmFsIEJ1bmRsZSBhcmdzID0gbmV3IEJ1bmRsZSgpOworICAgICAgICBhcmdzLnB1dEludChVc2VyRGljdGlvbmFyeUFkZFdvcmRDb250ZW50cy5FWFRSQV9NT0RFLCBudWxsID09IGVkaXRpbmdXb3JkCisgICAgICAgICAgICAgICAgPyBVc2VyRGljdGlvbmFyeUFkZFdvcmRDb250ZW50cy5NT0RFX0lOU0VSVAorICAgICAgICAgICAgICAgIDogVXNlckRpY3Rpb25hcnlBZGRXb3JkQ29udGVudHMuTU9ERV9FRElUKTsKKyAgICAgICAgYXJncy5wdXRTdHJpbmcoVXNlckRpY3Rpb25hcnlBZGRXb3JkQ29udGVudHMuRVhUUkFfV09SRCwgZWRpdGluZ1dvcmQpOworICAgICAgICBhcmdzLnB1dFN0cmluZyhVc2VyRGljdGlvbmFyeUFkZFdvcmRDb250ZW50cy5FWFRSQV9TSE9SVENVVCwgZWRpdGluZ1Nob3J0Y3V0KTsKKyAgICAgICAgYXJncy5wdXRTdHJpbmcoVXNlckRpY3Rpb25hcnlBZGRXb3JkQ29udGVudHMuRVhUUkFfTE9DQUxFLCBtTG9jYWxlKTsKKyAgICAgICAgYW5kcm9pZC5wcmVmZXJlbmNlLlByZWZlcmVuY2VBY3Rpdml0eSBwYSA9CisgICAgICAgICAgICAgICAgKGFuZHJvaWQucHJlZmVyZW5jZS5QcmVmZXJlbmNlQWN0aXZpdHkpZ2V0QWN0aXZpdHkoKTsKKyAgICAgICAgcGEuc3RhcnRQcmVmZXJlbmNlUGFuZWwoVXNlckRpY3Rpb25hcnlBZGRXb3JkRnJhZ21lbnQuY2xhc3MuZ2V0TmFtZSgpLAorICAgICAgICAgICAgICAgIGFyZ3MsIFIuc3RyaW5nLnVzZXJfZGljdF9zZXR0aW5nc19hZGRfZGlhbG9nX3RpdGxlLCBudWxsLCBudWxsLCAwKTsKKyAgICB9CisKKyAgICBwcml2YXRlIFN0cmluZyBnZXRXb3JkKGZpbmFsIGludCBwb3NpdGlvbikgeworICAgICAgICBpZiAobnVsbCA9PSBtQ3Vyc29yKSByZXR1cm4gbnVsbDsKKyAgICAgICAgbUN1cnNvci5tb3ZlVG9Qb3NpdGlvbihwb3NpdGlvbik7CisgICAgICAgIC8vIEhhbmRsZSBhIHBvc3NpYmxlIHJhY2UtY29uZGl0aW9uCisgICAgICAgIGlmIChtQ3Vyc29yLmlzQWZ0ZXJMYXN0KCkpIHJldHVybiBudWxsOworCisgICAgICAgIHJldHVybiBtQ3Vyc29yLmdldFN0cmluZygKKyAgICAgICAgICAgICAgICBtQ3Vyc29yLmdldENvbHVtbkluZGV4T3JUaHJvdyhVc2VyRGljdGlvbmFyeS5Xb3Jkcy5XT1JEKSk7CisgICAgfQorCisgICAgcHJpdmF0ZSBTdHJpbmcgZ2V0U2hvcnRjdXQoZmluYWwgaW50IHBvc2l0aW9uKSB7CisgICAgICAgIGlmICghSVNfU0hPUlRDVVRfQVBJX1NVUFBPUlRFRCkgcmV0dXJuIG51bGw7CisgICAgICAgIGlmIChudWxsID09IG1DdXJzb3IpIHJldHVybiBudWxsOworICAgICAgICBtQ3Vyc29yLm1vdmVUb1Bvc2l0aW9uKHBvc2l0aW9uKTsKKyAgICAgICAgLy8gSGFuZGxlIGEgcG9zc2libGUgcmFjZS1jb25kaXRpb24KKyAgICAgICAgaWYgKG1DdXJzb3IuaXNBZnRlckxhc3QoKSkgcmV0dXJuIG51bGw7CisKKyAgICAgICAgcmV0dXJuIG1DdXJzb3IuZ2V0U3RyaW5nKAorICAgICAgICAgICAgICAgIG1DdXJzb3IuZ2V0Q29sdW1uSW5kZXhPclRocm93KFVzZXJEaWN0aW9uYXJ5LldvcmRzLlNIT1JUQ1VUKSk7CisgICAgfQorCisgICAgcHVibGljIHN0YXRpYyB2b2lkIGRlbGV0ZVdvcmQoZmluYWwgU3RyaW5nIHdvcmQsIGZpbmFsIFN0cmluZyBzaG9ydGN1dCwKKyAgICAgICAgICAgIGZpbmFsIENvbnRlbnRSZXNvbHZlciByZXNvbHZlcikgeworICAgICAgICBpZiAoIUlTX1NIT1JUQ1VUX0FQSV9TVVBQT1JURUQpIHsKKyAgICAgICAgICAgIHJlc29sdmVyLmRlbGV0ZShVc2VyRGljdGlvbmFyeS5Xb3Jkcy5DT05URU5UX1VSSSwgREVMRVRFX1NFTEVDVElPTl9TSE9SVENVVF9VTlNVUFBPUlRFRCwKKyAgICAgICAgICAgICAgICAgICAgbmV3IFN0cmluZ1tdIHsgd29yZCB9KTsKKyAgICAgICAgfSBlbHNlIGlmIChUZXh0VXRpbHMuaXNFbXB0eShzaG9ydGN1dCkpIHsKKyAgICAgICAgICAgIHJlc29sdmVyLmRlbGV0ZSgKKyAgICAgICAgICAgICAgICAgICAgVXNlckRpY3Rpb25hcnkuV29yZHMuQ09OVEVOVF9VUkksIERFTEVURV9TRUxFQ1RJT05fV0lUSE9VVF9TSE9SVENVVCwKKyAgICAgICAgICAgICAgICAgICAgbmV3IFN0cmluZ1tdIHsgd29yZCB9KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHJlc29sdmVyLmRlbGV0ZSgKKyAgICAgICAgICAgICAgICAgICAgVXNlckRpY3Rpb25hcnkuV29yZHMuQ09OVEVOVF9VUkksIERFTEVURV9TRUxFQ1RJT05fV0lUSF9TSE9SVENVVCwKKyAgICAgICAgICAgICAgICAgICAgbmV3IFN0cmluZ1tdIHsgd29yZCwgc2hvcnRjdXQgfSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyBjbGFzcyBNeUFkYXB0ZXIgZXh0ZW5kcyBTaW1wbGVDdXJzb3JBZGFwdGVyIGltcGxlbWVudHMgU2VjdGlvbkluZGV4ZXIgeworCisgICAgICAgIHByaXZhdGUgQWxwaGFiZXRJbmRleGVyIG1JbmRleGVyOworCisgICAgICAgIHByaXZhdGUgVmlld0JpbmRlciBtVmlld0JpbmRlciA9IG5ldyBWaWV3QmluZGVyKCkgeworCisgICAgICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgICAgIHB1YmxpYyBib29sZWFuIHNldFZpZXdWYWx1ZShWaWV3IHYsIEN1cnNvciBjLCBpbnQgY29sdW1uSW5kZXgpIHsKKyAgICAgICAgICAgICAgICBpZiAoIUlTX1NIT1JUQ1VUX0FQSV9TVVBQT1JURUQpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8ganVzdCBsZXQgU2ltcGxlQ3Vyc29yQWRhcHRlciBzZXQgdGhlIHZpZXcgdmFsdWVzCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKGNvbHVtbkluZGV4ID09IElOREVYX1NIT1JUQ1VUKSB7CisgICAgICAgICAgICAgICAgICAgIGZpbmFsIFN0cmluZyBzaG9ydGN1dCA9IGMuZ2V0U3RyaW5nKElOREVYX1NIT1JUQ1VUKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKFRleHRVdGlscy5pc0VtcHR5KHNob3J0Y3V0KSkgeworICAgICAgICAgICAgICAgICAgICAgICAgdi5zZXRWaXNpYmlsaXR5KFZpZXcuR09ORSk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAoKFRleHRWaWV3KXYpLnNldFRleHQoc2hvcnRjdXQpOworICAgICAgICAgICAgICAgICAgICAgICAgdi5zZXRWaXNpYmlsaXR5KFZpZXcuVklTSUJMRSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgdi5pbnZhbGlkYXRlKCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKworICAgICAgICBAU3VwcHJlc3NXYXJuaW5ncygiZGVwcmVjYXRpb24iKQorICAgICAgICBwdWJsaWMgTXlBZGFwdGVyKENvbnRleHQgY29udGV4dCwgaW50IGxheW91dCwgQ3Vyc29yIGMsIFN0cmluZ1tdIGZyb20sIGludFtdIHRvLAorICAgICAgICAgICAgICAgIFVzZXJEaWN0aW9uYXJ5U2V0dGluZ3Mgc2V0dGluZ3MpIHsKKyAgICAgICAgICAgIHN1cGVyKGNvbnRleHQsIGxheW91dCwgYywgZnJvbSwgdG8pOworCisgICAgICAgICAgICBpZiAobnVsbCAhPSBjKSB7CisgICAgICAgICAgICAgICAgZmluYWwgU3RyaW5nIGFscGhhYmV0ID0gY29udGV4dC5nZXRTdHJpbmcoUi5zdHJpbmcudXNlcl9kaWN0X2Zhc3Rfc2Nyb2xsX2FscGhhYmV0KTsKKyAgICAgICAgICAgICAgICBmaW5hbCBpbnQgd29yZENvbEluZGV4ID0gYy5nZXRDb2x1bW5JbmRleE9yVGhyb3coVXNlckRpY3Rpb25hcnkuV29yZHMuV09SRCk7CisgICAgICAgICAgICAgICAgbUluZGV4ZXIgPSBuZXcgQWxwaGFiZXRJbmRleGVyKGMsIHdvcmRDb2xJbmRleCwgYWxwaGFiZXQpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgc2V0Vmlld0JpbmRlcihtVmlld0JpbmRlcik7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIGludCBnZXRQb3NpdGlvbkZvclNlY3Rpb24oaW50IHNlY3Rpb24pIHsKKyAgICAgICAgICAgIHJldHVybiBudWxsID09IG1JbmRleGVyID8gMCA6IG1JbmRleGVyLmdldFBvc2l0aW9uRm9yU2VjdGlvbihzZWN0aW9uKTsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgaW50IGdldFNlY3Rpb25Gb3JQb3NpdGlvbihpbnQgcG9zaXRpb24pIHsKKyAgICAgICAgICAgIHJldHVybiBudWxsID09IG1JbmRleGVyID8gMCA6IG1JbmRleGVyLmdldFNlY3Rpb25Gb3JQb3NpdGlvbihwb3NpdGlvbik7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIE9iamVjdFtdIGdldFNlY3Rpb25zKCkgeworICAgICAgICAgICAgcmV0dXJuIG51bGwgPT0gbUluZGV4ZXIgPyBudWxsIDogbUluZGV4ZXIuZ2V0U2VjdGlvbnMoKTsKKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL3Jlc2VhcmNoL0ZlZWRiYWNrRnJhZ21lbnQuamF2YSBiL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL3Jlc2VhcmNoL0ZlZWRiYWNrRnJhZ21lbnQuamF2YQppbmRleCAzOWY5Yzg3Li5hMDczODI5IDEwMDY0NAotLS0gYS9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9yZXNlYXJjaC9GZWVkYmFja0ZyYWdtZW50LmphdmEKKysrIGIvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvcmVzZWFyY2gvRmVlZGJhY2tGcmFnbWVudC5qYXZhCkBAIC02NSwxMiArNjUsMTAgQEAKICAgICAgICAgbUNhbmNlbEJ1dHRvbi5zZXRPbkNsaWNrTGlzdGVuZXIodGhpcyk7CiAKICAgICAgICAgaWYgKHNhdmVkSW5zdGFuY2VTdGF0ZSAhPSBudWxsKSB7Ci0gICAgICAgICAgICBMb2cuZChUQUcsICJyZXN0b3JpbmcgZnJvbSBzYXZlZEluc3RhbmNlU3RhdGUiKTsKICAgICAgICAgICAgIHJlc3RvcmVTdGF0ZShzYXZlZEluc3RhbmNlU3RhdGUpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgZmluYWwgQnVuZGxlIGJ1bmRsZSA9IGdldEFjdGl2aXR5KCkuZ2V0SW50ZW50KCkuZ2V0RXh0cmFzKCk7CiAgICAgICAgICAgICBpZiAoYnVuZGxlICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICBMb2cuZChUQUcsICJyZXN0b3JpbmcgZnJvbSBnZXRBcmd1bWVudHMoKSIpOwogICAgICAgICAgICAgICAgIHJlc3RvcmVTdGF0ZShidW5kbGUpOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC04MSwxMCArNzksNyBAQAogICAgIHB1YmxpYyB2b2lkIG9uQ2xpY2soZmluYWwgVmlldyB2aWV3KSB7CiAgICAgICAgIGZpbmFsIFJlc2VhcmNoTG9nZ2VyIHJlc2VhcmNoTG9nZ2VyID0gUmVzZWFyY2hMb2dnZXIuZ2V0SW5zdGFuY2UoKTsKICAgICAgICAgaWYgKHZpZXcgPT0gbUluY2x1ZGluZ1VzZXJSZWNvcmRpbmdDaGVja0JveCkgewotICAgICAgICAgICAgaWYgKGhhc1VzZXJSZWNvcmRpbmcoKSkgewotICAgICAgICAgICAgICAgIC8vIFJlbW92ZSB0aGUgcmVjb3JkaW5nCi0gICAgICAgICAgICAgICAgc2V0SGFzVXNlclJlY29yZGluZyhmYWxzZSk7Ci0gICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKG1JbmNsdWRpbmdVc2VyUmVjb3JkaW5nQ2hlY2tCb3guaXNDaGVja2VkKCkpIHsKICAgICAgICAgICAgICAgICBmaW5hbCBCdW5kbGUgYnVuZGxlID0gbmV3IEJ1bmRsZSgpOwogICAgICAgICAgICAgICAgIG9uU2F2ZUluc3RhbmNlU3RhdGUoYnVuZGxlKTsKIApAQCAtMTAzLDkgKzk4LDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIFIuc3RyaW5nLnJlc2VhcmNoX2ZlZWRiYWNrX2VtcHR5X2ZlZWRiYWNrX2Vycm9yX21lc3NhZ2UsCiAgICAgICAgICAgICAgICAgICAgICAgICBUb2FzdC5MRU5HVEhfTE9ORykuc2hvdygpOwogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBmaW5hbCBib29sZWFuIGlzSW5jbHVkaW5nQWNjb3VudE5hbWUgPSBpc0luY2x1ZGluZ0FjY291bnROYW1lKCk7Ci0gICAgICAgICAgICAgICAgcmVzZWFyY2hMb2dnZXIuc2VuZEZlZWRiYWNrKGZlZWRiYWNrQ29udGVudHMsCi0gICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSAvKiBpc0luY2x1ZGluZ0hpc3RvcnkgKi8sIGlzSW5jbHVkaW5nQWNjb3VudE5hbWUsIGhhc1VzZXJSZWNvcmRpbmcoKSk7CisgICAgICAgICAgICAgICAgZmluYWwgYm9vbGVhbiBpc0luY2x1ZGluZ0FjY291bnROYW1lID0gbUluY2x1ZGluZ0FjY291bnROYW1lQ2hlY2tCb3guaXNDaGVja2VkKCk7CisgICAgICAgICAgICAgICAgcmVzZWFyY2hMb2dnZXIuc2VuZEZlZWRiYWNrKGZlZWRiYWNrQ29udGVudHMsIGZhbHNlIC8qIGlzSW5jbHVkaW5nSGlzdG9yeSAqLywKKyAgICAgICAgICAgICAgICAgICAgICAgIGlzSW5jbHVkaW5nQWNjb3VudE5hbWUsIG1JbmNsdWRpbmdVc2VyUmVjb3JkaW5nQ2hlY2tCb3guaXNDaGVja2VkKCkpOwogICAgICAgICAgICAgICAgIGdldEFjdGl2aXR5KCkuZmluaXNoKCk7CiAgICAgICAgICAgICAgICAgcmVzZWFyY2hMb2dnZXIuc2V0RmVlZGJhY2tEaWFsb2dCdW5kbGUobnVsbCk7CiAgICAgICAgICAgICAgICAgcmVzZWFyY2hMb2dnZXIub25MZWF2aW5nU2VuZEZlZWRiYWNrRGlhbG9nKCk7CkBAIC0xMjUsMjkgKzEyMCwxMyBAQAogICAgICAgICBmaW5hbCBTdHJpbmcgc2F2ZWRGZWVkYmFja1N0cmluZyA9IG1FZGl0VGV4dC5nZXRUZXh0KCkudG9TdHJpbmcoKTsKIAogICAgICAgICBidW5kbGUucHV0U3RyaW5nKEtFWV9GRUVEQkFDS19TVFJJTkcsIHNhdmVkRmVlZGJhY2tTdHJpbmcpOwotICAgICAgICBidW5kbGUucHV0Qm9vbGVhbihLRVlfSU5DTFVERV9BQ0NPVU5UX05BTUUsIGlzSW5jbHVkaW5nQWNjb3VudE5hbWUoKSk7Ci0gICAgICAgIGJ1bmRsZS5wdXRCb29sZWFuKEtFWV9IQVNfVVNFUl9SRUNPUkRJTkcsIGhhc1VzZXJSZWNvcmRpbmcoKSk7CisgICAgICAgIGJ1bmRsZS5wdXRCb29sZWFuKEtFWV9JTkNMVURFX0FDQ09VTlRfTkFNRSwgbUluY2x1ZGluZ0FjY291bnROYW1lQ2hlY2tCb3guaXNDaGVja2VkKCkpOworICAgICAgICBidW5kbGUucHV0Qm9vbGVhbihLRVlfSEFTX1VTRVJfUkVDT1JESU5HLCBtSW5jbHVkaW5nVXNlclJlY29yZGluZ0NoZWNrQm94LmlzQ2hlY2tlZCgpKTsKICAgICB9CiAKLSAgICBwdWJsaWMgdm9pZCByZXN0b3JlU3RhdGUoZmluYWwgQnVuZGxlIGJ1bmRsZSkgeworICAgIHByaXZhdGUgdm9pZCByZXN0b3JlU3RhdGUoZmluYWwgQnVuZGxlIGJ1bmRsZSkgewogICAgICAgICBtRWRpdFRleHQuc2V0VGV4dChidW5kbGUuZ2V0U3RyaW5nKEtFWV9GRUVEQkFDS19TVFJJTkcpKTsKLSAgICAgICAgc2V0SXNJbmNsdWRpbmdBY2NvdW50TmFtZShidW5kbGUuZ2V0Qm9vbGVhbihLRVlfSU5DTFVERV9BQ0NPVU5UX05BTUUpKTsKLSAgICAgICAgc2V0SGFzVXNlclJlY29yZGluZyhidW5kbGUuZ2V0Qm9vbGVhbihLRVlfSEFTX1VTRVJfUkVDT1JESU5HKSk7Ci0gICAgfQotCi0gICAgcHJpdmF0ZSBib29sZWFuIGhhc1VzZXJSZWNvcmRpbmcoKSB7Ci0gICAgICAgIHJldHVybiBtSW5jbHVkaW5nVXNlclJlY29yZGluZ0NoZWNrQm94LmlzQ2hlY2tlZCgpOwotICAgIH0KLQotICAgIHByaXZhdGUgdm9pZCBzZXRIYXNVc2VyUmVjb3JkaW5nKGZpbmFsIGJvb2xlYW4gaGFzUmVjb3JkaW5nKSB7Ci0gICAgICAgIG1JbmNsdWRpbmdVc2VyUmVjb3JkaW5nQ2hlY2tCb3guc2V0Q2hlY2tlZChoYXNSZWNvcmRpbmcpOwotICAgIH0KLQotICAgIHByaXZhdGUgYm9vbGVhbiBpc0luY2x1ZGluZ0FjY291bnROYW1lKCkgewotICAgICAgICByZXR1cm4gbUluY2x1ZGluZ0FjY291bnROYW1lQ2hlY2tCb3guaXNDaGVja2VkKCk7Ci0gICAgfQotCi0gICAgcHJpdmF0ZSB2b2lkIHNldElzSW5jbHVkaW5nQWNjb3VudE5hbWUoZmluYWwgYm9vbGVhbiBpc0luY2x1ZGluZ0FjY291bnROYW1lKSB7Ci0gICAgICAgIG1JbmNsdWRpbmdBY2NvdW50TmFtZUNoZWNrQm94LnNldENoZWNrZWQoaXNJbmNsdWRpbmdBY2NvdW50TmFtZSk7CisgICAgICAgIG1JbmNsdWRpbmdBY2NvdW50TmFtZUNoZWNrQm94LnNldENoZWNrZWQoYnVuZGxlLmdldEJvb2xlYW4oS0VZX0lOQ0xVREVfQUNDT1VOVF9OQU1FKSk7CisgICAgICAgIG1JbmNsdWRpbmdVc2VyUmVjb3JkaW5nQ2hlY2tCb3guc2V0Q2hlY2tlZChidW5kbGUuZ2V0Qm9vbGVhbihLRVlfSEFTX1VTRVJfUkVDT1JESU5HKSk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvcmVzZWFyY2gvRml4ZWRMb2dCdWZmZXIuamF2YSBiL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL3Jlc2VhcmNoL0ZpeGVkTG9nQnVmZmVyLmphdmEKaW5kZXggNzhkYzU5NS4uNDI0OWFmNSAxMDA2NDQKLS0tIGEvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvcmVzZWFyY2gvRml4ZWRMb2dCdWZmZXIuamF2YQorKysgYi9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9yZXNlYXJjaC9GaXhlZExvZ0J1ZmZlci5qYXZhCkBAIC01MSwzOCArNTEsMzUgQEAKICAgICAgICAgbU51bUFjdHVhbFdvcmRzID0gMDsKICAgICB9CiAKLSAgICBwcm90ZWN0ZWQgaW50IGdldE51bUFjdHVhbFdvcmRzKCkgewotICAgICAgICByZXR1cm4gbU51bUFjdHVhbFdvcmRzOwotICAgIH0KLQogICAgIC8qKgogICAgICAqIEFkZHMgYSBuZXcgTG9nVW5pdCB0byB0aGUgZnJvbnQgb2YgdGhlIExJRk8gcXVldWUsIGV2aWN0aW5nIGV4aXN0aW5nIExvZ1VuaXQncwogICAgICAqIChvbGRlc3QgZmlyc3QpIGlmIHdvcmQgY2FwYWNpdHkgaXMgcmVhY2hlZC4KICAgICAgKi8KICAgICBAT3ZlcnJpZGUKICAgICBwdWJsaWMgdm9pZCBzaGlmdEluKGZpbmFsIExvZ1VuaXQgbmV3TG9nVW5pdCkgewotICAgICAgICBpZiAoIW5ld0xvZ1VuaXQuaGFzV29yZCgpKSB7Ci0gICAgICAgICAgICAvLyBUaGlzIExvZ1VuaXQgaXNuJ3QgYSB3b3JkLCBzbyBpdCBkb2Vzbid0IGNvdW50IHRvd2FyZCB0aGUgd29yZC1saW1pdC4KKyAgICAgICAgaWYgKCFuZXdMb2dVbml0Lmhhc09uZU9yTW9yZVdvcmRzKCkpIHsKKyAgICAgICAgICAgIC8vIFRoaXMgTG9nVW5pdCBkb2Vzbid0IGNvbnRhaW4gYW55IHdvcmQsIHNvIGl0IGRvZXNuJ3QgY291bnQgdG93YXJkIHRoZSB3b3JkLWxpbWl0LgogICAgICAgICAgICAgc3VwZXIuc2hpZnRJbihuZXdMb2dVbml0KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQorICAgICAgICBmaW5hbCBpbnQgbnVtV29yZHNJbmNvbWluZyA9IG5ld0xvZ1VuaXQuZ2V0TnVtV29yZHMoKTsKICAgICAgICAgaWYgKG1OdW1BY3R1YWxXb3JkcyA+PSBtV29yZENhcGFjaXR5KSB7CiAgICAgICAgICAgICAvLyBHaXZlIHN1YmNsYXNzIGEgY2hhbmNlIHRvIGhhbmRsZSB0aGUgYnVmZmVyIGZ1bGwgY29uZGl0aW9uIGJ5IHNoaWZ0aW5nIG91dCBsb2dVbml0cy4KICAgICAgICAgICAgIG9uQnVmZmVyRnVsbCgpOwogICAgICAgICAgICAgLy8gSWYgc3RpbGwgZnVsbCwgZXZpY3QuCiAgICAgICAgICAgICBpZiAobU51bUFjdHVhbFdvcmRzID49IG1Xb3JkQ2FwYWNpdHkpIHsKLSAgICAgICAgICAgICAgICBzaGlmdE91dFdvcmRzKDEpOworICAgICAgICAgICAgICAgIHNoaWZ0T3V0V29yZHMobnVtV29yZHNJbmNvbWluZyk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgc3VwZXIuc2hpZnRJbihuZXdMb2dVbml0KTsKLSAgICAgICAgbU51bUFjdHVhbFdvcmRzKys7IC8vIE11c3QgYmUgYSB3b3JkLCBvciB3ZSB3b3VsZG4ndCBiZSBoZXJlLgorICAgICAgICBtTnVtQWN0dWFsV29yZHMgKz0gbnVtV29yZHNJbmNvbWluZzsKICAgICB9CiAKICAgICBAT3ZlcnJpZGUKICAgICBwdWJsaWMgTG9nVW5pdCB1bnNoaWZ0SW4oKSB7CiAgICAgICAgIGZpbmFsIExvZ1VuaXQgbG9nVW5pdCA9IHN1cGVyLnVuc2hpZnRJbigpOwotICAgICAgICBpZiAobG9nVW5pdCAhPSBudWxsICYmIGxvZ1VuaXQuaGFzV29yZCgpKSB7Ci0gICAgICAgICAgICBtTnVtQWN0dWFsV29yZHMtLTsKKyAgICAgICAgaWYgKGxvZ1VuaXQgIT0gbnVsbCAmJiBsb2dVbml0Lmhhc09uZU9yTW9yZVdvcmRzKCkpIHsKKyAgICAgICAgICAgIG1OdW1BY3R1YWxXb3JkcyAtPSBsb2dVbml0LmdldE51bVdvcmRzKCk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIGxvZ1VuaXQ7CiAgICAgfQpAQCAtMTEzLDE4ICsxMTAsMzAgQEAKICAgICBAT3ZlcnJpZGUKICAgICBwdWJsaWMgTG9nVW5pdCBzaGlmdE91dCgpIHsKICAgICAgICAgZmluYWwgTG9nVW5pdCBsb2dVbml0ID0gc3VwZXIuc2hpZnRPdXQoKTsKLSAgICAgICAgaWYgKGxvZ1VuaXQgIT0gbnVsbCAmJiBsb2dVbml0Lmhhc1dvcmQoKSkgewotICAgICAgICAgICAgbU51bUFjdHVhbFdvcmRzLS07CisgICAgICAgIGlmIChsb2dVbml0ICE9IG51bGwgJiYgbG9nVW5pdC5oYXNPbmVPck1vcmVXb3JkcygpKSB7CisgICAgICAgICAgICBtTnVtQWN0dWFsV29yZHMgLT0gbG9nVW5pdC5nZXROdW1Xb3JkcygpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBsb2dVbml0OwogICAgIH0KIAotICAgIHByb3RlY3RlZCB2b2lkIHNoaWZ0T3V0V29yZHMoZmluYWwgaW50IG51bVdvcmRzKSB7Ci0gICAgICAgIGZpbmFsIGludCB0YXJnZXROdW1Xb3JkcyA9IG1OdW1BY3R1YWxXb3JkcyAtIG51bVdvcmRzOwotICAgICAgICBmaW5hbCBMaW5rZWRMaXN0PExvZ1VuaXQ+IGxvZ1VuaXRzID0gZ2V0TG9nVW5pdHMoKTsKLSAgICAgICAgd2hpbGUgKG1OdW1BY3R1YWxXb3JkcyA+IHRhcmdldE51bVdvcmRzICYmICFsb2dVbml0cy5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIHNoaWZ0T3V0KCk7CisgICAgLyoqCisgICAgICogUmVtb3ZlIExvZ1VuaXRzIGZyb20gdGhlIGZyb250IG9mIHRoZSBMb2dCdWZmZXIgdW50aWwge0Bjb2RlIG51bVdvcmRzfSBoYXZlIGJlZW4gcmVtb3ZlZC4KKyAgICAgKgorICAgICAqIElmIHRoZXJlIGFyZSBsZXNzIHRoYW4ge0Bjb2RlIG51bVdvcmRzfSB3b3JkLWNvbnRhaW5pbmcge0BsaW5rIExvZ1VuaXR9cywgc2hpZnRzIG91dAorICAgICAqIGFsbCB7QGNvZGUgTG9nVW5pdH1zIGluIHRoZSBidWZmZXIuCisgICAgICoKKyAgICAgKiBAcGFyYW0gbnVtV29yZHMgdGhlIG1pbmltdW0gbnVtYmVyIG9mIHdvcmQtY29udGFpbmluZyB7QGxpbmsgTG9nVW5pdH1zIHRvIHNoaWZ0IG91dAorICAgICAqIEByZXR1cm4gdGhlIG51bWJlciBvZiBhY3R1YWwge0Bjb2RlIExvZ1VuaXR9cyBzaGlmdGVkIG91dAorICAgICAqLworICAgIHByb3RlY3RlZCBpbnQgc2hpZnRPdXRXb3JkcyhmaW5hbCBpbnQgbnVtV29yZHMpIHsKKyAgICAgICAgaW50IG51bVdvcmRDb250YWluaW5nTG9nVW5pdHNTaGlmdGVkT3V0ID0gMDsKKyAgICAgICAgZm9yIChMb2dVbml0IGxvZ1VuaXQgPSBzaGlmdE91dCgpOyBsb2dVbml0ICE9IG51bGwKKyAgICAgICAgICAgICAgICAmJiBudW1Xb3JkQ29udGFpbmluZ0xvZ1VuaXRzU2hpZnRlZE91dCA8IG51bVdvcmRzOyBsb2dVbml0ID0gc2hpZnRPdXQoKSkgeworICAgICAgICAgICAgaWYgKGxvZ1VuaXQuaGFzT25lT3JNb3JlV29yZHMoKSkgeworICAgICAgICAgICAgICAgIG51bVdvcmRDb250YWluaW5nTG9nVW5pdHNTaGlmdGVkT3V0ICs9IGxvZ1VuaXQuZ2V0TnVtV29yZHMoKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQorICAgICAgICByZXR1cm4gbnVtV29yZENvbnRhaW5pbmdMb2dVbml0c1NoaWZ0ZWRPdXQ7CiAgICAgfQogCiAgICAgcHVibGljIHZvaWQgc2hpZnRPdXRBbGwoKSB7CkBAIC0xMzYsMjcgKzE0NSwzMSBAQAogICAgIH0KIAogICAgIC8qKgotICAgICAqIFJldHVybnMgYSBsaXN0IG9mIHtAbGluayBMb2dVbml0fXMgYXQgdGhlIGZyb250IG9mIHRoZSBidWZmZXIgdGhhdCBoYXZlIGFzc29jaWF0ZWQgd29yZHMuICBObwotICAgICAqIG1vcmUgdGhhbiB7QGNvZGUgbn0gTG9nVW5pdHMgd2lsbCBoYXZlIHdvcmRzIGFzc29jaWF0ZWQgd2l0aCB0aGVtLiAgSWYgdGhlcmUgYXJlIG5vdCBlbm91Z2gKLSAgICAgKiBMb2dVbml0cyBpbiB0aGUgYnVmZmVyIHRvIG1lZXQgdGhlIHdvcmQgcmVxdWlyZW1lbnQsIHJldHVybnMgdGhlIGFsbCBMb2dVbml0cy4KKyAgICAgKiBSZXR1cm5zIGEgbGlzdCBvZiB7QGxpbmsgTG9nVW5pdH1zIGF0IHRoZSBmcm9udCBvZiB0aGUgYnVmZmVyIHRoYXQgaGF2ZSB3b3JkcyBhc3NvY2lhdGVkIHdpdGgKKyAgICAgKiB0aGVtLgorICAgICAqCisgICAgICogVGhlcmUgd2lsbCBiZSBubyBtb3JlIHRoYW4ge0Bjb2RlIG59IHdvcmRzIGluIHRoZSByZXR1cm5lZCBsaXN0LiAgU28gaWYgMiB3b3JkcyBhcmUKKyAgICAgKiByZXF1ZXN0ZWQsIGFuZCB0aGUgZmlyc3QgTG9nVW5pdCBoYXMgMyB3b3JkcywgaXQgaXMgbm90IHJldHVybmVkLiAgSWYgMiB3b3JkcyBhcmUgcmVxdWVzdGVkLAorICAgICAqIGFuZCB0aGUgZmlyc3QgTG9nVW5pdCBoYXMgb25seSAxIHdvcmQsIGFuZCB0aGUgbmV4dCBMb2dVbml0IDIgd29yZHMsIG9ubHkgdGhlIGZpcnN0IExvZ1VuaXQKKyAgICAgKiBpcyByZXR1cm5lZC4gIElmIHRoZSBmaXJzdCBMb2dVbml0IGhhcyBubyB3b3JkcyBhc3NvY2lhdGVkIHdpdGggaXQsIGFuZCB0aGUgc2Vjb25kIExvZ1VuaXQKKyAgICAgKiBoYXMgdGhyZWUgd29yZHMsIHRoZW4gb25seSB0aGUgZmlyc3QgTG9nVW5pdCAod2hpY2ggaGFzIG5vIGFzc29jaWF0ZWQgd29yZHMpIGlzIHJldHVybmVkLiAgSWYKKyAgICAgKiB0aGVyZSBhcmUgbm90IGVub3VnaCBMb2dVbml0cyBpbiB0aGUgYnVmZmVyIHRvIG1lZXQgdGhlIHdvcmQgcmVxdWlyZW1lbnQsIHRoZW4gYWxsIExvZ1VuaXRzCisgICAgICogd2lsbCBiZSByZXR1cm5lZC4KICAgICAgKgogICAgICAqIEBwYXJhbSBuIFRoZSBtYXhpbXVtIG51bWJlciBvZiB7QGxpbmsgTG9nVW5pdH1zIHdpdGggd29yZHMgdG8gcmV0dXJuLgogICAgICAqIEByZXR1cm4gVGhlIGxpc3Qgb2YgdGhlIHtAbGluayBMb2dVbml0fXMgY29udGFpbmluZyB0aGUgZmlyc3QgbiB3b3JkcwogICAgICAqLwogICAgIHB1YmxpYyBBcnJheUxpc3Q8TG9nVW5pdD4gcGVla0F0Rmlyc3ROV29yZHMoaW50IG4pIHsKICAgICAgICAgZmluYWwgTGlua2VkTGlzdDxMb2dVbml0PiBsb2dVbml0cyA9IGdldExvZ1VuaXRzKCk7Ci0gICAgICAgIGZpbmFsIGludCBsZW5ndGggPSBsb2dVbml0cy5zaXplKCk7CiAgICAgICAgIC8vIEFsbG9jYXRlIHNwYWNlIGZvciBuKjIgbG9nVW5pdHMuICBUaGVyZSB3aWxsIGJlIGF0IGxlYXN0IG4sIG9uZSBmb3IgZWFjaCB3b3JkLCBhbmQKICAgICAgICAgLy8gdGhlcmUgbWF5IGJlIGFkZGl0aW9uYWwgZm9yIHB1bmN0dWF0aW9uLCBiZXR3ZWVuLXdvcmQgY29tbWFuZHMsIGV0Yy4gIFRoaXMgc2hvdWxkIGJlCiAgICAgICAgIC8vIGVub3VnaCB0aGF0IHJlYWxsb2NhdGlvbiB3b24ndCBiZSBuZWNlc3NhcnkuCi0gICAgICAgIGZpbmFsIEFycmF5TGlzdDxMb2dVbml0PiBsaXN0ID0gbmV3IEFycmF5TGlzdDxMb2dVbml0PihuICogMik7Ci0gICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGVuZ3RoICYmIG4gPiAwOyBpKyspIHsKLSAgICAgICAgICAgIGZpbmFsIExvZ1VuaXQgbG9nVW5pdCA9IGxvZ1VuaXRzLmdldChpKTsKLSAgICAgICAgICAgIGxpc3QuYWRkKGxvZ1VuaXQpOwotICAgICAgICAgICAgaWYgKGxvZ1VuaXQuaGFzV29yZCgpKSB7Ci0gICAgICAgICAgICAgICAgbi0tOwotICAgICAgICAgICAgfQorICAgICAgICBmaW5hbCBBcnJheUxpc3Q8TG9nVW5pdD4gcmVzdWx0TGlzdCA9IG5ldyBBcnJheUxpc3Q8TG9nVW5pdD4obiAqIDIpOworICAgICAgICBmb3IgKGZpbmFsIExvZ1VuaXQgbG9nVW5pdCA6IGxvZ1VuaXRzKSB7CisgICAgICAgICAgICBuIC09IGxvZ1VuaXQuZ2V0TnVtV29yZHMoKTsKKyAgICAgICAgICAgIGlmIChuIDwgMCkgYnJlYWs7CisgICAgICAgICAgICByZXN1bHRMaXN0LmFkZChsb2dVbml0KTsKICAgICAgICAgfQotICAgICAgICByZXR1cm4gbGlzdDsKKyAgICAgICAgcmV0dXJuIHJlc3VsdExpc3Q7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvcmVzZWFyY2gvTG9nVW5pdC5qYXZhIGIvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvcmVzZWFyY2gvTG9nVW5pdC5qYXZhCmluZGV4IDFjMDE2NzUuLjRkNjBiZGEgMTAwNjQ0Ci0tLSBhL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL3Jlc2VhcmNoL0xvZ1VuaXQuamF2YQorKysgYi9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9yZXNlYXJjaC9Mb2dVbml0LmphdmEKQEAgLTI1LDEwICsyNSwxMCBAQAogaW1wb3J0IGNvbS5hbmRyb2lkLmlucHV0bWV0aG9kLmxhdGluLlN1Z2dlc3RlZFdvcmRzLlN1Z2dlc3RlZFdvcmRJbmZvOwogaW1wb3J0IGNvbS5hbmRyb2lkLmlucHV0bWV0aG9kLmxhdGluLmRlZmluZS5Qcm9kdWN0aW9uRmxhZzsKIAotaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247Ci1pbXBvcnQgamF2YS5pby5TdHJpbmdXcml0ZXI7CiBpbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsKK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlzOwogaW1wb3J0IGphdmEudXRpbC5MaXN0OworaW1wb3J0IGphdmEudXRpbC5yZWdleC5QYXR0ZXJuOwogCiAvKioKICAqIEEgZ3JvdXAgb2YgbG9nIHN0YXRlbWVudHMgcmVsYXRlZCB0byBlYWNoIG90aGVyLgpAQCAtNDksMjcgKzQ5LDQ1IEBACiAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgYm9vbGVhbiBERUJVRyA9IGZhbHNlCiAgICAgICAgICAgICAmJiBQcm9kdWN0aW9uRmxhZy5VU0VTX0RFVkVMT1BNRU5UX09OTFlfRElBR05PU1RJQ1NfREVCVUc7CiAKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBQYXR0ZXJuIFdISVRFU1BBQ0VfUEFUVEVSTiA9IFBhdHRlcm4uY29tcGlsZSgiXFxzKyIpOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZ1tdIEVNUFRZX1NUUklOR19BUlJBWSA9IG5ldyBTdHJpbmdbMF07CisKICAgICBwcml2YXRlIGZpbmFsIEFycmF5TGlzdDxMb2dTdGF0ZW1lbnQ+IG1Mb2dTdGF0ZW1lbnRMaXN0OwogICAgIHByaXZhdGUgZmluYWwgQXJyYXlMaXN0PE9iamVjdFtdPiBtVmFsdWVzTGlzdDsKICAgICAvLyBBc3N1bWUgdGhhdCBtVGltZUxpc3QgaXMgc29ydGVkIGluIGluY3JlYXNpbmcgb3JkZXIuICBEbyBub3QgaW5zZXJ0IG51bGwgdmFsdWVzIGludG8KICAgICAvLyBtVGltZUxpc3QuCiAgICAgcHJpdmF0ZSBmaW5hbCBBcnJheUxpc3Q8TG9uZz4gbVRpbWVMaXN0OwotICAgIC8vIFdvcmQgdGhhdCB0aGlzIExvZ1VuaXQgZ2VuZXJhdGVzLiAgU2hvdWxkIGJlIG51bGwgaWYgdGhlIExvZ1VuaXQgZG9lcyBub3QgZ2VuZXJhdGUgYSBnZW51aW5lCi0gICAgLy8gd29yZCAoaS5lLiBzZXBhcmF0b3JzIGFsb25lIGRvIG5vdCBjb3VudCBhcyBhIHdvcmQpLiAgU2hvdWxkIG5ldmVyIGJlIGVtcHR5LgotICAgIHByaXZhdGUgU3RyaW5nIG1Xb3JkOworICAgIC8vIFdvcmRzIHRoYXQgdGhpcyBMb2dVbml0IGdlbmVyYXRlcy4gIFNob3VsZCBiZSBudWxsIGlmIHRoZSBkYXRhIGluIHRoZSBMb2dVbml0IGRvZXMgbm90CisgICAgLy8gZ2VuZXJhdGUgYSBnZW51aW5lIHdvcmQgKGkuZS4gc2VwYXJhdG9ycyBhbG9uZSBkbyBub3QgY291bnQgYXMgYSB3b3JkKS4gIFNob3VsZCBuZXZlciBiZQorICAgIC8vIGVtcHR5LiAgTm90ZSB0aGF0IGlmIHRoZSB1c2VyIHR5cGVzIHNwYWNlcyBleHBsaWNpdGx5LCB0aGVuIG5vcm1hbGx5IG1Xb3JkcyBzaG91bGQgY29udGFpbgorICAgIC8vIG9ubHkgYSBzaW5nbGUgd29yZDsgaXQgd2lsbCBvbmx5IGNvbnRhaW4gc3BhY2Utc2VwYXJhdGUgbXVsdGlwbGUgd29yZHMgaWYgdGhlIHVzZXIgZG9lcyBub3QKKyAgICAvLyBlbnRlciBhIHNwYWNlLCBhbmQgdGhlIHN5c3RlbSBlbnRlcnMgb25lIGF1dG9tYXRpY2FsbHkuCisgICAgcHJpdmF0ZSBTdHJpbmcgbVdvcmRzOworICAgIHByaXZhdGUgU3RyaW5nW10gbVdvcmRBcnJheSA9IEVNUFRZX1NUUklOR19BUlJBWTsKICAgICBwcml2YXRlIGJvb2xlYW4gbU1heUNvbnRhaW5EaWdpdDsKICAgICBwcml2YXRlIGJvb2xlYW4gbUlzUGFydE9mTWVnYXdvcmQ7CiAgICAgcHJpdmF0ZSBib29sZWFuIG1Db250YWluc0NvcnJlY3Rpb247CiAKLSAgICAvLyBtQ29ycmVjdGlvblR5cGUgaW5kaWNhdGVzIHdoZXRoZXIgdGhlIHdvcmQgd2FzIGNvcnJlY3RlZCBhdCBhbGwsIGFuZCBpZiBzbywgd2hldGhlciBpdCB3YXMKLSAgICAvLyB0byBhIGRpZmZlcmVudCB3b3JkIG9yIGp1c3QgYSAidHlwbyIgY29ycmVjdGlvbi4gIEl0IGlzIGNvbnNpZGVyZWQgYSAidHlwbyIgaWYgdGhlIGZpbmFsCi0gICAgLy8gd29yZCB3YXMgbGlzdGVkIGluIHRoZSBzdWdnZXN0aW9ucyBhdmFpbGFibGUgdGhlIGZpcnN0IHRpbWUgdGhlIHdvcmQgd2FzIGdlc3R1cmVkIG9yCi0gICAgLy8gdGFwcGVkLgorICAgIC8vIG1Db3JyZWN0aW9uVHlwZSBpbmRpY2F0ZXMgd2hldGhlciB0aGUgd29yZCB3YXMgY29ycmVjdGVkIGF0IGFsbCwgYW5kIGlmIHNvLCB0aGUgbmF0dXJlIG9mIHRoZQorICAgIC8vIGNvcnJlY3Rpb24uCiAgICAgcHJpdmF0ZSBpbnQgbUNvcnJlY3Rpb25UeXBlOworICAgIC8vIExvZ1VuaXRzIHN0YXJ0IGluIHRoaXMgc3RhdGUuICBJZiBhIHdvcmQgaXMgZW50ZXJlZCB3aXRob3V0IGJlaW5nIGNvcnJlY3RlZCwgaXQgd2lsbCBoYXZlCisgICAgLy8gdGhpcyBDb3JyZWN0aW9udFR5cGUuCiAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQ09SUkVDVElPTlRZUEVfTk9fQ09SUkVDVElPTiA9IDA7CisgICAgLy8gVGhlIExvZ1VuaXQgd2FzIGNvcnJlY3RlZCBtYW51YWxseSBieSB0aGUgdXNlciBpbiBhbiB1bnNwZWNpZmllZCB3YXkuCiAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQ09SUkVDVElPTlRZUEVfQ09SUkVDVElPTiA9IDE7CisgICAgLy8gVGhlIExvZ1VuaXQgd2FzIGNvcnJlY3RlZCBtYW51YWxseSBieSB0aGUgdXNlciB0byBhIHdvcmQgbm90IGluIHRoZSBsaXN0IG9mIHN1Z2dlc3Rpb25zIG9mCisgICAgLy8gdGhlIGZpcnN0IHdvcmQgdHlwZWQgaGVyZS4gIChOb3RlOiB0aGlzIGlzIGEgaGV1cmlzdGljIHZhbHVlLCBpdCBtYXkgYmUgaW5jb3JyZWN0LCBmb3IKKyAgICAvLyBleGFtcGxlLCBpZiB0aGUgdXNlciByZXBvc2l0aW9ucyB0aGUgY3Vyc29yKS4KICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBDT1JSRUNUSU9OVFlQRV9ESUZGRVJFTlRfV09SRCA9IDI7CisgICAgLy8gVGhlIExvZ1VuaXQgd2FzIGNvcnJlY3RlZCBtYW51YWxseSBieSB0aGUgdXNlciB0byBhIHdvcmQgdGhhdCB3YXMgaW4gdGhlIGxpc3Qgb2Ygc3VnZ2VzdGlvbnMKKyAgICAvLyBvZiB0aGUgZmlyc3Qgd29yZCB0eXBlZCBoZXJlLiAgKEFnYWluLCBhIGhldXJpc3RpYykuICBJdCBpcyBwcm9iYWJseSBhIHR5cG8gY29ycmVjdGlvbi4KICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBDT1JSRUNUSU9OVFlQRV9UWVBPID0gMzsKKyAgICAvLyBUT0RPOiBSYXRoZXIgdGhhbiBqdXN0IHRyYWNraW5nIHRoZSBjdXJyZW50IHN0YXRlLCBrZWVwIGEgaGlzdG9yaWNhbCByZWNvcmQgb2YgdGhlIExvZ1VuaXQncworICAgIC8vIHN0YXRlIGFuZCBzdGF0aXN0aWNzLiAgVGhpcyBzaG91bGQgaW5jbHVkZSBob3cgbWFueSB0aW1lcyBpdCBoYXMgYmVlbiBjb3JyZWN0ZWQsIHdoZXRoZXIKKyAgICAvLyBvdGhlciBMb2dVbml0IGVkaXRzIHdlcmUgZG9uZSBiZXR3ZWVuIGVkaXRzIHRvIHRoaXMgTG9nVW5pdCwgZXRjLiAgQWxzbyB0cmFjayB3aGVuIGEgTG9nVW5pdAorICAgIC8vIHByZXZpb3VzbHkgY29udGFpbmVkIGEgd29yZCwgYnV0IHdhcyBjb3JyZWN0ZWQgdG8gZW1wdHkgKGJlY2F1c2UgaXQgd2FzIGRlbGV0ZWQsIGFuZCB0aGVyZSBpcworICAgIC8vIG5vIGtub3duIHJlcGxhY2VtZW50KS4KIAogICAgIHByaXZhdGUgU3VnZ2VzdGVkV29yZHMgbVN1Z2dlc3RlZFdvcmRzOwogCkBAIC0xNjYsNyArMTg0LDcgQEAKICAgICAgICAgZmluYWwgTG9nU3RhdGVtZW50IGxvZ1N0YXRlbWVudDsKICAgICAgICAgaWYgKGNhbkluY2x1ZGVQcml2YXRlRGF0YSkgewogICAgICAgICAgICAgTE9HU1RBVEVNRU5UX0xPR19VTklUX0JFR0lOX1dJVEhfUFJJVkFURV9EQVRBLm91dHB1dFRvTG9ja2VkKGpzb25Xcml0ZXIsCi0gICAgICAgICAgICAgICAgICAgIFN5c3RlbUNsb2NrLnVwdGltZU1pbGxpcygpLCBnZXRXb3JkKCksIGdldENvcnJlY3Rpb25UeXBlKCkpOworICAgICAgICAgICAgICAgICAgICBTeXN0ZW1DbG9jay51cHRpbWVNaWxsaXMoKSwgZ2V0V29yZHNBc1N0cmluZygpLCBnZXRDb3JyZWN0aW9uVHlwZSgpKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIExPR1NUQVRFTUVOVF9MT0dfVU5JVF9CRUdJTl9XSVRIT1VUX1BSSVZBVEVfREFUQS5vdXRwdXRUb0xvY2tlZChqc29uV3JpdGVyLAogICAgICAgICAgICAgICAgICAgICBTeXN0ZW1DbG9jay51cHRpbWVNaWxsaXMoKSk7CkBAIC0xODEsMjIgKzE5OSwyMiBAQAogICAgIH0KIAogICAgIC8qKgotICAgICAqIE1hcmsgdGhlIGN1cnJlbnQgbG9nVW5pdCBhcyBjb250YWluaW5nIGRhdGEgdG8gZ2VuZXJhdGUge0Bjb2RlIHdvcmR9LgorICAgICAqIE1hcmsgdGhlIGN1cnJlbnQgbG9nVW5pdCBhcyBjb250YWluaW5nIGRhdGEgdG8gZ2VuZXJhdGUge0Bjb2RlIG5ld1dvcmRzfS4KICAgICAgKgogICAgICAqIElmIHtAY29kZSBzZXRXb3JkKCl9IHdhcyBwcmV2aW91c2x5IGNhbGxlZCBmb3IgdGhpcyBMb2dVbml0LCB0aGVuIHRoZSBtZXRob2Qgd2lsbCB0cnkgdG8KICAgICAgKiBkZXRlcm1pbmUgd2hhdCBraW5kIG9mIGNvcnJlY3Rpb24gaXQgaXMsIGFuZCB1cGRhdGUgaXRzIGludGVybmFsIHN0YXRlIG9mIHRoZSBjb3JyZWN0aW9uVHlwZQogICAgICAqIGFjY29yZGluZ2x5LgogICAgICAqCi0gICAgICogQHBhcmFtIHdvcmQgVGhlIHdvcmQgdGhpcyBMb2dVbml0IGdlbmVyYXRlcy4gIENhbGxlciBzaG91bGQgbm90IHBhc3MgbnVsbCBvciB0aGUgZW1wdHkKKyAgICAgKiBAcGFyYW0gbmV3V29yZHMgVGhlIHdvcmRzIHRoaXMgTG9nVW5pdCBnZW5lcmF0ZXMuICBDYWxsZXIgc2hvdWxkIG5vdCBwYXNzIG51bGwgb3IgdGhlIGVtcHR5CiAgICAgICogc3RyaW5nLgogICAgICAqLwotICAgIHB1YmxpYyB2b2lkIHNldFdvcmQoZmluYWwgU3RyaW5nIHdvcmQpIHsKLSAgICAgICAgaWYgKGhhc1dvcmQoKSkgeworICAgIHB1YmxpYyB2b2lkIHNldFdvcmRzKGZpbmFsIFN0cmluZyBuZXdXb3JkcykgeworICAgICAgICBpZiAoaGFzT25lT3JNb3JlV29yZHMoKSkgewogICAgICAgICAgICAgLy8gVGhlIHdvcmQgd2FzIGFscmVhZHkgc2V0IG9uY2UsIGFuZCBpdCBpcyBub3cgYmVpbmcgY2hhbmdlZC4gIFNlZSBpZiB0aGUgbmV3IHdvcmQKICAgICAgICAgICAgIC8vIGlzIGNsb3NlIHRvIHRoZSBvbGQgd29yZC4gIElmIHNvLCB0aGVuIHRoZSBjaGFuZ2UgaXMgcHJvYmFibHkgYSB0eXBvIGNvcnJlY3Rpb24uCiAgICAgICAgICAgICAvLyBJZiBub3QsIHRoZSB1c2VyIG1heSBoYXZlIGRlY2lkZWQgdG8gZW50ZXIgYSBkaWZmZXJlbnQgd29yZCwgc28gZmxhZyBpdC4KICAgICAgICAgICAgIGlmIChtU3VnZ2VzdGVkV29yZHMgIT0gbnVsbCkgewotICAgICAgICAgICAgICAgIGlmIChpc0luU3VnZ2VzdGVkV29yZHMod29yZCwgbVN1Z2dlc3RlZFdvcmRzKSkgeworICAgICAgICAgICAgICAgIGlmIChpc0luU3VnZ2VzdGVkV29yZHMobmV3V29yZHMsIG1TdWdnZXN0ZWRXb3JkcykpIHsKICAgICAgICAgICAgICAgICAgICAgbUNvcnJlY3Rpb25UeXBlID0gQ09SUkVDVElPTlRZUEVfVFlQTzsKICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICBtQ29ycmVjdGlvblR5cGUgPSBDT1JSRUNUSU9OVFlQRV9ESUZGRVJFTlRfV09SRDsKQEAgLTIwNiwzOCArMjI0LDcxIEBACiAgICAgICAgICAgICAgICAgLy8gTWFyayBpdCBhcyBhIGdlbmVyaWMgY29ycmVjdGlvbi4KICAgICAgICAgICAgICAgICBtQ29ycmVjdGlvblR5cGUgPSBDT1JSRUNUSU9OVFlQRV9DT1JSRUNUSU9OOwogICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbUNvcnJlY3Rpb25UeXBlID0gQ09SUkVDVElPTlRZUEVfTk9fQ09SUkVDVElPTjsKICAgICAgICAgfQotICAgICAgICBtV29yZCA9IHdvcmQ7CisgICAgICAgIG1Xb3JkcyA9IG5ld1dvcmRzOworCisgICAgICAgIC8vIFVwZGF0ZSBtV29yZEFycmF5CisgICAgICAgIG1Xb3JkQXJyYXkgPSAoVGV4dFV0aWxzLmlzRW1wdHkobVdvcmRzKSkgPyBFTVBUWV9TVFJJTkdfQVJSQVkKKyAgICAgICAgICAgICAgICA6IFdISVRFU1BBQ0VfUEFUVEVSTi5zcGxpdChtV29yZHMpOworICAgICAgICBpZiAobVdvcmRBcnJheS5sZW5ndGggPiAwICYmIFRleHRVdGlscy5pc0VtcHR5KG1Xb3JkQXJyYXlbMF0pKSB7CisgICAgICAgICAgICAvLyBFbXB0eSBzdHJpbmcgYXQgYmVnaW5uaW5nIG9mIGFycmF5LiAgTXVzdCBoYXZlIGJlZW4gd2hpdGVzcGFjZSBhdCB0aGUgc3RhcnQgb2YgdGhlCisgICAgICAgICAgICAvLyB3b3JkLiAgUmVtb3ZlIHRoZSBlbXB0eSBzdHJpbmcuCisgICAgICAgICAgICBtV29yZEFycmF5ID0gQXJyYXlzLmNvcHlPZlJhbmdlKG1Xb3JkQXJyYXksIDEsIG1Xb3JkQXJyYXkubGVuZ3RoKTsKKyAgICAgICAgfQogICAgIH0KIAotICAgIHB1YmxpYyBTdHJpbmcgZ2V0V29yZCgpIHsKLSAgICAgICAgcmV0dXJuIG1Xb3JkOworICAgIHB1YmxpYyBTdHJpbmcgZ2V0V29yZHNBc1N0cmluZygpIHsKKyAgICAgICAgcmV0dXJuIG1Xb3JkczsKICAgICB9CiAKLSAgICBwdWJsaWMgYm9vbGVhbiBoYXNXb3JkKCkgewotICAgICAgICByZXR1cm4gbVdvcmQgIT0gbnVsbCAmJiAhVGV4dFV0aWxzLmlzRW1wdHkobVdvcmQudHJpbSgpKTsKKyAgICAvKioKKyAgICAgKiBSZXR1bnMgdGhlIHdvcmRzIGdlbmVyYXRlZCBieSB0aGUgZGF0YSBpbiB0aGlzIExvZ1VuaXQuCisgICAgICoKKyAgICAgKiBUaGUgZmlyc3Qgd29yZCBtYXkgYmUgYW4gZW1wdHkgc3RyaW5nLCBpZiB0aGUgZGF0YSBpbiB0aGUgTG9nVW5pdCBzdGFydGVkIGJ5IGdlbmVyYXRpbmcKKyAgICAgKiB3aGl0ZXNwYWNlLgorICAgICAqCisgICAgICogQHJldHVybiB0aGUgYXJyYXkgb2Ygd29yZHMuIGFuIGVtcHR5IGxpc3Qgb2YgdGhlcmUgYXJlIG5vIHdvcmRzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIExvZ1VuaXQuCisgICAgICovCisgICAgcHVibGljIFN0cmluZ1tdIGdldFdvcmRzQXNTdHJpbmdBcnJheSgpIHsKKyAgICAgICAgcmV0dXJuIG1Xb3JkQXJyYXk7CiAgICAgfQogCisgICAgcHVibGljIGJvb2xlYW4gaGFzT25lT3JNb3JlV29yZHMoKSB7CisgICAgICAgIHJldHVybiBtV29yZEFycmF5Lmxlbmd0aCA+PSAxOworICAgIH0KKworICAgIHB1YmxpYyBpbnQgZ2V0TnVtV29yZHMoKSB7CisgICAgICAgIHJldHVybiBtV29yZEFycmF5Lmxlbmd0aDsKKyAgICB9CisKKyAgICAvLyBUT0RPOiBSZWZhY3RvciB0byBlbGltaW5hdGUgZ2V0dGVyL3NldHRlcnMKICAgICBwdWJsaWMgdm9pZCBzZXRNYXlDb250YWluRGlnaXQoKSB7CiAgICAgICAgIG1NYXlDb250YWluRGlnaXQgPSB0cnVlOwogICAgIH0KIAorICAgIC8vIFRPRE86IFJlZmFjdG9yIHRvIGVsaW1pbmF0ZSBnZXR0ZXIvc2V0dGVycwogICAgIHB1YmxpYyBib29sZWFuIG1heUNvbnRhaW5EaWdpdCgpIHsKICAgICAgICAgcmV0dXJuIG1NYXlDb250YWluRGlnaXQ7CiAgICAgfQogCisgICAgLy8gVE9ETzogUmVmYWN0b3IgdG8gZWxpbWluYXRlIGdldHRlci9zZXR0ZXJzCiAgICAgcHVibGljIHZvaWQgc2V0Q29udGFpbnNDb3JyZWN0aW9uKCkgewogICAgICAgICBtQ29udGFpbnNDb3JyZWN0aW9uID0gdHJ1ZTsKICAgICB9CiAKKyAgICAvLyBUT0RPOiBSZWZhY3RvciB0byBlbGltaW5hdGUgZ2V0dGVyL3NldHRlcnMKICAgICBwdWJsaWMgYm9vbGVhbiBjb250YWluc0NvcnJlY3Rpb24oKSB7CiAgICAgICAgIHJldHVybiBtQ29udGFpbnNDb3JyZWN0aW9uOwogICAgIH0KIAorICAgIC8vIFRPRE86IFJlZmFjdG9yIHRvIGVsaW1pbmF0ZSBnZXR0ZXIvc2V0dGVycwogICAgIHB1YmxpYyB2b2lkIHNldENvcnJlY3Rpb25UeXBlKGZpbmFsIGludCBjb3JyZWN0aW9uVHlwZSkgewogICAgICAgICBtQ29ycmVjdGlvblR5cGUgPSBjb3JyZWN0aW9uVHlwZTsKICAgICB9CiAKKyAgICAvLyBUT0RPOiBSZWZhY3RvciB0byBlbGltaW5hdGUgZ2V0dGVyL3NldHRlcnMKICAgICBwdWJsaWMgaW50IGdldENvcnJlY3Rpb25UeXBlKCkgewogICAgICAgICByZXR1cm4gbUNvcnJlY3Rpb25UeXBlOwogICAgIH0KQEAgLTI2Nyw3ICszMTgsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgbmV3IEFycmF5TGlzdDxPYmplY3RbXT4obGF0ZXJWYWx1ZXMpLAogICAgICAgICAgICAgICAgICAgICAgICAgbmV3IEFycmF5TGlzdDxMb25nPihsYXRlclRpbWVzKSwKICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUgLyogaXNQYXJ0T2ZNZWdhd29yZCAqLyk7Ci0gICAgICAgICAgICAgICAgbmV3TG9nVW5pdC5tV29yZCA9IG51bGw7CisgICAgICAgICAgICAgICAgbmV3TG9nVW5pdC5tV29yZHMgPSBudWxsOwogICAgICAgICAgICAgICAgIG5ld0xvZ1VuaXQubU1heUNvbnRhaW5EaWdpdCA9IG1NYXlDb250YWluRGlnaXQ7CiAgICAgICAgICAgICAgICAgbmV3TG9nVW5pdC5tQ29udGFpbnNDb3JyZWN0aW9uID0gbUNvbnRhaW5zQ29ycmVjdGlvbjsKIApAQCAtMjg3LDkgKzMzOCw5IEBACiAgICAgICAgIG1Mb2dTdGF0ZW1lbnRMaXN0LmFkZEFsbChsb2dVbml0Lm1Mb2dTdGF0ZW1lbnRMaXN0KTsKICAgICAgICAgbVZhbHVlc0xpc3QuYWRkQWxsKGxvZ1VuaXQubVZhbHVlc0xpc3QpOwogICAgICAgICBtVGltZUxpc3QuYWRkQWxsKGxvZ1VuaXQubVRpbWVMaXN0KTsKLSAgICAgICAgbVdvcmQgPSBudWxsOwotICAgICAgICBpZiAobG9nVW5pdC5tV29yZCAhPSBudWxsKSB7Ci0gICAgICAgICAgICBzZXRXb3JkKGxvZ1VuaXQubVdvcmQpOworICAgICAgICBtV29yZHMgPSBudWxsOworICAgICAgICBpZiAobG9nVW5pdC5tV29yZHMgIT0gbnVsbCkgeworICAgICAgICAgICAgc2V0V29yZHMobG9nVW5pdC5tV29yZHMpOwogICAgICAgICB9CiAgICAgICAgIG1NYXlDb250YWluRGlnaXQgPSBtTWF5Q29udGFpbkRpZ2l0IHx8IGxvZ1VuaXQubU1heUNvbnRhaW5EaWdpdDsKICAgICAgICAgbUNvbnRhaW5zQ29ycmVjdGlvbiA9IG1Db250YWluc0NvcnJlY3Rpb24gfHwgbG9nVW5pdC5tQ29udGFpbnNDb3JyZWN0aW9uOwpkaWZmIC0tZ2l0IGEvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvcmVzZWFyY2gvTWFpbkxvZ0J1ZmZlci5qYXZhIGIvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvcmVzZWFyY2gvTWFpbkxvZ0J1ZmZlci5qYXZhCmluZGV4IDMzMDNkMmIuLjQyZWY1ZDMgMTAwNjQ0Ci0tLSBhL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL3Jlc2VhcmNoL01haW5Mb2dCdWZmZXIuamF2YQorKysgYi9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9yZXNlYXJjaC9NYWluTG9nQnVmZmVyLmphdmEKQEAgLTI1LDcgKzI1LDYgQEAKIAogaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7CiBpbXBvcnQgamF2YS51dGlsLkxpbmtlZExpc3Q7Ci1pbXBvcnQgamF2YS51dGlsLlJhbmRvbTsKIAogLyoqCiAgKiBNYWluTG9nQnVmZmVyIGlzIGEgRml4ZWRMb2dCdWZmZXIgdGhhdCB0cmFja3MgdGhlIHN0YXRlIG9mIExvZ1VuaXRzIHRvIG1ha2UgcHJpdmFjeSBndWFyYW50ZWVzLgpAQCAtMTAwLDEwICs5OSw2IEBACiAgICAgICAgIHJldHVybiBtU3VnZ2VzdC5nZXRNYWluRGljdGlvbmFyeSgpOwogICAgIH0KIAotICAgIHB1YmxpYyB2b2lkIHJlc2V0V29yZENvdW50ZXIoKSB7Ci0gICAgICAgIG1OdW1Xb3Jkc1VudGlsU2FmZVRvU2FtcGxlID0gbU51bVdvcmRzQmV0d2Vlbk5HcmFtczsKLSAgICB9Ci0KICAgICBwdWJsaWMgdm9pZCBzZXRJc1N0b3BwaW5nKCkgewogICAgICAgICBtSXNTdG9wcGluZyA9IHRydWU7CiAgICAgfQpAQCAtMTMxLDEwICsxMjYsNyBAQAogICAgICAgICAgICAgZmluYWwgaW50IGxlbmd0aCA9IGxvZ1VuaXRzLnNpemUoKTsKICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICAgICBmaW5hbCBMb2dVbml0IGxvZ1VuaXQgPSBsb2dVbml0cy5nZXQoaSk7Ci0gICAgICAgICAgICAgICAgZmluYWwgU3RyaW5nIHdvcmQgPSBsb2dVbml0LmdldFdvcmQoKTsKLSAgICAgICAgICAgICAgICBpZiAod29yZCAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgICAgIG51bVdvcmRzSW5Mb2dVbml0TGlzdCsrOwotICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBudW1Xb3Jkc0luTG9nVW5pdExpc3QgKz0gbG9nVW5pdC5nZXROdW1Xb3JkcygpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIG51bVdvcmRzSW5Mb2dVbml0TGlzdCA+PSBtaW5OR3JhbVNpemU7CiAgICAgICAgIH0KQEAgLTE1OCwyOSArMTUwLDMxIEBACiAgICAgICAgIC8vIHRoZSBjb21wbGV0ZSBidWZmZXIgY29udGVudHMgaW4gZGV0YWlsLgogICAgICAgICBpbnQgbnVtV29yZHNJbkxvZ1VuaXRMaXN0ID0gMDsKICAgICAgICAgZmluYWwgaW50IGxlbmd0aCA9IGxvZ1VuaXRzLnNpemUoKTsKLSAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgewotICAgICAgICAgICAgZmluYWwgTG9nVW5pdCBsb2dVbml0ID0gbG9nVW5pdHMuZ2V0KGkpOwotICAgICAgICAgICAgaWYgKCFsb2dVbml0Lmhhc1dvcmQoKSkgeworICAgICAgICBmb3IgKGZpbmFsIExvZ1VuaXQgbG9nVW5pdCA6IGxvZ1VuaXRzKSB7CisgICAgICAgICAgICBpZiAoIWxvZ1VuaXQuaGFzT25lT3JNb3JlV29yZHMoKSkgewogICAgICAgICAgICAgICAgIC8vIERpZ2l0cyBvdXRzaWRlIHdvcmRzIGFyZSBhIHByaXZhY3kgdGhyZWF0LgogICAgICAgICAgICAgICAgIGlmIChsb2dVbml0Lm1heUNvbnRhaW5EaWdpdCgpKSB7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIG51bVdvcmRzSW5Mb2dVbml0TGlzdCsrOwotICAgICAgICAgICAgICAgIGZpbmFsIFN0cmluZyB3b3JkID0gbG9nVW5pdC5nZXRXb3JkKCk7Ci0gICAgICAgICAgICAgICAgLy8gV29yZHMgbm90IGluIHRoZSBkaWN0aW9uYXJ5IGFyZSBhIHByaXZhY3kgdGhyZWF0LgotICAgICAgICAgICAgICAgIGlmIChSZXNlYXJjaExvZ2dlci5oYXNMZXR0ZXJzKHdvcmQpICYmICEoZGljdGlvbmFyeS5pc1ZhbGlkV29yZCh3b3JkKSkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKERFQlVHKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBMb2cuZChUQUcsICJOT1QgU0FGRSE6IGhhc0xldHRlcnM6ICIgKyBSZXNlYXJjaExvZ2dlci5oYXNMZXR0ZXJzKHdvcmQpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIiwgaXNWYWxpZDogIiArIChkaWN0aW9uYXJ5LmlzVmFsaWRXb3JkKHdvcmQpKSk7CisgICAgICAgICAgICAgICAgbnVtV29yZHNJbkxvZ1VuaXRMaXN0ICs9IGxvZ1VuaXQuZ2V0TnVtV29yZHMoKTsKKyAgICAgICAgICAgICAgICBmaW5hbCBTdHJpbmdbXSB3b3JkcyA9IGxvZ1VuaXQuZ2V0V29yZHNBc1N0cmluZ0FycmF5KCk7CisgICAgICAgICAgICAgICAgZm9yIChmaW5hbCBTdHJpbmcgd29yZCA6IHdvcmRzKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIFdvcmRzIG5vdCBpbiB0aGUgZGljdGlvbmFyeSBhcmUgYSBwcml2YWN5IHRocmVhdC4KKyAgICAgICAgICAgICAgICAgICAgaWYgKFJlc2VhcmNoTG9nZ2VyLmhhc0xldHRlcnMod29yZCkgJiYgIShkaWN0aW9uYXJ5LmlzVmFsaWRXb3JkKHdvcmQpKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKERFQlVHKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nLmQoVEFHLCAiXCIiICsgd29yZCArICJcIiBOT1QgU0FGRSE6IGhhc0xldHRlcnM6ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgUmVzZWFyY2hMb2dnZXIuaGFzTGV0dGVycyh3b3JkKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiLCBpc1ZhbGlkOiAiICsgKGRpY3Rpb25hcnkuaXNWYWxpZFdvcmQod29yZCkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgLy8gRmluYWxseSwgb25seSByZXR1cm4gdHJ1ZSBpZiB0aGUgbWluTkdyYW1TaXplIGlzIG1ldC4KLSAgICAgICAgcmV0dXJuIG51bVdvcmRzSW5Mb2dVbml0TGlzdCA+PSBtaW5OR3JhbVNpemU7CisgICAgICAgIC8vIEZpbmFsbHksIG9ubHkgcmV0dXJuIHRydWUgaWYgdGhlIG5ncmFtIGlzIHRoZSByaWdodCBzaXplLgorICAgICAgICByZXR1cm4gbnVtV29yZHNJbkxvZ1VuaXRMaXN0ID09IG1pbk5HcmFtU2l6ZTsKICAgICB9CiAKICAgICBwdWJsaWMgdm9pZCBzaGlmdEFuZFB1Ymxpc2hBbGwoKSB7CkBAIC0yMDEsMTMgKzE5NSwxNiBAQAogICAgICAgICAgICAgLy8gR29vZCBuLWdyYW0gYXQgdGhlIGZyb250IG9mIHRoZSBidWZmZXIuICBQdWJsaXNoIGl0LCBkaXNjbG9zaW5nIGRldGFpbHMuCiAgICAgICAgICAgICBwdWJsaXNoKGxvZ1VuaXRzLCB0cnVlIC8qIGNhbkluY2x1ZGVQcml2YXRlRGF0YSAqLyk7CiAgICAgICAgICAgICBzaGlmdE91dFdvcmRzKE5fR1JBTV9TSVpFKTsKLSAgICAgICAgICAgIHJlc2V0V29yZENvdW50ZXIoKTsKKyAgICAgICAgICAgIG1OdW1Xb3Jkc1VudGlsU2FmZVRvU2FtcGxlID0gbU51bVdvcmRzQmV0d2Vlbk5HcmFtczsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8vIE5vIGdvb2Qgbi1ncmFtIGF0IGZyb250LCBhbmQgYnVmZmVyIGlzIGZ1bGwuICBTaGlmdCBvdXQgdGhlIGZpcnN0IHdvcmQgKG9yIGlmIHRoZXJlCi0gICAgICAgICAgICAvLyBpcyBub25lLCB0aGUgZXhpc3RpbmcgbG9nVW5pdHMpLgotICAgICAgICAgICAgbG9nVW5pdHMgPSBwZWVrQXRGaXJzdE5Xb3JkcygxKTsKKyAgICAgICAgICAgIC8vIE5vIGdvb2Qgbi1ncmFtIGF0IGZyb250LCBhbmQgYnVmZmVyIGlzIGZ1bGwuICBTaGlmdCBvdXQgdXAgdGhyb3VnaCB0aGUgZmlyc3QgbG9nVW5pdAorICAgICAgICAgICAgLy8gd2l0aCBhc3NvY2lhdGVkIHdvcmRzIChvciBpZiB0aGVyZSBpcyBub25lLCBhbGwgdGhlIGV4aXN0aW5nIGxvZ1VuaXRzKS4KKyAgICAgICAgICAgIGxvZ1VuaXRzLmNsZWFyKCk7CisgICAgICAgICAgICBmb3IgKExvZ1VuaXQgbG9nVW5pdCA9IHNoaWZ0T3V0KCk7IGxvZ1VuaXQgIT0gbnVsbCAmJiAhbG9nVW5pdC5oYXNPbmVPck1vcmVXb3JkcygpOworICAgICAgICAgICAgICAgICAgICBsb2dVbml0ID0gc2hpZnRPdXQoKSkgeworICAgICAgICAgICAgICAgIGxvZ1VuaXRzLmFkZChsb2dVbml0KTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIHB1Ymxpc2gobG9nVW5pdHMsIGZhbHNlIC8qIGNhbkluY2x1ZGVQcml2YXRlRGF0YSAqLyk7Ci0gICAgICAgICAgICBzaGlmdE91dFdvcmRzKDEpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0yMjQsMTMgKzIyMSwxMyBAQAogICAgICAgICAgICAgZmluYWwgYm9vbGVhbiBjYW5JbmNsdWRlUHJpdmF0ZURhdGEpOwogCiAgICAgQE92ZXJyaWRlCi0gICAgcHJvdGVjdGVkIHZvaWQgc2hpZnRPdXRXb3JkcyhmaW5hbCBpbnQgbnVtV29yZHMpIHsKLSAgICAgICAgZmluYWwgaW50IG9sZE51bUFjdHVhbFdvcmRzID0gZ2V0TnVtQWN0dWFsV29yZHMoKTsKLSAgICAgICAgc3VwZXIuc2hpZnRPdXRXb3JkcyhudW1Xb3Jkcyk7Ci0gICAgICAgIGZpbmFsIGludCBudW1Xb3Jkc1NoaWZ0ZWQgPSBvbGROdW1BY3R1YWxXb3JkcyAtIGdldE51bUFjdHVhbFdvcmRzKCk7Ci0gICAgICAgIG1OdW1Xb3Jkc1VudGlsU2FmZVRvU2FtcGxlIC09IG51bVdvcmRzU2hpZnRlZDsKKyAgICBwcm90ZWN0ZWQgaW50IHNoaWZ0T3V0V29yZHMoZmluYWwgaW50IG51bVdvcmRzKSB7CisgICAgICAgIGZpbmFsIGludCBudW1Xb3JkQ29udGFpbmluZ0xvZ1VuaXRzU2hpZnRlZE91dCA9IHN1cGVyLnNoaWZ0T3V0V29yZHMobnVtV29yZHMpOworICAgICAgICBtTnVtV29yZHNVbnRpbFNhZmVUb1NhbXBsZSA9IE1hdGgubWF4KDAsIG1OdW1Xb3Jkc1VudGlsU2FmZVRvU2FtcGxlCisgICAgICAgICAgICAgICAgLSBudW1Xb3JkQ29udGFpbmluZ0xvZ1VuaXRzU2hpZnRlZE91dCk7CiAgICAgICAgIGlmIChERUJVRykgewogICAgICAgICAgICAgTG9nLmQoVEFHLCAid29yZHNVbnRpbFNhZmVUb1NhbXBsZSBub3cgYXQgIiArIG1OdW1Xb3Jkc1VudGlsU2FmZVRvU2FtcGxlKTsKICAgICAgICAgfQorICAgICAgICByZXR1cm4gbnVtV29yZENvbnRhaW5pbmdMb2dVbml0c1NoaWZ0ZWRPdXQ7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvcmVzZWFyY2gvUmVzZWFyY2hMb2cuamF2YSBiL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL3Jlc2VhcmNoL1Jlc2VhcmNoTG9nLmphdmEKaW5kZXggMzVhNDkxZi4uMThiZjdiYSAxMDA2NDQKLS0tIGEvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvcmVzZWFyY2gvUmVzZWFyY2hMb2cuamF2YQorKysgYi9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9yZXNlYXJjaC9SZXNlYXJjaExvZy5qYXZhCkBAIC0xMDgsMTAgKzEwOCwxNCBAQAogICAgICAgICAgICAgQE92ZXJyaWRlCiAgICAgICAgICAgICBwdWJsaWMgT2JqZWN0IGNhbGwoKSB0aHJvd3MgRXhjZXB0aW9uIHsKICAgICAgICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgICAgICBpZiAobUhhc1dyaXR0ZW5EYXRhKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtSnNvbldyaXRlci5lbmRBcnJheSgpOwotICAgICAgICAgICAgICAgICAgICAgICAgbUhhc1dyaXR0ZW5EYXRhID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIC8vIFRPRE86IFRoaXMgaXMgbmVjZXNzYXJ5IHRvIGF2b2lkIGFuIGV4Y2VwdGlvbi4gIEJldHRlciB3b3VsZCBiZSB0byBub3QgZXZlbgorICAgICAgICAgICAgICAgICAgICAvLyBvcGVuIHRoZSBKc29uV3JpdGVyIGlmIHRoZSBmaWxlIGlzIG5vdCBldmVuIG9wZW5lZCB1bmxlc3MgdGhlcmUgaXMgdmFsaWQgZGF0YQorICAgICAgICAgICAgICAgICAgICAvLyB0byB3cml0ZS4KKyAgICAgICAgICAgICAgICAgICAgaWYgKCFtSGFzV3JpdHRlbkRhdGEpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1Kc29uV3JpdGVyLmJlZ2luQXJyYXkoKTsKICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBtSnNvbldyaXRlci5lbmRBcnJheSgpOworICAgICAgICAgICAgICAgICAgICBtSGFzV3JpdHRlbkRhdGEgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgbUpzb25Xcml0ZXIuZmx1c2goKTsKICAgICAgICAgICAgICAgICAgICAgbUpzb25Xcml0ZXIuY2xvc2UoKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKERFQlVHKSB7CkBAIC0xNTksNiArMTYzLDEyIEBACiAgICAgICAgICAgICBwdWJsaWMgT2JqZWN0IGNhbGwoKSB0aHJvd3MgRXhjZXB0aW9uIHsKICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICBpZiAobUhhc1dyaXR0ZW5EYXRhKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBUT0RPOiBUaGlzIGlzIG5lY2Vzc2FyeSB0byBhdm9pZCBhbiBleGNlcHRpb24uICBCZXR0ZXIgd291bGQgYmUgdG8gbm90CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBldmVuIG9wZW4gdGhlIEpzb25Xcml0ZXIgaWYgdGhlIGZpbGUgaXMgbm90IGV2ZW4gb3BlbmVkIHVubGVzcyB0aGVyZSBpcworICAgICAgICAgICAgICAgICAgICAgICAgLy8gdmFsaWQgZGF0YSB0byB3cml0ZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbUhhc1dyaXR0ZW5EYXRhKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbUpzb25Xcml0ZXIuYmVnaW5BcnJheSgpOworICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgbUpzb25Xcml0ZXIuZW5kQXJyYXkoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIG1Kc29uV3JpdGVyLmNsb3NlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBtSGFzV3JpdHRlbkRhdGEgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL3Jlc2VhcmNoL1Jlc2VhcmNoTG9nRGlyZWN0b3J5LmphdmEgYi9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9yZXNlYXJjaC9SZXNlYXJjaExvZ0RpcmVjdG9yeS5qYXZhCmluZGV4IDI5MWRlYTUuLmQxNTYwNjggMTAwNjQ0Ci0tLSBhL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL3Jlc2VhcmNoL1Jlc2VhcmNoTG9nRGlyZWN0b3J5LmphdmEKKysrIGIvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvcmVzZWFyY2gvUmVzZWFyY2hMb2dEaXJlY3RvcnkuamF2YQpAQCAtOTcsMTUgKzk3LDE3IEBACiAgICAgICAgIH0KICAgICB9CiAKLSAgICBwdWJsaWMgRmlsZSBnZXRMb2dGaWxlUGF0aChmaW5hbCBsb25nIHRpbWUpIHsKLSAgICAgICAgcmV0dXJuIG5ldyBGaWxlKG1GaWxlc0RpciwgZ2V0VW5pcXVlRmlsZW5hbWUoTE9HX0ZJTEVOQU1FX1BSRUZJWCwgdGltZSkpOworICAgIHB1YmxpYyBGaWxlIGdldExvZ0ZpbGVQYXRoKGZpbmFsIGxvbmcgdGltZSwgZmluYWwgbG9uZyBuYW5vVGltZSkgeworICAgICAgICByZXR1cm4gbmV3IEZpbGUobUZpbGVzRGlyLCBnZXRVbmlxdWVGaWxlbmFtZShMT0dfRklMRU5BTUVfUFJFRklYLCB0aW1lLCBuYW5vVGltZSkpOwogICAgIH0KIAotICAgIHB1YmxpYyBGaWxlIGdldFVzZXJSZWNvcmRpbmdGaWxlUGF0aChmaW5hbCBsb25nIHRpbWUpIHsKLSAgICAgICAgcmV0dXJuIG5ldyBGaWxlKG1GaWxlc0RpciwgZ2V0VW5pcXVlRmlsZW5hbWUoVVNFUl9SRUNPUkRJTkdfRklMRU5BTUVfUFJFRklYLCB0aW1lKSk7CisgICAgcHVibGljIEZpbGUgZ2V0VXNlclJlY29yZGluZ0ZpbGVQYXRoKGZpbmFsIGxvbmcgdGltZSwgZmluYWwgbG9uZyBuYW5vVGltZSkgeworICAgICAgICByZXR1cm4gbmV3IEZpbGUobUZpbGVzRGlyLCBnZXRVbmlxdWVGaWxlbmFtZShVU0VSX1JFQ09SRElOR19GSUxFTkFNRV9QUkVGSVgsIHRpbWUsCisgICAgICAgICAgICAgICAgbmFub1RpbWUpKTsKICAgICB9CiAKLSAgICBwcml2YXRlIHN0YXRpYyBTdHJpbmcgZ2V0VW5pcXVlRmlsZW5hbWUoZmluYWwgU3RyaW5nIHByZWZpeCwgZmluYWwgbG9uZyB0aW1lKSB7Ci0gICAgICAgIHJldHVybiBwcmVmaXggKyAiLSIgKyB0aW1lICsgRklMRU5BTUVfU1VGRklYOworICAgIHByaXZhdGUgc3RhdGljIFN0cmluZyBnZXRVbmlxdWVGaWxlbmFtZShmaW5hbCBTdHJpbmcgcHJlZml4LCBmaW5hbCBsb25nIHRpbWUsCisgICAgICAgICAgICBmaW5hbCBsb25nIG5hbm9UaW1lKSB7CisgICAgICAgIHJldHVybiBwcmVmaXggKyAiLSIgKyB0aW1lICsgIi0iICsgbmFub1RpbWUgKyBGSUxFTkFNRV9TVUZGSVg7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvcmVzZWFyY2gvUmVzZWFyY2hMb2dnZXIuamF2YSBiL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL3Jlc2VhcmNoL1Jlc2VhcmNoTG9nZ2VyLmphdmEKaW5kZXggN2EyM2RkYi4uMWY2ODQ1YyAxMDA2NDQKLS0tIGEvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvcmVzZWFyY2gvUmVzZWFyY2hMb2dnZXIuamF2YQorKysgYi9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9yZXNlYXJjaC9SZXNlYXJjaExvZ2dlci5qYXZhCkBAIC0zODksNyArMzg5LDcgQEAKICAgICAgICAgfQogICAgICAgICBpZiAobU1haW5Mb2dCdWZmZXIgPT0gbnVsbCkgewogICAgICAgICAgICAgbU1haW5SZXNlYXJjaExvZyA9IG5ldyBSZXNlYXJjaExvZyhtUmVzZWFyY2hMb2dEaXJlY3RvcnkuZ2V0TG9nRmlsZVBhdGgoCi0gICAgICAgICAgICAgICAgICAgIFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpKSwgbUxhdGluSU1FKTsKKyAgICAgICAgICAgICAgICAgICAgU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCksIFN5c3RlbS5uYW5vVGltZSgpKSwgbUxhdGluSU1FKTsKICAgICAgICAgICAgIGZpbmFsIGludCBudW1Xb3Jkc1RvSWdub3JlID0gbmV3IFJhbmRvbSgpLm5leHRJbnQoTlVNQkVSX09GX1dPUkRTX0JFVFdFRU5fU0FNUExFUyArIDEpOwogICAgICAgICAgICAgbU1haW5Mb2dCdWZmZXIgPSBuZXcgTWFpbkxvZ0J1ZmZlcihOVU1CRVJfT0ZfV09SRFNfQkVUV0VFTl9TQU1QTEVTLCBudW1Xb3Jkc1RvSWdub3JlLAogICAgICAgICAgICAgICAgICAgICBtU3VnZ2VzdCkgewpAQCAtMzk3LDEzICszOTcsMTQgQEAKICAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgdm9pZCBwdWJsaXNoKGZpbmFsIEFycmF5TGlzdDxMb2dVbml0PiBsb2dVbml0cywKICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2xlYW4gY2FuSW5jbHVkZVByaXZhdGVEYXRhKSB7CiAgICAgICAgICAgICAgICAgICAgIGNhbkluY2x1ZGVQcml2YXRlRGF0YSB8PSBJU19MT0dHSU5HX0VWRVJZVEhJTkc7Ci0gICAgICAgICAgICAgICAgICAgIGZpbmFsIGludCBsZW5ndGggPSBsb2dVbml0cy5zaXplKCk7Ci0gICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsIExvZ1VuaXQgbG9nVW5pdCA9IGxvZ1VuaXRzLmdldChpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsIFN0cmluZyB3b3JkID0gbG9nVW5pdC5nZXRXb3JkKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAod29yZCAhPSBudWxsICYmIHdvcmQubGVuZ3RoKCkgPiAwICYmIGhhc0xldHRlcnMod29yZCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBMb2cuZChUQUcsICJvblB1Ymxpc2g6ICIgKyB3b3JkICsgIiwgaGM6ICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgbG9nVW5pdC5jb250YWluc0NvcnJlY3Rpb24oKSk7CisgICAgICAgICAgICAgICAgICAgIGZvciAoZmluYWwgTG9nVW5pdCBsb2dVbml0IDogbG9nVW5pdHMpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChERUJVRykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsIFN0cmluZyB3b3Jkc1N0cmluZyA9IGxvZ1VuaXQuZ2V0V29yZHNBc1N0cmluZygpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvZy5kKFRBRywgIm9uUHVibGlzaDogJyIgKyB3b3Jkc1N0cmluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiJywgaGM6ICIgKyBsb2dVbml0LmNvbnRhaW5zQ29ycmVjdGlvbigpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArICIsIGNpcGQ6ICIgKyBjYW5JbmNsdWRlUHJpdmF0ZURhdGEpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChmaW5hbCBTdHJpbmcgd29yZCA6IGxvZ1VuaXQuZ2V0V29yZHNBc1N0cmluZ0FycmF5KCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbCBEaWN0aW9uYXJ5IGRpY3Rpb25hcnkgPSBnZXREaWN0aW9uYXJ5KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbVN0YXRpc3RpY3MucmVjb3JkV29yZEVudGVyZWQoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWN0aW9uYXJ5ICE9IG51bGwgJiYgZGljdGlvbmFyeS5pc1ZhbGlkV29yZCh3b3JkKSwKQEAgLTQyMCw3ICs0MjEsNyBAQAogCiAgICAgcHJpdmF0ZSB2b2lkIHJlc2V0RmVlZGJhY2tMb2dnaW5nKCkgewogICAgICAgICBtRmVlZGJhY2tMb2cgPSBuZXcgUmVzZWFyY2hMb2cobVJlc2VhcmNoTG9nRGlyZWN0b3J5LmdldExvZ0ZpbGVQYXRoKAotICAgICAgICAgICAgICAgIFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpKSwgbUxhdGluSU1FKTsKKyAgICAgICAgICAgICAgICBTeXN0ZW0uY3VycmVudFRpbWVNaWxsaXMoKSwgU3lzdGVtLm5hbm9UaW1lKCkpLCBtTGF0aW5JTUUpOwogICAgICAgICBtRmVlZGJhY2tMb2dCdWZmZXIgPSBuZXcgRml4ZWRMb2dCdWZmZXIoRkVFREJBQ0tfV09SRF9CVUZGRVJfU0laRSk7CiAgICAgfQogCkBAIC01NDUsNyArNTQ2LDcgQEAKICAgICAgICAgICAgIG1Vc2VyUmVjb3JkaW5nTG9nLmJsb2NraW5nQWJvcnQoUkVTRUFSQ0hMT0dfQUJPUlRfVElNRU9VVF9JTl9NUyk7CiAgICAgICAgIH0KICAgICAgICAgbVVzZXJSZWNvcmRpbmdGaWxlID0gbVJlc2VhcmNoTG9nRGlyZWN0b3J5LmdldFVzZXJSZWNvcmRpbmdGaWxlUGF0aCgKLSAgICAgICAgICAgICAgICBTeXN0ZW0uY3VycmVudFRpbWVNaWxsaXMoKSk7CisgICAgICAgICAgICAgICAgU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCksIFN5c3RlbS5uYW5vVGltZSgpKTsKICAgICAgICAgbVVzZXJSZWNvcmRpbmdMb2cgPSBuZXcgUmVzZWFyY2hMb2cobVVzZXJSZWNvcmRpbmdGaWxlLCBtTGF0aW5JTUUpOwogICAgICAgICBtVXNlclJlY29yZGluZ0xvZ0J1ZmZlciA9IG5ldyBMb2dCdWZmZXIoKTsKICAgICAgICAgcmVzZXRSZWNvcmRpbmdUaW1lcigpOwpAQCAtODEzLDcgKzgxNCw3IEBACiAgICAgICAgICAgICAgICAgLy8gZW5hYmxlZC4gIFRoZSBkb3QgaXMgYWN0dWFsbHkgYSB6ZXJvLXdpZHRoLCB6ZXJvLWhlaWdodCByZWN0YW5nbGUsIHBsYWNlZCBhdCB0aGUKICAgICAgICAgICAgICAgICAvLyBsb3dlci1yaWdodCBjb3JuZXIgb2YgdGhlIGNhbnZhcywgcGFpbnRlZCB3aXRoIGEgbm9uLXplcm8gYm9yZGVyIHdpZHRoLgogICAgICAgICAgICAgICAgIHBhaW50LnNldFN0cm9rZVdpZHRoKDMpOwotICAgICAgICAgICAgICAgIGNhbnZhcy5kcmF3UmVjdCh3aWR0aCwgaGVpZ2h0LCB3aWR0aCwgaGVpZ2h0LCBwYWludCk7CisgICAgICAgICAgICAgICAgY2FudmFzLmRyYXdSZWN0KHdpZHRoIC0gMSwgaGVpZ2h0IC0gMSwgd2lkdGgsIGhlaWdodCwgcGFpbnQpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcGFpbnQuc2V0Q29sb3Ioc2F2ZWRDb2xvcik7CiAgICAgICAgICAgICBwYWludC5zZXRTdHlsZShzYXZlZFN0eWxlKTsKQEAgLTg1Miw4ICs4NTMsOCBAQAogCiAgICAgLyogcGFja2FnZSBmb3IgdGVzdCAqLyB2b2lkIGNvbW1pdEN1cnJlbnRMb2dVbml0KCkgewogICAgICAgICBpZiAoREVCVUcpIHsKLSAgICAgICAgICAgIExvZy5kKFRBRywgImNvbW1pdEN1cnJlbnRMb2dVbml0IiArIChtQ3VycmVudExvZ1VuaXQuaGFzV29yZCgpID8KLSAgICAgICAgICAgICAgICAgICAgIjogIiArIG1DdXJyZW50TG9nVW5pdC5nZXRXb3JkKCkgOiAiIikpOworICAgICAgICAgICAgTG9nLmQoVEFHLCAiY29tbWl0Q3VycmVudExvZ1VuaXQiICsgKG1DdXJyZW50TG9nVW5pdC5oYXNPbmVPck1vcmVXb3JkcygpID8KKyAgICAgICAgICAgICAgICAgICAgIjogIiArIG1DdXJyZW50TG9nVW5pdC5nZXRXb3Jkc0FzU3RyaW5nKCkgOiAiIikpOwogICAgICAgICB9CiAgICAgICAgIGlmICghbUN1cnJlbnRMb2dVbml0LmlzRW1wdHkoKSkgewogICAgICAgICAgICAgaWYgKG1NYWluTG9nQnVmZmVyICE9IG51bGwpIHsKQEAgLTg5Myw4ICs4OTQsOCBAQAogCiAgICAgICAgIC8vIENoZWNrIHRoYXQgZXhwZWN0ZWQgd29yZCBtYXRjaGVzLgogICAgICAgICBpZiAob2xkTG9nVW5pdCAhPSBudWxsKSB7Ci0gICAgICAgICAgICBmaW5hbCBTdHJpbmcgb2xkTG9nVW5pdFdvcmQgPSBvbGRMb2dVbml0LmdldFdvcmQoKTsKLSAgICAgICAgICAgIGlmICghb2xkTG9nVW5pdFdvcmQuZXF1YWxzKGV4cGVjdGVkV29yZCkpIHsKKyAgICAgICAgICAgIGZpbmFsIFN0cmluZyBvbGRMb2dVbml0V29yZHMgPSBvbGRMb2dVbml0LmdldFdvcmRzQXNTdHJpbmcoKTsKKyAgICAgICAgICAgIGlmIChvbGRMb2dVbml0V29yZHMgIT0gbnVsbCAmJiAhb2xkTG9nVW5pdFdvcmRzLmVxdWFscyhleHBlY3RlZFdvcmQpKSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC05MTYsNyArOTE3LDggQEAKICAgICAgICAgZW5xdWV1ZUV2ZW50KExPR1NUQVRFTUVOVF9VTkNPTU1JVF9DVVJSRU5UX0xPR1VOSVQpOwogICAgICAgICBpZiAoREVCVUcpIHsKICAgICAgICAgICAgIExvZy5kKFRBRywgInVuY29tbWl0Q3VycmVudExvZ1VuaXQgKGR1bXA9IiArIGR1bXBDdXJyZW50TG9nVW5pdCArICIpIGJhY2sgdG8gIgotICAgICAgICAgICAgICAgICAgICArIChtQ3VycmVudExvZ1VuaXQuaGFzV29yZCgpID8gIjogJyIgKyBtQ3VycmVudExvZ1VuaXQuZ2V0V29yZCgpICsgIiciIDogIiIpKTsKKyAgICAgICAgICAgICAgICAgICAgKyAobUN1cnJlbnRMb2dVbml0Lmhhc09uZU9yTW9yZVdvcmRzKCkgPyAiOiAnIgorICAgICAgICAgICAgICAgICAgICAgICAgKyBtQ3VycmVudExvZ1VuaXQuZ2V0V29yZHNBc1N0cmluZygpICsgIiciIDogIiIpKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtOTUwLDggKzk1Miw5IEBACiAgICAgICAgIH0KICAgICAgICAgZm9yIChMb2dVbml0IGxvZ1VuaXQgOiBsb2dVbml0cykgewogICAgICAgICAgICAgaWYgKERFQlVHKSB7Ci0gICAgICAgICAgICAgICAgTG9nLmQoVEFHLCAicHVibGlzaExvZ0J1ZmZlcjogIiArIChsb2dVbml0Lmhhc1dvcmQoKSA/IGxvZ1VuaXQuZ2V0V29yZCgpCi0gICAgICAgICAgICAgICAgICAgICAgICA6ICI8d29yZGxlc3M+IikgKyAiLCBjb3JyZWN0aW9uPzogIiArIGxvZ1VuaXQuY29udGFpbnNDb3JyZWN0aW9uKCkpOworICAgICAgICAgICAgICAgIExvZy5kKFRBRywgInB1Ymxpc2hMb2dCdWZmZXI6ICIgKyAobG9nVW5pdC5oYXNPbmVPck1vcmVXb3JkcygpCisgICAgICAgICAgICAgICAgICAgICAgICA/IGxvZ1VuaXQuZ2V0V29yZHNBc1N0cmluZygpIDogIjx3b3JkbGVzcz4iKQorICAgICAgICAgICAgICAgICAgICAgICAgKyAiLCBjb3JyZWN0aW9uPzogIiArIGxvZ1VuaXQuY29udGFpbnNDb3JyZWN0aW9uKCkpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmVzZWFyY2hMb2cucHVibGlzaChsb2dVbml0LCBjYW5JbmNsdWRlUHJpdmF0ZURhdGEpOwogICAgICAgICB9CkBAIC05ODYsNyArOTg5LDcgQEAKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBpZiAod29yZC5sZW5ndGgoKSA+IDAgJiYgaGFzTGV0dGVycyh3b3JkKSkgewotICAgICAgICAgICAgbUN1cnJlbnRMb2dVbml0LnNldFdvcmQod29yZCk7CisgICAgICAgICAgICBtQ3VycmVudExvZ1VuaXQuc2V0V29yZHMod29yZCk7CiAgICAgICAgIH0KICAgICAgICAgZmluYWwgTG9nVW5pdCBuZXdMb2dVbml0ID0gbUN1cnJlbnRMb2dVbml0LnNwbGl0QnlUaW1lKG1heFRpbWUpOwogICAgICAgICBlbnF1ZXVlQ29tbWl0VGV4dCh3b3JkLCBpc0JhdGNoTW9kZSk7CkBAIC0xMTA3LDcgKzExMTAsNyBAQAogICAgICAgICAgICAgcGFja2FnZUluZm8gPSBtTGF0aW5JTUUuZ2V0UGFja2FnZU1hbmFnZXIoKS5nZXRQYWNrYWdlSW5mbyhtTGF0aW5JTUUuZ2V0UGFja2FnZU5hbWUoKSwKICAgICAgICAgICAgICAgICAgICAgMCk7CiAgICAgICAgICAgICBmaW5hbCBTdHJpbmcgdmVyc2lvbk5hbWUgPSBwYWNrYWdlSW5mby52ZXJzaW9uTmFtZTsKLSAgICAgICAgICAgIHJldHVybiAhKGRldmVsb3BlckJ1aWxkUmVnZXgubWF0Y2hlcih2ZXJzaW9uTmFtZSkuZmluZCgpKTsKKyAgICAgICAgICAgIHJldHVybiBkZXZlbG9wZXJCdWlsZFJlZ2V4Lm1hdGNoZXIodmVyc2lvbk5hbWUpLmZpbmQoKTsKICAgICAgICAgfSBjYXRjaCAoZmluYWwgTmFtZU5vdEZvdW5kRXhjZXB0aW9uIGUpIHsKICAgICAgICAgICAgIExvZy5lKFRBRywgIkNvdWxkIG5vdCBkZXRlcm1pbmUgcGFja2FnZSBuYW1lIiwgZSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xNDc4LDcgKzE0ODEsNyBAQAogICAgICAgICB9CiAgICAgICAgIGlmIChvcmlnaW5hbGx5VHlwZWRXb3JkLmxlbmd0aCgpID4gMCAmJiBoYXNMZXR0ZXJzKG9yaWdpbmFsbHlUeXBlZFdvcmQpKSB7CiAgICAgICAgICAgICBpZiAobG9nVW5pdCAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgbG9nVW5pdC5zZXRXb3JkKG9yaWdpbmFsbHlUeXBlZFdvcmQpOworICAgICAgICAgICAgICAgIGxvZ1VuaXQuc2V0V29yZHMob3JpZ2luYWxseVR5cGVkV29yZCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgcmVzZWFyY2hMb2dnZXIuZW5xdWV1ZUV2ZW50KGxvZ1VuaXQgIT0gbnVsbCA/IGxvZ1VuaXQgOiByZXNlYXJjaExvZ2dlci5tQ3VycmVudExvZ1VuaXQsCkBAIC0xNjE2LDcgKzE2MTksNyBAQAogICAgICAqIExvZyBhIGNhbGwgdG8gTGF0aW5JTUUuY29tbWl0Q3VycmVudEF1dG9Db3JyZWN0aW9uKCkuCiAgICAgICoKICAgICAgKiBTeXN0ZW1SZXNwb25zZTogVGhlIElNRSBoYXMgY29tbWl0dGVkIGFuIGF1dG8tY29ycmVjdGlvbi4gIEFuIGF1dG8tY29ycmVjdGlvbiBjaGFuZ2VzIHRoZSByYXcKLSAgICAgKiB0ZXh0IGlucHV0IHRvIGFub3RoZXIgd29yZCB0aGF0IHRoZSB1c2VyIG1vcmUgbGlrZWx5IGRlc2lyZWQgdG8gdHlwZS4KKyAgICAgKiB0ZXh0IGlucHV0IHRvIGFub3RoZXIgd29yZCAob3Igd29yZHMpIHRoYXQgdGhlIHVzZXIgbW9yZSBsaWtlbHkgZGVzaXJlZCB0byB0eXBlLgogICAgICAqLwogICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIExvZ1N0YXRlbWVudCBMT0dTVEFURU1FTlRfTEFUSU5JTUVfQ09NTUlUQ1VSUkVOVEFVVE9DT1JSRUNUSU9OID0KICAgICAgICAgICAgIG5ldyBMb2dTdGF0ZW1lbnQoIkxhdGluSU1FQ29tbWl0Q3VycmVudEF1dG9Db3JyZWN0aW9uIiwgdHJ1ZSwgdHJ1ZSwgInR5cGVkV29yZCIsCkBAIC0xODI2LDYgKzE4MjksOSBAQAogICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBsYXRpbklNRV9vbkVuZEJhdGNoSW5wdXQoZmluYWwgQ2hhclNlcXVlbmNlIGVudGVyZWRUZXh0LAogICAgICAgICAgICAgZmluYWwgaW50IGVudGVyZWRXb3JkUG9zLCBmaW5hbCBTdWdnZXN0ZWRXb3JkcyBzdWdnZXN0ZWRXb3JkcykgewogICAgICAgICBmaW5hbCBSZXNlYXJjaExvZ2dlciByZXNlYXJjaExvZ2dlciA9IGdldEluc3RhbmNlKCk7CisgICAgICAgIGlmICghVGV4dFV0aWxzLmlzRW1wdHkoZW50ZXJlZFRleHQpICYmIGhhc0xldHRlcnMoZW50ZXJlZFRleHQudG9TdHJpbmcoKSkpIHsKKyAgICAgICAgICAgIHJlc2VhcmNoTG9nZ2VyLm1DdXJyZW50TG9nVW5pdC5zZXRXb3JkcyhlbnRlcmVkVGV4dC50b1N0cmluZygpKTsKKyAgICAgICAgfQogICAgICAgICByZXNlYXJjaExvZ2dlci5lbnF1ZXVlRXZlbnQoTE9HU1RBVEVNRU5UX0xBVElOSU1FX09ORU5EQkFUQ0hJTlBVVCwgZW50ZXJlZFRleHQsCiAgICAgICAgICAgICAgICAgZW50ZXJlZFdvcmRQb3MpOwogICAgICAgICByZXNlYXJjaExvZ2dlci5tQ3VycmVudExvZ1VuaXQuaW5pdGlhbGl6ZVN1Z2dlc3Rpb25zKHN1Z2dlc3RlZFdvcmRzKTsKZGlmZiAtLWdpdCBhL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL3Jlc2VhcmNoL1VwbG9hZGVyU2VydmljZS5qYXZhIGIvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvcmVzZWFyY2gvVXBsb2FkZXJTZXJ2aWNlLmphdmEKaW5kZXggNmE5NzE3Yi4uZDJkYjM0OSAxMDA2NDQKLS0tIGEvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvcmVzZWFyY2gvVXBsb2FkZXJTZXJ2aWNlLmphdmEKKysrIGIvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvcmVzZWFyY2gvVXBsb2FkZXJTZXJ2aWNlLmphdmEKQEAgLTIyLDYgKzIyLDcgQEAKIGltcG9ydCBhbmRyb2lkLmNvbnRlbnQuQ29udGV4dDsKIGltcG9ydCBhbmRyb2lkLmNvbnRlbnQuSW50ZW50OwogaW1wb3J0IGFuZHJvaWQub3MuQnVuZGxlOworaW1wb3J0IGFuZHJvaWQub3MuU3lzdGVtQ2xvY2s7CiAKIGltcG9ydCBjb20uYW5kcm9pZC5pbnB1dG1ldGhvZC5sYXRpbi5kZWZpbmUuUHJvZHVjdGlvbkZsYWc7CiAKQEAgLTc5LDI4ICs4MCwxNCBAQAogICAgICAqLwogICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBjYW5jZWxBbmRSZXNjaGVkdWxlVXBsb2FkaW5nU2VydmljZShmaW5hbCBDb250ZXh0IGNvbnRleHQsCiAgICAgICAgICAgICBmaW5hbCBib29sZWFuIG5lZWRzUmVzY2hlZHVsaW5nKSB7Ci0gICAgICAgIGZpbmFsIFBlbmRpbmdJbnRlbnQgcGVuZGluZ0ludGVudCA9IGdldFBlbmRpbmdJbnRlbnRGb3JTZXJ2aWNlKGNvbnRleHQpOworICAgICAgICBmaW5hbCBJbnRlbnQgaW50ZW50ID0gbmV3IEludGVudChjb250ZXh0LCBVcGxvYWRlclNlcnZpY2UuY2xhc3MpOworICAgICAgICBmaW5hbCBQZW5kaW5nSW50ZW50IHBlbmRpbmdJbnRlbnQgPSBQZW5kaW5nSW50ZW50LmdldFNlcnZpY2UoY29udGV4dCwgMCwgaW50ZW50LCAwKTsKICAgICAgICAgZmluYWwgQWxhcm1NYW5hZ2VyIGFsYXJtTWFuYWdlciA9IChBbGFybU1hbmFnZXIpIGNvbnRleHQuZ2V0U3lzdGVtU2VydmljZSgKICAgICAgICAgICAgICAgICBDb250ZXh0LkFMQVJNX1NFUlZJQ0UpOwotICAgICAgICBjYW5jZWxBbnlTY2hlZHVsZWRTZXJ2aWNlQWxhcm0oYWxhcm1NYW5hZ2VyLCBwZW5kaW5nSW50ZW50KTsKLSAgICAgICAgaWYgKG5lZWRzUmVzY2hlZHVsaW5nKSB7Ci0gICAgICAgICAgICBzY2hlZHVsZVNlcnZpY2VBbGFybShhbGFybU1hbmFnZXIsIHBlbmRpbmdJbnRlbnQpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcHJpdmF0ZSBzdGF0aWMgUGVuZGluZ0ludGVudCBnZXRQZW5kaW5nSW50ZW50Rm9yU2VydmljZShmaW5hbCBDb250ZXh0IGNvbnRleHQpIHsKLSAgICAgICAgZmluYWwgSW50ZW50IGludGVudCA9IG5ldyBJbnRlbnQoY29udGV4dCwgVXBsb2FkZXJTZXJ2aWNlLmNsYXNzKTsKLSAgICAgICAgcmV0dXJuIFBlbmRpbmdJbnRlbnQuZ2V0U2VydmljZShjb250ZXh0LCAwLCBpbnRlbnQsIDApOwotICAgIH0KLQotICAgIHByaXZhdGUgc3RhdGljIHZvaWQgY2FuY2VsQW55U2NoZWR1bGVkU2VydmljZUFsYXJtKGZpbmFsIEFsYXJtTWFuYWdlciBhbGFybU1hbmFnZXIsCi0gICAgICAgICAgICBmaW5hbCBQZW5kaW5nSW50ZW50IHBlbmRpbmdJbnRlbnQpIHsKICAgICAgICAgYWxhcm1NYW5hZ2VyLmNhbmNlbChwZW5kaW5nSW50ZW50KTsKLSAgICB9Ci0KLSAgICBwcml2YXRlIHN0YXRpYyB2b2lkIHNjaGVkdWxlU2VydmljZUFsYXJtKGZpbmFsIEFsYXJtTWFuYWdlciBhbGFybU1hbmFnZXIsCi0gICAgICAgICAgICBmaW5hbCBQZW5kaW5nSW50ZW50IHBlbmRpbmdJbnRlbnQpIHsKLSAgICAgICAgYWxhcm1NYW5hZ2VyLnNldChBbGFybU1hbmFnZXIuRUxBUFNFRF9SRUFMVElNRV9XQUtFVVAsIFVwbG9hZGVyU2VydmljZS5SVU5fSU5URVJWQUwsCi0gICAgICAgICAgICAgICAgcGVuZGluZ0ludGVudCk7CisgICAgICAgIGlmIChuZWVkc1Jlc2NoZWR1bGluZykgeworICAgICAgICAgICAgYWxhcm1NYW5hZ2VyLnNldChBbGFybU1hbmFnZXIuRUxBUFNFRF9SRUFMVElNRV9XQUtFVVAsIFN5c3RlbUNsb2NrLmVsYXBzZWRSZWFsdGltZSgpCisgICAgICAgICAgICAgICAgICAgICsgVXBsb2FkZXJTZXJ2aWNlLlJVTl9JTlRFUlZBTCwgcGVuZGluZ0ludGVudCk7CisgICAgICAgIH0KICAgICB9CiB9CmRpZmYgLS1naXQgYS9uYXRpdmUvam5pL3NyYy9iaWdyYW1fZGljdGlvbmFyeS5jcHAgYi9uYXRpdmUvam5pL3NyYy9iaWdyYW1fZGljdGlvbmFyeS5jcHAKaW5kZXggOTI4OTAzOC4uOTA1M2U3MiAxMDA2NDQKLS0tIGEvbmF0aXZlL2puaS9zcmMvYmlncmFtX2RpY3Rpb25hcnkuY3BwCisrKyBiL25hdGl2ZS9qbmkvc3JjL2JpZ3JhbV9kaWN0aW9uYXJ5LmNwcApAQCAtMTg3LDcgKzE4Nyw3IEBACiAgICAgICAgICAgICAgICAgJnBvcyk7CiAgICAgICAgICgqbWFwKVtiaWdyYW1Qb3NdID0gcHJvYmFiaWxpdHk7CiAgICAgICAgIHNldEluRmlsdGVyKGZpbHRlciwgYmlncmFtUG9zKTsKLSAgICB9IHdoaWxlICgwICE9IChCaW5hcnlGb3JtYXQ6OkZMQUdfQVRUUklCVVRFX0hBU19ORVhUICYgYmlncmFtRmxhZ3MpKTsKKyAgICB9IHdoaWxlIChCaW5hcnlGb3JtYXQ6OkZMQUdfQVRUUklCVVRFX0hBU19ORVhUICYgYmlncmFtRmxhZ3MpOwogfQogCiBib29sIEJpZ3JhbURpY3Rpb25hcnk6OmNoZWNrRmlyc3RDaGFyYWN0ZXIoaW50ICp3b3JkLCBpbnQgKmlucHV0Q29kZVBvaW50cykgY29uc3QgewpkaWZmIC0tZ2l0IGEvbmF0aXZlL2puaS9zcmMvYmluYXJ5X2Zvcm1hdC5oIGIvbmF0aXZlL2puaS9zcmMvYmluYXJ5X2Zvcm1hdC5oCmluZGV4IDJkMmUxOTUuLjA2ZjUwZGMgMTAwNjQ0Ci0tLSBhL25hdGl2ZS9qbmkvc3JjL2JpbmFyeV9mb3JtYXQuaAorKysgYi9uYXRpdmUvam5pL3NyYy9iaW5hcnlfZm9ybWF0LmgKQEAgLTIzLDYgKzIzLDcgQEAKIAogI2luY2x1ZGUgImJsb29tX2ZpbHRlci5oIgogI2luY2x1ZGUgImNoYXJfdXRpbHMuaCIKKyNpbmNsdWRlICJoYXNoX21hcF9jb21wYXQuaCIKIAogbmFtZXNwYWNlIGxhdGluaW1lIHsKIApAQCAtNjYsNiArNjcsNyBAQAogICAgIHN0YXRpYyBpbnQgZGV0ZWN0Rm9ybWF0KGNvbnN0IHVpbnQ4X3QgKmNvbnN0IGRpY3QpOwogICAgIHN0YXRpYyBpbnQgZ2V0SGVhZGVyU2l6ZShjb25zdCB1aW50OF90ICpjb25zdCBkaWN0KTsKICAgICBzdGF0aWMgaW50IGdldEZsYWdzKGNvbnN0IHVpbnQ4X3QgKmNvbnN0IGRpY3QpOworICAgIHN0YXRpYyBib29sIGhhc0JsYWNrbGlzdGVkT3JOb3RBV29yZEZsYWcoY29uc3QgaW50IGZsYWdzKTsKICAgICBzdGF0aWMgdm9pZCByZWFkSGVhZGVyVmFsdWUoY29uc3QgdWludDhfdCAqY29uc3QgZGljdCwgY29uc3QgY2hhciAqY29uc3Qga2V5LCBpbnQgKm91dFZhbHVlLAogICAgICAgICAgICAgY29uc3QgaW50IG91dFZhbHVlU2l6ZSk7CiAgICAgc3RhdGljIGludCByZWFkSGVhZGVyVmFsdWVJbnQoY29uc3QgdWludDhfdCAqY29uc3QgZGljdCwgY29uc3QgY2hhciAqY29uc3Qga2V5KTsKQEAgLTkyLDcgKzk0LDEzIEBACiAgICAgICAgICAgICBjb25zdCBpbnQgdW5pZ3JhbVByb2JhYmlsaXR5LCBjb25zdCBpbnQgYmlncmFtUHJvYmFiaWxpdHkpOwogICAgIHN0YXRpYyBpbnQgZ2V0UHJvYmFiaWxpdHkoY29uc3QgaW50IHBvc2l0aW9uLCBjb25zdCBzdGQ6Om1hcDxpbnQsIGludD4gKmJpZ3JhbU1hcCwKICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmJpZ3JhbUZpbHRlciwgY29uc3QgaW50IHVuaWdyYW1Qcm9iYWJpbGl0eSk7CisgICAgc3RhdGljIGludCBnZXRCaWdyYW1Qcm9iYWJpbGl0eUZyb21IYXNoTWFwKGNvbnN0IGludCBwb3NpdGlvbiwKKyAgICAgICAgICAgIGNvbnN0IGhhc2hfbWFwX2NvbXBhdDxpbnQsIGludD4gKmJpZ3JhbU1hcCwgY29uc3QgaW50IHVuaWdyYW1Qcm9iYWJpbGl0eSk7CiAgICAgc3RhdGljIGZsb2F0IGdldE11bHRpV29yZENvc3RNdWx0aXBsaWVyKGNvbnN0IHVpbnQ4X3QgKmNvbnN0IGRpY3QpOworICAgIHN0YXRpYyB2b2lkIGZpbGxCaWdyYW1Qcm9iYWJpbGl0eVRvSGFzaE1hcChjb25zdCB1aW50OF90ICpjb25zdCByb290LCBpbnQgcG9zaXRpb24sCisgICAgICAgICAgICBoYXNoX21hcF9jb21wYXQ8aW50LCBpbnQ+ICpiaWdyYW1NYXApOworICAgIHN0YXRpYyBpbnQgZ2V0QmlncmFtUHJvYmFiaWxpdHkoY29uc3QgdWludDhfdCAqY29uc3Qgcm9vdCwgaW50IHBvc2l0aW9uLAorICAgICAgICAgICAgY29uc3QgaW50IG5leHRQb3NpdGlvbiwgY29uc3QgaW50IHVuaWdyYW1Qcm9iYWJpbGl0eSk7CiAKICAgICAvLyBGbGFncyBmb3Igc3BlY2lhbCBwcm9jZXNzaW5nCiAgICAgLy8gVGhvc2UgKm11c3QqIG1hdGNoIHRoZSBmbGFncyBpbiBtYWtlZGljdCAoQmluYXJ5RGljdElucHV0T3V0cHV0IypfUFJPQ0VTU0lOR19GTEFHKSBvcgpAQCAtMTA0LDYgKzExMiw4IEBACiAKICBwcml2YXRlOgogICAgIERJU0FMTE9XX0lNUExJQ0lUX0NPTlNUUlVDVE9SUyhCaW5hcnlGb3JtYXQpOworICAgIHN0YXRpYyBpbnQgZ2V0QmlncmFtTGlzdFBvc2l0aW9uRm9yV29yZFBvc2l0aW9uKGNvbnN0IHVpbnQ4X3QgKmNvbnN0IHJvb3QsIGludCBwb3NpdGlvbik7CisKICAgICBzdGF0aWMgY29uc3QgaW50IEZMQUdfR1JPVVBfQUREUkVTU19UWVBFX05PQUREUkVTUyA9IDB4MDA7CiAgICAgc3RhdGljIGNvbnN0IGludCBGTEFHX0dST1VQX0FERFJFU1NfVFlQRV9PTkVCWVRFID0gMHg0MDsKICAgICBzdGF0aWMgY29uc3QgaW50IEZMQUdfR1JPVVBfQUREUkVTU19UWVBFX1RXT0JZVEVTID0gMHg4MDsKQEAgLTE2Miw2ICsxNzIsMTAgQEAKICAgICB9CiB9CiAKK2lubGluZSBib29sIEJpbmFyeUZvcm1hdDo6aGFzQmxhY2tsaXN0ZWRPck5vdEFXb3JkRmxhZyhjb25zdCBpbnQgZmxhZ3MpIHsKKyAgICByZXR1cm4gKGZsYWdzICYgKEZMQUdfSVNfQkxBQ0tMSVNURUQgfCBGTEFHX0lTX05PVF9BX1dPUkQpKSAhPSAwOworfQorCiBpbmxpbmUgaW50IEJpbmFyeUZvcm1hdDo6Z2V0SGVhZGVyU2l6ZShjb25zdCB1aW50OF90ICpjb25zdCBkaWN0KSB7CiAgICAgc3dpdGNoIChkZXRlY3RGb3JtYXQoZGljdCkpIHsKICAgICBjYXNlIDE6CkBAIC02ODIsNSArNjk2LDY4IEBACiAgICAgfQogICAgIHJldHVybiBiYWNrb2ZmKHVuaWdyYW1Qcm9iYWJpbGl0eSk7CiB9CisKKy8vIFRoaXMgcmV0dXJucyBhIHByb2JhYmlsaXR5IGluIGxvZyBzcGFjZS4KK2lubGluZSBpbnQgQmluYXJ5Rm9ybWF0OjpnZXRCaWdyYW1Qcm9iYWJpbGl0eUZyb21IYXNoTWFwKGNvbnN0IGludCBwb3NpdGlvbiwKKyAgICAgICAgY29uc3QgaGFzaF9tYXBfY29tcGF0PGludCwgaW50PiAqYmlncmFtTWFwLCBjb25zdCBpbnQgdW5pZ3JhbVByb2JhYmlsaXR5KSB7CisgICAgaWYgKCFiaWdyYW1NYXApIHJldHVybiBiYWNrb2ZmKHVuaWdyYW1Qcm9iYWJpbGl0eSk7CisgICAgY29uc3QgaGFzaF9tYXBfY29tcGF0PGludCwgaW50Pjo6Y29uc3RfaXRlcmF0b3IgYmlncmFtUHJvYmFiaWxpdHlJdCA9IGJpZ3JhbU1hcC0+ZmluZChwb3NpdGlvbik7CisgICAgaWYgKGJpZ3JhbVByb2JhYmlsaXR5SXQgIT0gYmlncmFtTWFwLT5lbmQoKSkgeworICAgICAgICBjb25zdCBpbnQgYmlncmFtUHJvYmFiaWxpdHkgPSBiaWdyYW1Qcm9iYWJpbGl0eUl0LT5zZWNvbmQ7CisgICAgICAgIHJldHVybiBjb21wdXRlUHJvYmFiaWxpdHlGb3JCaWdyYW0odW5pZ3JhbVByb2JhYmlsaXR5LCBiaWdyYW1Qcm9iYWJpbGl0eSk7CisgICAgfQorICAgIHJldHVybiBiYWNrb2ZmKHVuaWdyYW1Qcm9iYWJpbGl0eSk7Cit9CisKK0FLX0ZPUkNFX0lOTElORSB2b2lkIEJpbmFyeUZvcm1hdDo6ZmlsbEJpZ3JhbVByb2JhYmlsaXR5VG9IYXNoTWFwKAorICAgICAgICBjb25zdCB1aW50OF90ICpjb25zdCByb290LCBpbnQgcG9zaXRpb24sIGhhc2hfbWFwX2NvbXBhdDxpbnQsIGludD4gKmJpZ3JhbU1hcCkgeworICAgIHBvc2l0aW9uID0gZ2V0QmlncmFtTGlzdFBvc2l0aW9uRm9yV29yZFBvc2l0aW9uKHJvb3QsIHBvc2l0aW9uKTsKKyAgICBpZiAoMCA9PSBwb3NpdGlvbikgcmV0dXJuOworCisgICAgdWludDhfdCBiaWdyYW1GbGFnczsKKyAgICBkbyB7CisgICAgICAgIGJpZ3JhbUZsYWdzID0gZ2V0RmxhZ3NBbmRGb3J3YXJkUG9pbnRlcihyb290LCAmcG9zaXRpb24pOworICAgICAgICBjb25zdCBpbnQgcHJvYmFiaWxpdHkgPSBNQVNLX0FUVFJJQlVURV9QUk9CQUJJTElUWSAmIGJpZ3JhbUZsYWdzOworICAgICAgICBjb25zdCBpbnQgYmlncmFtUG9zID0gZ2V0QXR0cmlidXRlQWRkcmVzc0FuZEZvcndhcmRQb2ludGVyKHJvb3QsIGJpZ3JhbUZsYWdzLAorICAgICAgICAgICAgICAgICZwb3NpdGlvbik7CisgICAgICAgICgqYmlncmFtTWFwKVtiaWdyYW1Qb3NdID0gcHJvYmFiaWxpdHk7CisgICAgfSB3aGlsZSAoRkxBR19BVFRSSUJVVEVfSEFTX05FWFQgJiBiaWdyYW1GbGFncyk7Cit9CisKK0FLX0ZPUkNFX0lOTElORSBpbnQgQmluYXJ5Rm9ybWF0OjpnZXRCaWdyYW1Qcm9iYWJpbGl0eShjb25zdCB1aW50OF90ICpjb25zdCByb290LCBpbnQgcG9zaXRpb24sCisgICAgICAgIGNvbnN0IGludCBuZXh0UG9zaXRpb24sIGNvbnN0IGludCB1bmlncmFtUHJvYmFiaWxpdHkpIHsKKyAgICBwb3NpdGlvbiA9IGdldEJpZ3JhbUxpc3RQb3NpdGlvbkZvcldvcmRQb3NpdGlvbihyb290LCBwb3NpdGlvbik7CisgICAgaWYgKDAgPT0gcG9zaXRpb24pIHJldHVybiBiYWNrb2ZmKHVuaWdyYW1Qcm9iYWJpbGl0eSk7CisKKyAgICB1aW50OF90IGJpZ3JhbUZsYWdzOworICAgIGRvIHsKKyAgICAgICAgYmlncmFtRmxhZ3MgPSBnZXRGbGFnc0FuZEZvcndhcmRQb2ludGVyKHJvb3QsICZwb3NpdGlvbik7CisgICAgICAgIGNvbnN0IGludCBiaWdyYW1Qb3MgPSBnZXRBdHRyaWJ1dGVBZGRyZXNzQW5kRm9yd2FyZFBvaW50ZXIoCisgICAgICAgICAgICAgICAgcm9vdCwgYmlncmFtRmxhZ3MsICZwb3NpdGlvbik7CisgICAgICAgIGlmIChiaWdyYW1Qb3MgPT0gbmV4dFBvc2l0aW9uKSB7CisgICAgICAgICAgICBjb25zdCBpbnQgYmlncmFtUHJvYmFiaWxpdHkgPSBNQVNLX0FUVFJJQlVURV9QUk9CQUJJTElUWSAmIGJpZ3JhbUZsYWdzOworICAgICAgICAgICAgcmV0dXJuIGNvbXB1dGVQcm9iYWJpbGl0eUZvckJpZ3JhbSh1bmlncmFtUHJvYmFiaWxpdHksIGJpZ3JhbVByb2JhYmlsaXR5KTsKKyAgICAgICAgfQorICAgIH0gd2hpbGUgKEZMQUdfQVRUUklCVVRFX0hBU19ORVhUICYgYmlncmFtRmxhZ3MpOworICAgIHJldHVybiBiYWNrb2ZmKHVuaWdyYW1Qcm9iYWJpbGl0eSk7Cit9CisKKy8vIFJldHVybnMgYSBwb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYmlncmFtIGxpc3QuCitBS19GT1JDRV9JTkxJTkUgaW50IEJpbmFyeUZvcm1hdDo6Z2V0QmlncmFtTGlzdFBvc2l0aW9uRm9yV29yZFBvc2l0aW9uKAorICAgICAgICBjb25zdCB1aW50OF90ICpjb25zdCByb290LCBpbnQgcG9zaXRpb24pIHsKKyAgICBpZiAoTk9UX1ZBTElEX1dPUkQgPT0gcG9zaXRpb24pIHJldHVybiAwOworICAgIGNvbnN0IHVpbnQ4X3QgZmxhZ3MgPSBnZXRGbGFnc0FuZEZvcndhcmRQb2ludGVyKHJvb3QsICZwb3NpdGlvbik7CisgICAgaWYgKCEoZmxhZ3MgJiBGTEFHX0hBU19CSUdSQU1TKSkgcmV0dXJuIDA7CisgICAgaWYgKGZsYWdzICYgRkxBR19IQVNfTVVMVElQTEVfQ0hBUlMpIHsKKyAgICAgICAgcG9zaXRpb24gPSBza2lwT3RoZXJDaGFyYWN0ZXJzKHJvb3QsIHBvc2l0aW9uKTsKKyAgICB9IGVsc2UgeworICAgICAgICBnZXRDb2RlUG9pbnRBbmRGb3J3YXJkUG9pbnRlcihyb290LCAmcG9zaXRpb24pOworICAgIH0KKyAgICBwb3NpdGlvbiA9IHNraXBQcm9iYWJpbGl0eShmbGFncywgcG9zaXRpb24pOworICAgIHBvc2l0aW9uID0gc2tpcENoaWxkcmVuUG9zaXRpb24oZmxhZ3MsIHBvc2l0aW9uKTsKKyAgICBwb3NpdGlvbiA9IHNraXBTaG9ydGN1dHMocm9vdCwgZmxhZ3MsIHBvc2l0aW9uKTsKKyAgICByZXR1cm4gcG9zaXRpb247Cit9CisKIH0gLy8gbmFtZXNwYWNlIGxhdGluaW1lCiAjZW5kaWYgLy8gTEFUSU5JTUVfQklOQVJZX0ZPUk1BVF9ICmRpZmYgLS1naXQgYS9uYXRpdmUvam5pL3NyYy9kZWZpbmVzLmggYi9uYXRpdmUvam5pL3NyYy9kZWZpbmVzLmgKaW5kZXggNmVmOWY0MS4uZWI1OTc0NCAxMDA2NDQKLS0tIGEvbmF0aXZlL2puaS9zcmMvZGVmaW5lcy5oCisrKyBiL25hdGl2ZS9qbmkvc3JjL2RlZmluZXMuaApAQCAtMzc5LDYgKzM3OSwxNSBAQAogI2Vycm9yICJCSUdSQU1fRklMVEVSX01PRFVMTyBpcyBsYXJnZXIgdGhhbiBCSUdSQU1fRklMVEVSX0JZVEVfU0laRSIKICNlbmRpZgogCisvLyBNYXggbnVtYmVyIG9mIGJpZ3JhbSBtYXBzIChwcmV2aW91cyB3b3JkIGNvbnRleHRzKSB0byBiZSBjYWNoZWQuIEluY3JlYXNpbmcgdGhpcyBudW1iZXIgY291bGQKKy8vIGltcHJvdmUgYmlncmFtIGxvb2t1cCBzcGVlZCBmb3IgbXVsdGktd29yZCBzdWdnZXN0aW9ucywgYnV0IGF0IHRoZSBjb3N0IG9mIG1vcmUgbWVtb3J5IHVzYWdlLgorLy8gQWxzbywgdGhlcmUgYXJlIGRpbWluaXNoaW5nIHJldHVybnMgc2luY2UgdGhlIG1vc3QgZnJlcXVlbnRseSB1c2VkIGJpZ3JhbXMgYXJlIHR5cGljYWxseSBuZWFyCisvLyB0aGUgYmVnaW5uaW5nIG9mIHRoZSBpbnB1dCBhbmQgYXJlIHRodXMgdGhlIGZpcnN0IG9uZXMgdG8gYmUgY2FjaGVkLiBOb3RlIHRoYXQgdGhlc2UgYmlncmFtcworLy8gYXJlIHJlc2V0IGZvciBlYWNoIG5ldyBjb21wb3Npbmcgd29yZC4KKyNkZWZpbmUgTUFYX0NBQ0hFRF9QUkVWX1dPUkRTX0lOX0JJR1JBTV9NQVAgMjUKKy8vIE1vc3QgY29tbW9uIHByZXZpb3VzIHdvcmQgY29udGV4dHMgY3VycmVudGx5IGhhdmUgMTAwIGJpZ3JhbXMKKyNkZWZpbmUgREVGQVVMVF9IQVNIX01BUF9TSVpFX0ZPUl9FQUNIX0JJR1JBTV9NQVAgMTAwCisKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IEFLX0ZPUkNFX0lOTElORSBjb25zdCBUICZtaW4oY29uc3QgVCAmYSwgY29uc3QgVCAmYikgeyByZXR1cm4gYSA8IGIgPyBhIDogYjsgfQogdGVtcGxhdGU8dHlwZW5hbWUgVD4gQUtfRk9SQ0VfSU5MSU5FIGNvbnN0IFQgJm1heChjb25zdCBUICZhLCBjb25zdCBUICZiKSB7IHJldHVybiBhID4gYiA/IGEgOiBiOyB9CiAKQEAgLTQxNywxNiArNDI2LDQ1IEBACiB9IERvdWJsZUxldHRlckxldmVsOwogCiB0eXBlZGVmIGVudW0geworICAgIC8vIENvcnJlY3Rpb24gZm9yIE1BVENIX0NIQVIKICAgICBDVF9NQVRDSCwKKyAgICAvLyBDb3JyZWN0aW9uIGZvciBQUk9YSU1JVFlfQ0hBUgogICAgIENUX1BST1hJTUlUWSwKKyAgICAvLyBDb3JyZWN0aW9uIGZvciBBRERJVElPTkFMX1BST1hJTUlUWV9DSEFSCiAgICAgQ1RfQURESVRJT05BTF9QUk9YSU1JVFksCisgICAgLy8gQ29ycmVjdGlvbiBmb3IgU1VCU1RJVFVUSU9OX0NIQVIKICAgICBDVF9TVUJTVElUVVRJT04sCisgICAgLy8gU2tpcCBvbmUgb21pdHRlZCBsZXR0ZXIKICAgICBDVF9PTUlTU0lPTiwKKyAgICAvLyBEZWxldGUgYW4gdW5uZWNlc3NhcmlseSBpbnNlcnRlZCBsZXR0ZXIKICAgICBDVF9JTlNFUlRJT04sCisgICAgLy8gU3dhcCB0aGUgb3JkZXIgb2YgbmV4dCB0d28gdG91Y2ggcG9pbnRzCiAgICAgQ1RfVFJBTlNQT1NJVElPTiwKICAgICBDVF9DT01QTEVUSU9OLAogICAgIENUX1RFUk1JTkFMLAorICAgIC8vIENyZWF0ZSBuZXcgd29yZCB3aXRoIHNwYWNlIG9taXNzaW9uCiAgICAgQ1RfTkVXX1dPUkRfU1BBQ0VfT01JVFRJT04sCisgICAgLy8gQ3JlYXRlIG5ldyB3b3JkIHdpdGggc3BhY2Ugc3Vic3RpdHV0aW9uCiAgICAgQ1RfTkVXX1dPUkRfU1BBQ0VfU1VCU1RJVFVUSU9OLAogfSBDb3JyZWN0aW9uVHlwZTsKKworLy8gRXJyb3JUeXBlIGlzIG1haW5seSBkZWNpZGVkIGJ5IENvcnJlY3Rpb25UeXBlIGJ1dCBpdCBpcyBhbHNvIGRlcGVuZGluZyBvbiBpZgorLy8gdGhlIGNvcnJlY3Rpb24gaGFzIHJlYWxseSBiZWVuIHBlcmZvcm1lZCBvciBub3QuCit0eXBlZGVmIGVudW0geworICAgIC8vIFN1YnN0aXR1dGlvbiwgb21pc3Npb24gYW5kIHRyYW5zcG9zaXRpb24KKyAgICBFVF9FRElUX0NPUlJFQ1RJT04sCisgICAgLy8gUHJveGltaXR5IGVycm9yCisgICAgRVRfUFJPWElNSVRZX0NPUlJFQ1RJT04sCisgICAgLy8gQ29tcGxldGlvbgorICAgIEVUX0NPTVBMRVRJT04sCisgICAgLy8gTmV3IHdvcmQKKyAgICAvLyBUT0RPOiBSZW1vdmUuCisgICAgLy8gQSBuZXcgd29yZCBlcnJvciBzaG91bGQgYmUgYW4gZWRpdCBjb3JyZWN0aW9uIGVycm9yIG9yIGEgcHJveGltaXR5IGNvcnJlY3Rpb24gZXJyb3IuCisgICAgRVRfTkVXX1dPUkQsCisgICAgLy8gVHJlYXQgZXJyb3IgYXMgYW4gaW50ZW50aW9uYWwgb21pc3Npb24gd2hlbiB0aGUgQ29ycmVjdGlvblR5cGUgaXMgb21pc3Npb24gYW5kIHRoZSBub2RlIGNhbgorICAgIC8vIGJlIGludGVudGlvbmFsIG9taXNzaW9uLgorICAgIEVUX0lOVEVOVElPTkFMX09NSVNTSU9OLAorICAgIC8vIE5vdCB0cmVhdGVkIGFzIGFuIGVycm9yLiBUcmFja2VkIGZvciBjaGVja2luZyBleGFjdCBtYXRjaAorICAgIEVUX05PVF9BTl9FUlJPUgorfSBFcnJvclR5cGU7CiAjZW5kaWYgLy8gTEFUSU5JTUVfREVGSU5FU19ICmRpZmYgLS1naXQgYS9uYXRpdmUvam5pL3NyYy9kaWN0aW9uYXJ5LmggYi9uYXRpdmUvam5pL3NyYy9kaWN0aW9uYXJ5LmgKaW5kZXggMDY1M2QzYy4uMmFkNWI2YyAxMDA2NDQKLS0tIGEvbmF0aXZlL2puaS9zcmMvZGljdGlvbmFyeS5oCisrKyBiL25hdGl2ZS9qbmkvc3JjL2RpY3Rpb25hcnkuaApAQCAtMzEsNiArMzEsNyBAQAogY2xhc3MgRGljdGlvbmFyeSB7CiAgcHVibGljOgogICAgIC8vIFRha2VuIGZyb20gU3VnZ2VzdGVkV29yZHMuamF2YQorICAgIHN0YXRpYyBjb25zdCBpbnQgS0lORF9NQVNLX0tJTkQgPSAweEZGOyAvLyBNYXNrIHRvIGdldCBvbmx5IHRoZSBraW5kCiAgICAgc3RhdGljIGNvbnN0IGludCBLSU5EX1RZUEVEID0gMDsgLy8gV2hhdCB1c2VyIHR5cGVkCiAgICAgc3RhdGljIGNvbnN0IGludCBLSU5EX0NPUlJFQ1RJT04gPSAxOyAvLyBTaW1wbGUgY29ycmVjdGlvbi9zdWdnZXN0aW9uCiAgICAgc3RhdGljIGNvbnN0IGludCBLSU5EX0NPTVBMRVRJT04gPSAyOyAvLyBDb21wbGV0aW9uIChzdWdnZXN0aW9uIHdpdGggYXBwZW5kZWQgY2hhcnMpCkBAIC00MSw2ICs0MiwxMCBAQAogICAgIHN0YXRpYyBjb25zdCBpbnQgS0lORF9TSE9SVENVVCA9IDc7IC8vIEEgc2hvcnRjdXQKICAgICBzdGF0aWMgY29uc3QgaW50IEtJTkRfUFJFRElDVElPTiA9IDg7IC8vIEEgcHJlZGljdGlvbiAoPT0gYSBzdWdnZXN0aW9uIHdpdGggbm8gaW5wdXQpCiAKKyAgICBzdGF0aWMgY29uc3QgaW50IEtJTkRfTUFTS19GTEFHUyA9IDB4RkZGRkZGMDA7IC8vIE1hc2sgdG8gZ2V0IHRoZSBmbGFncworICAgIHN0YXRpYyBjb25zdCBpbnQgS0lORF9GTEFHX1BPU1NJQkxZX09GRkVOU0lWRSA9IDB4ODAwMDAwMDA7CisgICAgc3RhdGljIGNvbnN0IGludCBLSU5EX0ZMQUdfRVhBQ1RfTUFUQ0ggPSAweDQwMDAwMDAwOworCiAgICAgRGljdGlvbmFyeSh2b2lkICpkaWN0LCBpbnQgZGljdFNpemUsIGludCBtbWFwRmQsIGludCBkaWN0QnVmQWRqdXN0KTsKIAogICAgIGludCBnZXRTdWdnZXN0aW9ucyhQcm94aW1pdHlJbmZvICpwcm94aW1pdHlJbmZvLCB2b2lkICp0cmF2ZXJzZVNlc3Npb24sIGludCAqeGNvb3JkaW5hdGVzLApkaWZmIC0tZ2l0IGEvbmF0aXZlL2puaS9zcmMvbXVsdGlfYmlncmFtX21hcC5oIGIvbmF0aXZlL2puaS9zcmMvbXVsdGlfYmlncmFtX21hcC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdlMWI2MzAKLS0tIC9kZXYvbnVsbAorKysgYi9uYXRpdmUvam5pL3NyYy9tdWx0aV9iaWdyYW1fbWFwLmgKQEAgLTAsMCArMSw4OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKyNpZm5kZWYgTEFUSU5JTUVfTVVMVElfQklHUkFNX01BUF9ICisjZGVmaW5lIExBVElOSU1FX01VTFRJX0JJR1JBTV9NQVBfSAorCisjaW5jbHVkZSA8Y3N0cmluZz4KKyNpbmNsdWRlIDxzdGRpbnQuaD4KKworI2luY2x1ZGUgImRlZmluZXMuaCIKKyNpbmNsdWRlICJiaW5hcnlfZm9ybWF0LmgiCisjaW5jbHVkZSAiaGFzaF9tYXBfY29tcGF0LmgiCisKK25hbWVzcGFjZSBsYXRpbmltZSB7CisKKy8vIENsYXNzIGZvciBjYWNoaW5nIGJpZ3JhbSBtYXBzIGZvciBtdWx0aXBsZSBwcmV2aW91cyB3b3JkIGNvbnRleHRzLiBUaGlzIGlzIHVzZWZ1bCBzaW5jZSB0aGUKKy8vIGFsZ29yaXRobSBuZWVkcyB0byBsb29rIHVwIHRoZSBzZXQgb2YgYmlncmFtcyBmb3IgZXZlcnkgd29yZCBwYWlyIHRoYXQgb2NjdXJzIGluIGV2ZXJ5CisvLyBtdWx0aS13b3JkIHN1Z2dlc3Rpb24uCitjbGFzcyBNdWx0aUJpZ3JhbU1hcCB7CisgcHVibGljOgorICAgIE11bHRpQmlncmFtTWFwKCkgOiBtQmlncmFtTWFwcygpIHt9CisgICAgfk11bHRpQmlncmFtTWFwKCkge30KKworICAgIC8vIExvb2sgdXAgdGhlIGJpZ3JhbSBwcm9iYWJpbGl0eSBmb3IgdGhlIGdpdmVuIHdvcmQgcGFpciBmcm9tIHRoZSBjYWNoZWQgYmlncmFtIG1hcHMuCisgICAgLy8gQWxzbyBjYWNoZXMgdGhlIGJpZ3JhbXMgaWYgdGhlcmUgaXMgc3BhY2UgcmVtYWluaW5nIGFuZCB0aGV5IGhhdmUgbm90IGJlZW4gY2FjaGVkIGFscmVhZHkuCisgICAgaW50IGdldEJpZ3JhbVByb2JhYmlsaXR5KGNvbnN0IHVpbnQ4X3QgKmNvbnN0IGRpY1Jvb3QsIGNvbnN0IGludCB3b3JkUG9zaXRpb24sCisgICAgICAgICAgICBjb25zdCBpbnQgbmV4dFdvcmRQb3NpdGlvbiwgY29uc3QgaW50IHVuaWdyYW1Qcm9iYWJpbGl0eSkgeworICAgICAgICBoYXNoX21hcF9jb21wYXQ8aW50LCBCaWdyYW1NYXA+Ojpjb25zdF9pdGVyYXRvciBtYXBQb3NpdGlvbiA9CisgICAgICAgICAgICAgICAgbUJpZ3JhbU1hcHMuZmluZCh3b3JkUG9zaXRpb24pOworICAgICAgICBpZiAobWFwUG9zaXRpb24gIT0gbUJpZ3JhbU1hcHMuZW5kKCkpIHsKKyAgICAgICAgICAgIHJldHVybiBtYXBQb3NpdGlvbi0+c2Vjb25kLmdldEJpZ3JhbVByb2JhYmlsaXR5KG5leHRXb3JkUG9zaXRpb24sIHVuaWdyYW1Qcm9iYWJpbGl0eSk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKG1CaWdyYW1NYXBzLnNpemUoKSA8IE1BWF9DQUNIRURfUFJFVl9XT1JEU19JTl9CSUdSQU1fTUFQKSB7CisgICAgICAgICAgICBhZGRCaWdyYW1zRm9yV29yZFBvc2l0aW9uKGRpY1Jvb3QsIHdvcmRQb3NpdGlvbik7CisgICAgICAgICAgICByZXR1cm4gbUJpZ3JhbU1hcHNbd29yZFBvc2l0aW9uXS5nZXRCaWdyYW1Qcm9iYWJpbGl0eSgKKyAgICAgICAgICAgICAgICAgICAgbmV4dFdvcmRQb3NpdGlvbiwgdW5pZ3JhbVByb2JhYmlsaXR5KTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gQmluYXJ5Rm9ybWF0OjpnZXRCaWdyYW1Qcm9iYWJpbGl0eSgKKyAgICAgICAgICAgICAgICBkaWNSb290LCB3b3JkUG9zaXRpb24sIG5leHRXb3JkUG9zaXRpb24sIHVuaWdyYW1Qcm9iYWJpbGl0eSk7CisgICAgfQorCisgICAgdm9pZCBjbGVhcigpIHsKKyAgICAgICAgbUJpZ3JhbU1hcHMuY2xlYXIoKTsKKyAgICB9CisKKyBwcml2YXRlOgorICAgIERJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihNdWx0aUJpZ3JhbU1hcCk7CisKKyAgICBjbGFzcyBCaWdyYW1NYXAgeworICAgICBwdWJsaWM6CisgICAgICAgIEJpZ3JhbU1hcCgpIDogbUJpZ3JhbU1hcChERUZBVUxUX0hBU0hfTUFQX1NJWkVfRk9SX0VBQ0hfQklHUkFNX01BUCkge30KKyAgICAgICAgfkJpZ3JhbU1hcCgpIHt9CisKKyAgICAgICAgdm9pZCBpbml0KGNvbnN0IHVpbnQ4X3QgKmNvbnN0IGRpY1Jvb3QsIGludCBwb3NpdGlvbikgeworICAgICAgICAgICAgQmluYXJ5Rm9ybWF0OjpmaWxsQmlncmFtUHJvYmFiaWxpdHlUb0hhc2hNYXAoZGljUm9vdCwgcG9zaXRpb24sICZtQmlncmFtTWFwKTsKKyAgICAgICAgfQorCisgICAgICAgIGlubGluZSBpbnQgZ2V0QmlncmFtUHJvYmFiaWxpdHkoY29uc3QgaW50IG5leHRXb3JkUG9zaXRpb24sIGNvbnN0IGludCB1bmlncmFtUHJvYmFiaWxpdHkpCisgICAgICAgICAgICAgICAgY29uc3QgeworICAgICAgICAgICByZXR1cm4gQmluYXJ5Rm9ybWF0OjpnZXRCaWdyYW1Qcm9iYWJpbGl0eUZyb21IYXNoTWFwKAorICAgICAgICAgICAgICAgICAgIG5leHRXb3JkUG9zaXRpb24sICZtQmlncmFtTWFwLCB1bmlncmFtUHJvYmFiaWxpdHkpOworICAgICAgICB9CisKKyAgICAgcHJpdmF0ZToKKyAgICAgICAgLy8gTm90ZTogRGVmYXVsdCBjb3B5IGNvbnN0cnVjdG9yIG5lZWRlZCBmb3IgdXNlIGluIGhhc2hfbWFwLgorICAgICAgICBoYXNoX21hcF9jb21wYXQ8aW50LCBpbnQ+IG1CaWdyYW1NYXA7CisgICAgfTsKKworICAgIHZvaWQgYWRkQmlncmFtc0ZvcldvcmRQb3NpdGlvbihjb25zdCB1aW50OF90ICpjb25zdCBkaWNSb290LCBjb25zdCBpbnQgcG9zaXRpb24pIHsKKyAgICAgICAgbUJpZ3JhbU1hcHNbcG9zaXRpb25dLmluaXQoZGljUm9vdCwgcG9zaXRpb24pOworICAgIH0KKworICAgIGhhc2hfbWFwX2NvbXBhdDxpbnQsIEJpZ3JhbU1hcD4gbUJpZ3JhbU1hcHM7Cit9OworfSAvLyBuYW1lc3BhY2UgbGF0aW5pbWUKKyNlbmRpZiAvLyBMQVRJTklNRV9NVUxUSV9CSUdSQU1fTUFQX0gKZGlmZiAtLWdpdCBhL25hdGl2ZS9qbmkvc3JjL3N1Z2dlc3QvY29yZS9kaWNub2RlL2RpY19ub2RlLmggYi9uYXRpdmUvam5pL3NyYy9zdWdnZXN0L2NvcmUvZGljbm9kZS9kaWNfbm9kZS5oCmluZGV4IDMyZmFhZTUuLjQyMjViYjMgMTAwNjQ0Ci0tLSBhL25hdGl2ZS9qbmkvc3JjL3N1Z2dlc3QvY29yZS9kaWNub2RlL2RpY19ub2RlLmgKKysrIGIvbmF0aXZlL2puaS9zcmMvc3VnZ2VzdC9jb3JlL2RpY25vZGUvZGljX25vZGUuaApAQCAtMjEwLDggKzIxMCw3IEBACiAgICAgfQogCiAgICAgYm9vbCBpc0ltcG9zc2libGVCaWdyYW1Xb3JkKCkgY29uc3QgewotICAgICAgICBjb25zdCBpbnQgcHJvYmFiaWxpdHkgPSBtRGljTm9kZVByb3BlcnRpZXMuZ2V0UHJvYmFiaWxpdHkoKTsKLSAgICAgICAgaWYgKHByb2JhYmlsaXR5ID09IDApIHsKKyAgICAgICAgaWYgKG1EaWNOb2RlUHJvcGVydGllcy5oYXNCbGFja2xpc3RlZE9yTm90QVdvcmRGbGFnKCkpIHsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAgICAgICAgIGNvbnN0IGludCBwcmV2V29yZExlbiA9IG1EaWNOb2RlU3RhdGUubURpY05vZGVTdGF0ZVByZXZXb3JkLmdldFByZXZXb3JkTGVuZ3RoKCkKQEAgLTIyMCw3ICsyMTksNyBAQAogICAgICAgICByZXR1cm4gKHByZXZXb3JkTGVuID09IDEgJiYgY3VycmVudFdvcmRMZW4gPT0gMSk7CiAgICAgfQogCi0gICAgYm9vbCBpc0NhcGl0YWxpemVkKCkgY29uc3QgeworICAgIGJvb2wgaXNGaXJzdENoYXJVcHBlcmNhc2UoKSBjb25zdCB7CiAgICAgICAgIGNvbnN0IGludCBjID0gZ2V0T3V0cHV0V29yZEJ1ZigpWzBdOwogICAgICAgICByZXR1cm4gaXNBc2NpaVVwcGVyKGMpOwogICAgIH0KQEAgLTM2MCwxMSArMzU5LDYgQEAKICAgICAgICAgcmV0dXJuIG1EaWNOb2RlU3RhdGUubURpY05vZGVTdGF0ZVNjb3JpbmcuZ2V0Q29tcG91bmREaXN0YW5jZShsYW5ndWFnZVdlaWdodCk7CiAgICAgfQogCi0gICAgLy8gTm90ZSB0aGF0ICJjb3N0IiBtZWFucyBkZWx0YSBmb3IgImRpc3RhbmNlIiB0aGF0IGlzIHdlaWdodGVkLgotICAgIGZsb2F0IGdldFRvdGFsUHJldldvcmRzTGFuZ3VhZ2VDb3N0KCkgY29uc3QgewotICAgICAgICByZXR1cm4gbURpY05vZGVTdGF0ZS5tRGljTm9kZVN0YXRlU2NvcmluZy5nZXRUb3RhbFByZXZXb3Jkc0xhbmd1YWdlQ29zdCgpOwotICAgIH0KLQogICAgIC8vIFVzZWQgdG8gY29tbWl0IGlucHV0IHBhcnRpYWxseQogICAgIGludCBnZXRQcmV2V29yZE5vZGVQb3MoKSBjb25zdCB7CiAgICAgICAgIHJldHVybiBtRGljTm9kZVN0YXRlLm1EaWNOb2RlU3RhdGVQcmV2V29yZC5nZXRQcmV2V29yZE5vZGVQb3MoKTsKQEAgLTQ2OSw2ICs0NjMsMTAgQEAKICAgICAgICAgbURpY05vZGVTdGF0ZS5tRGljTm9kZVN0YXRlU2NvcmluZy5hZHZhbmNlRGlncmFwaEluZGV4KCk7CiAgICAgfQogCisgICAgYm9vbCBpc0V4YWN0TWF0Y2goKSBjb25zdCB7CisgICAgICAgIHJldHVybiBtRGljTm9kZVN0YXRlLm1EaWNOb2RlU3RhdGVTY29yaW5nLmlzRXhhY3RNYXRjaCgpOworICAgIH0KKwogICAgIHVpbnQ4X3QgZ2V0RmxhZ3MoKSBjb25zdCB7CiAgICAgICAgIHJldHVybiBtRGljTm9kZVByb3BlcnRpZXMuZ2V0RmxhZ3MoKTsKICAgICB9CkBAIC01NDgsMTMgKzU0NiwxMiBAQAogICAgIC8vIENhdmVhdDogTXVzdCBub3QgYmUgY2FsbGVkIG91dHNpZGUgV2VpZ2h0aW5nCiAgICAgLy8gVGhpcyByZXN0cmljdGlvbiBpcyBndWFyYW50ZWVkIGJ5ICJmcmllbmQiCiAgICAgQUtfRk9SQ0VfSU5MSU5FIHZvaWQgYWRkQ29zdChjb25zdCBmbG9hdCBzcGF0aWFsQ29zdCwgY29uc3QgZmxvYXQgbGFuZ3VhZ2VDb3N0LAotICAgICAgICAgICAgY29uc3QgYm9vbCBkb05vcm1hbGl6YXRpb24sIGNvbnN0IGludCBpbnB1dFNpemUsIGNvbnN0IGJvb2wgaXNFZGl0Q29ycmVjdGlvbiwKLSAgICAgICAgICAgIGNvbnN0IGJvb2wgaXNQcm94aW1pdHlDb3JyZWN0aW9uKSB7CisgICAgICAgICAgICBjb25zdCBib29sIGRvTm9ybWFsaXphdGlvbiwgY29uc3QgaW50IGlucHV0U2l6ZSwgY29uc3QgRXJyb3JUeXBlIGVycm9yVHlwZSkgewogICAgICAgICBpZiAoREVCVUdfR0VPX0ZVTEwpIHsKICAgICAgICAgICAgIExPR0lfU0hPV19BRERfQ09TVF9QUk9QOwogICAgICAgICB9CiAgICAgICAgIG1EaWNOb2RlU3RhdGUubURpY05vZGVTdGF0ZVNjb3JpbmcuYWRkQ29zdChzcGF0aWFsQ29zdCwgbGFuZ3VhZ2VDb3N0LCBkb05vcm1hbGl6YXRpb24sCi0gICAgICAgICAgICAgICAgaW5wdXRTaXplLCBnZXRUb3RhbElucHV0SW5kZXgoKSwgaXNFZGl0Q29ycmVjdGlvbiwgaXNQcm94aW1pdHlDb3JyZWN0aW9uKTsKKyAgICAgICAgICAgICAgICBpbnB1dFNpemUsIGdldFRvdGFsSW5wdXRJbmRleCgpLCBlcnJvclR5cGUpOwogICAgIH0KIAogICAgIC8vIENhdmVhdDogTXVzdCBub3QgYmUgY2FsbGVkIG91dHNpZGUgV2VpZ2h0aW5nCmRpZmYgLS1naXQgYS9uYXRpdmUvam5pL3NyYy9zdWdnZXN0L2NvcmUvZGljbm9kZS9kaWNfbm9kZV9wcm9wZXJ0aWVzLmggYi9uYXRpdmUvam5pL3NyYy9zdWdnZXN0L2NvcmUvZGljbm9kZS9kaWNfbm9kZV9wcm9wZXJ0aWVzLmgKaW5kZXggMTczZWYzNS4uNjNhNmIxMyAxMDA2NDQKLS0tIGEvbmF0aXZlL2puaS9zcmMvc3VnZ2VzdC9jb3JlL2RpY25vZGUvZGljX25vZGVfcHJvcGVydGllcy5oCisrKyBiL25hdGl2ZS9qbmkvc3JjL3N1Z2dlc3QvY29yZS9kaWNub2RlL2RpY19ub2RlX3Byb3BlcnRpZXMuaApAQCAtMTksNiArMTksNyBAQAogCiAjaW5jbHVkZSA8c3RkaW50Lmg+CiAKKyNpbmNsdWRlICJiaW5hcnlfZm9ybWF0LmgiCiAjaW5jbHVkZSAiZGVmaW5lcy5oIgogCiBuYW1lc3BhY2UgbGF0aW5pbWUgewpAQCAtMTQ0LDYgKzE0NSwxMCBAQAogICAgICAgICByZXR1cm4gbUNoaWxkcmVuQ291bnQgPiAwIHx8IG1EZXB0aCAhPSBtTGVhdmluZ0RlcHRoOwogICAgIH0KIAorICAgIGJvb2wgaGFzQmxhY2tsaXN0ZWRPck5vdEFXb3JkRmxhZygpIGNvbnN0IHsKKyAgICAgICAgcmV0dXJuIEJpbmFyeUZvcm1hdDo6aGFzQmxhY2tsaXN0ZWRPck5vdEFXb3JkRmxhZyhtRmxhZ3MpOworICAgIH0KKwogIHByaXZhdGU6CiAgICAgLy8gQ2F1dGlvbiEhIQogICAgIC8vIFVzZSBhIGRlZmF1bHQgY29weSBjb25zdHJ1Y3RvciBhbmQgYW4gYXNzaWduIG9wZXJhdG9yIGJlY2F1c2Ugc2hhbGxvdyBjb3BpZXMgYXJlIG9rCmRpZmYgLS1naXQgYS9uYXRpdmUvam5pL3NyYy9zdWdnZXN0L2NvcmUvZGljbm9kZS9kaWNfbm9kZV9zdGF0ZV9pbnB1dC5oIGIvbmF0aXZlL2puaS9zcmMvc3VnZ2VzdC9jb3JlL2RpY25vZGUvZGljX25vZGVfc3RhdGVfaW5wdXQuaAppbmRleCA3YWQzZTNlLi5iYmQ5NDM1IDEwMDY0NAotLS0gYS9uYXRpdmUvam5pL3NyYy9zdWdnZXN0L2NvcmUvZGljbm9kZS9kaWNfbm9kZV9zdGF0ZV9pbnB1dC5oCisrKyBiL25hdGl2ZS9qbmkvc3JjL3N1Z2dlc3QvY29yZS9kaWNub2RlL2RpY19ub2RlX3N0YXRlX2lucHV0LmgKQEAgLTQ2LDggKzQ2LDggQEAKICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBNQVhfUE9JTlRFUl9DT1VOVF9HOyBpKyspIHsKICAgICAgICAgICAgICBtSW5wdXRJbmRleFtpXSA9IHNyYy0+bUlucHV0SW5kZXhbaV07CiAgICAgICAgICAgICAgbVByZXZDb2RlUG9pbnRbaV0gPSBzcmMtPm1QcmV2Q29kZVBvaW50W2ldOwotICAgICAgICBtVGVybWluYWxEaWZmQ29zdFtpXSA9IHJlc2V0VGVybWluYWxEaWZmQ29zdCA/Ci0gICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8ZmxvYXQ+KE1BWF9WQUxVRV9GT1JfV0VJR0hUSU5HKSA6IHNyYy0+bVRlcm1pbmFsRGlmZkNvc3RbaV07CisgICAgICAgICAgICAgbVRlcm1pbmFsRGlmZkNvc3RbaV0gPSByZXNldFRlcm1pbmFsRGlmZkNvc3QgPworICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8ZmxvYXQ+KE1BWF9WQUxVRV9GT1JfV0VJR0hUSU5HKSA6IHNyYy0+bVRlcm1pbmFsRGlmZkNvc3RbaV07CiAgICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9uYXRpdmUvam5pL3NyYy9zdWdnZXN0L2NvcmUvZGljbm9kZS9kaWNfbm9kZV9zdGF0ZV9zY29yaW5nLmggYi9uYXRpdmUvam5pL3NyYy9zdWdnZXN0L2NvcmUvZGljbm9kZS9kaWNfbm9kZV9zdGF0ZV9zY29yaW5nLmgKaW5kZXggODkwMmQzMS4uZGNhOWQ2MCAxMDA2NDQKLS0tIGEvbmF0aXZlL2puaS9zcmMvc3VnZ2VzdC9jb3JlL2RpY25vZGUvZGljX25vZGVfc3RhdGVfc2NvcmluZy5oCisrKyBiL25hdGl2ZS9qbmkvc3JjL3N1Z2dlc3QvY29yZS9kaWNub2RlL2RpY19ub2RlX3N0YXRlX3Njb3JpbmcuaApAQCAtMzEsNyArMzEsNyBAQAogICAgICAgICAgICAgICBtRGlncmFwaEluZGV4KERpZ3JhcGhVdGlsczo6Tk9UX0FfRElHUkFQSF9JTkRFWCksCiAgICAgICAgICAgICAgIG1FZGl0Q29ycmVjdGlvbkNvdW50KDApLCBtUHJveGltaXR5Q29ycmVjdGlvbkNvdW50KDApLAogICAgICAgICAgICAgICBtTm9ybWFsaXplZENvbXBvdW5kRGlzdGFuY2UoMC4wZiksIG1TcGF0aWFsRGlzdGFuY2UoMC4wZiksIG1MYW5ndWFnZURpc3RhbmNlKDAuMGYpLAotICAgICAgICAgICAgICBtVG90YWxQcmV2V29yZHNMYW5ndWFnZUNvc3QoMC4wZiksIG1SYXdMZW5ndGgoMC4wZikgeworICAgICAgICAgICAgICBtUmF3TGVuZ3RoKDAuMGYpLCBtRXhhY3RNYXRjaCh0cnVlKSB7CiAgICAgfQogCiAgICAgdmlydHVhbCB+RGljTm9kZVN0YXRlU2NvcmluZygpIHt9CkBAIC00MiwxMCArNDIsMTAgQEAKICAgICAgICAgbU5vcm1hbGl6ZWRDb21wb3VuZERpc3RhbmNlID0gMC4wZjsKICAgICAgICAgbVNwYXRpYWxEaXN0YW5jZSA9IDAuMGY7CiAgICAgICAgIG1MYW5ndWFnZURpc3RhbmNlID0gMC4wZjsKLSAgICAgICAgbVRvdGFsUHJldldvcmRzTGFuZ3VhZ2VDb3N0ID0gMC4wZjsKICAgICAgICAgbVJhd0xlbmd0aCA9IDAuMGY7CiAgICAgICAgIG1Eb3VibGVMZXR0ZXJMZXZlbCA9IE5PVF9BX0RPVUJMRV9MRVRURVI7CiAgICAgICAgIG1EaWdyYXBoSW5kZXggPSBEaWdyYXBoVXRpbHM6Ok5PVF9BX0RJR1JBUEhfSU5ERVg7CisgICAgICAgIG1FeGFjdE1hdGNoID0gdHJ1ZTsKICAgICB9CiAKICAgICBBS19GT1JDRV9JTkxJTkUgdm9pZCBpbml0KGNvbnN0IERpY05vZGVTdGF0ZVNjb3JpbmcgKmNvbnN0IHNjb3JpbmcpIHsKQEAgLTU0LDI0ICs1NCwzNSBAQAogICAgICAgICBtTm9ybWFsaXplZENvbXBvdW5kRGlzdGFuY2UgPSBzY29yaW5nLT5tTm9ybWFsaXplZENvbXBvdW5kRGlzdGFuY2U7CiAgICAgICAgIG1TcGF0aWFsRGlzdGFuY2UgPSBzY29yaW5nLT5tU3BhdGlhbERpc3RhbmNlOwogICAgICAgICBtTGFuZ3VhZ2VEaXN0YW5jZSA9IHNjb3JpbmctPm1MYW5ndWFnZURpc3RhbmNlOwotICAgICAgICBtVG90YWxQcmV2V29yZHNMYW5ndWFnZUNvc3QgPSBzY29yaW5nLT5tVG90YWxQcmV2V29yZHNMYW5ndWFnZUNvc3Q7CiAgICAgICAgIG1SYXdMZW5ndGggPSBzY29yaW5nLT5tUmF3TGVuZ3RoOwogICAgICAgICBtRG91YmxlTGV0dGVyTGV2ZWwgPSBzY29yaW5nLT5tRG91YmxlTGV0dGVyTGV2ZWw7CiAgICAgICAgIG1EaWdyYXBoSW5kZXggPSBzY29yaW5nLT5tRGlncmFwaEluZGV4OworICAgICAgICBtRXhhY3RNYXRjaCA9IHNjb3JpbmctPm1FeGFjdE1hdGNoOwogICAgIH0KIAogICAgIHZvaWQgYWRkQ29zdChjb25zdCBmbG9hdCBzcGF0aWFsQ29zdCwgY29uc3QgZmxvYXQgbGFuZ3VhZ2VDb3N0LCBjb25zdCBib29sIGRvTm9ybWFsaXphdGlvbiwKLSAgICAgICAgICAgIGNvbnN0IGludCBpbnB1dFNpemUsIGNvbnN0IGludCB0b3RhbElucHV0SW5kZXgsIGNvbnN0IGJvb2wgaXNFZGl0Q29ycmVjdGlvbiwKLSAgICAgICAgICAgIGNvbnN0IGJvb2wgaXNQcm94aW1pdHlDb3JyZWN0aW9uKSB7CisgICAgICAgICAgICBjb25zdCBpbnQgaW5wdXRTaXplLCBjb25zdCBpbnQgdG90YWxJbnB1dEluZGV4LCBjb25zdCBFcnJvclR5cGUgZXJyb3JUeXBlKSB7CiAgICAgICAgIGFkZERpc3RhbmNlKHNwYXRpYWxDb3N0LCBsYW5ndWFnZUNvc3QsIGRvTm9ybWFsaXphdGlvbiwgaW5wdXRTaXplLCB0b3RhbElucHV0SW5kZXgpOwotICAgICAgICBpZiAoaXNFZGl0Q29ycmVjdGlvbikgewotICAgICAgICAgICAgKyttRWRpdENvcnJlY3Rpb25Db3VudDsKLSAgICAgICAgfQotICAgICAgICBpZiAoaXNQcm94aW1pdHlDb3JyZWN0aW9uKSB7Ci0gICAgICAgICAgICArK21Qcm94aW1pdHlDb3JyZWN0aW9uQ291bnQ7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGxhbmd1YWdlQ29zdCA+IDAuMGYpIHsKLSAgICAgICAgICAgIHNldFRvdGFsUHJldldvcmRzTGFuZ3VhZ2VDb3N0KG1Ub3RhbFByZXZXb3Jkc0xhbmd1YWdlQ29zdCArIGxhbmd1YWdlQ29zdCk7CisgICAgICAgIHN3aXRjaCAoZXJyb3JUeXBlKSB7CisgICAgICAgICAgICBjYXNlIEVUX0VESVRfQ09SUkVDVElPTjoKKyAgICAgICAgICAgICAgICArK21FZGl0Q29ycmVjdGlvbkNvdW50OworICAgICAgICAgICAgICAgIG1FeGFjdE1hdGNoID0gZmFsc2U7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEVUX1BST1hJTUlUWV9DT1JSRUNUSU9OOgorICAgICAgICAgICAgICAgICsrbVByb3hpbWl0eUNvcnJlY3Rpb25Db3VudDsKKyAgICAgICAgICAgICAgICBtRXhhY3RNYXRjaCA9IGZhbHNlOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBFVF9DT01QTEVUSU9OOgorICAgICAgICAgICAgICAgIG1FeGFjdE1hdGNoID0gZmFsc2U7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEVUX05FV19XT1JEOgorICAgICAgICAgICAgICAgIG1FeGFjdE1hdGNoID0gZmFsc2U7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEVUX0lOVEVOVElPTkFMX09NSVNTSU9OOgorICAgICAgICAgICAgICAgIG1FeGFjdE1hdGNoID0gZmFsc2U7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEVUX05PVF9BTl9FUlJPUjoKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KIApAQCAtMTQ4LDggKzE1OSw4IEBACiAgICAgICAgIH0KICAgICB9CiAKLSAgICBmbG9hdCBnZXRUb3RhbFByZXZXb3Jkc0xhbmd1YWdlQ29zdCgpIGNvbnN0IHsKLSAgICAgICAgcmV0dXJuIG1Ub3RhbFByZXZXb3Jkc0xhbmd1YWdlQ29zdDsKKyAgICBib29sIGlzRXhhY3RNYXRjaCgpIGNvbnN0IHsKKyAgICAgICAgcmV0dXJuIG1FeGFjdE1hdGNoOwogICAgIH0KIAogIHByaXZhdGU6CkBAIC0xNjUsOCArMTc2LDggQEAKICAgICBmbG9hdCBtTm9ybWFsaXplZENvbXBvdW5kRGlzdGFuY2U7CiAgICAgZmxvYXQgbVNwYXRpYWxEaXN0YW5jZTsKICAgICBmbG9hdCBtTGFuZ3VhZ2VEaXN0YW5jZTsKLSAgICBmbG9hdCBtVG90YWxQcmV2V29yZHNMYW5ndWFnZUNvc3Q7CiAgICAgZmxvYXQgbVJhd0xlbmd0aDsKKyAgICBib29sIG1FeGFjdE1hdGNoOwogCiAgICAgQUtfRk9SQ0VfSU5MSU5FIHZvaWQgYWRkRGlzdGFuY2UoZmxvYXQgc3BhdGlhbERpc3RhbmNlLCBmbG9hdCBsYW5ndWFnZURpc3RhbmNlLAogICAgICAgICAgICAgYm9vbCBkb05vcm1hbGl6YXRpb24sIGludCBpbnB1dFNpemUsIGludCB0b3RhbElucHV0SW5kZXgpIHsKQEAgLTE3OSwxMSArMTkwLDYgQEAKICAgICAgICAgICAgICAgICAgICAgLyBzdGF0aWNfY2FzdDxmbG9hdD4obWF4KDEsIHRvdGFsSW5wdXRJbmRleCkpOwogICAgICAgICB9CiAgICAgfQotCi0gICAgLy9UT0RPOiByZW1vdmUKLSAgICBBS19GT1JDRV9JTkxJTkUgdm9pZCBzZXRUb3RhbFByZXZXb3Jkc0xhbmd1YWdlQ29zdChmbG9hdCB0b3RhbFByZXZXb3Jkc0xhbmd1YWdlQ29zdCkgewotICAgICAgICBtVG90YWxQcmV2V29yZHNMYW5ndWFnZUNvc3QgPSB0b3RhbFByZXZXb3Jkc0xhbmd1YWdlQ29zdDsKLSAgICB9CiB9OwogfSAvLyBuYW1lc3BhY2UgbGF0aW5pbWUKICNlbmRpZiAvLyBMQVRJTklNRV9ESUNfTk9ERV9TVEFURV9TQ09SSU5HX0gKZGlmZiAtLWdpdCBhL25hdGl2ZS9qbmkvc3JjL3N1Z2dlc3QvY29yZS9kaWNub2RlL2RpY19ub2RlX3V0aWxzLmNwcCBiL25hdGl2ZS9qbmkvc3JjL3N1Z2dlc3QvY29yZS9kaWNub2RlL2RpY19ub2RlX3V0aWxzLmNwcAppbmRleCAwMzFlNzA2Li41MzU3YzM3IDEwMDY0NAotLS0gYS9uYXRpdmUvam5pL3NyYy9zdWdnZXN0L2NvcmUvZGljbm9kZS9kaWNfbm9kZV91dGlscy5jcHAKKysrIGIvbmF0aXZlL2puaS9zcmMvc3VnZ2VzdC9jb3JlL2RpY25vZGUvZGljX25vZGVfdXRpbHMuY3BwCkBAIC0yMSw2ICsyMSw3IEBACiAjaW5jbHVkZSAiZGljX25vZGUuaCIKICNpbmNsdWRlICJkaWNfbm9kZV91dGlscy5oIgogI2luY2x1ZGUgImRpY19ub2RlX3ZlY3Rvci5oIgorI2luY2x1ZGUgIm11bHRpX2JpZ3JhbV9tYXAuaCIKICNpbmNsdWRlICJwcm94aW1pdHlfaW5mby5oIgogI2luY2x1ZGUgInByb3hpbWl0eV9pbmZvX3N0YXRlLmgiCiAKQEAgLTE5MSwxMSArMTkyLDExIEBACiAgKiBDb21wdXRlcyB0aGUgY29tYmluZWQgYmlncmFtIC8gdW5pZ3JhbSBjb3N0IGZvciB0aGUgZ2l2ZW4gZGljTm9kZS4KICAqLwogLyogc3RhdGljICovIGZsb2F0IERpY05vZGVVdGlsczo6Z2V0QmlncmFtTm9kZUltcHJvYmFiaWxpdHkoY29uc3QgdWludDhfdCAqY29uc3QgZGljUm9vdCwKLSAgICAgICAgY29uc3QgRGljTm9kZSAqY29uc3Qgbm9kZSwgaGFzaF9tYXBfY29tcGF0PGludCwgaW50MTZfdD4gKmJpZ3JhbUNhY2hlTWFwKSB7CisgICAgICAgIGNvbnN0IERpY05vZGUgKmNvbnN0IG5vZGUsIE11bHRpQmlncmFtTWFwICptdWx0aUJpZ3JhbU1hcCkgewogICAgIGlmIChub2RlLT5pc0ltcG9zc2libGVCaWdyYW1Xb3JkKCkpIHsKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGZsb2F0PihNQVhfVkFMVUVfRk9SX1dFSUdIVElORyk7CiAgICAgfQotICAgIGNvbnN0IGludCBwcm9iYWJpbGl0eSA9IGdldEJpZ3JhbU5vZGVQcm9iYWJpbGl0eShkaWNSb290LCBub2RlLCBiaWdyYW1DYWNoZU1hcCk7CisgICAgY29uc3QgaW50IHByb2JhYmlsaXR5ID0gZ2V0QmlncmFtTm9kZVByb2JhYmlsaXR5KGRpY1Jvb3QsIG5vZGUsIG11bHRpQmlncmFtTWFwKTsKICAgICAvLyBUT0RPOiBUaGlzIGVxdWF0aW9uIHRvIGNhbGN1bGF0ZSB0aGUgaW1wcm9iYWJpbGl0eSBsb29rcyB1bnJlYXNvbmFibGUuICBJbnZlc3RpZ2F0ZSB0aGlzLgogICAgIGNvbnN0IGZsb2F0IGNvc3QgPSBzdGF0aWNfY2FzdDxmbG9hdD4oTUFYX1BST0JBQklMSVRZIC0gcHJvYmFiaWxpdHkpCiAgICAgICAgICAgICAvIHN0YXRpY19jYXN0PGZsb2F0PihNQVhfUFJPQkFCSUxJVFkpOwpAQCAtMjAzLDkyICsyMDQsMjUgQEAKIH0KIAogLyogc3RhdGljICovIGludCBEaWNOb2RlVXRpbHM6OmdldEJpZ3JhbU5vZGVQcm9iYWJpbGl0eShjb25zdCB1aW50OF90ICpjb25zdCBkaWNSb290LAotICAgICAgICBjb25zdCBEaWNOb2RlICpjb25zdCBub2RlLCBoYXNoX21hcF9jb21wYXQ8aW50LCBpbnQxNl90PiAqYmlncmFtQ2FjaGVNYXApIHsKKyAgICAgICAgY29uc3QgRGljTm9kZSAqY29uc3Qgbm9kZSwgTXVsdGlCaWdyYW1NYXAgKm11bHRpQmlncmFtTWFwKSB7CiAgICAgY29uc3QgaW50IHVuaWdyYW1Qcm9iYWJpbGl0eSA9IG5vZGUtPmdldFByb2JhYmlsaXR5KCk7Ci0gICAgY29uc3QgaW50IGVuY29kZWREaWZmT2ZCaWdyYW1Qcm9iYWJpbGl0eSA9Ci0gICAgICAgICAgICBnZXRCaWdyYW1Ob2RlRW5jb2RlZERpZmZQcm9iYWJpbGl0eShkaWNSb290LCBub2RlLCBiaWdyYW1DYWNoZU1hcCk7Ci0gICAgaWYgKE5PVF9BX1BST0JBQklMSVRZID09IGVuY29kZWREaWZmT2ZCaWdyYW1Qcm9iYWJpbGl0eSkgeworICAgIGNvbnN0IGludCB3b3JkUG9zID0gbm9kZS0+Z2V0UG9zKCk7CisgICAgY29uc3QgaW50IHByZXZXb3JkUG9zID0gbm9kZS0+Z2V0UHJldldvcmRQb3MoKTsKKyAgICBpZiAoTk9UX1ZBTElEX1dPUkQgPT0gd29yZFBvcyB8fCBOT1RfVkFMSURfV09SRCA9PSBwcmV2V29yZFBvcykgeworICAgICAgICAvLyBOb3RlOiBOb3JtYWxseSB3b3JkUG9zIGNvbWVzIGZyb20gdGhlIGRpY3Rpb25hcnkgYW5kIHNob3VsZCBuZXZlciBlcXVhbCBOT1RfVkFMSURfV09SRC4KICAgICAgICAgcmV0dXJuIGJhY2tvZmYodW5pZ3JhbVByb2JhYmlsaXR5KTsKICAgICB9Ci0gICAgcmV0dXJuIEJpbmFyeUZvcm1hdDo6Y29tcHV0ZVByb2JhYmlsaXR5Rm9yQmlncmFtKAotICAgICAgICAgICAgdW5pZ3JhbVByb2JhYmlsaXR5LCBlbmNvZGVkRGlmZk9mQmlncmFtUHJvYmFiaWxpdHkpOworICAgIGlmIChtdWx0aUJpZ3JhbU1hcCkgeworICAgICAgICByZXR1cm4gbXVsdGlCaWdyYW1NYXAtPmdldEJpZ3JhbVByb2JhYmlsaXR5KAorICAgICAgICAgICAgICAgIGRpY1Jvb3QsIHByZXZXb3JkUG9zLCB3b3JkUG9zLCB1bmlncmFtUHJvYmFiaWxpdHkpOworICAgIH0KKyAgICByZXR1cm4gQmluYXJ5Rm9ybWF0OjpnZXRCaWdyYW1Qcm9iYWJpbGl0eShkaWNSb290LCBwcmV2V29yZFBvcywgd29yZFBvcywgdW5pZ3JhbVByb2JhYmlsaXR5KTsKIH0KIAogLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAvLyBCaWdyYW0gLyBVbmlncmFtIGRpY3Rpb25hcnkgdXRpbHMgLy8KIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogCi0vKiBzdGF0aWMgKi8gaW50MTZfdCBEaWNOb2RlVXRpbHM6OmdldEJpZ3JhbU5vZGVFbmNvZGVkRGlmZlByb2JhYmlsaXR5KGNvbnN0IHVpbnQ4X3QgKmNvbnN0IGRpY1Jvb3QsCi0gICAgICAgIGNvbnN0IERpY05vZGUgKmNvbnN0IG5vZGUsIGhhc2hfbWFwX2NvbXBhdDxpbnQsIGludDE2X3Q+ICpiaWdyYW1DYWNoZU1hcCkgewotICAgIGNvbnN0IGludCB3b3JkUG9zID0gbm9kZS0+Z2V0UG9zKCk7Ci0gICAgY29uc3QgaW50IHByZXZXb3JkUG9zID0gbm9kZS0+Z2V0UHJldldvcmRQb3MoKTsKLSAgICByZXR1cm4gZ2V0QmlncmFtUHJvYmFiaWxpdHkoZGljUm9vdCwgcHJldldvcmRQb3MsIHdvcmRQb3MsIGJpZ3JhbUNhY2hlTWFwKTsKLX0KLQotLy8gVE9ETzogTW92ZSB0aGlzIHRvIEJpZ3JhbURpY3Rpb25hcnkKLS8qIHN0YXRpYyAqLyBpbnQxNl90IERpY05vZGVVdGlsczo6Z2V0QmlncmFtUHJvYmFiaWxpdHkoY29uc3QgdWludDhfdCAqY29uc3QgZGljUm9vdCwgaW50IHBvcywKLSAgICAgICAgY29uc3QgaW50IG5leHRQb3MsIGhhc2hfbWFwX2NvbXBhdDxpbnQsIGludDE2X3Q+ICpiaWdyYW1DYWNoZU1hcCkgewotICAgIC8vIFRPRE86IHRoaXMgaXMgcGFpbmZ1bGx5IHNsb3cgY29tcGFyZWQgdG8gdGhlIG1ldGhvZCB1c2VkIGluIHRoZSBwcmV2aW91cyB2ZXJzaW9uIG9mIHRoZQotICAgIC8vIGFsZ29yaXRobS4gU3dpdGNoIHRvIHRoYXQgbWV0aG9kLgotICAgIGlmIChOT1RfVkFMSURfV09SRCA9PSBwb3MpIHJldHVybiBOT1RfQV9QUk9CQUJJTElUWTsKLSAgICBpZiAoTk9UX1ZBTElEX1dPUkQgPT0gbmV4dFBvcykgcmV0dXJuIE5PVF9BX1BST0JBQklMSVRZOwotCi0gICAgLy8gQ3JlYXRlIGEgaGFzaCBjb2RlIGZvciB0aGUgZ2l2ZW4gbm9kZSBwYWlyIChiYXNlZCBvbiBKb3NoIEJsb2NoJ3MgZWZmZWN0aXZlIEphdmEpLgotICAgIC8vIFRPRE86IFVzZSBhIHJlYWwgaGFzaCBtYXAgZGF0YSBzdHJ1Y3R1cmUgdGhhdCBkZWFscyB3aXRoIGNvbGxpc2lvbnMuCi0gICAgaW50IGhhc2ggPSAxNzsKLSAgICBoYXNoID0gaGFzaCAqIDMxICsgcG9zOwotICAgIGhhc2ggPSBoYXNoICogMzEgKyBuZXh0UG9zOwotCi0gICAgaGFzaF9tYXBfY29tcGF0PGludCwgaW50MTZfdD46OmNvbnN0X2l0ZXJhdG9yIG1hcFBvcyA9IGJpZ3JhbUNhY2hlTWFwLT5maW5kKGhhc2gpOwotICAgIGlmIChtYXBQb3MgIT0gYmlncmFtQ2FjaGVNYXAtPmVuZCgpKSB7Ci0gICAgICAgIHJldHVybiBtYXBQb3MtPnNlY29uZDsKLSAgICB9Ci0gICAgaWYgKE5PVF9WQUxJRF9XT1JEID09IHBvcykgewotICAgICAgICByZXR1cm4gTk9UX0FfUFJPQkFCSUxJVFk7Ci0gICAgfQotICAgIGNvbnN0IHVpbnQ4X3QgZmxhZ3MgPSBCaW5hcnlGb3JtYXQ6OmdldEZsYWdzQW5kRm9yd2FyZFBvaW50ZXIoZGljUm9vdCwgJnBvcyk7Ci0gICAgaWYgKDAgPT0gKGZsYWdzICYgQmluYXJ5Rm9ybWF0OjpGTEFHX0hBU19CSUdSQU1TKSkgewotICAgICAgICByZXR1cm4gTk9UX0FfUFJPQkFCSUxJVFk7Ci0gICAgfQotICAgIGlmICgwID09IChmbGFncyAmIEJpbmFyeUZvcm1hdDo6RkxBR19IQVNfTVVMVElQTEVfQ0hBUlMpKSB7Ci0gICAgICAgIEJpbmFyeUZvcm1hdDo6Z2V0Q29kZVBvaW50QW5kRm9yd2FyZFBvaW50ZXIoZGljUm9vdCwgJnBvcyk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgcG9zID0gQmluYXJ5Rm9ybWF0Ojpza2lwT3RoZXJDaGFyYWN0ZXJzKGRpY1Jvb3QsIHBvcyk7Ci0gICAgfQotICAgIHBvcyA9IEJpbmFyeUZvcm1hdDo6c2tpcENoaWxkcmVuUG9zaXRpb24oZmxhZ3MsIHBvcyk7Ci0gICAgcG9zID0gQmluYXJ5Rm9ybWF0Ojpza2lwUHJvYmFiaWxpdHkoZmxhZ3MsIHBvcyk7Ci0gICAgdWludDhfdCBiaWdyYW1GbGFnczsKLSAgICBpbnQgY291bnQgPSAwOwotICAgIGRvIHsKLSAgICAgICAgYmlncmFtRmxhZ3MgPSBCaW5hcnlGb3JtYXQ6OmdldEZsYWdzQW5kRm9yd2FyZFBvaW50ZXIoZGljUm9vdCwgJnBvcyk7Ci0gICAgICAgIGNvbnN0IGludCBiaWdyYW1Qb3MgPSBCaW5hcnlGb3JtYXQ6OmdldEF0dHJpYnV0ZUFkZHJlc3NBbmRGb3J3YXJkUG9pbnRlcihkaWNSb290LAotICAgICAgICAgICAgICAgIGJpZ3JhbUZsYWdzLCAmcG9zKTsKLSAgICAgICAgaWYgKGJpZ3JhbVBvcyA9PSBuZXh0UG9zKSB7Ci0gICAgICAgICAgICBjb25zdCBpbnQxNl90IHByb2JhYmlsaXR5ID0gQmluYXJ5Rm9ybWF0OjpNQVNLX0FUVFJJQlVURV9QUk9CQUJJTElUWSAmIGJpZ3JhbUZsYWdzOwotICAgICAgICAgICAgaWYgKHN0YXRpY19jYXN0PGludD4oYmlncmFtQ2FjaGVNYXAtPnNpemUoKSkgPCBNQVhfQklHUkFNX01BUF9TSVpFKSB7Ci0gICAgICAgICAgICAgICAgKCpiaWdyYW1DYWNoZU1hcClbaGFzaF0gPSBwcm9iYWJpbGl0eTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBwcm9iYWJpbGl0eTsKLSAgICAgICAgfQotICAgICAgICBjb3VudCsrOwotICAgIH0gd2hpbGUgKCgwICE9IChCaW5hcnlGb3JtYXQ6OkZMQUdfQVRUUklCVVRFX0hBU19ORVhUICYgYmlncmFtRmxhZ3MpKQotICAgICAgICAgICAgJiYgY291bnQgPCBNQVhfQklHUkFNU19DT05TSURFUkVEX1BFUl9DT05URVhUKTsKLSAgICBpZiAoc3RhdGljX2Nhc3Q8aW50PihiaWdyYW1DYWNoZU1hcC0+c2l6ZSgpKSA8IE1BWF9CSUdSQU1fTUFQX1NJWkUpIHsKLSAgICAgICAgLy8gVE9ETzogZG9lcyB0aGlzIC0xIG1lYW4gTk9UX1ZBTElEX1dPUkQ/Ci0gICAgICAgICgqYmlncmFtQ2FjaGVNYXApW2hhc2hdID0gLTE7Ci0gICAgfQotICAgIHJldHVybiBOT1RfQV9QUk9CQUJJTElUWTsKLX0KLQotLyogc3RhdGljICovIGludCBEaWNOb2RlVXRpbHM6OmdldFdvcmRQb3MoY29uc3QgdWludDhfdCAqY29uc3QgZGljUm9vdCwgY29uc3QgaW50ICp3b3JkLAotICAgICAgICBjb25zdCBpbnQgd29yZExlbmd0aCkgewotICAgIGlmICghd29yZCkgewotICAgICAgICByZXR1cm4gTk9UX1ZBTElEX1dPUkQ7Ci0gICAgfQotICAgIHJldHVybiBCaW5hcnlGb3JtYXQ6OmdldFRlcm1pbmFsUG9zaXRpb24oCi0gICAgICAgICAgICBkaWNSb290LCB3b3JkLCB3b3JkTGVuZ3RoLCBmYWxzZSAvKiBmb3JjZUxvd2VyQ2FzZVNlYXJjaCAqLyk7Ci19Ci0KIC8qIHN0YXRpYyAqLyBib29sIERpY05vZGVVdGlsczo6aXNNYXRjaGVkTm9kZUNvZGVQb2ludChjb25zdCBQcm94aW1pdHlJbmZvU3RhdGUgKnBJbmZvU3RhdGUsCiAgICAgICAgIGNvbnN0IGludCBwb2ludEluZGV4LCBjb25zdCBib29sIGV4YWN0T25seSwgY29uc3QgaW50IG5vZGVDb2RlUG9pbnQpIHsKICAgICBpZiAoIXBJbmZvU3RhdGUpIHsKZGlmZiAtLWdpdCBhL25hdGl2ZS9qbmkvc3JjL3N1Z2dlc3QvY29yZS9kaWNub2RlL2RpY19ub2RlX3V0aWxzLmggYi9uYXRpdmUvam5pL3NyYy9zdWdnZXN0L2NvcmUvZGljbm9kZS9kaWNfbm9kZV91dGlscy5oCmluZGV4IDE1Zjk3MzAuLjViYzU0MmQgMTAwNjQ0Ci0tLSBhL25hdGl2ZS9qbmkvc3JjL3N1Z2dlc3QvY29yZS9kaWNub2RlL2RpY19ub2RlX3V0aWxzLmgKKysrIGIvbmF0aXZlL2puaS9zcmMvc3VnZ2VzdC9jb3JlL2RpY25vZGUvZGljX25vZGVfdXRpbHMuaApAQCAtMjEsNyArMjEsNiBAQAogI2luY2x1ZGUgPHZlY3Rvcj4KIAogI2luY2x1ZGUgImRlZmluZXMuaCIKLSNpbmNsdWRlICJoYXNoX21hcF9jb21wYXQuaCIKIAogbmFtZXNwYWNlIGxhdGluaW1lIHsKIApAQCAtMjksNiArMjgsNyBAQAogY2xhc3MgRGljTm9kZVZlY3RvcjsKIGNsYXNzIFByb3hpbWl0eUluZm87CiBjbGFzcyBQcm94aW1pdHlJbmZvU3RhdGU7CitjbGFzcyBNdWx0aUJpZ3JhbU1hcDsKIAogY2xhc3MgRGljTm9kZVV0aWxzIHsKICBwdWJsaWM6CkBAIC00MSw5ICs0MSw4IEBACiAgICAgc3RhdGljIHZvaWQgaW5pdEJ5Q29weShEaWNOb2RlICpzcmNOb2RlLCBEaWNOb2RlICpkZXN0Tm9kZSk7CiAgICAgc3RhdGljIHZvaWQgZ2V0QWxsQ2hpbGREaWNOb2RlcyhEaWNOb2RlICpkaWNOb2RlLCBjb25zdCB1aW50OF90ICpjb25zdCBkaWNSb290LAogICAgICAgICAgICAgRGljTm9kZVZlY3RvciAqY2hpbGREaWNOb2Rlcyk7Ci0gICAgc3RhdGljIGludCBnZXRXb3JkUG9zKGNvbnN0IHVpbnQ4X3QgKmNvbnN0IGRpY1Jvb3QsIGNvbnN0IGludCAqd29yZCwgY29uc3QgaW50IHByZXZXb3JkTGVuZ3RoKTsKICAgICBzdGF0aWMgZmxvYXQgZ2V0QmlncmFtTm9kZUltcHJvYmFiaWxpdHkoY29uc3QgdWludDhfdCAqY29uc3QgZGljUm9vdCwKLSAgICAgICAgICAgIGNvbnN0IERpY05vZGUgKmNvbnN0IG5vZGUsIGhhc2hfbWFwX2NvbXBhdDxpbnQsIGludDE2X3Q+ICpjb25zdCBiaWdyYW1DYWNoZU1hcCk7CisgICAgICAgICAgICBjb25zdCBEaWNOb2RlICpjb25zdCBub2RlLCBNdWx0aUJpZ3JhbU1hcCAqY29uc3QgbXVsdGlCaWdyYW1NYXApOwogICAgIHN0YXRpYyBib29sIGlzRGljTm9kZUZpbHRlcmVkT3V0KGNvbnN0IGludCBub2RlQ29kZVBvaW50LCBjb25zdCBQcm94aW1pdHlJbmZvICpjb25zdCBwSW5mbywKICAgICAgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPGludD4gKmNvbnN0IGNvZGVQb2ludHNGaWx0ZXIpOwogICAgIC8vIFRPRE86IE1vdmUgdG8gcHJpdmF0ZQpAQCAtNTgsMTUgKzU3LDExIEBACiAKICBwcml2YXRlOgogICAgIERJU0FMTE9XX0lNUExJQ0lUX0NPTlNUUlVDVE9SUyhEaWNOb2RlVXRpbHMpOwotICAgIC8vIE1heCBjYWNoZSBzaXplIGZvciB0aGUgc3BhY2Ugb21pc3Npb24gZXJyb3IgY29ycmVjdGlvbiBiaWdyYW0gbG9va3VwCi0gICAgc3RhdGljIGNvbnN0IGludCBNQVhfQklHUkFNX01BUF9TSVpFID0gMjAwMDA7CiAgICAgLy8gTWF4IG51bWJlciBvZiBiaWdyYW1zIHRvIGxvb2sgdXAKICAgICBzdGF0aWMgY29uc3QgaW50IE1BWF9CSUdSQU1TX0NPTlNJREVSRURfUEVSX0NPTlRFWFQgPSA1MDA7CiAKICAgICBzdGF0aWMgaW50IGdldEJpZ3JhbU5vZGVQcm9iYWJpbGl0eShjb25zdCB1aW50OF90ICpjb25zdCBkaWNSb290LCBjb25zdCBEaWNOb2RlICpjb25zdCBub2RlLAotICAgICAgICAgICAgaGFzaF9tYXBfY29tcGF0PGludCwgaW50MTZfdD4gKmJpZ3JhbUNhY2hlTWFwKTsKLSAgICBzdGF0aWMgaW50MTZfdCBnZXRCaWdyYW1Ob2RlRW5jb2RlZERpZmZQcm9iYWJpbGl0eShjb25zdCB1aW50OF90ICpjb25zdCBkaWNSb290LAotICAgICAgICAgICAgY29uc3QgRGljTm9kZSAqY29uc3Qgbm9kZSwgaGFzaF9tYXBfY29tcGF0PGludCwgaW50MTZfdD4gKmJpZ3JhbUNhY2hlTWFwKTsKKyAgICAgICAgICAgIE11bHRpQmlncmFtTWFwICptdWx0aUJpZ3JhbU1hcCk7CiAgICAgc3RhdGljIHZvaWQgY3JlYXRlQW5kR2V0UGFzc2luZ0NoaWxkTm9kZShEaWNOb2RlICpkaWNOb2RlLCBjb25zdCBQcm94aW1pdHlJbmZvU3RhdGUgKnBJbmZvU3RhdGUsCiAgICAgICAgICAgICBjb25zdCBpbnQgcG9pbnRJbmRleCwgY29uc3QgYm9vbCBleGFjdE9ubHksIERpY05vZGVWZWN0b3IgKmNoaWxkRGljTm9kZXMpOwogICAgIHN0YXRpYyB2b2lkIGNyZWF0ZUFuZEdldEFsbExlYXZpbmdDaGlsZE5vZGVzKERpY05vZGUgKmRpY05vZGUsIGNvbnN0IHVpbnQ4X3QgKmNvbnN0IGRpY1Jvb3QsCkBAIC03Nyw4ICs3Miw2IEBACiAgICAgICAgICAgICBjb25zdCBpbnQgdGVybWluYWxEZXB0aCwgY29uc3QgUHJveGltaXR5SW5mb1N0YXRlICpwSW5mb1N0YXRlLCBjb25zdCBpbnQgcG9pbnRJbmRleCwKICAgICAgICAgICAgIGNvbnN0IGJvb2wgZXhhY3RPbmx5LCBjb25zdCBzdGQ6OnZlY3RvcjxpbnQ+ICpjb25zdCBjb2RlUG9pbnRzRmlsdGVyLAogICAgICAgICAgICAgY29uc3QgUHJveGltaXR5SW5mbyAqY29uc3QgcEluZm8sIERpY05vZGVWZWN0b3IgKmNoaWxkRGljTm9kZXMpOwotICAgIHN0YXRpYyBpbnQxNl90IGdldEJpZ3JhbVByb2JhYmlsaXR5KGNvbnN0IHVpbnQ4X3QgKmNvbnN0IGRpY1Jvb3QsIGludCBwb3MsIGNvbnN0IGludCBuZXh0UG9zLAotICAgICAgICAgICAgaGFzaF9tYXBfY29tcGF0PGludCwgaW50MTZfdD4gKmJpZ3JhbUNhY2hlTWFwKTsKIAogICAgIC8vIFRPRE86IE1vdmUgdG8gcHJveGltaXR5IGluZm8KICAgICBzdGF0aWMgYm9vbCBpc01hdGNoZWROb2RlQ29kZVBvaW50KGNvbnN0IFByb3hpbWl0eUluZm9TdGF0ZSAqcEluZm9TdGF0ZSwgY29uc3QgaW50IHBvaW50SW5kZXgsCmRpZmYgLS1naXQgYS9uYXRpdmUvam5pL3NyYy9zdWdnZXN0L2NvcmUvcG9saWN5L3Njb3JpbmcuaCBiL25hdGl2ZS9qbmkvc3JjL3N1Z2dlc3QvY29yZS9wb2xpY3kvc2NvcmluZy5oCmluZGV4IGI4YzEwZTIuLjEwMmU4NTYgMTAwNjQ0Ci0tLSBhL25hdGl2ZS9qbmkvc3JjL3N1Z2dlc3QvY29yZS9wb2xpY3kvc2NvcmluZy5oCisrKyBiL25hdGl2ZS9qbmkvc3JjL3N1Z2dlc3QvY29yZS9wb2xpY3kvc2NvcmluZy5oCkBAIC0yOSwxNiArMjksMTQgQEAKICBwdWJsaWM6CiAgICAgdmlydHVhbCBpbnQgY2FsY3VsYXRlRmluYWxTY29yZShjb25zdCBmbG9hdCBjb21wb3VuZERpc3RhbmNlLCBjb25zdCBpbnQgaW5wdXRTaXplLAogICAgICAgICAgICAgY29uc3QgYm9vbCBmb3JjZUNvbW1pdCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBnZXRNb3N0UHJvYmFibGVTdHJpbmcoCi0gICAgICAgICAgICBjb25zdCBEaWNUcmF2ZXJzZVNlc3Npb24gKmNvbnN0IHRyYXZlcnNlU2Vzc2lvbiwgY29uc3QgaW50IHRlcm1pbmFsU2l6ZSwKLSAgICAgICAgICAgIGNvbnN0IGZsb2F0IGxhbmd1YWdlV2VpZ2h0LCBpbnQgKmNvbnN0IG91dHB1dENvZGVQb2ludHMsIGludCAqY29uc3QgdHlwZSwKLSAgICAgICAgICAgIGludCAqY29uc3QgZnJlcSkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBnZXRNb3N0UHJvYmFibGVTdHJpbmcoY29uc3QgRGljVHJhdmVyc2VTZXNzaW9uICpjb25zdCB0cmF2ZXJzZVNlc3Npb24sCisgICAgICAgICAgICBjb25zdCBpbnQgdGVybWluYWxTaXplLCBjb25zdCBmbG9hdCBsYW5ndWFnZVdlaWdodCwgaW50ICpjb25zdCBvdXRwdXRDb2RlUG9pbnRzLAorICAgICAgICAgICAgaW50ICpjb25zdCB0eXBlLCBpbnQgKmNvbnN0IGZyZXEpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2FmZXR5TmV0Rm9yTW9zdFByb2JhYmxlU3RyaW5nKGNvbnN0IGludCB0ZXJtaW5hbFNpemUsCiAgICAgICAgICAgICBjb25zdCBpbnQgbWF4U2NvcmUsIGludCAqY29uc3Qgb3V0cHV0Q29kZVBvaW50cywgaW50ICpjb25zdCBmcmVxdWVuY2llcykgY29uc3QgPSAwOwogICAgIC8vIFRPRE86IE1ha2UgbW9yZSBnZW5lcmljCi0gICAgdmlydHVhbCB2b2lkIHNlYXJjaFdvcmRXaXRoRG91YmxlTGV0dGVyKERpY05vZGUgKnRlcm1pbmFscywKLSAgICAgICAgICAgIGNvbnN0IGludCB0ZXJtaW5hbFNpemUsIGludCAqZG91YmxlTGV0dGVyVGVybWluYWxJbmRleCwKLSAgICAgICAgICAgIERvdWJsZUxldHRlckxldmVsICpkb3VibGVMZXR0ZXJMZXZlbCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZWFyY2hXb3JkV2l0aERvdWJsZUxldHRlcihEaWNOb2RlICp0ZXJtaW5hbHMsIGNvbnN0IGludCB0ZXJtaW5hbFNpemUsCisgICAgICAgICAgICBpbnQgKmRvdWJsZUxldHRlclRlcm1pbmFsSW5kZXgsIERvdWJsZUxldHRlckxldmVsICpkb3VibGVMZXR0ZXJMZXZlbCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgZmxvYXQgZ2V0QWRqdXN0ZWRMYW5ndWFnZVdlaWdodChEaWNUcmF2ZXJzZVNlc3Npb24gKmNvbnN0IHRyYXZlcnNlU2Vzc2lvbiwKICAgICAgICAgICAgIERpY05vZGUgKmNvbnN0IHRlcm1pbmFscywgY29uc3QgaW50IHNpemUpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGZsb2F0IGdldERvdWJsZUxldHRlckRlbW90aW9uRGlzdGFuY2VDb3N0KGNvbnN0IGludCB0ZXJtaW5hbEluZGV4LApkaWZmIC0tZ2l0IGEvbmF0aXZlL2puaS9zcmMvc3VnZ2VzdC9jb3JlL3BvbGljeS9zdWdnZXN0X3BvbGljeS5oIGIvbmF0aXZlL2puaS9zcmMvc3VnZ2VzdC9jb3JlL3BvbGljeS9zdWdnZXN0X3BvbGljeS5oCmluZGV4IDg4NWUyMTQuLjViNjQwMmMgMTAwNjQ0Ci0tLSBhL25hdGl2ZS9qbmkvc3JjL3N1Z2dlc3QvY29yZS9wb2xpY3kvc3VnZ2VzdF9wb2xpY3kuaAorKysgYi9uYXRpdmUvam5pL3NyYy9zdWdnZXN0L2NvcmUvcG9saWN5L3N1Z2dlc3RfcG9saWN5LmgKQEAgLTIwLDYgKzIwLDcgQEAKICNpbmNsdWRlICJkZWZpbmVzLmgiCiAKIG5hbWVzcGFjZSBsYXRpbmltZSB7CisKIGNsYXNzIFRyYXZlcnNhbDsKIGNsYXNzIFNjb3Jpbmc7CiBjbGFzcyBXZWlnaHRpbmc7CmRpZmYgLS1naXQgYS9uYXRpdmUvam5pL3NyYy9zdWdnZXN0L2NvcmUvcG9saWN5L3RyYXZlcnNhbC5oIGIvbmF0aXZlL2puaS9zcmMvc3VnZ2VzdC9jb3JlL3BvbGljeS90cmF2ZXJzYWwuaAppbmRleCAwMmMzNThhLi5jNmY2NmYyIDEwMDY0NAotLS0gYS9uYXRpdmUvam5pL3NyYy9zdWdnZXN0L2NvcmUvcG9saWN5L3RyYXZlcnNhbC5oCisrKyBiL25hdGl2ZS9qbmkvc3JjL3N1Z2dlc3QvY29yZS9wb2xpY3kvdHJhdmVyc2FsLmgKQEAgLTI4LDcgKzI4LDggQEAKICAgICB2aXJ0dWFsIGludCBnZXRNYXhQb2ludGVyQ291bnQoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIGFsbG93c0Vycm9yQ29ycmVjdGlvbnMoY29uc3QgRGljTm9kZSAqY29uc3QgZGljTm9kZSkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBpc09taXNzaW9uKGNvbnN0IERpY1RyYXZlcnNlU2Vzc2lvbiAqY29uc3QgdHJhdmVyc2VTZXNzaW9uLAotICAgICAgICAgICAgY29uc3QgRGljTm9kZSAqY29uc3QgZGljTm9kZSwgY29uc3QgRGljTm9kZSAqY29uc3QgY2hpbGREaWNOb2RlKSBjb25zdCA9IDA7CisgICAgICAgICAgICBjb25zdCBEaWNOb2RlICpjb25zdCBkaWNOb2RlLCBjb25zdCBEaWNOb2RlICpjb25zdCBjaGlsZERpY05vZGUsCisgICAgICAgICAgICBjb25zdCBib29sIGFsbG93c0Vycm9yQ29ycmVjdGlvbnMpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaXNTcGFjZVN1YnN0aXR1dGlvblRlcm1pbmFsKGNvbnN0IERpY1RyYXZlcnNlU2Vzc2lvbiAqY29uc3QgdHJhdmVyc2VTZXNzaW9uLAogICAgICAgICAgICAgY29uc3QgRGljTm9kZSAqY29uc3QgZGljTm9kZSkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBpc1NwYWNlT21pc3Npb25UZXJtaW5hbChjb25zdCBEaWNUcmF2ZXJzZVNlc3Npb24gKmNvbnN0IHRyYXZlcnNlU2Vzc2lvbiwKQEAgLTM4LDkgKzM5LDggQEAKICAgICAgICAgICAgIGNvbnN0IERpY05vZGUgKmNvbnN0IGRpY05vZGUpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgY2FuRG9Mb29rQWhlYWRDb3JyZWN0aW9uKGNvbnN0IERpY1RyYXZlcnNlU2Vzc2lvbiAqY29uc3QgdHJhdmVyc2VTZXNzaW9uLAogICAgICAgICAgICAgY29uc3QgRGljTm9kZSAqY29uc3QgZGljTm9kZSkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgUHJveGltaXR5VHlwZSBnZXRQcm94aW1pdHlUeXBlKAotICAgICAgICAgICAgY29uc3QgRGljVHJhdmVyc2VTZXNzaW9uICpjb25zdCB0cmF2ZXJzZVNlc3Npb24sIGNvbnN0IERpY05vZGUgKmNvbnN0IGRpY05vZGUsCi0gICAgICAgICAgICBjb25zdCBEaWNOb2RlICpjb25zdCBjaGlsZERpY05vZGUpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFByb3hpbWl0eVR5cGUgZ2V0UHJveGltaXR5VHlwZShjb25zdCBEaWNUcmF2ZXJzZVNlc3Npb24gKmNvbnN0IHRyYXZlcnNlU2Vzc2lvbiwKKyAgICAgICAgICAgIGNvbnN0IERpY05vZGUgKmNvbnN0IGRpY05vZGUsIGNvbnN0IERpY05vZGUgKmNvbnN0IGNoaWxkRGljTm9kZSkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBzYW1lQXNUeXBlZChjb25zdCBEaWNUcmF2ZXJzZVNlc3Npb24gKmNvbnN0IHRyYXZlcnNlU2Vzc2lvbiwKICAgICAgICAgICAgIGNvbnN0IERpY05vZGUgKmNvbnN0IGRpY05vZGUpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgbmVlZHNUb1RyYXZlcnNlQWxsVXNlcklucHV0KCkgY29uc3QgPSAwOwpAQCAtNDgsOSArNDgsOCBAQAogICAgIHZpcnR1YWwgYm9vbCBhbGxvd1BhcnRpYWxDb21taXQoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBpbnQgZ2V0RGVmYXVsdEV4cGFuZERpY05vZGVTaXplKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgaW50IGdldE1heENhY2hlU2l6ZSgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNQb3NzaWJsZU9taXNzaW9uQ2hpbGROb2RlKAotICAgICAgICAgICAgY29uc3QgRGljVHJhdmVyc2VTZXNzaW9uICpjb25zdCB0cmF2ZXJzZVNlc3Npb24sIGNvbnN0IERpY05vZGUgKmNvbnN0IHBhcmVudERpY05vZGUsCi0gICAgICAgICAgICBjb25zdCBEaWNOb2RlICpjb25zdCBkaWNOb2RlKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzUG9zc2libGVPbWlzc2lvbkNoaWxkTm9kZShjb25zdCBEaWNUcmF2ZXJzZVNlc3Npb24gKmNvbnN0IHRyYXZlcnNlU2Vzc2lvbiwKKyAgICAgICAgICAgIGNvbnN0IERpY05vZGUgKmNvbnN0IHBhcmVudERpY05vZGUsIGNvbnN0IERpY05vZGUgKmNvbnN0IGRpY05vZGUpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaXNHb29kVG9UcmF2ZXJzZU5leHRXb3JkKGNvbnN0IERpY05vZGUgKmNvbnN0IGRpY05vZGUpIGNvbnN0ID0gMDsKIAogIHByb3RlY3RlZDoKZGlmZiAtLWdpdCBhL25hdGl2ZS9qbmkvc3JjL3N1Z2dlc3QvY29yZS9wb2xpY3kvd2VpZ2h0aW5nLmNwcCBiL25hdGl2ZS9qbmkvc3JjL3N1Z2dlc3QvY29yZS9wb2xpY3kvd2VpZ2h0aW5nLmNwcAppbmRleCBiOWMwYjgxLi5kMDE1MzFmIDEwMDY0NAotLS0gYS9uYXRpdmUvam5pL3NyYy9zdWdnZXN0L2NvcmUvcG9saWN5L3dlaWdodGluZy5jcHAKKysrIGIvbmF0aXZlL2puaS9zcmMvc3VnZ2VzdC9jb3JlL3BvbGljeS93ZWlnaHRpbmcuY3BwCkBAIC0xOCw3ICsxOCw2IEBACiAKICNpbmNsdWRlICJjaGFyX3V0aWxzLmgiCiAjaW5jbHVkZSAiZGVmaW5lcy5oIgotI2luY2x1ZGUgImhhc2hfbWFwX2NvbXBhdC5oIgogI2luY2x1ZGUgInN1Z2dlc3QvY29yZS9kaWNub2RlL2RpY19ub2RlLmgiCiAjaW5jbHVkZSAic3VnZ2VzdC9jb3JlL2RpY25vZGUvZGljX25vZGVfcHJvZmlsZXIuaCIKICNpbmNsdWRlICJzdWdnZXN0L2NvcmUvZGljbm9kZS9kaWNfbm9kZV91dGlscy5oIgpAQCAtMjYsNiArMjUsOCBAQAogCiBuYW1lc3BhY2UgbGF0aW5pbWUgewogCitjbGFzcyBNdWx0aUJpZ3JhbU1hcDsKKwogc3RhdGljIGlubGluZSB2b2lkIHByb2ZpbGUoY29uc3QgQ29ycmVjdGlvblR5cGUgY29ycmVjdGlvblR5cGUsIERpY05vZGUgKmNvbnN0IG5vZGUpIHsKICNpZiBERUJVR19ESUNUCiAgICAgc3dpdGNoIChjb3JyZWN0aW9uVHlwZSkgewpAQCAtNjksMjAgKzcwLDE4IEBACiB9CiAKIC8qIHN0YXRpYyAqLyB2b2lkIFdlaWdodGluZzo6YWRkQ29zdEFuZEZvcndhcmRJbnB1dEluZGV4KGNvbnN0IFdlaWdodGluZyAqY29uc3Qgd2VpZ2h0aW5nLAotICAgICAgICBjb25zdCBDb3JyZWN0aW9uVHlwZSBjb3JyZWN0aW9uVHlwZSwKLSAgICAgICAgY29uc3QgRGljVHJhdmVyc2VTZXNzaW9uICpjb25zdCB0cmF2ZXJzZVNlc3Npb24sCisgICAgICAgIGNvbnN0IENvcnJlY3Rpb25UeXBlIGNvcnJlY3Rpb25UeXBlLCBjb25zdCBEaWNUcmF2ZXJzZVNlc3Npb24gKmNvbnN0IHRyYXZlcnNlU2Vzc2lvbiwKICAgICAgICAgY29uc3QgRGljTm9kZSAqY29uc3QgcGFyZW50RGljTm9kZSwgRGljTm9kZSAqY29uc3QgZGljTm9kZSwKLSAgICAgICAgaGFzaF9tYXBfY29tcGF0PGludCwgaW50MTZfdD4gKmNvbnN0IGJpZ3JhbUNhY2hlTWFwKSB7CisgICAgICAgIE11bHRpQmlncmFtTWFwICpjb25zdCBtdWx0aUJpZ3JhbU1hcCkgewogICAgIGNvbnN0IGludCBpbnB1dFNpemUgPSB0cmF2ZXJzZVNlc3Npb24tPmdldElucHV0U2l6ZSgpOwogICAgIERpY05vZGVfSW5wdXRTdGF0ZUcgaW5wdXRTdGF0ZUc7CiAgICAgaW5wdXRTdGF0ZUcubU5lZWRzVG9VcGRhdGVJbnB1dFN0YXRlRyA9IGZhbHNlOyAvLyBEb24ndCB1c2UgaW5wdXQgaW5mbyBieSBkZWZhdWx0CiAgICAgY29uc3QgZmxvYXQgc3BhdGlhbENvc3QgPSBXZWlnaHRpbmc6OmdldFNwYXRpYWxDb3N0KHdlaWdodGluZywgY29ycmVjdGlvblR5cGUsCiAgICAgICAgICAgICB0cmF2ZXJzZVNlc3Npb24sIHBhcmVudERpY05vZGUsIGRpY05vZGUsICZpbnB1dFN0YXRlRyk7CiAgICAgY29uc3QgZmxvYXQgbGFuZ3VhZ2VDb3N0ID0gV2VpZ2h0aW5nOjpnZXRMYW5ndWFnZUNvc3Qod2VpZ2h0aW5nLCBjb3JyZWN0aW9uVHlwZSwKLSAgICAgICAgICAgIHRyYXZlcnNlU2Vzc2lvbiwgcGFyZW50RGljTm9kZSwgZGljTm9kZSwgYmlncmFtQ2FjaGVNYXApOwotICAgIGNvbnN0IGJvb2wgZWRpdCA9IFdlaWdodGluZzo6aXNFZGl0Q29ycmVjdGlvbihjb3JyZWN0aW9uVHlwZSk7Ci0gICAgY29uc3QgYm9vbCBwcm94aW1pdHkgPSBXZWlnaHRpbmc6OmlzUHJveGltaXR5Q29ycmVjdGlvbih3ZWlnaHRpbmcsIGNvcnJlY3Rpb25UeXBlLAotICAgICAgICAgICAgdHJhdmVyc2VTZXNzaW9uLCBkaWNOb2RlKTsKKyAgICAgICAgICAgIHRyYXZlcnNlU2Vzc2lvbiwgcGFyZW50RGljTm9kZSwgZGljTm9kZSwgbXVsdGlCaWdyYW1NYXApOworICAgIGNvbnN0IEVycm9yVHlwZSBlcnJvclR5cGUgPSB3ZWlnaHRpbmctPmdldEVycm9yVHlwZShjb3JyZWN0aW9uVHlwZSwgdHJhdmVyc2VTZXNzaW9uLAorICAgICAgICAgICAgcGFyZW50RGljTm9kZSwgZGljTm9kZSk7CiAgICAgcHJvZmlsZShjb3JyZWN0aW9uVHlwZSwgZGljTm9kZSk7CiAgICAgaWYgKGlucHV0U3RhdGVHLm1OZWVkc1RvVXBkYXRlSW5wdXRTdGF0ZUcpIHsKICAgICAgICAgZGljTm9kZS0+dXBkYXRlSW5wdXRJbmRleEcoJmlucHV0U3RhdGVHKTsKQEAgLTkxLDEzICs5MCwxMyBAQAogICAgICAgICAgICAgICAgIChjb3JyZWN0aW9uVHlwZSA9PSBDVF9UUkFOU1BPU0lUSU9OKSk7CiAgICAgfQogICAgIGRpY05vZGUtPmFkZENvc3Qoc3BhdGlhbENvc3QsIGxhbmd1YWdlQ29zdCwgd2VpZ2h0aW5nLT5uZWVkc1RvTm9ybWFsaXplQ29tcG91bmREaXN0YW5jZSgpLAotICAgICAgICAgICAgaW5wdXRTaXplLCBlZGl0LCBwcm94aW1pdHkpOworICAgICAgICAgICAgaW5wdXRTaXplLCBlcnJvclR5cGUpOwogfQogCiAvKiBzdGF0aWMgKi8gZmxvYXQgV2VpZ2h0aW5nOjpnZXRTcGF0aWFsQ29zdChjb25zdCBXZWlnaHRpbmcgKmNvbnN0IHdlaWdodGluZywKLSAgICAgICAgY29uc3QgQ29ycmVjdGlvblR5cGUgY29ycmVjdGlvblR5cGUsCi0gICAgICAgIGNvbnN0IERpY1RyYXZlcnNlU2Vzc2lvbiAqY29uc3QgdHJhdmVyc2VTZXNzaW9uLCBjb25zdCBEaWNOb2RlICpjb25zdCBwYXJlbnREaWNOb2RlLAotICAgICAgICBjb25zdCBEaWNOb2RlICpjb25zdCBkaWNOb2RlLCBEaWNOb2RlX0lucHV0U3RhdGVHICpjb25zdCBpbnB1dFN0YXRlRykgeworICAgICAgICBjb25zdCBDb3JyZWN0aW9uVHlwZSBjb3JyZWN0aW9uVHlwZSwgY29uc3QgRGljVHJhdmVyc2VTZXNzaW9uICpjb25zdCB0cmF2ZXJzZVNlc3Npb24sCisgICAgICAgIGNvbnN0IERpY05vZGUgKmNvbnN0IHBhcmVudERpY05vZGUsIGNvbnN0IERpY05vZGUgKmNvbnN0IGRpY05vZGUsCisgICAgICAgIERpY05vZGVfSW5wdXRTdGF0ZUcgKmNvbnN0IGlucHV0U3RhdGVHKSB7CiAgICAgc3dpdGNoKGNvcnJlY3Rpb25UeXBlKSB7CiAgICAgY2FzZSBDVF9PTUlTU0lPTjoKICAgICAgICAgcmV0dXJuIHdlaWdodGluZy0+Z2V0T21pc3Npb25Db3N0KHBhcmVudERpY05vZGUsIGRpY05vZGUpOwpAQCAtMTI5LDE0ICsxMjgsMTQgQEAKIC8qIHN0YXRpYyAqLyBmbG9hdCBXZWlnaHRpbmc6OmdldExhbmd1YWdlQ29zdChjb25zdCBXZWlnaHRpbmcgKmNvbnN0IHdlaWdodGluZywKICAgICAgICAgY29uc3QgQ29ycmVjdGlvblR5cGUgY29ycmVjdGlvblR5cGUsIGNvbnN0IERpY1RyYXZlcnNlU2Vzc2lvbiAqY29uc3QgdHJhdmVyc2VTZXNzaW9uLAogICAgICAgICBjb25zdCBEaWNOb2RlICpjb25zdCBwYXJlbnREaWNOb2RlLCBjb25zdCBEaWNOb2RlICpjb25zdCBkaWNOb2RlLAotICAgICAgICBoYXNoX21hcF9jb21wYXQ8aW50LCBpbnQxNl90PiAqY29uc3QgYmlncmFtQ2FjaGVNYXApIHsKKyAgICAgICAgTXVsdGlCaWdyYW1NYXAgKmNvbnN0IG11bHRpQmlncmFtTWFwKSB7CiAgICAgc3dpdGNoKGNvcnJlY3Rpb25UeXBlKSB7CiAgICAgY2FzZSBDVF9PTUlTU0lPTjoKICAgICAgICAgcmV0dXJuIDAuMGY7CiAgICAgY2FzZSBDVF9TVUJTVElUVVRJT046CiAgICAgICAgIHJldHVybiAwLjBmOwogICAgIGNhc2UgQ1RfTkVXX1dPUkRfU1BBQ0VfT01JVFRJT046Ci0gICAgICAgIHJldHVybiB3ZWlnaHRpbmctPmdldE5ld1dvcmRCaWdyYW1Db3N0KHRyYXZlcnNlU2Vzc2lvbiwgcGFyZW50RGljTm9kZSwgYmlncmFtQ2FjaGVNYXApOworICAgICAgICByZXR1cm4gd2VpZ2h0aW5nLT5nZXROZXdXb3JkQmlncmFtQ29zdCh0cmF2ZXJzZVNlc3Npb24sIHBhcmVudERpY05vZGUsIG11bHRpQmlncmFtTWFwKTsKICAgICBjYXNlIENUX01BVENIOgogICAgICAgICByZXR1cm4gMC4wZjsKICAgICBjYXNlIENUX0NPTVBMRVRJT046CkBAIC0xNDQsMTEgKzE0MywxMSBAQAogICAgIGNhc2UgQ1RfVEVSTUlOQUw6IHsKICAgICAgICAgY29uc3QgZmxvYXQgbGFuZ3VhZ2VJbXByb2JhYmlsaXR5ID0KICAgICAgICAgICAgICAgICBEaWNOb2RlVXRpbHM6OmdldEJpZ3JhbU5vZGVJbXByb2JhYmlsaXR5KAotICAgICAgICAgICAgICAgICAgICAgICAgdHJhdmVyc2VTZXNzaW9uLT5nZXRPZmZzZXREaWN0KCksIGRpY05vZGUsIGJpZ3JhbUNhY2hlTWFwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRyYXZlcnNlU2Vzc2lvbi0+Z2V0T2Zmc2V0RGljdCgpLCBkaWNOb2RlLCBtdWx0aUJpZ3JhbU1hcCk7CiAgICAgICAgIHJldHVybiB3ZWlnaHRpbmctPmdldFRlcm1pbmFsTGFuZ3VhZ2VDb3N0KHRyYXZlcnNlU2Vzc2lvbiwgZGljTm9kZSwgbGFuZ3VhZ2VJbXByb2JhYmlsaXR5KTsKICAgICB9CiAgICAgY2FzZSBDVF9ORVdfV09SRF9TUEFDRV9TVUJTVElUVVRJT046Ci0gICAgICAgIHJldHVybiB3ZWlnaHRpbmctPmdldE5ld1dvcmRCaWdyYW1Db3N0KHRyYXZlcnNlU2Vzc2lvbiwgcGFyZW50RGljTm9kZSwgYmlncmFtQ2FjaGVNYXApOworICAgICAgICByZXR1cm4gd2VpZ2h0aW5nLT5nZXROZXdXb3JkQmlncmFtQ29zdCh0cmF2ZXJzZVNlc3Npb24sIHBhcmVudERpY05vZGUsIG11bHRpQmlncmFtTWFwKTsKICAgICBjYXNlIENUX0lOU0VSVElPTjoKICAgICAgICAgcmV0dXJuIDAuMGY7CiAgICAgY2FzZSBDVF9UUkFOU1BPU0lUSU9OOgpAQCAtMTU4LDY0ICsxNTcsNiBAQAogICAgIH0KIH0KIAotLyogc3RhdGljICovIGJvb2wgV2VpZ2h0aW5nOjppc0VkaXRDb3JyZWN0aW9uKGNvbnN0IENvcnJlY3Rpb25UeXBlIGNvcnJlY3Rpb25UeXBlKSB7Ci0gICAgc3dpdGNoKGNvcnJlY3Rpb25UeXBlKSB7Ci0gICAgICAgIGNhc2UgQ1RfT01JU1NJT046Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgY2FzZSBDVF9BRERJVElPTkFMX1BST1hJTUlUWToKLSAgICAgICAgICAgIC8vIFNob3VsZCByZXR1cm4gdHJ1ZT8KLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgY2FzZSBDVF9TVUJTVElUVVRJT046Ci0gICAgICAgICAgICAvLyBTaG91bGQgcmV0dXJuIHRydWU/Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGNhc2UgQ1RfTkVXX1dPUkRfU1BBQ0VfT01JVFRJT046Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGNhc2UgQ1RfTUFUQ0g6Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGNhc2UgQ1RfQ09NUExFVElPTjoKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgY2FzZSBDVF9URVJNSU5BTDoKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgY2FzZSBDVF9ORVdfV09SRF9TUEFDRV9TVUJTVElUVVRJT046Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGNhc2UgQ1RfSU5TRVJUSU9OOgotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIGNhc2UgQ1RfVFJBTlNQT1NJVElPTjoKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLX0KLQotLyogc3RhdGljICovIGJvb2wgV2VpZ2h0aW5nOjppc1Byb3hpbWl0eUNvcnJlY3Rpb24oY29uc3QgV2VpZ2h0aW5nICpjb25zdCB3ZWlnaHRpbmcsCi0gICAgICAgIGNvbnN0IENvcnJlY3Rpb25UeXBlIGNvcnJlY3Rpb25UeXBlLAotICAgICAgICBjb25zdCBEaWNUcmF2ZXJzZVNlc3Npb24gKmNvbnN0IHRyYXZlcnNlU2Vzc2lvbiwgY29uc3QgRGljTm9kZSAqY29uc3QgZGljTm9kZSkgewotICAgIHN3aXRjaChjb3JyZWN0aW9uVHlwZSkgewotICAgICAgICBjYXNlIENUX09NSVNTSU9OOgotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBjYXNlIENUX0FERElUSU9OQUxfUFJPWElNSVRZOgotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBjYXNlIENUX1NVQlNUSVRVVElPTjoKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgY2FzZSBDVF9ORVdfV09SRF9TUEFDRV9PTUlUVElPTjoKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgY2FzZSBDVF9NQVRDSDoKLSAgICAgICAgICAgIHJldHVybiB3ZWlnaHRpbmctPmlzUHJveGltaXR5RGljTm9kZSh0cmF2ZXJzZVNlc3Npb24sIGRpY05vZGUpOwotICAgICAgICBjYXNlIENUX0NPTVBMRVRJT046Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGNhc2UgQ1RfVEVSTUlOQUw6Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGNhc2UgQ1RfTkVXX1dPUkRfU1BBQ0VfU1VCU1RJVFVUSU9OOgotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBjYXNlIENUX0lOU0VSVElPTjoKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgY2FzZSBDVF9UUkFOU1BPU0lUSU9OOgotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLX0KLQogLyogc3RhdGljICovIGludCBXZWlnaHRpbmc6OmdldEZvcndhcmRJbnB1dENvdW50KGNvbnN0IENvcnJlY3Rpb25UeXBlIGNvcnJlY3Rpb25UeXBlKSB7CiAgICAgc3dpdGNoKGNvcnJlY3Rpb25UeXBlKSB7CiAgICAgICAgIGNhc2UgQ1RfT01JU1NJT046CkBAIC0yMjksNyArMTcwLDcgQEAKICAgICAgICAgY2FzZSBDVF9NQVRDSDoKICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICBjYXNlIENUX0NPTVBMRVRJT046Ci0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICBjYXNlIENUX1RFUk1JTkFMOgogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIGNhc2UgQ1RfTkVXX1dPUkRfU1BBQ0VfU1VCU1RJVFVUSU9OOgpkaWZmIC0tZ2l0IGEvbmF0aXZlL2puaS9zcmMvc3VnZ2VzdC9jb3JlL3BvbGljeS93ZWlnaHRpbmcuaCBiL25hdGl2ZS9qbmkvc3JjL3N1Z2dlc3QvY29yZS9wb2xpY3kvd2VpZ2h0aW5nLmgKaW5kZXggYmNlNDc5Yy4uMGQyNzQ1YiAxMDA2NDQKLS0tIGEvbmF0aXZlL2puaS9zcmMvc3VnZ2VzdC9jb3JlL3BvbGljeS93ZWlnaHRpbmcuaAorKysgYi9uYXRpdmUvam5pL3NyYy9zdWdnZXN0L2NvcmUvcG9saWN5L3dlaWdodGluZy5oCkBAIC0xOCwxMyArMTgsMTMgQEAKICNkZWZpbmUgTEFUSU5JTUVfV0VJR0hUSU5HX0gKIAogI2luY2x1ZGUgImRlZmluZXMuaCIKLSNpbmNsdWRlICJoYXNoX21hcF9jb21wYXQuaCIKIAogbmFtZXNwYWNlIGxhdGluaW1lIHsKIAogY2xhc3MgRGljTm9kZTsKIGNsYXNzIERpY1RyYXZlcnNlU2Vzc2lvbjsKIHN0cnVjdCBEaWNOb2RlX0lucHV0U3RhdGVHOworY2xhc3MgTXVsdGlCaWdyYW1NYXA7CiAKIGNsYXNzIFdlaWdodGluZyB7CiAgcHVibGljOgpAQCAtMzIsNyArMzIsNyBAQAogICAgICAgICAgICAgY29uc3QgQ29ycmVjdGlvblR5cGUgY29ycmVjdGlvblR5cGUsCiAgICAgICAgICAgICBjb25zdCBEaWNUcmF2ZXJzZVNlc3Npb24gKmNvbnN0IHRyYXZlcnNlU2Vzc2lvbiwKICAgICAgICAgICAgIGNvbnN0IERpY05vZGUgKmNvbnN0IHBhcmVudERpY05vZGUsIERpY05vZGUgKmNvbnN0IGRpY05vZGUsCi0gICAgICAgICAgICBoYXNoX21hcF9jb21wYXQ8aW50LCBpbnQxNl90PiAqY29uc3QgYmlncmFtQ2FjaGVNYXApOworICAgICAgICAgICAgTXVsdGlCaWdyYW1NYXAgKmNvbnN0IG11bHRpQmlncmFtTWFwKTsKIAogIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIGZsb2F0IGdldFRlcm1pbmFsU3BhdGlhbENvc3QoY29uc3QgRGljVHJhdmVyc2VTZXNzaW9uICpjb25zdCB0cmF2ZXJzZVNlc3Npb24sCkBAIC02MSw3ICs2MSw3IEBACiAKICAgICB2aXJ0dWFsIGZsb2F0IGdldE5ld1dvcmRCaWdyYW1Db3N0KAogICAgICAgICAgICAgY29uc3QgRGljVHJhdmVyc2VTZXNzaW9uICpjb25zdCB0cmF2ZXJzZVNlc3Npb24sIGNvbnN0IERpY05vZGUgKmNvbnN0IGRpY05vZGUsCi0gICAgICAgICAgICBoYXNoX21hcF9jb21wYXQ8aW50LCBpbnQxNl90PiAqY29uc3QgYmlncmFtQ2FjaGVNYXApIGNvbnN0ID0gMDsKKyAgICAgICAgICAgIE11bHRpQmlncmFtTWFwICpjb25zdCBtdWx0aUJpZ3JhbU1hcCkgY29uc3QgPSAwOwogCiAgICAgdmlydHVhbCBmbG9hdCBnZXRDb21wbGV0aW9uQ29zdCgKICAgICAgICAgICAgIGNvbnN0IERpY1RyYXZlcnNlU2Vzc2lvbiAqY29uc3QgdHJhdmVyc2VTZXNzaW9uLApAQCAtODAsNiArODAsMTAgQEAKICAgICB2aXJ0dWFsIGZsb2F0IGdldFNwYWNlU3Vic3RpdHV0aW9uQ29zdChjb25zdCBEaWNUcmF2ZXJzZVNlc3Npb24gKmNvbnN0IHRyYXZlcnNlU2Vzc2lvbiwKICAgICAgICAgICAgIGNvbnN0IERpY05vZGUgKmNvbnN0IGRpY05vZGUpIGNvbnN0ID0gMDsKIAorICAgIHZpcnR1YWwgRXJyb3JUeXBlIGdldEVycm9yVHlwZShjb25zdCBDb3JyZWN0aW9uVHlwZSBjb3JyZWN0aW9uVHlwZSwKKyAgICAgICAgICAgIGNvbnN0IERpY1RyYXZlcnNlU2Vzc2lvbiAqY29uc3QgdHJhdmVyc2VTZXNzaW9uLAorICAgICAgICAgICAgY29uc3QgRGljTm9kZSAqY29uc3QgcGFyZW50RGljTm9kZSwgY29uc3QgRGljTm9kZSAqY29uc3QgZGljTm9kZSkgY29uc3QgPSAwOworCiAgICAgV2VpZ2h0aW5nKCkge30KICAgICB2aXJ0dWFsIH5XZWlnaHRpbmcoKSB7fQogCkBAIC05MywxMyArOTcsNyBAQAogICAgIHN0YXRpYyBmbG9hdCBnZXRMYW5ndWFnZUNvc3QoY29uc3QgV2VpZ2h0aW5nICpjb25zdCB3ZWlnaHRpbmcsCiAgICAgICAgICAgICBjb25zdCBDb3JyZWN0aW9uVHlwZSBjb3JyZWN0aW9uVHlwZSwgY29uc3QgRGljVHJhdmVyc2VTZXNzaW9uICpjb25zdCB0cmF2ZXJzZVNlc3Npb24sCiAgICAgICAgICAgICBjb25zdCBEaWNOb2RlICpjb25zdCBwYXJlbnREaWNOb2RlLCBjb25zdCBEaWNOb2RlICpjb25zdCBkaWNOb2RlLAotICAgICAgICAgICAgaGFzaF9tYXBfY29tcGF0PGludCwgaW50MTZfdD4gKmNvbnN0IGJpZ3JhbUNhY2hlTWFwKTsKLSAgICAvLyBUT0RPOiBNb3ZlIHRvIFR5cGluZ1dlaWdodGluZyBhbmQgR2VzdHVyZVdlaWdodGluZz8KLSAgICBzdGF0aWMgYm9vbCBpc0VkaXRDb3JyZWN0aW9uKGNvbnN0IENvcnJlY3Rpb25UeXBlIGNvcnJlY3Rpb25UeXBlKTsKLSAgICAvLyBUT0RPOiBNb3ZlIHRvIFR5cGluZ1dlaWdodGluZyBhbmQgR2VzdHVyZVdlaWdodGluZz8KLSAgICBzdGF0aWMgYm9vbCBpc1Byb3hpbWl0eUNvcnJlY3Rpb24oY29uc3QgV2VpZ2h0aW5nICpjb25zdCB3ZWlnaHRpbmcsCi0gICAgICAgICAgICBjb25zdCBDb3JyZWN0aW9uVHlwZSBjb3JyZWN0aW9uVHlwZSwgY29uc3QgRGljVHJhdmVyc2VTZXNzaW9uICpjb25zdCB0cmF2ZXJzZVNlc3Npb24sCi0gICAgICAgICAgICBjb25zdCBEaWNOb2RlICpjb25zdCBkaWNOb2RlKTsKKyAgICAgICAgICAgIE11bHRpQmlncmFtTWFwICpjb25zdCBtdWx0aUJpZ3JhbU1hcCk7CiAgICAgLy8gVE9ETzogTW92ZSB0byBUeXBpbmdXZWlnaHRpbmcgYW5kIEdlc3R1cmVXZWlnaHRpbmc/CiAgICAgc3RhdGljIGludCBnZXRGb3J3YXJkSW5wdXRDb3VudChjb25zdCBDb3JyZWN0aW9uVHlwZSBjb3JyZWN0aW9uVHlwZSk7CiB9OwpkaWZmIC0tZ2l0IGEvbmF0aXZlL2puaS9zcmMvc3VnZ2VzdC9jb3JlL3Nlc3Npb24vZGljX3RyYXZlcnNlX3Nlc3Npb24uY3BwIGIvbmF0aXZlL2puaS9zcmMvc3VnZ2VzdC9jb3JlL3Nlc3Npb24vZGljX3RyYXZlcnNlX3Nlc3Npb24uY3BwCmluZGV4IDNjNDRkYjIuLjUxMTY1ODUgMTAwNjQ0Ci0tLSBhL25hdGl2ZS9qbmkvc3JjL3N1Z2dlc3QvY29yZS9zZXNzaW9uL2RpY190cmF2ZXJzZV9zZXNzaW9uLmNwcAorKysgYi9uYXRpdmUvam5pL3NyYy9zdWdnZXN0L2NvcmUvc2Vzc2lvbi9kaWNfdHJhdmVyc2Vfc2Vzc2lvbi5jcHAKQEAgLTY5LDcgKzY5LDE1IEBACiAgICAgICAgIG1QcmV2V29yZFBvcyA9IE5PVF9WQUxJRF9XT1JEOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIG1QcmV2V29yZFBvcyA9IERpY05vZGVVdGlsczo6Z2V0V29yZFBvcyhkaWN0aW9uYXJ5LT5nZXRPZmZzZXREaWN0KCksIHByZXZXb3JkLCBwcmV2V29yZExlbmd0aCk7CisgICAgLy8gVE9ETzogbWVyZ2UgZm9sbG93aW5nIHNpbWlsYXIgY2FsbHMgdG8gZ2V0VGVybWluYWxQb3NpdGlvbiBpbnRvIG9uZSBjYXNlLWluc2Vuc2l0aXZlIGNhbGwuCisgICAgbVByZXZXb3JkUG9zID0gQmluYXJ5Rm9ybWF0OjpnZXRUZXJtaW5hbFBvc2l0aW9uKGRpY3Rpb25hcnktPmdldE9mZnNldERpY3QoKSwgcHJldldvcmQsCisgICAgICAgICAgICBwcmV2V29yZExlbmd0aCwgZmFsc2UgLyogZm9yY2VMb3dlckNhc2VTZWFyY2ggKi8pOworICAgIGlmIChtUHJldldvcmRQb3MgPT0gTk9UX1ZBTElEX1dPUkQpIHsKKyAgICAgICAgLy8gQ2hlY2sgYmlncmFtcyBmb3IgbG93ZXItY2FzZWQgcHJldmlvdXMgd29yZCBpZiBvcmlnaW5hbCB3YXMgbm90IGZvdW5kLiBVc2VmdWwgZm9yCisgICAgICAgIC8vIGF1dG8tY2FwaXRhbGl6ZWQgd29yZHMgbGlrZSAiVGhlIFtjdXJyZW50X3dvcmRdIi4KKyAgICAgICAgbVByZXZXb3JkUG9zID0gQmluYXJ5Rm9ybWF0OjpnZXRUZXJtaW5hbFBvc2l0aW9uKGRpY3Rpb25hcnktPmdldE9mZnNldERpY3QoKSwgcHJldldvcmQsCisgICAgICAgICAgICAgICAgcHJldldvcmRMZW5ndGgsIHRydWUgLyogZm9yY2VMb3dlckNhc2VTZWFyY2ggKi8pOworICAgIH0KIH0KIAogdm9pZCBEaWNUcmF2ZXJzZVNlc3Npb246OnNldHVwRm9yR2V0U3VnZ2VzdGlvbnMoY29uc3QgUHJveGltaXR5SW5mbyAqcEluZm8sCkBAIC05Miw3ICsxMDAsNyBAQAogCiB2b2lkIERpY1RyYXZlcnNlU2Vzc2lvbjo6cmVzZXRDYWNoZShjb25zdCBpbnQgbmV4dEFjdGl2ZUNhY2hlU2l6ZSwgY29uc3QgaW50IG1heFdvcmRzKSB7CiAgICAgbURpY05vZGVzQ2FjaGUucmVzZXQobmV4dEFjdGl2ZUNhY2hlU2l6ZSwgbWF4V29yZHMpOwotICAgIG1CaWdyYW1DYWNoZU1hcC5jbGVhcigpOworICAgIG1NdWx0aUJpZ3JhbU1hcC5jbGVhcigpOwogICAgIG1QYXJ0aWFsbHlDb21taXRlZCA9IGZhbHNlOwogfQogCmRpZmYgLS1naXQgYS9uYXRpdmUvam5pL3NyYy9zdWdnZXN0L2NvcmUvc2Vzc2lvbi9kaWNfdHJhdmVyc2Vfc2Vzc2lvbi5oIGIvbmF0aXZlL2puaS9zcmMvc3VnZ2VzdC9jb3JlL3Nlc3Npb24vZGljX3RyYXZlcnNlX3Nlc3Npb24uaAppbmRleCBkOWMyYTUxLi5kODhiZTViIDEwMDY0NAotLS0gYS9uYXRpdmUvam5pL3NyYy9zdWdnZXN0L2NvcmUvc2Vzc2lvbi9kaWNfdHJhdmVyc2Vfc2Vzc2lvbi5oCisrKyBiL25hdGl2ZS9qbmkvc3JjL3N1Z2dlc3QvY29yZS9zZXNzaW9uL2RpY190cmF2ZXJzZV9zZXNzaW9uLmgKQEAgLTIxLDggKzIxLDggQEAKICNpbmNsdWRlIDx2ZWN0b3I+CiAKICNpbmNsdWRlICJkZWZpbmVzLmgiCi0jaW5jbHVkZSAiaGFzaF9tYXBfY29tcGF0LmgiCiAjaW5jbHVkZSAiam5pLmgiCisjaW5jbHVkZSAibXVsdGlfYmlncmFtX21hcC5oIgogI2luY2x1ZGUgInByb3hpbWl0eV9pbmZvX3N0YXRlLmgiCiAjaW5jbHVkZSAic3VnZ2VzdC9jb3JlL2RpY25vZGUvZGljX25vZGVzX2NhY2hlLmgiCiAKQEAgLTM1LDcgKzM1LDcgQEAKICBwdWJsaWM6CiAgICAgQUtfRk9SQ0VfSU5MSU5FIERpY1RyYXZlcnNlU2Vzc2lvbihKTklFbnYgKmVudiwganN0cmluZyBsb2NhbGVTdHIpCiAgICAgICAgICAgICA6IG1QcmV2V29yZFBvcyhOT1RfVkFMSURfV09SRCksIG1Qcm94aW1pdHlJbmZvKDApLAotICAgICAgICAgICAgICBtRGljdGlvbmFyeSgwKSwgbURpY05vZGVzQ2FjaGUoKSwgbUJpZ3JhbUNhY2hlTWFwKCksCisgICAgICAgICAgICAgIG1EaWN0aW9uYXJ5KDApLCBtRGljTm9kZXNDYWNoZSgpLCBtTXVsdGlCaWdyYW1NYXAoKSwKICAgICAgICAgICAgICAgbUlucHV0U2l6ZSgwKSwgbVBhcnRpYWxseUNvbW1pdGVkKGZhbHNlKSwgbU1heFBvaW50ZXJDb3VudCgxKSwKICAgICAgICAgICAgICAgbU11bHRpV29yZENvc3RNdWx0aXBsaWVyKDEuMGYpIHsKICAgICAgICAgLy8gTk9URTogbVByb3hpbWl0eUluZm9TdGF0ZXMgaXMgYW4gYXJyYXkgb2YgaW5zdGFuY2VzLgpAQCAtNjcsNyArNjcsNyBAQAogICAgIC8vIFRPRE86IFVzZSBwcm9wZXIgcGFyYW1ldGVyIHdoZW4gY2hhbmdlZAogICAgIGludCBnZXREaWNSb290UG9zKCkgY29uc3QgeyByZXR1cm4gMDsgfQogICAgIERpY05vZGVzQ2FjaGUgKmdldERpY1RyYXZlcnNlQ2FjaGUoKSB7IHJldHVybiAmbURpY05vZGVzQ2FjaGU7IH0KLSAgICBoYXNoX21hcF9jb21wYXQ8aW50LCBpbnQxNl90PiAqZ2V0QmlncmFtQ2FjaGVNYXAoKSB7IHJldHVybiAmbUJpZ3JhbUNhY2hlTWFwOyB9CisgICAgTXVsdGlCaWdyYW1NYXAgKmdldE11bHRpQmlncmFtTWFwKCkgeyByZXR1cm4gJm1NdWx0aUJpZ3JhbU1hcDsgfQogICAgIGNvbnN0IFByb3hpbWl0eUluZm9TdGF0ZSAqZ2V0UHJveGltaXR5SW5mb1N0YXRlKGludCBpZCkgY29uc3QgewogICAgICAgICByZXR1cm4gJm1Qcm94aW1pdHlJbmZvU3RhdGVzW2lkXTsKICAgICB9CkBAIC0xNzAsNyArMTcwLDcgQEAKIAogICAgIERpY05vZGVzQ2FjaGUgbURpY05vZGVzQ2FjaGU7CiAgICAgLy8gVGVtcG9yYXJ5IGNhY2hlIGZvciBiaWdyYW0gZnJlcXVlbmNpZXMKLSAgICBoYXNoX21hcF9jb21wYXQ8aW50LCBpbnQxNl90PiBtQmlncmFtQ2FjaGVNYXA7CisgICAgTXVsdGlCaWdyYW1NYXAgbU11bHRpQmlncmFtTWFwOwogICAgIFByb3hpbWl0eUluZm9TdGF0ZSBtUHJveGltaXR5SW5mb1N0YXRlc1tNQVhfUE9JTlRFUl9DT1VOVF9HXTsKIAogICAgIGludCBtSW5wdXRTaXplOwpkaWZmIC0tZ2l0IGEvbmF0aXZlL2puaS9zcmMvc3VnZ2VzdC9jb3JlL3N1Z2dlc3QuY3BwIGIvbmF0aXZlL2puaS9zcmMvc3VnZ2VzdC9jb3JlL3N1Z2dlc3QuY3BwCmluZGV4IDlkZTJjZDIuLjBmZjc0NTQgMTAwNjQ0Ci0tLSBhL25hdGl2ZS9qbmkvc3JjL3N1Z2dlc3QvY29yZS9zdWdnZXN0LmNwcAorKysgYi9uYXRpdmUvam5pL3NyYy9zdWdnZXN0L2NvcmUvc3VnZ2VzdC5jcHAKQEAgLTE2MSwxMiArMTYxLDE1IEBACiAgICAgICAgICAgICAgICAgKyBkb3VibGVMZXR0ZXJDb3N0OwogICAgICAgICBjb25zdCBUZXJtaW5hbEF0dHJpYnV0ZXMgdGVybWluYWxBdHRyaWJ1dGVzKHRyYXZlcnNlU2Vzc2lvbi0+Z2V0T2Zmc2V0RGljdCgpLAogICAgICAgICAgICAgICAgIHRlcm1pbmFsRGljTm9kZS0+Z2V0RmxhZ3MoKSwgdGVybWluYWxEaWNOb2RlLT5nZXRBdHRyaWJ1dGVzUG9zKCkpOwotICAgICAgICBjb25zdCBpbnQgb3JpZ2luYWxUZXJtaW5hbFByb2JhYmlsaXR5ID0gdGVybWluYWxEaWNOb2RlLT5nZXRQcm9iYWJpbGl0eSgpOworICAgICAgICBjb25zdCBib29sIGlzUG9zc2libHlPZmZlbnNpdmVXb3JkID0gdGVybWluYWxEaWNOb2RlLT5nZXRQcm9iYWJpbGl0eSgpIDw9IDA7CisgICAgICAgIGNvbnN0IGJvb2wgaXNFeGFjdE1hdGNoID0gdGVybWluYWxEaWNOb2RlLT5pc0V4YWN0TWF0Y2goKTsKKyAgICAgICAgY29uc3QgaW50IG91dHB1dFR5cGVGbGFncyA9CisgICAgICAgICAgICAgICAgKGlzUG9zc2libHlPZmZlbnNpdmVXb3JkID8gRGljdGlvbmFyeTo6S0lORF9GTEFHX1BPU1NJQkxZX09GRkVOU0lWRSA6IDApCisgICAgICAgICAgICAgICAgICAgICAgICB8IChpc0V4YWN0TWF0Y2ggPyBEaWN0aW9uYXJ5OjpLSU5EX0ZMQUdfRVhBQ1RfTUFUQ0ggOiAwKTsKIAotICAgICAgICAvLyBEbyBub3Qgc3VnZ2VzdCB3b3JkcyB3aXRoIGEgMCBwcm9iYWJpbGl0eSwgb3IgZW50cmllcyB0aGF0IGFyZSBibGFja2xpc3RlZCBvciBkbyBub3QKLSAgICAgICAgLy8gcmVwcmVzZW50IGEgd29yZC4gSG93ZXZlciwgd2Ugc2hvdWxkIHN0aWxsIHN1Ym1pdCB0aGVpciBzaG9ydGN1dHMgaWYgYW55LgotICAgICAgICBjb25zdCBib29sIGlzVmFsaWRXb3JkID0KLSAgICAgICAgICAgICAgICBvcmlnaW5hbFRlcm1pbmFsUHJvYmFiaWxpdHkgPiAwICYmICF0ZXJtaW5hbEF0dHJpYnV0ZXMuaXNCbGFja2xpc3RlZE9yTm90QVdvcmQoKTsKKyAgICAgICAgLy8gRW50cmllcyB0aGF0IGFyZSBibGFja2xpc3RlZCBvciBkbyBub3QgcmVwcmVzZW50IGEgd29yZCBzaG91bGQgbm90IGJlIG91dHB1dC4KKyAgICAgICAgY29uc3QgYm9vbCBpc1ZhbGlkV29yZCA9ICF0ZXJtaW5hbEF0dHJpYnV0ZXMuaXNCbGFja2xpc3RlZE9yTm90QVdvcmQoKTsKKwogICAgICAgICAvLyBJbmNyZWFzZSBvdXRwdXQgc2NvcmUgb2YgdG9wIHR5cGluZyBzdWdnZXN0aW9uIHRvIGVuc3VyZSBhdXRvY29ycmVjdGlvbi4KICAgICAgICAgLy8gVE9ETzogQmV0dGVyIGludGVncmF0aW9uIHdpdGggamF2YSBzaWRlIGF1dG9jb3JyZWN0aW9uIGxvZ2ljLgogICAgICAgICAvLyBGb3JjZSBhdXRvY29ycmVjdGlvbiBmb3Igb2J2aW91cyBsb25nIG11bHRpLXdvcmQgc3VnZ2VzdGlvbnMuCkBAIC0xODgsMTAgKzE5MSw5IEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICAvLyBEbyBub3Qgc3VnZ2VzdCB3b3JkcyB3aXRoIGEgMCBwcm9iYWJpbGl0eSwgb3IgZW50cmllcyB0aGF0IGFyZSBibGFja2xpc3RlZCBvciBkbyBub3QKLSAgICAgICAgLy8gcmVwcmVzZW50IGEgd29yZC4gSG93ZXZlciwgd2Ugc2hvdWxkIHN0aWxsIHN1Ym1pdCB0aGVpciBzaG9ydGN1dHMgaWYgYW55LgorICAgICAgICAvLyBEb24ndCBvdXRwdXQgaW52YWxpZCB3b3Jkcy4gSG93ZXZlciwgd2Ugc3RpbGwgbmVlZCB0byBzdWJtaXQgdGhlaXIgc2hvcnRjdXRzIGlmIGFueS4KICAgICAgICAgaWYgKGlzVmFsaWRXb3JkKSB7Ci0gICAgICAgICAgICBvdXRwdXRUeXBlc1tvdXRwdXRXb3JkSW5kZXhdID0gRGljdGlvbmFyeTo6S0lORF9DT1JSRUNUSU9OOworICAgICAgICAgICAgb3V0cHV0VHlwZXNbb3V0cHV0V29yZEluZGV4XSA9IERpY3Rpb25hcnk6OktJTkRfQ09SUkVDVElPTiB8IG91dHB1dFR5cGVGbGFnczsKICAgICAgICAgICAgIGZyZXF1ZW5jaWVzW291dHB1dFdvcmRJbmRleF0gPSBmaW5hbFNjb3JlOwogICAgICAgICAgICAgLy8gUG9wdWxhdGUgdGhlIG91dHB1dENoYXJzIGFycmF5IHdpdGggdGhlIHN1Z2dlc3RlZCB3b3JkLgogICAgICAgICAgICAgY29uc3QgaW50IHN0YXJ0SW5kZXggPSBvdXRwdXRXb3JkSW5kZXggKiBNQVhfV09SRF9MRU5HVEg7CkBAIC0yOTQsOCArMjk2LDggQEAKICAgICAgICAgICAgICAgICAgICAgY29ycmVjdGlvbkRpY05vZGUuYWR2YW5jZURpZ3JhcGhJbmRleCgpOwogICAgICAgICAgICAgICAgICAgICBwcm9jZXNzRGljTm9kZUFzRGlncmFwaCh0cmF2ZXJzZVNlc3Npb24sICZjb3JyZWN0aW9uRGljTm9kZSk7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChhbGxvd3NFcnJvckNvcnJlY3Rpb25zCi0gICAgICAgICAgICAgICAgICAgICAgICAmJiBUUkFWRVJTQUwtPmlzT21pc3Npb24odHJhdmVyc2VTZXNzaW9uLCAmZGljTm9kZSwgY2hpbGREaWNOb2RlKSkgeworICAgICAgICAgICAgICAgIGlmIChUUkFWRVJTQUwtPmlzT21pc3Npb24odHJhdmVyc2VTZXNzaW9uLCAmZGljTm9kZSwgY2hpbGREaWNOb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgYWxsb3dzRXJyb3JDb3JyZWN0aW9ucykpIHsKICAgICAgICAgICAgICAgICAgICAgLy8gVE9ETzogKEdlc3R1cmUpIENoYW5nZSB3ZWlnaHQgYmV0d2VlbiBvbWlzc2lvbiBhbmQgc3Vic3RpdHV0aW9uIGVycm9ycwogICAgICAgICAgICAgICAgICAgICAvLyBUT0RPOiAoR2VzdHVyZSkgVGVybWluYWwgbm9kZSBzaG91bGQgbm90IGJlIGhhbmRsZWQgYXMgb21pc3Npb24KICAgICAgICAgICAgICAgICAgICAgY29ycmVjdGlvbkRpY05vZGUuaW5pdEJ5Q29weShjaGlsZERpY05vZGUpOwpAQCAtMzU3LDcgKzM1OSw3IEBACiAgICAgRGljTm9kZSB0ZXJtaW5hbERpY05vZGU7CiAgICAgRGljTm9kZVV0aWxzOjppbml0QnlDb3B5KGRpY05vZGUsICZ0ZXJtaW5hbERpY05vZGUpOwogICAgIFdlaWdodGluZzo6YWRkQ29zdEFuZEZvcndhcmRJbnB1dEluZGV4KFdFSUdIVElORywgQ1RfVEVSTUlOQUwsIHRyYXZlcnNlU2Vzc2lvbiwgMCwKLSAgICAgICAgICAgICZ0ZXJtaW5hbERpY05vZGUsIHRyYXZlcnNlU2Vzc2lvbi0+Z2V0QmlncmFtQ2FjaGVNYXAoKSk7CisgICAgICAgICAgICAmdGVybWluYWxEaWNOb2RlLCB0cmF2ZXJzZVNlc3Npb24tPmdldE11bHRpQmlncmFtTWFwKCkpOwogICAgIHRyYXZlcnNlU2Vzc2lvbi0+Z2V0RGljVHJhdmVyc2VDYWNoZSgpLT5jb3B5UHVzaFRlcm1pbmFsKCZ0ZXJtaW5hbERpY05vZGUpOwogfQogCkBAIC0zODksOCArMzkxLDEwIEBACiAKIHZvaWQgU3VnZ2VzdDo6cHJvY2Vzc0RpY05vZGVBc0FkZGl0aW9uYWxQcm94aW1pdHlDaGFyKERpY1RyYXZlcnNlU2Vzc2lvbiAqdHJhdmVyc2VTZXNzaW9uLAogICAgICAgICBEaWNOb2RlICpkaWNOb2RlLCBEaWNOb2RlICpjaGlsZERpY05vZGUpIGNvbnN0IHsKKyAgICAvLyBOb3RlOiBNb3N0IHR5cGVzIG9mIGNvcnJlY3Rpb25zIGRvbid0IG5lZWQgdG8gbG9vayB1cCB0aGUgYmlncmFtIGluZm9ybWF0aW9uIHNpbmNlIHRoZXkgZG8KKyAgICAvLyBub3QgdHJlYXQgdGhlIG5vZGUgYXMgYSB0ZXJtaW5hbC4gVGhlcmUgaXMgbm8gbmVlZCB0byBwYXNzIHRoZSBiaWdyYW0gbWFwIGluIHRoZXNlIGNhc2VzLgogICAgIFdlaWdodGluZzo6YWRkQ29zdEFuZEZvcndhcmRJbnB1dEluZGV4KFdFSUdIVElORywgQ1RfQURESVRJT05BTF9QUk9YSU1JVFksCi0gICAgICAgICAgICB0cmF2ZXJzZVNlc3Npb24sIGRpY05vZGUsIGNoaWxkRGljTm9kZSwgMCAvKiBiaWdyYW1DYWNoZU1hcCAqLyk7CisgICAgICAgICAgICB0cmF2ZXJzZVNlc3Npb24sIGRpY05vZGUsIGNoaWxkRGljTm9kZSwgMCAvKiBtdWx0aUJpZ3JhbU1hcCAqLyk7CiAgICAgd2VpZ2h0Q2hpbGROb2RlKHRyYXZlcnNlU2Vzc2lvbiwgY2hpbGREaWNOb2RlKTsKICAgICBwcm9jZXNzRXhwYW5kZWREaWNOb2RlKHRyYXZlcnNlU2Vzc2lvbiwgY2hpbGREaWNOb2RlKTsKIH0KQEAgLTM5OCw3ICs0MDIsNyBAQAogdm9pZCBTdWdnZXN0Ojpwcm9jZXNzRGljTm9kZUFzU3Vic3RpdHV0aW9uKERpY1RyYXZlcnNlU2Vzc2lvbiAqdHJhdmVyc2VTZXNzaW9uLAogICAgICAgICBEaWNOb2RlICpkaWNOb2RlLCBEaWNOb2RlICpjaGlsZERpY05vZGUpIGNvbnN0IHsKICAgICBXZWlnaHRpbmc6OmFkZENvc3RBbmRGb3J3YXJkSW5wdXRJbmRleChXRUlHSFRJTkcsIENUX1NVQlNUSVRVVElPTiwgdHJhdmVyc2VTZXNzaW9uLAotICAgICAgICAgICAgZGljTm9kZSwgY2hpbGREaWNOb2RlLCAwIC8qIGJpZ3JhbUNhY2hlTWFwICovKTsKKyAgICAgICAgICAgIGRpY05vZGUsIGNoaWxkRGljTm9kZSwgMCAvKiBtdWx0aUJpZ3JhbU1hcCAqLyk7CiAgICAgd2VpZ2h0Q2hpbGROb2RlKHRyYXZlcnNlU2Vzc2lvbiwgY2hpbGREaWNOb2RlKTsKICAgICBwcm9jZXNzRXhwYW5kZWREaWNOb2RlKHRyYXZlcnNlU2Vzc2lvbiwgY2hpbGREaWNOb2RlKTsKIH0KQEAgLTQyMiwyMCArNDI2LDE1IEBACiAgKi8KIHZvaWQgU3VnZ2VzdDo6cHJvY2Vzc0RpY05vZGVBc09taXNzaW9uKAogICAgICAgICBEaWNUcmF2ZXJzZVNlc3Npb24gKnRyYXZlcnNlU2Vzc2lvbiwgRGljTm9kZSAqZGljTm9kZSkgY29uc3QgewotICAgIC8vIElmIHRoZSBvbWlzc2lvbiBpcyBzdXJlbHkgaW50ZW50aW9uYWwgdGhhdCBpdCBzaG91bGQgaW5jdXIgemVybyBjb3N0LgotICAgIGNvbnN0IGJvb2wgaXNaZXJvQ29zdE9taXNzaW9uID0gZGljTm9kZS0+aXNaZXJvQ29zdE9taXNzaW9uKCk7CiAgICAgRGljTm9kZVZlY3RvciBjaGlsZERpY05vZGVzOwotCiAgICAgRGljTm9kZVV0aWxzOjpnZXRBbGxDaGlsZERpY05vZGVzKGRpY05vZGUsIHRyYXZlcnNlU2Vzc2lvbi0+Z2V0T2Zmc2V0RGljdCgpLCAmY2hpbGREaWNOb2Rlcyk7CiAKICAgICBjb25zdCBpbnQgc2l6ZSA9IGNoaWxkRGljTm9kZXMuZ2V0U2l6ZUFuZExvY2soKTsKICAgICBmb3IgKGludCBpID0gMDsgaSA8IHNpemU7IGkrKykgewogICAgICAgICBEaWNOb2RlICpjb25zdCBjaGlsZERpY05vZGUgPSBjaGlsZERpY05vZGVzW2ldOwotICAgICAgICBpZiAoIWlzWmVyb0Nvc3RPbWlzc2lvbikgewotICAgICAgICAgICAgLy8gVHJlYXQgdGhpcyB3b3JkIGFzIG9taXNzaW9uCi0gICAgICAgICAgICBXZWlnaHRpbmc6OmFkZENvc3RBbmRGb3J3YXJkSW5wdXRJbmRleChXRUlHSFRJTkcsIENUX09NSVNTSU9OLCB0cmF2ZXJzZVNlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgIGRpY05vZGUsIGNoaWxkRGljTm9kZSwgMCAvKiBiaWdyYW1DYWNoZU1hcCAqLyk7Ci0gICAgICAgIH0KKyAgICAgICAgLy8gVHJlYXQgdGhpcyB3b3JkIGFzIG9taXNzaW9uCisgICAgICAgIFdlaWdodGluZzo6YWRkQ29zdEFuZEZvcndhcmRJbnB1dEluZGV4KFdFSUdIVElORywgQ1RfT01JU1NJT04sIHRyYXZlcnNlU2Vzc2lvbiwKKyAgICAgICAgICAgICAgICBkaWNOb2RlLCBjaGlsZERpY05vZGUsIDAgLyogbXVsdGlCaWdyYW1NYXAgKi8pOwogICAgICAgICB3ZWlnaHRDaGlsZE5vZGUodHJhdmVyc2VTZXNzaW9uLCBjaGlsZERpY05vZGUpOwogCiAgICAgICAgIGlmICghVFJBVkVSU0FMLT5pc1Bvc3NpYmxlT21pc3Npb25DaGlsZE5vZGUodHJhdmVyc2VTZXNzaW9uLCBkaWNOb2RlLCBjaGlsZERpY05vZGUpKSB7CkBAIC00NTksNyArNDU4LDcgQEAKICAgICBmb3IgKGludCBpID0gMDsgaSA8IHNpemU7IGkrKykgewogICAgICAgICBEaWNOb2RlICpjb25zdCBjaGlsZERpY05vZGUgPSBjaGlsZERpY05vZGVzW2ldOwogICAgICAgICBXZWlnaHRpbmc6OmFkZENvc3RBbmRGb3J3YXJkSW5wdXRJbmRleChXRUlHSFRJTkcsIENUX0lOU0VSVElPTiwgdHJhdmVyc2VTZXNzaW9uLAotICAgICAgICAgICAgICAgIGRpY05vZGUsIGNoaWxkRGljTm9kZSwgMCAvKiBiaWdyYW1DYWNoZU1hcCAqLyk7CisgICAgICAgICAgICAgICAgZGljTm9kZSwgY2hpbGREaWNOb2RlLCAwIC8qIG11bHRpQmlncmFtTWFwICovKTsKICAgICAgICAgcHJvY2Vzc0V4cGFuZGVkRGljTm9kZSh0cmF2ZXJzZVNlc3Npb24sIGNoaWxkRGljTm9kZSk7CiAgICAgfQogfQpAQCAtNDg0LDcgKzQ4Myw3IEBACiAgICAgICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IGNoaWxkU2l6ZTI7IGorKykgewogICAgICAgICAgICAgICAgIERpY05vZGUgKmNvbnN0IGNoaWxkRGljTm9kZTIgPSBjaGlsZERpY05vZGVzMltqXTsKICAgICAgICAgICAgICAgICBXZWlnaHRpbmc6OmFkZENvc3RBbmRGb3J3YXJkSW5wdXRJbmRleChXRUlHSFRJTkcsIENUX1RSQU5TUE9TSVRJT04sCi0gICAgICAgICAgICAgICAgICAgICAgICB0cmF2ZXJzZVNlc3Npb24sIGNoaWxkRGljTm9kZXMxW2ldLCBjaGlsZERpY05vZGUyLCAwIC8qIGJpZ3JhbUNhY2hlTWFwICovKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRyYXZlcnNlU2Vzc2lvbiwgY2hpbGREaWNOb2RlczFbaV0sIGNoaWxkRGljTm9kZTIsIDAgLyogbXVsdGlCaWdyYW1NYXAgKi8pOwogICAgICAgICAgICAgICAgIHByb2Nlc3NFeHBhbmRlZERpY05vZGUodHJhdmVyc2VTZXNzaW9uLCBjaGlsZERpY05vZGUyKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtNDk5LDEwICs0OTgsMTAgQEAKICAgICBjb25zdCBpbnQgaW5wdXRTaXplID0gdHJhdmVyc2VTZXNzaW9uLT5nZXRJbnB1dFNpemUoKTsKICAgICBpZiAoZGljTm9kZS0+aXNDb21wbGV0aW9uKGlucHV0U2l6ZSkpIHsKICAgICAgICAgV2VpZ2h0aW5nOjphZGRDb3N0QW5kRm9yd2FyZElucHV0SW5kZXgoV0VJR0hUSU5HLCBDVF9DT01QTEVUSU9OLCB0cmF2ZXJzZVNlc3Npb24sCi0gICAgICAgICAgICAgICAgMCAvKiBwYXJlbnREaWNOb2RlICovLCBkaWNOb2RlLCAwIC8qIGJpZ3JhbUNhY2hlTWFwICovKTsKKyAgICAgICAgICAgICAgICAwIC8qIHBhcmVudERpY05vZGUgKi8sIGRpY05vZGUsIDAgLyogbXVsdGlCaWdyYW1NYXAgKi8pOwogICAgIH0gZWxzZSB7IC8vIGNvbXBsZXRpb24KICAgICAgICAgV2VpZ2h0aW5nOjphZGRDb3N0QW5kRm9yd2FyZElucHV0SW5kZXgoV0VJR0hUSU5HLCBDVF9NQVRDSCwgdHJhdmVyc2VTZXNzaW9uLAotICAgICAgICAgICAgICAgIDAgLyogcGFyZW50RGljTm9kZSAqLywgZGljTm9kZSwgMCAvKiBiaWdyYW1DYWNoZU1hcCAqLyk7CisgICAgICAgICAgICAgICAgMCAvKiBwYXJlbnREaWNOb2RlICovLCBkaWNOb2RlLCAwIC8qIG11bHRpQmlncmFtTWFwICovKTsKICAgICB9CiB9CiAKQEAgLTUyMyw3ICs1MjIsNyBAQAogICAgIGNvbnN0IENvcnJlY3Rpb25UeXBlIGNvcnJlY3Rpb25UeXBlID0gc3BhY2VTdWJzdGl0dXRpb24gPwogICAgICAgICAgICAgQ1RfTkVXX1dPUkRfU1BBQ0VfU1VCU1RJVFVUSU9OIDogQ1RfTkVXX1dPUkRfU1BBQ0VfT01JVFRJT047CiAgICAgV2VpZ2h0aW5nOjphZGRDb3N0QW5kRm9yd2FyZElucHV0SW5kZXgoV0VJR0hUSU5HLCBjb3JyZWN0aW9uVHlwZSwgdHJhdmVyc2VTZXNzaW9uLCBkaWNOb2RlLAotICAgICAgICAgICAgJm5ld0RpY05vZGUsIHRyYXZlcnNlU2Vzc2lvbi0+Z2V0QmlncmFtQ2FjaGVNYXAoKSk7CisgICAgICAgICAgICAmbmV3RGljTm9kZSwgdHJhdmVyc2VTZXNzaW9uLT5nZXRNdWx0aUJpZ3JhbU1hcCgpKTsKICAgICB0cmF2ZXJzZVNlc3Npb24tPmdldERpY1RyYXZlcnNlQ2FjaGUoKS0+Y29weVB1c2hOZXh0QWN0aXZlKCZuZXdEaWNOb2RlKTsKIH0KIH0gLy8gbmFtZXNwYWNlIGxhdGluaW1lCmRpZmYgLS1naXQgYS9uYXRpdmUvam5pL3NyYy9zdWdnZXN0L3BvbGljeWltcGwvdHlwaW5nL3Njb3JpbmdfcGFyYW1zLmNwcCBiL25hdGl2ZS9qbmkvc3JjL3N1Z2dlc3QvcG9saWN5aW1wbC90eXBpbmcvc2NvcmluZ19wYXJhbXMuY3BwCmluZGV4IDBmYTY4NGYuLmY4Nzk4OTIgMTAwNjQ0Ci0tLSBhL25hdGl2ZS9qbmkvc3JjL3N1Z2dlc3QvcG9saWN5aW1wbC90eXBpbmcvc2NvcmluZ19wYXJhbXMuY3BwCisrKyBiL25hdGl2ZS9qbmkvc3JjL3N1Z2dlc3QvcG9saWN5aW1wbC90eXBpbmcvc2NvcmluZ19wYXJhbXMuY3BwCkBAIC0yOCwyNSArMjgsMjUgQEAKIGNvbnN0IGZsb2F0IFNjb3JpbmdQYXJhbXM6OkRJU1RBTkNFX1dFSUdIVF9MRU5HVEggPSAwLjEzMmY7CiBjb25zdCBmbG9hdCBTY29yaW5nUGFyYW1zOjpQUk9YSU1JVFlfQ09TVCA9IDAuMDg2ZjsKIGNvbnN0IGZsb2F0IFNjb3JpbmdQYXJhbXM6OkZJUlNUX1BST1hJTUlUWV9DT1NUID0gMC4xMDRmOwotY29uc3QgZmxvYXQgU2NvcmluZ1BhcmFtczo6T01JU1NJT05fQ09TVCA9IDAuMzg4ZjsKLWNvbnN0IGZsb2F0IFNjb3JpbmdQYXJhbXM6Ok9NSVNTSU9OX0NPU1RfU0FNRV9DSEFSID0gMC40MzFmOwotY29uc3QgZmxvYXQgU2NvcmluZ1BhcmFtczo6T01JU1NJT05fQ09TVF9GSVJTVF9DSEFSID0gMC41MzJmOwotY29uc3QgZmxvYXQgU2NvcmluZ1BhcmFtczo6SU5TRVJUSU9OX0NPU1QgPSAwLjY3MGY7Ci1jb25zdCBmbG9hdCBTY29yaW5nUGFyYW1zOjpJTlNFUlRJT05fQ09TVF9TQU1FX0NIQVIgPSAwLjUyNmY7Ci1jb25zdCBmbG9hdCBTY29yaW5nUGFyYW1zOjpJTlNFUlRJT05fQ09TVF9GSVJTVF9DSEFSID0gMC41NjNmOwotY29uc3QgZmxvYXQgU2NvcmluZ1BhcmFtczo6VFJBTlNQT1NJVElPTl9DT1NUID0gMC40OTRmOwotY29uc3QgZmxvYXQgU2NvcmluZ1BhcmFtczo6U1BBQ0VfU1VCU1RJVFVUSU9OX0NPU1QgPSAwLjIzOWY7Citjb25zdCBmbG9hdCBTY29yaW5nUGFyYW1zOjpPTUlTU0lPTl9DT1NUID0gMC40NThmOworY29uc3QgZmxvYXQgU2NvcmluZ1BhcmFtczo6T01JU1NJT05fQ09TVF9TQU1FX0NIQVIgPSAwLjQ5MWY7Citjb25zdCBmbG9hdCBTY29yaW5nUGFyYW1zOjpPTUlTU0lPTl9DT1NUX0ZJUlNUX0NIQVIgPSAwLjU4MmY7Citjb25zdCBmbG9hdCBTY29yaW5nUGFyYW1zOjpJTlNFUlRJT05fQ09TVCA9IDAuNzMwZjsKK2NvbnN0IGZsb2F0IFNjb3JpbmdQYXJhbXM6OklOU0VSVElPTl9DT1NUX1NBTUVfQ0hBUiA9IDAuNTg2ZjsKK2NvbnN0IGZsb2F0IFNjb3JpbmdQYXJhbXM6OklOU0VSVElPTl9DT1NUX0ZJUlNUX0NIQVIgPSAwLjYyM2Y7Citjb25zdCBmbG9hdCBTY29yaW5nUGFyYW1zOjpUUkFOU1BPU0lUSU9OX0NPU1QgPSAwLjUxNmY7Citjb25zdCBmbG9hdCBTY29yaW5nUGFyYW1zOjpTUEFDRV9TVUJTVElUVVRJT05fQ09TVCA9IDAuMzE5ZjsKIGNvbnN0IGZsb2F0IFNjb3JpbmdQYXJhbXM6OkFERElUSU9OQUxfUFJPWElNSVRZX0NPU1QgPSAwLjM4MGY7Ci1jb25zdCBmbG9hdCBTY29yaW5nUGFyYW1zOjpTVUJTVElUVVRJT05fQ09TVCA9IDAuMzYzZjsKLWNvbnN0IGZsb2F0IFNjb3JpbmdQYXJhbXM6OkNPU1RfTkVXX1dPUkQgPSAwLjA1NGY7Ci1jb25zdCBmbG9hdCBTY29yaW5nUGFyYW1zOjpDT1NUX05FV19XT1JEX0NBUElUQUxJWkVEID0gMC4xNzRmOworY29uc3QgZmxvYXQgU2NvcmluZ1BhcmFtczo6U1VCU1RJVFVUSU9OX0NPU1QgPSAwLjQwM2Y7Citjb25zdCBmbG9hdCBTY29yaW5nUGFyYW1zOjpDT1NUX05FV19XT1JEID0gMC4wNDJmOworY29uc3QgZmxvYXQgU2NvcmluZ1BhcmFtczo6Q09TVF9TRUNPTkRfT1JfTEFURVJfV09SRF9GSVJTVF9DSEFSX1VQUEVSQ0FTRSA9IDAuMjVmOwogY29uc3QgZmxvYXQgU2NvcmluZ1BhcmFtczo6RElTVEFOQ0VfV0VJR0hUX0xBTkdVQUdFID0gMS4xMjNmOwotY29uc3QgZmxvYXQgU2NvcmluZ1BhcmFtczo6Q09TVF9GSVJTVF9MT09LQUhFQUQgPSAwLjQ2MmY7Ci1jb25zdCBmbG9hdCBTY29yaW5nUGFyYW1zOjpDT1NUX0xPT0tBSEVBRCA9IDAuMDkyZjsKLWNvbnN0IGZsb2F0IFNjb3JpbmdQYXJhbXM6OkhBU19QUk9YSU1JVFlfVEVSTUlOQUxfQ09TVCA9IDAuMTI2ZjsKLWNvbnN0IGZsb2F0IFNjb3JpbmdQYXJhbXM6OkhBU19FRElUX0NPUlJFQ1RJT05fVEVSTUlOQUxfQ09TVCA9IDAuMDU2ZjsKLWNvbnN0IGZsb2F0IFNjb3JpbmdQYXJhbXM6OkhBU19NVUxUSV9XT1JEX1RFUk1JTkFMX0NPU1QgPSAwLjEzNmY7Citjb25zdCBmbG9hdCBTY29yaW5nUGFyYW1zOjpDT1NUX0ZJUlNUX0xPT0tBSEVBRCA9IDAuNTQ1ZjsKK2NvbnN0IGZsb2F0IFNjb3JpbmdQYXJhbXM6OkNPU1RfTE9PS0FIRUFEID0gMC4wNzNmOworY29uc3QgZmxvYXQgU2NvcmluZ1BhcmFtczo6SEFTX1BST1hJTUlUWV9URVJNSU5BTF9DT1NUID0gMC4xMDVmOworY29uc3QgZmxvYXQgU2NvcmluZ1BhcmFtczo6SEFTX0VESVRfQ09SUkVDVElPTl9URVJNSU5BTF9DT1NUID0gMC4wMzhmOworY29uc3QgZmxvYXQgU2NvcmluZ1BhcmFtczo6SEFTX01VTFRJX1dPUkRfVEVSTUlOQUxfQ09TVCA9IDAuNDQ0ZjsKIGNvbnN0IGZsb2F0IFNjb3JpbmdQYXJhbXM6OlRZUElOR19CQVNFX09VVFBVVF9TQ09SRSA9IDEuMGY7CiBjb25zdCBmbG9hdCBTY29yaW5nUGFyYW1zOjpUWVBJTkdfTUFYX09VVFBVVF9TQ09SRV9QRVJfSU5QVVQgPSAwLjFmOwotY29uc3QgZmxvYXQgU2NvcmluZ1BhcmFtczo6TUFYX05PUk1fRElTVEFOQ0VfRk9SX0VESVQgPSAwLjFmOworY29uc3QgZmxvYXQgU2NvcmluZ1BhcmFtczo6Tk9STUFMSVpFRF9TUEFUSUFMX0RJU1RBTkNFX1RIUkVTSE9MRF9GT1JfRURJVCA9IDAuMDZmOwogfSAvLyBuYW1lc3BhY2UgbGF0aW5pbWUKZGlmZiAtLWdpdCBhL25hdGl2ZS9qbmkvc3JjL3N1Z2dlc3QvcG9saWN5aW1wbC90eXBpbmcvc2NvcmluZ19wYXJhbXMuaCBiL25hdGl2ZS9qbmkvc3JjL3N1Z2dlc3QvcG9saWN5aW1wbC90eXBpbmcvc2NvcmluZ19wYXJhbXMuaAppbmRleCA4ZjEwNGIzLi41M2FjOTk5IDEwMDY0NAotLS0gYS9uYXRpdmUvam5pL3NyYy9zdWdnZXN0L3BvbGljeWltcGwvdHlwaW5nL3Njb3JpbmdfcGFyYW1zLmgKKysrIGIvbmF0aXZlL2puaS9zcmMvc3VnZ2VzdC9wb2xpY3lpbXBsL3R5cGluZy9zY29yaW5nX3BhcmFtcy5oCkBAIC00OCw3ICs0OCw3IEBACiAgICAgc3RhdGljIGNvbnN0IGZsb2F0IEFERElUSU9OQUxfUFJPWElNSVRZX0NPU1Q7CiAgICAgc3RhdGljIGNvbnN0IGZsb2F0IFNVQlNUSVRVVElPTl9DT1NUOwogICAgIHN0YXRpYyBjb25zdCBmbG9hdCBDT1NUX05FV19XT1JEOwotICAgIHN0YXRpYyBjb25zdCBmbG9hdCBDT1NUX05FV19XT1JEX0NBUElUQUxJWkVEOworICAgIHN0YXRpYyBjb25zdCBmbG9hdCBDT1NUX1NFQ09ORF9PUl9MQVRFUl9XT1JEX0ZJUlNUX0NIQVJfVVBQRVJDQVNFOwogICAgIHN0YXRpYyBjb25zdCBmbG9hdCBESVNUQU5DRV9XRUlHSFRfTEFOR1VBR0U7CiAgICAgc3RhdGljIGNvbnN0IGZsb2F0IENPU1RfRklSU1RfTE9PS0FIRUFEOwogICAgIHN0YXRpYyBjb25zdCBmbG9hdCBDT1NUX0xPT0tBSEVBRDsKQEAgLTU3LDcgKzU3LDcgQEAKICAgICBzdGF0aWMgY29uc3QgZmxvYXQgSEFTX01VTFRJX1dPUkRfVEVSTUlOQUxfQ09TVDsKICAgICBzdGF0aWMgY29uc3QgZmxvYXQgVFlQSU5HX0JBU0VfT1VUUFVUX1NDT1JFOwogICAgIHN0YXRpYyBjb25zdCBmbG9hdCBUWVBJTkdfTUFYX09VVFBVVF9TQ09SRV9QRVJfSU5QVVQ7Ci0gICAgc3RhdGljIGNvbnN0IGZsb2F0IE1BWF9OT1JNX0RJU1RBTkNFX0ZPUl9FRElUOworICAgIHN0YXRpYyBjb25zdCBmbG9hdCBOT1JNQUxJWkVEX1NQQVRJQUxfRElTVEFOQ0VfVEhSRVNIT0xEX0ZPUl9FRElUOwogCiAgcHJpdmF0ZToKICAgICBESVNBTExPV19JTVBMSUNJVF9DT05TVFJVQ1RPUlMoU2NvcmluZ1BhcmFtcyk7CmRpZmYgLS1naXQgYS9uYXRpdmUvam5pL3NyYy9zdWdnZXN0L3BvbGljeWltcGwvdHlwaW5nL3R5cGluZ190cmF2ZXJzYWwuaCBiL25hdGl2ZS9qbmkvc3JjL3N1Z2dlc3QvcG9saWN5aW1wbC90eXBpbmcvdHlwaW5nX3RyYXZlcnNhbC5oCmluZGV4IDlmODM0NzQuLjEyMTEwZDUgMTAwNjQ0Ci0tLSBhL25hdGl2ZS9qbmkvc3JjL3N1Z2dlc3QvcG9saWN5aW1wbC90eXBpbmcvdHlwaW5nX3RyYXZlcnNhbC5oCisrKyBiL25hdGl2ZS9qbmkvc3JjL3N1Z2dlc3QvcG9saWN5aW1wbC90eXBpbmcvdHlwaW5nX3RyYXZlcnNhbC5oCkBAIC0zOSwxNCArMzksMjEgQEAKIAogICAgIEFLX0ZPUkNFX0lOTElORSBib29sIGFsbG93c0Vycm9yQ29ycmVjdGlvbnMoY29uc3QgRGljTm9kZSAqY29uc3QgZGljTm9kZSkgY29uc3QgewogICAgICAgICByZXR1cm4gZGljTm9kZS0+Z2V0Tm9ybWFsaXplZFNwYXRpYWxEaXN0YW5jZSgpCi0gICAgICAgICAgICAgICAgPCBTY29yaW5nUGFyYW1zOjpNQVhfTk9STV9ESVNUQU5DRV9GT1JfRURJVDsKKyAgICAgICAgICAgICAgICA8IFNjb3JpbmdQYXJhbXM6Ok5PUk1BTElaRURfU1BBVElBTF9ESVNUQU5DRV9USFJFU0hPTERfRk9SX0VESVQ7CiAgICAgfQogCiAgICAgQUtfRk9SQ0VfSU5MSU5FIGJvb2wgaXNPbWlzc2lvbihjb25zdCBEaWNUcmF2ZXJzZVNlc3Npb24gKmNvbnN0IHRyYXZlcnNlU2Vzc2lvbiwKLSAgICAgICAgICAgIGNvbnN0IERpY05vZGUgKmNvbnN0IGRpY05vZGUsIGNvbnN0IERpY05vZGUgKmNvbnN0IGNoaWxkRGljTm9kZSkgY29uc3QgeworICAgICAgICAgICAgY29uc3QgRGljTm9kZSAqY29uc3QgZGljTm9kZSwgY29uc3QgRGljTm9kZSAqY29uc3QgY2hpbGREaWNOb2RlLAorICAgICAgICAgICAgY29uc3QgYm9vbCBhbGxvd3NFcnJvckNvcnJlY3Rpb25zKSBjb25zdCB7CiAgICAgICAgIGlmICghQ09SUkVDVF9PTUlTU0lPTikgewogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CisgICAgICAgIC8vIE5vdGU6IEFsd2F5cyBjb25zaWRlciBpbnRlbnRpb25hbCBvbWlzc2lvbnMgKGxpa2UgYXBvc3Ryb3BoZXMpIHNpbmNlIHRoZXkgYXJlIGNvbW1vbi4KKyAgICAgICAgY29uc3QgYm9vbCBjYW5Db25zaWRlck9taXNzaW9uID0KKyAgICAgICAgICAgICAgICBhbGxvd3NFcnJvckNvcnJlY3Rpb25zIHx8IGNoaWxkRGljTm9kZS0+Y2FuQmVJbnRlbnRpb25hbE9taXNzaW9uKCk7CisgICAgICAgIGlmICghY2FuQ29uc2lkZXJPbWlzc2lvbikgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CiAgICAgICAgIGNvbnN0IGludCBpbnB1dFNpemUgPSB0cmF2ZXJzZVNlc3Npb24tPmdldElucHV0U2l6ZSgpOwogICAgICAgICAvLyBUT0RPOiBEb24ndCByZWZlciB0byBpc0NvbXBsZXRpb24/CiAgICAgICAgIGlmIChkaWNOb2RlLT5pc0NvbXBsZXRpb24oaW5wdXRTaXplKSkgewpkaWZmIC0tZ2l0IGEvbmF0aXZlL2puaS9zcmMvc3VnZ2VzdC9wb2xpY3lpbXBsL3R5cGluZy90eXBpbmdfd2VpZ2h0aW5nLmNwcCBiL25hdGl2ZS9qbmkvc3JjL3N1Z2dlc3QvcG9saWN5aW1wbC90eXBpbmcvdHlwaW5nX3dlaWdodGluZy5jcHAKaW5kZXggMTUwMDM0MS4uZTRjNjlkMSAxMDA2NDQKLS0tIGEvbmF0aXZlL2puaS9zcmMvc3VnZ2VzdC9wb2xpY3lpbXBsL3R5cGluZy90eXBpbmdfd2VpZ2h0aW5nLmNwcAorKysgYi9uYXRpdmUvam5pL3NyYy9zdWdnZXN0L3BvbGljeWltcGwvdHlwaW5nL3R5cGluZ193ZWlnaHRpbmcuY3BwCkBAIC0yMCw1ICsyMCw0MSBAQAogI2luY2x1ZGUgInN1Z2dlc3QvcG9saWN5aW1wbC90eXBpbmcvc2NvcmluZ19wYXJhbXMuaCIKIAogbmFtZXNwYWNlIGxhdGluaW1lIHsKKwogY29uc3QgVHlwaW5nV2VpZ2h0aW5nIFR5cGluZ1dlaWdodGluZzo6c0luc3RhbmNlOworCitFcnJvclR5cGUgVHlwaW5nV2VpZ2h0aW5nOjpnZXRFcnJvclR5cGUoY29uc3QgQ29ycmVjdGlvblR5cGUgY29ycmVjdGlvblR5cGUsCisgICAgICAgIGNvbnN0IERpY1RyYXZlcnNlU2Vzc2lvbiAqY29uc3QgdHJhdmVyc2VTZXNzaW9uLCBjb25zdCBEaWNOb2RlICpjb25zdCBwYXJlbnREaWNOb2RlLAorICAgICAgICBjb25zdCBEaWNOb2RlICpjb25zdCBkaWNOb2RlKSBjb25zdCB7CisgICAgc3dpdGNoIChjb3JyZWN0aW9uVHlwZSkgeworICAgICAgICBjYXNlIENUX01BVENIOgorICAgICAgICAgICAgaWYgKGlzUHJveGltaXR5RGljTm9kZSh0cmF2ZXJzZVNlc3Npb24sIGRpY05vZGUpKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIEVUX1BST1hJTUlUWV9DT1JSRUNUSU9OOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gRVRfTk9UX0FOX0VSUk9SOworICAgICAgICAgICAgfQorICAgICAgICBjYXNlIENUX0FERElUSU9OQUxfUFJPWElNSVRZOgorICAgICAgICAgICAgcmV0dXJuIEVUX1BST1hJTUlUWV9DT1JSRUNUSU9OOworICAgICAgICBjYXNlIENUX09NSVNTSU9OOgorICAgICAgICAgICAgaWYgKHBhcmVudERpY05vZGUtPmNhbkJlSW50ZW50aW9uYWxPbWlzc2lvbigpKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIEVUX0lOVEVOVElPTkFMX09NSVNTSU9OOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gRVRfRURJVF9DT1JSRUNUSU9OOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ1RfU1VCU1RJVFVUSU9OOgorICAgICAgICBjYXNlIENUX0lOU0VSVElPTjoKKyAgICAgICAgY2FzZSBDVF9UUkFOU1BPU0lUSU9OOgorICAgICAgICAgICAgcmV0dXJuIEVUX0VESVRfQ09SUkVDVElPTjsKKyAgICAgICAgY2FzZSBDVF9ORVdfV09SRF9TUEFDRV9PTUlUVElPTjoKKyAgICAgICAgY2FzZSBDVF9ORVdfV09SRF9TUEFDRV9TVUJTVElUVVRJT046CisgICAgICAgICAgICByZXR1cm4gRVRfTkVXX1dPUkQ7CisgICAgICAgIGNhc2UgQ1RfVEVSTUlOQUw6CisgICAgICAgICAgICByZXR1cm4gRVRfTk9UX0FOX0VSUk9SOworICAgICAgICBjYXNlIENUX0NPTVBMRVRJT046CisgICAgICAgICAgICByZXR1cm4gRVRfQ09NUExFVElPTjsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBFVF9OT1RfQU5fRVJST1I7CisgICAgfQorfQogfSAgLy8gbmFtZXNwYWNlIGxhdGluaW1lCmRpZmYgLS1naXQgYS9uYXRpdmUvam5pL3NyYy9zdWdnZXN0L3BvbGljeWltcGwvdHlwaW5nL3R5cGluZ193ZWlnaHRpbmcuaCBiL25hdGl2ZS9qbmkvc3JjL3N1Z2dlc3QvcG9saWN5aW1wbC90eXBpbmcvdHlwaW5nX3dlaWdodGluZy5oCmluZGV4IDc0ZTRlMzQuLjM5MzhjMGUgMTAwNjQ0Ci0tLSBhL25hdGl2ZS9qbmkvc3JjL3N1Z2dlc3QvcG9saWN5aW1wbC90eXBpbmcvdHlwaW5nX3dlaWdodGluZy5oCisrKyBiL25hdGl2ZS9qbmkvc3JjL3N1Z2dlc3QvcG9saWN5aW1wbC90eXBpbmcvdHlwaW5nX3dlaWdodGluZy5oCkBAIC0yOCwxNCArMjgsMTUgQEAKIAogY2xhc3MgRGljTm9kZTsKIHN0cnVjdCBEaWNOb2RlX0lucHV0U3RhdGVHOworY2xhc3MgTXVsdGlCaWdyYW1NYXA7CiAKIGNsYXNzIFR5cGluZ1dlaWdodGluZyA6IHB1YmxpYyBXZWlnaHRpbmcgewogIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgVHlwaW5nV2VpZ2h0aW5nICpnZXRJbnN0YW5jZSgpIHsgcmV0dXJuICZzSW5zdGFuY2U7IH0KIAogIHByb3RlY3RlZDoKLSAgICBmbG9hdCBnZXRUZXJtaW5hbFNwYXRpYWxDb3N0KAotICAgICAgICAgICAgY29uc3QgRGljVHJhdmVyc2VTZXNzaW9uICpjb25zdCB0cmF2ZXJzZVNlc3Npb24sIGNvbnN0IERpY05vZGUgKmNvbnN0IGRpY05vZGUpIGNvbnN0IHsKKyAgICBmbG9hdCBnZXRUZXJtaW5hbFNwYXRpYWxDb3N0KGNvbnN0IERpY1RyYXZlcnNlU2Vzc2lvbiAqY29uc3QgdHJhdmVyc2VTZXNzaW9uLAorICAgICAgICAgICAgY29uc3QgRGljTm9kZSAqY29uc3QgZGljTm9kZSkgY29uc3QgewogICAgICAgICBmbG9hdCBjb3N0ID0gMC4wZjsKICAgICAgICAgaWYgKGRpY05vZGUtPmhhc011bHRpcGxlV29yZHMoKSkgewogICAgICAgICAgICAgY29zdCArPSBTY29yaW5nUGFyYW1zOjpIQVNfTVVMVElfV09SRF9URVJNSU5BTF9DT1NUOwpAQCAtNTAsMTMgKzUxLDE0IEBACiAgICAgfQogCiAgICAgZmxvYXQgZ2V0T21pc3Npb25Db3N0KGNvbnN0IERpY05vZGUgKmNvbnN0IHBhcmVudERpY05vZGUsIGNvbnN0IERpY05vZGUgKmNvbnN0IGRpY05vZGUpIGNvbnN0IHsKLSAgICAgICAgYm9vbCBzYW1lQ29kZVBvaW50ID0gZmFsc2U7Ci0gICAgICAgIGJvb2wgaXNGaXJzdExldHRlck9taXNzaW9uID0gZmFsc2U7Ci0gICAgICAgIGZsb2F0IGNvc3QgPSAwLjBmOwotICAgICAgICBzYW1lQ29kZVBvaW50ID0gZGljTm9kZS0+aXNTYW1lTm9kZUNvZGVQb2ludChwYXJlbnREaWNOb2RlKTsKKyAgICAgICAgY29uc3QgYm9vbCBpc1plcm9Db3N0T21pc3Npb24gPSBwYXJlbnREaWNOb2RlLT5pc1plcm9Db3N0T21pc3Npb24oKTsKKyAgICAgICAgY29uc3QgYm9vbCBzYW1lQ29kZVBvaW50ID0gZGljTm9kZS0+aXNTYW1lTm9kZUNvZGVQb2ludChwYXJlbnREaWNOb2RlKTsKICAgICAgICAgLy8gSWYgdGhlIHRyYXZlcnNhbCBvbWl0dGVkIHRoZSBmaXJzdCBsZXR0ZXIgdGhlbiB0aGUgZGljTm9kZSBzaG91bGQgbm93IGJlIG9uIHRoZSBzZWNvbmQuCi0gICAgICAgIGlzRmlyc3RMZXR0ZXJPbWlzc2lvbiA9IGRpY05vZGUtPmdldERlcHRoKCkgPT0gMjsKLSAgICAgICAgaWYgKGlzRmlyc3RMZXR0ZXJPbWlzc2lvbikgeworICAgICAgICBjb25zdCBib29sIGlzRmlyc3RMZXR0ZXJPbWlzc2lvbiA9IGRpY05vZGUtPmdldERlcHRoKCkgPT0gMjsKKyAgICAgICAgZmxvYXQgY29zdCA9IDAuMGY7CisgICAgICAgIGlmIChpc1plcm9Db3N0T21pc3Npb24pIHsKKyAgICAgICAgICAgIGNvc3QgPSAwLjBmOworICAgICAgICB9IGVsc2UgaWYgKGlzRmlyc3RMZXR0ZXJPbWlzc2lvbikgewogICAgICAgICAgICAgY29zdCA9IFNjb3JpbmdQYXJhbXM6Ok9NSVNTSU9OX0NPU1RfRklSU1RfQ0hBUjsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGNvc3QgPSBzYW1lQ29kZVBvaW50ID8gU2NvcmluZ1BhcmFtczo6T01JU1NJT05fQ09TVF9TQU1FX0NIQVIKQEAgLTY1LDkgKzY3LDggQEAKICAgICAgICAgcmV0dXJuIGNvc3Q7CiAgICAgfQogCi0gICAgZmxvYXQgZ2V0TWF0Y2hlZENvc3QoCi0gICAgICAgICAgICBjb25zdCBEaWNUcmF2ZXJzZVNlc3Npb24gKmNvbnN0IHRyYXZlcnNlU2Vzc2lvbiwgY29uc3QgRGljTm9kZSAqY29uc3QgZGljTm9kZSwKLSAgICAgICAgICAgIERpY05vZGVfSW5wdXRTdGF0ZUcgKmlucHV0U3RhdGVHKSBjb25zdCB7CisgICAgZmxvYXQgZ2V0TWF0Y2hlZENvc3QoY29uc3QgRGljVHJhdmVyc2VTZXNzaW9uICpjb25zdCB0cmF2ZXJzZVNlc3Npb24sCisgICAgICAgICAgICBjb25zdCBEaWNOb2RlICpjb25zdCBkaWNOb2RlLCBEaWNOb2RlX0lucHV0U3RhdGVHICppbnB1dFN0YXRlRykgY29uc3QgewogICAgICAgICBjb25zdCBpbnQgcG9pbnRJbmRleCA9IGRpY05vZGUtPmdldElucHV0SW5kZXgoMCk7CiAgICAgICAgIC8vIE5vdGU6IG1pbigpIHJlcXVpcmVkIHNpbmNlIGxlbmd0aCBjYW4gYmUgTUFYX1BPSU5UX1RPX0tFWV9MRU5HVEggZm9yIGNoYXJhY3RlcnMgbm90IG9uCiAgICAgICAgIC8vIHRoZSBrZXlib2FyZCAobGlrZSBhY2NlbnRlZCBsZXR0ZXJzKQpAQCAtNzksMTMgKzgwLDIzIEBACiAKICAgICAgICAgY29uc3QgYm9vbCBpc0ZpcnN0Q2hhciA9IHBvaW50SW5kZXggPT0gMDsKICAgICAgICAgY29uc3QgYm9vbCBpc1Byb3hpbWl0eSA9IGlzUHJveGltaXR5RGljTm9kZSh0cmF2ZXJzZVNlc3Npb24sIGRpY05vZGUpOwotICAgICAgICBjb25zdCBmbG9hdCBjb3N0ID0gaXNQcm94aW1pdHkgPyAoaXNGaXJzdENoYXIgPyBTY29yaW5nUGFyYW1zOjpGSVJTVF9QUk9YSU1JVFlfQ09TVAorICAgICAgICBmbG9hdCBjb3N0ID0gaXNQcm94aW1pdHkgPyAoaXNGaXJzdENoYXIgPyBTY29yaW5nUGFyYW1zOjpGSVJTVF9QUk9YSU1JVFlfQ09TVAogICAgICAgICAgICAgICAgIDogU2NvcmluZ1BhcmFtczo6UFJPWElNSVRZX0NPU1QpIDogMC4wZjsKKyAgICAgICAgaWYgKGRpY05vZGUtPmdldERlcHRoKCkgPT0gMikgeworICAgICAgICAgICAgLy8gQXQgdGhlIHNlY29uZCBjaGFyYWN0ZXIgb2YgdGhlIGN1cnJlbnQgd29yZCwgd2UgY2hlY2sgaWYgdGhlIGZpcnN0IGNoYXIgaXMgdXBwZXJjYXNlCisgICAgICAgICAgICAvLyBhbmQgdGhlIHdvcmQgaXMgYSBzZWNvbmQgb3IgbGF0ZXIgd29yZCBvZiBhIG11bHRpcGxlIHdvcmQgc3VnZ2VzdGlvbi4gV2UgZGVtb3RlIGl0CisgICAgICAgICAgICAvLyBpZiBzby4KKyAgICAgICAgICAgIGNvbnN0IGJvb2wgaXNTZWNvbmRPckxhdGVyV29yZEZpcnN0Q2hhclVwcGVyY2FzZSA9CisgICAgICAgICAgICAgICAgICAgIGRpY05vZGUtPmhhc011bHRpcGxlV29yZHMoKSAmJiBkaWNOb2RlLT5pc0ZpcnN0Q2hhclVwcGVyY2FzZSgpOworICAgICAgICAgICAgaWYgKGlzU2Vjb25kT3JMYXRlcldvcmRGaXJzdENoYXJVcHBlcmNhc2UpIHsKKyAgICAgICAgICAgICAgICBjb3N0ICs9IFNjb3JpbmdQYXJhbXM6OkNPU1RfU0VDT05EX09SX0xBVEVSX1dPUkRfRklSU1RfQ0hBUl9VUFBFUkNBU0U7CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHdlaWdodGVkRGlzdGFuY2UgKyBjb3N0OwogICAgIH0KIAotICAgIGJvb2wgaXNQcm94aW1pdHlEaWNOb2RlKAotICAgICAgICAgICAgY29uc3QgRGljVHJhdmVyc2VTZXNzaW9uICpjb25zdCB0cmF2ZXJzZVNlc3Npb24sIGNvbnN0IERpY05vZGUgKmNvbnN0IGRpY05vZGUpIGNvbnN0IHsKKyAgICBib29sIGlzUHJveGltaXR5RGljTm9kZShjb25zdCBEaWNUcmF2ZXJzZVNlc3Npb24gKmNvbnN0IHRyYXZlcnNlU2Vzc2lvbiwKKyAgICAgICAgICAgIGNvbnN0IERpY05vZGUgKmNvbnN0IGRpY05vZGUpIGNvbnN0IHsKICAgICAgICAgY29uc3QgaW50IHBvaW50SW5kZXggPSBkaWNOb2RlLT5nZXRJbnB1dEluZGV4KDApOwogICAgICAgICBjb25zdCBpbnQgcHJpbWFyeUNvZGVQb2ludCA9IHRvQmFzZUxvd2VyQ2FzZSgKICAgICAgICAgICAgICAgICB0cmF2ZXJzZVNlc3Npb24tPmdldFByb3hpbWl0eUluZm9TdGF0ZSgwKS0+Z2V0UHJpbWFyeUNvZGVQb2ludEF0KHBvaW50SW5kZXgpKTsKQEAgLTkzLDkgKzEwNCw4IEBACiAgICAgICAgIHJldHVybiBwcmltYXJ5Q29kZVBvaW50ICE9IGRpY05vZGVDaGFyOwogICAgIH0KIAotICAgIGZsb2F0IGdldFRyYW5zcG9zaXRpb25Db3N0KAotICAgICAgICAgICAgY29uc3QgRGljVHJhdmVyc2VTZXNzaW9uICpjb25zdCB0cmF2ZXJzZVNlc3Npb24sIGNvbnN0IERpY05vZGUgKmNvbnN0IHBhcmVudERpY05vZGUsCi0gICAgICAgICAgICBjb25zdCBEaWNOb2RlICpjb25zdCBkaWNOb2RlKSBjb25zdCB7CisgICAgZmxvYXQgZ2V0VHJhbnNwb3NpdGlvbkNvc3QoY29uc3QgRGljVHJhdmVyc2VTZXNzaW9uICpjb25zdCB0cmF2ZXJzZVNlc3Npb24sCisgICAgICAgICAgICBjb25zdCBEaWNOb2RlICpjb25zdCBwYXJlbnREaWNOb2RlLCBjb25zdCBEaWNOb2RlICpjb25zdCBkaWNOb2RlKSBjb25zdCB7CiAgICAgICAgIGNvbnN0IGludDE2X3QgcGFyZW50UG9pbnRJbmRleCA9IHBhcmVudERpY05vZGUtPmdldElucHV0SW5kZXgoMCk7CiAgICAgICAgIGNvbnN0IGludCBwcmV2Q29kZVBvaW50ID0gcGFyZW50RGljTm9kZS0+Z2V0Tm9kZUNvZGVQb2ludCgpOwogICAgICAgICBjb25zdCBmbG9hdCBkaXN0YW5jZTEgPSB0cmF2ZXJzZVNlc3Npb24tPmdldFByb3hpbWl0eUluZm9TdGF0ZSgwKS0+Z2V0UG9pbnRUb0tleUxlbmd0aCgKQEAgLTEwOSw4ICsxMTksNyBAQAogICAgICAgICByZXR1cm4gU2NvcmluZ1BhcmFtczo6VFJBTlNQT1NJVElPTl9DT1NUICsgd2VpZ2h0ZWRMZW5ndGhEaXN0YW5jZTsKICAgICB9CiAKLSAgICBmbG9hdCBnZXRJbnNlcnRpb25Db3N0KAotICAgICAgICAgICAgY29uc3QgRGljVHJhdmVyc2VTZXNzaW9uICpjb25zdCB0cmF2ZXJzZVNlc3Npb24sCisgICAgZmxvYXQgZ2V0SW5zZXJ0aW9uQ29zdChjb25zdCBEaWNUcmF2ZXJzZVNlc3Npb24gKmNvbnN0IHRyYXZlcnNlU2Vzc2lvbiwKICAgICAgICAgICAgIGNvbnN0IERpY05vZGUgKmNvbnN0IHBhcmVudERpY05vZGUsIGNvbnN0IERpY05vZGUgKmNvbnN0IGRpY05vZGUpIGNvbnN0IHsKICAgICAgICAgY29uc3QgaW50MTZfdCBwYXJlbnRQb2ludEluZGV4ID0gcGFyZW50RGljTm9kZS0+Z2V0SW5wdXRJbmRleCgwKTsKICAgICAgICAgY29uc3QgaW50IHByZXZDb2RlUG9pbnQgPQpAQCAtMTMwLDE3ICsxMzksMTQgQEAKIAogICAgIGZsb2F0IGdldE5ld1dvcmRDb3N0KGNvbnN0IERpY1RyYXZlcnNlU2Vzc2lvbiAqY29uc3QgdHJhdmVyc2VTZXNzaW9uLAogICAgICAgICAgICAgY29uc3QgRGljTm9kZSAqY29uc3QgZGljTm9kZSkgY29uc3QgewotICAgICAgICBjb25zdCBib29sIGlzQ2FwaXRhbGl6ZWQgPSBkaWNOb2RlLT5pc0NhcGl0YWxpemVkKCk7Ci0gICAgICAgIGNvbnN0IGZsb2F0IGNvc3QgPSBpc0NhcGl0YWxpemVkID8KLSAgICAgICAgICAgICAgICBTY29yaW5nUGFyYW1zOjpDT1NUX05FV19XT1JEX0NBUElUQUxJWkVEIDogU2NvcmluZ1BhcmFtczo6Q09TVF9ORVdfV09SRDsKLSAgICAgICAgcmV0dXJuIGNvc3QgKiB0cmF2ZXJzZVNlc3Npb24tPmdldE11bHRpV29yZENvc3RNdWx0aXBsaWVyKCk7CisgICAgICAgIHJldHVybiBTY29yaW5nUGFyYW1zOjpDT1NUX05FV19XT1JEICogdHJhdmVyc2VTZXNzaW9uLT5nZXRNdWx0aVdvcmRDb3N0TXVsdGlwbGllcigpOwogICAgIH0KIAotICAgIGZsb2F0IGdldE5ld1dvcmRCaWdyYW1Db3N0KAotICAgICAgICAgICAgY29uc3QgRGljVHJhdmVyc2VTZXNzaW9uICpjb25zdCB0cmF2ZXJzZVNlc3Npb24sIGNvbnN0IERpY05vZGUgKmNvbnN0IGRpY05vZGUsCi0gICAgICAgICAgICBoYXNoX21hcF9jb21wYXQ8aW50LCBpbnQxNl90PiAqY29uc3QgYmlncmFtQ2FjaGVNYXApIGNvbnN0IHsKKyAgICBmbG9hdCBnZXROZXdXb3JkQmlncmFtQ29zdChjb25zdCBEaWNUcmF2ZXJzZVNlc3Npb24gKmNvbnN0IHRyYXZlcnNlU2Vzc2lvbiwKKyAgICAgICAgICAgIGNvbnN0IERpY05vZGUgKmNvbnN0IGRpY05vZGUsCisgICAgICAgICAgICBNdWx0aUJpZ3JhbU1hcCAqY29uc3QgbXVsdGlCaWdyYW1NYXApIGNvbnN0IHsKICAgICAgICAgcmV0dXJuIERpY05vZGVVdGlsczo6Z2V0QmlncmFtTm9kZUltcHJvYmFiaWxpdHkodHJhdmVyc2VTZXNzaW9uLT5nZXRPZmZzZXREaWN0KCksCi0gICAgICAgICAgICAgICAgZGljTm9kZSwgYmlncmFtQ2FjaGVNYXApOworICAgICAgICAgICAgICAgIGRpY05vZGUsIG11bHRpQmlncmFtTWFwKSAqIFNjb3JpbmdQYXJhbXM6OkRJU1RBTkNFX1dFSUdIVF9MQU5HVUFHRTsKICAgICB9CiAKICAgICBmbG9hdCBnZXRDb21wbGV0aW9uQ29zdChjb25zdCBEaWNUcmF2ZXJzZVNlc3Npb24gKmNvbnN0IHRyYXZlcnNlU2Vzc2lvbiwKQEAgLTE1NiwyMSArMTYyLDkgQEAKIAogICAgIGZsb2F0IGdldFRlcm1pbmFsTGFuZ3VhZ2VDb3N0KGNvbnN0IERpY1RyYXZlcnNlU2Vzc2lvbiAqY29uc3QgdHJhdmVyc2VTZXNzaW9uLAogICAgICAgICAgICAgY29uc3QgRGljTm9kZSAqY29uc3QgZGljTm9kZSwgY29uc3QgZmxvYXQgZGljTm9kZUxhbmd1YWdlSW1wcm9iYWJpbGl0eSkgY29uc3QgewotICAgICAgICBjb25zdCBib29sIGhhc0VkaXRDb3VudCA9IGRpY05vZGUtPmdldEVkaXRDb3JyZWN0aW9uQ291bnQoKSA+IDA7Ci0gICAgICAgIGNvbnN0IGJvb2wgaXNTYW1lTGVuZ3RoID0gZGljTm9kZS0+Z2V0RGVwdGgoKSA9PSB0cmF2ZXJzZVNlc3Npb24tPmdldElucHV0U2l6ZSgpOwotICAgICAgICBjb25zdCBib29sIGhhc011bHRpcGxlV29yZHMgPSBkaWNOb2RlLT5oYXNNdWx0aXBsZVdvcmRzKCk7Ci0gICAgICAgIGNvbnN0IGJvb2wgaGFzUHJveGltaXR5RXJyb3JzID0gZGljTm9kZS0+Z2V0UHJveGltaXR5Q29ycmVjdGlvbkNvdW50KCkgPiAwOwotICAgICAgICAvLyBHZXN0dXJlIGlucHV0IGlzIGFsd2F5cyBhc3N1bWVkIHRvIGhhdmUgcHJveGltaXR5IGVycm9ycwotICAgICAgICAvLyBiZWNhdXNlIHRoZSBpbnB1dCB3b3JkIHNob3VsZG4ndCBiZSB0cmVhdGVkIGFzIHBlcmZlY3QKLSAgICAgICAgY29uc3QgYm9vbCBpc0V4YWN0TWF0Y2ggPSAhaGFzRWRpdENvdW50ICYmICFoYXNNdWx0aXBsZVdvcmRzCi0gICAgICAgICAgICAgICAgJiYgIWhhc1Byb3hpbWl0eUVycm9ycyAmJiBpc1NhbWVMZW5ndGg7Ci0KLSAgICAgICAgY29uc3QgZmxvYXQgdG90YWxQcmV2V29yZHNMYW5ndWFnZUNvc3QgPSBkaWNOb2RlLT5nZXRUb3RhbFByZXZXb3Jkc0xhbmd1YWdlQ29zdCgpOwotICAgICAgICBjb25zdCBmbG9hdCBsYW5ndWFnZUltcHJvYmFiaWxpdHkgPSBpc0V4YWN0TWF0Y2ggPyAwLjBmIDogZGljTm9kZUxhbmd1YWdlSW1wcm9iYWJpbGl0eTsKLSAgICAgICAgY29uc3QgZmxvYXQgbGFuZ3VhZ2VXZWlnaHQgPSBTY29yaW5nUGFyYW1zOjpESVNUQU5DRV9XRUlHSFRfTEFOR1VBR0U7Ci0gICAgICAgIC8vIFRPRE86IENhdmVhdDogVGhlIGZvbGxvd2luZyBlcXVhdGlvbiBzaG91bGQgYmU6Ci0gICAgICAgIC8vIHRvdGFsUHJldldvcmRzTGFuZ3VhZ2VDb3N0ICsgKGxhbmd1YWdlSW1wcm9iYWJpbGl0eSAqIGxhbmd1YWdlV2VpZ2h0KTsKLSAgICAgICAgcmV0dXJuICh0b3RhbFByZXZXb3Jkc0xhbmd1YWdlQ29zdCArIGxhbmd1YWdlSW1wcm9iYWJpbGl0eSkgKiBsYW5ndWFnZVdlaWdodDsKKyAgICAgICAgY29uc3QgZmxvYXQgbGFuZ3VhZ2VJbXByb2JhYmlsaXR5ID0gKGRpY05vZGUtPmlzRXhhY3RNYXRjaCgpKSA/CisgICAgICAgICAgICAgICAgMC4wZiA6IGRpY05vZGVMYW5ndWFnZUltcHJvYmFiaWxpdHk7CisgICAgICAgIHJldHVybiBsYW5ndWFnZUltcHJvYmFiaWxpdHkgKiBTY29yaW5nUGFyYW1zOjpESVNUQU5DRV9XRUlHSFRfTEFOR1VBR0U7CiAgICAgfQogCiAgICAgQUtfRk9SQ0VfSU5MSU5FIGJvb2wgbmVlZHNUb05vcm1hbGl6ZUNvbXBvdW5kRGlzdGFuY2UoKSBjb25zdCB7CkBAIC0xODUsMTUgKzE3OSwxNiBAQAogICAgICAgICByZXR1cm4gU2NvcmluZ1BhcmFtczo6U1VCU1RJVFVUSU9OX0NPU1Q7CiAgICAgfQogCi0gICAgQUtfRk9SQ0VfSU5MSU5FIGZsb2F0IGdldFNwYWNlU3Vic3RpdHV0aW9uQ29zdCgKLSAgICAgICAgICAgIGNvbnN0IERpY1RyYXZlcnNlU2Vzc2lvbiAqY29uc3QgdHJhdmVyc2VTZXNzaW9uLAorICAgIEFLX0ZPUkNFX0lOTElORSBmbG9hdCBnZXRTcGFjZVN1YnN0aXR1dGlvbkNvc3QoY29uc3QgRGljVHJhdmVyc2VTZXNzaW9uICpjb25zdCB0cmF2ZXJzZVNlc3Npb24sCiAgICAgICAgICAgICBjb25zdCBEaWNOb2RlICpjb25zdCBkaWNOb2RlKSBjb25zdCB7Ci0gICAgICAgIGNvbnN0IGJvb2wgaXNDYXBpdGFsaXplZCA9IGRpY05vZGUtPmlzQ2FwaXRhbGl6ZWQoKTsKLSAgICAgICAgY29uc3QgZmxvYXQgY29zdCA9IFNjb3JpbmdQYXJhbXM6OlNQQUNFX1NVQlNUSVRVVElPTl9DT1NUICsgKGlzQ2FwaXRhbGl6ZWQgPwotICAgICAgICAgICAgICAgIFNjb3JpbmdQYXJhbXM6OkNPU1RfTkVXX1dPUkRfQ0FQSVRBTElaRUQgOiBTY29yaW5nUGFyYW1zOjpDT1NUX05FV19XT1JEKTsKKyAgICAgICAgY29uc3QgZmxvYXQgY29zdCA9IFNjb3JpbmdQYXJhbXM6OlNQQUNFX1NVQlNUSVRVVElPTl9DT1NUICsgU2NvcmluZ1BhcmFtczo6Q09TVF9ORVdfV09SRDsKICAgICAgICAgcmV0dXJuIGNvc3QgKiB0cmF2ZXJzZVNlc3Npb24tPmdldE11bHRpV29yZENvc3RNdWx0aXBsaWVyKCk7CiAgICAgfQogCisgICAgRXJyb3JUeXBlIGdldEVycm9yVHlwZShjb25zdCBDb3JyZWN0aW9uVHlwZSBjb3JyZWN0aW9uVHlwZSwKKyAgICAgICAgICAgIGNvbnN0IERpY1RyYXZlcnNlU2Vzc2lvbiAqY29uc3QgdHJhdmVyc2VTZXNzaW9uLAorICAgICAgICAgICAgY29uc3QgRGljTm9kZSAqY29uc3QgcGFyZW50RGljTm9kZSwgY29uc3QgRGljTm9kZSAqY29uc3QgZGljTm9kZSkgY29uc3Q7CisKICBwcml2YXRlOgogICAgIERJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihUeXBpbmdXZWlnaHRpbmcpOwogICAgIHN0YXRpYyBjb25zdCBUeXBpbmdXZWlnaHRpbmcgc0luc3RhbmNlOwpkaWZmIC0tZ2l0IGEvbmF0aXZlL2puaS9zcmMvdGVybWluYWxfYXR0cmlidXRlcy5oIGIvbmF0aXZlL2puaS9zcmMvdGVybWluYWxfYXR0cmlidXRlcy5oCmluZGV4IDE0NGFlMTQuLjkyZWY3MWMgMTAwNjQ0Ci0tLSBhL25hdGl2ZS9qbmkvc3JjL3Rlcm1pbmFsX2F0dHJpYnV0ZXMuaAorKysgYi9uYXRpdmUvam5pL3NyYy90ZXJtaW5hbF9hdHRyaWJ1dGVzLmgKQEAgLTcyLDcgKzcyLDcgQEAKICAgICB9CiAKICAgICBib29sIGlzQmxhY2tsaXN0ZWRPck5vdEFXb3JkKCkgY29uc3QgewotICAgICAgICByZXR1cm4gbUZsYWdzICYgKEJpbmFyeUZvcm1hdDo6RkxBR19JU19CTEFDS0xJU1RFRCB8IEJpbmFyeUZvcm1hdDo6RkxBR19JU19OT1RfQV9XT1JEKTsKKyAgICAgICAgcmV0dXJuIEJpbmFyeUZvcm1hdDo6aGFzQmxhY2tsaXN0ZWRPck5vdEFXb3JkRmxhZyhtRmxhZ3MpOwogICAgIH0KIAogIHByaXZhdGU6CmRpZmYgLS1naXQgYS90ZXN0cy9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2Qva2V5Ym9hcmQvaW50ZXJuYWwvUG9pbnRlclRyYWNrZXJRdWV1ZVRlc3RzLmphdmEgYi90ZXN0cy9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2Qva2V5Ym9hcmQvaW50ZXJuYWwvUG9pbnRlclRyYWNrZXJRdWV1ZVRlc3RzLmphdmEKaW5kZXggZDY3MDBjZi4uYTU3MmRhYSAxMDA2NDQKLS0tIGEvdGVzdHMvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2tleWJvYXJkL2ludGVybmFsL1BvaW50ZXJUcmFja2VyUXVldWVUZXN0cy5qYXZhCisrKyBiL3Rlc3RzL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9rZXlib2FyZC9pbnRlcm5hbC9Qb2ludGVyVHJhY2tlclF1ZXVlVGVzdHMuamF2YQpAQCAtNTEsNyArNTEsNyBAQAogICAgICAgICB9CiAKICAgICAgICAgQE92ZXJyaWRlCi0gICAgICAgIHB1YmxpYyB2b2lkIGNhbmNlbFRyYWNraW5nKCkge30KKyAgICAgICAgcHVibGljIHZvaWQgY2FuY2VsVHJhY2tpbmdGb3JBY3Rpb24oKSB7fQogCiAgICAgICAgIEBPdmVycmlkZQogICAgICAgICBwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkgewpkaWZmIC0tZ2l0IGEvdGVzdHMvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2xhdGluL0JsdWVVbmRlcmxpbmVUZXN0cy5qYXZhIGIvdGVzdHMvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2xhdGluL0JsdWVVbmRlcmxpbmVUZXN0cy5qYXZhCmluZGV4IDcyNzVkM2EuLmM0ZmQ1YTAgMTAwNjQ0Ci0tLSBhL3Rlc3RzL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9sYXRpbi9CbHVlVW5kZXJsaW5lVGVzdHMuamF2YQorKysgYi90ZXN0cy9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvbGF0aW4vQmx1ZVVuZGVybGluZVRlc3RzLmphdmEKQEAgLTMwLDcgKzMwLDcgQEAKICAgICAgICAgdHlwZShTVFJJTkdfVE9fVFlQRSk7CiAgICAgICAgIHNsZWVwKERFTEFZX1RPX1dBSVRfRk9SX1VOREVSTElORSk7CiAgICAgICAgIHJ1bk1lc3NhZ2VzKCk7Ci0gICAgICAgIGZpbmFsIFNwYW5HZXR0ZXIgc3BhbiA9IG5ldyBTcGFuR2V0dGVyKG1UZXh0Vmlldy5nZXRUZXh0KCksIFN1Z2dlc3Rpb25TcGFuLmNsYXNzKTsKKyAgICAgICAgZmluYWwgU3BhbkdldHRlciBzcGFuID0gbmV3IFNwYW5HZXR0ZXIobUVkaXRUZXh0LmdldFRleHQoKSwgU3VnZ2VzdGlvblNwYW4uY2xhc3MpOwogICAgICAgICBhc3NlcnRFcXVhbHMoInNob3cgYmx1ZSB1bmRlcmxpbmUsIHNwYW4gc3RhcnQiLCBFWFBFQ1RFRF9TUEFOX1NUQVJULCBzcGFuLm1TdGFydCk7CiAgICAgICAgIGFzc2VydEVxdWFscygic2hvdyBibHVlIHVuZGVybGluZSwgc3BhbiBlbmQiLCBFWFBFQ1RFRF9TUEFOX0VORCwgc3Bhbi5tRW5kKTsKICAgICAgICAgYXNzZXJ0RXF1YWxzKCJzaG93IGJsdWUgdW5kZXJsaW5lLCBzcGFuIGNvbG9yIiwgdHJ1ZSwgc3Bhbi5pc0F1dG9Db3JyZWN0aW9uSW5kaWNhdG9yKCkpOwpAQCAtNDcsNyArNDcsNyBAQAogICAgICAgICB0eXBlKFNUUklOR18yX1RPX1RZUEUpOwogICAgICAgICAvLyBXZSBoYXZlbid0IGhhdmUgdGltZSB0byBsb29rIGludG8gdGhlIGRpY3Rpb25hcnkgeWV0LCBzbyB0aGUgbGluZSBzaG91bGQgc3RpbGwgYmUKICAgICAgICAgLy8gYmx1ZSB0byBhdm9pZCBhbnkgZmxpY2tlci4KLSAgICAgICAgZmluYWwgU3BhbkdldHRlciBzcGFuQmVmb3JlID0gbmV3IFNwYW5HZXR0ZXIobVRleHRWaWV3LmdldFRleHQoKSwgU3VnZ2VzdGlvblNwYW4uY2xhc3MpOworICAgICAgICBmaW5hbCBTcGFuR2V0dGVyIHNwYW5CZWZvcmUgPSBuZXcgU3BhbkdldHRlcihtRWRpdFRleHQuZ2V0VGV4dCgpLCBTdWdnZXN0aW9uU3Bhbi5jbGFzcyk7CiAgICAgICAgIGFzc2VydEVxdWFscygiZXh0ZW5kIGJsdWUgdW5kZXJsaW5lLCBzcGFuIHN0YXJ0IiwgRVhQRUNURURfU1BBTl9TVEFSVCwgc3BhbkJlZm9yZS5tU3RhcnQpOwogICAgICAgICBhc3NlcnRFcXVhbHMoImV4dGVuZCBibHVlIHVuZGVybGluZSwgc3BhbiBlbmQiLCBFWFBFQ1RFRF9TUEFOX0VORCwgc3BhbkJlZm9yZS5tRW5kKTsKICAgICAgICAgYXNzZXJ0RXF1YWxzKCJleHRlbmQgYmx1ZSB1bmRlcmxpbmUsIHNwYW4gY29sb3IiLCB0cnVlLApAQCAtNTUsNyArNTUsNyBAQAogICAgICAgICBzbGVlcChERUxBWV9UT19XQUlUX0ZPUl9VTkRFUkxJTkUpOwogICAgICAgICBydW5NZXNzYWdlcygpOwogICAgICAgICAvLyBOb3cgd2UgaGF2ZSBiZWVuIGFibGUgdG8gcmUtZXZhbHVhdGUgdGhlIHdvcmQsIHRoZXJlIHNob3VsZG4ndCBiZSBhbiBhdXRvLWNvcnJlY3Rpb24gc3BhbgotICAgICAgICBmaW5hbCBTcGFuR2V0dGVyIHNwYW5BZnRlciA9IG5ldyBTcGFuR2V0dGVyKG1UZXh0Vmlldy5nZXRUZXh0KCksIFN1Z2dlc3Rpb25TcGFuLmNsYXNzKTsKKyAgICAgICAgZmluYWwgU3BhbkdldHRlciBzcGFuQWZ0ZXIgPSBuZXcgU3BhbkdldHRlcihtRWRpdFRleHQuZ2V0VGV4dCgpLCBTdWdnZXN0aW9uU3Bhbi5jbGFzcyk7CiAgICAgICAgIGFzc2VydE51bGwoImhpZGUgYmx1ZSB1bmRlcmxpbmUiLCBzcGFuQWZ0ZXIubVNwYW4pOwogICAgIH0KIApAQCAtNzYsMTAgKzc2LDEwIEBACiAgICAgICAgIHR5cGUoQ29uc3RhbnRzLkNPREVfREVMRVRFKTsKICAgICAgICAgc2xlZXAoREVMQVlfVE9fV0FJVF9GT1JfVU5ERVJMSU5FKTsKICAgICAgICAgcnVuTWVzc2FnZXMoKTsKLSAgICAgICAgZmluYWwgU3BhbkdldHRlciBzdWdnZXN0aW9uU3BhbiA9IG5ldyBTcGFuR2V0dGVyKG1UZXh0Vmlldy5nZXRUZXh0KCksIFN1Z2dlc3Rpb25TcGFuLmNsYXNzKTsKKyAgICAgICAgZmluYWwgU3BhbkdldHRlciBzdWdnZXN0aW9uU3BhbiA9IG5ldyBTcGFuR2V0dGVyKG1FZGl0VGV4dC5nZXRUZXh0KCksIFN1Z2dlc3Rpb25TcGFuLmNsYXNzKTsKICAgICAgICAgYXNzZXJ0RXF1YWxzKCJzaG93IG5vIGJsdWUgdW5kZXJsaW5lIGFmdGVyIGJhY2tzcGFjZSwgc3BhbiBzdGFydCBzaG91bGQgYmUgLTEiLAogICAgICAgICAgICAgICAgIEVYUEVDVEVEX1NVR0dFU1RJT05fU1BBTl9TVEFSVCwgc3VnZ2VzdGlvblNwYW4ubVN0YXJ0KTsKLSAgICAgICAgZmluYWwgU3BhbkdldHRlciB1bmRlcmxpbmVTcGFuID0gbmV3IFNwYW5HZXR0ZXIobVRleHRWaWV3LmdldFRleHQoKSwgVW5kZXJsaW5lU3Bhbi5jbGFzcyk7CisgICAgICAgIGZpbmFsIFNwYW5HZXR0ZXIgdW5kZXJsaW5lU3BhbiA9IG5ldyBTcGFuR2V0dGVyKG1FZGl0VGV4dC5nZXRUZXh0KCksIFVuZGVybGluZVNwYW4uY2xhc3MpOwogICAgICAgICBhc3NlcnRFcXVhbHMoInNob3VsZCBiZSBjb21wb3NpbmcsIHNvIHNob3VsZCBoYXZlIGFuIHVuZGVybGluZSBzcGFuIiwKICAgICAgICAgICAgICAgICBFWFBFQ1RFRF9VTkRFUkxJTkVfU1BBTl9TVEFSVCwgdW5kZXJsaW5lU3Bhbi5tU3RhcnQpOwogICAgICAgICBhc3NlcnRFcXVhbHMoInNob3VsZCBiZSBjb21wb3NpbmcsIHNvIHNob3VsZCBoYXZlIGFuIHVuZGVybGluZSBzcGFuIiwKQEAgLTEwMyw3ICsxMDMsNyBAQAogICAgICAgICAgICAgICAgIE5FV19DVVJTT1JfUE9TSVRJT04sIE5FV19DVVJTT1JfUE9TSVRJT04sIC0xLCAtMSk7CiAgICAgICAgIHNsZWVwKERFTEFZX1RPX1dBSVRfRk9SX1VOREVSTElORSk7CiAgICAgICAgIHJ1bk1lc3NhZ2VzKCk7Ci0gICAgICAgIGZpbmFsIFNwYW5HZXR0ZXIgc3BhbiA9IG5ldyBTcGFuR2V0dGVyKG1UZXh0Vmlldy5nZXRUZXh0KCksIFN1Z2dlc3Rpb25TcGFuLmNsYXNzKTsKKyAgICAgICAgZmluYWwgU3BhbkdldHRlciBzcGFuID0gbmV3IFNwYW5HZXR0ZXIobUVkaXRUZXh0LmdldFRleHQoKSwgU3VnZ2VzdGlvblNwYW4uY2xhc3MpOwogICAgICAgICBhc3NlcnROdWxsKCJibHVlIHVuZGVybGluZSByZW1vdmVkIHdoZW4gY3Vyc29yIGlzIG1vdmVkIiwgc3Bhbi5tU3Bhbik7CiAgICAgfQogCkBAIC0xMTcsNyArMTE3LDcgQEAKICAgICAgICAgLy8gSGVyZSB0aGUgYmx1ZSB1bmRlcmxpbmUgaGFzIGJlZW4gc2V0LiB0ZXN0Qmx1ZVVuZGVybGluZSgpIGlzIHRlc3RpbmcgZm9yIHRoaXMgYWxyZWFkeSwKICAgICAgICAgLy8gc28gbGV0J3Mgbm90IHRlc3QgaXQgaGVyZSBhZ2Fpbi4KICAgICAgICAgLy8gTm93IHNpbXVsYXRlIHRoZSB1c2VyIG1vdmluZyB0aGUgY3Vyc29yLgotICAgICAgICBTcGFuR2V0dGVyIHNwYW4gPSBuZXcgU3BhbkdldHRlcihtVGV4dFZpZXcuZ2V0VGV4dCgpLCBVbmRlcmxpbmVTcGFuLmNsYXNzKTsKKyAgICAgICAgU3BhbkdldHRlciBzcGFuID0gbmV3IFNwYW5HZXR0ZXIobUVkaXRUZXh0LmdldFRleHQoKSwgVW5kZXJsaW5lU3Bhbi5jbGFzcyk7CiAgICAgICAgIGFzc2VydE51bGwoInNob3VsZCBub3QgYmUgY29tcG9zaW5nLCBzbyBzaG91bGQgbm90IGhhdmUgYW4gdW5kZXJsaW5lIHNwYW4iLCBzcGFuLm1TcGFuKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS90ZXN0cy9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvbGF0aW4vSW5wdXRMb2dpY1Rlc3RzLmphdmEgYi90ZXN0cy9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvbGF0aW4vSW5wdXRMb2dpY1Rlc3RzLmphdmEKaW5kZXggNzJjOGQ5Yy4uOTE0MDE5NyAxMDA2NDQKLS0tIGEvdGVzdHMvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2xhdGluL0lucHV0TG9naWNUZXN0cy5qYXZhCisrKyBiL3Rlc3RzL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9sYXRpbi9JbnB1dExvZ2ljVGVzdHMuamF2YQpAQCAtMjQsNyArMjQsNyBAQAogICAgIHB1YmxpYyB2b2lkIHRlc3RUeXBlV29yZCgpIHsKICAgICAgICAgZmluYWwgU3RyaW5nIFdPUkRfVE9fVFlQRSA9ICJhYmNkIjsKICAgICAgICAgdHlwZShXT1JEX1RPX1RZUEUpOwotICAgICAgICBhc3NlcnRFcXVhbHMoInR5cGUgd29yZCIsIFdPUkRfVE9fVFlQRSwgbVRleHRWaWV3LmdldFRleHQoKS50b1N0cmluZygpKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKCJ0eXBlIHdvcmQiLCBXT1JEX1RPX1RZUEUsIG1FZGl0VGV4dC5nZXRUZXh0KCkudG9TdHJpbmcoKSk7CiAgICAgfQogCiAgICAgcHVibGljIHZvaWQgdGVzdFBpY2tTdWdnZXN0aW9uVGhlbkJhY2tzcGFjZSgpIHsKQEAgLTM1LDcgKzM1LDcgQEAKICAgICAgICAgbUxhdGluSU1FLm9uVXBkYXRlU2VsZWN0aW9uKDAsIDAsIFdPUkRfVE9fVFlQRS5sZW5ndGgoKSwgV09SRF9UT19UWVBFLmxlbmd0aCgpLCAtMSwgLTEpOwogICAgICAgICB0eXBlKENvbnN0YW50cy5DT0RFX0RFTEVURSk7CiAgICAgICAgIGFzc2VydEVxdWFscygicHJlc3Mgc3VnZ2VzdGlvbiB0aGVuIGJhY2tzcGFjZSIsIEVYUEVDVEVEX1JFU1VMVCwKLSAgICAgICAgICAgICAgICBtVGV4dFZpZXcuZ2V0VGV4dCgpLnRvU3RyaW5nKCkpOworICAgICAgICAgICAgICAgIG1FZGl0VGV4dC5nZXRUZXh0KCkudG9TdHJpbmcoKSk7CiAgICAgfQogCiAgICAgcHVibGljIHZvaWQgdGVzdFBpY2tBdXRvQ29ycmVjdGlvblRoZW5CYWNrc3BhY2UoKSB7CkBAIC00OCwxMCArNDgsMTAgQEAKICAgICAgICAgcGlja1N1Z2dlc3Rpb25NYW51YWxseSgwLCBXT1JEX1RPX1BJQ0spOwogICAgICAgICBtTGF0aW5JTUUub25VcGRhdGVTZWxlY3Rpb24oMCwgMCwgV09SRF9UT19UWVBFLmxlbmd0aCgpLCBXT1JEX1RPX1RZUEUubGVuZ3RoKCksIC0xLCAtMSk7CiAgICAgICAgIGFzc2VydEVxdWFscygicGljayB0eXBlZCB3b3JkIG92ZXIgYXV0by1jb3JyZWN0aW9uIHRoZW4gYmFja3NwYWNlIiwgV09SRF9UT19QSUNLLAotICAgICAgICAgICAgICAgIG1UZXh0Vmlldy5nZXRUZXh0KCkudG9TdHJpbmcoKSk7CisgICAgICAgICAgICAgICAgbUVkaXRUZXh0LmdldFRleHQoKS50b1N0cmluZygpKTsKICAgICAgICAgdHlwZShDb25zdGFudHMuQ09ERV9ERUxFVEUpOwogICAgICAgICBhc3NlcnRFcXVhbHMoInBpY2sgdHlwZWQgd29yZCBvdmVyIGF1dG8tY29ycmVjdGlvbiB0aGVuIGJhY2tzcGFjZSIsIEVYUEVDVEVEX1JFU1VMVCwKLSAgICAgICAgICAgICAgICBtVGV4dFZpZXcuZ2V0VGV4dCgpLnRvU3RyaW5nKCkpOworICAgICAgICAgICAgICAgIG1FZGl0VGV4dC5nZXRUZXh0KCkudG9TdHJpbmcoKSk7CiAgICAgfQogCiAgICAgcHVibGljIHZvaWQgdGVzdFBpY2tUeXBlZFdvcmRPdmVyQXV0b0NvcnJlY3Rpb25UaGVuQmFja3NwYWNlKCkgewpAQCAtNjMsMTAgKzYzLDEwIEBACiAgICAgICAgIHBpY2tTdWdnZXN0aW9uTWFudWFsbHkoMSwgV09SRF9UT19UWVBFKTsKICAgICAgICAgbUxhdGluSU1FLm9uVXBkYXRlU2VsZWN0aW9uKDAsIDAsIFdPUkRfVE9fVFlQRS5sZW5ndGgoKSwgV09SRF9UT19UWVBFLmxlbmd0aCgpLCAtMSwgLTEpOwogICAgICAgICBhc3NlcnRFcXVhbHMoInBpY2sgdHlwZWQgd29yZCBvdmVyIGF1dG8tY29ycmVjdGlvbiB0aGVuIGJhY2tzcGFjZSIsIFdPUkRfVE9fVFlQRSwKLSAgICAgICAgICAgICAgICBtVGV4dFZpZXcuZ2V0VGV4dCgpLnRvU3RyaW5nKCkpOworICAgICAgICAgICAgICAgIG1FZGl0VGV4dC5nZXRUZXh0KCkudG9TdHJpbmcoKSk7CiAgICAgICAgIHR5cGUoQ29uc3RhbnRzLkNPREVfREVMRVRFKTsKICAgICAgICAgYXNzZXJ0RXF1YWxzKCJwaWNrIHR5cGVkIHdvcmQgb3ZlciBhdXRvLWNvcnJlY3Rpb24gdGhlbiBiYWNrc3BhY2UiLCBFWFBFQ1RFRF9SRVNVTFQsCi0gICAgICAgICAgICAgICAgbVRleHRWaWV3LmdldFRleHQoKS50b1N0cmluZygpKTsKKyAgICAgICAgICAgICAgICBtRWRpdFRleHQuZ2V0VGV4dCgpLnRvU3RyaW5nKCkpOwogICAgIH0KIAogICAgIHB1YmxpYyB2b2lkIHRlc3RQaWNrRGlmZmVyZW50U3VnZ2VzdGlvblRoZW5CYWNrc3BhY2UoKSB7CkBAIC03OSwxMCArNzksMTAgQEAKICAgICAgICAgcGlja1N1Z2dlc3Rpb25NYW51YWxseSgyLCBXT1JEX1RPX1BJQ0spOwogICAgICAgICBtTGF0aW5JTUUub25VcGRhdGVTZWxlY3Rpb24oMCwgMCwgV09SRF9UT19UWVBFLmxlbmd0aCgpLCBXT1JEX1RPX1RZUEUubGVuZ3RoKCksIC0xLCAtMSk7CiAgICAgICAgIGFzc2VydEVxdWFscygicGljayBkaWZmZXJlbnQgc3VnZ2VzdGlvbiB0aGVuIGJhY2tzcGFjZSIsIFdPUkRfVE9fUElDSywKLSAgICAgICAgICAgICAgICBtVGV4dFZpZXcuZ2V0VGV4dCgpLnRvU3RyaW5nKCkpOworICAgICAgICAgICAgICAgIG1FZGl0VGV4dC5nZXRUZXh0KCkudG9TdHJpbmcoKSk7CiAgICAgICAgIHR5cGUoQ29uc3RhbnRzLkNPREVfREVMRVRFKTsKICAgICAgICAgYXNzZXJ0RXF1YWxzKCJwaWNrIGRpZmZlcmVudCBzdWdnZXN0aW9uIHRoZW4gYmFja3NwYWNlIiwgRVhQRUNURURfUkVTVUxULAotICAgICAgICAgICAgICAgIG1UZXh0Vmlldy5nZXRUZXh0KCkudG9TdHJpbmcoKSk7CisgICAgICAgICAgICAgICAgbUVkaXRUZXh0LmdldFRleHQoKS50b1N0cmluZygpKTsKICAgICB9CiAKICAgICBwdWJsaWMgdm9pZCB0ZXN0RGVsZXRlU2VsZWN0aW9uKCkgewpAQCAtMTAyLDcgKzEwMiw3IEBACiAgICAgICAgIG1MYXRpbklNRS5vblVwZGF0ZVNlbGVjdGlvbih0eXBlZExlbmd0aCwgdHlwZWRMZW5ndGgsCiAgICAgICAgICAgICAgICAgU0VMRUNUSU9OX1NUQVJULCBTRUxFQ1RJT05fRU5ELCAtMSwgLTEpOwogICAgICAgICB0eXBlKENvbnN0YW50cy5DT0RFX0RFTEVURSk7Ci0gICAgICAgIGFzc2VydEVxdWFscygiZGVsZXRlIHNlbGVjdGlvbiIsIEVYUEVDVEVEX1JFU1VMVCwgbVRleHRWaWV3LmdldFRleHQoKS50b1N0cmluZygpKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKCJkZWxldGUgc2VsZWN0aW9uIiwgRVhQRUNURURfUkVTVUxULCBtRWRpdFRleHQuZ2V0VGV4dCgpLnRvU3RyaW5nKCkpOwogICAgIH0KIAogICAgIHB1YmxpYyB2b2lkIHRlc3REZWxldGVTZWxlY3Rpb25Ud2ljZSgpIHsKQEAgLTEyMywyMSArMTIzLDIxIEBACiAgICAgICAgICAgICAgICAgU0VMRUNUSU9OX1NUQVJULCBTRUxFQ1RJT05fRU5ELCAtMSwgLTEpOwogICAgICAgICB0eXBlKENvbnN0YW50cy5DT0RFX0RFTEVURSk7CiAgICAgICAgIHR5cGUoQ29uc3RhbnRzLkNPREVfREVMRVRFKTsKLSAgICAgICAgYXNzZXJ0RXF1YWxzKCJkZWxldGUgc2VsZWN0aW9uIHR3aWNlIiwgRVhQRUNURURfUkVTVUxULCBtVGV4dFZpZXcuZ2V0VGV4dCgpLnRvU3RyaW5nKCkpOworICAgICAgICBhc3NlcnRFcXVhbHMoImRlbGV0ZSBzZWxlY3Rpb24gdHdpY2UiLCBFWFBFQ1RFRF9SRVNVTFQsIG1FZGl0VGV4dC5nZXRUZXh0KCkudG9TdHJpbmcoKSk7CiAgICAgfQogCiAgICAgcHVibGljIHZvaWQgdGVzdEF1dG9Db3JyZWN0KCkgewogICAgICAgICBmaW5hbCBTdHJpbmcgU1RSSU5HX1RPX1RZUEUgPSAidGdpcyAiOwogICAgICAgICBmaW5hbCBTdHJpbmcgRVhQRUNURURfUkVTVUxUID0gInRoaXMgIjsKICAgICAgICAgdHlwZShTVFJJTkdfVE9fVFlQRSk7Ci0gICAgICAgIGFzc2VydEVxdWFscygic2ltcGxlIGF1dG8tY29ycmVjdCIsIEVYUEVDVEVEX1JFU1VMVCwgbVRleHRWaWV3LmdldFRleHQoKS50b1N0cmluZygpKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKCJzaW1wbGUgYXV0by1jb3JyZWN0IiwgRVhQRUNURURfUkVTVUxULCBtRWRpdFRleHQuZ2V0VGV4dCgpLnRvU3RyaW5nKCkpOwogICAgIH0KIAogICAgIHB1YmxpYyB2b2lkIHRlc3RBdXRvQ29ycmVjdFdpdGhQZXJpb2QoKSB7CiAgICAgICAgIGZpbmFsIFN0cmluZyBTVFJJTkdfVE9fVFlQRSA9ICJ0Z2lzLiI7CiAgICAgICAgIGZpbmFsIFN0cmluZyBFWFBFQ1RFRF9SRVNVTFQgPSAidGhpcy4iOwogICAgICAgICB0eXBlKFNUUklOR19UT19UWVBFKTsKLSAgICAgICAgYXNzZXJ0RXF1YWxzKCJhdXRvLWNvcnJlY3Qgd2l0aCBwZXJpb2QiLCBFWFBFQ1RFRF9SRVNVTFQsIG1UZXh0Vmlldy5nZXRUZXh0KCkudG9TdHJpbmcoKSk7CisgICAgICAgIGFzc2VydEVxdWFscygiYXV0by1jb3JyZWN0IHdpdGggcGVyaW9kIiwgRVhQRUNURURfUkVTVUxULCBtRWRpdFRleHQuZ2V0VGV4dCgpLnRvU3RyaW5nKCkpOwogICAgIH0KIAogICAgIHB1YmxpYyB2b2lkIHRlc3RBdXRvQ29ycmVjdFdpdGhQZXJpb2RUaGVuUmV2ZXJ0KCkgewpAQCAtMTQ3LDcgKzE0Nyw3IEBACiAgICAgICAgIG1MYXRpbklNRS5vblVwZGF0ZVNlbGVjdGlvbigwLCAwLCBTVFJJTkdfVE9fVFlQRS5sZW5ndGgoKSwgU1RSSU5HX1RPX1RZUEUubGVuZ3RoKCksIC0xLCAtMSk7CiAgICAgICAgIHR5cGUoQ29uc3RhbnRzLkNPREVfREVMRVRFKTsKICAgICAgICAgYXNzZXJ0RXF1YWxzKCJhdXRvLWNvcnJlY3Qgd2l0aCBwZXJpb2QgdGhlbiByZXZlcnQiLCBFWFBFQ1RFRF9SRVNVTFQsCi0gICAgICAgICAgICAgICAgbVRleHRWaWV3LmdldFRleHQoKS50b1N0cmluZygpKTsKKyAgICAgICAgICAgICAgICBtRWRpdFRleHQuZ2V0VGV4dCgpLnRvU3RyaW5nKCkpOwogICAgIH0KIAogICAgIHB1YmxpYyB2b2lkIHRlc3RBdXRvQ29ycmVjdFdpdGhTcGFjZVRoZW5SZXZlcnQoKSB7CkBAIC0xNTcsNyArMTU3LDcgQEAKICAgICAgICAgbUxhdGluSU1FLm9uVXBkYXRlU2VsZWN0aW9uKDAsIDAsIFNUUklOR19UT19UWVBFLmxlbmd0aCgpLCBTVFJJTkdfVE9fVFlQRS5sZW5ndGgoKSwgLTEsIC0xKTsKICAgICAgICAgdHlwZShDb25zdGFudHMuQ09ERV9ERUxFVEUpOwogICAgICAgICBhc3NlcnRFcXVhbHMoImF1dG8tY29ycmVjdCB3aXRoIHNwYWNlIHRoZW4gcmV2ZXJ0IiwgRVhQRUNURURfUkVTVUxULAotICAgICAgICAgICAgICAgIG1UZXh0Vmlldy5nZXRUZXh0KCkudG9TdHJpbmcoKSk7CisgICAgICAgICAgICAgICAgbUVkaXRUZXh0LmdldFRleHQoKS50b1N0cmluZygpKTsKICAgICB9CiAKICAgICBwdWJsaWMgdm9pZCB0ZXN0QXV0b0NvcnJlY3RUb1NlbGZEb2VzTm90UmV2ZXJ0KCkgewpAQCAtMTY3LDE0ICsxNjcsMTQgQEAKICAgICAgICAgbUxhdGluSU1FLm9uVXBkYXRlU2VsZWN0aW9uKDAsIDAsIFNUUklOR19UT19UWVBFLmxlbmd0aCgpLCBTVFJJTkdfVE9fVFlQRS5sZW5ndGgoKSwgLTEsIC0xKTsKICAgICAgICAgdHlwZShDb25zdGFudHMuQ09ERV9ERUxFVEUpOwogICAgICAgICBhc3NlcnRFcXVhbHMoImF1dG8tY29ycmVjdCB3aXRoIHNwYWNlIGRvZXMgbm90IHJldmVydCIsIEVYUEVDVEVEX1JFU1VMVCwKLSAgICAgICAgICAgICAgICBtVGV4dFZpZXcuZ2V0VGV4dCgpLnRvU3RyaW5nKCkpOworICAgICAgICAgICAgICAgIG1FZGl0VGV4dC5nZXRUZXh0KCkudG9TdHJpbmcoKSk7CiAgICAgfQogCiAgICAgcHVibGljIHZvaWQgdGVzdERvdWJsZVNwYWNlKCkgewogICAgICAgICBmaW5hbCBTdHJpbmcgU1RSSU5HX1RPX1RZUEUgPSAidGhpcyAgIjsKICAgICAgICAgZmluYWwgU3RyaW5nIEVYUEVDVEVEX1JFU1VMVCA9ICJ0aGlzLiAiOwogICAgICAgICB0eXBlKFNUUklOR19UT19UWVBFKTsKLSAgICAgICAgYXNzZXJ0RXF1YWxzKCJkb3VibGUgc3BhY2UgbWFrZSBhIHBlcmlvZCIsIEVYUEVDVEVEX1JFU1VMVCwgbVRleHRWaWV3LmdldFRleHQoKS50b1N0cmluZygpKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKCJkb3VibGUgc3BhY2UgbWFrZSBhIHBlcmlvZCIsIEVYUEVDVEVEX1JFU1VMVCwgbUVkaXRUZXh0LmdldFRleHQoKS50b1N0cmluZygpKTsKICAgICB9CiAKICAgICBwdWJsaWMgdm9pZCB0ZXN0Q2FuY2VsRG91YmxlU3BhY2UoKSB7CkBAIC0xODIsNyArMTgyLDcgQEAKICAgICAgICAgZmluYWwgU3RyaW5nIEVYUEVDVEVEX1JFU1VMVCA9ICJ0aGlzICAiOwogICAgICAgICB0eXBlKFNUUklOR19UT19UWVBFKTsKICAgICAgICAgdHlwZShDb25zdGFudHMuQ09ERV9ERUxFVEUpOwotICAgICAgICBhc3NlcnRFcXVhbHMoImRvdWJsZSBzcGFjZSBtYWtlIGEgcGVyaW9kIiwgRVhQRUNURURfUkVTVUxULCBtVGV4dFZpZXcuZ2V0VGV4dCgpLnRvU3RyaW5nKCkpOworICAgICAgICBhc3NlcnRFcXVhbHMoImRvdWJsZSBzcGFjZSBtYWtlIGEgcGVyaW9kIiwgRVhQRUNURURfUkVTVUxULCBtRWRpdFRleHQuZ2V0VGV4dCgpLnRvU3RyaW5nKCkpOwogICAgIH0KIAogICAgIHB1YmxpYyB2b2lkIHRlc3RCYWNrc3BhY2VBdFN0YXJ0QWZ0ZXJBdXRvY29ycmVjdCgpIHsKQEAgLTE5Nyw3ICsxOTcsNyBAQAogICAgICAgICAgICAgICAgIE5FV19DVVJTT1JfUE9TSVRJT04sIE5FV19DVVJTT1JfUE9TSVRJT04sIC0xLCAtMSk7CiAgICAgICAgIHR5cGUoQ29uc3RhbnRzLkNPREVfREVMRVRFKTsKICAgICAgICAgYXNzZXJ0RXF1YWxzKCJhdXRvIGNvcnJlY3QgdGhlbiBtb3ZlIGN1cnNvciB0byBzdGFydCBvZiBsaW5lIHRoZW4gYmFja3NwYWNlIiwKLSAgICAgICAgICAgICAgICBFWFBFQ1RFRF9SRVNVTFQsIG1UZXh0Vmlldy5nZXRUZXh0KCkudG9TdHJpbmcoKSk7CisgICAgICAgICAgICAgICAgRVhQRUNURURfUkVTVUxULCBtRWRpdFRleHQuZ2V0VGV4dCgpLnRvU3RyaW5nKCkpOwogICAgIH0KIAogICAgIHB1YmxpYyB2b2lkIHRlc3RBdXRvQ29ycmVjdFRoZW5Nb3ZlQ3Vyc29yVGhlbkJhY2tzcGFjZSgpIHsKQEAgLTIxMiw3ICsyMTIsNyBAQAogICAgICAgICAgICAgICAgIE5FV19DVVJTT1JfUE9TSVRJT04sIE5FV19DVVJTT1JfUE9TSVRJT04sIC0xLCAtMSk7CiAgICAgICAgIHR5cGUoQ29uc3RhbnRzLkNPREVfREVMRVRFKTsKICAgICAgICAgYXNzZXJ0RXF1YWxzKCJhdXRvIGNvcnJlY3QgdGhlbiBtb3ZlIGN1cnNvciB0aGVuIGJhY2tzcGFjZSIsCi0gICAgICAgICAgICAgICAgRVhQRUNURURfUkVTVUxULCBtVGV4dFZpZXcuZ2V0VGV4dCgpLnRvU3RyaW5nKCkpOworICAgICAgICAgICAgICAgIEVYUEVDVEVEX1JFU1VMVCwgbUVkaXRUZXh0LmdldFRleHQoKS50b1N0cmluZygpKTsKICAgICB9CiAKICAgICBwdWJsaWMgdm9pZCB0ZXN0Tm9TcGFjZUFmdGVyTWFudWFsUGljaygpIHsKQEAgLTIyMSw3ICsyMjEsNyBAQAogICAgICAgICB0eXBlKFdPUkRfVE9fVFlQRSk7CiAgICAgICAgIHBpY2tTdWdnZXN0aW9uTWFudWFsbHkoMCwgV09SRF9UT19UWVBFKTsKICAgICAgICAgYXNzZXJ0RXF1YWxzKCJubyBzcGFjZSBhZnRlciBtYW51YWwgcGljayIsIEVYUEVDVEVEX1JFU1VMVCwKLSAgICAgICAgICAgICAgICBtVGV4dFZpZXcuZ2V0VGV4dCgpLnRvU3RyaW5nKCkpOworICAgICAgICAgICAgICAgIG1FZGl0VGV4dC5nZXRUZXh0KCkudG9TdHJpbmcoKSk7CiAgICAgfQogCiAgICAgcHVibGljIHZvaWQgdGVzdE1hbnVhbFBpY2tUaGVuVHlwZSgpIHsKQEAgLTIzMSw3ICsyMzEsNyBAQAogICAgICAgICB0eXBlKFdPUkQxX1RPX1RZUEUpOwogICAgICAgICBwaWNrU3VnZ2VzdGlvbk1hbnVhbGx5KDAsIFdPUkQxX1RPX1RZUEUpOwogICAgICAgICB0eXBlKFdPUkQyX1RPX1RZUEUpOwotICAgICAgICBhc3NlcnRFcXVhbHMoIm1hbnVhbCBwaWNrIHRoZW4gdHlwZSIsIEVYUEVDVEVEX1JFU1VMVCwgbVRleHRWaWV3LmdldFRleHQoKS50b1N0cmluZygpKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKCJtYW51YWwgcGljayB0aGVuIHR5cGUiLCBFWFBFQ1RFRF9SRVNVTFQsIG1FZGl0VGV4dC5nZXRUZXh0KCkudG9TdHJpbmcoKSk7CiAgICAgfQogCiAgICAgcHVibGljIHZvaWQgdGVzdE1hbnVhbFBpY2tUaGVuU2VwYXJhdG9yKCkgewpAQCAtMjQxLDcgKzI0MSw3IEBACiAgICAgICAgIHR5cGUoV09SRDFfVE9fVFlQRSk7CiAgICAgICAgIHBpY2tTdWdnZXN0aW9uTWFudWFsbHkoMCwgV09SRDFfVE9fVFlQRSk7CiAgICAgICAgIHR5cGUoV09SRDJfVE9fVFlQRSk7Ci0gICAgICAgIGFzc2VydEVxdWFscygibWFudWFsIHBpY2sgdGhlbiBzZXBhcmF0b3IiLCBFWFBFQ1RFRF9SRVNVTFQsIG1UZXh0Vmlldy5nZXRUZXh0KCkudG9TdHJpbmcoKSk7CisgICAgICAgIGFzc2VydEVxdWFscygibWFudWFsIHBpY2sgdGhlbiBzZXBhcmF0b3IiLCBFWFBFQ1RFRF9SRVNVTFQsIG1FZGl0VGV4dC5nZXRUZXh0KCkudG9TdHJpbmcoKSk7CiAgICAgfQogCiAgICAgcHVibGljIHZvaWQgdGVzdE1hbnVhbFBpY2tUaGVuU3RyaXBwZXJUaGVuUGljaygpIHsKQEAgLTI1NCw3ICsyNTQsNyBAQAogICAgICAgICB0eXBlKFdPUkRfVE9fVFlQRSk7CiAgICAgICAgIHBpY2tTdWdnZXN0aW9uTWFudWFsbHkoMCwgV09SRF9UT19UWVBFKTsKICAgICAgICAgYXNzZXJ0RXF1YWxzKCJtYW51YWwgcGljayB0aGVuIFxcbiB0aGVuIG1hbnVhbCBwaWNrIiwgRVhQRUNURURfUkVTVUxULAotICAgICAgICAgICAgICAgIG1UZXh0Vmlldy5nZXRUZXh0KCkudG9TdHJpbmcoKSk7CisgICAgICAgICAgICAgICAgbUVkaXRUZXh0LmdldFRleHQoKS50b1N0cmluZygpKTsKICAgICB9CiAKICAgICBwdWJsaWMgdm9pZCB0ZXN0TWFudWFsUGlja1RoZW5TcGFjZVRoZW5UeXBlKCkgewpAQCAtMjY1LDcgKzI2NSw3IEBACiAgICAgICAgIHBpY2tTdWdnZXN0aW9uTWFudWFsbHkoMCwgV09SRDFfVE9fVFlQRSk7CiAgICAgICAgIHR5cGUoV09SRDJfVE9fVFlQRSk7CiAgICAgICAgIGFzc2VydEVxdWFscygibWFudWFsIHBpY2sgdGhlbiBzcGFjZSB0aGVuIHR5cGUiLCBFWFBFQ1RFRF9SRVNVTFQsCi0gICAgICAgICAgICAgICAgbVRleHRWaWV3LmdldFRleHQoKS50b1N0cmluZygpKTsKKyAgICAgICAgICAgICAgICBtRWRpdFRleHQuZ2V0VGV4dCgpLnRvU3RyaW5nKCkpOwogICAgIH0KIAogICAgIHB1YmxpYyB2b2lkIHRlc3RNYW51YWxQaWNrVGhlbk1hbnVhbFBpY2soKSB7CkBAIC0yNzksNyArMjc5LDcgQEAKICAgICAgICAgLy8gdG8gYWN0dWFsbHkgcGFzcyB0aGUgcmlnaHQgc3RyaW5nLgogICAgICAgICBwaWNrU3VnZ2VzdGlvbk1hbnVhbGx5KDEsIFdPUkQyX1RPX1BJQ0spOwogICAgICAgICBhc3NlcnRFcXVhbHMoIm1hbnVhbCBwaWNrIHRoZW4gbWFudWFsIHBpY2siLCBFWFBFQ1RFRF9SRVNVTFQsCi0gICAgICAgICAgICAgICAgbVRleHRWaWV3LmdldFRleHQoKS50b1N0cmluZygpKTsKKyAgICAgICAgICAgICAgICBtRWRpdFRleHQuZ2V0VGV4dCgpLnRvU3RyaW5nKCkpOwogICAgIH0KIAogICAgIHB1YmxpYyB2b2lkIHRlc3REZWxldGVXaG9sZUNvbXBvc2luZ1dvcmQoKSB7CkBAIC0yODgsNyArMjg4LDcgQEAKICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBXT1JEX1RPX1RZUEUubGVuZ3RoKCk7ICsraSkgewogICAgICAgICAgICAgdHlwZShDb25zdGFudHMuQ09ERV9ERUxFVEUpOwogICAgICAgICB9Ci0gICAgICAgIGFzc2VydEVxdWFscygiZGVsZXRlIHdob2xlIGNvbXBvc2luZyB3b3JkIiwgIiIsIG1UZXh0Vmlldy5nZXRUZXh0KCkudG9TdHJpbmcoKSk7CisgICAgICAgIGFzc2VydEVxdWFscygiZGVsZXRlIHdob2xlIGNvbXBvc2luZyB3b3JkIiwgIiIsIG1FZGl0VGV4dC5nZXRUZXh0KCkudG9TdHJpbmcoKSk7CiAgICAgfQogICAgIC8vIFRPRE86IEFkZCBzb21lIHRlc3RzIGZvciBub24tQk1QIGNoYXJhY3RlcnMKIH0KZGlmZiAtLWdpdCBhL3Rlc3RzL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9sYXRpbi9JbnB1dExvZ2ljVGVzdHNOb25FbmdsaXNoLmphdmEgYi90ZXN0cy9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvbGF0aW4vSW5wdXRMb2dpY1Rlc3RzTm9uRW5nbGlzaC5qYXZhCmluZGV4IDMzM2I2MDIuLjJkNzM2ZTMgMTAwNjQ0Ci0tLSBhL3Rlc3RzL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9sYXRpbi9JbnB1dExvZ2ljVGVzdHNOb25FbmdsaXNoLmphdmEKKysrIGIvdGVzdHMvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2xhdGluL0lucHV0TG9naWNUZXN0c05vbkVuZ2xpc2guamF2YQpAQCAtMzAsNyArMzAsNyBAQAogICAgICAgICBjaGFuZ2VMYW5ndWFnZSgiZnIiKTsKICAgICAgICAgdHlwZShTVFJJTkdfVE9fVFlQRSk7CiAgICAgICAgIGFzc2VydEVxdWFscygic2ltcGxlIGF1dG8tY29ycmVjdCBmb3IgRnJlbmNoIiwgRVhQRUNURURfUkVTVUxULAotICAgICAgICAgICAgICAgIG1UZXh0Vmlldy5nZXRUZXh0KCkudG9TdHJpbmcoKSk7CisgICAgICAgICAgICAgICAgbUVkaXRUZXh0LmdldFRleHQoKS50b1N0cmluZygpKTsKICAgICB9CiAKICAgICBwdWJsaWMgdm9pZCB0ZXN0TWFudWFsUGlja1RoZW5TZXBhcmF0b3JGb3JGcmVuY2goKSB7CkBAIC00Miw3ICs0Miw3IEBACiAgICAgICAgIHBpY2tTdWdnZXN0aW9uTWFudWFsbHkoMCwgV09SRDFfVE9fVFlQRSk7CiAgICAgICAgIHR5cGUoV09SRDJfVE9fVFlQRSk7CiAgICAgICAgIGFzc2VydEVxdWFscygibWFudWFsIHBpY2sgdGhlbiBzZXBhcmF0b3IgZm9yIEZyZW5jaCIsIEVYUEVDVEVEX1JFU1VMVCwKLSAgICAgICAgICAgICAgICBtVGV4dFZpZXcuZ2V0VGV4dCgpLnRvU3RyaW5nKCkpOworICAgICAgICAgICAgICAgIG1FZGl0VGV4dC5nZXRUZXh0KCkudG9TdHJpbmcoKSk7CiAgICAgfQogCiAgICAgcHVibGljIHZvaWQgdGVzdFdvcmRUaGVuU3BhY2VUaGVuUHVuY3R1YXRpb25Gcm9tU3RyaXBUd2ljZUZvckZyZW5jaCgpIHsKQEAgLTY0LDcgKzY0LDcgQEAKICAgICAgICAgICAgIHBpY2tTdWdnZXN0aW9uTWFudWFsbHkoMCwgUFVOQ1RVQVRJT05fRlJPTV9TVFJJUCk7CiAgICAgICAgICAgICBwaWNrU3VnZ2VzdGlvbk1hbnVhbGx5KDAsIFBVTkNUVUFUSU9OX0ZST01fU1RSSVApOwogICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKCJ0eXBlIHdvcmQgdGhlbiB0eXBlIHNwYWNlIHRoZW4gcHVuY3R1YXRpb24gZnJvbSBzdHJpcCB0d2ljZSBmb3IgRnJlbmNoIiwKLSAgICAgICAgICAgICAgICAgICAgRVhQRUNURURfUkVTVUxULCBtVGV4dFZpZXcuZ2V0VGV4dCgpLnRvU3RyaW5nKCkpOworICAgICAgICAgICAgICAgICAgICBFWFBFQ1RFRF9SRVNVTFQsIG1FZGl0VGV4dC5nZXRUZXh0KCkudG9TdHJpbmcoKSk7CiAgICAgICAgIH0gZmluYWxseSB7CiAgICAgICAgICAgICBzZXRCb29sZWFuUHJlZmVyZW5jZShORVhUX1dPUkRfUFJFRElDVElPTl9PUFRJT04sIHByZXZpb3VzTmV4dFdvcmRQcmVkaWN0aW9uT3B0aW9uLAogICAgICAgICAgICAgICAgICAgICBkZWZhdWx0TmV4dFdvcmRQcmVkaWN0aW9uT3B0aW9uKTsKQEAgLTk4LDcgKzk4LDcgQEAKICAgICAgICAgY2hhbmdlTGFuZ3VhZ2UoImRlIik7CiAgICAgICAgIHR5cGUoU1RSSU5HX1RPX1RZUEUpOwogICAgICAgICBhc3NlcnRFcXVhbHMoInNpbXBsZSBhdXRvLWNvcnJlY3QgZm9yIEdlcm1hbiIsIEVYUEVDVEVEX1JFU1VMVCwKLSAgICAgICAgICAgICAgICBtVGV4dFZpZXcuZ2V0VGV4dCgpLnRvU3RyaW5nKCkpOworICAgICAgICAgICAgICAgIG1FZGl0VGV4dC5nZXRUZXh0KCkudG9TdHJpbmcoKSk7CiAgICAgfQogCiAgICAgcHVibGljIHZvaWQgdGVzdEF1dG9Db3JyZWN0V2l0aFVtbGF1dEZvckdlcm1hbigpIHsKQEAgLTEwNyw2ICsxMDcsNiBAQAogICAgICAgICBjaGFuZ2VMYW5ndWFnZSgiZGUiKTsKICAgICAgICAgdHlwZShTVFJJTkdfVE9fVFlQRSk7CiAgICAgICAgIGFzc2VydEVxdWFscygiYXV0by1jb3JyZWN0IHdpdGggdW1sYXV0IGZvciBHZXJtYW4iLCBFWFBFQ1RFRF9SRVNVTFQsCi0gICAgICAgICAgICAgICAgbVRleHRWaWV3LmdldFRleHQoKS50b1N0cmluZygpKTsKKyAgICAgICAgICAgICAgICBtRWRpdFRleHQuZ2V0VGV4dCgpLnRvU3RyaW5nKCkpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL3Rlc3RzL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9sYXRpbi9JbnB1dFRlc3RzQmFzZS5qYXZhIGIvdGVzdHMvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2xhdGluL0lucHV0VGVzdHNCYXNlLmphdmEKaW5kZXggOWUxMDdhNC4uODA3YzlmMyAxMDA2NDQKLS0tIGEvdGVzdHMvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2xhdGluL0lucHV0VGVzdHNCYXNlLmphdmEKKysrIGIvdGVzdHMvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2xhdGluL0lucHV0VGVzdHNCYXNlLmphdmEKQEAgLTE5LDcgKzE5LDYgQEAKIGltcG9ydCBhbmRyb2lkLmNvbnRlbnQuQ29udGV4dDsKIGltcG9ydCBhbmRyb2lkLmNvbnRlbnQuU2hhcmVkUHJlZmVyZW5jZXM7CiBpbXBvcnQgYW5kcm9pZC5vcy5Mb29wZXI7Ci1pbXBvcnQgYW5kcm9pZC5vcy5NZXNzYWdlUXVldWU7CiBpbXBvcnQgYW5kcm9pZC5wcmVmZXJlbmNlLlByZWZlcmVuY2VNYW5hZ2VyOwogaW1wb3J0IGFuZHJvaWQudGVzdC5TZXJ2aWNlVGVzdENhc2U7CiBpbXBvcnQgYW5kcm9pZC50ZXh0LklucHV0VHlwZTsKQEAgLTMxLDggKzMwLDggQEAKIGltcG9ydCBhbmRyb2lkLnZpZXcuVmlld0dyb3VwOwogaW1wb3J0IGFuZHJvaWQudmlldy5pbnB1dG1ldGhvZC5FZGl0b3JJbmZvOwogaW1wb3J0IGFuZHJvaWQudmlldy5pbnB1dG1ldGhvZC5JbnB1dENvbm5lY3Rpb247CitpbXBvcnQgYW5kcm9pZC53aWRnZXQuRWRpdFRleHQ7CiBpbXBvcnQgYW5kcm9pZC53aWRnZXQuRnJhbWVMYXlvdXQ7Ci1pbXBvcnQgYW5kcm9pZC53aWRnZXQuVGV4dFZpZXc7CiAKIGltcG9ydCBjb20uYW5kcm9pZC5pbnB1dG1ldGhvZC5rZXlib2FyZC5LZXk7CiBpbXBvcnQgY29tLmFuZHJvaWQuaW5wdXRtZXRob2Qua2V5Ym9hcmQuS2V5Ym9hcmQ7CkBAIC00OSw3ICs0OCw3IEBACiAKICAgICBwcm90ZWN0ZWQgTGF0aW5JTUUgbUxhdGluSU1FOwogICAgIHByb3RlY3RlZCBLZXlib2FyZCBtS2V5Ym9hcmQ7Ci0gICAgcHJvdGVjdGVkIE15VGV4dFZpZXcgbVRleHRWaWV3OworICAgIHByb3RlY3RlZCBNeUVkaXRUZXh0IG1FZGl0VGV4dDsKICAgICBwcm90ZWN0ZWQgVmlldyBtSW5wdXRWaWV3OwogICAgIHByb3RlY3RlZCBJbnB1dENvbm5lY3Rpb24gbUlucHV0Q29ubmVjdGlvbjsKIApAQCAtODgsMjIgKzg3LDM3IEBACiAgICAgICAgIH0KICAgICB9CiAKLSAgICAvLyBBIGhlbHBlciBjbGFzcyB0byBpbmNyZWFzZSBjb250cm9sIG92ZXIgdGhlIFRleHRWaWV3Ci0gICAgcHVibGljIHN0YXRpYyBjbGFzcyBNeVRleHRWaWV3IGV4dGVuZHMgVGV4dFZpZXcgeworICAgIC8vIEEgaGVscGVyIGNsYXNzIHRvIGluY3JlYXNlIGNvbnRyb2wgb3ZlciB0aGUgRWRpdFRleHQKKyAgICBwdWJsaWMgc3RhdGljIGNsYXNzIE15RWRpdFRleHQgZXh0ZW5kcyBFZGl0VGV4dCB7CiAgICAgICAgIHB1YmxpYyBMb2NhbGUgbUN1cnJlbnRMb2NhbGU7Ci0gICAgICAgIHB1YmxpYyBNeVRleHRWaWV3KGZpbmFsIENvbnRleHQgYykgeworICAgICAgICBwdWJsaWMgTXlFZGl0VGV4dChmaW5hbCBDb250ZXh0IGMpIHsKICAgICAgICAgICAgIHN1cGVyKGMpOwogICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCiAgICAgICAgIHB1YmxpYyB2b2lkIG9uQXR0YWNoZWRUb1dpbmRvdygpIHsKKyAgICAgICAgICAgIC8vIE1ha2Ugb25BdHRhY2hlZFRvV2luZG93ICJwdWJsaWMiCiAgICAgICAgICAgICBzdXBlci5vbkF0dGFjaGVkVG9XaW5kb3coKTsKICAgICAgICAgfQorCisgICAgICAgIC8vIG92ZXJyaWRpbmcgaGlkZGVuIEFQSSBpbiBFZGl0VGV4dAogICAgICAgICBwdWJsaWMgTG9jYWxlIGdldFRleHRTZXJ2aWNlc0xvY2FsZSgpIHsKLSAgICAgICAgICAgIC8vIFRoaXMgbWV0aG9kIGlzIG5lY2Vzc2FyeSBiZWNhdXNlIFRleHRWaWV3IGlzIGFza2luZyB0aGlzIG1ldGhvZCBmb3IgdGhlIGxhbmd1YWdlCisgICAgICAgICAgICAvLyBUaGlzIG1ldGhvZCBpcyBuZWNlc3NhcnkgYmVjYXVzZSBFZGl0VGV4dCBpcyBhc2tpbmcgdGhpcyBtZXRob2QgZm9yIHRoZSBsYW5ndWFnZQogICAgICAgICAgICAgLy8gdG8gY2hlY2sgdGhlIHNwZWxsIGluLiBJZiB3ZSBkb24ndCBvdmVycmlkZSB0aGlzLCB0aGUgc3BlbGwgY2hlY2tlciB3aWxsIHJ1biBpbgogICAgICAgICAgICAgLy8gd2hhdGV2ZXIgbGFuZ3VhZ2UgdGhlIGtleWJvYXJkIGlzIGN1cnJlbnRseSBzZXQgb24gdGhlIHRlc3QgZGV2aWNlLCBpZ25vcmluZyBhbnkKICAgICAgICAgICAgIC8vIHNldHRpbmdzIHdlIGRvIGluc2lkZSB0aGUgdGVzdHMuCiAgICAgICAgICAgICByZXR1cm4gbUN1cnJlbnRMb2NhbGU7CiAgICAgICAgIH0KKworICAgICAgICAvLyBvdmVycmlkaW5nIGhpZGRlbiBBUEkgaW4gRWRpdFRleHQKKyAgICAgICAgcHVibGljIExvY2FsZSBnZXRTcGVsbENoZWNrZXJMb2NhbGUoKSB7CisgICAgICAgICAgICAvLyBUaGlzIG1ldGhvZCBpcyBuZWNlc3NhcnkgYmVjYXVzZSBFZGl0VGV4dCBpcyBhc2tpbmcgdGhpcyBtZXRob2QgZm9yIHRoZSBsYW5ndWFnZQorICAgICAgICAgICAgLy8gdG8gY2hlY2sgdGhlIHNwZWxsIGluLiBJZiB3ZSBkb24ndCBvdmVycmlkZSB0aGlzLCB0aGUgc3BlbGwgY2hlY2tlciB3aWxsIHJ1biBpbgorICAgICAgICAgICAgLy8gd2hhdGV2ZXIgbGFuZ3VhZ2UgdGhlIGtleWJvYXJkIGlzIGN1cnJlbnRseSBzZXQgb24gdGhlIHRlc3QgZGV2aWNlLCBpZ25vcmluZyBhbnkKKyAgICAgICAgICAgIC8vIHNldHRpbmdzIHdlIGRvIGluc2lkZSB0aGUgdGVzdHMuCisgICAgICAgICAgICByZXR1cm4gbUN1cnJlbnRMb2NhbGU7CisgICAgICAgIH0KKwogICAgIH0KIAogICAgIHB1YmxpYyBJbnB1dFRlc3RzQmFzZSgpIHsKQEAgLTEzMCwxOCArMTQ0LDE4IEBACiAgICAgQE92ZXJyaWRlCiAgICAgcHJvdGVjdGVkIHZvaWQgc2V0VXAoKSB0aHJvd3MgRXhjZXB0aW9uIHsKICAgICAgICAgc3VwZXIuc2V0VXAoKTsKLSAgICAgICAgbVRleHRWaWV3ID0gbmV3IE15VGV4dFZpZXcoZ2V0Q29udGV4dCgpKTsKKyAgICAgICAgbUVkaXRUZXh0ID0gbmV3IE15RWRpdFRleHQoZ2V0Q29udGV4dCgpKTsKICAgICAgICAgZmluYWwgaW50IGlucHV0VHlwZSA9IElucHV0VHlwZS5UWVBFX0NMQVNTX1RFWFQgfCBJbnB1dFR5cGUuVFlQRV9URVhUX0ZMQUdfQVVUT19DT1JSRUNUCiAgICAgICAgICAgICAgICAgfCBJbnB1dFR5cGUuVFlQRV9URVhUX0ZMQUdfTVVMVElfTElORTsKLSAgICAgICAgbVRleHRWaWV3LnNldElucHV0VHlwZShpbnB1dFR5cGUpOwotICAgICAgICBtVGV4dFZpZXcuc2V0RW5hYmxlZCh0cnVlKTsKKyAgICAgICAgbUVkaXRUZXh0LnNldElucHV0VHlwZShpbnB1dFR5cGUpOworICAgICAgICBtRWRpdFRleHQuc2V0RW5hYmxlZCh0cnVlKTsKICAgICAgICAgc2V0dXBTZXJ2aWNlKCk7CiAgICAgICAgIG1MYXRpbklNRSA9IGdldFNlcnZpY2UoKTsKICAgICAgICAgZmluYWwgYm9vbGVhbiBwcmV2aW91c0RlYnVnU2V0dGluZyA9IHNldERlYnVnTW9kZSh0cnVlKTsKICAgICAgICAgbUxhdGluSU1FLm9uQ3JlYXRlKCk7CiAgICAgICAgIHNldERlYnVnTW9kZShwcmV2aW91c0RlYnVnU2V0dGluZyk7CiAgICAgICAgIGZpbmFsIEVkaXRvckluZm8gZWkgPSBuZXcgRWRpdG9ySW5mbygpOwotICAgICAgICBmaW5hbCBJbnB1dENvbm5lY3Rpb24gaWMgPSBtVGV4dFZpZXcub25DcmVhdGVJbnB1dENvbm5lY3Rpb24oZWkpOworICAgICAgICBmaW5hbCBJbnB1dENvbm5lY3Rpb24gaWMgPSBtRWRpdFRleHQub25DcmVhdGVJbnB1dENvbm5lY3Rpb24oZWkpOwogICAgICAgICBmaW5hbCBMYXlvdXRJbmZsYXRlciBpbmZsYXRlciA9CiAgICAgICAgICAgICAgICAgKExheW91dEluZmxhdGVyKWdldENvbnRleHQoKS5nZXRTeXN0ZW1TZXJ2aWNlKENvbnRleHQuTEFZT1VUX0lORkxBVEVSX1NFUlZJQ0UpOwogICAgICAgICBmaW5hbCBWaWV3R3JvdXAgdmcgPSBuZXcgRnJhbWVMYXlvdXQoZ2V0Q29udGV4dCgpKTsKQEAgLTIyNSw4ICsyMzksOCBAQAogICAgIH0KIAogICAgIHByb3RlY3RlZCB2b2lkIGNoYW5nZUxhbmd1YWdlKGZpbmFsIFN0cmluZyBsb2NhbGUpIHsKLSAgICAgICAgbVRleHRWaWV3Lm1DdXJyZW50TG9jYWxlID0gTG9jYWxlVXRpbHMuY29uc3RydWN0TG9jYWxlRnJvbVN0cmluZyhsb2NhbGUpOwotICAgICAgICBTdWJ0eXBlU3dpdGNoZXIuZ2V0SW5zdGFuY2UoKS5mb3JjZUxvY2FsZShtVGV4dFZpZXcubUN1cnJlbnRMb2NhbGUpOworICAgICAgICBtRWRpdFRleHQubUN1cnJlbnRMb2NhbGUgPSBMb2NhbGVVdGlscy5jb25zdHJ1Y3RMb2NhbGVGcm9tU3RyaW5nKGxvY2FsZSk7CisgICAgICAgIFN1YnR5cGVTd2l0Y2hlci5nZXRJbnN0YW5jZSgpLmZvcmNlTG9jYWxlKG1FZGl0VGV4dC5tQ3VycmVudExvY2FsZSk7CiAgICAgICAgIG1MYXRpbklNRS5sb2FkS2V5Ym9hcmQoKTsKICAgICAgICAgbUtleWJvYXJkID0gbUxhdGluSU1FLm1LZXlib2FyZFN3aXRjaGVyLmdldEtleWJvYXJkKCk7CiAgICAgICAgIHdhaXRGb3JEaWN0aW9uYXJ5VG9CZUxvYWRlZCgpOwpkaWZmIC0tZ2l0IGEvdGVzdHMvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2xhdGluL1B1bmN0dWF0aW9uVGVzdHMuamF2YSBiL3Rlc3RzL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9sYXRpbi9QdW5jdHVhdGlvblRlc3RzLmphdmEKaW5kZXggMWIyZjBlNi4uODRmZjZiMyAxMDA2NDQKLS0tIGEvdGVzdHMvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2xhdGluL1B1bmN0dWF0aW9uVGVzdHMuamF2YQorKysgYi90ZXN0cy9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvbGF0aW4vUHVuY3R1YXRpb25UZXN0cy5qYXZhCkBAIC00NCw3ICs0NCw3IEBACiAgICAgICAgICAgICBwaWNrU3VnZ2VzdGlvbk1hbnVhbGx5KDAsIFBVTkNUVUFUSU9OX0ZST01fU1RSSVApOwogICAgICAgICAgICAgcGlja1N1Z2dlc3Rpb25NYW51YWxseSgwLCBQVU5DVFVBVElPTl9GUk9NX1NUUklQKTsKICAgICAgICAgICAgIGFzc2VydEVxdWFscygidHlwZSB3b3JkIHRoZW4gdHlwZSBzcGFjZSB0aGVuIHB1bmN0dWF0aW9uIGZyb20gc3RyaXAgdHdpY2UiLAotICAgICAgICAgICAgICAgICAgICBFWFBFQ1RFRF9SRVNVTFQsIG1UZXh0Vmlldy5nZXRUZXh0KCkudG9TdHJpbmcoKSk7CisgICAgICAgICAgICAgICAgICAgIEVYUEVDVEVEX1JFU1VMVCwgbUVkaXRUZXh0LmdldFRleHQoKS50b1N0cmluZygpKTsKICAgICAgICAgfSBmaW5hbGx5IHsKICAgICAgICAgICAgIHNldEJvb2xlYW5QcmVmZXJlbmNlKE5FWFRfV09SRF9QUkVESUNUSU9OX09QVElPTiwgcHJldmlvdXNOZXh0V29yZFByZWRpY3Rpb25PcHRpb24sCiAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHROZXh0V29yZFByZWRpY3Rpb25PcHRpb24pOwpAQCAtNTYsNyArNTYsNyBAQAogICAgICAgICBmaW5hbCBTdHJpbmcgRVhQRUNURURfUkVTVUxUID0gInRoaXMgISEiOwogICAgICAgICB0eXBlKFdPUkRfVE9fVFlQRSk7CiAgICAgICAgIGFzc2VydEVxdWFscygibWFudWFsIHBpY2sgdGhlbiBzcGFjZSB0aGVuIHB1bmN0dWF0aW9uIGZyb20ga2V5Ym9hcmQgdHdpY2UiLCBFWFBFQ1RFRF9SRVNVTFQsCi0gICAgICAgICAgICAgICAgbVRleHRWaWV3LmdldFRleHQoKS50b1N0cmluZygpKTsKKyAgICAgICAgICAgICAgICBtRWRpdFRleHQuZ2V0VGV4dCgpLnRvU3RyaW5nKCkpOwogICAgIH0KIAogICAgIHB1YmxpYyB2b2lkIHRlc3RNYW51YWxQaWNrVGhlblB1bmN0dWF0aW9uRnJvbVN0cmlwVHdpY2VUaGVuVHlwZSgpIHsKQEAgLTcwLDcgKzcwLDcgQEAKICAgICAgICAgcGlja1N1Z2dlc3Rpb25NYW51YWxseSgwLCBQVU5DVFVBVElPTl9GUk9NX1NUUklQKTsKICAgICAgICAgdHlwZShXT1JEMl9UT19UWVBFKTsKICAgICAgICAgYXNzZXJ0RXF1YWxzKCJwaWNrIHdvcmQgdGhlbiBwaWNrIHB1bmN0dWF0aW9uIHR3aWNlIHRoZW4gdHlwZSIsIEVYUEVDVEVEX1JFU1VMVCwKLSAgICAgICAgICAgICAgICBtVGV4dFZpZXcuZ2V0VGV4dCgpLnRvU3RyaW5nKCkpOworICAgICAgICAgICAgICAgIG1FZGl0VGV4dC5nZXRUZXh0KCkudG9TdHJpbmcoKSk7CiAgICAgfQogCiAgICAgcHVibGljIHZvaWQgdGVzdE1hbnVhbFBpY2tUaGVuTWFudWFsUGlja1dpdGhQdW5jdEF0U3RhcnQoKSB7CkBAIC04MSw3ICs4MSw3IEBACiAgICAgICAgIHBpY2tTdWdnZXN0aW9uTWFudWFsbHkoMCwgV09SRDFfVE9fVFlQRSk7CiAgICAgICAgIHBpY2tTdWdnZXN0aW9uTWFudWFsbHkoMSwgV09SRDJfVE9fUElDSyk7CiAgICAgICAgIGFzc2VydEVxdWFscygibWFudWFsIHBpY2sgdGhlbiBtYW51YWwgcGljayBhIHdvcmQgd2l0aCBwdW5jdCBhdCBzdGFydCIsIEVYUEVDVEVEX1JFU1VMVCwKLSAgICAgICAgICAgICAgICBtVGV4dFZpZXcuZ2V0VGV4dCgpLnRvU3RyaW5nKCkpOworICAgICAgICAgICAgICAgIG1FZGl0VGV4dC5nZXRUZXh0KCkudG9TdHJpbmcoKSk7CiAgICAgfQogCiAgICAgcHVibGljIHZvaWQgdGVzdE1hbnVhbGx5UGlja2VkV29yZFRoZW5Db2xvbigpIHsKQEAgLTkyLDcgKzkyLDcgQEAKICAgICAgICAgcGlja1N1Z2dlc3Rpb25NYW51YWxseSgwLCBXT1JEX1RPX1RZUEUpOwogICAgICAgICB0eXBlKFBVTkNUVUFUSU9OKTsKICAgICAgICAgYXNzZXJ0RXF1YWxzKCJtYW51YWxseSBwaWNrIHdvcmQgdGhlbiBjb2xvbiIsCi0gICAgICAgICAgICAgICAgRVhQRUNURURfUkVTVUxULCBtVGV4dFZpZXcuZ2V0VGV4dCgpLnRvU3RyaW5nKCkpOworICAgICAgICAgICAgICAgIEVYUEVDVEVEX1JFU1VMVCwgbUVkaXRUZXh0LmdldFRleHQoKS50b1N0cmluZygpKTsKICAgICB9CiAKICAgICBwdWJsaWMgdm9pZCB0ZXN0TWFudWFsbHlQaWNrZWRXb3JkVGhlbk9wZW5QYXJlbigpIHsKQEAgLTEwMyw3ICsxMDMsNyBAQAogICAgICAgICBwaWNrU3VnZ2VzdGlvbk1hbnVhbGx5KDAsIFdPUkRfVE9fVFlQRSk7CiAgICAgICAgIHR5cGUoUFVOQ1RVQVRJT04pOwogICAgICAgICBhc3NlcnRFcXVhbHMoIm1hbnVhbGx5IHBpY2sgd29yZCB0aGVuIG9wZW4gcGFyZW4iLAotICAgICAgICAgICAgICAgIEVYUEVDVEVEX1JFU1VMVCwgbVRleHRWaWV3LmdldFRleHQoKS50b1N0cmluZygpKTsKKyAgICAgICAgICAgICAgICBFWFBFQ1RFRF9SRVNVTFQsIG1FZGl0VGV4dC5nZXRUZXh0KCkudG9TdHJpbmcoKSk7CiAgICAgfQogCiAgICAgcHVibGljIHZvaWQgdGVzdE1hbnVhbGx5UGlja2VkV29yZFRoZW5DbG9zZVBhcmVuKCkgewpAQCAtMTE0LDcgKzExNCw3IEBACiAgICAgICAgIHBpY2tTdWdnZXN0aW9uTWFudWFsbHkoMCwgV09SRF9UT19UWVBFKTsKICAgICAgICAgdHlwZShQVU5DVFVBVElPTik7CiAgICAgICAgIGFzc2VydEVxdWFscygibWFudWFsbHkgcGljayB3b3JkIHRoZW4gY2xvc2UgcGFyZW4iLAotICAgICAgICAgICAgICAgIEVYUEVDVEVEX1JFU1VMVCwgbVRleHRWaWV3LmdldFRleHQoKS50b1N0cmluZygpKTsKKyAgICAgICAgICAgICAgICBFWFBFQ1RFRF9SRVNVTFQsIG1FZGl0VGV4dC5nZXRUZXh0KCkudG9TdHJpbmcoKSk7CiAgICAgfQogCiAgICAgcHVibGljIHZvaWQgdGVzdE1hbnVhbGx5UGlja2VkV29yZFRoZW5TbWlsZXkoKSB7CkBAIC0xMjUsNyArMTI1LDcgQEAKICAgICAgICAgcGlja1N1Z2dlc3Rpb25NYW51YWxseSgwLCBXT1JEX1RPX1RZUEUpOwogICAgICAgICBtTGF0aW5JTUUub25UZXh0SW5wdXQoU1BFQ0lBTF9LRVkpOwogICAgICAgICBhc3NlcnRFcXVhbHMoIm1hbnVhbGx5IHBpY2sgd29yZCB0aGVuIHByZXNzIHRoZSBzbWlsZXkga2V5IiwKLSAgICAgICAgICAgICAgICBFWFBFQ1RFRF9SRVNVTFQsIG1UZXh0Vmlldy5nZXRUZXh0KCkudG9TdHJpbmcoKSk7CisgICAgICAgICAgICAgICAgRVhQRUNURURfUkVTVUxULCBtRWRpdFRleHQuZ2V0VGV4dCgpLnRvU3RyaW5nKCkpOwogICAgIH0KIAogICAgIHB1YmxpYyB2b2lkIHRlc3RNYW51YWxseVBpY2tlZFdvcmRUaGVuRG90Q29tKCkgewpAQCAtMTM2LDcgKzEzNiw3IEBACiAgICAgICAgIHBpY2tTdWdnZXN0aW9uTWFudWFsbHkoMCwgV09SRF9UT19UWVBFKTsKICAgICAgICAgbUxhdGluSU1FLm9uVGV4dElucHV0KFNQRUNJQUxfS0VZKTsKICAgICAgICAgYXNzZXJ0RXF1YWxzKCJtYW51YWxseSBwaWNrIHdvcmQgdGhlbiBwcmVzcyB0aGUgLmNvbSBrZXkiLAotICAgICAgICAgICAgICAgIEVYUEVDVEVEX1JFU1VMVCwgbVRleHRWaWV3LmdldFRleHQoKS50b1N0cmluZygpKTsKKyAgICAgICAgICAgICAgICBFWFBFQ1RFRF9SRVNVTFQsIG1FZGl0VGV4dC5nZXRUZXh0KCkudG9TdHJpbmcoKSk7CiAgICAgfQogCiAgICAgcHVibGljIHZvaWQgdGVzdFR5cGVXb3JkVHlwZURvdFRoZW5QcmVzc0RvdENvbSgpIHsKQEAgLTE0Niw3ICsxNDYsNyBAQAogICAgICAgICB0eXBlKFdPUkRfVE9fVFlQRSk7CiAgICAgICAgIG1MYXRpbklNRS5vblRleHRJbnB1dChTUEVDSUFMX0tFWSk7CiAgICAgICAgIGFzc2VydEVxdWFscygidHlwZSB3b3JkIHR5cGUgZG90IHRoZW4gcHJlc3MgdGhlIC5jb20ga2V5IiwKLSAgICAgICAgICAgICAgICBFWFBFQ1RFRF9SRVNVTFQsIG1UZXh0Vmlldy5nZXRUZXh0KCkudG9TdHJpbmcoKSk7CisgICAgICAgICAgICAgICAgRVhQRUNURURfUkVTVUxULCBtRWRpdFRleHQuZ2V0VGV4dCgpLnRvU3RyaW5nKCkpOwogICAgIH0KIAogICAgIHB1YmxpYyB2b2lkIHRlc3RBdXRvQ29ycmVjdGlvbldpdGhTaW5nbGVRdW90ZUluc2lkZSgpIHsKQEAgLTE1NCw3ICsxNTQsNyBAQAogICAgICAgICBmaW5hbCBTdHJpbmcgRVhQRUNURURfUkVTVUxUID0gInlvdSdkICI7CiAgICAgICAgIHR5cGUoV09SRF9UT19UWVBFKTsKICAgICAgICAgYXNzZXJ0RXF1YWxzKCJhdXRvLWNvcnJlY3Rpb24gd2l0aCBzaW5nbGUgcXVvdGUgaW5zaWRlIiwKLSAgICAgICAgICAgICAgICBFWFBFQ1RFRF9SRVNVTFQsIG1UZXh0Vmlldy5nZXRUZXh0KCkudG9TdHJpbmcoKSk7CisgICAgICAgICAgICAgICAgRVhQRUNURURfUkVTVUxULCBtRWRpdFRleHQuZ2V0VGV4dCgpLnRvU3RyaW5nKCkpOwogICAgIH0KIAogICAgIHB1YmxpYyB2b2lkIHRlc3RBdXRvQ29ycmVjdGlvbldpdGhTaW5nbGVRdW90ZXNBcm91bmQoKSB7CkBAIC0xNjIsNiArMTYyLDYgQEAKICAgICAgICAgZmluYWwgU3RyaW5nIEVYUEVDVEVEX1JFU1VMVCA9ICIndGhpcycgIjsKICAgICAgICAgdHlwZShXT1JEX1RPX1RZUEUpOwogICAgICAgICBhc3NlcnRFcXVhbHMoImF1dG8tY29ycmVjdGlvbiB3aXRoIHNpbmdsZSBxdW90ZXMgYXJvdW5kIiwKLSAgICAgICAgICAgICAgICBFWFBFQ1RFRF9SRVNVTFQsIG1UZXh0Vmlldy5nZXRUZXh0KCkudG9TdHJpbmcoKSk7CisgICAgICAgICAgICAgICAgRVhQRUNURURfUkVTVUxULCBtRWRpdFRleHQuZ2V0VGV4dCgpLnRvU3RyaW5nKCkpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL3Rlc3RzL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9sYXRpbi9zcGVsbGNoZWNrL0FuZHJvaWRTcGVsbENoZWNrZXJTZXJ2aWNlVGVzdC5qYXZhIGIvdGVzdHMvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2xhdGluL3NwZWxsY2hlY2svQW5kcm9pZFNwZWxsQ2hlY2tlclNlcnZpY2VUZXN0LmphdmEKaW5kZXggODc5Y2M0Ni4uOTk1ZDdmMCAxMDA2NDQKLS0tIGEvdGVzdHMvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2xhdGluL3NwZWxsY2hlY2svQW5kcm9pZFNwZWxsQ2hlY2tlclNlcnZpY2VUZXN0LmphdmEKKysrIGIvdGVzdHMvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2xhdGluL3NwZWxsY2hlY2svQW5kcm9pZFNwZWxsQ2hlY2tlclNlcnZpY2VUZXN0LmphdmEKQEAgLTI0LDE0ICsyNCwxNSBAQAogQExhcmdlVGVzdAogcHVibGljIGNsYXNzIEFuZHJvaWRTcGVsbENoZWNrZXJTZXJ2aWNlVGVzdCBleHRlbmRzIElucHV0VGVzdHNCYXNlIHsKICAgICBwdWJsaWMgdm9pZCB0ZXN0U3BlbGxjaGVja2VyKCkgewotICAgICAgICBtVGV4dFZpZXcub25BdHRhY2hlZFRvV2luZG93KCk7Ci0gICAgICAgIG1UZXh0Vmlldy5zZXRUZXh0KCJ0Z2lzIik7Ci0gICAgICAgIHR5cGUoIiAiKTsKKyAgICAgICAgY2hhbmdlTGFuZ3VhZ2UoImVuX1VTIik7CisgICAgICAgIG1FZGl0VGV4dC5zZXRUZXh0KCJ0Z2lzICIpOworICAgICAgICBtRWRpdFRleHQuc2V0U2VsZWN0aW9uKG1FZGl0VGV4dC5nZXRUZXh0KCkubGVuZ3RoKCkpOworICAgICAgICBtRWRpdFRleHQub25BdHRhY2hlZFRvV2luZG93KCk7CiAgICAgICAgIHNsZWVwKDEwMDApOwogICAgICAgICBydW5NZXNzYWdlcygpOwogICAgICAgICBzbGVlcCgxMDAwKTsKIAotICAgICAgICBmaW5hbCBTcGFuR2V0dGVyIHNwYW4gPSBuZXcgU3BhbkdldHRlcihtVGV4dFZpZXcuZ2V0VGV4dCgpLCBTdWdnZXN0aW9uU3Bhbi5jbGFzcyk7CisgICAgICAgIGZpbmFsIFNwYW5HZXR0ZXIgc3BhbiA9IG5ldyBTcGFuR2V0dGVyKG1FZGl0VGV4dC5nZXRUZXh0KCksIFN1Z2dlc3Rpb25TcGFuLmNsYXNzKTsKICAgICAgICAgLy8gSWYgbm8gc3BhbiwgdGhlIGZvbGxvd2luZyB3aWxsIGNyYXNoCiAgICAgICAgIGZpbmFsIFN0cmluZ1tdIHN1Z2dlc3Rpb25zID0gc3Bhbi5nZXRTdWdnZXN0aW9ucygpOwogICAgICAgICAvLyBGb3IgdGhpcyB0ZXN0IHdlIGNvbnNpZGVyICJ0Z2lzIiBzaG91bGQgeWllbGQgYXQgbGVhc3QgMiBzdWdnZXN0aW9ucyAoYXQgdGhpcyBtb21lbnQKQEAgLTQzLDE0ICs0NCwxNSBAQAogCiAgICAgcHVibGljIHZvaWQgdGVzdFJ1c3NpYW5TcGVsbGNoZWNrZXIoKSB7CiAgICAgICAgIGNoYW5nZUxhbmd1YWdlKCJydSIpOwotICAgICAgICBtVGV4dFZpZXcub25BdHRhY2hlZFRvV2luZG93KCk7Ci0gICAgICAgIG1UZXh0Vmlldy5zZXRUZXh0KCLQs9C+0LTQvyIpOwotICAgICAgICB0eXBlKCIgIik7CisgICAgICAgIG1FZGl0VGV4dC5vbkF0dGFjaGVkVG9XaW5kb3coKTsKKyAgICAgICAgbUVkaXRUZXh0LnNldFRleHQoItCz0L7QtNC/ICIpOworICAgICAgICBtRWRpdFRleHQuc2V0U2VsZWN0aW9uKG1FZGl0VGV4dC5nZXRUZXh0KCkubGVuZ3RoKCkpOworICAgICAgICBtRWRpdFRleHQub25BdHRhY2hlZFRvV2luZG93KCk7CiAgICAgICAgIHNsZWVwKDEwMDApOwogICAgICAgICBydW5NZXNzYWdlcygpOwogICAgICAgICBzbGVlcCgxMDAwKTsKIAotICAgICAgICBmaW5hbCBTcGFuR2V0dGVyIHNwYW4gPSBuZXcgU3BhbkdldHRlcihtVGV4dFZpZXcuZ2V0VGV4dCgpLCBTdWdnZXN0aW9uU3Bhbi5jbGFzcyk7CisgICAgICAgIGZpbmFsIFNwYW5HZXR0ZXIgc3BhbiA9IG5ldyBTcGFuR2V0dGVyKG1FZGl0VGV4dC5nZXRUZXh0KCksIFN1Z2dlc3Rpb25TcGFuLmNsYXNzKTsKICAgICAgICAgLy8gSWYgbm8gc3BhbiwgdGhlIGZvbGxvd2luZyB3aWxsIGNyYXNoCiAgICAgICAgIGZpbmFsIFN0cmluZ1tdIHN1Z2dlc3Rpb25zID0gc3Bhbi5nZXRTdWdnZXN0aW9ucygpOwogICAgICAgICAvLyBGb3IgdGhpcyB0ZXN0IHdlIGNvbnNpZGVyICLQs9C+0LTQvyIgc2hvdWxkIHlpZWxkIGF0IGxlYXN0IDIgc3VnZ2VzdGlvbnMgKGF0IHRoaXMgbW9tZW50Cg==