ZGlmZiAtLWdpdCBhL2RpY3Rpb25hcmllcy9lbl9HQl93b3JkbGlzdC5jb21iaW5lZC5neiBiL2RpY3Rpb25hcmllcy9lbl9HQl93b3JkbGlzdC5jb21iaW5lZC5negppbmRleCBiM2U1Y2ZjLi45M2M1ZjNkIDEwMDY0NAotLS0gYS9kaWN0aW9uYXJpZXMvZW5fR0Jfd29yZGxpc3QuY29tYmluZWQuZ3oKKysrIGIvZGljdGlvbmFyaWVzL2VuX0dCX3dvcmRsaXN0LmNvbWJpbmVkLmd6CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RpY3Rpb25hcmllcy9lbl9VU193b3JkbGlzdC5jb21iaW5lZC5neiBiL2RpY3Rpb25hcmllcy9lbl9VU193b3JkbGlzdC5jb21iaW5lZC5negppbmRleCA2NzMyOGQ4Li5jMjQyMWRjIDEwMDY0NAotLS0gYS9kaWN0aW9uYXJpZXMvZW5fVVNfd29yZGxpc3QuY29tYmluZWQuZ3oKKysrIGIvZGljdGlvbmFyaWVzL2VuX1VTX3dvcmRsaXN0LmNvbWJpbmVkLmd6CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RpY3Rpb25hcmllcy9lbl93b3JkbGlzdC5jb21iaW5lZC5neiBiL2RpY3Rpb25hcmllcy9lbl93b3JkbGlzdC5jb21iaW5lZC5negppbmRleCA3ZmM2Y2ZmLi4zNzMyOTkzIDEwMDY0NAotLS0gYS9kaWN0aW9uYXJpZXMvZW5fd29yZGxpc3QuY29tYmluZWQuZ3oKKysrIGIvZGljdGlvbmFyaWVzL2VuX3dvcmRsaXN0LmNvbWJpbmVkLmd6CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RpY3Rpb25hcmllcy9mcl93b3JkbGlzdC5jb21iaW5lZC5neiBiL2RpY3Rpb25hcmllcy9mcl93b3JkbGlzdC5jb21iaW5lZC5negppbmRleCBjN2M2OTc3Li43ZGU0NjI1IDEwMDY0NAotLS0gYS9kaWN0aW9uYXJpZXMvZnJfd29yZGxpc3QuY29tYmluZWQuZ3oKKysrIGIvZGljdGlvbmFyaWVzL2ZyX3dvcmRsaXN0LmNvbWJpbmVkLmd6CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RpY3Rpb25hcmllcy9ydV93b3JkbGlzdC5jb21iaW5lZC5neiBiL2RpY3Rpb25hcmllcy9ydV93b3JkbGlzdC5jb21iaW5lZC5negppbmRleCA0ZjkyODA1Li4xY2ZhYjRlIDEwMDY0NAotLS0gYS9kaWN0aW9uYXJpZXMvcnVfd29yZGxpc3QuY29tYmluZWQuZ3oKKysrIGIvZGljdGlvbmFyaWVzL3J1X3dvcmRsaXN0LmNvbWJpbmVkLmd6CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2phdmEvQW5kcm9pZE1hbmlmZXN0LnhtbCBiL2phdmEvQW5kcm9pZE1hbmlmZXN0LnhtbAppbmRleCAxN2QxMWMwLi4yMjczMzk0IDEwMDY0NAotLS0gYS9qYXZhL0FuZHJvaWRNYW5pZmVzdC54bWwKKysrIGIvamF2YS9BbmRyb2lkTWFuaWZlc3QueG1sCkBAIC0yOSwxMyArMjksMTMgQEAKICAgICA8dXNlcy1wZXJtaXNzaW9uIGFuZHJvaWQ6bmFtZT0iYW5kcm9pZC5wZXJtaXNzaW9uLldSSVRFX0VYVEVSTkFMX1NUT1JBR0UiIC8+CiAgICAgPHVzZXMtcGVybWlzc2lvbiBhbmRyb2lkOm5hbWU9ImFuZHJvaWQucGVybWlzc2lvbi5ET1dOTE9BRF9XSVRIT1VUX05PVElGSUNBVElPTiIgLz4KIAotICAgIDxhcHBsaWNhdGlvbiBhbmRyb2lkOmxhYmVsPSJAc3RyaW5nL2Fvc3BfYW5kcm9pZF9rZXlib2FyZF9pbWVfbmFtZSIKKyAgICA8YXBwbGljYXRpb24gYW5kcm9pZDpsYWJlbD0iQHN0cmluZy9lbmdsaXNoX2ltZV9uYW1lIgogICAgICAgICAgICAgYW5kcm9pZDppY29uPSJAbWlwbWFwL2ljX2ltZV9zZXR0aW5ncyIKICAgICAgICAgICAgIGFuZHJvaWQ6a2lsbEFmdGVyUmVzdG9yZT0iZmFsc2UiCiAgICAgICAgICAgICBhbmRyb2lkOnN1cHBvcnRzUnRsPSJ0cnVlIj4KIAogICAgICAgICA8c2VydmljZSBhbmRyb2lkOm5hbWU9IkxhdGluSU1FIgotICAgICAgICAgICAgICAgIGFuZHJvaWQ6bGFiZWw9IkBzdHJpbmcvYW9zcF9hbmRyb2lkX2tleWJvYXJkX2ltZV9uYW1lIgorICAgICAgICAgICAgICAgIGFuZHJvaWQ6bGFiZWw9IkBzdHJpbmcvZW5nbGlzaF9pbWVfbmFtZSIKICAgICAgICAgICAgICAgICBhbmRyb2lkOnBlcm1pc3Npb249ImFuZHJvaWQucGVybWlzc2lvbi5CSU5EX0lOUFVUX01FVEhPRCI+CiAgICAgICAgICAgICA8aW50ZW50LWZpbHRlcj4KICAgICAgICAgICAgICAgICA8YWN0aW9uIGFuZHJvaWQ6bmFtZT0iYW5kcm9pZC52aWV3LklucHV0TWV0aG9kIiAvPgpAQCAtNDQsNyArNDQsNyBAQAogICAgICAgICA8L3NlcnZpY2U+CiAKICAgICAgICAgPHNlcnZpY2UgYW5kcm9pZDpuYW1lPSIuc3BlbGxjaGVjay5BbmRyb2lkU3BlbGxDaGVja2VyU2VydmljZSIKLSAgICAgICAgICAgICAgICAgYW5kcm9pZDpsYWJlbD0iQHN0cmluZy9hb3NwX3NwZWxsX2NoZWNrZXJfc2VydmljZV9uYW1lIgorICAgICAgICAgICAgICAgICBhbmRyb2lkOmxhYmVsPSJAc3RyaW5nL3NwZWxsX2NoZWNrZXJfc2VydmljZV9uYW1lIgogICAgICAgICAgICAgICAgICBhbmRyb2lkOnBlcm1pc3Npb249ImFuZHJvaWQucGVybWlzc2lvbi5CSU5EX1RFWFRfU0VSVklDRSI+CiAgICAgICAgICAgICA8aW50ZW50LWZpbHRlcj4KICAgICAgICAgICAgICAgICA8YWN0aW9uIGFuZHJvaWQ6bmFtZT0iYW5kcm9pZC5zZXJ2aWNlLnRleHRzZXJ2aWNlLlNwZWxsQ2hlY2tlclNlcnZpY2UiIC8+CkBAIC01Myw3ICs1Myw3IEBACiAgICAgICAgIDwvc2VydmljZT4KIAogICAgICAgICA8YWN0aXZpdHkgYW5kcm9pZDpuYW1lPSIuc2V0dXAuU2V0dXBBY3Rpdml0eSIKLSAgICAgICAgICAgICAgICBhbmRyb2lkOmxhYmVsPSJAc3RyaW5nL2Fvc3BfYW5kcm9pZF9rZXlib2FyZF9pbWVfbmFtZSIKKyAgICAgICAgICAgICAgICBhbmRyb2lkOmxhYmVsPSJAc3RyaW5nL2VuZ2xpc2hfaW1lX25hbWUiCiAgICAgICAgICAgICAgICAgYW5kcm9pZDppY29uPSJAZHJhd2FibGUvaWNfc2V0dXBfd2l6YXJkIj4KICAgICAgICAgICAgIDxpbnRlbnQtZmlsdGVyPgogICAgICAgICAgICAgICAgIDxhY3Rpb24gYW5kcm9pZDpuYW1lPSJhbmRyb2lkLmludGVudC5hY3Rpb24uTUFJTiIgLz4KQEAgLTY5LDcgKzY5LDcgQEAKICAgICAgICAgICAgIDwvaW50ZW50LWZpbHRlcj4KICAgICAgICAgPC9yZWNlaXZlcj4KIAotICAgICAgICA8YWN0aXZpdHkgYW5kcm9pZDpuYW1lPSJTZXR0aW5nc0FjdGl2aXR5IiBhbmRyb2lkOmxhYmVsPSJAc3RyaW5nL2Fvc3BfYW5kcm9pZF9rZXlib2FyZF9pbWVfc2V0dGluZ3MiCisgICAgICAgIDxhY3Rpdml0eSBhbmRyb2lkOm5hbWU9IlNldHRpbmdzQWN0aXZpdHkiIGFuZHJvaWQ6bGFiZWw9IkBzdHJpbmcvZW5nbGlzaF9pbWVfc2V0dGluZ3MiCiAgICAgICAgICAgICAgICAgICBhbmRyb2lkOnVpT3B0aW9ucz0ic3BsaXRBY3Rpb25CYXJXaGVuTmFycm93Ij4KICAgICAgICAgICAgIDxpbnRlbnQtZmlsdGVyPgogICAgICAgICAgICAgICAgIDxhY3Rpb24gYW5kcm9pZDpuYW1lPSJhbmRyb2lkLmludGVudC5hY3Rpb24uTUFJTiIgLz4KQEAgLTc3LDcgKzc3LDcgQEAKICAgICAgICAgPC9hY3Rpdml0eT4KIAogICAgICAgICA8YWN0aXZpdHkgYW5kcm9pZDpuYW1lPSJjb20uYW5kcm9pZC5pbnB1dG1ldGhvZC5sYXRpbi5zcGVsbGNoZWNrLlNwZWxsQ2hlY2tlclNldHRpbmdzQWN0aXZpdHkiCi0gICAgICAgICAgICAgICAgICBhbmRyb2lkOmxhYmVsPSJAc3RyaW5nL2Fvc3BfYW5kcm9pZF9zcGVsbF9jaGVja2VyX3NlcnZpY2Vfc2V0dGluZ3MiPgorICAgICAgICAgICAgICAgICAgYW5kcm9pZDpsYWJlbD0iQHN0cmluZy9hbmRyb2lkX3NwZWxsX2NoZWNrZXJfc2V0dGluZ3MiPgogICAgICAgICAgICAgPGludGVudC1maWx0ZXI+CiAgICAgICAgICAgICAgICAgPGFjdGlvbiBhbmRyb2lkOm5hbWU9ImFuZHJvaWQuaW50ZW50LmFjdGlvbi5NQUlOIiAvPgogICAgICAgICAgICAgPC9pbnRlbnQtZmlsdGVyPgpkaWZmIC0tZ2l0IGEvamF2YS9yZXMvY29sb3Ivc2V0dXBfc3RlcF9hY3Rpb25fYmFja2dyb3VuZC54bWwgYi9qYXZhL3Jlcy9jb2xvci9zZXR1cF9zdGVwX2FjdGlvbl9iYWNrZ3JvdW5kLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OTEyMGI0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9yZXMvY29sb3Ivc2V0dXBfc3RlcF9hY3Rpb25fYmFja2dyb3VuZC54bWwKQEAgLTAsMCArMSwzMCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzwhLS0KKy8qCisqKgorKiogQ29weXJpZ2h0IDIwMTMsIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyoqCisqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorKioKKyoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyoqCisqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyovCistLT4KKworPHNlbGVjdG9yIHhtbG5zOmFuZHJvaWQ9Imh0dHA6Ly9zY2hlbWFzLmFuZHJvaWQuY29tL2Fway9yZXMvYW5kcm9pZCI+CisgICAgPGl0ZW0KKyAgICAgICAgYW5kcm9pZDpzdGF0ZV9mb2N1c2VkPSJ0cnVlIgorICAgICAgICBhbmRyb2lkOmNvbG9yPSJAY29sb3Ivc2V0dXBfdGV4dF9hY3Rpb24iIC8+CisgICAgPGl0ZW0KKyAgICAgICAgYW5kcm9pZDpzdGF0ZV9wcmVzc2VkPSJ0cnVlIgorICAgICAgICBhbmRyb2lkOmNvbG9yPSJAY29sb3Ivc2V0dXBfdGV4dF9hY3Rpb24iIC8+CisgICAgPGl0ZW0KKyAgICAgICAgYW5kcm9pZDpjb2xvcj0iQGNvbG9yL3NldHVwX3N0ZXBfYmFja2dyb3VuZCIgLz4KKzwvc2VsZWN0b3I+CmRpZmYgLS1naXQgYS9qYXZhL3Jlcy9jb2xvci9zZXR1cF9zdGVwX2FjdGlvbl9jb2xvci54bWwgYi9qYXZhL3Jlcy9jb2xvci9zZXR1cF9zdGVwX2FjdGlvbl9jb2xvci54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzUzZTAyNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvcmVzL2NvbG9yL3NldHVwX3N0ZXBfYWN0aW9uX2NvbG9yLnhtbApAQCAtMCwwICsxLDMwIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPCEtLQorLyoKKyoqCisqKiBDb3B5cmlnaHQgMjAxMywgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorKioKKyoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisqKgorKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorKioKKyoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorKi8KKy0tPgorCis8c2VsZWN0b3IgeG1sbnM6YW5kcm9pZD0iaHR0cDovL3NjaGVtYXMuYW5kcm9pZC5jb20vYXBrL3Jlcy9hbmRyb2lkIj4KKyAgICA8aXRlbQorICAgICAgICBhbmRyb2lkOnN0YXRlX2ZvY3VzZWQ9InRydWUiCisgICAgICAgIGFuZHJvaWQ6Y29sb3I9IkBjb2xvci9zZXR1cF9zdGVwX2JhY2tncm91bmQiIC8+CisgICAgPGl0ZW0KKyAgICAgICAgYW5kcm9pZDpzdGF0ZV9wcmVzc2VkPSJ0cnVlIgorICAgICAgICBhbmRyb2lkOmNvbG9yPSJAY29sb3Ivc2V0dXBfc3RlcF9iYWNrZ3JvdW5kIiAvPgorICAgIDxpdGVtCisgICAgICAgIGFuZHJvaWQ6Y29sb3I9IkBjb2xvci9zZXR1cF90ZXh0X2FjdGlvbiIgLz4KKzwvc2VsZWN0b3I+CmRpZmYgLS1naXQgYS9qYXZhL3Jlcy9kcmF3YWJsZS1oZHBpL2ljX21lbnVfYWRkLnBuZyBiL2phdmEvcmVzL2RyYXdhYmxlLWhkcGkvaWNfbWVudV9hZGQucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRiNjhmNTIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL3Jlcy9kcmF3YWJsZS1oZHBpL2ljX21lbnVfYWRkLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9qYXZhL3Jlcy9kcmF3YWJsZS1oZHBpL3VuYnVuZGxlZF9jaGVja18wMS5wbmcgYi9qYXZhL3Jlcy9kcmF3YWJsZS1oZHBpL3VuYnVuZGxlZF9jaGVja18wMS5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDJjY2UyZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvcmVzL2RyYXdhYmxlLWhkcGkvdW5idW5kbGVkX2NoZWNrXzAxLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9qYXZhL3Jlcy9kcmF3YWJsZS1oZHBpL3VuYnVuZGxlZF9jaGVja18wMi5wbmcgYi9qYXZhL3Jlcy9kcmF3YWJsZS1oZHBpL3VuYnVuZGxlZF9jaGVja18wMi5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGNkMTIwZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvcmVzL2RyYXdhYmxlLWhkcGkvdW5idW5kbGVkX2NoZWNrXzAyLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9qYXZhL3Jlcy9kcmF3YWJsZS1oZHBpL3VuYnVuZGxlZF9lYXJ0aF8wMS5wbmcgYi9qYXZhL3Jlcy9kcmF3YWJsZS1oZHBpL3VuYnVuZGxlZF9lYXJ0aF8wMS5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGEwZjA4NwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvcmVzL2RyYXdhYmxlLWhkcGkvdW5idW5kbGVkX2VhcnRoXzAxLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9qYXZhL3Jlcy9kcmF3YWJsZS1oZHBpL3VuYnVuZGxlZF9lYXJ0aF8wMi5wbmcgYi9qYXZhL3Jlcy9kcmF3YWJsZS1oZHBpL3VuYnVuZGxlZF9lYXJ0aF8wMi5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjRiZDQyMQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvcmVzL2RyYXdhYmxlLWhkcGkvdW5idW5kbGVkX2VhcnRoXzAyLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9qYXZhL3Jlcy9kcmF3YWJsZS1oZHBpL3VuYnVuZGxlZF9rZXlfMDEucG5nIGIvamF2YS9yZXMvZHJhd2FibGUtaGRwaS91bmJ1bmRsZWRfa2V5XzAxLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44N2M5ZTJjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9yZXMvZHJhd2FibGUtaGRwaS91bmJ1bmRsZWRfa2V5XzAxLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9qYXZhL3Jlcy9kcmF3YWJsZS1oZHBpL3VuYnVuZGxlZF9rZXlfMDIucG5nIGIvamF2YS9yZXMvZHJhd2FibGUtaGRwaS91bmJ1bmRsZWRfa2V5XzAyLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNzQ3Mzg0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9yZXMvZHJhd2FibGUtaGRwaS91bmJ1bmRsZWRfa2V5XzAyLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9qYXZhL3Jlcy9kcmF3YWJsZS1oZHBpL3VuYnVuZGxlZF9zZWxlY3RfMDEucG5nIGIvamF2YS9yZXMvZHJhd2FibGUtaGRwaS91bmJ1bmRsZWRfc2VsZWN0XzAxLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYjNkZTJmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9yZXMvZHJhd2FibGUtaGRwaS91bmJ1bmRsZWRfc2VsZWN0XzAxLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9qYXZhL3Jlcy9kcmF3YWJsZS1oZHBpL3VuYnVuZGxlZF9zZWxlY3RfMDIucG5nIGIvamF2YS9yZXMvZHJhd2FibGUtaGRwaS91bmJ1bmRsZWRfc2VsZWN0XzAyLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNTZmZGFiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9yZXMvZHJhd2FibGUtaGRwaS91bmJ1bmRsZWRfc2VsZWN0XzAyLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9qYXZhL3Jlcy9kcmF3YWJsZS1tZHBpL2ljX21lbnVfYWRkLnBuZyBiL2phdmEvcmVzL2RyYXdhYmxlLW1kcGkvaWNfbWVudV9hZGQucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE1ZmZhZGQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL3Jlcy9kcmF3YWJsZS1tZHBpL2ljX21lbnVfYWRkLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9qYXZhL3Jlcy9kcmF3YWJsZS1tZHBpL3VuYnVuZGxlZF9jaGVja18wMS5wbmcgYi9qYXZhL3Jlcy9kcmF3YWJsZS1tZHBpL3VuYnVuZGxlZF9jaGVja18wMS5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDBkMDJhMwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvcmVzL2RyYXdhYmxlLW1kcGkvdW5idW5kbGVkX2NoZWNrXzAxLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9qYXZhL3Jlcy9kcmF3YWJsZS1tZHBpL3VuYnVuZGxlZF9jaGVja18wMi5wbmcgYi9qYXZhL3Jlcy9kcmF3YWJsZS1tZHBpL3VuYnVuZGxlZF9jaGVja18wMi5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDM0ZmEyMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvcmVzL2RyYXdhYmxlLW1kcGkvdW5idW5kbGVkX2NoZWNrXzAyLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9qYXZhL3Jlcy9kcmF3YWJsZS1tZHBpL3VuYnVuZGxlZF9lYXJ0aF8wMS5wbmcgYi9qYXZhL3Jlcy9kcmF3YWJsZS1tZHBpL3VuYnVuZGxlZF9lYXJ0aF8wMS5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmE2MDE4MQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvcmVzL2RyYXdhYmxlLW1kcGkvdW5idW5kbGVkX2VhcnRoXzAxLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9qYXZhL3Jlcy9kcmF3YWJsZS1tZHBpL3VuYnVuZGxlZF9lYXJ0aF8wMi5wbmcgYi9qYXZhL3Jlcy9kcmF3YWJsZS1tZHBpL3VuYnVuZGxlZF9lYXJ0aF8wMi5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWM1MjYzOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvcmVzL2RyYXdhYmxlLW1kcGkvdW5idW5kbGVkX2VhcnRoXzAyLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9qYXZhL3Jlcy9kcmF3YWJsZS1tZHBpL3VuYnVuZGxlZF9rZXlfMDEucG5nIGIvamF2YS9yZXMvZHJhd2FibGUtbWRwaS91bmJ1bmRsZWRfa2V5XzAxLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44Y2Q3MmRiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9yZXMvZHJhd2FibGUtbWRwaS91bmJ1bmRsZWRfa2V5XzAxLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9qYXZhL3Jlcy9kcmF3YWJsZS1tZHBpL3VuYnVuZGxlZF9rZXlfMDIucG5nIGIvamF2YS9yZXMvZHJhd2FibGUtbWRwaS91bmJ1bmRsZWRfa2V5XzAyLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZWY2ZTBjCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9yZXMvZHJhd2FibGUtbWRwaS91bmJ1bmRsZWRfa2V5XzAyLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9qYXZhL3Jlcy9kcmF3YWJsZS1tZHBpL3VuYnVuZGxlZF9zZWxlY3RfMDEucG5nIGIvamF2YS9yZXMvZHJhd2FibGUtbWRwaS91bmJ1bmRsZWRfc2VsZWN0XzAxLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YWIwMDhhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9yZXMvZHJhd2FibGUtbWRwaS91bmJ1bmRsZWRfc2VsZWN0XzAxLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9qYXZhL3Jlcy9kcmF3YWJsZS1tZHBpL3VuYnVuZGxlZF9zZWxlY3RfMDIucG5nIGIvamF2YS9yZXMvZHJhd2FibGUtbWRwaS91bmJ1bmRsZWRfc2VsZWN0XzAyLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YWY4MDdiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9yZXMvZHJhd2FibGUtbWRwaS91bmJ1bmRsZWRfc2VsZWN0XzAyLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9qYXZhL3Jlcy9kcmF3YWJsZS14aGRwaS9pY19tZW51X2FkZC5wbmcgYi9qYXZhL3Jlcy9kcmF3YWJsZS14aGRwaS9pY19tZW51X2FkZC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDIwNTEwZQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvcmVzL2RyYXdhYmxlLXhoZHBpL2ljX21lbnVfYWRkLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9qYXZhL3Jlcy9kcmF3YWJsZS14aGRwaS91bmJ1bmRsZWRfY2hlY2tfMDEucG5nIGIvamF2YS9yZXMvZHJhd2FibGUteGhkcGkvdW5idW5kbGVkX2NoZWNrXzAxLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMzAwYTdmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9yZXMvZHJhd2FibGUteGhkcGkvdW5idW5kbGVkX2NoZWNrXzAxLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9qYXZhL3Jlcy9kcmF3YWJsZS14aGRwaS91bmJ1bmRsZWRfY2hlY2tfMDIucG5nIGIvamF2YS9yZXMvZHJhd2FibGUteGhkcGkvdW5idW5kbGVkX2NoZWNrXzAyLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MTUxODg2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9yZXMvZHJhd2FibGUteGhkcGkvdW5idW5kbGVkX2NoZWNrXzAyLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9qYXZhL3Jlcy9kcmF3YWJsZS14aGRwaS91bmJ1bmRsZWRfZWFydGhfMDEucG5nIGIvamF2YS9yZXMvZHJhd2FibGUteGhkcGkvdW5idW5kbGVkX2VhcnRoXzAxLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNGI2NjM0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9yZXMvZHJhd2FibGUteGhkcGkvdW5idW5kbGVkX2VhcnRoXzAxLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9qYXZhL3Jlcy9kcmF3YWJsZS14aGRwaS91bmJ1bmRsZWRfZWFydGhfMDIucG5nIGIvamF2YS9yZXMvZHJhd2FibGUteGhkcGkvdW5idW5kbGVkX2VhcnRoXzAyLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41OWFhMDMxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9yZXMvZHJhd2FibGUteGhkcGkvdW5idW5kbGVkX2VhcnRoXzAyLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9qYXZhL3Jlcy9kcmF3YWJsZS14aGRwaS91bmJ1bmRsZWRfa2V5XzAxLnBuZyBiL2phdmEvcmVzL2RyYXdhYmxlLXhoZHBpL3VuYnVuZGxlZF9rZXlfMDEucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM4YjExN2IKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL3Jlcy9kcmF3YWJsZS14aGRwaS91bmJ1bmRsZWRfa2V5XzAxLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9qYXZhL3Jlcy9kcmF3YWJsZS14aGRwaS91bmJ1bmRsZWRfa2V5XzAyLnBuZyBiL2phdmEvcmVzL2RyYXdhYmxlLXhoZHBpL3VuYnVuZGxlZF9rZXlfMDIucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRjMmRhNTYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL3Jlcy9kcmF3YWJsZS14aGRwaS91bmJ1bmRsZWRfa2V5XzAyLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9qYXZhL3Jlcy9kcmF3YWJsZS14aGRwaS91bmJ1bmRsZWRfc2VsZWN0XzAxLnBuZyBiL2phdmEvcmVzL2RyYXdhYmxlLXhoZHBpL3VuYnVuZGxlZF9zZWxlY3RfMDEucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJhZjFlNTUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL3Jlcy9kcmF3YWJsZS14aGRwaS91bmJ1bmRsZWRfc2VsZWN0XzAxLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9qYXZhL3Jlcy9kcmF3YWJsZS14aGRwaS91bmJ1bmRsZWRfc2VsZWN0XzAyLnBuZyBiL2phdmEvcmVzL2RyYXdhYmxlLXhoZHBpL3VuYnVuZGxlZF9zZWxlY3RfMDIucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFkMTA1OGUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL3Jlcy9kcmF3YWJsZS14aGRwaS91bmJ1bmRsZWRfc2VsZWN0XzAyLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9qYXZhL3Jlcy9kcmF3YWJsZS9pY19zZXR1cF9maW5pc2gueG1sIGIvamF2YS9yZXMvZHJhd2FibGUvaWNfc2V0dXBfZmluaXNoLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YWM4YTg2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9yZXMvZHJhd2FibGUvaWNfc2V0dXBfZmluaXNoLnhtbApAQCAtMCwwICsxLDMwIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPCEtLQorLyoKKyoqCisqKiBDb3B5cmlnaHQgMjAxMywgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorKioKKyoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisqKgorKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorKioKKyoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorKi8KKy0tPgorCis8c2VsZWN0b3IgeG1sbnM6YW5kcm9pZD0iaHR0cDovL3NjaGVtYXMuYW5kcm9pZC5jb20vYXBrL3Jlcy9hbmRyb2lkIj4KKyAgICA8aXRlbQorICAgICAgICBhbmRyb2lkOnN0YXRlX2ZvY3VzZWQ9InRydWUiCisgICAgICAgIGFuZHJvaWQ6ZHJhd2FibGU9IkBkcmF3YWJsZS91bmJ1bmRsZWRfY2hlY2tfMDEiIC8+CisgICAgPGl0ZW0KKyAgICAgICAgYW5kcm9pZDpzdGF0ZV9wcmVzc2VkPSJ0cnVlIgorICAgICAgICBhbmRyb2lkOmRyYXdhYmxlPSJAZHJhd2FibGUvdW5idW5kbGVkX2NoZWNrXzAxIiAvPgorICAgIDxpdGVtCisgICAgICAgIGFuZHJvaWQ6ZHJhd2FibGU9IkBkcmF3YWJsZS91bmJ1bmRsZWRfY2hlY2tfMDIiIC8+Cis8L3NlbGVjdG9yPgpkaWZmIC0tZ2l0IGEvamF2YS9yZXMvZHJhd2FibGUvaWNfc2V0dXBfc3RlcDEueG1sIGIvamF2YS9yZXMvZHJhd2FibGUvaWNfc2V0dXBfc3RlcDEueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUyNmFmYjMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL3Jlcy9kcmF3YWJsZS9pY19zZXR1cF9zdGVwMS54bWwKQEAgLTAsMCArMSwzMCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzwhLS0KKy8qCisqKgorKiogQ29weXJpZ2h0IDIwMTMsIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyoqCisqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorKioKKyoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyoqCisqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyovCistLT4KKworPHNlbGVjdG9yIHhtbG5zOmFuZHJvaWQ9Imh0dHA6Ly9zY2hlbWFzLmFuZHJvaWQuY29tL2Fway9yZXMvYW5kcm9pZCI+CisgICAgPGl0ZW0KKyAgICAgICAgYW5kcm9pZDpzdGF0ZV9mb2N1c2VkPSJ0cnVlIgorICAgICAgICBhbmRyb2lkOmRyYXdhYmxlPSJAZHJhd2FibGUvdW5idW5kbGVkX2tleV8wMSIgLz4KKyAgICA8aXRlbQorICAgICAgICBhbmRyb2lkOnN0YXRlX3ByZXNzZWQ9InRydWUiCisgICAgICAgIGFuZHJvaWQ6ZHJhd2FibGU9IkBkcmF3YWJsZS91bmJ1bmRsZWRfa2V5XzAxIiAvPgorICAgIDxpdGVtCisgICAgICAgIGFuZHJvaWQ6ZHJhd2FibGU9IkBkcmF3YWJsZS91bmJ1bmRsZWRfa2V5XzAyIiAvPgorPC9zZWxlY3Rvcj4KZGlmZiAtLWdpdCBhL2phdmEvcmVzL2RyYXdhYmxlL2ljX3NldHVwX3N0ZXAyLnhtbCBiL2phdmEvcmVzL2RyYXdhYmxlL2ljX3NldHVwX3N0ZXAyLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NmRiMjkzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9yZXMvZHJhd2FibGUvaWNfc2V0dXBfc3RlcDIueG1sCkBAIC0wLDAgKzEsMzAgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8IS0tCisvKgorKioKKyoqIENvcHlyaWdodCAyMDEzLCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisqKgorKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyoqCisqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisqKgorKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisqLworLS0+CisKKzxzZWxlY3RvciB4bWxuczphbmRyb2lkPSJodHRwOi8vc2NoZW1hcy5hbmRyb2lkLmNvbS9hcGsvcmVzL2FuZHJvaWQiPgorICAgIDxpdGVtCisgICAgICAgIGFuZHJvaWQ6c3RhdGVfZm9jdXNlZD0idHJ1ZSIKKyAgICAgICAgYW5kcm9pZDpkcmF3YWJsZT0iQGRyYXdhYmxlL3VuYnVuZGxlZF9zZWxlY3RfMDEiIC8+CisgICAgPGl0ZW0KKyAgICAgICAgYW5kcm9pZDpzdGF0ZV9wcmVzc2VkPSJ0cnVlIgorICAgICAgICBhbmRyb2lkOmRyYXdhYmxlPSJAZHJhd2FibGUvdW5idW5kbGVkX3NlbGVjdF8wMSIgLz4KKyAgICA8aXRlbQorICAgICAgICBhbmRyb2lkOmRyYXdhYmxlPSJAZHJhd2FibGUvdW5idW5kbGVkX3NlbGVjdF8wMiIgLz4KKzwvc2VsZWN0b3I+CmRpZmYgLS1naXQgYS9qYXZhL3Jlcy9kcmF3YWJsZS9pY19zZXR1cF9zdGVwMy54bWwgYi9qYXZhL3Jlcy9kcmF3YWJsZS9pY19zZXR1cF9zdGVwMy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGZmOWZkOQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvcmVzL2RyYXdhYmxlL2ljX3NldHVwX3N0ZXAzLnhtbApAQCAtMCwwICsxLDMwIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPCEtLQorLyoKKyoqCisqKiBDb3B5cmlnaHQgMjAxMywgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorKioKKyoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisqKgorKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorKioKKyoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorKi8KKy0tPgorCis8c2VsZWN0b3IgeG1sbnM6YW5kcm9pZD0iaHR0cDovL3NjaGVtYXMuYW5kcm9pZC5jb20vYXBrL3Jlcy9hbmRyb2lkIj4KKyAgICA8aXRlbQorICAgICAgICBhbmRyb2lkOnN0YXRlX2ZvY3VzZWQ9InRydWUiCisgICAgICAgIGFuZHJvaWQ6ZHJhd2FibGU9IkBkcmF3YWJsZS91bmJ1bmRsZWRfZWFydGhfMDEiIC8+CisgICAgPGl0ZW0KKyAgICAgICAgYW5kcm9pZDpzdGF0ZV9wcmVzc2VkPSJ0cnVlIgorICAgICAgICBhbmRyb2lkOmRyYXdhYmxlPSJAZHJhd2FibGUvdW5idW5kbGVkX2VhcnRoXzAxIiAvPgorICAgIDxpdGVtCisgICAgICAgIGFuZHJvaWQ6ZHJhd2FibGU9IkBkcmF3YWJsZS91bmJ1bmRsZWRfZWFydGhfMDIiIC8+Cis8L3NlbGVjdG9yPgpkaWZmIC0tZ2l0IGEvamF2YS9yZXMvZHJhd2FibGUvc2V0dXBfc3RlcF9hY3Rpb25fYmFja2dyb3VuZC54bWwgYi9qYXZhL3Jlcy9kcmF3YWJsZS9zZXR1cF9zdGVwX2FjdGlvbl9iYWNrZ3JvdW5kLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNTczOGUzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9yZXMvZHJhd2FibGUvc2V0dXBfc3RlcF9hY3Rpb25fYmFja2dyb3VuZC54bWwKQEAgLTAsMCArMSwzMCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzwhLS0KKy8qCisqKgorKiogQ29weXJpZ2h0IDIwMTMsIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyoqCisqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorKioKKyoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyoqCisqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyovCistLT4KKworPHNlbGVjdG9yIHhtbG5zOmFuZHJvaWQ9Imh0dHA6Ly9zY2hlbWFzLmFuZHJvaWQuY29tL2Fway9yZXMvYW5kcm9pZCI+CisgICAgPGl0ZW0KKyAgICAgICAgYW5kcm9pZDpzdGF0ZV9mb2N1c2VkPSJ0cnVlIgorICAgICAgICBhbmRyb2lkOmRyYXdhYmxlPSJAY29sb3Ivc2V0dXBfdGV4dF9hY3Rpb24iIC8+CisgICAgPGl0ZW0KKyAgICAgICAgYW5kcm9pZDpzdGF0ZV9wcmVzc2VkPSJ0cnVlIgorICAgICAgICBhbmRyb2lkOmRyYXdhYmxlPSJAY29sb3Ivc2V0dXBfdGV4dF9hY3Rpb24iIC8+CisgICAgPGl0ZW0KKyAgICAgICAgYW5kcm9pZDpkcmF3YWJsZT0iQGNvbG9yL3NldHVwX3N0ZXBfYmFja2dyb3VuZCIgLz4KKzwvc2VsZWN0b3I+CmRpZmYgLS1naXQgYS9qYXZhL3Jlcy9sYXlvdXQtbGFuZC9zZXR1cF9zdGVwc19zY3JlZW4ueG1sIGIvamF2YS9yZXMvbGF5b3V0LWxhbmQvc2V0dXBfc3RlcHNfc2NyZWVuLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYjRhMDk2Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9yZXMvbGF5b3V0LWxhbmQvc2V0dXBfc3RlcHNfc2NyZWVuLnhtbApAQCAtMCwwICsxLDQwIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPCEtLQorLyoKKyoqCisqKiBDb3B5cmlnaHQgMjAxMywgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorKioKKyoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisqKgorKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorKioKKyoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorKi8KKy0tPgorCis8TGluZWFyTGF5b3V0IHhtbG5zOmFuZHJvaWQ9Imh0dHA6Ly9zY2hlbWFzLmFuZHJvaWQuY29tL2Fway9yZXMvYW5kcm9pZCIKKyAgICBhbmRyb2lkOmxheW91dF93aWR0aD0ibWF0Y2hfcGFyZW50IgorICAgIGFuZHJvaWQ6bGF5b3V0X2hlaWdodD0ibWF0Y2hfcGFyZW50IgorICAgIGFuZHJvaWQ6b3JpZW50YXRpb249Imhvcml6b250YWwiCisgICAgYW5kcm9pZDpiYXNlbGluZUFsaWduZWQ9ImZhbHNlIj4KKyAgICA8TGluZWFyTGF5b3V0CisgICAgICAgIGFuZHJvaWQ6bGF5b3V0X3dpZHRoPSIwZHAiCisgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2hlaWdodD0ibWF0Y2hfcGFyZW50IgorICAgICAgICBhbmRyb2lkOmxheW91dF93ZWlnaHQ9IkBpbnRlZ2VyL3NldHVwX3RpdGxlX3dlaWdodF9pbl9zY3JlZW4iCisgICAgICAgIGFuZHJvaWQ6b3JpZW50YXRpb249InZlcnRpY2FsIj4KKyAgICAgICAgPGluY2x1ZGUgbGF5b3V0PSJAbGF5b3V0L3NldHVwX3N0ZXBzX3RpdGxlIiAvPgorICAgIDwvTGluZWFyTGF5b3V0PgorICAgIDxMaW5lYXJMYXlvdXQKKyAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2lkdGg9IjBkcCIKKyAgICAgICAgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSJtYXRjaF9wYXJlbnQiCisgICAgICAgIGFuZHJvaWQ6bGF5b3V0X3dlaWdodD0iQGludGVnZXIvc2V0dXBfYm9keV93ZWlnaHRfaW5fc2NyZWVuIgorICAgICAgICBhbmRyb2lkOm9yaWVudGF0aW9uPSJ2ZXJ0aWNhbCI+CisgICAgICAgIDxpbmNsdWRlIGxheW91dD0iQGxheW91dC9zZXR1cF9zdGVwc19jYXJkcyIgLz4KKyAgICA8L0xpbmVhckxheW91dD4KKzwvTGluZWFyTGF5b3V0PgpkaWZmIC0tZ2l0IGEvamF2YS9yZXMvbGF5b3V0LWxhbmQvc2V0dXBfd2VsY29tZV9zY3JlZW4ueG1sIGIvamF2YS9yZXMvbGF5b3V0LWxhbmQvc2V0dXBfd2VsY29tZV9zY3JlZW4ueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhiMTYyZTIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL3Jlcy9sYXlvdXQtbGFuZC9zZXR1cF93ZWxjb21lX3NjcmVlbi54bWwKQEAgLTAsMCArMSw0MCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzwhLS0KKy8qCisqKgorKiogQ29weXJpZ2h0IDIwMTMsIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyoqCisqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorKioKKyoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyoqCisqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyovCistLT4KKworPExpbmVhckxheW91dCB4bWxuczphbmRyb2lkPSJodHRwOi8vc2NoZW1hcy5hbmRyb2lkLmNvbS9hcGsvcmVzL2FuZHJvaWQiCisgICAgYW5kcm9pZDpsYXlvdXRfd2lkdGg9Im1hdGNoX3BhcmVudCIKKyAgICBhbmRyb2lkOmxheW91dF9oZWlnaHQ9Im1hdGNoX3BhcmVudCIKKyAgICBhbmRyb2lkOm9yaWVudGF0aW9uPSJob3Jpem9udGFsIgorICAgIGFuZHJvaWQ6YmFzZWxpbmVBbGlnbmVkPSJmYWxzZSI+CisgICAgPExpbmVhckxheW91dAorICAgICAgICBhbmRyb2lkOmxheW91dF93aWR0aD0iMGRwIgorICAgICAgICBhbmRyb2lkOmxheW91dF9oZWlnaHQ9Im1hdGNoX3BhcmVudCIKKyAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2VpZ2h0PSJAaW50ZWdlci9zZXR1cF90aXRsZV93ZWlnaHRfaW5fc2NyZWVuIgorICAgICAgICBhbmRyb2lkOm9yaWVudGF0aW9uPSJ2ZXJ0aWNhbCI+CisgICAgICAgIDxpbmNsdWRlIGxheW91dD0iQGxheW91dC9zZXR1cF93ZWxjb21lX3RpdGxlIiAvPgorICAgIDwvTGluZWFyTGF5b3V0PgorICAgIDxMaW5lYXJMYXlvdXQKKyAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2lkdGg9IjBkcCIKKyAgICAgICAgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSJtYXRjaF9wYXJlbnQiCisgICAgICAgIGFuZHJvaWQ6bGF5b3V0X3dlaWdodD0iQGludGVnZXIvc2V0dXBfYm9keV93ZWlnaHRfaW5fc2NyZWVuIgorICAgICAgICBhbmRyb2lkOm9yaWVudGF0aW9uPSJ2ZXJ0aWNhbCI+CisgICAgICAgIDxpbmNsdWRlIGxheW91dD0iQGxheW91dC9zZXR1cF93ZWxjb21lX3ZpZGVvIiAvPgorICAgIDwvTGluZWFyTGF5b3V0PgorPC9MaW5lYXJMYXlvdXQ+CmRpZmYgLS1naXQgYS9qYXZhL3Jlcy9sYXlvdXQvZGljdGlvbmFyeV9saW5lLnhtbCBiL2phdmEvcmVzL2xheW91dC9kaWN0aW9uYXJ5X2xpbmUueG1sCmluZGV4IGE4ZDE1YWIuLjQyOGEzYTEgMTAwNjQ0Ci0tLSBhL2phdmEvcmVzL2xheW91dC9kaWN0aW9uYXJ5X2xpbmUueG1sCisrKyBiL2phdmEvcmVzL2xheW91dC9kaWN0aW9uYXJ5X2xpbmUueG1sCkBAIC01MiwzMyArNTIsNTcgQEAKICAgICAgICAgYW5kcm9pZDplbGxpcHNpemU9Im1hcnF1ZWUiCiAgICAgICAgIGFuZHJvaWQ6ZmFkaW5nRWRnZT0iaG9yaXpvbnRhbCIgLz4KIAotICAgIDxUZXh0VmlldwotICAgICAgICBhbmRyb2lkOmlkPSJAK2FuZHJvaWQ6aWQvc3VtbWFyeSIKLSAgICAgICAgYW5kcm9pZDpsYXlvdXRfbWFyZ2luTGVmdD0iNWRpcCIKLSAgICAgICAgYW5kcm9pZDpsYXlvdXRfbWFyZ2luU3RhcnQ9IjVkaXAiCisgICAgPEZyYW1lTGF5b3V0CiAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X3dpZHRoPSJtYXRjaF9wYXJlbnQiCiAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2hlaWdodD0id3JhcF9jb250ZW50IgotICAgICAgICBhbmRyb2lkOnRleHRBcHBlYXJhbmNlPSI/YW5kcm9pZDphdHRyL3RleHRBcHBlYXJhbmNlU21hbGwiCi0gICAgICAgIGFuZHJvaWQ6dGV4dENvbG9yPSI/YW5kcm9pZDphdHRyL3RleHRDb2xvclNlY29uZGFyeSIKLSAgICAgICAgYW5kcm9pZDptYXhMaW5lcz0iMSIgLz4KKyAgICAgICAgYW5kcm9pZDpsYXlvdXRfbWFyZ2luU3RhcnQ9IjVkaXAiPgogCi0gICAgPCEtLSA8UHJvZ3Jlc3NCYXIgLS0+Ci0gICAgPCEtLSAgICAgYW5kcm9pZDppZD0iQCtpZC9kaWN0aW9uYXJ5X2xpbmVfcHJvZ3Jlc3NfYmFyIiAtLT4KLSAgICA8IS0tICAgICBzdHlsZT0iQGFuZHJvaWQ6c3R5bGUvV2lkZ2V0LkhvbG8uUHJvZ3Jlc3NCYXIuSG9yaXpvbnRhbCIgLS0+Ci0gICAgPCEtLSAgICAgYW5kcm9pZDpsYXlvdXRfd2lkdGg9Im1hdGNoX3BhcmVudCIgLS0+Ci0gICAgPCEtLSAgICAgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSJtYXRjaF9wYXJlbnQiIC0tPgotICAgIDwhLS0gICAgIGFuZHJvaWQ6Z3Jhdml0eT0iY2VudGVyIiAvPiAtLT4KKyAgICAgIDxUZXh0VmlldworICAgICAgICAgIGFuZHJvaWQ6aWQ9IkArYW5kcm9pZDppZC9zdW1tYXJ5IgorICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X3dpZHRoPSJtYXRjaF9wYXJlbnQiCisgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSJ3cmFwX2NvbnRlbnQiCisgICAgICAgICAgYW5kcm9pZDp0ZXh0QXBwZWFyYW5jZT0iP2FuZHJvaWQ6YXR0ci90ZXh0QXBwZWFyYW5jZVNtYWxsIgorICAgICAgICAgIGFuZHJvaWQ6dGV4dENvbG9yPSI/YW5kcm9pZDphdHRyL3RleHRDb2xvclNlY29uZGFyeSIKKyAgICAgICAgICBhbmRyb2lkOm1heExpbmVzPSIxIiAvPgogCisgICAgICA8Y29tLmFuZHJvaWQuaW5wdXRtZXRob2QuZGljdGlvbmFyeXBhY2suRGljdGlvbmFyeURvd25sb2FkUHJvZ3Jlc3NCYXIKKyAgICAgICAgICBhbmRyb2lkOmlkPSJAK2lkL2RpY3Rpb25hcnlfbGluZV9wcm9ncmVzc19iYXIiCisgICAgICAgICAgc3R5bGU9IkBhbmRyb2lkOnN0eWxlL1dpZGdldC5Ib2xvLlByb2dyZXNzQmFyLkhvcml6b250YWwiCisgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2lkdGg9Im1hdGNoX3BhcmVudCIKKyAgICAgICAgICBhbmRyb2lkOmxheW91dF9oZWlnaHQ9Im1hdGNoX3BhcmVudCIKKyAgICAgICAgICBhbmRyb2lkOmdyYXZpdHk9ImNlbnRlciIgLz4KKworICAgIDwvRnJhbWVMYXlvdXQ+CiAgIDwvTGluZWFyTGF5b3V0PgogCi0gIDxCdXR0b24KLSAgICAgIGFuZHJvaWQ6aWQ9IkArYW5kcm9pZDppZC93b3JkbGlzdF9idXR0b24iCisgIDxjb20uYW5kcm9pZC5pbnB1dG1ldGhvZC5kaWN0aW9uYXJ5cGFjay5CdXR0b25Td2l0Y2hlcgorICAgICAgYW5kcm9pZDppZD0iQCthbmRyb2lkOmlkL3dvcmRsaXN0X2J1dHRvbl9zd2l0Y2hlciIKICAgICAgIGFuZHJvaWQ6bGF5b3V0X3dlaWdodD0iMCIKICAgICAgIGFuZHJvaWQ6bGF5b3V0X3dpZHRoPSJ3cmFwX2NvbnRlbnQiCi0gICAgICBhbmRyb2lkOmxheW91dF9oZWlnaHQ9IndyYXBfY29udGVudCIKLSAgICAgIGFuZHJvaWQ6bGF5b3V0X2dyYXZpdHk9InJpZ2h0fGNlbnRlcl92ZXJ0aWNhbCIKLSAgICAgIGFuZHJvaWQ6c2luZ2xlTGluZT0idHJ1ZSIKLSAgICAgIGFuZHJvaWQ6dGV4dEFwcGVhcmFuY2U9Ij9hbmRyb2lkOmF0dHIvdGV4dEFwcGVhcmFuY2VNZWRpdW0iCi0gICAgICBhbmRyb2lkOnRleHQ9IkBzdHJpbmcvaW5zdGFsbF9kaWN0IiAvPgotCisgICAgICBhbmRyb2lkOmxheW91dF9oZWlnaHQ9IndyYXBfY29udGVudCI+CisgICAgPEJ1dHRvbgorICAgICAgICBhbmRyb2lkOmlkPSJAK2FuZHJvaWQ6aWQvZGljdF9pbnN0YWxsX2J1dHRvbiIKKyAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2lkdGg9IndyYXBfY29udGVudCIKKyAgICAgICAgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSJ3cmFwX2NvbnRlbnQiCisgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2dyYXZpdHk9InJpZ2h0fGNlbnRlcl92ZXJ0aWNhbCIKKyAgICAgICAgYW5kcm9pZDpzaW5nbGVMaW5lPSJ0cnVlIgorICAgICAgICBhbmRyb2lkOnRleHRBcHBlYXJhbmNlPSI/YW5kcm9pZDphdHRyL3RleHRBcHBlYXJhbmNlTWVkaXVtIgorICAgICAgICBhbmRyb2lkOnRleHQ9IkBzdHJpbmcvaW5zdGFsbF9kaWN0IiAvPgorICAgIDxCdXR0b24KKyAgICAgICAgYW5kcm9pZDppZD0iQCthbmRyb2lkOmlkL2RpY3RfY2FuY2VsX2J1dHRvbiIKKyAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2lkdGg9IndyYXBfY29udGVudCIKKyAgICAgICAgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSJ3cmFwX2NvbnRlbnQiCisgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2dyYXZpdHk9InJpZ2h0fGNlbnRlcl92ZXJ0aWNhbCIKKyAgICAgICAgYW5kcm9pZDpzaW5nbGVMaW5lPSJ0cnVlIgorICAgICAgICBhbmRyb2lkOnRleHRBcHBlYXJhbmNlPSI/YW5kcm9pZDphdHRyL3RleHRBcHBlYXJhbmNlTWVkaXVtIgorICAgICAgICBhbmRyb2lkOnRleHQ9IkBzdHJpbmcvY2FuY2VsX2Rvd25sb2FkX2RpY3QiIC8+CisgICAgPEJ1dHRvbgorICAgICAgICBhbmRyb2lkOmlkPSJAK2FuZHJvaWQ6aWQvZGljdF9kZWxldGVfYnV0dG9uIgorICAgICAgICBhbmRyb2lkOmxheW91dF93aWR0aD0id3JhcF9jb250ZW50IgorICAgICAgICBhbmRyb2lkOmxheW91dF9oZWlnaHQ9IndyYXBfY29udGVudCIKKyAgICAgICAgYW5kcm9pZDpsYXlvdXRfZ3Jhdml0eT0icmlnaHR8Y2VudGVyX3ZlcnRpY2FsIgorICAgICAgICBhbmRyb2lkOnNpbmdsZUxpbmU9InRydWUiCisgICAgICAgIGFuZHJvaWQ6dGV4dEFwcGVhcmFuY2U9Ij9hbmRyb2lkOmF0dHIvdGV4dEFwcGVhcmFuY2VNZWRpdW0iCisgICAgICAgIGFuZHJvaWQ6dGV4dD0iQHN0cmluZy9kZWxldGVfZGljdCIgLz4KKyAgPC9jb20uYW5kcm9pZC5pbnB1dG1ldGhvZC5kaWN0aW9uYXJ5cGFjay5CdXR0b25Td2l0Y2hlcj4KIDwvTGluZWFyTGF5b3V0PgpkaWZmIC0tZ2l0IGEvamF2YS9yZXMvbGF5b3V0L3NldHVwX3N0YXJ0X2luZGljYXRvcl9sYWJlbC54bWwgYi9qYXZhL3Jlcy9sYXlvdXQvc2V0dXBfc3RhcnRfaW5kaWNhdG9yX2xhYmVsLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMzg1NGJiCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9yZXMvbGF5b3V0L3NldHVwX3N0YXJ0X2luZGljYXRvcl9sYWJlbC54bWwKQEAgLTAsMCArMSwzMiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzwhLS0KKy8qCisqKgorKiogQ29weXJpZ2h0IDIwMTMsIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyoqCisqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorKioKKyoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyoqCisqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyovCistLT4KKworPG1lcmdlIHhtbG5zOmFuZHJvaWQ9Imh0dHA6Ly9zY2hlbWFzLmFuZHJvaWQuY29tL2Fway9yZXMvYW5kcm9pZCI+CisgICAgPHZpZXcgY2xhc3M9ImNvbS5hbmRyb2lkLmlucHV0bWV0aG9kLmxhdGluLnNldHVwLlNldHVwU3RhcnRJbmRpY2F0b3JWaWV3JExhYmVsVmlldyIKKyAgICAgICAgYW5kcm9pZDppZD0iQCtpZC9zZXR1cF9zdGFydF9sYWJlbCIKKyAgICAgICAgYW5kcm9pZDp0ZXh0PSJAc3RyaW5nL3NldHVwX3N0YXJ0X2FjdGlvbiIKKyAgICAgICAgYW5kcm9pZDpncmF2aXR5PSJlbmR8Y2VudGVyX3ZlcnRpY2FsIgorICAgICAgICBhbmRyb2lkOmxheW91dF93aWR0aD0iMGRwIgorICAgICAgICBhbmRyb2lkOmxheW91dF93ZWlnaHQ9IjEuMCIKKyAgICAgICAgc3R5bGU9IkBzdHlsZS9zZXR1cFN0ZXBBY3Rpb25MYWJlbFN0eWxlQ29tbW9uIiAvPgorICAgIDx2aWV3IGNsYXNzPSJjb20uYW5kcm9pZC5pbnB1dG1ldGhvZC5sYXRpbi5zZXR1cC5TZXR1cFN0YXJ0SW5kaWNhdG9yVmlldyRJbmRpY2F0b3JWaWV3IgorICAgICAgICBhbmRyb2lkOmlkPSJAK2lkL3NldHVwX3N0YXJ0X2luZGljYXRvciIKKyAgICAgICAgc3R5bGU9IkBzdHlsZS9zZXR1cFN0ZXBTdGFydEluZGljYXRvclN0eWxlIiAvPgorPC9tZXJnZT4KZGlmZiAtLWdpdCBhL2phdmEvcmVzL2xheW91dC9zZXR1cF9zdGVwLnhtbCBiL2phdmEvcmVzL2xheW91dC9zZXR1cF9zdGVwLnhtbAppbmRleCAyNmQ3ZmU3Li5mYTg0OTAyIDEwMDY0NAotLS0gYS9qYXZhL3Jlcy9sYXlvdXQvc2V0dXBfc3RlcC54bWwKKysrIGIvamF2YS9yZXMvbGF5b3V0L3NldHVwX3N0ZXAueG1sCkBAIC0yNSwzNCArMjUsMTQgQEAKICAgICA8VGV4dFZpZXcKICAgICAgICAgYW5kcm9pZDppZD0iQCtpZC9zZXR1cF9zdGVwX3RpdGxlIgogICAgICAgICBzdHlsZT0iQHN0eWxlL3NldHVwU3RlcFRpdGxlU3R5bGUiCi0gICAgICAgIGFuZHJvaWQ6bGF5b3V0X3dpZHRoPSJtYXRjaF9wYXJlbnQiCi0gICAgICAgIGFuZHJvaWQ6bGF5b3V0X2hlaWdodD0id3JhcF9jb250ZW50IgotICAgICAgICBhbmRyb2lkOnBhZGRpbmdUb3A9IjE2ZHAiCi0gICAgICAgIGFuZHJvaWQ6cGFkZGluZ0JvdHRvbT0iMTZkcCIKLSAgICAgICAgYW5kcm9pZDpwYWRkaW5nTGVmdD0iMjRkcCIKLSAgICAgICAgYW5kcm9pZDpwYWRkaW5nUmlnaHQ9IjI0ZHAiIC8+CisgICAgICAgIGFuZHJvaWQ6cGFkZGluZ1RvcD0iQGRpbWVuL3NldHVwX3N0ZXBfdmVydGljYWxfcGFkZGluZyIKKyAgICAgICAgYW5kcm9pZDpwYWRkaW5nQm90dG9tPSJAZGltZW4vc2V0dXBfc3RlcF92ZXJ0aWNhbF9wYWRkaW5nIiAvPgogICAgIDxUZXh0VmlldwogICAgICAgICBhbmRyb2lkOmlkPSJAK2lkL3NldHVwX3N0ZXBfaW5zdHJ1Y3Rpb24iCiAgICAgICAgIHN0eWxlPSJAc3R5bGUvc2V0dXBTdGVwSW5zdHJ1Y3Rpb25TdHlsZSIKLSAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2lkdGg9Im1hdGNoX3BhcmVudCIKLSAgICAgICAgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSJ3cmFwX2NvbnRlbnQiCi0gICAgICAgIGFuZHJvaWQ6cGFkZGluZ0JvdHRvbT0iMTZkcCIKLSAgICAgICAgYW5kcm9pZDpwYWRkaW5nTGVmdD0iMjRkcCIKLSAgICAgICAgYW5kcm9pZDpwYWRkaW5nUmlnaHQ9IjI0ZHAiIC8+Ci0gICAgPFZpZXcKLSAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2lkdGg9Im1hdGNoX3BhcmVudCIKLSAgICAgICAgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSIyZHAiIC8+CisgICAgICAgIGFuZHJvaWQ6cGFkZGluZ0JvdHRvbT0iQGRpbWVuL3NldHVwX3N0ZXBfdmVydGljYWxfcGFkZGluZyIgLz4KICAgICA8VGV4dFZpZXcKICAgICAgICAgYW5kcm9pZDppZD0iQCtpZC9zZXR1cF9zdGVwX2FjdGlvbl9sYWJlbCIKICAgICAgICAgc3R5bGU9IkBzdHlsZS9zZXR1cFN0ZXBBY3Rpb25MYWJlbFN0eWxlIgotICAgICAgICBhbmRyb2lkOmdyYXZpdHk9ImNlbnRlcl92ZXJ0aWNhbCIKLSAgICAgICAgYW5kcm9pZDpkcmF3YWJsZVBhZGRpbmc9IjEyZHAiCi0gICAgICAgIGFuZHJvaWQ6bGF5b3V0X3dpZHRoPSJtYXRjaF9wYXJlbnQiCi0gICAgICAgIGFuZHJvaWQ6bGF5b3V0X2hlaWdodD0iNDhkcCIKLSAgICAgICAgYW5kcm9pZDpjbGlja2FibGU9InRydWUiCi0gICAgICAgIGFuZHJvaWQ6Zm9jdXNhYmxlPSJ0cnVlIgotICAgICAgICBhbmRyb2lkOnBhZGRpbmdMZWZ0PSIxMmRwIgotICAgICAgICBhbmRyb2lkOnBhZGRpbmdTdGFydD0iMTJkcCIKLSAgICAgICAgYW5kcm9pZDpwYWRkaW5nUmlnaHQ9IjI0ZHAiCi0gICAgICAgIGFuZHJvaWQ6cGFkZGluZ0VuZD0iMjRkcCIgLz4KKyAgICAgICAgYW5kcm9pZDpsYXlvdXRfbWFyZ2luVG9wPSJAZGltZW4vc2V0dXBfc3RlcF9ob3Jpem9udGFsX2xpbmVfaGVpZ2h0IiAvPgogPC9MaW5lYXJMYXlvdXQ+CmRpZmYgLS1naXQgYS9qYXZhL3Jlcy9sYXlvdXQvc2V0dXBfc3RlcHNfY2FyZHMueG1sIGIvamF2YS9yZXMvbGF5b3V0L3NldHVwX3N0ZXBzX2NhcmRzLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNDUxNzMxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9yZXMvbGF5b3V0L3NldHVwX3N0ZXBzX2NhcmRzLnhtbApAQCAtMCwwICsxLDY5IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPCEtLQorLyoKKyoqCisqKiBDb3B5cmlnaHQgMjAxMywgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorKioKKyoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisqKgorKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorKioKKyoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorKi8KKy0tPgorCis8bWVyZ2UgeG1sbnM6YW5kcm9pZD0iaHR0cDovL3NjaGVtYXMuYW5kcm9pZC5jb20vYXBrL3Jlcy9hbmRyb2lkIj4KKyAgICA8TGluZWFyTGF5b3V0CisgICAgICAgIGFuZHJvaWQ6aWQ9IkAraWQvc2V0dXBfc3RlcF9idWxsZXRzIgorICAgICAgICBhbmRyb2lkOmxheW91dF93aWR0aD0ibWF0Y2hfcGFyZW50IgorICAgICAgICBhbmRyb2lkOmxheW91dF9oZWlnaHQ9IndyYXBfY29udGVudCIKKyAgICAgICAgYW5kcm9pZDpsYXlvdXRfbWFyZ2luVG9wPSJAZGltZW4vc2V0dXBfc3RlcF92ZXJ0aWNhbF9wYWRkaW5nIgorICAgICAgICBhbmRyb2lkOm9yaWVudGF0aW9uPSJob3Jpem9udGFsIj4KKyAgICAgICAgPFRleHRWaWV3CisgICAgICAgICAgICBhbmRyb2lkOmlkPSJAK2lkL3NldHVwX3N0ZXAxX2J1bGxldCIKKyAgICAgICAgICAgIHN0eWxlPSJAc3R5bGUvc2V0dXBTdGVwQnVsbGV0U3R5bGUiCisgICAgICAgICAgICBhbmRyb2lkOnRleHQ9IkBzdHJpbmcvc2V0dXBfc3RlcDFfYnVsbGV0IiAvPgorICAgICAgICA8VGV4dFZpZXcKKyAgICAgICAgICAgIGFuZHJvaWQ6aWQ9IkAraWQvc2V0dXBfc3RlcDJfYnVsbGV0IgorICAgICAgICAgICAgc3R5bGU9IkBzdHlsZS9zZXR1cFN0ZXBCdWxsZXRTdHlsZSIKKyAgICAgICAgICAgIGFuZHJvaWQ6dGV4dD0iQHN0cmluZy9zZXR1cF9zdGVwMl9idWxsZXQiIC8+CisgICAgICAgIDxUZXh0VmlldworICAgICAgICAgICAgYW5kcm9pZDppZD0iQCtpZC9zZXR1cF9zdGVwM19idWxsZXQiCisgICAgICAgICAgICBzdHlsZT0iQHN0eWxlL3NldHVwU3RlcEJ1bGxldFN0eWxlIgorICAgICAgICAgICAgYW5kcm9pZDp0ZXh0PSJAc3RyaW5nL3NldHVwX3N0ZXAzX2J1bGxldCIgLz4KKyAgICA8L0xpbmVhckxheW91dD4KKyAgICA8Y29tLmFuZHJvaWQuaW5wdXRtZXRob2QubGF0aW4uc2V0dXAuU2V0dXBTdGVwSW5kaWNhdG9yVmlldworICAgICAgICBhbmRyb2lkOmlkPSJAK2lkL3NldHVwX3N0ZXBfaW5kaWNhdG9yIgorICAgICAgICBzdHlsZT0iQHN0eWxlL3NldHVwU3RlcEluZGljYXRvclN0eWxlIiAvPgorICAgIDxGcmFtZUxheW91dAorICAgICAgICBhbmRyb2lkOmlkPSJAK2lkL3NldHVwX3N0ZXBzX3BhbmUiCisgICAgICAgIGFuZHJvaWQ6bGF5b3V0X3dpZHRoPSJtYXRjaF9wYXJlbnQiCisgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2hlaWdodD0id3JhcF9jb250ZW50Ij4KKyAgICAgICAgPGluY2x1ZGUKKyAgICAgICAgICAgIGFuZHJvaWQ6aWQ9IkAraWQvc2V0dXBfc3RlcDEiCisgICAgICAgICAgICBsYXlvdXQ9IkBsYXlvdXQvc2V0dXBfc3RlcCIgLz4KKyAgICAgICAgPGluY2x1ZGUKKyAgICAgICAgICAgIGFuZHJvaWQ6aWQ9IkAraWQvc2V0dXBfc3RlcDIiCisgICAgICAgICAgICBsYXlvdXQ9IkBsYXlvdXQvc2V0dXBfc3RlcCIgLz4KKyAgICAgICAgPGluY2x1ZGUKKyAgICAgICAgICAgIGFuZHJvaWQ6aWQ9IkAraWQvc2V0dXBfc3RlcDMiCisgICAgICAgICAgICBsYXlvdXQ9IkBsYXlvdXQvc2V0dXBfc3RlcCIgLz4KKyAgICA8L0ZyYW1lTGF5b3V0PgorICAgIDxUZXh0VmlldworICAgICAgICBhbmRyb2lkOmlkPSJAK2lkL3NldHVwX25leHQiCisgICAgICAgIGFuZHJvaWQ6dGV4dD0iQHN0cmluZy9zZXR1cF9uZXh0X2FjdGlvbiIKKyAgICAgICAgYW5kcm9pZDpncmF2aXR5PSJlbmR8Y2VudGVyX3ZlcnRpY2FsIgorICAgICAgICBzdHlsZT0iQHN0eWxlL3NldHVwU3RlcEFjdGlvbkxhYmVsU3R5bGVDb21tb24iCisgICAgICAgIGFuZHJvaWQ6bGF5b3V0X21hcmdpblRvcD0iQGRpbWVuL3NldHVwX3N0ZXBfaG9yaXpvbnRhbF9saW5lX2hlaWdodCIgLz4KKyAgICA8VGV4dFZpZXcKKyAgICAgICAgYW5kcm9pZDppZD0iQCtpZC9zZXR1cF9maW5pc2giCisgICAgICAgIGFuZHJvaWQ6dGV4dD0iQHN0cmluZy9zZXR1cF9maW5pc2hfYWN0aW9uIgorICAgICAgICBzdHlsZT0iQHN0eWxlL3NldHVwU3RlcEFjdGlvbkxhYmVsU3R5bGUiCisgICAgICAgIGFuZHJvaWQ6bGF5b3V0X21hcmdpblRvcD0iQGRpbWVuL3NldHVwX3N0ZXBfaG9yaXpvbnRhbF9saW5lX2hlaWdodCIgLz4KKzwvbWVyZ2U+CmRpZmYgLS1naXQgYS9qYXZhL3Jlcy9sYXlvdXQvc2V0dXBfc3RlcHNfc2NyZWVuLnhtbCBiL2phdmEvcmVzL2xheW91dC9zZXR1cF9zdGVwc19zY3JlZW4ueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjExNTljMGEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL3Jlcy9sYXlvdXQvc2V0dXBfc3RlcHNfc2NyZWVuLnhtbApAQCAtMCwwICsxLDI3IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPCEtLQorLyoKKyoqCisqKiBDb3B5cmlnaHQgMjAxMywgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorKioKKyoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisqKgorKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorKioKKyoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorKi8KKy0tPgorCis8TGluZWFyTGF5b3V0IHhtbG5zOmFuZHJvaWQ9Imh0dHA6Ly9zY2hlbWFzLmFuZHJvaWQuY29tL2Fway9yZXMvYW5kcm9pZCIKKyAgICBhbmRyb2lkOmxheW91dF93aWR0aD0ibWF0Y2hfcGFyZW50IgorICAgIGFuZHJvaWQ6bGF5b3V0X2hlaWdodD0ibWF0Y2hfcGFyZW50IgorICAgIGFuZHJvaWQ6b3JpZW50YXRpb249InZlcnRpY2FsIj4KKyAgICA8aW5jbHVkZSBsYXlvdXQ9IkBsYXlvdXQvc2V0dXBfc3RlcHNfdGl0bGUiIC8+CisgICAgPGluY2x1ZGUgbGF5b3V0PSJAbGF5b3V0L3NldHVwX3N0ZXBzX2NhcmRzIiAvPgorPC9MaW5lYXJMYXlvdXQ+CmRpZmYgLS1naXQgYS9qYXZhL3Jlcy9sYXlvdXQvc2V0dXBfc3RlcHNfdGl0bGUueG1sIGIvamF2YS9yZXMvbGF5b3V0L3NldHVwX3N0ZXBzX3RpdGxlLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMzY5NGJmCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9yZXMvbGF5b3V0L3NldHVwX3N0ZXBzX3RpdGxlLnhtbApAQCAtMCwwICsxLDI3IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPCEtLQorLyoKKyoqCisqKiBDb3B5cmlnaHQgMjAxMywgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorKioKKyoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisqKgorKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorKioKKyoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorKi8KKy0tPgorCis8bWVyZ2UgeG1sbnM6YW5kcm9pZD0iaHR0cDovL3NjaGVtYXMuYW5kcm9pZC5jb20vYXBrL3Jlcy9hbmRyb2lkIj4KKyAgICA8VGV4dFZpZXcKKyAgICAgICAgYW5kcm9pZDppZD0iQCtpZC9zZXR1cF90aXRsZSIKKyAgICAgICAgc3R5bGU9IkBzdHlsZS9zZXR1cFRpdGxlU3R5bGUiCisgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2FsaWduUGFyZW50TGVmdD0idHJ1ZSIKKyAgICAgICAgYW5kcm9pZDpsYXlvdXRfYWxpZ25QYXJlbnRUb3A9InRydWUiIC8+Cis8L21lcmdlPgpkaWZmIC0tZ2l0IGEvamF2YS9yZXMvbGF5b3V0L3NldHVwX3dlbGNvbWVfc2NyZWVuLnhtbCBiL2phdmEvcmVzL2xheW91dC9zZXR1cF93ZWxjb21lX3NjcmVlbi54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDRlOThlMgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvcmVzL2xheW91dC9zZXR1cF93ZWxjb21lX3NjcmVlbi54bWwKQEAgLTAsMCArMSwyNyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzwhLS0KKy8qCisqKgorKiogQ29weXJpZ2h0IDIwMTMsIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyoqCisqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorKioKKyoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyoqCisqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyovCistLT4KKworPExpbmVhckxheW91dCB4bWxuczphbmRyb2lkPSJodHRwOi8vc2NoZW1hcy5hbmRyb2lkLmNvbS9hcGsvcmVzL2FuZHJvaWQiCisgICAgYW5kcm9pZDpsYXlvdXRfd2lkdGg9Im1hdGNoX3BhcmVudCIKKyAgICBhbmRyb2lkOmxheW91dF9oZWlnaHQ9Im1hdGNoX3BhcmVudCIKKyAgICBhbmRyb2lkOm9yaWVudGF0aW9uPSJ2ZXJ0aWNhbCI+CisgICAgPGluY2x1ZGUgbGF5b3V0PSJAbGF5b3V0L3NldHVwX3dlbGNvbWVfdGl0bGUiIC8+CisgICAgPGluY2x1ZGUgbGF5b3V0PSJAbGF5b3V0L3NldHVwX3dlbGNvbWVfdmlkZW8iIC8+Cis8L0xpbmVhckxheW91dD4KZGlmZiAtLWdpdCBhL2phdmEvcmVzL2xheW91dC9zZXR1cF93ZWxjb21lX3RpdGxlLnhtbCBiL2phdmEvcmVzL2xheW91dC9zZXR1cF93ZWxjb21lX3RpdGxlLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZTZkNzgxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9yZXMvbGF5b3V0L3NldHVwX3dlbGNvbWVfdGl0bGUueG1sCkBAIC0wLDAgKzEsMzIgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8IS0tCisvKgorKioKKyoqIENvcHlyaWdodCAyMDEzLCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisqKgorKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyoqCisqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisqKgorKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisqLworLS0+CisKKzxtZXJnZSB4bWxuczphbmRyb2lkPSJodHRwOi8vc2NoZW1hcy5hbmRyb2lkLmNvbS9hcGsvcmVzL2FuZHJvaWQiPgorICAgIDxUZXh0VmlldworICAgICAgICBhbmRyb2lkOmlkPSJAK2lkL3NldHVwX3dlbGNvbWVfdGl0bGUiCisgICAgICAgIHN0eWxlPSJAc3R5bGUvc2V0dXBUaXRsZVN0eWxlIgorICAgICAgICBhbmRyb2lkOmxheW91dF9hbGlnblBhcmVudExlZnQ9InRydWUiCisgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2FsaWduUGFyZW50VG9wPSJ0cnVlIiAvPgorICAgIDxUZXh0VmlldworICAgICAgICBhbmRyb2lkOmlkPSJAK2lkL3NldHVwX3dlbGNvbWVfZGVzY3JpcHRpb24iCisgICAgICAgIGFuZHJvaWQ6dGV4dD0iQHN0cmluZy9zZXR1cF93ZWxjb21lX2FkZGl0aW9uYWxfZGVzY3JpcHRpb24iCisgICAgICAgIGFuZHJvaWQ6bGF5b3V0X21hcmdpblRvcD0iMTJkcCIKKyAgICAgICAgc3R5bGU9IkBzdHlsZS9zZXR1cFdlbGNvbWVEZXNjcml0cGlvblN0eWxlIiAvPgorPC9tZXJnZT4KZGlmZiAtLWdpdCBhL2phdmEvcmVzL2xheW91dC9zZXR1cF93ZWxjb21lX3ZpZGVvLnhtbCBiL2phdmEvcmVzL2xheW91dC9zZXR1cF93ZWxjb21lX3ZpZGVvLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wOWNlZjk4Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9yZXMvbGF5b3V0L3NldHVwX3dlbGNvbWVfdmlkZW8ueG1sCkBAIC0wLDAgKzEsNDYgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8IS0tCisvKgorKioKKyoqIENvcHlyaWdodCAyMDEzLCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisqKgorKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyoqCisqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisqKgorKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisqLworLS0+CisKKzxtZXJnZSB4bWxuczphbmRyb2lkPSJodHRwOi8vc2NoZW1hcy5hbmRyb2lkLmNvbS9hcGsvcmVzL2FuZHJvaWQiPgorICAgIDxMaW5lYXJMYXlvdXQKKyAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2lkdGg9Im1hdGNoX3BhcmVudCIKKyAgICAgICAgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSJ3cmFwX2NvbnRlbnQiCisgICAgICAgIGFuZHJvaWQ6b3JpZW50YXRpb249Imhvcml6b250YWwiPgorICAgICAgICA8VmlldworICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2VpZ2h0PSJAaW50ZWdlci9zZXR1cF93ZWxjb21lX3ZpZGVvX2xlZnRfcGFkZGluZ193ZWlnaHRfaW5fc2NyZWVuIgorICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2lkdGg9IjBkcCIKKyAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2hlaWdodD0iMGRwIiAvPgorICAgICAgICA8VmlkZW9WaWV3CisgICAgICAgICAgICBhbmRyb2lkOmlkPSJAK2lkL3NldHVwX3dlbGNvbWVfdmlkZW8iCisgICAgICAgICAgICBhbmRyb2lkOmJhY2tncm91bmQ9IkBjb2xvci9zZXR1cF9iYWNrZ3JvdW5kIgorICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2VpZ2h0PSJAaW50ZWdlci9zZXR1cF93ZWxjb21lX3ZpZGVvX3dlaWdodF9pbl9zY3JlZW4iCisgICAgICAgICAgICBhbmRyb2lkOmxheW91dF9tYXJnaW5Ub3A9IkBkaW1lbi9zZXR1cF93ZWxjb21lX3ZpZGVvX3ZlcnRpY2FsX21hcmdpbiIKKyAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X21hcmdpbkJvdHRvbT0iQGRpbWVuL3NldHVwX3dlbGNvbWVfdmlkZW9fdmVydGljYWxfbWFyZ2luIgorICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2lkdGg9IjBkcCIKKyAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2hlaWdodD0id3JhcF9jb250ZW50IiAvPgorICAgICAgICA8VmlldworICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2VpZ2h0PSJAaW50ZWdlci9zZXR1cF93ZWxjb21lX3ZpZGVvX3JpZ2h0X3BhZGRpbmdfd2VpZ2h0X2luX3NjcmVlbiIKKyAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X3dpZHRoPSIwZHAiCisgICAgICAgICAgICBhbmRyb2lkOmxheW91dF9oZWlnaHQ9IjBkcCIgLz4KKyAgICA8L0xpbmVhckxheW91dD4KKyAgICA8Y29tLmFuZHJvaWQuaW5wdXRtZXRob2QubGF0aW4uc2V0dXAuU2V0dXBTdGFydEluZGljYXRvclZpZXcKKyAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2lkdGg9Im1hdGNoX3BhcmVudCIKKyAgICAgICAgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSJ3cmFwX2NvbnRlbnQiIC8+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+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9yZXMvcmF3L21haW5fZW4uZGljdCBiL2phdmEvcmVzL3Jhdy9tYWluX2VuLmRpY3QKaW5kZXggNTI2NzYxYy4uMDg2ODc0ZCAxMDA2NDQKLS0tIGEvamF2YS9yZXMvcmF3L21haW5fZW4uZGljdAorKysgYi9qYXZhL3Jlcy9yYXcvbWFpbl9lbi5kaWN0CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2phdmEvcmVzL3Jhdy9tYWluX2ZyLmRpY3QgYi9qYXZhL3Jlcy9yYXcvbWFpbl9mci5kaWN0CmluZGV4IDc1MjA4OTguLjkwNDRjN2UgMTAwNjQ0Ci0tLSBhL2phdmEvcmVzL3Jhdy9tYWluX2ZyLmRpY3QKKysrIGIvamF2YS9yZXMvcmF3L21haW5fZnIuZGljdApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9qYXZhL3Jlcy9yYXcvbWFpbl9ydS5kaWN0IGIvamF2YS9yZXMvcmF3L21haW5fcnUuZGljdAppbmRleCAyMTZmZjA5Li43MDc0NDE2IDEwMDY0NAotLS0gYS9qYXZhL3Jlcy9yYXcvbWFpbl9ydS5kaWN0CisrKyBiL2phdmEvcmVzL3Jhdy9tYWluX3J1LmRpY3QKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvamF2YS9yZXMvcmF3L3NldHVwX3dlbGNvbWVfdmlkZW8ubXA0IGIvamF2YS9yZXMvcmF3L3NldHVwX3dlbGNvbWVfdmlkZW8ubXA0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA5MzU3ZDgKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL3Jlcy9yYXcvc2V0dXBfd2VsY29tZV92aWRlby5tcDQKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvamF2YS9yZXMvdmFsdWVzLWFmL3N0cmluZ3MueG1sIGIvamF2YS9yZXMvdmFsdWVzLWFmL3N0cmluZ3MueG1sCmluZGV4IDI4OTI5NDAuLjdkZDYzMGMgMTAwNjQ0Ci0tLSBhL2phdmEvcmVzL3ZhbHVlcy1hZi9zdHJpbmdzLnhtbAorKysgYi9qYXZhL3Jlcy92YWx1ZXMtYWYvc3RyaW5ncy54bWwKQEAgLTUzLDYgKzUzLDggQEAKICAgICA8c3RyaW5nIG5hbWU9InVzZV9kb3VibGVfc3BhY2VfcGVyaW9kX3N1bW1hcnkiIG1zZ2lkPSI2NTMyODkyMTg3MjQ3OTUyNzk5Ij4iRHViYmVsdGlrIG9wIHNwYXNpZWJhbGsgdm9lZyBcJ24gcHVudCBpbiwgZ2V2b2xnIGRldXIgXCduIHNwYXNpZSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImF1dG9fY2FwIiBtc2dpZD0iMTcxOTc0NjY3NDg1NDYyODI1MiI+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+CisgICAgPHNraXAgLz4KIDwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvamF2YS9yZXMvdmFsdWVzLWZyL3N0cmluZ3MueG1sIGIvamF2YS9yZXMvdmFsdWVzLWZyL3N0cmluZ3MueG1sCmluZGV4IGMzODUxZDkuLjViYzFmN2EgMTAwNjQ0Ci0tLSBhL2phdmEvcmVzL3ZhbHVlcy1mci9zdHJpbmdzLnhtbAorKysgYi9qYXZhL3Jlcy92YWx1ZXMtZnIvc3RyaW5ncy54bWwKQEAgLTUzLDYgKzUzLDggQEAKICAgICA8c3RyaW5nIG5hbWU9InVzZV9kb3VibGVfc3BhY2VfcGVyaW9kX3N1bW1hcnkiIG1zZ2lkPSI2NTMyODkyMTg3MjQ3OTUyNzk5Ij4iQXBwdXlleiBkZXV4IGZvaXMgc3VyIGxhIGJhcnJlIGRcJ2VzcGFjZSBwb3VyIGluc8OpcmVyIHVuIHBvaW50IGV0IHVuIGVzcGFjZS4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJhdXRvX2NhcCIgbXNnaWQ9IjE3MTk3NDY2NzQ4NTQ2MjgyNTIiPiJNYWp1c2N1bGVzIGF1dG8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJhdXRvX2NhcF9zdW1tYXJ5IiBtc2dpZD0iNzkzNDQ1Mjc2MTAyMjk0Njg3NCI+Ik1hanVzY3VsZSBhdSBwcmVtaWVyIG1vdCBkZSBjaGFxdWUgcGhyYXNlIjwvc3RyaW5nPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGVkaXRfcGVyc29uYWxfZGljdGlvbmFyeSAoMzk5NjkxMDAzODk1Mjk0MDQyMCkgLS0+CisgICAgPHNraXAgLz4KICAgICA8c3RyaW5nIG5hbWU9ImNvbmZpZ3VyZV9kaWN0aW9uYXJpZXNfdGl0bGUiIG1zZ2lkPSI0MjM4NjUyMzM4NTU2OTAyMDQ5Ij4iRGljdGlvbm5haXJlcyBjb21wbMOpbWVudGFpcmVzIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ibWFpbl9kaWN0aW9uYXJ5IiBtc2dpZD0iNDc5ODc2Mzc4MTgxODM2MTE2OCI+IkRpY3Rpb25uYWlyZSBwcmluY2lwYWwiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwcmVmc19zaG93X3N1Z2dlc3Rpb25zIiBtc2dpZD0iODAyNjc5OTY2MzQ0NTUzMTYzNyI+IkFmZmljaGVyIGxlcyBzdWdnZXN0aW9ucyBkZSBjb3JyZWN0aW9uIjwvc3RyaW5nPgpAQCAtMTcxLDggKzE3MywyNyBAQAogICAgIDxzdHJpbmcgbmFtZT0icmVhZF9leHRlcm5hbF9kaWN0aW9uYXJ5X2NvbmZpcm1faW5zdGFsbF9tZXNzYWdlIiBtc2dpZD0iNjg5ODYxMDE2Mzc2ODk4MDg3MCI+Ikluc3RhbGxlciBjZSBmaWNoaWVyIHBvdXIgbGEgbGFuZ3VlIFwiPHhsaWZmOmcgaWQ9IkxPQ0FMRV9OQU1FIj4lczwveGxpZmY6Zz5cIsKgPyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImVycm9yIiBtc2dpZD0iODk0MDc2MzYyNDY2ODUxMzY0OCI+IlVuZSBlcnJldXIgc1wnZXN0IHByb2R1aXRlIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYnV0dG9uX2RlZmF1bHQiIG1zZ2lkPSIzOTg4MDE3ODQwNDMxODgxNDkxIj4iUGFyIGTDqWZhdXQiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJsYW5ndWFnZV9zZXR0aW5ncyIgbXNnaWQ9IjE2NzExNTMwNTMyMDE4MDkwMzEiPiJMYW5ndWUgZXQgc2Fpc2llIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ic2VsZWN0X2lucHV0X21ldGhvZCIgbXNnaWQ9IjQzMDE2MDIzNzQ2MDkyNzUwMDMiPiJTw6lsZWN0aW9ubmV6IGxlIG1vZGUgZGUgc2Fpc2llIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfd2VsY29tZV90aXRsZSIgbXNnaWQ9IjYxMTI4MjE3MDk4MzIwMzE3MTUiPiJCaWVudmVudWUgZGFucyA8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfd2VsY29tZV9hZGRpdGlvbmFsX2Rlc2NyaXB0aW9uIiBtc2dpZD0iODE1MDI1MjAwODU0NTc2ODk1MyI+ImF2ZWMgbGEgc2Fpc2llIGdlc3R1ZWxsZSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0YXJ0X2FjdGlvbiIgbXNnaWQ9Ijg5MzYwMzY0NjA4OTczNDc3MDgiPiJDb21tZW5jZXIiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9uZXh0X2FjdGlvbiIgbXNnaWQ9IjM3MTgyMTQzNzkxNTE0NDYwMyI+IsOJdGFwZSBzdWl2YW50ZSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXBzX3RpdGxlIiBtc2dpZD0iNjQwMDM3MzAzNDg3MTgxNjE4MiI+IkNvbmZpZ3VyZXIgPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAxX3RpdGxlIiBtc2dpZD0iMzE0Nzk2NzYzMDI1MzQ2MjMxNSI+IkFjdGl2ZXIgPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAxX2luc3RydWN0aW9uIiBtc2dpZD0iMjU3ODYzMTkzNjYyNDYzNzI0MSI+IlNvdXMgXCJMYW5ndWUgZXQgc2Fpc2llXCIsIGNvY2hleiBcIjx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz5cIiBwb3VyIGF1dG9yaXNlciBzb24gZXjDqWN1dGlvbiBzdXIgbFwnYXBwYXJlaWwuIjwvc3RyaW5nPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNldHVwX3N0ZXAxX2ZpbmlzaGVkX2luc3RydWN0aW9uICgxMDc2MTQ4MjAwNDk1Nzk5NCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAxX2FjdGlvbiIgbXNnaWQ9IjQzNjY1MTM1MzQ5OTk5MDE3MjgiPiJBY3RpdmVyIGxlIGNsYXZpZXIgZGFucyBsZXMgcGFyYW3DqHRyZXMiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMl90aXRsZSIgbXNnaWQ9IjY4NjA3MjU0NDc5MDY2OTA1OTQiPiJCYXNjdWxlciB2ZXJzIDx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMl9pbnN0cnVjdGlvbiIgbXNnaWQ9IjkxNDE0ODE5NjQ4NzAwMjMzMzYiPiJTw6lsZWN0aW9ubmV6IGVuc3VpdGUgXCI8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+XCIgY29tbWUgbW9kZSBkZSBzYWlzaWUgYWN0aWYuIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDJfYWN0aW9uIiBtc2dpZD0iMTY2MDMzMDMwNzE1OTgyNDMzNyI+IkNoYW5nZXIgZGUgbW9kZSBkZSBzYWlzaWUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwM190aXRsZSIgbXNnaWQ9IjMxNTQ3NTcxODM2MzE0OTAyODEiPiJGw6lsaWNpdGF0aW9ucywgbFwnb3DDqXJhdGlvbiBlc3QgdGVybWluw6llIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDNfaW5zdHJ1Y3Rpb24iIG1zZ2lkPSI4MDI1OTgxODI5NjA1NDI2MDAwIj4iQXZlYyA8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+LCB2b3VzIHBvdXZleiBzYWlzaXIgZHUgdGV4dGUgZGFucyB0b3V0ZXMgdm9zIGFwcGxpY2F0aW9ucyBwcsOpZsOpcsOpZXMuIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDNfYWN0aW9uIiBtc2dpZD0iNjAwODc5Nzk3MjU2OTQyMjU5Ij4iQ29uZmlndXJlciBkZXMgbGFuZ3VlcyBzdXBwbMOpbWVudGFpcmVzIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfZmluaXNoX2FjdGlvbiIgbXNnaWQ9IjI3NjU1OTI0MzQwOTQ2NTM4OSI+Ik9LIjwvc3RyaW5nPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNob3dfc2V0dXBfd2l6YXJkX2ljb24gKDUwMDgwMjg1OTA1OTM3MTA4MzApIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc2hvd19zZXR1cF93aXphcmRfaWNvbl9zdW1tYXJ5ICg0MTE5OTk4MzIyNTM2ODgwMjEzKSAtLT4KKyAgICA8c2tpcCAvPgogICAgIDxzdHJpbmcgbmFtZT0iYXBwX25hbWUiIG1zZ2lkPSI2MzIwMTAyNjM3NDkxMjM0NzkyIj4iRm91cm5pc3NldXIgZGUgZGljdGlvbm5haXJlcyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRpY3Rpb25hcnlfcHJvdmlkZXJfbmFtZSIgbXNnaWQ9IjMwMjczMTUwNDUzOTczNjMwNzkiPiJGb3Vybmlzc2V1ciBkZSBkaWN0aW9ubmFpcmVzIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGljdGlvbmFyeV9zZXJ2aWNlX25hbWUiIG1zZ2lkPSI2MjM3NDcyMzUwNjkzNTExNDQ4Ij4iU2VydmljZSBkZSBkaWN0aW9ubmFpcmVzIjwvc3RyaW5nPgpAQCAtMjAzLDQgKzIyNCw2IEBACiAgICAgPHN0cmluZyBuYW1lPSJkaWN0X2F2YWlsYWJsZV9ub3RpZmljYXRpb25fdGl0bGUiIG1zZ2lkPSI2NTE0Mjg4NTkxOTU5MTE3Mjg4Ij4iVW4gZGljdGlvbm5haXJlIGVzdCBkaXNwb25pYmxlIGVuIDx4bGlmZjpnIGlkPSJMQU5HVUFHRSI+JTEkczwveGxpZmY6Zz4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkaWN0X2F2YWlsYWJsZV9ub3RpZmljYXRpb25fZGVzY3JpcHRpb24iIG1zZ2lkPSIxMDc1MTk0MTY5NDQzMTYzNDg3Ij4iQXBwdXlleiBpY2kgcG91ciBjb25zdWx0ZXIgZXQgdMOpbMOpY2hhcmdlciBsZSBkaWN0aW9ubmFpcmUuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idG9hc3RfZG93bmxvYWRpbmdfc3VnZ2VzdGlvbnMiIG1zZ2lkPSIxMzEzMDI3MzUzNTg4NTY2NjYwIj4iRW4gY291cnMgZGUgdMOpbMOpY2hhcmdlbWVudC4gRGVzIHN1Z2dlc3Rpb25zIHBvdXIgbGEgbGFuZ3VlIHN1aXZhbnRlIHNlcm9udCBiaWVudMO0dCBkaXNwb25pYmxlc8KgOiA8eGxpZmY6ZyBpZD0iTEFOR1VBR0UiPiUxJHM8L3hsaWZmOmc+LiI8L3N0cmluZz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciB2ZXJzaW9uX3RleHQgKDI3MTUzNTQyMTU1Njg0NjkzODUpIC0tPgorICAgIDxza2lwIC8+CiA8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL2phdmEvcmVzL3ZhbHVlcy1oMTIwMGRwLXBvcnQvc2V0dXAtZGltZW5zLWxhcmdlLXRhYmxldC1wb3J0LnhtbCBiL2phdmEvcmVzL3ZhbHVlcy1oMTIwMGRwLXBvcnQvc2V0dXAtZGltZW5zLWxhcmdlLXRhYmxldC1wb3J0LnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZDYxYzFhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9yZXMvdmFsdWVzLWgxMjAwZHAtcG9ydC9zZXR1cC1kaW1lbnMtbGFyZ2UtdGFibGV0LXBvcnQueG1sCkBAIC0wLDAgKzEsNDAgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8IS0tIENvcHlyaWdodCAoQykgMjAxMyBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisKKyAgICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAgICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisKKyAgICAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKworICAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLS0+CisKKzxyZXNvdXJjZXMgeG1sbnM6YW5kcm9pZD0iaHR0cDovL3NjaGVtYXMuYW5kcm9pZC5jb20vYXBrL3Jlcy9hbmRyb2lkIj4KKyAgICA8IS0tIFNldHVwIHdpemFyZCBkaW1lbnNpb25zIGZvciBsYXJnZS10YWJsZXQvcG9ydHJhaXQuIC0tPgorICAgIDxkaW1lbiBuYW1lPSJzZXR1cF90aXRsZV90ZXh0X3NpemUiPjcyc3A8L2RpbWVuPgorICAgIDxkaW1lbiBuYW1lPSJzZXR1cF93ZWxjb21lX2Rlc2NyaXB0aW9uX3RleHRfc2l6ZSI+MzZzcDwvZGltZW4+CisgICAgPGRpbWVuIG5hbWU9InNldHVwX3N0ZXBfYnVsbGV0X3RleHRfc2l6ZSI+MjRzcDwvZGltZW4+CisgICAgPGRpbWVuIG5hbWU9InNldHVwX3N0ZXBfdHJpYW5nbGVfaW5kaWNhdG9yX2hlaWdodCI+MjRkcDwvZGltZW4+CisgICAgPGRpbWVuIG5hbWU9InNldHVwX3N0ZXBfaW5kaWNhdG9yX2hlaWdodCI+MjRkcDwvZGltZW4+CisgICAgPGRpbWVuIG5hbWU9InNldHVwX3N0ZXBfdGl0bGVfdGV4dF9zaXplIj4yNHNwPC9kaW1lbj4KKyAgICA8ZGltZW4gbmFtZT0ic2V0dXBfc3RlcF9pbnN0cnVjdGlvbl90ZXh0X3NpemUiPjE4c3A8L2RpbWVuPgorICAgIDxkaW1lbiBuYW1lPSJzZXR1cF9zdGVwX2FjdGlvbl90ZXh0X3NpemUiPjIwc3A8L2RpbWVuPgorICAgIDxkaW1lbiBuYW1lPSJzZXR1cF92ZXJ0aWNhbF9wYWRkaW5nIj45NmRwPC9kaW1lbj4KKyAgICA8ZGltZW4gbmFtZT0ic2V0dXBfaG9yaXpvbnRhbF9wYWRkaW5nIj4xNDRkcDwvZGltZW4+CisgICAgPGRpbWVuIG5hbWU9InNldHVwX3N0ZXBfYWN0aW9uX2hlaWdodCI+NDhkcDwvZGltZW4+CisgICAgPGRpbWVuIG5hbWU9InNldHVwX3N0ZXBfaG9yaXpvbnRhbF9wYWRkaW5nIj4yNGRwPC9kaW1lbj4KKyAgICA8ZGltZW4gbmFtZT0ic2V0dXBfc3RlcF9ob3Jpem9udGFsX3BhZGRpbmdfaGFsZiI+MTJkcDwvZGltZW4+CisgICAgPGRpbWVuIG5hbWU9InNldHVwX3N0ZXBfdmVydGljYWxfcGFkZGluZyI+MTZkcDwvZGltZW4+CisgICAgPGRpbWVuIG5hbWU9InNldHVwX3N0ZXBfaG9yaXpvbnRhbF9saW5lX2hlaWdodCI+MmRwPC9kaW1lbj4KKyAgICA8aW50ZWdlciBuYW1lPSJzZXR1cF90aXRsZV93ZWlnaHRfaW5fc2NyZWVuIj40MDwvaW50ZWdlcj4KKyAgICA8aW50ZWdlciBuYW1lPSJzZXR1cF9ib2R5X3dlaWdodF9pbl9zY3JlZW4iPjYwPC9pbnRlZ2VyPgorICAgIDxkaW1lbiBuYW1lPSJzZXR1cF93ZWxjb21lX3ZpZGVvX3ZlcnRpY2FsX21hcmdpbiI+MjRkcDwvZGltZW4+CisgICAgPGludGVnZXIgbmFtZT0ic2V0dXBfd2VsY29tZV92aWRlb193ZWlnaHRfaW5fc2NyZWVuIj41MDwvaW50ZWdlcj4KKyAgICA8aW50ZWdlciBuYW1lPSJzZXR1cF93ZWxjb21lX3ZpZGVvX2xlZnRfcGFkZGluZ193ZWlnaHRfaW5fc2NyZWVuIj4yNTwvaW50ZWdlcj4KKyAgICA8aW50ZWdlciBuYW1lPSJzZXR1cF93ZWxjb21lX3ZpZGVvX3JpZ2h0X3BhZGRpbmdfd2VpZ2h0X2luX3NjcmVlbiI+MjU8L2ludGVnZXI+Cis8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL2phdmEvcmVzL3ZhbHVlcy1oMzMwZHAtbGFuZC9zZXR1cC1kaW1lbnMtbGFyZ2UtcGhvbmUtbGFuZC54bWwgYi9qYXZhL3Jlcy92YWx1ZXMtaDMzMGRwLWxhbmQvc2V0dXAtZGltZW5zLWxhcmdlLXBob25lLWxhbmQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY5YThhN2EKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL3Jlcy92YWx1ZXMtaDMzMGRwLWxhbmQvc2V0dXAtZGltZW5zLWxhcmdlLXBob25lLWxhbmQueG1sCkBAIC0wLDAgKzEsNDAgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8IS0tIENvcHlyaWdodCAoQykgMjAxMyBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisKKyAgICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAgICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisKKyAgICAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKworICAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLS0+CisKKzxyZXNvdXJjZXMgeG1sbnM6YW5kcm9pZD0iaHR0cDovL3NjaGVtYXMuYW5kcm9pZC5jb20vYXBrL3Jlcy9hbmRyb2lkIj4KKyAgICA8IS0tIFNldHVwIHdpemFyZCBkaW1lbnNpb25zIGZvciBsYXJnZS1waG9uZS9sYW5kc2NhcGUuIC0tPgorICAgIDxkaW1lbiBuYW1lPSJzZXR1cF90aXRsZV90ZXh0X3NpemUiPjQyc3A8L2RpbWVuPgorICAgIDxkaW1lbiBuYW1lPSJzZXR1cF93ZWxjb21lX2Rlc2NyaXB0aW9uX3RleHRfc2l6ZSI+MjRzcDwvZGltZW4+CisgICAgPGRpbWVuIG5hbWU9InNldHVwX3N0ZXBfYnVsbGV0X3RleHRfc2l6ZSI+MjJzcDwvZGltZW4+CisgICAgPGRpbWVuIG5hbWU9InNldHVwX3N0ZXBfdHJpYW5nbGVfaW5kaWNhdG9yX2hlaWdodCI+MjRkcDwvZGltZW4+CisgICAgPGRpbWVuIG5hbWU9InNldHVwX3N0ZXBfaW5kaWNhdG9yX2hlaWdodCI+MjRkcDwvZGltZW4+CisgICAgPGRpbWVuIG5hbWU9InNldHVwX3N0ZXBfdGl0bGVfdGV4dF9zaXplIj4yMnNwPC9kaW1lbj4KKyAgICA8ZGltZW4gbmFtZT0ic2V0dXBfc3RlcF9pbnN0cnVjdGlvbl90ZXh0X3NpemUiPjE0c3A8L2RpbWVuPgorICAgIDxkaW1lbiBuYW1lPSJzZXR1cF9zdGVwX2FjdGlvbl90ZXh0X3NpemUiPjE4c3A8L2RpbWVuPgorICAgIDxkaW1lbiBuYW1lPSJzZXR1cF92ZXJ0aWNhbF9wYWRkaW5nIj4xNmRwPC9kaW1lbj4KKyAgICA8ZGltZW4gbmFtZT0ic2V0dXBfaG9yaXpvbnRhbF9wYWRkaW5nIj4xNmRwPC9kaW1lbj4KKyAgICA8ZGltZW4gbmFtZT0ic2V0dXBfc3RlcF9hY3Rpb25faGVpZ2h0Ij40OGRwPC9kaW1lbj4KKyAgICA8ZGltZW4gbmFtZT0ic2V0dXBfc3RlcF9ob3Jpem9udGFsX3BhZGRpbmciPjI0ZHA8L2RpbWVuPgorICAgIDxkaW1lbiBuYW1lPSJzZXR1cF9zdGVwX2hvcml6b250YWxfcGFkZGluZ19oYWxmIj4xMmRwPC9kaW1lbj4KKyAgICA8ZGltZW4gbmFtZT0ic2V0dXBfc3RlcF92ZXJ0aWNhbF9wYWRkaW5nIj4xNmRwPC9kaW1lbj4KKyAgICA8ZGltZW4gbmFtZT0ic2V0dXBfc3RlcF9ob3Jpem9udGFsX2xpbmVfaGVpZ2h0Ij4yZHA8L2RpbWVuPgorICAgIDxpbnRlZ2VyIG5hbWU9InNldHVwX3RpdGxlX3dlaWdodF9pbl9zY3JlZW4iPjQwPC9pbnRlZ2VyPgorICAgIDxpbnRlZ2VyIG5hbWU9InNldHVwX2JvZHlfd2VpZ2h0X2luX3NjcmVlbiI+NjA8L2ludGVnZXI+CisgICAgPGRpbWVuIG5hbWU9InNldHVwX3dlbGNvbWVfdmlkZW9fdmVydGljYWxfbWFyZ2luIj4yNGRwPC9kaW1lbj4KKyAgICA8aW50ZWdlciBuYW1lPSJzZXR1cF93ZWxjb21lX3ZpZGVvX3dlaWdodF9pbl9zY3JlZW4iPjgwPC9pbnRlZ2VyPgorICAgIDxpbnRlZ2VyIG5hbWU9InNldHVwX3dlbGNvbWVfdmlkZW9fbGVmdF9wYWRkaW5nX3dlaWdodF9pbl9zY3JlZW4iPjEwPC9pbnRlZ2VyPgorICAgIDxpbnRlZ2VyIG5hbWU9InNldHVwX3dlbGNvbWVfdmlkZW9fcmlnaHRfcGFkZGluZ193ZWlnaHRfaW5fc2NyZWVuIj4xMDwvaW50ZWdlcj4KKzwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvamF2YS9yZXMvdmFsdWVzLWg1MjBkcC1sYW5kL3NldHVwLWRpbWVucy1zbWFsbC10YWJsZXQtbGFuZC54bWwgYi9qYXZhL3Jlcy92YWx1ZXMtaDUyMGRwLWxhbmQvc2V0dXAtZGltZW5zLXNtYWxsLXRhYmxldC1sYW5kLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YTE0ZDU5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9yZXMvdmFsdWVzLWg1MjBkcC1sYW5kL3NldHVwLWRpbWVucy1zbWFsbC10YWJsZXQtbGFuZC54bWwKQEAgLTAsMCArMSw0MCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzwhLS0gQ29weXJpZ2h0IChDKSAyMDEzIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKworICAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAgICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKworICAgICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorCisgICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAgICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAgICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAgICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCistLT4KKworPHJlc291cmNlcyB4bWxuczphbmRyb2lkPSJodHRwOi8vc2NoZW1hcy5hbmRyb2lkLmNvbS9hcGsvcmVzL2FuZHJvaWQiPgorICAgIDwhLS0gU2V0dXAgd2l6YXJkIGRpbWVuc2lvbnMgZm9yIHNtYWxsLXRhYmxldC9sYW5kc2NhcGUuIC0tPgorICAgIDxkaW1lbiBuYW1lPSJzZXR1cF90aXRsZV90ZXh0X3NpemUiPjU2c3A8L2RpbWVuPgorICAgIDxkaW1lbiBuYW1lPSJzZXR1cF93ZWxjb21lX2Rlc2NyaXB0aW9uX3RleHRfc2l6ZSI+MjhzcDwvZGltZW4+CisgICAgPGRpbWVuIG5hbWU9InNldHVwX3N0ZXBfYnVsbGV0X3RleHRfc2l6ZSI+MjRzcDwvZGltZW4+CisgICAgPGRpbWVuIG5hbWU9InNldHVwX3N0ZXBfdHJpYW5nbGVfaW5kaWNhdG9yX2hlaWdodCI+MjRkcDwvZGltZW4+CisgICAgPGRpbWVuIG5hbWU9InNldHVwX3N0ZXBfaW5kaWNhdG9yX2hlaWdodCI+MjRkcDwvZGltZW4+CisgICAgPGRpbWVuIG5hbWU9InNldHVwX3N0ZXBfdGl0bGVfdGV4dF9zaXplIj4yNHNwPC9kaW1lbj4KKyAgICA8ZGltZW4gbmFtZT0ic2V0dXBfc3RlcF9pbnN0cnVjdGlvbl90ZXh0X3NpemUiPjE4c3A8L2RpbWVuPgorICAgIDxkaW1lbiBuYW1lPSJzZXR1cF9zdGVwX2FjdGlvbl90ZXh0X3NpemUiPjIwc3A8L2RpbWVuPgorICAgIDxkaW1lbiBuYW1lPSJzZXR1cF92ZXJ0aWNhbF9wYWRkaW5nIj4zMmRwPC9kaW1lbj4KKyAgICA8ZGltZW4gbmFtZT0ic2V0dXBfaG9yaXpvbnRhbF9wYWRkaW5nIj45NmRwPC9kaW1lbj4KKyAgICA8ZGltZW4gbmFtZT0ic2V0dXBfc3RlcF9hY3Rpb25faGVpZ2h0Ij40OGRwPC9kaW1lbj4KKyAgICA8ZGltZW4gbmFtZT0ic2V0dXBfc3RlcF9ob3Jpem9udGFsX3BhZGRpbmciPjI0ZHA8L2RpbWVuPgorICAgIDxkaW1lbiBuYW1lPSJzZXR1cF9zdGVwX2hvcml6b250YWxfcGFkZGluZ19oYWxmIj4xMmRwPC9kaW1lbj4KKyAgICA8ZGltZW4gbmFtZT0ic2V0dXBfc3RlcF92ZXJ0aWNhbF9wYWRkaW5nIj4xNmRwPC9kaW1lbj4KKyAgICA8ZGltZW4gbmFtZT0ic2V0dXBfc3RlcF9ob3Jpem9udGFsX2xpbmVfaGVpZ2h0Ij4yZHA8L2RpbWVuPgorICAgIDxpbnRlZ2VyIG5hbWU9InNldHVwX3RpdGxlX3dlaWdodF9pbl9zY3JlZW4iPjQwPC9pbnRlZ2VyPgorICAgIDxpbnRlZ2VyIG5hbWU9InNldHVwX2JvZHlfd2VpZ2h0X2luX3NjcmVlbiI+NjA8L2ludGVnZXI+CisgICAgPGRpbWVuIG5hbWU9InNldHVwX3dlbGNvbWVfdmlkZW9fdmVydGljYWxfbWFyZ2luIj4yNGRwPC9kaW1lbj4KKyAgICA8aW50ZWdlciBuYW1lPSJzZXR1cF93ZWxjb21lX3ZpZGVvX3dlaWdodF9pbl9zY3JlZW4iPjYwPC9pbnRlZ2VyPgorICAgIDxpbnRlZ2VyIG5hbWU9InNldHVwX3dlbGNvbWVfdmlkZW9fbGVmdF9wYWRkaW5nX3dlaWdodF9pbl9zY3JlZW4iPjIwPC9pbnRlZ2VyPgorICAgIDxpbnRlZ2VyIG5hbWU9InNldHVwX3dlbGNvbWVfdmlkZW9fcmlnaHRfcGFkZGluZ193ZWlnaHRfaW5fc2NyZWVuIj4yMDwvaW50ZWdlcj4KKzwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvamF2YS9yZXMvdmFsdWVzLWg1NDBkcC1wb3J0L3NldHVwLWRpbWVucy1sYXJnZS1waG9uZS1wb3J0LnhtbCBiL2phdmEvcmVzL3ZhbHVlcy1oNTQwZHAtcG9ydC9zZXR1cC1kaW1lbnMtbGFyZ2UtcGhvbmUtcG9ydC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjhkZDMzZAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvcmVzL3ZhbHVlcy1oNTQwZHAtcG9ydC9zZXR1cC1kaW1lbnMtbGFyZ2UtcGhvbmUtcG9ydC54bWwKQEAgLTAsMCArMSw0MCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzwhLS0gQ29weXJpZ2h0IChDKSAyMDEzIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKworICAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAgICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKworICAgICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorCisgICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAgICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAgICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAgICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCistLT4KKworPHJlc291cmNlcyB4bWxuczphbmRyb2lkPSJodHRwOi8vc2NoZW1hcy5hbmRyb2lkLmNvbS9hcGsvcmVzL2FuZHJvaWQiPgorICAgIDwhLS0gU2V0dXAgd2l6YXJkIGRpbWVuc2lvbnMgZm9yIGxhcmdlLXBob25lL3BvcnRyYWl0LiAtLT4KKyAgICA8ZGltZW4gbmFtZT0ic2V0dXBfdGl0bGVfdGV4dF9zaXplIj40NnNwPC9kaW1lbj4KKyAgICA8ZGltZW4gbmFtZT0ic2V0dXBfd2VsY29tZV9kZXNjcmlwdGlvbl90ZXh0X3NpemUiPjI2c3A8L2RpbWVuPgorICAgIDxkaW1lbiBuYW1lPSJzZXR1cF9zdGVwX2J1bGxldF90ZXh0X3NpemUiPjIyc3A8L2RpbWVuPgorICAgIDxkaW1lbiBuYW1lPSJzZXR1cF9zdGVwX3RyaWFuZ2xlX2luZGljYXRvcl9oZWlnaHQiPjI0ZHA8L2RpbWVuPgorICAgIDxkaW1lbiBuYW1lPSJzZXR1cF9zdGVwX2luZGljYXRvcl9oZWlnaHQiPjI0ZHA8L2RpbWVuPgorICAgIDxkaW1lbiBuYW1lPSJzZXR1cF9zdGVwX3RpdGxlX3RleHRfc2l6ZSI+MjJzcDwvZGltZW4+CisgICAgPGRpbWVuIG5hbWU9InNldHVwX3N0ZXBfaW5zdHJ1Y3Rpb25fdGV4dF9zaXplIj4xNHNwPC9kaW1lbj4KKyAgICA8ZGltZW4gbmFtZT0ic2V0dXBfc3RlcF9hY3Rpb25fdGV4dF9zaXplIj4xOHNwPC9kaW1lbj4KKyAgICA8ZGltZW4gbmFtZT0ic2V0dXBfdmVydGljYWxfcGFkZGluZyI+MTZkcDwvZGltZW4+CisgICAgPGRpbWVuIG5hbWU9InNldHVwX2hvcml6b250YWxfcGFkZGluZyI+MTZkcDwvZGltZW4+CisgICAgPGRpbWVuIG5hbWU9InNldHVwX3N0ZXBfYWN0aW9uX2hlaWdodCI+NDhkcDwvZGltZW4+CisgICAgPGRpbWVuIG5hbWU9InNldHVwX3N0ZXBfaG9yaXpvbnRhbF9wYWRkaW5nIj4yNGRwPC9kaW1lbj4KKyAgICA8ZGltZW4gbmFtZT0ic2V0dXBfc3RlcF9ob3Jpem9udGFsX3BhZGRpbmdfaGFsZiI+MTJkcDwvZGltZW4+CisgICAgPGRpbWVuIG5hbWU9InNldHVwX3N0ZXBfdmVydGljYWxfcGFkZGluZyI+MTZkcDwvZGltZW4+CisgICAgPGRpbWVuIG5hbWU9InNldHVwX3N0ZXBfaG9yaXpvbnRhbF9saW5lX2hlaWdodCI+MmRwPC9kaW1lbj4KKyAgICA8aW50ZWdlciBuYW1lPSJzZXR1cF90aXRsZV93ZWlnaHRfaW5fc2NyZWVuIj40MDwvaW50ZWdlcj4KKyAgICA8aW50ZWdlciBuYW1lPSJzZXR1cF9ib2R5X3dlaWdodF9pbl9zY3JlZW4iPjYwPC9pbnRlZ2VyPgorICAgIDxkaW1lbiBuYW1lPSJzZXR1cF93ZWxjb21lX3ZpZGVvX3ZlcnRpY2FsX21hcmdpbiI+MjRkcDwvZGltZW4+CisgICAgPGludGVnZXIgbmFtZT0ic2V0dXBfd2VsY29tZV92aWRlb193ZWlnaHRfaW5fc2NyZWVuIj44MDwvaW50ZWdlcj4KKyAgICA8aW50ZWdlciBuYW1lPSJzZXR1cF93ZWxjb21lX3ZpZGVvX2xlZnRfcGFkZGluZ193ZWlnaHRfaW5fc2NyZWVuIj4xMDwvaW50ZWdlcj4KKyAgICA8aW50ZWdlciBuYW1lPSJzZXR1cF93ZWxjb21lX3ZpZGVvX3JpZ2h0X3BhZGRpbmdfd2VpZ2h0X2luX3NjcmVlbiI+MTA8L2ludGVnZXI+Cis8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL2phdmEvcmVzL3ZhbHVlcy1oNzIwZHAtbGFuZC9zZXR1cC1kaW1lbnMtbGFyZ2UtdGFibGV0LWxhbmQueG1sIGIvamF2YS9yZXMvdmFsdWVzLWg3MjBkcC1sYW5kL3NldHVwLWRpbWVucy1sYXJnZS10YWJsZXQtbGFuZC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDAwNGEzYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvcmVzL3ZhbHVlcy1oNzIwZHAtbGFuZC9zZXR1cC1kaW1lbnMtbGFyZ2UtdGFibGV0LWxhbmQueG1sCkBAIC0wLDAgKzEsNDAgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8IS0tIENvcHlyaWdodCAoQykgMjAxMyBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisKKyAgICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAgICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisKKyAgICAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKworICAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLS0+CisKKzxyZXNvdXJjZXMgeG1sbnM6YW5kcm9pZD0iaHR0cDovL3NjaGVtYXMuYW5kcm9pZC5jb20vYXBrL3Jlcy9hbmRyb2lkIj4KKyAgICA8IS0tIFNldHVwIHdpemFyZCBkaW1lbnNpb25zIGZvciBsYXJnZS10YWJsZXQvbGFuZHNjYXBlLiAtLT4KKyAgICA8ZGltZW4gbmFtZT0ic2V0dXBfdGl0bGVfdGV4dF9zaXplIj41OHNwPC9kaW1lbj4KKyAgICA8ZGltZW4gbmFtZT0ic2V0dXBfd2VsY29tZV9kZXNjcmlwdGlvbl90ZXh0X3NpemUiPjI4c3A8L2RpbWVuPgorICAgIDxkaW1lbiBuYW1lPSJzZXR1cF9zdGVwX2J1bGxldF90ZXh0X3NpemUiPjI0c3A8L2RpbWVuPgorICAgIDxkaW1lbiBuYW1lPSJzZXR1cF9zdGVwX3RyaWFuZ2xlX2luZGljYXRvcl9oZWlnaHQiPjI0ZHA8L2RpbWVuPgorICAgIDxkaW1lbiBuYW1lPSJzZXR1cF9zdGVwX2luZGljYXRvcl9oZWlnaHQiPjI0ZHA8L2RpbWVuPgorICAgIDxkaW1lbiBuYW1lPSJzZXR1cF9zdGVwX3RpdGxlX3RleHRfc2l6ZSI+MjRzcDwvZGltZW4+CisgICAgPGRpbWVuIG5hbWU9InNldHVwX3N0ZXBfaW5zdHJ1Y3Rpb25fdGV4dF9zaXplIj4xOHNwPC9kaW1lbj4KKyAgICA8ZGltZW4gbmFtZT0ic2V0dXBfc3RlcF9hY3Rpb25fdGV4dF9zaXplIj4yMHNwPC9kaW1lbj4KKyAgICA8ZGltZW4gbmFtZT0ic2V0dXBfdmVydGljYWxfcGFkZGluZyI+OTZkcDwvZGltZW4+CisgICAgPGRpbWVuIG5hbWU9InNldHVwX2hvcml6b250YWxfcGFkZGluZyI+MTkyZHA8L2RpbWVuPgorICAgIDxkaW1lbiBuYW1lPSJzZXR1cF9zdGVwX2FjdGlvbl9oZWlnaHQiPjQ4ZHA8L2RpbWVuPgorICAgIDxkaW1lbiBuYW1lPSJzZXR1cF9zdGVwX2hvcml6b250YWxfcGFkZGluZyI+MjRkcDwvZGltZW4+CisgICAgPGRpbWVuIG5hbWU9InNldHVwX3N0ZXBfaG9yaXpvbnRhbF9wYWRkaW5nX2hhbGYiPjEyZHA8L2RpbWVuPgorICAgIDxkaW1lbiBuYW1lPSJzZXR1cF9zdGVwX3ZlcnRpY2FsX3BhZGRpbmciPjE2ZHA8L2RpbWVuPgorICAgIDxkaW1lbiBuYW1lPSJzZXR1cF9zdGVwX2hvcml6b250YWxfbGluZV9oZWlnaHQiPjJkcDwvZGltZW4+CisgICAgPGludGVnZXIgbmFtZT0ic2V0dXBfdGl0bGVfd2VpZ2h0X2luX3NjcmVlbiI+NDA8L2ludGVnZXI+CisgICAgPGludGVnZXIgbmFtZT0ic2V0dXBfYm9keV93ZWlnaHRfaW5fc2NyZWVuIj42MDwvaW50ZWdlcj4KKyAgICA8ZGltZW4gbmFtZT0ic2V0dXBfd2VsY29tZV92aWRlb192ZXJ0aWNhbF9tYXJnaW4iPjI0ZHA8L2RpbWVuPgorICAgIDxpbnRlZ2VyIG5hbWU9InNldHVwX3dlbGNvbWVfdmlkZW9fd2VpZ2h0X2luX3NjcmVlbiI+NTA8L2ludGVnZXI+CisgICAgPGludGVnZXIgbmFtZT0ic2V0dXBfd2VsY29tZV92aWRlb19sZWZ0X3BhZGRpbmdfd2VpZ2h0X2luX3NjcmVlbiI+MjU8L2ludGVnZXI+CisgICAgPGludGVnZXIgbmFtZT0ic2V0dXBfd2VsY29tZV92aWRlb19yaWdodF9wYWRkaW5nX3dlaWdodF9pbl9zY3JlZW4iPjI1PC9pbnRlZ2VyPgorPC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9qYXZhL3Jlcy92YWx1ZXMtaDgwMGRwLXBvcnQvc2V0dXAtZGltZW5zLXNtYWxsLXRhYmxldC1wb3J0LnhtbCBiL2phdmEvcmVzL3ZhbHVlcy1oODAwZHAtcG9ydC9zZXR1cC1kaW1lbnMtc21hbGwtdGFibGV0LXBvcnQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg3Yzk5MWMKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL3Jlcy92YWx1ZXMtaDgwMGRwLXBvcnQvc2V0dXAtZGltZW5zLXNtYWxsLXRhYmxldC1wb3J0LnhtbApAQCAtMCwwICsxLDQwIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPCEtLSBDb3B5cmlnaHQgKEMpIDIwMTMgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorCisgICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorCisgICAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisKKyAgICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAgICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy0tPgorCis8cmVzb3VyY2VzIHhtbG5zOmFuZHJvaWQ9Imh0dHA6Ly9zY2hlbWFzLmFuZHJvaWQuY29tL2Fway9yZXMvYW5kcm9pZCI+CisgICAgPCEtLSBTZXR1cCB3aXphcmQgZGltZW5zaW9ucyBmb3Igc21hbGwtdGFibGV0L3BvcnRyYWl0LiAtLT4KKyAgICA8ZGltZW4gbmFtZT0ic2V0dXBfdGl0bGVfdGV4dF9zaXplIj43MnNwPC9kaW1lbj4KKyAgICA8ZGltZW4gbmFtZT0ic2V0dXBfd2VsY29tZV9kZXNjcmlwdGlvbl90ZXh0X3NpemUiPjM2c3A8L2RpbWVuPgorICAgIDxkaW1lbiBuYW1lPSJzZXR1cF9zdGVwX2J1bGxldF90ZXh0X3NpemUiPjI0c3A8L2RpbWVuPgorICAgIDxkaW1lbiBuYW1lPSJzZXR1cF9zdGVwX3RyaWFuZ2xlX2luZGljYXRvcl9oZWlnaHQiPjI0ZHA8L2RpbWVuPgorICAgIDxkaW1lbiBuYW1lPSJzZXR1cF9zdGVwX2luZGljYXRvcl9oZWlnaHQiPjI0ZHA8L2RpbWVuPgorICAgIDxkaW1lbiBuYW1lPSJzZXR1cF9zdGVwX3RpdGxlX3RleHRfc2l6ZSI+MjRzcDwvZGltZW4+CisgICAgPGRpbWVuIG5hbWU9InNldHVwX3N0ZXBfaW5zdHJ1Y3Rpb25fdGV4dF9zaXplIj4xOHNwPC9kaW1lbj4KKyAgICA8ZGltZW4gbmFtZT0ic2V0dXBfc3RlcF9hY3Rpb25fdGV4dF9zaXplIj4yMHNwPC9kaW1lbj4KKyAgICA8ZGltZW4gbmFtZT0ic2V0dXBfdmVydGljYWxfcGFkZGluZyI+MzJkcDwvZGltZW4+CisgICAgPGRpbWVuIG5hbWU9InNldHVwX2hvcml6b250YWxfcGFkZGluZyI+NjRkcDwvZGltZW4+CisgICAgPGRpbWVuIG5hbWU9InNldHVwX3N0ZXBfYWN0aW9uX2hlaWdodCI+NDhkcDwvZGltZW4+CisgICAgPGRpbWVuIG5hbWU9InNldHVwX3N0ZXBfaG9yaXpvbnRhbF9wYWRkaW5nIj4yNGRwPC9kaW1lbj4KKyAgICA8ZGltZW4gbmFtZT0ic2V0dXBfc3RlcF9ob3Jpem9udGFsX3BhZGRpbmdfaGFsZiI+MTJkcDwvZGltZW4+CisgICAgPGRpbWVuIG5hbWU9InNldHVwX3N0ZXBfdmVydGljYWxfcGFkZGluZyI+MTZkcDwvZGltZW4+CisgICAgPGRpbWVuIG5hbWU9InNldHVwX3N0ZXBfaG9yaXpvbnRhbF9saW5lX2hlaWdodCI+MmRwPC9kaW1lbj4KKyAgICA8aW50ZWdlciBuYW1lPSJzZXR1cF90aXRsZV93ZWlnaHRfaW5fc2NyZWVuIj40MDwvaW50ZWdlcj4KKyAgICA8aW50ZWdlciBuYW1lPSJzZXR1cF9ib2R5X3dlaWdodF9pbl9zY3JlZW4iPjYwPC9pbnRlZ2VyPgorICAgIDxkaW1lbiBuYW1lPSJzZXR1cF93ZWxjb21lX3ZpZGVvX3ZlcnRpY2FsX21hcmdpbiI+MjRkcDwvZGltZW4+CisgICAgPGludGVnZXIgbmFtZT0ic2V0dXBfd2VsY29tZV92aWRlb193ZWlnaHRfaW5fc2NyZWVuIj42MDwvaW50ZWdlcj4KKyAgICA8aW50ZWdlciBuYW1lPSJzZXR1cF93ZWxjb21lX3ZpZGVvX2xlZnRfcGFkZGluZ193ZWlnaHRfaW5fc2NyZWVuIj4yMDwvaW50ZWdlcj4KKyAgICA8aW50ZWdlciBuYW1lPSJzZXR1cF93ZWxjb21lX3ZpZGVvX3JpZ2h0X3BhZGRpbmdfd2VpZ2h0X2luX3NjcmVlbiI+MjA8L2ludGVnZXI+Cis8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL2phdmEvcmVzL3ZhbHVlcy1oaS9zdHJpbmdzLnhtbCBiL2phdmEvcmVzL3ZhbHVlcy1oaS9zdHJpbmdzLnhtbAppbmRleCBiZDc0NWNjLi43MWNlZDBjIDEwMDY0NAotLS0gYS9qYXZhL3Jlcy92YWx1ZXMtaGkvc3RyaW5ncy54bWwKKysrIGIvamF2YS9yZXMvdmFsdWVzLWhpL3N0cmluZ3MueG1sCkBAIC01Myw2ICs1Myw4IEBACiAgICAgPHN0cmluZyBuYW1lPSJ1c2VfZG91YmxlX3NwYWNlX3BlcmlvZF9zdW1tYXJ5IiBtc2dpZD0iNjUzMjg5MjE4NzI0Nzk1Mjc5OSI+IuCkuOCljeCkquClh+CkuOCkrOCkvuCksCDgpKrgpLAg4KSh4KSs4KSyIOCkn+CliOCkqiDgpJXgpLDgpKjgpYcg4KS44KWHIOCkquClgOCksOCkv+Ckr+CkoSDgpLbgpL7gpK7gpL/gpLIg4KS54KWLIOCknOCkvuCkpOCkviDgpLngpYgg4KSc4KS/4KS44KSV4KWHIOCkrOCkvuCkpiDgpI/gpJUg4KSw4KS/4KSV4KWN4KSk4KS/IOCkueCli+CkpOClgCDgpLngpYgiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJhdXRvX2NhcCIgbXNnaWQ9IjE3MTk3NDY2NzQ4NTQ2MjgyNTIiPiLgpLjgpY3igI3gpLXgpKQ6IOCkheCkleCljeCkt+CksCDgpKzgpKHgpLzgpYcg4KSV4KSw4KSo4KS+Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYXV0b19jYXBfc3VtbWFyeSIgbXNnaWQ9Ijc5MzQ0NTI3NjEwMjI5NDY4NzQiPiLgpKrgpY3gpLDgpKTgpY3gpK/gpYfgpJUg4KS14KS+4KSV4KWN4KSvIOCkleClhyDgpKrgpLngpLLgpYcg4KS24KSs4KWN4KSmIOCkleCliyDgpKzgpKHgpLzgpL4g4KSy4KS/4KSW4KWH4KSCIjwvc3RyaW5nPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGVkaXRfcGVyc29uYWxfZGljdGlvbmFyeSAoMzk5NjkxMDAzODk1Mjk0MDQyMCkgLS0+CisgICAgPHNraXAgLz4KICAgICA8c3RyaW5nIG5hbWU9ImNvbmZpZ3VyZV9kaWN0aW9uYXJpZXNfdGl0bGUiIG1zZ2lkPSI0MjM4NjUyMzM4NTU2OTAyMDQ5Ij4i4KSP4KShLeCkkeCkqCDgpKHgpL/gpJXgpY3gpLbgpKjgpLDgpYAiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJtYWluX2RpY3Rpb25hcnkiIG1zZ2lkPSI0Nzk4NzYzNzgxODE4MzYxMTY4Ij4i4KSu4KWB4KSW4KWN4oCN4KSvIOCkoeCkv+CkleCljeKAjeCktuCkqOCksOClgCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InByZWZzX3Nob3dfc3VnZ2VzdGlvbnMiIG1zZ2lkPSI4MDI2Nzk5NjYzNDQ1NTMxNjM3Ij4i4KS44KWB4KSn4KS+4KSwIOCkuOClgeCkneCkvuCktSDgpKbgpL/gpJbgpL7gpI/gpIIiPC9zdHJpbmc+CkBAIC0xNzEsOCArMTczLDI3IEBACiAgICAgPHN0cmluZyBuYW1lPSJyZWFkX2V4dGVybmFsX2RpY3Rpb25hcnlfY29uZmlybV9pbnN0YWxsX21lc3NhZ2UiIG1zZ2lkPSI2ODk4NjEwMTYzNzY4OTgwODcwIj4iPHhsaWZmOmcgaWQ9IkxPQ0FMRV9OQU1FIj4lczwveGxpZmY6Zz4g4KSV4KWHIOCksuCkv+CkjyDgpLXgpL7gpLjgpY3gpKTgpLUg4KSu4KWH4KSCIOCkr+CkuSDgpKvgpLzgpL7gpIfgpLIg4KSH4KSC4KS44KWN4KSf4KWJ4KSyIOCkleCksOClh+Ckgj8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJlcnJvciIgbXNnaWQ9Ijg5NDA3NjM2MjQ2Njg1MTM2NDgiPiLgpJXgpYvgpIgg4KSk4KWN4KSw4KWB4KSf4KS/IOCkueClgeCkiCDgpKXgpYAiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJidXR0b25fZGVmYXVsdCIgbXNnaWQ9IjM5ODgwMTc4NDA0MzE4ODE0OTEiPiLgpKHgpL/gpKvgpLzgpYngpLLgpY3gpJ8iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJsYW5ndWFnZV9zZXR0aW5ncyIgbXNnaWQ9IjE2NzExNTMwNTMyMDE4MDkwMzEiPiLgpK3gpL7gpLfgpL4g4KSU4KSwIOCkh+CkqOCkquClgeCknyI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InNlbGVjdF9pbnB1dF9tZXRob2QiIG1zZ2lkPSI0MzAxNjAyMzc0NjA5Mjc1MDAzIj4i4KSH4KSo4KSq4KWB4KSfIOCkquCkpuCljeCkp+CkpOCkvyDgpJrgpYHgpKjgpYfgpIIiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF93ZWxjb21lX3RpdGxlIiBtc2dpZD0iNjExMjgyMTcwOTgzMjAzMTcxNSI+Ijx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz4g4KSu4KWH4KSCIOCkhuCkquCkleCkviDgpLjgpY3gpLXgpL7gpJfgpKQg4KS54KWIIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfd2VsY29tZV9hZGRpdGlvbmFsX2Rlc2NyaXB0aW9uIiBtc2dpZD0iODE1MDI1MjAwODU0NTc2ODk1MyI+IuCkueCkvuCkteCkreCkvuCktSDgpLLgpYfgpJbgpKgg4KSV4KWHIOCkuOCkvuCkpSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0YXJ0X2FjdGlvbiIgbXNnaWQ9Ijg5MzYwMzY0NjA4OTczNDc3MDgiPiLgpIbgpLDgpILgpK0g4KSV4KSw4KWH4KSCIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfbmV4dF9hY3Rpb24iIG1zZ2lkPSIzNzE4MjE0Mzc5MTUxNDQ2MDMiPiLgpIXgpJfgpLLgpL4g4KSa4KSw4KSjIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcHNfdGl0bGUiIG1zZ2lkPSI2NDAwMzczMDM0ODcxODE2MTgyIj4iPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPiDgpLjgpYfgpJ8g4KSV4KSw4KSo4KS+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDFfdGl0bGUiIG1zZ2lkPSIzMTQ3OTY3NjMwMjUzNDYyMzE1Ij4iPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPiDgpJXgpYsg4KS44KSV4KWN4KS34KSuIOCkleCksOClh+CkgiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAxX2luc3RydWN0aW9uIiBtc2dpZD0iMjU3ODYzMTkzNjYyNDYzNzI0MSI+IuCkleClg+CkquCkr+CkviDgpIXgpKrgpKjgpYAg4KSt4KS+4KS34KS+IOCklOCksCDgpIfgpKjgpKrgpYHgpJ8g4KS44KWH4KSf4KS/4KSC4KSXIOCkruClh+CkgiBcIjx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz5cIiDgpJXgpYsg4KSa4KWH4KSVIOCkleCksOClh+Ckgi4g4KSH4KS44KS44KWHIOCkteCkuSDgpIbgpKrgpJXgpYcg4KSJ4KSq4KSV4KSw4KSjIOCkquCksCDgpJrgpLLgpKjgpYcg4KSV4KWHIOCksuCkv+CkjyDgpIXgpKfgpL/gpJXgpYPgpKQg4KS54KWLIOCknOCkvuCkj+Ckl+Ckvi4iPC9zdHJpbmc+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc2V0dXBfc3RlcDFfZmluaXNoZWRfaW5zdHJ1Y3Rpb24gKDEwNzYxNDgyMDA0OTU3OTk0KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDFfYWN0aW9uIiBtc2dpZD0iNDM2NjUxMzUzNDk5OTkwMTcyOCI+IuCkuOClh+Ckn+Ckv+CkguCklyDgpK7gpYfgpIIg4KS44KSV4KWN4KS34KSuIOCkleCksOClh+CkgiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAyX3RpdGxlIiBtc2dpZD0iNjg2MDcyNTQ0NzkwNjY5MDU5NCI+Ijx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz4g4KSq4KSwIOCkuOCljeCkteCkv+CkmiDgpJXgpLDgpYfgpIIiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMl9pbnN0cnVjdGlvbiIgbXNnaWQ9IjkxNDE0ODE5NjQ4NzAwMjMzMzYiPiLgpIfgpLjgpJXgpYcg4KSs4KS+4KSmLCBcIjx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz5cIiDgpJXgpYsg4KSF4KSq4KSo4KWAIOCkuOCkleCljeCksOCkv+CkryDgpKrgpL7gpKAt4KSH4KSo4KSq4KWB4KSfIOCkquCkpuCljeCkp+CkpOCkvyDgpJXgpYcg4KSw4KWC4KSqIOCkruClh+CkgiDgpJrgpYHgpKjgpYfgpIIuIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDJfYWN0aW9uIiBtc2dpZD0iMTY2MDMzMDMwNzE1OTgyNDMzNyI+IuCkh+CkqOCkquClgeCknyDgpKrgpKbgpY3gpKfgpKTgpL/gpK/gpL7gpIIg4KS44KWN4KS14KS/4KSaIOCkleCksOClh+CkgiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAzX3RpdGxlIiBtc2dpZD0iMzE1NDc1NzE4MzYzMTQ5MDI4MSI+IuCkrOCkp+CkvuCkiCDgpLngpYssIOCkhuCkqiDgpKzgpL/gpLLgpY3gpJXgpYHgpLIg4KSk4KWI4KSv4KS+4KSwIOCkueCliOCkgiEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwM19pbnN0cnVjdGlvbiIgbXNnaWQ9IjgwMjU5ODE4Mjk2MDU0MjYwMDAiPiLgpIXgpKwg4KSG4KSqIDx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz4g4KSV4KWHIOCkuOCkvuCkpSDgpIXgpKrgpKjgpYcg4KS44KSt4KWAIOCkquCkuOCkguCkpuClgOCkpuCkviDgpI/gpKrgpY3gpLLgpL/gpJXgpYfgpLbgpKgg4KSu4KWH4KSCIOCksuCkv+CkliDgpLjgpJXgpKTgpYcg4KS54KWI4KSCLiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAzX2FjdGlvbiIgbXNnaWQ9IjYwMDg3OTc5NzI1Njk0MjI1OSI+IuCkheCkpOCkv+CksOCkv+CkleCljeCkpCDgpK3gpL7gpLfgpL7gpI/gpIIg4KSV4KWJ4KSo4KWN4KSr4KS84KS/4KSX4KSwIOCkleCksOCkqOCkviI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX2ZpbmlzaF9hY3Rpb24iIG1zZ2lkPSIyNzY1NTkyNDM0MDk0NjUzODkiPiLgpLjgpK7gpL7gpKrgpY3gpKQiPC9zdHJpbmc+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc2hvd19zZXR1cF93aXphcmRfaWNvbiAoNTAwODAyODU5MDU5MzcxMDgzMCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzaG93X3NldHVwX3dpemFyZF9pY29uX3N1bW1hcnkgKDQxMTk5OTgzMjI1MzY4ODAyMTMpIC0tPgorICAgIDxza2lwIC8+CiAgICAgPHN0cmluZyBuYW1lPSJhcHBfbmFtZSIgbXNnaWQ9IjYzMjAxMDI2Mzc0OTEyMzQ3OTIiPiLgpKHgpL/gpJXgpY3igI3gpLbgpKjgpLDgpYAg4KSq4KWN4KSw4KSm4KS+4KSk4KS+Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGljdGlvbmFyeV9wcm92aWRlcl9uYW1lIiBtc2dpZD0iMzAyNzMxNTA0NTM5NzM2MzA3OSI+IuCkoeCkv+CkleCljeKAjeCktuCkqOCksOClgCDgpKrgpY3gpLDgpKbgpL7gpKTgpL4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkaWN0aW9uYXJ5X3NlcnZpY2VfbmFtZSIgbXNnaWQ9IjYyMzc0NzIzNTA2OTM1MTE0NDgiPiLgpKHgpL/gpJXgpY3igI3gpLbgpKjgpLDgpYAg4KS44KWH4KS14KS+Ijwvc3RyaW5nPgpAQCAtMjAzLDQgKzIyNCw2IEBACiAgICAgPHN0cmluZyBuYW1lPSJkaWN0X2F2YWlsYWJsZV9ub3RpZmljYXRpb25fdGl0bGUiIG1zZ2lkPSI2NTE0Mjg4NTkxOTU5MTE3Mjg4Ij4iPHhsaWZmOmcgaWQ9IkxBTkdVQUdFIj4lMSRzPC94bGlmZjpnPiDgpJXgpYcg4KSy4KS/4KSPIOCkoeCkv+CkleCljeKAjeCktuCkqOCksOClgCDgpIngpKrgpLLgpKzgpY3igI3gpKcg4KS54KWIIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGljdF9hdmFpbGFibGVfbm90aWZpY2F0aW9uX2Rlc2NyaXB0aW9uIiBtc2dpZD0iMTA3NTE5NDE2OTQ0MzE2MzQ4NyI+IuCkuOCkruClgOCkleCljeCkt+CkviDgpJXgpLDgpKjgpYcg4KSU4KSwIOCkoeCkvuCkieCkqOCksuCli+CkoSDgpJXgpLDgpKjgpYcg4KSV4KWHIOCksuCkv+CkjyDgpKbgpKzgpL7gpI/gpIIiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ0b2FzdF9kb3dubG9hZGluZ19zdWdnZXN0aW9ucyIgbXNnaWQ9IjEzMTMwMjczNTM1ODg1NjY2NjAiPiLgpKHgpL7gpIngpKjgpLLgpYvgpKEg4KS54KWLIOCksOCkueCkviDgpLngpYg6IDx4bGlmZjpnIGlkPSJMQU5HVUFHRSI+JTEkczwveGxpZmY6Zz4g4KSV4KWHIOCksuCkv+CkjyDgpLjgpYHgpJ3gpL7gpLUg4KSc4KSy4KWN4KSm4KWAIOCkueClgCDgpKTgpYjgpK/gpL7gpLAg4KS54KWLIOCknOCkvuCkj+CkguCkl+Clhy4iPC9zdHJpbmc+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgdmVyc2lvbl90ZXh0ICgyNzE1MzU0MjE1NTY4NDY5Mzg1KSAtLT4KKyAgICA8c2tpcCAvPgogPC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9qYXZhL3Jlcy92YWx1ZXMtaHIvc3RyaW5ncy54bWwgYi9qYXZhL3Jlcy92YWx1ZXMtaHIvc3RyaW5ncy54bWwKaW5kZXggNmI0MThhMS4uODhlMGQwZCAxMDA2NDQKLS0tIGEvamF2YS9yZXMvdmFsdWVzLWhyL3N0cmluZ3MueG1sCisrKyBiL2phdmEvcmVzL3ZhbHVlcy1oci9zdHJpbmdzLnhtbApAQCAtNTMsNiArNTMsOCBAQAogICAgIDxzdHJpbmcgbmFtZT0idXNlX2RvdWJsZV9zcGFjZV9wZXJpb2Rfc3VtbWFyeSIgbXNnaWQ9IjY1MzI4OTIxODcyNDc5NTI3OTkiPiJEdm9zdHJ1a2ltIGRvZGlyaXZhbmplbSByYXptYWtuaWNlIHVtZcSHdSBzZSB0b8SNa2EgaSByYXptYWsiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJhdXRvX2NhcCIgbXNnaWQ9IjE3MTk3NDY2NzQ4NTQ2MjgyNTIiPiJBdXRvbWF0c2tvIHBpc2FuamUgdmVsaWtpaCBzbG92YSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImF1dG9fY2FwX3N1bW1hcnkiIG1zZ2lkPSI3OTM0NDUyNzYxMDIyOTQ2ODc0Ij4iTmFwacWhaSB2ZWxpa2ltIHNsb3ZvbSBwcnZ1IHJpamXEjSBzdmFrZSByZcSNZW5pY2UiPC9zdHJpbmc+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgZWRpdF9wZXJzb25hbF9kaWN0aW9uYXJ5ICgzOTk2OTEwMDM4OTUyOTQwNDIwKSAtLT4KKyAgICA8c2tpcCAvPgogICAgIDxzdHJpbmcgbmFtZT0iY29uZmlndXJlX2RpY3Rpb25hcmllc190aXRsZSIgbXNnaWQ9IjQyMzg2NTIzMzg1NTY5MDIwNDkiPiJSamXEjW5pY2ktZG9kYWNpIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ibWFpbl9kaWN0aW9uYXJ5IiBtc2dpZD0iNDc5ODc2Mzc4MTgxODM2MTE2OCI+IkdsYXZuaSByamXEjW5payI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InByZWZzX3Nob3dfc3VnZ2VzdGlvbnMiIG1zZ2lkPSI4MDI2Nzk5NjYzNDQ1NTMxNjM3Ij4iUG9rYcW+aSBwcmlqZWRsb2dlIGlzcHJhdmthIjwvc3RyaW5nPgpAQCAtMTcxLDggKzE3MywyNyBAQAogICAgIDxzdHJpbmcgbmFtZT0icmVhZF9leHRlcm5hbF9kaWN0aW9uYXJ5X2NvbmZpcm1faW5zdGFsbF9tZXNzYWdlIiBtc2dpZD0iNjg5ODYxMDE2Mzc2ODk4MDg3MCI+IsW9ZWxpdGUgbGkgZG9pc3RhIGluc3RhbGlyYXRpIG92dSBkYXRvdGVrdSB6YSA8eGxpZmY6ZyBpZD0iTE9DQUxFX05BTUUiPiVzPC94bGlmZjpnPj8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJlcnJvciIgbXNnaWQ9Ijg5NDA3NjM2MjQ2Njg1MTM2NDgiPiJEb8WhbG8gamUgZG8gcG9ncmXFoWtlIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYnV0dG9uX2RlZmF1bHQiIG1zZ2lkPSIzOTg4MDE3ODQwNDMxODgxNDkxIj4iWmFkYW5vIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibGFuZ3VhZ2Vfc2V0dGluZ3MiIG1zZ2lkPSIxNjcxMTUzMDUzMjAxODA5MDMxIj4iSmV6aWsgaSB1bm9zIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ic2VsZWN0X2lucHV0X21ldGhvZCIgbXNnaWQ9IjQzMDE2MDIzNzQ2MDkyNzUwMDMiPiJPZGFiaXIgbmHEjWluYSB1bm9zYSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3dlbGNvbWVfdGl0bGUiIG1zZ2lkPSI2MTEyODIxNzA5ODMyMDMxNzE1Ij4iRG9icm8gZG/FoWxpIHUgYXBsaWthY2lqdSA8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfd2VsY29tZV9hZGRpdGlvbmFsX2Rlc2NyaXB0aW9uIiBtc2dpZD0iODE1MDI1MjAwODU0NTc2ODk1MyI+InMgUGlzYW5qZW0ga3JldG5qYW1hIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RhcnRfYWN0aW9uIiBtc2dpZD0iODkzNjAzNjQ2MDg5NzM0NzcwOCI+IlBvxI1uaXRlIHMgcmFkb20iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9uZXh0X2FjdGlvbiIgbXNnaWQ9IjM3MTgyMTQzNzkxNTE0NDYwMyI+IlNsamVkZcSHaSBrb3JhayI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXBzX3RpdGxlIiBtc2dpZD0iNjQwMDM3MzAzNDg3MTgxNjE4MiI+IlBvc3RhdmxqYW5qZSBhcGxpa2FjaWplIDx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMV90aXRsZSIgbXNnaWQ9IjMxNDc5Njc2MzAyNTM0NjIzMTUiPiJPbW9ndcSHaXRlIGFwbGlrYWNpanUgPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAxX2luc3RydWN0aW9uIiBtc2dpZD0iMjU3ODYzMTkzNjYyNDYzNzI0MSI+IlBvdHZyZGl0ZSBhcGxpa2FjaWp1IFwiPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPlwiIHUgcG9zdGF2a2FtYSBKZXppayBpIHVub3MgaSBvdmxhc3RpdGUgamUgemEgcG9rcmV0YW5qZS4iPC9zdHJpbmc+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc2V0dXBfc3RlcDFfZmluaXNoZWRfaW5zdHJ1Y3Rpb24gKDEwNzYxNDgyMDA0OTU3OTk0KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDFfYWN0aW9uIiBtc2dpZD0iNDM2NjUxMzUzNDk5OTkwMTcyOCI+Ik9tb2d1xIdpIHUgcG9zdGF2a2FtYSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAyX3RpdGxlIiBtc2dpZD0iNjg2MDcyNTQ0NzkwNjY5MDU5NCI+IlByaWplxJFpdGUgbmEgYXBsaWthY2lqdSA8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDJfaW5zdHJ1Y3Rpb24iIG1zZ2lkPSI5MTQxNDgxOTY0ODcwMDIzMzM2Ij4iWmF0aW0gb2RhYmVyaXRlIGFwbGlrYWNpanUgXCI8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+XCIga2FvIGFrdGl2YW4gbmHEjWluIHVub3NhIHRla3N0YS4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMl9hY3Rpb24iIG1zZ2lkPSIxNjYwMzMwMzA3MTU5ODI0MzM3Ij4iUHJlYmFjaSBuYSBkcnVnaSBuYcSNaW4gdW5vc2EiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwM190aXRsZSIgbXNnaWQ9IjMxNTQ3NTcxODM2MzE0OTAyODEiPiJJenZyc25vLCBzcHJlbW5pIHN0ZSEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwM19pbnN0cnVjdGlvbiIgbXNnaWQ9IjgwMjU5ODE4Mjk2MDU0MjYwMDAiPiJTYWRhIG1vxb5ldGUgcGlzYXRpIHUgc3ZpbSBzdm9qaW0gb21pbGplbmltIGFwbGlrYWNpamFtYSBwb21vxId1IGFwbGlrYWNpamUgPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPi4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwM19hY3Rpb24iIG1zZ2lkPSI2MDA4Nzk3OTcyNTY5NDIyNTkiPiJLb25maWd1cmlyYWogZG9kYXRuZSBqZXppa2UiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9maW5pc2hfYWN0aW9uIiBtc2dpZD0iMjc2NTU5MjQzNDA5NDY1Mzg5Ij4iWmF2csWhZW5vIjwvc3RyaW5nPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNob3dfc2V0dXBfd2l6YXJkX2ljb24gKDUwMDgwMjg1OTA1OTM3MTA4MzApIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc2hvd19zZXR1cF93aXphcmRfaWNvbl9zdW1tYXJ5ICg0MTE5OTk4MzIyNTM2ODgwMjEzKSAtLT4KKyAgICA8c2tpcCAvPgogICAgIDxzdHJpbmcgbmFtZT0iYXBwX25hbWUiIG1zZ2lkPSI2MzIwMTAyNjM3NDkxMjM0NzkyIj4iRGF2YXRlbGogcmplxI1uaWthIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGljdGlvbmFyeV9wcm92aWRlcl9uYW1lIiBtc2dpZD0iMzAyNzMxNTA0NTM5NzM2MzA3OSI+IkRhdmF0ZWxqIHJqZcSNbmlrYSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRpY3Rpb25hcnlfc2VydmljZV9uYW1lIiBtc2dpZD0iNjIzNzQ3MjM1MDY5MzUxMTQ0OCI+IlVzbHVnYSByamXEjW5pa2EiPC9zdHJpbmc+CkBAIC0yMDMsNCArMjI0LDYgQEAKICAgICA8c3RyaW5nIG5hbWU9ImRpY3RfYXZhaWxhYmxlX25vdGlmaWNhdGlvbl90aXRsZSIgbXNnaWQ9IjY1MTQyODg1OTE5NTkxMTcyODgiPiJEb3N0dXBhbiBqZSByamXEjW5payB6YSA8eGxpZmY6ZyBpZD0iTEFOR1VBR0UiPiUxJHM8L3hsaWZmOmc+IGplemlrIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGljdF9hdmFpbGFibGVfbm90aWZpY2F0aW9uX2Rlc2NyaXB0aW9uIiBtc2dpZD0iMTA3NTE5NDE2OTQ0MzE2MzQ4NyI+IlByaXRpc25pdGUgemEgcHJlZ2xlZCBpIHByZXV6aW1hbmplIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idG9hc3RfZG93bmxvYWRpbmdfc3VnZ2VzdGlvbnMiIG1zZ2lkPSIxMzEzMDI3MzUzNTg4NTY2NjYwIj4iUHJldXppbWFuamU6IHByaWplZGxvemkgemEgPHhsaWZmOmcgaWQ9IkxBTkdVQUdFIj4lMSRzPC94bGlmZjpnPiBiaXQgxIdlIHNwcmVtbmkgdXNrb3JvLiI8L3N0cmluZz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciB2ZXJzaW9uX3RleHQgKDI3MTUzNTQyMTU1Njg0NjkzODUpIC0tPgorICAgIDxza2lwIC8+CiA8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL2phdmEvcmVzL3ZhbHVlcy1odS9zdHJpbmdzLnhtbCBiL2phdmEvcmVzL3ZhbHVlcy1odS9zdHJpbmdzLnhtbAppbmRleCBlMWU2ZGM3Li5iOGI5MmQ0IDEwMDY0NAotLS0gYS9qYXZhL3Jlcy92YWx1ZXMtaHUvc3RyaW5ncy54bWwKKysrIGIvamF2YS9yZXMvdmFsdWVzLWh1L3N0cmluZ3MueG1sCkBAIC01Myw2ICs1Myw4IEBACiAgICAgPHN0cmluZyBuYW1lPSJ1c2VfZG91YmxlX3NwYWNlX3BlcmlvZF9zdW1tYXJ5IiBtc2dpZD0iNjUzMjg5MjE4NzI0Nzk1Mjc5OSI+IkEgc3rDs2vDtnoga8OpdHN6ZXJpIG1lZ8OpcmludMOpc2UgYmVzesO6ciBlZ3kgcG9udG90LCBtYWpkIGVneSBzesOza8O2enQiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJhdXRvX2NhcCIgbXNnaWQ9IjE3MTk3NDY2NzQ4NTQ2MjgyNTIiPiJBdXRvbWF0aWt1c2FuIG5hZ3kga2V6ZMWRYmV0xbEiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJhdXRvX2NhcF9zdW1tYXJ5IiBtc2dpZD0iNzkzNDQ1Mjc2MTAyMjk0Njg3NCI+Ik1pbmRlbiBtb25kYXQgZWxzxZEgc3phdmEgbmFneWJldMWxdmVsIjwvc3RyaW5nPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGVkaXRfcGVyc29uYWxfZGljdGlvbmFyeSAoMzk5NjkxMDAzODk1Mjk0MDQyMCkgLS0+CisgICAgPHNraXAgLz4KICAgICA8c3RyaW5nIG5hbWU9ImNvbmZpZ3VyZV9kaWN0aW9uYXJpZXNfdGl0bGUiIG1zZ2lkPSI0MjM4NjUyMzM4NTU2OTAyMDQ5Ij4iQsWRdsOtdG3DqW55ZWs6IHN6w7N0w6FyYWsiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJtYWluX2RpY3Rpb25hcnkiIG1zZ2lkPSI0Nzk4NzYzNzgxODE4MzYxMTY4Ij4iRsWRIHN6w7N0w6FyIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icHJlZnNfc2hvd19zdWdnZXN0aW9ucyIgbXNnaWQ9IjgwMjY3OTk2NjM0NDU1MzE2MzciPiJKYXbDrXTDoXNpIGFqw6FubMOhc29rIG1lZ2plbGVuw610w6lzZSI8L3N0cmluZz4KQEAgLTE3MSw4ICsxNzMsMjcgQEAKICAgICA8c3RyaW5nIG5hbWU9InJlYWRfZXh0ZXJuYWxfZGljdGlvbmFyeV9jb25maXJtX2luc3RhbGxfbWVzc2FnZSIgbXNnaWQ9IjY4OTg2MTAxNjM3Njg5ODA4NzAiPiJWYWzDs2JhbiB0ZWxlcMOtdGkgZXp0IGEgZsOhamx0IDx4bGlmZjpnIGlkPSJMT0NBTEVfTkFNRSI+JXM8L3hsaWZmOmc+IG55ZWx2aGV6PyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImVycm9yIiBtc2dpZD0iODk0MDc2MzYyNDY2ODUxMzY0OCI+IkhpYmEgdMO2cnTDqW50LiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJ1dHRvbl9kZWZhdWx0IiBtc2dpZD0iMzk4ODAxNzg0MDQzMTg4MTQ5MSI+IkFsYXDDqXJ0ZWxtZXpldHQiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJsYW5ndWFnZV9zZXR0aW5ncyIgbXNnaWQ9IjE2NzExNTMwNTMyMDE4MDkwMzEiPiJOeWVsdiDDqXMgYmV2aXRlbCI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InNlbGVjdF9pbnB1dF9tZXRob2QiIG1zZ2lkPSI0MzAxNjAyMzc0NjA5Mjc1MDAzIj4iQmV2aXRlbGkgbcOzZCBraXbDoWxhc3p0w6FzYSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3dlbGNvbWVfdGl0bGUiIG1zZ2lkPSI2MTEyODIxNzA5ODMyMDMxNzE1Ij4iw5xkdsO2emxpIGEoeikgPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPiEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF93ZWxjb21lX2FkZGl0aW9uYWxfZGVzY3JpcHRpb24iIG1zZ2lkPSI4MTUwMjUyMDA4NTQ1NzY4OTUzIj4ia8Opem1vemR1bGF0b2trYWwgdMO2cnTDqW7FkSBiZXZpdGVsbGVsIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RhcnRfYWN0aW9uIiBtc2dpZD0iODkzNjAzNjQ2MDg5NzM0NzcwOCI+IkVsc8WRIGzDqXDDqXNlayI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX25leHRfYWN0aW9uIiBtc2dpZD0iMzcxODIxNDM3OTE1MTQ0NjAzIj4iS8O2dmV0a2V6xZEgbMOpcMOpcyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXBzX3RpdGxlIiBtc2dpZD0iNjQwMDM3MzAzNDg3MTgxNjE4MiI+IkEoeikgPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPiBiZcOhbGzDrXTDoXNhIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDFfdGl0bGUiIG1zZ2lkPSIzMTQ3OTY3NjMwMjUzNDYyMzE1Ij4iQSh6KSA8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+IGVuZ2Vkw6lseWV6w6lzZSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAxX2luc3RydWN0aW9uIiBtc2dpZD0iMjU3ODYzMTkzNjYyNDYzNzI0MSI+IkplbMO2bGplIGJlIGEoeikg4oCePHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPuKAnSBhbGthbG1hesOhc3QgYSDigJ5OeWVsdiDDqXMgYmV2aXRlbOKAnSBhbGF0dCBhIGZ1dHRhdMOhcyDDqXJkZWvDqWJlbi4iPC9zdHJpbmc+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc2V0dXBfc3RlcDFfZmluaXNoZWRfaW5zdHJ1Y3Rpb24gKDEwNzYxNDgyMDA0OTU3OTk0KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDFfYWN0aW9uIiBtc2dpZD0iNDM2NjUxMzUzNDk5OTkwMTcyOCI+IkVuZ2Vkw6lseWV6w6lzIGEgQmXDoWxsw610w6Fzb2sga8O2esO2dHQiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMl90aXRsZSIgbXNnaWQ9IjY4NjA3MjU0NDc5MDY2OTA1OTQiPiJWw6FsdMOhcyBhKHopIDx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz4gYWxrYWxtYXrDoXNyYSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAyX2luc3RydWN0aW9uIiBtc2dpZD0iOTE0MTQ4MTk2NDg3MDAyMzMzNiI+IkV6dXTDoW4gdsOhbGFzc3phIGEoeikg4oCePHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPuKAnSAgYWxrYWxtYXrDoXN0IGFrdMOtdiBzesO2dmVnYmV2aXRlbGkgbcOzZHN6ZXJrw6ludC4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMl9hY3Rpb24iIG1zZ2lkPSIxNjYwMzMwMzA3MTU5ODI0MzM3Ij4iVsOhbHTDoXMgYSBiZXZpdGVsaSBtw7Nkb2sga8O2esO2dHQiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwM190aXRsZSIgbXNnaWQ9IjMxNTQ3NTcxODM2MzE0OTAyODEiPiJHcmF0dWzDoWx1bmssIG3DoXJpcyBlbGvDqXN6w7xsdCEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwM19pbnN0cnVjdGlvbiIgbXNnaWQ9IjgwMjU5ODE4Mjk2MDU0MjYwMDAiPiJJbW3DoXIgbWluZGVuIGtlZHZlbmMgYWxrYWxtYXrDoXPDoWJhbiBnw6lwZWxoZXQgYSh6KSA8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+IHNlZ8OtdHPDqWfDqXZlbC4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwM19hY3Rpb24iIG1zZ2lkPSI2MDA4Nzk3OTcyNTY5NDIyNTkiPiLDgWxsw610c29uIGJlIHRvdsOhYmJpIG55ZWx2ZWtldCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX2ZpbmlzaF9hY3Rpb24iIG1zZ2lkPSIyNzY1NTkyNDM0MDk0NjUzODkiPiJCZWZlamV6xZFkw7Z0dCI8L3N0cmluZz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzaG93X3NldHVwX3dpemFyZF9pY29uICg1MDA4MDI4NTkwNTkzNzEwODMwKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNob3dfc2V0dXBfd2l6YXJkX2ljb25fc3VtbWFyeSAoNDExOTk5ODMyMjUzNjg4MDIxMykgLS0+CisgICAgPHNraXAgLz4KICAgICA8c3RyaW5nIG5hbWU9ImFwcF9uYW1lIiBtc2dpZD0iNjMyMDEwMjYzNzQ5MTIzNDc5MiI+IlN6w7N0w6Fyc3pvbGfDoWx0YXTDsyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRpY3Rpb25hcnlfcHJvdmlkZXJfbmFtZSIgbXNnaWQ9IjMwMjczMTUwNDUzOTczNjMwNzkiPiJTesOzdMOhcnN6b2xnw6FsdGF0w7MiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkaWN0aW9uYXJ5X3NlcnZpY2VfbmFtZSIgbXNnaWQ9IjYyMzc0NzIzNTA2OTM1MTE0NDgiPiJTesOzdMOhcnN6b2xnw6FsdGF0w6FzIjwvc3RyaW5nPgpAQCAtMjAzLDQgKzIyNCw2IEBACiAgICAgPHN0cmluZyBuYW1lPSJkaWN0X2F2YWlsYWJsZV9ub3RpZmljYXRpb25fdGl0bGUiIG1zZ2lkPSI2NTE0Mjg4NTkxOTU5MTE3Mjg4Ij4iPHhsaWZmOmcgaWQ9IkxBTkdVQUdFIj4lMSRzPC94bGlmZjpnPiBueWVsdmhleiB2YW4gcmVuZGVsa2V6w6lzcmUgw6FsbMOzIHN6w7N0w6FyIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGljdF9hdmFpbGFibGVfbm90aWZpY2F0aW9uX2Rlc2NyaXB0aW9uIiBtc2dpZD0iMTA3NTE5NDE2OTQ0MzE2MzQ4NyI+Ik55b21qYSBtZWcgYXogw6F0dGVraW50w6lzaGV6IMOpcyBsZXTDtmx0w6lzaGV6Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idG9hc3RfZG93bmxvYWRpbmdfc3VnZ2VzdGlvbnMiIG1zZ2lkPSIxMzEzMDI3MzUzNTg4NTY2NjYwIj4iTGV0w7ZsdMOpczogYSh6KSA8eGxpZmY6ZyBpZD0iTEFOR1VBR0UiPiUxJHM8L3hsaWZmOmc+IG55ZWx2dmVsIGthcGNzb2xhdG9zIGphdmFzbGF0b2sgaGFtYXJvc2FuIGVsw6lyaGV0xZFrIGxlc3puZWsuIjwvc3RyaW5nPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHZlcnNpb25fdGV4dCAoMjcxNTM1NDIxNTU2ODQ2OTM4NSkgLS0+CisgICAgPHNraXAgLz4KIDwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvamF2YS9yZXMvdmFsdWVzLWluL3N0cmluZ3MueG1sIGIvamF2YS9yZXMvdmFsdWVzLWluL3N0cmluZ3MueG1sCmluZGV4IDUwNzJiOWEuLjFhNjY2NDQgMTAwNjQ0Ci0tLSBhL2phdmEvcmVzL3ZhbHVlcy1pbi9zdHJpbmdzLnhtbAorKysgYi9qYXZhL3Jlcy92YWx1ZXMtaW4vc3RyaW5ncy54bWwKQEAgLTUzLDYgKzUzLDggQEAKICAgICA8c3RyaW5nIG5hbWU9InVzZV9kb3VibGVfc3BhY2VfcGVyaW9kX3N1bW1hcnkiIG1zZ2lkPSI2NTMyODkyMTg3MjQ3OTUyNzk5Ij4iTWVuZ2V0dWsgdG9tYm9sIHNwYXNpIGR1YSBrYWxpIGFrYW4gbWVtYXN1a2thbiB0aXRpayBkaWlrdXRpIHNhdHUgc3Bhc2kiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJhdXRvX2NhcCIgbXNnaWQ9IjE3MTk3NDY2NzQ4NTQ2MjgyNTIiPiJLYXBpdGFsaXNhc2kgb3RvbWF0aXMiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJhdXRvX2NhcF9zdW1tYXJ5IiBtc2dpZD0iNzkzNDQ1Mjc2MTAyMjk0Njg3NCI+IkthcGl0YWxpc2FzaSBrYXRhIHBlcnRhbWEgZGkgc2V0aWFwIGthbGltYXQiPC9zdHJpbmc+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgZWRpdF9wZXJzb25hbF9kaWN0aW9uYXJ5ICgzOTk2OTEwMDM4OTUyOTQwNDIwKSAtLT4KKyAgICA8c2tpcCAvPgogICAgIDxzdHJpbmcgbmFtZT0iY29uZmlndXJlX2RpY3Rpb25hcmllc190aXRsZSIgbXNnaWQ9IjQyMzg2NTIzMzg1NTY5MDIwNDkiPiJLYW11cyBwZW5nYXlhIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ibWFpbl9kaWN0aW9uYXJ5IiBtc2dpZD0iNDc5ODc2Mzc4MTgxODM2MTE2OCI+IkthbXVzIHV0YW1hIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icHJlZnNfc2hvd19zdWdnZXN0aW9ucyIgbXNnaWQ9IjgwMjY3OTk2NjM0NDU1MzE2MzciPiJUYW1waWxrYW4gc2FyYW4ga29yZWtzaSI8L3N0cmluZz4KQEAgLTE3MSw4ICsxNzMsMjcgQEAKICAgICA8c3RyaW5nIG5hbWU9InJlYWRfZXh0ZXJuYWxfZGljdGlvbmFyeV9jb25maXJtX2luc3RhbGxfbWVzc2FnZSIgbXNnaWQ9IjY4OTg2MTAxNjM3Njg5ODA4NzAiPiJZYWtpbiBpbmdpbiBtZW1hc2FuZyBmaWxlIGluaSB1bnR1ayA8eGxpZmY6ZyBpZD0iTE9DQUxFX05BTUUiPiVzPC94bGlmZjpnPj8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJlcnJvciIgbXNnaWQ9Ijg5NDA3NjM2MjQ2Njg1MTM2NDgiPiJUZXJqYWRpIGtlc2FsYWhhbiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJ1dHRvbl9kZWZhdWx0IiBtc2dpZD0iMzk4ODAxNzg0MDQzMTg4MTQ5MSI+IkRlZmF1bHQiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJsYW5ndWFnZV9zZXR0aW5ncyIgbXNnaWQ9IjE2NzExNTMwNTMyMDE4MDkwMzEiPiJCYWhhc2EgJmFtcDsgbWFzdWthbiI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InNlbGVjdF9pbnB1dF9tZXRob2QiIG1zZ2lkPSI0MzAxNjAyMzc0NjA5Mjc1MDAzIj4iUGlsaWggbWV0b2RlIG1hc3VrYW4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF93ZWxjb21lX3RpdGxlIiBtc2dpZD0iNjExMjgyMTcwOTgzMjAzMTcxNSI+IlNlbGFtYXQgZGF0YW5nIGRpIDx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF93ZWxjb21lX2FkZGl0aW9uYWxfZGVzY3JpcHRpb24iIG1zZ2lkPSI4MTUwMjUyMDA4NTQ1NzY4OTUzIj4iZGVuZ2FuIEtldGlrYW4gSXN5YXJhdCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0YXJ0X2FjdGlvbiIgbXNnaWQ9Ijg5MzYwMzY0NjA4OTczNDc3MDgiPiJNZW11bGFpIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfbmV4dF9hY3Rpb24iIG1zZ2lkPSIzNzE4MjE0Mzc5MTUxNDQ2MDMiPiJMYW5na2FoIGJlcmlrdXRueWEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwc190aXRsZSIgbXNnaWQ9IjY0MDAzNzMwMzQ4NzE4MTYxODIiPiJNZW55aWFwa2FuIDx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMV90aXRsZSIgbXNnaWQ9IjMxNDc5Njc2MzAyNTM0NjIzMTUiPiJBa3RpZmthbiA8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDFfaW5zdHJ1Y3Rpb24iIG1zZ2lkPSIyNTc4NjMxOTM2NjI0NjM3MjQxIj4iQ2VudGFuZyBcIjx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz5cIiBkaSBzZXRlbGFuIEJhaGFzYSAmYW1wOyBtYXN1a2FuIEFuZGEuIFRpbmRha2FuIGluaSBha2FuIG1lbmdpemlua2FubnlhIGJlcmphbGFuIGRpIHBlcmFuZ2thdCBBbmRhLiI8L3N0cmluZz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzZXR1cF9zdGVwMV9maW5pc2hlZF9pbnN0cnVjdGlvbiAoMTA3NjE0ODIwMDQ5NTc5OTQpIC0tPgorICAgIDxza2lwIC8+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMV9hY3Rpb24iIG1zZ2lkPSI0MzY2NTEzNTM0OTk5OTAxNzI4Ij4iQWt0aWZrYW4gZGFsYW0gU2V0ZWxhbiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAyX3RpdGxlIiBtc2dpZD0iNjg2MDcyNTQ0NzkwNjY5MDU5NCI+IkJlcmFsaWgga2UgPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAyX2luc3RydWN0aW9uIiBtc2dpZD0iOTE0MTQ4MTk2NDg3MDAyMzMzNiI+IkxhbHUsIHBpbGloIFwiPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPlwiIHNlYmFnYWkgbWV0b2RlIG1hc3VrYW4gdGVrcyBha3RpZiBBbmRhLiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAyX2FjdGlvbiIgbXNnaWQ9IjE2NjAzMzAzMDcxNTk4MjQzMzciPiJBbGloa2FuIG1ldG9kZSBtYXN1a2FuIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDNfdGl0bGUiIG1zZ2lkPSIzMTU0NzU3MTgzNjMxNDkwMjgxIj4iU2VsYW1hdCwgQW5kYSBzdWRhaCBzaWFwISI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAzX2luc3RydWN0aW9uIiBtc2dpZD0iODAyNTk4MTgyOTYwNTQyNjAwMCI+IlNla2FyYW5nIEFuZGEgZGFwYXQgbWVuZ2V0aWsgZGkgc2VtdWEgYXBsaWthc2kgZmF2b3JpdCBBbmRhIGRlbmdhbiA8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+LiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAzX2FjdGlvbiIgbXNnaWQ9IjYwMDg3OTc5NzI1Njk0MjI1OSI+IktvbmZpZ3VyYXNpa2FuIGJhaGFzYSB0YW1iYWhhbiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX2ZpbmlzaF9hY3Rpb24iIG1zZ2lkPSIyNzY1NTkyNDM0MDk0NjUzODkiPiJTZWxlc2FpIjwvc3RyaW5nPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNob3dfc2V0dXBfd2l6YXJkX2ljb24gKDUwMDgwMjg1OTA1OTM3MTA4MzApIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc2hvd19zZXR1cF93aXphcmRfaWNvbl9zdW1tYXJ5ICg0MTE5OTk4MzIyNTM2ODgwMjEzKSAtLT4KKyAgICA8c2tpcCAvPgogICAgIDxzdHJpbmcgbmFtZT0iYXBwX25hbWUiIG1zZ2lkPSI2MzIwMTAyNjM3NDkxMjM0NzkyIj4iUGVueWVkaWEgS2FtdXMiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkaWN0aW9uYXJ5X3Byb3ZpZGVyX25hbWUiIG1zZ2lkPSIzMDI3MzE1MDQ1Mzk3MzYzMDc5Ij4iUGVueWVkaWEgS2FtdXMiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkaWN0aW9uYXJ5X3NlcnZpY2VfbmFtZSIgbXNnaWQ9IjYyMzc0NzIzNTA2OTM1MTE0NDgiPiJMYXlhbmFuIEthbXVzIjwvc3RyaW5nPgpAQCAtMjAzLDQgKzIyNCw2IEBACiAgICAgPHN0cmluZyBuYW1lPSJkaWN0X2F2YWlsYWJsZV9ub3RpZmljYXRpb25fdGl0bGUiIG1zZ2lkPSI2NTE0Mjg4NTkxOTU5MTE3Mjg4Ij4iS2FtdXMgdGVyc2VkaWEgdW50dWsgYmFoYXNhIDx4bGlmZjpnIGlkPSJMQU5HVUFHRSI+JTEkczwveGxpZmY6Zz4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkaWN0X2F2YWlsYWJsZV9ub3RpZmljYXRpb25fZGVzY3JpcHRpb24iIG1zZ2lkPSIxMDc1MTk0MTY5NDQzMTYzNDg3Ij4iVGVrYW4gdW50dWsgbWVuaW5qYXUgZGFuIG1lbmd1bmR1aCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InRvYXN0X2Rvd25sb2FkaW5nX3N1Z2dlc3Rpb25zIiBtc2dpZD0iMTMxMzAyNzM1MzU4ODU2NjY2MCI+Ik1lbmd1bmR1aDogc2FyYW4gdW50dWsgYmFoYXNhIDx4bGlmZjpnIGlkPSJMQU5HVUFHRSI+JTEkczwveGxpZmY6Zz4gYWthbiBzZWdlcmEgdGVyc2VkaWEuIjwvc3RyaW5nPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHZlcnNpb25fdGV4dCAoMjcxNTM1NDIxNTU2ODQ2OTM4NSkgLS0+CisgICAgPHNraXAgLz4KIDwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvamF2YS9yZXMvdmFsdWVzLWlzL3N0cmluZ3MueG1sIGIvamF2YS9yZXMvdmFsdWVzLWlzL3N0cmluZ3MueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhhNGI5ZTEKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL3Jlcy92YWx1ZXMtaXMvc3RyaW5ncy54bWwKQEAgLTAsMCArMSw0MjAgQEAKKzw/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+CisgICAgPHNraXAgLz4KKyAgICA8c3RyaW5nIG5hbWU9ImxhYmVsX2dvX2tleSIgbXNnaWQ9IjE2MzUxNDgwODIxMzcyMTkxNDgiPiLDgWZyYW0iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJsYWJlbF9uZXh0X2tleSIgbXNnaWQ9IjM2Mjk3Mjg0NDUyNTY3MjU2OCI+Ik7DpnN0YSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImxhYmVsX3ByZXZpb3VzX2tleSIgbXNnaWQ9IjEyMTE4NjgxMTgwNzEzODY3ODciPiJGeXJyYSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImxhYmVsX2RvbmVfa2V5IiBtc2dpZD0iMjQ0MTU3ODc0ODc3MjUyOTI4OCI+Ikxva2nDsCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImxhYmVsX3NlbmRfa2V5IiBtc2dpZD0iMjgxNTA1NjUzNDQzMzcxNzQ0NCI+IlNlbmRhIjwvc3RyaW5nPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGxhYmVsX3BhdXNlX2tleSAoMTgxMDk4MzA4NDI4MDM1MzQwKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGxhYmVsX3dhaXRfa2V5ICg2NDAyMTUyNjAwODc4MDkzMTM0KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNwb2tlbl91c2VfaGVhZHBob25lcyAoODk2OTYxNzgxMjg3MjgzNDkzKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNwb2tlbl9jdXJyZW50X3RleHRfaXMgKDI0ODU3MjMwMTEyNzI1ODM4NDUpIC0tPgorICAgIDxza2lwIC8+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+Cis8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL2phdmEvcmVzL3ZhbHVlcy1pdC9zdHJpbmdzLnhtbCBiL2phdmEvcmVzL3ZhbHVlcy1pdC9zdHJpbmdzLnhtbAppbmRleCBjNjQ1NDNhLi4zODNkMWFiIDEwMDY0NAotLS0gYS9qYXZhL3Jlcy92YWx1ZXMtaXQvc3RyaW5ncy54bWwKKysrIGIvamF2YS9yZXMvdmFsdWVzLWl0L3N0cmluZ3MueG1sCkBAIC01Myw2ICs1Myw3IEBACiAgICAgPHN0cmluZyBuYW1lPSJ1c2VfZG91YmxlX3NwYWNlX3BlcmlvZF9zdW1tYXJ5IiBtc2dpZD0iNjUzMjg5MjE4NzI0Nzk1Mjc5OSI+IlRvY2NhIGR1ZSB2b2x0ZSBiYXJyYSBzcGF6aWF0ci4gcGVyIGluc2VyaXJlIHB1bnRvIHNlZ3VpdG8gZGEgc3BhemlvIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYXV0b19jYXAiIG1zZ2lkPSIxNzE5NzQ2Njc0ODU0NjI4MjUyIj4iTWFpdXNjb2xlIGF1dG9tYXRpY2hlIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYXV0b19jYXBfc3VtbWFyeSIgbXNnaWQ9Ijc5MzQ0NTI3NjEwMjI5NDY4NzQiPiJJbml6aWFsZSBtYWl1c2NvbGEgcGVyIGxhIHByaW1hIHBhcm9sYSBkaSBvZ25pIGZyYXNlIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iZWRpdF9wZXJzb25hbF9kaWN0aW9uYXJ5IiBtc2dpZD0iMzk5NjkxMDAzODk1Mjk0MDQyMCI+IkRpemlvbmFyaW8gcGVyc29uYWxlIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY29uZmlndXJlX2RpY3Rpb25hcmllc190aXRsZSIgbXNnaWQ9IjQyMzg2NTIzMzg1NTY5MDIwNDkiPiJEaXppb25hcmkgYWdnaXVudGl2aSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im1haW5fZGljdGlvbmFyeSIgbXNnaWQ9IjQ3OTg3NjM3ODE4MTgzNjExNjgiPiJEaXppb25hcmlvIHByaW5jaXBhbGUiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwcmVmc19zaG93X3N1Z2dlc3Rpb25zIiBtc2dpZD0iODAyNjc5OTY2MzQ0NTUzMTYzNyI+Ik1vc3RyYSBzdWdnZXJpbWVudGkgY29ycmV6aW9uaSI8L3N0cmluZz4KQEAgLTE3MSw4ICsxNzIsMjUgQEAKICAgICA8c3RyaW5nIG5hbWU9InJlYWRfZXh0ZXJuYWxfZGljdGlvbmFyeV9jb25maXJtX2luc3RhbGxfbWVzc2FnZSIgbXNnaWQ9IjY4OTg2MTAxNjM3Njg5ODA4NzAiPiJJbnN0YWxsYXJlIHF1ZXN0byBmaWxlIHBlciA8eGxpZmY6ZyBpZD0iTE9DQUxFX05BTUUiPiVzPC94bGlmZjpnPj8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJlcnJvciIgbXNnaWQ9Ijg5NDA3NjM2MjQ2Njg1MTM2NDgiPiJTaSDDqCB2ZXJpZmljYXRvIHVuIGVycm9yZSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJ1dHRvbl9kZWZhdWx0IiBtc2dpZD0iMzk4ODAxNzg0MDQzMTg4MTQ5MSI+IlByZWRlZmluaXRvIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibGFuZ3VhZ2Vfc2V0dGluZ3MiIG1zZ2lkPSIxNjcxMTUzMDUzMjAxODA5MDMxIj4iTGluZ3VhIGUgaW5wdXQiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJzZWxlY3RfaW5wdXRfbWV0aG9kIiBtc2dpZD0iNDMwMTYwMjM3NDYwOTI3NTAwMyI+IlNjZWdsaSBpbCBtZXRvZG8gZGkgaW1taXNzaW9uZSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3dlbGNvbWVfdGl0bGUiIG1zZ2lkPSI2MTEyODIxNzA5ODMyMDMxNzE1Ij4iQmVudmVudXRvIGluIDx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF93ZWxjb21lX2FkZGl0aW9uYWxfZGVzY3JpcHRpb24iIG1zZ2lkPSI4MTUwMjUyMDA4NTQ1NzY4OTUzIj4iY29uIGxhIERpZ2l0YXppb25lIGdlc3R1YWxlIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RhcnRfYWN0aW9uIiBtc2dpZD0iODkzNjAzNjQ2MDg5NzM0NzcwOCI+IkluaXppYSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX25leHRfYWN0aW9uIiBtc2dpZD0iMzcxODIxNDM3OTE1MTQ0NjAzIj4iUGFzc2FnZ2lvIHN1Y2Nlc3Npdm8iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwc190aXRsZSIgbXNnaWQ9IjY0MDAzNzMwMzQ4NzE4MTYxODIiPiJDb25maWd1cmF6aW9uZSBkaSA8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDFfdGl0bGUiIG1zZ2lkPSIzMTQ3OTY3NjMwMjUzNDYyMzE1Ij4iQWJpbGl0YSA8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDFfaW5zdHJ1Y3Rpb24iIG1zZ2lkPSIyNTc4NjMxOTM2NjI0NjM3MjQxIj4iU2VsZXppb25hIFwiPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPlwiIG5lbGxlIGltcG9zdGF6aW9uaSBMaW5ndWEgZSBpbW1pc3Npb25lIHBlciBhdXRvcml6emFybmUgbFwnZXNlY3V6aW9uZSBzdWwgZGlzcG9zaXRpdm8uIjwvc3RyaW5nPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNldHVwX3N0ZXAxX2ZpbmlzaGVkX2luc3RydWN0aW9uICgxMDc2MTQ4MjAwNDk1Nzk5NCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAxX2FjdGlvbiIgbXNnaWQ9IjQzNjY1MTM1MzQ5OTk5MDE3MjgiPiJBYmlsaXRhIG5lbGxlIGltcG9zdGF6aW9uaSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAyX3RpdGxlIiBtc2dpZD0iNjg2MDcyNTQ0NzkwNjY5MDU5NCI+IlBhc3NhIGEgPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAyX2luc3RydWN0aW9uIiBtc2dpZD0iOTE0MTQ4MTk2NDg3MDAyMzMzNiI+IlF1aW5kaSBzZWxlemlvbmEgXCI8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+XCIgY29tZSBtZXRvZG8gZGkgaW1taXNzaW9uZSB0ZXN0byBhdHRpdm8uIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDJfYWN0aW9uIiBtc2dpZD0iMTY2MDMzMDMwNzE1OTgyNDMzNyI+IkNhbWJpYSBtZXRvZG8gZGkgaW1taXNzaW9uZSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAzX3RpdGxlIiBtc2dpZD0iMzE1NDc1NzE4MzYzMTQ5MDI4MSI+IkdyYXppZSwgYWRlc3NvIHNlaSBwcm9udG8hIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDNfaW5zdHJ1Y3Rpb24iIG1zZ2lkPSI4MDI1OTgxODI5NjA1NDI2MDAwIj4iT3JhIHB1b2kgZGlnaXRhcmUgaW4gdHV0dGUgbGUgdHVlIGFwcCBwcmVmZXJpdGUgY29uIDx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz4uIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDNfYWN0aW9uIiBtc2dpZD0iNjAwODc5Nzk3MjU2OTQyMjU5Ij4iQ29uZmlndXJhIGFsdHJlIGxpbmd1ZSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX2ZpbmlzaF9hY3Rpb24iIG1zZ2lkPSIyNzY1NTkyNDM0MDk0NjUzODkiPiJUZXJtaW5hdG8iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzaG93X3NldHVwX3dpemFyZF9pY29uIiBtc2dpZD0iNTAwODAyODU5MDU5MzcxMDgzMCI+Ik1vc3RyYSBpY29uYSBhcHAiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzaG93X3NldHVwX3dpemFyZF9pY29uX3N1bW1hcnkiIG1zZ2lkPSI0MTE5OTk4MzIyNTM2ODgwMjEzIj4iTW9zdHJhIGxcJ2ljb25hIGRlbGxcJ2FwcCBpbiBBdnZpbyBhcHBsaWNhemlvbmkiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJhcHBfbmFtZSIgbXNnaWQ9IjYzMjAxMDI2Mzc0OTEyMzQ3OTIiPiJEaWN0aW9uYXJ5IFByb3ZpZGVyIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGljdGlvbmFyeV9wcm92aWRlcl9uYW1lIiBtc2dpZD0iMzAyNzMxNTA0NTM5NzM2MzA3OSI+IkRpY3Rpb25hcnkgUHJvdmlkZXIiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkaWN0aW9uYXJ5X3NlcnZpY2VfbmFtZSIgbXNnaWQ9IjYyMzc0NzIzNTA2OTM1MTE0NDgiPiJTZXJ2aXppbyBkaXppb25hcmlvIjwvc3RyaW5nPgpAQCAtMjAzLDQgKzIyMSw2IEBACiAgICAgPHN0cmluZyBuYW1lPSJkaWN0X2F2YWlsYWJsZV9ub3RpZmljYXRpb25fdGl0bGUiIG1zZ2lkPSI2NTE0Mjg4NTkxOTU5MTE3Mjg4Ij4iw4ggZGlzcG9uaWJpbGUgdW4gZGl6aW9uYXJpbyBwZXIgPHhsaWZmOmcgaWQ9IkxBTkdVQUdFIj4lMSRzPC94bGlmZjpnPiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRpY3RfYXZhaWxhYmxlX25vdGlmaWNhdGlvbl9kZXNjcmlwdGlvbiIgbXNnaWQ9IjEwNzUxOTQxNjk0NDMxNjM0ODciPiJQcmVtaSBwZXIgZXNhbWluYXJlIGUgc2NhcmljYXJlIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idG9hc3RfZG93bmxvYWRpbmdfc3VnZ2VzdGlvbnMiIG1zZ2lkPSIxMzEzMDI3MzUzNTg4NTY2NjYwIj4iRG93bmxvYWQ6IGkgc3VnZ2VyaW1lbnRpIHBlciA8eGxpZmY6ZyBpZD0iTEFOR1VBR0UiPiUxJHM8L3hsaWZmOmc+IHNhcmFubm8gcHJvbnRpIGEgYnJldmUuIjwvc3RyaW5nPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHZlcnNpb25fdGV4dCAoMjcxNTM1NDIxNTU2ODQ2OTM4NSkgLS0+CisgICAgPHNraXAgLz4KIDwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvamF2YS9yZXMvdmFsdWVzLWl3L3N0cmluZ3MueG1sIGIvamF2YS9yZXMvdmFsdWVzLWl3L3N0cmluZ3MueG1sCmluZGV4IGQ0NzZjMzIuLjNlZjg2YzcgMTAwNjQ0Ci0tLSBhL2phdmEvcmVzL3ZhbHVlcy1pdy9zdHJpbmdzLnhtbAorKysgYi9qYXZhL3Jlcy92YWx1ZXMtaXcvc3RyaW5ncy54bWwKQEAgLTUzLDYgKzUzLDcgQEAKICAgICA8c3RyaW5nIG5hbWU9InVzZV9kb3VibGVfc3BhY2VfcGVyaW9kX3N1bW1hcnkiIG1zZ2lkPSI2NTMyODkyMTg3MjQ3OTUyNzk5Ij4i15TXp9ep15Qg16TXotee15nXmdedINei15wg157Xp9epINeU16jXldeV15cg157XlteZ16DXlCDXoNen15XXk9eUINeV15DXl9eo15nXlCDXqNeV15XXlyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImF1dG9fY2FwIiBtc2dpZD0iMTcxOTc0NjY3NDg1NDYyODI1MiI+IteU16TXmdeb16og15DXldeq15nXldeqINec16jXmdep15nXldeqINeR15DXldek158g15DXldeY15XXnteY15kiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJhdXRvX2NhcF9zdW1tYXJ5IiBtc2dpZD0iNzkzNDQ1Mjc2MTAyMjk0Njg3NCI+IteU16nXqtee16kg15HXkNeV16og15LXk9eV15zXlCDXkdee15nXnNeUINeU16jXkNep15XXoNeUINep15wg15vXnCDXntep16TXmCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImVkaXRfcGVyc29uYWxfZGljdGlvbmFyeSIgbXNnaWQ9IjM5OTY5MTAwMzg5NTI5NDA0MjAiPiLXnteZ15zXldefINeQ15nXqdeZIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iY29uZmlndXJlX2RpY3Rpb25hcmllc190aXRsZSIgbXNnaWQ9IjQyMzg2NTIzMzg1NTY5MDIwNDkiPiLXlNeV16HXpNeqINee15nXnNeV16DXmdedIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ibWFpbl9kaWN0aW9uYXJ5IiBtc2dpZD0iNDc5ODc2Mzc4MTgxODM2MTE2OCI+Itee15nXnNeV158g16jXkNep15kiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwcmVmc19zaG93X3N1Z2dlc3Rpb25zIiBtc2dpZD0iODAyNjc5OTY2MzQ0NTUzMTYzNyI+IteU16bXkiDXlNem16LXldeqINec16rXmden15XXoNeZ150iPC9zdHJpbmc+CkBAIC0xNzEsOCArMTcyLDI1IEBACiAgICAgPHN0cmluZyBuYW1lPSJyZWFkX2V4dGVybmFsX2RpY3Rpb25hcnlfY29uZmlybV9pbnN0YWxsX21lc3NhZ2UiIG1zZ2lkPSI2ODk4NjEwMTYzNzY4OTgwODcwIj4i15TXkNedINeR15DXnteqINec15TXqten15nXnyDXkNeqINeU16fXldeR16Ug15TXlteUINei15HXldeoIDx4bGlmZjpnIGlkPSJMT0NBTEVfTkFNRSI+JXM8L3hsaWZmOmc+PyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImVycm9yIiBtc2dpZD0iODk0MDc2MzYyNDY2ODUxMzY0OCI+IteQ15nXqNei15Qg16nXkteZ15DXlCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJ1dHRvbl9kZWZhdWx0IiBtc2dpZD0iMzk4ODAxNzg0MDQzMTg4MTQ5MSI+IteR16jXmdeo16og157Xl9eT15wiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJsYW5ndWFnZV9zZXR0aW5ncyIgbXNnaWQ9IjE2NzExNTMwNTMyMDE4MDkwMzEiPiLXqdek15Qg15XXp9ec15giPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJzZWxlY3RfaW5wdXRfbWV0aG9kIiBtc2dpZD0iNDMwMTYwMjM3NDYwOTI3NTAwMyI+IteR15fXmdeo16og16nXmdeY16og16fXnNeYIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfd2VsY29tZV90aXRsZSIgbXNnaWQ9IjYxMTI4MjE3MDk4MzIwMzE3MTUiPiLXkdeo15XXmiDXlNeR15Ag15DXnCA8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfd2VsY29tZV9hZGRpdGlvbmFsX2Rlc2NyaXB0aW9uIiBtc2dpZD0iODE1MDI1MjAwODU0NTc2ODk1MyI+Itei150g15TXp9ec15PXqiDXlNeX15zXp9eUIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RhcnRfYWN0aW9uIiBtc2dpZD0iODkzNjAzNjQ2MDg5NzM0NzcwOCI+IteU16rXl9ecIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfbmV4dF9hY3Rpb24iIG1zZ2lkPSIzNzE4MjE0Mzc5MTUxNDQ2MDMiPiLXlNep15zXkSDXlNeR15AiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwc190aXRsZSIgbXNnaWQ9IjY0MDAzNzMwMzQ4NzE4MTYxODIiPiLXlNeS15PXqNeqIDx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMV90aXRsZSIgbXNnaWQ9IjMxNDc5Njc2MzAyNTM0NjIzMTUiPiLXlNek16LXnCDXkNeqIDx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMV9pbnN0cnVjdGlvbiIgbXNnaWQ9IjI1Nzg2MzE5MzY2MjQ2MzcyNDEiPiLXodee158g15DXqiBcIjx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz5cIiDXkdeU15LXk9eo15XXqiDXlNep16TXlCDXldeU16fXnNeYINep15zXmi4g16TXoteV15zXlCDXlteVINeq15DXpNep16gg15zXlSDXnNek16LXldecINeR157Xm9ep15nXqCDXqdec15ouIjwvc3RyaW5nPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNldHVwX3N0ZXAxX2ZpbmlzaGVkX2luc3RydWN0aW9uICgxMDc2MTQ4MjAwNDk1Nzk5NCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAxX2FjdGlvbiIgbXNnaWQ9IjQzNjY1MTM1MzQ5OTk5MDE3MjgiPiLXlNek16LXnCDXkdeU15LXk9eo15XXqiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAyX3RpdGxlIiBtc2dpZD0iNjg2MDcyNTQ0NzkwNjY5MDU5NCI+Itei15HXldeoINeQ15wgPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAyX2luc3RydWN0aW9uIiBtc2dpZD0iOTE0MTQ4MTk2NDg3MDAyMzMzNiI+IteR16nXnNeRINeU15HXkCwg15HXl9eoINeRLVwnPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPlwnINeb15DXntem16LXmSDXlNen15zXmCDXlNek16LXmdecINec15TXlteg16og15jXp9eh15guIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDJfYWN0aW9uIiBtc2dpZD0iMTY2MDMzMDMwNzE1OTgyNDMzNyI+IteU15fXnNejINep15nXmNeV16og16fXnNeYIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDNfdGl0bGUiIG1zZ2lkPSIzMTU0NzU3MTgzNjMxNDkwMjgxIj4i15HXqNeb15XXqteZ16DXlSwg15TXm9ecINee15XXm9efISI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAzX2luc3RydWN0aW9uIiBtc2dpZD0iODAyNTk4MTgyOTYwNTQyNjAwMCI+Iteb16LXqiDXqteV15vXnCDXnNeU16fXnNeZ15Mg15HXm9ecINeU15nXmdep15XXnteZ150g15TXnteV16LXk9ek15nXnSDXotec15nXmiDXkdeQ157Xptei15XXqiA8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+LiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAzX2FjdGlvbiIgbXNnaWQ9IjYwMDg3OTc5NzI1Njk0MjI1OSI+IteU15LXk9eoINep16TXldeqINeg15XXodek15XXqiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX2ZpbmlzaF9hY3Rpb24iIG1zZ2lkPSIyNzY1NTkyNDM0MDk0NjUzODkiPiLXodeZ15XXnSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNob3dfc2V0dXBfd2l6YXJkX2ljb24iIG1zZ2lkPSI1MDA4MDI4NTkwNTkzNzEwODMwIj4i15TXpteSINeQ16og16HXntecINeU15nXmdep15XXnSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNob3dfc2V0dXBfd2l6YXJkX2ljb25fc3VtbWFyeSIgbXNnaWQ9IjQxMTk5OTgzMjI1MzY4ODAyMTMiPiLXlNem15Ig15DXqiDXodee15wg15TXmdeZ16nXldedINeR157XpNei15nXnCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImFwcF9uYW1lIiBtc2dpZD0iNjMyMDEwMjYzNzQ5MTIzNDc5MiI+Iteh16TXpyDXlNee15nXnNeV158iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkaWN0aW9uYXJ5X3Byb3ZpZGVyX25hbWUiIG1zZ2lkPSIzMDI3MzE1MDQ1Mzk3MzYzMDc5Ij4i16HXpNenINeU157Xmdec15XXnyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRpY3Rpb25hcnlfc2VydmljZV9uYW1lIiBtc2dpZD0iNjIzNzQ3MjM1MDY5MzUxMTQ0OCI+Itep15nXqNeV16og157Xmdec15XXnyI8L3N0cmluZz4KQEAgLTIwMyw0ICsyMjEsNiBAQAogICAgIDxzdHJpbmcgbmFtZT0iZGljdF9hdmFpbGFibGVfbm90aWZpY2F0aW9uX3RpdGxlIiBtc2dpZD0iNjUxNDI4ODU5MTk1OTExNzI4OCI+IteZ16kg157Xmdec15XXnyDXltee15nXnyDXoteR15XXqCA8eGxpZmY6ZyBpZD0iTEFOR1VBR0UiPiUxJHM8L3hsaWZmOmc+Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGljdF9hdmFpbGFibGVfbm90aWZpY2F0aW9uX2Rlc2NyaXB0aW9uIiBtc2dpZD0iMTA3NTE5NDE2OTQ0MzE2MzQ4NyI+Itec15fXpSDXm9eT15kg15zXoteZ15nXnyDXldec15TXldeo15nXkyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InRvYXN0X2Rvd25sb2FkaW5nX3N1Z2dlc3Rpb25zIiBtc2dpZD0iMTMxMzAyNzM1MzU4ODU2NjY2MCI+Itee15XXqNeZ15M6INeU16bXoteV16og15E8eGxpZmY6ZyBpZD0iTEFOR1VBR0UiPiUxJHM8L3hsaWZmOmc+INeZ15TXmdeVINee15XXm9eg15XXqiDXkden16jXldeRLiI8L3N0cmluZz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciB2ZXJzaW9uX3RleHQgKDI3MTUzNTQyMTU1Njg0NjkzODUpIC0tPgorICAgIDxza2lwIC8+CiA8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL2phdmEvcmVzL3ZhbHVlcy1qYS9zdHJpbmdzLnhtbCBiL2phdmEvcmVzL3ZhbHVlcy1qYS9zdHJpbmdzLnhtbAppbmRleCAyNjcxNDhjLi4wMjQ3ZTZiIDEwMDY0NAotLS0gYS9qYXZhL3Jlcy92YWx1ZXMtamEvc3RyaW5ncy54bWwKKysrIGIvamF2YS9yZXMvdmFsdWVzLWphL3N0cmluZ3MueG1sCkBAIC01Myw2ICs1Myw4IEBACiAgICAgPHN0cmluZyBuYW1lPSJ1c2VfZG91YmxlX3NwYWNlX3BlcmlvZF9zdW1tYXJ5IiBtc2dpZD0iNjUzMjg5MjE4NzI0Nzk1Mjc5OSI+IuOCueODmuODvOOCueODkOODvOOCkuODgOODluODq+OCv+ODg+ODl+OBmeOCi+OBqOODlOODquOCquODieOBqOOCueODmuODvOOCueOCkuaMv+WFpeOBp+OBjeOBvuOBmSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImF1dG9fY2FwIiBtc2dpZD0iMTcxOTc0NjY3NDg1NDYyODI1MiI+IuiHquWLleWkp+aWh+Wtl+WkieaPmyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImF1dG9fY2FwX3N1bW1hcnkiIG1zZ2lkPSI3OTM0NDUyNzYxMDIyOTQ2ODc0Ij4i6Iux5a2X5YWl5Yqb44Gn5ZCE5paH44Gu5pyA5Yid44Gu5Y2Y6Kqe44KS5aSn5paH5a2X44Gr44GX44G+44GZIjwvc3RyaW5nPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGVkaXRfcGVyc29uYWxfZGljdGlvbmFyeSAoMzk5NjkxMDAzODk1Mjk0MDQyMCkgLS0+CisgICAgPHNraXAgLz4KICAgICA8c3RyaW5nIG5hbWU9ImNvbmZpZ3VyZV9kaWN0aW9uYXJpZXNfdGl0bGUiIG1zZ2lkPSI0MjM4NjUyMzM4NTU2OTAyMDQ5Ij4i44Ki44OJ44Kq44Oz6L6e5pu4Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ibWFpbl9kaWN0aW9uYXJ5IiBtc2dpZD0iNDc5ODc2Mzc4MTgxODM2MTE2OCI+IuODoeOCpOODs+i+nuabuCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InByZWZzX3Nob3dfc3VnZ2VzdGlvbnMiIG1zZ2lkPSI4MDI2Nzk5NjYzNDQ1NTMxNjM3Ij4i5L+u5q2j5YCZ6KOc44KS6KGo56S644GZ44KLIjwvc3RyaW5nPgpAQCAtMTcxLDggKzE3MywyNyBAQAogICAgIDxzdHJpbmcgbmFtZT0icmVhZF9leHRlcm5hbF9kaWN0aW9uYXJ5X2NvbmZpcm1faW5zdGFsbF9tZXNzYWdlIiBtc2dpZD0iNjg5ODYxMDE2Mzc2ODk4MDg3MCI+IuOBk+OBrjx4bGlmZjpnIGlkPSJMT0NBTEVfTkFNRSI+JXM8L3hsaWZmOmc+44Gu44OV44Kh44Kk44Or44KS44Kk44Oz44K544OI44O844Or44GX44Gm44KC44KI44KN44GX44GE44Gn44GZ44GL77yfIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZXJyb3IiIG1zZ2lkPSI4OTQwNzYzNjI0NjY4NTEzNjQ4Ij4i44Ko44Op44O844GM55m655Sf44GX44G+44GX44GfIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYnV0dG9uX2RlZmF1bHQiIG1zZ2lkPSIzOTg4MDE3ODQwNDMxODgxNDkxIj4i44OH44OV44Kp44Or44OIIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibGFuZ3VhZ2Vfc2V0dGluZ3MiIG1zZ2lkPSIxNjcxMTUzMDUzMjAxODA5MDMxIj4i6KiA6Kqe44Go5YWl5YqbIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ic2VsZWN0X2lucHV0X21ldGhvZCIgbXNnaWQ9IjQzMDE2MDIzNzQ2MDkyNzUwMDMiPiLlhaXlipvmlrnms5Xjga7pgbjmip4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF93ZWxjb21lX3RpdGxlIiBtc2dpZD0iNjExMjgyMTcwOTgzMjAzMTcxNSI+Ijx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz7jgbjjgojjgYbjgZPjgZ0iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF93ZWxjb21lX2FkZGl0aW9uYWxfZGVzY3JpcHRpb24iIG1zZ2lkPSI4MTUwMjUyMDA4NTQ1NzY4OTUzIj4i44K444Kn44K544OB44Oj44O85YWl5Yqb44Gu5L2/55SoIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RhcnRfYWN0aW9uIiBtc2dpZD0iODkzNjAzNjQ2MDg5NzM0NzcwOCI+IumWi+WniyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX25leHRfYWN0aW9uIiBtc2dpZD0iMzcxODIxNDM3OTE1MTQ0NjAzIj4i5qyh44Gu44K544OG44OD44OXIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcHNfdGl0bGUiIG1zZ2lkPSI2NDAwMzczMDM0ODcxODE2MTgyIj4iPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPuOBruioreWumiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAxX3RpdGxlIiBtc2dpZD0iMzE0Nzk2NzYzMDI1MzQ2MjMxNSI+Ijx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz7jga7mnInlirnljJYiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMV9pbnN0cnVjdGlvbiIgbXNnaWQ9IjI1Nzg2MzE5MzY2MjQ2MzcyNDEiPiJb6KiA6Kqe44Go5YWl5YqbXeOBp1s8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+XeOBruODgeOCp+ODg+OCr+ODnOODg+OCr+OCueOCkuOCquODs+OBq+OBl+OBpuOBj+OBoOOBleOBhOOAguOBk+OCjOOBp+OAgeerr+acq+OBp+OCouODl+ODquOCkuWun+ihjOOBp+OBjeOCi+OCiOOBhuOBq+OBquOCiuOBvuOBmeOAgiI8L3N0cmluZz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzZXR1cF9zdGVwMV9maW5pc2hlZF9pbnN0cnVjdGlvbiAoMTA3NjE0ODIwMDQ5NTc5OTQpIC0tPgorICAgIDxza2lwIC8+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMV9hY3Rpb24iIG1zZ2lkPSI0MzY2NTEzNTM0OTk5OTAxNzI4Ij4i6Kit5a6a44Gn44Gu5pyJ5Yq55YyWIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDJfdGl0bGUiIG1zZ2lkPSI2ODYwNzI1NDQ3OTA2NjkwNTk0Ij4iPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPuOBuOOBruWIh+OCiuabv+OBiCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAyX2luc3RydWN0aW9uIiBtc2dpZD0iOTE0MTQ4MTk2NDg3MDAyMzMzNiI+IuasoeOBq+OAgeacieWKueOBquODhuOCreOCueODiOWFpeWKm+aWueazleOBqOOBl+OBpuOAjDx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz7jgI3jgpLpgbjmip7jgZfjgb7jgZnjgIIiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMl9hY3Rpb24iIG1zZ2lkPSIxNjYwMzMwMzA3MTU5ODI0MzM3Ij4i5YWl5Yqb5pa55rOV44KS5YiH44KK5pu/44GI44KLIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDNfdGl0bGUiIG1zZ2lkPSIzMTU0NzU3MTgzNjMxNDkwMjgxIj4i6Kit5a6a5a6M5LqGIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDNfaW5zdHJ1Y3Rpb24iIG1zZ2lkPSI4MDI1OTgxODI5NjA1NDI2MDAwIj4i44GT44KM44Gn44CB44GK5rCX44Gr5YWl44KK44Gu44GZ44G544Gm44Gu44Ki44OX44Oq44GnPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPuOCkuS9v+eUqOOBl+OBpuWFpeWKm+OBp+OBjeOBvuOBmeOAgiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAzX2FjdGlvbiIgbXNnaWQ9IjYwMDg3OTc5NzI1Njk0MjI1OSI+IuWIpeOBruiogOiqnuOCkuioreWumuOBmeOCiyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX2ZpbmlzaF9hY3Rpb24iIG1zZ2lkPSIyNzY1NTkyNDM0MDk0NjUzODkiPiLlrozkuoYiPC9zdHJpbmc+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc2hvd19zZXR1cF93aXphcmRfaWNvbiAoNTAwODAyODU5MDU5MzcxMDgzMCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzaG93X3NldHVwX3dpemFyZF9pY29uX3N1bW1hcnkgKDQxMTk5OTgzMjI1MzY4ODAyMTMpIC0tPgorICAgIDxza2lwIC8+CiAgICAgPHN0cmluZyBuYW1lPSJhcHBfbmFtZSIgbXNnaWQ9IjYzMjAxMDI2Mzc0OTEyMzQ3OTIiPiLovp7mm7jmj5DkvpvlhYMiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkaWN0aW9uYXJ5X3Byb3ZpZGVyX25hbWUiIG1zZ2lkPSIzMDI3MzE1MDQ1Mzk3MzYzMDc5Ij4i6L6e5pu45o+Q5L6b5YWDIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGljdGlvbmFyeV9zZXJ2aWNlX25hbWUiIG1zZ2lkPSI2MjM3NDcyMzUwNjkzNTExNDQ4Ij4i6L6e5pu4Ijwvc3RyaW5nPgpAQCAtMjAzLDQgKzIyNCw2IEBACiAgICAgPHN0cmluZyBuYW1lPSJkaWN0X2F2YWlsYWJsZV9ub3RpZmljYXRpb25fdGl0bGUiIG1zZ2lkPSI2NTE0Mjg4NTkxOTU5MTE3Mjg4Ij4iPHhsaWZmOmcgaWQ9IkxBTkdVQUdFIj4lMSRzPC94bGlmZjpnPuOBrui+nuabuOOCkuWIqeeUqOOBp+OBjeOBvuOBmSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRpY3RfYXZhaWxhYmxlX25vdGlmaWNhdGlvbl9kZXNjcmlwdGlvbiIgbXNnaWQ9IjEwNzUxOTQxNjk0NDMxNjM0ODciPiLmirzjgZnjgajnorroqo0v44OA44Km44Oz44Ot44O844OJ44Gn44GN44G+44GZIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idG9hc3RfZG93bmxvYWRpbmdfc3VnZ2VzdGlvbnMiIG1zZ2lkPSIxMzEzMDI3MzUzNTg4NTY2NjYwIj4i44OA44Km44Oz44Ot44O844OJ5LitOiA8eGxpZmY6ZyBpZD0iTEFOR1VBR0UiPiUxJHM8L3hsaWZmOmc+44Gu5YWl5Yqb5YCZ6KOc44KS44G+44KC44Gq44GP5Yip55So44Gn44GN44G+44GZ44CCIjwvc3RyaW5nPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHZlcnNpb25fdGV4dCAoMjcxNTM1NDIxNTU2ODQ2OTM4NSkgLS0+CisgICAgPHNraXAgLz4KIDwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvamF2YS9yZXMvdmFsdWVzLWthL3N0cmluZ3MueG1sIGIvamF2YS9yZXMvdmFsdWVzLWthL3N0cmluZ3MueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE0ZjE1ZWQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL3Jlcy92YWx1ZXMta2Evc3RyaW5ncy54bWwKQEAgLTAsMCArMSw0MjAgQEAKKzw/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+CisgICAgPHNraXAgLz4KKyAgICA8c3RyaW5nIG5hbWU9ImxhYmVsX2dvX2tleSIgbXNnaWQ9IjE2MzUxNDgwODIxMzcyMTkxNDgiPiLhg5Lhg5Dhg5Phg5Dhg6Hhg5Xhg5rhg5AiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJsYWJlbF9uZXh0X2tleSIgbXNnaWQ9IjM2Mjk3Mjg0NDUyNTY3MjU2OCI+IuGDqOGDlOGDm+GDk+GDlOGDkuGDmCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImxhYmVsX3ByZXZpb3VzX2tleSIgbXNnaWQ9IjEyMTE4NjgxMTgwNzEzODY3ODciPiLhg6zhg5jhg5zhg5AiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJsYWJlbF9kb25lX2tleSIgbXNnaWQ9IjI0NDE1Nzg3NDg3NzI1MjkyODgiPiLhg6jhg5Thg6Hhg6Dhg6Phg5rhg5Thg5Hhg6Phg5rhg5jhg5AiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJsYWJlbF9zZW5kX2tleSIgbXNnaWQ9IjI4MTUwNTY1MzQ0MzM3MTc0NDQiPiLhg5Lhg5Dhg5Lhg5bhg5Dhg5Xhg5zhg5AiPC9zdHJpbmc+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+CisgICAgPHNraXAgLz4KKzwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvamF2YS9yZXMvdmFsdWVzLWtvL3N0cmluZ3MueG1sIGIvamF2YS9yZXMvdmFsdWVzLWtvL3N0cmluZ3MueG1sCmluZGV4IDdlYTMxYTMuLjFlYzhiNGQgMTAwNjQ0Ci0tLSBhL2phdmEvcmVzL3ZhbHVlcy1rby9zdHJpbmdzLnhtbAorKysgYi9qYXZhL3Jlcy92YWx1ZXMta28vc3RyaW5ncy54bWwKQEAgLTUzLDYgKzUzLDggQEAKICAgICA8c3RyaW5nIG5hbWU9InVzZV9kb3VibGVfc3BhY2VfcGVyaW9kX3N1bW1hcnkiIG1zZ2lkPSI2NTMyODkyMTg3MjQ3OTUyNzk5Ij4i7Iqk7Y6Y7J207Iqk67CU66W8IOuRkCDrsogg7YOt7ZWY66m0IOuniOy5qO2RnOyZgCDqs7XrsLEg7ZWcIOqwnOqwgCDsgr3snoXrkKnri4jri6QuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYXV0b19jYXAiIG1zZ2lkPSIxNzE5NzQ2Njc0ODU0NjI4MjUyIj4i7J6Q64+ZIOuMgOusuOyekO2ZlCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImF1dG9fY2FwX3N1bW1hcnkiIG1zZ2lkPSI3OTM0NDUyNzYxMDIyOTQ2ODc0Ij4i66y47J6l7J2YIOyyqyDri6jslrTrpbwg64yA66y47J6Q66GcIO2RnOyLnCI8L3N0cmluZz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBlZGl0X3BlcnNvbmFsX2RpY3Rpb25hcnkgKDM5OTY5MTAwMzg5NTI5NDA0MjApIC0tPgorICAgIDxza2lwIC8+CiAgICAgPHN0cmluZyBuYW1lPSJjb25maWd1cmVfZGljdGlvbmFyaWVzX3RpdGxlIiBtc2dpZD0iNDIzODY1MjMzODU1NjkwMjA0OSI+IuyCrOyghCDstpTqsIAiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJtYWluX2RpY3Rpb25hcnkiIG1zZ2lkPSI0Nzk4NzYzNzgxODE4MzYxMTY4Ij4i6riw67O4IOyCrOyghCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InByZWZzX3Nob3dfc3VnZ2VzdGlvbnMiIG1zZ2lkPSI4MDI2Nzk5NjYzNDQ1NTMxNjM3Ij4i7IiY7KCVIOygnOyViCDtkZzsi5wiPC9zdHJpbmc+CkBAIC0xNzEsOCArMTczLDI3IEBACiAgICAgPHN0cmluZyBuYW1lPSJyZWFkX2V4dGVybmFsX2RpY3Rpb25hcnlfY29uZmlybV9pbnN0YWxsX21lc3NhZ2UiIG1zZ2lkPSI2ODk4NjEwMTYzNzY4OTgwODcwIj4i7J20IO2MjOydvOydhCA8eGxpZmY6ZyBpZD0iTE9DQUxFX05BTUUiPiVzPC94bGlmZjpnPijsnLwp66GcIOyEpOy5mO2VmOyLnOqyoOyKteuLiOq5jD8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJlcnJvciIgbXNnaWQ9Ijg5NDA3NjM2MjQ2Njg1MTM2NDgiPiLsmKTrpZgg67Cc7IOdIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYnV0dG9uX2RlZmF1bHQiIG1zZ2lkPSIzOTg4MDE3ODQwNDMxODgxNDkxIj4i6riw67O46rCSIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibGFuZ3VhZ2Vfc2V0dGluZ3MiIG1zZ2lkPSIxNjcxMTUzMDUzMjAxODA5MDMxIj4i7Ja47Ja0IOuwjyDtgqTrs7Trk5wiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJzZWxlY3RfaW5wdXRfbWV0aG9kIiBtc2dpZD0iNDMwMTYwMjM3NDYwOTI3NTAwMyI+IuyeheugpSDrsKnrspUg7ISg7YOdIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfd2VsY29tZV90aXRsZSIgbXNnaWQ9IjYxMTI4MjE3MDk4MzIwMzE3MTUiPiI8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+7JeQIOyYpOyLoCDqsoPsnYQg7ZmY7JiB7ZWp64uI64ukLiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3dlbGNvbWVfYWRkaXRpb25hbF9kZXNjcmlwdGlvbiIgbXNnaWQ9IjgxNTAyNTIwMDg1NDU3Njg5NTMiPiLsoJzsiqTsspgg7YOA7J207ZWRIOyCrOyaqSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0YXJ0X2FjdGlvbiIgbXNnaWQ9Ijg5MzYwMzY0NjA4OTczNDc3MDgiPiLsi5zsnpHtlZjquLAiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9uZXh0X2FjdGlvbiIgbXNnaWQ9IjM3MTgyMTQzNzkxNTE0NDYwMyI+IuuLpOydjCDri6jqs4QiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwc190aXRsZSIgbXNnaWQ9IjY0MDAzNzMwMzQ4NzE4MTYxODIiPiI8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+IOyEpOyglSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAxX3RpdGxlIiBtc2dpZD0iMzE0Nzk2NzYzMDI1MzQ2MjMxNSI+Ijx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz4g7IKs7JqpIOyEpOyglSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAxX2luc3RydWN0aW9uIiBtc2dpZD0iMjU3ODYzMTkzNjYyNDYzNzI0MSI+IuyWuOyWtCDrsI8g7J6F66ClIOyEpOygleyXkOyEnCBcJzx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz5cJ+ydhCjrpbwpIO2ZleyduO2VmOyEuOyalC4g7JWg7ZSM66as7LyA7J207IWY7J2EIOq4sOq4sOyXkOyEnCDsi6TtlontlaAg7IiYIOyeiOuPhOuhnSDsirnsnbjtlanri4jri6QuIjwvc3RyaW5nPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNldHVwX3N0ZXAxX2ZpbmlzaGVkX2luc3RydWN0aW9uICgxMDc2MTQ4MjAwNDk1Nzk5NCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAxX2FjdGlvbiIgbXNnaWQ9IjQzNjY1MTM1MzQ5OTk5MDE3MjgiPiJcJ+yEpOyglVwn7JeQ7IScIOyCrOyaqSDshKTsoJUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMl90aXRsZSIgbXNnaWQ9IjY4NjA3MjU0NDc5MDY2OTA1OTQiPiI8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+KOycvCnroZwg7KCE7ZmYIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDJfaW5zdHJ1Y3Rpb24iIG1zZ2lkPSI5MTQxNDgxOTY0ODcwMDIzMzM2Ij4i6re465+wIOuLpOydjCwg7YWN7Iqk7Yq4IOyeheugpSDrsKnrspXsnLzroZwgXCc8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+XCfsnYQo66W8KSDshKDtg53tlanri4jri6QuIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDJfYWN0aW9uIiBtc2dpZD0iMTY2MDMzMDMwNzE1OTgyNDMzNyI+IuyeheugpSDrsKnrspUg7KCE7ZmYIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDNfdGl0bGUiIG1zZ2lkPSIzMTU0NzU3MTgzNjMxNDkwMjgxIj4i66qo65OgIOyEpOygleydtCDsmYTro4zrkJjsl4jsirXri4jri6QuIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDNfaW5zdHJ1Y3Rpb24iIG1zZ2lkPSI4MDI1OTgxODI5NjA1NDI2MDAwIj4i7J207KCcIOymkOqyqOywvuuKlCDslbHsnYQgPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPuyXkCDsnoXroKXtlaAg7IiYIOyeiOyKteuLiOuLpC4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwM19hY3Rpb24iIG1zZ2lkPSI2MDA4Nzk3OTcyNTY5NDIyNTkiPiLstpTqsIAg7Ja47Ja0IOyEpOyglSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX2ZpbmlzaF9hY3Rpb24iIG1zZ2lkPSIyNzY1NTkyNDM0MDk0NjUzODkiPiLsmYTro4zrkKgiPC9zdHJpbmc+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc2hvd19zZXR1cF93aXphcmRfaWNvbiAoNTAwODAyODU5MDU5MzcxMDgzMCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzaG93X3NldHVwX3dpemFyZF9pY29uX3N1bW1hcnkgKDQxMTk5OTgzMjI1MzY4ODAyMTMpIC0tPgorICAgIDxza2lwIC8+CiAgICAgPHN0cmluZyBuYW1lPSJhcHBfbmFtZSIgbXNnaWQ9IjYzMjAxMDI2Mzc0OTEyMzQ3OTIiPiLsgqzsoIQg7KCc6rO17JeF7LK0Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGljdGlvbmFyeV9wcm92aWRlcl9uYW1lIiBtc2dpZD0iMzAyNzMxNTA0NTM5NzM2MzA3OSI+IuyCrOyghCDsoJzqs7Xsl4XssrQiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkaWN0aW9uYXJ5X3NlcnZpY2VfbmFtZSIgbXNnaWQ9IjYyMzc0NzIzNTA2OTM1MTE0NDgiPiLsgqzsoIQg7ISc67mE7IqkIjwvc3RyaW5nPgpAQCAtMjAzLDQgKzIyNCw2IEBACiAgICAgPHN0cmluZyBuYW1lPSJkaWN0X2F2YWlsYWJsZV9ub3RpZmljYXRpb25fdGl0bGUiIG1zZ2lkPSI2NTE0Mjg4NTkxOTU5MTE3Mjg4Ij4iPHhsaWZmOmcgaWQ9IkxBTkdVQUdFIj4lMSRzPC94bGlmZjpnPiDsgqzsoITsnYQg7IKs7Jqp7ZWgIOyImCDsnojsirXri4jri6QuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGljdF9hdmFpbGFibGVfbm90aWZpY2F0aW9uX2Rlc2NyaXB0aW9uIiBtc2dpZD0iMTA3NTE5NDE2OTQ0MzE2MzQ4NyI+IuqygO2GoO2VmOqzoCDri6TsmrTroZzrk5ztlZjroKTrqbQg64iE66W07IS47JqULiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InRvYXN0X2Rvd25sb2FkaW5nX3N1Z2dlc3Rpb25zIiBtc2dpZD0iMTMxMzAyNzM1MzU4ODU2NjY2MCI+IuuLpOyatOuhnOuTnCDspJE6IDx4bGlmZjpnIGlkPSJMQU5HVUFHRSI+JTEkczwveGxpZmY6Zz7sl5Ag64yA7ZWcIOy2lOyynO2VreuqqeydtCDqs6cg7KSA67mE65Cp64uI64ukLiI8L3N0cmluZz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciB2ZXJzaW9uX3RleHQgKDI3MTUzNTQyMTU1Njg0NjkzODUpIC0tPgorICAgIDxza2lwIC8+CiA8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL2phdmEvcmVzL3ZhbHVlcy1sYW5kL3NldHVwLWRpbWVucy1zbWFsbC1waG9uZS1sYW5kLnhtbCBiL2phdmEvcmVzL3ZhbHVlcy1sYW5kL3NldHVwLWRpbWVucy1zbWFsbC1waG9uZS1sYW5kLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42M2Y0NjYxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9yZXMvdmFsdWVzLWxhbmQvc2V0dXAtZGltZW5zLXNtYWxsLXBob25lLWxhbmQueG1sCkBAIC0wLDAgKzEsNDAgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8IS0tIENvcHlyaWdodCAoQykgMjAxMyBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisKKyAgICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAgICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisKKyAgICAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKworICAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLS0+CisKKzxyZXNvdXJjZXMgeG1sbnM6YW5kcm9pZD0iaHR0cDovL3NjaGVtYXMuYW5kcm9pZC5jb20vYXBrL3Jlcy9hbmRyb2lkIj4KKyAgICA8IS0tIFNldHVwIHdpemFyZCBkaW1lbnNpb25zIGZvciBzbWFsbC1waG9uZS9sYW5kc2NhcGUuIC0tPgorICAgIDxkaW1lbiBuYW1lPSJzZXR1cF90aXRsZV90ZXh0X3NpemUiPjM2c3A8L2RpbWVuPgorICAgIDxkaW1lbiBuYW1lPSJzZXR1cF93ZWxjb21lX2Rlc2NyaXB0aW9uX3RleHRfc2l6ZSI+MThzcDwvZGltZW4+CisgICAgPGRpbWVuIG5hbWU9InNldHVwX3N0ZXBfYnVsbGV0X3RleHRfc2l6ZSI+MThzcDwvZGltZW4+CisgICAgPGRpbWVuIG5hbWU9InNldHVwX3N0ZXBfdHJpYW5nbGVfaW5kaWNhdG9yX2hlaWdodCI+MThkcDwvZGltZW4+CisgICAgPGRpbWVuIG5hbWU9InNldHVwX3N0ZXBfaW5kaWNhdG9yX2hlaWdodCI+MThkcDwvZGltZW4+CisgICAgPGRpbWVuIG5hbWU9InNldHVwX3N0ZXBfdGl0bGVfdGV4dF9zaXplIj4xOHNwPC9kaW1lbj4KKyAgICA8ZGltZW4gbmFtZT0ic2V0dXBfc3RlcF9pbnN0cnVjdGlvbl90ZXh0X3NpemUiPjE0c3A8L2RpbWVuPgorICAgIDxkaW1lbiBuYW1lPSJzZXR1cF9zdGVwX2FjdGlvbl90ZXh0X3NpemUiPjE2c3A8L2RpbWVuPgorICAgIDxkaW1lbiBuYW1lPSJzZXR1cF92ZXJ0aWNhbF9wYWRkaW5nIj4xMmRwPC9kaW1lbj4KKyAgICA8ZGltZW4gbmFtZT0ic2V0dXBfaG9yaXpvbnRhbF9wYWRkaW5nIj4xMmRwPC9kaW1lbj4KKyAgICA8ZGltZW4gbmFtZT0ic2V0dXBfc3RlcF9hY3Rpb25faGVpZ2h0Ij40MmRwPC9kaW1lbj4KKyAgICA8ZGltZW4gbmFtZT0ic2V0dXBfc3RlcF9ob3Jpem9udGFsX3BhZGRpbmciPjIwZHA8L2RpbWVuPgorICAgIDxkaW1lbiBuYW1lPSJzZXR1cF9zdGVwX2hvcml6b250YWxfcGFkZGluZ19oYWxmIj4xMGRwPC9kaW1lbj4KKyAgICA8ZGltZW4gbmFtZT0ic2V0dXBfc3RlcF92ZXJ0aWNhbF9wYWRkaW5nIj4xMmRwPC9kaW1lbj4KKyAgICA8ZGltZW4gbmFtZT0ic2V0dXBfc3RlcF9ob3Jpem9udGFsX2xpbmVfaGVpZ2h0Ij4yZHA8L2RpbWVuPgorICAgIDxpbnRlZ2VyIG5hbWU9InNldHVwX3RpdGxlX3dlaWdodF9pbl9zY3JlZW4iPjQwPC9pbnRlZ2VyPgorICAgIDxpbnRlZ2VyIG5hbWU9InNldHVwX2JvZHlfd2VpZ2h0X2luX3NjcmVlbiI+NjA8L2ludGVnZXI+CisgICAgPGRpbWVuIG5hbWU9InNldHVwX3dlbGNvbWVfdmlkZW9fdmVydGljYWxfbWFyZ2luIj4yNGRwPC9kaW1lbj4KKyAgICA8aW50ZWdlciBuYW1lPSJzZXR1cF93ZWxjb21lX3ZpZGVvX3dlaWdodF9pbl9zY3JlZW4iPjgwPC9pbnRlZ2VyPgorICAgIDxpbnRlZ2VyIG5hbWU9InNldHVwX3dlbGNvbWVfdmlkZW9fbGVmdF9wYWRkaW5nX3dlaWdodF9pbl9zY3JlZW4iPjEwPC9pbnRlZ2VyPgorICAgIDxpbnRlZ2VyIG5hbWU9InNldHVwX3dlbGNvbWVfdmlkZW9fcmlnaHRfcGFkZGluZ193ZWlnaHRfaW5fc2NyZWVuIj4xMDwvaW50ZWdlcj4KKzwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvamF2YS9yZXMvdmFsdWVzLWx0L3N0cmluZ3MueG1sIGIvamF2YS9yZXMvdmFsdWVzLWx0L3N0cmluZ3MueG1sCmluZGV4IDI4MzAxM2MuLjkzMGRlN2IgMTAwNjQ0Ci0tLSBhL2phdmEvcmVzL3ZhbHVlcy1sdC9zdHJpbmdzLnhtbAorKysgYi9qYXZhL3Jlcy92YWx1ZXMtbHQvc3RyaW5ncy54bWwKQEAgLTUzLDYgKzUzLDggQEAKICAgICA8c3RyaW5nIG5hbWU9InVzZV9kb3VibGVfc3BhY2VfcGVyaW9kX3N1bW1hcnkiIG1zZ2lkPSI2NTMyODkyMTg3MjQ3OTUyNzk5Ij4iRHVrYXJ0IHBhbGlldHVzIHRhcnBvIGtsYXZpxaHEhSDEr3RlcnBpYW1hcyB0YcWha2FzIGlyIHRhcnBhcy4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJhdXRvX2NhcCIgbXNnaWQ9IjE3MTk3NDY2NzQ4NTQ2MjgyNTIiPiJBdXRvbWF0aW5pcyBkaWTFvmnFs2rFsyByYWlkxb5pxbMgcmHFoXltYXMiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJhdXRvX2NhcF9zdW1tYXJ5IiBtc2dpZD0iNzkzNDQ1Mjc2MTAyMjk0Njg3NCI+IktpZWt2aWVubyBzYWtpbmlvIHBpcm3EhSDFvm9kxK8gcmHFoXl0aSBpxaEgZGlkxb5pb3Npb3MgcmFpZMSXcyI8L3N0cmluZz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBlZGl0X3BlcnNvbmFsX2RpY3Rpb25hcnkgKDM5OTY5MTAwMzg5NTI5NDA0MjApIC0tPgorICAgIDxza2lwIC8+CiAgICAgPHN0cmluZyBuYW1lPSJjb25maWd1cmVfZGljdGlvbmFyaWVzX3RpdGxlIiBtc2dpZD0iNDIzODY1MjMzODU1NjkwMjA0OSI+IlBhcGlsZG9taSDFvm9keW5haSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im1haW5fZGljdGlvbmFyeSIgbXNnaWQ9IjQ3OTg3NjM3ODE4MTgzNjExNjgiPiJQYWdyaW5kaW5pcyDFvm9keW5hcyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InByZWZzX3Nob3dfc3VnZ2VzdGlvbnMiIG1zZ2lkPSI4MDI2Nzk5NjYzNDQ1NTMxNjM3Ij4iUm9keXRpIHRhaXN5bW8gcGFzacWrbHltdXMiPC9zdHJpbmc+CkBAIC0xNzEsOCArMTczLDI3IEBACiAgICAgPHN0cmluZyBuYW1lPSJyZWFkX2V4dGVybmFsX2RpY3Rpb25hcnlfY29uZmlybV9pbnN0YWxsX21lc3NhZ2UiIG1zZ2lkPSI2ODk4NjEwMTYzNzY4OTgwODcwIj4iQXIgdGlrcmFpIMSvZGllZ3RpIMWhxK8gZmFpbMSFIDx4bGlmZjpnIGlkPSJMT0NBTEVfTkFNRSI+JXM8L3hsaWZmOmc+PyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImVycm9yIiBtc2dpZD0iODk0MDc2MzYyNDY2ODUxMzY0OCI+IsSudnlrbyBrbGFpZGEiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJidXR0b25fZGVmYXVsdCIgbXNnaWQ9IjM5ODgwMTc4NDA0MzE4ODE0OTEiPiJOdW1hdHl0aWVqaSI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Imxhbmd1YWdlX3NldHRpbmdzIiBtc2dpZD0iMTY3MTE1MzA1MzIwMTgwOTAzMSI+IkthbGJhIGlyIMSvdmVzdGlzIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ic2VsZWN0X2lucHV0X21ldGhvZCIgbXNnaWQ9IjQzMDE2MDIzNzQ2MDkyNzUwMDMiPiJQYXNpcmlua2l0ZSDEr3Zlc3RpZXMgbWV0b2TEhSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3dlbGNvbWVfdGl0bGUiIG1zZ2lkPSI2MTEyODIxNzA5ODMyMDMxNzE1Ij4iU3ZlaWtpISBUYWkg4oCePHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPuKAnCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3dlbGNvbWVfYWRkaXRpb25hbF9kZXNjcmlwdGlvbiIgbXNnaWQ9IjgxNTAyNTIwMDg1NDU3Njg5NTMiPiJuYXVkb2phbnQgxK92ZXN0xK8gZ2VzdGFpcyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0YXJ0X2FjdGlvbiIgbXNnaWQ9Ijg5MzYwMzY0NjA4OTczNDc3MDgiPiJQcmFkxJd0aSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX25leHRfYWN0aW9uIiBtc2dpZD0iMzcxODIxNDM3OTE1MTQ0NjAzIj4iS2l0YXMgdmVpa3NtYXMiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwc190aXRsZSIgbXNnaWQ9IjY0MDAzNzMwMzQ4NzE4MTYxODIiPiLigJ48eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+4oCcIHPEhXJhbmthIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDFfdGl0bGUiIG1zZ2lkPSIzMTQ3OTY3NjMwMjUzNDYyMzE1Ij4ixK5nYWxpbmtpdGUg4oCePHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPuKAnCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAxX2luc3RydWN0aW9uIiBtc2dpZD0iMjU3ODYzMTkzNjYyNDYzNzI0MSI+IlNraWx0eWplIOKAnkthbGJvcyBpciDEr3Zlc3RpZXMgbnVzdGF0eW1haeKAnCDFvnIuIOKAnjx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz7igJwgKHByb2dyLiBidXMgxK9nYWwuIHZlaWt0aSDEr3IuKS4iPC9zdHJpbmc+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc2V0dXBfc3RlcDFfZmluaXNoZWRfaW5zdHJ1Y3Rpb24gKDEwNzYxNDgyMDA0OTU3OTk0KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDFfYWN0aW9uIiBtc2dpZD0iNDM2NjUxMzUzNDk5OTkwMTcyOCI+IsSuZ2FsaW50aSBudXN0YXR5bXVvc2UiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMl90aXRsZSIgbXNnaWQ9IjY4NjA3MjU0NDc5MDY2OTA1OTQiPiJQZXJqdW5naW1hcyDEryDigJ48eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+4oCcIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDJfaW5zdHJ1Y3Rpb24iIG1zZ2lkPSI5MTQxNDgxOTY0ODcwMDIzMzM2Ij4iVG9saWF1IHBhc2lyaW5raXRlIOKAnjx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz7igJwga2FpcCBha3R5dsWzIHRla3N0byDEr3Zlc3RpZXMgbWV0b2TEhS4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMl9hY3Rpb24iIG1zZ2lkPSIxNjYwMzMwMzA3MTU5ODI0MzM3Ij4iUGVyanVuZ3RpIMSvdmVzdGllcyBtZXRvZHVzIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDNfdGl0bGUiIG1zZ2lkPSIzMTU0NzU3MTgzNjMxNDkwMjgxIj4iU3ZlaWtpbmFtZSwgdmlza8SFIG51c3RhdMSXdGUhIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDNfaW5zdHJ1Y3Rpb24iIG1zZ2lkPSI4MDI1OTgxODI5NjA1NDI2MDAwIj4iRGFiYXIgZ2FsaXRlIMSvdmVzdGkgdmlzYXMgbcSXZ3N0YW1hcyBwcm9ncmFtYXMgbmF1ZG9kYW1pIOKAnjx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz7igJwuIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDNfYWN0aW9uIiBtc2dpZD0iNjAwODc5Nzk3MjU2OTQyMjU5Ij4iS29uZmlnxatydW9raXRlIHBhcGlsZG9tYXMga2FsYmFzIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfZmluaXNoX2FjdGlvbiIgbXNnaWQ9IjI3NjU1OTI0MzQwOTQ2NTM4OSI+IkJhaWd0YSI8L3N0cmluZz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzaG93X3NldHVwX3dpemFyZF9pY29uICg1MDA4MDI4NTkwNTkzNzEwODMwKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNob3dfc2V0dXBfd2l6YXJkX2ljb25fc3VtbWFyeSAoNDExOTk5ODMyMjUzNjg4MDIxMykgLS0+CisgICAgPHNraXAgLz4KICAgICA8c3RyaW5nIG5hbWU9ImFwcF9uYW1lIiBtc2dpZD0iNjMyMDEwMjYzNzQ5MTIzNDc5MiI+IsW9b2R5bm8gdGVpa8SXamFzIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGljdGlvbmFyeV9wcm92aWRlcl9uYW1lIiBtc2dpZD0iMzAyNzMxNTA0NTM5NzM2MzA3OSI+IsW9b2R5bm8gdGVpa8SXamFzIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGljdGlvbmFyeV9zZXJ2aWNlX25hbWUiIG1zZ2lkPSI2MjM3NDcyMzUwNjkzNTExNDQ4Ij4ixb1vZHlubyBwYXNsYXVnYSI8L3N0cmluZz4KQEAgLTIwMyw0ICsyMjQsNiBAQAogICAgIDxzdHJpbmcgbmFtZT0iZGljdF9hdmFpbGFibGVfbm90aWZpY2F0aW9uX3RpdGxlIiBtc2dpZD0iNjUxNDI4ODU5MTk1OTExNzI4OCI+IkdhbGltYXMgPHhsaWZmOmcgaWQ9IkxBTkdVQUdFIj4lMSRzPC94bGlmZjpnPiDFvm9keW5hcyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRpY3RfYXZhaWxhYmxlX25vdGlmaWNhdGlvbl9kZXNjcmlwdGlvbiIgbXNnaWQ9IjEwNzUxOTQxNjk0NDMxNjM0ODciPiJQYXNwYXVza2l0ZSwga2FkIHBlcsW+acWrcsSXdHVtxJd0ZSBpciBhdHNpc2nFs3N0dW3El3RlIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idG9hc3RfZG93bmxvYWRpbmdfc3VnZ2VzdGlvbnMiIG1zZ2lkPSIxMzEzMDI3MzUzNTg4NTY2NjYwIj4iQXRzaXNpdW7EjWlhbWEuIE5ldHJ1a3VzIGJ1cyBnYWxpbWkgPHhsaWZmOmcgaWQ9IkxBTkdVQUdFIj4lMSRzPC94bGlmZjpnPiBwYXNpxatseW1haS4iPC9zdHJpbmc+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgdmVyc2lvbl90ZXh0ICgyNzE1MzU0MjE1NTY4NDY5Mzg1KSAtLT4KKyAgICA8c2tpcCAvPgogPC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9qYXZhL3Jlcy92YWx1ZXMtbHYvc3RyaW5ncy54bWwgYi9qYXZhL3Jlcy92YWx1ZXMtbHYvc3RyaW5ncy54bWwKaW5kZXggODRiMTFmNi4uMGJlZjJiYyAxMDA2NDQKLS0tIGEvamF2YS9yZXMvdmFsdWVzLWx2L3N0cmluZ3MueG1sCisrKyBiL2phdmEvcmVzL3ZhbHVlcy1sdi9zdHJpbmdzLnhtbApAQCAtNTMsNiArNTMsOCBAQAogICAgIDxzdHJpbmcgbmFtZT0idXNlX2RvdWJsZV9zcGFjZV9wZXJpb2Rfc3VtbWFyeSIgbXNnaWQ9IjY1MzI4OTIxODcyNDc5NTI3OTkiPiJEaXZyZWl6IHBpZXNrYXJvdGllcyBhdHN0LiB0YXVzdGnFhmFtLCBpZXZhZGEgcHVua3R1IHVuIGF0c3RhcnBpLiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImF1dG9fY2FwIiBtc2dpZD0iMTcxOTc0NjY3NDg1NDYyODI1MiI+IkF1dG9txIF0aXNrYSBsaWVsbyBidXJ0dSBsaWV0b8WhYW5hIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYXV0b19jYXBfc3VtbWFyeSIgbXNnaWQ9Ijc5MzQ0NTI3NjEwMjI5NDY4NzQiPiJLYXRyYSB0ZWlrdW1hIHBpcm1vIHbEgXJkdSByYWtzdMSrdCBhciBsaWVsbyBidXJ0dS4iPC9zdHJpbmc+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgZWRpdF9wZXJzb25hbF9kaWN0aW9uYXJ5ICgzOTk2OTEwMDM4OTUyOTQwNDIwKSAtLT4KKyAgICA8c2tpcCAvPgogICAgIDxzdHJpbmcgbmFtZT0iY29uZmlndXJlX2RpY3Rpb25hcmllc190aXRsZSIgbXNnaWQ9IjQyMzg2NTIzMzg1NTY5MDIwNDkiPiJQYXBpbGRpbsSBanVtdSB2xIFyZG7Eq2NhcyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im1haW5fZGljdGlvbmFyeSIgbXNnaWQ9IjQ3OTg3NjM3ODE4MTgzNjExNjgiPiJHYWx2ZW7EgSB2xIFyZG7Eq2NhIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icHJlZnNfc2hvd19zdWdnZXN0aW9ucyIgbXNnaWQ9IjgwMjY3OTk2NjM0NDU1MzE2MzciPiJSxIFkxKt0IGxhYm9qdW11IGlldGVpa3VtdXMiPC9zdHJpbmc+CkBAIC0xNzEsOCArMTczLDI3IEBACiAgICAgPHN0cmluZyBuYW1lPSJyZWFkX2V4dGVybmFsX2RpY3Rpb25hcnlfY29uZmlybV9pbnN0YWxsX21lc3NhZ2UiIG1zZ2lkPSI2ODk4NjEwMTYzNzY4OTgwODcwIj4iVmFpIGluc3RhbMSTdCDFoW8gZmFpbHUgxaHEgWRhaSB2YWxvZGFpOiA8eGxpZmY6ZyBpZD0iTE9DQUxFX05BTUUiPiVzPC94bGlmZjpnPj8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJlcnJvciIgbXNnaWQ9Ijg5NDA3NjM2MjQ2Njg1MTM2NDgiPiJSYWTEgXMga8S8xatkYSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJ1dHRvbl9kZWZhdWx0IiBtc2dpZD0iMzk4ODAxNzg0MDQzMTg4MTQ5MSI+Ik5va2x1c8STanVtcyI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Imxhbmd1YWdlX3NldHRpbmdzIiBtc2dpZD0iMTY3MTE1MzA1MzIwMTgwOTAzMSI+IlZhbG9kYSB1biBpZXZhZGUiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJzZWxlY3RfaW5wdXRfbWV0aG9kIiBtc2dpZD0iNDMwMTYwMjM3NDYwOTI3NTAwMyI+IklldmFkZXMgbWV0b2RlcyBpenbEk2xlIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfd2VsY29tZV90aXRsZSIgbXNnaWQ9IjYxMTI4MjE3MDk4MzIwMzE3MTUiPiJMYWlwbmkgbMWrZHphbSBwYWthbHBvanVtxIEgPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPiwiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF93ZWxjb21lX2FkZGl0aW9uYWxfZGVzY3JpcHRpb24iIG1zZ2lkPSI4MTUwMjUyMDA4NTQ1NzY4OTUzIj4ia3VyxIEgdmFyYXQgaXptYW50b3QgaWV2YWRpIGFyIMW+ZXN0aWVtIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RhcnRfYWN0aW9uIiBtc2dpZD0iODkzNjAzNjQ2MDg5NzM0NzcwOCI+IlPEgWt0IGRhcmJ1Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfbmV4dF9hY3Rpb24iIG1zZ2lkPSIzNzE4MjE0Mzc5MTUxNDQ2MDMiPiJOxIFrYW3EgSBkYXJixKtiYSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXBzX3RpdGxlIiBtc2dpZD0iNjQwMDM3MzAzNDg3MTgxNjE4MiI+IkxpZXRvanVtcHJvZ3JhbW1hcyA8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+IGllc3RhdMSrxaFhbmEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMV90aXRsZSIgbXNnaWQ9IjMxNDc5Njc2MzAyNTM0NjIzMTUiPiJMaWV0b2p1bXByb2dyYW1tYXMgPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPiBpZXNwxJNqb8WhYW5hIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDFfaW5zdHJ1Y3Rpb24iIG1zZ2lkPSIyNTc4NjMxOTM2NjI0NjM3MjQxIj4iVmFsb2RhcyB1biBpZXZhZGVzIGllc3RhdMSranVtb3MgYXR6xKttxJNqaWV0IOKAnDx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz7igJ0sIGF1dG9yaXrEk2pvdCB0xIFzIHBhbGFpxaFhbnUgaWVyxKtjxJMuIjwvc3RyaW5nPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNldHVwX3N0ZXAxX2ZpbmlzaGVkX2luc3RydWN0aW9uICgxMDc2MTQ4MjAwNDk1Nzk5NCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAxX2FjdGlvbiIgbXNnaWQ9IjQzNjY1MTM1MzQ5OTk5MDE3MjgiPiJJZXNwxJNqb3QgaWVzdGF0xKtqdW1vcyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAyX3RpdGxlIiBtc2dpZD0iNjg2MDcyNTQ0NzkwNjY5MDU5NCI+IlDEgXJzbMSTZ8WhYW7EgXMgdXogbGlldG9qdW1wcm9ncmFtbXUgPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAyX2luc3RydWN0aW9uIiBtc2dpZD0iOTE0MTQ4MTk2NDg3MDAyMzMzNiI+IlDEk2MgdGFtIGF0bGFzaWV0IOKAnDx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz7igJ0ga8SBIGFrdMSrdm8gaWV2YWRlcyBtZXRvZGkuIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDJfYWN0aW9uIiBtc2dpZD0iMTY2MDMzMDMwNzE1OTgyNDMzNyI+IlDEgXJzbMSTZ3QgaWV2YWRlcyBtZXRvZGVzIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDNfdGl0bGUiIG1zZ2lkPSIzMTU0NzU3MTgzNjMxNDkwMjgxIj4iR2F0YXZzISI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAzX2luc3RydWN0aW9uIiBtc2dpZD0iODAyNTk4MTgyOTYwNTQyNjAwMCI+Ikl6bWFudG9qb3QgbGlldG9qdW1wcm9ncmFtbXUgPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPiwgdmFyYXQgcmFrc3TEq3QgdmlzxIFzIGllY2llbsSrdMSBa2FqxIFzIGxpZXRvdG7Ek3MuIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDNfYWN0aW9uIiBtc2dpZD0iNjAwODc5Nzk3MjU2OTQyMjU5Ij4iS29uZmlndXLEk3QgcGFwaWxkdSB2YWxvZGFzIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfZmluaXNoX2FjdGlvbiIgbXNnaWQ9IjI3NjU1OTI0MzQwOTQ2NTM4OSI+IlBhYmVpZ3RzIjwvc3RyaW5nPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNob3dfc2V0dXBfd2l6YXJkX2ljb24gKDUwMDgwMjg1OTA1OTM3MTA4MzApIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc2hvd19zZXR1cF93aXphcmRfaWNvbl9zdW1tYXJ5ICg0MTE5OTk4MzIyNTM2ODgwMjEzKSAtLT4KKyAgICA8c2tpcCAvPgogICAgIDxzdHJpbmcgbmFtZT0iYXBwX25hbWUiIG1zZ2lkPSI2MzIwMTAyNjM3NDkxMjM0NzkyIj4iVsSBcmRuxKtjYXMgbm9kcm/FoWluxIF0xIFqcyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRpY3Rpb25hcnlfcHJvdmlkZXJfbmFtZSIgbXNnaWQ9IjMwMjczMTUwNDUzOTczNjMwNzkiPiJWxIFyZG7Eq2NhcyBub2Ryb8WhaW7EgXTEgWpzIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGljdGlvbmFyeV9zZXJ2aWNlX25hbWUiIG1zZ2lkPSI2MjM3NDcyMzUwNjkzNTExNDQ4Ij4iVsSBcmRuxKtjYXMgcGFrYWxwb2p1bXMiPC9zdHJpbmc+CkBAIC0yMDMsNCArMjI0LDYgQEAKICAgICA8c3RyaW5nIG5hbWU9ImRpY3RfYXZhaWxhYmxlX25vdGlmaWNhdGlvbl90aXRsZSIgbXNnaWQ9IjY1MTQyODg1OTE5NTkxMTcyODgiPiJJciBwaWVlamFtYSB2xIFyZG7Eq2NhIMWhxIFkYWkgdmFsb2RhaTogPHhsaWZmOmcgaWQ9IkxBTkdVQUdFIj4lMSRzPC94bGlmZjpnPiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRpY3RfYXZhaWxhYmxlX25vdGlmaWNhdGlvbl9kZXNjcmlwdGlvbiIgbXNnaWQ9IjEwNzUxOTQxNjk0NDMxNjM0ODciPiJOb3NwaWVkaWV0LCBsYWkgcMSBcnNrYXTEq3R1IHVuIGxlanVwaWVsxIFkxJN0dSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InRvYXN0X2Rvd25sb2FkaW5nX3N1Z2dlc3Rpb25zIiBtc2dpZD0iMTMxMzAyNzM1MzU4ODU2NjY2MCI+Ik5vdGllayBsZWp1cGllbMSBZGUuIERyxKt6IGLFq3MgcGllZWphbWkgaWV0ZWlrdW1pIMWhxIFkYWkgdmFsb2RhaTogPHhsaWZmOmcgaWQ9IkxBTkdVQUdFIj4lMSRzPC94bGlmZjpnPi4iPC9zdHJpbmc+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgdmVyc2lvbl90ZXh0ICgyNzE1MzU0MjE1NTY4NDY5Mzg1KSAtLT4KKyAgICA8c2tpcCAvPgogPC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9qYXZhL3Jlcy92YWx1ZXMtbWsvc3RyaW5ncy54bWwgYi9qYXZhL3Jlcy92YWx1ZXMtbWsvc3RyaW5ncy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzI0MWJiOAotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvcmVzL3ZhbHVlcy1tay9zdHJpbmdzLnhtbApAQCAtMCwwICsxLDQyMCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzwhLS0gCisvKgorKioKKyoqIENvcHlyaWdodCAyMDA4LCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisqKgorKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyoqCisqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisqKgorKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisqLworIC0tPgorCis8cmVzb3VyY2VzIHhtbG5zOmFuZHJvaWQ9Imh0dHA6Ly9zY2hlbWFzLmFuZHJvaWQuY29tL2Fway9yZXMvYW5kcm9pZCIKKyAgICB4bWxuczp4bGlmZj0idXJuOm9hc2lzOm5hbWVzOnRjOnhsaWZmOmRvY3VtZW50OjEuMiI+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+ItCe0LTQuCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImxhYmVsX25leHRfa2V5IiBtc2dpZD0iMzYyOTcyODQ0NTI1NjcyNTY4Ij4i0KHQu9C10LTQvdC+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibGFiZWxfcHJldmlvdXNfa2V5IiBtc2dpZD0iMTIxMTg2ODExODA3MTM4Njc4NyI+ItCf0YDQtdGC0YXQvtC00L3QviI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImxhYmVsX2RvbmVfa2V5IiBtc2dpZD0iMjQ0MTU3ODc0ODc3MjUyOTI4OCI+ItCT0L7RgtC+0LLQviI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImxhYmVsX3NlbmRfa2V5IiBtc2dpZD0iMjgxNTA1NjUzNDQzMzcxNzQ0NCI+ItCY0YHQv9GA0LDRgtC4Ijwvc3RyaW5nPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGxhYmVsX3BhdXNlX2tleSAoMTgxMDk4MzA4NDI4MDM1MzQwKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGxhYmVsX3dhaXRfa2V5ICg2NDAyMTUyNjAwODc4MDkzMTM0KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNwb2tlbl91c2VfaGVhZHBob25lcyAoODk2OTYxNzgxMjg3MjgzNDkzKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNwb2tlbl9jdXJyZW50X3RleHRfaXMgKDI0ODU3MjMwMTEyNzI1ODM4NDUpIC0tPgorICAgIDxza2lwIC8+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+Cis8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL2phdmEvcmVzL3ZhbHVlcy1tbi9zdHJpbmdzLnhtbCBiL2phdmEvcmVzL3ZhbHVlcy1tbi9zdHJpbmdzLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNzNmZWUxCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9yZXMvdmFsdWVzLW1uL3N0cmluZ3MueG1sCkBAIC0wLDAgKzEsNDIwIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/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+CisgICAgPHN0cmluZyBuYW1lPSJsYWJlbF9nb19rZXkiIG1zZ2lkPSIxNjM1MTQ4MDgyMTM3MjE5MTQ4Ij4i0J7Rh9C40YUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJsYWJlbF9uZXh0X2tleSIgbXNnaWQ9IjM2Mjk3Mjg0NDUyNTY3MjU2OCI+ItCU0LDRgNCw0LDQs9C40LnQvSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImxhYmVsX3ByZXZpb3VzX2tleSIgbXNnaWQ9IjEyMTE4NjgxMTgwNzEzODY3ODciPiLTqNC80L3TqdGFIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibGFiZWxfZG9uZV9rZXkiIG1zZ2lkPSIyNDQxNTc4NzQ4NzcyNTI5Mjg4Ij4i0KXQuNC50LPQtNC70Y3RjSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImxhYmVsX3NlbmRfa2V5IiBtc2dpZD0iMjgxNTA1NjUzNDQzMzcxNzQ0NCI+ItCY0LvQs9GN0Y3RhSI8L3N0cmluZz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBsYWJlbF9wYXVzZV9rZXkgKDE4MTA5ODMwODQyODAzNTM0MCkgLS0+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+CmRpZmYgLS1naXQgYS9qYXZhL3Jlcy92YWx1ZXMtbXMvc3RyaW5ncy54bWwgYi9qYXZhL3Jlcy92YWx1ZXMtbXMvc3RyaW5ncy54bWwKaW5kZXggNjdmZGVhOS4uZDE5ZDAxZSAxMDA2NDQKLS0tIGEvamF2YS9yZXMvdmFsdWVzLW1zL3N0cmluZ3MueG1sCisrKyBiL2phdmEvcmVzL3ZhbHVlcy1tcy9zdHJpbmdzLnhtbApAQCAtNTMsNiArNTMsOCBAQAogICAgIDxzdHJpbmcgbmFtZT0idXNlX2RvdWJsZV9zcGFjZV9wZXJpb2Rfc3VtbWFyeSIgbXNnaWQ9IjY1MzI4OTIxODcyNDc5NTI3OTkiPiJNZW5nZXRpayAyWCBwYWRhIGJhciBydWFuZyBtZW1hc3Vra2FuIHRpdGlrIGRpaWt1dGkgZGVuZ2FuIHJ1YW5nIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYXV0b19jYXAiIG1zZ2lkPSIxNzE5NzQ2Njc0ODU0NjI4MjUyIj4iSHVydWYgYmVzYXIgYXV0byI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImF1dG9fY2FwX3N1bW1hcnkiIG1zZ2lkPSI3OTM0NDUyNzYxMDIyOTQ2ODc0Ij4iQmVzYXJrYW4gcGVya2F0YWFuIHBlcnRhbWEgc2V0aWFwIGF5YXQiPC9zdHJpbmc+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgZWRpdF9wZXJzb25hbF9kaWN0aW9uYXJ5ICgzOTk2OTEwMDM4OTUyOTQwNDIwKSAtLT4KKyAgICA8c2tpcCAvPgogICAgIDxzdHJpbmcgbmFtZT0iY29uZmlndXJlX2RpY3Rpb25hcmllc190aXRsZSIgbXNnaWQ9IjQyMzg2NTIzMzg1NTY5MDIwNDkiPiJLYW11cyB0YW1iYWhhbiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im1haW5fZGljdGlvbmFyeSIgbXNnaWQ9IjQ3OTg3NjM3ODE4MTgzNjExNjgiPiJLYW11cyB1dGFtYSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InByZWZzX3Nob3dfc3VnZ2VzdGlvbnMiIG1zZ2lkPSI4MDI2Nzk5NjYzNDQ1NTMxNjM3Ij4iVHVuanVra2FuIGNhZGFuZ2FuIHBlbWJldHVsYW4iPC9zdHJpbmc+CkBAIC0xNzEsOCArMTczLDI3IEBACiAgICAgPHN0cmluZyBuYW1lPSJyZWFkX2V4dGVybmFsX2RpY3Rpb25hcnlfY29uZmlybV9pbnN0YWxsX21lc3NhZ2UiIG1zZ2lkPSI2ODk4NjEwMTYzNzY4OTgwODcwIj4iQmV0dWwtYmV0dWwgcGFzYW5nIGZhaWwgaW5pIHVudHVrIDx4bGlmZjpnIGlkPSJMT0NBTEVfTkFNRSI+JXM8L3hsaWZmOmc+PyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImVycm9yIiBtc2dpZD0iODk0MDc2MzYyNDY2ODUxMzY0OCI+IkJlcmxha3UgcmFsYXQiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJidXR0b25fZGVmYXVsdCIgbXNnaWQ9IjM5ODgwMTc4NDA0MzE4ODE0OTEiPiJMYWxhaSI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Imxhbmd1YWdlX3NldHRpbmdzIiBtc2dpZD0iMTY3MTE1MzA1MzIwMTgwOTAzMSI+IkJhaGFzYSAmYW1wOyBpbnB1dCI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InNlbGVjdF9pbnB1dF9tZXRob2QiIG1zZ2lkPSI0MzAxNjAyMzc0NjA5Mjc1MDAzIj4iUGlsaWgga2FlZGFoIGlucHV0Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfd2VsY29tZV90aXRsZSIgbXNnaWQ9IjYxMTI4MjE3MDk4MzIwMzE3MTUiPiJTZWxhbWF0IGRhdGFuZyBrZSA8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfd2VsY29tZV9hZGRpdGlvbmFsX2Rlc2NyaXB0aW9uIiBtc2dpZD0iODE1MDI1MjAwODU0NTc2ODk1MyI+ImRlbmdhbiBUYWlwYW4gR2VyYWsgSXN5YXJhdCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0YXJ0X2FjdGlvbiIgbXNnaWQ9Ijg5MzYwMzY0NjA4OTczNDc3MDgiPiJCZXJtdWxhIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfbmV4dF9hY3Rpb24iIG1zZ2lkPSIzNzE4MjE0Mzc5MTUxNDQ2MDMiPiJMYW5na2FoIHNldGVydXNueWEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwc190aXRsZSIgbXNnaWQ9IjY0MDAzNzMwMzQ4NzE4MTYxODIiPiJNZW55ZWRpYWthbiA8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDFfdGl0bGUiIG1zZ2lkPSIzMTQ3OTY3NjMwMjUzNDYyMzE1Ij4iRGF5YWthbiA8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDFfaW5zdHJ1Y3Rpb24iIG1zZ2lkPSIyNTc4NjMxOTM2NjI0NjM3MjQxIj4iU2lsYSBzZW1hayBcIjx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz5cIiBkbG0gdHRwbiBCaHMgJmFtcDsgaW5wdXQuIEluaSBtYm5hcmtuIGFwbCBkamxua24gcGQgcHJhbnRpIGFuZGEuIjwvc3RyaW5nPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNldHVwX3N0ZXAxX2ZpbmlzaGVkX2luc3RydWN0aW9uICgxMDc2MTQ4MjAwNDk1Nzk5NCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAxX2FjdGlvbiIgbXNnaWQ9IjQzNjY1MTM1MzQ5OTk5MDE3MjgiPiJEYXlha2FuIGRhbGFtIFRldGFwYW4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMl90aXRsZSIgbXNnaWQ9IjY4NjA3MjU0NDc5MDY2OTA1OTQiPiJCZXJhbGloIGtlIDx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMl9pbnN0cnVjdGlvbiIgbXNnaWQ9IjkxNDE0ODE5NjQ4NzAwMjMzMzYiPiJTZXRlcnVzbnlhLCBwaWxpaCBcIjx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz5cIiBzZWJhZ2FpIGthZWRhaCBpbnB1dCB0ZWtzIGFrdGlmIGFuZGEuIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDJfYWN0aW9uIiBtc2dpZD0iMTY2MDMzMDMwNzE1OTgyNDMzNyI+IlR1a2FyIGthZWRhaCBpbnB1dCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAzX3RpdGxlIiBtc2dpZD0iMzE1NDc1NzE4MzYzMTQ5MDI4MSI+IlRhaG5pYWgsIGFuZGEgc3VkYWggc2VkaWEhIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDNfaW5zdHJ1Y3Rpb24iIG1zZ2lkPSI4MDI1OTgxODI5NjA1NDI2MDAwIj4iS2luaSBhbmRhIGJvbGVoIG1lbmFpcCBkYWxhbSBzZW11YSBhcGwga2VnZW1hcmFuIGFuZGEgZGVuZ2FuIDx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz4uIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDNfYWN0aW9uIiBtc2dpZD0iNjAwODc5Nzk3MjU2OTQyMjU5Ij4iS29uZmlndXJhc2lrYW4gYmFoYXNhIHRhbWJhaGFuIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfZmluaXNoX2FjdGlvbiIgbXNnaWQ9IjI3NjU1OTI0MzQwOTQ2NTM4OSI+IlNlbGVzYWkiPC9zdHJpbmc+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc2hvd19zZXR1cF93aXphcmRfaWNvbiAoNTAwODAyODU5MDU5MzcxMDgzMCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzaG93X3NldHVwX3dpemFyZF9pY29uX3N1bW1hcnkgKDQxMTk5OTgzMjI1MzY4ODAyMTMpIC0tPgorICAgIDxza2lwIC8+CiAgICAgPHN0cmluZyBuYW1lPSJhcHBfbmFtZSIgbXNnaWQ9IjYzMjAxMDI2Mzc0OTEyMzQ3OTIiPiJQZW1iZWthbCBLYW11cyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRpY3Rpb25hcnlfcHJvdmlkZXJfbmFtZSIgbXNnaWQ9IjMwMjczMTUwNDUzOTczNjMwNzkiPiJQZW1iZWthbCBLYW11cyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRpY3Rpb25hcnlfc2VydmljZV9uYW1lIiBtc2dpZD0iNjIzNzQ3MjM1MDY5MzUxMTQ0OCI+IlBlcmtoaWRtYXRhbiBLYW11cyI8L3N0cmluZz4KQEAgLTIwMyw0ICsyMjQsNiBAQAogICAgIDxzdHJpbmcgbmFtZT0iZGljdF9hdmFpbGFibGVfbm90aWZpY2F0aW9uX3RpdGxlIiBtc2dpZD0iNjUxNDI4ODU5MTk1OTExNzI4OCI+IkthbXVzIHRlcnNlZGlhIHVudHVrIDx4bGlmZjpnIGlkPSJMQU5HVUFHRSI+JTEkczwveGxpZmY6Zz4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkaWN0X2F2YWlsYWJsZV9ub3RpZmljYXRpb25fZGVzY3JpcHRpb24iIG1zZ2lkPSIxMDc1MTk0MTY5NDQzMTYzNDg3Ij4iVGVrYW4gdW50dWsgbWVuZ3VsYXMgZGFuIG1lbXVhdCB0dXJ1biI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InRvYXN0X2Rvd25sb2FkaW5nX3N1Z2dlc3Rpb25zIiBtc2dpZD0iMTMxMzAyNzM1MzU4ODU2NjY2MCI+Ik1lbXVhdCB0dXJ1bjogY2FkYW5nYW4gdW50dWsgPHhsaWZmOmcgaWQ9IkxBTkdVQUdFIj4lMSRzPC94bGlmZjpnPiBha2FuIHNlZGlhIHRpZGFrIGxhbWEgbGFnaS4iPC9zdHJpbmc+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgdmVyc2lvbl90ZXh0ICgyNzE1MzU0MjE1NTY4NDY5Mzg1KSAtLT4KKyAgICA8c2tpcCAvPgogPC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9qYXZhL3Jlcy92YWx1ZXMtbmIvc3RyaW5ncy54bWwgYi9qYXZhL3Jlcy92YWx1ZXMtbmIvc3RyaW5ncy54bWwKaW5kZXggY2FhOThjYy4uY2RlMWFkMSAxMDA2NDQKLS0tIGEvamF2YS9yZXMvdmFsdWVzLW5iL3N0cmluZ3MueG1sCisrKyBiL2phdmEvcmVzL3ZhbHVlcy1uYi9zdHJpbmdzLnhtbApAQCAtNTMsNiArNTMsOCBAQAogICAgIDxzdHJpbmcgbmFtZT0idXNlX2RvdWJsZV9zcGFjZV9wZXJpb2Rfc3VtbWFyeSIgbXNnaWQ9IjY1MzI4OTIxODcyNDc5NTI3OTkiPiJEb2JiZWx0cnlrayBww6UgbWVsbG9tcm9tc3Rhc3RlbiBmb3IgcHVua3R1bSBldHRlcmZ1bGd0IGF2IG1lbGxvbXJvbSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImF1dG9fY2FwIiBtc2dpZD0iMTcxOTc0NjY3NDg1NDYyODI1MiI+IlN0b3IgZm9yYm9rc3RhdiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImF1dG9fY2FwX3N1bW1hcnkiIG1zZ2lkPSI3OTM0NDUyNzYxMDIyOTQ2ODc0Ij4iU2V0dCBzdG9yIGJva3N0YXYgaSBkZXQgZsO4cnN0ZSBvcmRldCBpIGh2ZXIgc2V0bmluZyI8L3N0cmluZz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBlZGl0X3BlcnNvbmFsX2RpY3Rpb25hcnkgKDM5OTY5MTAwMzg5NTI5NDA0MjApIC0tPgorICAgIDxza2lwIC8+CiAgICAgPHN0cmluZyBuYW1lPSJjb25maWd1cmVfZGljdGlvbmFyaWVzX3RpdGxlIiBtc2dpZD0iNDIzODY1MjMzODU1NjkwMjA0OSI+IlRpbGxlZ2dzb3JkYsO4a2VyIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ibWFpbl9kaWN0aW9uYXJ5IiBtc2dpZD0iNDc5ODc2Mzc4MTgxODM2MTE2OCI+IkhvdmVkb3JkbGlzdGUiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwcmVmc19zaG93X3N1Z2dlc3Rpb25zIiBtc2dpZD0iODAyNjc5OTY2MzQ0NTUzMTYzNyI+IlZpcyByZXR0aW5nc2ZvcnNsYWciPC9zdHJpbmc+CkBAIC0xNzEsOCArMTczLDI3IEBACiAgICAgPHN0cmluZyBuYW1lPSJyZWFkX2V4dGVybmFsX2RpY3Rpb25hcnlfY29uZmlybV9pbnN0YWxsX21lc3NhZ2UiIG1zZ2lkPSI2ODk4NjEwMTYzNzY4OTgwODcwIj4iVmlsIGR1IHZpcmtlbGlnIGluc3RhbGxlcmUgZGVubmUgZmlsZW4gZm9yIDx4bGlmZjpnIGlkPSJMT0NBTEVfTkFNRSI+JXM8L3hsaWZmOmc+PyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImVycm9yIiBtc2dpZD0iODk0MDc2MzYyNDY2ODUxMzY0OCI+IkRldCBvcHBzdG8gZW4gZmVpbCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJ1dHRvbl9kZWZhdWx0IiBtc2dpZD0iMzk4ODAxNzg0MDQzMTg4MTQ5MSI+IlN0YW5kYXJkIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibGFuZ3VhZ2Vfc2V0dGluZ3MiIG1zZ2lkPSIxNjcxMTUzMDUzMjAxODA5MDMxIj4iU3Byw6VrIG9nIGlubmRhdGEiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJzZWxlY3RfaW5wdXRfbWV0aG9kIiBtc2dpZD0iNDMwMTYwMjM3NDYwOTI3NTAwMyI+IlZlbGcgaW5uZGF0YW1ldG9kZSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3dlbGNvbWVfdGl0bGUiIG1zZ2lkPSI2MTEyODIxNzA5ODMyMDMxNzE1Ij4iVmVsa29tbWVuIHRpbCA8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfd2VsY29tZV9hZGRpdGlvbmFsX2Rlc2NyaXB0aW9uIiBtc2dpZD0iODE1MDI1MjAwODU0NTc2ODk1MyI+Im1lZCBPcmRmw7hyaW5nIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RhcnRfYWN0aW9uIiBtc2dpZD0iODkzNjAzNjQ2MDg5NzM0NzcwOCI+IlN0YXJ0dmVpbGVkbmluZyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX25leHRfYWN0aW9uIiBtc2dpZD0iMzcxODIxNDM3OTE1MTQ0NjAzIj4iTmVzdGUgdHJpbm4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwc190aXRsZSIgbXNnaWQ9IjY0MDAzNzMwMzQ4NzE4MTYxODIiPiJLb25maWd1cmVyZXIgPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAxX3RpdGxlIiBtc2dpZD0iMzE0Nzk2NzYzMDI1MzQ2MjMxNSI+IkFrdGl2ZXIgPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAxX2luc3RydWN0aW9uIiBtc2dpZD0iMjU3ODYzMTkzNjYyNDYzNzI0MSI+IlNqZWtrIDx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz4gaSBTcHLDpWsgb2cgaW5uZGF0YS1pbm5zdGlsbGluZ2VuZSBkaW5lLiBEZXR0ZSB0aWxsYXRlciBhcHBlbiDDpSBrasO4cmUgcMOlIGVuaGV0ZW4uIjwvc3RyaW5nPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNldHVwX3N0ZXAxX2ZpbmlzaGVkX2luc3RydWN0aW9uICgxMDc2MTQ4MjAwNDk1Nzk5NCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAxX2FjdGlvbiIgbXNnaWQ9IjQzNjY1MTM1MzQ5OTk5MDE3MjgiPiJBa3RpdmVyIGkgSW5uc3RpbGxpbmdlciI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAyX3RpdGxlIiBtc2dpZD0iNjg2MDcyNTQ0NzkwNjY5MDU5NCI+IkJ5dHQgdGlsIDx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMl9pbnN0cnVjdGlvbiIgbXNnaWQ9IjkxNDE0ODE5NjQ4NzAwMjMzMzYiPiJEZXJldHRlciB2ZWxnZXIgZHUgIMKrPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPsK7IHNvbSBkZW4gYWt0aXZlIGlubmRhdGFtZXRvZGVuIGZvciB0ZWtzdC4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMl9hY3Rpb24iIG1zZ2lkPSIxNjYwMzMwMzA3MTU5ODI0MzM3Ij4iQnl0dCBpbm5kYXRhbWV0b2RlIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDNfdGl0bGUiIG1zZ2lkPSIzMTU0NzU3MTgzNjMxNDkwMjgxIj4iR3JhdHVsZXJlciwgZHUgZXIga2xhciEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwM19pbnN0cnVjdGlvbiIgbXNnaWQ9IjgwMjU5ODE4Mjk2MDU0MjYwMDAiPiJOw6Uga2FuIGR1IHNrcml2ZSBpbm4gYWxsZSBmYXZvcml0dGFwcGVuZSBkaW5lIG1lZCA8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+LiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAzX2FjdGlvbiIgbXNnaWQ9IjYwMDg3OTc5NzI1Njk0MjI1OSI+IktvbmZpZ3VyZXIgZmxlcmUgc3Byw6VrIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfZmluaXNoX2FjdGlvbiIgbXNnaWQ9IjI3NjU1OTI0MzQwOTQ2NTM4OSI+IkZ1bGxmw7hydCI8L3N0cmluZz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzaG93X3NldHVwX3dpemFyZF9pY29uICg1MDA4MDI4NTkwNTkzNzEwODMwKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNob3dfc2V0dXBfd2l6YXJkX2ljb25fc3VtbWFyeSAoNDExOTk5ODMyMjUzNjg4MDIxMykgLS0+CisgICAgPHNraXAgLz4KICAgICA8c3RyaW5nIG5hbWU9ImFwcF9uYW1lIiBtc2dpZD0iNjMyMDEwMjYzNzQ5MTIzNDc5MiI+Ik9yZGxpc3RlbGV2ZXJhbmTDuHIiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkaWN0aW9uYXJ5X3Byb3ZpZGVyX25hbWUiIG1zZ2lkPSIzMDI3MzE1MDQ1Mzk3MzYzMDc5Ij4iT3JkbGlzdGVsZXZlcmFuZMO4ciI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRpY3Rpb25hcnlfc2VydmljZV9uYW1lIiBtc2dpZD0iNjIzNzQ3MjM1MDY5MzUxMTQ0OCI+Ik9yZGxpc3RldGplbmVzdGUiPC9zdHJpbmc+CkBAIC0yMDMsNCArMjI0LDYgQEAKICAgICA8c3RyaW5nIG5hbWU9ImRpY3RfYXZhaWxhYmxlX25vdGlmaWNhdGlvbl90aXRsZSIgbXNnaWQ9IjY1MTQyODg1OTE5NTkxMTcyODgiPiJFbiBvcmRsaXN0ZSBlciB0aWxnamVuZ2VsaWcgZm9yIDx4bGlmZjpnIGlkPSJMQU5HVUFHRSI+JTEkczwveGxpZmY6Zz4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkaWN0X2F2YWlsYWJsZV9ub3RpZmljYXRpb25fZGVzY3JpcHRpb24iIG1zZ2lkPSIxMDc1MTk0MTY5NDQzMTYzNDg3Ij4iVHJ5a2sgZm9yIMOlIHNlIGdqZW5ub20gb2cgbGFzdGUgbmVkIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idG9hc3RfZG93bmxvYWRpbmdfc3VnZ2VzdGlvbnMiIG1zZ2lkPSIxMzEzMDI3MzUzNTg4NTY2NjYwIj4iTGFzdGVyIG5lZDogZm9yc2xhZyBibGlyIHNuYXJ0IHRpbGdqZW5nZWxpZ2UgZm9yIDx4bGlmZjpnIGlkPSJMQU5HVUFHRSI+JTEkczwveGxpZmY6Zz4uIjwvc3RyaW5nPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHZlcnNpb25fdGV4dCAoMjcxNTM1NDIxNTU2ODQ2OTM4NSkgLS0+CisgICAgPHNraXAgLz4KIDwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvamF2YS9yZXMvdmFsdWVzLW5sL3N0cmluZ3MueG1sIGIvamF2YS9yZXMvdmFsdWVzLW5sL3N0cmluZ3MueG1sCmluZGV4IDU0ODA0MzAuLjcxMzUxNWUgMTAwNjQ0Ci0tLSBhL2phdmEvcmVzL3ZhbHVlcy1ubC9zdHJpbmdzLnhtbAorKysgYi9qYXZhL3Jlcy92YWx1ZXMtbmwvc3RyaW5ncy54bWwKQEAgLTUzLDYgKzUzLDggQEAKICAgICA8c3RyaW5nIG5hbWU9InVzZV9kb3VibGVfc3BhY2VfcGVyaW9kX3N1bW1hcnkiIG1zZ2lkPSI2NTMyODkyMTg3MjQ3OTUyNzk5Ij4iRHViYmVsdGlrIG9wIHNwYXRpZWJhbGsgdm9vciBlZW4gcHVudCBnZXZvbGdkIGRvb3IgZWVuIHNwYXRpZSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImF1dG9fY2FwIiBtc2dpZD0iMTcxOTc0NjY3NDg1NDYyODI1MiI+IkF1dG8taG9vZmRsZXR0ZXJnZWJydWlrIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYXV0b19jYXBfc3VtbWFyeSIgbXNnaWQ9Ijc5MzQ0NTI3NjEwMjI5NDY4NzQiPiJIZXQgZWVyc3RlIHdvb3JkIHZhbiBlbGtlIHppbiBtZXQgZWVuIGhvb2ZkbGV0dGVyIHNjaHJpanZlbiI8L3N0cmluZz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBlZGl0X3BlcnNvbmFsX2RpY3Rpb25hcnkgKDM5OTY5MTAwMzg5NTI5NDA0MjApIC0tPgorICAgIDxza2lwIC8+CiAgICAgPHN0cmluZyBuYW1lPSJjb25maWd1cmVfZGljdGlvbmFyaWVzX3RpdGxlIiBtc2dpZD0iNDIzODY1MjMzODU1NjkwMjA0OSI+Ildvb3JkZW5ib2VrZW4gdG9ldm9lZ2VuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ibWFpbl9kaWN0aW9uYXJ5IiBtc2dpZD0iNDc5ODc2Mzc4MTgxODM2MTE2OCI+IkFsZ2VtZWVuIHdvb3JkZW5ib2VrIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icHJlZnNfc2hvd19zdWdnZXN0aW9ucyIgbXNnaWQ9IjgwMjY3OTk2NjM0NDU1MzE2MzciPiJDb3JyZWN0aWV2b29yc3RlbGxlbiB3ZWVyZ2V2ZW4iPC9zdHJpbmc+CkBAIC0xNzEsOCArMTczLDI3IEBACiAgICAgPHN0cmluZyBuYW1lPSJyZWFkX2V4dGVybmFsX2RpY3Rpb25hcnlfY29uZmlybV9pbnN0YWxsX21lc3NhZ2UiIG1zZ2lkPSI2ODk4NjEwMTYzNzY4OTgwODcwIj4iV2lsdCB1IGRpdCBiZXN0YW5kIHZvb3IgPHhsaWZmOmcgaWQ9IkxPQ0FMRV9OQU1FIj4lczwveGxpZmY6Zz4gZWNodCBpbnN0YWxsZXJlbj8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJlcnJvciIgbXNnaWQ9Ijg5NDA3NjM2MjQ2Njg1MTM2NDgiPiJFciBpcyBlZW4gZm91dCBvcGdldHJlZGVuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYnV0dG9uX2RlZmF1bHQiIG1zZ2lkPSIzOTg4MDE3ODQwNDMxODgxNDkxIj4iU3RhbmRhYXJkIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibGFuZ3VhZ2Vfc2V0dGluZ3MiIG1zZ2lkPSIxNjcxMTUzMDUzMjAxODA5MDMxIj4iVGFhbCBlbiBpbnZvZXIiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJzZWxlY3RfaW5wdXRfbWV0aG9kIiBtc2dpZD0iNDMwMTYwMjM3NDYwOTI3NTAwMyI+Ikludm9lcm1ldGhvZGUgc2VsZWN0ZXJlbiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3dlbGNvbWVfdGl0bGUiIG1zZ2lkPSI2MTEyODIxNzA5ODMyMDMxNzE1Ij4iV2Vsa29tIGJpaiA8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfd2VsY29tZV9hZGRpdGlvbmFsX2Rlc2NyaXB0aW9uIiBtc2dpZD0iODE1MDI1MjAwODU0NTc2ODk1MyI+Im1ldCBJbnZvZXIgbWV0IGJld2VnaW5nZW4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGFydF9hY3Rpb24iIG1zZ2lkPSI4OTM2MDM2NDYwODk3MzQ3NzA4Ij4iQWFuIGRlIHNsYWciPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9uZXh0X2FjdGlvbiIgbXNnaWQ9IjM3MTgyMTQzNzkxNTE0NDYwMyI+IlZvbGdlbmRlIHN0YXAiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwc190aXRsZSIgbXNnaWQ9IjY0MDAzNzMwMzQ4NzE4MTYxODIiPiI8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+IGluc3RlbGxlbiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAxX3RpdGxlIiBtc2dpZD0iMzE0Nzk2NzYzMDI1MzQ2MjMxNSI+Ijx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz4gaW5zY2hha2VsZW4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMV9pbnN0cnVjdGlvbiIgbXNnaWQ9IjI1Nzg2MzE5MzY2MjQ2MzcyNDEiPiJWaW5rIFwnPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPlwnIGFhbiBpbiBcJ0luc3RlbGxpbmdlbiB2b29yIHRhYWwgZW4gaW52b2VyXCcuIERlIGFwcCBrYW4gZGFuIHdvcmRlbiB1aXRnZXZvZXJkIG9wIHV3IGFwcGFyYWF0LiI8L3N0cmluZz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzZXR1cF9zdGVwMV9maW5pc2hlZF9pbnN0cnVjdGlvbiAoMTA3NjE0ODIwMDQ5NTc5OTQpIC0tPgorICAgIDxza2lwIC8+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMV9hY3Rpb24iIG1zZ2lkPSI0MzY2NTEzNTM0OTk5OTAxNzI4Ij4iSW5zY2hha2VsZW4gaW4gXCdJbnN0ZWxsaW5nZW5cJyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAyX3RpdGxlIiBtc2dpZD0iNjg2MDcyNTQ0NzkwNjY5MDU5NCI+Ik92ZXJzY2hha2VsZW4gbmFhciA8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDJfaW5zdHJ1Y3Rpb24iIG1zZ2lkPSI5MTQxNDgxOTY0ODcwMDIzMzM2Ij4iU2VsZWN0ZWVyIHZlcnZvbGdlbnMgXCc8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+XCcgYWxzIGFjdGlldmUgdGVrc3RpbnZvZXJtZXRob2RlLiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAyX2FjdGlvbiIgbXNnaWQ9IjE2NjAzMzAzMDcxNTk4MjQzMzciPiJTY2hha2VsZW4gdHVzc2VuIGludm9lcm1ldGhvZGVuIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDNfdGl0bGUiIG1zZ2lkPSIzMTU0NzU3MTgzNjMxNDkwMjgxIj4iR2VmZWxpY2l0ZWVyZCwgdSBrdW50IG51IGFhbiBkZSBzbGFnLiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAzX2luc3RydWN0aW9uIiBtc2dpZD0iODAyNTk4MTgyOTYwNTQyNjAwMCI+IlUga3VudCBudSBpbiBhbCB1dyBmYXZvcmlldGUgYXBwcyB0eXBlbiBtZXQgPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPi4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwM19hY3Rpb24iIG1zZ2lkPSI2MDA4Nzk3OTcyNTY5NDIyNTkiPiJFeHRyYSB0YWxlbiBjb25maWd1cmVyZW4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9maW5pc2hfYWN0aW9uIiBtc2dpZD0iMjc2NTU5MjQzNDA5NDY1Mzg5Ij4iVm9sdG9vaWQiPC9zdHJpbmc+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc2hvd19zZXR1cF93aXphcmRfaWNvbiAoNTAwODAyODU5MDU5MzcxMDgzMCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzaG93X3NldHVwX3dpemFyZF9pY29uX3N1bW1hcnkgKDQxMTk5OTgzMjI1MzY4ODAyMTMpIC0tPgorICAgIDxza2lwIC8+CiAgICAgPHN0cmluZyBuYW1lPSJhcHBfbmFtZSIgbXNnaWQ9IjYzMjAxMDI2Mzc0OTEyMzQ3OTIiPiJXb29yZGVuYm9la2xldmVyYW5jaWVyIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGljdGlvbmFyeV9wcm92aWRlcl9uYW1lIiBtc2dpZD0iMzAyNzMxNTA0NTM5NzM2MzA3OSI+Ildvb3JkZW5ib2VrbGV2ZXJhbmNpZXIiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkaWN0aW9uYXJ5X3NlcnZpY2VfbmFtZSIgbXNnaWQ9IjYyMzc0NzIzNTA2OTM1MTE0NDgiPiJXb29yZGVuYm9la3NlcnZpY2UiPC9zdHJpbmc+CkBAIC0yMDMsNCArMjI0LDYgQEAKICAgICA8c3RyaW5nIG5hbWU9ImRpY3RfYXZhaWxhYmxlX25vdGlmaWNhdGlvbl90aXRsZSIgbXNnaWQ9IjY1MTQyODg1OTE5NTkxMTcyODgiPiJFciBpcyBlZW4gd29vcmRlbmJvZWsgYmVzY2hpa2JhYXIgdm9vciBoZXQgPHhsaWZmOmcgaWQ9IkxBTkdVQUdFIj4lMSRzPC94bGlmZjpnPiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRpY3RfYXZhaWxhYmxlX25vdGlmaWNhdGlvbl9kZXNjcmlwdGlvbiIgbXNnaWQ9IjEwNzUxOTQxNjk0NDMxNjM0ODciPiJEcnVrIG9tIHRlIGNvbnRyb2xlcmVuIGVuIHRlIGRvd25sb2FkZW4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ0b2FzdF9kb3dubG9hZGluZ19zdWdnZXN0aW9ucyIgbXNnaWQ9IjEzMTMwMjczNTM1ODg1NjY2NjAiPiJEb3dubG9hZGVuOiBzdWdnZXN0aWVzIHZvb3IgaGV0IDx4bGlmZjpnIGlkPSJMQU5HVUFHRSI+JTEkczwveGxpZmY6Zz4gemlqbiBzdHJha3MgYmVzY2hpa2JhYXIuIjwvc3RyaW5nPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHZlcnNpb25fdGV4dCAoMjcxNTM1NDIxNTU2ODQ2OTM4NSkgLS0+CisgICAgPHNraXAgLz4KIDwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvamF2YS9yZXMvdmFsdWVzLXBsL3N0cmluZ3MueG1sIGIvamF2YS9yZXMvdmFsdWVzLXBsL3N0cmluZ3MueG1sCmluZGV4IGY5NzFlMjguLjI3NDNhNTIgMTAwNjQ0Ci0tLSBhL2phdmEvcmVzL3ZhbHVlcy1wbC9zdHJpbmdzLnhtbAorKysgYi9qYXZhL3Jlcy92YWx1ZXMtcGwvc3RyaW5ncy54bWwKQEAgLTUzLDYgKzUzLDggQEAKICAgICA8c3RyaW5nIG5hbWU9InVzZV9kb3VibGVfc3BhY2VfcGVyaW9kX3N1bW1hcnkiIG1zZ2lkPSI2NTMyODkyMTg3MjQ3OTUyNzk5Ij4iRHd1a3JvdG5lIGtsaWtuacSZY2llIHNwYWNqaSB3c3Rhd2lhIGtyb3BrxJkgemUgc3BhY2rEhSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImF1dG9fY2FwIiBtc2dpZD0iMTcxOTc0NjY3NDg1NDYyODI1MiI+IldzdGF3aWFqIHdpZWxraWUgbGl0ZXJ5Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYXV0b19jYXBfc3VtbWFyeSIgbXNnaWQ9Ijc5MzQ0NTI3NjEwMjI5NDY4NzQiPiJaYWN6eW5haiBrYcW8ZGUgemRhbmllIHdpZWxrxIUgbGl0ZXLEhSI8L3N0cmluZz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBlZGl0X3BlcnNvbmFsX2RpY3Rpb25hcnkgKDM5OTY5MTAwMzg5NTI5NDA0MjApIC0tPgorICAgIDxza2lwIC8+CiAgICAgPHN0cmluZyBuYW1lPSJjb25maWd1cmVfZGljdGlvbmFyaWVzX3RpdGxlIiBtc2dpZD0iNDIzODY1MjMzODU1NjkwMjA0OSI+IkRvZGF0a293ZSBzxYJvd25pa2kiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJtYWluX2RpY3Rpb25hcnkiIG1zZ2lkPSI0Nzk4NzYzNzgxODE4MzYxMTY4Ij4iU8WCb3duaWsgZ8WCw7N3bnkiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwcmVmc19zaG93X3N1Z2dlc3Rpb25zIiBtc2dpZD0iODAyNjc5OTY2MzQ0NTUzMTYzNyI+IlBva2F6dWogcHJvcG96eWNqZSBwb3ByYXdlayI8L3N0cmluZz4KQEAgLTE3MSw4ICsxNzMsMjcgQEAKICAgICA8c3RyaW5nIG5hbWU9InJlYWRfZXh0ZXJuYWxfZGljdGlvbmFyeV9jb25maXJtX2luc3RhbGxfbWVzc2FnZSIgbXNnaWQ9IjY4OTg2MTAxNjM3Njg5ODA4NzAiPiJDenkgbmEgcGV3bm8gemFpbnN0YWxvd2HEhyB0ZW4gcGxpayBkbGEgasSZenlrYTogPHhsaWZmOmcgaWQ9IkxPQ0FMRV9OQU1FIj4lczwveGxpZmY6Zz4/Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZXJyb3IiIG1zZ2lkPSI4OTQwNzYzNjI0NjY4NTEzNjQ4Ij4iV3lzdMSFcGnFgiBixYLEhWQiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJidXR0b25fZGVmYXVsdCIgbXNnaWQ9IjM5ODgwMTc4NDA0MzE4ODE0OTEiPiJEb215xZtsbmUiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJsYW5ndWFnZV9zZXR0aW5ncyIgbXNnaWQ9IjE2NzExNTMwNTMyMDE4MDkwMzEiPiJKxJl6eWssIGtsYXdpYXR1cmEsIGfFgm9zIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ic2VsZWN0X2lucHV0X21ldGhvZCIgbXNnaWQ9IjQzMDE2MDIzNzQ2MDkyNzUwMDMiPiJXeWJpZXJ6IG1ldG9kxJkgd3Byb3dhZHphbmlhIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfd2VsY29tZV90aXRsZSIgbXNnaWQ9IjYxMTI4MjE3MDk4MzIwMzE3MTUiPiJXaXRhbXkgdyBhcGxpa2FjamkgPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3dlbGNvbWVfYWRkaXRpb25hbF9kZXNjcmlwdGlvbiIgbXNnaWQ9IjgxNTAyNTIwMDg1NDU3Njg5NTMiPiJ6IHBpc2FuaWVtIGdlc3RhbWkiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGFydF9hY3Rpb24iIG1zZ2lkPSI4OTM2MDM2NDYwODk3MzQ3NzA4Ij4iUm96cG9jem5paiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX25leHRfYWN0aW9uIiBtc2dpZD0iMzcxODIxNDM3OTE1MTQ0NjAzIj4iTmFzdMSZcG55IGtyb2siPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwc190aXRsZSIgbXNnaWQ9IjY0MDAzNzMwMzQ4NzE4MTYxODIiPiJLb25maWd1cm93YW5pZSBhcGxpa2FjamkgPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAxX3RpdGxlIiBtc2dpZD0iMzE0Nzk2NzYzMDI1MzQ2MjMxNSI+IlfFgsSFY3ogYXBsaWthY2rEmSA8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDFfaW5zdHJ1Y3Rpb24iIG1zZ2lkPSIyNTc4NjMxOTM2NjI0NjM3MjQxIj4iWmF6bmFjeiBhcGxpa2FjasSZIOKAnjx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz7igJ0gdyB1c3Rhd2llbmlhY2ggSsSZenlrLCBrbGF3aWF0dXJhIGkgZ8WCb3MuIFVtb8W8bGl3aSB0byBqZWogdXJ1Y2hhbWlhbmllIG5hIHVyesSFZHplbml1LiI8L3N0cmluZz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzZXR1cF9zdGVwMV9maW5pc2hlZF9pbnN0cnVjdGlvbiAoMTA3NjE0ODIwMDQ5NTc5OTQpIC0tPgorICAgIDxza2lwIC8+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMV9hY3Rpb24iIG1zZ2lkPSI0MzY2NTEzNTM0OTk5OTAxNzI4Ij4iV8WCxIVjeiB3IFVzdGF3aWVuaWFjaCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAyX3RpdGxlIiBtc2dpZD0iNjg2MDcyNTQ0NzkwNjY5MDU5NCI+IlByemXFgsSFY3ogc2nEmSBuYSBhcGxpa2FjasSZIDx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMl9pbnN0cnVjdGlvbiIgbXNnaWQ9IjkxNDE0ODE5NjQ4NzAwMjMzMzYiPiJOYXN0xJlwbmllIHd5Ymllcnog4oCePHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPuKAnSBqYWtvIGFrdHl3bsSFIG1ldG9kxJkgd3Byb3dhZHphbmlhIHRla3N0dS4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMl9hY3Rpb24iIG1zZ2lkPSIxNjYwMzMwMzA3MTU5ODI0MzM3Ij4iUHJ6ZcWCxIVjeiBtZXRvZHkgd3Byb3dhZHphbmlhIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDNfdGl0bGUiIG1zZ2lkPSIzMTU0NzU3MTgzNjMxNDkwMjgxIj4iR3JhdHVsYWNqZSEgV3N6eXN0a28gZ290b3dlLiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAzX2luc3RydWN0aW9uIiBtc2dpZD0iODAyNTk4MTgyOTYwNTQyNjAwMCI+IlRlcmF6IG1vxbxlc3ogcGlzYcSHIHdlIHdzenlzdGtpY2ggc3dvaWNoIHVsdWJpb255Y2ggYXBsaWthY2phY2gsIHXFvHl3YWrEhWMgYXBsaWthY2ppIDx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz4uIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDNfYWN0aW9uIiBtc2dpZD0iNjAwODc5Nzk3MjU2OTQyMjU5Ij4iU2tvbmZpZ3VydWogZG9kYXRrb3dlIGrEmXp5a2kiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9maW5pc2hfYWN0aW9uIiBtc2dpZD0iMjc2NTU5MjQzNDA5NDY1Mzg5Ij4iWmFrb8WEY3pvbmUiPC9zdHJpbmc+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc2hvd19zZXR1cF93aXphcmRfaWNvbiAoNTAwODAyODU5MDU5MzcxMDgzMCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzaG93X3NldHVwX3dpemFyZF9pY29uX3N1bW1hcnkgKDQxMTk5OTgzMjI1MzY4ODAyMTMpIC0tPgorICAgIDxza2lwIC8+CiAgICAgPHN0cmluZyBuYW1lPSJhcHBfbmFtZSIgbXNnaWQ9IjYzMjAxMDI2Mzc0OTEyMzQ3OTIiPiJEb3N0YXdjYSBzxYJvd25pa2EiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkaWN0aW9uYXJ5X3Byb3ZpZGVyX25hbWUiIG1zZ2lkPSIzMDI3MzE1MDQ1Mzk3MzYzMDc5Ij4iRG9zdGF3Y2Egc8WCb3duaWthIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGljdGlvbmFyeV9zZXJ2aWNlX25hbWUiIG1zZ2lkPSI2MjM3NDcyMzUwNjkzNTExNDQ4Ij4iVXPFgnVnYSBzxYJvd25pa2EiPC9zdHJpbmc+CkBAIC0yMDMsNCArMjI0LDYgQEAKICAgICA8c3RyaW5nIG5hbWU9ImRpY3RfYXZhaWxhYmxlX25vdGlmaWNhdGlvbl90aXRsZSIgbXNnaWQ9IjY1MTQyODg1OTE5NTkxMTcyODgiPiJEb3N0xJlwbnkgamVzdCBzxYJvd25payA8eGxpZmY6ZyBpZD0iTEFOR1VBR0UiPiUxJHM8L3hsaWZmOmc+Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGljdF9hdmFpbGFibGVfbm90aWZpY2F0aW9uX2Rlc2NyaXB0aW9uIiBtc2dpZD0iMTA3NTE5NDE2OTQ0MzE2MzQ4NyI+Ik5hY2nFm25paiwgYnkgc3ByYXdkemnEhyBpIHBvYnJhxIciPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ0b2FzdF9kb3dubG9hZGluZ19zdWdnZXN0aW9ucyIgbXNnaWQ9IjEzMTMwMjczNTM1ODg1NjY2NjAiPiJQb2JpZXJhbmllIOKAkyB3a3LDs3RjZSBixJlkxIUgZG9zdMSZcG5lIHN1Z2VzdGllIHcgdHltIGrEmXp5a3U6IDx4bGlmZjpnIGlkPSJMQU5HVUFHRSI+JTEkczwveGxpZmY6Zz4uIjwvc3RyaW5nPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHZlcnNpb25fdGV4dCAoMjcxNTM1NDIxNTU2ODQ2OTM4NSkgLS0+CisgICAgPHNraXAgLz4KIDwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvamF2YS9yZXMvdmFsdWVzLXBvcnQvc2V0dXAtZGltZW5zLXNtYWxsLXBob25lLXBvcnQueG1sIGIvamF2YS9yZXMvdmFsdWVzLXBvcnQvc2V0dXAtZGltZW5zLXNtYWxsLXBob25lLXBvcnQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM0ZjRkOTIKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL3Jlcy92YWx1ZXMtcG9ydC9zZXR1cC1kaW1lbnMtc21hbGwtcGhvbmUtcG9ydC54bWwKQEAgLTAsMCArMSw0MCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzwhLS0gQ29weXJpZ2h0IChDKSAyMDEzIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKworICAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAgICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKworICAgICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorCisgICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAgICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAgICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAgICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCistLT4KKworPHJlc291cmNlcyB4bWxuczphbmRyb2lkPSJodHRwOi8vc2NoZW1hcy5hbmRyb2lkLmNvbS9hcGsvcmVzL2FuZHJvaWQiPgorICAgIDwhLS0gU2V0dXAgd2l6YXJkIGRpbWVuc2lvbnMgZm9yIHNtYWxsLXBob25lL3BvcnRyYWl0LiAtLT4KKyAgICA8ZGltZW4gbmFtZT0ic2V0dXBfdGl0bGVfdGV4dF9zaXplIj40MHNwPC9kaW1lbj4KKyAgICA8ZGltZW4gbmFtZT0ic2V0dXBfd2VsY29tZV9kZXNjcmlwdGlvbl90ZXh0X3NpemUiPjIwc3A8L2RpbWVuPgorICAgIDxkaW1lbiBuYW1lPSJzZXR1cF9zdGVwX2J1bGxldF90ZXh0X3NpemUiPjE4c3A8L2RpbWVuPgorICAgIDxkaW1lbiBuYW1lPSJzZXR1cF9zdGVwX3RyaWFuZ2xlX2luZGljYXRvcl9oZWlnaHQiPjE4ZHA8L2RpbWVuPgorICAgIDxkaW1lbiBuYW1lPSJzZXR1cF9zdGVwX2luZGljYXRvcl9oZWlnaHQiPjE4ZHA8L2RpbWVuPgorICAgIDxkaW1lbiBuYW1lPSJzZXR1cF9zdGVwX3RpdGxlX3RleHRfc2l6ZSI+MThzcDwvZGltZW4+CisgICAgPGRpbWVuIG5hbWU9InNldHVwX3N0ZXBfaW5zdHJ1Y3Rpb25fdGV4dF9zaXplIj4xNHNwPC9kaW1lbj4KKyAgICA8ZGltZW4gbmFtZT0ic2V0dXBfc3RlcF9hY3Rpb25fdGV4dF9zaXplIj4xNnNwPC9kaW1lbj4KKyAgICA8ZGltZW4gbmFtZT0ic2V0dXBfdmVydGljYWxfcGFkZGluZyI+MTJkcDwvZGltZW4+CisgICAgPGRpbWVuIG5hbWU9InNldHVwX2hvcml6b250YWxfcGFkZGluZyI+MTJkcDwvZGltZW4+CisgICAgPGRpbWVuIG5hbWU9InNldHVwX3N0ZXBfYWN0aW9uX2hlaWdodCI+NDJkcDwvZGltZW4+CisgICAgPGRpbWVuIG5hbWU9InNldHVwX3N0ZXBfaG9yaXpvbnRhbF9wYWRkaW5nIj4yMGRwPC9kaW1lbj4KKyAgICA8ZGltZW4gbmFtZT0ic2V0dXBfc3RlcF9ob3Jpem9udGFsX3BhZGRpbmdfaGFsZiI+MTBkcDwvZGltZW4+CisgICAgPGRpbWVuIG5hbWU9InNldHVwX3N0ZXBfdmVydGljYWxfcGFkZGluZyI+MTJkcDwvZGltZW4+CisgICAgPGRpbWVuIG5hbWU9InNldHVwX3N0ZXBfaG9yaXpvbnRhbF9saW5lX2hlaWdodCI+MmRwPC9kaW1lbj4KKyAgICA8aW50ZWdlciBuYW1lPSJzZXR1cF90aXRsZV93ZWlnaHRfaW5fc2NyZWVuIj40MDwvaW50ZWdlcj4KKyAgICA8aW50ZWdlciBuYW1lPSJzZXR1cF9ib2R5X3dlaWdodF9pbl9zY3JlZW4iPjYwPC9pbnRlZ2VyPgorICAgIDxkaW1lbiBuYW1lPSJzZXR1cF93ZWxjb21lX3ZpZGVvX3ZlcnRpY2FsX21hcmdpbiI+MTZkcDwvZGltZW4+CisgICAgPGludGVnZXIgbmFtZT0ic2V0dXBfd2VsY29tZV92aWRlb193ZWlnaHRfaW5fc2NyZWVuIj44MDwvaW50ZWdlcj4KKyAgICA8aW50ZWdlciBuYW1lPSJzZXR1cF93ZWxjb21lX3ZpZGVvX2xlZnRfcGFkZGluZ193ZWlnaHRfaW5fc2NyZWVuIj4xMDwvaW50ZWdlcj4KKyAgICA8aW50ZWdlciBuYW1lPSJzZXR1cF93ZWxjb21lX3ZpZGVvX3JpZ2h0X3BhZGRpbmdfd2VpZ2h0X2luX3NjcmVlbiI+MTA8L2ludGVnZXI+Cis8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL2phdmEvcmVzL3ZhbHVlcy1wdC1yUFQvc3RyaW5ncy54bWwgYi9qYXZhL3Jlcy92YWx1ZXMtcHQtclBUL3N0cmluZ3MueG1sCmluZGV4IDQ3OWZmOTQuLjYyOTdkM2MgMTAwNjQ0Ci0tLSBhL2phdmEvcmVzL3ZhbHVlcy1wdC1yUFQvc3RyaW5ncy54bWwKKysrIGIvamF2YS9yZXMvdmFsdWVzLXB0LXJQVC9zdHJpbmdzLnhtbApAQCAtNTMsNiArNTMsOCBAQAogICAgIDxzdHJpbmcgbmFtZT0idXNlX2RvdWJsZV9zcGFjZV9wZXJpb2Rfc3VtbWFyeSIgbXNnaWQ9IjY1MzI4OTIxODcyNDc5NTI3OTkiPiJUb2NhciBkdWFzIHZlemVzIG5hIGJhcnJhIGVzcGHDp28gaW5zZXJlIHBvbnRvIHNlZ3VpZG8gZGUgZXNwYcOnbyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImF1dG9fY2FwIiBtc2dpZD0iMTcxOTc0NjY3NDg1NDYyODI1MiI+IkxldHJhcyBtYWnDunNjdWxhcyBhdXRvbcOhdGljYXMiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJhdXRvX2NhcF9zdW1tYXJ5IiBtc2dpZD0iNzkzNDQ1Mjc2MTAyMjk0Njg3NCI+Ik1hacO6c2N1bGEgbm8gaW7DrWNpbyBkYSBmcmFzZSI8L3N0cmluZz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBlZGl0X3BlcnNvbmFsX2RpY3Rpb25hcnkgKDM5OTY5MTAwMzg5NTI5NDA0MjApIC0tPgorICAgIDxza2lwIC8+CiAgICAgPHN0cmluZyBuYW1lPSJjb25maWd1cmVfZGljdGlvbmFyaWVzX3RpdGxlIiBtc2dpZD0iNDIzODY1MjMzODU1NjkwMjA0OSI+IkRpY2lvbsOhcmlvcyBleHRyYXMiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJtYWluX2RpY3Rpb25hcnkiIG1zZ2lkPSI0Nzk4NzYzNzgxODE4MzYxMTY4Ij4iRGljaW9uw6FyaW8gcHJpbmNpcGFsIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icHJlZnNfc2hvd19zdWdnZXN0aW9ucyIgbXNnaWQ9IjgwMjY3OTk2NjM0NDU1MzE2MzciPiJNb3N0cmFyIHN1Z2VzdMO1ZXMgZGUgY29ycmVjw6fDo28iPC9zdHJpbmc+CkBAIC0xNzEsOCArMTczLDI3IEBACiAgICAgPHN0cmluZyBuYW1lPSJyZWFkX2V4dGVybmFsX2RpY3Rpb25hcnlfY29uZmlybV9pbnN0YWxsX21lc3NhZ2UiIG1zZ2lkPSI2ODk4NjEwMTYzNzY4OTgwODcwIj4iSW5zdGFsYXIgbWVzbW8gZXN0ZSBmaWNoZWlybyBwYXJhIDx4bGlmZjpnIGlkPSJMT0NBTEVfTkFNRSI+JXM8L3hsaWZmOmc+PyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImVycm9yIiBtc2dpZD0iODk0MDc2MzYyNDY2ODUxMzY0OCI+Ik9jb3JyZXUgdW0gZXJybyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJ1dHRvbl9kZWZhdWx0IiBtc2dpZD0iMzk4ODAxNzg0MDQzMTg4MTQ5MSI+IlByZWRlZmluaWRvIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibGFuZ3VhZ2Vfc2V0dGluZ3MiIG1zZ2lkPSIxNjcxMTUzMDUzMjAxODA5MDMxIj4iSWRpb21hIGUgZW50cmFkYSBkZSBzb20iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJzZWxlY3RfaW5wdXRfbWV0aG9kIiBtc2dpZD0iNDMwMTYwMjM3NDYwOTI3NTAwMyI+IkVzY29saGVyIG8gbcOpdG9kbyBkZSBlbnRyYWRhIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfd2VsY29tZV90aXRsZSIgbXNnaWQ9IjYxMTI4MjE3MDk4MzIwMzE3MTUiPiJCZW0tdmluZG8oYSkgYSA8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfd2VsY29tZV9hZGRpdGlvbmFsX2Rlc2NyaXB0aW9uIiBtc2dpZD0iODE1MDI1MjAwODU0NTc2ODk1MyI+ImNvbSBhIEVzY3JpdGEgY29tIEdlc3RvcyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0YXJ0X2FjdGlvbiIgbXNnaWQ9Ijg5MzYwMzY0NjA4OTczNDc3MDgiPiJDb21lw6dhciI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX25leHRfYWN0aW9uIiBtc2dpZD0iMzcxODIxNDM3OTE1MTQ0NjAzIj4iUGFzc28gc2VndWludGUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwc190aXRsZSIgbXNnaWQ9IjY0MDAzNzMwMzQ4NzE4MTYxODIiPiJDb25maWd1cmFyIDx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMV90aXRsZSIgbXNnaWQ9IjMxNDc5Njc2MzAyNTM0NjIzMTUiPiJBdGl2YXIgPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAxX2luc3RydWN0aW9uIiBtc2dpZD0iMjU3ODYzMTkzNjYyNDYzNzI0MSI+Ik1hcnF1ZSBcIjx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz5cIiBuYXMgZGVmaW5pw6fDtWVzIGRlIElkaW9tYSBlIGludHJvZHXDp8OjbyBwLyBhdXRvcml6YXIgYSBleGVjdcOnw6NvIG5vIGRpc3Bvc2l0aXZvLiI8L3N0cmluZz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzZXR1cF9zdGVwMV9maW5pc2hlZF9pbnN0cnVjdGlvbiAoMTA3NjE0ODIwMDQ5NTc5OTQpIC0tPgorICAgIDxza2lwIC8+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMV9hY3Rpb24iIG1zZ2lkPSI0MzY2NTEzNTM0OTk5OTAxNzI4Ij4iQXRpdmFyIG5hcyBEZWZpbmnDp8O1ZXMiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMl90aXRsZSIgbXNnaWQ9IjY4NjA3MjU0NDc5MDY2OTA1OTQiPiJNdWRhciBwYXJhIDx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMl9pbnN0cnVjdGlvbiIgbXNnaWQ9IjkxNDE0ODE5NjQ4NzAwMjMzMzYiPiJFbSBzZWd1aWRhLCBzZWxlY2lvbmUgXCI8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+XCIgY29tbyBvIHNldSBtw6l0b2RvIGRlIGludHJvZHXDp8OjbyBkZSB0ZXh0byBhdGl2by4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMl9hY3Rpb24iIG1zZ2lkPSIxNjYwMzMwMzA3MTU5ODI0MzM3Ij4iTXVkYXIgbcOpdG9kb3MgZGUgaW50cm9kdcOnw6NvIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDNfdGl0bGUiIG1zZ2lkPSIzMTU0NzU3MTgzNjMxNDkwMjgxIj4iUGFyYWLDqW5zLCBlc3TDoSBwcm9udG8gcGFyYSBjb21lw6dhciEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwM19pbnN0cnVjdGlvbiIgbXNnaWQ9IjgwMjU5ODE4Mjk2MDU0MjYwMDAiPiJBZ29yYSBwb2RlIGVzY3JldmVyIGVtIHRvZGFzIGFzIHN1YXMgYXBsaWNhw6fDtWVzIGZhdm9yaXRhcyBjb20gPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPi4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwM19hY3Rpb24iIG1zZ2lkPSI2MDA4Nzk3OTcyNTY5NDIyNTkiPiJDb25maWd1cmFyIGlkaW9tYXMgYWRpY2lvbmFpcyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX2ZpbmlzaF9hY3Rpb24iIG1zZ2lkPSIyNzY1NTkyNDM0MDk0NjUzODkiPiJDb25jbHXDrWRvIjwvc3RyaW5nPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNob3dfc2V0dXBfd2l6YXJkX2ljb24gKDUwMDgwMjg1OTA1OTM3MTA4MzApIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc2hvd19zZXR1cF93aXphcmRfaWNvbl9zdW1tYXJ5ICg0MTE5OTk4MzIyNTM2ODgwMjEzKSAtLT4KKyAgICA8c2tpcCAvPgogICAgIDxzdHJpbmcgbmFtZT0iYXBwX25hbWUiIG1zZ2lkPSI2MzIwMTAyNjM3NDkxMjM0NzkyIj4iRm9ybmVjZWRvciBkZSBEaWNpb27DoXJpbyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRpY3Rpb25hcnlfcHJvdmlkZXJfbmFtZSIgbXNnaWQ9IjMwMjczMTUwNDUzOTczNjMwNzkiPiJGb3JuZWNlZG9yIGRlIERpY2lvbsOhcmlvIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGljdGlvbmFyeV9zZXJ2aWNlX25hbWUiIG1zZ2lkPSI2MjM3NDcyMzUwNjkzNTExNDQ4Ij4iU2VydmnDp28gZGUgRGljaW9uw6FyaW8iPC9zdHJpbmc+CkBAIC0yMDMsNCArMjI0LDYgQEAKICAgICA8c3RyaW5nIG5hbWU9ImRpY3RfYXZhaWxhYmxlX25vdGlmaWNhdGlvbl90aXRsZSIgbXNnaWQ9IjY1MTQyODg1OTE5NTkxMTcyODgiPiJFc3TDoSBkaXNwb27DrXZlbCB1bSBkaWNpb27DoXJpbyBwYXJhIDx4bGlmZjpnIGlkPSJMQU5HVUFHRSI+JTEkczwveGxpZmY6Zz4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkaWN0X2F2YWlsYWJsZV9ub3RpZmljYXRpb25fZGVzY3JpcHRpb24iIG1zZ2lkPSIxMDc1MTk0MTY5NDQzMTYzNDg3Ij4iUHJpbWEgcGFyYSBjb25zdWx0YXIgZSB0cmFuc2ZlcmlyIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idG9hc3RfZG93bmxvYWRpbmdfc3VnZ2VzdGlvbnMiIG1zZ2lkPSIxMzEzMDI3MzUzNTg4NTY2NjYwIj4iQSB0cmFuc2ZlcmlyOiBhcyBzdWdlc3TDtWVzIHBhcmEgPHhsaWZmOmcgaWQ9IkxBTkdVQUdFIj4lMSRzPC94bGlmZjpnPiBlc3RhcsOjbyBwcm9udGFzIGVtIGJyZXZlLiI8L3N0cmluZz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciB2ZXJzaW9uX3RleHQgKDI3MTUzNTQyMTU1Njg0NjkzODUpIC0tPgorICAgIDxza2lwIC8+CiA8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL2phdmEvcmVzL3ZhbHVlcy1wdC9zdHJpbmdzLnhtbCBiL2phdmEvcmVzL3ZhbHVlcy1wdC9zdHJpbmdzLnhtbAppbmRleCBkYzAxYzViLi5iYzZiYzBhIDEwMDY0NAotLS0gYS9qYXZhL3Jlcy92YWx1ZXMtcHQvc3RyaW5ncy54bWwKKysrIGIvamF2YS9yZXMvdmFsdWVzLXB0L3N0cmluZ3MueG1sCkBAIC01Myw2ICs1Myw4IEBACiAgICAgPHN0cmluZyBuYW1lPSJ1c2VfZG91YmxlX3NwYWNlX3BlcmlvZF9zdW1tYXJ5IiBtc2dpZD0iNjUzMjg5MjE4NzI0Nzk1Mjc5OSI+IlRvcXVlIGR1cGxvIG5hIGJhcnJhIGRlIGVzcGHDp28gaW5zZXJlIHVtIHBvbnRvIHNlZ3VpZG8gZGUgZXNwYcOnbyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImF1dG9fY2FwIiBtc2dpZD0iMTcxOTc0NjY3NDg1NDYyODI1MiI+IkNhcGl0YWxpei4gYXV0b23DoXRpY2EiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJhdXRvX2NhcF9zdW1tYXJ5IiBtc2dpZD0iNzkzNDQ1Mjc2MTAyMjk0Njg3NCI+IkluaWNpYXIgYSBwcmltZWlyYSBwYWxhdnJhIGRlIGNhZGEgZnJhc2UgY29tIGxldHJhIG1hacO6c2N1bGEiPC9zdHJpbmc+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgZWRpdF9wZXJzb25hbF9kaWN0aW9uYXJ5ICgzOTk2OTEwMDM4OTUyOTQwNDIwKSAtLT4KKyAgICA8c2tpcCAvPgogICAgIDxzdHJpbmcgbmFtZT0iY29uZmlndXJlX2RpY3Rpb25hcmllc190aXRsZSIgbXNnaWQ9IjQyMzg2NTIzMzg1NTY5MDIwNDkiPiJEaWNpb27DoXJpb3MgY29tcGxlbWVudGFyZXMiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJtYWluX2RpY3Rpb25hcnkiIG1zZ2lkPSI0Nzk4NzYzNzgxODE4MzYxMTY4Ij4iRGljaW9uw6FyaW8gcHJpbmNpcGFsIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icHJlZnNfc2hvd19zdWdnZXN0aW9ucyIgbXNnaWQ9IjgwMjY3OTk2NjM0NDU1MzE2MzciPiJFeGliaXIgc3VnZXN0w7VlcyBkZSBjb3JyZcOnw6NvIjwvc3RyaW5nPgpAQCAtMTcxLDggKzE3MywyNyBAQAogICAgIDxzdHJpbmcgbmFtZT0icmVhZF9leHRlcm5hbF9kaWN0aW9uYXJ5X2NvbmZpcm1faW5zdGFsbF9tZXNzYWdlIiBtc2dpZD0iNjg5ODYxMDE2Mzc2ODk4MDg3MCI+IkRlc2VqYSBpbnN0YWxhciBlc3RlIGFycXVpdm8gcGFyYSA8eGxpZmY6ZyBpZD0iTE9DQUxFX05BTUUiPiVzPC94bGlmZjpnPj8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJlcnJvciIgbXNnaWQ9Ijg5NDA3NjM2MjQ2Njg1MTM2NDgiPiJPY29ycmV1IHVtIGVycm8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJidXR0b25fZGVmYXVsdCIgbXNnaWQ9IjM5ODgwMTc4NDA0MzE4ODE0OTEiPiJQYWRyw6NvIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibGFuZ3VhZ2Vfc2V0dGluZ3MiIG1zZ2lkPSIxNjcxMTUzMDUzMjAxODA5MDMxIj4iSWRpb21hIGUgZW50cmFkYSI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InNlbGVjdF9pbnB1dF9tZXRob2QiIG1zZ2lkPSI0MzAxNjAyMzc0NjA5Mjc1MDAzIj4iU2VsZWNpb25lIG8gbcOpdG9kbyBkZSBlbnRyYWRhIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfd2VsY29tZV90aXRsZSIgbXNnaWQ9IjYxMTI4MjE3MDk4MzIwMzE3MTUiPiJCZW0tdmluZG8gYW8gPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3dlbGNvbWVfYWRkaXRpb25hbF9kZXNjcmlwdGlvbiIgbXNnaWQ9IjgxNTAyNTIwMDg1NDU3Njg5NTMiPiJjb20gZW50cmFkYSBwb3IgZ2VzdG9zIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RhcnRfYWN0aW9uIiBtc2dpZD0iODkzNjAzNjQ2MDg5NzM0NzcwOCI+IkNvbWXDp2FyIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfbmV4dF9hY3Rpb24iIG1zZ2lkPSIzNzE4MjE0Mzc5MTUxNDQ2MDMiPiJQcsOzeGltYSBldGFwYSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXBzX3RpdGxlIiBtc2dpZD0iNjQwMDM3MzAzNDg3MTgxNjE4MiI+IkNvbmZpZ3VyYW5kbyBvIDx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMV90aXRsZSIgbXNnaWQ9IjMxNDc5Njc2MzAyNTM0NjIzMTUiPiJBdGl2ZSBvIDx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMV9pbnN0cnVjdGlvbiIgbXNnaWQ9IjI1Nzg2MzE5MzY2MjQ2MzcyNDEiPiJNYXJxdWUgXCI8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+XCIgZW0gXCJDb25maWd1cmHDp8O1ZXMgZGUgaWRpb21hIGUgZW50cmFkYVwiIHBhcmEgYXV0b3JpemFyIGEgZXhlY3XDp8Ojby4iPC9zdHJpbmc+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc2V0dXBfc3RlcDFfZmluaXNoZWRfaW5zdHJ1Y3Rpb24gKDEwNzYxNDgyMDA0OTU3OTk0KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDFfYWN0aW9uIiBtc2dpZD0iNDM2NjUxMzUzNDk5OTkwMTcyOCI+IkF0aXZhciBlbSBcIkNvbmZpZ3VyYcOnw7Vlc1wiIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDJfdGl0bGUiIG1zZ2lkPSI2ODYwNzI1NDQ3OTA2NjkwNTk0Ij4iQWJyYSBvIDx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMl9pbnN0cnVjdGlvbiIgbXNnaWQ9IjkxNDE0ODE5NjQ4NzAwMjMzMzYiPiJFbSBzZWd1aWRhLCBzZWxlY2lvbmUgXCI8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+XCIgY29tbyBvIG3DqXRvZG8gZGUgZW50cmFkYSBkZSB0ZXh0byBhdGl2by4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMl9hY3Rpb24iIG1zZ2lkPSIxNjYwMzMwMzA3MTU5ODI0MzM3Ij4iQWx0ZXJuYXIgbcOpdG9kb3MgZGUgZW50cmFkYSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAzX3RpdGxlIiBtc2dpZD0iMzE1NDc1NzE4MzYzMTQ5MDI4MSI+IlBhcmFiw6lucywgdm9jw6ogdGVybWlub3UhIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDNfaW5zdHJ1Y3Rpb24iIG1zZ2lkPSI4MDI1OTgxODI5NjA1NDI2MDAwIj4iQWdvcmEgdm9jw6ogcG9kZSBkaWdpdGFyIGVtIHRvZG9zIG9zIHNldXMgYXBsaWNhdGl2b3MgZmF2b3JpdG9zIGNvbSBvIDx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz4uIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDNfYWN0aW9uIiBtc2dpZD0iNjAwODc5Nzk3MjU2OTQyMjU5Ij4iQ29uZmlndXJhciBpZGlvbWFzIGFkaWNpb25haXMiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9maW5pc2hfYWN0aW9uIiBtc2dpZD0iMjc2NTU5MjQzNDA5NDY1Mzg5Ij4iQ29uY2x1w61kbyI8L3N0cmluZz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzaG93X3NldHVwX3dpemFyZF9pY29uICg1MDA4MDI4NTkwNTkzNzEwODMwKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNob3dfc2V0dXBfd2l6YXJkX2ljb25fc3VtbWFyeSAoNDExOTk5ODMyMjUzNjg4MDIxMykgLS0+CisgICAgPHNraXAgLz4KICAgICA8c3RyaW5nIG5hbWU9ImFwcF9uYW1lIiBtc2dpZD0iNjMyMDEwMjYzNzQ5MTIzNDc5MiI+IlByb3ZlZG9yIGRlIGRpY2lvbsOhcmlvIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGljdGlvbmFyeV9wcm92aWRlcl9uYW1lIiBtc2dpZD0iMzAyNzMxNTA0NTM5NzM2MzA3OSI+IlByb3ZlZG9yIGRlIGRpY2lvbsOhcmlvIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGljdGlvbmFyeV9zZXJ2aWNlX25hbWUiIG1zZ2lkPSI2MjM3NDcyMzUwNjkzNTExNDQ4Ij4iU2VydmnDp28gZGUgZGljaW9uw6FyaW8iPC9zdHJpbmc+CkBAIC0yMDMsNCArMjI0LDYgQEAKICAgICA8c3RyaW5nIG5hbWU9ImRpY3RfYXZhaWxhYmxlX25vdGlmaWNhdGlvbl90aXRsZSIgbXNnaWQ9IjY1MTQyODg1OTE5NTkxMTcyODgiPiJIw6EgdW0gZGljaW9uw6FyaW8gZGlzcG9uw612ZWwgcGFyYSA8eGxpZmY6ZyBpZD0iTEFOR1VBR0UiPiUxJHM8L3hsaWZmOmc+Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGljdF9hdmFpbGFibGVfbm90aWZpY2F0aW9uX2Rlc2NyaXB0aW9uIiBtc2dpZD0iMTA3NTE5NDE2OTQ0MzE2MzQ4NyI+IlByZXNzaW9uZSBwYXJhIGNvbnN1bHRhciBlIGZhemVyIG8gZG93bmxvYWQiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ0b2FzdF9kb3dubG9hZGluZ19zdWdnZXN0aW9ucyIgbXNnaWQ9IjEzMTMwMjczNTM1ODg1NjY2NjAiPiJEb3dubG9hZCBlbSBhbmRhbWVudG86IGFzIHN1Z2VzdMO1ZXMgcGFyYSA8eGxpZmY6ZyBpZD0iTEFOR1VBR0UiPiUxJHM8L3hsaWZmOmc+IGVzdGFyw6NvIHByb250YXMgZW0gYnJldmUuIjwvc3RyaW5nPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHZlcnNpb25fdGV4dCAoMjcxNTM1NDIxNTU2ODQ2OTM4NSkgLS0+CisgICAgPHNraXAgLz4KIDwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvamF2YS9yZXMvdmFsdWVzLXJtL3N0cmluZ3MueG1sIGIvamF2YS9yZXMvdmFsdWVzLXJtL3N0cmluZ3MueG1sCmluZGV4IDE1Y2QzMjcuLjY2ODMxMTQgMTAwNjQ0Ci0tLSBhL2phdmEvcmVzL3ZhbHVlcy1ybS9zdHJpbmdzLnhtbAorKysgYi9qYXZhL3Jlcy92YWx1ZXMtcm0vc3RyaW5ncy54bWwKQEAgLTgyLDYgKzgyLDggQEAKICAgICA8c3RyaW5nIG5hbWU9ImF1dG9fY2FwIiBtc2dpZD0iMTcxOTc0NjY3NDg1NDYyODI1MiI+Ik1haXVzY2xhcyBhdXRvbWF0aWNhcyI8L3N0cmluZz4KICAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBhdXRvX2NhcF9zdW1tYXJ5ICg3OTM0NDUyNzYxMDIyOTQ2ODc0KSAtLT4KICAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGVkaXRfcGVyc29uYWxfZGljdGlvbmFyeSAoMzk5NjkxMDAzODk1Mjk0MDQyMCkgLS0+CisgICAgPHNraXAgLz4KICAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBjb25maWd1cmVfZGljdGlvbmFyaWVzX3RpdGxlICg0MjM4NjUyMzM4NTU2OTAyMDQ5KSAtLT4KICAgICA8c2tpcCAvPgogICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIG1haW5fZGljdGlvbmFyeSAoNDc5ODc2Mzc4MTgxODM2MTE2OCkgLS0+CkBAIC0zMTAsOSArMzEyLDQxIEBACiAgICAgPHNraXAgLz4KICAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBidXR0b25fZGVmYXVsdCAoMzk4ODAxNzg0MDQzMTg4MTQ5MSkgLS0+CiAgICAgPHNraXAgLz4KLSAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBsYW5ndWFnZV9zZXR0aW5ncyAoMTY3MTE1MzA1MzIwMTgwOTAzMSkgLS0+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc2V0dXBfd2VsY29tZV90aXRsZSAoNjExMjgyMTcwOTgzMjAzMTcxNSkgLS0+CiAgICAgPHNraXAgLz4KLSAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzZWxlY3RfaW5wdXRfbWV0aG9kICg0MzAxNjAyMzc0NjA5Mjc1MDAzKSAtLT4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzZXR1cF93ZWxjb21lX2FkZGl0aW9uYWxfZGVzY3JpcHRpb24gKDgxNTAyNTIwMDg1NDU3Njg5NTMpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc2V0dXBfc3RhcnRfYWN0aW9uICg4OTM2MDM2NDYwODk3MzQ3NzA4KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNldHVwX25leHRfYWN0aW9uICgzNzE4MjE0Mzc5MTUxNDQ2MDMpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc2V0dXBfc3RlcHNfdGl0bGUgKDY0MDAzNzMwMzQ4NzE4MTYxODIpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc2V0dXBfc3RlcDFfdGl0bGUgKDMxNDc5Njc2MzAyNTM0NjIzMTUpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc2V0dXBfc3RlcDFfaW5zdHJ1Y3Rpb24gKDI1Nzg2MzE5MzY2MjQ2MzcyNDEpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc2V0dXBfc3RlcDFfZmluaXNoZWRfaW5zdHJ1Y3Rpb24gKDEwNzYxNDgyMDA0OTU3OTk0KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNldHVwX3N0ZXAxX2FjdGlvbiAoNDM2NjUxMzUzNDk5OTkwMTcyOCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzZXR1cF9zdGVwMl90aXRsZSAoNjg2MDcyNTQ0NzkwNjY5MDU5NCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzZXR1cF9zdGVwMl9pbnN0cnVjdGlvbiAoOTE0MTQ4MTk2NDg3MDAyMzMzNikgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzZXR1cF9zdGVwMl9hY3Rpb24gKDE2NjAzMzAzMDcxNTk4MjQzMzcpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc2V0dXBfc3RlcDNfdGl0bGUgKDMxNTQ3NTcxODM2MzE0OTAyODEpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc2V0dXBfc3RlcDNfaW5zdHJ1Y3Rpb24gKDgwMjU5ODE4Mjk2MDU0MjYwMDApIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc2V0dXBfc3RlcDNfYWN0aW9uICg2MDA4Nzk3OTcyNTY5NDIyNTkpIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc2V0dXBfZmluaXNoX2FjdGlvbiAoMjc2NTU5MjQzNDA5NDY1Mzg5KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNob3dfc2V0dXBfd2l6YXJkX2ljb24gKDUwMDgwMjg1OTA1OTM3MTA4MzApIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc2hvd19zZXR1cF93aXphcmRfaWNvbl9zdW1tYXJ5ICg0MTE5OTk4MzIyNTM2ODgwMjEzKSAtLT4KICAgICA8c2tpcCAvPgogICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGFwcF9uYW1lICg2MzIwMTAyNjM3NDkxMjM0NzkyKSAtLT4KICAgICA8c2tpcCAvPgpAQCAtMzczLDQgKzQwNyw2IEBACiAgICAgPHNraXAgLz4KICAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciB0b2FzdF9kb3dubG9hZGluZ19zdWdnZXN0aW9ucyAoMTMxMzAyNzM1MzU4ODU2NjY2MCkgLS0+CiAgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciB2ZXJzaW9uX3RleHQgKDI3MTUzNTQyMTU1Njg0NjkzODUpIC0tPgorICAgIDxza2lwIC8+CiA8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL2phdmEvcmVzL3ZhbHVlcy1yby9zdHJpbmdzLnhtbCBiL2phdmEvcmVzL3ZhbHVlcy1yby9zdHJpbmdzLnhtbAppbmRleCA0MDY1NmQxLi4zYTJjZWMxIDEwMDY0NAotLS0gYS9qYXZhL3Jlcy92YWx1ZXMtcm8vc3RyaW5ncy54bWwKKysrIGIvamF2YS9yZXMvdmFsdWVzLXJvL3N0cmluZ3MueG1sCkBAIC01Myw2ICs1Myw4IEBACiAgICAgPHN0cmluZyBuYW1lPSJ1c2VfZG91YmxlX3NwYWNlX3BlcmlvZF9zdW1tYXJ5IiBtc2dpZD0iNjUzMjg5MjE4NzI0Nzk1Mjc5OSI+IkR1YmxhIGF0aW5nZXJlIGEgYmFyZWkgZGUgc3BhyJtpdSBpbnNlcmVhesSDIHB1bmN0IHVybWF0IGRlIHNwYcibaXUiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJhdXRvX2NhcCIgbXNnaWQ9IjE3MTk3NDY2NzQ4NTQ2MjgyNTIiPiJBdXRvLWNhcGl0YWxpemFyZSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImF1dG9fY2FwX3N1bW1hcnkiIG1zZ2lkPSI3OTM0NDUyNzYxMDIyOTQ2ODc0Ij4iU2NyaWUgY3UgbWFqdXNjdWzEgyBwcmltdWwgY3V2w6JudCBkaW4gZmllY2FyZSBwcm9wb3ppxaNpZSI8L3N0cmluZz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBlZGl0X3BlcnNvbmFsX2RpY3Rpb25hcnkgKDM5OTY5MTAwMzg5NTI5NDA0MjApIC0tPgorICAgIDxza2lwIC8+CiAgICAgPHN0cmluZyBuYW1lPSJjb25maWd1cmVfZGljdGlvbmFyaWVzX3RpdGxlIiBtc2dpZD0iNDIzODY1MjMzODU1NjkwMjA0OSI+IkRpY8WjaW9uYXJlIHN1cGxpbWVudGFyZSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im1haW5fZGljdGlvbmFyeSIgbXNnaWQ9IjQ3OTg3NjM3ODE4MTgzNjExNjgiPiJEaWPFo2lvbmFyIHByaW5jaXBhbCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InByZWZzX3Nob3dfc3VnZ2VzdGlvbnMiIG1zZ2lkPSI4MDI2Nzk5NjYzNDQ1NTMxNjM3Ij4iQWZpxZ9hxaNpIHN1Z2VzdGlpIGRlIGNvcmVjdGFyZSI8L3N0cmluZz4KQEAgLTE3MSw4ICsxNzMsMjcgQEAKICAgICA8c3RyaW5nIG5hbWU9InJlYWRfZXh0ZXJuYWxfZGljdGlvbmFyeV9jb25maXJtX2luc3RhbGxfbWVzc2FnZSIgbXNnaWQ9IjY4OTg2MTAxNjM3Njg5ODA4NzAiPiJEb3JpyJtpIHPEgyBpbnN0YWxhyJtpIGFjZXN0IGZpyJlpZXIgcGVudHJ1IDx4bGlmZjpnIGlkPSJMT0NBTEVfTkFNRSI+JXM8L3hsaWZmOmc+PyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImVycm9yIiBtc2dpZD0iODk0MDc2MzYyNDY2ODUxMzY0OCI+IkEgYXDEg3J1dCBvIGVyb2FyZSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJ1dHRvbl9kZWZhdWx0IiBtc2dpZD0iMzk4ODAxNzg0MDQzMTg4MTQ5MSI+IlByZXN0YWJpbGl0Ijwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibGFuZ3VhZ2Vfc2V0dGluZ3MiIG1zZ2lkPSIxNjcxMTUzMDUzMjAxODA5MDMxIj4iTGltYsSDIMiZaSBpbnRyb2R1Y2VyZSBkZSB0ZXh0Ijwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ic2VsZWN0X2lucHV0X21ldGhvZCIgbXNnaWQ9IjQzMDE2MDIzNzQ2MDkyNzUwMDMiPiJBbGVnZcibaSBtZXRvZGEgZGUgaW50cm9kdWNlcmUgZGUgdGV4dCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3dlbGNvbWVfdGl0bGUiIG1zZ2lkPSI2MTEyODIxNzA5ODMyMDMxNzE1Ij4iQnVuIHZlbml0IGxhIDx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF93ZWxjb21lX2FkZGl0aW9uYWxfZGVzY3JpcHRpb24iIG1zZ2lkPSI4MTUwMjUyMDA4NTQ1NzY4OTUzIj4iY3UgVGFzdGFyZWEgZ2VzdHVhbMSDIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RhcnRfYWN0aW9uIiBtc2dpZD0iODkzNjAzNjQ2MDg5NzM0NzcwOCI+IsOObmNlcGXIm2kiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9uZXh0X2FjdGlvbiIgbXNnaWQ9IjM3MTgyMTQzNzkxNTE0NDYwMyI+IlBhc3VsIHVybcSDdG9yIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcHNfdGl0bGUiIG1zZ2lkPSI2NDAwMzczMDM0ODcxODE2MTgyIj4iQ29uZmlndXJhcmVhIDx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMV90aXRsZSIgbXNnaWQ9IjMxNDc5Njc2MzAyNTM0NjIzMTUiPiJBY3RpdmHIm2kgPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAxX2luc3RydWN0aW9uIiBtc2dpZD0iMjU3ODYzMTkzNjYyNDYzNzI0MSI+IkJpZmHIm2kg4oCePHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPuKAnSBkaW4gc2V0xINyaWxlIExpbWLEgyDImWkgaW50cm9kdWNlcmUgZGUgdGV4dC4gQXN0ZmVsLCBvIGF1dG9yaXphyJtpIHPEgyBydWxlemUgcGUgZGlzcG96aXRpdi4iPC9zdHJpbmc+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc2V0dXBfc3RlcDFfZmluaXNoZWRfaW5zdHJ1Y3Rpb24gKDEwNzYxNDgyMDA0OTU3OTk0KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDFfYWN0aW9uIiBtc2dpZD0iNDM2NjUxMzUzNDk5OTkwMTcyOCI+IkFjdGl2YcibaSDDrm4gU2V0xINyaSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAyX3RpdGxlIiBtc2dpZD0iNjg2MDcyNTQ0NzkwNjY5MDU5NCI+IkNvbXV0YcibaSBsYSA8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+LiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAyX2luc3RydWN0aW9uIiBtc2dpZD0iOTE0MTQ4MTk2NDg3MDAyMzMzNiI+IkFwb2ksIHNlbGVjdGHIm2kg4oCePHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPuKAnSBjYSBtZXRvZMSDIGRlIGludHJvZHVjZXJlIGEgdGV4dHVsdWkgYWN0aXbEgy4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMl9hY3Rpb24iIG1zZ2lkPSIxNjYwMzMwMzA3MTU5ODI0MzM3Ij4iQ29tdXRhyJtpIMOubnRyZSBtZXRvZGVsZSBkZSBpbnRyb2R1Y2VyZSBhIHRleHR1bHVpIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDNfdGl0bGUiIG1zZ2lkPSIzMTU0NzU3MTgzNjMxNDkwMjgxIj4iRmVsaWNpdMSDcmksIHN1bnRlyJtpIGdhdGEhIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDNfaW5zdHJ1Y3Rpb24iIG1zZ2lkPSI4MDI1OTgxODI5NjA1NDI2MDAwIj4iQWN1bSwgcHV0ZcibaSBpbnRyb2R1Y2UgdGV4dCDDrm4gdG9hdGUgYXBsaWNhyJtpaWxlIHByZWZlcmF0ZSwgdXRpbGl6w6JuZCA8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+LiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAzX2FjdGlvbiIgbXNnaWQ9IjYwMDg3OTc5NzI1Njk0MjI1OSI+IkNvbmZpZ3VyYcibaSBsaW1iaSBzdXBsaW1lbnRhcmUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9maW5pc2hfYWN0aW9uIiBtc2dpZD0iMjc2NTU5MjQzNDA5NDY1Mzg5Ij4iRmluYWxpemF0Ijwvc3RyaW5nPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNob3dfc2V0dXBfd2l6YXJkX2ljb24gKDUwMDgwMjg1OTA1OTM3MTA4MzApIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc2hvd19zZXR1cF93aXphcmRfaWNvbl9zdW1tYXJ5ICg0MTE5OTk4MzIyNTM2ODgwMjEzKSAtLT4KKyAgICA8c2tpcCAvPgogICAgIDxzdHJpbmcgbmFtZT0iYXBwX25hbWUiIG1zZ2lkPSI2MzIwMTAyNjM3NDkxMjM0NzkyIj4iRnVybml6b3IgZGljyJtpb25hciI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRpY3Rpb25hcnlfcHJvdmlkZXJfbmFtZSIgbXNnaWQ9IjMwMjczMTUwNDUzOTczNjMwNzkiPiJGdXJuaXpvciBkaWPIm2lvbmFyIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGljdGlvbmFyeV9zZXJ2aWNlX25hbWUiIG1zZ2lkPSI2MjM3NDcyMzUwNjkzNTExNDQ4Ij4iU2VydmljaXUgZGljyJtpb25hciI8L3N0cmluZz4KQEAgLTIwMyw0ICsyMjQsNiBAQAogICAgIDxzdHJpbmcgbmFtZT0iZGljdF9hdmFpbGFibGVfbm90aWZpY2F0aW9uX3RpdGxlIiBtc2dpZD0iNjUxNDI4ODU5MTk1OTExNzI4OCI+IkVzdGUgZGlzcG9uaWJpbCB1biBkaWPIm2lvbmFyIHBlbnRydSA8eGxpZmY6ZyBpZD0iTEFOR1VBR0UiPiUxJHM8L3hsaWZmOmc+Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGljdF9hdmFpbGFibGVfbm90aWZpY2F0aW9uX2Rlc2NyaXB0aW9uIiBtc2dpZD0iMTA3NTE5NDE2OTQ0MzE2MzQ4NyI+IkFwxINzYcibaSBwZW50cnUgZXhhbWluYXJlIMiZaSBkZXNjxINyY2FyZSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InRvYXN0X2Rvd25sb2FkaW5nX3N1Z2dlc3Rpb25zIiBtc2dpZD0iMTMxMzAyNzM1MzU4ODU2NjY2MCI+IlNlIGRlc2NhcmPEgzogc3VnZXN0aWlsZSBwZW50cnUgPHhsaWZmOmcgaWQ9IkxBTkdVQUdFIj4lMSRzPC94bGlmZjpnPiB2b3IgZmkgZ2F0YSDDrm4gY3Vyw6JuZC4iPC9zdHJpbmc+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgdmVyc2lvbl90ZXh0ICgyNzE1MzU0MjE1NTY4NDY5Mzg1KSAtLT4KKyAgICA8c2tpcCAvPgogPC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9qYXZhL3Jlcy92YWx1ZXMtcnUvc3RyaW5ncy54bWwgYi9qYXZhL3Jlcy92YWx1ZXMtcnUvc3RyaW5ncy54bWwKaW5kZXggN2JmMTBhZS4uNjkxZjAzMCAxMDA2NDQKLS0tIGEvamF2YS9yZXMvdmFsdWVzLXJ1L3N0cmluZ3MueG1sCisrKyBiL2phdmEvcmVzL3ZhbHVlcy1ydS9zdHJpbmdzLnhtbApAQCAtNTMsNiArNTMsOCBAQAogICAgIDxzdHJpbmcgbmFtZT0idXNlX2RvdWJsZV9zcGFjZV9wZXJpb2Rfc3VtbWFyeSIgbXNnaWQ9IjY1MzI4OTIxODcyNDc5NTI3OTkiPiLQktCy0L7QtNC40YLRjCDRgtC+0YfQutGDINGBINC/0YDQvtCx0LXQu9C+0Lwg0LTQstC+0LnQvdGL0Lwg0L3QsNC20LDRgtC40LXQvCDQutC90L7Qv9C60LggXCLQn9GA0L7QsdC10LtcIi4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJhdXRvX2NhcCIgbXNnaWQ9IjE3MTk3NDY2NzQ4NTQ2MjgyNTIiPiLQl9Cw0LPQu9Cw0LLQvdGL0LUg0LDQstGC0L7QvNCw0YLQuNGH0LXRgdC60LgiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJhdXRvX2NhcF9zdW1tYXJ5IiBtc2dpZD0iNzkzNDQ1Mjc2MTAyMjk0Njg3NCI+ItCf0LjRgdCw0YLRjCDQv9C10YDQstC+0LUg0YHQu9C+0LLQviDQv9GA0LXQtNC70L7QttC10L3QuNGPINGBINC/0YDQvtC/0LjRgdC90L7QuSDQsdGD0LrQstGLIjwvc3RyaW5nPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGVkaXRfcGVyc29uYWxfZGljdGlvbmFyeSAoMzk5NjkxMDAzODk1Mjk0MDQyMCkgLS0+CisgICAgPHNraXAgLz4KICAgICA8c3RyaW5nIG5hbWU9ImNvbmZpZ3VyZV9kaWN0aW9uYXJpZXNfdGl0bGUiIG1zZ2lkPSI0MjM4NjUyMzM4NTU2OTAyMDQ5Ij4i0JTQvtC/0L7Qu9C90LjRgtC10LvRjNC90YvQtSDRgdC70L7QstCw0YDQuCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im1haW5fZGljdGlvbmFyeSIgbXNnaWQ9IjQ3OTg3NjM3ODE4MTgzNjExNjgiPiLQntGB0L3QvtCy0L3QvtC5INGB0LvQvtCy0LDRgNGMIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icHJlZnNfc2hvd19zdWdnZXN0aW9ucyIgbXNnaWQ9IjgwMjY3OTk2NjM0NDU1MzE2MzciPiLQktCw0YDQuNCw0L3RgtGLINC40YHQv9GA0LDQstC70LXQvdC40LkiPC9zdHJpbmc+CkBAIC0xNzEsOCArMTczLDI3IEBACiAgICAgPHN0cmluZyBuYW1lPSJyZWFkX2V4dGVybmFsX2RpY3Rpb25hcnlfY29uZmlybV9pbnN0YWxsX21lc3NhZ2UiIG1zZ2lkPSI2ODk4NjEwMTYzNzY4OTgwODcwIj4i0KPRgdGC0LDQvdC+0LLQuNGC0Ywg0Y3RgtC+0YIg0YTQsNC50Lsg0LTQu9GPINGB0LvQtdC00YPRjtGJ0LXQs9C+INGP0LfRi9C60LA6IDx4bGlmZjpnIGlkPSJMT0NBTEVfTkFNRSI+JXM8L3hsaWZmOmc+PyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImVycm9yIiBtc2dpZD0iODk0MDc2MzYyNDY2ODUxMzY0OCI+ItCe0YjQuNCx0LrQsCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJ1dHRvbl9kZWZhdWx0IiBtc2dpZD0iMzk4ODAxNzg0MDQzMTg4MTQ5MSI+ItCf0L4g0YPQvNC+0LvRh9Cw0L3QuNGOIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibGFuZ3VhZ2Vfc2V0dGluZ3MiIG1zZ2lkPSIxNjcxMTUzMDUzMjAxODA5MDMxIj4i0K/Qt9GL0Log0Lgg0LLQstC+0LQiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJzZWxlY3RfaW5wdXRfbWV0aG9kIiBtc2dpZD0iNDMwMTYwMjM3NDYwOTI3NTAwMyI+ItCS0YvQsdC10YDQuNGC0LUg0YHQv9C+0YHQvtCxINCy0LLQvtC00LAiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF93ZWxjb21lX3RpdGxlIiBtc2dpZD0iNjExMjgyMTcwOTgzMjAzMTcxNSI+ItCf0YDQtdC00YHRgtCw0LLQu9GP0LXQvCDQv9GA0LjQu9C+0LbQtdC90LjQtSBcIjx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz5cIiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3dlbGNvbWVfYWRkaXRpb25hbF9kZXNjcmlwdGlvbiIgbXNnaWQ9IjgxNTAyNTIwMDg1NDU3Njg5NTMiPiLRgSDQvdC10L/RgNC10YDRi9Cy0L3Ri9C8INCy0LLQvtC00L7QvCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0YXJ0X2FjdGlvbiIgbXNnaWQ9Ijg5MzYwMzY0NjA4OTczNDc3MDgiPiLQndCw0YfQsNGC0Ywg0YDQsNCx0L7RgtGDIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfbmV4dF9hY3Rpb24iIG1zZ2lkPSIzNzE4MjE0Mzc5MTUxNDQ2MDMiPiLQlNCw0LvQtdC1Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcHNfdGl0bGUiIG1zZ2lkPSI2NDAwMzczMDM0ODcxODE2MTgyIj4iPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPjog0L3QsNGB0YLRgNC+0LnQutCwIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDFfdGl0bGUiIG1zZ2lkPSIzMTQ3OTY3NjMwMjUzNDYyMzE1Ij4iPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPjog0LLQutC70Y7Rh9C10L3QuNC1Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDFfaW5zdHJ1Y3Rpb24iIG1zZ2lkPSIyNTc4NjMxOTM2NjI0NjM3MjQxIj4i0KPRgdGC0LDQvdC+0LLQuNGC0LUg0YTQu9Cw0LbQvtC6IDx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz4g0LIg0LzQtdC90Y4gXCLQr9C30YvQuiDQuCDQstCy0L7QtFwiLCDRh9GC0L7QsdGLINC40YHQv9C+0LvRjNC30L7QstCw0YLRjCDRjdGC0L7RgiDRgdC/0L7RgdC+0LEg0LLQstC+0LTQsCDQvdCwINGD0YHRgtGA0L7QudGB0YLQstC1LiI8L3N0cmluZz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzZXR1cF9zdGVwMV9maW5pc2hlZF9pbnN0cnVjdGlvbiAoMTA3NjE0ODIwMDQ5NTc5OTQpIC0tPgorICAgIDxza2lwIC8+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMV9hY3Rpb24iIG1zZ2lkPSI0MzY2NTEzNTM0OTk5OTAxNzI4Ij4i0JLQutC70Y7Rh9C40YLRjCDQsiDQvdCw0YHRgtGA0L7QudC60LDRhSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAyX3RpdGxlIiBtc2dpZD0iNjg2MDcyNTQ0NzkwNjY5MDU5NCI+Ijx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz46INCw0LrRgtC40LLQsNGG0LjRjyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAyX2luc3RydWN0aW9uIiBtc2dpZD0iOTE0MTQ4MTk2NDg3MDAyMzMzNiI+ItCS0YvQsdC10YDQuNGC0LUg0L/RgNC40LvQvtC20LXQvdC40LUgXCI8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+XCIg0LrQsNC6INGC0LXQutGD0YnQuNC5INGB0L/QvtGB0L7QsSDQstCy0L7QtNCwLiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAyX2FjdGlvbiIgbXNnaWQ9IjE2NjAzMzAzMDcxNTk4MjQzMzciPiLQlNGA0YPQs9C+0Lkg0YHQv9C+0YHQvtCxINCy0LLQvtC00LAiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwM190aXRsZSIgbXNnaWQ9IjMxNTQ3NTcxODM2MzE0OTAyODEiPiLQndCw0YHRgtGA0L7QudGC0LUg0LTQvtC/0L7Qu9C90LjRgtC10LvRjNC90YvQtSDRj9C30YvQutC4LiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAzX2luc3RydWN0aW9uIiBtc2dpZD0iODAyNTk4MTgyOTYwNTQyNjAwMCI+ItCi0LXQv9C10YDRjCDQstGLINC80L7QttC10YLQtSDQuNGB0L/QvtC70YzQt9C+0LLQsNGC0Ywg0L/RgNC40LvQvtC20LXQvdC40LUgXCI8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+XCIg0LTQu9GPINC90LDQsdC+0YDQsCDRgtC10LrRgdGC0LAuIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDNfYWN0aW9uIiBtc2dpZD0iNjAwODc5Nzk3MjU2OTQyMjU5Ij4i0J3QsNGB0YLRgNC+0LjRgtGMINC00L7Qv9C+0LvQvdC40YLQtdC70YzQvdGL0LUg0Y/Qt9GL0LrQuCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX2ZpbmlzaF9hY3Rpb24iIG1zZ2lkPSIyNzY1NTkyNDM0MDk0NjUzODkiPiLQk9C+0YLQvtCy0L4iPC9zdHJpbmc+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc2hvd19zZXR1cF93aXphcmRfaWNvbiAoNTAwODAyODU5MDU5MzcxMDgzMCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzaG93X3NldHVwX3dpemFyZF9pY29uX3N1bW1hcnkgKDQxMTk5OTgzMjI1MzY4ODAyMTMpIC0tPgorICAgIDxza2lwIC8+CiAgICAgPHN0cmluZyBuYW1lPSJhcHBfbmFtZSIgbXNnaWQ9IjYzMjAxMDI2Mzc0OTEyMzQ3OTIiPiLQn9C+0YHRgtCw0LLRidC40Log0YHQu9C+0LLQsNGA0LXQuSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRpY3Rpb25hcnlfcHJvdmlkZXJfbmFtZSIgbXNnaWQ9IjMwMjczMTUwNDUzOTczNjMwNzkiPiLQn9C+0YHRgtCw0LLRidC40Log0YHQu9C+0LLQsNGA0LXQuSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRpY3Rpb25hcnlfc2VydmljZV9uYW1lIiBtc2dpZD0iNjIzNzQ3MjM1MDY5MzUxMTQ0OCI+ItCh0LvRg9C20LHQsCDRgdC70L7QstCw0YDQtdC5Ijwvc3RyaW5nPgpAQCAtMjAzLDQgKzIyNCw2IEBACiAgICAgPHN0cmluZyBuYW1lPSJkaWN0X2F2YWlsYWJsZV9ub3RpZmljYXRpb25fdGl0bGUiIG1zZ2lkPSI2NTE0Mjg4NTkxOTU5MTE3Mjg4Ij4i0JTQvtGB0YLRg9C/0LXQvSDRgdC70L7QstCw0YDRjDogPHhsaWZmOmcgaWQ9IkxBTkdVQUdFIj4lMSRzPC94bGlmZjpnPiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRpY3RfYXZhaWxhYmxlX25vdGlmaWNhdGlvbl9kZXNjcmlwdGlvbiIgbXNnaWQ9IjEwNzUxOTQxNjk0NDMxNjM0ODciPiLQndCw0LbQvNC40YLQtSwg0YfRgtC+0LHRiyDQv9GA0L7RgdC80L7RgtGA0LXRgtGMINC4INC30LDQs9GA0YPQt9C40YLRjCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InRvYXN0X2Rvd25sb2FkaW5nX3N1Z2dlc3Rpb25zIiBtc2dpZD0iMTMxMzAyNzM1MzU4ODU2NjY2MCI+ItCX0LDQs9GA0YPQt9C60LAg0YHQu9C+0LLQsNGA0Y86IDx4bGlmZjpnIGlkPSJMQU5HVUFHRSI+JTEkczwveGxpZmY6Zz7igKYiPC9zdHJpbmc+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgdmVyc2lvbl90ZXh0ICgyNzE1MzU0MjE1NTY4NDY5Mzg1KSAtLT4KKyAgICA8c2tpcCAvPgogPC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9qYXZhL3Jlcy92YWx1ZXMtc2svc3RyaW5ncy54bWwgYi9qYXZhL3Jlcy92YWx1ZXMtc2svc3RyaW5ncy54bWwKaW5kZXggYjAxZTMyNS4uZDUwMzY3MyAxMDA2NDQKLS0tIGEvamF2YS9yZXMvdmFsdWVzLXNrL3N0cmluZ3MueG1sCisrKyBiL2phdmEvcmVzL3ZhbHVlcy1zay9zdHJpbmdzLnhtbApAQCAtNTMsNiArNTMsOCBAQAogICAgIDxzdHJpbmcgbmFtZT0idXNlX2RvdWJsZV9zcGFjZV9wZXJpb2Rfc3VtbWFyeSIgbXNnaWQ9IjY1MzI4OTIxODcyNDc5NTI3OTkiPiJEdm9qaXTDvW0ga2xlcG51dMOtbSBuYSBtZWR6ZXJuw61rIHZsb8W+w610ZSBib2RrdSBhIG1lZHplcnUuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYXV0b19jYXAiIG1zZ2lkPSIxNzE5NzQ2Njc0ODU0NjI4MjUyIj4iVmXEvmvDqSBww61zbWVuw6EgYXV0b21hdGlja3kiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJhdXRvX2NhcF9zdW1tYXJ5IiBtc2dpZD0iNzkzNDQ1Mjc2MTAyMjk0Njg3NCI+IlDDrXNhbmllIHBydsOpaG8gc2xvdmEgdiBrYcW+ZGVqIHZldGUgdmXEvmvDvW0gcMOtc21lbm9tIjwvc3RyaW5nPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGVkaXRfcGVyc29uYWxfZGljdGlvbmFyeSAoMzk5NjkxMDAzODk1Mjk0MDQyMCkgLS0+CisgICAgPHNraXAgLz4KICAgICA8c3RyaW5nIG5hbWU9ImNvbmZpZ3VyZV9kaWN0aW9uYXJpZXNfdGl0bGUiIG1zZ2lkPSI0MjM4NjUyMzM4NTU2OTAyMDQ5Ij4iRG9wbG5rb3bDqSBzbG92bsOta3kiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJtYWluX2RpY3Rpb25hcnkiIG1zZ2lkPSI0Nzk4NzYzNzgxODE4MzYxMTY4Ij4iSGxhdm7DvSBzbG92bsOtayI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InByZWZzX3Nob3dfc3VnZ2VzdGlvbnMiIG1zZ2lkPSI4MDI2Nzk5NjYzNDQ1NTMxNjM3Ij4iWm9icmF6acWlIG7DoXZyaHkgb3Byw6F2Ijwvc3RyaW5nPgpAQCAtMTcxLDggKzE3MywyNyBAQAogICAgIDxzdHJpbmcgbmFtZT0icmVhZF9leHRlcm5hbF9kaWN0aW9uYXJ5X2NvbmZpcm1faW5zdGFsbF9tZXNzYWdlIiBtc2dpZD0iNjg5ODYxMDE2Mzc2ODk4MDg3MCI+IkNoY2V0ZSBuYWluxaF0YWxvdmHFpSB0ZW50byBzw7pib3IgcHJlIGphenlrIDx4bGlmZjpnIGlkPSJMT0NBTEVfTkFNRSI+JXM8L3hsaWZmOmc+PyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImVycm9yIiBtc2dpZD0iODk0MDc2MzYyNDY2ODUxMzY0OCI+IlZ5c2t5dGxhIHNhIGNoeWJhIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYnV0dG9uX2RlZmF1bHQiIG1zZ2lkPSIzOTg4MDE3ODQwNDMxODgxNDkxIj4iUHJlZHZvbGVuw6kiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJsYW5ndWFnZV9zZXR0aW5ncyIgbXNnaWQ9IjE2NzExNTMwNTMyMDE4MDkwMzEiPiJKYXp5ayAmYW1wOyB2c3R1cCI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InNlbGVjdF9pbnB1dF9tZXRob2QiIG1zZ2lkPSI0MzAxNjAyMzc0NjA5Mjc1MDAzIj4iWnZvbGnFpSBtZXTDs2R1IHZzdHVwdSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3dlbGNvbWVfdGl0bGUiIG1zZ2lkPSI2MTEyODIxNzA5ODMyMDMxNzE1Ij4iVml0YWp0ZSB2IGFwbGlrw6FjaWkgPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3dlbGNvbWVfYWRkaXRpb25hbF9kZXNjcmlwdGlvbiIgbXNnaWQ9IjgxNTAyNTIwMDg1NDU3Njg5NTMiPiJzIGZ1bmtjaW91IFDDrXNhbmllIGdlc3RhbWkiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGFydF9hY3Rpb24iIG1zZ2lkPSI4OTM2MDM2NDYwODk3MzQ3NzA4Ij4iWmHEjWHFpSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX25leHRfYWN0aW9uIiBtc2dpZD0iMzcxODIxNDM3OTE1MTQ0NjAzIj4ixI5hbMWhw60ga3JvayI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXBzX3RpdGxlIiBtc2dpZD0iNjQwMDM3MzAzNDg3MTgxNjE4MiI+Ik5hc3RhdmVuaWUgYXBsaWvDoWNpZSA8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDFfdGl0bGUiIG1zZ2lkPSIzMTQ3OTY3NjMwMjUzNDYyMzE1Ij4iUG92b8S+dGUgYXBsaWvDoWNpdSA8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDFfaW5zdHJ1Y3Rpb24iIG1zZ2lkPSIyNTc4NjMxOTM2NjI0NjM3MjQxIj4iViBuYXN0YXZlbmlhY2ggdnN0dXB1IGEgamF6eWthIHphxI1pYXJrbml0ZSBwb2zDrcSNa28gPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPi4gVMO9bXRvIGFwbGlrw6FjaWkgcG92b2zDrXRlIHNwdXN0ZW5pZSB2IHphcmlhZGVuw60uIjwvc3RyaW5nPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNldHVwX3N0ZXAxX2ZpbmlzaGVkX2luc3RydWN0aW9uICgxMDc2MTQ4MjAwNDk1Nzk5NCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAxX2FjdGlvbiIgbXNnaWQ9IjQzNjY1MTM1MzQ5OTk5MDE3MjgiPiJQb3ZvbGnFpSB2IE5hc3RhdmVuaWFjaCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAyX3RpdGxlIiBtc2dpZD0iNjg2MDcyNTQ0NzkwNjY5MDU5NCI+IlByZXBuaXRlIG5hIGFwbGlrw6FjaXUgPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPi4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMl9pbnN0cnVjdGlvbiIgbXNnaWQ9IjkxNDE0ODE5NjQ4NzAwMjMzMzYiPiJQb3RvbSB2eWJlcnRlIGFwbGlrw6FjaXUgPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPiBha28gYWt0w612bnUgbWV0w7NkdSB0ZXh0b3bDqWhvIHZzdHVwdS4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMl9hY3Rpb24iIG1zZ2lkPSIxNjYwMzMwMzA3MTU5ODI0MzM3Ij4iUHJlcG7DusWlIG1ldMOzZHUgdnN0dXB1Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDNfdGl0bGUiIG1zZ2lkPSIzMTU0NzU3MTgzNjMxNDkwMjgxIj4iQmxhaG/FvmVsw6FtZSwgdsWhZXRrbyBqZSBuYXN0YXZlbsOpISI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAzX2luc3RydWN0aW9uIiBtc2dpZD0iODAyNTk4MTgyOTYwNTQyNjAwMCI+IlBvbW9jb3UgYXBsaWvDoWNpZSA8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+IHRlcmF6IG3DtMW+ZXRlIHphZMOhdmHFpSB0ZXh0IHZvIHbFoWV0a8O9Y2ggb2LEvsO6YmVuw71jaCBhcGxpa8OhY2nDoWNoLiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAzX2FjdGlvbiIgbXNnaWQ9IjYwMDg3OTc5NzI1Njk0MjI1OSI+Ik5ha29uZmlndXJ1anRlIMSPYWzFoWllIGphenlreSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX2ZpbmlzaF9hY3Rpb24iIG1zZ2lkPSIyNzY1NTkyNDM0MDk0NjUzODkiPiJIb3Rvdm8iPC9zdHJpbmc+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc2hvd19zZXR1cF93aXphcmRfaWNvbiAoNTAwODAyODU5MDU5MzcxMDgzMCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzaG93X3NldHVwX3dpemFyZF9pY29uX3N1bW1hcnkgKDQxMTk5OTgzMjI1MzY4ODAyMTMpIC0tPgorICAgIDxza2lwIC8+CiAgICAgPHN0cmluZyBuYW1lPSJhcHBfbmFtZSIgbXNnaWQ9IjYzMjAxMDI2Mzc0OTEyMzQ3OTIiPiJQb3NreXRvdmF0ZcS+IHNsb3Zuw61rYSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRpY3Rpb25hcnlfcHJvdmlkZXJfbmFtZSIgbXNnaWQ9IjMwMjczMTUwNDUzOTczNjMwNzkiPiJQb3NreXRvdmF0ZcS+IHNsb3Zuw61rYSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRpY3Rpb25hcnlfc2VydmljZV9uYW1lIiBtc2dpZD0iNjIzNzQ3MjM1MDY5MzUxMTQ0OCI+IlNsdcW+YmEgc2xvdm7DrWthIjwvc3RyaW5nPgpAQCAtMjAzLDQgKzIyNCw2IEBACiAgICAgPHN0cmluZyBuYW1lPSJkaWN0X2F2YWlsYWJsZV9ub3RpZmljYXRpb25fdGl0bGUiIG1zZ2lkPSI2NTE0Mjg4NTkxOTU5MTE3Mjg4Ij4iSyBkaXNwb3rDrWNpaSBqZSBzbG92bsOtayBwcmUgamF6eWsgPHhsaWZmOmcgaWQ9IkxBTkdVQUdFIj4lMSRzPC94bGlmZjpnPiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRpY3RfYXZhaWxhYmxlX25vdGlmaWNhdGlvbl9kZXNjcmlwdGlvbiIgbXNnaWQ9IjEwNzUxOTQxNjk0NDMxNjM0ODciPiJTdGxhxI1lbsOtbSBza29udHJvbHVqZXRlIGEgcHJldmV6bWV0ZSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InRvYXN0X2Rvd25sb2FkaW5nX3N1Z2dlc3Rpb25zIiBtc2dpZD0iMTMxMzAyNzM1MzU4ODU2NjY2MCI+IlByZWJlcmFuaWU6IG7DoXZyaHkgcHJlIGphenlrIDx4bGlmZjpnIGlkPSJMQU5HVUFHRSI+JTEkczwveGxpZmY6Zz4gYnVkw7ogxI1vc2tvcm8gayBkaXNwb3rDrWNpaS4iPC9zdHJpbmc+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgdmVyc2lvbl90ZXh0ICgyNzE1MzU0MjE1NTY4NDY5Mzg1KSAtLT4KKyAgICA8c2tpcCAvPgogPC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9qYXZhL3Jlcy92YWx1ZXMtc2wvc3RyaW5ncy54bWwgYi9qYXZhL3Jlcy92YWx1ZXMtc2wvc3RyaW5ncy54bWwKaW5kZXggOTI0M2IxMi4uOWEzODg1NiAxMDA2NDQKLS0tIGEvamF2YS9yZXMvdmFsdWVzLXNsL3N0cmluZ3MueG1sCisrKyBiL2phdmEvcmVzL3ZhbHVlcy1zbC9zdHJpbmdzLnhtbApAQCAtNTMsNiArNTMsOCBAQAogICAgIDxzdHJpbmcgbmFtZT0idXNlX2RvdWJsZV9zcGFjZV9wZXJpb2Rfc3VtbWFyeSIgbXNnaWQ9IjY1MzI4OTIxODcyNDc5NTI3OTkiPiJaIGR2b2puaW0gZG90aWtvbSBwcmVzbGVkbmljZSB2c3Rhdml0ZSBwaWtvIGluIHphIG5qbyBwcmVzbGVkZWsiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJhdXRvX2NhcCIgbXNnaWQ9IjE3MTk3NDY2NzQ4NTQ2MjgyNTIiPiJTYW1vZC4gdmVsaWtlIHphxI1ldG5pY2UiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJhdXRvX2NhcF9zdW1tYXJ5IiBtc2dpZD0iNzkzNDQ1Mjc2MTAyMjk0Njg3NCI+IlBydm8gYmVzZWRvIHN0YXZrYSBwacWhaSB6IHZlbGlrbyB6YcSNZXRuaWNvIjwvc3RyaW5nPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGVkaXRfcGVyc29uYWxfZGljdGlvbmFyeSAoMzk5NjkxMDAzODk1Mjk0MDQyMCkgLS0+CisgICAgPHNraXAgLz4KICAgICA8c3RyaW5nIG5hbWU9ImNvbmZpZ3VyZV9kaWN0aW9uYXJpZXNfdGl0bGUiIG1zZ2lkPSI0MjM4NjUyMzM4NTU2OTAyMDQ5Ij4iRG9kYXRuaSBzbG92YXJqaSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im1haW5fZGljdGlvbmFyeSIgbXNnaWQ9IjQ3OTg3NjM3ODE4MTgzNjExNjgiPiJHbGF2bmkgc2xvdmFyIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icHJlZnNfc2hvd19zdWdnZXN0aW9ucyIgbXNnaWQ9IjgwMjY3OTk2NjM0NDU1MzE2MzciPiJQb2thxb5pIHByZWRsb2dlIHBvcHJhdmtvdiI8L3N0cmluZz4KQEAgLTE3MSw4ICsxNzMsMjcgQEAKICAgICA8c3RyaW5nIG5hbWU9InJlYWRfZXh0ZXJuYWxfZGljdGlvbmFyeV9jb25maXJtX2luc3RhbGxfbWVzc2FnZSIgbXNnaWQ9IjY4OTg2MTAxNjM3Njg5ODA4NzAiPiJaYXJlcyDFvmVsaXRlIG5hbWVzdGl0aSB0byBkYXRvdGVrbyB6YSBqZXppayA8eGxpZmY6ZyBpZD0iTE9DQUxFX05BTUUiPiVzPC94bGlmZjpnPj8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJlcnJvciIgbXNnaWQ9Ijg5NDA3NjM2MjQ2Njg1MTM2NDgiPiJQcmnFoWxvIGplIGRvIG5hcGFrZSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJ1dHRvbl9kZWZhdWx0IiBtc2dpZD0iMzk4ODAxNzg0MDQzMTg4MTQ5MSI+IlByaXZ6ZXRvIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibGFuZ3VhZ2Vfc2V0dGluZ3MiIG1zZ2lkPSIxNjcxMTUzMDUzMjAxODA5MDMxIj4iSmV6aWsgaW4gdm5vcyI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InNlbGVjdF9pbnB1dF9tZXRob2QiIG1zZ2lkPSI0MzAxNjAyMzc0NjA5Mjc1MDAzIj4iSXpiaXJhIG5hxI1pbmEgdm5vc2EiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF93ZWxjb21lX3RpdGxlIiBtc2dpZD0iNjExMjgyMTcwOTgzMjAzMTcxNSI+IlBvemRyYXZsamVuaSB2IGFwbGlrYWNpamkgPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3dlbGNvbWVfYWRkaXRpb25hbF9kZXNjcmlwdGlvbiIgbXNnaWQ9IjgxNTAyNTIwMDg1NDU3Njg5NTMiPiJzIHBpc2FuamVtIHMga3JldG5qYW1pIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RhcnRfYWN0aW9uIiBtc2dpZD0iODkzNjAzNjQ2MDg5NzM0NzcwOCI+IlphxI1uaXRlIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfbmV4dF9hY3Rpb24iIG1zZ2lkPSIzNzE4MjE0Mzc5MTUxNDQ2MDMiPiJOYXNsZWRuamkga29yYWsiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwc190aXRsZSIgbXNnaWQ9IjY0MDAzNzMwMzQ4NzE4MTYxODIiPiJOYXN0YXZpdGV2IGFwbGlrYWNpamUgPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAxX3RpdGxlIiBtc2dpZD0iMzE0Nzk2NzYzMDI1MzQ2MjMxNSI+Ik9tb2dvxI1hbmplIGFwbGlrYWNpamUgPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAxX2luc3RydWN0aW9uIiBtc2dpZD0iMjU3ODYzMTkzNjYyNDYzNzI0MSI+IlYgbmFzdGF2aXR2YWggemEgamV6aWsgaW4gdm5vcyBpemJlcml0ZSBhcGxpa2FjaWpvIMK7PHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPsKrLiBTIHRlbSBqaSBvbW9nb8SNaXRlIGl6dmFqYW5qZSB2IG5hcHJhdmkuIjwvc3RyaW5nPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNldHVwX3N0ZXAxX2ZpbmlzaGVkX2luc3RydWN0aW9uICgxMDc2MTQ4MjAwNDk1Nzk5NCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAxX2FjdGlvbiIgbXNnaWQ9IjQzNjY1MTM1MzQ5OTk5MDE3MjgiPiJPbW9nb8SNaSB2IG5hc3Rhdml0dmFoIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDJfdGl0bGUiIG1zZ2lkPSI2ODYwNzI1NDQ3OTA2NjkwNTk0Ij4iUHJla2xvcCBuYSBhcGxpa2FjaWpvIDx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMl9pbnN0cnVjdGlvbiIgbXNnaWQ9IjkxNDE0ODE5NjQ4NzAwMjMzMzYiPiJOYXRvIGl6YmVyaXRlIGFwbGlrYWNpam8gwrs8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+wqsga290IGFrdGl2bmkgbmHEjWluIHZub3NhIGJlc2VkaWxhLiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAyX2FjdGlvbiIgbXNnaWQ9IjE2NjAzMzAzMDcxNTk4MjQzMzciPiJQcmVrbG9waSBuYcSNaW4gdm5vc2EiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwM190aXRsZSIgbXNnaWQ9IjMxNTQ3NTcxODM2MzE0OTAyODEiPiLEjGVzdGl0YW1vLCBwcmlwcmF2bGplbmkgc3RlLiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAzX2luc3RydWN0aW9uIiBtc2dpZD0iODAyNTk4MTgyOTYwNTQyNjAwMCI+IlpkYWogbGFoa28geiBhcGxpa2FjaWpvIDx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz4gdGlwa2F0ZSB2IHZzZWggc3ZvamloIHByaWxqdWJsamVuaWggYXBsaWthY2lqYWguIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDNfYWN0aW9uIiBtc2dpZD0iNjAwODc5Nzk3MjU2OTQyMjU5Ij4iS29uZmlndXJhY2lqYSBkb2RhdG5paCBqZXppa292Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfZmluaXNoX2FjdGlvbiIgbXNnaWQ9IjI3NjU1OTI0MzQwOTQ2NTM4OSI+IktvbsSNYW5vIjwvc3RyaW5nPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNob3dfc2V0dXBfd2l6YXJkX2ljb24gKDUwMDgwMjg1OTA1OTM3MTA4MzApIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc2hvd19zZXR1cF93aXphcmRfaWNvbl9zdW1tYXJ5ICg0MTE5OTk4MzIyNTM2ODgwMjEzKSAtLT4KKyAgICA8c2tpcCAvPgogICAgIDxzdHJpbmcgbmFtZT0iYXBwX25hbWUiIG1zZ2lkPSI2MzIwMTAyNjM3NDkxMjM0NzkyIj4iUG9udWRuaWsgc2xvdmFyamEiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkaWN0aW9uYXJ5X3Byb3ZpZGVyX25hbWUiIG1zZ2lkPSIzMDI3MzE1MDQ1Mzk3MzYzMDc5Ij4iUG9udWRuaWsgc2xvdmFyamEiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkaWN0aW9uYXJ5X3NlcnZpY2VfbmFtZSIgbXNnaWQ9IjYyMzc0NzIzNTA2OTM1MTE0NDgiPiJTdG9yaXRldiBzbG92YXJqYSI8L3N0cmluZz4KQEAgLTIwMyw0ICsyMjQsNiBAQAogICAgIDxzdHJpbmcgbmFtZT0iZGljdF9hdmFpbGFibGVfbm90aWZpY2F0aW9uX3RpdGxlIiBtc2dpZD0iNjUxNDI4ODU5MTk1OTExNzI4OCI+IlNsb3ZhciBqZSBuYSB2b2xqbyB6YSBqZXppayA8eGxpZmY6ZyBpZD0iTEFOR1VBR0UiPiUxJHM8L3hsaWZmOmc+Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGljdF9hdmFpbGFibGVfbm90aWZpY2F0aW9uX2Rlc2NyaXB0aW9uIiBtc2dpZD0iMTA3NTE5NDE2OTQ0MzE2MzQ4NyI+IlByaXRpc25pdGUgemEgcHJlZ2xlZCBpbiBwcmVub3MiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ0b2FzdF9kb3dubG9hZGluZ19zdWdnZXN0aW9ucyIgbXNnaWQ9IjEzMTMwMjczNTM1ODg1NjY2NjAiPiJQcmVkbG9naSB6YSBwcmVub3MgemEgamV6aWsgPHhsaWZmOmcgaWQ9IkxBTkdVQUdFIj4lMSRzPC94bGlmZjpnPiBib2RvIGttYWx1IHByaXByYXZsamVuaS4iPC9zdHJpbmc+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgdmVyc2lvbl90ZXh0ICgyNzE1MzU0MjE1NTY4NDY5Mzg1KSAtLT4KKyAgICA8c2tpcCAvPgogPC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9qYXZhL3Jlcy92YWx1ZXMtc3Ivc3RyaW5ncy54bWwgYi9qYXZhL3Jlcy92YWx1ZXMtc3Ivc3RyaW5ncy54bWwKaW5kZXggY2VkZTY3Yy4uOTYyMDljYyAxMDA2NDQKLS0tIGEvamF2YS9yZXMvdmFsdWVzLXNyL3N0cmluZ3MueG1sCisrKyBiL2phdmEvcmVzL3ZhbHVlcy1zci9zdHJpbmdzLnhtbApAQCAtNTMsNiArNTMsOCBAQAogICAgIDxzdHJpbmcgbmFtZT0idXNlX2RvdWJsZV9zcGFjZV9wZXJpb2Rfc3VtbWFyeSIgbXNnaWQ9IjY1MzI4OTIxODcyNDc5NTI3OTkiPiLQlNCy0L7RgdGC0YDRg9C60LjQvCDQtNC+0LTQuNGA0L7QvCDRgNCw0LfQvNCw0LrQsCDRg9C80LXRm9C1INGB0LUg0YLQsNGH0LrQsCDQv9GA0LDRm9C10L3QsCDRgNCw0LfQvNCw0LrQvtC8Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYXV0b19jYXAiIG1zZ2lkPSIxNzE5NzQ2Njc0ODU0NjI4MjUyIj4i0JDRg9GC0L7QvNCw0YLRgdC60Lgg0YPQvdC+0YEg0LLQtdC70LjQutC40YUg0YHQu9C+0LLQsCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImF1dG9fY2FwX3N1bW1hcnkiIG1zZ2lkPSI3OTM0NDUyNzYxMDIyOTQ2ODc0Ij4i0J/QuNGB0LDRmtC1INCy0LXQu9C40LrQvtCzINGB0LvQvtCy0LAg0L3QsCDQv9C+0YfQtdGC0LrRgyDRgdCy0LDQutC1INGA0LXRh9C10L3QuNGG0LUiPC9zdHJpbmc+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgZWRpdF9wZXJzb25hbF9kaWN0aW9uYXJ5ICgzOTk2OTEwMDM4OTUyOTQwNDIwKSAtLT4KKyAgICA8c2tpcCAvPgogICAgIDxzdHJpbmcgbmFtZT0iY29uZmlndXJlX2RpY3Rpb25hcmllc190aXRsZSIgbXNnaWQ9IjQyMzg2NTIzMzg1NTY5MDIwNDkiPiLQn9C+0LzQvtGb0L3QuCDRgNC10YfQvdC40YbQuCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im1haW5fZGljdGlvbmFyeSIgbXNnaWQ9IjQ3OTg3NjM3ODE4MTgzNjExNjgiPiLQk9C70LDQstC90Lgg0YDQtdGH0L3QuNC6Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icHJlZnNfc2hvd19zdWdnZXN0aW9ucyIgbXNnaWQ9IjgwMjY3OTk2NjM0NDU1MzE2MzciPiLQn9GA0LjQutCw0LbQuCDQv9GA0LXQtNC70L7Qs9C1INC30LAg0LjRgdC/0YDQsNCy0LrRgyI8L3N0cmluZz4KQEAgLTE3MSw4ICsxNzMsMjcgQEAKICAgICA8c3RyaW5nIG5hbWU9InJlYWRfZXh0ZXJuYWxfZGljdGlvbmFyeV9jb25maXJtX2luc3RhbGxfbWVzc2FnZSIgbXNnaWQ9IjY4OTg2MTAxNjM3Njg5ODA4NzAiPiLQltC10LvQuNGC0LUg0LvQuCDRgdGC0LLQsNGA0L3QviDQtNCwINC40L3RgdGC0LDQu9C40YDQsNGC0LUg0L7QstGDINC00LDRgtC+0YLQtdC60YMg0LfQsCA8eGxpZmY6ZyBpZD0iTE9DQUxFX05BTUUiPiVzPC94bGlmZjpnPj8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJlcnJvciIgbXNnaWQ9Ijg5NDA3NjM2MjQ2Njg1MTM2NDgiPiLQlNC+0YjQu9C+INGY0LUg0LTQviDQs9GA0LXRiNC60LUiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJidXR0b25fZGVmYXVsdCIgbXNnaWQ9IjM5ODgwMTc4NDA0MzE4ODE0OTEiPiLQn9C+0LTRgNCw0LfRg9C80LXQstCw0L3QviI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Imxhbmd1YWdlX3NldHRpbmdzIiBtc2dpZD0iMTY3MTE1MzA1MzIwMTgwOTAzMSI+ItCI0LXQt9C40Log0Lgg0YPQvdC+0YEiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJzZWxlY3RfaW5wdXRfbWV0aG9kIiBtc2dpZD0iNDMwMTYwMjM3NDYwOTI3NTAwMyI+ItCY0LfQsdC+0YAg0LzQtdGC0L7QtNCwINGD0L3QvtGB0LAiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF93ZWxjb21lX3RpdGxlIiBtc2dpZD0iNjExMjgyMTcwOTgzMjAzMTcxNSI+ItCU0L7QsdGA0L4g0LTQvtGI0LvQuCDRgyA8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfd2VsY29tZV9hZGRpdGlvbmFsX2Rlc2NyaXB0aW9uIiBtc2dpZD0iODE1MDI1MjAwODU0NTc2ODk1MyI+ItC/0L7QvNC+0ZvRgyDQmtGD0YbQsNGa0LAg0L/QvtC60YDQtdGC0LjQvNCwIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RhcnRfYWN0aW9uIiBtc2dpZD0iODkzNjAzNjQ2MDg5NzM0NzcwOCI+ItCX0LDQv9C+0YfQvdC40LzQviI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX25leHRfYWN0aW9uIiBtc2dpZD0iMzcxODIxNDM3OTE1MTQ0NjAzIj4i0KHQu9C10LTQtdGb0Lgg0LrQvtGA0LDQuiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXBzX3RpdGxlIiBtc2dpZD0iNjQwMDM3MzAzNDg3MTgxNjE4MiI+ItCf0L7QtNC10YjQsNCy0LDRmtC1INCw0L/Qu9C40LrQsNGG0LjRmNC1IDx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMV90aXRsZSIgbXNnaWQ9IjMxNDc5Njc2MzAyNTM0NjIzMTUiPiLQntC80L7Qs9GD0ZvQuNGC0LUg0LDQv9C70LjQutCw0YbQuNGY0YMgPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAxX2luc3RydWN0aW9uIiBtc2dpZD0iMjU3ODYzMTkzNjYyNDYzNzI0MSI+ItCf0L7RgtCy0YDQtNC40YLQtSDQsNC/0LvQuNC60LDRhtC40ZjRgyDigJ48eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+4oCcINGDINCf0L7QtNC10YjQsNCy0LDRmtC40LzQsCDRmNC10LfQuNC60LAg0Lgg0YPQvdC+0YHQsC4g0KLQsNC60L4g0ZjQvtGYINC+0LTQvtCx0YDQsNCy0LDRgtC1INC/0L7QutGA0LXRgtCw0ZrQtSDQvdCwINGD0YDQtdGS0LDRmNGDLiI8L3N0cmluZz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzZXR1cF9zdGVwMV9maW5pc2hlZF9pbnN0cnVjdGlvbiAoMTA3NjE0ODIwMDQ5NTc5OTQpIC0tPgorICAgIDxza2lwIC8+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMV9hY3Rpb24iIG1zZ2lkPSI0MzY2NTEzNTM0OTk5OTAxNzI4Ij4i0J7QvNC+0LPRg9Gb0Lgg0YMg0J/QvtC00LXRiNCw0LLQsNGa0LjQvNCwIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDJfdGl0bGUiIG1zZ2lkPSI2ODYwNzI1NDQ3OTA2NjkwNTk0Ij4i0J/RgNC10LHQsNGG0LjRgtC1INC90LAgPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAyX2luc3RydWN0aW9uIiBtc2dpZD0iOTE0MTQ4MTk2NDg3MDAyMzMzNiI+ItCX0LDRgtC40Lwg0LjQt9Cw0LHQtdGA0LjRgtC1IOKAnjx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz7igJwg0LrQsNC+INCw0LrRgtC40LLQvdC4INC80LXRgtC+0LQg0YPQvdC+0YHQsCDRgtC10LrRgdGC0LAuIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDJfYWN0aW9uIiBtc2dpZD0iMTY2MDMzMDMwNzE1OTgyNDMzNyI+ItCf0YDQtdCx0LDRhtC4INC80LXRgtC+0LTQtSDRg9C90L7RgdCwIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDNfdGl0bGUiIG1zZ2lkPSIzMTU0NzU3MTgzNjMxNDkwMjgxIj4i0KfQtdGB0YLQuNGC0LDQvNC+LCDRgdCy0LUg0ZjQtSDRgdC/0YDQtdC80L3QviEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwM19pbnN0cnVjdGlvbiIgbXNnaWQ9IjgwMjU5ODE4Mjk2MDU0MjYwMDAiPiLQodCw0LTQsCDQvNC+0LbQtdGC0LUg0LTQsCDQutGD0YbQsNGC0LUg0YMg0YHQstC40Lwg0L7QvNC40ZnQtdC90LjQvCDQsNC/0LvQuNC60LDRhtC40ZjQsNC80LAg0L/QvtC80L7Rm9GDIDx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz4uIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDNfYWN0aW9uIiBtc2dpZD0iNjAwODc5Nzk3MjU2OTQyMjU5Ij4i0JrQvtC90YTQuNCz0YPRgNC40YjQuCDQtNC+0LTQsNGC0L3QtSDRmNC10LfQuNC60LUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9maW5pc2hfYWN0aW9uIiBtc2dpZD0iMjc2NTU5MjQzNDA5NDY1Mzg5Ij4i0JfQsNCy0YDRiNC10L3QviI8L3N0cmluZz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzaG93X3NldHVwX3dpemFyZF9pY29uICg1MDA4MDI4NTkwNTkzNzEwODMwKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNob3dfc2V0dXBfd2l6YXJkX2ljb25fc3VtbWFyeSAoNDExOTk5ODMyMjUzNjg4MDIxMykgLS0+CisgICAgPHNraXAgLz4KICAgICA8c3RyaW5nIG5hbWU9ImFwcF9uYW1lIiBtc2dpZD0iNjMyMDEwMjYzNzQ5MTIzNDc5MiI+ItCU0L7QsdCw0LLRmdCw0Ycg0YDQtdGH0L3QuNC60LAiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkaWN0aW9uYXJ5X3Byb3ZpZGVyX25hbWUiIG1zZ2lkPSIzMDI3MzE1MDQ1Mzk3MzYzMDc5Ij4i0JTQvtCx0LDQstGZ0LDRhyDRgNC10YfQvdC40LrQsCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRpY3Rpb25hcnlfc2VydmljZV9uYW1lIiBtc2dpZD0iNjIzNzQ3MjM1MDY5MzUxMTQ0OCI+ItCj0YHQu9GD0LPQsCDRgNC10YfQvdC40LrQsCI8L3N0cmluZz4KQEAgLTIwMyw0ICsyMjQsNiBAQAogICAgIDxzdHJpbmcgbmFtZT0iZGljdF9hdmFpbGFibGVfbm90aWZpY2F0aW9uX3RpdGxlIiBtc2dpZD0iNjUxNDI4ODU5MTk1OTExNzI4OCI+ItCg0LXRh9C90LjQuiDRmNC1INC00L7RgdGC0YPQv9Cw0L0g0LfQsCA8eGxpZmY6ZyBpZD0iTEFOR1VBR0UiPiUxJHM8L3hsaWZmOmc+Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGljdF9hdmFpbGFibGVfbm90aWZpY2F0aW9uX2Rlc2NyaXB0aW9uIiBtc2dpZD0iMTA3NTE5NDE2OTQ0MzE2MzQ4NyI+ItCf0YDQuNGC0LjRgdC90LjRgtC1INC30LAg0L/RgNC10LPQu9C10LQg0Lgg0L/RgNC10YPQt9C40LzQsNGa0LUiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ0b2FzdF9kb3dubG9hZGluZ19zdWdnZXN0aW9ucyIgbXNnaWQ9IjEzMTMwMjczNTM1ODg1NjY2NjAiPiLQn9GA0LXRg9C30LjQvNCw0ZrQtTog0J/RgNC10LTQu9C+0LfQuCDQt9CwIDx4bGlmZjpnIGlkPSJMQU5HVUFHRSI+JTEkczwveGxpZmY6Zz4g0ZvQtSDRg9GB0LrQvtGA0L4g0LHQuNGC0Lgg0YHQv9GA0LXQvNC90LguIjwvc3RyaW5nPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHZlcnNpb25fdGV4dCAoMjcxNTM1NDIxNTU2ODQ2OTM4NSkgLS0+CisgICAgPHNraXAgLz4KIDwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvamF2YS9yZXMvdmFsdWVzLXN2L3N0cmluZ3MueG1sIGIvamF2YS9yZXMvdmFsdWVzLXN2L3N0cmluZ3MueG1sCmluZGV4IDhhYzZjMmMuLjAwNDNiMTMgMTAwNjQ0Ci0tLSBhL2phdmEvcmVzL3ZhbHVlcy1zdi9zdHJpbmdzLnhtbAorKysgYi9qYXZhL3Jlcy92YWx1ZXMtc3Yvc3RyaW5ncy54bWwKQEAgLTUzLDYgKzUzLDggQEAKICAgICA8c3RyaW5nIG5hbWU9InVzZV9kb3VibGVfc3BhY2VfcGVyaW9kX3N1bW1hcnkiIG1zZ2lkPSI2NTMyODkyMTg3MjQ3OTUyNzk5Ij4iRHViYmVsdCBibGFua3N0ZWcgZ2VyIGVuIHB1bmt0IGbDtmxqdCBhdiBtZWxsYW5zbGFnIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYXV0b19jYXAiIG1zZ2lkPSIxNzE5NzQ2Njc0ODU0NjI4MjUyIj4iQXV0b21hdGlza2EgdmVyc2FsZXIiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJhdXRvX2NhcF9zdW1tYXJ5IiBtc2dpZD0iNzkzNDQ1Mjc2MTAyMjk0Njg3NCI+IkF1dG9tYXRpc2sgc3RvciBib2tzdGF2IGbDtnJzdCBpIHZhcmplIG1lbmluZyI8L3N0cmluZz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBlZGl0X3BlcnNvbmFsX2RpY3Rpb25hcnkgKDM5OTY5MTAwMzg5NTI5NDA0MjApIC0tPgorICAgIDxza2lwIC8+CiAgICAgPHN0cmluZyBuYW1lPSJjb25maWd1cmVfZGljdGlvbmFyaWVzX3RpdGxlIiBtc2dpZD0iNDIzODY1MjMzODU1NjkwMjA0OSI+IlRpbGzDpGdnc29yZGxpc3RvciI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im1haW5fZGljdGlvbmFyeSIgbXNnaWQ9IjQ3OTg3NjM3ODE4MTgzNjExNjgiPiJIdXZ1ZG9yZGxpc3RhbiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InByZWZzX3Nob3dfc3VnZ2VzdGlvbnMiIG1zZ2lkPSI4MDI2Nzk5NjYzNDQ1NTMxNjM3Ij4iVmlzYSByw6R0dG5pbmdzZsO2cnNsYWciPC9zdHJpbmc+CkBAIC0xNzEsOCArMTczLDI3IEBACiAgICAgPHN0cmluZyBuYW1lPSJyZWFkX2V4dGVybmFsX2RpY3Rpb25hcnlfY29uZmlybV9pbnN0YWxsX21lc3NhZ2UiIG1zZ2lkPSI2ODk4NjEwMTYzNzY4OTgwODcwIj4iVmlsbCBkdSB2ZXJrbGlnZW4gaW5zdGFsbGVyYSBmaWxlbiBmw7ZyIDx4bGlmZjpnIGlkPSJMT0NBTEVfTkFNRSI+JXM8L3hsaWZmOmc+PyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImVycm9yIiBtc2dpZD0iODk0MDc2MzYyNDY2ODUxMzY0OCI+IkV0dCBmZWwgdXBwc3RvZCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJ1dHRvbl9kZWZhdWx0IiBtc2dpZD0iMzk4ODAxNzg0MDQzMTg4MTQ5MSI+IlN0YW5kYXJkIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibGFuZ3VhZ2Vfc2V0dGluZ3MiIG1zZ2lkPSIxNjcxMTUzMDUzMjAxODA5MDMxIj4iU3Byw6VrICZhbXA7IGlubWF0bmluZyI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InNlbGVjdF9pbnB1dF9tZXRob2QiIG1zZ2lkPSI0MzAxNjAyMzc0NjA5Mjc1MDAzIj4iVsOkbGogaW5tYXRuaW5nc21ldG9kIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfd2VsY29tZV90aXRsZSIgbXNnaWQ9IjYxMTI4MjE3MDk4MzIwMzE3MTUiPiJWw6Rsa29tbWVuIHRpbGwgPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3dlbGNvbWVfYWRkaXRpb25hbF9kZXNjcmlwdGlvbiIgbXNnaWQ9IjgxNTAyNTIwMDg1NDU3Njg5NTMiPiJtZWQgc3ZlcHNrcml2bmluZyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0YXJ0X2FjdGlvbiIgbXNnaWQ9Ijg5MzYwMzY0NjA4OTczNDc3MDgiPiJLb20gaWfDpW5nIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfbmV4dF9hY3Rpb24iIG1zZ2lkPSIzNzE4MjE0Mzc5MTUxNDQ2MDMiPiJOw6RzdGEgc3RlZyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXBzX3RpdGxlIiBtc2dpZD0iNjQwMDM3MzAzNDg3MTgxNjE4MiI+IktvbmZpZ3VyZXJhIDx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMV90aXRsZSIgbXNnaWQ9IjMxNDc5Njc2MzAyNTM0NjIzMTUiPiJBa3RpdmVyYSA8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDFfaW5zdHJ1Y3Rpb24iIG1zZ2lkPSIyNTc4NjMxOTM2NjI0NjM3MjQxIj4iTWFya2VyYSA8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+IGkgaW5zdMOkbGxuaW5nYXJuYSBmw7ZyIHNwcsOlayBvY2ggaW5tYXRuaW5nIHPDpSBhdHQgYXBwZW4ga2FuIGvDtnJhcy4iPC9zdHJpbmc+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc2V0dXBfc3RlcDFfZmluaXNoZWRfaW5zdHJ1Y3Rpb24gKDEwNzYxNDgyMDA0OTU3OTk0KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDFfYWN0aW9uIiBtc2dpZD0iNDM2NjUxMzUzNDk5OTkwMTcyOCI+IkFrdGl2ZXJhIGkgaW5zdMOkbGxuaW5nYXJuYSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAyX3RpdGxlIiBtc2dpZD0iNjg2MDcyNTQ0NzkwNjY5MDU5NCI+IkJ5dCB0aWxsIDx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMl9pbnN0cnVjdGlvbiIgbXNnaWQ9IjkxNDE0ODE5NjQ4NzAwMjMzMzYiPiJWw6RsaiBzZWRhbiA8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+IHNvbSBkaW4gYWt0aXZhIHRleHRpbm1hdG5pbmdzbWV0b2QuIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDJfYWN0aW9uIiBtc2dpZD0iMTY2MDMzMDMwNzE1OTgyNDMzNyI+IkJ5dCBpbm1hdG5pbmdzbWV0b2QiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwM190aXRsZSIgbXNnaWQ9IjMxNTQ3NTcxODM2MzE0OTAyODEiPiJHcmF0dGlzISBOdSDDpHIgZGV0IGtsYXJ0LiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAzX2luc3RydWN0aW9uIiBtc2dpZD0iODAyNTk4MTgyOTYwNTQyNjAwMCI+Ik51IGthbiBkdSBza3JpdmEgaSBhbGxhIGRpbmEgZmF2b3JpdGFwcGFyIG1lZCA8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+LiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAzX2FjdGlvbiIgbXNnaWQ9IjYwMDg3OTc5NzI1Njk0MjI1OSI+IktvbmZpZ3VyZXJhIHl0dGVybGlnYXJlIHNwcsOlayI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX2ZpbmlzaF9hY3Rpb24iIG1zZ2lkPSIyNzY1NTkyNDM0MDk0NjUzODkiPiJTbHV0ZsO2cmRhIjwvc3RyaW5nPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNob3dfc2V0dXBfd2l6YXJkX2ljb24gKDUwMDgwMjg1OTA1OTM3MTA4MzApIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc2hvd19zZXR1cF93aXphcmRfaWNvbl9zdW1tYXJ5ICg0MTE5OTk4MzIyNTM2ODgwMjEzKSAtLT4KKyAgICA8c2tpcCAvPgogICAgIDxzdHJpbmcgbmFtZT0iYXBwX25hbWUiIG1zZ2lkPSI2MzIwMTAyNjM3NDkxMjM0NzkyIj4iRGljdGlvbmFyeSBQcm92aWRlciI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRpY3Rpb25hcnlfcHJvdmlkZXJfbmFtZSIgbXNnaWQ9IjMwMjczMTUwNDUzOTczNjMwNzkiPiJEaWN0aW9uYXJ5IFByb3ZpZGVyIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGljdGlvbmFyeV9zZXJ2aWNlX25hbWUiIG1zZ2lkPSI2MjM3NDcyMzUwNjkzNTExNDQ4Ij4iT3JkbGlzdGV0asOkbnN0Ijwvc3RyaW5nPgpAQCAtMjAzLDQgKzIyNCw2IEBACiAgICAgPHN0cmluZyBuYW1lPSJkaWN0X2F2YWlsYWJsZV9ub3RpZmljYXRpb25fdGl0bGUiIG1zZ2lkPSI2NTE0Mjg4NTkxOTU5MTE3Mjg4Ij4iRW4gb3JkbGlzdGEgw6RyIHRpbGxnw6RuZ2xpZyBmw7ZyIDx4bGlmZjpnIGlkPSJMQU5HVUFHRSI+JTEkczwveGxpZmY6Zz4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkaWN0X2F2YWlsYWJsZV9ub3RpZmljYXRpb25fZGVzY3JpcHRpb24iIG1zZ2lkPSIxMDc1MTk0MTY5NDQzMTYzNDg3Ij4iVHJ5Y2sgb20gZHUgdmlsbCBncmFuc2thIG9jaCBow6RtdGEiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ0b2FzdF9kb3dubG9hZGluZ19zdWdnZXN0aW9ucyIgbXNnaWQ9IjEzMTMwMjczNTM1ODg1NjY2NjAiPiJIw6RtdGFyOiBmw7Zyc2xhZyBmw7ZyIDx4bGlmZjpnIGlkPSJMQU5HVUFHRSI+JTEkczwveGxpZmY6Zz4gw6RyIHNuYXJ0IGtsYXJhLiI8L3N0cmluZz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciB2ZXJzaW9uX3RleHQgKDI3MTUzNTQyMTU1Njg0NjkzODUpIC0tPgorICAgIDxza2lwIC8+CiA8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL2phdmEvcmVzL3ZhbHVlcy1zdy9zdHJpbmdzLnhtbCBiL2phdmEvcmVzL3ZhbHVlcy1zdy9zdHJpbmdzLnhtbAppbmRleCA4NzAyNjAxLi4xNjNiYTY5IDEwMDY0NAotLS0gYS9qYXZhL3Jlcy92YWx1ZXMtc3cvc3RyaW5ncy54bWwKKysrIGIvamF2YS9yZXMvdmFsdWVzLXN3L3N0cmluZ3MueG1sCkBAIC01Myw2ICs1Myw4IEBACiAgICAgPHN0cmluZyBuYW1lPSJ1c2VfZG91YmxlX3NwYWNlX3BlcmlvZF9zdW1tYXJ5IiBtc2dpZD0iNjUzMjg5MjE4NzI0Nzk1Mjc5OSI+Ikt1Z29uZ2EgbWFyYSBtYmlsaSBrd2VueWUgdXBhdSBuYWZhc2kga3VuYWluZ2l6YSBraXRvbmUga2lraWZ1YXRpd2EgbmEgbmFmYXNpIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYXV0b19jYXAiIG1zZ2lkPSIxNzE5NzQ2Njc0ODU0NjI4MjUyIj4iVXdla2FqaSB3YSBoZXJ1Zmkga3Vid2Ega2lvdG9tYXRpa2kiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJhdXRvX2NhcF9zdW1tYXJ5IiBtc2dpZD0iNzkzNDQ1Mjc2MTAyMjk0Njg3NCI+IkZhbnlhIGhlcnVmaSBrdWJ3YSBuZW5vIGxhIGt3YW56YSBsYSBraWxhIHNlbnRlbnNpIjwvc3RyaW5nPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGVkaXRfcGVyc29uYWxfZGljdGlvbmFyeSAoMzk5NjkxMDAzODk1Mjk0MDQyMCkgLS0+CisgICAgPHNraXAgLz4KICAgICA8c3RyaW5nIG5hbWU9ImNvbmZpZ3VyZV9kaWN0aW9uYXJpZXNfdGl0bGUiIG1zZ2lkPSI0MjM4NjUyMzM4NTU2OTAyMDQ5Ij4iTnlvbmdlemEgemEga2FtdXNpIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ibWFpbl9kaWN0aW9uYXJ5IiBtc2dpZD0iNDc5ODc2Mzc4MTgxODM2MTE2OCI+IkthbXVzaSBrdXUiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwcmVmc19zaG93X3N1Z2dlc3Rpb25zIiBtc2dpZD0iODAyNjc5OTY2MzQ0NTUzMTYzNyI+Ik9ueWVzaGEgbWFwZW5kZWtlem8geWEgbWFyZWtlYmlzaG8iPC9zdHJpbmc+CkBAIC0xNzEsOCArMTczLDI3IEBACiAgICAgPHN0cmluZyBuYW1lPSJyZWFkX2V4dGVybmFsX2RpY3Rpb25hcnlfY29uZmlybV9pbnN0YWxsX21lc3NhZ2UiIG1zZ2lkPSI2ODk4NjEwMTYzNzY4OTgwODcwIj4iSXNha2luaXNoZSBmYWlsaSBoaWkga3dhIDx4bGlmZjpnIGlkPSJMT0NBTEVfTkFNRSI+JXM8L3hsaWZmOmc+IGt3ZWxpPyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImVycm9yIiBtc2dpZD0iODk0MDc2MzYyNDY2ODUxMzY0OCI+Ikt1bGlrdXdhIG5hIGhpdGlsYWZ1Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYnV0dG9uX2RlZmF1bHQiIG1zZ2lkPSIzOTg4MDE3ODQwNDMxODgxNDkxIj4iQ2hhZ3VvLW1zaW5naSI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Imxhbmd1YWdlX3NldHRpbmdzIiBtc2dpZD0iMTY3MTE1MzA1MzIwMTgwOTAzMSI+Ikx1Z2hhIG5hIHVpbmdpemFqaSI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InNlbGVjdF9pbnB1dF9tZXRob2QiIG1zZ2lkPSI0MzAxNjAyMzc0NjA5Mjc1MDAzIj4iQ2hhZ3VhIG1iaW51IHlhIGt1aW5naXphIGRhdGEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF93ZWxjb21lX3RpdGxlIiBtc2dpZD0iNjExMjgyMTcwOTgzMjAzMTcxNSI+IkthcmlidSBrd2VueWUgPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3dlbGNvbWVfYWRkaXRpb25hbF9kZXNjcmlwdGlvbiIgbXNnaWQ9IjgxNTAyNTIwMDg1NDU3Njg5NTMiPiJrd2EgS3VhbmRpa2Ega3dhIGlzaGFyYSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0YXJ0X2FjdGlvbiIgbXNnaWQ9Ijg5MzYwMzY0NjA4OTczNDc3MDgiPiJBbnphIGt1dHVtaWEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9uZXh0X2FjdGlvbiIgbXNnaWQ9IjM3MTgyMTQzNzkxNTE0NDYwMyI+IkhhdHVhIGluYXlvZnVhdGEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwc190aXRsZSIgbXNnaWQ9IjY0MDAzNzMwMzQ4NzE4MTYxODIiPiJJbmFzYW5pZGkgPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAxX3RpdGxlIiBtc2dpZD0iMzE0Nzk2NzYzMDI1MzQ2MjMxNSI+Ildhc2hhIDx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMV9pbnN0cnVjdGlvbiIgbXNnaWQ9IjI1Nzg2MzE5MzY2MjQ2MzcyNDEiPiJUYWZhZGhhbGkgYW5nYWxpYSBcIjx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz5cIiBrYXRpa2EgbHVnaGEgeWFrbyBuYSBtaXBhbmdpbGlvIHlhIGt1aW5naXphLiBIaWkgaXRhaWRoaW5pc2hhIGlsaSBpZW5kZXNod2Uga3dlbnllIGtpZmFhIGNoYWtvLiI8L3N0cmluZz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzZXR1cF9zdGVwMV9maW5pc2hlZF9pbnN0cnVjdGlvbiAoMTA3NjE0ODIwMDQ5NTc5OTQpIC0tPgorICAgIDxza2lwIC8+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMV9hY3Rpb24iIG1zZ2lkPSI0MzY2NTEzNTM0OTk5OTAxNzI4Ij4iV2FzaGEga2F0aWthIE1pcGFuZ2lsaW8iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMl90aXRsZSIgbXNnaWQ9IjY4NjA3MjU0NDc5MDY2OTA1OTQiPiJCYWRpbGlzaGEga3dlbmRhIDx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMl9pbnN0cnVjdGlvbiIgbXNnaWQ9IjkxNDE0ODE5NjQ4NzAwMjMzMzYiPiJLaXNoYSwgY2hhZ3VhIFwiPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPlwiIGthbWEgbWJpbnUgeWFrbyBpbmF5b3R1bWlrYSB5YSBrdWluZ2l6YSBkYXRhIHlhIG1hYW5kaXNoaS4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMl9hY3Rpb24iIG1zZ2lkPSIxNjYwMzMwMzA3MTU5ODI0MzM3Ij4iQmFkaWxpc2hhIG1iaW51IHphIGt1aW5naXphIGRhdGEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwM190aXRsZSIgbXNnaWQ9IjMxNTQ3NTcxODM2MzE0OTAyODEiPiJIb25nZXJhLCB1a28gdGF5YXJpISI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAzX2luc3RydWN0aW9uIiBtc2dpZD0iODAyNTk4MTgyOTYwNTQyNjAwMCI+IlNhc2EgdW5hd2V6YSBrdWNoYXBhIHByb2dyYW11IHpha28gem90ZSB1emlwZW5kYXpvIHVraXR1bWlhIDx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz4uIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDNfYWN0aW9uIiBtc2dpZD0iNjAwODc5Nzk3MjU2OTQyMjU5Ij4iU2FuaWRpIGx1Z2hhIHphIHppYWRhIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfZmluaXNoX2FjdGlvbiIgbXNnaWQ9IjI3NjU1OTI0MzQwOTQ2NTM4OSI+IkltZW1hbGl6YSI8L3N0cmluZz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzaG93X3NldHVwX3dpemFyZF9pY29uICg1MDA4MDI4NTkwNTkzNzEwODMwKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNob3dfc2V0dXBfd2l6YXJkX2ljb25fc3VtbWFyeSAoNDExOTk5ODMyMjUzNjg4MDIxMykgLS0+CisgICAgPHNraXAgLz4KICAgICA8c3RyaW5nIG5hbWU9ImFwcF9uYW1lIiBtc2dpZD0iNjMyMDEwMjYzNzQ5MTIzNDc5MiI+IlByb2dyYW11IHlhIGthbXVzaSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRpY3Rpb25hcnlfcHJvdmlkZXJfbmFtZSIgbXNnaWQ9IjMwMjczMTUwNDUzOTczNjMwNzkiPiJQcm9ncmFtdSB5YSBrYW11c2kiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkaWN0aW9uYXJ5X3NlcnZpY2VfbmFtZSIgbXNnaWQ9IjYyMzc0NzIzNTA2OTM1MTE0NDgiPiJIdWR1bWEgeWEgS2FtdXNpIjwvc3RyaW5nPgpAQCAtMjAzLDQgKzIyNCw2IEBACiAgICAgPHN0cmluZyBuYW1lPSJkaWN0X2F2YWlsYWJsZV9ub3RpZmljYXRpb25fdGl0bGUiIG1zZ2lkPSI2NTE0Mjg4NTkxOTU5MTE3Mjg4Ij4iS2FtdXNpIHlhIDx4bGlmZjpnIGlkPSJMQU5HVUFHRSI+JTEkczwveGxpZmY6Zz4gaW5hcGF0aWthbmEiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkaWN0X2F2YWlsYWJsZV9ub3RpZmljYXRpb25fZGVzY3JpcHRpb24iIG1zZ2lkPSIxMDc1MTk0MTY5NDQzMTYzNDg3Ij4iQm9ueWV6YSBpbGkga3VrYWd1YSBuYSBrdXBha3VhIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idG9hc3RfZG93bmxvYWRpbmdfc3VnZ2VzdGlvbnMiIG1zZ2lkPSIxMzEzMDI3MzUzNTg4NTY2NjYwIj4iSW5hcGFrdWE6IG1hcGVuZGVrZXpvIHlhIDx4bGlmZjpnIGlkPSJMQU5HVUFHRSI+JTEkczwveGxpZmY6Zz4geWF0YWt1d2EgdGF5YXJpIGhpdmkga2FyaWJ1bmkuIjwvc3RyaW5nPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHZlcnNpb25fdGV4dCAoMjcxNTM1NDIxNTU2ODQ2OTM4NSkgLS0+CisgICAgPHNraXAgLz4KIDwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvamF2YS9yZXMvdmFsdWVzLXN3NjAwZHAtbGFuZC9zZXR1cC1kaW1lbnMueG1sIGIvamF2YS9yZXMvdmFsdWVzLXN3NjAwZHAtbGFuZC9zZXR1cC1kaW1lbnMueG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YWVhMjE0Li4wMDAwMDAwCi0tLSBhL2phdmEvcmVzL3ZhbHVlcy1zdzYwMGRwLWxhbmQvc2V0dXAtZGltZW5zLnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDIwICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Ci08IS0tIENvcHlyaWdodCAoQykgMjAxMyBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0Ci0KLSAgICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Ci0gICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KLSAgICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0KLSAgICAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLQotICAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0gICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0gICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgotICAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCi0gICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotLS0+Ci0KLTxyZXNvdXJjZXMgeG1sbnM6YW5kcm9pZD0iaHR0cDovL3NjaGVtYXMuYW5kcm9pZC5jb20vYXBrL3Jlcy9hbmRyb2lkIj4KLSAgICA8ZGltZW4gbmFtZT0ic2V0dXBfdGl0bGVfdGV4dF9zaXplIj42NHNwPC9kaW1lbj4KLSAgICA8ZGltZW4gbmFtZT0ic2V0dXBfaG9yaXpvbnRhbF9wYWRkaW5nIj45NmRwPC9kaW1lbj4KLTwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvamF2YS9yZXMvdmFsdWVzLXN3NzY4ZHAtbGFuZC9zZXR1cC1kaW1lbnMueG1sIGIvamF2YS9yZXMvdmFsdWVzLXN3NzY4ZHAtbGFuZC9zZXR1cC1kaW1lbnMueG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZDJhZjE3Li4wMDAwMDAwCi0tLSBhL2phdmEvcmVzL3ZhbHVlcy1zdzc2OGRwLWxhbmQvc2V0dXAtZGltZW5zLnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDIwICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Ci08IS0tIENvcHlyaWdodCAoQykgMjAxMyBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0Ci0KLSAgICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Ci0gICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KLSAgICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0KLSAgICAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLQotICAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0gICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0gICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgotICAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCi0gICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotLS0+Ci0KLTxyZXNvdXJjZXMgeG1sbnM6YW5kcm9pZD0iaHR0cDovL3NjaGVtYXMuYW5kcm9pZC5jb20vYXBrL3Jlcy9hbmRyb2lkIj4KLSAgICA8ZGltZW4gbmFtZT0ic2V0dXBfdGl0bGVfdGV4dF9zaXplIj42NHNwPC9kaW1lbj4KLSAgICA8ZGltZW4gbmFtZT0ic2V0dXBfaG9yaXpvbnRhbF9wYWRkaW5nIj4xOTJkcDwvZGltZW4+Ci08L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL2phdmEvcmVzL3ZhbHVlcy10aC9zdHJpbmdzLnhtbCBiL2phdmEvcmVzL3ZhbHVlcy10aC9zdHJpbmdzLnhtbAppbmRleCBiNmEwZDY2Li4wY2YxNDRlIDEwMDY0NAotLS0gYS9qYXZhL3Jlcy92YWx1ZXMtdGgvc3RyaW5ncy54bWwKKysrIGIvamF2YS9yZXMvdmFsdWVzLXRoL3N0cmluZ3MueG1sCkBAIC01Myw2ICs1Myw4IEBACiAgICAgPHN0cmluZyBuYW1lPSJ1c2VfZG91YmxlX3NwYWNlX3BlcmlvZF9zdW1tYXJ5IiBtc2dpZD0iNjUzMjg5MjE4NzI0Nzk1Mjc5OSI+IuC5geC4leC4sCBTcGFjZWJhciDguKrguK3guIfguITguKPguLHguYnguIfguIjguLDguYHguJfguKPguIHguIjguLjguJTguJXguLLguKHguJTguYnguKfguKLguIrguYjguK3guIfguKfguYjguLLguIfguKvguJnguLbguYjguIfguIrguYjguK3guIciPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJhdXRvX2NhcCIgbXNnaWQ9IjE3MTk3NDY2NzQ4NTQ2MjgyNTIiPiLguJvguKPguLHguJrguYDguJvguYfguJnguJXguLHguKfguJ7guLTguKHguJ7guYzguYPguKvguI3guYjguK3guLHguJXguYLguJnguKHguLHguJXguLQiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJhdXRvX2NhcF9zdW1tYXJ5IiBtc2dpZD0iNzkzNDQ1Mjc2MTAyMjk0Njg3NCI+IuC4l+C4s+C5g+C4q+C5ieC4hOC4s+C5geC4o+C4geC4guC4reC4h+C4l+C4uOC4geC4m+C4o+C4sOC5guC4ouC4hOC5gOC4m+C5h+C4meC4leC4seC4p+C4nuC4tOC4oeC4nuC5jOC5g+C4q+C4jeC5iCI8L3N0cmluZz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBlZGl0X3BlcnNvbmFsX2RpY3Rpb25hcnkgKDM5OTY5MTAwMzg5NTI5NDA0MjApIC0tPgorICAgIDxza2lwIC8+CiAgICAgPHN0cmluZyBuYW1lPSJjb25maWd1cmVfZGljdGlvbmFyaWVzX3RpdGxlIiBtc2dpZD0iNDIzODY1MjMzODU1NjkwMjA0OSI+IuC4nuC4iOC4meC4suC4meC4uOC4geC4o+C4oSBBZGQtT24iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJtYWluX2RpY3Rpb25hcnkiIG1zZ2lkPSI0Nzk4NzYzNzgxODE4MzYxMTY4Ij4i4Lie4LiI4LiZ4Liy4LiZ4Li44LiB4Lij4Lih4Lir4Lil4Lix4LiBIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icHJlZnNfc2hvd19zdWdnZXN0aW9ucyIgbXNnaWQ9IjgwMjY3OTk2NjM0NDU1MzE2MzciPiLguYHguKrguJTguIfguITguLPguYHguJnguLDguJnguLPguIHguLLguKPguYHguIHguYnguYTguIIiPC9zdHJpbmc+CkBAIC0xNzEsOCArMTczLDI3IEBACiAgICAgPHN0cmluZyBuYW1lPSJyZWFkX2V4dGVybmFsX2RpY3Rpb25hcnlfY29uZmlybV9pbnN0YWxsX21lc3NhZ2UiIG1zZ2lkPSI2ODk4NjEwMTYzNzY4OTgwODcwIj4i4LiV4Li04LiU4LiV4Lix4LmJ4LiH4LmE4Lif4Lil4LmM4LiZ4Li14LmJ4Liq4Liz4Lir4Lij4Lix4LiaIDx4bGlmZjpnIGlkPSJMT0NBTEVfTkFNRSI+JXM8L3hsaWZmOmc+IOC4iOC4o+C4tOC4h+C5hiDguKvguKPguLfguK0iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJlcnJvciIgbXNnaWQ9Ijg5NDA3NjM2MjQ2Njg1MTM2NDgiPiLguYDguIHguLTguJTguILguYnguK3guJzguLTguJTguJ7guKXguLLguJQiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJidXR0b25fZGVmYXVsdCIgbXNnaWQ9IjM5ODgwMTc4NDA0MzE4ODE0OTEiPiLguITguYjguLLguYDguKPguLTguYjguKHguJXguYnguJkiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJsYW5ndWFnZV9zZXR0aW5ncyIgbXNnaWQ9IjE2NzExNTMwNTMyMDE4MDkwMzEiPiLguKDguLLguKnguLLguYHguKXguLDguIHguLLguKPguJvguYnguK3guJnguILguYnguK3guKHguLnguKUiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJzZWxlY3RfaW5wdXRfbWV0aG9kIiBtc2dpZD0iNDMwMTYwMjM3NDYwOTI3NTAwMyI+IuC5gOC4peC4t+C4reC4geC4p+C4tOC4mOC4teC4geC4suC4o+C4m+C5ieC4reC4meC4guC5ieC4reC4oeC4ueC4pSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3dlbGNvbWVfdGl0bGUiIG1zZ2lkPSI2MTEyODIxNzA5ODMyMDMxNzE1Ij4i4Lii4Li04LiZ4LiU4Li14LiV4LmJ4Lit4LiZ4Lij4Lix4Lia4Liq4Li54LmIIDx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF93ZWxjb21lX2FkZGl0aW9uYWxfZGVzY3JpcHRpb24iIG1zZ2lkPSI4MTUwMjUyMDA4NTQ1NzY4OTUzIj4i4Lie4Lij4LmJ4Lit4Lih4LiB4Liy4Lij4Lib4LmJ4Lit4LiZ4LiC4LmJ4Lit4Lih4Li54Lil4LiU4LmJ4Lin4Lii4LiX4LmI4Liy4LiX4Liy4LiHIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RhcnRfYWN0aW9uIiBtc2dpZD0iODkzNjAzNjQ2MDg5NzM0NzcwOCI+IuC5gOC4o+C4tOC5iOC4oeC4leC5ieC4meC5g+C4iuC5ieC4h+C4suC4mSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX25leHRfYWN0aW9uIiBtc2dpZD0iMzcxODIxNDM3OTE1MTQ0NjAzIj4i4LiC4Lix4LmJ4LiZ4LiV4Lit4LiZ4LiW4Lix4LiU4LmE4LibIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcHNfdGl0bGUiIG1zZ2lkPSI2NDAwMzczMDM0ODcxODE2MTgyIj4i4LiB4Liy4Lij4LiV4Lix4LmJ4LiH4LiE4LmI4LiyIDx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMV90aXRsZSIgbXNnaWQ9IjMxNDc5Njc2MzAyNTM0NjIzMTUiPiLguYDguJvguLTguJTguYPguIrguYnguIfguLLguJkgPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAxX2luc3RydWN0aW9uIiBtc2dpZD0iMjU3ODYzMTkzNjYyNDYzNzI0MSI+IuC5guC4m+C4o+C4lOC4leC4o+C4p+C4iOC4quC4reC4miBcIjx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz5cIiDguYPguJnguIHguLLguKPguJXguLHguYnguIfguITguYjguLLguKDguLLguKnguLLguYHguKXguLDguIHguLLguKPguJvguYnguK3guJnguILguYnguK3guKHguLnguKXguILguK3guIfguITguLjguJMg4LiL4Li24LmI4LiH4LiI4Liw4Lit4LiZ4Li44LiN4Liy4LiV4LmD4Lir4LmJ4LmB4Lit4Lib4LiX4Liz4LiH4Liy4LiZ4Lia4LiZ4Lit4Li44Lib4LiB4Lij4LiT4LmM4LiC4Lit4LiH4LiE4Li44LiTIjwvc3RyaW5nPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNldHVwX3N0ZXAxX2ZpbmlzaGVkX2luc3RydWN0aW9uICgxMDc2MTQ4MjAwNDk1Nzk5NCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAxX2FjdGlvbiIgbXNnaWQ9IjQzNjY1MTM1MzQ5OTk5MDE3MjgiPiLguYDguJvguLTguJTguYPguIrguYnguIfguLLguJnguYPguJnguIHguLLguKPguJXguLHguYnguIfguITguYjguLIiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMl90aXRsZSIgbXNnaWQ9IjY4NjA3MjU0NDc5MDY2OTA1OTQiPiLguKrguKXguLHguJrguYTguJvguYPguIrguYkgPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAyX2luc3RydWN0aW9uIiBtc2dpZD0iOTE0MTQ4MTk2NDg3MDAyMzMzNiI+IuC4luC4seC4lOC5hOC4myDguYDguKXguLfguK3guIEgXCI8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+XCIg4LmA4Lib4LmH4LiZ4Lin4Li04LiY4Li14LiB4Liy4Lij4Lib4LmJ4Lit4LiZ4LiC4LmJ4Lit4LiE4Lin4Liy4Lih4LiX4Li14LmI4LmD4LiK4LmJ4LiH4Liy4LiZ4LiC4Lit4LiH4LiE4Li44LiTIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDJfYWN0aW9uIiBtc2dpZD0iMTY2MDMzMDMwNzE1OTgyNDMzNyI+IuC4quC4peC4seC4muC4p+C4tOC4mOC4teC4geC4suC4o+C4m+C5ieC4reC4meC4guC5ieC4reC4oeC4ueC4pSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAzX3RpdGxlIiBtc2dpZD0iMzE1NDc1NzE4MzYzMTQ5MDI4MSI+IuC4ouC4tOC4meC4lOC4teC4lOC5ieC4p+C4oiDguITguLjguJPguJ7guKPguYnguK3guKHguYPguIrguYnguIfguLLguJnguYHguKXguYnguKchIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDNfaW5zdHJ1Y3Rpb24iIG1zZ2lkPSI4MDI1OTgxODI5NjA1NDI2MDAwIj4i4LiV4Lit4LiZ4LiZ4Li14LmJ4LiE4Li44LiT4Liq4Liy4Lih4Liy4Lij4LiW4Lie4Li04Lih4Lie4LmM4LiC4LmJ4Lit4Lih4Li54Lil4Lil4LiH4LmD4LiZ4LmB4Lit4Lib4LiX4Li14LmI4LiK4Li34LmI4LiZ4LiK4Lit4Lia4LiX4Lix4LmJ4LiH4Lir4Lih4LiU4LiU4LmJ4Lin4LiiIDx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwM19hY3Rpb24iIG1zZ2lkPSI2MDA4Nzk3OTcyNTY5NDIyNTkiPiLguIHguLPguKvguJnguJTguITguYjguLLguKDguLLguKnguLLguYDguJ7guLTguYjguKHguYDguJXguLTguKEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9maW5pc2hfYWN0aW9uIiBtc2dpZD0iMjc2NTU5MjQzNDA5NDY1Mzg5Ij4i4LmA4Liq4Lij4LmH4LiI4Liq4Li04LmJ4LiZIjwvc3RyaW5nPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNob3dfc2V0dXBfd2l6YXJkX2ljb24gKDUwMDgwMjg1OTA1OTM3MTA4MzApIC0tPgorICAgIDxza2lwIC8+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc2hvd19zZXR1cF93aXphcmRfaWNvbl9zdW1tYXJ5ICg0MTE5OTk4MzIyNTM2ODgwMjEzKSAtLT4KKyAgICA8c2tpcCAvPgogICAgIDxzdHJpbmcgbmFtZT0iYXBwX25hbWUiIG1zZ2lkPSI2MzIwMTAyNjM3NDkxMjM0NzkyIj4i4Lic4Li54LmJ4LmD4Lir4LmJ4Lia4Lij4Li04LiB4Liy4Lij4Lie4LiI4LiZ4Liy4LiZ4Li44LiB4Lij4LihIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGljdGlvbmFyeV9wcm92aWRlcl9uYW1lIiBtc2dpZD0iMzAyNzMxNTA0NTM5NzM2MzA3OSI+IuC4nOC4ueC5ieC5g+C4q+C5ieC4muC4o+C4tOC4geC4suC4o+C4nuC4iOC4meC4suC4meC4uOC4geC4o+C4oSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRpY3Rpb25hcnlfc2VydmljZV9uYW1lIiBtc2dpZD0iNjIzNzQ3MjM1MDY5MzUxMTQ0OCI+IuC4muC4o+C4tOC4geC4suC4o+C4nuC4iOC4meC4suC4meC4uOC4geC4o+C4oSI8L3N0cmluZz4KQEAgLTIwMyw0ICsyMjQsNiBAQAogICAgIDxzdHJpbmcgbmFtZT0iZGljdF9hdmFpbGFibGVfbm90aWZpY2F0aW9uX3RpdGxlIiBtc2dpZD0iNjUxNDI4ODU5MTk1OTExNzI4OCI+IuC4oeC4teC4nuC4iOC4meC4suC4meC4uOC4geC4o+C4oeC5g+C4q+C5ieC5g+C4iuC5ieC4h+C4suC4meC5g+C4meC4oOC4suC4qeC4siA8eGxpZmY6ZyBpZD0iTEFOR1VBR0UiPiUxJHM8L3hsaWZmOmc+Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGljdF9hdmFpbGFibGVfbm90aWZpY2F0aW9uX2Rlc2NyaXB0aW9uIiBtc2dpZD0iMTA3NTE5NDE2OTQ0MzE2MzQ4NyI+IuC4geC4lOC5gOC4nuC4t+C5iOC4reC4leC4o+C4p+C4iOC4quC4reC4muC5geC4peC4sOC4lOC4suC4p+C4meC5jOC5guC4q+C4peC4lCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InRvYXN0X2Rvd25sb2FkaW5nX3N1Z2dlc3Rpb25zIiBtc2dpZD0iMTMxMzAyNzM1MzU4ODU2NjY2MCI+IuC4geC4s+C4peC4seC4h+C4lOC4suC4p+C4meC5jOC5guC4q+C4peC4lDog4LiE4Liz4LmB4LiZ4Liw4LiZ4Liz4Liq4Liz4Lir4Lij4Lix4LiaIDx4bGlmZjpnIGlkPSJMQU5HVUFHRSI+JTEkczwveGxpZmY6Zz4g4LiI4Liw4Lie4Lij4LmJ4Lit4Lih4LmD4LiK4LmJ4LiH4Liy4LiZ4LmA4Lij4LmH4Lin4LmGIOC4meC4teC5iSI8L3N0cmluZz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciB2ZXJzaW9uX3RleHQgKDI3MTUzNTQyMTU1Njg0NjkzODUpIC0tPgorICAgIDxza2lwIC8+CiA8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL2phdmEvcmVzL3ZhbHVlcy10bC9zdHJpbmdzLnhtbCBiL2phdmEvcmVzL3ZhbHVlcy10bC9zdHJpbmdzLnhtbAppbmRleCAyNTYwZmM3Li43YjYzODdjIDEwMDY0NAotLS0gYS9qYXZhL3Jlcy92YWx1ZXMtdGwvc3RyaW5ncy54bWwKKysrIGIvamF2YS9yZXMvdmFsdWVzLXRsL3N0cmluZ3MueG1sCkBAIC01Myw2ICs1Myw4IEBACiAgICAgPHN0cmluZyBuYW1lPSJ1c2VfZG91YmxlX3NwYWNlX3BlcmlvZF9zdW1tYXJ5IiBtc2dpZD0iNjUzMjg5MjE4NzI0Nzk1Mjc5OSI+Ik5hZ2xhbGFnYXkgbmcgdHVsZG9rIG5hIG1heSBwdXdhbmcgYW5nIHBhZy1kb3VibGUgdGFwIHNhIHNwYWNlYmFyIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYXV0b19jYXAiIG1zZ2lkPSIxNzE5NzQ2Njc0ODU0NjI4MjUyIj4iQXV0by1jYXBpdGFsaXphdGlvbiI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImF1dG9fY2FwX3N1bW1hcnkiIG1zZ2lkPSI3OTM0NDUyNzYxMDIyOTQ2ODc0Ij4iSS1jYXBpdGFsaXplIGFuZyB1bmFuZyBzYWxpdGEgbmcgYmF3YXQgcGFuZ3VuZ3VzYXAiPC9zdHJpbmc+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgZWRpdF9wZXJzb25hbF9kaWN0aW9uYXJ5ICgzOTk2OTEwMDM4OTUyOTQwNDIwKSAtLT4KKyAgICA8c2tpcCAvPgogICAgIDxzdHJpbmcgbmFtZT0iY29uZmlndXJlX2RpY3Rpb25hcmllc190aXRsZSIgbXNnaWQ9IjQyMzg2NTIzMzg1NTY5MDIwNDkiPiJNZ2EgZGlrc3l1bmFyeW8gbmEgYWRkLW9uIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ibWFpbl9kaWN0aW9uYXJ5IiBtc2dpZD0iNDc5ODc2Mzc4MTgxODM2MTE2OCI+IlBhbmd1bmFoaW5nIGRpa3N5dW5hcnlvIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icHJlZnNfc2hvd19zdWdnZXN0aW9ucyIgbXNnaWQ9IjgwMjY3OTk2NjM0NDU1MzE2MzciPiJNYWdwYWtpdGEgbmcgbWdhIHN1aGVzdGl5b24gbmcgcGFnd2F3YXN0byI8L3N0cmluZz4KQEAgLTE3MSw4ICsxNzMsMjcgQEAKICAgICA8c3RyaW5nIG5hbWU9InJlYWRfZXh0ZXJuYWxfZGljdGlvbmFyeV9jb25maXJtX2luc3RhbGxfbWVzc2FnZSIgbXNnaWQ9IjY4OTg2MTAxNjM3Njg5ODA4NzAiPiJJLWluc3RhbGwgdGFsYWdhIGFuZyBmaWxlIG5hIGl0byBwYXJhIHNhIDx4bGlmZjpnIGlkPSJMT0NBTEVfTkFNRSI+JXM8L3hsaWZmOmc+PyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImVycm9yIiBtc2dpZD0iODk0MDc2MzYyNDY2ODUxMzY0OCI+Ik5hZ2thcm9vbiBuZyBlcnJvciI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJ1dHRvbl9kZWZhdWx0IiBtc2dpZD0iMzk4ODAxNzg0MDQzMTg4MTQ5MSI+IkRlZmF1bHQiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJsYW5ndWFnZV9zZXR0aW5ncyIgbXNnaWQ9IjE2NzExNTMwNTMyMDE4MDkwMzEiPiJXaWthIGF0IGlucHV0Ijwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ic2VsZWN0X2lucHV0X21ldGhvZCIgbXNnaWQ9IjQzMDE2MDIzNzQ2MDkyNzUwMDMiPiJQdW1pbGkgbmcgcGFtYW1hcmFhbiBuZyBwYWctaW5wdXQiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF93ZWxjb21lX3RpdGxlIiBtc2dpZD0iNjExMjgyMTcwOTgzMjAzMTcxNSI+Ik1hbGlnYXlhbmcgcGFnZGF0aW5nIHNhIDx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF93ZWxjb21lX2FkZGl0aW9uYWxfZGVzY3JpcHRpb24iIG1zZ2lkPSI4MTUwMjUyMDA4NTQ1NzY4OTUzIj4iZ2FtaXQgYW5nIEdlc3R1cmUgbmEgUGFnLXR5cGUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGFydF9hY3Rpb24iIG1zZ2lkPSI4OTM2MDM2NDYwODk3MzQ3NzA4Ij4iTWFnc2ltdWxhIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfbmV4dF9hY3Rpb24iIG1zZ2lkPSIzNzE4MjE0Mzc5MTUxNDQ2MDMiPiJTdXN1bm9kIG5hIGhha2JhbmciPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwc190aXRsZSIgbXNnaWQ9IjY0MDAzNzMwMzQ4NzE4MTYxODIiPiJTaW5lLXNldCB1cCBhbmcgPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAxX3RpdGxlIiBtc2dpZD0iMzE0Nzk2NzYzMDI1MzQ2MjMxNSI+IlBhZ2FuYWhpbiBhbmcgPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAxX2luc3RydWN0aW9uIiBtc2dpZD0iMjU3ODYzMTkzNjYyNDYzNzI0MSI+IlBha2ktY2hlY2sgYW5nIFwiPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPlwiIHNhIG1nYSBzZXR0aW5nIG1vIG5nIFdpa2EgYXQgaW5wdXQuIE1hcGFwYWhpbnR1bHV0YW4gaXRvbmcgdHVtYWtibyBzYSBkZXZpY2UgbW8uIjwvc3RyaW5nPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNldHVwX3N0ZXAxX2ZpbmlzaGVkX2luc3RydWN0aW9uICgxMDc2MTQ4MjAwNDk1Nzk5NCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAxX2FjdGlvbiIgbXNnaWQ9IjQzNjY1MTM1MzQ5OTk5MDE3MjgiPiJJLWVuYWJsZSBzYSBNZ2EgU2V0dGluZyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAyX3RpdGxlIiBtc2dpZD0iNjg2MDcyNTQ0NzkwNjY5MDU5NCI+Ikx1bWlwYXQgc2EgPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAyX2luc3RydWN0aW9uIiBtc2dpZD0iOTE0MTQ4MTk2NDg3MDAyMzMzNiI+IlN1c3Vub2QsIHBpbGlpbiBhbmcgXCI8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+XCIgYmlsYW5nIGl5b25nIGFrdGlib25nIHBhbWFtYXJhYW4gbmcgcGFnLWlucHV0IG5nIHRla3N0by4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMl9hY3Rpb24iIG1zZ2lkPSIxNjYwMzMwMzA3MTU5ODI0MzM3Ij4iTWFncGFsaXQgbmcgcGFtYW1hcmFhbiBuZyBwYWctaW5wdXQiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwM190aXRsZSIgbXNnaWQ9IjMxNTQ3NTcxODM2MzE0OTAyODEiPiJCaW5hYmF0aSBraXRhLCBoYW5kYSBrYSBuYSEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwM19pbnN0cnVjdGlvbiIgbXNnaWQ9IjgwMjU5ODE4Mjk2MDU0MjYwMDAiPiJOZ2F5b24sIG1hdGEtdHlwZSBtbyBuYSBhbmcgbGFoYXQgbmcgcGFib3JpdG8gbW9uZyBhcHBzIGdhbWl0IGFuZyA8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+LiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAzX2FjdGlvbiIgbXNnaWQ9IjYwMDg3OTc5NzI1Njk0MjI1OSI+Ik1hZy1jb25maWd1cmUgbmcgbWdhIGthcmFnZGFnYW5nIHdpa2EiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9maW5pc2hfYWN0aW9uIiBtc2dpZD0iMjc2NTU5MjQzNDA5NDY1Mzg5Ij4iVGFwb3MgbmEiPC9zdHJpbmc+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc2hvd19zZXR1cF93aXphcmRfaWNvbiAoNTAwODAyODU5MDU5MzcxMDgzMCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzaG93X3NldHVwX3dpemFyZF9pY29uX3N1bW1hcnkgKDQxMTk5OTgzMjI1MzY4ODAyMTMpIC0tPgorICAgIDxza2lwIC8+CiAgICAgPHN0cmluZyBuYW1lPSJhcHBfbmFtZSIgbXNnaWQ9IjYzMjAxMDI2Mzc0OTEyMzQ3OTIiPiJQcm92aWRlciBuZyBEaWtzeXVuYXJ5byI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRpY3Rpb25hcnlfcHJvdmlkZXJfbmFtZSIgbXNnaWQ9IjMwMjczMTUwNDUzOTczNjMwNzkiPiJQcm92aWRlciBuZyBEaWtzeXVuYXJ5byI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRpY3Rpb25hcnlfc2VydmljZV9uYW1lIiBtc2dpZD0iNjIzNzQ3MjM1MDY5MzUxMTQ0OCI+IlNlcmJpc3lvIG5nIERpa3N5dW5hcnlvIjwvc3RyaW5nPgpAQCAtMjAzLDQgKzIyNCw2IEBACiAgICAgPHN0cmluZyBuYW1lPSJkaWN0X2F2YWlsYWJsZV9ub3RpZmljYXRpb25fdGl0bGUiIG1zZ2lkPSI2NTE0Mjg4NTkxOTU5MTE3Mjg4Ij4iTWF5IGF2YWlsYWJsZSBuYSBkaWtzeXVuYXJ5byBwYXJhIHNhIDx4bGlmZjpnIGlkPSJMQU5HVUFHRSI+JTEkczwveGxpZmY6Zz4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkaWN0X2F2YWlsYWJsZV9ub3RpZmljYXRpb25fZGVzY3JpcHRpb24iIG1zZ2lkPSIxMDc1MTk0MTY5NDQzMTYzNDg3Ij4iUGluZHV0aW4gdXBhbmcgc3VyaWluIGF0IGktZG93bmxvYWQiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ0b2FzdF9kb3dubG9hZGluZ19zdWdnZXN0aW9ucyIgbXNnaWQ9IjEzMTMwMjczNTM1ODg1NjY2NjAiPiJEaW5hLWRvd25sb2FkOiBtYWxhcGl0IG5hbmcgbWFnaW5nIGhhbmRhIGFuZyBtZ2Egc3VoZXN0aXlvbiBwYXJhIHNhIDx4bGlmZjpnIGlkPSJMQU5HVUFHRSI+JTEkczwveGxpZmY6Zz4uIjwvc3RyaW5nPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHZlcnNpb25fdGV4dCAoMjcxNTM1NDIxNTU2ODQ2OTM4NSkgLS0+CisgICAgPHNraXAgLz4KIDwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvamF2YS9yZXMvdmFsdWVzLXRyL3N0cmluZ3MueG1sIGIvamF2YS9yZXMvdmFsdWVzLXRyL3N0cmluZ3MueG1sCmluZGV4IGEwYTZhNjcuLjc2MzliNGQgMTAwNjQ0Ci0tLSBhL2phdmEvcmVzL3ZhbHVlcy10ci9zdHJpbmdzLnhtbAorKysgYi9qYXZhL3Jlcy92YWx1ZXMtdHIvc3RyaW5ncy54bWwKQEAgLTUzLDYgKzUzLDggQEAKICAgICA8c3RyaW5nIG5hbWU9InVzZV9kb3VibGVfc3BhY2VfcGVyaW9kX3N1bW1hcnkiIG1zZ2lkPSI2NTMyODkyMTg3MjQ3OTUyNzk5Ij4iQm/Fn2x1ayDDp3VidcSfdW5hIGlraSBrZXogdnVybWFrIG5va3RhIHZlIGFyZMSxbmRhbiBiaXIgYm/Fn2x1ayBla2xlciI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImF1dG9fY2FwIiBtc2dpZD0iMTcxOTc0NjY3NDg1NDYyODI1MiI+Ik90b21hdGlrIG9sYXJhayBiw7x5w7xrIGhhcmYgeWFwIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYXV0b19jYXBfc3VtbWFyeSIgbXNnaWQ9Ijc5MzQ0NTI3NjEwMjI5NDY4NzQiPiJIZXIgY8O8bWxlbmluIGlsayBrZWxpbWVzaW5pIGLDvHnDvGsgaGFyZiB5YXAiPC9zdHJpbmc+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgZWRpdF9wZXJzb25hbF9kaWN0aW9uYXJ5ICgzOTk2OTEwMDM4OTUyOTQwNDIwKSAtLT4KKyAgICA8c2tpcCAvPgogICAgIDxzdHJpbmcgbmFtZT0iY29uZmlndXJlX2RpY3Rpb25hcmllc190aXRsZSIgbXNnaWQ9IjQyMzg2NTIzMzg1NTY5MDIwNDkiPiJFayBzw7Z6bMO8a2xlciI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9Im1haW5fZGljdGlvbmFyeSIgbXNnaWQ9IjQ3OTg3NjM3ODE4MTgzNjExNjgiPiJBbmEgc8O2emzDvGsiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwcmVmc19zaG93X3N1Z2dlc3Rpb25zIiBtc2dpZD0iODAyNjc5OTY2MzQ0NTUzMTYzNyI+IkTDvHplbHRtZSDDtm5lcmlsZXJpbmkgZ8O2c3RlciI8L3N0cmluZz4KQEAgLTE3MSw4ICsxNzMsMjcgQEAKICAgICA8c3RyaW5nIG5hbWU9InJlYWRfZXh0ZXJuYWxfZGljdGlvbmFyeV9jb25maXJtX2luc3RhbGxfbWVzc2FnZSIgbXNnaWQ9IjY4OTg2MTAxNjM3Njg5ODA4NzAiPiI8eGxpZmY6ZyBpZD0iTE9DQUxFX05BTUUiPiVzPC94bGlmZjpnPiBpw6dpbiBidSBkb3N5YSBnZXLDp2VrdGVuIHnDvGtsZW5zaW4gbWk/Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZXJyb3IiIG1zZ2lkPSI4OTQwNzYzNjI0NjY4NTEzNjQ4Ij4iQmlyIGhhdGEgb2x1xZ90dSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImJ1dHRvbl9kZWZhdWx0IiBtc2dpZD0iMzk4ODAxNzg0MDQzMTg4MTQ5MSI+IlZhcnNhecSxbGFuIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibGFuZ3VhZ2Vfc2V0dGluZ3MiIG1zZ2lkPSIxNjcxMTUzMDUzMjAxODA5MDMxIj4iRGlsIHZlIGdpcmnFnyI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9InNlbGVjdF9pbnB1dF9tZXRob2QiIG1zZ2lkPSI0MzAxNjAyMzc0NjA5Mjc1MDAzIj4iR2lyacWfIHnDtm50ZW1pbmkgc2XDp2luIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfd2VsY29tZV90aXRsZSIgbXNnaWQ9IjYxMTI4MjE3MDk4MzIwMzE3MTUiPiI8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+IHV5Z3VsYW1hc8SxbmEgaG/FnyBnZWxkaW5peiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3dlbGNvbWVfYWRkaXRpb25hbF9kZXNjcmlwdGlvbiIgbXNnaWQ9IjgxNTAyNTIwMDg1NDU3Njg5NTMiPiJIYXJla2V0bGUgWWF6bWF5xLEgacOnZXJpciI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0YXJ0X2FjdGlvbiIgbXNnaWQ9Ijg5MzYwMzY0NjA4OTczNDc3MDgiPiJCYcWfbGF5xLFuIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfbmV4dF9hY3Rpb24iIG1zZ2lkPSIzNzE4MjE0Mzc5MTUxNDQ2MDMiPiJTb25yYWtpIGFkxLFtIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcHNfdGl0bGUiIG1zZ2lkPSI2NDAwMzczMDM0ODcxODE2MTgyIj4iPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPiB1eWd1bGFtYXPEsW7EsSBrdXJtYSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAxX3RpdGxlIiBtc2dpZD0iMzE0Nzk2NzYzMDI1MzQ2MjMxNSI+Ijx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz4gdXlndWxhbWFzxLFuxLEgZXRraW5sZcWfdGlyaW4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMV9pbnN0cnVjdGlvbiIgbXNnaWQ9IjI1Nzg2MzE5MzY2MjQ2MzcyNDEiPiJMw7x0ZmVuIFwiPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPlwiIHV5Z3VsYW1hc8SxbsSxIGtlbmRpIERpbCB2ZSBnaXJpxZ8gYXlhcmxhcsSxbsSxemRhIGnFn2FyZXRsZXlpbi4gQnUgacWfbGVtLCB1eWd1bGFtYXlhIGNpaGF6xLFuxLF6ZGEgw6dhbMSxxZ9tYSB5ZXRraXNpIHZlcmVjZWt0aXIuIjwvc3RyaW5nPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNldHVwX3N0ZXAxX2ZpbmlzaGVkX2luc3RydWN0aW9uICgxMDc2MTQ4MjAwNDk1Nzk5NCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAxX2FjdGlvbiIgbXNnaWQ9IjQzNjY1MTM1MzQ5OTk5MDE3MjgiPiJBeWFybGFyZGEgZXRraW5sZcWfdGlyIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDJfdGl0bGUiIG1zZ2lkPSI2ODYwNzI1NDQ3OTA2NjkwNTk0Ij4iPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPiB1eWd1bGFtYXPEsW5hIGdlw6dpbiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAyX2luc3RydWN0aW9uIiBtc2dpZD0iOTE0MTQ4MTk2NDg3MDAyMzMzNiI+IlNvbnJhLCBcIjx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz5cIiB1eWd1bGFtYXPEsW7EsSBldGtpbiBtZXRpbiBnaXJpxZ8gecO2bnRlbWluaXogb2xhcmFrIHNlw6dpbi4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMl9hY3Rpb24iIG1zZ2lkPSIxNjYwMzMwMzA3MTU5ODI0MzM3Ij4iR2lyacWfIHnDtm50ZW1pbmkgZGXEn2nFn3RpciI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAzX3RpdGxlIiBtc2dpZD0iMzE1NDc1NzE4MzYzMTQ5MDI4MSI+IlRlYnJpa2xlciwgYml0aXJkaW5peiEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwM19pbnN0cnVjdGlvbiIgbXNnaWQ9IjgwMjU5ODE4Mjk2MDU0MjYwMDAiPiJBcnTEsWsgPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPiBpbGUgdMO8bSBmYXZvcmkgdXlndWxhbWFsYXLEsW7EsXpkYSB5YXphYmlsaXJzaW5pei4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwM19hY3Rpb24iIG1zZ2lkPSI2MDA4Nzk3OTcyNTY5NDIyNTkiPiJFayBkaWxsZXJpIHlhcMSxbGFuZMSxcsSxbiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX2ZpbmlzaF9hY3Rpb24iIG1zZ2lkPSIyNzY1NTkyNDM0MDk0NjUzODkiPiJUYW1hbWxhbmTEsSI8L3N0cmluZz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzaG93X3NldHVwX3dpemFyZF9pY29uICg1MDA4MDI4NTkwNTkzNzEwODMwKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNob3dfc2V0dXBfd2l6YXJkX2ljb25fc3VtbWFyeSAoNDExOTk5ODMyMjUzNjg4MDIxMykgLS0+CisgICAgPHNraXAgLz4KICAgICA8c3RyaW5nIG5hbWU9ImFwcF9uYW1lIiBtc2dpZD0iNjMyMDEwMjYzNzQ5MTIzNDc5MiI+IlPDtnpsw7xrIFNhxJ9sYXnEsWPEsSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRpY3Rpb25hcnlfcHJvdmlkZXJfbmFtZSIgbXNnaWQ9IjMwMjczMTUwNDUzOTczNjMwNzkiPiJTw7Z6bMO8ayBTYcSfbGF5xLFjxLEiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkaWN0aW9uYXJ5X3NlcnZpY2VfbmFtZSIgbXNnaWQ9IjYyMzc0NzIzNTA2OTM1MTE0NDgiPiJTw7Z6bMO8ayBIaXptZXRpIjwvc3RyaW5nPgpAQCAtMjAzLDQgKzIyNCw2IEBACiAgICAgPHN0cmluZyBuYW1lPSJkaWN0X2F2YWlsYWJsZV9ub3RpZmljYXRpb25fdGl0bGUiIG1zZ2lkPSI2NTE0Mjg4NTkxOTU5MTE3Mjg4Ij4iPHhsaWZmOmcgaWQ9IkxBTkdVQUdFIj4lMSRzPC94bGlmZjpnPiBpw6dpbiBrdWxsYW7EsWxhYmlsZWNlayBiaXIgc8O2emzDvGsgbWV2Y3V0Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGljdF9hdmFpbGFibGVfbm90aWZpY2F0aW9uX2Rlc2NyaXB0aW9uIiBtc2dpZD0iMTA3NTE5NDE2OTQ0MzE2MzQ4NyI+IsSwbmNlbGVtZWsgdmUgaW5kaXJtZWsgacOnaW4gYmFzxLFuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0idG9hc3RfZG93bmxvYWRpbmdfc3VnZ2VzdGlvbnMiIG1zZ2lkPSIxMzEzMDI3MzUzNTg4NTY2NjYwIj4iPHhsaWZmOmcgaWQ9IkxBTkdVQUdFIj4lMSRzPC94bGlmZjpnPiBpw6dpbiDDtm5lcmlsZXJpbiBpbmRpcmlsbWVzaW5lIGvEsXNhIHPDvHJlIGnDp2luZGUgYmHFn2xhbmFjYWsuIjwvc3RyaW5nPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHZlcnNpb25fdGV4dCAoMjcxNTM1NDIxNTU2ODQ2OTM4NSkgLS0+CisgICAgPHNraXAgLz4KIDwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvamF2YS9yZXMvdmFsdWVzLXVrL3N0cmluZ3MueG1sIGIvamF2YS9yZXMvdmFsdWVzLXVrL3N0cmluZ3MueG1sCmluZGV4IDM2MTkzYWEuLmE4NDg1MGQgMTAwNjQ0Ci0tLSBhL2phdmEvcmVzL3ZhbHVlcy11ay9zdHJpbmdzLnhtbAorKysgYi9qYXZhL3Jlcy92YWx1ZXMtdWsvc3RyaW5ncy54bWwKQEAgLTUzLDYgKzUzLDggQEAKICAgICA8c3RyaW5nIG5hbWU9InVzZV9kb3VibGVfc3BhY2VfcGVyaW9kX3N1bW1hcnkiIG1zZ2lkPSI2NTMyODkyMTg3MjQ3OTUyNzk5Ij4i0J/QvtC00LLRltC50L3QtSDQvdCw0YLQuNGB0LrQsNC90L3RjyDQv9GA0L7QsdGW0LvRgyDQstGB0YLQsNCy0LvRj9GUINC60YDQsNC/0LrRgyDQtyDQv9GA0L7QsdGW0LvQvtC8INC/0ZbRgdC70Y8g0L3QtdGXIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYXV0b19jYXAiIG1zZ2lkPSIxNzE5NzQ2Njc0ODU0NjI4MjUyIj4i0JDQstGC0L4g0LLQuNC60L7RgC4g0LLQtdC7LiDQu9GW0YLQtdGAIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYXV0b19jYXBfc3VtbWFyeSIgbXNnaWQ9Ijc5MzQ0NTI3NjEwMjI5NDY4NzQiPiLQn9C40YHQsNGC0Lgg0L/QtdGA0YjQtSDRgdC70L7QstC+INCyINC60L7QttC90L7QvNGDINGA0LXRh9C10L3QvdGWINC3INCy0LXQu9C40LrQvtGXINC70ZbRgtC10YDQuCI8L3N0cmluZz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBlZGl0X3BlcnNvbmFsX2RpY3Rpb25hcnkgKDM5OTY5MTAwMzg5NTI5NDA0MjApIC0tPgorICAgIDxza2lwIC8+CiAgICAgPHN0cmluZyBuYW1lPSJjb25maWd1cmVfZGljdGlvbmFyaWVzX3RpdGxlIiBtc2dpZD0iNDIzODY1MjMzODU1NjkwMjA0OSI+ItCU0L7QtNCw0L3RliDRgdC70L7QstC90LjQutC4Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ibWFpbl9kaWN0aW9uYXJ5IiBtc2dpZD0iNDc5ODc2Mzc4MTgxODM2MTE2OCI+ItCe0YHQvdC+0LLQvdC40Lkg0YHQu9C+0LLQvdC40LoiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJwcmVmc19zaG93X3N1Z2dlc3Rpb25zIiBtc2dpZD0iODAyNjc5OTY2MzQ0NTUzMTYzNyI+ItCf0L7QutCw0LfRg9Cy0LDRgtC4INC/0YDQvtC/0L7Qt9C40YbRltGXINCy0LjQv9GA0LDQstC70LXQvdGMIjwvc3RyaW5nPgpAQCAtMTcxLDggKzE3MywyNyBAQAogICAgIDxzdHJpbmcgbmFtZT0icmVhZF9leHRlcm5hbF9kaWN0aW9uYXJ5X2NvbmZpcm1faW5zdGFsbF9tZXNzYWdlIiBtc2dpZD0iNjg5ODYxMDE2Mzc2ODk4MDg3MCI+ItCh0L/RgNCw0LLQtNGWINCy0YHRgtCw0L3QvtCy0LjRgtC4INGG0LXQuSDRhNCw0LnQuyDQtNC70Y8g0YLQsNC60L7RlyDQvNC+0LLQuDogPHhsaWZmOmcgaWQ9IkxPQ0FMRV9OQU1FIj4lczwveGxpZmY6Zz4/Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZXJyb3IiIG1zZ2lkPSI4OTQwNzYzNjI0NjY4NTEzNjQ4Ij4i0KHRgtCw0LvQsNGB0Y8g0L/QvtC80LjQu9C60LAiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJidXR0b25fZGVmYXVsdCIgbXNnaWQ9IjM5ODgwMTc4NDA0MzE4ODE0OTEiPiLQl9CwINGD0LzQvtCy0YfQsNC90L3Rj9C8Ijwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibGFuZ3VhZ2Vfc2V0dGluZ3MiIG1zZ2lkPSIxNjcxMTUzMDUzMjAxODA5MDMxIj4i0JzQvtCy0LAg0YLQsCDQstCy0LXQtNC10L3QvdGPIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ic2VsZWN0X2lucHV0X21ldGhvZCIgbXNnaWQ9IjQzMDE2MDIzNzQ2MDkyNzUwMDMiPiLQktC40LHRgNCw0YLQuCDQvNC10YLQvtC0INCy0LLQtdC00LXQvdC90Y8iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF93ZWxjb21lX3RpdGxlIiBtc2dpZD0iNjExMjgyMTcwOTgzMjAzMTcxNSI+ItCS0ZbRgtCw0ZTQvNC+INCyINC/0YDQvtCz0YDQsNC80ZYgPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3dlbGNvbWVfYWRkaXRpb25hbF9kZXNjcmlwdGlvbiIgbXNnaWQ9IjgxNTAyNTIwMDg1NDU3Njg5NTMiPiLQtyDRhNGD0L3QutGG0ZbRlNGOINCS0LLRltC0INC20LXRgdGC0LDQvNC4Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RhcnRfYWN0aW9uIiBtc2dpZD0iODkzNjAzNjQ2MDg5NzM0NzcwOCI+ItCg0L7Qt9C/0L7Rh9Cw0YLQuCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX25leHRfYWN0aW9uIiBtc2dpZD0iMzcxODIxNDM3OTE1MTQ0NjAzIj4i0J3QsNGB0YLRg9C/0L3QuNC5INC60YDQvtC6Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcHNfdGl0bGUiIG1zZ2lkPSI2NDAwMzczMDM0ODcxODE2MTgyIj4i0J3QsNC70LDRiNGC0YPQstCw0L3QvdGPINC/0YDQvtCz0YDQsNC80LggPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAxX3RpdGxlIiBtc2dpZD0iMzE0Nzk2NzYzMDI1MzQ2MjMxNSI+ItCj0LLRltC80LrQvdGW0YLRjCDQv9GA0L7Qs9GA0LDQvNGDIDx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMV9pbnN0cnVjdGlvbiIgbXNnaWQ9IjI1Nzg2MzE5MzY2MjQ2MzcyNDEiPiLQktC40LHQtdGA0ZbRgtGMIFwiPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPlwiINGDINC90LDQu9Cw0YjRgtGD0LLQsNC90L3Rj9GFIFwi0JzQvtCy0LAg0YLQsCDQstCy0LXQtNC10L3QvdGPXCIsINGJ0L7QsSDQtNC+0LfQstC+0LvQuNGC0Lgg0LfQsNC/0YPRgdC6INGG0ZbRlNGXINC/0YDQvtCz0YDQsNC80Lgg0L3QsCDQv9GA0LjRgdGC0YDQvtGXLiI8L3N0cmluZz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzZXR1cF9zdGVwMV9maW5pc2hlZF9pbnN0cnVjdGlvbiAoMTA3NjE0ODIwMDQ5NTc5OTQpIC0tPgorICAgIDxza2lwIC8+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMV9hY3Rpb24iIG1zZ2lkPSI0MzY2NTEzNTM0OTk5OTAxNzI4Ij4i0KPQstGW0LzQutC90YPRgtC4INCyINC90LDQu9Cw0YjRgtGD0LLQsNC90L3Rj9GFIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDJfdGl0bGUiIG1zZ2lkPSI2ODYwNzI1NDQ3OTA2NjkwNTk0Ij4i0J/QtdGA0LXQudC00ZbRgtGMINC00L4g0L/RgNC+0LPRgNCw0LzQuCA8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDJfaW5zdHJ1Y3Rpb24iIG1zZ2lkPSI5MTQxNDgxOTY0ODcwMDIzMzM2Ij4i0JTQsNC70ZYg0LLQuNCx0LXRgNGW0YLRjCBcIjx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz5cIiDRj9C6INC/0L7RgtC+0YfQvdC40Lkg0LzQtdGC0L7QtCDQstCy0LXQtNC10L3QvdGPINGC0LXQutGB0YLRgy4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMl9hY3Rpb24iIG1zZ2lkPSIxNjYwMzMwMzA3MTU5ODI0MzM3Ij4i0JfQvNGW0L3QuNGC0Lgg0LzQtdGC0L7QtCDQstCy0LXQtNC10L3QvdGPIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDNfdGl0bGUiIG1zZ2lkPSIzMTU0NzU3MTgzNjMxNDkwMjgxIj4i0JLRltGC0LDRlNC80L4hINCd0LDQu9Cw0YjRgtGD0LLQsNC90L3RjyDQt9Cw0LLQtdGA0YjQtdC90L4uIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDNfaW5zdHJ1Y3Rpb24iIG1zZ2lkPSI4MDI1OTgxODI5NjA1NDI2MDAwIj4i0KLQtdC/0LXRgCDQstC4INC80L7QttC10YLQtSDQstCy0L7QtNC40YLQuCDRgtC10LrRgdGCINGDINCy0YHRltGFINGB0LLQvtGX0YUg0YPQu9GO0LHQu9C10L3QuNGFINC/0YDQvtCz0YDQsNC80LDRhSDQt9CwINC00L7Qv9C+0LzQvtCz0L7RjiA8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+LiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAzX2FjdGlvbiIgbXNnaWQ9IjYwMDg3OTc5NzI1Njk0MjI1OSI+ItCd0LDQu9Cw0YjRgtGD0LLQsNGC0Lgg0LTQvtC00LDRgtC60L7QstGWINC80L7QstC4Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfZmluaXNoX2FjdGlvbiIgbXNnaWQ9IjI3NjU1OTI0MzQwOTQ2NTM4OSI+ItCX0LDQstC10YDRiNC10L3QviI8L3N0cmluZz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzaG93X3NldHVwX3dpemFyZF9pY29uICg1MDA4MDI4NTkwNTkzNzEwODMwKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNob3dfc2V0dXBfd2l6YXJkX2ljb25fc3VtbWFyeSAoNDExOTk5ODMyMjUzNjg4MDIxMykgLS0+CisgICAgPHNraXAgLz4KICAgICA8c3RyaW5nIG5hbWU9ImFwcF9uYW1lIiBtc2dpZD0iNjMyMDEwMjYzNzQ5MTIzNDc5MiI+ItCf0L7RgdGC0LDRh9Cw0LvRjNC90LjQuiDRgdC70L7QstC90LjQutCwIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGljdGlvbmFyeV9wcm92aWRlcl9uYW1lIiBtc2dpZD0iMzAyNzMxNTA0NTM5NzM2MzA3OSI+ItCf0L7RgdGC0LDRh9Cw0LvRjNC90LjQuiDRgdC70L7QstC90LjQutCwIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGljdGlvbmFyeV9zZXJ2aWNlX25hbWUiIG1zZ2lkPSI2MjM3NDcyMzUwNjkzNTExNDQ4Ij4i0KHQu9GD0LbQsdCwINGB0LvQvtCy0L3QuNC60LAiPC9zdHJpbmc+CkBAIC0yMDMsNCArMjI0LDYgQEAKICAgICA8c3RyaW5nIG5hbWU9ImRpY3RfYXZhaWxhYmxlX25vdGlmaWNhdGlvbl90aXRsZSIgbXNnaWQ9IjY1MTQyODg1OTE5NTkxMTcyODgiPiLQlNC+0YHRgtGD0L/QvdC40Lkg0YHQu9C+0LLQvdC40Log0LTQu9GPINGC0LDQutC+0Zcg0LzQvtCy0Lg6IDx4bGlmZjpnIGlkPSJMQU5HVUFHRSI+JTEkczwveGxpZmY6Zz4iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkaWN0X2F2YWlsYWJsZV9ub3RpZmljYXRpb25fZGVzY3JpcHRpb24iIG1zZ2lkPSIxMDc1MTk0MTY5NDQzMTYzNDg3Ij4i0J3QsNGC0LjRgdC90ZbRgtGMLCDRidC+0LEg0L/QtdGA0LXQs9C70Y/QvdGD0YLQuCDRgtCwINC30LDQstCw0L3RgtCw0LbQuNGC0LgiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ0b2FzdF9kb3dubG9hZGluZ19zdWdnZXN0aW9ucyIgbXNnaWQ9IjEzMTMwMjczNTM1ODg1NjY2NjAiPiLQodC60L7RgNC+INC/0L7Rh9C90LXRgtGM0YHRjyDQt9Cw0LLQsNC90YLQsNC20LXQvdC90Y8g0L/RgNC+0L/QvtC30LjRhtGW0Lkg0LTQu9GPINGC0LDQutC+0Zcg0LzQvtCy0Lg6IDx4bGlmZjpnIGlkPSJMQU5HVUFHRSI+JTEkczwveGxpZmY6Zz4uIjwvc3RyaW5nPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHZlcnNpb25fdGV4dCAoMjcxNTM1NDIxNTU2ODQ2OTM4NSkgLS0+CisgICAgPHNraXAgLz4KIDwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvamF2YS9yZXMvdmFsdWVzL3NldHVwLWRpbWVucy54bWwgYi9qYXZhL3Jlcy92YWx1ZXMtdjE3L3NldHVwLXN0eWxlcy54bWwKc2ltaWxhcml0eSBpbmRleCA2OCUKcmVuYW1lIGZyb20gamF2YS9yZXMvdmFsdWVzL3NldHVwLWRpbWVucy54bWwKcmVuYW1lIHRvIGphdmEvcmVzL3ZhbHVlcy12MTcvc2V0dXAtc3R5bGVzLnhtbAppbmRleCAwMDc5MDZkLi44YTlkNjY0IDEwMDY0NAotLS0gYS9qYXZhL3Jlcy92YWx1ZXMvc2V0dXAtZGltZW5zLnhtbAorKysgYi9qYXZhL3Jlcy92YWx1ZXMtdjE3L3NldHVwLXN0eWxlcy54bWwKQEAgLTE1LDYgKzE1LDExIEBACiAtLT4KIAogPHJlc291cmNlcyB4bWxuczphbmRyb2lkPSJodHRwOi8vc2NoZW1hcy5hbmRyb2lkLmNvbS9hcGsvcmVzL2FuZHJvaWQiPgotICAgIDxkaW1lbiBuYW1lPSJzZXR1cF90aXRsZV90ZXh0X3NpemUiPjQ2c3A8L2RpbWVuPgotICAgIDxkaW1lbiBuYW1lPSJzZXR1cF9ob3Jpem9udGFsX3BhZGRpbmciPjE2ZHA8L2RpbWVuPgorICAgIDxzdHlsZSBuYW1lPSJzZXR1cFRpdGxlU3R5bGUiIHBhcmVudD0ic2V0dXBUaXRsZVN0eWxlQ29tbW9uIj4KKyAgICAgICAgPGl0ZW0gbmFtZT0iYW5kcm9pZDpsYXlvdXRfYWxpZ25QYXJlbnRTdGFydCI+dHJ1ZTwvaXRlbT4KKyAgICA8L3N0eWxlPgorICAgIDxzdHlsZSBuYW1lPSJzZXR1cFN0ZXBBY3Rpb25MYWJlbFN0eWxlIiBwYXJlbnQ9InNldHVwU3RlcEFjdGlvbkxhYmVsU3R5bGVDb21tb24iPgorICAgICAgICA8aXRlbSBuYW1lPSJhbmRyb2lkOnBhZGRpbmdTdGFydCI+MTJkcDwvaXRlbT4KKyAgICAgICAgPGl0ZW0gbmFtZT0iYW5kcm9pZDpwYWRkaW5nRW5kIj4yNGRwPC9pdGVtPgorICAgIDwvc3R5bGU+CiA8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL2phdmEvcmVzL3ZhbHVlcy12aS9zdHJpbmdzLnhtbCBiL2phdmEvcmVzL3ZhbHVlcy12aS9zdHJpbmdzLnhtbAppbmRleCBkMDYyNjMwLi4zMzIxY2YxIDEwMDY0NAotLS0gYS9qYXZhL3Jlcy92YWx1ZXMtdmkvc3RyaW5ncy54bWwKKysrIGIvamF2YS9yZXMvdmFsdWVzLXZpL3N0cmluZ3MueG1sCkBAIC01Myw2ICs1Myw4IEBACiAgICAgPHN0cmluZyBuYW1lPSJ1c2VfZG91YmxlX3NwYWNlX3BlcmlvZF9zdW1tYXJ5IiBtc2dpZD0iNjUzMjg5MjE4NzI0Nzk1Mjc5OSI+Ik5o4bqlbiDEkcO6cCB2w6BvIHBow61tIGPDoWNoIHPhur0gY2jDqG4gdGjDqm0gbeG7mXQgZOG6pXUgc2F1IGThuqV1IGPDoWNoIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYXV0b19jYXAiIG1zZ2lkPSIxNzE5NzQ2Njc0ODU0NjI4MjUyIj4iVOG7sSDEkeG7mW5nIHZp4bq/dCBob2EiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJhdXRvX2NhcF9zdW1tYXJ5IiBtc2dpZD0iNzkzNDQ1Mjc2MTAyMjk0Njg3NCI+IlZp4bq/dCBob2EgY2jhu68gxJHhuqd1IHRpw6puIGPhu6dhIG3hu5dpIGPDonUiPC9zdHJpbmc+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgZWRpdF9wZXJzb25hbF9kaWN0aW9uYXJ5ICgzOTk2OTEwMDM4OTUyOTQwNDIwKSAtLT4KKyAgICA8c2tpcCAvPgogICAgIDxzdHJpbmcgbmFtZT0iY29uZmlndXJlX2RpY3Rpb25hcmllc190aXRsZSIgbXNnaWQ9IjQyMzg2NTIzMzg1NTY5MDIwNDkiPiJUaMOqbSB04burIMSRaeG7g24iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJtYWluX2RpY3Rpb25hcnkiIG1zZ2lkPSI0Nzk4NzYzNzgxODE4MzYxMTY4Ij4iVOG7qyDEkWnhu4NuIGNow61uaCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InByZWZzX3Nob3dfc3VnZ2VzdGlvbnMiIG1zZ2lkPSI4MDI2Nzk5NjYzNDQ1NTMxNjM3Ij4iSGnhu4NuIHRo4buLIGfhu6NpIMO9IHPhu61hIjwvc3RyaW5nPgpAQCAtMTcxLDggKzE3MywyNyBAQAogICAgIDxzdHJpbmcgbmFtZT0icmVhZF9leHRlcm5hbF9kaWN0aW9uYXJ5X2NvbmZpcm1faW5zdGFsbF9tZXNzYWdlIiBtc2dpZD0iNjg5ODYxMDE2Mzc2ODk4MDg3MCI+IlRo4buxYyBz4buxIGPDoGkgxJHhurd0IHThu4dwIG7DoHkgY2hvIDx4bGlmZjpnIGlkPSJMT0NBTEVfTkFNRSI+JXM8L3hsaWZmOmc+PyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImVycm9yIiBtc2dpZD0iODk0MDc2MzYyNDY2ODUxMzY0OCI+IsSQw6MgeOG6o3kgcmEgbOG7l2kiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJidXR0b25fZGVmYXVsdCIgbXNnaWQ9IjM5ODgwMTc4NDA0MzE4ODE0OTEiPiJN4bq3YyDEkeG7i25oIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibGFuZ3VhZ2Vfc2V0dGluZ3MiIG1zZ2lkPSIxNjcxMTUzMDUzMjAxODA5MDMxIj4iTmfDtG4gbmfhu68gdsOgIHBoxrDGoW5nIHRo4bupYyBuaOG6rXAiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJzZWxlY3RfaW5wdXRfbWV0aG9kIiBtc2dpZD0iNDMwMTYwMjM3NDYwOTI3NTAwMyI+IkNo4buNbiBwaMawxqFuZyB0aOG7qWMgbmjhuq1wIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfd2VsY29tZV90aXRsZSIgbXNnaWQ9IjYxMTI4MjE3MDk4MzIwMzE3MTUiPiJDaMOgbyBt4burbmcgYuG6oW4gxJHhur9uIHbhu5tpIDx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF93ZWxjb21lX2FkZGl0aW9uYWxfZGVzY3JpcHRpb24iIG1zZ2lkPSI4MTUwMjUyMDA4NTQ1NzY4OTUzIj4iduG7m2kgTmjhuq1wIGLhurFuZyBj4butIGNo4buJIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RhcnRfYWN0aW9uIiBtc2dpZD0iODkzNjAzNjQ2MDg5NzM0NzcwOCI+IkLhuq90IMSR4bqndSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX25leHRfYWN0aW9uIiBtc2dpZD0iMzcxODIxNDM3OTE1MTQ0NjAzIj4iQsaw4bubYyB0aeG6v3AgdGhlbyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXBzX3RpdGxlIiBtc2dpZD0iNjQwMDM3MzAzNDg3MTgxNjE4MiI+IlRoaeG6v3QgbOG6rXAgPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAxX3RpdGxlIiBtc2dpZD0iMzE0Nzk2NzYzMDI1MzQ2MjMxNSI+IkLhuq10IDx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMV9pbnN0cnVjdGlvbiIgbXNnaWQ9IjI1Nzg2MzE5MzY2MjQ2MzcyNDEiPiJWdWkgbMOybmcga2nhu4NtIHRyYSBcIjx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz5cIiB0cm9uZyBjw6BpIMSR4bq3dCBuZ8O0biBuZ+G7ryB2w6AgcGjGsMahbmcgdGjhu6ljIG5o4bqtcCBj4bunYSBi4bqhbi4gxJBp4buBdSBuw6B5IHPhur0g4buneSBxdXnhu4FuIGNobyDhu6luZyBk4bulbmcgY2jhuqF5IHRyw6puIHRoaeG6v3QgYuG7iyBj4bunYSBi4bqhbi4iPC9zdHJpbmc+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc2V0dXBfc3RlcDFfZmluaXNoZWRfaW5zdHJ1Y3Rpb24gKDEwNzYxNDgyMDA0OTU3OTk0KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDFfYWN0aW9uIiBtc2dpZD0iNDM2NjUxMzUzNDk5OTkwMTcyOCI+IkLhuq10IHRyb25nIEPDoGkgxJHhurd0Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDJfdGl0bGUiIG1zZ2lkPSI2ODYwNzI1NDQ3OTA2NjkwNTk0Ij4iQ2h1eeG7g24gc2FuZyA8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDJfaW5zdHJ1Y3Rpb24iIG1zZ2lkPSI5MTQxNDgxOTY0ODcwMDIzMzM2Ij4iVGnhur9wIHRoZW8sIGNo4buNbiBcIjx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz5cIiBsw6BtIHBoxrDGoW5nIHRo4bupYyBuaOG6rXAgdsSDbiBi4bqjbiBob+G6oXQgxJHhu5luZyBj4bunYSBi4bqhbi4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMl9hY3Rpb24iIG1zZ2lkPSIxNjYwMzMwMzA3MTU5ODI0MzM3Ij4iQ2h1eeG7g24gcGjGsMahbmcgdGjhu6ljIG5o4bqtcCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAzX3RpdGxlIiBtc2dpZD0iMzE1NDc1NzE4MzYzMTQ5MDI4MSI+IlhpbiBjaMO6YyBt4burbmcsIGLhuqFuIMSRw6MgY8OgaSDEkeG6t3QgeG9uZyEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwM19pbnN0cnVjdGlvbiIgbXNnaWQ9IjgwMjU5ODE4Mjk2MDU0MjYwMDAiPiJCw6J5IGdp4budIGLhuqFuIGPDsyB0aOG7gyBuaOG6rXAgdsOgbyB04bqldCBj4bqjIOG7qW5nIGThu6VuZyB5w6p1IHRow61jaCBj4bunYSBtw6xuaCB24bubaSA8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+LiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAzX2FjdGlvbiIgbXNnaWQ9IjYwMDg3OTc5NzI1Njk0MjI1OSI+IsSQ4buLbmggY+G6pXUgaMOsbmggY8OhYyBuZ8O0biBuZ+G7ryBraMOhYyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX2ZpbmlzaF9hY3Rpb24iIG1zZ2lkPSIyNzY1NTkyNDM0MDk0NjUzODkiPiLEkMOjIHhvbmciPC9zdHJpbmc+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc2hvd19zZXR1cF93aXphcmRfaWNvbiAoNTAwODAyODU5MDU5MzcxMDgzMCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzaG93X3NldHVwX3dpemFyZF9pY29uX3N1bW1hcnkgKDQxMTk5OTgzMjI1MzY4ODAyMTMpIC0tPgorICAgIDxza2lwIC8+CiAgICAgPHN0cmluZyBuYW1lPSJhcHBfbmFtZSIgbXNnaWQ9IjYzMjAxMDI2Mzc0OTEyMzQ3OTIiPiJOaMOgIGN1bmcgY+G6pXAgdOG7qyDEkWnhu4NuIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGljdGlvbmFyeV9wcm92aWRlcl9uYW1lIiBtc2dpZD0iMzAyNzMxNTA0NTM5NzM2MzA3OSI+Ik5ow6AgY3VuZyBj4bqlcCB04burIMSRaeG7g24iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkaWN0aW9uYXJ5X3NlcnZpY2VfbmFtZSIgbXNnaWQ9IjYyMzc0NzIzNTA2OTM1MTE0NDgiPiJE4buLY2ggduG7pSB04burIMSRaeG7g24iPC9zdHJpbmc+CkBAIC0yMDMsNCArMjI0LDYgQEAKICAgICA8c3RyaW5nIG5hbWU9ImRpY3RfYXZhaWxhYmxlX25vdGlmaWNhdGlvbl90aXRsZSIgbXNnaWQ9IjY1MTQyODg1OTE5NTkxMTcyODgiPiJDw7Mgc+G6tW4gdOG7qyDEkWnhu4NuIGNobyA8eGxpZmY6ZyBpZD0iTEFOR1VBR0UiPiUxJHM8L3hsaWZmOmc+Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGljdF9hdmFpbGFibGVfbm90aWZpY2F0aW9uX2Rlc2NyaXB0aW9uIiBtc2dpZD0iMTA3NTE5NDE2OTQ0MzE2MzQ4NyI+Ik5o4bqlbiDEkeG7gyB4ZW0gbOG6oWkgdsOgIHThuqNpIHh14buRbmciPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ0b2FzdF9kb3dubG9hZGluZ19zdWdnZXN0aW9ucyIgbXNnaWQ9IjEzMTMwMjczNTM1ODg1NjY2NjAiPiJU4bqjaSB4deG7kW5nOiDEkeG7gSB4deG6pXQgxJHhu5FpIHbhu5tpIDx4bGlmZjpnIGlkPSJMQU5HVUFHRSI+JTEkczwveGxpZmY6Zz4gc+G6vSBz4bubbSBz4bq1biBzw6BuZy4iPC9zdHJpbmc+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgdmVyc2lvbl90ZXh0ICgyNzE1MzU0MjE1NTY4NDY5Mzg1KSAtLT4KKyAgICA8c2tpcCAvPgogPC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9qYXZhL3Jlcy92YWx1ZXMtemgtckNOL3N0cmluZ3MueG1sIGIvamF2YS9yZXMvdmFsdWVzLXpoLXJDTi9zdHJpbmdzLnhtbAppbmRleCBkMDY1NTdlLi41ZTk5YTA3IDEwMDY0NAotLS0gYS9qYXZhL3Jlcy92YWx1ZXMtemgtckNOL3N0cmluZ3MueG1sCisrKyBiL2phdmEvcmVzL3ZhbHVlcy16aC1yQ04vc3RyaW5ncy54bWwKQEAgLTUzLDYgKzUzLDggQEAKICAgICA8c3RyaW5nIG5hbWU9InVzZV9kb3VibGVfc3BhY2VfcGVyaW9kX3N1bW1hcnkiIG1zZ2lkPSI2NTMyODkyMTg3MjQ3OTUyNzk5Ij4i5Y+M5Ye756m65qC86ZSu5Y+v5o+S5YWl5Y+l5Y+35bm25ZCO6Lef56m65qC8Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYXV0b19jYXAiIG1zZ2lkPSIxNzE5NzQ2Njc0ODU0NjI4MjUyIj4i6Ieq5Yqo5aSn5YaZIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYXV0b19jYXBfc3VtbWFyeSIgbXNnaWQ9Ijc5MzQ0NTI3NjEwMjI5NDY4NzQiPiLlj6XpppblrZfor43lpKflhpkiPC9zdHJpbmc+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgZWRpdF9wZXJzb25hbF9kaWN0aW9uYXJ5ICgzOTk2OTEwMDM4OTUyOTQwNDIwKSAtLT4KKyAgICA8c2tpcCAvPgogICAgIDxzdHJpbmcgbmFtZT0iY29uZmlndXJlX2RpY3Rpb25hcmllc190aXRsZSIgbXNnaWQ9IjQyMzg2NTIzMzg1NTY5MDIwNDkiPiLpmYTliqDor43lhbgiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJtYWluX2RpY3Rpb25hcnkiIG1zZ2lkPSI0Nzk4NzYzNzgxODE4MzYxMTY4Ij4i5Li76K+N5YW4Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0icHJlZnNfc2hvd19zdWdnZXN0aW9ucyIgbXNnaWQ9IjgwMjY3OTk2NjM0NDU1MzE2MzciPiLmmL7npLrmm7TmraPlu7rorq4iPC9zdHJpbmc+CkBAIC0xNzEsOCArMTczLDI3IEBACiAgICAgPHN0cmluZyBuYW1lPSJyZWFkX2V4dGVybmFsX2RpY3Rpb25hcnlfY29uZmlybV9pbnN0YWxsX21lc3NhZ2UiIG1zZ2lkPSI2ODk4NjEwMTYzNzY4OTgwODcwIj4i56Gu5a6a6KaB5Li6PHhsaWZmOmcgaWQ9IkxPQ0FMRV9OQU1FIj4lczwveGxpZmY6Zz7lronoo4XmraTmlofku7blkJfvvJ8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJlcnJvciIgbXNnaWQ9Ijg5NDA3NjM2MjQ2Njg1MTM2NDgiPiLlh7rnjrDplJnor68iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJidXR0b25fZGVmYXVsdCIgbXNnaWQ9IjM5ODgwMTc4NDA0MzE4ODE0OTEiPiLpu5jorqQiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJsYW5ndWFnZV9zZXR0aW5ncyIgbXNnaWQ9IjE2NzExNTMwNTMyMDE4MDkwMzEiPiLor63oqIDlkozovpPlhaXms5UiPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJzZWxlY3RfaW5wdXRfbWV0aG9kIiBtc2dpZD0iNDMwMTYwMjM3NDYwOTI3NTAwMyI+IumAieaLqei+k+WFpeazlSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3dlbGNvbWVfdGl0bGUiIG1zZ2lkPSI2MTEyODIxNzA5ODMyMDMxNzE1Ij4i5qyi6L+O5L2/55SoIDx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF93ZWxjb21lX2FkZGl0aW9uYWxfZGVzY3JpcHRpb24iIG1zZ2lkPSI4MTUwMjUyMDA4NTQ1NzY4OTUzIj4i5L2T6aqM6aG655WF55qE5ruR6KGM6L6T5YWl5L2T6aqMIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RhcnRfYWN0aW9uIiBtc2dpZD0iODkzNjAzNjQ2MDg5NzM0NzcwOCI+IuW8gOWniyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX25leHRfYWN0aW9uIiBtc2dpZD0iMzcxODIxNDM3OTE1MTQ0NjAzIj4i5LiL5LiA5q2lIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcHNfdGl0bGUiIG1zZ2lkPSI2NDAwMzczMDM0ODcxODE2MTgyIj4i6K6+572uIDx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMV90aXRsZSIgbXNnaWQ9IjMxNDc5Njc2MzAyNTM0NjIzMTUiPiLlkK/nlKggPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAxX2luc3RydWN0aW9uIiBtc2dpZD0iMjU3ODYzMTkzNjYyNDYzNzI0MSI+Iuivt+WcqOKAnOivreiogOWSjOi+k+WFpeazleKAneiuvue9ruS4remAieS4reKAnDx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz7igJ3vvIzmjojmnYPov5npobnlupTnlKjlnKjmgqjnmoTorr7lpIfkuIrov5DooYzjgIIiPC9zdHJpbmc+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc2V0dXBfc3RlcDFfZmluaXNoZWRfaW5zdHJ1Y3Rpb24gKDEwNzYxNDgyMDA0OTU3OTk0KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDFfYWN0aW9uIiBtc2dpZD0iNDM2NjUxMzUzNDk5OTkwMTcyOCI+IuWcqOiuvue9ruS4reWQr+eUqCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAyX3RpdGxlIiBtc2dpZD0iNjg2MDcyNTQ0NzkwNjY5MDU5NCI+IuWIh+aNouWIsCA8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDJfaW5zdHJ1Y3Rpb24iIG1zZ2lkPSI5MTQxNDgxOTY0ODcwMDIzMzM2Ij4i5o6l5LiL5p2l77yM6K+36YCJ5oup4oCcPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPuKAneS9nOS4uuaCqOimgeS9v+eUqOeahOaWh+Wtl+i+k+WFpeazleOAgiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAyX2FjdGlvbiIgbXNnaWQ9IjE2NjAzMzAzMDcxNTk4MjQzMzciPiLliIfmjaLovpPlhaXms5UiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwM190aXRsZSIgbXNnaWQ9IjMxNTQ3NTcxODM2MzE0OTAyODEiPiLmga3llpzvvIzmgqjlt7LlrozmiJDkuoborr7nva7vvIEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwM19pbnN0cnVjdGlvbiIgbXNnaWQ9IjgwMjU5ODE4Mjk2MDU0MjYwMDAiPiLnjrDlnKjvvIzmgqjlj6/ku6XlnKjoh6rlt7HllpzmrKLnmoTmiYDmnInlupTnlKjkuK3kvb/nlKggPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPuadpei+k+WFpeWGheWuueS6huOAgiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAzX2FjdGlvbiIgbXNnaWQ9IjYwMDg3OTc5NzI1Njk0MjI1OSI+IumFjee9ruWFtuS7luivreiogCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX2ZpbmlzaF9hY3Rpb24iIG1zZ2lkPSIyNzY1NTkyNDM0MDk0NjUzODkiPiLlrozmiJAiPC9zdHJpbmc+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc2hvd19zZXR1cF93aXphcmRfaWNvbiAoNTAwODAyODU5MDU5MzcxMDgzMCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzaG93X3NldHVwX3dpemFyZF9pY29uX3N1bW1hcnkgKDQxMTk5OTgzMjI1MzY4ODAyMTMpIC0tPgorICAgIDxza2lwIC8+CiAgICAgPHN0cmluZyBuYW1lPSJhcHBfbmFtZSIgbXNnaWQ9IjYzMjAxMDI2Mzc0OTEyMzQ3OTIiPiLor43lhbjmj5DkvpvnqIvluo8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkaWN0aW9uYXJ5X3Byb3ZpZGVyX25hbWUiIG1zZ2lkPSIzMDI3MzE1MDQ1Mzk3MzYzMDc5Ij4i6K+N5YW45o+Q5L6b56iL5bqPIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGljdGlvbmFyeV9zZXJ2aWNlX25hbWUiIG1zZ2lkPSI2MjM3NDcyMzUwNjkzNTExNDQ4Ij4i6K+N5YW45pyN5YqhIjwvc3RyaW5nPgpAQCAtMjAzLDQgKzIyNCw2IEBACiAgICAgPHN0cmluZyBuYW1lPSJkaWN0X2F2YWlsYWJsZV9ub3RpZmljYXRpb25fdGl0bGUiIG1zZ2lkPSI2NTE0Mjg4NTkxOTU5MTE3Mjg4Ij4iPHhsaWZmOmcgaWQ9IkxBTkdVQUdFIj4lMSRzPC94bGlmZjpnPuivjeWFuOWPr+S+m+S4i+i9vSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRpY3RfYXZhaWxhYmxlX25vdGlmaWNhdGlvbl9kZXNjcmlwdGlvbiIgbXNnaWQ9IjEwNzUxOTQxNjk0NDMxNjM0ODciPiLmjInmraTpgJrnn6XljbPlj6/mn6XnnIvlkozkuIvovb0iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJ0b2FzdF9kb3dubG9hZGluZ19zdWdnZXN0aW9ucyIgbXNnaWQ9IjEzMTMwMjczNTM1ODg1NjY2NjAiPiLkuIvovb3kuK3vvJrlvojlv6vlsLHog73lkK/nlKg8eGxpZmY6ZyBpZD0iTEFOR1VBR0UiPiUxJHM8L3hsaWZmOmc+55qE6K+N5YW45bu66K6u5pyN5Yqh5LqG77yBIjwvc3RyaW5nPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHZlcnNpb25fdGV4dCAoMjcxNTM1NDIxNTU2ODQ2OTM4NSkgLS0+CisgICAgPHNraXAgLz4KIDwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvamF2YS9yZXMvdmFsdWVzLXpoLXJUVy9zdHJpbmdzLnhtbCBiL2phdmEvcmVzL3ZhbHVlcy16aC1yVFcvc3RyaW5ncy54bWwKaW5kZXggMjZhMjZjNy4uYmUzNDZiOSAxMDA2NDQKLS0tIGEvamF2YS9yZXMvdmFsdWVzLXpoLXJUVy9zdHJpbmdzLnhtbAorKysgYi9qYXZhL3Jlcy92YWx1ZXMtemgtclRXL3N0cmluZ3MueG1sCkBAIC01Myw2ICs1Myw4IEBACiAgICAgPHN0cmluZyBuYW1lPSJ1c2VfZG91YmxlX3NwYWNlX3BlcmlvZF9zdW1tYXJ5IiBtc2dpZD0iNjUzMjg5MjE4NzI0Nzk1Mjc5OSI+Iui8leaMieWFqeS4i+epuuagvOmNteWPr+aPkuWFpeWPpeiZn+WPpuWKoOS4gOWAi+epuuagvCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImF1dG9fY2FwIiBtc2dpZD0iMTcxOTc0NjY3NDg1NDYyODI1MiI+IuiHquWLleWkp+WvqyI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImF1dG9fY2FwX3N1bW1hcnkiIG1zZ2lkPSI3OTM0NDUyNzYxMDIyOTQ2ODc0Ij4i5Y+l6aaW5a2X6Kme5aSn5a+rIjwvc3RyaW5nPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGVkaXRfcGVyc29uYWxfZGljdGlvbmFyeSAoMzk5NjkxMDAzODk1Mjk0MDQyMCkgLS0+CisgICAgPHNraXAgLz4KICAgICA8c3RyaW5nIG5hbWU9ImNvbmZpZ3VyZV9kaWN0aW9uYXJpZXNfdGl0bGUiIG1zZ2lkPSI0MjM4NjUyMzM4NTU2OTAyMDQ5Ij4i5aSW5o6b5a2X5YW4Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ibWFpbl9kaWN0aW9uYXJ5IiBtc2dpZD0iNDc5ODc2Mzc4MTgxODM2MTE2OCI+IuS4u+imgeWtl+WFuCI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InByZWZzX3Nob3dfc3VnZ2VzdGlvbnMiIG1zZ2lkPSI4MDI2Nzk5NjYzNDQ1NTMxNjM3Ij4i6aGv56S65L+u5q2j5bu66K2wIjwvc3RyaW5nPgpAQCAtMTcxLDggKzE3MywyNyBAQAogICAgIDxzdHJpbmcgbmFtZT0icmVhZF9leHRlcm5hbF9kaWN0aW9uYXJ5X2NvbmZpcm1faW5zdGFsbF9tZXNzYWdlIiBtc2dpZD0iNjg5ODYxMDE2Mzc2ODk4MDg3MCI+Iua6luWCmeeCujx4bGlmZjpnIGlkPSJMT0NBTEVfTkFNRSI+JXM8L3hsaWZmOmc+54mI5pys5a6J6KOd6YCZ5YCL5qqU5qGI5ZeO77yfIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZXJyb3IiIG1zZ2lkPSI4OTQwNzYzNjI0NjY4NTEzNjQ4Ij4i55m855Sf6Yyv6KqkIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYnV0dG9uX2RlZmF1bHQiIG1zZ2lkPSIzOTg4MDE3ODQwNDMxODgxNDkxIj4i6aCQ6KitIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ibGFuZ3VhZ2Vfc2V0dGluZ3MiIG1zZ2lkPSIxNjcxMTUzMDUzMjAxODA5MDMxIj4i6Kqe6KiA6IiH6Ly45YWl6Kit5a6aIjwvc3RyaW5nPgotICAgIDxzdHJpbmcgbmFtZT0ic2VsZWN0X2lucHV0X21ldGhvZCIgbXNnaWQ9IjQzMDE2MDIzNzQ2MDkyNzUwMDMiPiLpgbjmk4fovLjlhaXms5UiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF93ZWxjb21lX3RpdGxlIiBtc2dpZD0iNjExMjgyMTcwOTgzMjAzMTcxNSI+Iuatoei/juS9v+eUqOOAjDx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz7jgI0iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF93ZWxjb21lX2FkZGl0aW9uYWxfZGVzY3JpcHRpb24iIG1zZ2lkPSI4MTUwMjUyMDA4NTQ1NzY4OTUzIj4i5ZCr5omL5Yui6Ly45YWl5Yqf6IO9Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RhcnRfYWN0aW9uIiBtc2dpZD0iODkzNjAzNjQ2MDg5NzM0NzcwOCI+IumWi+Wni+ioreWumiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX25leHRfYWN0aW9uIiBtc2dpZD0iMzcxODIxNDM3OTE1MTQ0NjAzIj4i5LiL5LiA5q2lIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcHNfdGl0bGUiIG1zZ2lkPSI2NDAwMzczMDM0ODcxODE2MTgyIj4i5q2j5Zyo6Kit5a6a44CMPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPuOAjSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAxX3RpdGxlIiBtc2dpZD0iMzE0Nzk2NzYzMDI1MzQ2MjMxNSI+IuWVn+eUqOOAjDx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz7jgI0iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMV9pbnN0cnVjdGlvbiIgbXNnaWQ9IjI1Nzg2MzE5MzY2MjQ2MzcyNDEiPiLoq4vlnKjoqp7oqIDoiIfovLjlhaXoqK3lrprkuK3li77pgbjjgIw8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+44CN77yM5o6I5qyK6YCZ6aCF5oeJ55So56iL5byP5Zyo5oKo55qE6KOd572u5LiK5Z+36KGM44CCIjwvc3RyaW5nPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNldHVwX3N0ZXAxX2ZpbmlzaGVkX2luc3RydWN0aW9uICgxMDc2MTQ4MjAwNDk1Nzk5NCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAxX2FjdGlvbiIgbXNnaWQ9IjQzNjY1MTM1MzQ5OTk5MDE3MjgiPiLlnKjoqK3lrprkuK3llZ/nlKgiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMl90aXRsZSIgbXNnaWQ9IjY4NjA3MjU0NDc5MDY2OTA1OTQiPiLliIfmj5voh7PjgIw8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+44CNIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDJfaW5zdHJ1Y3Rpb24iIG1zZ2lkPSI5MTQxNDgxOTY0ODcwMDIzMzM2Ij4i5o6l6JGX77yM6KuL6YG45Y+W44CMPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPuOAjeWBmueCuuebruWJjeS9v+eUqOeahOaWh+Wtl+i8uOWFpeazleOAgiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAyX2FjdGlvbiIgbXNnaWQ9IjE2NjAzMzAzMDcxNTk4MjQzMzciPiLliIfmj5vovLjlhaXms5UiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwM190aXRsZSIgbXNnaWQ9IjMxNTQ3NTcxODM2MzE0OTAyODEiPiLmga3llpzvvIzmgqjlt7LlrozmiJDoqK3lrprvvIEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwM19pbnN0cnVjdGlvbiIgbXNnaWQ9IjgwMjU5ODE4Mjk2MDU0MjYwMDAiPiLnj77lnKjvvIzmgqjlj6/ku6XlnKjoh6rlt7HllpzmhJvnmoTmiYDmnInmh4nnlKjnqIvlvI/kuK3kvb/nlKjjgIw8eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+44CN6Ly45YWl5paH5a2X44CCIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDNfYWN0aW9uIiBtc2dpZD0iNjAwODc5Nzk3MjU2OTQyMjU5Ij4i6Kit5a6a5YW25LuW6Kqe6KiAIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfZmluaXNoX2FjdGlvbiIgbXNnaWQ9IjI3NjU1OTI0MzQwOTQ2NTM4OSI+IuWujOaIkCI8L3N0cmluZz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzaG93X3NldHVwX3dpemFyZF9pY29uICg1MDA4MDI4NTkwNTkzNzEwODMwKSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIHNob3dfc2V0dXBfd2l6YXJkX2ljb25fc3VtbWFyeSAoNDExOTk5ODMyMjUzNjg4MDIxMykgLS0+CisgICAgPHNraXAgLz4KICAgICA8c3RyaW5nIG5hbWU9ImFwcF9uYW1lIiBtc2dpZD0iNjMyMDEwMjYzNzQ5MTIzNDc5MiI+IuWtl+WFuOaPkOS+m+iAhSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImRpY3Rpb25hcnlfcHJvdmlkZXJfbmFtZSIgbXNnaWQ9IjMwMjczMTUwNDUzOTczNjMwNzkiPiLlrZflhbjmj5DkvpvogIUiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkaWN0aW9uYXJ5X3NlcnZpY2VfbmFtZSIgbXNnaWQ9IjYyMzc0NzIzNTA2OTM1MTE0NDgiPiLlrZflhbjmnI3li5kiPC9zdHJpbmc+CkBAIC0yMDMsNCArMjI0LDYgQEAKICAgICA8c3RyaW5nIG5hbWU9ImRpY3RfYXZhaWxhYmxlX25vdGlmaWNhdGlvbl90aXRsZSIgbXNnaWQ9IjY1MTQyODg1OTE5NTkxMTcyODgiPiLmlK/mj7Q8eGxpZmY6ZyBpZD0iTEFOR1VBR0UiPiUxJHM8L3hsaWZmOmc+5a2X5YW4Ijwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGljdF9hdmFpbGFibGVfbm90aWZpY2F0aW9uX2Rlc2NyaXB0aW9uIiBtc2dpZD0iMTA3NTE5NDE2OTQ0MzE2MzQ4NyI+IuaMieS4i+WNs+WPr+afpeeci+S4puS4i+i8iSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InRvYXN0X2Rvd25sb2FkaW5nX3N1Z2dlc3Rpb25zIiBtc2dpZD0iMTMxMzAyNzM1MzU4ODU2NjY2MCI+IuS4i+i8ieS4re+8muWNs+Wwh+WVn+eUqDx4bGlmZjpnIGlkPSJMQU5HVUFHRSI+JTEkczwveGxpZmY6Zz7lrZfoqZ7lu7rorbDmnI3li5njgIIiPC9zdHJpbmc+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3IgdmVyc2lvbl90ZXh0ICgyNzE1MzU0MjE1NTY4NDY5Mzg1KSAtLT4KKyAgICA8c2tpcCAvPgogPC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9qYXZhL3Jlcy92YWx1ZXMtenUvc3RyaW5ncy54bWwgYi9qYXZhL3Jlcy92YWx1ZXMtenUvc3RyaW5ncy54bWwKaW5kZXggMTQ2NjI3Zi4uODE2OTZmMyAxMDA2NDQKLS0tIGEvamF2YS9yZXMvdmFsdWVzLXp1L3N0cmluZ3MueG1sCisrKyBiL2phdmEvcmVzL3ZhbHVlcy16dS9zdHJpbmdzLnhtbApAQCAtNTMsNiArNTMsOCBAQAogICAgIDxzdHJpbmcgbmFtZT0idXNlX2RvdWJsZV9zcGFjZV9wZXJpb2Rfc3VtbWFyeSIgbXNnaWQ9IjY1MzI4OTIxODcyNDc5NTI3OTkiPiJVa3V0aGVwaGEga2FiaWxpIGt1YmhhIHllc2lraGFsYSBrdWZha2EgaXNpa2hhdGhpIGVzaWxhbmRlbHdhIHlpc2lraGFsYSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9ImF1dG9fY2FwIiBtc2dpZD0iMTcxOTc0NjY3NDg1NDYyODI1MiI+IlVrd2VuemEgb2ZlbGViYSBva3V6ZW56YWthbGVsYXlvIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYXV0b19jYXBfc3VtbWFyeSIgbXNnaWQ9Ijc5MzQ0NTI3NjEwMjI5NDY4NzQiPiJZZW56YSB1ZmVsZWJhIHdlZ2FtYSBsb2t1cWFsYSBsb211c2hvIG5nYW11bnllIjwvc3RyaW5nPgorICAgIDwhLS0gbm8gdHJhbnNsYXRpb24gZm91bmQgZm9yIGVkaXRfcGVyc29uYWxfZGljdGlvbmFyeSAoMzk5NjkxMDAzODk1Mjk0MDQyMCkgLS0+CisgICAgPHNraXAgLz4KICAgICA8c3RyaW5nIG5hbWU9ImNvbmZpZ3VyZV9kaWN0aW9uYXJpZXNfdGl0bGUiIG1zZ2lkPSI0MjM4NjUyMzM4NTU2OTAyMDQ5Ij4iRmFrYSBpemljaGF6YW1hendpIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0ibWFpbl9kaWN0aW9uYXJ5IiBtc2dpZD0iNDc5ODc2Mzc4MTgxODM2MTE2OCI+IklzaWNoYXphbWF6d2kgc2FraG8gbmdxYW5naSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InByZWZzX3Nob3dfc3VnZ2VzdGlvbnMiIG1zZ2lkPSI4MDI2Nzk5NjYzNDQ1NTMxNjM3Ij4iQm9uaXNhIHVrdXNpa2VzZWxhIGtva3VsdW5naXNhIjwvc3RyaW5nPgpAQCAtMTcxLDggKzE3MywyNyBAQAogICAgIDxzdHJpbmcgbmFtZT0icmVhZF9leHRlcm5hbF9kaWN0aW9uYXJ5X2NvbmZpcm1faW5zdGFsbF9tZXNzYWdlIiBtc2dpZD0iNjg5ODYxMDE2Mzc2ODk4MDg3MCI+IlVmdW5hIHVrdWZha2VsYSBpLTx4bGlmZjpnIGlkPSJMT0NBTEVfTkFNRSI+JXM8L3hsaWZmOmc+IGxlbGkgZmF5ZWxhIG5nb2t3ZXFpbmlzbz8iPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJlcnJvciIgbXNnaWQ9Ijg5NDA3NjM2MjQ2Njg1MTM2NDgiPiJLdWJlIG5lcGh1dGhhIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iYnV0dG9uX2RlZmF1bHQiIG1zZ2lkPSIzOTg4MDE3ODQwNDMxODgxNDkxIj4iT2t1emVuemFrYWxlbGF5byI8L3N0cmluZz4KLSAgICA8c3RyaW5nIG5hbWU9Imxhbmd1YWdlX3NldHRpbmdzIiBtc2dpZD0iMTY3MTE1MzA1MzIwMTgwOTAzMSI+IlVsaW1pIG5va29rdWZha3dheW8iPC9zdHJpbmc+Ci0gICAgPHN0cmluZyBuYW1lPSJzZWxlY3RfaW5wdXRfbWV0aG9kIiBtc2dpZD0iNDMwMTYwMjM3NDYwOTI3NTAwMyI+IktoZXRoYSBpbmRsZWxhIHlva3VmYWthIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfd2VsY29tZV90aXRsZSIgbXNnaWQ9IjYxMTI4MjE3MDk4MzIwMzE3MTUiPiJTaXlha3dhbXVrZWxhIGt1LTx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF93ZWxjb21lX2FkZGl0aW9uYWxfZGVzY3JpcHRpb24iIG1zZ2lkPSI4MTUwMjUyMDA4NTQ1NzY4OTUzIj4ibm9rdXRoYXlpcGhhIG5nb2t1dGhpbnRhIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RhcnRfYWN0aW9uIiBtc2dpZD0iODkzNjAzNjQ2MDg5NzM0NzcwOCI+IlFhbGlzYSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX25leHRfYWN0aW9uIiBtc2dpZD0iMzcxODIxNDM3OTE1MTQ0NjAzIj4iSXNpbnlhdGhlbG8gZXNpbGFuZGVsYXlvIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcHNfdGl0bGUiIG1zZ2lkPSI2NDAwMzczMDM0ODcxODE2MTgyIj4iS3VzZXRod2EgaS08eGxpZmY6ZyBpZD0iQVBQTElDQVRJT05fTkFNRSI+JXM8L3hsaWZmOmc+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDFfdGl0bGUiIG1zZ2lkPSIzMTQ3OTY3NjMwMjUzNDYyMzE1Ij4iTmlrYSBhbWFuZGxhIGktPHhsaWZmOmcgaWQ9IkFQUExJQ0FUSU9OX05BTUUiPiVzPC94bGlmZjpnPiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAxX2luc3RydWN0aW9uIiBtc2dpZD0iMjU3ODYzMTkzNjYyNDYzNzI0MSI+IlNpY2VsYSB1aGxvbGUgaS1cIjx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz5cIiBuZ29saW1pIGx3YWtobyBuZXppbHVuZ2lzZWxlbG8gem9rb2t1ZmFrYS4gTG9raHUga3V6b3lpZ3VueWF6YSB1a3V0aGkgaXNlYmVuemUga3VkaXZheWlzaSB5YWtoby4iPC9zdHJpbmc+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc2V0dXBfc3RlcDFfZmluaXNoZWRfaW5zdHJ1Y3Rpb24gKDEwNzYxNDgyMDA0OTU3OTk0KSAtLT4KKyAgICA8c2tpcCAvPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDFfYWN0aW9uIiBtc2dpZD0iNDM2NjUxMzUzNDk5OTkwMTcyOCI+Ik5pa2EgYW1hbmRsYSBrdXppbHVuZ2lzZWxlbG8iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMl90aXRsZSIgbXNnaWQ9IjY4NjA3MjU0NDc5MDY2OTA1OTQiPiJTaGludHNoZWxhIGt1LTx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz4uIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDJfaW5zdHJ1Y3Rpb24iIG1zZ2lkPSI5MTQxNDgxOTY0ODcwMDIzMzM2Ij4iT2t1bGFuZGVsYXlvLCBraGV0aGEgaS1cIjx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz5cIiBuamVuZ2VuZGxlbGEgeWFraG8geW9rdWZha2EgdW1iaGFsbyBvc2ViZW56YXlvLiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAyX2FjdGlvbiIgbXNnaWQ9IjE2NjAzMzAzMDcxNTk4MjQzMzciPiJTaGludHNoYSBpemluZGxlbGEgem9rdWZha2EiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwM190aXRsZSIgbXNnaWQ9IjMxNTQ3NTcxODM2MzE0OTAyODEiPiJTaXlha3VoYWxhbGlzZWxhLCB1c3VtaSBuZ29tdW1vISI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAzX2luc3RydWN0aW9uIiBtc2dpZD0iODAyNTk4MTgyOTYwNTQyNjAwMCI+Ik1hbmplIHVzdW5nYXRoYXlpcGhhIG5nb2t1ZmFrYSB6b25rZSBpemluaGxlbG8gem9rdXNlYmVuemEgZXppeWl6aW50YW5kb2themkgemFraG8gbmdlLTx4bGlmZjpnIGlkPSJBUFBMSUNBVElPTl9OQU1FIj4lczwveGxpZmY6Zz4uIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDNfYWN0aW9uIiBtc2dpZD0iNjAwODc5Nzk3MjU2OTQyMjU5Ij4iTHVuZ2lzZWxlbGEgaXppbGltaSBlemluZ2V6aXdlIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfZmluaXNoX2FjdGlvbiIgbXNnaWQ9IjI3NjU1OTI0MzQwOTQ2NTM4OSI+IklxZWRpbGUiPC9zdHJpbmc+CisgICAgPCEtLSBubyB0cmFuc2xhdGlvbiBmb3VuZCBmb3Igc2hvd19zZXR1cF93aXphcmRfaWNvbiAoNTAwODAyODU5MDU5MzcxMDgzMCkgLS0+CisgICAgPHNraXAgLz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciBzaG93X3NldHVwX3dpemFyZF9pY29uX3N1bW1hcnkgKDQxMTk5OTgzMjI1MzY4ODAyMTMpIC0tPgorICAgIDxza2lwIC8+CiAgICAgPHN0cmluZyBuYW1lPSJhcHBfbmFtZSIgbXNnaWQ9IjYzMjAxMDI2Mzc0OTEyMzQ3OTIiPiJVbWhsaW56ZWtpIHdlc2ljaGF6YW1hendpIjwvc3RyaW5nPgogICAgIDxzdHJpbmcgbmFtZT0iZGljdGlvbmFyeV9wcm92aWRlcl9uYW1lIiBtc2dpZD0iMzAyNzMxNTA0NTM5NzM2MzA3OSI+IlVtaGxpbnpla2kgd2VzaWNoYXphbWF6d2kiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkaWN0aW9uYXJ5X3NlcnZpY2VfbmFtZSIgbXNnaWQ9IjYyMzc0NzIzNTA2OTM1MTE0NDgiPiJJc2V2aXNpIHllc2ljaGF6YW1hendpIjwvc3RyaW5nPgpAQCAtMjAzLDQgKzIyNCw2IEBACiAgICAgPHN0cmluZyBuYW1lPSJkaWN0X2F2YWlsYWJsZV9ub3RpZmljYXRpb25fdGl0bGUiIG1zZ2lkPSI2NTE0Mjg4NTkxOTU5MTE3Mjg4Ij4iSXNpY2hhemFtYXp3aSBzZS08eGxpZmY6ZyBpZD0iTEFOR1VBR0UiPiUxJHM8L3hsaWZmOmc+IHNpeWF0aG9sYWthbGEiPC9zdHJpbmc+CiAgICAgPHN0cmluZyBuYW1lPSJkaWN0X2F2YWlsYWJsZV9ub3RpZmljYXRpb25fZGVzY3JpcHRpb24iIG1zZ2lkPSIxMDc1MTk0MTY5NDQzMTYzNDg3Ij4iQ2luZGV6ZWxhIHVrdXplIHVidXlla2V6ZSB1cGhpbmRlIHVsYW5kZSI8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InRvYXN0X2Rvd25sb2FkaW5nX3N1Z2dlc3Rpb25zIiBtc2dpZD0iMTMxMzAyNzM1MzU4ODU2NjY2MCI+IlVrdWxhbmRhOiBpemlwaGFrYW1pc28gemUtPHhsaWZmOmcgaWQ9IkxBTkdVQUdFIj4lMSRzPC94bGlmZjpnPiB6aXpvbHVuZ2EgbWFkdXplLiI8L3N0cmluZz4KKyAgICA8IS0tIG5vIHRyYW5zbGF0aW9uIGZvdW5kIGZvciB2ZXJzaW9uX3RleHQgKDI3MTUzNTQyMTU1Njg0NjkzODUpIC0tPgorICAgIDxza2lwIC8+CiA8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL2phdmEvcmVzL3ZhbHVlcy9jb25maWcueG1sIGIvamF2YS9yZXMvdmFsdWVzL2NvbmZpZy54bWwKaW5kZXggNGUyOTM2Yy4uNWIxMWUwNyAxMDA2NDQKLS0tIGEvamF2YS9yZXMvdmFsdWVzL2NvbmZpZy54bWwKKysrIGIvamF2YS9yZXMvdmFsdWVzL2NvbmZpZy54bWwKQEAgLTc1LDYgKzc1LDcgQEAKICAgICA8IS0tIFNob3dpbmcgbW9yZSBrZXlzIGtleWJvYXJkLCBqdXN0IGFib3ZlIHRoZSB0b3VjaGVkIHBvaW50IGlmIHRydWUsIGFsaWduZWQgdG8gdGhlIGtleSBpZgogICAgICAgICAgZmFsc2UgLS0+CiAgICAgPGJvb2wgbmFtZT0iY29uZmlnX3Nob3dfbW9yZV9rZXlzX2tleWJvYXJkX2F0X3RvdWNoZWRfcG9pbnQiPmZhbHNlPC9ib29sPgorICAgIDxib29sIG5hbWU9ImNvbmZpZ19ibG9ja19wb3RlbnRpYWxseV9vZmZlbnNpdmUiPnRydWU8L2Jvb2w+CiAgICAgPGludGVnZXIgbmFtZT0iY29uZmlnX2dlc3R1cmVfZmxvYXRpbmdfcHJldmlld190ZXh0X2xpbmdlcl90aW1lb3V0Ij4yMDA8L2ludGVnZXI+CiAgICAgPGludGVnZXIgbmFtZT0iY29uZmlnX2dlc3R1cmVfcHJldmlld190cmFpbF9mYWRlb3V0X3N0YXJ0X2RlbGF5Ij4xMDA8L2ludGVnZXI+CiAgICAgPGludGVnZXIgbmFtZT0iY29uZmlnX2dlc3R1cmVfcHJldmlld190cmFpbF9mYWRlb3V0X2R1cmF0aW9uIj44MDA8L2ludGVnZXI+CkBAIC0xMTEsOCArMTEyLDkgQEAKICAgICAgICAgPCEtLSBBZ2dyZXNzaXZlIC0tPgogICAgICAgICA8aXRlbT4wLjA2NzwvaXRlbT4KICAgICAgICAgPCEtLSBWZXJ5IEFnZ3Jlc3NpdmUgOiBTdWdnZXN0aW9uIHdob3NlIG5vcm1hbGl6ZWQgc2NvcmUgaXMgZ3JlYXRlciB0aGFuIHRoaXMgdmFsdWUKLSAgICAgICAgICAgICB3aWxsIGJlIHN1YmplY3QgdG8gYXV0by1jb3JyZWN0aW9uLiAtLT4KLSAgICAgICAgPGl0ZW0+MDwvaXRlbT4KKyAgICAgICAgICAgICB3aWxsIGJlIHN1YmplY3QgdG8gYXV0by1jb3JyZWN0aW9uLiAiZmxvYXROZWdhdGl2ZUluZmluaXR5IiBpcyBhIHNwZWNpYWwgbWFya2VyCisgICAgICAgICAgICAgc3RyaW5nIGZvciBGbG9hdC5ORUdBVElWRV9JTkZJTklUWSAtLT4KKyAgICAgICAgPGl0ZW0+ZmxvYXROZWdhdGl2ZUluZmluaXR5PC9pdGVtPgogICAgIDwvc3RyaW5nLWFycmF5PgogICAgIDwhLS0gVGhyZXNob2xkIG9mIHRoZSBub3JtYWxpemVkIHNjb3JlIG9mIHRoZSBiZXN0IHN1Z2dlc3Rpb24gZm9yIHRoZSBzcGVsbCBjaGVja2VyIHRvIGRlY2xhcmUKICAgICAgICAgIGEgd29yZCB0byBiZSAicmVjb21tZW5kZWQiIC0tPgpkaWZmIC0tZ2l0IGEvamF2YS9yZXMvdmFsdWVzL2RpbWVucy54bWwgYi9qYXZhL3Jlcy92YWx1ZXMvZGltZW5zLnhtbAppbmRleCBlOWIzNGFhLi5kYTczNWNmIDEwMDY0NAotLS0gYS9qYXZhL3Jlcy92YWx1ZXMvZGltZW5zLnhtbAorKysgYi9qYXZhL3Jlcy92YWx1ZXMvZGltZW5zLnhtbApAQCAtMTE3LDQgKzExNyw2IEBACiAKICAgICA8IS0tIEluc2V0IHVzZWQgaW4gQWNjZXNzaWJpbGl0eSBtb2RlIHRvIGF2b2lkIGFjY2lkZW50YWwga2V5IHByZXNzZXMgd2hlbiBhIGZpbmdlciBzbGlkZXMgb2ZmIHRoZSBzY3JlZW4uIC0tPgogICAgIDxkaW1lbiBuYW1lPSJhY2Nlc3NpYmlsaXR5X2VkZ2Vfc2xvcCI+OGRwPC9kaW1lbj4KKworICAgIDxpbnRlZ2VyIG5hbWU9InVzZXJfZGljdGlvbmFyeV9tYXhfd29yZF9sZW5ndGgiIHRyYW5zbGF0YWJsZT0iZmFsc2UiPjQ4PC9pbnRlZ2VyPgogPC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9qYXZhL3Jlcy92YWx1ZXMvc2V0dXAtc3R5bGVzLWNvbW1vbi54bWwgYi9qYXZhL3Jlcy92YWx1ZXMvc2V0dXAtc3R5bGVzLWNvbW1vbi54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjg2ZGVjZgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvcmVzL3ZhbHVlcy9zZXR1cC1zdHlsZXMtY29tbW9uLnhtbApAQCAtMCwwICsxLDczIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPCEtLSBDb3B5cmlnaHQgKEMpIDIwMTMgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorCisgICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorCisgICAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisKKyAgICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAgICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy0tPgorCis8cmVzb3VyY2VzIHhtbG5zOmFuZHJvaWQ9Imh0dHA6Ly9zY2hlbWFzLmFuZHJvaWQuY29tL2Fway9yZXMvYW5kcm9pZCI+CisgICAgPHN0eWxlIG5hbWU9InNldHVwVGl0bGVTdHlsZUNvbW1vbiI+CisgICAgICAgIDxpdGVtIG5hbWU9ImFuZHJvaWQ6dGV4dENvbG9yIj5AY29sb3Ivc2V0dXBfdGV4dF9kYXJrPC9pdGVtPgorICAgICAgICA8aXRlbSBuYW1lPSJhbmRyb2lkOnRleHRTaXplIj5AZGltZW4vc2V0dXBfdGl0bGVfdGV4dF9zaXplPC9pdGVtPgorICAgICAgICA8aXRlbSBuYW1lPSJhbmRyb2lkOmxheW91dF93aWR0aCI+bWF0Y2hfcGFyZW50PC9pdGVtPgorICAgICAgICA8aXRlbSBuYW1lPSJhbmRyb2lkOmxheW91dF9oZWlnaHQiPndyYXBfY29udGVudDwvaXRlbT4KKyAgICA8L3N0eWxlPgorICAgIDxzdHlsZSBuYW1lPSJzZXR1cFdlbGNvbWVEZXNjcml0cGlvblN0eWxlIiBwYXJlbnQ9InNldHVwVGl0bGVTdHlsZSI+CisgICAgICAgIDxpdGVtIG5hbWU9ImFuZHJvaWQ6dGV4dFNpemUiPkBkaW1lbi9zZXR1cF93ZWxjb21lX2Rlc2NyaXB0aW9uX3RleHRfc2l6ZTwvaXRlbT4KKyAgICA8L3N0eWxlPgorICAgIDxzdHlsZSBuYW1lPSJzZXR1cFN0ZXBJbmRpY2F0b3JTdHlsZSI+CisgICAgICAgIDxpdGVtIG5hbWU9ImFuZHJvaWQ6bGF5b3V0X3dpZHRoIj5tYXRjaF9wYXJlbnQ8L2l0ZW0+CisgICAgICAgIDxpdGVtIG5hbWU9ImFuZHJvaWQ6bGF5b3V0X2hlaWdodCI+QGRpbWVuL3NldHVwX3N0ZXBfdHJpYW5nbGVfaW5kaWNhdG9yX2hlaWdodDwvaXRlbT4KKyAgICA8L3N0eWxlPgorICAgIDxzdHlsZSBuYW1lPSJzZXR1cFN0ZXBCdWxsZXRTdHlsZSI+CisgICAgICAgIDxpdGVtIG5hbWU9ImFuZHJvaWQ6dGV4dENvbG9yIj5AY29sb3Ivc2V0dXBfdGV4dF9kYXJrPC9pdGVtPgorICAgICAgICA8aXRlbSBuYW1lPSJhbmRyb2lkOnRleHRTaXplIj5AZGltZW4vc2V0dXBfc3RlcF9idWxsZXRfdGV4dF9zaXplPC9pdGVtPgorICAgICAgICA8aXRlbSBuYW1lPSJhbmRyb2lkOmxheW91dF93aWR0aCI+MGRwPC9pdGVtPgorICAgICAgICA8aXRlbSBuYW1lPSJhbmRyb2lkOmxheW91dF93ZWlnaHQiPjEuMDwvaXRlbT4KKyAgICAgICAgPGl0ZW0gbmFtZT0iYW5kcm9pZDpsYXlvdXRfaGVpZ2h0Ij53cmFwX2NvbnRlbnQ8L2l0ZW0+CisgICAgICAgIDxpdGVtIG5hbWU9ImFuZHJvaWQ6Z3Jhdml0eSI+Y2VudGVyX2hvcml6b250YWw8L2l0ZW0+CisgICAgPC9zdHlsZT4KKyAgICA8c3R5bGUgbmFtZT0ic2V0dXBTdGVwQmFzZVN0eWxlIj4KKyAgICAgICAgPGl0ZW0gbmFtZT0iYW5kcm9pZDp0ZXh0Q29sb3IiPkBjb2xvci9zZXR1cF90ZXh0X2Rhcms8L2l0ZW0+CisgICAgICAgIDxpdGVtIG5hbWU9ImFuZHJvaWQ6YmFja2dyb3VuZCI+QGNvbG9yL3NldHVwX3N0ZXBfYmFja2dyb3VuZDwvaXRlbT4KKyAgICAgICAgPGl0ZW0gbmFtZT0iYW5kcm9pZDpsYXlvdXRfd2lkdGgiPm1hdGNoX3BhcmVudDwvaXRlbT4KKyAgICAgICAgPGl0ZW0gbmFtZT0iYW5kcm9pZDpsYXlvdXRfaGVpZ2h0Ij53cmFwX2NvbnRlbnQ8L2l0ZW0+CisgICAgICAgIDxpdGVtIG5hbWU9ImFuZHJvaWQ6cGFkZGluZ0xlZnQiPkBkaW1lbi9zZXR1cF9zdGVwX2hvcml6b250YWxfcGFkZGluZzwvaXRlbT4KKyAgICAgICAgPGl0ZW0gbmFtZT0iYW5kcm9pZDpwYWRkaW5nUmlnaHQiPkBkaW1lbi9zZXR1cF9zdGVwX2hvcml6b250YWxfcGFkZGluZzwvaXRlbT4KKyAgICA8L3N0eWxlPgorICAgIDxzdHlsZSBuYW1lPSJzZXR1cFN0ZXBUaXRsZVN0eWxlIiBwYXJlbnQ9InNldHVwU3RlcEJhc2VTdHlsZSI+CisgICAgICAgIDxpdGVtIG5hbWU9ImFuZHJvaWQ6dGV4dFNpemUiPkBkaW1lbi9zZXR1cF9zdGVwX3RpdGxlX3RleHRfc2l6ZTwvaXRlbT4KKyAgICA8L3N0eWxlPgorICAgIDxzdHlsZSBuYW1lPSJzZXR1cFN0ZXBJbnN0cnVjdGlvblN0eWxlIiBwYXJlbnQ9InNldHVwU3RlcEJhc2VTdHlsZSI+CisgICAgICAgIDxpdGVtIG5hbWU9ImFuZHJvaWQ6dGV4dFNpemUiPkBkaW1lbi9zZXR1cF9zdGVwX2luc3RydWN0aW9uX3RleHRfc2l6ZTwvaXRlbT4KKyAgICA8L3N0eWxlPgorICAgIDxzdHlsZSBuYW1lPSJzZXR1cFN0ZXBTdGFydEluZGljYXRvclN0eWxlIj4KKyAgICAgICAgPCEtLSBUaGUgdHJpYW5nbGUgaW5kaWNhdG9yIGhlcmUgaXMgcGxhY2VkIHNpZGV3YXlzLiAtLT4KKyAgICAgICAgPGl0ZW0gbmFtZT0iYW5kcm9pZDpsYXlvdXRfd2lkdGgiPkBkaW1lbi9zZXR1cF9zdGVwX3RyaWFuZ2xlX2luZGljYXRvcl9oZWlnaHQ8L2l0ZW0+CisgICAgICAgIDxpdGVtIG5hbWU9ImFuZHJvaWQ6bGF5b3V0X2hlaWdodCI+QGRpbWVuL3NldHVwX3N0ZXBfYWN0aW9uX2hlaWdodDwvaXRlbT4KKyAgICA8L3N0eWxlPgorICAgIDxzdHlsZSBuYW1lPSJzZXR1cFN0ZXBBY3Rpb25MYWJlbFN0eWxlQ29tbW9uIiBwYXJlbnQ9InNldHVwU3RlcEJhc2VTdHlsZSI+CisgICAgICAgIDxpdGVtIG5hbWU9ImFuZHJvaWQ6dGV4dENvbG9yIj5AY29sb3Ivc2V0dXBfc3RlcF9hY3Rpb25fY29sb3I8L2l0ZW0+CisgICAgICAgIDxpdGVtIG5hbWU9ImFuZHJvaWQ6YmFja2dyb3VuZCI+QGRyYXdhYmxlL3NldHVwX3N0ZXBfYWN0aW9uX2JhY2tncm91bmQ8L2l0ZW0+CisgICAgICAgIDxpdGVtIG5hbWU9ImFuZHJvaWQ6bGF5b3V0X2hlaWdodCI+QGRpbWVuL3NldHVwX3N0ZXBfYWN0aW9uX2hlaWdodDwvaXRlbT4KKyAgICAgICAgPGl0ZW0gbmFtZT0iYW5kcm9pZDpwYWRkaW5nTGVmdCI+QGRpbWVuL3NldHVwX3N0ZXBfaG9yaXpvbnRhbF9wYWRkaW5nX2hhbGY8L2l0ZW0+CisgICAgICAgIDxpdGVtIG5hbWU9ImFuZHJvaWQ6dGV4dFNpemUiPkBkaW1lbi9zZXR1cF9zdGVwX2FjdGlvbl90ZXh0X3NpemU8L2l0ZW0+CisgICAgICAgIDxpdGVtIG5hbWU9ImFuZHJvaWQ6ZHJhd2FibGVQYWRkaW5nIj5AZGltZW4vc2V0dXBfc3RlcF9ob3Jpem9udGFsX3BhZGRpbmdfaGFsZjwvaXRlbT4KKyAgICAgICAgPGl0ZW0gbmFtZT0iYW5kcm9pZDpncmF2aXR5Ij5jZW50ZXJfdmVydGljYWw8L2l0ZW0+CisgICAgICAgIDxpdGVtIG5hbWU9ImFuZHJvaWQ6Y2xpY2thYmxlIj50cnVlPC9pdGVtPgorICAgICAgICA8aXRlbSBuYW1lPSJhbmRyb2lkOmZvY3VzYWJsZSI+dHJ1ZTwvaXRlbT4KKyAgICA8L3N0eWxlPgorICAgIDxzdHlsZSBuYW1lPSJzZXR1cFN0ZXBTdGFydEFjdGlvbkxhYmVsU3R5bGVDb21tb24iIHBhcmVudD0ic2V0dXBTdGVwQWN0aW9uTGFiZWxTdHlsZUNvbW1vbiI+CisgICAgICAgIDxpdGVtIG5hbWU9ImFuZHJvaWQ6cGFkZGluZ0xlZnQiPkBkaW1lbi9zZXR1cF9zdGVwX2hvcml6b250YWxfcGFkZGluZzwvaXRlbT4KKyAgICAgICAgPGl0ZW0gbmFtZT0iYW5kcm9pZDpwYWRkaW5nUmlnaHQiPkBkaW1lbi9zZXR1cF9zdGVwX2hvcml6b250YWxfcGFkZGluZzwvaXRlbT4KKyAgICA8L3N0eWxlPgorPC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9qYXZhL3Jlcy92YWx1ZXMvc2V0dXAtc3R5bGVzLnhtbCBiL2phdmEvcmVzL3ZhbHVlcy9zZXR1cC1zdHlsZXMueG1sCmluZGV4IGNmYzY4OWEuLjFmZmU4Y2EgMTAwNjQ0Ci0tLSBhL2phdmEvcmVzL3ZhbHVlcy9zZXR1cC1zdHlsZXMueG1sCisrKyBiL2phdmEvcmVzL3ZhbHVlcy9zZXR1cC1zdHlsZXMueG1sCkBAIC0xNSwzMSArMTUsNiBAQAogLS0+CiAKIDxyZXNvdXJjZXMgeG1sbnM6YW5kcm9pZD0iaHR0cDovL3NjaGVtYXMuYW5kcm9pZC5jb20vYXBrL3Jlcy9hbmRyb2lkIj4KLSAgICA8c3R5bGUgbmFtZT0ic2V0dXBUaXRsZVN0eWxlIj4KLSAgICAgICAgPGl0ZW0gbmFtZT0iYW5kcm9pZDp0ZXh0Q29sb3IiPkBjb2xvci9zZXR1cF90ZXh0X2Rhcms8L2l0ZW0+Ci0gICAgICAgIDxpdGVtIG5hbWU9ImFuZHJvaWQ6dGV4dFNpemUiPkBkaW1lbi9zZXR1cF90aXRsZV90ZXh0X3NpemU8L2l0ZW0+Ci0gICAgPC9zdHlsZT4KLSAgICA8c3R5bGUgbmFtZT0ic2V0dXBTdGVwQnVsbGV0U3R5bGUiPgotICAgICAgICA8aXRlbSBuYW1lPSJhbmRyb2lkOnRleHRDb2xvciI+QGNvbG9yL3NldHVwX3RleHRfZGFyazwvaXRlbT4KLSAgICAgICAgPGl0ZW0gbmFtZT0iYW5kcm9pZDp0ZXh0U2l6ZSI+MjJzcDwvaXRlbT4KLSAgICAgICAgPGl0ZW0gbmFtZT0iYW5kcm9pZDpsYXlvdXRfd2lkdGgiPjBkcDwvaXRlbT4KLSAgICAgICAgPGl0ZW0gbmFtZT0iYW5kcm9pZDpsYXlvdXRfd2VpZ2h0Ij4xLjA8L2l0ZW0+Ci0gICAgICAgIDxpdGVtIG5hbWU9ImFuZHJvaWQ6bGF5b3V0X2hlaWdodCI+d3JhcF9jb250ZW50PC9pdGVtPgotICAgICAgICA8aXRlbSBuYW1lPSJhbmRyb2lkOmdyYXZpdHkiPmNlbnRlcl9ob3Jpem9udGFsPC9pdGVtPgotICAgIDwvc3R5bGU+Ci0gICAgPHN0eWxlIG5hbWU9InNldHVwU3RlcFRpdGxlU3R5bGUiPgotICAgICAgICA8aXRlbSBuYW1lPSJhbmRyb2lkOmJhY2tncm91bmQiPkBjb2xvci9zZXR1cF9zdGVwX2JhY2tncm91bmQ8L2l0ZW0+Ci0gICAgICAgIDxpdGVtIG5hbWU9ImFuZHJvaWQ6dGV4dENvbG9yIj5AY29sb3Ivc2V0dXBfdGV4dF9kYXJrPC9pdGVtPgotICAgICAgICA8aXRlbSBuYW1lPSJhbmRyb2lkOnRleHRTaXplIj4yMnNwPC9pdGVtPgotICAgIDwvc3R5bGU+Ci0gICAgPHN0eWxlIG5hbWU9InNldHVwU3RlcEluc3RydWN0aW9uU3R5bGUiPgotICAgICAgICA8aXRlbSBuYW1lPSJhbmRyb2lkOmJhY2tncm91bmQiPkBjb2xvci9zZXR1cF9zdGVwX2JhY2tncm91bmQ8L2l0ZW0+Ci0gICAgICAgIDxpdGVtIG5hbWU9ImFuZHJvaWQ6dGV4dENvbG9yIj5AY29sb3Ivc2V0dXBfdGV4dF9kYXJrPC9pdGVtPgotICAgICAgICA8aXRlbSBuYW1lPSJhbmRyb2lkOnRleHRTaXplIj4xNHNwPC9pdGVtPgotICAgIDwvc3R5bGU+Ci0gICAgPHN0eWxlIG5hbWU9InNldHVwU3RlcEFjdGlvbkxhYmVsU3R5bGUiPgotICAgICAgICA8aXRlbSBuYW1lPSJhbmRyb2lkOmJhY2tncm91bmQiPkBjb2xvci9zZXR1cF9zdGVwX2JhY2tncm91bmQ8L2l0ZW0+Ci0gICAgICAgIDxpdGVtIG5hbWU9ImFuZHJvaWQ6dGV4dENvbG9yIj5AY29sb3Ivc2V0dXBfdGV4dF9hY3Rpb248L2l0ZW0+Ci0gICAgICAgIDxpdGVtIG5hbWU9ImFuZHJvaWQ6dGV4dFNpemUiPjE4c3A8L2l0ZW0+Ci0gICAgPC9zdHlsZT4KKyAgICA8c3R5bGUgbmFtZT0ic2V0dXBUaXRsZVN0eWxlIiBwYXJlbnQ9InNldHVwVGl0bGVTdHlsZUNvbW1vbiIgLz4KKyAgICA8c3R5bGUgbmFtZT0ic2V0dXBTdGVwQWN0aW9uTGFiZWxTdHlsZSIgcGFyZW50PSJzZXR1cFN0ZXBBY3Rpb25MYWJlbFN0eWxlQ29tbW9uIiAvPgogPC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9qYXZhL3Jlcy92YWx1ZXMvc3RyaW5ncy1hcHBuYW1lLnhtbCBiL2phdmEvcmVzL3ZhbHVlcy9zdHJpbmdzLWFwcG5hbWUueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ2ZDhjNDQKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL3Jlcy92YWx1ZXMvc3RyaW5ncy1hcHBuYW1lLnhtbApAQCAtMCwwICsxLDM3IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPCEtLQorLyoKKyoqCisqKiBDb3B5cmlnaHQgMjAxMywgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorKioKKyoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisqKgorKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorKioKKyoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorKi8KKy0tPgorCis8cmVzb3VyY2VzPgorICAgIDwhLS0gQXBwbGljYXRpb24gbmFtZSBmb3Igb3BlbnNvdXJjZSBBbmRyb2lkIGtleWJvYXJkLiBBT1NQKEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdCkgc2hvdWxkIG5vdCBiZSB0cmFuc2xhdGVkLgorICAgICAgICAgVGhpcyByZXNvdXJjZSBzaG91bGQgYmUgY29waWVkIGZyb20gbXNnaWQ9IjgyNTA5OTI2MTM2MTY3OTIzMjEiIC0tPgorICAgIDxzdHJpbmcgbmFtZT0iZW5nbGlzaF9pbWVfbmFtZSI+QW5kcm9pZCBLZXlib2FyZCAoQU9TUCk8L3N0cmluZz4KKworICAgIDwhLS0gTmFtZSBvZiBBbmRyb2lkIHNwZWxsIGNoZWNrZXIgc2VydmljZS4gQU9TUChBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QpIHNob3VsZCBub3QgYmUgdHJhbnNsYXRlZC4KKyAgICAgICAgIFRoaXMgcmVzb3VyY2Ugc2hvdWxkIGJlIGNvcGllZCBmcm9tIG1zZ2lkPSI1MTE5NTA0NzcxOTk5NDgwNDgiIC0tPgorICAgIDxzdHJpbmcgbmFtZT0ic3BlbGxfY2hlY2tlcl9zZXJ2aWNlX25hbWUiPkFuZHJvaWQgU3BlbGwgQ2hlY2tlciAoQU9TUCk8L3N0cmluZz4KKworICAgIDwhLS0gVGl0bGUgZm9yIEFuZHJvaWQgS2V5Ym9hcmQgc2V0dGluZ3Mgc2NyZWVuLiBBT1NQKEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdCkgc2hvdWxkIG5vdCBiZSB0cmFuc2xhdGVkLgorICAgICAgICAgVGhpcyByZXNvdXJjZSBzaG91bGQgYmUgY29waWVkIGZyb20gbXNnaWQ9IjQyMzYxNTg3NzE3NDg1MDI2NyIgLS0+CisgICAgPHN0cmluZyBuYW1lPSJlbmdsaXNoX2ltZV9zZXR0aW5ncyI+QW5kcm9pZCBLZXlib2FyZCBTZXR0aW5ncyAoQU9TUCk8L3N0cmluZz4KKworICAgIDwhLS0gVGl0bGUgZm9yIHRoZSBzcGVsbCBjaGVja2luZyBzZXJ2aWNlIHNldHRpbmdzIHNjcmVlbi4gQU9TUChBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QpIHNob3VsZCBub3QgYmUgdHJhbnNsYXRlZC4KKyAgICAgICAgIFRoaXMgcmVzb3VyY2Ugc2hvdWxkIGJlIGNvcGllZCBmcm9tIG1zZ2lkPSIyOTcwNTM1ODk0MzI3Mjg4NDIxIiAtLT4KKyAgICA8c3RyaW5nIG5hbWU9ImFuZHJvaWRfc3BlbGxfY2hlY2tlcl9zZXR0aW5ncyI+QW5kcm9pZCBTcGVsbCBDaGVja2VyIFNldHRpbmdzIChBT1NQKTwvc3RyaW5nPgorPC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9qYXZhL3Jlcy92YWx1ZXMvc3RyaW5ncy54bWwgYi9qYXZhL3Jlcy92YWx1ZXMvc3RyaW5ncy54bWwKaW5kZXggZGJhZGZhYi4uYTU1NjdkYSAxMDA2NDQKLS0tIGEvamF2YS9yZXMvdmFsdWVzL3N0cmluZ3MueG1sCisrKyBiL2phdmEvcmVzL3ZhbHVlcy9zdHJpbmdzLnhtbApAQCAtMTgsMTggKzE4LDYgQEAKICovCiAtLT4KIDxyZXNvdXJjZXMgeG1sbnM6eGxpZmY9InVybjpvYXNpczpuYW1lczp0Yzp4bGlmZjpkb2N1bWVudDoxLjIiPgotICAgIDwhLS0gQXBwbGljYXRpb24gbmFtZSBmb3Igb3BlbnNvdXJjZSBBbmRyb2lkIGtleWJvYXJkLiBBT1NQKEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdCkgc2hvdWxkIG5vdCBiZSB0cmFuc2xhdGVkLiAtLT4KLSAgICA8c3RyaW5nIG5hbWU9ImFvc3BfYW5kcm9pZF9rZXlib2FyZF9pbWVfbmFtZSI+QW5kcm9pZCBLZXlib2FyZCAoQU9TUCk8L3N0cmluZz4KLQotICAgIDwhLS0gVGl0bGUgZm9yIEFuZHJvaWQgS2V5Ym9hcmQgc2V0dGluZ3Mgc2NyZWVuLiBBT1NQKEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdCkgc2hvdWxkIG5vdCBiZSB0cmFuc2xhdGVkLiAtLT4KLSAgICA8c3RyaW5nIG5hbWU9ImFvc3BfYW5kcm9pZF9rZXlib2FyZF9pbWVfc2V0dGluZ3MiPkFuZHJvaWQgS2V5Ym9hcmQgU2V0dGluZ3MgKEFPU1ApPC9zdHJpbmc+Ci0KLSAgICA8IS0tIE5hbWUgb2YgQW5kcm9pZCBzcGVsbCBjaGVja2VyIHNlcnZpY2UuIEFPU1AoQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0KSBzaG91bGQgbm90IGJlIHRyYW5zbGF0ZWQuIC0tPgotICAgIDxzdHJpbmcgbmFtZT0iYW9zcF9zcGVsbF9jaGVja2VyX3NlcnZpY2VfbmFtZSI+QW5kcm9pZCBTcGVsbCBDaGVja2VyIChBT1NQKTwvc3RyaW5nPgotCi0gICAgPCEtLSBUaXRsZSBmb3IgdGhlIHNwZWxsIGNoZWNraW5nIHNlcnZpY2Ugc2V0dGluZ3Mgc2NyZWVuLiBBT1NQKEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdCkgc2hvdWxkIG5vdCBiZSB0cmFuc2xhdGVkLiAtLT4KLSAgICA8c3RyaW5nIG5hbWU9ImFvc3BfYW5kcm9pZF9zcGVsbF9jaGVja2VyX3NlcnZpY2Vfc2V0dGluZ3MiPkFuZHJvaWQgU3BlbGwgQ2hlY2tlciBTZXR0aW5ncyAoQU9TUCk8L3N0cmluZz4KLQogICAgIDwhLS0gVGl0bGUgZm9yIExhdGluIGtleWJvYXJkIGlucHV0IG9wdGlvbnMgZGlhbG9nIFtDSEFSIExJTUlUPTI1XSAtLT4KICAgICA8c3RyaW5nIG5hbWU9ImVuZ2xpc2hfaW1lX2lucHV0X29wdGlvbnMiPklucHV0IG9wdGlvbnM8L3N0cmluZz4KIApAQCAtMTA3LDYgKzk1LDkgQEAKICAgICA8IS0tIERlc2NyaXB0aW9uIGZvciBvcHRpb24gdG8gZW5hYmxlIGF1dG8gY2FwaXRhbGl6YXRpb24gb2Ygc2VudGVuY2VzIC0tPgogICAgIDxzdHJpbmcgbmFtZT0iYXV0b19jYXBfc3VtbWFyeSI+Q2FwaXRhbGl6ZSB0aGUgZmlyc3Qgd29yZCBvZiBlYWNoIHNlbnRlbmNlPC9zdHJpbmc+CiAKKyAgICA8IS0tIE9wdGlvbiB0byBlZGl0IHBlcnNvbmFsIGRpY3Rpb25hcnkuIFtDSEFSX0xJTUlUPTMwXS0tPgorICAgIDxzdHJpbmcgbmFtZT0iZWRpdF9wZXJzb25hbF9kaWN0aW9uYXJ5Ij5QZXJzb25hbCBkaWN0aW9uYXJ5PC9zdHJpbmc+CisKICAgICA8IS0tIE9wdGlvbiB0byBjb25maWd1cmUgZGljdGlvbmFyaWVzIC0tPgogICAgIDxzdHJpbmcgbmFtZT0iY29uZmlndXJlX2RpY3Rpb25hcmllc190aXRsZSI+QWRkLW9uIGRpY3Rpb25hcmllczwvc3RyaW5nPgogICAgIDwhLS0gTmFtZSBvZiB0aGUgbWFpbiBkaWN0aW9uYXJ5LCBhcyBvcHBvc2VkIHRvIGF1eGlsaWFyeSBkaWN0aW9uYXJpZXMgKG1lZGljYWwvZW50ZXJ0YWlubWVudC9zcG9ydHMuLi4pIC0tPgpAQCAtMTIwLDYgKzExMSwxMSBAQAogICAgIDxzdHJpbmcgbmFtZT0icHJlZnNfc3VnZ2VzdGlvbl92aXNpYmlsaXR5X3Nob3dfb25seV9wb3J0cmFpdF9uYW1lIj5TaG93IGluIHBvcnRyYWl0IG1vZGU8L3N0cmluZz4KICAgICA8c3RyaW5nIG5hbWU9InByZWZzX3N1Z2dlc3Rpb25fdmlzaWJpbGl0eV9oaWRlX25hbWUiPkFsd2F5cyBoaWRlPC9zdHJpbmc+CiAKKyAgICA8IS0tIE9wdGlvbiB0byBibG9jayBwb3RlbnRpYWxseSBvZmZlbnNpdmUgd29yZHMgdG8gYmUgc2hvd24gW0NIQVJfTElNSVQ9MzBdIC0tPgorICAgIDxzdHJpbmcgbmFtZT0icHJlZnNfYmxvY2tfcG90ZW50aWFsbHlfb2ZmZW5zaXZlX3RpdGxlIj5CbG9jayBvZmZlbnNpdmUgd29yZHM8L3N0cmluZz4KKyAgICA8IS0tIFN1bW1hcnkgZm9yIG9wdGlvbiB0byBibG9jayBwb3RlbnRpYWxseSBvZmZlbnNpdmUgd29yZHMgdG8gYmUgc2hvd24gW0NIQVJfTElNSVQ9ODAgKHR3byBsaW5lcykgb3IgNDAgKGZpdHMgb24gb25lIGxpbmUsIHByZWZlcmFibGUpXSAtLT4KKyAgICA8c3RyaW5nIG5hbWU9InByZWZzX2Jsb2NrX3BvdGVudGlhbGx5X29mZmVuc2l2ZV9zdW1tYXJ5Ij5EbyBub3Qgc3VnZ2VzdCBwb3RlbnRpYWxseSBvZmZlbnNpdmUgd29yZHM8L3N0cmluZz4KKwogICAgIDwhLS0gT3B0aW9uIHRvIGRlY2lkZSB0aGUgYXV0byBjb3JyZWN0aW9uIHRocmVzaG9sZCBzY29yZSAtLT4KICAgICA8IS0tIE9wdGlvbiB0byBlbmFibGUgYXV0byBjb3JyZWN0aW9uIFtDSEFSIExJTUlUPTIwXS0tPgogICAgIDxzdHJpbmcgbmFtZT0iYXV0b19jb3JyZWN0aW9uIj5BdXRvLWNvcnJlY3Rpb248L3N0cmluZz4KQEAgLTQ0MiwzMyArNDM4LDQ4IEBACiAgICAgPCEtLSBUaXRsZSBvZiB0aGUgYnV0dG9uIHRvIHJldmVydCB0byB0aGUgZGVmYXVsdCB2YWx1ZSBvZiB0aGUgZGV2aWNlIGluIHRoZSBzZXR0aW5ncyBkaWFsb2cgW0NIQVIgTElNSVQ9MTVdIC0tPgogICAgIDxzdHJpbmcgbmFtZT0iYnV0dG9uX2RlZmF1bHQiPkRlZmF1bHQ8L3N0cmluZz4KIAotICAgIDwhLS0gVE9ETzogUmVtb3ZlIHRyYW5zbGF0YWJsZT0iZmFsc2UiIG9uY2Ugd29yZGluZ3MgYXJlIGZpbmFsaXplZC4gLS0+CisgICAgPCEtLSBUaXRsZSBvZiB0aGUgc2V0dXAgd2l6YXJkIHdlbGNvbWUgc2NyZWVuLiBbQ0hBUiBMSU1UPTQwXSAtLT4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3dlbGNvbWVfdGl0bGUiPiJXZWxjb21lIHRvIDx4bGlmZjpnIGlkPSJhcHBsaWNhdGlvbl9uYW1lIj4lczwveGxpZmY6Zz4iPC9zdHJpbmc+CisgICAgPCEtLSBBZGRpdGlvbmFsIHRpdGxlIG9mIHRoZSBzZXR1cCB3aXphcmQgd2VsY29tZSBzY3JlZW4sIGp1c3QgYmVsb3cgdGhlIHNldHVwX3dlbGNvbWVfdGl0bGUuIFtDSEFSX0xJTUlUPTY0XSAtLT4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3dlbGNvbWVfYWRkaXRpb25hbF9kZXNjcmlwdGlvbiI+d2l0aCBHZXN0dXJlIFR5cGluZzwvc3RyaW5nPgorICAgIDwhLS0gVGhlIGxhYmVsIG9mIHRoZSBidXR0b24gdGhhdCBzdGFydHMgdGhlIHNldHVwIHdpemFyZC4gW0NIQVJfTElNSVQ9NjRdIC0tPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RhcnRfYWN0aW9uIj5HZXQgc3RhcnRlZDwvc3RyaW5nPgorICAgIDwhLS0gVGhlIGxhYmVsIG9mIHRoZSBidXR0b24gdGhhdCBuYXZpZ2F0ZXMgdGhlIHVzZXIgdG8gdGhlIG5leHQgc3RlcCBvZiB0aGUgc2V0dXAgd2l6YXJkLiBbQ0hBUl9MSU1JVD02NF0gLS0+CisgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9uZXh0X2FjdGlvbiI+TmV4dCBzdGVwPC9zdHJpbmc+CiAgICAgPCEtLSBUaXRsZSBvZiB0aGUgc2V0dXAgd2l6YXJkLiBbQ0hBUiBMSU1UPTQwXSAtLT4KLSAgICA8c3RyaW5nIG5hbWU9InNldHVwX3RpdGxlIiB0cmFuc2xhdGFibGU9ImZhbHNlIj4iSW5zdGFsbGluZyA8eGxpZmY6ZyBpZD0iYXBwbGljYXRpb25fbmFtZSI+JXM8L3hsaWZmOmc+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcHNfdGl0bGUiPiJTZXR0aW5nIHVwIDx4bGlmZjpnIGlkPSJhcHBsaWNhdGlvbl9uYW1lIj4lczwveGxpZmY6Zz4iPC9zdHJpbmc+CiAgICAgPCEtLSBPcmRpbmFsIG51bWJlciBvZiB0aGUgMXN0IHN0ZXAgaW4gdGhlIHNldHVwIHdpemFyZC4gW0NIQVIgTElNSVQ9NV0gLS0+CiAgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMV9idWxsZXQiIHRyYW5zbGF0YWJsZT0iZmFsc2UiPjE8L3N0cmluZz4KICAgICA8IS0tIFRpdGxlIG9mIHRoZSAxc3Qgc3RlcCBpbiB0aGUgc2V0dXAgd2l6YXJkLiBbQ0hBUiBMSU1JVD02NF0gLS0+Ci0gICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMV90aXRsZSIgdHJhbnNsYXRhYmxlPSJmYWxzZSI+IkVuYWJsZSA8eGxpZmY6ZyBpZD0iYXBwbGljYXRpb25fbmFtZSI+JXM8L3hsaWZmOmc+IGluIHNldHRpbmdzLiI8L3N0cmluZz4KLSAgICA8IS0tIERldGFpbGVkIGluc3RydWN0aW9uIG9mIHRoZSAxc3Qgc3RlcCBpbiB0aGUgc2V0dXAgd2l6YXJkLiBbQ0hBUiBMSU1JVD04MF0gLS0+Ci0gICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMV9pbnN0cnVjdGlvbiIgdHJhbnNsYXRhYmxlPSJmYWxzZSI+IkZvciBzZWN1cml0eSwgcGxlYXNlIGNoZWNrIFwiPHhsaWZmOmcgaWQ9ImFwcGxpY2F0aW9uX25hbWUiPiVzPC94bGlmZjpnPlwiIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDFfdGl0bGUiPiJFbmFibGUgPHhsaWZmOmcgaWQ9ImFwcGxpY2F0aW9uX25hbWUiPiVzPC94bGlmZjpnPiI8L3N0cmluZz4KKyAgICA8IS0tIERldGFpbGVkIGluc3RydWN0aW9uIG9mIHRoZSAxc3Qgc3RlcCBpbiB0aGUgc2V0dXAgd2l6YXJkLiBbQ0hBUiBMSU1JVD0xMjBdIC0tPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDFfaW5zdHJ1Y3Rpb24iPiJQbGVhc2UgY2hlY2sgXCI8eGxpZmY6ZyBpZD0iYXBwbGljYXRpb25fbmFtZSI+JXM8L3hsaWZmOmc+XCIgaW4geW91ciBMYW5ndWFnZSAmYW1wOyBpbnB1dCBzZXR0aW5ncy4gVGhpcyB3aWxsIGF1dGhvcml6ZSBpdCB0byBydW4gb24geW91ciBkZXZpY2UuIjwvc3RyaW5nPgorICAgIDwhLS0gRGV0YWlsZWQgaW5zdHJ1Y3Rpb24gb2YgdGhlIGFscmVhZHkgZmluaXNoZWQgMXN0IHN0ZXAgaW4gdGhlIHNldHVwIHdpemFyZC4gW0NIQVIgTElNSVQ9MTIwXSAtLT4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAxX2ZpbmlzaGVkX2luc3RydWN0aW9uIj4iPHhsaWZmOmcgaWQ9ImFwcGxpY2F0aW9uX25hbWUiPiVzPC94bGlmZjpnPiBpcyBhbHJlYWR5IGVuYWJsZWQgaW4geW91ciBMYW5ndWFnZSAmYW1wOyBpbnB1dCBzZXR0aW5ncywgc28gdGhpcyBzdGVwIGlzIGRvbmUuIE9uIHRvIHRoZSBuZXh0IG9uZSEiPC9zdHJpbmc+CisgICAgPCEtLSBUaGUgbGFiZWwgb2YgdGhlIGJ1dHRvbiB0aGF0IHRyaWdnZXJzIHRoZSBMYW5ndWFnZSAmIGlucHV0IHNldHRpbmdzIGluIG9yZGVyIHRvIGVuYWJsZSB0aGUga2V5Ym9hcmQuIFtDSEFSX0xJTUlUPTY0XSAtLT4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAxX2FjdGlvbiI+RW5hYmxlIGluIFNldHRpbmdzPC9zdHJpbmc+CiAgICAgPCEtLSBPcmRpbmFsIG51bWJlciBvZiB0aGUgMm5kIHN0ZXAgaW4gdGhlIHNldHVwIHdpemFyZC4gW0NIQVIgTElNSVQ9NV0gLS0+CiAgICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMl9idWxsZXQiIHRyYW5zbGF0YWJsZT0iZmFsc2UiPjI8L3N0cmluZz4KICAgICA8IS0tIFRpdGxlIG9mIHRoZSAybmQgc3RlcCBpbiB0aGUgc2V0dXAgd2l6YXJkLiBbQ0hBUiBMSU1JVD02NF0gLS0+Ci0gICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMl90aXRsZSIgdHJhbnNsYXRhYmxlPSJmYWxzZSI+IlN3aXRjaCB0byA8eGxpZmY6ZyBpZD0iYXBwbGljYXRpb25fbmFtZSI+JXM8L3hsaWZmOmc+LiI8L3N0cmluZz4KLSAgICA8IS0tIERldGFpbGVkIGluc3RydWN0aW9uIG9mIHRoZSAybmQgc3RlcCBpbiB0aGUgc2V0dXAgd2l6YXJkLiBbQ0hBUiBMSU1JVD04MF0gLS0+Ci0gICAgPHN0cmluZyBuYW1lPSJzZXR1cF9zdGVwMl9pbnN0cnVjdGlvbiIgdHJhbnNsYXRhYmxlPSJmYWxzZSI+Ik5vdyB0aGF0IHlvdSd2ZSBlbmFibGVkIDx4bGlmZjpnIGlkPSJhcHBsaWNhdGlvbl9uYW1lIj4lczwveGxpZmY6Zz4sIHlvdSBjYW4gc3dpdGNoIHRvIGl0LiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAyX3RpdGxlIj4iU3dpdGNoIHRvIDx4bGlmZjpnIGlkPSJhcHBsaWNhdGlvbl9uYW1lIj4lczwveGxpZmY6Zz4iPC9zdHJpbmc+CisgICAgPCEtLSBEZXRhaWxlZCBpbnN0cnVjdGlvbiBvZiB0aGUgMm5kIHN0ZXAgaW4gdGhlIHNldHVwIHdpemFyZC4gW0NIQVIgTElNSVQ9MTIwXSAtLT4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAyX2luc3RydWN0aW9uIj4iTmV4dCwgc2VsZWN0IFwiPHhsaWZmOmcgaWQ9ImFwcGxpY2F0aW9uX25hbWUiPiVzPC94bGlmZjpnPlwiIGFzIHlvdXIgYWN0aXZlIHRleHQtaW5wdXQgbWV0aG9kLiI8L3N0cmluZz4KKyAgICA8IS0tIFRoZSBsYWJlbCBvZiB0aGUgYnV0dG9uIHRoYXQgdHJpZ2dlcnMgdGhlIGNob29zZSBpbnB1dCBtZXRob2QgZGlhbG9nIGluIG9yZGVyIHRvIHNlbGVjdCB0aGUga2V5Ym9hcmQuIFtDSEFSX0xJTUlUPTY0XSAtLT4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAyX2FjdGlvbiI+U3dpdGNoIGlucHV0IG1ldGhvZHM8L3N0cmluZz4KICAgICA8IS0tIE9yZGluYWwgbnVtYmVyIG9mIHRoZSAzcmQgc3RlcCBpbiB0aGUgc2V0dXAgd2l6YXJkLiBbQ0hBUiBMSU1JVD01XSAtLT4KICAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAzX2J1bGxldCIgdHJhbnNsYXRhYmxlPSJmYWxzZSI+Mzwvc3RyaW5nPgogICAgIDwhLS0gVGl0bGUgb2YgdGhlIDNyZCBzdGVwIGluIHRoZSBzZXR1cCB3aXphcmQuIFtDSEFSIExJTUlUPTY0XSAtLT4KLSAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAzX3RpdGxlIiB0cmFuc2xhdGFibGU9ImZhbHNlIj4iQ29uZ3JhdHVsYXRpb25zLCB5b3UncmUgYWxsIHNldCEiPC9zdHJpbmc+Ci0gICAgPCEtLSBEZXRhaWxlZCBpbnN0cnVjdGlvbiBvZiB0aGUgM3JkIHN0ZXAgaW4gdGhlIHNldHVwIHdpemFyZC4gW0NIQVIgTElNSVQ9ODBdIC0tPgotICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDNfaW5zdHJ1Y3Rpb24iIHRyYW5zbGF0YWJsZT0iZmFsc2UiPkNvbmZpZ3VyZSBhZGRpdGlvbmFsIGxhbmd1YWdlczwvc3RyaW5nPgotICAgIDwhLS0gVGl0bGUgb2YgdGhlIExhbmd1YWdlICYgaW5wdXQgc2V0dGluZ3MuIFRoaXMgc2hvdWxkIGJlIGFsaWduZWQgd2l0aCBtc2dpZD0iNTI5MjcxNjc0NzI2NDQ0MjM1OSIgLS0+Ci0gICAgPHN0cmluZyBuYW1lPSJsYW5ndWFnZV9zZXR0aW5ncyI+TGFuZ3VhZ2UgJmFtcDsgaW5wdXQ8L3N0cmluZz4KLSAgICA8IS0tIFRpdGxlIG9mIHRoZSBJbnB1dCBtZXRob2QgcGlja2VyLiBUaGlzIHNob3VsZCBiZSBhbGlnbmVkIHdpdGggbXNnaWQ9IjQ2NTMzODczMzY3OTEyMjI5NzgiIC0tPgotICAgIDxzdHJpbmcgbmFtZT0ic2VsZWN0X2lucHV0X21ldGhvZCI+Q2hvb3NlIGlucHV0IG1ldGhvZDwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDNfdGl0bGUiPiJDb25ncmF0dWxhdGlvbnMsIHlvdSdyZSBhbGwgc2V0ISI8L3N0cmluZz4KKyAgICA8IS0tIERldGFpbGVkIGluc3RydWN0aW9uIG9mIHRoZSAzcmQgc3RlcCBpbiB0aGUgc2V0dXAgd2l6YXJkLiBbQ0hBUiBMSU1JVD0xMjBdIC0tPgorICAgIDxzdHJpbmcgbmFtZT0ic2V0dXBfc3RlcDNfaW5zdHJ1Y3Rpb24iPk5vdyB5b3UgY2FuIHR5cGUgaW4gYWxsIHlvdXIgZmF2b3JpdGUgYXBwcyB3aXRoIDx4bGlmZjpnIGlkPSJhcHBsaWNhdGlvbl9uYW1lIj4lczwveGxpZmY6Zz4uPC9zdHJpbmc+CisgICAgPCEtLSBUaGUgbGFiZWwgb2YgdGhlIGJ1dHRvbiB0aGF0IHRyaWdnZXJzIHRoZSBzY3JlZW4gZm9yIGNvbmZpZ3VhcmluZyBhZGRpdGlvbmFsIGxhbmd1YWdlcyBvZiB0aGUga2V5Ym9hcmQuIFtDSEFSX0xJTUlUPTY0XSAtLT4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX3N0ZXAzX2FjdGlvbiI+Q29uZmlndXJlIGFkZGl0aW9uYWwgbGFuZ3VhZ2VzPC9zdHJpbmc+CisgICAgPCEtLSBUaGUgbGFiZWwgb2YgdGhlIGJ1dHRvbiB0aGF0IGZpbmlzaGVzIHRoZSBzZXR1cCB3aXphcmQuIFtDSEFSX0xJTUlUPTY0XSAtLT4KKyAgICA8c3RyaW5nIG5hbWU9InNldHVwX2ZpbmlzaF9hY3Rpb24iPkZpbmlzaGVkPC9zdHJpbmc+CiAgICAgPCEtLSBPcHRpb24gdG8gc2hvdyBzZXR1cCB3aXphcmQgaWNvbi4gW0NIQVIgTElNSVQ9MzBdLS0+Ci0gICAgPHN0cmluZyBuYW1lPSJzaG93X3NldHVwX3dpemFyZF9pY29uIiB0cmFuc2xhdGFibGU9ImZhbHNlIj5TaG93IHNldHVwIHdpemFyZCBpY29uPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzaG93X3NldHVwX3dpemFyZF9pY29uIj5TaG93IGFwcCBpY29uPC9zdHJpbmc+CisgICAgPCEtLSBEZXNjcmlwdGlvbiBmb3IgdGhlIG9wdGlvbiB0byBzaG93IHNldHVwIHdpemFyZCBhcHBsaWNhdGlvbiBpY29uIG9mIHRoaXMgSU1FIGluIHRoZSBsYXVjaGVyLiBbQ0hBUl9MSU1JVD02NV0gLS0+CisgICAgPHN0cmluZyBuYW1lPSJzaG93X3NldHVwX3dpemFyZF9pY29uX3N1bW1hcnkiPkRpc3BsYXkgYXBwbGljYXRpb24gaWNvbiBpbiB0aGUgbGF1bmNoZXI8L3N0cmluZz4KIAogICAgIDwhLS0gVGhlIGRpY3Rpb25hcnkgcHJvdmlkZXIgYXBwbGljYXRpb24gbmFtZS4gVmlzaWJsZSBpbiBTZXR0aW5ncy9BcHBsaWNhdGlvbnMvTWFuYWdlIGFwcGxpY2F0aW9ucy4gLS0+CiAgICAgPHN0cmluZyBuYW1lPSJhcHBfbmFtZSI+RGljdGlvbmFyeSBQcm92aWRlcjwvc3RyaW5nPgpAQCAtNDk4LDkgKzUwOSw5IEBACiAgICAgPCEtLSBNZXNzYWdlIGFib3V0IHNvbWUgZGljdGlvbmFyeSBpbmRpY2F0aW5nIHRoZSBmaWxlIGlzIGluc3RhbGxlZCwgYnV0IHRoZSBkaWN0aW9uYXJ5IGlzIGRpc2FibGVkIC0tPgogICAgIDxzdHJpbmcgbmFtZT0iZGljdGlvbmFyeV9kaXNhYmxlZCI+SW5zdGFsbGVkLCBkaXNhYmxlZDwvc3RyaW5nPgogCi0gICAgPCEtLSBNZXNzYWdlIHRvIGRpc3BsYXkgaW4gdGhlIGRpY3Rpb25hcmllcyBzZXR0aW5nIHNjcmVlbiB3aGVuIHNvbWUgZXJyb3IgcHJldmVudGVkIHVzIHRvIGxpc3QgaW5zdGFsbGVkIGRpY3Rpb25hcmllcyBbQ0hBUiBMSU1JVD01MF0gLS0+CisgICAgPCEtLSBNZXNzYWdlIHRvIGRpc3BsYXkgaW4gdGhlIGRpY3Rpb25hcmllcyBzZXR0aW5nIHNjcmVlbiB3aGVuIHNvbWUgZXJyb3IgcHJldmVudGVkIHVzIHRvIGxpc3QgaW5zdGFsbGVkIGRpY3Rpb25hcmllcyBbQ0hBUiBMSU1JVD0yMF0gLS0+CiAgICAgPHN0cmluZyBuYW1lPSJjYW5ub3RfY29ubmVjdF90b19kaWN0X3NlcnZpY2UiPlByb2JsZW0gY29ubmVjdGluZyB0byBkaWN0aW9uYXJ5IHNlcnZpY2U8L3N0cmluZz4KLSAgICA8IS0tIE1lc3NhZ2UgdG8gZGlzcGxheSBpbiB0aGUgZGljdGlvbmFyaWVzIHNldHRpbmcgc2NyZWVuIHdoZW4gd2UgZm91bmQgdGhhdCBubyBkaWN0aW9uYXJpZXMgYXJlIGF2YWlsYWJsZSBbQ0hBUiBMSU1JVD01MF0tLT4KKyAgICA8IS0tIE1lc3NhZ2UgdG8gZGlzcGxheSBpbiB0aGUgZGljdGlvbmFyaWVzIHNldHRpbmcgc2NyZWVuIHdoZW4gd2UgZm91bmQgdGhhdCBubyBkaWN0aW9uYXJpZXMgYXJlIGF2YWlsYWJsZSBbQ0hBUiBMSU1JVD0yMF0tLT4KICAgICA8c3RyaW5nIG5hbWU9Im5vX2RpY3Rpb25hcmllc19hdmFpbGFibGUiPk5vIGRpY3Rpb25hcmllcyBhdmFpbGFibGU8L3N0cmluZz4KIAogICAgIDwhLS0gVGl0bGUgb2YgdGhlIG9wdGlvbnMgdG8gcHJlc3MgdG8gcmVmcmVzaCB0aGUgbGlzdCAoYXMgaW4sIGNoZWNrIGZvciB1cGRhdGVzIG5vdykgW0NIQVJfTElNSVQ9NTBdIC0tPgpAQCAtNTQzLDQgKzU1NCw3OSBAQAogCiAgICAgPCEtLSBUaGUgdGV4dCBvZiB0aGUgdG9hc3Qgd2FybmluZyBhIGRvd25sb2FkIGlzIHN0YXJ0aW5nIGF1dG9tYXRpY2FsbHkgdG8gZW5hYmxlIHN1Z2dlc3Rpb25zIGZvciB0aGUgc2VsZWN0ZWQgbGFuZ3VhZ2UgW0NIQVIgTElNSVQ9MTAwXSAtLT4KICAgICA8c3RyaW5nIG5hbWU9InRvYXN0X2Rvd25sb2FkaW5nX3N1Z2dlc3Rpb25zIj5Eb3dubG9hZGluZzogc3VnZ2VzdGlvbnMgZm9yIDx4bGlmZjpnIGlkPSJsYW5ndWFnZSIgZXhhbXBsZT0iRW5nbGlzaCI+JTEkczwveGxpZmY6Zz4gd2lsbCBiZSByZWFkeSBzb29uLjwvc3RyaW5nPgorCisgICAgPCEtLSBWZXJzaW9uIHRleHQgW0NIQVIgTElNSVQ9MzBdLS0+CisgICAgPHN0cmluZyBuYW1lPSJ2ZXJzaW9uX3RleHQiPlZlcnNpb24gPHhsaWZmOmcgaWQ9InZlcnNpb25fbnVtYmVyIiBleGFtcGxlPSIxLjAuMTg2NC42NDM1MjEiPiUxJHM8L3hsaWZmOmc+PC9zdHJpbmc+CisKKyAgICA8IS0tIFVzZXIgZGljdGlvbmFyeSBzZXR0aW5ncyAtLT4KKyAgICA8IS0tIFVzZXIgZGljdGlvbmFyeSBzZXR0aW5ncywgVGhlIHRpdGxlYmFyIHRleHQgb2YgdGhlIFVzZXIgZGljdGlvbmFyeSBzZXR0aW5ncyBzY3JlZW4uIC0tPgorICAgIDwhLS0gVGhpcyByZXNvdXJjZSBpcyBjb3JyZXNwb25kaW5nIHRvIG1zZ2lkPSI3NjU2NTkyNTc0NTUwMDA0OTAiIC0tPgorICAgIDxzdHJpbmcgbmFtZT0idXNlcl9kaWN0X3NldHRpbmdzX3RpdGxlYmFyIj5Vc2VyIGRpY3Rpb25hcnk8L3N0cmluZz4KKyAgICA8IS0tIFVzZXIgZGljdGlvbmFyeSBzZXR0aW5ncywgVGhlIHRpdGxlIG9mIHRoZSBsaXN0IGl0ZW0gdG8gZ28gaW50byB0aGUgVXNlciBkaWN0aW9uYXJ5IHNldHRpbmdzIHNjcmVlbiB3aGVuIHRoZXJlIGlzIG9ubHkgb25lIHVzZXIgZGljdGlvbmFyeS4gW0NIQVIgTElNSVQ9MzVdIC0tPgorICAgIDwhLS0gVGhpcyByZXNvdXJjZSBpcyBjb3JyZXNwb25kaW5nIHRvIG1zZ2lkPSI1MjQ5OTcyMTg0MzM1NDA2MTQiIC0tPgorICAgIDxzdHJpbmcgbmFtZT0idXNlcl9kaWN0X3NpbmdsZV9zZXR0aW5nc190aXRsZSI+UGVyc29uYWwgZGljdGlvbmFyeTwvc3RyaW5nPgorICAgIDwhLS0gVXNlciBkaWN0aW9uYXJ5IHNldHRpbmdzLCBUaGUgdGl0bGUgb2YgdGhlIGxpc3QgaXRlbSB0byBnbyBpbnRvIHRoZSBVc2VyIGRpY3Rpb25hcnkgbGlzdCB3aGVuIHRoZXJlIGFyZSBzZXZlcmFsIHVzZXIgZGljdGlvbmFyaWVzLiBbQ0hBUiBMSU1JVD0zNV0gLS0+CisgICAgPCEtLSBUaGlzIHJlc291cmNlIGlzIGNvcnJlc3BvbmRpbmcgdG8gbXNnaWQ9IjM3MzUyMjQ0MzMzMDc5OTYyNzYiIC0tPgorICAgIDxzdHJpbmcgbmFtZT0idXNlcl9kaWN0X211bHRpcGxlX3NldHRpbmdzX3RpdGxlIj5QZXJzb25hbCBkaWN0aW9uYXJpZXM8L3N0cmluZz4KKyAgICA8IS0tIFVzZXIgZGljdGlvbmFyeSBzZXR0aW5ncy4gIFRoZSBzdW1tYXJ5IG9mIHRoZSBsaXN0ZW0gaXRlbSB0byBnbyBpbnRvIHRoZSBVc2VyIGRpY3Rpb25hcnkgc2V0dGluZ3Mgc2NyZWVuLiAtLT4KKyAgICA8c3RyaW5nIG5hbWU9InVzZXJfZGljdF9zZXR0aW5nc19zdW1tYXJ5IiB0cmFuc2xhdGFibGU9ImZhbHNlIj4iIjwvc3RyaW5nPgorICAgIDwhLS0gVXNlciBkaWN0aW9uYXJ5IHNldHRpbmdzLiBUaGUgdGl0bGUgb2YgdGhlIG1lbnUgaXRlbSB0byBhZGQgYSBuZXcgd29yZCB0byB0aGUgdXNlciBkaWN0aW9uYXJ5LiAtLT4KKyAgICA8IS0tIFRoaXMgcmVzb3VyY2UgaXMgY29ycmVzcG9uZGluZyB0byAgbXNnaWQ9IjQwNTY3NjI3NTcxNDk5MjM1NTEiIC0tPgorICAgIDxzdHJpbmcgbmFtZT0idXNlcl9kaWN0X3NldHRpbmdzX2FkZF9tZW51X3RpdGxlIj5BZGQ8L3N0cmluZz4KKyAgICA8IS0tIFVzZXIgZGljdGlvbmFyeSBzZXR0aW5ncy4gVGhlIHRpdGxlIG9mIHRoZSBkaWFsb2cgdG8gYWRkIGEgbmV3IHdvcmQgdG8gdGhlIHVzZXIgZGljdGlvbmFyeS4gW0NIQVIgTElNSVQ9MjVdIC0tPgorICAgIDwhLS0gVGhpcyByZXNvdXJjZSBpcyBjb3JyZXNwb25kaW5nIHRvIG1zZ2lkPSI0NzAyNjEzOTkwMTc0MTI2NDgyIiAtLT4KKyAgICA8c3RyaW5nIG5hbWU9InVzZXJfZGljdF9zZXR0aW5nc19hZGRfZGlhbG9nX3RpdGxlIj5BZGQgdG8gZGljdGlvbmFyeTwvc3RyaW5nPgorICAgIDwhLS0gVXNlciBkaWN0aW9uYXJ5IHNldHRpbmdzLiBUaGUgdGl0bGUgb2YgdGhlIHNjcmVlbiB0byBhZGQvZWRpdCBhIG5ldyB3b3JkIHRvIHRoZSB1c2VyIGRpY3Rpb25hcnk7IGl0IGRlc2NyaWJlcyB0aGUgcGhyYXNlIHRoYXQgd2lsbCBiZSBhZGRlZCB0byB0aGUgdXNlciBkaWN0aW9uYXJ5LiBbQ0hBUiBMSU1JVD0yNV0gLS0+CisgICAgPCEtLSBUaGlzIHJlc291cmNlIGlzIGNvcnJlc3BvbmRpbmcgdG8gbXNnaWQ9Ijc0MjU4MDcyMDEyNDM0NDI5MSIgLS0+CisgICAgPHN0cmluZyBuYW1lPSJ1c2VyX2RpY3Rfc2V0dGluZ3NfYWRkX3NjcmVlbl90aXRsZSI+UGhyYXNlPC9zdHJpbmc+CisgICAgPCEtLSBVc2VyIGRpY3Rpb25hcnkgc2V0dGluZ3MuIFRleHQgb24gdGhlIGRpYWxvZyBidXR0b24gdG8gcG9wIG1vcmUgb3B0aW9ucyBmb3IgYWRkaW5nIGEgd29yZC4gW0NIQVIgTElNSVQ9MTZdIC0tPgorICAgIDwhLS0gVGhpcyByZXNvdXJjZSBpcyBjb3JyZXNwb25kaW5nIHRvIG1zZ2lkPSI4ODQ4Nzk4MzcwNzQ2MDE5ODI1IiAtLT4KKyAgICA8c3RyaW5nIG5hbWU9InVzZXJfZGljdF9zZXR0aW5nc19hZGRfZGlhbG9nX21vcmVfb3B0aW9ucyI+TW9yZSBvcHRpb25zPC9zdHJpbmc+CisgICAgPCEtLSBVc2VyIGRpY3Rpb25hcnkgc2V0dGluZ3MuIFRleHQgb24gdGhlIGRpYWxvZyBidXR0b24gbWFzayBhZHZhbmNlZCBvcHRpb25zLiBbQ0hBUiBMSU1JVD0xNV0gLS0+CisgICAgPCEtLSBUaGlzIHJlc291cmNlIGlzIGNvcnJlc3BvbmRpbmcgdG8gbXNnaWQ9IjI0NDE3ODUyNjg3MjYwMzYxMDEiIC0tPgorICAgIDxzdHJpbmcgbmFtZT0idXNlcl9kaWN0X3NldHRpbmdzX2FkZF9kaWFsb2dfbGVzc19vcHRpb25zIj5MZXNzIG9wdGlvbnM8L3N0cmluZz4KKyAgICA8IS0tIFVzZXIgZGljdGlvbmFyeSBzZXR0aW5ncy4gVGV4dCBvbiB0aGUgZGlhbG9nIGJ1dHRvbiB0byBjb25maXJtIGFkZGluZyBhIHdvcmQuIFtDSEFSIExJTUlUPTE1XSAtLT4KKyAgICA8IS0tIFRoaXMgcmVzb3VyY2UgaXMgY29ycmVzcG9uZGluZyB0byBtc2dpZD0iNjIyNTgyMzYyNTMzMjQxNjE0NCIgLS0+CisgICAgPHN0cmluZyBuYW1lPSJ1c2VyX2RpY3Rfc2V0dGluZ3NfYWRkX2RpYWxvZ19jb25maXJtIj5PSzwvc3RyaW5nPgorICAgIDwhLS0gVXNlciBkaWN0aW9uYXJ5IHNldHRpbmdzLiBMYWJlbCB0byBwdXQgYmVmb3JlIHRoZSB3b3JkIGZpZWxkICh0aGF0J3MgdGhlIHdvcmQgdGhhdCB3aWxsIGFjdHVhbGx5IGJlIGFkZGVkIHRvIHRoZSB1c2VyIGRpY3Rpb25hcnkgd2hlbiBPSyBpcyBwcmVzc2VkKS4gW0NIQVIgTElNSVQ9MjBdIC0tPgorICAgIDwhLS0gVGhpcyByZXNvdXJjZSBpcyBjb3JyZXNwb25kaW5nIHRvIG1zZ2lkPSI3ODY4ODc5MTc0OTA1OTYzMTM1IiAtLT4KKyAgICA8c3RyaW5nIG5hbWU9InVzZXJfZGljdF9zZXR0aW5nc19hZGRfd29yZF9vcHRpb25fbmFtZSI+V29yZDo8L3N0cmluZz4KKyAgICA8IS0tIFVzZXIgZGljdGlvbmFyeSBzZXR0aW5ncy4gTGFiZWwgdG8gcHV0IGJlZm9yZSB0aGUgc2hvcnRjdXQgZmllbGQgKG9uY2UgYSBzaG9ydGN1dCBpcyByZWdpc3RlcmVkLCB0aGUgdXNlciBjYW4gdHlwZSB0aGUgc2hvcnRjdXQgYW5kIGdldCB0aGUgd29yZCBpdCBwb2ludHMgdG8gaW4gdGhlIHN1Z2dlc3Rpb25zKS4gW0NIQVIgTElNSVQ9MjBdIC0tPgorICAgIDwhLS0gVGhpcyByZXNvdXJjZSBpcyBjb3JyZXNwb25kaW5nIHRvIG1zZ2lkPSI2NjAwODkyNTg4NjYwNjM5MjUiIC0tPgorICAgIDxzdHJpbmcgbmFtZT0idXNlcl9kaWN0X3NldHRpbmdzX2FkZF9zaG9ydGN1dF9vcHRpb25fbmFtZSI+U2hvcnRjdXQ6PC9zdHJpbmc+CisgICAgPCEtLSBVc2VyIGRpY3Rpb25hcnkgc2V0dGluZ3MuIExhYmVsIHRvIHB1dCBiZWZvcmUgdGhlIGxhbmd1YWdlIGZpZWxkLiBbQ0hBUiBMSU1JVD0yMF0gLS0+CisgICAgPCEtLSBUaGlzIHJlc291cmNlIGlzIGNvcnJlc3BvbmRpbmcgdG8gbXNnaWQ9IjU2OTYzNTgzMTcwNjEzMTg1MzIiIC0tPgorICAgIDxzdHJpbmcgbmFtZT0idXNlcl9kaWN0X3NldHRpbmdzX2FkZF9sb2NhbGVfb3B0aW9uX25hbWUiPkxhbmd1YWdlOjwvc3RyaW5nPgorICAgIDwhLS0gVXNlciBkaWN0aW9uYXJ5IHNldHRpbmdzLiBIaW50IGZvciB0aGUgdGV4dCBmaWVsZCB0byB0eXBlIHRoZSB3b3JkIHRvIGFkZCB0byB0aGUgdXNlciBkaWN0aW9uYXJ5LiBbQ0hBUiBMSU1JVD0zNV0gLS0+CisgICAgPCEtLSBUaGlzIHJlc291cmNlIGlzIGNvcnJlc3BvbmRpbmcgdG8gbXNnaWQ9IjU3MjUyNTQwNzY1NTY4MjEyNDciIC0tPgorICAgIDxzdHJpbmcgbmFtZT0idXNlcl9kaWN0X3NldHRpbmdzX2FkZF93b3JkX2hpbnQiPlR5cGUgYSB3b3JkPC9zdHJpbmc+CisgICAgPCEtLSBVc2VyIGRpY3Rpb25hcnkgc2V0dGluZ3MuIEhpbnQgZm9yIHRoZSB0ZXh0IGZpZWxkIHRvIHR5cGUgdGhlIG9wdGlvbmFsIHNob3J0Y3V0IHRvIGFkZCB0byB0aGUgdXNlciBkaWN0aW9uYXJ5LiBbQ0hBUiBMSU1JVD0zNV0gLS0+CisgICAgPCEtLSBUaGlzIHJlc291cmNlIGlzIGNvcnJlc3BvbmRpbmcgdG8gbXNnaWQ9IjczMzM3NjM0NTY1NjE4NzM0NDUiIC0tPgorICAgIDxzdHJpbmcgbmFtZT0idXNlcl9kaWN0X3NldHRpbmdzX2FkZF9zaG9ydGN1dF9oaW50Ij5PcHRpb25hbCBzaG9ydGN1dDwvc3RyaW5nPgorICAgIDwhLS0gVXNlciBkaWN0aW9uYXJ5IHNldHRpbmdzLiBUaGUgdGl0bGUgb2YgdGhlIGRpYWxvZyB0byBlZGl0IGFuIGV4aXN0aW5nIHdvcmQgaW4gdGhlIHVzZXIgZGljdGlvbmFyeS4gLS0+CisgICAgPCEtLSBUaGlzIHJlc291cmNlIGlzIGNvcnJlc3BvbmRpbmcgdG8gbXNnaWQ9Ijg5Njc0NzY0NDQ4NDA1NDg2NzQiIC0tPgorICAgIDxzdHJpbmcgbmFtZT0idXNlcl9kaWN0X3NldHRpbmdzX2VkaXRfZGlhbG9nX3RpdGxlIj5FZGl0IHdvcmQ8L3N0cmluZz4KKyAgICA8IS0tIFVzZXIgZGljdGlvbmFyeSBzZXR0aW5ncy4gVGhlIHRpdGxlIG9mIHRoZSBjb250ZXh0IG1lbnUgaXRlbSB0byBlZGl0IHRoZSBjdXJyZW50IHdvcmQgLS0+CisgICAgPCEtLSBUaGlzIHJlc291cmNlIGlzIGNvcnJlc3BvbmRpbmcgdG8gbXNnaWQ9IjIyMTA1NjQ4NzkzMjAwMDQ4MzciIC0tPgorICAgIDxzdHJpbmcgbmFtZT0idXNlcl9kaWN0X3NldHRpbmdzX2NvbnRleHRfbWVudV9lZGl0X3RpdGxlIj5FZGl0PC9zdHJpbmc+CisgICAgPCEtLSBVc2VyIGRpY3Rpb25hcnkgc2V0dGluZ3MuIFRoZSB0aXRsZSBvZiB0aGUgY29udGV4dCBtZW51IGl0ZW0gdG8gZGVsZXRlIHRoZSBjdXJyZW50IHdvcmQgLS0+CisgICAgPCEtLSBUaGlzIHJlc291cmNlIGlzIGNvcnJlc3BvbmRpbmcgdG8gbXNnaWQ9IjkxNDA3MDM5MTM3NzY1NDkwNTQiIC0tPgorICAgIDxzdHJpbmcgbmFtZT0idXNlcl9kaWN0X3NldHRpbmdzX2NvbnRleHRfbWVudV9kZWxldGVfdGl0bGUiPkRlbGV0ZTwvc3RyaW5nPgorICAgIDwhLS0gVXNlciBkaWN0aW9uYXJ5IHNldHRpbmdzLiBUaGUgdGV4dCB0byBzaG93IHdoZW4gdGhlcmUgYXJlIG5vIHVzZXItZGVmaW5lZCB3b3JkcyBpbiB0aGUgZGljdGlvbmFyeSAgW0NIQVIgTElNSVQ9MjAwXSAtLT4KKyAgICA8IS0tIFRoaXMgcmVzb3VyY2UgaXMgY29ycmVzcG9uZGluZyB0byBtc2dpZD0iODE2NTI3MzM3OTk0MjEwNTI3MSIgLS0+CisgICAgPHN0cmluZyBuYW1lPSJ1c2VyX2RpY3Rfc2V0dGluZ3NfZW1wdHlfdGV4dCI+WW91IGRvblwndCBoYXZlIGFueSB3b3JkcyBpbiB0aGUgdXNlciBkaWN0aW9uYXJ5LiBBZGQgYSB3b3JkIGJ5IHRvdWNoaW5nIHRoZSBBZGQgKCspIGJ1dHRvbi48L3N0cmluZz4KKyAgICA8IS0tIFVzZXIgZGljdGlvbmFyeSBzZXR0aW5ncy4gVGhlIGxpc3QgaXRlbSB0byBjaG9vc2UgdG8gaW5zZXJ0IGEgd29yZCBpbnRvIHRoZSB1c2VyIGRpY3Rpb25hcnkgZm9yIGFsbCBsYW5ndWFnZXMgLS0+CisgICAgPCEtLSBUaGlzIHJlc291cmNlIGlzIGNvcnJlc3BvbmRpbmcgdG8gbXNnaWQ9IjY3NDIwMDAwNDA5NzU5NTkyNDciIC0tPgorICAgIDxzdHJpbmcgbmFtZT0idXNlcl9kaWN0X3NldHRpbmdzX2FsbF9sYW5ndWFnZXMiPkZvciBhbGwgbGFuZ3VhZ2VzPC9zdHJpbmc+CisgICAgPCEtLSBVc2VyIGRpY3Rpb25hcnkgc2V0dGluZ3MuIFRoZSB0ZXh0IHRvIHNob3cgZm9yIHRoZSBvcHRpb24gdGhhdCBzaG93cyB0aGUgZW50aXJlIGxpc3Qgb2Ygc3VwcG9ydGVkIGxvY2FsZXMgdG8gY2hvb3NlIG9uZSBbQ0hBUiBMSU1JVD0zMF0gLS0+CisgICAgPCEtLSBUaGlzIHJlc291cmNlIGlzIGNvcnJlc3BvbmRpbmcgdG8gbXNnaWQ9IjczMTYzNzU5NDQ2ODQ5Nzc5MTAiIC0tPgorICAgIDxzdHJpbmcgbmFtZT0idXNlcl9kaWN0X3NldHRpbmdzX21vcmVfbGFuZ3VhZ2VzIj5Nb3JlIGxhbmd1YWdlc+KApjwvc3RyaW5nPgorICAgIDwhLS0gVXNlciBkaWN0aW9uYXJ5IHNldHRpbmdzLiBMYWJlbCB0byBkZWxldGUgYW4gZW50cnkgaW4gdGhlIHVzZXIgZGljdGlvbmFyeSBbQ0hBUiBMSU1JVD0zMF0KKyAgICAgICAgIFRoaXMgcmVzb3VyY2UgaXMgY29waWVkIGZyb20gcGFja2FnZXMvYXBwcy9TZXR0aW5ncy9yZXMvdmFsdWVzL3N0cmluZ3MueG1sIC0tPgorICAgIDwhLS0gVGhpcyByZXNvdXJjZSBpcyBjb3JyZXNwb25kaW5nIHRvIG1zZ2lkPSI0MjE5MjQzNDEyMzI1MTYzMDAzIiAtLT4KKyAgICA8c3RyaW5nIG5hbWU9InVzZXJfZGljdF9zZXR0aW5nc19kZWxldGUiPkRlbGV0ZTwvc3RyaW5nPgorICAgIDwhLS0gVXNlciBkaWN0aW9uYXJ5IHNldHRpbmdzLiBJbmRleCBvZiB0aGUgdXNlciBkaWN0aW9uYXJ5IFtDSEFSIExJTUlUPTMwXQorICAgICAgICAgVGhpcyByZXNvdXJjZSBpcyBjb3BpZWQgZnJvbSBwYWNrYWdlcy9hcHBzL1NldHRpbmdzL3Jlcy92YWx1ZXMvc3RyaW5ncy54bWwgLS0+CisgICAgPCEtLSBUaGlzIHJlc291cmNlIGlzIGNvcnJlc3BvbmRpbmcgdG8gbXNnaWQ9IjU0MzMyNzU0ODU0OTkwMzkxOTkiIC0tPgorICAgIDxzdHJpbmcgbmFtZT0idXNlcl9kaWN0X2Zhc3Rfc2Nyb2xsX2FscGhhYmV0Ij5cdTAwMjBBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWjwvc3RyaW5nPgogPC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9qYXZhL3Jlcy92YWx1ZXMvc3R5bGVzLnhtbCBiL2phdmEvcmVzL3ZhbHVlcy9zdHlsZXMueG1sCmluZGV4IDQzNmUwODAuLmRhZDdlMjAgMTAwNjQ0Ci0tLSBhL2phdmEvcmVzL3ZhbHVlcy9zdHlsZXMueG1sCisrKyBiL2phdmEvcmVzL3ZhbHVlcy9zdHlsZXMueG1sCkBAIC05NCw4ICs5NCwxMCBAQAogICAgICAgICA8aXRlbSBuYW1lPSJzaG93TW9yZUtleXNLZXlib2FyZEF0VG91Y2hlZFBvaW50Ij5AYm9vbC9jb25maWdfc2hvd19tb3JlX2tleXNfa2V5Ym9hcmRfYXRfdG91Y2hlZF9wb2ludDwvaXRlbT4KICAgICAgICAgPGl0ZW0gbmFtZT0ibGFuZ3VhZ2VPblNwYWNlYmFyRmluYWxBbHBoYSI+QGludGVnZXIvY29uZmlnX2xhbmd1YWdlX29uX3NwYWNlYmFyX2ZpbmFsX2FscGhhPC9pdGVtPgogICAgICAgICA8aXRlbSBuYW1lPSJsYW5ndWFnZU9uU3BhY2ViYXJGYWRlb3V0QW5pbWF0b3IiPkBhbmltL2xhbmd1YWdlX29uX3NwYWNlYmFyX2ZhZGVvdXQ8L2l0ZW0+CisgICAgICAgIDwhLS0gUmVtb3ZlIGFuaW1hdGlvbnMgZm9yIG5vdyBiZWNhdXNlIGl0IGNvdWxkIGRyYWluIGEgbm9uLW5lZ2xpZ2libGUgYW1vdW50IG9mIGJhdHRlcnkgd2hpbGUgdHlwaW5nLgogICAgICAgICA8aXRlbSBuYW1lPSJhbHRDb2RlS2V5V2hpbGVUeXBpbmdGYWRlb3V0QW5pbWF0b3IiPkBhbmltL2FsdF9jb2RlX2tleV93aGlsZV90eXBpbmdfZmFkZW91dDwvaXRlbT4KICAgICAgICAgPGl0ZW0gbmFtZT0iYWx0Q29kZUtleVdoaWxlVHlwaW5nRmFkZWluQW5pbWF0b3IiPkBhbmltL2FsdF9jb2RlX2tleV93aGlsZV90eXBpbmdfZmFkZWluPC9pdGVtPgorICAgICAgICAtLT4KICAgICAgICAgPCEtLSBDb21tb24gYXR0cmlidXRlcyBvZiBNYWluS2V5Ym9hcmRWaWV3IGZvciBnZXN0dXJlIHR5cGluZyBkZXRlY3Rpb24gYW5kIHJlY29nbml0aW9uIC0tPgogICAgICAgICA8aXRlbSBuYW1lPSJnZXN0dXJlRmxvYXRpbmdQcmV2aWV3VGV4dExpbmdlclRpbWVvdXQiPkBpbnRlZ2VyL2NvbmZpZ19nZXN0dXJlX2Zsb2F0aW5nX3ByZXZpZXdfdGV4dF9saW5nZXJfdGltZW91dDwvaXRlbT4KICAgICAgICAgPGl0ZW0gbmFtZT0iZ2VzdHVyZVN0YXRpY1RpbWVUaHJlc2hvbGRBZnRlckZhc3RUeXBpbmciPkBpbnRlZ2VyL2NvbmZpZ19nZXN0dXJlX3N0YXRpY190aW1lX3RocmVzaG9sZF9hZnRlcl9mYXN0X3R5cGluZzwvaXRlbT4KZGlmZiAtLWdpdCBhL2phdmEvcmVzL3htbC9wcmVmcy54bWwgYi9qYXZhL3Jlcy94bWwvcHJlZnMueG1sCmluZGV4IDE1ODFlNWYuLjUxZTM0MjAgMTAwNjQ0Ci0tLSBhL2phdmEvcmVzL3htbC9wcmVmcy54bWwKKysrIGIvamF2YS9yZXMveG1sL3ByZWZzLnhtbApAQCAtNTQsNiArNTQsMTEgQEAKICAgICAgICAgYW5kcm9pZDp0aXRsZT0iQHN0cmluZy9jb3JyZWN0aW9uX2NhdGVnb3J5IgogICAgICAgICBhbmRyb2lkOmtleT0iY29ycmVjdGlvbl9zZXR0aW5ncyI+CiAgICAgICAgIDxQcmVmZXJlbmNlU2NyZWVuCisgICAgICAgICAgICBhbmRyb2lkOmtleT0iZWRpdF9wZXJzb25hbF9kaWN0aW9uYXJ5IgorICAgICAgICAgICAgYW5kcm9pZDp0aXRsZT0iQHN0cmluZy9lZGl0X3BlcnNvbmFsX2RpY3Rpb25hcnkiPgorICAgICAgICAgICAgPGludGVudCBhbmRyb2lkOmFjdGlvbj0iYW5kcm9pZC5zZXR0aW5ncy5VU0VSX0RJQ1RJT05BUllfU0VUVElOR1MiIC8+CisgICAgICAgIDwvUHJlZmVyZW5jZVNjcmVlbj4KKyAgICAgICAgPFByZWZlcmVuY2VTY3JlZW4KICAgICAgICAgICAgIGFuZHJvaWQ6a2V5PSJjb25maWd1cmVfZGljdGlvbmFyaWVzX2tleSIKICAgICAgICAgICAgIGFuZHJvaWQ6dGl0bGU9IkBzdHJpbmcvY29uZmlndXJlX2RpY3Rpb25hcmllc190aXRsZSI+CiAgICAgICAgICAgIDxpbnRlbnQKQEAgLTY0LDYgKzY5LDEyIEBACiAgICAgICAgICAgICAgICAgIGFuZHJvaWQ6dmFsdWU9IkBzdHJpbmcvZGljdGlvbmFyeV9wYWNrX2NsaWVudF9pZCIgLz4KICAgICAgICAgICAgPC9pbnRlbnQ+CiAgICAgICAgIDwvUHJlZmVyZW5jZVNjcmVlbj4KKyAgICAgICAgPENoZWNrQm94UHJlZmVyZW5jZQorICAgICAgICAgICAgYW5kcm9pZDprZXk9InByZWZfa2V5X2Jsb2NrX3BvdGVudGlhbGx5X29mZmVuc2l2ZSIKKyAgICAgICAgICAgIGFuZHJvaWQ6dGl0bGU9IkBzdHJpbmcvcHJlZnNfYmxvY2tfcG90ZW50aWFsbHlfb2ZmZW5zaXZlX3RpdGxlIgorICAgICAgICAgICAgYW5kcm9pZDpzdW1tYXJ5PSJAc3RyaW5nL3ByZWZzX2Jsb2NrX3BvdGVudGlhbGx5X29mZmVuc2l2ZV9zdW1tYXJ5IgorICAgICAgICAgICAgYW5kcm9pZDpwZXJzaXN0ZW50PSJ0cnVlIgorICAgICAgICAgICAgYW5kcm9pZDpkZWZhdWx0VmFsdWU9IkBib29sL2NvbmZpZ19ibG9ja19wb3RlbnRpYWxseV9vZmZlbnNpdmUiIC8+CiAgICAgICAgIDxMaXN0UHJlZmVyZW5jZQogICAgICAgICAgICAgYW5kcm9pZDprZXk9ImF1dG9fY29ycmVjdGlvbl90aHJlc2hvbGQiCiAgICAgICAgICAgICBhbmRyb2lkOnRpdGxlPSJAc3RyaW5nL2F1dG9fY29ycmVjdGlvbiIKQEAgLTE3MiwxNiArMTgzLDE5IEBACiAgICAgICAgICAgICAgICAgYW5kcm9pZDprZXk9InByZWZfa2V5cHJlc3Nfc291bmRfdm9sdW1lIgogICAgICAgICAgICAgICAgIGFuZHJvaWQ6dGl0bGU9IkBzdHJpbmcvcHJlZnNfa2V5cHJlc3Nfc291bmRfdm9sdW1lX3NldHRpbmdzIgogICAgICAgICAgICAgICAgIGxhdGluOm1heFZhbHVlPSIxMDAiIC8+IDwhLS0gcGVyY2VudCAtLT4KLSAgICAgICAgICAgIDwhLS0gVGhlIHNob3cgc2V0dXAgd2l6YXJkIGljb24gc2V0dGluZ3Mgc2hvdWxkbid0IGJlIHBlcnNpc3RlbnQgYW5kIHRoZSBkZWZhdWx0IHZhbHVlCi0gICAgICAgICAgICAgICAgIGlzIGFkZGVkIHByb2dyYW1tYXRpY2FsbHkuIC0tPgorICAgICAgICAgICAgPCEtLSBUaGUgc2V0dGlncyBmb3Igc2hvd2luZyBzZXR1cCB3aXphcmQgYXBwbGljYXRpb24gaWNvbiBzaG91bGRuJ3QgYmUgcGVyc2lzdGVudCBhbmQKKyAgICAgICAgICAgICAgICAgdGhlIGRlZmF1bHQgdmFsdWUgaXMgYWRkZWQgcHJvZ3JhbW1hdGljYWxseS4gLS0+CiAgICAgICAgICAgICA8Q2hlY2tCb3hQcmVmZXJlbmNlCiAgICAgICAgICAgICAgICAgYW5kcm9pZDprZXk9InByZWZfc2hvd19zZXR1cF93aXphcmRfaWNvbiIKLSAgICAgICAgICAgICAgICBhbmRyb2lkOnRpdGxlPSJAc3RyaW5nL3Nob3dfc2V0dXBfd2l6YXJkX2ljb24iIC8+CisgICAgICAgICAgICAgICAgYW5kcm9pZDp0aXRsZT0iQHN0cmluZy9zaG93X3NldHVwX3dpemFyZF9pY29uIgorICAgICAgICAgICAgICAgIGFuZHJvaWQ6c3VtbWFyeT0iQHN0cmluZy9zaG93X3NldHVwX3dpemFyZF9pY29uX3N1bW1hcnkiIC8+CiAgICAgICAgIDwvUHJlZmVyZW5jZVNjcmVlbj4KICAgICAgICAgPFByZWZlcmVuY2VTY3JlZW4KICAgICAgICAgICAgIGFuZHJvaWQ6a2V5PSJzZW5kX2ZlZWRiYWNrIgogICAgICAgICAgICAgYW5kcm9pZDp0aXRsZT0iQHN0cmluZy9zZW5kX2ZlZWRiYWNrIiAvPgogICAgICAgICA8UHJlZmVyZW5jZVNjcmVlbgorICAgICAgICAgICAgYW5kcm9pZDprZXk9ImFib3V0X2tleWJvYXJkIiAvPgorICAgICAgICA8UHJlZmVyZW5jZVNjcmVlbgogICAgICAgICAgICAgYW5kcm9pZDprZXk9ImRlYnVnX3NldHRpbmdzIgogICAgICAgICAgICAgYW5kcm9pZDp0aXRsZT0iRGVidWcgc2V0dGluZ3MiCiAgICAgICAgICAgICBhbmRyb2lkOnBlcnNpc3RlbnQ9InRydWUiCmRpZmYgLS1naXQgYS9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9jb21wYXQvVGV4dFZpZXdDb21wYXRVdGlscy5qYXZhIGIvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvY29tcGF0L1RleHRWaWV3Q29tcGF0VXRpbHMuamF2YQppbmRleCBkNGYxZWE4Li5mOGUxOTAyIDEwMDY0NAotLS0gYS9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9jb21wYXQvVGV4dFZpZXdDb21wYXRVdGlscy5qYXZhCisrKyBiL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2NvbXBhdC9UZXh0Vmlld0NvbXBhdFV0aWxzLmphdmEKQEAgLTIyLDIzICsyMiwyMyBAQAogaW1wb3J0IGphdmEubGFuZy5yZWZsZWN0Lk1ldGhvZDsKIAogcHVibGljIGZpbmFsIGNsYXNzIFRleHRWaWV3Q29tcGF0VXRpbHMgewotICAgIC8vIE5vdGUgdGhhdCBUZXh0Vmlldy5zZXRDb21wb3VuZERyYXdhYmxlc1JlbGF0aXZlKERyYXdhYmxlLERyYXdhYmxlLERyYXdhYmxlLERyYXdhYmxlKSBoYXMKLSAgICAvLyBiZWVuIGludHJvZHVjZWQgaW4gQVBJIGxldmVsIDE3IChCdWlsZC5WRVJTSU9OX0NPREUuSkVMTFlfQkVBTl9NUjEpLgotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIE1ldGhvZCBNRVRIT0Rfc2V0Q29tcG91bmREcmF3YWJsZXNSZWxhdGl2ZSA9IENvbXBhdFV0aWxzLmdldE1ldGhvZCgKLSAgICAgICAgICAgIFRleHRWaWV3LmNsYXNzLCAic2V0Q29tcG91bmREcmF3YWJsZXNSZWxhdGl2ZSIsCisgICAgLy8gTm90ZSB0aGF0IFRleHRWaWV3LnNldENvbXBvdW5kRHJhd2FibGVzUmVsYXRpdmVXaXRoSW50cmluc2ljQm91bmRzKERyYXdhYmxlLERyYXdhYmxlLAorICAgIC8vIERyYXdhYmxlLERyYXdhYmxlKSBoYXMgYmVlbiBpbnRyb2R1Y2VkIGluIEFQSSBsZXZlbCAxNyAoQnVpbGQuVkVSU0lPTl9DT0RFLkpFTExZX0JFQU5fTVIxKS4KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBNZXRob2QgTUVUSE9EX3NldENvbXBvdW5kRHJhd2FibGVzUmVsYXRpdmVXaXRoSW50cmluc2ljQm91bmRzID0KKyAgICAgICAgICAgIENvbXBhdFV0aWxzLmdldE1ldGhvZChUZXh0Vmlldy5jbGFzcywgInNldENvbXBvdW5kRHJhd2FibGVzUmVsYXRpdmVXaXRoSW50cmluc2ljQm91bmRzIiwKICAgICAgICAgICAgIERyYXdhYmxlLmNsYXNzLCBEcmF3YWJsZS5jbGFzcywgRHJhd2FibGUuY2xhc3MsIERyYXdhYmxlLmNsYXNzKTsKIAogICAgIHByaXZhdGUgVGV4dFZpZXdDb21wYXRVdGlscygpIHsKICAgICAgICAgLy8gVGhpcyB1dGlsaXR5IGNsYXNzIGlzIG5vdCBwdWJsaWNseSBpbnN0YW50aWFibGUuCiAgICAgfQogCi0gICAgcHVibGljIHN0YXRpYyB2b2lkIHNldENvbXBvdW5kRHJhd2FibGVzUmVsYXRpdmUoZmluYWwgVGV4dFZpZXcgdGV4dFZpZXcsIGZpbmFsIERyYXdhYmxlIHN0YXJ0LAotICAgICAgICAgICAgZmluYWwgRHJhd2FibGUgdG9wLCBmaW5hbCBEcmF3YWJsZSBlbmQsIGZpbmFsIERyYXdhYmxlIGJvdHRvbSkgewotICAgICAgICBpZiAoTUVUSE9EX3NldENvbXBvdW5kRHJhd2FibGVzUmVsYXRpdmUgPT0gbnVsbCkgewotICAgICAgICAgICAgdGV4dFZpZXcuc2V0Q29tcG91bmREcmF3YWJsZXMoc3RhcnQsIHRvcCwgZW5kLCBib3R0b20pOworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBzZXRDb21wb3VuZERyYXdhYmxlc1JlbGF0aXZlV2l0aEludHJpbnNpY0JvdW5kcyhmaW5hbCBUZXh0VmlldyB0ZXh0VmlldywKKyAgICAgICAgICAgIGZpbmFsIERyYXdhYmxlIHN0YXJ0LCBmaW5hbCBEcmF3YWJsZSB0b3AsIGZpbmFsIERyYXdhYmxlIGVuZCwgZmluYWwgRHJhd2FibGUgYm90dG9tKSB7CisgICAgICAgIGlmIChNRVRIT0Rfc2V0Q29tcG91bmREcmF3YWJsZXNSZWxhdGl2ZVdpdGhJbnRyaW5zaWNCb3VuZHMgPT0gbnVsbCkgeworICAgICAgICAgICAgdGV4dFZpZXcuc2V0Q29tcG91bmREcmF3YWJsZXNXaXRoSW50cmluc2ljQm91bmRzKHN0YXJ0LCB0b3AsIGVuZCwgYm90dG9tKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBDb21wYXRVdGlscy5pbnZva2UodGV4dFZpZXcsIG51bGwsIE1FVEhPRF9zZXRDb21wb3VuZERyYXdhYmxlc1JlbGF0aXZlLAorICAgICAgICBDb21wYXRVdGlscy5pbnZva2UodGV4dFZpZXcsIG51bGwsIE1FVEhPRF9zZXRDb21wb3VuZERyYXdhYmxlc1JlbGF0aXZlV2l0aEludHJpbnNpY0JvdW5kcywKICAgICAgICAgICAgICAgICBzdGFydCwgdG9wLCBlbmQsIGJvdHRvbSk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvY29tcGF0L1VzZXJEaWN0aW9uYXJ5Q29tcGF0VXRpbHMuamF2YSBiL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2NvbXBhdC9Vc2VyRGljdGlvbmFyeUNvbXBhdFV0aWxzLmphdmEKaW5kZXggZmY2NTYxYy4uYTBkNzY0MSAxMDA2NDQKLS0tIGEvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvY29tcGF0L1VzZXJEaWN0aW9uYXJ5Q29tcGF0VXRpbHMuamF2YQorKysgYi9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9jb21wYXQvVXNlckRpY3Rpb25hcnlDb21wYXRVdGlscy5qYXZhCkBAIC0yOCw2ICsyOCw3IEBACiAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgTWV0aG9kIE1FVEhPRF9hZGRXb3JkID0gQ29tcGF0VXRpbHMuZ2V0TWV0aG9kKFdvcmRzLmNsYXNzLCAiYWRkV29yZCIsCiAgICAgICAgICAgICBDb250ZXh0LmNsYXNzLCBTdHJpbmcuY2xhc3MsIEludGVnZXIuVFlQRSwgU3RyaW5nLmNsYXNzLCBMb2NhbGUuY2xhc3MpOwogCisgICAgQFN1cHByZXNzV2FybmluZ3MoImRlcHJlY2F0aW9uIikKICAgICBwdWJsaWMgc3RhdGljIHZvaWQgYWRkV29yZChmaW5hbCBDb250ZXh0IGNvbnRleHQsIGZpbmFsIFN0cmluZyB3b3JkLCBmaW5hbCBpbnQgZnJlcSwKICAgICAgICAgICAgIGZpbmFsIFN0cmluZyBzaG9ydGN1dCwgZmluYWwgTG9jYWxlIGxvY2FsZSkgewogICAgICAgICBpZiAoaGFzTmV3ZXJBZGRXb3JkKCkpIHsKQEAgLTM5LDEzICs0MCwxOCBAQAogICAgICAgICAgICAgaWYgKG51bGwgPT0gbG9jYWxlKSB7CiAgICAgICAgICAgICAgICAgbG9jYWxlVHlwZSA9IFdvcmRzLkxPQ0FMRV9UWVBFX0FMTDsKICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgbG9jYWxlVHlwZSA9IFdvcmRzLkxPQ0FMRV9UWVBFX0NVUlJFTlQ7CisgICAgICAgICAgICAgICAgZmluYWwgTG9jYWxlIGN1cnJlbnRMb2NhbGUgPSBjb250ZXh0LmdldFJlc291cmNlcygpLmdldENvbmZpZ3VyYXRpb24oKS5sb2NhbGU7CisgICAgICAgICAgICAgICAgaWYgKGxvY2FsZS5lcXVhbHMoY3VycmVudExvY2FsZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgbG9jYWxlVHlwZSA9IFdvcmRzLkxPQ0FMRV9UWVBFX0NVUlJFTlQ7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgbG9jYWxlVHlwZSA9IFdvcmRzLkxPQ0FMRV9UWVBFX0FMTDsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBXb3Jkcy5hZGRXb3JkKGNvbnRleHQsIHdvcmQsIGZyZXEsIGxvY2FsZVR5cGUpOwogICAgICAgICB9CiAgICAgfQogCi0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgYm9vbGVhbiBoYXNOZXdlckFkZFdvcmQoKSB7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBib29sZWFuIGhhc05ld2VyQWRkV29yZCgpIHsKICAgICAgICAgcmV0dXJuIG51bGwgIT0gTUVUSE9EX2FkZFdvcmQ7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvZGljdGlvbmFyeXBhY2svQWN0aW9uQmF0Y2guamF2YSBiL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2RpY3Rpb25hcnlwYWNrL0FjdGlvbkJhdGNoLmphdmEKaW5kZXggZGY0YTUyZi4uYmYyMjMwNSAxMDA2NDQKLS0tIGEvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvZGljdGlvbmFyeXBhY2svQWN0aW9uQmF0Y2guamF2YQorKysgYi9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9kaWN0aW9uYXJ5cGFjay9BY3Rpb25CYXRjaC5qYXZhCkBAIC0xMzgsNyArMTM4LDEyIEBACiAgICAgICAgICAgICBpZiAobnVsbCA9PSBtYW5hZ2VyKSByZXR1cm47CiAKICAgICAgICAgICAgIC8vIFRoaXMgaXMgYW4gdXBncmFkZWQgd29yZCBsaXN0OiB3ZSBzaG91bGQgZG93bmxvYWQgaXQuCi0gICAgICAgICAgICBmaW5hbCBVcmkgdXJpID0gVXJpLnBhcnNlKG1Xb3JkTGlzdC5tUmVtb3RlRmlsZW5hbWUpOworICAgICAgICAgICAgLy8gQWRkaW5nIGEgZGlzYW1iaWd1YXRvciB0byBjaXJjdW12ZW50IGEgYnVnIGluIG9sZGVyIHZlcnNpb25zIG9mIERvd25sb2FkTWFuYWdlci4KKyAgICAgICAgICAgIC8vIERvd25sb2FkTWFuYWdlciBhbHNvIHN0dXBpZGx5IGN1dHMgdGhlIGV4dGVuc2lvbiB0byByZXBsYWNlIHdpdGggaXRzIG93biB0aGF0IGl0CisgICAgICAgICAgICAvLyBnZXRzIGZyb20gdGhlIGNvbnRlbnQtdHlwZS4gV2UgbmVlZCB0byBjaXJjdW12ZW50IHRoaXMuCisgICAgICAgICAgICBmaW5hbCBTdHJpbmcgZGlzYW1iaWd1YXRvciA9ICIjIiArIFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpCisgICAgICAgICAgICAgICAgICAgICsgY29tLmFuZHJvaWQuaW5wdXRtZXRob2QubGF0aW4uVXRpbHMuZ2V0VmVyc2lvbk5hbWUoY29udGV4dCkgKyAiLmRpY3QiOworICAgICAgICAgICAgZmluYWwgVXJpIHVyaSA9IFVyaS5wYXJzZShtV29yZExpc3QubVJlbW90ZUZpbGVuYW1lICsgZGlzYW1iaWd1YXRvcik7CiAgICAgICAgICAgICBmaW5hbCBSZXF1ZXN0IHJlcXVlc3QgPSBuZXcgUmVxdWVzdCh1cmkpOwogCiAgICAgICAgICAgICBmaW5hbCBSZXNvdXJjZXMgcmVzID0gY29udGV4dC5nZXRSZXNvdXJjZXMoKTsKQEAgLTE3NCw3ICsxNzksNyBAQAogICAgICAgICAgICAgZmluYWwgbG9uZyBkb3dubG9hZElkID0gVXBkYXRlSGFuZGxlci5yZWdpc3RlckRvd25sb2FkUmVxdWVzdChtYW5hZ2VyLCByZXF1ZXN0LCBkYiwKICAgICAgICAgICAgICAgICAgICAgbVdvcmRMaXN0Lm1JZCwgbVdvcmRMaXN0Lm1WZXJzaW9uKTsKICAgICAgICAgICAgIFV0aWxzLmwoIlN0YXJ0aW5nIGRvd25sb2FkIG9mIiwgdXJpLCAid2l0aCBpZCIsIGRvd25sb2FkSWQpOwotICAgICAgICAgICAgUHJpdmF0ZUxvZy5sb2coIlN0YXJ0aW5nIGRvd25sb2FkIG9mICIgKyB1cmkgKyAiLCBpZCA6ICIgKyBkb3dubG9hZElkLCBjb250ZXh0KTsKKyAgICAgICAgICAgIFByaXZhdGVMb2cubG9nKCJTdGFydGluZyBkb3dubG9hZCBvZiAiICsgdXJpICsgIiwgaWQgOiAiICsgZG93bmxvYWRJZCk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTMzMyw3ICszMzgsNyBAQAogICAgICAgICAgICAgICAgICAgICBtV29yZExpc3QubVJlbW90ZUZpbGVuYW1lLCBtV29yZExpc3QubUxhc3RVcGRhdGUsIG1Xb3JkTGlzdC5tQ2hlY2tzdW0sCiAgICAgICAgICAgICAgICAgICAgIG1Xb3JkTGlzdC5tRmlsZVNpemUsIG1Xb3JkTGlzdC5tVmVyc2lvbiwgbVdvcmRMaXN0Lm1Gb3JtYXRWZXJzaW9uKTsKICAgICAgICAgICAgIFByaXZhdGVMb2cubG9nKCJJbnNlcnQgJ2F2YWlsYWJsZScgcmVjb3JkIGZvciAiICsgbVdvcmRMaXN0Lm1EZXNjcmlwdGlvbgotICAgICAgICAgICAgICAgICAgICArICIgYW5kIGxvY2FsZSAiICsgbVdvcmRMaXN0Lm1Mb2NhbGUsIGNvbnRleHQpOworICAgICAgICAgICAgICAgICAgICArICIgYW5kIGxvY2FsZSAiICsgbVdvcmRMaXN0Lm1Mb2NhbGUpOwogICAgICAgICAgICAgZGIuaW5zZXJ0KE1ldGFkYXRhRGJIZWxwZXIuTUVUQURBVEFfVEFCTEVfTkFNRSwgbnVsbCwgdmFsdWVzKTsKICAgICAgICAgfQogICAgIH0KQEAgLTM4Myw3ICszODgsNyBAQAogICAgICAgICAgICAgICAgICAgICBtV29yZExpc3QubUNoZWNrc3VtLCBtV29yZExpc3QubUZpbGVTaXplLCBtV29yZExpc3QubVZlcnNpb24sCiAgICAgICAgICAgICAgICAgICAgIG1Xb3JkTGlzdC5tRm9ybWF0VmVyc2lvbik7CiAgICAgICAgICAgICBQcml2YXRlTG9nLmxvZygiSW5zZXJ0ICdwcmVpbnN0YWxsZWQnIHJlY29yZCBmb3IgIiArIG1Xb3JkTGlzdC5tRGVzY3JpcHRpb24KLSAgICAgICAgICAgICAgICAgICAgKyAiIGFuZCBsb2NhbGUgIiArIG1Xb3JkTGlzdC5tTG9jYWxlLCBjb250ZXh0KTsKKyAgICAgICAgICAgICAgICAgICAgKyAiIGFuZCBsb2NhbGUgIiArIG1Xb3JkTGlzdC5tTG9jYWxlKTsKICAgICAgICAgICAgIGRiLmluc2VydChNZXRhZGF0YURiSGVscGVyLk1FVEFEQVRBX1RBQkxFX05BTUUsIG51bGwsIHZhbHVlcyk7CiAgICAgICAgIH0KICAgICB9CkBAIC00MjQsNyArNDI5LDcgQEAKICAgICAgICAgICAgICAgICAgICAgbVdvcmRMaXN0Lm1SZW1vdGVGaWxlbmFtZSwgbVdvcmRMaXN0Lm1MYXN0VXBkYXRlLCBtV29yZExpc3QubUNoZWNrc3VtLAogICAgICAgICAgICAgICAgICAgICBtV29yZExpc3QubUZpbGVTaXplLCBtV29yZExpc3QubVZlcnNpb24sIG1Xb3JkTGlzdC5tRm9ybWF0VmVyc2lvbik7CiAgICAgICAgICAgICBQcml2YXRlTG9nLmxvZygiVXBkYXRpbmcgcmVjb3JkIGZvciAiICsgbVdvcmRMaXN0Lm1EZXNjcmlwdGlvbgotICAgICAgICAgICAgICAgICAgICArICIgYW5kIGxvY2FsZSAiICsgbVdvcmRMaXN0Lm1Mb2NhbGUsIGNvbnRleHQpOworICAgICAgICAgICAgICAgICAgICArICIgYW5kIGxvY2FsZSAiICsgbVdvcmRMaXN0Lm1Mb2NhbGUpOwogICAgICAgICAgICAgZGIudXBkYXRlKE1ldGFkYXRhRGJIZWxwZXIuTUVUQURBVEFfVEFCTEVfTkFNRSwgdmFsdWVzLAogICAgICAgICAgICAgICAgICAgICBNZXRhZGF0YURiSGVscGVyLldPUkRMSVNUSURfQ09MVU1OICsgIiA9ID8gQU5EICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIE1ldGFkYXRhRGJIZWxwZXIuVkVSU0lPTl9DT0xVTU4gKyAiID0gPyIsCkBAIC00NzgsMTMgKzQ4MywxNCBAQAogICAgICAgICAgICAgaWYgKE1ldGFkYXRhRGJIZWxwZXIuU1RBVFVTX0lOU1RBTExFRCA9PSBzdGF0dXMKICAgICAgICAgICAgICAgICAgICAgfHwgTWV0YWRhdGFEYkhlbHBlci5TVEFUVVNfRElTQUJMRUQgPT0gc3RhdHVzCiAgICAgICAgICAgICAgICAgICAgIHx8IE1ldGFkYXRhRGJIZWxwZXIuU1RBVFVTX0RFTEVUSU5HID09IHN0YXR1cykgewotICAgICAgICAgICAgICAgIC8vIElmIGl0IGlzIGluc3RhbGxlZCBvciBkaXNhYmxlZCwgdGhlbiB3ZSBjYW5ub3QgcmVtb3ZlIHRoZSBlbnRyeSBsZXN0IHRoZSB1c2VyCi0gICAgICAgICAgICAgICAgLy8gbG9zZSB0aGUgYWJpbGl0eSB0byBkZWxldGUgdGhlIGZpbGUgb3Igb3RoZXJ3aXNlIGFkbWluaXN0cmF0ZSBpdC4gV2Ugd2lsbCB0aHVzCi0gICAgICAgICAgICAgICAgLy8gbGVhdmUgaXQgYXMgaXMsIGJ1dCByZW1vdmUgdGhlIFVSSSBmcm9tIHRoZSBkYXRhYmFzZSBzaW5jZSBpdCBpcyBub3Qgc3VwcG9zZWQgdG8KLSAgICAgICAgICAgICAgICAvLyBiZSBhY2Nlc3NpYmxlIGFueSBtb3JlLgorICAgICAgICAgICAgICAgIC8vIElmIGl0IGlzIGluc3RhbGxlZCBvciBkaXNhYmxlZCwgd2UgbmVlZCB0byBtYXJrIGl0IGFzIGRlbGV0ZWQgc28gdGhhdCBMYXRpbklNRQorICAgICAgICAgICAgICAgIC8vIHdpbGwgcmVtb3ZlIGl0IG5leHQgdGltZSBpdCBlbnF1aXJlcyBmb3IgZGljdGlvbmFyaWVzLgogICAgICAgICAgICAgICAgIC8vIElmIGl0IGlzIGRlbGV0aW5nIGFuZCB3ZSBkb24ndCBoYXZlIGEgbmV3IHZlcnNpb24sIHRoZW4gd2UgaGF2ZSB0byB3YWl0IHVudGlsCi0gICAgICAgICAgICAgICAgLy8gQW5kcm9pZCBLZXlib2FyZCBhY3R1YWxseSBoYXMgZGVsZXRlZCBpdCBiZWZvcmUgd2UgY2FuIHJlbW92ZSBpdHMgbWV0YWRhdGEuCisgICAgICAgICAgICAgICAgLy8gTGF0aW5JTUUgYWN0dWFsbHkgaGFzIGRlbGV0ZWQgaXQgYmVmb3JlIHdlIGNhbiByZW1vdmUgaXRzIG1ldGFkYXRhLgorICAgICAgICAgICAgICAgIC8vIEluIGJvdGggY2FzZXMsIHJlbW92ZSB0aGUgVVJJIGZyb20gdGhlIGRhdGFiYXNlIHNpbmNlIGl0IGlzIG5vdCBzdXBwb3NlZCB0bworICAgICAgICAgICAgICAgIC8vIGJlIGFjY2Vzc2libGUgYW55IG1vcmUuCiAgICAgICAgICAgICAgICAgdmFsdWVzLnB1dChNZXRhZGF0YURiSGVscGVyLlJFTU9URV9GSUxFTkFNRV9DT0xVTU4sICIiKTsKKyAgICAgICAgICAgICAgICB2YWx1ZXMucHV0KE1ldGFkYXRhRGJIZWxwZXIuU1RBVFVTX0NPTFVNTiwgTWV0YWRhdGFEYkhlbHBlci5TVEFUVVNfREVMRVRJTkcpOwogICAgICAgICAgICAgICAgIGRiLnVwZGF0ZShNZXRhZGF0YURiSGVscGVyLk1FVEFEQVRBX1RBQkxFX05BTUUsIHZhbHVlcywKICAgICAgICAgICAgICAgICAgICAgICAgIE1ldGFkYXRhRGJIZWxwZXIuV09SRExJU1RJRF9DT0xVTU4gKyAiID0gPyBBTkQgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIE1ldGFkYXRhRGJIZWxwZXIuVkVSU0lPTl9DT0xVTU4gKyAiID0gPyIsCmRpZmYgLS1naXQgYS9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9kaWN0aW9uYXJ5cGFjay9CdXR0b25Td2l0Y2hlci5qYXZhIGIvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvZGljdGlvbmFyeXBhY2svQnV0dG9uU3dpdGNoZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YWI5NGE0Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvZGljdGlvbmFyeXBhY2svQnV0dG9uU3dpdGNoZXIuamF2YQpAQCAtMCwwICsxLDE1NSBAQAorLyoqCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdAorICogdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkKKyAqIG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywgV0lUSE9VVAorICogV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiBTZWUgdGhlCisgKiBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworcGFja2FnZSBjb20uYW5kcm9pZC5pbnB1dG1ldGhvZC5kaWN0aW9uYXJ5cGFjazsKKworaW1wb3J0IGFuZHJvaWQuYW5pbWF0aW9uLkFuaW1hdG9yOworaW1wb3J0IGFuZHJvaWQuYW5pbWF0aW9uLkFuaW1hdG9yTGlzdGVuZXJBZGFwdGVyOworaW1wb3J0IGFuZHJvaWQuY29udGVudC5Db250ZXh0OworaW1wb3J0IGFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQ7CitpbXBvcnQgYW5kcm9pZC52aWV3LlZpZXc7CitpbXBvcnQgYW5kcm9pZC52aWV3LlZpZXdQcm9wZXJ0eUFuaW1hdG9yOworaW1wb3J0IGFuZHJvaWQud2lkZ2V0LkJ1dHRvbjsKK2ltcG9ydCBhbmRyb2lkLndpZGdldC5GcmFtZUxheW91dDsKKworaW1wb3J0IGNvbS5hbmRyb2lkLmlucHV0bWV0aG9kLmxhdGluLlI7CisKKy8qKgorICogQSB2aWV3IHRoYXQgaGFuZGxlcyBidXR0b25zIGluc2lkZSBpdCBhY2NvcmRpbmcgdG8gYSBzdGF0dXMuCisgKi8KK3B1YmxpYyBjbGFzcyBCdXR0b25Td2l0Y2hlciBleHRlbmRzIEZyYW1lTGF5b3V0IHsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBOT1RfSU5JVElBTElaRUQgPSAtMTsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBTVEFUVVNfTk9fQlVUVE9OID0gMDsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBTVEFUVVNfSU5TVEFMTCA9IDE7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgU1RBVFVTX0NBTkNFTCA9IDI7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgU1RBVFVTX0RFTEVURSA9IDM7CisgICAgLy8gT25lIG9mIHRoZSBhYm92ZQorICAgIHByaXZhdGUgaW50IG1TdGF0dXMgPSBOT1RfSU5JVElBTElaRUQ7CisgICAgcHJpdmF0ZSBpbnQgbUFuaW1hdGVUb1N0YXR1cyA9IE5PVF9JTklUSUFMSVpFRDsKKworICAgIC8vIEFuaW1hdGlvbiBkaXJlY3Rpb25zCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQU5JTUFUSU9OX0lOID0gMTsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBBTklNQVRJT05fT1VUID0gMjsKKworICAgIHByaXZhdGUgQnV0dG9uIG1JbnN0YWxsQnV0dG9uOworICAgIHByaXZhdGUgQnV0dG9uIG1DYW5jZWxCdXR0b247CisgICAgcHJpdmF0ZSBCdXR0b24gbURlbGV0ZUJ1dHRvbjsKKyAgICBwcml2YXRlIE9uQ2xpY2tMaXN0ZW5lciBtT25DbGlja0xpc3RlbmVyOworCisgICAgcHVibGljIEJ1dHRvblN3aXRjaGVyKENvbnRleHQgY29udGV4dCwgQXR0cmlidXRlU2V0IGF0dHJzKSB7CisgICAgICAgIHN1cGVyKGNvbnRleHQsIGF0dHJzKTsKKyAgICB9CisKKyAgICBwdWJsaWMgQnV0dG9uU3dpdGNoZXIoQ29udGV4dCBjb250ZXh0LCBBdHRyaWJ1dGVTZXQgYXR0cnMsIGludCBkZWZTdHlsZSkgeworICAgICAgICBzdXBlcihjb250ZXh0LCBhdHRycywgZGVmU3R5bGUpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHByb3RlY3RlZCB2b2lkIG9uTGF5b3V0KGZpbmFsIGJvb2xlYW4gY2hhbmdlZCwgZmluYWwgaW50IGxlZnQsIGZpbmFsIGludCB0b3AsIGZpbmFsIGludCByaWdodCwKKyAgICAgICAgICAgIGZpbmFsIGludCBib3R0b20pIHsKKyAgICAgICAgc3VwZXIub25MYXlvdXQoY2hhbmdlZCwgbGVmdCwgdG9wLCByaWdodCwgYm90dG9tKTsKKyAgICAgICAgbUluc3RhbGxCdXR0b24gPSAoQnV0dG9uKWZpbmRWaWV3QnlJZChSLmlkLmRpY3RfaW5zdGFsbF9idXR0b24pOworICAgICAgICBtQ2FuY2VsQnV0dG9uID0gKEJ1dHRvbilmaW5kVmlld0J5SWQoUi5pZC5kaWN0X2NhbmNlbF9idXR0b24pOworICAgICAgICBtRGVsZXRlQnV0dG9uID0gKEJ1dHRvbilmaW5kVmlld0J5SWQoUi5pZC5kaWN0X2RlbGV0ZV9idXR0b24pOworICAgICAgICBtSW5zdGFsbEJ1dHRvbi5zZXRPbkNsaWNrTGlzdGVuZXIobU9uQ2xpY2tMaXN0ZW5lcik7CisgICAgICAgIG1DYW5jZWxCdXR0b24uc2V0T25DbGlja0xpc3RlbmVyKG1PbkNsaWNrTGlzdGVuZXIpOworICAgICAgICBtRGVsZXRlQnV0dG9uLnNldE9uQ2xpY2tMaXN0ZW5lcihtT25DbGlja0xpc3RlbmVyKTsKKyAgICAgICAgc2V0QnV0dG9uUG9zaXRpb25XaXRob3V0QW5pbWF0aW9uKG1TdGF0dXMpOworICAgICAgICBpZiAobUFuaW1hdGVUb1N0YXR1cyAhPSBOT1RfSU5JVElBTElaRUQpIHsKKyAgICAgICAgICAgIC8vIFdlIGhhdmUgYmVlbiBhc2tlZCB0byBhbmltYXRlIGJlZm9yZSB3ZSB3ZXJlIHJlYWR5LCBzbyB3ZSB0b29rIGEgbm90ZSBvZiBpdC4KKyAgICAgICAgICAgIC8vIFdlIGFyZSBub3cgcmVhZHk6IGxhdW5jaCB0aGUgYW5pbWF0aW9uLgorICAgICAgICAgICAgYW5pbWF0ZUJ1dHRvblBvc2l0aW9uKG1TdGF0dXMsIG1BbmltYXRlVG9TdGF0dXMpOworICAgICAgICAgICAgbVN0YXR1cyA9IG1BbmltYXRlVG9TdGF0dXM7CisgICAgICAgICAgICBtQW5pbWF0ZVRvU3RhdHVzID0gTk9UX0lOSVRJQUxJWkVEOworICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSBCdXR0b24gZ2V0QnV0dG9uKGZpbmFsIGludCBzdGF0dXMpIHsKKyAgICAgICAgc3dpdGNoKHN0YXR1cykgeworICAgICAgICBjYXNlIFNUQVRVU19JTlNUQUxMOgorICAgICAgICAgICAgcmV0dXJuIG1JbnN0YWxsQnV0dG9uOworICAgICAgICBjYXNlIFNUQVRVU19DQU5DRUw6CisgICAgICAgICAgICByZXR1cm4gbUNhbmNlbEJ1dHRvbjsKKyAgICAgICAgY2FzZSBTVEFUVVNfREVMRVRFOgorICAgICAgICAgICAgcmV0dXJuIG1EZWxldGVCdXR0b247CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldFN0YXR1c0FuZFVwZGF0ZVZpc3VhbHMoZmluYWwgaW50IHN0YXR1cykgeworICAgICAgICBpZiAobVN0YXR1cyA9PSBOT1RfSU5JVElBTElaRUQpIHsKKyAgICAgICAgICAgIHNldEJ1dHRvblBvc2l0aW9uV2l0aG91dEFuaW1hdGlvbihzdGF0dXMpOworICAgICAgICAgICAgbVN0YXR1cyA9IHN0YXR1czsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmIChudWxsID09IG1JbnN0YWxsQnV0dG9uKSB7CisgICAgICAgICAgICAgICAgLy8gV2UgbWF5IGNvbWUgaGVyZSBiZWZvcmUgd2UgaGF2ZSBiZWVuIGxheW91dC4gSW4gdGhpcyBjYXNlIHdlIGRvbid0IGtub3cgb3VyCisgICAgICAgICAgICAgICAgLy8gc2l6ZSB5ZXQgc28gd2UgY2FuJ3Qgc3RhcnQgYW5pbWF0aW9ucyBzbyB3ZSBuZWVkIHRvIHJlbWVtYmVyIHdoYXQgYW5pbWF0aW9uIHRvCisgICAgICAgICAgICAgICAgLy8gc3RhcnQgb25jZSBsYXlvdXQgaGFzIGdvbmUgdGhyb3VnaC4KKyAgICAgICAgICAgICAgICBtQW5pbWF0ZVRvU3RhdHVzID0gc3RhdHVzOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBhbmltYXRlQnV0dG9uUG9zaXRpb24obVN0YXR1cywgc3RhdHVzKTsKKyAgICAgICAgICAgICAgICBtU3RhdHVzID0gc3RhdHVzOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIHNldEJ1dHRvblBvc2l0aW9uV2l0aG91dEFuaW1hdGlvbihmaW5hbCBpbnQgc3RhdHVzKSB7CisgICAgICAgIC8vIFRoaXMgbWF5IGJlIGNhbGxlZCBieSBzZXRTdGF0dXMoKSBiZWZvcmUgdGhlIGxheW91dCBoYXMgY29tZSB5ZXQuCisgICAgICAgIGlmIChudWxsID09IG1JbnN0YWxsQnV0dG9uKSByZXR1cm47CisgICAgICAgIGZpbmFsIGludCB3aWR0aCA9IGdldFdpZHRoKCk7CisgICAgICAgIC8vIFNldCB0byBvdXQgb2YgdGhlIHNjcmVlbiBpZiB0aGF0J3Mgbm90IHRoZSBjdXJyZW50bHkgZGlzcGxheWVkIHN0YXR1cworICAgICAgICBtSW5zdGFsbEJ1dHRvbi5zZXRUcmFuc2xhdGlvblgoU1RBVFVTX0lOU1RBTEwgPT0gc3RhdHVzID8gMCA6IHdpZHRoKTsKKyAgICAgICAgbUNhbmNlbEJ1dHRvbi5zZXRUcmFuc2xhdGlvblgoU1RBVFVTX0NBTkNFTCA9PSBzdGF0dXMgPyAwIDogd2lkdGgpOworICAgICAgICBtRGVsZXRlQnV0dG9uLnNldFRyYW5zbGF0aW9uWChTVEFUVVNfREVMRVRFID09IHN0YXR1cyA/IDAgOiB3aWR0aCk7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIGFuaW1hdGVCdXR0b25Qb3NpdGlvbihmaW5hbCBpbnQgb2xkU3RhdHVzLCBmaW5hbCBpbnQgbmV3U3RhdHVzKSB7CisgICAgICAgIGZpbmFsIFZpZXcgb2xkQnV0dG9uID0gZ2V0QnV0dG9uKG9sZFN0YXR1cyk7CisgICAgICAgIGZpbmFsIFZpZXcgbmV3QnV0dG9uID0gZ2V0QnV0dG9uKG5ld1N0YXR1cyk7CisgICAgICAgIGlmIChudWxsICE9IG9sZEJ1dHRvbiAmJiBudWxsICE9IG5ld0J1dHRvbikgeworICAgICAgICAgICAgLy8gVHJhbnNpdGlvbiBiZXR3ZWVuIHR3byBidXR0b25zIDogYW5pbWF0ZSBvdXQsIHRoZW4gaW4KKyAgICAgICAgICAgIGFuaW1hdGVCdXR0b24ob2xkQnV0dG9uLCBBTklNQVRJT05fT1VUKS5zZXRMaXN0ZW5lcigKKyAgICAgICAgICAgICAgICAgICAgbmV3IEFuaW1hdG9yTGlzdGVuZXJBZGFwdGVyKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgQE92ZXJyaWRlCisgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgdm9pZCBvbkFuaW1hdGlvbkVuZChmaW5hbCBBbmltYXRvciBhbmltYXRpb24pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobmV3U3RhdHVzICE9IG1TdGF0dXMpIHJldHVybjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmltYXRlQnV0dG9uKG5ld0J1dHRvbiwgQU5JTUFUSU9OX0lOKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgIH0gZWxzZSBpZiAobnVsbCAhPSBvbGRCdXR0b24pIHsKKyAgICAgICAgICAgIGFuaW1hdGVCdXR0b24ob2xkQnV0dG9uLCBBTklNQVRJT05fT1VUKTsKKyAgICAgICAgfSBlbHNlIGlmIChudWxsICE9IG5ld0J1dHRvbikgeworICAgICAgICAgICAgYW5pbWF0ZUJ1dHRvbihuZXdCdXR0b24sIEFOSU1BVElPTl9JTik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRJbnRlcm5hbE9uQ2xpY2tMaXN0ZW5lcihmaW5hbCBPbkNsaWNrTGlzdGVuZXIgbGlzdGVuZXIpIHsKKyAgICAgICAgbU9uQ2xpY2tMaXN0ZW5lciA9IGxpc3RlbmVyOworICAgIH0KKworICAgIHByaXZhdGUgVmlld1Byb3BlcnR5QW5pbWF0b3IgYW5pbWF0ZUJ1dHRvbihmaW5hbCBWaWV3IGJ1dHRvbiwgZmluYWwgaW50IGRpcmVjdGlvbikgeworICAgICAgICBmaW5hbCBmbG9hdCBvdXRlclggPSBnZXRXaWR0aCgpOworICAgICAgICBmaW5hbCBmbG9hdCBpbm5lclggPSBidXR0b24uZ2V0WCgpIC0gYnV0dG9uLmdldFRyYW5zbGF0aW9uWCgpOworICAgICAgICBpZiAoQU5JTUFUSU9OX0lOID09IGRpcmVjdGlvbikgeworICAgICAgICAgICAgYnV0dG9uLnNldENsaWNrYWJsZSh0cnVlKTsKKyAgICAgICAgICAgIHJldHVybiBidXR0b24uYW5pbWF0ZSgpLnRyYW5zbGF0aW9uWCgwKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGJ1dHRvbi5zZXRDbGlja2FibGUoZmFsc2UpOworICAgICAgICAgICAgcmV0dXJuIGJ1dHRvbi5hbmltYXRlKCkudHJhbnNsYXRpb25YKG91dGVyWCAtIGlubmVyWCk7CisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9kaWN0aW9uYXJ5cGFjay9EaWN0aW9uYXJ5RG93bmxvYWRQcm9ncmVzc0Jhci5qYXZhIGIvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvZGljdGlvbmFyeXBhY2svRGljdGlvbmFyeURvd25sb2FkUHJvZ3Jlc3NCYXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zOWNmYjYwCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvZGljdGlvbmFyeXBhY2svRGljdGlvbmFyeURvd25sb2FkUHJvZ3Jlc3NCYXIuamF2YQpAQCAtMCwwICsxLDMxIEBACisvKioKKyAqIENvcHlyaWdodCAoQykgMjAxMyBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7IHlvdSBtYXkgbm90CisgKiB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weQorICogb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUCisgKiBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuIFNlZSB0aGUKKyAqIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCitwYWNrYWdlIGNvbS5hbmRyb2lkLmlucHV0bWV0aG9kLmRpY3Rpb25hcnlwYWNrOworCitpbXBvcnQgYW5kcm9pZC5jb250ZW50LkNvbnRleHQ7CitpbXBvcnQgYW5kcm9pZC51dGlsLkF0dHJpYnV0ZVNldDsKK2ltcG9ydCBhbmRyb2lkLndpZGdldC5Qcm9ncmVzc0JhcjsKKworcHVibGljIGNsYXNzIERpY3Rpb25hcnlEb3dubG9hZFByb2dyZXNzQmFyIGV4dGVuZHMgUHJvZ3Jlc3NCYXIgeworICAgIHB1YmxpYyBEaWN0aW9uYXJ5RG93bmxvYWRQcm9ncmVzc0JhcihmaW5hbCBDb250ZXh0IGNvbnRleHQpIHsKKyAgICAgICAgc3VwZXIoY29udGV4dCk7CisgICAgfQorCisgICAgcHVibGljIERpY3Rpb25hcnlEb3dubG9hZFByb2dyZXNzQmFyKGZpbmFsIENvbnRleHQgY29udGV4dCwgZmluYWwgQXR0cmlidXRlU2V0IGF0dHJzKSB7CisgICAgICAgIHN1cGVyKGNvbnRleHQsIGF0dHJzKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9kaWN0aW9uYXJ5cGFjay9EaWN0aW9uYXJ5TGlzdEludGVyZmFjZVN0YXRlLmphdmEgYi9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9kaWN0aW9uYXJ5cGFjay9EaWN0aW9uYXJ5TGlzdEludGVyZmFjZVN0YXRlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGUzNzExYwotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2RpY3Rpb25hcnlwYWNrL0RpY3Rpb25hcnlMaXN0SW50ZXJmYWNlU3RhdGUuamF2YQpAQCAtMCwwICsxLDY3IEBACisvKioKKyAqIENvcHlyaWdodCAoQykgMjAxMyBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7IHlvdSBtYXkgbm90CisgKiB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weQorICogb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUCisgKiBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuIFNlZSB0aGUKKyAqIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCitwYWNrYWdlIGNvbS5hbmRyb2lkLmlucHV0bWV0aG9kLmRpY3Rpb25hcnlwYWNrOworCitpbXBvcnQgY29tLmFuZHJvaWQuaW5wdXRtZXRob2QubGF0aW4uQ29sbGVjdGlvblV0aWxzOworCitpbXBvcnQgamF2YS51dGlsLkhhc2hNYXA7CisKKy8qKgorICogSGVscGVyIGNsYXNzIHRvIG1haW50YWluIHRoZSBpbnRlcmZhY2Ugc3RhdGUgb2Ygd29yZCBsaXN0IHByZWZlcmVuY2VzLgorICoKKyAqIFRoaXMgaXMgbmVjZXNzYXJ5IGJlY2F1c2UgdGhlIHZpZXdzIGFyZSBjcmVhdGVkIG9uLWRlbWFuZCBieSBjYWxsaW5nIGNvZGUuIFRoZXJlIGFyZSBtYW55CisgKiBzaXR1YXRpb25zIHdoZXJlIHZpZXdzIGFyZSByZW5ld2VkIHdpdGggbGl0dGxlIHJlbGF0aW9uIHdpdGggdXNlciBpbnRlcmFjdGlvbi4gRm9yIGV4YW1wbGUsCisgKiB3aGVuIHNjcm9sbGluZywgdGhlIHZpZXcgaXMgcmV1c2VkIHNvIGl0IGRvZXNuJ3Qga2VlcCBpdHMgc3RhdGUsIHdoaWNoIG1lYW5zIHdlIG5lZWQgdG8ga2VlcAorICogaXQgc2VwYXJhdGVseS4gQWxzbyB3aGVuZXZlciB0aGUgdW5kZXJseWluZyBkaWN0aW9uYXJ5IGxpc3QgdW5kZXJnb2VzIGEgY2hhbmdlIChmb3IgZXhhbXBsZSwKKyAqIHVwZGF0ZSB0aGUgbWV0YWRhdGEsIG9yIGZpbmlzaCBkb3dubG9hZGluZykgdGhlIHdob2xlIGxpc3QgaGFzIHRvIGJlIHRocm93biBvdXQgYW5kIHJlY3JlYXRlZAorICogaW4gY2FzZSBzb21lIGRpY3Rpb25hcmllcyBhcHBlYXJlZCwgZGlzYXBwZWFyZWQsIGNoYW5nZWQgc3RhdGVzIGV0Yy4KKyAqLworcHVibGljIGNsYXNzIERpY3Rpb25hcnlMaXN0SW50ZXJmYWNlU3RhdGUgeworICAgIHByaXZhdGUgc3RhdGljIGNsYXNzIFN0YXRlIHsKKyAgICAgICAgcHVibGljIGJvb2xlYW4gbU9wZW4gPSBmYWxzZTsKKyAgICAgICAgcHVibGljIGludCBtU3RhdHVzID0gTWV0YWRhdGFEYkhlbHBlci5TVEFUVVNfVU5LTk9XTjsKKyAgICB9CisKKyAgICBwcml2YXRlIEhhc2hNYXA8U3RyaW5nLCBTdGF0ZT4gbVdvcmRsaXN0VG9TdGF0ZSA9IENvbGxlY3Rpb25VdGlscy5uZXdIYXNoTWFwKCk7CisKKyAgICBwdWJsaWMgYm9vbGVhbiBpc09wZW4oZmluYWwgU3RyaW5nIHdvcmRsaXN0SWQpIHsKKyAgICAgICAgZmluYWwgU3RhdGUgc3RhdGUgPSBtV29yZGxpc3RUb1N0YXRlLmdldCh3b3JkbGlzdElkKTsKKyAgICAgICAgaWYgKG51bGwgPT0gc3RhdGUpIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHN0YXRlLm1PcGVuOworICAgIH0KKworICAgIHB1YmxpYyBpbnQgZ2V0U3RhdHVzKGZpbmFsIFN0cmluZyB3b3JkbGlzdElkKSB7CisgICAgICAgIGZpbmFsIFN0YXRlIHN0YXRlID0gbVdvcmRsaXN0VG9TdGF0ZS5nZXQod29yZGxpc3RJZCk7CisgICAgICAgIGlmIChudWxsID09IHN0YXRlKSByZXR1cm4gTWV0YWRhdGFEYkhlbHBlci5TVEFUVVNfVU5LTk9XTjsKKyAgICAgICAgcmV0dXJuIHN0YXRlLm1TdGF0dXM7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0T3BlbihmaW5hbCBTdHJpbmcgd29yZGxpc3RJZCwgZmluYWwgaW50IHN0YXR1cykgeworICAgICAgICBmaW5hbCBTdGF0ZSBuZXdTdGF0ZTsKKyAgICAgICAgZmluYWwgU3RhdGUgc3RhdGUgPSBtV29yZGxpc3RUb1N0YXRlLmdldCh3b3JkbGlzdElkKTsKKyAgICAgICAgbmV3U3RhdGUgPSBudWxsID09IHN0YXRlID8gbmV3IFN0YXRlKCkgOiBzdGF0ZTsKKyAgICAgICAgbmV3U3RhdGUubU9wZW4gPSB0cnVlOworICAgICAgICBuZXdTdGF0ZS5tU3RhdHVzID0gc3RhdHVzOworICAgICAgICBtV29yZGxpc3RUb1N0YXRlLnB1dCh3b3JkbGlzdElkLCBuZXdTdGF0ZSk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgY2xvc2VBbGwoKSB7CisgICAgICAgIGZvciAoZmluYWwgU3RhdGUgc3RhdGUgOiBtV29yZGxpc3RUb1N0YXRlLnZhbHVlcygpKSB7CisgICAgICAgICAgICBzdGF0ZS5tT3BlbiA9IGZhbHNlOworICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvZGljdGlvbmFyeXBhY2svRGljdGlvbmFyeVByb3ZpZGVyLmphdmEgYi9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9kaWN0aW9uYXJ5cGFjay9EaWN0aW9uYXJ5UHJvdmlkZXIuamF2YQppbmRleCBmOGQxYzRmLi40ZmJlMTYyIDEwMDY0NAotLS0gYS9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9kaWN0aW9uYXJ5cGFjay9EaWN0aW9uYXJ5UHJvdmlkZXIuamF2YQorKysgYi9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9kaWN0aW9uYXJ5cGFjay9EaWN0aW9uYXJ5UHJvdmlkZXIuamF2YQpAQCAtMTg5LDcgKzE4OSw3IEBACiAgICAgICovCiAgICAgQE92ZXJyaWRlCiAgICAgcHVibGljIFN0cmluZyBnZXRUeXBlKGZpbmFsIFVyaSB1cmkpIHsKLSAgICAgICAgUHJpdmF0ZUxvZy5sb2coIkFza2VkIGZvciB0eXBlIG9mIDogIiArIHVyaSwgdGhpcyk7CisgICAgICAgIFByaXZhdGVMb2cubG9nKCJBc2tlZCBmb3IgdHlwZSBvZiA6ICIgKyB1cmkpOwogICAgICAgICBmaW5hbCBpbnQgbWF0Y2ggPSBtYXRjaFVyaSh1cmkpOwogICAgICAgICBzd2l0Y2ggKG1hdGNoKSB7CiAgICAgICAgICAgICBjYXNlIE5PX01BVENIOiByZXR1cm4gbnVsbDsKQEAgLTIyMCw3ICsyMjAsNyBAQAogICAgIHB1YmxpYyBDdXJzb3IgcXVlcnkoZmluYWwgVXJpIHVyaSwgZmluYWwgU3RyaW5nW10gcHJvamVjdGlvbiwgZmluYWwgU3RyaW5nIHNlbGVjdGlvbiwKICAgICAgICAgICAgIGZpbmFsIFN0cmluZ1tdIHNlbGVjdGlvbkFyZ3MsIGZpbmFsIFN0cmluZyBzb3J0T3JkZXIpIHsKICAgICAgICAgVXRpbHMubCgiVXJpID0iLCB1cmkpOwotICAgICAgICBQcml2YXRlTG9nLmxvZygiUXVlcnkgOiAiICsgdXJpLCB0aGlzKTsKKyAgICAgICAgUHJpdmF0ZUxvZy5sb2coIlF1ZXJ5IDogIiArIHVyaSk7CiAgICAgICAgIGZpbmFsIFN0cmluZyBjbGllbnRJZCA9IGdldENsaWVudElkKHVyaSk7CiAgICAgICAgIGZpbmFsIGludCBtYXRjaCA9IG1hdGNoVXJpKHVyaSk7CiAgICAgICAgIHN3aXRjaCAobWF0Y2gpIHsKQEAgLTIyOCw3ICsyMjgsNyBAQAogICAgICAgICAgICAgY2FzZSBESUNUSU9OQVJZX1YyX1dIT0xFX0xJU1Q6CiAgICAgICAgICAgICAgICAgZmluYWwgQ3Vyc29yIGMgPSBNZXRhZGF0YURiSGVscGVyLnF1ZXJ5RGljdGlvbmFyaWVzKGdldENvbnRleHQoKSwgY2xpZW50SWQpOwogICAgICAgICAgICAgICAgIFV0aWxzLmwoIkxpc3Qgb2YgZGljdGlvbmFyaWVzIHdpdGggY291bnQiLCBjLmdldENvdW50KCkpOwotICAgICAgICAgICAgICAgIFByaXZhdGVMb2cubG9nKCJSZXR1cm5lZCBhIGxpc3Qgb2YgIiArIGMuZ2V0Q291bnQoKSArICIgaXRlbXMiLCB0aGlzKTsKKyAgICAgICAgICAgICAgICBQcml2YXRlTG9nLmxvZygiUmV0dXJuZWQgYSBsaXN0IG9mICIgKyBjLmdldENvdW50KCkgKyAiIGl0ZW1zIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGM7CiAgICAgICAgICAgICBjYXNlIERJQ1RJT05BUllfVjJfRElDVF9JTkZPOgogICAgICAgICAgICAgICAgIC8vIEluIHByb3RvY29sIHZlcnNpb24gMiwgd2UgcmV0dXJuIG51bGwgaWYgdGhlIGNsaWVudCBpcyB1bmtub3duLiBPdGhlcndpc2UKQEAgLTI0OCwxMCArMjQ4LDEwIEBACiAgICAgICAgICAgICAgICAgLy8gVE9ETzogcGFzcyBjbGllbnRJZCB0byB0aGUgZm9sbG93aW5nIGZ1bmN0aW9uCiAgICAgICAgICAgICAgICAgRGljdGlvbmFyeVNlcnZpY2UudXBkYXRlTm93SWZOb3RVcGRhdGVkSW5BVmVyeUxvbmdUaW1lKGdldENvbnRleHQoKSk7CiAgICAgICAgICAgICAgICAgaWYgKG51bGwgIT0gZGljdEZpbGVzICYmIGRpY3RGaWxlcy5zaXplKCkgPiAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIFByaXZhdGVMb2cubG9nKCJSZXR1cm5lZCAiICsgZGljdEZpbGVzLnNpemUoKSArICIgZmlsZXMiLCB0aGlzKTsKKyAgICAgICAgICAgICAgICAgICAgUHJpdmF0ZUxvZy5sb2coIlJldHVybmVkICIgKyBkaWN0RmlsZXMuc2l6ZSgpICsgIiBmaWxlcyIpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFJlc291cmNlUGF0aEN1cnNvcihkaWN0RmlsZXMpOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIFByaXZhdGVMb2cubG9nKCJObyBkaWN0aW9uYXJ5IGZpbGVzIGZvciB0aGlzIFVSTCIsIHRoaXMpOworICAgICAgICAgICAgICAgICAgICBQcml2YXRlTG9nLmxvZygiTm8gZGljdGlvbmFyeSBmaWxlcyBmb3IgdGhpcyBVUkwiKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBSZXNvdXJjZVBhdGhDdXJzb3IoQ29sbGVjdGlvbnMuPFdvcmRMaXN0SW5mbz5lbXB0eUxpc3QoKSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgLy8gVjJfTUVUQURBVEEgYW5kIFYyX0RBVEFGSUxFIGFyZSBub3Qgc3VwcG9ydGVkIGZvciBxdWVyeSgpCkBAIC00ODgsNyArNDg4LDcgQEAKICAgICBwdWJsaWMgVXJpIGluc2VydChmaW5hbCBVcmkgdXJpLCBmaW5hbCBDb250ZW50VmFsdWVzIHZhbHVlcykKICAgICAgICAgICAgIHRocm93cyBVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbiB7CiAgICAgICAgIGlmIChudWxsID09IHVyaSB8fCBudWxsID09IHZhbHVlcykgcmV0dXJuIG51bGw7IC8vIFNob3VsZCBuZXZlciBoYXBwZW4gYnV0IGxldCdzIGJlIHNhZmUKLSAgICAgICAgUHJpdmF0ZUxvZy5sb2coIkluc2VydCwgdXJpID0gIiArIHVyaS50b1N0cmluZygpLCB0aGlzKTsKKyAgICAgICAgUHJpdmF0ZUxvZy5sb2coIkluc2VydCwgdXJpID0gIiArIHVyaS50b1N0cmluZygpKTsKICAgICAgICAgZmluYWwgU3RyaW5nIGNsaWVudElkID0gZ2V0Q2xpZW50SWQodXJpKTsKICAgICAgICAgc3dpdGNoIChtYXRjaFVyaSh1cmkpKSB7CiAgICAgICAgICAgICBjYXNlIERJQ1RJT05BUllfVjJfTUVUQURBVEE6CkBAIC01MTcsNyArNTE3LDcgQEAKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgRElDVElPTkFSWV9WMV9XSE9MRV9MSVNUOgogICAgICAgICAgICAgY2FzZSBESUNUSU9OQVJZX1YxX0RJQ1RfSU5GTzoKLSAgICAgICAgICAgICAgICBQcml2YXRlTG9nLmxvZygiQXR0ZW1wdCB0byBpbnNlcnQgOiAiICsgdXJpLCB0aGlzKTsKKyAgICAgICAgICAgICAgICBQcml2YXRlTG9nLmxvZygiQXR0ZW1wdCB0byBpbnNlcnQgOiAiICsgdXJpKTsKICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24oCiAgICAgICAgICAgICAgICAgICAgICAgICAiSW5zZXJ0aW9uIGluIHRoZSBkaWN0aW9uYXJ5IGlzIG5vdCBzdXBwb3J0ZWQgaW4gdGhpcyB2ZXJzaW9uIik7CiAgICAgICAgIH0KQEAgLTUzMiw3ICs1MzIsNyBAQAogICAgIEBPdmVycmlkZQogICAgIHB1YmxpYyBpbnQgdXBkYXRlKGZpbmFsIFVyaSB1cmksIGZpbmFsIENvbnRlbnRWYWx1ZXMgdmFsdWVzLCBmaW5hbCBTdHJpbmcgc2VsZWN0aW9uLAogICAgICAgICAgICAgZmluYWwgU3RyaW5nW10gc2VsZWN0aW9uQXJncykgdGhyb3dzIFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uIHsKLSAgICAgICAgUHJpdmF0ZUxvZy5sb2coIkF0dGVtcHQgdG8gdXBkYXRlIDogIiArIHVyaSwgdGhpcyk7CisgICAgICAgIFByaXZhdGVMb2cubG9nKCJBdHRlbXB0IHRvIHVwZGF0ZSA6ICIgKyB1cmkpOwogICAgICAgICB0aHJvdyBuZXcgVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24oIlVwZGF0aW5nIGRpY3Rpb25hcnkgd29yZHMgaXMgbm90IHN1cHBvcnRlZCIpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2RpY3Rpb25hcnlwYWNrL0RpY3Rpb25hcnlTZXJ2aWNlLmphdmEgYi9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9kaWN0aW9uYXJ5cGFjay9EaWN0aW9uYXJ5U2VydmljZS5qYXZhCmluZGV4IDU4MTdlYjQuLjQ2YmI1NTQgMTAwNjQ0Ci0tLSBhL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2RpY3Rpb25hcnlwYWNrL0RpY3Rpb25hcnlTZXJ2aWNlLmphdmEKKysrIGIvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvZGljdGlvbmFyeXBhY2svRGljdGlvbmFyeVNlcnZpY2UuamF2YQpAQCAtMjEsNyArMjEsNiBAQAogaW1wb3J0IGFuZHJvaWQuYXBwLlNlcnZpY2U7CiBpbXBvcnQgYW5kcm9pZC5jb250ZW50LkNvbnRleHQ7CiBpbXBvcnQgYW5kcm9pZC5jb250ZW50LkludGVudDsKLWltcG9ydCBhbmRyb2lkLmNvbnRlbnQuU2hhcmVkUHJlZmVyZW5jZXM7CiBpbXBvcnQgYW5kcm9pZC5vcy5JQmluZGVyOwogaW1wb3J0IGFuZHJvaWQudGV4dC5mb3JtYXQuRGF0ZVV0aWxzOwogaW1wb3J0IGFuZHJvaWQudXRpbC5Mb2c7CkBAIC0xOTAsNyArMTg5LDcgQEAKICAgICAgICAgLy8gaXMgc3RpbGwgbW9yZSByZWNlbnQgdGhhbiBVUERBVEVfRlJFUVVFTkNZLCBkbyBub3RoaW5nLgogICAgICAgICBpZiAoIWlzTGFzdFVwZGF0ZUF0TGVhc3RUaGlzT2xkKGNvbnRleHQsIFVQREFURV9GUkVRVUVOQ1kpKSByZXR1cm47CiAKLSAgICAgICAgUHJpdmF0ZUxvZy5sb2coIkRhdGUgY2hhbmdlZCAtIHJlZ2lzdGVyaW5nIGFsYXJtIiwgY29udGV4dCk7CisgICAgICAgIFByaXZhdGVMb2cubG9nKCJEYXRlIGNoYW5nZWQgLSByZWdpc3RlcmluZyBhbGFybSIpOwogICAgICAgICBBbGFybU1hbmFnZXIgYWxhcm1NYW5hZ2VyID0gKEFsYXJtTWFuYWdlciljb250ZXh0LmdldFN5c3RlbVNlcnZpY2UoQ29udGV4dC5BTEFSTV9TRVJWSUNFKTsKIAogICAgICAgICAvLyBCZXN0IGVmZm9ydCB0byB3YWtlIGJldHdlZW4gbWlkbmlnaHQgYW5kIE1BWF9BTEFSTV9ERUxBWSBpbiB0aGUgbW9ybmluZy4KQEAgLTIxNSw3ICsyMTQsNyBAQAogICAgIHByaXZhdGUgc3RhdGljIGJvb2xlYW4gaXNMYXN0VXBkYXRlQXRMZWFzdFRoaXNPbGQoZmluYWwgQ29udGV4dCBjb250ZXh0LCBmaW5hbCBsb25nIHRpbWUpIHsKICAgICAgICAgZmluYWwgbG9uZyBub3cgPSBTeXN0ZW0uY3VycmVudFRpbWVNaWxsaXMoKTsKICAgICAgICAgZmluYWwgbG9uZyBsYXN0VXBkYXRlID0gTWV0YWRhdGFEYkhlbHBlci5nZXRPbGRlc3RVcGRhdGVUaW1lKGNvbnRleHQpOwotICAgICAgICBQcml2YXRlTG9nLmxvZygiTGFzdCB1cGRhdGUgd2FzICIgKyBsYXN0VXBkYXRlLCBjb250ZXh0KTsKKyAgICAgICAgUHJpdmF0ZUxvZy5sb2coIkxhc3QgdXBkYXRlIHdhcyAiICsgbGFzdFVwZGF0ZSk7CiAgICAgICAgIHJldHVybiBsYXN0VXBkYXRlICsgdGltZSA8IG5vdzsKICAgICB9CiAKZGlmZiAtLWdpdCBhL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2RpY3Rpb25hcnlwYWNrL0RpY3Rpb25hcnlTZXR0aW5nc0ZyYWdtZW50LmphdmEgYi9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9kaWN0aW9uYXJ5cGFjay9EaWN0aW9uYXJ5U2V0dGluZ3NGcmFnbWVudC5qYXZhCmluZGV4IDllMjdjMWYuLmZiNzVkNmQgMTAwNjQ0Ci0tLSBhL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2RpY3Rpb25hcnlwYWNrL0RpY3Rpb25hcnlTZXR0aW5nc0ZyYWdtZW50LmphdmEKKysrIGIvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvZGljdGlvbmFyeXBhY2svRGljdGlvbmFyeVNldHRpbmdzRnJhZ21lbnQuamF2YQpAQCAtNjQsNiArNjQsOCBAQAogICAgIHByaXZhdGUgQ29ubmVjdGl2aXR5TWFuYWdlciBtQ29ubmVjdGl2aXR5TWFuYWdlcjsKICAgICBwcml2YXRlIE1lbnVJdGVtIG1VcGRhdGVOb3dNZW51OwogICAgIHByaXZhdGUgYm9vbGVhbiBtQ2hhbmdlZFNldHRpbmdzOworICAgIHByaXZhdGUgRGljdGlvbmFyeUxpc3RJbnRlcmZhY2VTdGF0ZSBtRGljdGlvbmFyeUxpc3RJbnRlcmZhY2VTdGF0ZSA9CisgICAgICAgICAgICBuZXcgRGljdGlvbmFyeUxpc3RJbnRlcmZhY2VTdGF0ZSgpOwogCiAgICAgcHJpdmF0ZSBmaW5hbCBCcm9hZGNhc3RSZWNlaXZlciBtQ29ubmVjdGl2aXR5Q2hhbmdlZFJlY2VpdmVyID0gbmV3IEJyb2FkY2FzdFJlY2VpdmVyKCkgewogICAgICAgICAgICAgQE92ZXJyaWRlCkBAIC0yODMsNiArMjg1LDcgQEAKICAgICAgICAgICAgIGZpbmFsIGludCBsb2NhbGVJbmRleCA9IGN1cnNvci5nZXRDb2x1bW5JbmRleChNZXRhZGF0YURiSGVscGVyLkxPQ0FMRV9DT0xVTU4pOwogICAgICAgICAgICAgZmluYWwgaW50IGRlc2NyaXB0aW9uSW5kZXggPSBjdXJzb3IuZ2V0Q29sdW1uSW5kZXgoTWV0YWRhdGFEYkhlbHBlci5ERVNDUklQVElPTl9DT0xVTU4pOwogICAgICAgICAgICAgZmluYWwgaW50IHN0YXR1c0luZGV4ID0gY3Vyc29yLmdldENvbHVtbkluZGV4KE1ldGFkYXRhRGJIZWxwZXIuU1RBVFVTX0NPTFVNTik7CisgICAgICAgICAgICBmaW5hbCBpbnQgZmlsZXNpemVJbmRleCA9IGN1cnNvci5nZXRDb2x1bW5JbmRleChNZXRhZGF0YURiSGVscGVyLkZJTEVTSVpFX0NPTFVNTik7CiAgICAgICAgICAgICBkbyB7CiAgICAgICAgICAgICAgICAgZmluYWwgU3RyaW5nIHdvcmRsaXN0SWQgPSBjdXJzb3IuZ2V0U3RyaW5nKGlkSW5kZXgpOwogICAgICAgICAgICAgICAgIGZpbmFsIGludCB2ZXJzaW9uID0gY3Vyc29yLmdldEludCh2ZXJzaW9uSW5kZXgpOwpAQCAtMjkyLDEzICsyOTUsMTUgQEAKICAgICAgICAgICAgICAgICBmaW5hbCBpbnQgc3RhdHVzID0gY3Vyc29yLmdldEludChzdGF0dXNJbmRleCk7CiAgICAgICAgICAgICAgICAgZmluYWwgaW50IG1hdGNoTGV2ZWwgPSBMb2NhbGVVdGlscy5nZXRNYXRjaExldmVsKHN5c3RlbUxvY2FsZVN0cmluZywgbG9jYWxlU3RyaW5nKTsKICAgICAgICAgICAgICAgICBmaW5hbCBTdHJpbmcgbWF0Y2hMZXZlbFN0cmluZyA9IExvY2FsZVV0aWxzLmdldE1hdGNoTGV2ZWxTb3J0ZWRTdHJpbmcobWF0Y2hMZXZlbCk7CisgICAgICAgICAgICAgICAgZmluYWwgaW50IGZpbGVzaXplID0gY3Vyc29yLmdldEludChmaWxlc2l6ZUluZGV4KTsKICAgICAgICAgICAgICAgICAvLyBUaGUga2V5IGlzIHNvcnRlZCBpbiBsZXhpY29ncmFwaGljIG9yZGVyLCBhY2NvcmRpbmcgdG8gdGhlIG1hdGNoIGxldmVsLCB0aGVuCiAgICAgICAgICAgICAgICAgLy8gdGhlIGRlc2NyaXB0aW9uLgogICAgICAgICAgICAgICAgIGZpbmFsIFN0cmluZyBrZXkgPSBtYXRjaExldmVsU3RyaW5nICsgIi4iICsgZGVzY3JpcHRpb24gKyAiLiIgKyB3b3JkbGlzdElkOwogICAgICAgICAgICAgICAgIGZpbmFsIFdvcmRMaXN0UHJlZmVyZW5jZSBleGlzdGluZ1ByZWYgPSBwcmVmTGlzdC5nZXQoa2V5KTsKICAgICAgICAgICAgICAgICBpZiAobnVsbCA9PSBleGlzdGluZ1ByZWYgfHwgaGFzUHJpb3JpdHkoc3RhdHVzLCBleGlzdGluZ1ByZWYubVN0YXR1cykpIHsKLSAgICAgICAgICAgICAgICAgICAgZmluYWwgV29yZExpc3RQcmVmZXJlbmNlIHByZWYgPSBuZXcgV29yZExpc3RQcmVmZXJlbmNlKGFjdGl2aXR5LCBtQ2xpZW50SWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgd29yZGxpc3RJZCwgdmVyc2lvbiwgbG9jYWxlLCBkZXNjcmlwdGlvbiwgc3RhdHVzKTsKKyAgICAgICAgICAgICAgICAgICAgZmluYWwgV29yZExpc3RQcmVmZXJlbmNlIHByZWYgPSBuZXcgV29yZExpc3RQcmVmZXJlbmNlKGFjdGl2aXR5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1EaWN0aW9uYXJ5TGlzdEludGVyZmFjZVN0YXRlLCBtQ2xpZW50SWQsIHdvcmRsaXN0SWQsIHZlcnNpb24sIGxvY2FsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiwgc3RhdHVzLCBmaWxlc2l6ZSk7CiAgICAgICAgICAgICAgICAgICAgIHByZWZMaXN0LnB1dChrZXksIHByZWYpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0gd2hpbGUgKGN1cnNvci5tb3ZlVG9OZXh0KCkpOwpkaWZmIC0tZ2l0IGEvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvZGljdGlvbmFyeXBhY2svTG9nUHJvYmxlbVJlcG9ydGVyLmphdmEgYi9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9kaWN0aW9uYXJ5cGFjay9Mb2dQcm9ibGVtUmVwb3J0ZXIuamF2YQppbmRleCBjMTI3YWQ1Li5jOWUxMjhkIDEwMDY0NAotLS0gYS9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9kaWN0aW9uYXJ5cGFjay9Mb2dQcm9ibGVtUmVwb3J0ZXIuamF2YQorKysgYi9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9kaWN0aW9uYXJ5cGFjay9Mb2dQcm9ibGVtUmVwb3J0ZXIuamF2YQpAQCAtMjgsNyArMjgsOCBAQAogICAgICAgICBUQUcgPSB0YWc7CiAgICAgfQogCisgICAgQE92ZXJyaWRlCiAgICAgcHVibGljIHZvaWQgcmVwb3J0KGZpbmFsIEV4Y2VwdGlvbiBlKSB7Ci0gICAgICAgIExvZy5lKFRBRywgIlJlcG9ydGluZyBwcm9ibGVtIDogIiArIGUpOworICAgICAgICBMb2cuZShUQUcsICJSZXBvcnRpbmcgcHJvYmxlbSIsIGUpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2RpY3Rpb25hcnlwYWNrL01ldGFkYXRhRGJIZWxwZXIuamF2YSBiL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2RpY3Rpb25hcnlwYWNrL01ldGFkYXRhRGJIZWxwZXIuamF2YQppbmRleCA1NWY1NDVhLi4wM2VkMjY3IDEwMDY0NAotLS0gYS9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9kaWN0aW9uYXJ5cGFjay9NZXRhZGF0YURiSGVscGVyLmphdmEKKysrIGIvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvZGljdGlvbmFyeXBhY2svTWV0YWRhdGFEYkhlbHBlci5qYXZhCkBAIC0xNiwxMyArMTYsMTEgQEAKIAogcGFja2FnZSBjb20uYW5kcm9pZC5pbnB1dG1ldGhvZC5kaWN0aW9uYXJ5cGFjazsKIAotaW1wb3J0IGFuZHJvaWQuY29udGVudC5Db250ZW50UmVzb2x2ZXI7CiBpbXBvcnQgYW5kcm9pZC5jb250ZW50LkNvbnRlbnRWYWx1ZXM7CiBpbXBvcnQgYW5kcm9pZC5jb250ZW50LkNvbnRleHQ7CiBpbXBvcnQgYW5kcm9pZC5kYXRhYmFzZS5DdXJzb3I7CiBpbXBvcnQgYW5kcm9pZC5kYXRhYmFzZS5zcWxpdGUuU1FMaXRlRGF0YWJhc2U7CiBpbXBvcnQgYW5kcm9pZC5kYXRhYmFzZS5zcWxpdGUuU1FMaXRlT3BlbkhlbHBlcjsKLWltcG9ydCBhbmRyb2lkLnByb3ZpZGVyLlNldHRpbmdzOwogaW1wb3J0IGFuZHJvaWQudGV4dC5UZXh0VXRpbHM7CiBpbXBvcnQgYW5kcm9pZC51dGlsLkxvZzsKIApAQCAtNDcsMTYgKzQ1LDE2IEBACiAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IE1FVEFEQVRBX0RBVEFCQVNFX0lOSVRJQUxfVkVSU0lPTiA9IDM7CiAgICAgLy8gVGhpcyBpcyB0aGUgZmlyc3QgcmVsZWFzZWQgdmVyc2lvbiBvZiB0aGUgZGF0YWJhc2UgdGhhdCBpbXBsZW1lbnRzIENMSUVOVElELiBJdCBpcwogICAgIC8vIHVzZWQgdG8gaWRlbnRpZnkgdGhlIHZlcnNpb25zIGZvciB1cGdyYWRlcy4gVGhpcyBzaG91bGQgbmV2ZXIgY2hhbmdlIGdvaW5nIGZvcndhcmQuCi0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IE1FVEFEQVRBX0RBVEFCQVNFX1ZFUlNJT05fV0lUSF9DTElFTlRJRCA9IDU7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IE1FVEFEQVRBX0RBVEFCQVNFX1ZFUlNJT05fV0lUSF9DTElFTlRJRCA9IDY7CiAgICAgLy8gVGhpcyBpcyB0aGUgY3VycmVudCBkYXRhYmFzZSB2ZXJzaW9uLiBJdCBzaG91bGQgYmUgdXBkYXRlZCB3aGVuIHRoZSBkYXRhYmFzZSBzY2hlbWEKICAgICAvLyBnZXRzIHVwZGF0ZWQuIEl0IGlzIHBhc3NlZCB0byB0aGUgZnJhbWV3b3JrIGNvbnN0cnVjdG9yIG9mIFNRTGl0ZU9wZW5IZWxwZXIsIHNvCiAgICAgLy8gdGhhdCdzIHdoYXQgdGhlIGZyYW1ld29yayB1c2VzIHRvIHRyYWNrIG91ciBkYXRhYmFzZSB2ZXJzaW9uLgotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBNRVRBREFUQV9EQVRBQkFTRV9WRVJTSU9OID0gNTsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgTUVUQURBVEFfREFUQUJBU0VfVkVSU0lPTiA9IDY7CiAKICAgICBwcml2YXRlIGZpbmFsIHN0YXRpYyBsb25nIE5PVF9BX0RPV05MT0FEX0lEID0gLTE7CiAKICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBNRVRBREFUQV9UQUJMRV9OQU1FID0gInBlbmRpbmdVcGRhdGVzIjsKLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ0xJRU5UX1RBQkxFX05BTUUgPSAiY2xpZW50cyI7CisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBDTElFTlRfVEFCTEVfTkFNRSA9ICJjbGllbnRzIjsKICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBQRU5ESU5HSURfQ09MVU1OID0gInBlbmRpbmdpZCI7IC8vIERvd25sb2FkIE1hbmFnZXIgSUQKICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBUWVBFX0NPTFVNTiA9ICJ0eXBlIjsKICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBTVEFUVVNfQ09MVU1OID0gInN0YXR1cyI7CkBAIC03NSw2ICs3Myw3IEBACiAKICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ0xJRU5UX0NMSUVOVF9JRF9DT0xVTU4gPSAiY2xpZW50aWQiOwogICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBDTElFTlRfTUVUQURBVEFfVVJJX0NPTFVNTiA9ICJ1cmkiOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBDTElFTlRfTUVUQURBVEFfQURESVRJT05BTF9JRF9DT0xVTU4gPSAiYWRkaXRpb25hbGlkIjsKICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ0xJRU5UX0xBU1RfVVBEQVRFX0RBVEVfQ09MVU1OID0gImxhc3R1cGRhdGUiOwogICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBDTElFTlRfUEVORElOR0lEX0NPTFVNTiA9ICJwZW5kaW5naWQiOyAvLyBEb3dubG9hZCBNYW5hZ2VyIElECiAKQEAgLTEzMCw2ICsxMjksNyBAQAogICAgICAgICAgICAgIkNSRUFURSBUQUJMRSBJRiBOT1QgRVhJU1RTICIgKyBDTElFTlRfVEFCTEVfTkFNRSArICIgKCIKICAgICAgICAgICAgICsgQ0xJRU5UX0NMSUVOVF9JRF9DT0xVTU4gKyAiIFRFWFQsICIKICAgICAgICAgICAgICsgQ0xJRU5UX01FVEFEQVRBX1VSSV9DT0xVTU4gKyAiIFRFWFQsICIKKyAgICAgICAgICAgICsgQ0xJRU5UX01FVEFEQVRBX0FERElUSU9OQUxfSURfQ09MVU1OICsgIiBURVhULCAiCiAgICAgICAgICAgICArIENMSUVOVF9MQVNUX1VQREFURV9EQVRFX0NPTFVNTiArICIgSU5URUdFUiBOT1QgTlVMTCBERUZBVUxUIDAsICIKICAgICAgICAgICAgICsgQ0xJRU5UX1BFTkRJTkdJRF9DT0xVTU4gKyAiIElOVEVHRVIsICIKICAgICAgICAgICAgICsgRkxBR1NfQ09MVU1OICsgIiBJTlRFR0VSLCAiCkBAIC0yODQsMTQgKzI4NCwxNSBAQAogICAgICAqIEByZXR1cm4gdGhlIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgVVJJCiAgICAgICovCiAgICAgcHVibGljIHN0YXRpYyBTdHJpbmcgZ2V0TWV0YWRhdGFVcmlBc1N0cmluZyhmaW5hbCBDb250ZXh0IGNvbnRleHQsIGZpbmFsIFN0cmluZyBjbGllbnRJZCkgewotICAgICAgICBTUUxpdGVEYXRhYmFzZSBkZWZhdWx0RGIgPSBnZXREYihjb250ZXh0LCBudWxsKTsKLSAgICAgICAgZmluYWwgQ3Vyc29yIGN1cnNvciA9IGRlZmF1bHREYi5xdWVyeShDTElFTlRfVEFCTEVfTkFNRSwKLSAgICAgICAgICAgICAgICBuZXcgU3RyaW5nW10geyBDTElFTlRfTUVUQURBVEFfVVJJX0NPTFVNTiB9LAotICAgICAgICAgICAgICAgIENMSUVOVF9DTElFTlRfSURfQ09MVU1OICsgIiA9ID8iLCBuZXcgU3RyaW5nW10geyBjbGllbnRJZCB9LAorICAgICAgICBTUUxpdGVEYXRhYmFzZSBkZWZhdWx0RGIgPSBNZXRhZGF0YURiSGVscGVyLmdldERiKGNvbnRleHQsIG51bGwpOworICAgICAgICBmaW5hbCBDdXJzb3IgY3Vyc29yID0gZGVmYXVsdERiLnF1ZXJ5KE1ldGFkYXRhRGJIZWxwZXIuQ0xJRU5UX1RBQkxFX05BTUUsCisgICAgICAgICAgICAgICAgbmV3IFN0cmluZ1tdIHsgTWV0YWRhdGFEYkhlbHBlci5DTElFTlRfTUVUQURBVEFfVVJJX0NPTFVNTiwKKyAgICAgICAgICAgICAgICAgICAgICAgIE1ldGFkYXRhRGJIZWxwZXIuQ0xJRU5UX01FVEFEQVRBX0FERElUSU9OQUxfSURfQ09MVU1OIH0sCisgICAgICAgICAgICAgICAgTWV0YWRhdGFEYkhlbHBlci5DTElFTlRfQ0xJRU5UX0lEX0NPTFVNTiArICIgPSA/IiwgbmV3IFN0cmluZ1tdIHsgY2xpZW50SWQgfSwKICAgICAgICAgICAgICAgICBudWxsLCBudWxsLCBudWxsLCBudWxsKTsKICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgIGlmICghY3Vyc29yLm1vdmVUb0ZpcnN0KCkpIHJldHVybiBudWxsOwotICAgICAgICAgICAgcmV0dXJuIGN1cnNvci5nZXRTdHJpbmcoMCk7IC8vIE9ubHkgb25lIGNvbHVtbiwgcmV0dXJuIGl0CisgICAgICAgICAgICByZXR1cm4gTWV0YWRhdGFVcmlHZXR0ZXIuZ2V0VXJpKGNvbnRleHQsIGN1cnNvci5nZXRTdHJpbmcoMCksIGN1cnNvci5nZXRTdHJpbmcoMSkpOwogICAgICAgICB9IGZpbmFsbHkgewogICAgICAgICAgICAgY3Vyc29yLmNsb3NlKCk7CiAgICAgICAgIH0KQEAgLTMwMCw3ICszMDEsOCBAQAogICAgIC8qKgogICAgICAqIFVwZGF0ZSB0aGUgbGFzdCBtZXRhZGF0YSB1cGRhdGUgdGltZSBmb3IgYWxsIGNsaWVudHMgdXNpbmcgYSBwYXJ0aWN1bGFyIFVSSS4KICAgICAgKgotICAgICAqIEFsbCBjbGllbnRzIHVzaW5nIHRoaXMgbWV0YWRhdGEgVVJJIHdpbGwgYmUgaW5kaWNhdGVkIGFzIGhhdmluZyBiZWVuIHVwZGF0ZWQgbm93LgorICAgICAqIFRoaXMgbWV0aG9kIHNlYXJjaGVzIGZvciBhbGwgY2xpZW50cyB1c2luZyBhIHBhcnRpY3VsYXIgVVJJIGFuZCB1cGRhdGVzIHRoZSBsYXN0CisgICAgICogdXBkYXRlIHRpbWUgZm9yIHRoaXMgY2xpZW50LgogICAgICAqIFRoZSBjdXJyZW50IHRpbWUgaXMgdXNlZCBhcyB0aGUgbGF0ZXN0IHVwZGF0ZSB0aW1lLiBUaGlzIHNhdmVkIGRhdGUgd2lsbCBiZSB3aGF0CiAgICAgICogaXMgcmV0dXJuZWQgaGVuY2Vmb3J0aCBieSB7QGxpbmsgI2dldExhc3RVcGRhdGVEYXRlRm9yQ2xpZW50KENvbnRleHQsIFN0cmluZyl9LAogICAgICAqIHVudGlsIHRoaXMgbWV0aG9kIGlzIGNhbGxlZCBhZ2Fpbi4KQEAgLTMwOSwxMyArMzExLDI2IEBACiAgICAgICogQHBhcmFtIHVyaSB0aGUgbWV0YWRhdGEgVVJJIHdlIGp1c3QgZG93bmxvYWRlZAogICAgICAqLwogICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBzYXZlTGFzdFVwZGF0ZVRpbWVPZlVyaShmaW5hbCBDb250ZXh0IGNvbnRleHQsIGZpbmFsIFN0cmluZyB1cmkpIHsKLSAgICAgICAgUHJpdmF0ZUxvZy5sb2coIlNhdmUgbGFzdCB1cGRhdGUgdGltZSBvZiBVUkkgOiAiICsgdXJpICsgIiAiICsgU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCksCi0gICAgICAgICAgICAgICAgY29udGV4dCk7CisgICAgICAgIFByaXZhdGVMb2cubG9nKCJTYXZlIGxhc3QgdXBkYXRlIHRpbWUgb2YgVVJJIDogIiArIHVyaSArICIgIiArIFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpKTsKICAgICAgICAgZmluYWwgQ29udGVudFZhbHVlcyB2YWx1ZXMgPSBuZXcgQ29udGVudFZhbHVlcygpOwogICAgICAgICB2YWx1ZXMucHV0KENMSUVOVF9MQVNUX1VQREFURV9EQVRFX0NPTFVNTiwgU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCkpOwogICAgICAgICBmaW5hbCBTUUxpdGVEYXRhYmFzZSBkZWZhdWx0RGIgPSBnZXREYihjb250ZXh0LCBudWxsKTsKLSAgICAgICAgZGVmYXVsdERiLnVwZGF0ZShDTElFTlRfVEFCTEVfTkFNRSwgdmFsdWVzLAotICAgICAgICAgICAgICAgIENMSUVOVF9NRVRBREFUQV9VUklfQ09MVU1OICsgIiA9ID8iLCBuZXcgU3RyaW5nW10geyB1cmkgfSk7CisgICAgICAgIGZpbmFsIEN1cnNvciBjdXJzb3IgPSBNZXRhZGF0YURiSGVscGVyLnF1ZXJ5Q2xpZW50SWRzKGNvbnRleHQpOworICAgICAgICBpZiAobnVsbCA9PSBjdXJzb3IpIHJldHVybjsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGlmICghY3Vyc29yLm1vdmVUb0ZpcnN0KCkpIHJldHVybjsKKyAgICAgICAgICAgIGRvIHsKKyAgICAgICAgICAgICAgICBmaW5hbCBTdHJpbmcgY2xpZW50SWQgPSBjdXJzb3IuZ2V0U3RyaW5nKDApOworICAgICAgICAgICAgICAgIGZpbmFsIFN0cmluZyBtZXRhZGF0YVVyaSA9CisgICAgICAgICAgICAgICAgICAgICAgICBNZXRhZGF0YURiSGVscGVyLmdldE1ldGFkYXRhVXJpQXNTdHJpbmcoY29udGV4dCwgY2xpZW50SWQpOworICAgICAgICAgICAgICAgIGlmIChtZXRhZGF0YVVyaS5lcXVhbHModXJpKSkgeworICAgICAgICAgICAgICAgICAgICBkZWZhdWx0RGIudXBkYXRlKENMSUVOVF9UQUJMRV9OQU1FLCB2YWx1ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0xJRU5UX0NMSUVOVF9JRF9DT0xVTU4gKyAiID0gPyIsIG5ldyBTdHJpbmdbXSB7IGNsaWVudElkIH0pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gd2hpbGUgKGN1cnNvci5tb3ZlVG9OZXh0KCkpOworICAgICAgICB9IGZpbmFsbHkgeworICAgICAgICAgICAgY3Vyc29yLmNsb3NlKCk7CisgICAgICAgIH0KICAgICB9CiAKICAgICAvKioKQEAgLTczMCwxMSArNzQ1LDEzIEBACiAgICAgLyoqCiAgICAgICogVXBkYXRlcyBpbmZvcm1hdGlvbiByZWxhdGl2ZSB0byBhIHNwZWNpZmljIGNsaWVudC4KICAgICAgKgotICAgICAqIFVwZGF0YWJsZSBpbmZvcm1hdGlvbiBpbmNsdWRlcyBvbmx5IHRoZSBtZXRhZGF0YSBVUkksIGJ1dCBtYXkgYmUgZXhwYW5kZWQgaW4gdGhlIGZ1dHVyZS4KKyAgICAgKiBVcGRhdGFibGUgaW5mb3JtYXRpb24gaW5jbHVkZXMgdGhlIG1ldGFkYXRhIFVSSSBhbmQgdGhlIGFkZGl0aW9uYWwgSUQgY29sdW1uLiBJdCBtYXkgYmUKKyAgICAgKiBleHBhbmRlZCBpbiB0aGUgZnV0dXJlLgogICAgICAqIFRoZSBwYXNzZWQgdmFsdWVzIG11c3QgaW5jbHVkZSBhIGNsaWVudCBJRCBpbiB0aGUga2V5IENMSUVOVF9DTElFTlRfSURfQ09MVU1OLCBhbmQgaXQgbXVzdAotICAgICAqIGJlIGVxdWFsIHRvIHRoZSBzdHJpbmcgcGFzc2VkIGFzIGFuIGFyZ3VtZW50IGZvciBjbGllbnRJZC4KLSAgICAgKiBUaGUgcGFzc2VkIHZhbHVlcyBtdXN0IGFsc28gaW5jbHVkZSBhIG5vbi1lbXB0eSBtZXRhZGF0YSBVUkkgaW4gdGhlCi0gICAgICogQ0xJRU5UX01FVEFEQVRBX1VSSV9DT0xVTU4gY29sdW1uLgorICAgICAqIGJlIGVxdWFsIHRvIHRoZSBzdHJpbmcgcGFzc2VkIGFzIGFuIGFyZ3VtZW50IGZvciBjbGllbnRJZC4gSXQgbWF5IG5vdCBiZSBlbXB0eS4KKyAgICAgKiBUaGUgcGFzc2VkIHZhbHVlcyBtdXN0IGFsc28gaW5jbHVkZSBhIG5vbi1udWxsIG1ldGFkYXRhIFVSSSBpbiB0aGUKKyAgICAgKiBDTElFTlRfTUVUQURBVEFfVVJJX0NPTFVNTiBjb2x1bW4sIGFzIHdlbGwgYXMgYSBub24tbnVsbCBhZGRpdGlvbmFsIElEIGluIHRoZQorICAgICAqIENMSUVOVF9NRVRBREFUQV9BRERJVElPTkFMX0lEX0NPTFVNTi4gQm90aCB0aGVzZSBzdHJpbmdzIG1heSBiZSBlbXB0eS4KICAgICAgKiBJZiBhbnkgb2YgdGhlIGFib3ZlIGlzIG5vdCBjb21wbGllZCB3aXRoLCB0aGlzIGZ1bmN0aW9uIHJldHVybnMgd2l0aG91dCB1cGRhdGluZyBkYXRhLgogICAgICAqCiAgICAgICogQHBhcmFtIGNvbnRleHQgdGhlIGNvbnRleHQsIHRvIG9wZW4gdGhlIGRhdGFiYXNlCkBAIC03NDYsMTAgKzc2MywxNiBAQAogICAgICAgICAvLyBTYW5pdHkgY2hlY2sgdGhlIGNvbnRlbnQgdmFsdWVzCiAgICAgICAgIGZpbmFsIFN0cmluZyB2YWx1ZXNDbGllbnRJZCA9IHZhbHVlcy5nZXRBc1N0cmluZyhDTElFTlRfQ0xJRU5UX0lEX0NPTFVNTik7CiAgICAgICAgIGZpbmFsIFN0cmluZyB2YWx1ZXNNZXRhZGF0YVVyaSA9IHZhbHVlcy5nZXRBc1N0cmluZyhDTElFTlRfTUVUQURBVEFfVVJJX0NPTFVNTik7Ci0gICAgICAgIC8vIEVtcHR5IHN0cmluZyBpcyBhIHZhbGlkIGNsaWVudCBJRCwgYnV0IGV4dGVybmFsIGFwcHMgbWF5IG5vdCBjb25maWd1cmUgaXQuCi0gICAgICAgIC8vIEVtcHR5IHN0cmluZyBpcyBhIHZhbGlkIG1ldGFkYXRhIFVSSSBpZiB0aGUgY2xpZW50IGRvZXMgbm90IHdhbnQgdXBkYXRlcy4KLSAgICAgICAgaWYgKFRleHRVdGlscy5pc0VtcHR5KHZhbHVlc0NsaWVudElkKSB8fCBudWxsID09IHZhbHVlc01ldGFkYXRhVXJpKSB7Ci0gICAgICAgICAgICAvLyBXZSBuZWVkIGJvdGggdGhlc2UgY29sdW1ucyB0byBiZSBmaWxsZWQgaW4KKyAgICAgICAgZmluYWwgU3RyaW5nIHZhbHVlc01ldGFkYXRhQWRkaXRpb25hbElkID0KKyAgICAgICAgICAgICAgICB2YWx1ZXMuZ2V0QXNTdHJpbmcoQ0xJRU5UX01FVEFEQVRBX0FERElUSU9OQUxfSURfQ09MVU1OKTsKKyAgICAgICAgLy8gRW1wdHkgc3RyaW5nIGlzIGEgdmFsaWQgY2xpZW50IElELCBidXQgZXh0ZXJuYWwgYXBwcyBtYXkgbm90IGNvbmZpZ3VyZSBpdCwgc28gZGlzYWxsb3cKKyAgICAgICAgLy8gYm90aCBudWxsIGFuZCBlbXB0eSBzdHJpbmcuCisgICAgICAgIC8vIEVtcHR5IHN0cmluZyBpcyBhIHZhbGlkIG1ldGFkYXRhIFVSSSBpZiB0aGUgY2xpZW50IGRvZXMgbm90IHdhbnQgdXBkYXRlcywgc28gYWxsb3cKKyAgICAgICAgLy8gZW1wdHkgc3RyaW5nIGJ1dCBkaXNhbGxvdyBudWxsLgorICAgICAgICAvLyBFbXB0eSBzdHJpbmcgaXMgYSB2YWxpZCBhZGRpdGlvbmFsIElEIHNvIGFsbG93IGVtcHR5IHN0cmluZyBidXQgZGlzYWxsb3cgbnVsbC4KKyAgICAgICAgaWYgKFRleHRVdGlscy5pc0VtcHR5KHZhbHVlc0NsaWVudElkKSB8fCBudWxsID09IHZhbHVlc01ldGFkYXRhVXJpCisgICAgICAgICAgICAgICAgfHwgbnVsbCA9PSB2YWx1ZXNNZXRhZGF0YUFkZGl0aW9uYWxJZCkgeworICAgICAgICAgICAgLy8gV2UgbmVlZCBhbGwgdGhlc2UgY29sdW1ucyB0byBiZSBmaWxsZWQgaW4KICAgICAgICAgICAgIFV0aWxzLmwoIk1pc3NpbmcgcGFyYW1ldGVyIGZvciB1cGRhdGVDbGllbnRJbmZvIik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTc4MCw4ICs4MDMsOSBAQAogICAgICAqIFJlZ2lzdGVyIGEgZG93bmxvYWQgSUQgZm9yIGEgc3BlY2lmaWMgbWV0YWRhdGEgVVJJLgogICAgICAqCiAgICAgICogVGhpcyBtZXRob2Qgc2hvdWxkIGJlIGNhbGxlZCB3aGVuIGEgZG93bmxvYWQgZm9yIGEgbWV0YWRhdGEgVVJJIGlzIHN0YXJ0aW5nLiBJdCB3aWxsCi0gICAgICogcmVnaXN0ZXIgdGhlIGRvd25sb2FkIElEIGZvciBhbGwgY2xpZW50cyB1c2luZyB0aGlzIG1ldGFkYXRhIFVSSSBpbnRvIHRoZSBkYXRhYmFzZQotICAgICAqIGZvciBsYXRlciByZXRyaWV2YWwgYnkge0BsaW5rICNnZXREb3dubG9hZFJlY29yZHNGb3JEb3dubG9hZElkKENvbnRleHQsIGxvbmcpfS4KKyAgICAgKiBzZWFyY2ggZm9yIGFsbCBjbGllbnRzIHVzaW5nIHRoaXMgbWV0YWRhdGEgVVJJIGFuZCB3aWxsIHJlZ2lzdGVyIGZvciBlYWNoIG9mIHRoZW0KKyAgICAgKiB0aGUgZG93bmxvYWQgSUQgaW50byB0aGUgZGF0YWJhc2UgZm9yIGxhdGVyIHJldHJpZXZhbCBieQorICAgICAqIHtAbGluayAjZ2V0RG93bmxvYWRSZWNvcmRzRm9yRG93bmxvYWRJZChDb250ZXh0LCBsb25nKX0uCiAgICAgICoKICAgICAgKiBAcGFyYW0gY29udGV4dCBhIGNvbnRleHQgZm9yIG9wZW5pbmcgZGF0YWJhc2VzCiAgICAgICogQHBhcmFtIHVyaSB0aGUgbWV0YWRhdGEgVVJJCkBAIC03OTIsOCArODE2LDIyIEBACiAgICAgICAgIGZpbmFsIENvbnRlbnRWYWx1ZXMgdmFsdWVzID0gbmV3IENvbnRlbnRWYWx1ZXMoKTsKICAgICAgICAgdmFsdWVzLnB1dChDTElFTlRfUEVORElOR0lEX0NPTFVNTiwgZG93bmxvYWRJZCk7CiAgICAgICAgIGZpbmFsIFNRTGl0ZURhdGFiYXNlIGRlZmF1bHREYiA9IGdldERiKGNvbnRleHQsICIiKTsKLSAgICAgICAgZGVmYXVsdERiLnVwZGF0ZShDTElFTlRfVEFCTEVfTkFNRSwgdmFsdWVzLAotICAgICAgICAgICAgICAgIENMSUVOVF9NRVRBREFUQV9VUklfQ09MVU1OICsgIiA9ID8iLCBuZXcgU3RyaW5nW10geyB1cmkgfSk7CisgICAgICAgIGZpbmFsIEN1cnNvciBjdXJzb3IgPSBNZXRhZGF0YURiSGVscGVyLnF1ZXJ5Q2xpZW50SWRzKGNvbnRleHQpOworICAgICAgICBpZiAobnVsbCA9PSBjdXJzb3IpIHJldHVybjsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGlmICghY3Vyc29yLm1vdmVUb0ZpcnN0KCkpIHJldHVybjsKKyAgICAgICAgICAgIGRvIHsKKyAgICAgICAgICAgICAgICBmaW5hbCBTdHJpbmcgY2xpZW50SWQgPSBjdXJzb3IuZ2V0U3RyaW5nKDApOworICAgICAgICAgICAgICAgIGZpbmFsIFN0cmluZyBtZXRhZGF0YVVyaSA9CisgICAgICAgICAgICAgICAgICAgICAgICBNZXRhZGF0YURiSGVscGVyLmdldE1ldGFkYXRhVXJpQXNTdHJpbmcoY29udGV4dCwgY2xpZW50SWQpOworICAgICAgICAgICAgICAgIGlmIChtZXRhZGF0YVVyaS5lcXVhbHModXJpKSkgeworICAgICAgICAgICAgICAgICAgICBkZWZhdWx0RGIudXBkYXRlKENMSUVOVF9UQUJMRV9OQU1FLCB2YWx1ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0xJRU5UX0NMSUVOVF9JRF9DT0xVTU4gKyAiID0gPyIsIG5ldyBTdHJpbmdbXSB7IGNsaWVudElkIH0pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gd2hpbGUgKGN1cnNvci5tb3ZlVG9OZXh0KCkpOworICAgICAgICB9IGZpbmFsbHkgeworICAgICAgICAgICAgY3Vyc29yLmNsb3NlKCk7CisgICAgICAgIH0KICAgICB9CiAKICAgICAvKioKZGlmZiAtLWdpdCBhL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2RpY3Rpb25hcnlwYWNrL01ldGFkYXRhVXJpR2V0dGVyLmphdmEgYi9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9kaWN0aW9uYXJ5cGFjay9NZXRhZGF0YVVyaUdldHRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVkODE3NjUKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9kaWN0aW9uYXJ5cGFjay9NZXRhZGF0YVVyaUdldHRlci5qYXZhCkBAIC0wLDAgKzEsMzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdAorICogdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YKKyAqIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywgV0lUSE9VVAorICogV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiBTZWUgdGhlCisgKiBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucyB1bmRlcgorICogdGhlIExpY2Vuc2UuCisgKi8KKworcGFja2FnZSBjb20uYW5kcm9pZC5pbnB1dG1ldGhvZC5kaWN0aW9uYXJ5cGFjazsKKworaW1wb3J0IGFuZHJvaWQuY29udGVudC5Db250ZXh0OworCisvKioKKyAqIEhlbHBlciB0byBnZXQgdGhlIG1ldGFkYXRhIFVSSSBmcm9tIGl0cyBiYXNlIFVSSSBhbmQgdGhlIGFkZGl0aW9uYWwgSUQsIGlmIGFueS4KKyAqLworcHVibGljIGNsYXNzIE1ldGFkYXRhVXJpR2V0dGVyIHsKKyAgICBwcml2YXRlIE1ldGFkYXRhVXJpR2V0dGVyKCkgeworICAgICAgICAvLyBUaGlzIGhlbHBlciBjbGFzcyBpcyBub3QgaW5zdGFudGlhYmxlLgorICAgIH0KKworICAgIHB1YmxpYyBzdGF0aWMgU3RyaW5nIGdldFVyaShmaW5hbCBDb250ZXh0IGNvbnRleHQsIGZpbmFsIFN0cmluZyBiYXNlVXJpLAorICAgICAgICAgICAgZmluYWwgU3RyaW5nIGFkZGl0aW9uYWxJZCkgeworICAgICAgICByZXR1cm4gYmFzZVVyaTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9kaWN0aW9uYXJ5cGFjay9Qcml2YXRlTG9nLmphdmEgYi9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9kaWN0aW9uYXJ5cGFjay9Qcml2YXRlTG9nLmphdmEKaW5kZXggODU5M2MxYy4uNjdkZDdiOSAxMDA2NDQKLS0tIGEvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvZGljdGlvbmFyeXBhY2svUHJpdmF0ZUxvZy5qYXZhCisrKyBiL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2RpY3Rpb25hcnlwYWNrL1ByaXZhdGVMb2cuamF2YQpAQCAtMTYsNyArMTYsNiBAQAogCiBwYWNrYWdlIGNvbS5hbmRyb2lkLmlucHV0bWV0aG9kLmRpY3Rpb25hcnlwYWNrOwogCi1pbXBvcnQgYW5kcm9pZC5jb250ZW50LkNvbnRlbnRQcm92aWRlcjsKIGltcG9ydCBhbmRyb2lkLmNvbnRlbnQuQ29udGVudFZhbHVlczsKIGltcG9ydCBhbmRyb2lkLmNvbnRlbnQuQ29udGV4dDsKIGltcG9ydCBhbmRyb2lkLmRhdGFiYXNlLnNxbGl0ZS5TUUxpdGVEYXRhYmFzZTsKQEAgLTI0LDYgKzIzLDcgQEAKIAogaW1wb3J0IGphdmEudGV4dC5TaW1wbGVEYXRlRm9ybWF0OwogaW1wb3J0IGphdmEudXRpbC5EYXRlOworaW1wb3J0IGphdmEudXRpbC5Mb2NhbGU7CiAKIC8qKgogICogQ2xhc3MgdG8ga2VlcCBsb25nLXRlcm0gbG9nLiBUaGlzIGlzIGluYWN0aXZlIGluIHByb2R1Y3Rpb24sIGFuZCBpcyBvbmx5IGZvciBkZWJ1ZyBwdXJwb3Nlcy4KQEAgLTQ0LDEwICs0NCwxMCBAQAogICAgICAgICAgICAgKyBDT0xVTU5fRVZFTlQgKyAiIFRFWFQpOyI7CiAKICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTaW1wbGVEYXRlRm9ybWF0IHNEYXRlRm9ybWF0ID0KLSAgICAgICAgICAgIG5ldyBTaW1wbGVEYXRlRm9ybWF0KCJ5eXl5L01NL2RkIEhIOm1tOnNzIik7CisgICAgICAgICAgICBuZXcgU2ltcGxlRGF0ZUZvcm1hdCgieXl5eS9NTS9kZCBISDptbTpzcyIsIExvY2FsZS5VUyk7CiAKICAgICBwcml2YXRlIHN0YXRpYyBQcml2YXRlTG9nIHNJbnN0YW5jZSA9IG5ldyBQcml2YXRlTG9nKCk7Ci0gICAgcHJpdmF0ZSBzdGF0aWMgRGVidWdIZWxwZXIgbURlYnVnSGVscGVyID0gbnVsbDsKKyAgICBwcml2YXRlIHN0YXRpYyBEZWJ1Z0hlbHBlciBzRGVidWdIZWxwZXIgPSBudWxsOwogCiAgICAgcHJpdmF0ZSBQcml2YXRlTG9nKCkgewogICAgIH0KQEAgLTU1LDggKzU1LDggQEAKICAgICBwdWJsaWMgc3RhdGljIHN5bmNocm9uaXplZCBQcml2YXRlTG9nIGdldEluc3RhbmNlKGZpbmFsIENvbnRleHQgY29udGV4dCkgewogICAgICAgICBpZiAoIURFQlVHKSByZXR1cm4gc0luc3RhbmNlOwogICAgICAgICBzeW5jaHJvbml6ZWQoUHJpdmF0ZUxvZy5jbGFzcykgewotICAgICAgICAgICAgaWYgKHNJbnN0YW5jZS5tRGVidWdIZWxwZXIgPT0gbnVsbCkgewotICAgICAgICAgICAgICAgIHNJbnN0YW5jZS5tRGVidWdIZWxwZXIgPSBuZXcgRGVidWdIZWxwZXIoY29udGV4dCk7CisgICAgICAgICAgICBpZiAoc0RlYnVnSGVscGVyID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICBzRGVidWdIZWxwZXIgPSBuZXcgRGVidWdIZWxwZXIoY29udGV4dCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gc0luc3RhbmNlOwogICAgICAgICB9CkBAIC05NCwxNiArOTQsOSBAQAogCiAgICAgfQogCi0gICAgcHVibGljIHN0YXRpYyB2b2lkIGxvZyhTdHJpbmcgZXZlbnQsIENvbnRleHQgY29udGV4dCkgeworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBsb2coU3RyaW5nIGV2ZW50KSB7CiAgICAgICAgIGlmICghREVCVUcpIHJldHVybjsKLSAgICAgICAgZmluYWwgU1FMaXRlRGF0YWJhc2UgbCA9IGdldEluc3RhbmNlKGNvbnRleHQpLm1EZWJ1Z0hlbHBlci5nZXRXcml0YWJsZURhdGFiYXNlKCk7Ci0gICAgICAgIG1EZWJ1Z0hlbHBlci5pbnNlcnQobCwgZXZlbnQpOwotICAgIH0KLQotICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBsb2coU3RyaW5nIGV2ZW50LCBDb250ZW50UHJvdmlkZXIgcHJvdmlkZXIpIHsKLSAgICAgICAgaWYgKCFERUJVRykgcmV0dXJuOwotICAgICAgICBmaW5hbCBTUUxpdGVEYXRhYmFzZSBsID0KLSAgICAgICAgICAgICAgICBnZXRJbnN0YW5jZShwcm92aWRlci5nZXRDb250ZXh0KCkpLm1EZWJ1Z0hlbHBlci5nZXRXcml0YWJsZURhdGFiYXNlKCk7Ci0gICAgICAgIG1EZWJ1Z0hlbHBlci5pbnNlcnQobCwgZXZlbnQpOworICAgICAgICBmaW5hbCBTUUxpdGVEYXRhYmFzZSBsID0gc0RlYnVnSGVscGVyLmdldFdyaXRhYmxlRGF0YWJhc2UoKTsKKyAgICAgICAgRGVidWdIZWxwZXIuaW5zZXJ0KGwsIGV2ZW50KTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9kaWN0aW9uYXJ5cGFjay9VcGRhdGVIYW5kbGVyLmphdmEgYi9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9kaWN0aW9uYXJ5cGFjay9VcGRhdGVIYW5kbGVyLmphdmEKaW5kZXggMzE3M2U5MS4uM2Y5MTdmMSAxMDA2NDQKLS0tIGEvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvZGljdGlvbmFyeXBhY2svVXBkYXRlSGFuZGxlci5qYXZhCisrKyBiL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2RpY3Rpb25hcnlwYWNrL1VwZGF0ZUhhbmRsZXIuamF2YQpAQCAtMTgzLDcgKzE4Myw3IEBACiAgICAgICAgICAgICAgICAgZmluYWwgU3RyaW5nIGNsaWVudElkID0gY3Vyc29yLmdldFN0cmluZygwKTsKICAgICAgICAgICAgICAgICBmaW5hbCBTdHJpbmcgbWV0YWRhdGFVcmkgPQogICAgICAgICAgICAgICAgICAgICAgICAgTWV0YWRhdGFEYkhlbHBlci5nZXRNZXRhZGF0YVVyaUFzU3RyaW5nKGNvbnRleHQsIGNsaWVudElkKTsKLSAgICAgICAgICAgICAgICBQcml2YXRlTG9nLmxvZygiVXBkYXRlIGZvciBjbGllbnRJZCAiICsgVXRpbHMucyhjbGllbnRJZCksIGNvbnRleHQpOworICAgICAgICAgICAgICAgIFByaXZhdGVMb2cubG9nKCJVcGRhdGUgZm9yIGNsaWVudElkICIgKyBVdGlscy5zKGNsaWVudElkKSk7CiAgICAgICAgICAgICAgICAgVXRpbHMubCgiVXBkYXRlIGZvciBjbGllbnRJZCIsIGNsaWVudElkLCAiIHdoaWNoIHVzZXMgVVJJICIsIG1ldGFkYXRhVXJpKTsKICAgICAgICAgICAgICAgICB1cmlzLmFkZChtZXRhZGF0YVVyaSk7CiAgICAgICAgICAgICB9IHdoaWxlIChjdXJzb3IubW92ZVRvTmV4dCgpKTsKQEAgLTIxMSw4ICsyMTEsMTMgQEAKICAgICAgKi8KICAgICBwcml2YXRlIHN0YXRpYyB2b2lkIHVwZGF0ZUNsaWVudHNXaXRoTWV0YWRhdGFVcmkoZmluYWwgQ29udGV4dCBjb250ZXh0LAogICAgICAgICAgICAgZmluYWwgYm9vbGVhbiB1cGRhdGVOb3csIGZpbmFsIFN0cmluZyBtZXRhZGF0YVVyaSkgewotICAgICAgICBQcml2YXRlTG9nLmxvZygiVXBkYXRlIGZvciBtZXRhZGF0YSBVUkkgIiArIFV0aWxzLnMobWV0YWRhdGFVcmkpLCBjb250ZXh0KTsKLSAgICAgICAgZmluYWwgUmVxdWVzdCBtZXRhZGF0YVJlcXVlc3QgPSBuZXcgUmVxdWVzdChVcmkucGFyc2UobWV0YWRhdGFVcmkpKTsKKyAgICAgICAgUHJpdmF0ZUxvZy5sb2coIlVwZGF0ZSBmb3IgbWV0YWRhdGEgVVJJICIgKyBVdGlscy5zKG1ldGFkYXRhVXJpKSk7CisgICAgICAgIC8vIEFkZGluZyBhIGRpc2FtYmlndWF0b3IgdG8gY2lyY3VtdmVudCBhIGJ1ZyBpbiBvbGRlciB2ZXJzaW9ucyBvZiBEb3dubG9hZE1hbmFnZXIuCisgICAgICAgIC8vIERvd25sb2FkTWFuYWdlciBhbHNvIHN0dXBpZGx5IGN1dHMgdGhlIGV4dGVuc2lvbiB0byByZXBsYWNlIHdpdGggaXRzIG93biB0aGF0IGl0CisgICAgICAgIC8vIGdldHMgZnJvbSB0aGUgY29udGVudC10eXBlLiBXZSBuZWVkIHRvIGNpcmN1bXZlbnQgdGhpcy4KKyAgICAgICAgZmluYWwgU3RyaW5nIGRpc2FtYmlndWF0b3IgPSAiIyIgKyBTeXN0ZW0uY3VycmVudFRpbWVNaWxsaXMoKQorICAgICAgICAgICAgICAgICsgY29tLmFuZHJvaWQuaW5wdXRtZXRob2QubGF0aW4uVXRpbHMuZ2V0VmVyc2lvbk5hbWUoY29udGV4dCkgKyAiLmpzb24iOworICAgICAgICBmaW5hbCBSZXF1ZXN0IG1ldGFkYXRhUmVxdWVzdCA9IG5ldyBSZXF1ZXN0KFVyaS5wYXJzZShtZXRhZGF0YVVyaSArIGRpc2FtYmlndWF0b3IpKTsKICAgICAgICAgVXRpbHMubCgiUmVxdWVzdCA9IiwgbWV0YWRhdGFSZXF1ZXN0KTsKIAogICAgICAgICBmaW5hbCBSZXNvdXJjZXMgcmVzID0gY29udGV4dC5nZXRSZXNvdXJjZXMoKTsKQEAgLTI1Nyw3ICsyNjIsNyBAQAogICAgICAgICAgICAgLy8gbWV0aG9kIHdpbGwgaWdub3JlIGl0LgogICAgICAgICAgICAgd3JpdGVNZXRhZGF0YURvd25sb2FkSWQoY29udGV4dCwgbWV0YWRhdGFVcmksIGRvd25sb2FkSWQpOwogICAgICAgICB9Ci0gICAgICAgIFByaXZhdGVMb2cubG9nKCJSZXF1ZXN0ZWQgZG93bmxvYWQgd2l0aCBpZCAiICsgZG93bmxvYWRJZCwgY29udGV4dCk7CisgICAgICAgIFByaXZhdGVMb2cubG9nKCJSZXF1ZXN0ZWQgZG93bmxvYWQgd2l0aCBpZCAiICsgZG93bmxvYWRJZCk7CiAgICAgfQogCiAgICAgLyoqCkBAIC0zNTEsNyArMzU2LDEzIEBACiAgICAgICAgICAgICAgICAgZmluYWwgaW50IGNvbHVtblVyaSA9IGN1cnNvci5nZXRDb2x1bW5JbmRleChEb3dubG9hZE1hbmFnZXIuQ09MVU1OX1VSSSk7CiAgICAgICAgICAgICAgICAgZmluYWwgaW50IGVycm9yID0gY3Vyc29yLmdldEludChjb2x1bW5FcnJvcik7CiAgICAgICAgICAgICAgICAgc3RhdHVzID0gY3Vyc29yLmdldEludChjb2x1bW5TdGF0dXMpOwotICAgICAgICAgICAgICAgIHVyaSA9IGN1cnNvci5nZXRTdHJpbmcoY29sdW1uVXJpKTsKKyAgICAgICAgICAgICAgICBmaW5hbCBTdHJpbmcgdXJpV2l0aEFuY2hvciA9IGN1cnNvci5nZXRTdHJpbmcoY29sdW1uVXJpKTsKKyAgICAgICAgICAgICAgICBpbnQgYW5jaG9ySW5kZXggPSB1cmlXaXRoQW5jaG9yLmluZGV4T2YoJyMnKTsKKyAgICAgICAgICAgICAgICBpZiAoYW5jaG9ySW5kZXggIT0gLTEpIHsKKyAgICAgICAgICAgICAgICAgICAgdXJpID0gdXJpV2l0aEFuY2hvci5zdWJzdHJpbmcoMCwgYW5jaG9ySW5kZXgpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHVyaSA9IHVyaVdpdGhBbmNob3I7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGlmIChEb3dubG9hZE1hbmFnZXIuU1RBVFVTX1NVQ0NFU1NGVUwgIT0gc3RhdHVzKSB7CiAgICAgICAgICAgICAgICAgICAgIExvZy5lKFRBRywgIlBlcm1hbmVudCBmYWlsdXJlIG9mIGRvd25sb2FkICIgKyBkb3dubG9hZElkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiIHdpdGggZXJyb3IgY29kZTogIiArIGVycm9yKTsKQEAgLTQwNCw3ICs0MTUsNyBAQAogICAgIC8qIHBhY2thZ2UgKi8gc3RhdGljIHZvaWQgZG93bmxvYWRGaW5pc2hlZChmaW5hbCBDb250ZXh0IGNvbnRleHQsIGZpbmFsIEludGVudCBpbnRlbnQpIHsKICAgICAgICAgLy8gR2V0IGFuZCBjaGVjayB0aGUgSUQgb2YgdGhlIGZpbGUgdGhhdCB3YXMgZG93bmxvYWRlZAogICAgICAgICBmaW5hbCBsb25nIGZpbGVJZCA9IGludGVudC5nZXRMb25nRXh0cmEoRG93bmxvYWRNYW5hZ2VyLkVYVFJBX0RPV05MT0FEX0lELCBOT1RfQU5fSUQpOwotICAgICAgICBQcml2YXRlTG9nLmxvZygiRG93bmxvYWQgZmluaXNoZWQgd2l0aCBpZCAiICsgZmlsZUlkLCBjb250ZXh0KTsKKyAgICAgICAgUHJpdmF0ZUxvZy5sb2coIkRvd25sb2FkIGZpbmlzaGVkIHdpdGggaWQgIiArIGZpbGVJZCk7CiAgICAgICAgIFV0aWxzLmwoIkRvd25sb2FkRmluaXNoZWQgd2l0aCBpZCIsIGZpbGVJZCk7CiAgICAgICAgIGlmIChOT1RfQU5fSUQgPT0gZmlsZUlkKSByZXR1cm47IC8vIFNwdXJpb3VzIHdha2UtdXA6IGlnbm9yZQogCkBAIC00OTEsNyArNTAyLDcgQEAKIAogICAgIHByaXZhdGUgc3RhdGljIHZvaWQgcHVibGlzaFVwZGF0ZUN5Y2xlQ29tcGxldGVkRXZlbnQoZmluYWwgQ29udGV4dCBjb250ZXh0KSB7CiAgICAgICAgIC8vIEV2ZW4gaWYgdGhpcyBpcyBub3Qgc3VjY2Vzc2Z1bCwgd2UgaGF2ZSB0byBwdWJsaXNoIHRoZSBuZXcgc3RhdGUuCi0gICAgICAgIFByaXZhdGVMb2cubG9nKCJQdWJsaXNoaW5nIHVwZGF0ZSBjeWNsZSBjb21wbGV0ZWQgZXZlbnQiLCBjb250ZXh0KTsKKyAgICAgICAgUHJpdmF0ZUxvZy5sb2coIlB1Ymxpc2hpbmcgdXBkYXRlIGN5Y2xlIGNvbXBsZXRlZCBldmVudCIpOwogICAgICAgICBVdGlscy5sKCJQdWJsaXNoaW5nIHVwZGF0ZSBjeWNsZSBjb21wbGV0ZWQgZXZlbnQiKTsKICAgICAgICAgZm9yIChVcGRhdGVFdmVudExpc3RlbmVyIGxpc3RlbmVyIDogbGlua2VkQ29weU9mTGlzdChzVXBkYXRlRXZlbnRMaXN0ZW5lcnMpKSB7CiAgICAgICAgICAgICBsaXN0ZW5lci51cGRhdGVDeWNsZUNvbXBsZXRlZCgpOwpAQCAtNTgyLDcgKzU5Myw3IEBACiAgICAgICAgIH0KIAogICAgICAgICBVdGlscy5sKCJEb3dubG9hZGVkIG1ldGFkYXRhIDoiLCBuZXdNZXRhZGF0YSk7Ci0gICAgICAgIFByaXZhdGVMb2cubG9nKCJEb3dubG9hZGVkIG1ldGFkYXRhXG4iICsgbmV3TWV0YWRhdGEsIGNvbnRleHQpOworICAgICAgICBQcml2YXRlTG9nLmxvZygiRG93bmxvYWRlZCBtZXRhZGF0YVxuIiArIG5ld01ldGFkYXRhKTsKIAogICAgICAgICBmaW5hbCBBY3Rpb25CYXRjaCBhY3Rpb25zID0gY29tcHV0ZVVwZ3JhZGVUbyhjb250ZXh0LCBjbGllbnRJZCwgbmV3TWV0YWRhdGEpOwogICAgICAgICAvLyBUT0RPOiBDaGVjayB3aXRoIFVYIGhvdyB3ZSBzaG91bGQgcmVwb3J0IHRvIHRoZSB1c2VyCkBAIC02MTAsNyArNjIxLDcgQEAKICAgICAgICAgICAgICAgICBNZXRhZGF0YURiSGVscGVyLkRFU0NSSVBUSU9OX0NPTFVNTiksICJmb3IiLCBkb3dubG9hZFJlY29yZC5tQ2xpZW50SWQpOwogICAgICAgICBQcml2YXRlTG9nLmxvZygiRG93bmxvYWRlZCBhIG5ldyB3b3JkIGxpc3Qgd2l0aCBkZXNjcmlwdGlvbiA6ICIKICAgICAgICAgICAgICAgICArIGRvd25sb2FkUmVjb3JkLm1BdHRyaWJ1dGVzLmdldEFzU3RyaW5nKE1ldGFkYXRhRGJIZWxwZXIuREVTQ1JJUFRJT05fQ09MVU1OKQotICAgICAgICAgICAgICAgICsgIiBmb3IgIiArIGRvd25sb2FkUmVjb3JkLm1DbGllbnRJZCwgY29udGV4dCk7CisgICAgICAgICAgICAgICAgKyAiIGZvciAiICsgZG93bmxvYWRSZWNvcmQubUNsaWVudElkKTsKIAogICAgICAgICBmaW5hbCBTdHJpbmcgbG9jYWxlID0KICAgICAgICAgICAgICAgICBkb3dubG9hZFJlY29yZC5tQXR0cmlidXRlcy5nZXRBc1N0cmluZyhNZXRhZGF0YURiSGVscGVyLkxPQ0FMRV9DT0xVTU4pOwpkaWZmIC0tZ2l0IGEvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvZGljdGlvbmFyeXBhY2svV29yZExpc3RQcmVmZXJlbmNlLmphdmEgYi9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9kaWN0aW9uYXJ5cGFjay9Xb3JkTGlzdFByZWZlcmVuY2UuamF2YQppbmRleCAwZDkyM2FlLi4xMzQwYTQxIDEwMDY0NAotLS0gYS9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9kaWN0aW9uYXJ5cGFjay9Xb3JkTGlzdFByZWZlcmVuY2UuamF2YQorKysgYi9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9kaWN0aW9uYXJ5cGFjay9Xb3JkTGlzdFByZWZlcmVuY2UuamF2YQpAQCAtMTYsMTQgKzE2LDE2IEBACiAKIHBhY2thZ2UgY29tLmFuZHJvaWQuaW5wdXRtZXRob2QuZGljdGlvbmFyeXBhY2s7CiAKLWltcG9ydCBhbmRyb2lkLmFwcC5EaWFsb2c7CiBpbXBvcnQgYW5kcm9pZC5jb250ZW50LkNvbnRleHQ7CiBpbXBvcnQgYW5kcm9pZC5jb250ZW50LlNoYXJlZFByZWZlcmVuY2VzOwotaW1wb3J0IGFuZHJvaWQucHJlZmVyZW5jZS5EaWFsb2dQcmVmZXJlbmNlOworaW1wb3J0IGFuZHJvaWQucHJlZmVyZW5jZS5QcmVmZXJlbmNlOwogaW1wb3J0IGFuZHJvaWQudXRpbC5Mb2c7CiBpbXBvcnQgYW5kcm9pZC52aWV3LlZpZXc7CiBpbXBvcnQgYW5kcm9pZC52aWV3LlZpZXdHcm91cDsKLWltcG9ydCBhbmRyb2lkLndpZGdldC5CdXR0b247CitpbXBvcnQgYW5kcm9pZC52aWV3LlZpZXdQYXJlbnQ7CitpbXBvcnQgYW5kcm9pZC53aWRnZXQuTGlzdFZpZXc7CitpbXBvcnQgYW5kcm9pZC53aWRnZXQuUHJvZ3Jlc3NCYXI7CitpbXBvcnQgYW5kcm9pZC53aWRnZXQuVGV4dFZpZXc7CiAKIGltcG9ydCBjb20uYW5kcm9pZC5pbnB1dG1ldGhvZC5sYXRpbi5SOwogCkBAIC0zNiw3ICszOCw3IEBACiAgKiBwYWNrLiBVcG9uIGJlaW5nIHByZXNzZWQsIGl0IGRpc3BsYXlzIGEgbWVudSB0byBhbGxvdyB0aGUgdXNlciB0byBpbnN0YWxsLCBkaXNhYmxlLAogICogZW5hYmxlIG9yIGRlbGV0ZSBpdCBhcyBhcHByb3ByaWF0ZSBmb3IgdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhlIHdvcmQgbGlzdC4KICAqLwotcHVibGljIGZpbmFsIGNsYXNzIFdvcmRMaXN0UHJlZmVyZW5jZSBleHRlbmRzIERpYWxvZ1ByZWZlcmVuY2UgeworcHVibGljIGZpbmFsIGNsYXNzIFdvcmRMaXN0UHJlZmVyZW5jZSBleHRlbmRzIFByZWZlcmVuY2UgewogICAgIHN0YXRpYyBmaW5hbCBwcml2YXRlIFN0cmluZyBUQUcgPSBXb3JkTGlzdFByZWZlcmVuY2UuY2xhc3MuZ2V0U2ltcGxlTmFtZSgpOwogCiAgICAgLy8gV2hhdCB0byBkaXNwbGF5IGluIHRoZSAic3RhdHVzIiBmaWVsZCB3aGVuIHdlIHJlY2VpdmUgdW5rbm93biBkYXRhIGFzIGEgc3RhdHVzIGZyb20KQEAgLTU5LDI0ICs2MSwyNiBAQAogICAgIHB1YmxpYyBmaW5hbCBpbnQgbVZlcnNpb247CiAgICAgLy8gVGhlIHN0YXR1cwogICAgIHB1YmxpYyBpbnQgbVN0YXR1czsKKyAgICAvLyBUaGUgc2l6ZSBvZiB0aGUgZGljdGlvbmFyeSBmaWxlCisgICAgcHJpdmF0ZSBmaW5hbCBpbnQgbUZpbGVzaXplOwogCi0gICAgLy8gQW5pbWF0aW9uIGRpcmVjdGlvbnMKLSAgICBzdGF0aWMgZmluYWwgcHJpdmF0ZSBpbnQgQU5JTUFUSU9OX0lOID0gMTsKLSAgICBzdGF0aWMgZmluYWwgcHJpdmF0ZSBpbnQgQU5JTUFUSU9OX09VVCA9IDI7Ci0KLSAgICBwcml2YXRlIHN0YXRpYyBCdXR0b24gc0xhc3RDbGlja2VkQWN0aW9uQnV0dG9uID0gbnVsbDsKKyAgICBwcml2YXRlIGZpbmFsIERpY3Rpb25hcnlMaXN0SW50ZXJmYWNlU3RhdGUgbUludGVyZmFjZVN0YXRlOwogICAgIHByaXZhdGUgZmluYWwgT25Xb3JkTGlzdFByZWZlcmVuY2VDbGljayBtUHJlZmVyZW5jZUNsaWNrSGFuZGxlciA9CiAgICAgICAgICAgICBuZXcgT25Xb3JkTGlzdFByZWZlcmVuY2VDbGljaygpOwogICAgIHByaXZhdGUgZmluYWwgT25BY3Rpb25CdXR0b25DbGljayBtQWN0aW9uQnV0dG9uQ2xpY2tIYW5kbGVyID0KICAgICAgICAgICAgIG5ldyBPbkFjdGlvbkJ1dHRvbkNsaWNrKCk7CiAKLSAgICBwdWJsaWMgV29yZExpc3RQcmVmZXJlbmNlKGZpbmFsIENvbnRleHQgY29udGV4dCwgZmluYWwgU3RyaW5nIGNsaWVudElkLCBmaW5hbCBTdHJpbmcgd29yZGxpc3RJZCwKLSAgICAgICAgICAgIGZpbmFsIGludCB2ZXJzaW9uLCBmaW5hbCBMb2NhbGUgbG9jYWxlLCBmaW5hbCBTdHJpbmcgZGVzY3JpcHRpb24sIGZpbmFsIGludCBzdGF0dXMpIHsKKyAgICBwdWJsaWMgV29yZExpc3RQcmVmZXJlbmNlKGZpbmFsIENvbnRleHQgY29udGV4dCwKKyAgICAgICAgICAgIGZpbmFsIERpY3Rpb25hcnlMaXN0SW50ZXJmYWNlU3RhdGUgZGljdGlvbmFyeUxpc3RJbnRlcmZhY2VTdGF0ZSwgZmluYWwgU3RyaW5nIGNsaWVudElkLAorICAgICAgICAgICAgZmluYWwgU3RyaW5nIHdvcmRsaXN0SWQsIGZpbmFsIGludCB2ZXJzaW9uLCBmaW5hbCBMb2NhbGUgbG9jYWxlLAorICAgICAgICAgICAgZmluYWwgU3RyaW5nIGRlc2NyaXB0aW9uLCBmaW5hbCBpbnQgc3RhdHVzLCBmaW5hbCBpbnQgZmlsZXNpemUpIHsKICAgICAgICAgc3VwZXIoY29udGV4dCwgbnVsbCk7CiAgICAgICAgIG1Db250ZXh0ID0gY29udGV4dDsKKyAgICAgICAgbUludGVyZmFjZVN0YXRlID0gZGljdGlvbmFyeUxpc3RJbnRlcmZhY2VTdGF0ZTsKICAgICAgICAgbUNsaWVudElkID0gY2xpZW50SWQ7CiAgICAgICAgIG1WZXJzaW9uID0gdmVyc2lvbjsKICAgICAgICAgbVdvcmRsaXN0SWQgPSB3b3JkbGlzdElkOworICAgICAgICBtRmlsZXNpemUgPSBmaWxlc2l6ZTsKIAogICAgICAgICBzZXRMYXlvdXRSZXNvdXJjZShSLmxheW91dC5kaWN0aW9uYXJ5X2xpbmUpOwogCkBAIC04OSwxMiArOTMsNiBAQAogICAgICAgICBpZiAoc3RhdHVzID09IG1TdGF0dXMpIHJldHVybjsKICAgICAgICAgbVN0YXR1cyA9IHN0YXR1czsKICAgICAgICAgc2V0U3VtbWFyeShnZXRTdW1tYXJ5KHN0YXR1cykpOwotICAgICAgICAvLyBJZiB3ZSBhcmUgY3VycmVudGx5IGRpc3BsYXlpbmcgdGhlIGRpYWxvZywgd2Ugc2hvdWxkIHVwZGF0ZSBpdCwgb3IgYXQgbGVhc3QKLSAgICAgICAgLy8gZGlzbWlzcyBpdC4KLSAgICAgICAgZmluYWwgRGlhbG9nIGRpYWxvZyA9IGdldERpYWxvZygpOwotICAgICAgICBpZiAobnVsbCAhPSBkaWFsb2cpIHsKLSAgICAgICAgICAgIGRpYWxvZy5kaXNtaXNzKCk7Ci0gICAgICAgIH0KICAgICB9CiAKICAgICBwcml2YXRlIFN0cmluZyBnZXRTdW1tYXJ5KGZpbmFsIGludCBzdGF0dXMpIHsKQEAgLTExNywyOSArMTE1LDMxIEBACiAgICAgICAgIH0KICAgICB9CiAKKyAgICAvLyBUaGUgdGFibGUgYmVsb3cgbmVlZHMgdG8gYmUga2VwdCBpbiBzeW5jIHdpdGggTWV0YWRhdGFEYkhlbHBlci5TVEFUVVNfKiBzaW5jZSBpdCB1c2VzCisgICAgLy8gdGhlIHZhbHVlcyBhcyBpbmRpY2VzLgogICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBzU3RhdHVzQWN0aW9uTGlzdFtdW10gPSB7CiAgICAgICAgIC8vIE1ldGFkYXRhRGJIZWxwZXIuU1RBVFVTX1VOS05PV04KICAgICAgICAge30sCiAgICAgICAgIC8vIE1ldGFkYXRhRGJIZWxwZXIuU1RBVFVTX0FWQUlMQUJMRQotICAgICAgICB7IFIuc3RyaW5nLmluc3RhbGxfZGljdCwgQUNUSU9OX0VOQUJMRV9ESUNUIH0sCisgICAgICAgIHsgQnV0dG9uU3dpdGNoZXIuU1RBVFVTX0lOU1RBTEwsIEFDVElPTl9FTkFCTEVfRElDVCB9LAogICAgICAgICAvLyBNZXRhZGF0YURiSGVscGVyLlNUQVRVU19ET1dOTE9BRElORwotICAgICAgICB7IFIuc3RyaW5nLmNhbmNlbF9kb3dubG9hZF9kaWN0LCBBQ1RJT05fRElTQUJMRV9ESUNUIH0sCisgICAgICAgIHsgQnV0dG9uU3dpdGNoZXIuU1RBVFVTX0NBTkNFTCwgQUNUSU9OX0RJU0FCTEVfRElDVCB9LAogICAgICAgICAvLyBNZXRhZGF0YURiSGVscGVyLlNUQVRVU19JTlNUQUxMRUQKLSAgICAgICAgeyBSLnN0cmluZy5kZWxldGVfZGljdCwgQUNUSU9OX0RFTEVURV9ESUNUIH0sCisgICAgICAgIHsgQnV0dG9uU3dpdGNoZXIuU1RBVFVTX0RFTEVURSwgQUNUSU9OX0RFTEVURV9ESUNUIH0sCiAgICAgICAgIC8vIE1ldGFkYXRhRGJIZWxwZXIuU1RBVFVTX0RJU0FCTEVECi0gICAgICAgIHsgUi5zdHJpbmcuZGVsZXRlX2RpY3QsIEFDVElPTl9ERUxFVEVfRElDVCB9LAorICAgICAgICB7IEJ1dHRvblN3aXRjaGVyLlNUQVRVU19ERUxFVEUsIEFDVElPTl9ERUxFVEVfRElDVCB9LAogICAgICAgICAvLyBNZXRhZGF0YURiSGVscGVyLlNUQVRVU19ERUxFVElORwogICAgICAgICAvLyBXZSBzaG93ICdpbnN0YWxsJyBiZWNhdXNlIHRoZSBmaWxlIGlzIHN1cHBvc2VkIHRvIGJlIGRlbGV0ZWQuCiAgICAgICAgIC8vIFRoZSB1c2VyIG1heSByZWluc3RhbGwgaXQuCi0gICAgICAgIHsgUi5zdHJpbmcuaW5zdGFsbF9kaWN0LCBBQ1RJT05fRU5BQkxFX0RJQ1QgfQorICAgICAgICB7IEJ1dHRvblN3aXRjaGVyLlNUQVRVU19JTlNUQUxMLCBBQ1RJT05fRU5BQkxFX0RJQ1QgfQogICAgIH07CiAKLSAgICBwcml2YXRlIENoYXJTZXF1ZW5jZSBnZXRCdXR0b25MYWJlbChmaW5hbCBpbnQgc3RhdHVzKSB7CisgICAgcHJpdmF0ZSBpbnQgZ2V0QnV0dG9uU3dpdGNoZXJTdGF0dXMoZmluYWwgaW50IHN0YXR1cykgewogICAgICAgICBpZiAoc3RhdHVzID49IHNTdGF0dXNBY3Rpb25MaXN0Lmxlbmd0aCkgewogICAgICAgICAgICAgTG9nLmUoVEFHLCAiVW5rbm93biBzdGF0dXMgIiArIHN0YXR1cyk7Ci0gICAgICAgICAgICByZXR1cm4gIiI7CisgICAgICAgICAgICByZXR1cm4gQnV0dG9uU3dpdGNoZXIuU1RBVFVTX05PX0JVVFRPTjsKICAgICAgICAgfQotICAgICAgICByZXR1cm4gbUNvbnRleHQuZ2V0U3RyaW5nKHNTdGF0dXNBY3Rpb25MaXN0W3N0YXR1c11bMF0pOworICAgICAgICByZXR1cm4gc1N0YXR1c0FjdGlvbkxpc3Rbc3RhdHVzXVswXTsKICAgICB9CiAKICAgICBwcml2YXRlIHN0YXRpYyBpbnQgZ2V0QWN0aW9uSWRGcm9tU3RhdHVzQW5kTWVudUVudHJ5KGZpbmFsIGludCBzdGF0dXMpIHsKQEAgLTE5NCwzNiArMTk0LDY5IEBACiAgICAgcHJvdGVjdGVkIHZvaWQgb25CaW5kVmlldyhmaW5hbCBWaWV3IHZpZXcpIHsKICAgICAgICAgc3VwZXIub25CaW5kVmlldyh2aWV3KTsKICAgICAgICAgKChWaWV3R3JvdXApdmlldykuc2V0TGF5b3V0VHJhbnNpdGlvbihudWxsKTsKLSAgICAgICAgZmluYWwgQnV0dG9uIGJ1dHRvbiA9IChCdXR0b24pdmlldy5maW5kVmlld0J5SWQoUi5pZC53b3JkbGlzdF9idXR0b24pOwotICAgICAgICBidXR0b24uc2V0VGV4dChnZXRCdXR0b25MYWJlbChtU3RhdHVzKSk7Ci0gICAgICAgIGJ1dHRvbi5zZXRWaXNpYmlsaXR5KFZpZXcuSU5WSVNJQkxFKTsKLSAgICAgICAgYnV0dG9uLnNldE9uQ2xpY2tMaXN0ZW5lcihtQWN0aW9uQnV0dG9uQ2xpY2tIYW5kbGVyKTsKKworICAgICAgICBmaW5hbCBQcm9ncmVzc0JhciBwcm9ncmVzc0JhciA9CisgICAgICAgICAgICAgICAgKFByb2dyZXNzQmFyKXZpZXcuZmluZFZpZXdCeUlkKFIuaWQuZGljdGlvbmFyeV9saW5lX3Byb2dyZXNzX2Jhcik7CisgICAgICAgIGZpbmFsIFRleHRWaWV3IHN0YXR1cyA9IChUZXh0Vmlldyl2aWV3LmZpbmRWaWV3QnlJZChhbmRyb2lkLlIuaWQuc3VtbWFyeSk7CisgICAgICAgIHByb2dyZXNzQmFyLnNldE1heChtRmlsZXNpemUpOworICAgICAgICBmaW5hbCBib29sZWFuIHNob3dQcm9ncmVzc0JhciA9IChNZXRhZGF0YURiSGVscGVyLlNUQVRVU19ET1dOTE9BRElORyA9PSBtU3RhdHVzKTsKKyAgICAgICAgc3RhdHVzLnNldFZpc2liaWxpdHkoc2hvd1Byb2dyZXNzQmFyID8gVmlldy5JTlZJU0lCTEUgOiBWaWV3LlZJU0lCTEUpOworICAgICAgICBwcm9ncmVzc0Jhci5zZXRWaXNpYmlsaXR5KHNob3dQcm9ncmVzc0JhciA/IFZpZXcuVklTSUJMRSA6IFZpZXcuSU5WSVNJQkxFKTsKKworICAgICAgICBmaW5hbCBCdXR0b25Td2l0Y2hlciBidXR0b25Td2l0Y2hlciA9CisgICAgICAgICAgICAgICAgKEJ1dHRvblN3aXRjaGVyKXZpZXcuZmluZFZpZXdCeUlkKFIuaWQud29yZGxpc3RfYnV0dG9uX3N3aXRjaGVyKTsKKyAgICAgICAgaWYgKG1JbnRlcmZhY2VTdGF0ZS5pc09wZW4obVdvcmRsaXN0SWQpKSB7CisgICAgICAgICAgICAvLyBUaGUgYnV0dG9uIGlzIG9wZW4uCisgICAgICAgICAgICBmaW5hbCBpbnQgcHJldmlvdXNTdGF0dXMgPSBtSW50ZXJmYWNlU3RhdGUuZ2V0U3RhdHVzKG1Xb3JkbGlzdElkKTsKKyAgICAgICAgICAgIGJ1dHRvblN3aXRjaGVyLnNldFN0YXR1c0FuZFVwZGF0ZVZpc3VhbHMoZ2V0QnV0dG9uU3dpdGNoZXJTdGF0dXMocHJldmlvdXNTdGF0dXMpKTsKKyAgICAgICAgICAgIGlmIChwcmV2aW91c1N0YXR1cyAhPSBtU3RhdHVzKSB7CisgICAgICAgICAgICAgICAgLy8gV2UgY29tZSBoZXJlIGlmIHRoZSBzdGF0dXMgaGFzIGNoYW5nZWQgc2luY2UgbGFzdCB0aW1lLiBXZSBuZWVkIHRvIGFuaW1hdGUKKyAgICAgICAgICAgICAgICAvLyB0aGUgdHJhbnNpdGlvbi4KKyAgICAgICAgICAgICAgICBidXR0b25Td2l0Y2hlci5zZXRTdGF0dXNBbmRVcGRhdGVWaXN1YWxzKGdldEJ1dHRvblN3aXRjaGVyU3RhdHVzKG1TdGF0dXMpKTsKKyAgICAgICAgICAgICAgICBtSW50ZXJmYWNlU3RhdGUuc2V0T3BlbihtV29yZGxpc3RJZCwgbVN0YXR1cyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBUaGUgYnV0dG9uIGlzIGNsb3NlZC4KKyAgICAgICAgICAgIGJ1dHRvblN3aXRjaGVyLnNldFN0YXR1c0FuZFVwZGF0ZVZpc3VhbHMoQnV0dG9uU3dpdGNoZXIuU1RBVFVTX05PX0JVVFRPTik7CisgICAgICAgIH0KKyAgICAgICAgYnV0dG9uU3dpdGNoZXIuc2V0SW50ZXJuYWxPbkNsaWNrTGlzdGVuZXIobUFjdGlvbkJ1dHRvbkNsaWNrSGFuZGxlcik7CiAgICAgICAgIHZpZXcuc2V0T25DbGlja0xpc3RlbmVyKG1QcmVmZXJlbmNlQ2xpY2tIYW5kbGVyKTsKICAgICB9CiAKICAgICBwcml2YXRlIGNsYXNzIE9uV29yZExpc3RQcmVmZXJlbmNlQ2xpY2sgaW1wbGVtZW50cyBWaWV3Lk9uQ2xpY2tMaXN0ZW5lciB7CiAgICAgICAgIEBPdmVycmlkZQogICAgICAgICBwdWJsaWMgdm9pZCBvbkNsaWNrKGZpbmFsIFZpZXcgdikgewotICAgICAgICAgICAgZmluYWwgQnV0dG9uIGJ1dHRvbiA9IChCdXR0b24pdi5maW5kVmlld0J5SWQoUi5pZC53b3JkbGlzdF9idXR0b24pOwotICAgICAgICAgICAgaWYgKG51bGwgIT0gc0xhc3RDbGlja2VkQWN0aW9uQnV0dG9uKSB7Ci0gICAgICAgICAgICAgICAgYW5pbWF0ZUJ1dHRvbihzTGFzdENsaWNrZWRBY3Rpb25CdXR0b24sIEFOSU1BVElPTl9PVVQpOworICAgICAgICAgICAgLy8gTm90ZSA6IHYgaXMgdGhlIHByZWZlcmVuY2UgdmlldworICAgICAgICAgICAgZmluYWwgVmlld1BhcmVudCBwYXJlbnQgPSB2LmdldFBhcmVudCgpOworICAgICAgICAgICAgLy8gSnVzdCBpbiBjYXNlIHNvbWV0aGluZyBjaGFuZ2VkIGluIHRoZSBmcmFtZXdvcmssIHRlc3QgZm9yIHRoZSBjb25jcmV0ZSBjbGFzcworICAgICAgICAgICAgaWYgKCEocGFyZW50IGluc3RhbmNlb2YgTGlzdFZpZXcpKSByZXR1cm47CisgICAgICAgICAgICBmaW5hbCBMaXN0VmlldyBsaXN0VmlldyA9IChMaXN0VmlldylwYXJlbnQ7CisgICAgICAgICAgICBmaW5hbCBpbnQgaW5kZXhUb09wZW47CisgICAgICAgICAgICAvLyBDbG9zZSBhbGwgZmlyc3QsIHdlJ2xsIG9wZW4gYmFjayBhbnkgaXRlbSB0aGF0IG5lZWRzIHRvIGJlIG9wZW4uCisgICAgICAgICAgICBmaW5hbCBib29sZWFuIHdhc09wZW4gPSBtSW50ZXJmYWNlU3RhdGUuaXNPcGVuKG1Xb3JkbGlzdElkKTsKKyAgICAgICAgICAgIG1JbnRlcmZhY2VTdGF0ZS5jbG9zZUFsbCgpOworICAgICAgICAgICAgaWYgKHdhc09wZW4pIHsKKyAgICAgICAgICAgICAgICAvLyBUaGlzIGJ1dHRvbiBiZWluZyBzaG93bi4gVGFrZSBub3RlIHRoYXQgd2UgZG9uJ3Qgd2FudCB0byBvcGVuIGFueSBidXR0b24gaW4gdGhlCisgICAgICAgICAgICAgICAgLy8gbG9vcCBiZWxvdy4KKyAgICAgICAgICAgICAgICBpbmRleFRvT3BlbiA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAvLyBUaGlzIGJ1dHRvbiB3YXMgbm90IGJlaW5nIHNob3duLiBPcGVuIGl0LCBhbmQgcmVtZW1iZXIgdGhlIGluZGV4IG9mIHRoaXMKKyAgICAgICAgICAgICAgICAvLyBjaGlsZCBhcyB0aGUgb25lIHRvIG9wZW4gaW4gdGhlIGZvbGxvd2luZyBsb29wLgorICAgICAgICAgICAgICAgIG1JbnRlcmZhY2VTdGF0ZS5zZXRPcGVuKG1Xb3JkbGlzdElkLCBtU3RhdHVzKTsKKyAgICAgICAgICAgICAgICBpbmRleFRvT3BlbiA9IGxpc3RWaWV3LmluZGV4T2ZDaGlsZCh2KTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGFuaW1hdGVCdXR0b24oYnV0dG9uLCBBTklNQVRJT05fSU4pOwotICAgICAgICAgICAgc0xhc3RDbGlja2VkQWN0aW9uQnV0dG9uID0gYnV0dG9uOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcHJpdmF0ZSB2b2lkIGFuaW1hdGVCdXR0b24oZmluYWwgQnV0dG9uIGJ1dHRvbiwgZmluYWwgaW50IGRpcmVjdGlvbikgewotICAgICAgICBmaW5hbCBmbG9hdCBvdXRlclggPSAoKFZpZXcpYnV0dG9uLmdldFBhcmVudCgpKS5nZXRXaWR0aCgpOwotICAgICAgICBmaW5hbCBmbG9hdCBpbm5lclggPSBidXR0b24uZ2V0WCgpIC0gYnV0dG9uLmdldFRyYW5zbGF0aW9uWCgpOwotICAgICAgICBpZiAoVmlldy5JTlZJU0lCTEUgPT0gYnV0dG9uLmdldFZpc2liaWxpdHkoKSkgewotICAgICAgICAgICAgYnV0dG9uLnNldFRyYW5zbGF0aW9uWChvdXRlclggLSBpbm5lclgpOwotICAgICAgICAgICAgYnV0dG9uLnNldFZpc2liaWxpdHkoVmlldy5WSVNJQkxFKTsKLSAgICAgICAgfQotICAgICAgICBpZiAoQU5JTUFUSU9OX0lOID09IGRpcmVjdGlvbikgewotICAgICAgICAgICAgYnV0dG9uLmFuaW1hdGUoKS50cmFuc2xhdGlvblgoMCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBidXR0b24uYW5pbWF0ZSgpLnRyYW5zbGF0aW9uWChvdXRlclggLSBpbm5lclgpOworICAgICAgICAgICAgZmluYWwgaW50IGxhc3REaXNwbGF5ZWRJbmRleCA9CisgICAgICAgICAgICAgICAgICAgIGxpc3RWaWV3LmdldExhc3RWaXNpYmxlUG9zaXRpb24oKSAtIGxpc3RWaWV3LmdldEZpcnN0VmlzaWJsZVBvc2l0aW9uKCk7CisgICAgICAgICAgICAvLyBUaGUgImxhc3REaXNwbGF5ZWRJbmRleCIgaXMgYWN0dWFsbHkgZGlzcGxheWVkLCBoZW5jZSB0aGUgPD0KKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDw9IGxhc3REaXNwbGF5ZWRJbmRleDsgKytpKSB7CisgICAgICAgICAgICAgICAgZmluYWwgQnV0dG9uU3dpdGNoZXIgYnV0dG9uU3dpdGNoZXIgPSAoQnV0dG9uU3dpdGNoZXIpbGlzdFZpZXcuZ2V0Q2hpbGRBdChpKQorICAgICAgICAgICAgICAgICAgICAgICAgLmZpbmRWaWV3QnlJZChSLmlkLndvcmRsaXN0X2J1dHRvbl9zd2l0Y2hlcik7CisgICAgICAgICAgICAgICAgaWYgKGkgPT0gaW5kZXhUb09wZW4pIHsKKyAgICAgICAgICAgICAgICAgICAgYnV0dG9uU3dpdGNoZXIuc2V0U3RhdHVzQW5kVXBkYXRlVmlzdWFscyhnZXRCdXR0b25Td2l0Y2hlclN0YXR1cyhtU3RhdHVzKSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgYnV0dG9uU3dpdGNoZXIuc2V0U3RhdHVzQW5kVXBkYXRlVmlzdWFscyhCdXR0b25Td2l0Y2hlci5TVEFUVVNfTk9fQlVUVE9OKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2tleWJvYXJkL01haW5LZXlib2FyZFZpZXcuamF2YSBiL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2tleWJvYXJkL01haW5LZXlib2FyZFZpZXcuamF2YQppbmRleCBiYTc4ZDAxLi5hMGFjNDc1IDEwMDY0NAotLS0gYS9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9rZXlib2FyZC9NYWluS2V5Ym9hcmRWaWV3LmphdmEKKysrIGIvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2Qva2V5Ym9hcmQvTWFpbktleWJvYXJkVmlldy5qYXZhCkBAIC0zMzMsNiArMzMzLDEwIEBACiAKICAgICAgICAgcHJpdmF0ZSBzdGF0aWMgdm9pZCBjYW5jZWxBbmRTdGFydEFuaW1hdG9ycyhmaW5hbCBPYmplY3RBbmltYXRvciBhbmltYXRvclRvQ2FuY2VsLAogICAgICAgICAgICAgICAgIGZpbmFsIE9iamVjdEFuaW1hdG9yIGFuaW1hdG9yVG9TdGFydCkgeworICAgICAgICAgICAgaWYgKGFuaW1hdG9yVG9DYW5jZWwgPT0gbnVsbCB8fCBhbmltYXRvclRvU3RhcnQgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgIC8vIFRPRE86IFN0b3AgdXNpbmcgbnVsbCBhcyBhIG5vLW9wZXJhdGlvbiBhbmltYXRvci4KKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBmbG9hdCBzdGFydEZyYWN0aW9uID0gMC4wZjsKICAgICAgICAgICAgIGlmIChhbmltYXRvclRvQ2FuY2VsLmlzU3RhcnRlZCgpKSB7CiAgICAgICAgICAgICAgICAgYW5pbWF0b3JUb0NhbmNlbC5jYW5jZWwoKTsKQEAgLTM2Niw3ICszNzAsOSBAQAogICAgICAgICAgICAgLy8gV2hlbiB1c2VyIGhpdHMgdGhlIHNwYWNlIG9yIHRoZSBlbnRlciBrZXksIGp1c3QgY2FuY2VsIHRoZSB3aGlsZS10eXBpbmcgdGltZXIuCiAgICAgICAgICAgICBmaW5hbCBpbnQgdHlwZWRDb2RlID0gdHlwZWRLZXkubUNvZGU7CiAgICAgICAgICAgICBpZiAodHlwZWRDb2RlID09IENvbnN0YW50cy5DT0RFX1NQQUNFIHx8IHR5cGVkQ29kZSA9PSBDb25zdGFudHMuQ09ERV9FTlRFUikgewotICAgICAgICAgICAgICAgIHN0YXJ0V2hpbGVUeXBpbmdGYWRlaW5BbmltYXRpb24oa2V5Ym9hcmRWaWV3KTsKKyAgICAgICAgICAgICAgICBpZiAoaXNUeXBpbmcpIHsKKyAgICAgICAgICAgICAgICAgICAgc3RhcnRXaGlsZVR5cGluZ0ZhZGVpbkFuaW1hdGlvbihrZXlib2FyZFZpZXcpOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAKQEAgLTU4MSw2ICs1ODcsNyBAQAogCiAgICAgcHJpdmF0ZSBPYmplY3RBbmltYXRvciBsb2FkT2JqZWN0QW5pbWF0b3IoZmluYWwgaW50IHJlc0lkLCBmaW5hbCBPYmplY3QgdGFyZ2V0KSB7CiAgICAgICAgIGlmIChyZXNJZCA9PSAwKSB7CisgICAgICAgICAgICAvLyBUT0RPOiBTdG9wIHJldHVybmluZyBudWxsLgogICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgIH0KICAgICAgICAgZmluYWwgT2JqZWN0QW5pbWF0b3IgYW5pbWF0b3IgPSAoT2JqZWN0QW5pbWF0b3IpQW5pbWF0b3JJbmZsYXRlci5sb2FkQW5pbWF0b3IoCkBAIC02MDksOCArNjE2LDE4IEBACiAKICAgICBARXh0ZXJuYWxseVJlZmVyZW5jZWQKICAgICBwdWJsaWMgdm9pZCBzZXRBbHRDb2RlS2V5V2hpbGVUeXBpbmdBbmltQWxwaGEoZmluYWwgaW50IGFscGhhKSB7CisgICAgICAgIGlmIChtQWx0Q29kZUtleVdoaWxlVHlwaW5nQW5pbUFscGhhID09IGFscGhhKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgLy8gVXBkYXRlIHRoZSB2aXN1YWwgb2YgYWx0LWNvZGUta2V5LXdoaWxlLXR5cGluZy4KICAgICAgICAgbUFsdENvZGVLZXlXaGlsZVR5cGluZ0FuaW1BbHBoYSA9IGFscGhhOwotICAgICAgICB1cGRhdGVBbHRDb2RlS2V5V2hpbGVUeXBpbmcoKTsKKyAgICAgICAgZmluYWwgS2V5Ym9hcmQga2V5Ym9hcmQgPSBnZXRLZXlib2FyZCgpOworICAgICAgICBpZiAoa2V5Ym9hcmQgPT0gbnVsbCkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGZvciAoZmluYWwgS2V5IGtleSA6IGtleWJvYXJkLm1BbHRDb2RlS2V5c1doaWxlVHlwaW5nKSB7CisgICAgICAgICAgICBpbnZhbGlkYXRlS2V5KGtleSk7CisgICAgICAgIH0KICAgICB9CiAKICAgICBwdWJsaWMgdm9pZCBzZXRLZXlib2FyZEFjdGlvbkxpc3RlbmVyKGZpbmFsIEtleWJvYXJkQWN0aW9uTGlzdGVuZXIgbGlzdGVuZXIpIHsKQEAgLTEwNTQsNiArMTA3MSw3IEBACiAKICAgICBAT3ZlcnJpZGUKICAgICBwdWJsaWMgdm9pZCBvblNob3dNb3JlS2V5c1BhbmVsKGZpbmFsIE1vcmVLZXlzUGFuZWwgcGFuZWwpIHsKKyAgICAgICAgbG9jYXRlUHJldmlld1BsYWNlclZpZXcoKTsKICAgICAgICAgaWYgKGlzU2hvd2luZ01vcmVLZXlzUGFuZWwoKSkgewogICAgICAgICAgICAgb25EaXNtaXNzTW9yZUtleXNQYW5lbCgpOwogICAgICAgICB9CkBAIC0xMTg5LDEwICsxMjA3LDEyIEBACiAgICAgICAgICAgICAgICAgaWYgKEVOQUJMRV9VU0FCSUxJVFlfU1RVRFlfTE9HKSB7CiAgICAgICAgICAgICAgICAgICAgIHdyaXRlVXNhYmlsaXR5U3R1ZHlMb2cobWUsIGFjdGlvbiwgZXZlbnRUaW1lLCBpLCBwb2ludGVySWQsIHB4LCBweSk7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChQcm9kdWN0aW9uRmxhZy5VU0VTX0RFVkVMT1BNRU5UX09OTFlfRElBR05PU1RJQ1MpIHsKLSAgICAgICAgICAgICAgICAgICAgUmVzZWFyY2hMb2dnZXIubWFpbktleWJvYXJkVmlld19wcm9jZXNzTW90aW9uRXZlbnQoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWUsIGFjdGlvbiwgZXZlbnRUaW1lLCBpLCBwb2ludGVySWQsIHB4LCBweSk7Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIC8vIFRPRE86IFRoaXMgc2VlbXMgdG8gYmUgbm8gbG9uZ2VyIG5lY2Vzc2FyeSwgYW5kIGNvbmZ1c2luZyBiZWNhdXNlIGl0IGxlYWRzIHRvCisgICAgICAgICAgICAgICAgLy8gZHVwbGljYXRlIE1vdGlvbkV2ZW50cyBiZWluZyByZWNvcmRlZC4KKyAgICAgICAgICAgICAgICAvLyBpZiAoUHJvZHVjdGlvbkZsYWcuVVNFU19ERVZFTE9QTUVOVF9PTkxZX0RJQUdOT1NUSUNTKSB7CisgICAgICAgICAgICAgICAgLy8gICAgIFJlc2VhcmNoTG9nZ2VyLm1haW5LZXlib2FyZFZpZXdfcHJvY2Vzc01vdGlvbkV2ZW50KAorICAgICAgICAgICAgICAgIC8vICAgICAgICAgICAgIG1lLCBhY3Rpb24sIGV2ZW50VGltZSwgaSwgcG9pbnRlcklkLCBweCwgcHkpOworICAgICAgICAgICAgICAgIC8vIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGZpbmFsIFBvaW50ZXJUcmFja2VyIHRyYWNrZXIgPSBQb2ludGVyVHJhY2tlci5nZXRQb2ludGVyVHJhY2tlcihpZCwgdGhpcyk7CkBAIC0xMjc0LDE2ICsxMjk0LDYgQEAKICAgICAgICAgaW52YWxpZGF0ZUtleShzaG9ydGN1dEtleSk7CiAgICAgfQogCi0gICAgcHJpdmF0ZSB2b2lkIHVwZGF0ZUFsdENvZGVLZXlXaGlsZVR5cGluZygpIHsKLSAgICAgICAgZmluYWwgS2V5Ym9hcmQga2V5Ym9hcmQgPSBnZXRLZXlib2FyZCgpOwotICAgICAgICBpZiAoa2V5Ym9hcmQgPT0gbnVsbCkgewotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIGZvciAoZmluYWwgS2V5IGtleSA6IGtleWJvYXJkLm1BbHRDb2RlS2V5c1doaWxlVHlwaW5nKSB7Ci0gICAgICAgICAgICBpbnZhbGlkYXRlS2V5KGtleSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KICAgICBwdWJsaWMgdm9pZCBzdGFydERpc3BsYXlMYW5ndWFnZU9uU3BhY2ViYXIoZmluYWwgYm9vbGVhbiBzdWJ0eXBlQ2hhbmdlZCwKICAgICAgICAgICAgIGZpbmFsIGJvb2xlYW4gbmVlZHNUb0Rpc3BsYXlMYW5ndWFnZSwgZmluYWwgYm9vbGVhbiBoYXNNdWx0aXBsZUVuYWJsZWRJTUVzT3JTdWJ0eXBlcykgewogICAgICAgICBtTmVlZHNUb0Rpc3BsYXlMYW5ndWFnZSA9IG5lZWRzVG9EaXNwbGF5TGFuZ3VhZ2U7CmRpZmYgLS1naXQgYS9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9rZXlib2FyZC9Qb2ludGVyVHJhY2tlci5qYXZhIGIvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2Qva2V5Ym9hcmQvUG9pbnRlclRyYWNrZXIuamF2YQppbmRleCA5MWM0MzE5Li5jMWIxNDhkIDEwMDY0NAotLS0gYS9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9rZXlib2FyZC9Qb2ludGVyVHJhY2tlci5qYXZhCisrKyBiL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2tleWJvYXJkL1BvaW50ZXJUcmFja2VyLmphdmEKQEAgLTMxOCw4ICszMTgsOCBAQAogICAgIC8vIHRydWUgaWYga2V5Ym9hcmQgbGF5b3V0IGhhcyBiZWVuIGNoYW5nZWQuCiAgICAgcHJpdmF0ZSBib29sZWFuIG1LZXlib2FyZExheW91dEhhc0JlZW5DaGFuZ2VkOwogCi0gICAgLy8gdHJ1ZSBpZiB0aGlzIHBvaW50ZXIgaXMgbm8gbG9uZ2VyIHRyYWNraW5nIHRvdWNoIGV2ZW50LgotICAgIHByaXZhdGUgYm9vbGVhbiBtSXNUcmFja2luZ0NhbmNlbGVkOworICAgIC8vIHRydWUgaWYgdGhpcyBwb2ludGVyIGlzIG5vIGxvbmdlciB0cmlnZ2VyaW5nIGFueSBhY3Rpb24gYmVjYXVzZSBpdCBoYXMgYmVlbiBjYW5jZWxlZC4KKyAgICBwcml2YXRlIGJvb2xlYW4gbUlzVHJhY2tpbmdGb3JBY3Rpb25EaXNhYmxlZDsKIAogICAgIC8vIHRoZSBtb3JlIGtleXMgcGFuZWwgY3VycmVudGx5IGJlaW5nIHNob3duLiBlcXVhbHMgbnVsbCBpZiBubyBwYW5lbCBpcyBhY3RpdmUuCiAgICAgcHJpdmF0ZSBNb3JlS2V5c1BhbmVsIG1Nb3JlS2V5c1BhbmVsOwpAQCAtNDQxLDcgKzQ0MSwxMSBAQAogCiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIGtleWJvYXJkIGhhcyBiZWVuIGNoYW5nZWQgYnkgdGhpcyBjYWxsYmFjay4KICAgICBwcml2YXRlIGJvb2xlYW4gY2FsbExpc3RlbmVyT25QcmVzc0FuZENoZWNrS2V5Ym9hcmRMYXlvdXRDaGFuZ2UoZmluYWwgS2V5IGtleSkgewotICAgICAgICBpZiAoc0luR2VzdHVyZSB8fCBtSXNEZXRlY3RpbmdHZXN0dXJlKSB7CisgICAgICAgIC8vIFdoaWxlIGdlc3R1cmUgaW5wdXQgaXMgZ29pbmcgb24sIHRoaXMgbWV0aG9kIHNob3VsZCBiZSBhIG5vLW9wZXJhdGlvbi4gQnV0IHdoZW4gZ2VzdHVyZQorICAgICAgICAvLyBpbnB1dCBoYXMgYmVlbiBjYW5jZWxlZCwgPGNvZGU+c0luR2VzdHVyZTwvY29kZT4gYW5kIDxjb2RlPm1Jc0RldGVjdGluZ0dlc3R1cmU8L2NvZGU+CisgICAgICAgIC8vIGFyZSBzZXQgdG8gZmFsc2UuIFRvIGtlZXAgdGhpcyBtZXRob2QgaXMgYSBuby1vcGVyYXRpb24sCisgICAgICAgIC8vIDxjb2RlPm1Jc1RyYWNraW5nRm9yQWN0aW9uRGlzYWJsZWQ8L2NvZGU+IHNob3VsZCBhbHNvIGJlIHRha2VuIGFjY291bnQgb2YuCisgICAgICAgIGlmIChzSW5HZXN0dXJlIHx8IG1Jc0RldGVjdGluZ0dlc3R1cmUgfHwgbUlzVHJhY2tpbmdGb3JBY3Rpb25EaXNhYmxlZCkgewogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIGZpbmFsIGJvb2xlYW4gaWdub3JlTW9kaWZpZXJLZXkgPSBtSXNJblNsaWRpbmdLZXlJbnB1dCAmJiBrZXkuaXNNb2RpZmllcigpOwpAQCAtNTAwLDcgKzUwNCw4IEBACiAgICAgLy8gcHJpbWFyeUNvZGUgaXMgZGlmZmVyZW50IGZyb20ge0BsaW5rIEtleSNtQ29kZX0uCiAgICAgcHJpdmF0ZSB2b2lkIGNhbGxMaXN0ZW5lck9uUmVsZWFzZShmaW5hbCBLZXkga2V5LCBmaW5hbCBpbnQgcHJpbWFyeUNvZGUsCiAgICAgICAgICAgICBmaW5hbCBib29sZWFuIHdpdGhTbGlkaW5nKSB7Ci0gICAgICAgIGlmIChzSW5HZXN0dXJlIHx8IG1Jc0RldGVjdGluZ0dlc3R1cmUpIHsKKyAgICAgICAgLy8gU2VlIHRoZSBjb21tZW50IGF0IHtAbGluayAjY2FsbExpc3RlbmVyT25QcmVzc0FuZENoZWNrS2V5Ym9hcmRMYXlvdXRDaGFuZ2UoS2V5fX0uCisgICAgICAgIGlmIChzSW5HZXN0dXJlIHx8IG1Jc0RldGVjdGluZ0dlc3R1cmUgfHwgbUlzVHJhY2tpbmdGb3JBY3Rpb25EaXNhYmxlZCkgewogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIGZpbmFsIGJvb2xlYW4gaWdub3JlTW9kaWZpZXJLZXkgPSBtSXNJblNsaWRpbmdLZXlJbnB1dCAmJiBrZXkuaXNNb2RpZmllcigpOwpAQCAtNzQ1LDcgKzc1MCw3IEBACiAgICAgICAgIGlmIChrZXkgIT0gbnVsbCkgewogICAgICAgICAgICAgdXBkYXRlQmF0Y2hJbnB1dChldmVudFRpbWUpOwogICAgICAgICB9Ci0gICAgICAgIGlmIChtSXNUcmFja2luZ0NhbmNlbGVkKSB7CisgICAgICAgIGlmIChtSXNUcmFja2luZ0ZvckFjdGlvbkRpc2FibGVkKSB7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgbURyYXdpbmdQcm94eS5zaG93R2VzdHVyZVByZXZpZXdUcmFpbCh0aGlzKTsKQEAgLTc3Nyw3ICs3ODIsNyBAQAogICAgICAgICAgICAgICAgIHNJbkdlc3R1cmUgPSBmYWxzZTsKICAgICAgICAgICAgICAgICBzVGltZVJlY29yZGVyLm9uRW5kQmF0Y2hJbnB1dChldmVudFRpbWUpOwogICAgICAgICAgICAgICAgIG1UaW1lclByb3h5LmNhbmNlbEFsbFVwZGF0ZUJhdGNoSW5wdXRUaW1lcnMoKTsKLSAgICAgICAgICAgICAgICBpZiAoIW1Jc1RyYWNraW5nQ2FuY2VsZWQpIHsKKyAgICAgICAgICAgICAgICBpZiAoIW1Jc1RyYWNraW5nRm9yQWN0aW9uRGlzYWJsZWQpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKERFQlVHX0xJU1RFTkVSKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBMb2cuZChUQUcsIFN0cmluZy5mb3JtYXQoIlslZF0gb25FbmRCYXRjaElucHV0ICAgOiBiYXRjaFBvaW50cz0lZCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1Qb2ludGVySWQsIHNBZ2dyZWdyYXRlZFBvaW50ZXJzLmdldFBvaW50ZXJTaXplKCkpKTsKQEAgLTc4Niw3ICs3OTEsNyBAQAogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBpZiAobUlzVHJhY2tpbmdDYW5jZWxlZCkgeworICAgICAgICBpZiAobUlzVHJhY2tpbmdGb3JBY3Rpb25EaXNhYmxlZCkgewogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIG1EcmF3aW5nUHJveHkuc2hvd0dlc3R1cmVQcmV2aWV3VHJhaWwodGhpcyk7CkBAIC04NDYsNyArODUxLDcgQEAKICAgICAgICAgICAgICAgICBpZiAoUHJvZHVjdGlvbkZsYWcuVVNFU19ERVZFTE9QTUVOVF9PTkxZX0RJQUdOT1NUSUNTKSB7CiAgICAgICAgICAgICAgICAgICAgIFJlc2VhcmNoTG9nZ2VyLnBvaW50ZXJUcmFja2VyX29uRG93bkV2ZW50KGRlbHRhVCwgZGlzdGFuY2UgKiBkaXN0YW5jZSk7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGNhbmNlbFRyYWNraW5nKCk7CisgICAgICAgICAgICAgICAgY2FuY2VsVHJhY2tpbmdGb3JBY3Rpb24oKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTg4Nyw3ICs4OTIsNyBAQAogICAgICAgICAgICAgICAgIHx8IChrZXkgIT0gbnVsbCAmJiBrZXkuaXNNb2RpZmllcigpKQogICAgICAgICAgICAgICAgIHx8IG1LZXlEZXRlY3Rvci5hbHdheXNBbGxvd3NTbGlkaW5nSW5wdXQoKTsKICAgICAgICAgbUtleWJvYXJkTGF5b3V0SGFzQmVlbkNoYW5nZWQgPSBmYWxzZTsKLSAgICAgICAgbUlzVHJhY2tpbmdDYW5jZWxlZCA9IGZhbHNlOworICAgICAgICBtSXNUcmFja2luZ0ZvckFjdGlvbkRpc2FibGVkID0gZmFsc2U7CiAgICAgICAgIHJlc2V0U2xpZGluZ0tleUlucHV0KCk7CiAgICAgICAgIGlmIChrZXkgIT0gbnVsbCkgewogICAgICAgICAgICAgLy8gVGhpcyBvblByZXNzIGNhbGwgbWF5IGhhdmUgY2hhbmdlZCBrZXlib2FyZCBsYXlvdXQuIFRob3NlIGNhc2VzIGFyZSBkZXRlY3RlZCBhdApAQCAtOTQ3LDcgKzk1Miw3IEBACiAgICAgICAgIGlmIChERUJVR19NT1ZFX0VWRU5UKSB7CiAgICAgICAgICAgICBwcmludFRvdWNoRXZlbnQoIm9uTW92ZUV2ZW50OiIsIHgsIHksIGV2ZW50VGltZSk7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKG1Jc1RyYWNraW5nQ2FuY2VsZWQpIHsKKyAgICAgICAgaWYgKG1Jc1RyYWNraW5nRm9yQWN0aW9uRGlzYWJsZWQpIHsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC05ODUsNiArOTkwLDkgQEAKICAgICAgICAgICAgIGtleSA9IG9uTW92ZUtleSh4LCB5KTsKICAgICAgICAgfQogICAgICAgICBvbk1vdmVUb05ld0tleShrZXksIHgsIHkpOworICAgICAgICBpZiAobUlzVHJhY2tpbmdGb3JBY3Rpb25EaXNhYmxlZCkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAgICAgICAgIHN0YXJ0TG9uZ1ByZXNzVGltZXIoa2V5KTsKICAgICAgICAgc2V0UHJlc3NlZEtleUdyYXBoaWNzKGtleSwgZXZlbnRUaW1lKTsKICAgICB9CkBAIC0xMDY5LDExICsxMDc3LDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICArICIgZGV0ZWN0ZWQgc2xpZGluZyBmaW5nZXIgd2hpbGUgbXVsdGkgdG91Y2hpbmciLCBtUG9pbnRlcklkKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBvblVwRXZlbnQoeCwgeSwgZXZlbnRUaW1lKTsKLSAgICAgICAgICAgIGNhbmNlbFRyYWNraW5nKCk7CisgICAgICAgICAgICBjYW5jZWxUcmFja2luZ0ZvckFjdGlvbigpOwogICAgICAgICAgICAgc2V0UmVsZWFzZWRLZXlHcmFwaGljcyhvbGRLZXkpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgaWYgKCFtSXNEZXRlY3RpbmdHZXN0dXJlKSB7Ci0gICAgICAgICAgICAgICAgY2FuY2VsVHJhY2tpbmcoKTsKKyAgICAgICAgICAgICAgICBjYW5jZWxUcmFja2luZ0ZvckFjdGlvbigpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgc2V0UmVsZWFzZWRLZXlHcmFwaGljcyhvbGRLZXkpOwogICAgICAgICB9CkBAIC0xMDg3LDcgKzEwOTUsNyBAQAogICAgICAgICAgICAgb25Nb3ZlVG9OZXdLZXkobnVsbCwgeCwgeSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBpZiAoIW1Jc0RldGVjdGluZ0dlc3R1cmUpIHsKLSAgICAgICAgICAgICAgICBjYW5jZWxUcmFja2luZygpOworICAgICAgICAgICAgICAgIGNhbmNlbFRyYWNraW5nRm9yQWN0aW9uKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CkBAIC0xMTU1LDcgKzExNjMsNyBAQAogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIG9uVXBFdmVudEludGVybmFsKG1MYXN0WCwgbUxhc3RZLCBldmVudFRpbWUpOwotICAgICAgICBjYW5jZWxUcmFja2luZygpOworICAgICAgICBjYW5jZWxUcmFja2luZ0ZvckFjdGlvbigpOwogICAgIH0KIAogICAgIHByaXZhdGUgdm9pZCBvblVwRXZlbnRJbnRlcm5hbChmaW5hbCBpbnQgeCwgZmluYWwgaW50IHksIGZpbmFsIGxvbmcgZXZlbnRUaW1lKSB7CkBAIC0xMTY4LDcgKzExNzYsNyBAQAogICAgICAgICBzZXRSZWxlYXNlZEtleUdyYXBoaWNzKGN1cnJlbnRLZXkpOwogCiAgICAgICAgIGlmIChpc1Nob3dpbmdNb3JlS2V5c1BhbmVsKCkpIHsKLSAgICAgICAgICAgIGlmICghbUlzVHJhY2tpbmdDYW5jZWxlZCkgeworICAgICAgICAgICAgaWYgKCFtSXNUcmFja2luZ0ZvckFjdGlvbkRpc2FibGVkKSB7CiAgICAgICAgICAgICAgICAgZmluYWwgaW50IHRyYW5zbGF0ZWRYID0gbU1vcmVLZXlzUGFuZWwudHJhbnNsYXRlWCh4KTsKICAgICAgICAgICAgICAgICBmaW5hbCBpbnQgdHJhbnNsYXRlZFkgPSBtTW9yZUtleXNQYW5lbC50cmFuc2xhdGVZKHkpOwogICAgICAgICAgICAgICAgIG1Nb3JlS2V5c1BhbmVsLm9uVXBFdmVudCh0cmFuc2xhdGVkWCwgdHJhbnNsYXRlZFksIG1Qb2ludGVySWQsIGV2ZW50VGltZSk7CkBAIC0xMTg2LDcgKzExOTQsNyBAQAogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKG1Jc1RyYWNraW5nQ2FuY2VsZWQpIHsKKyAgICAgICAgaWYgKG1Jc1RyYWNraW5nRm9yQWN0aW9uRGlzYWJsZWQpIHsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBpZiAoY3VycmVudEtleSAhPSBudWxsICYmICFjdXJyZW50S2V5LmlzUmVwZWF0YWJsZSgpKSB7CkBAIC0xMjAzLDE2ICsxMjExLDE2IEBACiAgICAgfQogCiAgICAgQE92ZXJyaWRlCi0gICAgcHVibGljIHZvaWQgY2FuY2VsVHJhY2tpbmcoKSB7CisgICAgcHVibGljIHZvaWQgY2FuY2VsVHJhY2tpbmdGb3JBY3Rpb24oKSB7CiAgICAgICAgIGlmIChpc1Nob3dpbmdNb3JlS2V5c1BhbmVsKCkpIHsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBtSXNUcmFja2luZ0NhbmNlbGVkID0gdHJ1ZTsKKyAgICAgICAgbUlzVHJhY2tpbmdGb3JBY3Rpb25EaXNhYmxlZCA9IHRydWU7CiAgICAgfQogCiAgICAgcHVibGljIHZvaWQgb25Mb25nUHJlc3NlZCgpIHsKICAgICAgICAgcmVzZXRTbGlkaW5nS2V5SW5wdXQoKTsKLSAgICAgICAgY2FuY2VsVHJhY2tpbmcoKTsKKyAgICAgICAgY2FuY2VsVHJhY2tpbmdGb3JBY3Rpb24oKTsKICAgICAgICAgc2V0UmVsZWFzZWRLZXlHcmFwaGljcyhtQ3VycmVudEtleSk7CiAgICAgICAgIHNQb2ludGVyVHJhY2tlclF1ZXVlLnJlbW92ZSh0aGlzKTsKICAgICB9CkBAIC0xMzE2LDYgKzEzMjQsNiBAQAogICAgICAgICBmaW5hbCBLZXkga2V5ID0gbUtleURldGVjdG9yLmRldGVjdEhpdEtleSh4LCB5KTsKICAgICAgICAgZmluYWwgU3RyaW5nIGNvZGUgPSBLZXlEZXRlY3Rvci5wcmludGFibGVDb2RlKGtleSk7CiAgICAgICAgIExvZy5kKFRBRywgU3RyaW5nLmZvcm1hdCgiWyVkXSVzJXMgJTRkICU0ZCAlNWQgJXMiLCBtUG9pbnRlcklkLAotICAgICAgICAgICAgICAgIChtSXNUcmFja2luZ0NhbmNlbGVkID8gIi0iIDogIiAiKSwgdGl0bGUsIHgsIHksIGV2ZW50VGltZSwgY29kZSkpOworICAgICAgICAgICAgICAgIChtSXNUcmFja2luZ0ZvckFjdGlvbkRpc2FibGVkID8gIi0iIDogIiAiKSwgdGl0bGUsIHgsIHksIGV2ZW50VGltZSwgY29kZSkpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2tleWJvYXJkL2ludGVybmFsL1BvaW50ZXJUcmFja2VyUXVldWUuamF2YSBiL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2tleWJvYXJkL2ludGVybmFsL1BvaW50ZXJUcmFja2VyUXVldWUuamF2YQppbmRleCA2YmM2YWNjLi44OTAxZjk5IDEwMDY0NAotLS0gYS9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9rZXlib2FyZC9pbnRlcm5hbC9Qb2ludGVyVHJhY2tlclF1ZXVlLmphdmEKKysrIGIvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2Qva2V5Ym9hcmQvaW50ZXJuYWwvUG9pbnRlclRyYWNrZXJRdWV1ZS5qYXZhCkBAIC0zMCw3ICszMCw3IEBACiAgICAgICAgIHB1YmxpYyBib29sZWFuIGlzTW9kaWZpZXIoKTsKICAgICAgICAgcHVibGljIGJvb2xlYW4gaXNJblNsaWRpbmdLZXlJbnB1dCgpOwogICAgICAgICBwdWJsaWMgdm9pZCBvblBoYW50b21VcEV2ZW50KGxvbmcgZXZlbnRUaW1lKTsKLSAgICAgICAgcHVibGljIHZvaWQgY2FuY2VsVHJhY2tpbmcoKTsKKyAgICAgICAgcHVibGljIHZvaWQgY2FuY2VsVHJhY2tpbmdGb3JBY3Rpb24oKTsKICAgICB9CiAKICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgSU5JVElBTF9DQVBBQ0lUWSA9IDEwOwpAQCAtMjA2LDcgKzIwNiw3IEBACiAgICAgICAgICAgICBmaW5hbCBpbnQgYXJyYXlTaXplID0gbUFycmF5U2l6ZTsKICAgICAgICAgICAgIGZvciAoaW50IGluZGV4ID0gMDsgaW5kZXggPCBhcnJheVNpemU7IGluZGV4KyspIHsKICAgICAgICAgICAgICAgICBmaW5hbCBFbGVtZW50IGVsZW1lbnQgPSBleHBhbmRhYmxlQXJyYXkuZ2V0KGluZGV4KTsKLSAgICAgICAgICAgICAgICBlbGVtZW50LmNhbmNlbFRyYWNraW5nKCk7CisgICAgICAgICAgICAgICAgZWxlbWVudC5jYW5jZWxUcmFja2luZ0ZvckFjdGlvbigpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvbGF0aW4vQmluYXJ5RGljdGlvbmFyeS5qYXZhIGIvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvbGF0aW4vQmluYXJ5RGljdGlvbmFyeS5qYXZhCmluZGV4IDE4ZTcxMjIuLmM4YzdiYjQgMTAwNjQ0Ci0tLSBhL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2xhdGluL0JpbmFyeURpY3Rpb25hcnkuamF2YQorKysgYi9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9sYXRpbi9CaW5hcnlEaWN0aW9uYXJ5LmphdmEKQEAgLTEzOSwxOSArMTM5LDMxIEBACiAgICAgICAgICAgICAgICAgaW5wdXRTaXplLCAwIC8qIGNvbW1pdFBvaW50ICovLCBpc0dlc3R1cmUsIHByZXZXb3JkQ29kZVBvaW50QXJyYXksCiAgICAgICAgICAgICAgICAgbVVzZUZ1bGxFZGl0RGlzdGFuY2UsIG1PdXRwdXRDb2RlUG9pbnRzLCBtT3V0cHV0U2NvcmVzLCBtU3BhY2VJbmRpY2VzLAogICAgICAgICAgICAgICAgIG1PdXRwdXRUeXBlcyk7CisgICAgICAgIGZpbmFsIGJvb2xlYW4gYmxvY2tQb3RlbnRpYWxseU9mZmVuc2l2ZSA9CisgICAgICAgICAgICAgICAgU2V0dGluZ3MuZ2V0SW5zdGFuY2UoKS5nZXRCbG9ja1BvdGVudGlhbGx5T2ZmZW5zaXZlKCk7CiAgICAgICAgIGZpbmFsIEFycmF5TGlzdDxTdWdnZXN0ZWRXb3JkSW5mbz4gc3VnZ2VzdGlvbnMgPSBDb2xsZWN0aW9uVXRpbHMubmV3QXJyYXlMaXN0KCk7CiAgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgY291bnQ7ICsraikgewotICAgICAgICAgICAgaWYgKGNvbXBvc2VyU2l6ZSA+IDAgJiYgbU91dHB1dFNjb3Jlc1tqXSA8IDEpIGJyZWFrOwogICAgICAgICAgICAgZmluYWwgaW50IHN0YXJ0ID0gaiAqIE1BWF9XT1JEX0xFTkdUSDsKICAgICAgICAgICAgIGludCBsZW4gPSAwOwogICAgICAgICAgICAgd2hpbGUgKGxlbiA8IE1BWF9XT1JEX0xFTkdUSCAmJiBtT3V0cHV0Q29kZVBvaW50c1tzdGFydCArIGxlbl0gIT0gMCkgewogICAgICAgICAgICAgICAgICsrbGVuOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKGxlbiA+IDApIHsKLSAgICAgICAgICAgICAgICBmaW5hbCBpbnQgc2NvcmUgPSBTdWdnZXN0ZWRXb3JkSW5mby5LSU5EX1dISVRFTElTVCA9PSBtT3V0cHV0VHlwZXNbal0KKyAgICAgICAgICAgICAgICBmaW5hbCBpbnQgZmxhZ3MgPSBtT3V0cHV0VHlwZXNbal0gJiBTdWdnZXN0ZWRXb3JkSW5mby5LSU5EX01BU0tfRkxBR1M7CisgICAgICAgICAgICAgICAgaWYgKGJsb2NrUG90ZW50aWFsbHlPZmZlbnNpdmUKKyAgICAgICAgICAgICAgICAgICAgICAgICYmIDAgIT0gKGZsYWdzICYgU3VnZ2VzdGVkV29yZEluZm8uS0lORF9GTEFHX1BPU1NJQkxZX09GRkVOU0lWRSkKKyAgICAgICAgICAgICAgICAgICAgICAgICYmIDAgPT0gKGZsYWdzICYgU3VnZ2VzdGVkV29yZEluZm8uS0lORF9GTEFHX0VYQUNUX01BVENIKSkgeworICAgICAgICAgICAgICAgICAgICAvLyBJZiB3ZSBibG9jayBwb3RlbnRpYWxseSBvZmZlbnNpdmUgd29yZHMsIGFuZCBpZiB0aGUgd29yZCBpcyBwb3NzaWJseQorICAgICAgICAgICAgICAgICAgICAvLyBvZmZlbnNpdmUsIHRoZW4gd2UgZG9uJ3Qgb3V0cHV0IGl0IHVubGVzcyBpdCdzIGFsc28gYW4gZXhhY3QgbWF0Y2guCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBmaW5hbCBpbnQga2luZCA9IG1PdXRwdXRUeXBlc1tqXSAmIFN1Z2dlc3RlZFdvcmRJbmZvLktJTkRfTUFTS19LSU5EOworICAgICAgICAgICAgICAgIGZpbmFsIGludCBzY29yZSA9IFN1Z2dlc3RlZFdvcmRJbmZvLktJTkRfV0hJVEVMSVNUID09IGtpbmQKICAgICAgICAgICAgICAgICAgICAgICAgID8gU3VnZ2VzdGVkV29yZEluZm8uTUFYX1NDT1JFIDogbU91dHB1dFNjb3Jlc1tqXTsKKyAgICAgICAgICAgICAgICAvLyBUT0RPOiBjaGVjayB0aGF0IGFsbCB1c2VycyBvZiB0aGUgYGtpbmQnIHBhcmFtZXRlciBhcmUgcmVhZHkgdG8gYWNjZXB0CisgICAgICAgICAgICAgICAgLy8gZmxhZ3MgdG9vIGFuZCBwYXNzIG1PdXRwdXRUeXBlc1tqXSBpbnN0ZWFkIG9mIGtpbmQKICAgICAgICAgICAgICAgICBzdWdnZXN0aW9ucy5hZGQobmV3IFN1Z2dlc3RlZFdvcmRJbmZvKG5ldyBTdHJpbmcobU91dHB1dENvZGVQb2ludHMsIHN0YXJ0LCBsZW4pLAotICAgICAgICAgICAgICAgICAgICAgICAgc2NvcmUsIG1PdXRwdXRUeXBlc1tqXSwgbURpY3RUeXBlKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBzY29yZSwga2luZCwgbURpY3RUeXBlKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHN1Z2dlc3Rpb25zOwpkaWZmIC0tZ2l0IGEvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvbGF0aW4vQmluYXJ5RGljdGlvbmFyeUZpbGVEdW1wZXIuamF2YSBiL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2xhdGluL0JpbmFyeURpY3Rpb25hcnlGaWxlRHVtcGVyLmphdmEKaW5kZXggNDJmNzEzNi4uNGEyYzNiYiAxMDA2NDQKLS0tIGEvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvbGF0aW4vQmluYXJ5RGljdGlvbmFyeUZpbGVEdW1wZXIuamF2YQorKysgYi9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9sYXRpbi9CaW5hcnlEaWN0aW9uYXJ5RmlsZUR1bXBlci5qYXZhCkBAIC04MSw2ICs4MSw3IEBACiAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFFVRVJZX1BBVEhfTUVUQURBVEEgPSAibWV0YWRhdGEiOwogICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBJTlNFUlRfTUVUQURBVEFfQ0xJRU5UX0lEX0NPTFVNTiA9ICJjbGllbnRpZCI7CiAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIElOU0VSVF9NRVRBREFUQV9NRVRBREFUQV9VUklfQ09MVU1OID0gInVyaSI7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIElOU0VSVF9NRVRBREFUQV9NRVRBREFUQV9BRERJVElPTkFMX0lEX0NPTFVNTiA9ICJhZGRpdGlvbmFsaWQiOwogCiAgICAgLy8gUHJldmVudHMgdGhpcyBjbGFzcyB0byBiZSBhY2NpZGVudGFsbHkgaW5zdGFudGlhdGVkLgogICAgIHByaXZhdGUgQmluYXJ5RGljdGlvbmFyeUZpbGVEdW1wZXIoKSB7CkBAIC00MjMsNiArNDI0LDcgQEAKICAgICBwcml2YXRlIHN0YXRpYyB2b2lkIHJlaW5pdGlhbGl6ZUNsaWVudFJlY29yZEluRGljdGlvbmFyeUNvbnRlbnRQcm92aWRlcihmaW5hbCBDb250ZXh0IGNvbnRleHQsCiAgICAgICAgICAgICBmaW5hbCBDb250ZW50UHJvdmlkZXJDbGllbnQgY2xpZW50LCBmaW5hbCBTdHJpbmcgY2xpZW50SWQpIHRocm93cyBSZW1vdGVFeGNlcHRpb24gewogICAgICAgICBmaW5hbCBTdHJpbmcgbWV0YWRhdGFGaWxlVXJpID0gTWV0YWRhdGFGaWxlVXJpR2V0dGVyLmdldE1ldGFkYXRhVXJpKGNvbnRleHQpOworICAgICAgICBmaW5hbCBTdHJpbmcgbWV0YWRhdGFBZGRpdGlvbmFsSWQgPSBNZXRhZGF0YUZpbGVVcmlHZXR0ZXIuZ2V0TWV0YWRhdGFBZGRpdGlvbmFsSWQoY29udGV4dCk7CiAgICAgICAgIGlmIChUZXh0VXRpbHMuaXNFbXB0eShtZXRhZGF0YUZpbGVVcmkpKSByZXR1cm47CiAgICAgICAgIC8vIFRlbGwgdGhlIGNvbnRlbnQgcHJvdmlkZXIgdG8gcmVzZXQgYWxsIGluZm9ybWF0aW9uIGFib3V0IHRoaXMgY2xpZW50IGlkCiAgICAgICAgIGZpbmFsIFVyaSBtZXRhZGF0YUNvbnRlbnRVcmkgPSBnZXRQcm92aWRlclVyaUJ1aWxkZXIoY2xpZW50SWQpCkBAIC00MzQsNiArNDM2LDcgQEAKICAgICAgICAgZmluYWwgQ29udGVudFZhbHVlcyBtZXRhZGF0YVZhbHVlcyA9IG5ldyBDb250ZW50VmFsdWVzKCk7CiAgICAgICAgIG1ldGFkYXRhVmFsdWVzLnB1dChJTlNFUlRfTUVUQURBVEFfQ0xJRU5UX0lEX0NPTFVNTiwgY2xpZW50SWQpOwogICAgICAgICBtZXRhZGF0YVZhbHVlcy5wdXQoSU5TRVJUX01FVEFEQVRBX01FVEFEQVRBX1VSSV9DT0xVTU4sIG1ldGFkYXRhRmlsZVVyaSk7CisgICAgICAgIG1ldGFkYXRhVmFsdWVzLnB1dChJTlNFUlRfTUVUQURBVEFfTUVUQURBVEFfQURESVRJT05BTF9JRF9DT0xVTU4sIG1ldGFkYXRhQWRkaXRpb25hbElkKTsKICAgICAgICAgY2xpZW50Lmluc2VydChtZXRhZGF0YUNvbnRlbnRVcmksIG1ldGFkYXRhVmFsdWVzKTsKIAogICAgICAgICAvLyBVcGRhdGUgdGhlIGRpY3Rpb25hcnkgbGlzdC4KZGlmZiAtLWdpdCBhL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2xhdGluL0JpbmFyeURpY3Rpb25hcnlHZXR0ZXIuamF2YSBiL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2xhdGluL0JpbmFyeURpY3Rpb25hcnlHZXR0ZXIuamF2YQppbmRleCAyOTQzMTI4Li5kZGQ3MmYxIDEwMDY0NAotLS0gYS9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9sYXRpbi9CaW5hcnlEaWN0aW9uYXJ5R2V0dGVyLmphdmEKKysrIGIvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvbGF0aW4vQmluYXJ5RGljdGlvbmFyeUdldHRlci5qYXZhCkBAIC03MiwxMCArNzIsMTYgQEAKICAgICBwdWJsaWMgc3RhdGljIFN0cmluZyBnZXRUZW1wRmlsZU5hbWUoZmluYWwgU3RyaW5nIGlkLCBmaW5hbCBDb250ZXh0IGNvbnRleHQpCiAgICAgICAgICAgICB0aHJvd3MgSU9FeGNlcHRpb24gewogICAgICAgICBmaW5hbCBTdHJpbmcgc2FmZUlkID0gRGljdGlvbmFyeUluZm9VdGlscy5yZXBsYWNlRmlsZU5hbWVEYW5nZXJvdXNDaGFyYWN0ZXJzKGlkKTsKKyAgICAgICAgZmluYWwgRmlsZSBkaXJlY3RvcnkgPSBuZXcgRmlsZShEaWN0aW9uYXJ5SW5mb1V0aWxzLmdldFdvcmRMaXN0VGVtcERpcmVjdG9yeShjb250ZXh0KSk7CisgICAgICAgIGlmICghZGlyZWN0b3J5LmV4aXN0cygpKSB7CisgICAgICAgICAgICBpZiAoIWRpcmVjdG9yeS5ta2RpcnMoKSkgeworICAgICAgICAgICAgICAgIExvZy5lKFRBRywgIkNvdWxkIG5vdCBjcmVhdGUgdGhlIHRlbXBvcmFyeSBkaXJlY3RvcnkiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogICAgICAgICAvLyBJZiB0aGUgZmlyc3QgYXJndW1lbnQgaXMgbGVzcyB0aGFuIHRocmVlIGNoYXJzLCBjcmVhdGVUZW1wRmlsZSB0aHJvd3MgYQogICAgICAgICAvLyBSdW50aW1lRXhjZXB0aW9uLiBXZSBkb24ndCByZWFsbHkgY2FyZSBhYm91dCB3aGF0IG5hbWUgd2UgZ2V0LCBzbyBqdXN0CiAgICAgICAgIC8vIHB1dCBhIHRocmVlLWNoYXJzIHByZWZpeCBtYWtlcyB1cyBzYWZlLgotICAgICAgICByZXR1cm4gRmlsZS5jcmVhdGVUZW1wRmlsZSgieHh4IiArIHNhZmVJZCwgbnVsbCkuZ2V0QWJzb2x1dGVQYXRoKCk7CisgICAgICAgIHJldHVybiBGaWxlLmNyZWF0ZVRlbXBGaWxlKCJ4eHgiICsgc2FmZUlkLCBudWxsLCBkaXJlY3RvcnkpLmdldEFic29sdXRlUGF0aCgpOwogICAgIH0KIAogICAgIC8qKgpkaWZmIC0tZ2l0IGEvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvbGF0aW4vRGVidWdTZXR0aW5ncy5qYXZhIGIvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvbGF0aW4vRGVidWdTZXR0aW5ncy5qYXZhCmluZGV4IGMyYWFkZTYuLjU5NjlhNjMgMTAwNjQ0Ci0tLSBhL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2xhdGluL0RlYnVnU2V0dGluZ3MuamF2YQorKysgYi9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9sYXRpbi9EZWJ1Z1NldHRpbmdzLmphdmEKQEAgLTEyMSwxOCArMTIxLDggQEAKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBib29sZWFuIGlzRGVidWdNb2RlID0gbURlYnVnTW9kZS5pc0NoZWNrZWQoKTsKLSAgICAgICAgU3RyaW5nIHZlcnNpb24gPSAiIjsKLSAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIGZpbmFsIENvbnRleHQgY29udGV4dCA9IGdldEFjdGl2aXR5KCk7Ci0gICAgICAgICAgICBpZiAoY29udGV4dCA9PSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZmluYWwgU3RyaW5nIHBhY2thZ2VOYW1lID0gY29udGV4dC5nZXRQYWNrYWdlTmFtZSgpOwotICAgICAgICAgICAgUGFja2FnZUluZm8gaW5mbyA9IGNvbnRleHQuZ2V0UGFja2FnZU1hbmFnZXIoKS5nZXRQYWNrYWdlSW5mbyhwYWNrYWdlTmFtZSwgMCk7Ci0gICAgICAgICAgICB2ZXJzaW9uID0gIlZlcnNpb24gIiArIGluZm8udmVyc2lvbk5hbWU7Ci0gICAgICAgIH0gY2F0Y2ggKE5hbWVOb3RGb3VuZEV4Y2VwdGlvbiBlKSB7Ci0gICAgICAgICAgICBMb2cuZShUQUcsICJDb3VsZCBub3QgZmluZCB2ZXJzaW9uIGluZm8uIik7Ci0gICAgICAgIH0KKyAgICAgICAgZmluYWwgU3RyaW5nIHZlcnNpb24gPSBnZXRSZXNvdXJjZXMoKS5nZXRTdHJpbmcoCisgICAgICAgICAgICAgICAgUi5zdHJpbmcudmVyc2lvbl90ZXh0LCBVdGlscy5nZXRWZXJzaW9uTmFtZShnZXRBY3Rpdml0eSgpKSk7CiAgICAgICAgIGlmICghaXNEZWJ1Z01vZGUpIHsKICAgICAgICAgICAgIG1EZWJ1Z01vZGUuc2V0VGl0bGUodmVyc2lvbik7CiAgICAgICAgICAgICBtRGVidWdNb2RlLnNldFN1bW1hcnkoIiIpOwpkaWZmIC0tZ2l0IGEvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvbGF0aW4vRGljdGlvbmFyeUluZm9VdGlscy5qYXZhIGIvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvbGF0aW4vRGljdGlvbmFyeUluZm9VdGlscy5qYXZhCmluZGV4IGRjZmE0ODMuLmRmN2JhZDggMTAwNjQ0Ci0tLSBhL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2xhdGluL0RpY3Rpb25hcnlJbmZvVXRpbHMuamF2YQorKysgYi9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9sYXRpbi9EaWN0aW9uYXJ5SW5mb1V0aWxzLmphdmEKQEAgLTEyOSw2ICsxMjksMTMgQEAKICAgICB9CiAKICAgICAvKioKKyAgICAgKiBIZWxwZXIgbWV0aG9kIHRvIGdldCB0aGUgdG9wIGxldmVsIHRlbXAgZGlyZWN0b3J5LgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgU3RyaW5nIGdldFdvcmRMaXN0VGVtcERpcmVjdG9yeShmaW5hbCBDb250ZXh0IGNvbnRleHQpIHsKKyAgICAgICAgcmV0dXJuIGNvbnRleHQuZ2V0RmlsZXNEaXIoKSArIEZpbGUuc2VwYXJhdG9yICsgInRtcCI7CisgICAgfQorCisgICAgLyoqCiAgICAgICogUmV2ZXJzZSBlc2NhcGluZyBkb25lIGJ5IHJlcGxhY2VGaWxlTmFtZURhbmdlcm91c0NoYXJhY3RlcnMuCiAgICAgICovCiAgICAgcHVibGljIHN0YXRpYyBTdHJpbmcgZ2V0V29yZExpc3RJZEZyb21GaWxlTmFtZShmaW5hbCBTdHJpbmcgZm5hbWUpIHsKZGlmZiAtLWdpdCBhL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2xhdGluL0ZlZWRiYWNrVXRpbHMuamF2YSBiL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2xhdGluL0ZlZWRiYWNrVXRpbHMuamF2YQppbmRleCAxZTUyNjBlLi4wNTgyNzYzIDEwMDY0NAotLS0gYS9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9sYXRpbi9GZWVkYmFja1V0aWxzLmphdmEKKysrIGIvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvbGF0aW4vRmVlZGJhY2tVdGlscy5qYXZhCkBAIC0xNyw2ICsxNyw3IEBACiBwYWNrYWdlIGNvbS5hbmRyb2lkLmlucHV0bWV0aG9kLmxhdGluOwogCiBpbXBvcnQgYW5kcm9pZC5jb250ZW50LkNvbnRleHQ7CitpbXBvcnQgYW5kcm9pZC5jb250ZW50LkludGVudDsKIAogcHVibGljIGNsYXNzIEZlZWRiYWNrVXRpbHMgewogICAgIHB1YmxpYyBzdGF0aWMgYm9vbGVhbiBpc0ZlZWRiYWNrRm9ybVN1cHBvcnRlZCgpIHsKQEAgLTI1LDQgKzI2LDEyIEBACiAKICAgICBwdWJsaWMgc3RhdGljIHZvaWQgc2hvd0ZlZWRiYWNrRm9ybShDb250ZXh0IGNvbnRleHQpIHsKICAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIGludCBnZXRBYm91dEtleWJvYXJkVGl0bGVSZXNJZCgpIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgcHVibGljIHN0YXRpYyBJbnRlbnQgZ2V0QWJvdXRLZXlib2FyZEludGVudChDb250ZXh0IGNvbnRleHQpIHsKKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfQogfQpkaWZmIC0tZ2l0IGEvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvbGF0aW4vTWV0YWRhdGFGaWxlVXJpR2V0dGVyLmphdmEgYi9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9sYXRpbi9NZXRhZGF0YUZpbGVVcmlHZXR0ZXIuamF2YQppbmRleCBlNmRjNmRiLi5hOThlY2M3IDEwMDY0NAotLS0gYS9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9sYXRpbi9NZXRhZGF0YUZpbGVVcmlHZXR0ZXIuamF2YQorKysgYi9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9sYXRpbi9NZXRhZGF0YUZpbGVVcmlHZXR0ZXIuamF2YQpAQCAtMTksMTAgKzE5LDE4IEBACiBpbXBvcnQgYW5kcm9pZC5jb250ZW50LkNvbnRleHQ7CiAKIC8qKgotICogSGVscGVyIGNsYXNzIHRvIGdldCB0aGUgbWV0YWRhdGEgVVJJLgorICogSGVscGVyIGNsYXNzIHRvIGdldCB0aGUgbWV0YWRhdGEgVVJJIGFuZCB0aGUgYWRkaXRpb25hbCBJRC4KICAqLwogcHVibGljIGNsYXNzIE1ldGFkYXRhRmlsZVVyaUdldHRlciB7Ci0gICAgcHVibGljIHN0YXRpYyBTdHJpbmcgZ2V0TWV0YWRhdGFVcmkoQ29udGV4dCBjb250ZXh0KSB7CisgICAgcHJpdmF0ZSBNZXRhZGF0YUZpbGVVcmlHZXR0ZXIoKSB7CisgICAgICAgIC8vIFRoaXMgaGVscGVyIGNsYXNzIGlzIG5vdCBpbnN0YW50aWFibGUuCisgICAgfQorCisgICAgcHVibGljIHN0YXRpYyBTdHJpbmcgZ2V0TWV0YWRhdGFVcmkoZmluYWwgQ29udGV4dCBjb250ZXh0KSB7CiAgICAgICAgIHJldHVybiBjb250ZXh0LmdldFN0cmluZyhSLnN0cmluZy5kaWN0aW9uYXJ5X3BhY2tfbWV0YWRhdGFfdXJpKTsKICAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIFN0cmluZyBnZXRNZXRhZGF0YUFkZGl0aW9uYWxJZChmaW5hbCBDb250ZXh0IGNvbnRleHQpIHsKKyAgICAgICAgcmV0dXJuICIiOworICAgIH0KIH0KZGlmZiAtLWdpdCBhL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2xhdGluL1JpY2hJbnB1dE1ldGhvZE1hbmFnZXIuamF2YSBiL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2xhdGluL1JpY2hJbnB1dE1ldGhvZE1hbmFnZXIuamF2YQppbmRleCBlMzlhYWU5Li4zZjdiZTk5IDEwMDY0NAotLS0gYS9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9sYXRpbi9SaWNoSW5wdXRNZXRob2RNYW5hZ2VyLmphdmEKKysrIGIvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvbGF0aW4vUmljaElucHV0TWV0aG9kTWFuYWdlci5qYXZhCkBAIC0yMiw2ICsyMiw3IEBACiBpbXBvcnQgYW5kcm9pZC5jb250ZW50LlNoYXJlZFByZWZlcmVuY2VzOwogaW1wb3J0IGFuZHJvaWQub3MuSUJpbmRlcjsKIGltcG9ydCBhbmRyb2lkLnByZWZlcmVuY2UuUHJlZmVyZW5jZU1hbmFnZXI7CitpbXBvcnQgYW5kcm9pZC51dGlsLkxvZzsKIGltcG9ydCBhbmRyb2lkLnZpZXcuaW5wdXRtZXRob2QuSW5wdXRNZXRob2RJbmZvOwogaW1wb3J0IGFuZHJvaWQudmlldy5pbnB1dG1ldGhvZC5JbnB1dE1ldGhvZE1hbmFnZXI7CiBpbXBvcnQgYW5kcm9pZC52aWV3LmlucHV0bWV0aG9kLklucHV0TWV0aG9kU3VidHlwZTsKQEAgLTQ2LDYgKzQ3LDggQEAKICAgICBwcml2YXRlIElucHV0TWV0aG9kTWFuYWdlckNvbXBhdFdyYXBwZXIgbUltbVdyYXBwZXI7CiAgICAgcHJpdmF0ZSBJbnB1dE1ldGhvZEluZm8gbUlucHV0TWV0aG9kSW5mb09mVGhpc0ltZTsKIAorICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBJTkRFWF9OT1RfRk9VTkQgPSAtMTsKKwogICAgIHB1YmxpYyBzdGF0aWMgUmljaElucHV0TWV0aG9kTWFuYWdlciBnZXRJbnN0YW5jZSgpIHsKICAgICAgICAgc0luc3RhbmNlLmNoZWNrSW5pdGlhbGl6ZWQoKTsKICAgICAgICAgcmV0dXJuIHNJbnN0YW5jZTsKQEAgLTk4LDExICsxMDEsMTAwIEBACiAgICAgfQogCiAgICAgcHVibGljIGJvb2xlYW4gc3dpdGNoVG9OZXh0SW5wdXRNZXRob2QoZmluYWwgSUJpbmRlciB0b2tlbiwgZmluYWwgYm9vbGVhbiBvbmx5Q3VycmVudEltZSkgewotICAgICAgICBmaW5hbCBib29sZWFuIHJlc3VsdCA9IG1JbW1XcmFwcGVyLnN3aXRjaFRvTmV4dElucHV0TWV0aG9kKHRva2VuLCBvbmx5Q3VycmVudEltZSk7Ci0gICAgICAgIGlmICghcmVzdWx0KSB7Ci0gICAgICAgICAgICBtSW1tV3JhcHBlci5tSW1tLnN3aXRjaFRvTGFzdElucHV0TWV0aG9kKHRva2VuKTsKKyAgICAgICAgaWYgKG1JbW1XcmFwcGVyLnN3aXRjaFRvTmV4dElucHV0TWV0aG9kKHRva2VuLCBvbmx5Q3VycmVudEltZSkpIHsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIC8vIFdhcyBub3QgYWJsZSB0byBjYWxsIHtAbGluayBJbnB1dE1ldGhvZE1hbmFnZXIjc3dpdGNoVG9OZXh0SW5wdXRNZXRob2RJQmluZGVyLGJvb2xlYW4pfQorICAgICAgICAvLyBiZWNhdXNlIHRoZSBjdXJyZW50IGRldmljZSBpcyBydW5uaW5nIElDUyBvciBwcmV2aW91cyBhbmQgbGFja3MgdGhlIEFQSS4KKyAgICAgICAgaWYgKHN3aXRjaFRvTmV4dElucHV0U3VidHlwZUluVGhpc0ltZSh0b2tlbiwgb25seUN1cnJlbnRJbWUpKSB7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gc3dpdGNoVG9OZXh0SW5wdXRNZXRob2RBbmRTdWJ0eXBlKHRva2VuKTsKKyAgICB9CisKKyAgICBwcml2YXRlIGJvb2xlYW4gc3dpdGNoVG9OZXh0SW5wdXRTdWJ0eXBlSW5UaGlzSW1lKGZpbmFsIElCaW5kZXIgdG9rZW4sCisgICAgICAgICAgICBmaW5hbCBib29sZWFuIG9ubHlDdXJyZW50SW1lKSB7CisgICAgICAgIGZpbmFsIElucHV0TWV0aG9kTWFuYWdlciBpbW0gPSBtSW1tV3JhcHBlci5tSW1tOworICAgICAgICBmaW5hbCBJbnB1dE1ldGhvZFN1YnR5cGUgY3VycmVudFN1YnR5cGUgPSBpbW0uZ2V0Q3VycmVudElucHV0TWV0aG9kU3VidHlwZSgpOworICAgICAgICBmaW5hbCBMaXN0PElucHV0TWV0aG9kU3VidHlwZT4gZW5hYmxlZFN1YnR5cGVzID0gaW1tLmdldEVuYWJsZWRJbnB1dE1ldGhvZFN1YnR5cGVMaXN0KAorICAgICAgICAgICAgICAgIG1JbnB1dE1ldGhvZEluZm9PZlRoaXNJbWUsIHRydWUgLyogYWxsb3dzSW1wbGljaXRseVNlbGVjdGVkU3VidHlwZXMgKi8pOworICAgICAgICBmaW5hbCBpbnQgY3VycmVudEluZGV4ID0gZ2V0U3VidHlwZUluZGV4SW5MaXN0KGN1cnJlbnRTdWJ0eXBlLCBlbmFibGVkU3VidHlwZXMpOworICAgICAgICBpZiAoY3VycmVudEluZGV4ID09IElOREVYX05PVF9GT1VORCkgeworICAgICAgICAgICAgTG9nLncoVEFHLCAiQ2FuJ3QgZmluZCBjdXJyZW50IHN1YnR5cGUgaW4gZW5hYmxlZCBzdWJ0eXBlczogc3VidHlwZT0iCisgICAgICAgICAgICAgICAgICAgICsgU3VidHlwZUxvY2FsZS5nZXRTdWJ0eXBlRGlzcGxheU5hbWUoY3VycmVudFN1YnR5cGUpKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQorICAgICAgICBmaW5hbCBpbnQgbmV4dEluZGV4ID0gKGN1cnJlbnRJbmRleCArIDEpICUgZW5hYmxlZFN1YnR5cGVzLnNpemUoKTsKKyAgICAgICAgaWYgKG5leHRJbmRleCA8PSBjdXJyZW50SW5kZXggJiYgIW9ubHlDdXJyZW50SW1lKSB7CisgICAgICAgICAgICAvLyBUaGUgY3VycmVudCBzdWJ0eXBlIGlzIHRoZSBsYXN0IG9yIG9ubHkgZW5hYmxlZCBvbmUgYW5kIGl0IG5lZWRzIHRvIHN3aXRjaCB0bworICAgICAgICAgICAgLy8gbmV4dCBJTUUuCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgZmluYWwgSW5wdXRNZXRob2RTdWJ0eXBlIG5leHRTdWJ0eXBlID0gZW5hYmxlZFN1YnR5cGVzLmdldChuZXh0SW5kZXgpOworICAgICAgICBzZXRJbnB1dE1ldGhvZEFuZFN1YnR5cGUodG9rZW4sIG5leHRTdWJ0eXBlKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgcHJpdmF0ZSBib29sZWFuIHN3aXRjaFRvTmV4dElucHV0TWV0aG9kQW5kU3VidHlwZShmaW5hbCBJQmluZGVyIHRva2VuKSB7CisgICAgICAgIGZpbmFsIElucHV0TWV0aG9kTWFuYWdlciBpbW0gPSBtSW1tV3JhcHBlci5tSW1tOworICAgICAgICBmaW5hbCBMaXN0PElucHV0TWV0aG9kSW5mbz4gZW5hYmxlZEltaXMgPSBpbW0uZ2V0RW5hYmxlZElucHV0TWV0aG9kTGlzdCgpOworICAgICAgICBmaW5hbCBpbnQgY3VycmVudEluZGV4ID0gZ2V0SW1pSW5kZXhJbkxpc3QobUlucHV0TWV0aG9kSW5mb09mVGhpc0ltZSwgZW5hYmxlZEltaXMpOworICAgICAgICBpZiAoY3VycmVudEluZGV4ID09IElOREVYX05PVF9GT1VORCkgeworICAgICAgICAgICAgTG9nLncoVEFHLCAiQ2FuJ3QgZmluZCBjdXJyZW50IElNRSBpbiBlbmFibGVkIElNRXM6IElNRSBwYWNrYWdlPSIKKyAgICAgICAgICAgICAgICAgICAgKyBtSW5wdXRNZXRob2RJbmZvT2ZUaGlzSW1lLmdldFBhY2thZ2VOYW1lKCkpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIGZpbmFsIElucHV0TWV0aG9kSW5mbyBuZXh0SW1pID0gZ2V0TmV4dE5vbkF1eGlsaWFyeUltZShjdXJyZW50SW5kZXgsIGVuYWJsZWRJbWlzKTsKKyAgICAgICAgZmluYWwgTGlzdDxJbnB1dE1ldGhvZFN1YnR5cGU+IGVuYWJsZWRTdWJ0eXBlcyA9IGltbS5nZXRFbmFibGVkSW5wdXRNZXRob2RTdWJ0eXBlTGlzdCgKKyAgICAgICAgICAgICAgICBuZXh0SW1pLCB0cnVlIC8qIGFsbG93c0ltcGxpY2l0bHlTZWxlY3RlZFN1YnR5cGVzICovKTsKKyAgICAgICAgaWYgKGVuYWJsZWRTdWJ0eXBlcy5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIC8vIFRoZSBuZXh0IElNRSBoYXMgbm8gc3VidHlwZS4KKyAgICAgICAgICAgIGltbS5zZXRJbnB1dE1ldGhvZCh0b2tlbiwgbmV4dEltaS5nZXRJZCgpKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIGZpbmFsIElucHV0TWV0aG9kU3VidHlwZSBmaXJzdFN1YnR5cGUgPSBlbmFibGVkU3VidHlwZXMuZ2V0KDApOworICAgICAgICBpbW0uc2V0SW5wdXRNZXRob2RBbmRTdWJ0eXBlKHRva2VuLCBuZXh0SW1pLmdldElkKCksIGZpcnN0U3VidHlwZSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIGludCBnZXRJbWlJbmRleEluTGlzdChmaW5hbCBJbnB1dE1ldGhvZEluZm8gaW5wdXRNZXRob2RJbmZvLAorICAgICAgICAgICAgZmluYWwgTGlzdDxJbnB1dE1ldGhvZEluZm8+IGltaUxpc3QpIHsKKyAgICAgICAgZmluYWwgaW50IGNvdW50ID0gaW1pTGlzdC5zaXplKCk7CisgICAgICAgIGZvciAoaW50IGluZGV4ID0gMDsgaW5kZXggPCBjb3VudDsgaW5kZXgrKykgeworICAgICAgICAgICAgZmluYWwgSW5wdXRNZXRob2RJbmZvIGltaSA9IGltaUxpc3QuZ2V0KGluZGV4KTsKKyAgICAgICAgICAgIGlmIChpbWkuZXF1YWxzKGlucHV0TWV0aG9kSW5mbykpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gaW5kZXg7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIElOREVYX05PVF9GT1VORDsKKyAgICB9CisKKyAgICAvLyBUaGlzIG1ldGhvZCBtaW1pY3Mge0BsaW5rIElucHV0TWV0aG9kTWFuYWdlciNzd2l0Y2hUb05leHRJbnB1dE1ldGhvZChJQmluZGVyLGJvb2xlYW4pfS4KKyAgICBwcml2YXRlIHN0YXRpYyBJbnB1dE1ldGhvZEluZm8gZ2V0TmV4dE5vbkF1eGlsaWFyeUltZShmaW5hbCBpbnQgY3VycmVudEluZGV4LAorICAgICAgICAgICAgZmluYWwgTGlzdDxJbnB1dE1ldGhvZEluZm8+IGltaUxpc3QpIHsKKyAgICAgICAgZmluYWwgaW50IGNvdW50ID0gaW1pTGlzdC5zaXplKCk7CisgICAgICAgIGZvciAoaW50IGkgPSAxOyBpIDwgY291bnQ7IGkrKykgeworICAgICAgICAgICAgZmluYWwgaW50IG5leHRJbmRleCA9IChjdXJyZW50SW5kZXggKyBpKSAlIGNvdW50OworICAgICAgICAgICAgZmluYWwgSW5wdXRNZXRob2RJbmZvIG5leHRJbWkgPSBpbWlMaXN0LmdldChuZXh0SW5kZXgpOworICAgICAgICAgICAgaWYgKCFpc0F1eGlsaWFyeUltZShuZXh0SW1pKSkgeworICAgICAgICAgICAgICAgIHJldHVybiBuZXh0SW1pOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiBpbWlMaXN0LmdldChjdXJyZW50SW5kZXgpOworICAgIH0KKworICAgIC8vIENvcGllZCBmcm9tIHtAbGluayBJbnB1dE1ldGhvZEluZm99LiBTZWUgaG93IGF1eGlsaWFyeSBvZiBJTUUgaXMgZGV0ZXJtaW5lZC4KKyAgICBwcml2YXRlIHN0YXRpYyBib29sZWFuIGlzQXV4aWxpYXJ5SW1lKGZpbmFsIElucHV0TWV0aG9kSW5mbyBpbWkpIHsKKyAgICAgICAgZmluYWwgaW50IGNvdW50ID0gaW1pLmdldFN1YnR5cGVDb3VudCgpOworICAgICAgICBpZiAoY291bnQgPT0gMCkgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIGZvciAoaW50IGluZGV4ID0gMDsgaW5kZXggPCBjb3VudDsgaW5kZXgrKykgeworICAgICAgICAgICAgZmluYWwgSW5wdXRNZXRob2RTdWJ0eXBlIHN1YnR5cGUgPSBpbWkuZ2V0U3VidHlwZUF0KGluZGV4KTsKKyAgICAgICAgICAgIGlmICghc3VidHlwZS5pc0F1eGlsaWFyeSgpKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIApAQCAtMTM2LDI0ICsyMjgsMzUgQEAKIAogICAgIHByaXZhdGUgc3RhdGljIGJvb2xlYW4gY2hlY2tJZlN1YnR5cGVCZWxvbmdzVG9MaXN0KGZpbmFsIElucHV0TWV0aG9kU3VidHlwZSBzdWJ0eXBlLAogICAgICAgICAgICAgZmluYWwgTGlzdDxJbnB1dE1ldGhvZFN1YnR5cGU+IHN1YnR5cGVzKSB7Ci0gICAgICAgIGZvciAoZmluYWwgSW5wdXRNZXRob2RTdWJ0eXBlIGltcyA6IHN1YnR5cGVzKSB7CisgICAgICAgIHJldHVybiBnZXRTdWJ0eXBlSW5kZXhJbkxpc3Qoc3VidHlwZSwgc3VidHlwZXMpICE9IElOREVYX05PVF9GT1VORDsKKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyBpbnQgZ2V0U3VidHlwZUluZGV4SW5MaXN0KGZpbmFsIElucHV0TWV0aG9kU3VidHlwZSBzdWJ0eXBlLAorICAgICAgICAgICAgZmluYWwgTGlzdDxJbnB1dE1ldGhvZFN1YnR5cGU+IHN1YnR5cGVzKSB7CisgICAgICAgIGZpbmFsIGludCBjb3VudCA9IHN1YnR5cGVzLnNpemUoKTsKKyAgICAgICAgZm9yIChpbnQgaW5kZXggPSAwOyBpbmRleCA8IGNvdW50OyBpbmRleCsrKSB7CisgICAgICAgICAgICBmaW5hbCBJbnB1dE1ldGhvZFN1YnR5cGUgaW1zID0gc3VidHlwZXMuZ2V0KGluZGV4KTsKICAgICAgICAgICAgIGlmIChpbXMuZXF1YWxzKHN1YnR5cGUpKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgcmV0dXJuIGluZGV4OwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIElOREVYX05PVF9GT1VORDsKICAgICB9CiAKICAgICBwdWJsaWMgYm9vbGVhbiBjaGVja0lmU3VidHlwZUJlbG9uZ3NUb1RoaXNJbWUoZmluYWwgSW5wdXRNZXRob2RTdWJ0eXBlIHN1YnR5cGUpIHsKLSAgICAgICAgZmluYWwgSW5wdXRNZXRob2RJbmZvIG15SW1pID0gbUlucHV0TWV0aG9kSW5mb09mVGhpc0ltZTsKLSAgICAgICAgZmluYWwgaW50IGNvdW50ID0gbXlJbWkuZ2V0U3VidHlwZUNvdW50KCk7Ci0gICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY291bnQ7IGkrKykgewotICAgICAgICAgICAgZmluYWwgSW5wdXRNZXRob2RTdWJ0eXBlIGltcyA9IG15SW1pLmdldFN1YnR5cGVBdChpKTsKKyAgICAgICAgcmV0dXJuIGdldFN1YnR5cGVJbmRleEluSW1lKHN1YnR5cGUsIG1JbnB1dE1ldGhvZEluZm9PZlRoaXNJbWUpICE9IElOREVYX05PVF9GT1VORDsKKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyBpbnQgZ2V0U3VidHlwZUluZGV4SW5JbWUoZmluYWwgSW5wdXRNZXRob2RTdWJ0eXBlIHN1YnR5cGUsCisgICAgICAgICAgICBmaW5hbCBJbnB1dE1ldGhvZEluZm8gaW1pKSB7CisgICAgICAgIGZpbmFsIGludCBjb3VudCA9IGltaS5nZXRTdWJ0eXBlQ291bnQoKTsKKyAgICAgICAgZm9yIChpbnQgaW5kZXggPSAwOyBpbmRleCA8IGNvdW50OyBpbmRleCsrKSB7CisgICAgICAgICAgICBmaW5hbCBJbnB1dE1ldGhvZFN1YnR5cGUgaW1zID0gaW1pLmdldFN1YnR5cGVBdChpbmRleCk7CiAgICAgICAgICAgICBpZiAoaW1zLmVxdWFscyhzdWJ0eXBlKSkgewotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIHJldHVybiBpbmRleDsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBJTkRFWF9OT1RfRk9VTkQ7CiAgICAgfQogCiAgICAgcHVibGljIElucHV0TWV0aG9kU3VidHlwZSBnZXRDdXJyZW50SW5wdXRNZXRob2RTdWJ0eXBlKApkaWZmIC0tZ2l0IGEvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvbGF0aW4vU2V0dGluZ3MuamF2YSBiL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2xhdGluL1NldHRpbmdzLmphdmEKaW5kZXggNzJlMDg3MC4uOWZlZmI1OCAxMDA2NDQKLS0tIGEvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvbGF0aW4vU2V0dGluZ3MuamF2YQorKysgYi9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9sYXRpbi9TZXR0aW5ncy5qYXZhCkBAIC0zNiw2ICszNiw3IEBACiAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgUFJFRl9QT1BVUF9PTiA9ICJwb3B1cF9vbiI7CiAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgUFJFRl9WT0lDRV9NT0RFID0gInZvaWNlX21vZGUiOwogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFBSRUZfQ09SUkVDVElPTl9TRVRUSU5HUyA9ICJjb3JyZWN0aW9uX3NldHRpbmdzIjsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBQUkVGX0VESVRfUEVSU09OQUxfRElDVElPTkFSWSA9ICJlZGl0X3BlcnNvbmFsX2RpY3Rpb25hcnkiOwogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFBSRUZfQ09ORklHVVJFX0RJQ1RJT05BUklFU19LRVkgPSAiY29uZmlndXJlX2RpY3Rpb25hcmllc19rZXkiOwogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFBSRUZfQVVUT19DT1JSRUNUSU9OX1RIUkVTSE9MRCA9ICJhdXRvX2NvcnJlY3Rpb25fdGhyZXNob2xkIjsKICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBQUkVGX1NIT1dfU1VHR0VTVElPTlNfU0VUVElORyA9ICJzaG93X3N1Z2dlc3Rpb25zX3NldHRpbmciOwpAQCAtNDYsNiArNDcsOCBAQAogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFBSRUZfS0VZX1VTRV9DT05UQUNUU19ESUNUID0gInByZWZfa2V5X3VzZV9jb250YWN0c19kaWN0IjsKICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBQUkVGX0tFWV9VU0VfRE9VQkxFX1NQQUNFX1BFUklPRCA9CiAgICAgICAgICAgICAicHJlZl9rZXlfdXNlX2RvdWJsZV9zcGFjZV9wZXJpb2QiOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFBSRUZfQkxPQ0tfUE9URU5USUFMTFlfT0ZGRU5TSVZFID0KKyAgICAgICAgICAgICJwcmVmX2tleV9ibG9ja19wb3RlbnRpYWxseV9vZmZlbnNpdmUiOwogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFBSRUZfU0hPV19MQU5HVUFHRV9TV0lUQ0hfS0VZID0KICAgICAgICAgICAgICJwcmVmX3Nob3dfbGFuZ3VhZ2Vfc3dpdGNoX2tleSI7CiAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgUFJFRl9JTkNMVURFX09USEVSX0lNRVNfSU5fTEFOR1VBR0VfU1dJVENIX0xJU1QgPQpAQCAtNzgsNiArODEsNyBAQAogICAgICAgICAgICAgInByZWZfc3VwcHJlc3NfbGFuZ3VhZ2Vfc3dpdGNoX2tleSI7CiAKICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBQUkVGX1NFTkRfRkVFREJBQ0sgPSAic2VuZF9mZWVkYmFjayI7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgUFJFRl9BQk9VVF9LRVlCT0FSRCA9ICJhYm91dF9rZXlib2FyZCI7CiAKICAgICBwcml2YXRlIFJlc291cmNlcyBtUmVzOwogICAgIHByaXZhdGUgU2hhcmVkUHJlZmVyZW5jZXMgbVByZWZzOwpAQCAtMTQyLDYgKzE0NiwxMCBAQAogICAgICAgICByZXR1cm4gbUN1cnJlbnRMb2NhbGU7CiAgICAgfQogCisgICAgcHVibGljIGJvb2xlYW4gZ2V0QmxvY2tQb3RlbnRpYWxseU9mZmVuc2l2ZSgpIHsKKyAgICAgICAgcmV0dXJuIG1TZXR0aW5nc1ZhbHVlcy5tQmxvY2tQb3RlbnRpYWxseU9mZmVuc2l2ZTsKKyAgICB9CisKICAgICAvLyBBY2Nlc3NlZCBmcm9tIHRoZSBzZXR0aW5ncyBpbnRlcmZhY2UsIGhlbmNlIHB1YmxpYwogICAgIHB1YmxpYyBzdGF0aWMgYm9vbGVhbiByZWFkS2V5cHJlc3NTb3VuZEVuYWJsZWQoZmluYWwgU2hhcmVkUHJlZmVyZW5jZXMgcHJlZnMsCiAgICAgICAgICAgICBmaW5hbCBSZXNvdXJjZXMgcmVzKSB7CkBAIC0xNjMsNiArMTcxLDEyIEBACiAgICAgICAgIHJldHVybiAhY3VycmVudEF1dG9Db3JyZWN0aW9uU2V0dGluZy5lcXVhbHMoYXV0b0NvcnJlY3Rpb25PZmYpOwogICAgIH0KIAorICAgIHB1YmxpYyBzdGF0aWMgYm9vbGVhbiByZWFkQmxvY2tQb3RlbnRpYWxseU9mZmVuc2l2ZShmaW5hbCBTaGFyZWRQcmVmZXJlbmNlcyBwcmVmcywKKyAgICAgICAgICAgIGZpbmFsIFJlc291cmNlcyByZXMpIHsKKyAgICAgICAgcmV0dXJuIHByZWZzLmdldEJvb2xlYW4oU2V0dGluZ3MuUFJFRl9CTE9DS19QT1RFTlRJQUxMWV9PRkZFTlNJVkUsCisgICAgICAgICAgICAgICAgcmVzLmdldEJvb2xlYW4oUi5ib29sLmNvbmZpZ19ibG9ja19wb3RlbnRpYWxseV9vZmZlbnNpdmUpKTsKKyAgICB9CisKICAgICBwdWJsaWMgc3RhdGljIGJvb2xlYW4gcmVhZEZyb21CdWlsZENvbmZpZ0lmR2VzdHVyZUlucHV0RW5hYmxlZChmaW5hbCBSZXNvdXJjZXMgcmVzKSB7CiAgICAgICAgIHJldHVybiByZXMuZ2V0Qm9vbGVhbihSLmJvb2wuY29uZmlnX2dlc3R1cmVfaW5wdXRfZW5hYmxlZF9ieV9idWlsZF9jb25maWcpOwogICAgIH0KZGlmZiAtLWdpdCBhL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2xhdGluL1NldHRpbmdzRnJhZ21lbnQuamF2YSBiL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2xhdGluL1NldHRpbmdzRnJhZ21lbnQuamF2YQppbmRleCBhOTZjOTk3Li44MzBjYWU5IDEwMDY0NAotLS0gYS9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9sYXRpbi9TZXR0aW5nc0ZyYWdtZW50LmphdmEKKysrIGIvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvbGF0aW4vU2V0dGluZ3NGcmFnbWVudC5qYXZhCkBAIC0xNiwxMCArMTYsMTMgQEAKIAogcGFja2FnZSBjb20uYW5kcm9pZC5pbnB1dG1ldGhvZC5sYXRpbjsKIAoraW1wb3J0IGFuZHJvaWQuYXBwLkFjdGl2aXR5OwogaW1wb3J0IGFuZHJvaWQuYXBwLmJhY2t1cC5CYWNrdXBNYW5hZ2VyOwogaW1wb3J0IGFuZHJvaWQuY29udGVudC5Db250ZXh0OwogaW1wb3J0IGFuZHJvaWQuY29udGVudC5JbnRlbnQ7CiBpbXBvcnQgYW5kcm9pZC5jb250ZW50LlNoYXJlZFByZWZlcmVuY2VzOworaW1wb3J0IGFuZHJvaWQuY29udGVudC5wbS5QYWNrYWdlTWFuYWdlcjsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQucG0uUmVzb2x2ZUluZm87CiBpbXBvcnQgYW5kcm9pZC5jb250ZW50LnJlcy5SZXNvdXJjZXM7CiBpbXBvcnQgYW5kcm9pZC5tZWRpYS5BdWRpb01hbmFnZXI7CiBpbXBvcnQgYW5kcm9pZC5vcy5CdW5kbGU7CkBAIC0zMSwxMyArMzQsMTkgQEAKIGltcG9ydCBhbmRyb2lkLnByZWZlcmVuY2UuUHJlZmVyZW5jZVNjcmVlbjsKIGltcG9ydCBhbmRyb2lkLnZpZXcuaW5wdXRtZXRob2QuSW5wdXRNZXRob2RTdWJ0eXBlOwogCitpbXBvcnQgamF2YS51dGlsLlRyZWVTZXQ7CisKIGltcG9ydCBjb20uYW5kcm9pZC5pbnB1dG1ldGhvZC5kaWN0aW9uYXJ5cGFjay5EaWN0aW9uYXJ5U2V0dGluZ3NBY3Rpdml0eTsKIGltcG9ydCBjb20uYW5kcm9pZC5pbnB1dG1ldGhvZC5sYXRpbi5kZWZpbmUuUHJvZHVjdGlvbkZsYWc7CiBpbXBvcnQgY29tLmFuZHJvaWQuaW5wdXRtZXRob2QubGF0aW4uc2V0dXAuTGF1bmNoZXJJY29uVmlzaWJpbGl0eU1hbmFnZXI7CitpbXBvcnQgY29tLmFuZHJvaWQuaW5wdXRtZXRob2QubGF0aW4udXNlcmRpY3Rpb25hcnkuVXNlckRpY3Rpb25hcnlMaXN0OworaW1wb3J0IGNvbS5hbmRyb2lkLmlucHV0bWV0aG9kLmxhdGluLnVzZXJkaWN0aW9uYXJ5LlVzZXJEaWN0aW9uYXJ5U2V0dGluZ3M7CiBpbXBvcnQgY29tLmFuZHJvaWQuaW5wdXRtZXRob2Rjb21tb24uSW5wdXRNZXRob2RTZXR0aW5nc0ZyYWdtZW50OwogCiBwdWJsaWMgZmluYWwgY2xhc3MgU2V0dGluZ3NGcmFnbWVudCBleHRlbmRzIElucHV0TWV0aG9kU2V0dGluZ3NGcmFnbWVudAogICAgICAgICBpbXBsZW1lbnRzIFNoYXJlZFByZWZlcmVuY2VzLk9uU2hhcmVkUHJlZmVyZW5jZUNoYW5nZUxpc3RlbmVyIHsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBib29sZWFuIERCR19VU0VfSU5URVJOQUxfVVNFUl9ESUNUSU9OQVJZX1NFVFRJTkdTID0gZmFsc2U7CisKICAgICBwcml2YXRlIExpc3RQcmVmZXJlbmNlIG1Wb2ljZVByZWZlcmVuY2U7CiAgICAgcHJpdmF0ZSBMaXN0UHJlZmVyZW5jZSBtU2hvd0NvcnJlY3Rpb25TdWdnZXN0aW9uc1ByZWZlcmVuY2U7CiAgICAgcHJpdmF0ZSBMaXN0UHJlZmVyZW5jZSBtQXV0b0NvcnJlY3Rpb25UaHJlc2hvbGRQcmVmZXJlbmNlOwpAQCAtNzcsMTAgKzg2LDEzIEBACiAgICAgICAgIGZpbmFsIFJlc291cmNlcyByZXMgPSBnZXRSZXNvdXJjZXMoKTsKICAgICAgICAgZmluYWwgQ29udGV4dCBjb250ZXh0ID0gZ2V0QWN0aXZpdHkoKTsKIAotICAgICAgICAvLyBXaGVuIHdlIGFyZSBjYWxsZWQgZnJvbSB0aGUgU2V0dGluZ3MgYXBwbGljYXRpb24gYnV0IHdlIGFyZSBub3QgYWxyZWFkeSBydW5uaW5nLCB0aGUKLSAgICAgICAgLy8ge0BsaW5rIFN1YnR5cGVMb2NhbGV9IGNsYXNzIG1heSBub3QgaGF2ZSBiZWVuIGluaXRpYWxpemVkLiBJdCBpcyBzYWZlIHRvIGNhbGwKLSAgICAgICAgLy8ge0BsaW5rIFN1YnR5cGVMb2NhbGUjaW5pdChDb250ZXh0KX0gbXVsdGlwbGUgdGltZXMuCisgICAgICAgIC8vIFdoZW4gd2UgYXJlIGNhbGxlZCBmcm9tIHRoZSBTZXR0aW5ncyBhcHBsaWNhdGlvbiBidXQgd2UgYXJlIG5vdCBhbHJlYWR5IHJ1bm5pbmcsIHNvbWUKKyAgICAgICAgLy8gc2luZ2xldG9uIGFuZCB1dGlsaXR5IGNsYXNzZXMgbWF5IG5vdCBoYXZlIGJlZW4gaW5pdGlhbGl6ZWQuICBXZSBoYXZlIHRvIGNhbGwKKyAgICAgICAgLy8gaW5pdGlhbGl6YXRpb24gbWV0aG9kIG9mIHRoZXNlIGNsYXNzZXMgaGVyZS4gU2VlIHtAbGluayBMYXRpbklNRSNvbkNyZWF0ZSgpfS4KKyAgICAgICAgU3VidHlwZVN3aXRjaGVyLmluaXQoY29udGV4dCk7CiAgICAgICAgIFN1YnR5cGVMb2NhbGUuaW5pdChjb250ZXh0KTsKKyAgICAgICAgQXVkaW9BbmRIYXB0aWNGZWVkYmFja01hbmFnZXIuaW5pdChjb250ZXh0KTsKKwogICAgICAgICBtVm9pY2VQcmVmZXJlbmNlID0gKExpc3RQcmVmZXJlbmNlKSBmaW5kUHJlZmVyZW5jZShTZXR0aW5ncy5QUkVGX1ZPSUNFX01PREUpOwogICAgICAgICBtU2hvd0NvcnJlY3Rpb25TdWdnZXN0aW9uc1ByZWZlcmVuY2UgPQogICAgICAgICAgICAgICAgIChMaXN0UHJlZmVyZW5jZSkgZmluZFByZWZlcmVuY2UoU2V0dGluZ3MuUFJFRl9TSE9XX1NVR0dFU1RJT05TX1NFVFRJTkcpOwpAQCAtMTEwLDYgKzEyMiw3IEBACiAgICAgICAgIH0KIAogICAgICAgICBmaW5hbCBQcmVmZXJlbmNlIGZlZWRiYWNrU2V0dGluZ3MgPSBmaW5kUHJlZmVyZW5jZShTZXR0aW5ncy5QUkVGX1NFTkRfRkVFREJBQ0spOworICAgICAgICBmaW5hbCBQcmVmZXJlbmNlIGFib3V0U2V0dGluZ3MgPSBmaW5kUHJlZmVyZW5jZShTZXR0aW5ncy5QUkVGX0FCT1VUX0tFWUJPQVJEKTsKICAgICAgICAgaWYgKGZlZWRiYWNrU2V0dGluZ3MgIT0gbnVsbCkgewogICAgICAgICAgICAgaWYgKEZlZWRiYWNrVXRpbHMuaXNGZWVkYmFja0Zvcm1TdXBwb3J0ZWQoKSkgewogICAgICAgICAgICAgICAgIGZlZWRiYWNrU2V0dGluZ3Muc2V0T25QcmVmZXJlbmNlQ2xpY2tMaXN0ZW5lcihuZXcgT25QcmVmZXJlbmNlQ2xpY2tMaXN0ZW5lcigpIHsKQEAgLTExOSw4ICsxMzIsMTEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgYWJvdXRTZXR0aW5ncy5zZXRUaXRsZShGZWVkYmFja1V0aWxzLmdldEFib3V0S2V5Ym9hcmRUaXRsZVJlc0lkKCkpOworICAgICAgICAgICAgICAgIGFib3V0U2V0dGluZ3Muc2V0SW50ZW50KEZlZWRiYWNrVXRpbHMuZ2V0QWJvdXRLZXlib2FyZEludGVudChnZXRBY3Rpdml0eSgpKSk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIG1pc2NTZXR0aW5ncy5yZW1vdmVQcmVmZXJlbmNlKGZlZWRiYWNrU2V0dGluZ3MpOworICAgICAgICAgICAgICAgIG1pc2NTZXR0aW5ncy5yZW1vdmVQcmVmZXJlbmNlKGFib3V0U2V0dGluZ3MpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKQEAgLTE4MCw2ICsxOTYsMTUgQEAKICAgICAgICAgICAgIHRleHRDb3JyZWN0aW9uR3JvdXAucmVtb3ZlUHJlZmVyZW5jZShkaWN0aW9uYXJ5TGluayk7CiAgICAgICAgIH0KIAorICAgICAgICBmaW5hbCBQcmVmZXJlbmNlIGVkaXRQZXJzb25hbERpY3Rpb25hcnkgPQorICAgICAgICAgICAgICAgIGZpbmRQcmVmZXJlbmNlKFNldHRpbmdzLlBSRUZfRURJVF9QRVJTT05BTF9ESUNUSU9OQVJZKTsKKyAgICAgICAgZmluYWwgSW50ZW50IGVkaXRQZXJzb25hbERpY3Rpb25hcnlJbnRlbnQgPSBlZGl0UGVyc29uYWxEaWN0aW9uYXJ5LmdldEludGVudCgpOworICAgICAgICBmaW5hbCBSZXNvbHZlSW5mbyByaSA9IGNvbnRleHQuZ2V0UGFja2FnZU1hbmFnZXIoKS5yZXNvbHZlQWN0aXZpdHkoCisgICAgICAgICAgICAgICAgZWRpdFBlcnNvbmFsRGljdGlvbmFyeUludGVudCwgUGFja2FnZU1hbmFnZXIuTUFUQ0hfREVGQVVMVF9PTkxZKTsKKyAgICAgICAgaWYgKERCR19VU0VfSU5URVJOQUxfVVNFUl9ESUNUSU9OQVJZX1NFVFRJTkdTIHx8IHJpID09IG51bGwpIHsKKyAgICAgICAgICAgIHVwZGF0ZVVzZXJEaWN0aW9uYXJ5UHJlZmVyZW5jZShlZGl0UGVyc29uYWxEaWN0aW9uYXJ5KTsKKyAgICAgICAgfQorCiAgICAgICAgIGlmICghU2V0dGluZ3MucmVhZEZyb21CdWlsZENvbmZpZ0lmR2VzdHVyZUlucHV0RW5hYmxlZChyZXMpKSB7CiAgICAgICAgICAgICByZW1vdmVQcmVmZXJlbmNlKFNldHRpbmdzLlBSRUZfR0VTVFVSRV9TRVRUSU5HUywgZ2V0UHJlZmVyZW5jZVNjcmVlbigpKTsKICAgICAgICAgfQpAQCAtMzg2LDQgKzQxMSwzMyBAQAogICAgICAgICAgICAgfQogICAgICAgICB9KTsKICAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgdXBkYXRlVXNlckRpY3Rpb25hcnlQcmVmZXJlbmNlKFByZWZlcmVuY2UgdXNlckRpY3Rpb25hcnlQcmVmZXJlbmNlKSB7CisgICAgICAgIGZpbmFsIEFjdGl2aXR5IGFjdGl2aXR5ID0gZ2V0QWN0aXZpdHkoKTsKKyAgICAgICAgZmluYWwgVHJlZVNldDxTdHJpbmc+IGxvY2FsZUxpc3QgPSBVc2VyRGljdGlvbmFyeUxpc3QuZ2V0VXNlckRpY3Rpb25hcnlMb2NhbGVzU2V0KGFjdGl2aXR5KTsKKyAgICAgICAgaWYgKG51bGwgPT0gbG9jYWxlTGlzdCkgeworICAgICAgICAgICAgLy8gVGhlIGxvY2FsZSBsaXN0IGlzIG51bGwgaWYgYW5kIG9ubHkgaWYgdGhlIHVzZXIgZGljdGlvbmFyeSBzZXJ2aWNlIGlzCisgICAgICAgICAgICAvLyBub3QgcHJlc2VudCBvciBkaXNhYmxlZC4gSW4gdGhpcyBjYXNlIHdlIG5lZWQgdG8gcmVtb3ZlIHRoZSBwcmVmZXJlbmNlLgorICAgICAgICAgICAgZ2V0UHJlZmVyZW5jZVNjcmVlbigpLnJlbW92ZVByZWZlcmVuY2UodXNlckRpY3Rpb25hcnlQcmVmZXJlbmNlKTsKKyAgICAgICAgfSBlbHNlIGlmIChsb2NhbGVMaXN0LnNpemUoKSA8PSAxKSB7CisgICAgICAgICAgICBmaW5hbCBJbnRlbnQgaW50ZW50ID0KKyAgICAgICAgICAgICAgICAgICAgbmV3IEludGVudChVc2VyRGljdGlvbmFyeUxpc3QuVVNFUl9ESUNUSU9OQVJZX1NFVFRJTkdTX0lOVEVOVF9BQ1RJT04pOworICAgICAgICAgICAgdXNlckRpY3Rpb25hcnlQcmVmZXJlbmNlLnNldFRpdGxlKFIuc3RyaW5nLnVzZXJfZGljdF9zaW5nbGVfc2V0dGluZ3NfdGl0bGUpOworICAgICAgICAgICAgdXNlckRpY3Rpb25hcnlQcmVmZXJlbmNlLnNldEludGVudChpbnRlbnQpOworICAgICAgICAgICAgdXNlckRpY3Rpb25hcnlQcmVmZXJlbmNlLnNldEZyYWdtZW50KFVzZXJEaWN0aW9uYXJ5U2V0dGluZ3MuY2xhc3MuZ2V0TmFtZSgpKTsKKyAgICAgICAgICAgIC8vIElmIHRoZSBzaXplIG9mIGxvY2FsZUxpc3QgaXMgMCwgd2UgZG9uJ3Qgc2V0IHRoZSBsb2NhbGUgcGFyYW1ldGVyIGluIHRoZQorICAgICAgICAgICAgLy8gZXh0cmFzLiBUaGlzIHdpbGwgYmUgaW50ZXJwcmV0ZWQgYnkgdGhlIFVzZXJEaWN0aW9uYXJ5U2V0dGluZ3MgY2xhc3MgYXMKKyAgICAgICAgICAgIC8vIG1lYW5pbmcgInRoZSBjdXJyZW50IGxvY2FsZSIuCisgICAgICAgICAgICAvLyBOb3RlIHRoYXQgd2l0aCB0aGUgY3VycmVudCBjb2RlIGZvciBVc2VyRGljdGlvbmFyeUxpc3QjZ2V0VXNlckRpY3Rpb25hcnlMb2NhbGVzU2V0KCkKKyAgICAgICAgICAgIC8vIHRoZSBsb2NhbGUgbGlzdCBhbHdheXMgaGFzIGF0IGxlYXN0IG9uZSBlbGVtZW50LCBzaW5jZSBpdCBhbHdheXMgaW5jbHVkZXMgdGhlIGN1cnJlbnQKKyAgICAgICAgICAgIC8vIGxvY2FsZSBleHBsaWNpdGx5LiBAc2VlIFVzZXJEaWN0aW9uYXJ5TGlzdC5nZXRVc2VyRGljdGlvbmFyeUxvY2FsZXNTZXQoKS4KKyAgICAgICAgICAgIGlmIChsb2NhbGVMaXN0LnNpemUoKSA9PSAxKSB7CisgICAgICAgICAgICAgICAgZmluYWwgU3RyaW5nIGxvY2FsZSA9IChTdHJpbmcpbG9jYWxlTGlzdC50b0FycmF5KClbMF07CisgICAgICAgICAgICAgICAgdXNlckRpY3Rpb25hcnlQcmVmZXJlbmNlLmdldEV4dHJhcygpLnB1dFN0cmluZygibG9jYWxlIiwgbG9jYWxlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHVzZXJEaWN0aW9uYXJ5UHJlZmVyZW5jZS5zZXRUaXRsZShSLnN0cmluZy51c2VyX2RpY3RfbXVsdGlwbGVfc2V0dGluZ3NfdGl0bGUpOworICAgICAgICAgICAgdXNlckRpY3Rpb25hcnlQcmVmZXJlbmNlLnNldEZyYWdtZW50KFVzZXJEaWN0aW9uYXJ5TGlzdC5jbGFzcy5nZXROYW1lKCkpOworICAgICAgICB9CisgICAgfQogfQpkaWZmIC0tZ2l0IGEvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvbGF0aW4vU2V0dGluZ3NWYWx1ZXMuamF2YSBiL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2xhdGluL1NldHRpbmdzVmFsdWVzLmphdmEKaW5kZXggZjc3YTkyOC4uNjE1YjJkZiAxMDA2NDQKLS0tIGEvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvbGF0aW4vU2V0dGluZ3NWYWx1ZXMuamF2YQorKysgYi9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9sYXRpbi9TZXR0aW5nc1ZhbHVlcy5qYXZhCkBAIC0zNCw2ICszNCw5IEBACiAgKi8KIHB1YmxpYyBmaW5hbCBjbGFzcyBTZXR0aW5nc1ZhbHVlcyB7CiAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFRBRyA9IFNldHRpbmdzVmFsdWVzLmNsYXNzLmdldFNpbXBsZU5hbWUoKTsKKyAgICAvLyAiZmxvYXROZWdhdGl2ZUluZmluaXR5IiBpcyBhIHNwZWNpYWwgbWFya2VyIHN0cmluZyBmb3IgRmxvYXQuTkVHQVRJVkVfSU5GSU5JVEUKKyAgICAvLyBjdXJyZW50bHkgdXNlZCBmb3IgYXV0by1jb3JyZWN0aW9uCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIEZMT0FUX05FR0FUSVZFX0lORklOSVRZX01BUktFUl9TVFJJTkcgPSAiZmxvYXROZWdhdGl2ZUluZmluaXR5IjsKIAogICAgIC8vIEZyb20gcmVzb3VyY2VzOgogICAgIHB1YmxpYyBmaW5hbCBpbnQgbURlbGF5VXBkYXRlT2xkU3VnZ2VzdGlvbnM7CkBAIC01NCw2ICs1Nyw3IEBACiAgICAgcHVibGljIGZpbmFsIGJvb2xlYW4gbVNob3dzTGFuZ3VhZ2VTd2l0Y2hLZXk7CiAgICAgcHVibGljIGZpbmFsIGJvb2xlYW4gbVVzZUNvbnRhY3RzRGljdDsKICAgICBwdWJsaWMgZmluYWwgYm9vbGVhbiBtVXNlRG91YmxlU3BhY2VQZXJpb2Q7CisgICAgcHVibGljIGZpbmFsIGJvb2xlYW4gbUJsb2NrUG90ZW50aWFsbHlPZmZlbnNpdmU7CiAgICAgLy8gVXNlIGJpZ3JhbXMgdG8gcHJlZGljdCB0aGUgbmV4dCB3b3JkIHdoZW4gdGhlcmUgaXMgbm8gaW5wdXQgZm9yIGl0IHlldAogICAgIHB1YmxpYyBmaW5hbCBib29sZWFuIG1CaWdyYW1QcmVkaWN0aW9uRW5hYmxlZDsKICAgICBwdWJsaWMgZmluYWwgYm9vbGVhbiBtR2VzdHVyZUlucHV0RW5hYmxlZDsKQEAgLTEyMyw2ICsxMjcsNyBAQAogICAgICAgICBtU2hvd3NMYW5ndWFnZVN3aXRjaEtleSA9IFNldHRpbmdzLnJlYWRTaG93c0xhbmd1YWdlU3dpdGNoS2V5KHByZWZzKTsKICAgICAgICAgbVVzZUNvbnRhY3RzRGljdCA9IHByZWZzLmdldEJvb2xlYW4oU2V0dGluZ3MuUFJFRl9LRVlfVVNFX0NPTlRBQ1RTX0RJQ1QsIHRydWUpOwogICAgICAgICBtVXNlRG91YmxlU3BhY2VQZXJpb2QgPSBwcmVmcy5nZXRCb29sZWFuKFNldHRpbmdzLlBSRUZfS0VZX1VTRV9ET1VCTEVfU1BBQ0VfUEVSSU9ELCB0cnVlKTsKKyAgICAgICAgbUJsb2NrUG90ZW50aWFsbHlPZmZlbnNpdmUgPSBTZXR0aW5ncy5yZWFkQmxvY2tQb3RlbnRpYWxseU9mZmVuc2l2ZShwcmVmcywgcmVzKTsKICAgICAgICAgbUF1dG9Db3JyZWN0RW5hYmxlZCA9IFNldHRpbmdzLnJlYWRBdXRvQ29ycmVjdEVuYWJsZWQoYXV0b0NvcnJlY3Rpb25UaHJlc2hvbGRSYXdWYWx1ZSwgcmVzKTsKICAgICAgICAgbUJpZ3JhbVByZWRpY3Rpb25FbmFibGVkID0gcmVhZEJpZ3JhbVByZWRpY3Rpb25FbmFibGVkKHByZWZzLCByZXMpOwogCkBAIC0yNjYsOCArMjcxLDEyIEBACiAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICBmaW5hbCBpbnQgYXJyYXlJbmRleCA9IEludGVnZXIudmFsdWVPZihjdXJyZW50QXV0b0NvcnJlY3Rpb25TZXR0aW5nKTsKICAgICAgICAgICAgIGlmIChhcnJheUluZGV4ID49IDAgJiYgYXJyYXlJbmRleCA8IGF1dG9Db3JyZWN0aW9uVGhyZXNob2xkVmFsdWVzLmxlbmd0aCkgewotICAgICAgICAgICAgICAgIGF1dG9Db3JyZWN0aW9uVGhyZXNob2xkID0gRmxvYXQucGFyc2VGbG9hdCgKLSAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9Db3JyZWN0aW9uVGhyZXNob2xkVmFsdWVzW2FycmF5SW5kZXhdKTsKKyAgICAgICAgICAgICAgICBmaW5hbCBTdHJpbmcgdmFsID0gYXV0b0NvcnJlY3Rpb25UaHJlc2hvbGRWYWx1ZXNbYXJyYXlJbmRleF07CisgICAgICAgICAgICAgICAgaWYgKEZMT0FUX05FR0FUSVZFX0lORklOSVRZX01BUktFUl9TVFJJTkcuZXF1YWxzKHZhbCkpIHsKKyAgICAgICAgICAgICAgICAgICAgYXV0b0NvcnJlY3Rpb25UaHJlc2hvbGQgPSBGbG9hdC5ORUdBVElWRV9JTkZJTklUWTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBhdXRvQ29ycmVjdGlvblRocmVzaG9sZCA9IEZsb2F0LnBhcnNlRmxvYXQodmFsKTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gY2F0Y2ggKE51bWJlckZvcm1hdEV4Y2VwdGlvbiBlKSB7CiAgICAgICAgICAgICAvLyBXaGVuZXZlciB0aGUgdGhyZXNob2xkIHNldHRpbmdzIGFyZSBjb3JyZWN0LCBuZXZlciBjb21lIGhlcmUuCkBAIC0yNzUsNyArMjg0LDcgQEAKICAgICAgICAgICAgIExvZy53KFRBRywgIkNhbm5vdCBsb2FkIGF1dG8gY29ycmVjdGlvbiB0aHJlc2hvbGQgc2V0dGluZy4iCiAgICAgICAgICAgICAgICAgICAgICsgIiBjdXJyZW50QXV0b0NvcnJlY3Rpb25TZXR0aW5nOiAiICsgY3VycmVudEF1dG9Db3JyZWN0aW9uU2V0dGluZwogICAgICAgICAgICAgICAgICAgICArICIsIGF1dG9Db3JyZWN0aW9uVGhyZXNob2xkVmFsdWVzOiAiCi0gICAgICAgICAgICAgICAgICAgICsgQXJyYXlzLnRvU3RyaW5nKGF1dG9Db3JyZWN0aW9uVGhyZXNob2xkVmFsdWVzKSk7CisgICAgICAgICAgICAgICAgICAgICsgQXJyYXlzLnRvU3RyaW5nKGF1dG9Db3JyZWN0aW9uVGhyZXNob2xkVmFsdWVzKSwgZSk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIGF1dG9Db3JyZWN0aW9uVGhyZXNob2xkOwogICAgIH0KZGlmZiAtLWdpdCBhL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2xhdGluL1N1YnR5cGVTd2l0Y2hlci5qYXZhIGIvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvbGF0aW4vU3VidHlwZVN3aXRjaGVyLmphdmEKaW5kZXggMmY5ZTM0Zi4uYmVmOGEzYyAxMDA2NDQKLS0tIGEvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvbGF0aW4vU3VidHlwZVN3aXRjaGVyLmphdmEKKysrIGIvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvbGF0aW4vU3VidHlwZVN3aXRjaGVyLmphdmEKQEAgLTgwLDYgKzgwLDcgQEAKIAogICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBpbml0KGZpbmFsIENvbnRleHQgY29udGV4dCkgewogICAgICAgICBTdWJ0eXBlTG9jYWxlLmluaXQoY29udGV4dCk7CisgICAgICAgIFJpY2hJbnB1dE1ldGhvZE1hbmFnZXIuaW5pdChjb250ZXh0KTsKICAgICAgICAgc0luc3RhbmNlLmluaXRpYWxpemUoY29udGV4dCk7CiAgICAgfQogCkBAIC04NywxMCArODgsMTMgQEAKICAgICAgICAgLy8gSW50ZW50aW9uYWwgZW1wdHkgY29uc3RydWN0b3IgZm9yIHNpbmdsZXRvbi4KICAgICB9CiAKLSAgICBwcml2YXRlIHZvaWQgaW5pdGlhbGl6ZShmaW5hbCBDb250ZXh0IHNlcnZpY2UpIHsKLSAgICAgICAgbVJlc291cmNlcyA9IHNlcnZpY2UuZ2V0UmVzb3VyY2VzKCk7CisgICAgcHJpdmF0ZSB2b2lkIGluaXRpYWxpemUoZmluYWwgQ29udGV4dCBjb250ZXh0KSB7CisgICAgICAgIGlmIChtUmVzb3VyY2VzICE9IG51bGwpIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBtUmVzb3VyY2VzID0gY29udGV4dC5nZXRSZXNvdXJjZXMoKTsKICAgICAgICAgbVJpY2hJbW0gPSBSaWNoSW5wdXRNZXRob2RNYW5hZ2VyLmdldEluc3RhbmNlKCk7Ci0gICAgICAgIG1Db25uZWN0aXZpdHlNYW5hZ2VyID0gKENvbm5lY3Rpdml0eU1hbmFnZXIpIHNlcnZpY2UuZ2V0U3lzdGVtU2VydmljZSgKKyAgICAgICAgbUNvbm5lY3Rpdml0eU1hbmFnZXIgPSAoQ29ubmVjdGl2aXR5TWFuYWdlcikgY29udGV4dC5nZXRTeXN0ZW1TZXJ2aWNlKAogICAgICAgICAgICAgICAgIENvbnRleHQuQ09OTkVDVElWSVRZX1NFUlZJQ0UpOwogICAgICAgICBtTm9MYW5ndWFnZVN1YnR5cGUgPSBtUmljaEltbS5maW5kU3VidHlwZUJ5TG9jYWxlQW5kS2V5Ym9hcmRMYXlvdXRTZXQoCiAgICAgICAgICAgICAgICAgU3VidHlwZUxvY2FsZS5OT19MQU5HVUFHRSwgU3VidHlwZUxvY2FsZS5RV0VSVFkpOwpkaWZmIC0tZ2l0IGEvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvbGF0aW4vU3VnZ2VzdGVkV29yZHMuamF2YSBiL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2xhdGluL1N1Z2dlc3RlZFdvcmRzLmphdmEKaW5kZXggNjE2ZTE5MS4uZGZkZGIwZiAxMDA2NDQKLS0tIGEvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvbGF0aW4vU3VnZ2VzdGVkV29yZHMuamF2YQorKysgYi9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9sYXRpbi9TdWdnZXN0ZWRXb3Jkcy5qYXZhCkBAIC0xMjIsNiArMTIyLDcgQEAKIAogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgY2xhc3MgU3VnZ2VzdGVkV29yZEluZm8gewogICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBNQVhfU0NPUkUgPSBJbnRlZ2VyLk1BWF9WQUxVRTsKKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgS0lORF9NQVNLX0tJTkQgPSAweEZGOyAvLyBNYXNrIHRvIGdldCBvbmx5IHRoZSBraW5kCiAgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEtJTkRfVFlQRUQgPSAwOyAvLyBXaGF0IHVzZXIgdHlwZWQKICAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgS0lORF9DT1JSRUNUSU9OID0gMTsgLy8gU2ltcGxlIGNvcnJlY3Rpb24vc3VnZ2VzdGlvbgogICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBLSU5EX0NPTVBMRVRJT04gPSAyOyAvLyBDb21wbGV0aW9uIChzdWdnZXN0aW9uIHdpdGggYXBwZW5kZWQgY2hhcnMpCkBAIC0xMzIsNiArMTMzLDExIEBACiAgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEtJTkRfU0hPUlRDVVQgPSA3OyAvLyBBIHNob3J0Y3V0CiAgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEtJTkRfUFJFRElDVElPTiA9IDg7IC8vIEEgcHJlZGljdGlvbiAoPT0gYSBzdWdnZXN0aW9uIHdpdGggbm8gaW5wdXQpCiAgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEtJTkRfUkVTVU1FRCA9IDk7IC8vIEEgcmVzdW1lZCBzdWdnZXN0aW9uIChjb21lcyBmcm9tIGEgc3BhbikKKworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBLSU5EX01BU0tfRkxBR1MgPSAweEZGRkZGRjAwOyAvLyBNYXNrIHRvIGdldCB0aGUgZmxhZ3MKKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgS0lORF9GTEFHX1BPU1NJQkxZX09GRkVOU0lWRSA9IDB4ODAwMDAwMDA7CisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEtJTkRfRkxBR19FWEFDVF9NQVRDSCA9IDB4NDAwMDAwMDA7CisKICAgICAgICAgcHVibGljIGZpbmFsIFN0cmluZyBtV29yZDsKICAgICAgICAgcHVibGljIGZpbmFsIGludCBtU2NvcmU7CiAgICAgICAgIHB1YmxpYyBmaW5hbCBpbnQgbUtpbmQ7IC8vIG9uZSBvZiB0aGUgS0lORF8qIGNvbnN0YW50cyBhYm92ZQpkaWZmIC0tZ2l0IGEvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvbGF0aW4vVXRpbHMuamF2YSBiL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2xhdGluL1V0aWxzLmphdmEKaW5kZXggYWZmNWQxNy4uMGY5NmM1NCAxMDA2NDQKLS0tIGEvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvbGF0aW4vVXRpbHMuamF2YQorKysgYi9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9sYXRpbi9VdGlscy5qYXZhCkBAIC0yMSw2ICsyMSw3IEBACiBpbXBvcnQgYW5kcm9pZC5jb250ZW50LkNvbnRleHQ7CiBpbXBvcnQgYW5kcm9pZC5jb250ZW50LkludGVudDsKIGltcG9ydCBhbmRyb2lkLmNvbnRlbnQucG0uQWN0aXZpdHlJbmZvOworaW1wb3J0IGFuZHJvaWQuY29udGVudC5wbS5QYWNrYWdlSW5mbzsKIGltcG9ydCBhbmRyb2lkLmNvbnRlbnQucG0uUGFja2FnZU1hbmFnZXI7CiBpbXBvcnQgYW5kcm9pZC5jb250ZW50LnBtLlBhY2thZ2VNYW5hZ2VyLk5hbWVOb3RGb3VuZEV4Y2VwdGlvbjsKIGltcG9ydCBhbmRyb2lkLmlucHV0bWV0aG9kc2VydmljZS5JbnB1dE1ldGhvZFNlcnZpY2U7CkBAIC00NzMsNCArNDc0LDE4IEBACiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQorCisgICAgcHVibGljIHN0YXRpYyBTdHJpbmcgZ2V0VmVyc2lvbk5hbWUoQ29udGV4dCBjb250ZXh0KSB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBpZiAoY29udGV4dCA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuICIiOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZmluYWwgU3RyaW5nIHBhY2thZ2VOYW1lID0gY29udGV4dC5nZXRQYWNrYWdlTmFtZSgpOworICAgICAgICAgICAgUGFja2FnZUluZm8gaW5mbyA9IGNvbnRleHQuZ2V0UGFja2FnZU1hbmFnZXIoKS5nZXRQYWNrYWdlSW5mbyhwYWNrYWdlTmFtZSwgMCk7CisgICAgICAgICAgICByZXR1cm4gaW5mby52ZXJzaW9uTmFtZTsKKyAgICAgICAgfSBjYXRjaCAoTmFtZU5vdEZvdW5kRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIExvZy5lKFRBRywgIkNvdWxkIG5vdCBmaW5kIHZlcnNpb24gaW5mby4iLCBlKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gIiI7CisgICAgfQogfQpkaWZmIC0tZ2l0IGEvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvbGF0aW4vc2V0dXAvU2V0dXBBY3Rpdml0eS5qYXZhIGIvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvbGF0aW4vc2V0dXAvU2V0dXBBY3Rpdml0eS5qYXZhCmluZGV4IDE1ZDBiYWMuLjY1MWZlYTYgMTAwNjQ0Ci0tLSBhL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2xhdGluL3NldHVwL1NldHVwQWN0aXZpdHkuamF2YQorKysgYi9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9sYXRpbi9zZXR1cC9TZXR1cEFjdGl2aXR5LmphdmEKQEAgLTE3LDExICsxNywxMiBAQAogcGFja2FnZSBjb20uYW5kcm9pZC5pbnB1dG1ldGhvZC5sYXRpbi5zZXR1cDsKIAogaW1wb3J0IGFuZHJvaWQuYXBwLkFjdGl2aXR5OworaW1wb3J0IGFuZHJvaWQuY29udGVudC5Db250ZW50UmVzb2x2ZXI7CiBpbXBvcnQgYW5kcm9pZC5jb250ZW50LkNvbnRleHQ7CiBpbXBvcnQgYW5kcm9pZC5jb250ZW50LkludGVudDsKIGltcG9ydCBhbmRyb2lkLmNvbnRlbnQucmVzLlJlc291cmNlczsKLWltcG9ydCBhbmRyb2lkLmdyYXBoaWNzLlBvcnRlckR1ZmY7Ci1pbXBvcnQgYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZTsKK2ltcG9ydCBhbmRyb2lkLm1lZGlhLk1lZGlhUGxheWVyOworaW1wb3J0IGFuZHJvaWQubmV0LlVyaTsKIGltcG9ydCBhbmRyb2lkLm9zLkJ1bmRsZTsKIGltcG9ydCBhbmRyb2lkLm9zLk1lc3NhZ2U7CiBpbXBvcnQgYW5kcm9pZC5wcm92aWRlci5TZXR0aW5nczsKQEAgLTI5LDYgKzMwLDcgQEAKIGltcG9ydCBhbmRyb2lkLnZpZXcuaW5wdXRtZXRob2QuSW5wdXRNZXRob2RJbmZvOwogaW1wb3J0IGFuZHJvaWQudmlldy5pbnB1dG1ldGhvZC5JbnB1dE1ldGhvZE1hbmFnZXI7CiBpbXBvcnQgYW5kcm9pZC53aWRnZXQuVGV4dFZpZXc7CitpbXBvcnQgYW5kcm9pZC53aWRnZXQuVmlkZW9WaWV3OwogCiBpbXBvcnQgY29tLmFuZHJvaWQuaW5wdXRtZXRob2QuY29tcGF0LlRleHRWaWV3Q29tcGF0VXRpbHM7CiBpbXBvcnQgY29tLmFuZHJvaWQuaW5wdXRtZXRob2QuY29tcGF0LlZpZXdDb21wYXRVdGlsczsKQEAgLTM4LDE2ICs0MCwyNiBAQAogaW1wb3J0IGNvbS5hbmRyb2lkLmlucHV0bWV0aG9kLmxhdGluLlNldHRpbmdzQWN0aXZpdHk7CiBpbXBvcnQgY29tLmFuZHJvaWQuaW5wdXRtZXRob2QubGF0aW4uU3RhdGljSW5uZXJIYW5kbGVyV3JhcHBlcjsKIAotaW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOworaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7CiAKLXB1YmxpYyBmaW5hbCBjbGFzcyBTZXR1cEFjdGl2aXR5IGV4dGVuZHMgQWN0aXZpdHkgewotICAgIHByaXZhdGUgU2V0dXBTdGVwSW5kaWNhdG9yVmlldyBtU3RlcEluZGljYXRvclZpZXc7Ci0gICAgcHJpdmF0ZSBmaW5hbCBTZXR1cFN0ZXBHcm91cCBtU2V0dXBTdGVwcyA9IG5ldyBTZXR1cFN0ZXBHcm91cCgpOworLy8gVE9ETzogVXNlIEZyYWdtZW50IHRvIGltcGxlbWVudCB3ZWxjb21lIHNjcmVlbiBhbmQgc2V0dXAgc3RlcHMuCitwdWJsaWMgZmluYWwgY2xhc3MgU2V0dXBBY3Rpdml0eSBleHRlbmRzIEFjdGl2aXR5IGltcGxlbWVudHMgVmlldy5PbkNsaWNrTGlzdGVuZXIgeworICAgIHByaXZhdGUgVmlldyBtV2VsY29tZVNjcmVlbjsKKyAgICBwcml2YXRlIFZpZXcgbVNldHVwU2NyZWVuOworICAgIHByaXZhdGUgVXJpIG1XZWxjb21lVmlkZW9Vcmk7CisgICAgcHJpdmF0ZSBWaWRlb1ZpZXcgbVdlbGNvbWVWaWRlb1ZpZXc7CisgICAgcHJpdmF0ZSBWaWV3IG1BY3Rpb25TdGFydDsKKyAgICBwcml2YXRlIFZpZXcgbUFjdGlvbk5leHQ7CisgICAgcHJpdmF0ZSBUZXh0VmlldyBtU3RlcDFCdWxsZXQ7CisgICAgcHJpdmF0ZSBUZXh0VmlldyBtQWN0aW9uRmluaXNoOworICAgIHByaXZhdGUgU2V0dXBTdGVwR3JvdXAgbVNldHVwU3RlcEdyb3VwOwogICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBTVEFURV9TVEVQID0gInN0ZXAiOwogICAgIHByaXZhdGUgaW50IG1TdGVwTnVtYmVyOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBTVEVQXzAgPSAwOwogICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBTVEVQXzEgPSAxOwogICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBTVEVQXzIgPSAyOwogICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBTVEVQXzMgPSAzOworICAgIHByaXZhdGUgYm9vbGVhbiBtV2FzTGFuZ3VhZ2VBbmRJbnB1dFNldHRpbmdzSW52b2tlZDsKIAogICAgIHByaXZhdGUgZmluYWwgU2V0dGluZ3NQb29saW5nSGFuZGxlciBtSGFuZGxlciA9IG5ldyBTZXR0aW5nc1Bvb2xpbmdIYW5kbGVyKHRoaXMpOwogCkBAIC0xMDksMTcgKzEyMSwyNiBAQAogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgLy8gVE9ETzogVXNlIHNhbnMtc2VyaWYtdGhpbiBmb250IGZhbWlseSBkZXBlbmRpbmcgb24gdGhlIHN5c3RlbSBsb2NhbGUgd2hpdGUgbGlzdCBhbmQKLSAgICAgICAgLy8gdGhlIFNESyB2ZXJzaW9uLgotICAgICAgICBmaW5hbCBUZXh0VmlldyB0aXRsZVZpZXcgPSAoVGV4dFZpZXcpZmluZFZpZXdCeUlkKFIuaWQuc2V0dXBfdGl0bGUpOwotICAgICAgICBmaW5hbCBpbnQgYXBwTmFtZSA9IGdldEFwcGxpY2F0aW9uSW5mbygpLmxhYmVsUmVzOwotICAgICAgICB0aXRsZVZpZXcuc2V0VGV4dChnZXRTdHJpbmcoUi5zdHJpbmcuc2V0dXBfdGl0bGUsIGdldFN0cmluZyhhcHBOYW1lKSkpOworICAgICAgICBmaW5hbCBTdHJpbmcgYXBwbGljYXRpb25OYW1lID0gZ2V0UmVzb3VyY2VzKCkuZ2V0U3RyaW5nKGdldEFwcGxpY2F0aW9uSW5mbygpLmxhYmVsUmVzKTsKKyAgICAgICAgbVdlbGNvbWVTY3JlZW4gPSBmaW5kVmlld0J5SWQoUi5pZC5zZXR1cF93ZWxjb21lX3NjcmVlbik7CisgICAgICAgIGZpbmFsIFRleHRWaWV3IHdlbGNvbWVUaXRsZSA9IChUZXh0VmlldylmaW5kVmlld0J5SWQoUi5pZC5zZXR1cF93ZWxjb21lX3RpdGxlKTsKKyAgICAgICAgd2VsY29tZVRpdGxlLnNldFRleHQoZ2V0U3RyaW5nKFIuc3RyaW5nLnNldHVwX3dlbGNvbWVfdGl0bGUsIGFwcGxpY2F0aW9uTmFtZSkpOwogCi0gICAgICAgIG1TdGVwSW5kaWNhdG9yVmlldyA9IChTZXR1cFN0ZXBJbmRpY2F0b3JWaWV3KWZpbmRWaWV3QnlJZChSLmlkLnNldHVwX3N0ZXBfaW5kaWNhdG9yKTsKKyAgICAgICAgbVNldHVwU2NyZWVuID0gZmluZFZpZXdCeUlkKFIuaWQuc2V0dXBfc3RlcHNfc2NyZWVuKTsKKyAgICAgICAgZmluYWwgVGV4dFZpZXcgc3RlcHNUaXRsZSA9IChUZXh0VmlldylmaW5kVmlld0J5SWQoUi5pZC5zZXR1cF90aXRsZSk7CisgICAgICAgIHN0ZXBzVGl0bGUuc2V0VGV4dChnZXRTdHJpbmcoUi5zdHJpbmcuc2V0dXBfc3RlcHNfdGl0bGUsIGFwcGxpY2F0aW9uTmFtZSkpOwogCi0gICAgICAgIGZpbmFsIFNldHVwU3RlcCBzdGVwMSA9IG5ldyBTZXR1cFN0ZXAoZmluZFZpZXdCeUlkKFIuaWQuc2V0dXBfc3RlcDEpLAotICAgICAgICAgICAgICAgIGFwcE5hbWUsIFIuc3RyaW5nLnNldHVwX3N0ZXAxX3RpdGxlLCBSLnN0cmluZy5zZXR1cF9zdGVwMV9pbnN0cnVjdGlvbiwKLSAgICAgICAgICAgICAgICBSLmRyYXdhYmxlLmljX3NldHRpbmdzX2xhbmd1YWdlLCBSLnN0cmluZy5sYW5ndWFnZV9zZXR0aW5ncyk7CisgICAgICAgIGZpbmFsIFNldHVwU3RlcEluZGljYXRvclZpZXcgaW5kaWNhdG9yVmlldyA9CisgICAgICAgICAgICAgICAgKFNldHVwU3RlcEluZGljYXRvclZpZXcpZmluZFZpZXdCeUlkKFIuaWQuc2V0dXBfc3RlcF9pbmRpY2F0b3IpOworICAgICAgICBtU2V0dXBTdGVwR3JvdXAgPSBuZXcgU2V0dXBTdGVwR3JvdXAoaW5kaWNhdG9yVmlldyk7CisKKyAgICAgICAgbVN0ZXAxQnVsbGV0ID0gKFRleHRWaWV3KWZpbmRWaWV3QnlJZChSLmlkLnNldHVwX3N0ZXAxX2J1bGxldCk7CisgICAgICAgIG1TdGVwMUJ1bGxldC5zZXRPbkNsaWNrTGlzdGVuZXIodGhpcyk7CisgICAgICAgIGZpbmFsIFNldHVwU3RlcCBzdGVwMSA9IG5ldyBTZXR1cFN0ZXAoU1RFUF8xLCBhcHBsaWNhdGlvbk5hbWUsCisgICAgICAgICAgICAgICAgbVN0ZXAxQnVsbGV0LCBmaW5kVmlld0J5SWQoUi5pZC5zZXR1cF9zdGVwMSksCisgICAgICAgICAgICAgICAgUi5zdHJpbmcuc2V0dXBfc3RlcDFfdGl0bGUsIFIuc3RyaW5nLnNldHVwX3N0ZXAxX2luc3RydWN0aW9uLAorICAgICAgICAgICAgICAgIFIuc3RyaW5nLnNldHVwX3N0ZXAxX2ZpbmlzaGVkX2luc3RydWN0aW9uLCBSLmRyYXdhYmxlLmljX3NldHVwX3N0ZXAxLAorICAgICAgICAgICAgICAgIFIuc3RyaW5nLnNldHVwX3N0ZXAxX2FjdGlvbik7CiAgICAgICAgIHN0ZXAxLnNldEFjdGlvbihuZXcgUnVubmFibGUoKSB7CiAgICAgICAgICAgICBAT3ZlcnJpZGUKICAgICAgICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKQEAgLTEyNywxMSArMTQ4LDEzIEBACiAgICAgICAgICAgICAgICAgbUhhbmRsZXIuc3RhcnRQb2xsaW5nSW1lU2V0dGluZ3MoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSk7Ci0gICAgICAgIG1TZXR1cFN0ZXBzLmFkZFN0ZXAoU1RFUF8xLCBzdGVwMSk7CisgICAgICAgIG1TZXR1cFN0ZXBHcm91cC5hZGRTdGVwKHN0ZXAxKTsKIAotICAgICAgICBmaW5hbCBTZXR1cFN0ZXAgc3RlcDIgPSBuZXcgU2V0dXBTdGVwKGZpbmRWaWV3QnlJZChSLmlkLnNldHVwX3N0ZXAyKSwKLSAgICAgICAgICAgICAgICBhcHBOYW1lLCBSLnN0cmluZy5zZXR1cF9zdGVwMl90aXRsZSwgUi5zdHJpbmcuc2V0dXBfc3RlcDJfaW5zdHJ1Y3Rpb24sCi0gICAgICAgICAgICAgICAgMCAvKiBhY3Rpb25JY29uICovLCBSLnN0cmluZy5zZWxlY3RfaW5wdXRfbWV0aG9kKTsKKyAgICAgICAgZmluYWwgU2V0dXBTdGVwIHN0ZXAyID0gbmV3IFNldHVwU3RlcChTVEVQXzIsIGFwcGxpY2F0aW9uTmFtZSwKKyAgICAgICAgICAgICAgICAoVGV4dFZpZXcpZmluZFZpZXdCeUlkKFIuaWQuc2V0dXBfc3RlcDJfYnVsbGV0KSwgZmluZFZpZXdCeUlkKFIuaWQuc2V0dXBfc3RlcDIpLAorICAgICAgICAgICAgICAgIFIuc3RyaW5nLnNldHVwX3N0ZXAyX3RpdGxlLCBSLnN0cmluZy5zZXR1cF9zdGVwMl9pbnN0cnVjdGlvbiwKKyAgICAgICAgICAgICAgICAwIC8qIGZpbmlzaGVkSW5zdHJ1Y3Rpb24gKi8sIFIuZHJhd2FibGUuaWNfc2V0dXBfc3RlcDIsCisgICAgICAgICAgICAgICAgUi5zdHJpbmcuc2V0dXBfc3RlcDJfYWN0aW9uKTsKICAgICAgICAgc3RlcDIuc2V0QWN0aW9uKG5ldyBSdW5uYWJsZSgpIHsKICAgICAgICAgICAgIEBPdmVycmlkZQogICAgICAgICAgICAgcHVibGljIHZvaWQgcnVuKCkgewpAQCAtMTQwLDE4ICsxNjMsNzMgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIC5zaG93SW5wdXRNZXRob2RQaWNrZXIoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSk7Ci0gICAgICAgIG1TZXR1cFN0ZXBzLmFkZFN0ZXAoU1RFUF8yLCBzdGVwMik7CisgICAgICAgIG1TZXR1cFN0ZXBHcm91cC5hZGRTdGVwKHN0ZXAyKTsKIAotICAgICAgICBmaW5hbCBTZXR1cFN0ZXAgc3RlcDMgPSBuZXcgU2V0dXBTdGVwKGZpbmRWaWV3QnlJZChSLmlkLnNldHVwX3N0ZXAzKSwKLSAgICAgICAgICAgICAgICBhcHBOYW1lLCBSLnN0cmluZy5zZXR1cF9zdGVwM190aXRsZSwgMCAvKiBpbnN0cnVjdGlvbiAqLywKLSAgICAgICAgICAgICAgICBSLmRyYXdhYmxlLnN5bV9rZXlib2FyZF9sYW5ndWFnZV9zd2l0Y2gsIFIuc3RyaW5nLnNldHVwX3N0ZXAzX2luc3RydWN0aW9uKTsKKyAgICAgICAgZmluYWwgU2V0dXBTdGVwIHN0ZXAzID0gbmV3IFNldHVwU3RlcChTVEVQXzMsIGFwcGxpY2F0aW9uTmFtZSwKKyAgICAgICAgICAgICAgICAoVGV4dFZpZXcpZmluZFZpZXdCeUlkKFIuaWQuc2V0dXBfc3RlcDNfYnVsbGV0KSwgZmluZFZpZXdCeUlkKFIuaWQuc2V0dXBfc3RlcDMpLAorICAgICAgICAgICAgICAgIFIuc3RyaW5nLnNldHVwX3N0ZXAzX3RpdGxlLCBSLnN0cmluZy5zZXR1cF9zdGVwM19pbnN0cnVjdGlvbiwKKyAgICAgICAgICAgICAgICAwIC8qIGZpbmlzaGVkSW5zdHJ1Y3Rpb24gKi8sIFIuZHJhd2FibGUuaWNfc2V0dXBfc3RlcDMsCisgICAgICAgICAgICAgICAgUi5zdHJpbmcuc2V0dXBfc3RlcDNfYWN0aW9uKTsKICAgICAgICAgc3RlcDMuc2V0QWN0aW9uKG5ldyBSdW5uYWJsZSgpIHsKICAgICAgICAgICAgIEBPdmVycmlkZQogICAgICAgICAgICAgcHVibGljIHZvaWQgcnVuKCkgewogICAgICAgICAgICAgICAgIGludm9rZVN1YnR5cGVFbmFibGVyT2ZUaGlzSW1lKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0pOwotICAgICAgICBtU2V0dXBTdGVwcy5hZGRTdGVwKFNURVBfMywgc3RlcDMpOworICAgICAgICBtU2V0dXBTdGVwR3JvdXAuYWRkU3RlcChzdGVwMyk7CisKKyAgICAgICAgbVdlbGNvbWVWaWRlb1VyaSA9IG5ldyBVcmkuQnVpbGRlcigpCisgICAgICAgICAgICAgICAgLnNjaGVtZShDb250ZW50UmVzb2x2ZXIuU0NIRU1FX0FORFJPSURfUkVTT1VSQ0UpCisgICAgICAgICAgICAgICAgLmF1dGhvcml0eShnZXRQYWNrYWdlTmFtZSgpKQorICAgICAgICAgICAgICAgIC5wYXRoKEludGVnZXIudG9TdHJpbmcoUi5yYXcuc2V0dXBfd2VsY29tZV92aWRlbykpCisgICAgICAgICAgICAgICAgLmJ1aWxkKCk7CisgICAgICAgIG1XZWxjb21lVmlkZW9WaWV3ID0gKFZpZGVvVmlldylmaW5kVmlld0J5SWQoUi5pZC5zZXR1cF93ZWxjb21lX3ZpZGVvKTsKKyAgICAgICAgbVdlbGNvbWVWaWRlb1ZpZXcuc2V0T25Db21wbGV0aW9uTGlzdGVuZXIobmV3IE1lZGlhUGxheWVyLk9uQ29tcGxldGlvbkxpc3RlbmVyKCkgeworICAgICAgICAgICAgQE92ZXJyaWRlCisgICAgICAgICAgICBwdWJsaWMgdm9pZCBvbkNvbXBsZXRpb24oZmluYWwgTWVkaWFQbGF5ZXIgbXApIHsKKyAgICAgICAgICAgICAgICBtcC5zdGFydCgpOworICAgICAgICAgICAgfQorICAgICAgICB9KTsKKyAgICAgICAgbVdlbGNvbWVWaWRlb1ZpZXcuc2V0T25QcmVwYXJlZExpc3RlbmVyKG5ldyBNZWRpYVBsYXllci5PblByZXBhcmVkTGlzdGVuZXIoKSB7CisgICAgICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgICAgIHB1YmxpYyB2b2lkIG9uUHJlcGFyZWQoZmluYWwgTWVkaWFQbGF5ZXIgbXApIHsKKyAgICAgICAgICAgICAgICAvLyBOb3cgVmlkZW9WaWV3IGhhcyBiZWVuIGxhaWQtb3V0IGFuZCByZWFkeSB0byBwbGF5LCByZW1vdmUgYmFja2dyb3VuZCBvZiBpdCB0bworICAgICAgICAgICAgICAgIC8vIHJldmVhbCB0aGUgdmlkZW8uCisgICAgICAgICAgICAgICAgbVdlbGNvbWVWaWRlb1ZpZXcuc2V0QmFja2dyb3VuZFJlc291cmNlKDApOworICAgICAgICAgICAgfQorICAgICAgICB9KTsKKworICAgICAgICBtQWN0aW9uU3RhcnQgPSBmaW5kVmlld0J5SWQoUi5pZC5zZXR1cF9zdGFydF9sYWJlbCk7CisgICAgICAgIG1BY3Rpb25TdGFydC5zZXRPbkNsaWNrTGlzdGVuZXIodGhpcyk7CisgICAgICAgIG1BY3Rpb25OZXh0ID0gZmluZFZpZXdCeUlkKFIuaWQuc2V0dXBfbmV4dCk7CisgICAgICAgIG1BY3Rpb25OZXh0LnNldE9uQ2xpY2tMaXN0ZW5lcih0aGlzKTsKKyAgICAgICAgbUFjdGlvbkZpbmlzaCA9IChUZXh0VmlldylmaW5kVmlld0J5SWQoUi5pZC5zZXR1cF9maW5pc2gpOworICAgICAgICBUZXh0Vmlld0NvbXBhdFV0aWxzLnNldENvbXBvdW5kRHJhd2FibGVzUmVsYXRpdmVXaXRoSW50cmluc2ljQm91bmRzKG1BY3Rpb25GaW5pc2gsCisgICAgICAgICAgICAgICAgZ2V0UmVzb3VyY2VzKCkuZ2V0RHJhd2FibGUoUi5kcmF3YWJsZS5pY19zZXR1cF9maW5pc2gpLCBudWxsLCBudWxsLCBudWxsKTsKKyAgICAgICAgbUFjdGlvbkZpbmlzaC5zZXRPbkNsaWNrTGlzdGVuZXIodGhpcyk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIHZvaWQgb25DbGljayhmaW5hbCBWaWV3IHYpIHsKKyAgICAgICAgaWYgKHYgPT0gbUFjdGlvbkZpbmlzaCkgeworICAgICAgICAgICAgZmluaXNoKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgZmluYWwgaW50IHN0ZXBTdGF0ZSA9IGRldGVybWluZVNldHVwU3RhdGUoKTsKKyAgICAgICAgZmluYWwgaW50IG5leHRTdGVwOworICAgICAgICBpZiAodiA9PSBtQWN0aW9uU3RhcnQpIHsKKyAgICAgICAgICAgIG5leHRTdGVwID0gU1RFUF8xOworICAgICAgICB9IGVsc2UgaWYgKHYgPT0gbUFjdGlvbk5leHQpIHsKKyAgICAgICAgICAgIG5leHRTdGVwID0gbVN0ZXBOdW1iZXIgKyAxOworICAgICAgICB9IGVsc2UgaWYgKHYgPT0gbVN0ZXAxQnVsbGV0ICYmIHN0ZXBTdGF0ZSA9PSBTVEVQXzIpIHsKKyAgICAgICAgICAgIG5leHRTdGVwID0gU1RFUF8xOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbmV4dFN0ZXAgPSBtU3RlcE51bWJlcjsKKyAgICAgICAgfQorICAgICAgICBpZiAobVN0ZXBOdW1iZXIgIT0gbmV4dFN0ZXApIHsKKyAgICAgICAgICAgIG1TdGVwTnVtYmVyID0gbmV4dFN0ZXA7CisgICAgICAgICAgICB1cGRhdGVTZXR1cFN0ZXBWaWV3KCk7CisgICAgICAgIH0KICAgICB9CiAKICAgICBwcml2YXRlIHZvaWQgaW52b2tlU2V0dXBXaXphcmRPZlRoaXNJbWUoKSB7CkBAIC0xNzUsNiArMjUzLDcgQEAKICAgICAgICAgaW50ZW50LnNldEFjdGlvbihTZXR0aW5ncy5BQ1RJT05fSU5QVVRfTUVUSE9EX1NFVFRJTkdTKTsKICAgICAgICAgaW50ZW50LmFkZENhdGVnb3J5KEludGVudC5DQVRFR09SWV9ERUZBVUxUKTsKICAgICAgICAgc3RhcnRBY3Rpdml0eShpbnRlbnQpOworICAgICAgICBtV2FzTGFuZ3VhZ2VBbmRJbnB1dFNldHRpbmdzSW52b2tlZCA9IHRydWU7CiAgICAgfQogCiAgICAgcHJpdmF0ZSB2b2lkIGludm9rZVN1YnR5cGVFbmFibGVyT2ZUaGlzSW1lKCkgewpAQCAtMjIyLDcgKzMwMSw3IEBACiAgICAgICAgIHJldHVybiBteUltaS5nZXRJZCgpLmVxdWFscyhjdXJyZW50SW1lSWQpOwogICAgIH0KIAotICAgIHByaXZhdGUgaW50IGRldGVybWluZVNldHVwU3RlcE51bWJlcigpIHsKKyAgICBwcml2YXRlIGludCBkZXRlcm1pbmVTZXR1cFN0YXRlKCkgewogICAgICAgICBtSGFuZGxlci5jYW5jZWxQb2xsaW5nSW1lU2V0dGluZ3MoKTsKICAgICAgICAgaWYgKCFpc1RoaXNJbWVFbmFibGVkKHRoaXMpKSB7CiAgICAgICAgICAgICByZXR1cm4gU1RFUF8xOwpAQCAtMjMzLDYgKzMxMiwxNCBAQAogICAgICAgICByZXR1cm4gU1RFUF8zOwogICAgIH0KIAorICAgIHByaXZhdGUgaW50IGRldGVybWluZVNldHVwU3RlcE51bWJlcigpIHsKKyAgICAgICAgZmluYWwgaW50IHN0ZXBTdGF0ZSA9IGRldGVybWluZVNldHVwU3RhdGUoKTsKKyAgICAgICAgaWYgKHN0ZXBTdGF0ZSA9PSBTVEVQXzEpIHsKKyAgICAgICAgICAgIHJldHVybiBtV2FzTGFuZ3VhZ2VBbmRJbnB1dFNldHRpbmdzSW52b2tlZCA/IFNURVBfMSA6IFNURVBfMDsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gc3RlcFN0YXRlOworICAgIH0KKwogICAgIEBPdmVycmlkZQogICAgIHByb3RlY3RlZCB2b2lkIG9uU2F2ZUluc3RhbmNlU3RhdGUoZmluYWwgQnVuZGxlIG91dFN0YXRlKSB7CiAgICAgICAgIHN1cGVyLm9uU2F2ZUluc3RhbmNlU3RhdGUob3V0U3RhdGUpOwpAQCAtMjY0LDYgKzM1MSwyMiBAQAogICAgIH0KIAogICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyB2b2lkIG9uQmFja1ByZXNzZWQoKSB7CisgICAgICAgIGlmIChtU3RlcE51bWJlciA9PSBTVEVQXzEpIHsKKyAgICAgICAgICAgIG1TdGVwTnVtYmVyID0gU1RFUF8wOworICAgICAgICAgICAgdXBkYXRlU2V0dXBTdGVwVmlldygpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIHN1cGVyLm9uQmFja1ByZXNzZWQoKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwcm90ZWN0ZWQgdm9pZCBvblBhdXNlKCkgeworICAgICAgICBtV2VsY29tZVZpZGVvVmlldy5zdG9wUGxheWJhY2soKTsKKyAgICAgICAgc3VwZXIub25QYXVzZSgpOworICAgIH0KKworICAgIEBPdmVycmlkZQogICAgIHB1YmxpYyB2b2lkIG9uV2luZG93Rm9jdXNDaGFuZ2VkKGZpbmFsIGJvb2xlYW4gaGFzRm9jdXMpIHsKICAgICAgICAgc3VwZXIub25XaW5kb3dGb2N1c0NoYW5nZWQoaGFzRm9jdXMpOwogICAgICAgICBpZiAoIWhhc0ZvY3VzKSB7CkBAIC0yNzQsNTcgKzM3Nyw2NyBAQAogICAgIH0KIAogICAgIHByaXZhdGUgdm9pZCB1cGRhdGVTZXR1cFN0ZXBWaWV3KCkgewotICAgICAgICBmaW5hbCBpbnQgbGF5b3V0RGlyZWN0aW9uID0gVmlld0NvbXBhdFV0aWxzLmdldExheW91dERpcmVjdGlvbihtU3RlcEluZGljYXRvclZpZXcpOwotICAgICAgICBtU3RlcEluZGljYXRvclZpZXcuc2V0SW5kaWNhdG9yUG9zaXRpb24oCi0gICAgICAgICAgICAgICAgZ2V0SW5kaWNhdG9yUG9zaXRpb24obVN0ZXBOdW1iZXIsIG1TZXR1cFN0ZXBzLmdldFRvdGFsU3RlcCgpLCBsYXlvdXREaXJlY3Rpb24pKTsKLSAgICAgICAgbVNldHVwU3RlcHMuZW5hYmxlU3RlcChtU3RlcE51bWJlcik7Ci0gICAgfQotCi0gICAgcHJpdmF0ZSBzdGF0aWMgZmxvYXQgZ2V0SW5kaWNhdG9yUG9zaXRpb24oZmluYWwgaW50IHN0ZXAsIGZpbmFsIGludCB0b3RhbFN0ZXAsCi0gICAgICAgICAgICBmaW5hbCBpbnQgbGF5b3V0RGlyZWN0aW9uKSB7Ci0gICAgICAgIGZpbmFsIGZsb2F0IHBvcyA9ICgoc3RlcCAtIFNURVBfMSkgKiAyICsgMSkgLyAoZmxvYXQpKHRvdGFsU3RlcCAqIDIpOwotICAgICAgICByZXR1cm4gKGxheW91dERpcmVjdGlvbiA9PSBWaWV3Q29tcGF0VXRpbHMuTEFZT1VUX0RJUkVDVElPTl9SVEwpID8gMS4wZiAtIHBvcyA6IHBvczsKKyAgICAgICAgZmluYWwgYm9vbGVhbiB3ZWxjb21lU2NyZWVuID0gKG1TdGVwTnVtYmVyID09IFNURVBfMCk7CisgICAgICAgIG1XZWxjb21lU2NyZWVuLnNldFZpc2liaWxpdHkod2VsY29tZVNjcmVlbiA/IFZpZXcuVklTSUJMRSA6IFZpZXcuR09ORSk7CisgICAgICAgIG1TZXR1cFNjcmVlbi5zZXRWaXNpYmlsaXR5KHdlbGNvbWVTY3JlZW4gPyBWaWV3LkdPTkU6IFZpZXcuVklTSUJMRSk7CisgICAgICAgIGlmICh3ZWxjb21lU2NyZWVuKSB7CisgICAgICAgICAgICBtV2VsY29tZVZpZGVvVmlldy5zZXRWaWRlb1VSSShtV2VsY29tZVZpZGVvVXJpKTsKKyAgICAgICAgICAgIG1XZWxjb21lVmlkZW9WaWV3LnN0YXJ0KCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgbVdlbGNvbWVWaWRlb1ZpZXcuc3RvcFBsYXliYWNrKCk7CisgICAgICAgIGZpbmFsIGJvb2xlYW4gaXNTdGVwQWN0aW9uQWxyZWFkeURvbmUgPSBtU3RlcE51bWJlciA8IGRldGVybWluZVNldHVwU3RhdGUoKTsKKyAgICAgICAgbVNldHVwU3RlcEdyb3VwLmVuYWJsZVN0ZXAobVN0ZXBOdW1iZXIsIGlzU3RlcEFjdGlvbkFscmVhZHlEb25lKTsKKyAgICAgICAgbUFjdGlvbk5leHQuc2V0VmlzaWJpbGl0eShpc1N0ZXBBY3Rpb25BbHJlYWR5RG9uZSA/IFZpZXcuVklTSUJMRSA6IFZpZXcuR09ORSk7CisgICAgICAgIG1BY3Rpb25GaW5pc2guc2V0VmlzaWJpbGl0eSgobVN0ZXBOdW1iZXIgPT0gU1RFUF8zKSA/IFZpZXcuVklTSUJMRSA6IFZpZXcuR09ORSk7CiAgICAgfQogCiAgICAgc3RhdGljIGZpbmFsIGNsYXNzIFNldHVwU3RlcCBpbXBsZW1lbnRzIFZpZXcuT25DbGlja0xpc3RlbmVyIHsKLSAgICAgICAgcHJpdmF0ZSBmaW5hbCBWaWV3IG1Sb290VmlldzsKKyAgICAgICAgcHVibGljIGZpbmFsIGludCBtU3RlcE5vOworICAgICAgICBwcml2YXRlIGZpbmFsIFZpZXcgbVN0ZXBWaWV3OworICAgICAgICBwcml2YXRlIGZpbmFsIFRleHRWaWV3IG1CdWxsZXRWaWV3OworICAgICAgICBwcml2YXRlIGZpbmFsIGludCBtQWN0aXZhdGVkQ29sb3I7CisgICAgICAgIHByaXZhdGUgZmluYWwgaW50IG1EZWFjdGl2YXRlZENvbG9yOworICAgICAgICBwcml2YXRlIGZpbmFsIFN0cmluZyBtSW5zdHJ1Y3Rpb247CisgICAgICAgIHByaXZhdGUgZmluYWwgU3RyaW5nIG1GaW5pc2hlZEluc3RydWN0aW9uOwogICAgICAgICBwcml2YXRlIGZpbmFsIFRleHRWaWV3IG1BY3Rpb25MYWJlbDsKICAgICAgICAgcHJpdmF0ZSBSdW5uYWJsZSBtQWN0aW9uOwogCi0gICAgICAgIHB1YmxpYyBTZXR1cFN0ZXAoZmluYWwgVmlldyByb290VmlldywgZmluYWwgaW50IGFwcE5hbWUsIGZpbmFsIGludCB0aXRsZSwKLSAgICAgICAgICAgICAgICBmaW5hbCBpbnQgaW5zdHJ1Y3Rpb24sIGZpbmFsIGludCBhY3Rpb25JY29uLCBmaW5hbCBpbnQgYWN0aW9uTGFiZWwpIHsKLSAgICAgICAgICAgIG1Sb290VmlldyA9IHJvb3RWaWV3OwotICAgICAgICAgICAgZmluYWwgUmVzb3VyY2VzIHJlcyA9IHJvb3RWaWV3LmdldFJlc291cmNlcygpOwotICAgICAgICAgICAgZmluYWwgU3RyaW5nIGFwcGxpY2F0aW9uTmFtZSA9IHJlcy5nZXRTdHJpbmcoYXBwTmFtZSk7CisgICAgICAgIHB1YmxpYyBTZXR1cFN0ZXAoZmluYWwgaW50IHN0ZXBObywgZmluYWwgU3RyaW5nIGFwcGxpY2F0aW9uTmFtZSwgZmluYWwgVGV4dFZpZXcgYnVsbGV0VmlldywKKyAgICAgICAgICAgICAgICBmaW5hbCBWaWV3IHN0ZXBWaWV3LCBmaW5hbCBpbnQgdGl0bGUsIGZpbmFsIGludCBpbnN0cnVjdGlvbiwKKyAgICAgICAgICAgICAgICBmaW5hbCBpbnQgZmluaXNoZWRJbnN0cnVjdGlvbixmaW5hbCBpbnQgYWN0aW9uSWNvbiwgZmluYWwgaW50IGFjdGlvbkxhYmVsKSB7CisgICAgICAgICAgICBtU3RlcE5vID0gc3RlcE5vOworICAgICAgICAgICAgbVN0ZXBWaWV3ID0gc3RlcFZpZXc7CisgICAgICAgICAgICBtQnVsbGV0VmlldyA9IGJ1bGxldFZpZXc7CisgICAgICAgICAgICBmaW5hbCBSZXNvdXJjZXMgcmVzID0gc3RlcFZpZXcuZ2V0UmVzb3VyY2VzKCk7CisgICAgICAgICAgICBtQWN0aXZhdGVkQ29sb3IgPSByZXMuZ2V0Q29sb3IoUi5jb2xvci5zZXR1cF90ZXh0X2FjdGlvbik7CisgICAgICAgICAgICBtRGVhY3RpdmF0ZWRDb2xvciA9IHJlcy5nZXRDb2xvcihSLmNvbG9yLnNldHVwX3RleHRfZGFyayk7CiAKLSAgICAgICAgICAgIGZpbmFsIFRleHRWaWV3IHRpdGxlVmlldyA9IChUZXh0Vmlldylyb290Vmlldy5maW5kVmlld0J5SWQoUi5pZC5zZXR1cF9zdGVwX3RpdGxlKTsKKyAgICAgICAgICAgIGZpbmFsIFRleHRWaWV3IHRpdGxlVmlldyA9IChUZXh0VmlldyltU3RlcFZpZXcuZmluZFZpZXdCeUlkKFIuaWQuc2V0dXBfc3RlcF90aXRsZSk7CiAgICAgICAgICAgICB0aXRsZVZpZXcuc2V0VGV4dChyZXMuZ2V0U3RyaW5nKHRpdGxlLCBhcHBsaWNhdGlvbk5hbWUpKTsKKyAgICAgICAgICAgIG1JbnN0cnVjdGlvbiA9IChpbnN0cnVjdGlvbiA9PSAwKSA/IG51bGwKKyAgICAgICAgICAgICAgICAgICAgOiByZXMuZ2V0U3RyaW5nKGluc3RydWN0aW9uLCBhcHBsaWNhdGlvbk5hbWUpOworICAgICAgICAgICAgbUZpbmlzaGVkSW5zdHJ1Y3Rpb24gPSAoZmluaXNoZWRJbnN0cnVjdGlvbiA9PSAwKSA/IG51bGwKKyAgICAgICAgICAgICAgICAgICAgOiByZXMuZ2V0U3RyaW5nKGZpbmlzaGVkSW5zdHJ1Y3Rpb24sIGFwcGxpY2F0aW9uTmFtZSk7CiAKLSAgICAgICAgICAgIGZpbmFsIFRleHRWaWV3IGluc3RydWN0aW9uVmlldyA9IChUZXh0Vmlldylyb290Vmlldy5maW5kVmlld0J5SWQoCi0gICAgICAgICAgICAgICAgICAgIFIuaWQuc2V0dXBfc3RlcF9pbnN0cnVjdGlvbik7Ci0gICAgICAgICAgICBpZiAoaW5zdHJ1Y3Rpb24gPT0gMCkgewotICAgICAgICAgICAgICAgIGluc3RydWN0aW9uVmlldy5zZXRWaXNpYmlsaXR5KFZpZXcuR09ORSk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGluc3RydWN0aW9uVmlldy5zZXRUZXh0KHJlcy5nZXRTdHJpbmcoaW5zdHJ1Y3Rpb24sIGFwcGxpY2F0aW9uTmFtZSkpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBtQWN0aW9uTGFiZWwgPSAoVGV4dFZpZXcpcm9vdFZpZXcuZmluZFZpZXdCeUlkKFIuaWQuc2V0dXBfc3RlcF9hY3Rpb25fbGFiZWwpOworICAgICAgICAgICAgbUFjdGlvbkxhYmVsID0gKFRleHRWaWV3KW1TdGVwVmlldy5maW5kVmlld0J5SWQoUi5pZC5zZXR1cF9zdGVwX2FjdGlvbl9sYWJlbCk7CiAgICAgICAgICAgICBtQWN0aW9uTGFiZWwuc2V0VGV4dChyZXMuZ2V0U3RyaW5nKGFjdGlvbkxhYmVsKSk7CiAgICAgICAgICAgICBpZiAoYWN0aW9uSWNvbiA9PSAwKSB7CiAgICAgICAgICAgICAgICAgZmluYWwgaW50IHBhZGRpbmdFbmQgPSBWaWV3Q29tcGF0VXRpbHMuZ2V0UGFkZGluZ0VuZChtQWN0aW9uTGFiZWwpOwogICAgICAgICAgICAgICAgIFZpZXdDb21wYXRVdGlscy5zZXRQYWRkaW5nUmVsYXRpdmUobUFjdGlvbkxhYmVsLCBwYWRkaW5nRW5kLCAwLCBwYWRkaW5nRW5kLCAwKTsKICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgZmluYWwgaW50IG92ZXJyaWRlQ29sb3IgPSByZXMuZ2V0Q29sb3IoUi5jb2xvci5zZXR1cF90ZXh0X2FjdGlvbik7Ci0gICAgICAgICAgICAgICAgZmluYWwgRHJhd2FibGUgaWNvbiA9IHJlcy5nZXREcmF3YWJsZShhY3Rpb25JY29uKTsKLSAgICAgICAgICAgICAgICBpY29uLnNldENvbG9yRmlsdGVyKG92ZXJyaWRlQ29sb3IsIFBvcnRlckR1ZmYuTW9kZS5NVUxUSVBMWSk7Ci0gICAgICAgICAgICAgICAgaWNvbi5zZXRCb3VuZHMoMCwgMCwgaWNvbi5nZXRJbnRyaW5zaWNXaWR0aCgpLCBpY29uLmdldEludHJpbnNpY0hlaWdodCgpKTsKLSAgICAgICAgICAgICAgICBUZXh0Vmlld0NvbXBhdFV0aWxzLnNldENvbXBvdW5kRHJhd2FibGVzUmVsYXRpdmUoCi0gICAgICAgICAgICAgICAgICAgICAgICBtQWN0aW9uTGFiZWwsIGljb24sIG51bGwsIG51bGwsIG51bGwpOworICAgICAgICAgICAgICAgIFRleHRWaWV3Q29tcGF0VXRpbHMuc2V0Q29tcG91bmREcmF3YWJsZXNSZWxhdGl2ZVdpdGhJbnRyaW5zaWNCb3VuZHMoCisgICAgICAgICAgICAgICAgICAgICAgICBtQWN0aW9uTGFiZWwsIHJlcy5nZXREcmF3YWJsZShhY3Rpb25JY29uKSwgbnVsbCwgbnVsbCwgbnVsbCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBwdWJsaWMgdm9pZCBzZXRFbmFibGVkKGZpbmFsIGJvb2xlYW4gZW5hYmxlZCkgewotICAgICAgICAgICAgbVJvb3RWaWV3LnNldFZpc2liaWxpdHkoZW5hYmxlZCA/IFZpZXcuVklTSUJMRSA6IFZpZXcuR09ORSk7CisgICAgICAgIHB1YmxpYyB2b2lkIHNldEVuYWJsZWQoZmluYWwgYm9vbGVhbiBlbmFibGVkLCBmaW5hbCBib29sZWFuIGlzU3RlcEFjdGlvbkFscmVhZHlEb25lKSB7CisgICAgICAgICAgICBtU3RlcFZpZXcuc2V0VmlzaWJpbGl0eShlbmFibGVkID8gVmlldy5WSVNJQkxFIDogVmlldy5HT05FKTsKKyAgICAgICAgICAgIG1CdWxsZXRWaWV3LnNldFRleHRDb2xvcihlbmFibGVkID8gbUFjdGl2YXRlZENvbG9yIDogbURlYWN0aXZhdGVkQ29sb3IpOworICAgICAgICAgICAgZmluYWwgVGV4dFZpZXcgaW5zdHJ1Y3Rpb25WaWV3ID0gKFRleHRWaWV3KW1TdGVwVmlldy5maW5kVmlld0J5SWQoCisgICAgICAgICAgICAgICAgICAgIFIuaWQuc2V0dXBfc3RlcF9pbnN0cnVjdGlvbik7CisgICAgICAgICAgICBpbnN0cnVjdGlvblZpZXcuc2V0VGV4dChpc1N0ZXBBY3Rpb25BbHJlYWR5RG9uZSA/IG1GaW5pc2hlZEluc3RydWN0aW9uIDogbUluc3RydWN0aW9uKTsKKyAgICAgICAgICAgIG1BY3Rpb25MYWJlbC5zZXRWaXNpYmlsaXR5KGlzU3RlcEFjdGlvbkFscmVhZHlEb25lID8gVmlldy5HT05FIDogVmlldy5WSVNJQkxFKTsKICAgICAgICAgfQogCiAgICAgICAgIHB1YmxpYyB2b2lkIHNldEFjdGlvbihmaW5hbCBSdW5uYWJsZSBhY3Rpb24pIHsKQEAgLTMzNCwyOCArNDQ3LDMwIEBACiAKICAgICAgICAgQE92ZXJyaWRlCiAgICAgICAgIHB1YmxpYyB2b2lkIG9uQ2xpY2soZmluYWwgVmlldyB2KSB7Ci0gICAgICAgICAgICBpZiAobUFjdGlvbiAhPSBudWxsKSB7CisgICAgICAgICAgICBpZiAodiA9PSBtQWN0aW9uTGFiZWwgJiYgbUFjdGlvbiAhPSBudWxsKSB7CiAgICAgICAgICAgICAgICAgbUFjdGlvbi5ydW4oKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKICAgICBzdGF0aWMgZmluYWwgY2xhc3MgU2V0dXBTdGVwR3JvdXAgewotICAgICAgICBwcml2YXRlIGZpbmFsIEhhc2hNYXA8SW50ZWdlciwgU2V0dXBTdGVwPiBtR3JvdXAgPSBDb2xsZWN0aW9uVXRpbHMubmV3SGFzaE1hcCgpOworICAgICAgICBwcml2YXRlIGZpbmFsIFNldHVwU3RlcEluZGljYXRvclZpZXcgbUluZGljYXRvclZpZXc7CisgICAgICAgIHByaXZhdGUgZmluYWwgQXJyYXlMaXN0PFNldHVwU3RlcD4gbUdyb3VwID0gQ29sbGVjdGlvblV0aWxzLm5ld0FycmF5TGlzdCgpOwogCi0gICAgICAgIHB1YmxpYyB2b2lkIGFkZFN0ZXAoZmluYWwgaW50IHN0ZXBObywgZmluYWwgU2V0dXBTdGVwIHN0ZXApIHsKLSAgICAgICAgICAgIG1Hcm91cC5wdXQoc3RlcE5vLCBzdGVwKTsKKyAgICAgICAgcHVibGljIFNldHVwU3RlcEdyb3VwKGZpbmFsIFNldHVwU3RlcEluZGljYXRvclZpZXcgaW5kaWNhdG9yVmlldykgeworICAgICAgICAgICAgbUluZGljYXRvclZpZXcgPSBpbmRpY2F0b3JWaWV3OwogICAgICAgICB9CiAKLSAgICAgICAgcHVibGljIHZvaWQgZW5hYmxlU3RlcChmaW5hbCBpbnQgZW5hYmxlU3RlcE5vKSB7Ci0gICAgICAgICAgICBmb3IgKGZpbmFsIEludGVnZXIgc3RlcE5vIDogbUdyb3VwLmtleVNldCgpKSB7Ci0gICAgICAgICAgICAgICAgZmluYWwgU2V0dXBTdGVwIHN0ZXAgPSBtR3JvdXAuZ2V0KHN0ZXBObyk7Ci0gICAgICAgICAgICAgICAgc3RlcC5zZXRFbmFibGVkKHN0ZXBObyA9PSBlbmFibGVTdGVwTm8pOworICAgICAgICBwdWJsaWMgdm9pZCBhZGRTdGVwKGZpbmFsIFNldHVwU3RlcCBzdGVwKSB7CisgICAgICAgICAgICBtR3JvdXAuYWRkKHN0ZXApOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIHZvaWQgZW5hYmxlU3RlcChmaW5hbCBpbnQgZW5hYmxlU3RlcE5vLCBmaW5hbCBib29sZWFuIGlzU3RlcEFjdGlvbkFscmVhZHlEb25lKSB7CisgICAgICAgICAgICBmb3IgKGZpbmFsIFNldHVwU3RlcCBzdGVwIDogbUdyb3VwKSB7CisgICAgICAgICAgICAgICAgc3RlcC5zZXRFbmFibGVkKHN0ZXAubVN0ZXBObyA9PSBlbmFibGVTdGVwTm8sIGlzU3RlcEFjdGlvbkFscmVhZHlEb25lKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIHB1YmxpYyBpbnQgZ2V0VG90YWxTdGVwKCkgewotICAgICAgICAgICAgcmV0dXJuIG1Hcm91cC5zaXplKCk7CisgICAgICAgICAgICBtSW5kaWNhdG9yVmlldy5zZXRJbmRpY2F0b3JQb3NpdGlvbihlbmFibGVTdGVwTm8gLSBTVEVQXzEsIG1Hcm91cC5zaXplKCkpOwogICAgICAgICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvbGF0aW4vc2V0dXAvU2V0dXBTdGFydEluZGljYXRvclZpZXcuamF2YSBiL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2xhdGluL3NldHVwL1NldHVwU3RhcnRJbmRpY2F0b3JWaWV3LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2E5NzRmNgotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2xhdGluL3NldHVwL1NldHVwU3RhcnRJbmRpY2F0b3JWaWV3LmphdmEKQEAgLTAsMCArMSwxMDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCitwYWNrYWdlIGNvbS5hbmRyb2lkLmlucHV0bWV0aG9kLmxhdGluLnNldHVwOworCitpbXBvcnQgYW5kcm9pZC5jb250ZW50LkNvbnRleHQ7CitpbXBvcnQgYW5kcm9pZC5jb250ZW50LnJlcy5Db2xvclN0YXRlTGlzdDsKK2ltcG9ydCBhbmRyb2lkLmdyYXBoaWNzLkNhbnZhczsKK2ltcG9ydCBhbmRyb2lkLmdyYXBoaWNzLlBhaW50OworaW1wb3J0IGFuZHJvaWQuZ3JhcGhpY3MuUGF0aDsKK2ltcG9ydCBhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0OworaW1wb3J0IGFuZHJvaWQudmlldy5MYXlvdXRJbmZsYXRlcjsKK2ltcG9ydCBhbmRyb2lkLnZpZXcuVmlldzsKK2ltcG9ydCBhbmRyb2lkLndpZGdldC5MaW5lYXJMYXlvdXQ7CitpbXBvcnQgYW5kcm9pZC53aWRnZXQuVGV4dFZpZXc7CisKK2ltcG9ydCBjb20uYW5kcm9pZC5pbnB1dG1ldGhvZC5jb21wYXQuVmlld0NvbXBhdFV0aWxzOworaW1wb3J0IGNvbS5hbmRyb2lkLmlucHV0bWV0aG9kLmxhdGluLlI7CisKK3B1YmxpYyBmaW5hbCBjbGFzcyBTZXR1cFN0YXJ0SW5kaWNhdG9yVmlldyBleHRlbmRzIExpbmVhckxheW91dCB7CisgICAgcHVibGljIFNldHVwU3RhcnRJbmRpY2F0b3JWaWV3KGZpbmFsIENvbnRleHQgY29udGV4dCwgZmluYWwgQXR0cmlidXRlU2V0IGF0dHJzKSB7CisgICAgICAgIHN1cGVyKGNvbnRleHQsIGF0dHJzKTsKKyAgICAgICAgc2V0T3JpZW50YXRpb24oSE9SSVpPTlRBTCk7CisgICAgICAgIExheW91dEluZmxhdGVyLmZyb20oY29udGV4dCkuaW5mbGF0ZShSLmxheW91dC5zZXR1cF9zdGFydF9pbmRpY2F0b3JfbGFiZWwsIHRoaXMpOworCisgICAgICAgIGZpbmFsIExhYmVsVmlldyBsYWJlbFZpZXcgPSAoTGFiZWxWaWV3KWZpbmRWaWV3QnlJZChSLmlkLnNldHVwX3N0YXJ0X2xhYmVsKTsKKyAgICAgICAgbGFiZWxWaWV3LnNldEluZGljYXRvclZpZXcoZmluZFZpZXdCeUlkKFIuaWQuc2V0dXBfc3RhcnRfaW5kaWNhdG9yKSk7CisgICAgfQorCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBjbGFzcyBMYWJlbFZpZXcgZXh0ZW5kcyBUZXh0VmlldyB7CisgICAgICAgIHByaXZhdGUgVmlldyBtSW5kaWNhdG9yVmlldzsKKworICAgICAgICBwdWJsaWMgTGFiZWxWaWV3KGZpbmFsIENvbnRleHQgY29udGV4dCwgZmluYWwgQXR0cmlidXRlU2V0IGF0dHJzKSB7CisgICAgICAgICAgICBzdXBlcihjb250ZXh0LCBhdHRycyk7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgdm9pZCBzZXRJbmRpY2F0b3JWaWV3KGZpbmFsIFZpZXcgaW5kaWNhdG9yVmlldykgeworICAgICAgICAgICAgbUluZGljYXRvclZpZXcgPSBpbmRpY2F0b3JWaWV3OworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyB2b2lkIHNldFByZXNzZWQoZmluYWwgYm9vbGVhbiBwcmVzc2VkKSB7CisgICAgICAgICAgICBzdXBlci5zZXRQcmVzc2VkKHByZXNzZWQpOworICAgICAgICAgICAgaWYgKG1JbmRpY2F0b3JWaWV3ICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICBtSW5kaWNhdG9yVmlldy5zZXRQcmVzc2VkKHByZXNzZWQpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBjbGFzcyBJbmRpY2F0b3JWaWV3IGV4dGVuZHMgVmlldyB7CisgICAgICAgIHByaXZhdGUgZmluYWwgUGF0aCBtSW5kaWNhdG9yUGF0aCA9IG5ldyBQYXRoKCk7CisgICAgICAgIHByaXZhdGUgZmluYWwgUGFpbnQgbUluZGljYXRvclBhaW50ID0gbmV3IFBhaW50KCk7CisgICAgICAgIHByaXZhdGUgZmluYWwgQ29sb3JTdGF0ZUxpc3QgbUluZGljYXRvckNvbG9yOworCisgICAgICAgIHB1YmxpYyBJbmRpY2F0b3JWaWV3KGZpbmFsIENvbnRleHQgY29udGV4dCwgZmluYWwgQXR0cmlidXRlU2V0IGF0dHJzKSB7CisgICAgICAgICAgICBzdXBlcihjb250ZXh0LCBhdHRycyk7CisgICAgICAgICAgICBtSW5kaWNhdG9yQ29sb3IgPSBnZXRSZXNvdXJjZXMoKS5nZXRDb2xvclN0YXRlTGlzdCgKKyAgICAgICAgICAgICAgICAgICAgUi5jb2xvci5zZXR1cF9zdGVwX2FjdGlvbl9iYWNrZ3JvdW5kKTsKKyAgICAgICAgICAgIG1JbmRpY2F0b3JQYWludC5zZXRTdHlsZShQYWludC5TdHlsZS5GSUxMKTsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgdm9pZCBzZXRQcmVzc2VkKGZpbmFsIGJvb2xlYW4gcHJlc3NlZCkgeworICAgICAgICAgICAgc3VwZXIuc2V0UHJlc3NlZChwcmVzc2VkKTsKKyAgICAgICAgICAgIGludmFsaWRhdGUoKTsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwcm90ZWN0ZWQgdm9pZCBvbkRyYXcoZmluYWwgQ2FudmFzIGNhbnZhcykgeworICAgICAgICAgICAgc3VwZXIub25EcmF3KGNhbnZhcyk7CisgICAgICAgICAgICBmaW5hbCBpbnQgbGF5b3V0RGlyZWN0aW9uID0gVmlld0NvbXBhdFV0aWxzLmdldExheW91dERpcmVjdGlvbih0aGlzKTsKKyAgICAgICAgICAgIGZpbmFsIGludCB3aWR0aCA9IGdldFdpZHRoKCk7CisgICAgICAgICAgICBmaW5hbCBpbnQgaGVpZ2h0ID0gZ2V0SGVpZ2h0KCk7CisgICAgICAgICAgICBmaW5hbCBmbG9hdCBoYWxmSGVpZ2h0ID0gaGVpZ2h0IC8gMi4wZjsKKyAgICAgICAgICAgIGZpbmFsIFBhdGggcGF0aCA9IG1JbmRpY2F0b3JQYXRoOworICAgICAgICAgICAgcGF0aC5yZXdpbmQoKTsKKyAgICAgICAgICAgIGlmIChsYXlvdXREaXJlY3Rpb24gPT0gVmlld0NvbXBhdFV0aWxzLkxBWU9VVF9ESVJFQ1RJT05fUlRMKSB7CisgICAgICAgICAgICAgICAgLy8gTGVmdCBhcnJvdworICAgICAgICAgICAgICAgIHBhdGgubW92ZVRvKHdpZHRoLCAwLjBmKTsKKyAgICAgICAgICAgICAgICBwYXRoLmxpbmVUbygwLjBmLCBoYWxmSGVpZ2h0KTsKKyAgICAgICAgICAgICAgICBwYXRoLmxpbmVUbyh3aWR0aCwgaGVpZ2h0KTsKKyAgICAgICAgICAgIH0gZWxzZSB7IC8vIExBWU9VVF9ESVJFQ1RJT05fTFRSCisgICAgICAgICAgICAgICAgLy8gUmlnaHQgYXJyb3cKKyAgICAgICAgICAgICAgICBwYXRoLm1vdmVUbygwLjBmLCAwLjBmKTsKKyAgICAgICAgICAgICAgICBwYXRoLmxpbmVUbyh3aWR0aCwgaGFsZkhlaWdodCk7CisgICAgICAgICAgICAgICAgcGF0aC5saW5lVG8oMC4wZiwgaGVpZ2h0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHBhdGguY2xvc2UoKTsKKyAgICAgICAgICAgIGZpbmFsIGludFtdIHN0YXRlU2V0ID0gZ2V0RHJhd2FibGVTdGF0ZSgpOworICAgICAgICAgICAgZmluYWwgaW50IGNvbG9yID0gbUluZGljYXRvckNvbG9yLmdldENvbG9yRm9yU3RhdGUoc3RhdGVTZXQsIDApOworICAgICAgICAgICAgbUluZGljYXRvclBhaW50LnNldENvbG9yKGNvbG9yKTsKKyAgICAgICAgICAgIGNhbnZhcy5kcmF3UGF0aChwYXRoLCBtSW5kaWNhdG9yUGFpbnQpOworICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvbGF0aW4vc2V0dXAvU2V0dXBTdGVwSW5kaWNhdG9yVmlldy5qYXZhIGIvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvbGF0aW4vc2V0dXAvU2V0dXBTdGVwSW5kaWNhdG9yVmlldy5qYXZhCmluZGV4IDA3N2EyMTcuLmM5MDk1MDcgMTAwNjQ0Ci0tLSBhL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2xhdGluL3NldHVwL1NldHVwU3RlcEluZGljYXRvclZpZXcuamF2YQorKysgYi9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9sYXRpbi9zZXR1cC9TZXR1cFN0ZXBJbmRpY2F0b3JWaWV3LmphdmEKQEAgLTIzLDYgKzIzLDcgQEAKIGltcG9ydCBhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0OwogaW1wb3J0IGFuZHJvaWQudmlldy5WaWV3OwogCitpbXBvcnQgY29tLmFuZHJvaWQuaW5wdXRtZXRob2QuY29tcGF0LlZpZXdDb21wYXRVdGlsczsKIGltcG9ydCBjb20uYW5kcm9pZC5pbnB1dG1ldGhvZC5sYXRpbi5SOwogCiBwdWJsaWMgZmluYWwgY2xhc3MgU2V0dXBTdGVwSW5kaWNhdG9yVmlldyBleHRlbmRzIFZpZXcgewpAQCAtMzYsOCArMzcsMTMgQEAKICAgICAgICAgbUluZGljYXRvclBhaW50LnNldFN0eWxlKFBhaW50LlN0eWxlLkZJTEwpOwogICAgIH0KIAotICAgIHB1YmxpYyB2b2lkIHNldEluZGljYXRvclBvc2l0aW9uKGZpbmFsIGZsb2F0IHhSYXRpbykgewotICAgICAgICBtWFJhdGlvID0geFJhdGlvOworICAgIHB1YmxpYyB2b2lkIHNldEluZGljYXRvclBvc2l0aW9uKGZpbmFsIGludCBzdGVwUG9zLCBmaW5hbCBpbnQgdG90YWxTdGVwTnVtKSB7CisgICAgICAgIGZpbmFsIGludCBsYXlvdXREaXJlY3Rpb24gPSBWaWV3Q29tcGF0VXRpbHMuZ2V0TGF5b3V0RGlyZWN0aW9uKHRoaXMpOworICAgICAgICAvLyBUaGUgaW5kaWNhdG9yIHBvc2l0aW9uIGlzIHRoZSBjZW50ZXIgb2YgdGhlIHBhcnRpdGlvbiB0aGF0IGlzIGVxdWFsbHkgZGl2aWRlZCBpbnRvCisgICAgICAgIC8vIHRoZSB0b3RhbCBzdGVwIG51bWJlci4KKyAgICAgICAgZmluYWwgZmxvYXQgcGFydGlvbldpZHRoID0gMS4wZiAvIHRvdGFsU3RlcE51bTsKKyAgICAgICAgZmluYWwgZmxvYXQgcG9zID0gc3RlcFBvcyAqIHBhcnRpb25XaWR0aCArIHBhcnRpb25XaWR0aCAvIDIuMGY7CisgICAgICAgIG1YUmF0aW8gPSAobGF5b3V0RGlyZWN0aW9uID09IFZpZXdDb21wYXRVdGlscy5MQVlPVVRfRElSRUNUSU9OX1JUTCkgPyAxLjBmIC0gcG9zIDogcG9zOwogICAgICAgICBpbnZhbGlkYXRlKCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9sYXRpbi91c2VyZGljdGlvbmFyeS9Vc2VyRGljdGlvbmFyeUFkZFdvcmRDb250ZW50cy5qYXZhIGIvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvbGF0aW4vdXNlcmRpY3Rpb25hcnkvVXNlckRpY3Rpb25hcnlBZGRXb3JkQ29udGVudHMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYjZmZGEzCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvbGF0aW4vdXNlcmRpY3Rpb25hcnkvVXNlckRpY3Rpb25hcnlBZGRXb3JkQ29udGVudHMuamF2YQpAQCAtMCwwICsxLDI2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKK3BhY2thZ2UgY29tLmFuZHJvaWQuaW5wdXRtZXRob2QubGF0aW4udXNlcmRpY3Rpb25hcnk7CisKK2ltcG9ydCBjb20uYW5kcm9pZC5pbnB1dG1ldGhvZC5jb21wYXQuVXNlckRpY3Rpb25hcnlDb21wYXRVdGlsczsKK2ltcG9ydCBjb20uYW5kcm9pZC5pbnB1dG1ldGhvZC5sYXRpbi5Mb2NhbGVVdGlsczsKK2ltcG9ydCBjb20uYW5kcm9pZC5pbnB1dG1ldGhvZC5sYXRpbi5SOworCitpbXBvcnQgYW5kcm9pZC5hcHAuQWN0aXZpdHk7CitpbXBvcnQgYW5kcm9pZC5jb250ZW50LkNvbnRlbnRSZXNvbHZlcjsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQuQ29udGV4dDsKK2ltcG9ydCBhbmRyb2lkLmRhdGFiYXNlLkN1cnNvcjsKK2ltcG9ydCBhbmRyb2lkLm9zLkJ1bmRsZTsKK2ltcG9ydCBhbmRyb2lkLnByb3ZpZGVyLlVzZXJEaWN0aW9uYXJ5OworaW1wb3J0IGFuZHJvaWQudGV4dC5UZXh0VXRpbHM7CitpbXBvcnQgYW5kcm9pZC52aWV3LlZpZXc7CitpbXBvcnQgYW5kcm9pZC53aWRnZXQuRWRpdFRleHQ7CisKK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OworaW1wb3J0IGphdmEudXRpbC5Mb2NhbGU7CitpbXBvcnQgamF2YS51dGlsLlRyZWVTZXQ7CisKKy8vIENhdmVhdDogVGhpcyBjbGFzcyBpcyBiYXNpY2FsbHkgdGFrZW4gZnJvbQorLy8gcGFja2FnZXMvYXBwcy9TZXR0aW5ncy9zcmMvY29tL2FuZHJvaWQvc2V0dGluZ3MvaW5wdXRtZXRob2QvVXNlckRpY3Rpb25hcnlBZGRXb3JkQ29udGVudHMuamF2YQorLy8gaW4gb3JkZXIgdG8gZGVhbCB3aXRoIHNvbWUgZGV2aWNlcyB0aGF0IGhhdmUgaXNzdWVzIHdpdGggdGhlIHVzZXIgZGljdGlvbmFyeSBoYW5kbGluZworCisvKioKKyAqIEEgY29udGFpbmVyIGNsYXNzIHRvIGZhY3RvciBjb21tb24gY29kZSB0byBVc2VyRGljdGlvbmFyeUFkZFdvcmRGcmFnbWVudAorICogYW5kIFVzZXJEaWN0aW9uYXJ5QWRkV29yZEFjdGl2aXR5LgorICovCitwdWJsaWMgY2xhc3MgVXNlckRpY3Rpb25hcnlBZGRXb3JkQ29udGVudHMgeworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEVYVFJBX01PREUgPSAibW9kZSI7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgRVhUUkFfV09SRCA9ICJ3b3JkIjsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBFWFRSQV9TSE9SVENVVCA9ICJzaG9ydGN1dCI7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgRVhUUkFfTE9DQUxFID0gImxvY2FsZSI7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgRVhUUkFfT1JJR0lOQUxfV09SRCA9ICJvcmlnaW5hbFdvcmQiOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEVYVFJBX09SSUdJTkFMX1NIT1JUQ1VUID0gIm9yaWdpbmFsU2hvcnRjdXQiOworCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgTU9ERV9FRElUID0gMDsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBNT0RFX0lOU0VSVCA9IDE7CisKKyAgICAvKiBwYWNrYWdlICovIHN0YXRpYyBmaW5hbCBpbnQgQ09ERV9XT1JEX0FEREVEID0gMDsKKyAgICAvKiBwYWNrYWdlICovIHN0YXRpYyBmaW5hbCBpbnQgQ09ERV9DQU5DRUwgPSAxOworICAgIC8qIHBhY2thZ2UgKi8gc3RhdGljIGZpbmFsIGludCBDT0RFX0FMUkVBRFlfUFJFU0VOVCA9IDI7CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgRlJFUVVFTkNZX0ZPUl9VU0VSX0RJQ1RJT05BUllfQUREUyA9IDI1MDsKKworICAgIHByaXZhdGUgZmluYWwgaW50IG1Nb2RlOyAvLyBFaXRoZXIgTU9ERV9FRElUIG9yIE1PREVfSU5TRVJUCisgICAgcHJpdmF0ZSBmaW5hbCBFZGl0VGV4dCBtV29yZEVkaXRUZXh0OworICAgIHByaXZhdGUgZmluYWwgRWRpdFRleHQgbVNob3J0Y3V0RWRpdFRleHQ7CisgICAgcHJpdmF0ZSBTdHJpbmcgbUxvY2FsZTsKKyAgICBwcml2YXRlIGZpbmFsIFN0cmluZyBtT2xkV29yZDsKKyAgICBwcml2YXRlIGZpbmFsIFN0cmluZyBtT2xkU2hvcnRjdXQ7CisKKyAgICAvKiBwYWNrYWdlICovIFVzZXJEaWN0aW9uYXJ5QWRkV29yZENvbnRlbnRzKGZpbmFsIFZpZXcgdmlldywgZmluYWwgQnVuZGxlIGFyZ3MpIHsKKyAgICAgICAgbVdvcmRFZGl0VGV4dCA9IChFZGl0VGV4dCl2aWV3LmZpbmRWaWV3QnlJZChSLmlkLnVzZXJfZGljdGlvbmFyeV9hZGRfd29yZF90ZXh0KTsKKyAgICAgICAgbVNob3J0Y3V0RWRpdFRleHQgPSAoRWRpdFRleHQpdmlldy5maW5kVmlld0J5SWQoUi5pZC51c2VyX2RpY3Rpb25hcnlfYWRkX3Nob3J0Y3V0KTsKKyAgICAgICAgaWYgKCFVc2VyRGljdGlvbmFyeVNldHRpbmdzLklTX1NIT1JUQ1VUX0FQSV9TVVBQT1JURUQpIHsKKyAgICAgICAgICAgIG1TaG9ydGN1dEVkaXRUZXh0LnNldFZpc2liaWxpdHkoVmlldy5HT05FKTsKKyAgICAgICAgICAgIHZpZXcuZmluZFZpZXdCeUlkKFIuaWQudXNlcl9kaWN0aW9uYXJ5X2FkZF9zaG9ydGN1dF9sYWJlbCkuc2V0VmlzaWJpbGl0eShWaWV3LkdPTkUpOworICAgICAgICB9CisgICAgICAgIGZpbmFsIFN0cmluZyB3b3JkID0gYXJncy5nZXRTdHJpbmcoRVhUUkFfV09SRCk7CisgICAgICAgIGlmIChudWxsICE9IHdvcmQpIHsKKyAgICAgICAgICAgIG1Xb3JkRWRpdFRleHQuc2V0VGV4dCh3b3JkKTsKKyAgICAgICAgICAgIG1Xb3JkRWRpdFRleHQuc2V0U2VsZWN0aW9uKHdvcmQubGVuZ3RoKCkpOworICAgICAgICB9CisgICAgICAgIGZpbmFsIFN0cmluZyBzaG9ydGN1dDsKKyAgICAgICAgaWYgKFVzZXJEaWN0aW9uYXJ5U2V0dGluZ3MuSVNfU0hPUlRDVVRfQVBJX1NVUFBPUlRFRCkgeworICAgICAgICAgICAgc2hvcnRjdXQgPSBhcmdzLmdldFN0cmluZyhFWFRSQV9TSE9SVENVVCk7CisgICAgICAgICAgICBpZiAobnVsbCAhPSBzaG9ydGN1dCAmJiBudWxsICE9IG1TaG9ydGN1dEVkaXRUZXh0KSB7CisgICAgICAgICAgICAgICAgbVNob3J0Y3V0RWRpdFRleHQuc2V0VGV4dChzaG9ydGN1dCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtT2xkU2hvcnRjdXQgPSBhcmdzLmdldFN0cmluZyhFWFRSQV9TSE9SVENVVCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBzaG9ydGN1dCA9IG51bGw7CisgICAgICAgICAgICBtT2xkU2hvcnRjdXQgPSBudWxsOworICAgICAgICB9CisgICAgICAgIG1Nb2RlID0gYXJncy5nZXRJbnQoRVhUUkFfTU9ERSk7IC8vIGRlZmF1bHQgcmV0dXJuIHZhbHVlIGZvciAjZ2V0SW50KCkgaXMgMCA9IE1PREVfRURJVAorICAgICAgICBtT2xkV29yZCA9IGFyZ3MuZ2V0U3RyaW5nKEVYVFJBX1dPUkQpOworICAgICAgICB1cGRhdGVMb2NhbGUoYXJncy5nZXRTdHJpbmcoRVhUUkFfTE9DQUxFKSk7CisgICAgfQorCisgICAgLy8gbG9jYWxlIG1heSBiZSBudWxsLCB0aGlzIG1lYW5zIGRlZmF1bHQgbG9jYWxlCisgICAgLy8gSXQgbWF5IGFsc28gYmUgdGhlIGVtcHR5IHN0cmluZywgd2hpY2ggbWVhbnMgImFsbCBsb2NhbGVzIgorICAgIC8qIHBhY2thZ2UgKi8gdm9pZCB1cGRhdGVMb2NhbGUoZmluYWwgU3RyaW5nIGxvY2FsZSkgeworICAgICAgICBtTG9jYWxlID0gbnVsbCA9PSBsb2NhbGUgPyBMb2NhbGUuZ2V0RGVmYXVsdCgpLnRvU3RyaW5nKCkgOiBsb2NhbGU7CisgICAgfQorCisgICAgLyogcGFja2FnZSAqLyB2b2lkIHNhdmVTdGF0ZUludG9CdW5kbGUoZmluYWwgQnVuZGxlIG91dFN0YXRlKSB7CisgICAgICAgIG91dFN0YXRlLnB1dFN0cmluZyhFWFRSQV9XT1JELCBtV29yZEVkaXRUZXh0LmdldFRleHQoKS50b1N0cmluZygpKTsKKyAgICAgICAgb3V0U3RhdGUucHV0U3RyaW5nKEVYVFJBX09SSUdJTkFMX1dPUkQsIG1PbGRXb3JkKTsKKyAgICAgICAgaWYgKG51bGwgIT0gbVNob3J0Y3V0RWRpdFRleHQpIHsKKyAgICAgICAgICAgIG91dFN0YXRlLnB1dFN0cmluZyhFWFRSQV9TSE9SVENVVCwgbVNob3J0Y3V0RWRpdFRleHQuZ2V0VGV4dCgpLnRvU3RyaW5nKCkpOworICAgICAgICB9CisgICAgICAgIGlmIChudWxsICE9IG1PbGRTaG9ydGN1dCkgeworICAgICAgICAgICAgb3V0U3RhdGUucHV0U3RyaW5nKEVYVFJBX09SSUdJTkFMX1NIT1JUQ1VULCBtT2xkU2hvcnRjdXQpOworICAgICAgICB9CisgICAgICAgIG91dFN0YXRlLnB1dFN0cmluZyhFWFRSQV9MT0NBTEUsIG1Mb2NhbGUpOworICAgIH0KKworICAgIC8qIHBhY2thZ2UgKi8gdm9pZCBkZWxldGUoZmluYWwgQ29udGV4dCBjb250ZXh0KSB7CisgICAgICAgIGlmIChNT0RFX0VESVQgPT0gbU1vZGUgJiYgIVRleHRVdGlscy5pc0VtcHR5KG1PbGRXb3JkKSkgeworICAgICAgICAgICAgLy8gTW9kZSBlZGl0OiByZW1vdmUgdGhlIG9sZCBlbnRyeS4KKyAgICAgICAgICAgIGZpbmFsIENvbnRlbnRSZXNvbHZlciByZXNvbHZlciA9IGNvbnRleHQuZ2V0Q29udGVudFJlc29sdmVyKCk7CisgICAgICAgICAgICBVc2VyRGljdGlvbmFyeVNldHRpbmdzLmRlbGV0ZVdvcmQobU9sZFdvcmQsIG1PbGRTaG9ydGN1dCwgcmVzb2x2ZXIpOworICAgICAgICB9CisgICAgICAgIC8vIElmIHdlIGFyZSBpbiBhZGQgbW9kZSwgbm90aGluZyB3YXMgYWRkZWQsIHNvIHdlIGRvbid0IG5lZWQgdG8gZG8gYW55dGhpbmcuCisgICAgfQorCisgICAgLyogcGFja2FnZSAqLworICAgIGludCBhcHBseShmaW5hbCBDb250ZXh0IGNvbnRleHQsIGZpbmFsIEJ1bmRsZSBvdXRQYXJhbWV0ZXJzKSB7CisgICAgICAgIGlmIChudWxsICE9IG91dFBhcmFtZXRlcnMpIHNhdmVTdGF0ZUludG9CdW5kbGUob3V0UGFyYW1ldGVycyk7CisgICAgICAgIGZpbmFsIENvbnRlbnRSZXNvbHZlciByZXNvbHZlciA9IGNvbnRleHQuZ2V0Q29udGVudFJlc29sdmVyKCk7CisgICAgICAgIGlmIChNT0RFX0VESVQgPT0gbU1vZGUgJiYgIVRleHRVdGlscy5pc0VtcHR5KG1PbGRXb3JkKSkgeworICAgICAgICAgICAgLy8gTW9kZSBlZGl0OiByZW1vdmUgdGhlIG9sZCBlbnRyeS4KKyAgICAgICAgICAgIFVzZXJEaWN0aW9uYXJ5U2V0dGluZ3MuZGVsZXRlV29yZChtT2xkV29yZCwgbU9sZFNob3J0Y3V0LCByZXNvbHZlcik7CisgICAgICAgIH0KKyAgICAgICAgZmluYWwgU3RyaW5nIG5ld1dvcmQgPSBtV29yZEVkaXRUZXh0LmdldFRleHQoKS50b1N0cmluZygpOworICAgICAgICBmaW5hbCBTdHJpbmcgbmV3U2hvcnRjdXQ7CisgICAgICAgIGlmICghVXNlckRpY3Rpb25hcnlTZXR0aW5ncy5JU19TSE9SVENVVF9BUElfU1VQUE9SVEVEKSB7CisgICAgICAgICAgICBuZXdTaG9ydGN1dCA9IG51bGw7CisgICAgICAgIH0gZWxzZSBpZiAobnVsbCA9PSBtU2hvcnRjdXRFZGl0VGV4dCkgeworICAgICAgICAgICAgbmV3U2hvcnRjdXQgPSBudWxsOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZmluYWwgU3RyaW5nIHRtcFNob3J0Y3V0ID0gbVNob3J0Y3V0RWRpdFRleHQuZ2V0VGV4dCgpLnRvU3RyaW5nKCk7CisgICAgICAgICAgICBpZiAoVGV4dFV0aWxzLmlzRW1wdHkodG1wU2hvcnRjdXQpKSB7CisgICAgICAgICAgICAgICAgbmV3U2hvcnRjdXQgPSBudWxsOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBuZXdTaG9ydGN1dCA9IHRtcFNob3J0Y3V0OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmIChUZXh0VXRpbHMuaXNFbXB0eShuZXdXb3JkKSkgeworICAgICAgICAgICAgLy8gSWYgdGhlIHdvcmQgaXMgc29tZWhvdyBlbXB0eSwgZG9uJ3QgaW5zZXJ0IGl0LgorICAgICAgICAgICAgcmV0dXJuIENPREVfQ0FOQ0VMOworICAgICAgICB9CisgICAgICAgIC8vIElmIHRoZXJlIGlzIG5vIHNob3J0Y3V0LCBhbmQgdGhlIHdvcmQgYWxyZWFkeSBleGlzdHMgaW4gdGhlIGRhdGFiYXNlLCB0aGVuIHdlCisgICAgICAgIC8vIHNob3VsZCBub3QgaW5zZXJ0LCBiZWNhdXNlIGVpdGhlciBBLiB0aGUgd29yZCBleGlzdHMgd2l0aCBubyBzaG9ydGN1dCwgaW4gd2hpY2gKKyAgICAgICAgLy8gY2FzZSB0aGUgZXhhY3Qgc2FtZSB0aGluZyB3ZSB3YW50IHRvIGluc2VydCBpcyBhbHJlYWR5IHRoZXJlLCBvciBCLiB0aGUgd29yZAorICAgICAgICAvLyBleGlzdHMgd2l0aCBhdCBsZWFzdCBvbmUgc2hvcnRjdXQsIGluIHdoaWNoIGNhc2UgaXQgaGFzIHByaW9yaXR5IG9uIG91ciB3b3JkLgorICAgICAgICBpZiAoaGFzV29yZChuZXdXb3JkLCBjb250ZXh0KSkgcmV0dXJuIENPREVfQUxSRUFEWV9QUkVTRU5UOworCisgICAgICAgIC8vIERpc2FsbG93IGR1cGxpY2F0ZXMuIElmIHRoZSBzYW1lIHdvcmQgd2l0aCBubyBzaG9ydGN1dCBpcyBkZWZpbmVkLCByZW1vdmUgaXQ7IGlmCisgICAgICAgIC8vIHRoZSBzYW1lIHdvcmQgd2l0aCB0aGUgc2FtZSBzaG9ydGN1dCBpcyBkZWZpbmVkLCByZW1vdmUgaXQ7IGJ1dCB3ZSBkb24ndCBtaW5kIGlmCisgICAgICAgIC8vIHRoZXJlIGlzIHRoZSBzYW1lIHdvcmQgd2l0aCBhIGRpZmZlcmVudCwgbm9uLWVtcHR5IHNob3J0Y3V0LgorICAgICAgICBVc2VyRGljdGlvbmFyeVNldHRpbmdzLmRlbGV0ZVdvcmQobmV3V29yZCwgbnVsbCwgcmVzb2x2ZXIpOworICAgICAgICBpZiAoIVRleHRVdGlscy5pc0VtcHR5KG5ld1Nob3J0Y3V0KSkgeworICAgICAgICAgICAgLy8gSWYgbmV3U2hvcnRjdXQgaXMgZW1wdHkgd2UganVzdCBkZWxldGVkIHRoaXMsIG5vIG5lZWQgdG8gZG8gaXQgYWdhaW4KKyAgICAgICAgICAgIFVzZXJEaWN0aW9uYXJ5U2V0dGluZ3MuZGVsZXRlV29yZChuZXdXb3JkLCBuZXdTaG9ydGN1dCwgcmVzb2x2ZXIpOworICAgICAgICB9CisKKyAgICAgICAgLy8gSW4gdGhpcyBjbGFzcyB3ZSB1c2UgdGhlIGVtcHR5IHN0cmluZyB0byByZXByZXNlbnQgJ2FsbCBsb2NhbGVzJyBhbmQgbUxvY2FsZSBjYW5ub3QKKyAgICAgICAgLy8gYmUgbnVsbC4gSG93ZXZlciB0aGUgYWRkV29yZCBtZXRob2QgdGFrZXMgbnVsbCB0byBtZWFuICdhbGwgbG9jYWxlcycuCisgICAgICAgIFVzZXJEaWN0aW9uYXJ5Q29tcGF0VXRpbHMuYWRkV29yZChjb250ZXh0LCBuZXdXb3JkLnRvU3RyaW5nKCksCisgICAgICAgICAgICAgICAgRlJFUVVFTkNZX0ZPUl9VU0VSX0RJQ1RJT05BUllfQUREUywgbmV3U2hvcnRjdXQsIFRleHRVdGlscy5pc0VtcHR5KG1Mb2NhbGUpID8KKyAgICAgICAgICAgICAgICAgICAgICAgIG51bGwgOiBMb2NhbGVVdGlscy5jb25zdHJ1Y3RMb2NhbGVGcm9tU3RyaW5nKG1Mb2NhbGUpKTsKKworICAgICAgICByZXR1cm4gQ09ERV9XT1JEX0FEREVEOworICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZ1tdIEhBU19XT1JEX1BST0pFQ1RJT04gPSB7IFVzZXJEaWN0aW9uYXJ5LldvcmRzLldPUkQgfTsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgSEFTX1dPUkRfU0VMRUNUSU9OX09ORV9MT0NBTEUgPSBVc2VyRGljdGlvbmFyeS5Xb3Jkcy5XT1JECisgICAgICAgICAgICArICI9PyBBTkQgIiArIFVzZXJEaWN0aW9uYXJ5LldvcmRzLkxPQ0FMRSArICI9PyI7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIEhBU19XT1JEX1NFTEVDVElPTl9BTExfTE9DQUxFUyA9IFVzZXJEaWN0aW9uYXJ5LldvcmRzLldPUkQKKyAgICAgICAgICAgICsgIj0/IEFORCAiICsgVXNlckRpY3Rpb25hcnkuV29yZHMuTE9DQUxFICsgIiBpcyBudWxsIjsKKyAgICBwcml2YXRlIGJvb2xlYW4gaGFzV29yZChmaW5hbCBTdHJpbmcgd29yZCwgZmluYWwgQ29udGV4dCBjb250ZXh0KSB7CisgICAgICAgIGZpbmFsIEN1cnNvciBjdXJzb3I7CisgICAgICAgIC8vIG1Mb2NhbGUgPT0gIiIgaW5kaWNhdGVzIHRoaXMgaXMgYW4gZW50cnkgZm9yIGFsbCBsYW5ndWFnZXMuIEhlcmUsIG1Mb2NhbGUgY2FuJ3QKKyAgICAgICAgLy8gYmUgbnVsbCBhdCBhbGwgKGl0J3MgZW5zdXJlZCBieSB0aGUgdXBkYXRlTG9jYWxlIG1ldGhvZCkuCisgICAgICAgIGlmICgiIi5lcXVhbHMobUxvY2FsZSkpIHsKKyAgICAgICAgICAgIGN1cnNvciA9IGNvbnRleHQuZ2V0Q29udGVudFJlc29sdmVyKCkucXVlcnkoVXNlckRpY3Rpb25hcnkuV29yZHMuQ09OVEVOVF9VUkksCisgICAgICAgICAgICAgICAgICAgICAgSEFTX1dPUkRfUFJPSkVDVElPTiwgSEFTX1dPUkRfU0VMRUNUSU9OX0FMTF9MT0NBTEVTLAorICAgICAgICAgICAgICAgICAgICAgIG5ldyBTdHJpbmdbXSB7IHdvcmQgfSwgbnVsbCAvKiBzb3J0IG9yZGVyICovKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGN1cnNvciA9IGNvbnRleHQuZ2V0Q29udGVudFJlc29sdmVyKCkucXVlcnkoVXNlckRpY3Rpb25hcnkuV29yZHMuQ09OVEVOVF9VUkksCisgICAgICAgICAgICAgICAgICAgICAgSEFTX1dPUkRfUFJPSkVDVElPTiwgSEFTX1dPUkRfU0VMRUNUSU9OX09ORV9MT0NBTEUsCisgICAgICAgICAgICAgICAgICAgICAgbmV3IFN0cmluZ1tdIHsgd29yZCwgbUxvY2FsZSB9LCBudWxsIC8qIHNvcnQgb3JkZXIgKi8pOworICAgICAgICB9CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBpZiAobnVsbCA9PSBjdXJzb3IpIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIHJldHVybiBjdXJzb3IuZ2V0Q291bnQoKSA+IDA7CisgICAgICAgIH0gZmluYWxseSB7CisgICAgICAgICAgICBpZiAobnVsbCAhPSBjdXJzb3IpIGN1cnNvci5jbG9zZSgpOworICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIHN0YXRpYyBjbGFzcyBMb2NhbGVSZW5kZXJlciB7CisgICAgICAgIHByaXZhdGUgZmluYWwgU3RyaW5nIG1Mb2NhbGVTdHJpbmc7CisgICAgICAgIHByaXZhdGUgZmluYWwgU3RyaW5nIG1EZXNjcmlwdGlvbjsKKyAgICAgICAgLy8gTG9jYWxlU3RyaW5nIG1heSBOT1QgYmUgbnVsbC4KKyAgICAgICAgcHVibGljIExvY2FsZVJlbmRlcmVyKGZpbmFsIENvbnRleHQgY29udGV4dCwgZmluYWwgU3RyaW5nIGxvY2FsZVN0cmluZykgeworICAgICAgICAgICAgbUxvY2FsZVN0cmluZyA9IGxvY2FsZVN0cmluZzsKKyAgICAgICAgICAgIGlmIChudWxsID09IGxvY2FsZVN0cmluZykgeworICAgICAgICAgICAgICAgIG1EZXNjcmlwdGlvbiA9IGNvbnRleHQuZ2V0U3RyaW5nKFIuc3RyaW5nLnVzZXJfZGljdF9zZXR0aW5nc19tb3JlX2xhbmd1YWdlcyk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKCIiLmVxdWFscyhsb2NhbGVTdHJpbmcpKSB7CisgICAgICAgICAgICAgICAgbURlc2NyaXB0aW9uID0gY29udGV4dC5nZXRTdHJpbmcoUi5zdHJpbmcudXNlcl9kaWN0X3NldHRpbmdzX2FsbF9sYW5ndWFnZXMpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBtRGVzY3JpcHRpb24gPSBMb2NhbGVVdGlscy5jb25zdHJ1Y3RMb2NhbGVGcm9tU3RyaW5nKGxvY2FsZVN0cmluZykuZ2V0RGlzcGxheU5hbWUoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIFN0cmluZyB0b1N0cmluZygpIHsKKyAgICAgICAgICAgIHJldHVybiBtRGVzY3JpcHRpb247CisgICAgICAgIH0KKyAgICAgICAgcHVibGljIFN0cmluZyBnZXRMb2NhbGVTdHJpbmcoKSB7CisgICAgICAgICAgICByZXR1cm4gbUxvY2FsZVN0cmluZzsKKyAgICAgICAgfQorICAgICAgICAvLyAiTW9yZSBsYW5ndWFnZXMuLi4iIGlzIG51bGwgOyAiQWxsIGxhbmd1YWdlcyIgaXMgdGhlIGVtcHR5IHN0cmluZy4KKyAgICAgICAgcHVibGljIGJvb2xlYW4gaXNNb3JlTGFuZ3VhZ2VzKCkgeworICAgICAgICAgICAgcmV0dXJuIG51bGwgPT0gbUxvY2FsZVN0cmluZzsKKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIHZvaWQgYWRkTG9jYWxlRGlzcGxheU5hbWVUb0xpc3QoZmluYWwgQ29udGV4dCBjb250ZXh0LAorICAgICAgICAgICAgZmluYWwgQXJyYXlMaXN0PExvY2FsZVJlbmRlcmVyPiBsaXN0LCBmaW5hbCBTdHJpbmcgbG9jYWxlKSB7CisgICAgICAgIGlmIChudWxsICE9IGxvY2FsZSkgeworICAgICAgICAgICAgbGlzdC5hZGQobmV3IExvY2FsZVJlbmRlcmVyKGNvbnRleHQsIGxvY2FsZSkpOworICAgICAgICB9CisgICAgfQorCisgICAgLy8gSGVscGVyIG1ldGhvZCB0byBnZXQgdGhlIGxpc3Qgb2YgbG9jYWxlcyB0byBkaXNwbGF5IGZvciB0aGlzIHdvcmQKKyAgICBwdWJsaWMgQXJyYXlMaXN0PExvY2FsZVJlbmRlcmVyPiBnZXRMb2NhbGVzTGlzdChmaW5hbCBBY3Rpdml0eSBhY3Rpdml0eSkgeworICAgICAgICBmaW5hbCBUcmVlU2V0PFN0cmluZz4gbG9jYWxlcyA9IFVzZXJEaWN0aW9uYXJ5TGlzdC5nZXRVc2VyRGljdGlvbmFyeUxvY2FsZXNTZXQoYWN0aXZpdHkpOworICAgICAgICAvLyBSZW1vdmUgb3VyIGxvY2FsZSBpZiBpdCdzIGluLCBiZWNhdXNlIHdlJ3JlIGFsd2F5cyBnb25uYSBwdXQgaXQgYXQgdGhlIHRvcAorICAgICAgICBsb2NhbGVzLnJlbW92ZShtTG9jYWxlKTsgLy8gbUxvY2FsZSBtYXkgbm90IGJlIG51bGwKKyAgICAgICAgZmluYWwgU3RyaW5nIHN5c3RlbUxvY2FsZSA9IExvY2FsZS5nZXREZWZhdWx0KCkudG9TdHJpbmcoKTsKKyAgICAgICAgLy8gVGhlIHN5c3RlbSBsb2NhbGUgc2hvdWxkIGJlIGluc2lkZS4gV2Ugd2FudCBpdCBhdCB0aGUgMm5kIHNwb3QuCisgICAgICAgIGxvY2FsZXMucmVtb3ZlKHN5c3RlbUxvY2FsZSk7IC8vIHN5c3RlbSBsb2NhbGUgbWF5IG5vdCBiZSBudWxsCisgICAgICAgIGxvY2FsZXMucmVtb3ZlKCIiKTsgLy8gUmVtb3ZlIHRoZSBlbXB0eSBzdHJpbmcgaWYgaXQncyB0aGVyZQorICAgICAgICBmaW5hbCBBcnJheUxpc3Q8TG9jYWxlUmVuZGVyZXI+IGxvY2FsZXNMaXN0ID0gbmV3IEFycmF5TGlzdDxMb2NhbGVSZW5kZXJlcj4oKTsKKyAgICAgICAgLy8gQWRkIHRoZSBwYXNzZWQgbG9jYWxlLCB0aGVuIHRoZSBzeXN0ZW0gbG9jYWxlIGF0IHRoZSB0b3Agb2YgdGhlIGxpc3QuIEFkZCBhbgorICAgICAgICAvLyAiYWxsIGxhbmd1YWdlcyIgZW50cnkgYXQgdGhlIGJvdHRvbSBvZiB0aGUgbGlzdC4KKyAgICAgICAgYWRkTG9jYWxlRGlzcGxheU5hbWVUb0xpc3QoYWN0aXZpdHksIGxvY2FsZXNMaXN0LCBtTG9jYWxlKTsKKyAgICAgICAgaWYgKCFzeXN0ZW1Mb2NhbGUuZXF1YWxzKG1Mb2NhbGUpKSB7CisgICAgICAgICAgICBhZGRMb2NhbGVEaXNwbGF5TmFtZVRvTGlzdChhY3Rpdml0eSwgbG9jYWxlc0xpc3QsIHN5c3RlbUxvY2FsZSk7CisgICAgICAgIH0KKyAgICAgICAgZm9yIChmaW5hbCBTdHJpbmcgbCA6IGxvY2FsZXMpIHsKKyAgICAgICAgICAgIC8vIFRPRE86IHNvcnQgaW4gdW5pY29kZSBvcmRlcgorICAgICAgICAgICAgYWRkTG9jYWxlRGlzcGxheU5hbWVUb0xpc3QoYWN0aXZpdHksIGxvY2FsZXNMaXN0LCBsKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoISIiLmVxdWFscyhtTG9jYWxlKSkgeworICAgICAgICAgICAgLy8gSWYgbUxvY2FsZSBpcyAiIiwgdGhlbiB3ZSBhbHJlYWR5IGluc2VydGVkIHRoZSAiYWxsIGxhbmd1YWdlcyIgaXRlbSwgc28gZG9uJ3QgZG8gaXQKKyAgICAgICAgICAgIGFkZExvY2FsZURpc3BsYXlOYW1lVG9MaXN0KGFjdGl2aXR5LCBsb2NhbGVzTGlzdCwgIiIpOyAvLyBtZWFuaW5nOiBhbGwgbGFuZ3VhZ2VzCisgICAgICAgIH0KKyAgICAgICAgbG9jYWxlc0xpc3QuYWRkKG5ldyBMb2NhbGVSZW5kZXJlcihhY3Rpdml0eSwgbnVsbCkpOyAvLyBtZWFuaW5nOiBzZWxlY3QgYW5vdGhlciBsb2NhbGUKKyAgICAgICAgcmV0dXJuIGxvY2FsZXNMaXN0OworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2xhdGluL3VzZXJkaWN0aW9uYXJ5L1VzZXJEaWN0aW9uYXJ5QWRkV29yZEZyYWdtZW50LmphdmEgYi9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9sYXRpbi91c2VyZGljdGlvbmFyeS9Vc2VyRGljdGlvbmFyeUFkZFdvcmRGcmFnbWVudC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVmNGM0NDYKLS0tIC9kZXYvbnVsbAorKysgYi9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9sYXRpbi91c2VyZGljdGlvbmFyeS9Vc2VyRGljdGlvbmFyeUFkZFdvcmRGcmFnbWVudC5qYXZhCkBAIC0wLDAgKzEsMTYyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworcGFja2FnZSBjb20uYW5kcm9pZC5pbnB1dG1ldGhvZC5sYXRpbi51c2VyZGljdGlvbmFyeTsKKworaW1wb3J0IGNvbS5hbmRyb2lkLmlucHV0bWV0aG9kLmxhdGluLlI7CitpbXBvcnQgY29tLmFuZHJvaWQuaW5wdXRtZXRob2QubGF0aW4udXNlcmRpY3Rpb25hcnkuVXNlckRpY3Rpb25hcnlBZGRXb3JkQ29udGVudHMuTG9jYWxlUmVuZGVyZXI7CitpbXBvcnQgY29tLmFuZHJvaWQuaW5wdXRtZXRob2QubGF0aW4udXNlcmRpY3Rpb25hcnkuVXNlckRpY3Rpb25hcnlMb2NhbGVQaWNrZXIuTG9jYXRpb25DaGFuZ2VkTGlzdGVuZXI7CisKK2ltcG9ydCBhbmRyb2lkLmFwcC5GcmFnbWVudDsKK2ltcG9ydCBhbmRyb2lkLm9zLkJ1bmRsZTsKK2ltcG9ydCBhbmRyb2lkLnByZWZlcmVuY2UuUHJlZmVyZW5jZUFjdGl2aXR5OworaW1wb3J0IGFuZHJvaWQudmlldy5MYXlvdXRJbmZsYXRlcjsKK2ltcG9ydCBhbmRyb2lkLnZpZXcuTWVudTsKK2ltcG9ydCBhbmRyb2lkLnZpZXcuTWVudUluZmxhdGVyOworaW1wb3J0IGFuZHJvaWQudmlldy5NZW51SXRlbTsKK2ltcG9ydCBhbmRyb2lkLnZpZXcuVmlldzsKK2ltcG9ydCBhbmRyb2lkLnZpZXcuVmlld0dyb3VwOworaW1wb3J0IGFuZHJvaWQud2lkZ2V0LkFkYXB0ZXJWaWV3OworaW1wb3J0IGFuZHJvaWQud2lkZ2V0LkFycmF5QWRhcHRlcjsKK2ltcG9ydCBhbmRyb2lkLndpZGdldC5TcGlubmVyOworCitpbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsKK2ltcG9ydCBqYXZhLnV0aWwuTG9jYWxlOworCisvLyBDYXZlYXQ6IFRoaXMgY2xhc3MgaXMgYmFzaWNhbGx5IHRha2VuIGZyb20KKy8vIHBhY2thZ2VzL2FwcHMvU2V0dGluZ3Mvc3JjL2NvbS9hbmRyb2lkL3NldHRpbmdzL2lucHV0bWV0aG9kL1VzZXJEaWN0aW9uYXJ5QWRkV29yZEZyYWdtZW50LmphdmEKKy8vIGluIG9yZGVyIHRvIGRlYWwgd2l0aCBzb21lIGRldmljZXMgdGhhdCBoYXZlIGlzc3VlcyB3aXRoIHRoZSB1c2VyIGRpY3Rpb25hcnkgaGFuZGxpbmcKKworLyoqCisgKiBGcmFnbWVudCB0byBhZGQgYSB3b3JkL3Nob3J0Y3V0IHRvIHRoZSB1c2VyIGRpY3Rpb25hcnkuCisgKgorICogQXMgb3Bwb3NlZCB0byB0aGUgVXNlckRpY3Rpb25hcnlBY3Rpdml0eSwgdGhpcyBpcyBvbmx5IGludm9rZWQgd2l0aGluIFNldHRpbmdzCisgKiBmcm9tIHRoZSBVc2VyRGljdGlvbmFyeVNldHRpbmdzLgorICovCitwdWJsaWMgY2xhc3MgVXNlckRpY3Rpb25hcnlBZGRXb3JkRnJhZ21lbnQgZXh0ZW5kcyBGcmFnbWVudAorICAgICAgICBpbXBsZW1lbnRzIEFkYXB0ZXJWaWV3Lk9uSXRlbVNlbGVjdGVkTGlzdGVuZXIsIExvY2F0aW9uQ2hhbmdlZExpc3RlbmVyIHsKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBPUFRJT05TX01FTlVfQUREID0gTWVudS5GSVJTVDsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgT1BUSU9OU19NRU5VX0RFTEVURSA9IE1lbnUuRklSU1QgKyAxOworCisgICAgcHJpdmF0ZSBVc2VyRGljdGlvbmFyeUFkZFdvcmRDb250ZW50cyBtQ29udGVudHM7CisgICAgcHJpdmF0ZSBWaWV3IG1Sb290VmlldzsKKyAgICBwcml2YXRlIGJvb2xlYW4gbUlzRGVsZXRpbmcgPSBmYWxzZTsKKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyB2b2lkIG9uQWN0aXZpdHlDcmVhdGVkKEJ1bmRsZSBzYXZlZEluc3RhbmNlU3RhdGUpIHsKKyAgICAgICAgc3VwZXIub25BY3Rpdml0eUNyZWF0ZWQoc2F2ZWRJbnN0YW5jZVN0YXRlKTsKKyAgICAgICAgc2V0SGFzT3B0aW9uc01lbnUodHJ1ZSk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIFZpZXcgb25DcmVhdGVWaWV3KExheW91dEluZmxhdGVyIGluZmxhdGVyLCBWaWV3R3JvdXAgY29udGFpbmVyLCBCdW5kbGUgc2F2ZWRTdGF0ZSkgeworICAgICAgICBtUm9vdFZpZXcgPSBpbmZsYXRlci5pbmZsYXRlKFIubGF5b3V0LnVzZXJfZGljdGlvbmFyeV9hZGRfd29yZF9mdWxsc2NyZWVuLCBudWxsKTsKKyAgICAgICAgbUlzRGVsZXRpbmcgPSBmYWxzZTsKKyAgICAgICAgaWYgKG51bGwgPT0gbUNvbnRlbnRzKSB7CisgICAgICAgICAgICBtQ29udGVudHMgPSBuZXcgVXNlckRpY3Rpb25hcnlBZGRXb3JkQ29udGVudHMobVJvb3RWaWV3LCBnZXRBcmd1bWVudHMoKSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG1Sb290VmlldzsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgdm9pZCBvbkNyZWF0ZU9wdGlvbnNNZW51KE1lbnUgbWVudSwgTWVudUluZmxhdGVyIGluZmxhdGVyKSB7CisgICAgICAgIGZpbmFsIE1lbnVJdGVtIGFjdGlvbkl0ZW1EZWxldGUgPSBtZW51LmFkZCgwLCBPUFRJT05TX01FTlVfREVMRVRFLCAwLAorICAgICAgICAgICAgICAgIFIuc3RyaW5nLnVzZXJfZGljdF9zZXR0aW5nc19kZWxldGUpLnNldEljb24oYW5kcm9pZC5SLmRyYXdhYmxlLmljX21lbnVfZGVsZXRlKTsKKyAgICAgICAgYWN0aW9uSXRlbURlbGV0ZS5zZXRTaG93QXNBY3Rpb24oCisgICAgICAgICAgICAgICAgTWVudUl0ZW0uU0hPV19BU19BQ1RJT05fSUZfUk9PTSB8IE1lbnVJdGVtLlNIT1dfQVNfQUNUSU9OX1dJVEhfVEVYVCk7CisgICAgICAgIGZpbmFsIE1lbnVJdGVtIGFjdGlvbkl0ZW1BZGQgPSBtZW51LmFkZCgwLCBPUFRJT05TX01FTlVfQURELCAwLAorICAgICAgICAgICAgICAgIFIuc3RyaW5nLnVzZXJfZGljdF9zZXR0aW5nc19kZWxldGUpLnNldEljb24oUi5kcmF3YWJsZS5pY19tZW51X2FkZCk7CisgICAgICAgIGFjdGlvbkl0ZW1BZGQuc2V0U2hvd0FzQWN0aW9uKAorICAgICAgICAgICAgICAgIE1lbnVJdGVtLlNIT1dfQVNfQUNUSU9OX0lGX1JPT00gfCBNZW51SXRlbS5TSE9XX0FTX0FDVElPTl9XSVRIX1RFWFQpOworICAgIH0KKworICAgIC8qKgorICAgICAqIENhbGxiYWNrIGZvciB0aGUgZnJhbWV3b3JrIHdoZW4gYSBtZW51IG9wdGlvbiBpcyBwcmVzc2VkLgorICAgICAqCisgICAgICogQHBhcmFtIE1lbnVJdGVtIHRoZSBpdGVtIHRoYXQgd2FzIHByZXNzZWQKKyAgICAgKiBAcmV0dXJuIGZhbHNlIHRvIGFsbG93IG5vcm1hbCBtZW51IHByb2Nlc3NpbmcgdG8gcHJvY2VlZCwgdHJ1ZSB0byBjb25zdW1lIGl0IGhlcmUKKyAgICAgKi8KKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgYm9vbGVhbiBvbk9wdGlvbnNJdGVtU2VsZWN0ZWQoTWVudUl0ZW0gaXRlbSkgeworICAgICAgICBpZiAoaXRlbS5nZXRJdGVtSWQoKSA9PSBPUFRJT05TX01FTlVfQUREKSB7CisgICAgICAgICAgICAvLyBhZGRlZCB0aGUgZW50cnkgaW4gIm9uUGF1c2UiCisgICAgICAgICAgICBnZXRBY3Rpdml0eSgpLm9uQmFja1ByZXNzZWQoKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIGlmIChpdGVtLmdldEl0ZW1JZCgpID09IE9QVElPTlNfTUVOVV9ERUxFVEUpIHsKKyAgICAgICAgICAgIG1Db250ZW50cy5kZWxldGUoZ2V0QWN0aXZpdHkoKSk7CisgICAgICAgICAgICBtSXNEZWxldGluZyA9IHRydWU7CisgICAgICAgICAgICBnZXRBY3Rpdml0eSgpLm9uQmFja1ByZXNzZWQoKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgdm9pZCBvblJlc3VtZSgpIHsKKyAgICAgICAgc3VwZXIub25SZXN1bWUoKTsKKyAgICAgICAgLy8gV2UgYXJlIGJlaW5nIHNob3duOiBkaXNwbGF5IHRoZSB3b3JkCisgICAgICAgIHVwZGF0ZVNwaW5uZXIoKTsKKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgdXBkYXRlU3Bpbm5lcigpIHsKKyAgICAgICAgZmluYWwgQXJyYXlMaXN0PExvY2FsZVJlbmRlcmVyPiBsb2NhbGVzTGlzdCA9IG1Db250ZW50cy5nZXRMb2NhbGVzTGlzdChnZXRBY3Rpdml0eSgpKTsKKworICAgICAgICBmaW5hbCBTcGlubmVyIGxvY2FsZVNwaW5uZXIgPQorICAgICAgICAgICAgICAgIChTcGlubmVyKW1Sb290Vmlldy5maW5kVmlld0J5SWQoUi5pZC51c2VyX2RpY3Rpb25hcnlfYWRkX2xvY2FsZSk7CisgICAgICAgIGZpbmFsIEFycmF5QWRhcHRlcjxMb2NhbGVSZW5kZXJlcj4gYWRhcHRlciA9IG5ldyBBcnJheUFkYXB0ZXI8TG9jYWxlUmVuZGVyZXI+KGdldEFjdGl2aXR5KCksCisgICAgICAgICAgICAgICAgYW5kcm9pZC5SLmxheW91dC5zaW1wbGVfc3Bpbm5lcl9pdGVtLCBsb2NhbGVzTGlzdCk7CisgICAgICAgIGFkYXB0ZXIuc2V0RHJvcERvd25WaWV3UmVzb3VyY2UoYW5kcm9pZC5SLmxheW91dC5zaW1wbGVfc3Bpbm5lcl9kcm9wZG93bl9pdGVtKTsKKyAgICAgICAgbG9jYWxlU3Bpbm5lci5zZXRBZGFwdGVyKGFkYXB0ZXIpOworICAgICAgICBsb2NhbGVTcGlubmVyLnNldE9uSXRlbVNlbGVjdGVkTGlzdGVuZXIodGhpcyk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIHZvaWQgb25QYXVzZSgpIHsKKyAgICAgICAgc3VwZXIub25QYXVzZSgpOworICAgICAgICAvLyBXZSBhcmUgYmVpbmcgaGlkZGVuOiBjb21taXQgY2hhbmdlcyB0byB0aGUgdXNlciBkaWN0aW9uYXJ5LCB1bmxlc3Mgd2Ugd2VyZSBkZWxldGluZyBpdAorICAgICAgICBpZiAoIW1Jc0RlbGV0aW5nKSB7CisgICAgICAgICAgICBtQ29udGVudHMuYXBwbHkoZ2V0QWN0aXZpdHkoKSwgbnVsbCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgdm9pZCBvbkl0ZW1TZWxlY3RlZChmaW5hbCBBZGFwdGVyVmlldzw/PiBwYXJlbnQsIGZpbmFsIFZpZXcgdmlldywgZmluYWwgaW50IHBvcywKKyAgICAgICAgICAgIGZpbmFsIGxvbmcgaWQpIHsKKyAgICAgICAgZmluYWwgTG9jYWxlUmVuZGVyZXIgbG9jYWxlID0gKExvY2FsZVJlbmRlcmVyKXBhcmVudC5nZXRJdGVtQXRQb3NpdGlvbihwb3MpOworICAgICAgICBpZiAobG9jYWxlLmlzTW9yZUxhbmd1YWdlcygpKSB7CisgICAgICAgICAgICBQcmVmZXJlbmNlQWN0aXZpdHkgcHJlZmVyZW5jZUFjdGl2aXR5ID0gKFByZWZlcmVuY2VBY3Rpdml0eSlnZXRBY3Rpdml0eSgpOworICAgICAgICAgICAgcHJlZmVyZW5jZUFjdGl2aXR5LnN0YXJ0UHJlZmVyZW5jZUZyYWdtZW50KG5ldyBVc2VyRGljdGlvbmFyeUxvY2FsZVBpY2tlcigpLCB0cnVlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1Db250ZW50cy51cGRhdGVMb2NhbGUobG9jYWxlLmdldExvY2FsZVN0cmluZygpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyB2b2lkIG9uTm90aGluZ1NlbGVjdGVkKGZpbmFsIEFkYXB0ZXJWaWV3PD8+IHBhcmVudCkgeworICAgICAgICAvLyBJJ20gbm90IHN1cmUgd2UgY2FuIGNvbWUgaGVyZSwgYnV0IGlmIHdlIGRvLCB0aGF0J3MgdGhlIHJpZ2h0IHRoaW5nIHRvIGRvLgorICAgICAgICBmaW5hbCBCdW5kbGUgYXJncyA9IGdldEFyZ3VtZW50cygpOworICAgICAgICBtQ29udGVudHMudXBkYXRlTG9jYWxlKGFyZ3MuZ2V0U3RyaW5nKFVzZXJEaWN0aW9uYXJ5QWRkV29yZENvbnRlbnRzLkVYVFJBX0xPQ0FMRSkpOworICAgIH0KKworICAgIC8vIENhbGxlZCBieSB0aGUgbG9jYWxlIHBpY2tlcgorICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyB2b2lkIG9uTG9jYWxlU2VsZWN0ZWQoZmluYWwgTG9jYWxlIGxvY2FsZSkgeworICAgICAgICBtQ29udGVudHMudXBkYXRlTG9jYWxlKGxvY2FsZS50b1N0cmluZygpKTsKKyAgICAgICAgZ2V0QWN0aXZpdHkoKS5vbkJhY2tQcmVzc2VkKCk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvbGF0aW4vdXNlcmRpY3Rpb25hcnkvVXNlckRpY3Rpb25hcnlMaXN0LmphdmEgYi9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9sYXRpbi91c2VyZGljdGlvbmFyeS9Vc2VyRGljdGlvbmFyeUxpc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZTY0ODgyCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvbGF0aW4vdXNlcmRpY3Rpb25hcnkvVXNlckRpY3Rpb25hcnlMaXN0LmphdmEKQEAgLTAsMCArMSwxMjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCitwYWNrYWdlIGNvbS5hbmRyb2lkLmlucHV0bWV0aG9kLmxhdGluLnVzZXJkaWN0aW9uYXJ5OworCitpbXBvcnQgY29tLmFuZHJvaWQuaW5wdXRtZXRob2QubGF0aW4uTG9jYWxlVXRpbHM7CitpbXBvcnQgY29tLmFuZHJvaWQuaW5wdXRtZXRob2QubGF0aW4uUjsKKworaW1wb3J0IGFuZHJvaWQuYXBwLkFjdGl2aXR5OworaW1wb3J0IGFuZHJvaWQuY29udGVudC5JbnRlbnQ7CitpbXBvcnQgYW5kcm9pZC5kYXRhYmFzZS5DdXJzb3I7CitpbXBvcnQgYW5kcm9pZC5vcy5CdW5kbGU7CitpbXBvcnQgYW5kcm9pZC5wcmVmZXJlbmNlLlByZWZlcmVuY2U7CitpbXBvcnQgYW5kcm9pZC5wcmVmZXJlbmNlLlByZWZlcmVuY2VGcmFnbWVudDsKK2ltcG9ydCBhbmRyb2lkLnByZWZlcmVuY2UuUHJlZmVyZW5jZUdyb3VwOworaW1wb3J0IGFuZHJvaWQucHJvdmlkZXIuVXNlckRpY3Rpb25hcnk7CitpbXBvcnQgYW5kcm9pZC50ZXh0LlRleHRVdGlsczsKKworaW1wb3J0IGphdmEudXRpbC5Mb2NhbGU7CitpbXBvcnQgamF2YS51dGlsLlRyZWVTZXQ7CisKKy8vIENhdmVhdDogVGhpcyBjbGFzcyBpcyBiYXNpY2FsbHkgdGFrZW4gZnJvbQorLy8gcGFja2FnZXMvYXBwcy9TZXR0aW5ncy9zcmMvY29tL2FuZHJvaWQvc2V0dGluZ3MvaW5wdXRtZXRob2QvVXNlckRpY3Rpb25hcnlMaXN0LmphdmEKKy8vIGluIG9yZGVyIHRvIGRlYWwgd2l0aCBzb21lIGRldmljZXMgdGhhdCBoYXZlIGlzc3VlcyB3aXRoIHRoZSB1c2VyIGRpY3Rpb25hcnkgaGFuZGxpbmcKKworcHVibGljIGNsYXNzIFVzZXJEaWN0aW9uYXJ5TGlzdCBleHRlbmRzIFByZWZlcmVuY2VGcmFnbWVudCB7CisKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBVU0VSX0RJQ1RJT05BUllfU0VUVElOR1NfSU5URU5UX0FDVElPTiA9CisgICAgICAgICAgICAiYW5kcm9pZC5zZXR0aW5ncy5VU0VSX0RJQ1RJT05BUllfU0VUVElOR1MiOworCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIHZvaWQgb25DcmVhdGUoQnVuZGxlIGljaWNsZSkgeworICAgICAgICBzdXBlci5vbkNyZWF0ZShpY2ljbGUpOworICAgICAgICBzZXRQcmVmZXJlbmNlU2NyZWVuKGdldFByZWZlcmVuY2VNYW5hZ2VyKCkuY3JlYXRlUHJlZmVyZW5jZVNjcmVlbihnZXRBY3Rpdml0eSgpKSk7CisgICAgfQorCisgICAgcHVibGljIHN0YXRpYyBUcmVlU2V0PFN0cmluZz4gZ2V0VXNlckRpY3Rpb25hcnlMb2NhbGVzU2V0KEFjdGl2aXR5IGFjdGl2aXR5KSB7CisgICAgICAgIEBTdXBwcmVzc1dhcm5pbmdzKCJkZXByZWNhdGlvbiIpCisgICAgICAgIGZpbmFsIEN1cnNvciBjdXJzb3IgPSBhY3Rpdml0eS5tYW5hZ2VkUXVlcnkoVXNlckRpY3Rpb25hcnkuV29yZHMuQ09OVEVOVF9VUkksCisgICAgICAgICAgICAgICAgbmV3IFN0cmluZ1tdIHsgVXNlckRpY3Rpb25hcnkuV29yZHMuTE9DQUxFIH0sCisgICAgICAgICAgICAgICAgbnVsbCwgbnVsbCwgbnVsbCk7CisgICAgICAgIGZpbmFsIFRyZWVTZXQ8U3RyaW5nPiBsb2NhbGVMaXN0ID0gbmV3IFRyZWVTZXQ8U3RyaW5nPigpOworICAgICAgICBib29sZWFuIGFkZGVkQWxsTG9jYWxlID0gZmFsc2U7CisgICAgICAgIGlmIChudWxsID09IGN1cnNvcikgeworICAgICAgICAgICAgLy8gVGhlIHVzZXIgZGljdGlvbmFyeSBzZXJ2aWNlIGlzIG5vdCBwcmVzZW50IG9yIGRpc2FibGVkLiBSZXR1cm4gbnVsbC4KKyAgICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICB9IGVsc2UgaWYgKGN1cnNvci5tb3ZlVG9GaXJzdCgpKSB7CisgICAgICAgICAgICBmaW5hbCBpbnQgY29sdW1uSW5kZXggPSBjdXJzb3IuZ2V0Q29sdW1uSW5kZXgoVXNlckRpY3Rpb25hcnkuV29yZHMuTE9DQUxFKTsKKyAgICAgICAgICAgIGRvIHsKKyAgICAgICAgICAgICAgICBmaW5hbCBTdHJpbmcgbG9jYWxlID0gY3Vyc29yLmdldFN0cmluZyhjb2x1bW5JbmRleCk7CisgICAgICAgICAgICAgICAgZmluYWwgYm9vbGVhbiBhbGxMb2NhbGUgPSBUZXh0VXRpbHMuaXNFbXB0eShsb2NhbGUpOworICAgICAgICAgICAgICAgIGxvY2FsZUxpc3QuYWRkKGFsbExvY2FsZSA/ICIiIDogbG9jYWxlKTsKKyAgICAgICAgICAgICAgICBpZiAoYWxsTG9jYWxlKSB7CisgICAgICAgICAgICAgICAgICAgIGFkZGVkQWxsTG9jYWxlID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IHdoaWxlIChjdXJzb3IubW92ZVRvTmV4dCgpKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoIVVzZXJEaWN0aW9uYXJ5U2V0dGluZ3MuSVNfU0hPUlRDVVRfQVBJX1NVUFBPUlRFRCAmJiAhYWRkZWRBbGxMb2NhbGUpIHsKKyAgICAgICAgICAgIC8vIEZvciBJQ1MsIHdlIG5lZWQgdG8gc2hvdyAiRm9yIGFsbCBsYW5ndWFnZXMiIGluIGNhc2UgdGhhdCB0aGUga2V5Ym9hcmQgbG9jYWxlCisgICAgICAgICAgICAvLyBpcyBkaWZmZXJlbnQgZnJvbSB0aGUgc3lzdGVtIGxvY2FsZQorICAgICAgICAgICAgbG9jYWxlTGlzdC5hZGQoIiIpOworICAgICAgICB9CisgICAgICAgIGxvY2FsZUxpc3QuYWRkKExvY2FsZS5nZXREZWZhdWx0KCkudG9TdHJpbmcoKSk7CisgICAgICAgIHJldHVybiBsb2NhbGVMaXN0OworICAgIH0KKworICAgIC8qKgorICAgICAqIENyZWF0ZXMgdGhlIGVudHJpZXMgdGhhdCBhbGxvdyB0aGUgdXNlciB0byBnbyBpbnRvIHRoZSB1c2VyIGRpY3Rpb25hcnkgZm9yIGVhY2ggbG9jYWxlLgorICAgICAqIEBwYXJhbSB1c2VyRGljdEdyb3VwIFRoZSBncm91cCB0byBwdXQgdGhlIHNldHRpbmdzIGluLgorICAgICAqLworICAgIHByb3RlY3RlZCB2b2lkIGNyZWF0ZVVzZXJEaWN0U2V0dGluZ3MoUHJlZmVyZW5jZUdyb3VwIHVzZXJEaWN0R3JvdXApIHsKKyAgICAgICAgZmluYWwgQWN0aXZpdHkgYWN0aXZpdHkgPSBnZXRBY3Rpdml0eSgpOworICAgICAgICB1c2VyRGljdEdyb3VwLnJlbW92ZUFsbCgpOworICAgICAgICBmaW5hbCBUcmVlU2V0PFN0cmluZz4gbG9jYWxlTGlzdCA9CisgICAgICAgICAgICAgICAgVXNlckRpY3Rpb25hcnlMaXN0LmdldFVzZXJEaWN0aW9uYXJ5TG9jYWxlc1NldChhY3Rpdml0eSk7CisKKyAgICAgICAgaWYgKGxvY2FsZUxpc3QuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICB1c2VyRGljdEdyb3VwLmFkZFByZWZlcmVuY2UoY3JlYXRlVXNlckRpY3Rpb25hcnlQcmVmZXJlbmNlKG51bGwsIGFjdGl2aXR5KSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBmb3IgKFN0cmluZyBsb2NhbGUgOiBsb2NhbGVMaXN0KSB7CisgICAgICAgICAgICAgICAgdXNlckRpY3RHcm91cC5hZGRQcmVmZXJlbmNlKGNyZWF0ZVVzZXJEaWN0aW9uYXJ5UHJlZmVyZW5jZShsb2NhbGUsIGFjdGl2aXR5KSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDcmVhdGUgYSBzaW5nbGUgVXNlciBEaWN0aW9uYXJ5IFByZWZlcmVuY2Ugb2JqZWN0LCB3aXRoIGl0cyBwYXJhbWV0ZXJzIHNldC4KKyAgICAgKiBAcGFyYW0gbG9jYWxlIFRoZSBsb2NhbGUgZm9yIHdoaWNoIHRoaXMgdXNlciBkaWN0aW9uYXJ5IGlzIGZvci4KKyAgICAgKiBAcmV0dXJuIFRoZSBjb3JyZXNwb25kaW5nIHByZWZlcmVuY2UuCisgICAgICovCisgICAgcHJvdGVjdGVkIFByZWZlcmVuY2UgY3JlYXRlVXNlckRpY3Rpb25hcnlQcmVmZXJlbmNlKFN0cmluZyBsb2NhbGUsIEFjdGl2aXR5IGFjdGl2aXR5KSB7CisgICAgICAgIGZpbmFsIFByZWZlcmVuY2UgbmV3UHJlZiA9IG5ldyBQcmVmZXJlbmNlKGdldEFjdGl2aXR5KCkpOworICAgICAgICBmaW5hbCBJbnRlbnQgaW50ZW50ID0gbmV3IEludGVudChVU0VSX0RJQ1RJT05BUllfU0VUVElOR1NfSU5URU5UX0FDVElPTik7CisgICAgICAgIGlmIChudWxsID09IGxvY2FsZSkgeworICAgICAgICAgICAgbmV3UHJlZi5zZXRUaXRsZShMb2NhbGUuZ2V0RGVmYXVsdCgpLmdldERpc3BsYXlOYW1lKCkpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKCIiLmVxdWFscyhsb2NhbGUpKQorICAgICAgICAgICAgICAgIG5ld1ByZWYuc2V0VGl0bGUoZ2V0U3RyaW5nKFIuc3RyaW5nLnVzZXJfZGljdF9zZXR0aW5nc19hbGxfbGFuZ3VhZ2VzKSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgbmV3UHJlZi5zZXRUaXRsZShMb2NhbGVVdGlscy5jb25zdHJ1Y3RMb2NhbGVGcm9tU3RyaW5nKGxvY2FsZSkuZ2V0RGlzcGxheU5hbWUoKSk7CisgICAgICAgICAgICBpbnRlbnQucHV0RXh0cmEoImxvY2FsZSIsIGxvY2FsZSk7CisgICAgICAgICAgICBuZXdQcmVmLmdldEV4dHJhcygpLnB1dFN0cmluZygibG9jYWxlIiwgbG9jYWxlKTsKKyAgICAgICAgfQorICAgICAgICBuZXdQcmVmLnNldEludGVudChpbnRlbnQpOworICAgICAgICBuZXdQcmVmLnNldEZyYWdtZW50KFVzZXJEaWN0aW9uYXJ5U2V0dGluZ3MuY2xhc3MuZ2V0TmFtZSgpKTsKKyAgICAgICAgcmV0dXJuIG5ld1ByZWY7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIHZvaWQgb25SZXN1bWUoKSB7CisgICAgICAgIHN1cGVyLm9uUmVzdW1lKCk7CisgICAgICAgIGNyZWF0ZVVzZXJEaWN0U2V0dGluZ3MoZ2V0UHJlZmVyZW5jZVNjcmVlbigpKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9sYXRpbi91c2VyZGljdGlvbmFyeS9Vc2VyRGljdGlvbmFyeUxvY2FsZVBpY2tlci5qYXZhIGIvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvbGF0aW4vdXNlcmRpY3Rpb25hcnkvVXNlckRpY3Rpb25hcnlMb2NhbGVQaWNrZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41OGQzZmI5Ci0tLSAvZGV2L251bGwKKysrIGIvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvbGF0aW4vdXNlcmRpY3Rpb25hcnkvVXNlckRpY3Rpb25hcnlMb2NhbGVQaWNrZXIuamF2YQpAQCAtMCwwICsxLDM2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworcGFja2FnZSBjb20uYW5kcm9pZC5pbnB1dG1ldGhvZC5sYXRpbi51c2VyZGljdGlvbmFyeTsKKworaW1wb3J0IGFuZHJvaWQuYXBwLkZyYWdtZW50OworCitpbXBvcnQgamF2YS51dGlsLkxvY2FsZTsKKworLy8gQ2F2ZWF0OiBUaGlzIGNsYXNzIGlzIGJhc2ljYWxseSB0YWtlbiBmcm9tCisvLyBwYWNrYWdlcy9hcHBzL1NldHRpbmdzL3NyYy9jb20vYW5kcm9pZC9zZXR0aW5ncy9pbnB1dG1ldGhvZC9Vc2VyRGljdGlvbmFyeUxvY2FsZVBpY2tlci5qYXZhCisvLyBpbiBvcmRlciB0byBkZWFsIHdpdGggc29tZSBkZXZpY2VzIHRoYXQgaGF2ZSBpc3N1ZXMgd2l0aCB0aGUgdXNlciBkaWN0aW9uYXJ5IGhhbmRsaW5nCisKK3B1YmxpYyBjbGFzcyBVc2VyRGljdGlvbmFyeUxvY2FsZVBpY2tlciBleHRlbmRzIEZyYWdtZW50IHsKKyAgICBwdWJsaWMgVXNlckRpY3Rpb25hcnlMb2NhbGVQaWNrZXIoKSB7CisgICAgICAgIHN1cGVyKCk7CisgICAgICAgIC8vIFRPRE86IGltcGxlbWVudAorICAgIH0KKworICAgIHB1YmxpYyBpbnRlcmZhY2UgTG9jYXRpb25DaGFuZ2VkTGlzdGVuZXIgeworICAgICAgICBwdWJsaWMgdm9pZCBvbkxvY2FsZVNlbGVjdGVkKExvY2FsZSBsb2NhbGUpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2xhdGluL3VzZXJkaWN0aW9uYXJ5L1VzZXJEaWN0aW9uYXJ5U2V0dGluZ3MuamF2YSBiL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2xhdGluL3VzZXJkaWN0aW9uYXJ5L1VzZXJEaWN0aW9uYXJ5U2V0dGluZ3MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNmJjNWJhCi0tLSAvZGV2L251bGwKKysrIGIvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvbGF0aW4vdXNlcmRpY3Rpb25hcnkvVXNlckRpY3Rpb25hcnlTZXR0aW5ncy5qYXZhCkBAIC0wLDAgKzEsMzMzIEBACisvKioKKyAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdAorICogdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkKKyAqIG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywgV0lUSE9VVAorICogV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiBTZWUgdGhlCisgKiBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworcGFja2FnZSBjb20uYW5kcm9pZC5pbnB1dG1ldGhvZC5sYXRpbi51c2VyZGljdGlvbmFyeTsKKworaW1wb3J0IGNvbS5hbmRyb2lkLmlucHV0bWV0aG9kLmxhdGluLlI7CisKK2ltcG9ydCBhbmRyb2lkLmFwcC5MaXN0RnJhZ21lbnQ7CitpbXBvcnQgYW5kcm9pZC5jb250ZW50LkNvbnRlbnRSZXNvbHZlcjsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQuQ29udGV4dDsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQuSW50ZW50OworaW1wb3J0IGFuZHJvaWQuZGF0YWJhc2UuQ3Vyc29yOworaW1wb3J0IGFuZHJvaWQub3MuQnVpbGQ7CitpbXBvcnQgYW5kcm9pZC5vcy5CdW5kbGU7CitpbXBvcnQgYW5kcm9pZC5wcm92aWRlci5Vc2VyRGljdGlvbmFyeTsKK2ltcG9ydCBhbmRyb2lkLnRleHQuVGV4dFV0aWxzOworaW1wb3J0IGFuZHJvaWQudmlldy5MYXlvdXRJbmZsYXRlcjsKK2ltcG9ydCBhbmRyb2lkLnZpZXcuTWVudTsKK2ltcG9ydCBhbmRyb2lkLnZpZXcuTWVudUluZmxhdGVyOworaW1wb3J0IGFuZHJvaWQudmlldy5NZW51SXRlbTsKK2ltcG9ydCBhbmRyb2lkLnZpZXcuVmlldzsKK2ltcG9ydCBhbmRyb2lkLnZpZXcuVmlld0dyb3VwOworaW1wb3J0IGFuZHJvaWQud2lkZ2V0LkFscGhhYmV0SW5kZXhlcjsKK2ltcG9ydCBhbmRyb2lkLndpZGdldC5MaXN0QWRhcHRlcjsKK2ltcG9ydCBhbmRyb2lkLndpZGdldC5MaXN0VmlldzsKK2ltcG9ydCBhbmRyb2lkLndpZGdldC5TZWN0aW9uSW5kZXhlcjsKK2ltcG9ydCBhbmRyb2lkLndpZGdldC5TaW1wbGVDdXJzb3JBZGFwdGVyOworaW1wb3J0IGFuZHJvaWQud2lkZ2V0LlRleHRWaWV3OworCitpbXBvcnQgamF2YS51dGlsLkxvY2FsZTsKKworLy8gQ2F2ZWF0OiBUaGlzIGNsYXNzIGlzIGJhc2ljYWxseSB0YWtlbiBmcm9tCisvLyBwYWNrYWdlcy9hcHBzL1NldHRpbmdzL3NyYy9jb20vYW5kcm9pZC9zZXR0aW5ncy9pbnB1dG1ldGhvZC9Vc2VyRGljdGlvbmFyeVNldHRpbmdzLmphdmEKKy8vIGluIG9yZGVyIHRvIGRlYWwgd2l0aCBzb21lIGRldmljZXMgdGhhdCBoYXZlIGlzc3VlcyB3aXRoIHRoZSB1c2VyIGRpY3Rpb25hcnkgaGFuZGxpbmcKKworcHVibGljIGNsYXNzIFVzZXJEaWN0aW9uYXJ5U2V0dGluZ3MgZXh0ZW5kcyBMaXN0RnJhZ21lbnQgeworCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBib29sZWFuIElTX1NIT1JUQ1VUX0FQSV9TVVBQT1JURUQgPQorICAgICAgICAgICAgQnVpbGQuVkVSU0lPTi5TREtfSU5UID49IEJ1aWxkLlZFUlNJT05fQ09ERVMuSkVMTFlfQkVBTjsKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZ1tdIFFVRVJZX1BST0pFQ1RJT05fU0hPUlRDVVRfVU5TVVBQT1JURUQgPQorICAgICAgICAgICAgeyBVc2VyRGljdGlvbmFyeS5Xb3Jkcy5fSUQsIFVzZXJEaWN0aW9uYXJ5LldvcmRzLldPUkR9OworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZ1tdIFFVRVJZX1BST0pFQ1RJT05fU0hPUlRDVVRfU1VQUE9SVEVEID0KKyAgICAgICAgICAgIHsgVXNlckRpY3Rpb25hcnkuV29yZHMuX0lELCBVc2VyRGljdGlvbmFyeS5Xb3Jkcy5XT1JELCBVc2VyRGljdGlvbmFyeS5Xb3Jkcy5TSE9SVENVVH07CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nW10gUVVFUllfUFJPSkVDVElPTiA9CisgICAgICAgICAgICBJU19TSE9SVENVVF9BUElfU1VQUE9SVEVEID8KKyAgICAgICAgICAgICAgICAgICAgUVVFUllfUFJPSkVDVElPTl9TSE9SVENVVF9TVVBQT1JURUQgOiBRVUVSWV9QUk9KRUNUSU9OX1NIT1JUQ1VUX1VOU1VQUE9SVEVEOworCisgICAgLy8gVGhlIGluZGV4IG9mIHRoZSBzaG9ydGN1dCBpbiB0aGUgYWJvdmUgYXJyYXkuCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IElOREVYX1NIT1JUQ1VUID0gMjsKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZ1tdIEFEQVBURVJfRlJPTV9TSE9SVENVVF9VTlNVUFBPUlRFRCA9IHsKKyAgICAgICAgVXNlckRpY3Rpb25hcnkuV29yZHMuV09SRCwKKyAgICB9OworCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nW10gQURBUFRFUl9GUk9NX1NIT1JUQ1VUX1NVUFBPUlRFRCA9IHsKKyAgICAgICAgVXNlckRpY3Rpb25hcnkuV29yZHMuV09SRCwgVXNlckRpY3Rpb25hcnkuV29yZHMuU0hPUlRDVVQKKyAgICB9OworCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nW10gQURBUFRFUl9GUk9NID0gSVNfU0hPUlRDVVRfQVBJX1NVUFBPUlRFRCA/CisgICAgICAgICAgICBBREFQVEVSX0ZST01fU0hPUlRDVVRfU1VQUE9SVEVEIDogQURBUFRFUl9GUk9NX1NIT1JUQ1VUX1VOU1VQUE9SVEVEOworCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50W10gQURBUFRFUl9UT19TSE9SVENVVF9VTlNVUFBPUlRFRCA9IHsKKyAgICAgICAgYW5kcm9pZC5SLmlkLnRleHQxLAorICAgIH07CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnRbXSBBREFQVEVSX1RPX1NIT1JUQ1VUX1NVUFBPUlRFRCA9IHsKKyAgICAgICAgYW5kcm9pZC5SLmlkLnRleHQxLCBhbmRyb2lkLlIuaWQudGV4dDIKKyAgICB9OworCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50W10gQURBUFRFUl9UTyA9IElTX1NIT1JUQ1VUX0FQSV9TVVBQT1JURUQgPworICAgICAgICAgICAgQURBUFRFUl9UT19TSE9SVENVVF9TVVBQT1JURUQgOiBBREFQVEVSX1RPX1NIT1JUQ1VUX1VOU1VQUE9SVEVEOworCisgICAgLy8gRWl0aGVyIHRoZSBsb2NhbGUgaXMgZW1wdHkgKG1lYW5zIHRoZSB3b3JkIGlzIGFwcGxpY2FibGUgdG8gYWxsIGxvY2FsZXMpCisgICAgLy8gb3IgdGhlIHdvcmQgZXF1YWxzIG91ciBjdXJyZW50IGxvY2FsZQorICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBRVUVSWV9TRUxFQ1RJT04gPQorICAgICAgICAgICAgVXNlckRpY3Rpb25hcnkuV29yZHMuTE9DQUxFICsgIj0/IjsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgUVVFUllfU0VMRUNUSU9OX0FMTF9MT0NBTEVTID0KKyAgICAgICAgICAgIFVzZXJEaWN0aW9uYXJ5LldvcmRzLkxPQ0FMRSArICIgaXMgbnVsbCI7CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgREVMRVRFX1NFTEVDVElPTl9XSVRIX1NIT1JUQ1VUID0gVXNlckRpY3Rpb25hcnkuV29yZHMuV09SRAorICAgICAgICAgICAgKyAiPT8gQU5EICIgKyBVc2VyRGljdGlvbmFyeS5Xb3Jkcy5TSE9SVENVVCArICI9PyI7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIERFTEVURV9TRUxFQ1RJT05fV0lUSE9VVF9TSE9SVENVVCA9IFVzZXJEaWN0aW9uYXJ5LldvcmRzLldPUkQKKyAgICAgICAgICAgICsgIj0/IEFORCAiICsgVXNlckRpY3Rpb25hcnkuV29yZHMuU0hPUlRDVVQgKyAiIGlzIG51bGwgT1IgIgorICAgICAgICAgICAgKyBVc2VyRGljdGlvbmFyeS5Xb3Jkcy5TSE9SVENVVCArICI9JyciOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBERUxFVEVfU0VMRUNUSU9OX1NIT1JUQ1VUX1VOU1VQUE9SVEVEID0KKyAgICAgICAgICAgIFVzZXJEaWN0aW9uYXJ5LldvcmRzLldPUkQgKyAiPT8iOworCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IE9QVElPTlNfTUVOVV9BREQgPSBNZW51LkZJUlNUOworCisgICAgcHJpdmF0ZSBDdXJzb3IgbUN1cnNvcjsKKworICAgIHByb3RlY3RlZCBTdHJpbmcgbUxvY2FsZTsKKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyB2b2lkIG9uQ3JlYXRlKEJ1bmRsZSBzYXZlZEluc3RhbmNlU3RhdGUpIHsKKyAgICAgICAgc3VwZXIub25DcmVhdGUoc2F2ZWRJbnN0YW5jZVN0YXRlKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgVmlldyBvbkNyZWF0ZVZpZXcoCisgICAgICAgICAgICBMYXlvdXRJbmZsYXRlciBpbmZsYXRlciwgVmlld0dyb3VwIGNvbnRhaW5lciwgQnVuZGxlIHNhdmVkSW5zdGFuY2VTdGF0ZSkgeworICAgICAgICByZXR1cm4gaW5mbGF0ZXIuaW5mbGF0ZSgKKyAgICAgICAgICAgICAgICBSLmxheW91dC51c2VyX2RpY3Rpb25hcnlfcHJlZmVyZW5jZV9saXN0X2ZyYWdtZW50LCBjb250YWluZXIsIGZhbHNlKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgdm9pZCBvbkFjdGl2aXR5Q3JlYXRlZChCdW5kbGUgc2F2ZWRJbnN0YW5jZVN0YXRlKSB7CisgICAgICAgIHN1cGVyLm9uQWN0aXZpdHlDcmVhdGVkKHNhdmVkSW5zdGFuY2VTdGF0ZSk7CisKKyAgICAgICAgZmluYWwgSW50ZW50IGludGVudCA9IGdldEFjdGl2aXR5KCkuZ2V0SW50ZW50KCk7CisgICAgICAgIGZpbmFsIFN0cmluZyBsb2NhbGVGcm9tSW50ZW50ID0KKyAgICAgICAgICAgICAgICBudWxsID09IGludGVudCA/IG51bGwgOiBpbnRlbnQuZ2V0U3RyaW5nRXh0cmEoImxvY2FsZSIpOworCisgICAgICAgIGZpbmFsIEJ1bmRsZSBhcmd1bWVudHMgPSBnZXRBcmd1bWVudHMoKTsKKyAgICAgICAgZmluYWwgU3RyaW5nIGxvY2FsZUZyb21Bcmd1bWVudHMgPQorICAgICAgICAgICAgICAgIG51bGwgPT0gYXJndW1lbnRzID8gbnVsbCA6IGFyZ3VtZW50cy5nZXRTdHJpbmcoImxvY2FsZSIpOworCisgICAgICAgIGZpbmFsIFN0cmluZyBsb2NhbGU7CisgICAgICAgIGlmIChudWxsICE9IGxvY2FsZUZyb21Bcmd1bWVudHMpIHsKKyAgICAgICAgICAgIGxvY2FsZSA9IGxvY2FsZUZyb21Bcmd1bWVudHM7CisgICAgICAgIH0gZWxzZSBpZiAobnVsbCAhPSBsb2NhbGVGcm9tSW50ZW50KSB7CisgICAgICAgICAgICBsb2NhbGUgPSBsb2NhbGVGcm9tSW50ZW50OworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbG9jYWxlID0gbnVsbDsKKyAgICAgICAgfQorCisgICAgICAgIG1Mb2NhbGUgPSBsb2NhbGU7CisgICAgICAgIG1DdXJzb3IgPSBjcmVhdGVDdXJzb3IobG9jYWxlKTsKKyAgICAgICAgVGV4dFZpZXcgZW1wdHlWaWV3ID0gKFRleHRWaWV3KSBnZXRWaWV3KCkuZmluZFZpZXdCeUlkKGFuZHJvaWQuUi5pZC5lbXB0eSk7CisgICAgICAgIGVtcHR5Vmlldy5zZXRUZXh0KFIuc3RyaW5nLnVzZXJfZGljdF9zZXR0aW5nc19lbXB0eV90ZXh0KTsKKworICAgICAgICBmaW5hbCBMaXN0VmlldyBsaXN0VmlldyA9IGdldExpc3RWaWV3KCk7CisgICAgICAgIGxpc3RWaWV3LnNldEFkYXB0ZXIoY3JlYXRlQWRhcHRlcigpKTsKKyAgICAgICAgbGlzdFZpZXcuc2V0RmFzdFNjcm9sbEVuYWJsZWQodHJ1ZSk7CisgICAgICAgIGxpc3RWaWV3LnNldEVtcHR5VmlldyhlbXB0eVZpZXcpOworCisgICAgICAgIHNldEhhc09wdGlvbnNNZW51KHRydWUpOworCisgICAgfQorCisgICAgQFN1cHByZXNzV2FybmluZ3MoImRlcHJlY2F0aW9uIikKKyAgICBwcml2YXRlIEN1cnNvciBjcmVhdGVDdXJzb3IoZmluYWwgU3RyaW5nIGxvY2FsZSkgeworICAgICAgICAvLyBMb2NhbGUgY2FuIGJlIGFueSBvZjoKKyAgICAgICAgLy8gLSBUaGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGEgbG9jYWxlLCBhcyByZXR1cm5lZCBieSBMb2NhbGUjdG9TdHJpbmcoKQorICAgICAgICAvLyAtIFRoZSBlbXB0eSBzdHJpbmcuIFRoaXMgbWVhbnMgd2Ugd2FudCBhIGN1cnNvciByZXR1cm5pbmcgd29yZHMgdmFsaWQgZm9yIGFsbCBsb2NhbGVzLgorICAgICAgICAvLyAtIG51bGwuIFRoaXMgbWVhbnMgd2Ugd2FudCBhIGN1cnNvciBmb3IgdGhlIGN1cnJlbnQgbG9jYWxlLCB3aGF0ZXZlciB0aGlzIGlzLgorICAgICAgICAvLyBOb3RlIHRoYXQgdGhpcyBjb250cmFzdHMgd2l0aCB0aGUgZGF0YSBpbnNpZGUgdGhlIGRhdGFiYXNlLCB3aGVyZSBOVUxMIG1lYW5zICJhbGwKKyAgICAgICAgLy8gbG9jYWxlcyIgYW5kIHRoZXJlIHNob3VsZCBuZXZlciBiZSBhbiBlbXB0eSBzdHJpbmcuIFRoZSBjb25mdXNpb24gaXMgY2FsbGVkIGJ5IHRoZQorICAgICAgICAvLyBoaXN0b3JpY2FsIHVzZSBvZiBudWxsIGZvciAiYWxsIGxvY2FsZXMiLgorICAgICAgICAvLyBUT0RPOiBpdCBzaG91bGQgYmUgZWFzeSB0byBtYWtlIHRoaXMgbW9yZSByZWFkYWJsZSBieSBtYWtpbmcgdGhlIHNwZWNpYWwgdmFsdWVzCisgICAgICAgIC8vIGh1bWFuLXJlYWRhYmxlLCBsaWtlICJhbGxfbG9jYWxlcyIgYW5kICJjdXJyZW50X2xvY2FsZXMiIHN0cmluZ3MsIHByb3ZpZGVkIHRoZXkKKyAgICAgICAgLy8gY2FuIGJlIGd1YXJhbnRlZWQgbm90IHRvIG1hdGNoIGxvY2FsZXMgdGhhdCBtYXkgZXhpc3QuCisgICAgICAgIGlmICgiIi5lcXVhbHMobG9jYWxlKSkgeworICAgICAgICAgICAgLy8gQ2FzZS1pbnNlbnNpdGl2ZSBzb3J0CisgICAgICAgICAgICByZXR1cm4gZ2V0QWN0aXZpdHkoKS5tYW5hZ2VkUXVlcnkoVXNlckRpY3Rpb25hcnkuV29yZHMuQ09OVEVOVF9VUkksIFFVRVJZX1BST0pFQ1RJT04sCisgICAgICAgICAgICAgICAgICAgIFFVRVJZX1NFTEVDVElPTl9BTExfTE9DQUxFUywgbnVsbCwKKyAgICAgICAgICAgICAgICAgICAgIlVQUEVSKCIgKyBVc2VyRGljdGlvbmFyeS5Xb3Jkcy5XT1JEICsgIikiKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGZpbmFsIFN0cmluZyBxdWVyeUxvY2FsZSA9IG51bGwgIT0gbG9jYWxlID8gbG9jYWxlIDogTG9jYWxlLmdldERlZmF1bHQoKS50b1N0cmluZygpOworICAgICAgICAgICAgcmV0dXJuIGdldEFjdGl2aXR5KCkubWFuYWdlZFF1ZXJ5KFVzZXJEaWN0aW9uYXJ5LldvcmRzLkNPTlRFTlRfVVJJLCBRVUVSWV9QUk9KRUNUSU9OLAorICAgICAgICAgICAgICAgICAgICBRVUVSWV9TRUxFQ1RJT04sIG5ldyBTdHJpbmdbXSB7IHF1ZXJ5TG9jYWxlIH0sCisgICAgICAgICAgICAgICAgICAgICJVUFBFUigiICsgVXNlckRpY3Rpb25hcnkuV29yZHMuV09SRCArICIpIik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIExpc3RBZGFwdGVyIGNyZWF0ZUFkYXB0ZXIoKSB7CisgICAgICAgIHJldHVybiBuZXcgTXlBZGFwdGVyKGdldEFjdGl2aXR5KCksIFIubGF5b3V0LnVzZXJfZGljdGlvbmFyeV9pdGVtLCBtQ3Vyc29yLAorICAgICAgICAgICAgICAgIEFEQVBURVJfRlJPTSwgQURBUFRFUl9UTywgdGhpcyk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIHZvaWQgb25MaXN0SXRlbUNsaWNrKExpc3RWaWV3IGwsIFZpZXcgdiwgaW50IHBvc2l0aW9uLCBsb25nIGlkKSB7CisgICAgICAgIGZpbmFsIFN0cmluZyB3b3JkID0gZ2V0V29yZChwb3NpdGlvbik7CisgICAgICAgIGZpbmFsIFN0cmluZyBzaG9ydGN1dCA9IGdldFNob3J0Y3V0KHBvc2l0aW9uKTsKKyAgICAgICAgaWYgKHdvcmQgIT0gbnVsbCkgeworICAgICAgICAgICAgc2hvd0FkZE9yRWRpdERpYWxvZyh3b3JkLCBzaG9ydGN1dCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgdm9pZCBvbkNyZWF0ZU9wdGlvbnNNZW51KE1lbnUgbWVudSwgTWVudUluZmxhdGVyIGluZmxhdGVyKSB7CisgICAgICAgIGlmICghVXNlckRpY3Rpb25hcnlTZXR0aW5ncy5JU19TSE9SVENVVF9BUElfU1VQUE9SVEVEKSB7CisgICAgICAgICAgICBmaW5hbCBMb2NhbGUgc3lzdGVtTG9jYWxlID0gZ2V0UmVzb3VyY2VzKCkuZ2V0Q29uZmlndXJhdGlvbigpLmxvY2FsZTsKKyAgICAgICAgICAgIGlmICghVGV4dFV0aWxzLmlzRW1wdHkobUxvY2FsZSkgJiYgIW1Mb2NhbGUuZXF1YWxzKHN5c3RlbUxvY2FsZS50b1N0cmluZygpKSkgeworICAgICAgICAgICAgICAgIC8vIEhpZGUgdGhlIGFkZCBidXR0b24gZm9yIElDUyBiZWNhdXNlIGl0IGRvZXNuJ3Qgc3VwcG9ydCBzcGVjaWZ5aW5nIGEgbG9jYWxlCisgICAgICAgICAgICAgICAgLy8gZm9yIGFuIGVudHJ5LiBUaGlzIG5ldyAibG9jYWxlIi1hd2FyZSBBUEkgaGFzIGJlZW4gYWRkZWQgaW4gY29uanVuY3Rpb24KKyAgICAgICAgICAgICAgICAvLyB3aXRoIHRoZSBzaG9ydGN1dCBBUEkuCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIE1lbnVJdGVtIGFjdGlvbkl0ZW0gPQorICAgICAgICAgICAgICAgIG1lbnUuYWRkKDAsIE9QVElPTlNfTUVOVV9BREQsIDAsIFIuc3RyaW5nLnVzZXJfZGljdF9zZXR0aW5nc19hZGRfbWVudV90aXRsZSkKKyAgICAgICAgICAgICAgICAuc2V0SWNvbihSLmRyYXdhYmxlLmljX21lbnVfYWRkKTsKKyAgICAgICAgYWN0aW9uSXRlbS5zZXRTaG93QXNBY3Rpb24oCisgICAgICAgICAgICAgICAgTWVudUl0ZW0uU0hPV19BU19BQ1RJT05fSUZfUk9PTSB8IE1lbnVJdGVtLlNIT1dfQVNfQUNUSU9OX1dJVEhfVEVYVCk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIGJvb2xlYW4gb25PcHRpb25zSXRlbVNlbGVjdGVkKE1lbnVJdGVtIGl0ZW0pIHsKKyAgICAgICAgaWYgKGl0ZW0uZ2V0SXRlbUlkKCkgPT0gT1BUSU9OU19NRU5VX0FERCkgeworICAgICAgICAgICAgc2hvd0FkZE9yRWRpdERpYWxvZyhudWxsLCBudWxsKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBBZGQgb3IgZWRpdCBhIHdvcmQuIElmIGVkaXRpbmdXb3JkIGlzIG51bGwsIGl0J3MgYW4gYWRkOyBvdGhlcndpc2UsIGl0J3MgYW4gZWRpdC4KKyAgICAgKiBAcGFyYW0gZWRpdGluZ1dvcmQgdGhlIHdvcmQgdG8gZWRpdCwgb3IgbnVsbCBpZiBpdCdzIGFuIGFkZC4KKyAgICAgKiBAcGFyYW0gZWRpdGluZ1Nob3J0Y3V0IHRoZSBzaG9ydGN1dCBmb3IgdGhpcyBlbnRyeSwgb3IgbnVsbCBpZiBub25lLgorICAgICAqLworICAgIHByaXZhdGUgdm9pZCBzaG93QWRkT3JFZGl0RGlhbG9nKGZpbmFsIFN0cmluZyBlZGl0aW5nV29yZCwgZmluYWwgU3RyaW5nIGVkaXRpbmdTaG9ydGN1dCkgeworICAgICAgICBmaW5hbCBCdW5kbGUgYXJncyA9IG5ldyBCdW5kbGUoKTsKKyAgICAgICAgYXJncy5wdXRJbnQoVXNlckRpY3Rpb25hcnlBZGRXb3JkQ29udGVudHMuRVhUUkFfTU9ERSwgbnVsbCA9PSBlZGl0aW5nV29yZAorICAgICAgICAgICAgICAgID8gVXNlckRpY3Rpb25hcnlBZGRXb3JkQ29udGVudHMuTU9ERV9JTlNFUlQKKyAgICAgICAgICAgICAgICA6IFVzZXJEaWN0aW9uYXJ5QWRkV29yZENvbnRlbnRzLk1PREVfRURJVCk7CisgICAgICAgIGFyZ3MucHV0U3RyaW5nKFVzZXJEaWN0aW9uYXJ5QWRkV29yZENvbnRlbnRzLkVYVFJBX1dPUkQsIGVkaXRpbmdXb3JkKTsKKyAgICAgICAgYXJncy5wdXRTdHJpbmcoVXNlckRpY3Rpb25hcnlBZGRXb3JkQ29udGVudHMuRVhUUkFfU0hPUlRDVVQsIGVkaXRpbmdTaG9ydGN1dCk7CisgICAgICAgIGFyZ3MucHV0U3RyaW5nKFVzZXJEaWN0aW9uYXJ5QWRkV29yZENvbnRlbnRzLkVYVFJBX0xPQ0FMRSwgbUxvY2FsZSk7CisgICAgICAgIGFuZHJvaWQucHJlZmVyZW5jZS5QcmVmZXJlbmNlQWN0aXZpdHkgcGEgPQorICAgICAgICAgICAgICAgIChhbmRyb2lkLnByZWZlcmVuY2UuUHJlZmVyZW5jZUFjdGl2aXR5KWdldEFjdGl2aXR5KCk7CisgICAgICAgIHBhLnN0YXJ0UHJlZmVyZW5jZVBhbmVsKFVzZXJEaWN0aW9uYXJ5QWRkV29yZEZyYWdtZW50LmNsYXNzLmdldE5hbWUoKSwKKyAgICAgICAgICAgICAgICBhcmdzLCBSLnN0cmluZy51c2VyX2RpY3Rfc2V0dGluZ3NfYWRkX2RpYWxvZ190aXRsZSwgbnVsbCwgbnVsbCwgMCk7CisgICAgfQorCisgICAgcHJpdmF0ZSBTdHJpbmcgZ2V0V29yZChmaW5hbCBpbnQgcG9zaXRpb24pIHsKKyAgICAgICAgaWYgKG51bGwgPT0gbUN1cnNvcikgcmV0dXJuIG51bGw7CisgICAgICAgIG1DdXJzb3IubW92ZVRvUG9zaXRpb24ocG9zaXRpb24pOworICAgICAgICAvLyBIYW5kbGUgYSBwb3NzaWJsZSByYWNlLWNvbmRpdGlvbgorICAgICAgICBpZiAobUN1cnNvci5pc0FmdGVyTGFzdCgpKSByZXR1cm4gbnVsbDsKKworICAgICAgICByZXR1cm4gbUN1cnNvci5nZXRTdHJpbmcoCisgICAgICAgICAgICAgICAgbUN1cnNvci5nZXRDb2x1bW5JbmRleE9yVGhyb3coVXNlckRpY3Rpb25hcnkuV29yZHMuV09SRCkpOworICAgIH0KKworICAgIHByaXZhdGUgU3RyaW5nIGdldFNob3J0Y3V0KGZpbmFsIGludCBwb3NpdGlvbikgeworICAgICAgICBpZiAoIUlTX1NIT1JUQ1VUX0FQSV9TVVBQT1JURUQpIHJldHVybiBudWxsOworICAgICAgICBpZiAobnVsbCA9PSBtQ3Vyc29yKSByZXR1cm4gbnVsbDsKKyAgICAgICAgbUN1cnNvci5tb3ZlVG9Qb3NpdGlvbihwb3NpdGlvbik7CisgICAgICAgIC8vIEhhbmRsZSBhIHBvc3NpYmxlIHJhY2UtY29uZGl0aW9uCisgICAgICAgIGlmIChtQ3Vyc29yLmlzQWZ0ZXJMYXN0KCkpIHJldHVybiBudWxsOworCisgICAgICAgIHJldHVybiBtQ3Vyc29yLmdldFN0cmluZygKKyAgICAgICAgICAgICAgICBtQ3Vyc29yLmdldENvbHVtbkluZGV4T3JUaHJvdyhVc2VyRGljdGlvbmFyeS5Xb3Jkcy5TSE9SVENVVCkpOworICAgIH0KKworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBkZWxldGVXb3JkKGZpbmFsIFN0cmluZyB3b3JkLCBmaW5hbCBTdHJpbmcgc2hvcnRjdXQsCisgICAgICAgICAgICBmaW5hbCBDb250ZW50UmVzb2x2ZXIgcmVzb2x2ZXIpIHsKKyAgICAgICAgaWYgKCFJU19TSE9SVENVVF9BUElfU1VQUE9SVEVEKSB7CisgICAgICAgICAgICByZXNvbHZlci5kZWxldGUoVXNlckRpY3Rpb25hcnkuV29yZHMuQ09OVEVOVF9VUkksIERFTEVURV9TRUxFQ1RJT05fU0hPUlRDVVRfVU5TVVBQT1JURUQsCisgICAgICAgICAgICAgICAgICAgIG5ldyBTdHJpbmdbXSB7IHdvcmQgfSk7CisgICAgICAgIH0gZWxzZSBpZiAoVGV4dFV0aWxzLmlzRW1wdHkoc2hvcnRjdXQpKSB7CisgICAgICAgICAgICByZXNvbHZlci5kZWxldGUoCisgICAgICAgICAgICAgICAgICAgIFVzZXJEaWN0aW9uYXJ5LldvcmRzLkNPTlRFTlRfVVJJLCBERUxFVEVfU0VMRUNUSU9OX1dJVEhPVVRfU0hPUlRDVVQsCisgICAgICAgICAgICAgICAgICAgIG5ldyBTdHJpbmdbXSB7IHdvcmQgfSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICByZXNvbHZlci5kZWxldGUoCisgICAgICAgICAgICAgICAgICAgIFVzZXJEaWN0aW9uYXJ5LldvcmRzLkNPTlRFTlRfVVJJLCBERUxFVEVfU0VMRUNUSU9OX1dJVEhfU0hPUlRDVVQsCisgICAgICAgICAgICAgICAgICAgIG5ldyBTdHJpbmdbXSB7IHdvcmQsIHNob3J0Y3V0IH0pOworICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgY2xhc3MgTXlBZGFwdGVyIGV4dGVuZHMgU2ltcGxlQ3Vyc29yQWRhcHRlciBpbXBsZW1lbnRzIFNlY3Rpb25JbmRleGVyIHsKKworICAgICAgICBwcml2YXRlIEFscGhhYmV0SW5kZXhlciBtSW5kZXhlcjsKKworICAgICAgICBwcml2YXRlIFZpZXdCaW5kZXIgbVZpZXdCaW5kZXIgPSBuZXcgVmlld0JpbmRlcigpIHsKKworICAgICAgICAgICAgQE92ZXJyaWRlCisgICAgICAgICAgICBwdWJsaWMgYm9vbGVhbiBzZXRWaWV3VmFsdWUoVmlldyB2LCBDdXJzb3IgYywgaW50IGNvbHVtbkluZGV4KSB7CisgICAgICAgICAgICAgICAgaWYgKCFJU19TSE9SVENVVF9BUElfU1VQUE9SVEVEKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIGp1c3QgbGV0IFNpbXBsZUN1cnNvckFkYXB0ZXIgc2V0IHRoZSB2aWV3IHZhbHVlcworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChjb2x1bW5JbmRleCA9PSBJTkRFWF9TSE9SVENVVCkgeworICAgICAgICAgICAgICAgICAgICBmaW5hbCBTdHJpbmcgc2hvcnRjdXQgPSBjLmdldFN0cmluZyhJTkRFWF9TSE9SVENVVCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChUZXh0VXRpbHMuaXNFbXB0eShzaG9ydGN1dCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHYuc2V0VmlzaWJpbGl0eShWaWV3LkdPTkUpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgKChUZXh0Vmlldyl2KS5zZXRUZXh0KHNob3J0Y3V0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHYuc2V0VmlzaWJpbGl0eShWaWV3LlZJU0lCTEUpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIHYuaW52YWxpZGF0ZSgpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgIH07CisKKyAgICAgICAgQFN1cHByZXNzV2FybmluZ3MoImRlcHJlY2F0aW9uIikKKyAgICAgICAgcHVibGljIE15QWRhcHRlcihDb250ZXh0IGNvbnRleHQsIGludCBsYXlvdXQsIEN1cnNvciBjLCBTdHJpbmdbXSBmcm9tLCBpbnRbXSB0bywKKyAgICAgICAgICAgICAgICBVc2VyRGljdGlvbmFyeVNldHRpbmdzIHNldHRpbmdzKSB7CisgICAgICAgICAgICBzdXBlcihjb250ZXh0LCBsYXlvdXQsIGMsIGZyb20sIHRvKTsKKworICAgICAgICAgICAgaWYgKG51bGwgIT0gYykgeworICAgICAgICAgICAgICAgIGZpbmFsIFN0cmluZyBhbHBoYWJldCA9IGNvbnRleHQuZ2V0U3RyaW5nKFIuc3RyaW5nLnVzZXJfZGljdF9mYXN0X3Njcm9sbF9hbHBoYWJldCk7CisgICAgICAgICAgICAgICAgZmluYWwgaW50IHdvcmRDb2xJbmRleCA9IGMuZ2V0Q29sdW1uSW5kZXhPclRocm93KFVzZXJEaWN0aW9uYXJ5LldvcmRzLldPUkQpOworICAgICAgICAgICAgICAgIG1JbmRleGVyID0gbmV3IEFscGhhYmV0SW5kZXhlcihjLCB3b3JkQ29sSW5kZXgsIGFscGhhYmV0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHNldFZpZXdCaW5kZXIobVZpZXdCaW5kZXIpOworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBpbnQgZ2V0UG9zaXRpb25Gb3JTZWN0aW9uKGludCBzZWN0aW9uKSB7CisgICAgICAgICAgICByZXR1cm4gbnVsbCA9PSBtSW5kZXhlciA/IDAgOiBtSW5kZXhlci5nZXRQb3NpdGlvbkZvclNlY3Rpb24oc2VjdGlvbik7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIGludCBnZXRTZWN0aW9uRm9yUG9zaXRpb24oaW50IHBvc2l0aW9uKSB7CisgICAgICAgICAgICByZXR1cm4gbnVsbCA9PSBtSW5kZXhlciA/IDAgOiBtSW5kZXhlci5nZXRTZWN0aW9uRm9yUG9zaXRpb24ocG9zaXRpb24pOworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBPYmplY3RbXSBnZXRTZWN0aW9ucygpIHsKKyAgICAgICAgICAgIHJldHVybiBudWxsID09IG1JbmRleGVyID8gbnVsbCA6IG1JbmRleGVyLmdldFNlY3Rpb25zKCk7CisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9yZXNlYXJjaC9GZWVkYmFja0ZyYWdtZW50LmphdmEgYi9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9yZXNlYXJjaC9GZWVkYmFja0ZyYWdtZW50LmphdmEKaW5kZXggMzlmOWM4Ny4uYTA3MzgyOSAxMDA2NDQKLS0tIGEvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvcmVzZWFyY2gvRmVlZGJhY2tGcmFnbWVudC5qYXZhCisrKyBiL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL3Jlc2VhcmNoL0ZlZWRiYWNrRnJhZ21lbnQuamF2YQpAQCAtNjUsMTIgKzY1LDEwIEBACiAgICAgICAgIG1DYW5jZWxCdXR0b24uc2V0T25DbGlja0xpc3RlbmVyKHRoaXMpOwogCiAgICAgICAgIGlmIChzYXZlZEluc3RhbmNlU3RhdGUgIT0gbnVsbCkgewotICAgICAgICAgICAgTG9nLmQoVEFHLCAicmVzdG9yaW5nIGZyb20gc2F2ZWRJbnN0YW5jZVN0YXRlIik7CiAgICAgICAgICAgICByZXN0b3JlU3RhdGUoc2F2ZWRJbnN0YW5jZVN0YXRlKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGZpbmFsIEJ1bmRsZSBidW5kbGUgPSBnZXRBY3Rpdml0eSgpLmdldEludGVudCgpLmdldEV4dHJhcygpOwogICAgICAgICAgICAgaWYgKGJ1bmRsZSAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgTG9nLmQoVEFHLCAicmVzdG9yaW5nIGZyb20gZ2V0QXJndW1lbnRzKCkiKTsKICAgICAgICAgICAgICAgICByZXN0b3JlU3RhdGUoYnVuZGxlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtODEsMTAgKzc5LDcgQEAKICAgICBwdWJsaWMgdm9pZCBvbkNsaWNrKGZpbmFsIFZpZXcgdmlldykgewogICAgICAgICBmaW5hbCBSZXNlYXJjaExvZ2dlciByZXNlYXJjaExvZ2dlciA9IFJlc2VhcmNoTG9nZ2VyLmdldEluc3RhbmNlKCk7CiAgICAgICAgIGlmICh2aWV3ID09IG1JbmNsdWRpbmdVc2VyUmVjb3JkaW5nQ2hlY2tCb3gpIHsKLSAgICAgICAgICAgIGlmIChoYXNVc2VyUmVjb3JkaW5nKCkpIHsKLSAgICAgICAgICAgICAgICAvLyBSZW1vdmUgdGhlIHJlY29yZGluZwotICAgICAgICAgICAgICAgIHNldEhhc1VzZXJSZWNvcmRpbmcoZmFsc2UpOwotICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmIChtSW5jbHVkaW5nVXNlclJlY29yZGluZ0NoZWNrQm94LmlzQ2hlY2tlZCgpKSB7CiAgICAgICAgICAgICAgICAgZmluYWwgQnVuZGxlIGJ1bmRsZSA9IG5ldyBCdW5kbGUoKTsKICAgICAgICAgICAgICAgICBvblNhdmVJbnN0YW5jZVN0YXRlKGJ1bmRsZSk7CiAKQEAgLTEwMyw5ICs5OCw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBSLnN0cmluZy5yZXNlYXJjaF9mZWVkYmFja19lbXB0eV9mZWVkYmFja19lcnJvcl9tZXNzYWdlLAogICAgICAgICAgICAgICAgICAgICAgICAgVG9hc3QuTEVOR1RIX0xPTkcpLnNob3coKTsKICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgZmluYWwgYm9vbGVhbiBpc0luY2x1ZGluZ0FjY291bnROYW1lID0gaXNJbmNsdWRpbmdBY2NvdW50TmFtZSgpOwotICAgICAgICAgICAgICAgIHJlc2VhcmNoTG9nZ2VyLnNlbmRGZWVkYmFjayhmZWVkYmFja0NvbnRlbnRzLAotICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UgLyogaXNJbmNsdWRpbmdIaXN0b3J5ICovLCBpc0luY2x1ZGluZ0FjY291bnROYW1lLCBoYXNVc2VyUmVjb3JkaW5nKCkpOworICAgICAgICAgICAgICAgIGZpbmFsIGJvb2xlYW4gaXNJbmNsdWRpbmdBY2NvdW50TmFtZSA9IG1JbmNsdWRpbmdBY2NvdW50TmFtZUNoZWNrQm94LmlzQ2hlY2tlZCgpOworICAgICAgICAgICAgICAgIHJlc2VhcmNoTG9nZ2VyLnNlbmRGZWVkYmFjayhmZWVkYmFja0NvbnRlbnRzLCBmYWxzZSAvKiBpc0luY2x1ZGluZ0hpc3RvcnkgKi8sCisgICAgICAgICAgICAgICAgICAgICAgICBpc0luY2x1ZGluZ0FjY291bnROYW1lLCBtSW5jbHVkaW5nVXNlclJlY29yZGluZ0NoZWNrQm94LmlzQ2hlY2tlZCgpKTsKICAgICAgICAgICAgICAgICBnZXRBY3Rpdml0eSgpLmZpbmlzaCgpOwogICAgICAgICAgICAgICAgIHJlc2VhcmNoTG9nZ2VyLnNldEZlZWRiYWNrRGlhbG9nQnVuZGxlKG51bGwpOwogICAgICAgICAgICAgICAgIHJlc2VhcmNoTG9nZ2VyLm9uTGVhdmluZ1NlbmRGZWVkYmFja0RpYWxvZygpOwpAQCAtMTI1LDI5ICsxMjAsMTMgQEAKICAgICAgICAgZmluYWwgU3RyaW5nIHNhdmVkRmVlZGJhY2tTdHJpbmcgPSBtRWRpdFRleHQuZ2V0VGV4dCgpLnRvU3RyaW5nKCk7CiAKICAgICAgICAgYnVuZGxlLnB1dFN0cmluZyhLRVlfRkVFREJBQ0tfU1RSSU5HLCBzYXZlZEZlZWRiYWNrU3RyaW5nKTsKLSAgICAgICAgYnVuZGxlLnB1dEJvb2xlYW4oS0VZX0lOQ0xVREVfQUNDT1VOVF9OQU1FLCBpc0luY2x1ZGluZ0FjY291bnROYW1lKCkpOwotICAgICAgICBidW5kbGUucHV0Qm9vbGVhbihLRVlfSEFTX1VTRVJfUkVDT1JESU5HLCBoYXNVc2VyUmVjb3JkaW5nKCkpOworICAgICAgICBidW5kbGUucHV0Qm9vbGVhbihLRVlfSU5DTFVERV9BQ0NPVU5UX05BTUUsIG1JbmNsdWRpbmdBY2NvdW50TmFtZUNoZWNrQm94LmlzQ2hlY2tlZCgpKTsKKyAgICAgICAgYnVuZGxlLnB1dEJvb2xlYW4oS0VZX0hBU19VU0VSX1JFQ09SRElORywgbUluY2x1ZGluZ1VzZXJSZWNvcmRpbmdDaGVja0JveC5pc0NoZWNrZWQoKSk7CiAgICAgfQogCi0gICAgcHVibGljIHZvaWQgcmVzdG9yZVN0YXRlKGZpbmFsIEJ1bmRsZSBidW5kbGUpIHsKKyAgICBwcml2YXRlIHZvaWQgcmVzdG9yZVN0YXRlKGZpbmFsIEJ1bmRsZSBidW5kbGUpIHsKICAgICAgICAgbUVkaXRUZXh0LnNldFRleHQoYnVuZGxlLmdldFN0cmluZyhLRVlfRkVFREJBQ0tfU1RSSU5HKSk7Ci0gICAgICAgIHNldElzSW5jbHVkaW5nQWNjb3VudE5hbWUoYnVuZGxlLmdldEJvb2xlYW4oS0VZX0lOQ0xVREVfQUNDT1VOVF9OQU1FKSk7Ci0gICAgICAgIHNldEhhc1VzZXJSZWNvcmRpbmcoYnVuZGxlLmdldEJvb2xlYW4oS0VZX0hBU19VU0VSX1JFQ09SRElORykpOwotICAgIH0KLQotICAgIHByaXZhdGUgYm9vbGVhbiBoYXNVc2VyUmVjb3JkaW5nKCkgewotICAgICAgICByZXR1cm4gbUluY2x1ZGluZ1VzZXJSZWNvcmRpbmdDaGVja0JveC5pc0NoZWNrZWQoKTsKLSAgICB9Ci0KLSAgICBwcml2YXRlIHZvaWQgc2V0SGFzVXNlclJlY29yZGluZyhmaW5hbCBib29sZWFuIGhhc1JlY29yZGluZykgewotICAgICAgICBtSW5jbHVkaW5nVXNlclJlY29yZGluZ0NoZWNrQm94LnNldENoZWNrZWQoaGFzUmVjb3JkaW5nKTsKLSAgICB9Ci0KLSAgICBwcml2YXRlIGJvb2xlYW4gaXNJbmNsdWRpbmdBY2NvdW50TmFtZSgpIHsKLSAgICAgICAgcmV0dXJuIG1JbmNsdWRpbmdBY2NvdW50TmFtZUNoZWNrQm94LmlzQ2hlY2tlZCgpOwotICAgIH0KLQotICAgIHByaXZhdGUgdm9pZCBzZXRJc0luY2x1ZGluZ0FjY291bnROYW1lKGZpbmFsIGJvb2xlYW4gaXNJbmNsdWRpbmdBY2NvdW50TmFtZSkgewotICAgICAgICBtSW5jbHVkaW5nQWNjb3VudE5hbWVDaGVja0JveC5zZXRDaGVja2VkKGlzSW5jbHVkaW5nQWNjb3VudE5hbWUpOworICAgICAgICBtSW5jbHVkaW5nQWNjb3VudE5hbWVDaGVja0JveC5zZXRDaGVja2VkKGJ1bmRsZS5nZXRCb29sZWFuKEtFWV9JTkNMVURFX0FDQ09VTlRfTkFNRSkpOworICAgICAgICBtSW5jbHVkaW5nVXNlclJlY29yZGluZ0NoZWNrQm94LnNldENoZWNrZWQoYnVuZGxlLmdldEJvb2xlYW4oS0VZX0hBU19VU0VSX1JFQ09SRElORykpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL3Jlc2VhcmNoL0ZpeGVkTG9nQnVmZmVyLmphdmEgYi9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9yZXNlYXJjaC9GaXhlZExvZ0J1ZmZlci5qYXZhCmluZGV4IDc4ZGM1OTUuLjQyNDlhZjUgMTAwNjQ0Ci0tLSBhL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL3Jlc2VhcmNoL0ZpeGVkTG9nQnVmZmVyLmphdmEKKysrIGIvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvcmVzZWFyY2gvRml4ZWRMb2dCdWZmZXIuamF2YQpAQCAtNTEsMzggKzUxLDM1IEBACiAgICAgICAgIG1OdW1BY3R1YWxXb3JkcyA9IDA7CiAgICAgfQogCi0gICAgcHJvdGVjdGVkIGludCBnZXROdW1BY3R1YWxXb3JkcygpIHsKLSAgICAgICAgcmV0dXJuIG1OdW1BY3R1YWxXb3JkczsKLSAgICB9Ci0KICAgICAvKioKICAgICAgKiBBZGRzIGEgbmV3IExvZ1VuaXQgdG8gdGhlIGZyb250IG9mIHRoZSBMSUZPIHF1ZXVlLCBldmljdGluZyBleGlzdGluZyBMb2dVbml0J3MKICAgICAgKiAob2xkZXN0IGZpcnN0KSBpZiB3b3JkIGNhcGFjaXR5IGlzIHJlYWNoZWQuCiAgICAgICovCiAgICAgQE92ZXJyaWRlCiAgICAgcHVibGljIHZvaWQgc2hpZnRJbihmaW5hbCBMb2dVbml0IG5ld0xvZ1VuaXQpIHsKLSAgICAgICAgaWYgKCFuZXdMb2dVbml0Lmhhc1dvcmQoKSkgewotICAgICAgICAgICAgLy8gVGhpcyBMb2dVbml0IGlzbid0IGEgd29yZCwgc28gaXQgZG9lc24ndCBjb3VudCB0b3dhcmQgdGhlIHdvcmQtbGltaXQuCisgICAgICAgIGlmICghbmV3TG9nVW5pdC5oYXNPbmVPck1vcmVXb3JkcygpKSB7CisgICAgICAgICAgICAvLyBUaGlzIExvZ1VuaXQgZG9lc24ndCBjb250YWluIGFueSB3b3JkLCBzbyBpdCBkb2Vzbid0IGNvdW50IHRvd2FyZCB0aGUgd29yZC1saW1pdC4KICAgICAgICAgICAgIHN1cGVyLnNoaWZ0SW4obmV3TG9nVW5pdCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KKyAgICAgICAgZmluYWwgaW50IG51bVdvcmRzSW5jb21pbmcgPSBuZXdMb2dVbml0LmdldE51bVdvcmRzKCk7CiAgICAgICAgIGlmIChtTnVtQWN0dWFsV29yZHMgPj0gbVdvcmRDYXBhY2l0eSkgewogICAgICAgICAgICAgLy8gR2l2ZSBzdWJjbGFzcyBhIGNoYW5jZSB0byBoYW5kbGUgdGhlIGJ1ZmZlciBmdWxsIGNvbmRpdGlvbiBieSBzaGlmdGluZyBvdXQgbG9nVW5pdHMuCiAgICAgICAgICAgICBvbkJ1ZmZlckZ1bGwoKTsKICAgICAgICAgICAgIC8vIElmIHN0aWxsIGZ1bGwsIGV2aWN0LgogICAgICAgICAgICAgaWYgKG1OdW1BY3R1YWxXb3JkcyA+PSBtV29yZENhcGFjaXR5KSB7Ci0gICAgICAgICAgICAgICAgc2hpZnRPdXRXb3JkcygxKTsKKyAgICAgICAgICAgICAgICBzaGlmdE91dFdvcmRzKG51bVdvcmRzSW5jb21pbmcpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIHN1cGVyLnNoaWZ0SW4obmV3TG9nVW5pdCk7Ci0gICAgICAgIG1OdW1BY3R1YWxXb3JkcysrOyAvLyBNdXN0IGJlIGEgd29yZCwgb3Igd2Ugd291bGRuJ3QgYmUgaGVyZS4KKyAgICAgICAgbU51bUFjdHVhbFdvcmRzICs9IG51bVdvcmRzSW5jb21pbmc7CiAgICAgfQogCiAgICAgQE92ZXJyaWRlCiAgICAgcHVibGljIExvZ1VuaXQgdW5zaGlmdEluKCkgewogICAgICAgICBmaW5hbCBMb2dVbml0IGxvZ1VuaXQgPSBzdXBlci51bnNoaWZ0SW4oKTsKLSAgICAgICAgaWYgKGxvZ1VuaXQgIT0gbnVsbCAmJiBsb2dVbml0Lmhhc1dvcmQoKSkgewotICAgICAgICAgICAgbU51bUFjdHVhbFdvcmRzLS07CisgICAgICAgIGlmIChsb2dVbml0ICE9IG51bGwgJiYgbG9nVW5pdC5oYXNPbmVPck1vcmVXb3JkcygpKSB7CisgICAgICAgICAgICBtTnVtQWN0dWFsV29yZHMgLT0gbG9nVW5pdC5nZXROdW1Xb3JkcygpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBsb2dVbml0OwogICAgIH0KQEAgLTExMywxOCArMTEwLDMwIEBACiAgICAgQE92ZXJyaWRlCiAgICAgcHVibGljIExvZ1VuaXQgc2hpZnRPdXQoKSB7CiAgICAgICAgIGZpbmFsIExvZ1VuaXQgbG9nVW5pdCA9IHN1cGVyLnNoaWZ0T3V0KCk7Ci0gICAgICAgIGlmIChsb2dVbml0ICE9IG51bGwgJiYgbG9nVW5pdC5oYXNXb3JkKCkpIHsKLSAgICAgICAgICAgIG1OdW1BY3R1YWxXb3Jkcy0tOworICAgICAgICBpZiAobG9nVW5pdCAhPSBudWxsICYmIGxvZ1VuaXQuaGFzT25lT3JNb3JlV29yZHMoKSkgeworICAgICAgICAgICAgbU51bUFjdHVhbFdvcmRzIC09IGxvZ1VuaXQuZ2V0TnVtV29yZHMoKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gbG9nVW5pdDsKICAgICB9CiAKLSAgICBwcm90ZWN0ZWQgdm9pZCBzaGlmdE91dFdvcmRzKGZpbmFsIGludCBudW1Xb3JkcykgewotICAgICAgICBmaW5hbCBpbnQgdGFyZ2V0TnVtV29yZHMgPSBtTnVtQWN0dWFsV29yZHMgLSBudW1Xb3JkczsKLSAgICAgICAgZmluYWwgTGlua2VkTGlzdDxMb2dVbml0PiBsb2dVbml0cyA9IGdldExvZ1VuaXRzKCk7Ci0gICAgICAgIHdoaWxlIChtTnVtQWN0dWFsV29yZHMgPiB0YXJnZXROdW1Xb3JkcyAmJiAhbG9nVW5pdHMuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBzaGlmdE91dCgpOworICAgIC8qKgorICAgICAqIFJlbW92ZSBMb2dVbml0cyBmcm9tIHRoZSBmcm9udCBvZiB0aGUgTG9nQnVmZmVyIHVudGlsIHtAY29kZSBudW1Xb3Jkc30gaGF2ZSBiZWVuIHJlbW92ZWQuCisgICAgICoKKyAgICAgKiBJZiB0aGVyZSBhcmUgbGVzcyB0aGFuIHtAY29kZSBudW1Xb3Jkc30gd29yZC1jb250YWluaW5nIHtAbGluayBMb2dVbml0fXMsIHNoaWZ0cyBvdXQKKyAgICAgKiBhbGwge0Bjb2RlIExvZ1VuaXR9cyBpbiB0aGUgYnVmZmVyLgorICAgICAqCisgICAgICogQHBhcmFtIG51bVdvcmRzIHRoZSBtaW5pbXVtIG51bWJlciBvZiB3b3JkLWNvbnRhaW5pbmcge0BsaW5rIExvZ1VuaXR9cyB0byBzaGlmdCBvdXQKKyAgICAgKiBAcmV0dXJuIHRoZSBudW1iZXIgb2YgYWN0dWFsIHtAY29kZSBMb2dVbml0fXMgc2hpZnRlZCBvdXQKKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgaW50IHNoaWZ0T3V0V29yZHMoZmluYWwgaW50IG51bVdvcmRzKSB7CisgICAgICAgIGludCBudW1Xb3JkQ29udGFpbmluZ0xvZ1VuaXRzU2hpZnRlZE91dCA9IDA7CisgICAgICAgIGZvciAoTG9nVW5pdCBsb2dVbml0ID0gc2hpZnRPdXQoKTsgbG9nVW5pdCAhPSBudWxsCisgICAgICAgICAgICAgICAgJiYgbnVtV29yZENvbnRhaW5pbmdMb2dVbml0c1NoaWZ0ZWRPdXQgPCBudW1Xb3JkczsgbG9nVW5pdCA9IHNoaWZ0T3V0KCkpIHsKKyAgICAgICAgICAgIGlmIChsb2dVbml0Lmhhc09uZU9yTW9yZVdvcmRzKCkpIHsKKyAgICAgICAgICAgICAgICBudW1Xb3JkQ29udGFpbmluZ0xvZ1VuaXRzU2hpZnRlZE91dCArPSBsb2dVbml0LmdldE51bVdvcmRzKCk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG51bVdvcmRDb250YWluaW5nTG9nVW5pdHNTaGlmdGVkT3V0OwogICAgIH0KIAogICAgIHB1YmxpYyB2b2lkIHNoaWZ0T3V0QWxsKCkgewpAQCAtMTM2LDI3ICsxNDUsMzEgQEAKICAgICB9CiAKICAgICAvKioKLSAgICAgKiBSZXR1cm5zIGEgbGlzdCBvZiB7QGxpbmsgTG9nVW5pdH1zIGF0IHRoZSBmcm9udCBvZiB0aGUgYnVmZmVyIHRoYXQgaGF2ZSBhc3NvY2lhdGVkIHdvcmRzLiAgTm8KLSAgICAgKiBtb3JlIHRoYW4ge0Bjb2RlIG59IExvZ1VuaXRzIHdpbGwgaGF2ZSB3b3JkcyBhc3NvY2lhdGVkIHdpdGggdGhlbS4gIElmIHRoZXJlIGFyZSBub3QgZW5vdWdoCi0gICAgICogTG9nVW5pdHMgaW4gdGhlIGJ1ZmZlciB0byBtZWV0IHRoZSB3b3JkIHJlcXVpcmVtZW50LCByZXR1cm5zIHRoZSBhbGwgTG9nVW5pdHMuCisgICAgICogUmV0dXJucyBhIGxpc3Qgb2Yge0BsaW5rIExvZ1VuaXR9cyBhdCB0aGUgZnJvbnQgb2YgdGhlIGJ1ZmZlciB0aGF0IGhhdmUgd29yZHMgYXNzb2NpYXRlZCB3aXRoCisgICAgICogdGhlbS4KKyAgICAgKgorICAgICAqIFRoZXJlIHdpbGwgYmUgbm8gbW9yZSB0aGFuIHtAY29kZSBufSB3b3JkcyBpbiB0aGUgcmV0dXJuZWQgbGlzdC4gIFNvIGlmIDIgd29yZHMgYXJlCisgICAgICogcmVxdWVzdGVkLCBhbmQgdGhlIGZpcnN0IExvZ1VuaXQgaGFzIDMgd29yZHMsIGl0IGlzIG5vdCByZXR1cm5lZC4gIElmIDIgd29yZHMgYXJlIHJlcXVlc3RlZCwKKyAgICAgKiBhbmQgdGhlIGZpcnN0IExvZ1VuaXQgaGFzIG9ubHkgMSB3b3JkLCBhbmQgdGhlIG5leHQgTG9nVW5pdCAyIHdvcmRzLCBvbmx5IHRoZSBmaXJzdCBMb2dVbml0CisgICAgICogaXMgcmV0dXJuZWQuICBJZiB0aGUgZmlyc3QgTG9nVW5pdCBoYXMgbm8gd29yZHMgYXNzb2NpYXRlZCB3aXRoIGl0LCBhbmQgdGhlIHNlY29uZCBMb2dVbml0CisgICAgICogaGFzIHRocmVlIHdvcmRzLCB0aGVuIG9ubHkgdGhlIGZpcnN0IExvZ1VuaXQgKHdoaWNoIGhhcyBubyBhc3NvY2lhdGVkIHdvcmRzKSBpcyByZXR1cm5lZC4gIElmCisgICAgICogdGhlcmUgYXJlIG5vdCBlbm91Z2ggTG9nVW5pdHMgaW4gdGhlIGJ1ZmZlciB0byBtZWV0IHRoZSB3b3JkIHJlcXVpcmVtZW50LCB0aGVuIGFsbCBMb2dVbml0cworICAgICAqIHdpbGwgYmUgcmV0dXJuZWQuCiAgICAgICoKICAgICAgKiBAcGFyYW0gbiBUaGUgbWF4aW11bSBudW1iZXIgb2Yge0BsaW5rIExvZ1VuaXR9cyB3aXRoIHdvcmRzIHRvIHJldHVybi4KICAgICAgKiBAcmV0dXJuIFRoZSBsaXN0IG9mIHRoZSB7QGxpbmsgTG9nVW5pdH1zIGNvbnRhaW5pbmcgdGhlIGZpcnN0IG4gd29yZHMKICAgICAgKi8KICAgICBwdWJsaWMgQXJyYXlMaXN0PExvZ1VuaXQ+IHBlZWtBdEZpcnN0TldvcmRzKGludCBuKSB7CiAgICAgICAgIGZpbmFsIExpbmtlZExpc3Q8TG9nVW5pdD4gbG9nVW5pdHMgPSBnZXRMb2dVbml0cygpOwotICAgICAgICBmaW5hbCBpbnQgbGVuZ3RoID0gbG9nVW5pdHMuc2l6ZSgpOwogICAgICAgICAvLyBBbGxvY2F0ZSBzcGFjZSBmb3IgbioyIGxvZ1VuaXRzLiAgVGhlcmUgd2lsbCBiZSBhdCBsZWFzdCBuLCBvbmUgZm9yIGVhY2ggd29yZCwgYW5kCiAgICAgICAgIC8vIHRoZXJlIG1heSBiZSBhZGRpdGlvbmFsIGZvciBwdW5jdHVhdGlvbiwgYmV0d2Vlbi13b3JkIGNvbW1hbmRzLCBldGMuICBUaGlzIHNob3VsZCBiZQogICAgICAgICAvLyBlbm91Z2ggdGhhdCByZWFsbG9jYXRpb24gd29uJ3QgYmUgbmVjZXNzYXJ5LgotICAgICAgICBmaW5hbCBBcnJheUxpc3Q8TG9nVW5pdD4gbGlzdCA9IG5ldyBBcnJheUxpc3Q8TG9nVW5pdD4obiAqIDIpOwotICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGxlbmd0aCAmJiBuID4gMDsgaSsrKSB7Ci0gICAgICAgICAgICBmaW5hbCBMb2dVbml0IGxvZ1VuaXQgPSBsb2dVbml0cy5nZXQoaSk7Ci0gICAgICAgICAgICBsaXN0LmFkZChsb2dVbml0KTsKLSAgICAgICAgICAgIGlmIChsb2dVbml0Lmhhc1dvcmQoKSkgewotICAgICAgICAgICAgICAgIG4tLTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgZmluYWwgQXJyYXlMaXN0PExvZ1VuaXQ+IHJlc3VsdExpc3QgPSBuZXcgQXJyYXlMaXN0PExvZ1VuaXQ+KG4gKiAyKTsKKyAgICAgICAgZm9yIChmaW5hbCBMb2dVbml0IGxvZ1VuaXQgOiBsb2dVbml0cykgeworICAgICAgICAgICAgbiAtPSBsb2dVbml0LmdldE51bVdvcmRzKCk7CisgICAgICAgICAgICBpZiAobiA8IDApIGJyZWFrOworICAgICAgICAgICAgcmVzdWx0TGlzdC5hZGQobG9nVW5pdCk7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGxpc3Q7CisgICAgICAgIHJldHVybiByZXN1bHRMaXN0OwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL3Jlc2VhcmNoL0xvZ1VuaXQuamF2YSBiL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL3Jlc2VhcmNoL0xvZ1VuaXQuamF2YQppbmRleCAxYzAxNjc1Li40ZDYwYmRhIDEwMDY0NAotLS0gYS9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9yZXNlYXJjaC9Mb2dVbml0LmphdmEKKysrIGIvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvcmVzZWFyY2gvTG9nVW5pdC5qYXZhCkBAIC0yNSwxMCArMjUsMTAgQEAKIGltcG9ydCBjb20uYW5kcm9pZC5pbnB1dG1ldGhvZC5sYXRpbi5TdWdnZXN0ZWRXb3Jkcy5TdWdnZXN0ZWRXb3JkSW5mbzsKIGltcG9ydCBjb20uYW5kcm9pZC5pbnB1dG1ldGhvZC5sYXRpbi5kZWZpbmUuUHJvZHVjdGlvbkZsYWc7CiAKLWltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOwotaW1wb3J0IGphdmEuaW8uU3RyaW5nV3JpdGVyOwogaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7CitpbXBvcnQgamF2YS51dGlsLkFycmF5czsKIGltcG9ydCBqYXZhLnV0aWwuTGlzdDsKK2ltcG9ydCBqYXZhLnV0aWwucmVnZXguUGF0dGVybjsKIAogLyoqCiAgKiBBIGdyb3VwIG9mIGxvZyBzdGF0ZW1lbnRzIHJlbGF0ZWQgdG8gZWFjaCBvdGhlci4KQEAgLTQ5LDI3ICs0OSw0NSBAQAogICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGJvb2xlYW4gREVCVUcgPSBmYWxzZQogICAgICAgICAgICAgJiYgUHJvZHVjdGlvbkZsYWcuVVNFU19ERVZFTE9QTUVOVF9PTkxZX0RJQUdOT1NUSUNTX0RFQlVHOwogCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgUGF0dGVybiBXSElURVNQQUNFX1BBVFRFUk4gPSBQYXR0ZXJuLmNvbXBpbGUoIlxccysiKTsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmdbXSBFTVBUWV9TVFJJTkdfQVJSQVkgPSBuZXcgU3RyaW5nWzBdOworCiAgICAgcHJpdmF0ZSBmaW5hbCBBcnJheUxpc3Q8TG9nU3RhdGVtZW50PiBtTG9nU3RhdGVtZW50TGlzdDsKICAgICBwcml2YXRlIGZpbmFsIEFycmF5TGlzdDxPYmplY3RbXT4gbVZhbHVlc0xpc3Q7CiAgICAgLy8gQXNzdW1lIHRoYXQgbVRpbWVMaXN0IGlzIHNvcnRlZCBpbiBpbmNyZWFzaW5nIG9yZGVyLiAgRG8gbm90IGluc2VydCBudWxsIHZhbHVlcyBpbnRvCiAgICAgLy8gbVRpbWVMaXN0LgogICAgIHByaXZhdGUgZmluYWwgQXJyYXlMaXN0PExvbmc+IG1UaW1lTGlzdDsKLSAgICAvLyBXb3JkIHRoYXQgdGhpcyBMb2dVbml0IGdlbmVyYXRlcy4gIFNob3VsZCBiZSBudWxsIGlmIHRoZSBMb2dVbml0IGRvZXMgbm90IGdlbmVyYXRlIGEgZ2VudWluZQotICAgIC8vIHdvcmQgKGkuZS4gc2VwYXJhdG9ycyBhbG9uZSBkbyBub3QgY291bnQgYXMgYSB3b3JkKS4gIFNob3VsZCBuZXZlciBiZSBlbXB0eS4KLSAgICBwcml2YXRlIFN0cmluZyBtV29yZDsKKyAgICAvLyBXb3JkcyB0aGF0IHRoaXMgTG9nVW5pdCBnZW5lcmF0ZXMuICBTaG91bGQgYmUgbnVsbCBpZiB0aGUgZGF0YSBpbiB0aGUgTG9nVW5pdCBkb2VzIG5vdAorICAgIC8vIGdlbmVyYXRlIGEgZ2VudWluZSB3b3JkIChpLmUuIHNlcGFyYXRvcnMgYWxvbmUgZG8gbm90IGNvdW50IGFzIGEgd29yZCkuICBTaG91bGQgbmV2ZXIgYmUKKyAgICAvLyBlbXB0eS4gIE5vdGUgdGhhdCBpZiB0aGUgdXNlciB0eXBlcyBzcGFjZXMgZXhwbGljaXRseSwgdGhlbiBub3JtYWxseSBtV29yZHMgc2hvdWxkIGNvbnRhaW4KKyAgICAvLyBvbmx5IGEgc2luZ2xlIHdvcmQ7IGl0IHdpbGwgb25seSBjb250YWluIHNwYWNlLXNlcGFyYXRlIG11bHRpcGxlIHdvcmRzIGlmIHRoZSB1c2VyIGRvZXMgbm90CisgICAgLy8gZW50ZXIgYSBzcGFjZSwgYW5kIHRoZSBzeXN0ZW0gZW50ZXJzIG9uZSBhdXRvbWF0aWNhbGx5LgorICAgIHByaXZhdGUgU3RyaW5nIG1Xb3JkczsKKyAgICBwcml2YXRlIFN0cmluZ1tdIG1Xb3JkQXJyYXkgPSBFTVBUWV9TVFJJTkdfQVJSQVk7CiAgICAgcHJpdmF0ZSBib29sZWFuIG1NYXlDb250YWluRGlnaXQ7CiAgICAgcHJpdmF0ZSBib29sZWFuIG1Jc1BhcnRPZk1lZ2F3b3JkOwogICAgIHByaXZhdGUgYm9vbGVhbiBtQ29udGFpbnNDb3JyZWN0aW9uOwogCi0gICAgLy8gbUNvcnJlY3Rpb25UeXBlIGluZGljYXRlcyB3aGV0aGVyIHRoZSB3b3JkIHdhcyBjb3JyZWN0ZWQgYXQgYWxsLCBhbmQgaWYgc28sIHdoZXRoZXIgaXQgd2FzCi0gICAgLy8gdG8gYSBkaWZmZXJlbnQgd29yZCBvciBqdXN0IGEgInR5cG8iIGNvcnJlY3Rpb24uICBJdCBpcyBjb25zaWRlcmVkIGEgInR5cG8iIGlmIHRoZSBmaW5hbAotICAgIC8vIHdvcmQgd2FzIGxpc3RlZCBpbiB0aGUgc3VnZ2VzdGlvbnMgYXZhaWxhYmxlIHRoZSBmaXJzdCB0aW1lIHRoZSB3b3JkIHdhcyBnZXN0dXJlZCBvcgotICAgIC8vIHRhcHBlZC4KKyAgICAvLyBtQ29ycmVjdGlvblR5cGUgaW5kaWNhdGVzIHdoZXRoZXIgdGhlIHdvcmQgd2FzIGNvcnJlY3RlZCBhdCBhbGwsIGFuZCBpZiBzbywgdGhlIG5hdHVyZSBvZiB0aGUKKyAgICAvLyBjb3JyZWN0aW9uLgogICAgIHByaXZhdGUgaW50IG1Db3JyZWN0aW9uVHlwZTsKKyAgICAvLyBMb2dVbml0cyBzdGFydCBpbiB0aGlzIHN0YXRlLiAgSWYgYSB3b3JkIGlzIGVudGVyZWQgd2l0aG91dCBiZWluZyBjb3JyZWN0ZWQsIGl0IHdpbGwgaGF2ZQorICAgIC8vIHRoaXMgQ29ycmVjdGlvbnRUeXBlLgogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IENPUlJFQ1RJT05UWVBFX05PX0NPUlJFQ1RJT04gPSAwOworICAgIC8vIFRoZSBMb2dVbml0IHdhcyBjb3JyZWN0ZWQgbWFudWFsbHkgYnkgdGhlIHVzZXIgaW4gYW4gdW5zcGVjaWZpZWQgd2F5LgogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IENPUlJFQ1RJT05UWVBFX0NPUlJFQ1RJT04gPSAxOworICAgIC8vIFRoZSBMb2dVbml0IHdhcyBjb3JyZWN0ZWQgbWFudWFsbHkgYnkgdGhlIHVzZXIgdG8gYSB3b3JkIG5vdCBpbiB0aGUgbGlzdCBvZiBzdWdnZXN0aW9ucyBvZgorICAgIC8vIHRoZSBmaXJzdCB3b3JkIHR5cGVkIGhlcmUuICAoTm90ZTogdGhpcyBpcyBhIGhldXJpc3RpYyB2YWx1ZSwgaXQgbWF5IGJlIGluY29ycmVjdCwgZm9yCisgICAgLy8gZXhhbXBsZSwgaWYgdGhlIHVzZXIgcmVwb3NpdGlvbnMgdGhlIGN1cnNvcikuCiAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQ09SUkVDVElPTlRZUEVfRElGRkVSRU5UX1dPUkQgPSAyOworICAgIC8vIFRoZSBMb2dVbml0IHdhcyBjb3JyZWN0ZWQgbWFudWFsbHkgYnkgdGhlIHVzZXIgdG8gYSB3b3JkIHRoYXQgd2FzIGluIHRoZSBsaXN0IG9mIHN1Z2dlc3Rpb25zCisgICAgLy8gb2YgdGhlIGZpcnN0IHdvcmQgdHlwZWQgaGVyZS4gIChBZ2FpbiwgYSBoZXVyaXN0aWMpLiAgSXQgaXMgcHJvYmFibHkgYSB0eXBvIGNvcnJlY3Rpb24uCiAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQ09SUkVDVElPTlRZUEVfVFlQTyA9IDM7CisgICAgLy8gVE9ETzogUmF0aGVyIHRoYW4ganVzdCB0cmFja2luZyB0aGUgY3VycmVudCBzdGF0ZSwga2VlcCBhIGhpc3RvcmljYWwgcmVjb3JkIG9mIHRoZSBMb2dVbml0J3MKKyAgICAvLyBzdGF0ZSBhbmQgc3RhdGlzdGljcy4gIFRoaXMgc2hvdWxkIGluY2x1ZGUgaG93IG1hbnkgdGltZXMgaXQgaGFzIGJlZW4gY29ycmVjdGVkLCB3aGV0aGVyCisgICAgLy8gb3RoZXIgTG9nVW5pdCBlZGl0cyB3ZXJlIGRvbmUgYmV0d2VlbiBlZGl0cyB0byB0aGlzIExvZ1VuaXQsIGV0Yy4gIEFsc28gdHJhY2sgd2hlbiBhIExvZ1VuaXQKKyAgICAvLyBwcmV2aW91c2x5IGNvbnRhaW5lZCBhIHdvcmQsIGJ1dCB3YXMgY29ycmVjdGVkIHRvIGVtcHR5IChiZWNhdXNlIGl0IHdhcyBkZWxldGVkLCBhbmQgdGhlcmUgaXMKKyAgICAvLyBubyBrbm93biByZXBsYWNlbWVudCkuCiAKICAgICBwcml2YXRlIFN1Z2dlc3RlZFdvcmRzIG1TdWdnZXN0ZWRXb3JkczsKIApAQCAtMTY2LDcgKzE4NCw3IEBACiAgICAgICAgIGZpbmFsIExvZ1N0YXRlbWVudCBsb2dTdGF0ZW1lbnQ7CiAgICAgICAgIGlmIChjYW5JbmNsdWRlUHJpdmF0ZURhdGEpIHsKICAgICAgICAgICAgIExPR1NUQVRFTUVOVF9MT0dfVU5JVF9CRUdJTl9XSVRIX1BSSVZBVEVfREFUQS5vdXRwdXRUb0xvY2tlZChqc29uV3JpdGVyLAotICAgICAgICAgICAgICAgICAgICBTeXN0ZW1DbG9jay51cHRpbWVNaWxsaXMoKSwgZ2V0V29yZCgpLCBnZXRDb3JyZWN0aW9uVHlwZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgU3lzdGVtQ2xvY2sudXB0aW1lTWlsbGlzKCksIGdldFdvcmRzQXNTdHJpbmcoKSwgZ2V0Q29ycmVjdGlvblR5cGUoKSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBMT0dTVEFURU1FTlRfTE9HX1VOSVRfQkVHSU5fV0lUSE9VVF9QUklWQVRFX0RBVEEub3V0cHV0VG9Mb2NrZWQoanNvbldyaXRlciwKICAgICAgICAgICAgICAgICAgICAgU3lzdGVtQ2xvY2sudXB0aW1lTWlsbGlzKCkpOwpAQCAtMTgxLDIyICsxOTksMjIgQEAKICAgICB9CiAKICAgICAvKioKLSAgICAgKiBNYXJrIHRoZSBjdXJyZW50IGxvZ1VuaXQgYXMgY29udGFpbmluZyBkYXRhIHRvIGdlbmVyYXRlIHtAY29kZSB3b3JkfS4KKyAgICAgKiBNYXJrIHRoZSBjdXJyZW50IGxvZ1VuaXQgYXMgY29udGFpbmluZyBkYXRhIHRvIGdlbmVyYXRlIHtAY29kZSBuZXdXb3Jkc30uCiAgICAgICoKICAgICAgKiBJZiB7QGNvZGUgc2V0V29yZCgpfSB3YXMgcHJldmlvdXNseSBjYWxsZWQgZm9yIHRoaXMgTG9nVW5pdCwgdGhlbiB0aGUgbWV0aG9kIHdpbGwgdHJ5IHRvCiAgICAgICogZGV0ZXJtaW5lIHdoYXQga2luZCBvZiBjb3JyZWN0aW9uIGl0IGlzLCBhbmQgdXBkYXRlIGl0cyBpbnRlcm5hbCBzdGF0ZSBvZiB0aGUgY29ycmVjdGlvblR5cGUKICAgICAgKiBhY2NvcmRpbmdseS4KICAgICAgKgotICAgICAqIEBwYXJhbSB3b3JkIFRoZSB3b3JkIHRoaXMgTG9nVW5pdCBnZW5lcmF0ZXMuICBDYWxsZXIgc2hvdWxkIG5vdCBwYXNzIG51bGwgb3IgdGhlIGVtcHR5CisgICAgICogQHBhcmFtIG5ld1dvcmRzIFRoZSB3b3JkcyB0aGlzIExvZ1VuaXQgZ2VuZXJhdGVzLiAgQ2FsbGVyIHNob3VsZCBub3QgcGFzcyBudWxsIG9yIHRoZSBlbXB0eQogICAgICAqIHN0cmluZy4KICAgICAgKi8KLSAgICBwdWJsaWMgdm9pZCBzZXRXb3JkKGZpbmFsIFN0cmluZyB3b3JkKSB7Ci0gICAgICAgIGlmIChoYXNXb3JkKCkpIHsKKyAgICBwdWJsaWMgdm9pZCBzZXRXb3JkcyhmaW5hbCBTdHJpbmcgbmV3V29yZHMpIHsKKyAgICAgICAgaWYgKGhhc09uZU9yTW9yZVdvcmRzKCkpIHsKICAgICAgICAgICAgIC8vIFRoZSB3b3JkIHdhcyBhbHJlYWR5IHNldCBvbmNlLCBhbmQgaXQgaXMgbm93IGJlaW5nIGNoYW5nZWQuICBTZWUgaWYgdGhlIG5ldyB3b3JkCiAgICAgICAgICAgICAvLyBpcyBjbG9zZSB0byB0aGUgb2xkIHdvcmQuICBJZiBzbywgdGhlbiB0aGUgY2hhbmdlIGlzIHByb2JhYmx5IGEgdHlwbyBjb3JyZWN0aW9uLgogICAgICAgICAgICAgLy8gSWYgbm90LCB0aGUgdXNlciBtYXkgaGF2ZSBkZWNpZGVkIHRvIGVudGVyIGEgZGlmZmVyZW50IHdvcmQsIHNvIGZsYWcgaXQuCiAgICAgICAgICAgICBpZiAobVN1Z2dlc3RlZFdvcmRzICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICBpZiAoaXNJblN1Z2dlc3RlZFdvcmRzKHdvcmQsIG1TdWdnZXN0ZWRXb3JkcykpIHsKKyAgICAgICAgICAgICAgICBpZiAoaXNJblN1Z2dlc3RlZFdvcmRzKG5ld1dvcmRzLCBtU3VnZ2VzdGVkV29yZHMpKSB7CiAgICAgICAgICAgICAgICAgICAgIG1Db3JyZWN0aW9uVHlwZSA9IENPUlJFQ1RJT05UWVBFX1RZUE87CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgbUNvcnJlY3Rpb25UeXBlID0gQ09SUkVDVElPTlRZUEVfRElGRkVSRU5UX1dPUkQ7CkBAIC0yMDYsMzggKzIyNCw3MSBAQAogICAgICAgICAgICAgICAgIC8vIE1hcmsgaXQgYXMgYSBnZW5lcmljIGNvcnJlY3Rpb24uCiAgICAgICAgICAgICAgICAgbUNvcnJlY3Rpb25UeXBlID0gQ09SUkVDVElPTlRZUEVfQ09SUkVDVElPTjsKICAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1Db3JyZWN0aW9uVHlwZSA9IENPUlJFQ1RJT05UWVBFX05PX0NPUlJFQ1RJT047CiAgICAgICAgIH0KLSAgICAgICAgbVdvcmQgPSB3b3JkOworICAgICAgICBtV29yZHMgPSBuZXdXb3JkczsKKworICAgICAgICAvLyBVcGRhdGUgbVdvcmRBcnJheQorICAgICAgICBtV29yZEFycmF5ID0gKFRleHRVdGlscy5pc0VtcHR5KG1Xb3JkcykpID8gRU1QVFlfU1RSSU5HX0FSUkFZCisgICAgICAgICAgICAgICAgOiBXSElURVNQQUNFX1BBVFRFUk4uc3BsaXQobVdvcmRzKTsKKyAgICAgICAgaWYgKG1Xb3JkQXJyYXkubGVuZ3RoID4gMCAmJiBUZXh0VXRpbHMuaXNFbXB0eShtV29yZEFycmF5WzBdKSkgeworICAgICAgICAgICAgLy8gRW1wdHkgc3RyaW5nIGF0IGJlZ2lubmluZyBvZiBhcnJheS4gIE11c3QgaGF2ZSBiZWVuIHdoaXRlc3BhY2UgYXQgdGhlIHN0YXJ0IG9mIHRoZQorICAgICAgICAgICAgLy8gd29yZC4gIFJlbW92ZSB0aGUgZW1wdHkgc3RyaW5nLgorICAgICAgICAgICAgbVdvcmRBcnJheSA9IEFycmF5cy5jb3B5T2ZSYW5nZShtV29yZEFycmF5LCAxLCBtV29yZEFycmF5Lmxlbmd0aCk7CisgICAgICAgIH0KICAgICB9CiAKLSAgICBwdWJsaWMgU3RyaW5nIGdldFdvcmQoKSB7Ci0gICAgICAgIHJldHVybiBtV29yZDsKKyAgICBwdWJsaWMgU3RyaW5nIGdldFdvcmRzQXNTdHJpbmcoKSB7CisgICAgICAgIHJldHVybiBtV29yZHM7CiAgICAgfQogCi0gICAgcHVibGljIGJvb2xlYW4gaGFzV29yZCgpIHsKLSAgICAgICAgcmV0dXJuIG1Xb3JkICE9IG51bGwgJiYgIVRleHRVdGlscy5pc0VtcHR5KG1Xb3JkLnRyaW0oKSk7CisgICAgLyoqCisgICAgICogUmV0dW5zIHRoZSB3b3JkcyBnZW5lcmF0ZWQgYnkgdGhlIGRhdGEgaW4gdGhpcyBMb2dVbml0LgorICAgICAqCisgICAgICogVGhlIGZpcnN0IHdvcmQgbWF5IGJlIGFuIGVtcHR5IHN0cmluZywgaWYgdGhlIGRhdGEgaW4gdGhlIExvZ1VuaXQgc3RhcnRlZCBieSBnZW5lcmF0aW5nCisgICAgICogd2hpdGVzcGFjZS4KKyAgICAgKgorICAgICAqIEByZXR1cm4gdGhlIGFycmF5IG9mIHdvcmRzLiBhbiBlbXB0eSBsaXN0IG9mIHRoZXJlIGFyZSBubyB3b3JkcyBhc3NvY2lhdGVkIHdpdGggdGhpcyBMb2dVbml0LgorICAgICAqLworICAgIHB1YmxpYyBTdHJpbmdbXSBnZXRXb3Jkc0FzU3RyaW5nQXJyYXkoKSB7CisgICAgICAgIHJldHVybiBtV29yZEFycmF5OwogICAgIH0KIAorICAgIHB1YmxpYyBib29sZWFuIGhhc09uZU9yTW9yZVdvcmRzKCkgeworICAgICAgICByZXR1cm4gbVdvcmRBcnJheS5sZW5ndGggPj0gMTsKKyAgICB9CisKKyAgICBwdWJsaWMgaW50IGdldE51bVdvcmRzKCkgeworICAgICAgICByZXR1cm4gbVdvcmRBcnJheS5sZW5ndGg7CisgICAgfQorCisgICAgLy8gVE9ETzogUmVmYWN0b3IgdG8gZWxpbWluYXRlIGdldHRlci9zZXR0ZXJzCiAgICAgcHVibGljIHZvaWQgc2V0TWF5Q29udGFpbkRpZ2l0KCkgewogICAgICAgICBtTWF5Q29udGFpbkRpZ2l0ID0gdHJ1ZTsKICAgICB9CiAKKyAgICAvLyBUT0RPOiBSZWZhY3RvciB0byBlbGltaW5hdGUgZ2V0dGVyL3NldHRlcnMKICAgICBwdWJsaWMgYm9vbGVhbiBtYXlDb250YWluRGlnaXQoKSB7CiAgICAgICAgIHJldHVybiBtTWF5Q29udGFpbkRpZ2l0OwogICAgIH0KIAorICAgIC8vIFRPRE86IFJlZmFjdG9yIHRvIGVsaW1pbmF0ZSBnZXR0ZXIvc2V0dGVycwogICAgIHB1YmxpYyB2b2lkIHNldENvbnRhaW5zQ29ycmVjdGlvbigpIHsKICAgICAgICAgbUNvbnRhaW5zQ29ycmVjdGlvbiA9IHRydWU7CiAgICAgfQogCisgICAgLy8gVE9ETzogUmVmYWN0b3IgdG8gZWxpbWluYXRlIGdldHRlci9zZXR0ZXJzCiAgICAgcHVibGljIGJvb2xlYW4gY29udGFpbnNDb3JyZWN0aW9uKCkgewogICAgICAgICByZXR1cm4gbUNvbnRhaW5zQ29ycmVjdGlvbjsKICAgICB9CiAKKyAgICAvLyBUT0RPOiBSZWZhY3RvciB0byBlbGltaW5hdGUgZ2V0dGVyL3NldHRlcnMKICAgICBwdWJsaWMgdm9pZCBzZXRDb3JyZWN0aW9uVHlwZShmaW5hbCBpbnQgY29ycmVjdGlvblR5cGUpIHsKICAgICAgICAgbUNvcnJlY3Rpb25UeXBlID0gY29ycmVjdGlvblR5cGU7CiAgICAgfQogCisgICAgLy8gVE9ETzogUmVmYWN0b3IgdG8gZWxpbWluYXRlIGdldHRlci9zZXR0ZXJzCiAgICAgcHVibGljIGludCBnZXRDb3JyZWN0aW9uVHlwZSgpIHsKICAgICAgICAgcmV0dXJuIG1Db3JyZWN0aW9uVHlwZTsKICAgICB9CkBAIC0yNjcsNyArMzE4LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBBcnJheUxpc3Q8T2JqZWN0W10+KGxhdGVyVmFsdWVzKSwKICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBBcnJheUxpc3Q8TG9uZz4obGF0ZXJUaW1lcyksCiAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlIC8qIGlzUGFydE9mTWVnYXdvcmQgKi8pOwotICAgICAgICAgICAgICAgIG5ld0xvZ1VuaXQubVdvcmQgPSBudWxsOworICAgICAgICAgICAgICAgIG5ld0xvZ1VuaXQubVdvcmRzID0gbnVsbDsKICAgICAgICAgICAgICAgICBuZXdMb2dVbml0Lm1NYXlDb250YWluRGlnaXQgPSBtTWF5Q29udGFpbkRpZ2l0OwogICAgICAgICAgICAgICAgIG5ld0xvZ1VuaXQubUNvbnRhaW5zQ29ycmVjdGlvbiA9IG1Db250YWluc0NvcnJlY3Rpb247CiAKQEAgLTI4Nyw5ICszMzgsOSBAQAogICAgICAgICBtTG9nU3RhdGVtZW50TGlzdC5hZGRBbGwobG9nVW5pdC5tTG9nU3RhdGVtZW50TGlzdCk7CiAgICAgICAgIG1WYWx1ZXNMaXN0LmFkZEFsbChsb2dVbml0Lm1WYWx1ZXNMaXN0KTsKICAgICAgICAgbVRpbWVMaXN0LmFkZEFsbChsb2dVbml0Lm1UaW1lTGlzdCk7Ci0gICAgICAgIG1Xb3JkID0gbnVsbDsKLSAgICAgICAgaWYgKGxvZ1VuaXQubVdvcmQgIT0gbnVsbCkgewotICAgICAgICAgICAgc2V0V29yZChsb2dVbml0Lm1Xb3JkKTsKKyAgICAgICAgbVdvcmRzID0gbnVsbDsKKyAgICAgICAgaWYgKGxvZ1VuaXQubVdvcmRzICE9IG51bGwpIHsKKyAgICAgICAgICAgIHNldFdvcmRzKGxvZ1VuaXQubVdvcmRzKTsKICAgICAgICAgfQogICAgICAgICBtTWF5Q29udGFpbkRpZ2l0ID0gbU1heUNvbnRhaW5EaWdpdCB8fCBsb2dVbml0Lm1NYXlDb250YWluRGlnaXQ7CiAgICAgICAgIG1Db250YWluc0NvcnJlY3Rpb24gPSBtQ29udGFpbnNDb3JyZWN0aW9uIHx8IGxvZ1VuaXQubUNvbnRhaW5zQ29ycmVjdGlvbjsKZGlmZiAtLWdpdCBhL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL3Jlc2VhcmNoL01haW5Mb2dCdWZmZXIuamF2YSBiL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL3Jlc2VhcmNoL01haW5Mb2dCdWZmZXIuamF2YQppbmRleCAzMzAzZDJiLi40MmVmNWQzIDEwMDY0NAotLS0gYS9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9yZXNlYXJjaC9NYWluTG9nQnVmZmVyLmphdmEKKysrIGIvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvcmVzZWFyY2gvTWFpbkxvZ0J1ZmZlci5qYXZhCkBAIC0yNSw3ICsyNSw2IEBACiAKIGltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OwogaW1wb3J0IGphdmEudXRpbC5MaW5rZWRMaXN0OwotaW1wb3J0IGphdmEudXRpbC5SYW5kb207CiAKIC8qKgogICogTWFpbkxvZ0J1ZmZlciBpcyBhIEZpeGVkTG9nQnVmZmVyIHRoYXQgdHJhY2tzIHRoZSBzdGF0ZSBvZiBMb2dVbml0cyB0byBtYWtlIHByaXZhY3kgZ3VhcmFudGVlcy4KQEAgLTEwMCwxMCArOTksNiBAQAogICAgICAgICByZXR1cm4gbVN1Z2dlc3QuZ2V0TWFpbkRpY3Rpb25hcnkoKTsKICAgICB9CiAKLSAgICBwdWJsaWMgdm9pZCByZXNldFdvcmRDb3VudGVyKCkgewotICAgICAgICBtTnVtV29yZHNVbnRpbFNhZmVUb1NhbXBsZSA9IG1OdW1Xb3Jkc0JldHdlZW5OR3JhbXM7Ci0gICAgfQotCiAgICAgcHVibGljIHZvaWQgc2V0SXNTdG9wcGluZygpIHsKICAgICAgICAgbUlzU3RvcHBpbmcgPSB0cnVlOwogICAgIH0KQEAgLTEzMSwxMCArMTI2LDcgQEAKICAgICAgICAgICAgIGZpbmFsIGludCBsZW5ndGggPSBsb2dVbml0cy5zaXplKCk7CiAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICAgZmluYWwgTG9nVW5pdCBsb2dVbml0ID0gbG9nVW5pdHMuZ2V0KGkpOwotICAgICAgICAgICAgICAgIGZpbmFsIFN0cmluZyB3b3JkID0gbG9nVW5pdC5nZXRXb3JkKCk7Ci0gICAgICAgICAgICAgICAgaWYgKHdvcmQgIT0gbnVsbCkgewotICAgICAgICAgICAgICAgICAgICBudW1Xb3Jkc0luTG9nVW5pdExpc3QrKzsKLSAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgbnVtV29yZHNJbkxvZ1VuaXRMaXN0ICs9IGxvZ1VuaXQuZ2V0TnVtV29yZHMoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybiBudW1Xb3Jkc0luTG9nVW5pdExpc3QgPj0gbWluTkdyYW1TaXplOwogICAgICAgICB9CkBAIC0xNTgsMjkgKzE1MCwzMSBAQAogICAgICAgICAvLyB0aGUgY29tcGxldGUgYnVmZmVyIGNvbnRlbnRzIGluIGRldGFpbC4KICAgICAgICAgaW50IG51bVdvcmRzSW5Mb2dVbml0TGlzdCA9IDA7CiAgICAgICAgIGZpbmFsIGludCBsZW5ndGggPSBsb2dVbml0cy5zaXplKCk7Ci0gICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKLSAgICAgICAgICAgIGZpbmFsIExvZ1VuaXQgbG9nVW5pdCA9IGxvZ1VuaXRzLmdldChpKTsKLSAgICAgICAgICAgIGlmICghbG9nVW5pdC5oYXNXb3JkKCkpIHsKKyAgICAgICAgZm9yIChmaW5hbCBMb2dVbml0IGxvZ1VuaXQgOiBsb2dVbml0cykgeworICAgICAgICAgICAgaWYgKCFsb2dVbml0Lmhhc09uZU9yTW9yZVdvcmRzKCkpIHsKICAgICAgICAgICAgICAgICAvLyBEaWdpdHMgb3V0c2lkZSB3b3JkcyBhcmUgYSBwcml2YWN5IHRocmVhdC4KICAgICAgICAgICAgICAgICBpZiAobG9nVW5pdC5tYXlDb250YWluRGlnaXQoKSkgewogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBudW1Xb3Jkc0luTG9nVW5pdExpc3QrKzsKLSAgICAgICAgICAgICAgICBmaW5hbCBTdHJpbmcgd29yZCA9IGxvZ1VuaXQuZ2V0V29yZCgpOwotICAgICAgICAgICAgICAgIC8vIFdvcmRzIG5vdCBpbiB0aGUgZGljdGlvbmFyeSBhcmUgYSBwcml2YWN5IHRocmVhdC4KLSAgICAgICAgICAgICAgICBpZiAoUmVzZWFyY2hMb2dnZXIuaGFzTGV0dGVycyh3b3JkKSAmJiAhKGRpY3Rpb25hcnkuaXNWYWxpZFdvcmQod29yZCkpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChERUJVRykgewotICAgICAgICAgICAgICAgICAgICAgICAgTG9nLmQoVEFHLCAiTk9UIFNBRkUhOiBoYXNMZXR0ZXJzOiAiICsgUmVzZWFyY2hMb2dnZXIuaGFzTGV0dGVycyh3b3JkKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArICIsIGlzVmFsaWQ6ICIgKyAoZGljdGlvbmFyeS5pc1ZhbGlkV29yZCh3b3JkKSkpOworICAgICAgICAgICAgICAgIG51bVdvcmRzSW5Mb2dVbml0TGlzdCArPSBsb2dVbml0LmdldE51bVdvcmRzKCk7CisgICAgICAgICAgICAgICAgZmluYWwgU3RyaW5nW10gd29yZHMgPSBsb2dVbml0LmdldFdvcmRzQXNTdHJpbmdBcnJheSgpOworICAgICAgICAgICAgICAgIGZvciAoZmluYWwgU3RyaW5nIHdvcmQgOiB3b3JkcykgeworICAgICAgICAgICAgICAgICAgICAvLyBXb3JkcyBub3QgaW4gdGhlIGRpY3Rpb25hcnkgYXJlIGEgcHJpdmFjeSB0aHJlYXQuCisgICAgICAgICAgICAgICAgICAgIGlmIChSZXNlYXJjaExvZ2dlci5oYXNMZXR0ZXJzKHdvcmQpICYmICEoZGljdGlvbmFyeS5pc1ZhbGlkV29yZCh3b3JkKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChERUJVRykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvZy5kKFRBRywgIlwiIiArIHdvcmQgKyAiXCIgTk9UIFNBRkUhOiBoYXNMZXR0ZXJzOiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIFJlc2VhcmNoTG9nZ2VyLmhhc0xldHRlcnMod29yZCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIiwgaXNWYWxpZDogIiArIChkaWN0aW9uYXJ5LmlzVmFsaWRXb3JkKHdvcmQpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIC8vIEZpbmFsbHksIG9ubHkgcmV0dXJuIHRydWUgaWYgdGhlIG1pbk5HcmFtU2l6ZSBpcyBtZXQuCi0gICAgICAgIHJldHVybiBudW1Xb3Jkc0luTG9nVW5pdExpc3QgPj0gbWluTkdyYW1TaXplOworICAgICAgICAvLyBGaW5hbGx5LCBvbmx5IHJldHVybiB0cnVlIGlmIHRoZSBuZ3JhbSBpcyB0aGUgcmlnaHQgc2l6ZS4KKyAgICAgICAgcmV0dXJuIG51bVdvcmRzSW5Mb2dVbml0TGlzdCA9PSBtaW5OR3JhbVNpemU7CiAgICAgfQogCiAgICAgcHVibGljIHZvaWQgc2hpZnRBbmRQdWJsaXNoQWxsKCkgewpAQCAtMjAxLDEzICsxOTUsMTYgQEAKICAgICAgICAgICAgIC8vIEdvb2Qgbi1ncmFtIGF0IHRoZSBmcm9udCBvZiB0aGUgYnVmZmVyLiAgUHVibGlzaCBpdCwgZGlzY2xvc2luZyBkZXRhaWxzLgogICAgICAgICAgICAgcHVibGlzaChsb2dVbml0cywgdHJ1ZSAvKiBjYW5JbmNsdWRlUHJpdmF0ZURhdGEgKi8pOwogICAgICAgICAgICAgc2hpZnRPdXRXb3JkcyhOX0dSQU1fU0laRSk7Ci0gICAgICAgICAgICByZXNldFdvcmRDb3VudGVyKCk7CisgICAgICAgICAgICBtTnVtV29yZHNVbnRpbFNhZmVUb1NhbXBsZSA9IG1OdW1Xb3Jkc0JldHdlZW5OR3JhbXM7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAvLyBObyBnb29kIG4tZ3JhbSBhdCBmcm9udCwgYW5kIGJ1ZmZlciBpcyBmdWxsLiAgU2hpZnQgb3V0IHRoZSBmaXJzdCB3b3JkIChvciBpZiB0aGVyZQotICAgICAgICAgICAgLy8gaXMgbm9uZSwgdGhlIGV4aXN0aW5nIGxvZ1VuaXRzKS4KLSAgICAgICAgICAgIGxvZ1VuaXRzID0gcGVla0F0Rmlyc3ROV29yZHMoMSk7CisgICAgICAgICAgICAvLyBObyBnb29kIG4tZ3JhbSBhdCBmcm9udCwgYW5kIGJ1ZmZlciBpcyBmdWxsLiAgU2hpZnQgb3V0IHVwIHRocm91Z2ggdGhlIGZpcnN0IGxvZ1VuaXQKKyAgICAgICAgICAgIC8vIHdpdGggYXNzb2NpYXRlZCB3b3JkcyAob3IgaWYgdGhlcmUgaXMgbm9uZSwgYWxsIHRoZSBleGlzdGluZyBsb2dVbml0cykuCisgICAgICAgICAgICBsb2dVbml0cy5jbGVhcigpOworICAgICAgICAgICAgZm9yIChMb2dVbml0IGxvZ1VuaXQgPSBzaGlmdE91dCgpOyBsb2dVbml0ICE9IG51bGwgJiYgIWxvZ1VuaXQuaGFzT25lT3JNb3JlV29yZHMoKTsKKyAgICAgICAgICAgICAgICAgICAgbG9nVW5pdCA9IHNoaWZ0T3V0KCkpIHsKKyAgICAgICAgICAgICAgICBsb2dVbml0cy5hZGQobG9nVW5pdCk7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBwdWJsaXNoKGxvZ1VuaXRzLCBmYWxzZSAvKiBjYW5JbmNsdWRlUHJpdmF0ZURhdGEgKi8pOwotICAgICAgICAgICAgc2hpZnRPdXRXb3JkcygxKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMjI0LDEzICsyMjEsMTMgQEAKICAgICAgICAgICAgIGZpbmFsIGJvb2xlYW4gY2FuSW5jbHVkZVByaXZhdGVEYXRhKTsKIAogICAgIEBPdmVycmlkZQotICAgIHByb3RlY3RlZCB2b2lkIHNoaWZ0T3V0V29yZHMoZmluYWwgaW50IG51bVdvcmRzKSB7Ci0gICAgICAgIGZpbmFsIGludCBvbGROdW1BY3R1YWxXb3JkcyA9IGdldE51bUFjdHVhbFdvcmRzKCk7Ci0gICAgICAgIHN1cGVyLnNoaWZ0T3V0V29yZHMobnVtV29yZHMpOwotICAgICAgICBmaW5hbCBpbnQgbnVtV29yZHNTaGlmdGVkID0gb2xkTnVtQWN0dWFsV29yZHMgLSBnZXROdW1BY3R1YWxXb3JkcygpOwotICAgICAgICBtTnVtV29yZHNVbnRpbFNhZmVUb1NhbXBsZSAtPSBudW1Xb3Jkc1NoaWZ0ZWQ7CisgICAgcHJvdGVjdGVkIGludCBzaGlmdE91dFdvcmRzKGZpbmFsIGludCBudW1Xb3JkcykgeworICAgICAgICBmaW5hbCBpbnQgbnVtV29yZENvbnRhaW5pbmdMb2dVbml0c1NoaWZ0ZWRPdXQgPSBzdXBlci5zaGlmdE91dFdvcmRzKG51bVdvcmRzKTsKKyAgICAgICAgbU51bVdvcmRzVW50aWxTYWZlVG9TYW1wbGUgPSBNYXRoLm1heCgwLCBtTnVtV29yZHNVbnRpbFNhZmVUb1NhbXBsZQorICAgICAgICAgICAgICAgIC0gbnVtV29yZENvbnRhaW5pbmdMb2dVbml0c1NoaWZ0ZWRPdXQpOwogICAgICAgICBpZiAoREVCVUcpIHsKICAgICAgICAgICAgIExvZy5kKFRBRywgIndvcmRzVW50aWxTYWZlVG9TYW1wbGUgbm93IGF0ICIgKyBtTnVtV29yZHNVbnRpbFNhZmVUb1NhbXBsZSk7CiAgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG51bVdvcmRDb250YWluaW5nTG9nVW5pdHNTaGlmdGVkT3V0OwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL3Jlc2VhcmNoL1Jlc2VhcmNoTG9nLmphdmEgYi9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9yZXNlYXJjaC9SZXNlYXJjaExvZy5qYXZhCmluZGV4IDM1YTQ5MWYuLjE4YmY3YmEgMTAwNjQ0Ci0tLSBhL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL3Jlc2VhcmNoL1Jlc2VhcmNoTG9nLmphdmEKKysrIGIvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvcmVzZWFyY2gvUmVzZWFyY2hMb2cuamF2YQpAQCAtMTA4LDEwICsxMDgsMTQgQEAKICAgICAgICAgICAgIEBPdmVycmlkZQogICAgICAgICAgICAgcHVibGljIE9iamVjdCBjYWxsKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CiAgICAgICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKG1IYXNXcml0dGVuRGF0YSkgewotICAgICAgICAgICAgICAgICAgICAgICAgbUpzb25Xcml0ZXIuZW5kQXJyYXkoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1IYXNXcml0dGVuRGF0YSA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICAvLyBUT0RPOiBUaGlzIGlzIG5lY2Vzc2FyeSB0byBhdm9pZCBhbiBleGNlcHRpb24uICBCZXR0ZXIgd291bGQgYmUgdG8gbm90IGV2ZW4KKyAgICAgICAgICAgICAgICAgICAgLy8gb3BlbiB0aGUgSnNvbldyaXRlciBpZiB0aGUgZmlsZSBpcyBub3QgZXZlbiBvcGVuZWQgdW5sZXNzIHRoZXJlIGlzIHZhbGlkIGRhdGEKKyAgICAgICAgICAgICAgICAgICAgLy8gdG8gd3JpdGUuCisgICAgICAgICAgICAgICAgICAgIGlmICghbUhhc1dyaXR0ZW5EYXRhKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBtSnNvbldyaXRlci5iZWdpbkFycmF5KCk7CiAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgbUpzb25Xcml0ZXIuZW5kQXJyYXkoKTsKKyAgICAgICAgICAgICAgICAgICAgbUhhc1dyaXR0ZW5EYXRhID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgIG1Kc29uV3JpdGVyLmZsdXNoKCk7CiAgICAgICAgICAgICAgICAgICAgIG1Kc29uV3JpdGVyLmNsb3NlKCk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChERUJVRykgewpAQCAtMTU5LDYgKzE2MywxMiBAQAogICAgICAgICAgICAgcHVibGljIE9iamVjdCBjYWxsKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CiAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgaWYgKG1IYXNXcml0dGVuRGF0YSkgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8gVE9ETzogVGhpcyBpcyBuZWNlc3NhcnkgdG8gYXZvaWQgYW4gZXhjZXB0aW9uLiAgQmV0dGVyIHdvdWxkIGJlIHRvIG5vdAorICAgICAgICAgICAgICAgICAgICAgICAgLy8gZXZlbiBvcGVuIHRoZSBKc29uV3JpdGVyIGlmIHRoZSBmaWxlIGlzIG5vdCBldmVuIG9wZW5lZCB1bmxlc3MgdGhlcmUgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIHZhbGlkIGRhdGEgdG8gd3JpdGUuCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW1IYXNXcml0dGVuRGF0YSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1Kc29uV3JpdGVyLmJlZ2luQXJyYXkoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIG1Kc29uV3JpdGVyLmVuZEFycmF5KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBtSnNvbldyaXRlci5jbG9zZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgbUhhc1dyaXR0ZW5EYXRhID0gZmFsc2U7CmRpZmYgLS1naXQgYS9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9yZXNlYXJjaC9SZXNlYXJjaExvZ0RpcmVjdG9yeS5qYXZhIGIvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvcmVzZWFyY2gvUmVzZWFyY2hMb2dEaXJlY3RvcnkuamF2YQppbmRleCAyOTFkZWE1Li5kMTU2MDY4IDEwMDY0NAotLS0gYS9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9yZXNlYXJjaC9SZXNlYXJjaExvZ0RpcmVjdG9yeS5qYXZhCisrKyBiL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL3Jlc2VhcmNoL1Jlc2VhcmNoTG9nRGlyZWN0b3J5LmphdmEKQEAgLTk3LDE1ICs5NywxNyBAQAogICAgICAgICB9CiAgICAgfQogCi0gICAgcHVibGljIEZpbGUgZ2V0TG9nRmlsZVBhdGgoZmluYWwgbG9uZyB0aW1lKSB7Ci0gICAgICAgIHJldHVybiBuZXcgRmlsZShtRmlsZXNEaXIsIGdldFVuaXF1ZUZpbGVuYW1lKExPR19GSUxFTkFNRV9QUkVGSVgsIHRpbWUpKTsKKyAgICBwdWJsaWMgRmlsZSBnZXRMb2dGaWxlUGF0aChmaW5hbCBsb25nIHRpbWUsIGZpbmFsIGxvbmcgbmFub1RpbWUpIHsKKyAgICAgICAgcmV0dXJuIG5ldyBGaWxlKG1GaWxlc0RpciwgZ2V0VW5pcXVlRmlsZW5hbWUoTE9HX0ZJTEVOQU1FX1BSRUZJWCwgdGltZSwgbmFub1RpbWUpKTsKICAgICB9CiAKLSAgICBwdWJsaWMgRmlsZSBnZXRVc2VyUmVjb3JkaW5nRmlsZVBhdGgoZmluYWwgbG9uZyB0aW1lKSB7Ci0gICAgICAgIHJldHVybiBuZXcgRmlsZShtRmlsZXNEaXIsIGdldFVuaXF1ZUZpbGVuYW1lKFVTRVJfUkVDT1JESU5HX0ZJTEVOQU1FX1BSRUZJWCwgdGltZSkpOworICAgIHB1YmxpYyBGaWxlIGdldFVzZXJSZWNvcmRpbmdGaWxlUGF0aChmaW5hbCBsb25nIHRpbWUsIGZpbmFsIGxvbmcgbmFub1RpbWUpIHsKKyAgICAgICAgcmV0dXJuIG5ldyBGaWxlKG1GaWxlc0RpciwgZ2V0VW5pcXVlRmlsZW5hbWUoVVNFUl9SRUNPUkRJTkdfRklMRU5BTUVfUFJFRklYLCB0aW1lLAorICAgICAgICAgICAgICAgIG5hbm9UaW1lKSk7CiAgICAgfQogCi0gICAgcHJpdmF0ZSBzdGF0aWMgU3RyaW5nIGdldFVuaXF1ZUZpbGVuYW1lKGZpbmFsIFN0cmluZyBwcmVmaXgsIGZpbmFsIGxvbmcgdGltZSkgewotICAgICAgICByZXR1cm4gcHJlZml4ICsgIi0iICsgdGltZSArIEZJTEVOQU1FX1NVRkZJWDsKKyAgICBwcml2YXRlIHN0YXRpYyBTdHJpbmcgZ2V0VW5pcXVlRmlsZW5hbWUoZmluYWwgU3RyaW5nIHByZWZpeCwgZmluYWwgbG9uZyB0aW1lLAorICAgICAgICAgICAgZmluYWwgbG9uZyBuYW5vVGltZSkgeworICAgICAgICByZXR1cm4gcHJlZml4ICsgIi0iICsgdGltZSArICItIiArIG5hbm9UaW1lICsgRklMRU5BTUVfU1VGRklYOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL3Jlc2VhcmNoL1Jlc2VhcmNoTG9nZ2VyLmphdmEgYi9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9yZXNlYXJjaC9SZXNlYXJjaExvZ2dlci5qYXZhCmluZGV4IDdhMjNkZGIuLjFmNjg0NWMgMTAwNjQ0Ci0tLSBhL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL3Jlc2VhcmNoL1Jlc2VhcmNoTG9nZ2VyLmphdmEKKysrIGIvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvcmVzZWFyY2gvUmVzZWFyY2hMb2dnZXIuamF2YQpAQCAtMzg5LDcgKzM4OSw3IEBACiAgICAgICAgIH0KICAgICAgICAgaWYgKG1NYWluTG9nQnVmZmVyID09IG51bGwpIHsKICAgICAgICAgICAgIG1NYWluUmVzZWFyY2hMb2cgPSBuZXcgUmVzZWFyY2hMb2cobVJlc2VhcmNoTG9nRGlyZWN0b3J5LmdldExvZ0ZpbGVQYXRoKAotICAgICAgICAgICAgICAgICAgICBTeXN0ZW0uY3VycmVudFRpbWVNaWxsaXMoKSksIG1MYXRpbklNRSk7CisgICAgICAgICAgICAgICAgICAgIFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpLCBTeXN0ZW0ubmFub1RpbWUoKSksIG1MYXRpbklNRSk7CiAgICAgICAgICAgICBmaW5hbCBpbnQgbnVtV29yZHNUb0lnbm9yZSA9IG5ldyBSYW5kb20oKS5uZXh0SW50KE5VTUJFUl9PRl9XT1JEU19CRVRXRUVOX1NBTVBMRVMgKyAxKTsKICAgICAgICAgICAgIG1NYWluTG9nQnVmZmVyID0gbmV3IE1haW5Mb2dCdWZmZXIoTlVNQkVSX09GX1dPUkRTX0JFVFdFRU5fU0FNUExFUywgbnVtV29yZHNUb0lnbm9yZSwKICAgICAgICAgICAgICAgICAgICAgbVN1Z2dlc3QpIHsKQEAgLTM5NywxMyArMzk3LDE0IEBACiAgICAgICAgICAgICAgICAgcHJvdGVjdGVkIHZvaWQgcHVibGlzaChmaW5hbCBBcnJheUxpc3Q8TG9nVW5pdD4gbG9nVW5pdHMsCiAgICAgICAgICAgICAgICAgICAgICAgICBib29sZWFuIGNhbkluY2x1ZGVQcml2YXRlRGF0YSkgewogICAgICAgICAgICAgICAgICAgICBjYW5JbmNsdWRlUHJpdmF0ZURhdGEgfD0gSVNfTE9HR0lOR19FVkVSWVRISU5HOwotICAgICAgICAgICAgICAgICAgICBmaW5hbCBpbnQgbGVuZ3RoID0gbG9nVW5pdHMuc2l6ZSgpOwotICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBmaW5hbCBMb2dVbml0IGxvZ1VuaXQgPSBsb2dVbml0cy5nZXQoaSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBmaW5hbCBTdHJpbmcgd29yZCA9IGxvZ1VuaXQuZ2V0V29yZCgpOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdvcmQgIT0gbnVsbCAmJiB3b3JkLmxlbmd0aCgpID4gMCAmJiBoYXNMZXR0ZXJzKHdvcmQpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nLmQoVEFHLCAib25QdWJsaXNoOiAiICsgd29yZCArICIsIGhjOiAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIGxvZ1VuaXQuY29udGFpbnNDb3JyZWN0aW9uKCkpOworICAgICAgICAgICAgICAgICAgICBmb3IgKGZpbmFsIExvZ1VuaXQgbG9nVW5pdCA6IGxvZ1VuaXRzKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoREVCVUcpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbCBTdHJpbmcgd29yZHNTdHJpbmcgPSBsb2dVbml0LmdldFdvcmRzQXNTdHJpbmcoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBMb2cuZChUQUcsICJvblB1Ymxpc2g6ICciICsgd29yZHNTdHJpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIicsIGhjOiAiICsgbG9nVW5pdC5jb250YWluc0NvcnJlY3Rpb24oKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiLCBjaXBkOiAiICsgY2FuSW5jbHVkZVByaXZhdGVEYXRhKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoZmluYWwgU3RyaW5nIHdvcmQgOiBsb2dVbml0LmdldFdvcmRzQXNTdHJpbmdBcnJheSgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWwgRGljdGlvbmFyeSBkaWN0aW9uYXJ5ID0gZ2V0RGljdGlvbmFyeSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1TdGF0aXN0aWNzLnJlY29yZFdvcmRFbnRlcmVkKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGljdGlvbmFyeSAhPSBudWxsICYmIGRpY3Rpb25hcnkuaXNWYWxpZFdvcmQod29yZCksCkBAIC00MjAsNyArNDIxLDcgQEAKIAogICAgIHByaXZhdGUgdm9pZCByZXNldEZlZWRiYWNrTG9nZ2luZygpIHsKICAgICAgICAgbUZlZWRiYWNrTG9nID0gbmV3IFJlc2VhcmNoTG9nKG1SZXNlYXJjaExvZ0RpcmVjdG9yeS5nZXRMb2dGaWxlUGF0aCgKLSAgICAgICAgICAgICAgICBTeXN0ZW0uY3VycmVudFRpbWVNaWxsaXMoKSksIG1MYXRpbklNRSk7CisgICAgICAgICAgICAgICAgU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCksIFN5c3RlbS5uYW5vVGltZSgpKSwgbUxhdGluSU1FKTsKICAgICAgICAgbUZlZWRiYWNrTG9nQnVmZmVyID0gbmV3IEZpeGVkTG9nQnVmZmVyKEZFRURCQUNLX1dPUkRfQlVGRkVSX1NJWkUpOwogICAgIH0KIApAQCAtNTQ1LDcgKzU0Niw3IEBACiAgICAgICAgICAgICBtVXNlclJlY29yZGluZ0xvZy5ibG9ja2luZ0Fib3J0KFJFU0VBUkNITE9HX0FCT1JUX1RJTUVPVVRfSU5fTVMpOwogICAgICAgICB9CiAgICAgICAgIG1Vc2VyUmVjb3JkaW5nRmlsZSA9IG1SZXNlYXJjaExvZ0RpcmVjdG9yeS5nZXRVc2VyUmVjb3JkaW5nRmlsZVBhdGgoCi0gICAgICAgICAgICAgICAgU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCkpOworICAgICAgICAgICAgICAgIFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpLCBTeXN0ZW0ubmFub1RpbWUoKSk7CiAgICAgICAgIG1Vc2VyUmVjb3JkaW5nTG9nID0gbmV3IFJlc2VhcmNoTG9nKG1Vc2VyUmVjb3JkaW5nRmlsZSwgbUxhdGluSU1FKTsKICAgICAgICAgbVVzZXJSZWNvcmRpbmdMb2dCdWZmZXIgPSBuZXcgTG9nQnVmZmVyKCk7CiAgICAgICAgIHJlc2V0UmVjb3JkaW5nVGltZXIoKTsKQEAgLTgxMyw3ICs4MTQsNyBAQAogICAgICAgICAgICAgICAgIC8vIGVuYWJsZWQuICBUaGUgZG90IGlzIGFjdHVhbGx5IGEgemVyby13aWR0aCwgemVyby1oZWlnaHQgcmVjdGFuZ2xlLCBwbGFjZWQgYXQgdGhlCiAgICAgICAgICAgICAgICAgLy8gbG93ZXItcmlnaHQgY29ybmVyIG9mIHRoZSBjYW52YXMsIHBhaW50ZWQgd2l0aCBhIG5vbi16ZXJvIGJvcmRlciB3aWR0aC4KICAgICAgICAgICAgICAgICBwYWludC5zZXRTdHJva2VXaWR0aCgzKTsKLSAgICAgICAgICAgICAgICBjYW52YXMuZHJhd1JlY3Qod2lkdGgsIGhlaWdodCwgd2lkdGgsIGhlaWdodCwgcGFpbnQpOworICAgICAgICAgICAgICAgIGNhbnZhcy5kcmF3UmVjdCh3aWR0aCAtIDEsIGhlaWdodCAtIDEsIHdpZHRoLCBoZWlnaHQsIHBhaW50KTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHBhaW50LnNldENvbG9yKHNhdmVkQ29sb3IpOwogICAgICAgICAgICAgcGFpbnQuc2V0U3R5bGUoc2F2ZWRTdHlsZSk7CkBAIC04NTIsOCArODUzLDggQEAKIAogICAgIC8qIHBhY2thZ2UgZm9yIHRlc3QgKi8gdm9pZCBjb21taXRDdXJyZW50TG9nVW5pdCgpIHsKICAgICAgICAgaWYgKERFQlVHKSB7Ci0gICAgICAgICAgICBMb2cuZChUQUcsICJjb21taXRDdXJyZW50TG9nVW5pdCIgKyAobUN1cnJlbnRMb2dVbml0Lmhhc1dvcmQoKSA/Ci0gICAgICAgICAgICAgICAgICAgICI6ICIgKyBtQ3VycmVudExvZ1VuaXQuZ2V0V29yZCgpIDogIiIpKTsKKyAgICAgICAgICAgIExvZy5kKFRBRywgImNvbW1pdEN1cnJlbnRMb2dVbml0IiArIChtQ3VycmVudExvZ1VuaXQuaGFzT25lT3JNb3JlV29yZHMoKSA/CisgICAgICAgICAgICAgICAgICAgICI6ICIgKyBtQ3VycmVudExvZ1VuaXQuZ2V0V29yZHNBc1N0cmluZygpIDogIiIpKTsKICAgICAgICAgfQogICAgICAgICBpZiAoIW1DdXJyZW50TG9nVW5pdC5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIGlmIChtTWFpbkxvZ0J1ZmZlciAhPSBudWxsKSB7CkBAIC04OTMsOCArODk0LDggQEAKIAogICAgICAgICAvLyBDaGVjayB0aGF0IGV4cGVjdGVkIHdvcmQgbWF0Y2hlcy4KICAgICAgICAgaWYgKG9sZExvZ1VuaXQgIT0gbnVsbCkgewotICAgICAgICAgICAgZmluYWwgU3RyaW5nIG9sZExvZ1VuaXRXb3JkID0gb2xkTG9nVW5pdC5nZXRXb3JkKCk7Ci0gICAgICAgICAgICBpZiAoIW9sZExvZ1VuaXRXb3JkLmVxdWFscyhleHBlY3RlZFdvcmQpKSB7CisgICAgICAgICAgICBmaW5hbCBTdHJpbmcgb2xkTG9nVW5pdFdvcmRzID0gb2xkTG9nVW5pdC5nZXRXb3Jkc0FzU3RyaW5nKCk7CisgICAgICAgICAgICBpZiAob2xkTG9nVW5pdFdvcmRzICE9IG51bGwgJiYgIW9sZExvZ1VuaXRXb3Jkcy5lcXVhbHMoZXhwZWN0ZWRXb3JkKSkgewogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtOTE2LDcgKzkxNyw4IEBACiAgICAgICAgIGVucXVldWVFdmVudChMT0dTVEFURU1FTlRfVU5DT01NSVRfQ1VSUkVOVF9MT0dVTklUKTsKICAgICAgICAgaWYgKERFQlVHKSB7CiAgICAgICAgICAgICBMb2cuZChUQUcsICJ1bmNvbW1pdEN1cnJlbnRMb2dVbml0IChkdW1wPSIgKyBkdW1wQ3VycmVudExvZ1VuaXQgKyAiKSBiYWNrIHRvICIKLSAgICAgICAgICAgICAgICAgICAgKyAobUN1cnJlbnRMb2dVbml0Lmhhc1dvcmQoKSA/ICI6ICciICsgbUN1cnJlbnRMb2dVbml0LmdldFdvcmQoKSArICInIiA6ICIiKSk7CisgICAgICAgICAgICAgICAgICAgICsgKG1DdXJyZW50TG9nVW5pdC5oYXNPbmVPck1vcmVXb3JkcygpID8gIjogJyIKKyAgICAgICAgICAgICAgICAgICAgICAgICsgbUN1cnJlbnRMb2dVbml0LmdldFdvcmRzQXNTdHJpbmcoKSArICInIiA6ICIiKSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTk1MCw4ICs5NTIsOSBAQAogICAgICAgICB9CiAgICAgICAgIGZvciAoTG9nVW5pdCBsb2dVbml0IDogbG9nVW5pdHMpIHsKICAgICAgICAgICAgIGlmIChERUJVRykgewotICAgICAgICAgICAgICAgIExvZy5kKFRBRywgInB1Ymxpc2hMb2dCdWZmZXI6ICIgKyAobG9nVW5pdC5oYXNXb3JkKCkgPyBsb2dVbml0LmdldFdvcmQoKQotICAgICAgICAgICAgICAgICAgICAgICAgOiAiPHdvcmRsZXNzPiIpICsgIiwgY29ycmVjdGlvbj86ICIgKyBsb2dVbml0LmNvbnRhaW5zQ29ycmVjdGlvbigpKTsKKyAgICAgICAgICAgICAgICBMb2cuZChUQUcsICJwdWJsaXNoTG9nQnVmZmVyOiAiICsgKGxvZ1VuaXQuaGFzT25lT3JNb3JlV29yZHMoKQorICAgICAgICAgICAgICAgICAgICAgICAgPyBsb2dVbml0LmdldFdvcmRzQXNTdHJpbmcoKSA6ICI8d29yZGxlc3M+IikKKyAgICAgICAgICAgICAgICAgICAgICAgICsgIiwgY29ycmVjdGlvbj86ICIgKyBsb2dVbml0LmNvbnRhaW5zQ29ycmVjdGlvbigpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJlc2VhcmNoTG9nLnB1Ymxpc2gobG9nVW5pdCwgY2FuSW5jbHVkZVByaXZhdGVEYXRhKTsKICAgICAgICAgfQpAQCAtOTg2LDcgKzk4OSw3IEBACiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgaWYgKHdvcmQubGVuZ3RoKCkgPiAwICYmIGhhc0xldHRlcnMod29yZCkpIHsKLSAgICAgICAgICAgIG1DdXJyZW50TG9nVW5pdC5zZXRXb3JkKHdvcmQpOworICAgICAgICAgICAgbUN1cnJlbnRMb2dVbml0LnNldFdvcmRzKHdvcmQpOwogICAgICAgICB9CiAgICAgICAgIGZpbmFsIExvZ1VuaXQgbmV3TG9nVW5pdCA9IG1DdXJyZW50TG9nVW5pdC5zcGxpdEJ5VGltZShtYXhUaW1lKTsKICAgICAgICAgZW5xdWV1ZUNvbW1pdFRleHQod29yZCwgaXNCYXRjaE1vZGUpOwpAQCAtMTEwNyw3ICsxMTEwLDcgQEAKICAgICAgICAgICAgIHBhY2thZ2VJbmZvID0gbUxhdGluSU1FLmdldFBhY2thZ2VNYW5hZ2VyKCkuZ2V0UGFja2FnZUluZm8obUxhdGluSU1FLmdldFBhY2thZ2VOYW1lKCksCiAgICAgICAgICAgICAgICAgICAgIDApOwogICAgICAgICAgICAgZmluYWwgU3RyaW5nIHZlcnNpb25OYW1lID0gcGFja2FnZUluZm8udmVyc2lvbk5hbWU7Ci0gICAgICAgICAgICByZXR1cm4gIShkZXZlbG9wZXJCdWlsZFJlZ2V4Lm1hdGNoZXIodmVyc2lvbk5hbWUpLmZpbmQoKSk7CisgICAgICAgICAgICByZXR1cm4gZGV2ZWxvcGVyQnVpbGRSZWdleC5tYXRjaGVyKHZlcnNpb25OYW1lKS5maW5kKCk7CiAgICAgICAgIH0gY2F0Y2ggKGZpbmFsIE5hbWVOb3RGb3VuZEV4Y2VwdGlvbiBlKSB7CiAgICAgICAgICAgICBMb2cuZShUQUcsICJDb3VsZCBub3QgZGV0ZXJtaW5lIHBhY2thZ2UgbmFtZSIsIGUpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTQ3OCw3ICsxNDgxLDcgQEAKICAgICAgICAgfQogICAgICAgICBpZiAob3JpZ2luYWxseVR5cGVkV29yZC5sZW5ndGgoKSA+IDAgJiYgaGFzTGV0dGVycyhvcmlnaW5hbGx5VHlwZWRXb3JkKSkgewogICAgICAgICAgICAgaWYgKGxvZ1VuaXQgIT0gbnVsbCkgewotICAgICAgICAgICAgICAgIGxvZ1VuaXQuc2V0V29yZChvcmlnaW5hbGx5VHlwZWRXb3JkKTsKKyAgICAgICAgICAgICAgICBsb2dVbml0LnNldFdvcmRzKG9yaWdpbmFsbHlUeXBlZFdvcmQpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIHJlc2VhcmNoTG9nZ2VyLmVucXVldWVFdmVudChsb2dVbml0ICE9IG51bGwgPyBsb2dVbml0IDogcmVzZWFyY2hMb2dnZXIubUN1cnJlbnRMb2dVbml0LApAQCAtMTYxNiw3ICsxNjE5LDcgQEAKICAgICAgKiBMb2cgYSBjYWxsIHRvIExhdGluSU1FLmNvbW1pdEN1cnJlbnRBdXRvQ29ycmVjdGlvbigpLgogICAgICAqCiAgICAgICogU3lzdGVtUmVzcG9uc2U6IFRoZSBJTUUgaGFzIGNvbW1pdHRlZCBhbiBhdXRvLWNvcnJlY3Rpb24uICBBbiBhdXRvLWNvcnJlY3Rpb24gY2hhbmdlcyB0aGUgcmF3Ci0gICAgICogdGV4dCBpbnB1dCB0byBhbm90aGVyIHdvcmQgdGhhdCB0aGUgdXNlciBtb3JlIGxpa2VseSBkZXNpcmVkIHRvIHR5cGUuCisgICAgICogdGV4dCBpbnB1dCB0byBhbm90aGVyIHdvcmQgKG9yIHdvcmRzKSB0aGF0IHRoZSB1c2VyIG1vcmUgbGlrZWx5IGRlc2lyZWQgdG8gdHlwZS4KICAgICAgKi8KICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBMb2dTdGF0ZW1lbnQgTE9HU1RBVEVNRU5UX0xBVElOSU1FX0NPTU1JVENVUlJFTlRBVVRPQ09SUkVDVElPTiA9CiAgICAgICAgICAgICBuZXcgTG9nU3RhdGVtZW50KCJMYXRpbklNRUNvbW1pdEN1cnJlbnRBdXRvQ29ycmVjdGlvbiIsIHRydWUsIHRydWUsICJ0eXBlZFdvcmQiLApAQCAtMTgyNiw2ICsxODI5LDkgQEAKICAgICBwdWJsaWMgc3RhdGljIHZvaWQgbGF0aW5JTUVfb25FbmRCYXRjaElucHV0KGZpbmFsIENoYXJTZXF1ZW5jZSBlbnRlcmVkVGV4dCwKICAgICAgICAgICAgIGZpbmFsIGludCBlbnRlcmVkV29yZFBvcywgZmluYWwgU3VnZ2VzdGVkV29yZHMgc3VnZ2VzdGVkV29yZHMpIHsKICAgICAgICAgZmluYWwgUmVzZWFyY2hMb2dnZXIgcmVzZWFyY2hMb2dnZXIgPSBnZXRJbnN0YW5jZSgpOworICAgICAgICBpZiAoIVRleHRVdGlscy5pc0VtcHR5KGVudGVyZWRUZXh0KSAmJiBoYXNMZXR0ZXJzKGVudGVyZWRUZXh0LnRvU3RyaW5nKCkpKSB7CisgICAgICAgICAgICByZXNlYXJjaExvZ2dlci5tQ3VycmVudExvZ1VuaXQuc2V0V29yZHMoZW50ZXJlZFRleHQudG9TdHJpbmcoKSk7CisgICAgICAgIH0KICAgICAgICAgcmVzZWFyY2hMb2dnZXIuZW5xdWV1ZUV2ZW50KExPR1NUQVRFTUVOVF9MQVRJTklNRV9PTkVOREJBVENISU5QVVQsIGVudGVyZWRUZXh0LAogICAgICAgICAgICAgICAgIGVudGVyZWRXb3JkUG9zKTsKICAgICAgICAgcmVzZWFyY2hMb2dnZXIubUN1cnJlbnRMb2dVbml0LmluaXRpYWxpemVTdWdnZXN0aW9ucyhzdWdnZXN0ZWRXb3Jkcyk7CmRpZmYgLS1naXQgYS9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9yZXNlYXJjaC9VcGxvYWRlclNlcnZpY2UuamF2YSBiL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL3Jlc2VhcmNoL1VwbG9hZGVyU2VydmljZS5qYXZhCmluZGV4IDZhOTcxN2IuLmQyZGIzNDkgMTAwNjQ0Ci0tLSBhL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL3Jlc2VhcmNoL1VwbG9hZGVyU2VydmljZS5qYXZhCisrKyBiL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL3Jlc2VhcmNoL1VwbG9hZGVyU2VydmljZS5qYXZhCkBAIC0yMiw2ICsyMiw3IEBACiBpbXBvcnQgYW5kcm9pZC5jb250ZW50LkNvbnRleHQ7CiBpbXBvcnQgYW5kcm9pZC5jb250ZW50LkludGVudDsKIGltcG9ydCBhbmRyb2lkLm9zLkJ1bmRsZTsKK2ltcG9ydCBhbmRyb2lkLm9zLlN5c3RlbUNsb2NrOwogCiBpbXBvcnQgY29tLmFuZHJvaWQuaW5wdXRtZXRob2QubGF0aW4uZGVmaW5lLlByb2R1Y3Rpb25GbGFnOwogCkBAIC03OSwyOCArODAsMTQgQEAKICAgICAgKi8KICAgICBwdWJsaWMgc3RhdGljIHZvaWQgY2FuY2VsQW5kUmVzY2hlZHVsZVVwbG9hZGluZ1NlcnZpY2UoZmluYWwgQ29udGV4dCBjb250ZXh0LAogICAgICAgICAgICAgZmluYWwgYm9vbGVhbiBuZWVkc1Jlc2NoZWR1bGluZykgewotICAgICAgICBmaW5hbCBQZW5kaW5nSW50ZW50IHBlbmRpbmdJbnRlbnQgPSBnZXRQZW5kaW5nSW50ZW50Rm9yU2VydmljZShjb250ZXh0KTsKKyAgICAgICAgZmluYWwgSW50ZW50IGludGVudCA9IG5ldyBJbnRlbnQoY29udGV4dCwgVXBsb2FkZXJTZXJ2aWNlLmNsYXNzKTsKKyAgICAgICAgZmluYWwgUGVuZGluZ0ludGVudCBwZW5kaW5nSW50ZW50ID0gUGVuZGluZ0ludGVudC5nZXRTZXJ2aWNlKGNvbnRleHQsIDAsIGludGVudCwgMCk7CiAgICAgICAgIGZpbmFsIEFsYXJtTWFuYWdlciBhbGFybU1hbmFnZXIgPSAoQWxhcm1NYW5hZ2VyKSBjb250ZXh0LmdldFN5c3RlbVNlcnZpY2UoCiAgICAgICAgICAgICAgICAgQ29udGV4dC5BTEFSTV9TRVJWSUNFKTsKLSAgICAgICAgY2FuY2VsQW55U2NoZWR1bGVkU2VydmljZUFsYXJtKGFsYXJtTWFuYWdlciwgcGVuZGluZ0ludGVudCk7Ci0gICAgICAgIGlmIChuZWVkc1Jlc2NoZWR1bGluZykgewotICAgICAgICAgICAgc2NoZWR1bGVTZXJ2aWNlQWxhcm0oYWxhcm1NYW5hZ2VyLCBwZW5kaW5nSW50ZW50KTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHByaXZhdGUgc3RhdGljIFBlbmRpbmdJbnRlbnQgZ2V0UGVuZGluZ0ludGVudEZvclNlcnZpY2UoZmluYWwgQ29udGV4dCBjb250ZXh0KSB7Ci0gICAgICAgIGZpbmFsIEludGVudCBpbnRlbnQgPSBuZXcgSW50ZW50KGNvbnRleHQsIFVwbG9hZGVyU2VydmljZS5jbGFzcyk7Ci0gICAgICAgIHJldHVybiBQZW5kaW5nSW50ZW50LmdldFNlcnZpY2UoY29udGV4dCwgMCwgaW50ZW50LCAwKTsKLSAgICB9Ci0KLSAgICBwcml2YXRlIHN0YXRpYyB2b2lkIGNhbmNlbEFueVNjaGVkdWxlZFNlcnZpY2VBbGFybShmaW5hbCBBbGFybU1hbmFnZXIgYWxhcm1NYW5hZ2VyLAotICAgICAgICAgICAgZmluYWwgUGVuZGluZ0ludGVudCBwZW5kaW5nSW50ZW50KSB7CiAgICAgICAgIGFsYXJtTWFuYWdlci5jYW5jZWwocGVuZGluZ0ludGVudCk7Ci0gICAgfQotCi0gICAgcHJpdmF0ZSBzdGF0aWMgdm9pZCBzY2hlZHVsZVNlcnZpY2VBbGFybShmaW5hbCBBbGFybU1hbmFnZXIgYWxhcm1NYW5hZ2VyLAotICAgICAgICAgICAgZmluYWwgUGVuZGluZ0ludGVudCBwZW5kaW5nSW50ZW50KSB7Ci0gICAgICAgIGFsYXJtTWFuYWdlci5zZXQoQWxhcm1NYW5hZ2VyLkVMQVBTRURfUkVBTFRJTUVfV0FLRVVQLCBVcGxvYWRlclNlcnZpY2UuUlVOX0lOVEVSVkFMLAotICAgICAgICAgICAgICAgIHBlbmRpbmdJbnRlbnQpOworICAgICAgICBpZiAobmVlZHNSZXNjaGVkdWxpbmcpIHsKKyAgICAgICAgICAgIGFsYXJtTWFuYWdlci5zZXQoQWxhcm1NYW5hZ2VyLkVMQVBTRURfUkVBTFRJTUVfV0FLRVVQLCBTeXN0ZW1DbG9jay5lbGFwc2VkUmVhbHRpbWUoKQorICAgICAgICAgICAgICAgICAgICArIFVwbG9hZGVyU2VydmljZS5SVU5fSU5URVJWQUwsIHBlbmRpbmdJbnRlbnQpOworICAgICAgICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvbmF0aXZlL2puaS9zcmMvYmlncmFtX2RpY3Rpb25hcnkuY3BwIGIvbmF0aXZlL2puaS9zcmMvYmlncmFtX2RpY3Rpb25hcnkuY3BwCmluZGV4IDkyODkwMzguLjkwNTNlNzIgMTAwNjQ0Ci0tLSBhL25hdGl2ZS9qbmkvc3JjL2JpZ3JhbV9kaWN0aW9uYXJ5LmNwcAorKysgYi9uYXRpdmUvam5pL3NyYy9iaWdyYW1fZGljdGlvbmFyeS5jcHAKQEAgLTE4Nyw3ICsxODcsNyBAQAogICAgICAgICAgICAgICAgICZwb3MpOwogICAgICAgICAoKm1hcClbYmlncmFtUG9zXSA9IHByb2JhYmlsaXR5OwogICAgICAgICBzZXRJbkZpbHRlcihmaWx0ZXIsIGJpZ3JhbVBvcyk7Ci0gICAgfSB3aGlsZSAoMCAhPSAoQmluYXJ5Rm9ybWF0OjpGTEFHX0FUVFJJQlVURV9IQVNfTkVYVCAmIGJpZ3JhbUZsYWdzKSk7CisgICAgfSB3aGlsZSAoQmluYXJ5Rm9ybWF0OjpGTEFHX0FUVFJJQlVURV9IQVNfTkVYVCAmIGJpZ3JhbUZsYWdzKTsKIH0KIAogYm9vbCBCaWdyYW1EaWN0aW9uYXJ5OjpjaGVja0ZpcnN0Q2hhcmFjdGVyKGludCAqd29yZCwgaW50ICppbnB1dENvZGVQb2ludHMpIGNvbnN0IHsKZGlmZiAtLWdpdCBhL25hdGl2ZS9qbmkvc3JjL2JpbmFyeV9mb3JtYXQuaCBiL25hdGl2ZS9qbmkvc3JjL2JpbmFyeV9mb3JtYXQuaAppbmRleCAyZDJlMTk1Li4wNmY1MGRjIDEwMDY0NAotLS0gYS9uYXRpdmUvam5pL3NyYy9iaW5hcnlfZm9ybWF0LmgKKysrIGIvbmF0aXZlL2puaS9zcmMvYmluYXJ5X2Zvcm1hdC5oCkBAIC0yMyw2ICsyMyw3IEBACiAKICNpbmNsdWRlICJibG9vbV9maWx0ZXIuaCIKICNpbmNsdWRlICJjaGFyX3V0aWxzLmgiCisjaW5jbHVkZSAiaGFzaF9tYXBfY29tcGF0LmgiCiAKIG5hbWVzcGFjZSBsYXRpbmltZSB7CiAKQEAgLTY2LDYgKzY3LDcgQEAKICAgICBzdGF0aWMgaW50IGRldGVjdEZvcm1hdChjb25zdCB1aW50OF90ICpjb25zdCBkaWN0KTsKICAgICBzdGF0aWMgaW50IGdldEhlYWRlclNpemUoY29uc3QgdWludDhfdCAqY29uc3QgZGljdCk7CiAgICAgc3RhdGljIGludCBnZXRGbGFncyhjb25zdCB1aW50OF90ICpjb25zdCBkaWN0KTsKKyAgICBzdGF0aWMgYm9vbCBoYXNCbGFja2xpc3RlZE9yTm90QVdvcmRGbGFnKGNvbnN0IGludCBmbGFncyk7CiAgICAgc3RhdGljIHZvaWQgcmVhZEhlYWRlclZhbHVlKGNvbnN0IHVpbnQ4X3QgKmNvbnN0IGRpY3QsIGNvbnN0IGNoYXIgKmNvbnN0IGtleSwgaW50ICpvdXRWYWx1ZSwKICAgICAgICAgICAgIGNvbnN0IGludCBvdXRWYWx1ZVNpemUpOwogICAgIHN0YXRpYyBpbnQgcmVhZEhlYWRlclZhbHVlSW50KGNvbnN0IHVpbnQ4X3QgKmNvbnN0IGRpY3QsIGNvbnN0IGNoYXIgKmNvbnN0IGtleSk7CkBAIC05Miw3ICs5NCwxMyBAQAogICAgICAgICAgICAgY29uc3QgaW50IHVuaWdyYW1Qcm9iYWJpbGl0eSwgY29uc3QgaW50IGJpZ3JhbVByb2JhYmlsaXR5KTsKICAgICBzdGF0aWMgaW50IGdldFByb2JhYmlsaXR5KGNvbnN0IGludCBwb3NpdGlvbiwgY29uc3Qgc3RkOjptYXA8aW50LCBpbnQ+ICpiaWdyYW1NYXAsCiAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpiaWdyYW1GaWx0ZXIsIGNvbnN0IGludCB1bmlncmFtUHJvYmFiaWxpdHkpOworICAgIHN0YXRpYyBpbnQgZ2V0QmlncmFtUHJvYmFiaWxpdHlGcm9tSGFzaE1hcChjb25zdCBpbnQgcG9zaXRpb24sCisgICAgICAgICAgICBjb25zdCBoYXNoX21hcF9jb21wYXQ8aW50LCBpbnQ+ICpiaWdyYW1NYXAsIGNvbnN0IGludCB1bmlncmFtUHJvYmFiaWxpdHkpOwogICAgIHN0YXRpYyBmbG9hdCBnZXRNdWx0aVdvcmRDb3N0TXVsdGlwbGllcihjb25zdCB1aW50OF90ICpjb25zdCBkaWN0KTsKKyAgICBzdGF0aWMgdm9pZCBmaWxsQmlncmFtUHJvYmFiaWxpdHlUb0hhc2hNYXAoY29uc3QgdWludDhfdCAqY29uc3Qgcm9vdCwgaW50IHBvc2l0aW9uLAorICAgICAgICAgICAgaGFzaF9tYXBfY29tcGF0PGludCwgaW50PiAqYmlncmFtTWFwKTsKKyAgICBzdGF0aWMgaW50IGdldEJpZ3JhbVByb2JhYmlsaXR5KGNvbnN0IHVpbnQ4X3QgKmNvbnN0IHJvb3QsIGludCBwb3NpdGlvbiwKKyAgICAgICAgICAgIGNvbnN0IGludCBuZXh0UG9zaXRpb24sIGNvbnN0IGludCB1bmlncmFtUHJvYmFiaWxpdHkpOwogCiAgICAgLy8gRmxhZ3MgZm9yIHNwZWNpYWwgcHJvY2Vzc2luZwogICAgIC8vIFRob3NlICptdXN0KiBtYXRjaCB0aGUgZmxhZ3MgaW4gbWFrZWRpY3QgKEJpbmFyeURpY3RJbnB1dE91dHB1dCMqX1BST0NFU1NJTkdfRkxBRykgb3IKQEAgLTEwNCw2ICsxMTIsOCBAQAogCiAgcHJpdmF0ZToKICAgICBESVNBTExPV19JTVBMSUNJVF9DT05TVFJVQ1RPUlMoQmluYXJ5Rm9ybWF0KTsKKyAgICBzdGF0aWMgaW50IGdldEJpZ3JhbUxpc3RQb3NpdGlvbkZvcldvcmRQb3NpdGlvbihjb25zdCB1aW50OF90ICpjb25zdCByb290LCBpbnQgcG9zaXRpb24pOworCiAgICAgc3RhdGljIGNvbnN0IGludCBGTEFHX0dST1VQX0FERFJFU1NfVFlQRV9OT0FERFJFU1MgPSAweDAwOwogICAgIHN0YXRpYyBjb25zdCBpbnQgRkxBR19HUk9VUF9BRERSRVNTX1RZUEVfT05FQllURSA9IDB4NDA7CiAgICAgc3RhdGljIGNvbnN0IGludCBGTEFHX0dST1VQX0FERFJFU1NfVFlQRV9UV09CWVRFUyA9IDB4ODA7CkBAIC0xNjIsNiArMTcyLDEwIEBACiAgICAgfQogfQogCitpbmxpbmUgYm9vbCBCaW5hcnlGb3JtYXQ6Omhhc0JsYWNrbGlzdGVkT3JOb3RBV29yZEZsYWcoY29uc3QgaW50IGZsYWdzKSB7CisgICAgcmV0dXJuIChmbGFncyAmIChGTEFHX0lTX0JMQUNLTElTVEVEIHwgRkxBR19JU19OT1RfQV9XT1JEKSkgIT0gMDsKK30KKwogaW5saW5lIGludCBCaW5hcnlGb3JtYXQ6OmdldEhlYWRlclNpemUoY29uc3QgdWludDhfdCAqY29uc3QgZGljdCkgewogICAgIHN3aXRjaCAoZGV0ZWN0Rm9ybWF0KGRpY3QpKSB7CiAgICAgY2FzZSAxOgpAQCAtNjgyLDUgKzY5Niw2OCBAQAogICAgIH0KICAgICByZXR1cm4gYmFja29mZih1bmlncmFtUHJvYmFiaWxpdHkpOwogfQorCisvLyBUaGlzIHJldHVybnMgYSBwcm9iYWJpbGl0eSBpbiBsb2cgc3BhY2UuCitpbmxpbmUgaW50IEJpbmFyeUZvcm1hdDo6Z2V0QmlncmFtUHJvYmFiaWxpdHlGcm9tSGFzaE1hcChjb25zdCBpbnQgcG9zaXRpb24sCisgICAgICAgIGNvbnN0IGhhc2hfbWFwX2NvbXBhdDxpbnQsIGludD4gKmJpZ3JhbU1hcCwgY29uc3QgaW50IHVuaWdyYW1Qcm9iYWJpbGl0eSkgeworICAgIGlmICghYmlncmFtTWFwKSByZXR1cm4gYmFja29mZih1bmlncmFtUHJvYmFiaWxpdHkpOworICAgIGNvbnN0IGhhc2hfbWFwX2NvbXBhdDxpbnQsIGludD46OmNvbnN0X2l0ZXJhdG9yIGJpZ3JhbVByb2JhYmlsaXR5SXQgPSBiaWdyYW1NYXAtPmZpbmQocG9zaXRpb24pOworICAgIGlmIChiaWdyYW1Qcm9iYWJpbGl0eUl0ICE9IGJpZ3JhbU1hcC0+ZW5kKCkpIHsKKyAgICAgICAgY29uc3QgaW50IGJpZ3JhbVByb2JhYmlsaXR5ID0gYmlncmFtUHJvYmFiaWxpdHlJdC0+c2Vjb25kOworICAgICAgICByZXR1cm4gY29tcHV0ZVByb2JhYmlsaXR5Rm9yQmlncmFtKHVuaWdyYW1Qcm9iYWJpbGl0eSwgYmlncmFtUHJvYmFiaWxpdHkpOworICAgIH0KKyAgICByZXR1cm4gYmFja29mZih1bmlncmFtUHJvYmFiaWxpdHkpOworfQorCitBS19GT1JDRV9JTkxJTkUgdm9pZCBCaW5hcnlGb3JtYXQ6OmZpbGxCaWdyYW1Qcm9iYWJpbGl0eVRvSGFzaE1hcCgKKyAgICAgICAgY29uc3QgdWludDhfdCAqY29uc3Qgcm9vdCwgaW50IHBvc2l0aW9uLCBoYXNoX21hcF9jb21wYXQ8aW50LCBpbnQ+ICpiaWdyYW1NYXApIHsKKyAgICBwb3NpdGlvbiA9IGdldEJpZ3JhbUxpc3RQb3NpdGlvbkZvcldvcmRQb3NpdGlvbihyb290LCBwb3NpdGlvbik7CisgICAgaWYgKDAgPT0gcG9zaXRpb24pIHJldHVybjsKKworICAgIHVpbnQ4X3QgYmlncmFtRmxhZ3M7CisgICAgZG8geworICAgICAgICBiaWdyYW1GbGFncyA9IGdldEZsYWdzQW5kRm9yd2FyZFBvaW50ZXIocm9vdCwgJnBvc2l0aW9uKTsKKyAgICAgICAgY29uc3QgaW50IHByb2JhYmlsaXR5ID0gTUFTS19BVFRSSUJVVEVfUFJPQkFCSUxJVFkgJiBiaWdyYW1GbGFnczsKKyAgICAgICAgY29uc3QgaW50IGJpZ3JhbVBvcyA9IGdldEF0dHJpYnV0ZUFkZHJlc3NBbmRGb3J3YXJkUG9pbnRlcihyb290LCBiaWdyYW1GbGFncywKKyAgICAgICAgICAgICAgICAmcG9zaXRpb24pOworICAgICAgICAoKmJpZ3JhbU1hcClbYmlncmFtUG9zXSA9IHByb2JhYmlsaXR5OworICAgIH0gd2hpbGUgKEZMQUdfQVRUUklCVVRFX0hBU19ORVhUICYgYmlncmFtRmxhZ3MpOworfQorCitBS19GT1JDRV9JTkxJTkUgaW50IEJpbmFyeUZvcm1hdDo6Z2V0QmlncmFtUHJvYmFiaWxpdHkoY29uc3QgdWludDhfdCAqY29uc3Qgcm9vdCwgaW50IHBvc2l0aW9uLAorICAgICAgICBjb25zdCBpbnQgbmV4dFBvc2l0aW9uLCBjb25zdCBpbnQgdW5pZ3JhbVByb2JhYmlsaXR5KSB7CisgICAgcG9zaXRpb24gPSBnZXRCaWdyYW1MaXN0UG9zaXRpb25Gb3JXb3JkUG9zaXRpb24ocm9vdCwgcG9zaXRpb24pOworICAgIGlmICgwID09IHBvc2l0aW9uKSByZXR1cm4gYmFja29mZih1bmlncmFtUHJvYmFiaWxpdHkpOworCisgICAgdWludDhfdCBiaWdyYW1GbGFnczsKKyAgICBkbyB7CisgICAgICAgIGJpZ3JhbUZsYWdzID0gZ2V0RmxhZ3NBbmRGb3J3YXJkUG9pbnRlcihyb290LCAmcG9zaXRpb24pOworICAgICAgICBjb25zdCBpbnQgYmlncmFtUG9zID0gZ2V0QXR0cmlidXRlQWRkcmVzc0FuZEZvcndhcmRQb2ludGVyKAorICAgICAgICAgICAgICAgIHJvb3QsIGJpZ3JhbUZsYWdzLCAmcG9zaXRpb24pOworICAgICAgICBpZiAoYmlncmFtUG9zID09IG5leHRQb3NpdGlvbikgeworICAgICAgICAgICAgY29uc3QgaW50IGJpZ3JhbVByb2JhYmlsaXR5ID0gTUFTS19BVFRSSUJVVEVfUFJPQkFCSUxJVFkgJiBiaWdyYW1GbGFnczsKKyAgICAgICAgICAgIHJldHVybiBjb21wdXRlUHJvYmFiaWxpdHlGb3JCaWdyYW0odW5pZ3JhbVByb2JhYmlsaXR5LCBiaWdyYW1Qcm9iYWJpbGl0eSk7CisgICAgICAgIH0KKyAgICB9IHdoaWxlIChGTEFHX0FUVFJJQlVURV9IQVNfTkVYVCAmIGJpZ3JhbUZsYWdzKTsKKyAgICByZXR1cm4gYmFja29mZih1bmlncmFtUHJvYmFiaWxpdHkpOworfQorCisvLyBSZXR1cm5zIGEgcG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGJpZ3JhbSBsaXN0LgorQUtfRk9SQ0VfSU5MSU5FIGludCBCaW5hcnlGb3JtYXQ6OmdldEJpZ3JhbUxpc3RQb3NpdGlvbkZvcldvcmRQb3NpdGlvbigKKyAgICAgICAgY29uc3QgdWludDhfdCAqY29uc3Qgcm9vdCwgaW50IHBvc2l0aW9uKSB7CisgICAgaWYgKE5PVF9WQUxJRF9XT1JEID09IHBvc2l0aW9uKSByZXR1cm4gMDsKKyAgICBjb25zdCB1aW50OF90IGZsYWdzID0gZ2V0RmxhZ3NBbmRGb3J3YXJkUG9pbnRlcihyb290LCAmcG9zaXRpb24pOworICAgIGlmICghKGZsYWdzICYgRkxBR19IQVNfQklHUkFNUykpIHJldHVybiAwOworICAgIGlmIChmbGFncyAmIEZMQUdfSEFTX01VTFRJUExFX0NIQVJTKSB7CisgICAgICAgIHBvc2l0aW9uID0gc2tpcE90aGVyQ2hhcmFjdGVycyhyb290LCBwb3NpdGlvbik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgZ2V0Q29kZVBvaW50QW5kRm9yd2FyZFBvaW50ZXIocm9vdCwgJnBvc2l0aW9uKTsKKyAgICB9CisgICAgcG9zaXRpb24gPSBza2lwUHJvYmFiaWxpdHkoZmxhZ3MsIHBvc2l0aW9uKTsKKyAgICBwb3NpdGlvbiA9IHNraXBDaGlsZHJlblBvc2l0aW9uKGZsYWdzLCBwb3NpdGlvbik7CisgICAgcG9zaXRpb24gPSBza2lwU2hvcnRjdXRzKHJvb3QsIGZsYWdzLCBwb3NpdGlvbik7CisgICAgcmV0dXJuIHBvc2l0aW9uOworfQorCiB9IC8vIG5hbWVzcGFjZSBsYXRpbmltZQogI2VuZGlmIC8vIExBVElOSU1FX0JJTkFSWV9GT1JNQVRfSApkaWZmIC0tZ2l0IGEvbmF0aXZlL2puaS9zcmMvZGVmaW5lcy5oIGIvbmF0aXZlL2puaS9zcmMvZGVmaW5lcy5oCmluZGV4IDZlZjlmNDEuLmViNTk3NDQgMTAwNjQ0Ci0tLSBhL25hdGl2ZS9qbmkvc3JjL2RlZmluZXMuaAorKysgYi9uYXRpdmUvam5pL3NyYy9kZWZpbmVzLmgKQEAgLTM3OSw2ICszNzksMTUgQEAKICNlcnJvciAiQklHUkFNX0ZJTFRFUl9NT0RVTE8gaXMgbGFyZ2VyIHRoYW4gQklHUkFNX0ZJTFRFUl9CWVRFX1NJWkUiCiAjZW5kaWYKIAorLy8gTWF4IG51bWJlciBvZiBiaWdyYW0gbWFwcyAocHJldmlvdXMgd29yZCBjb250ZXh0cykgdG8gYmUgY2FjaGVkLiBJbmNyZWFzaW5nIHRoaXMgbnVtYmVyIGNvdWxkCisvLyBpbXByb3ZlIGJpZ3JhbSBsb29rdXAgc3BlZWQgZm9yIG11bHRpLXdvcmQgc3VnZ2VzdGlvbnMsIGJ1dCBhdCB0aGUgY29zdCBvZiBtb3JlIG1lbW9yeSB1c2FnZS4KKy8vIEFsc28sIHRoZXJlIGFyZSBkaW1pbmlzaGluZyByZXR1cm5zIHNpbmNlIHRoZSBtb3N0IGZyZXF1ZW50bHkgdXNlZCBiaWdyYW1zIGFyZSB0eXBpY2FsbHkgbmVhcgorLy8gdGhlIGJlZ2lubmluZyBvZiB0aGUgaW5wdXQgYW5kIGFyZSB0aHVzIHRoZSBmaXJzdCBvbmVzIHRvIGJlIGNhY2hlZC4gTm90ZSB0aGF0IHRoZXNlIGJpZ3JhbXMKKy8vIGFyZSByZXNldCBmb3IgZWFjaCBuZXcgY29tcG9zaW5nIHdvcmQuCisjZGVmaW5lIE1BWF9DQUNIRURfUFJFVl9XT1JEU19JTl9CSUdSQU1fTUFQIDI1CisvLyBNb3N0IGNvbW1vbiBwcmV2aW91cyB3b3JkIGNvbnRleHRzIGN1cnJlbnRseSBoYXZlIDEwMCBiaWdyYW1zCisjZGVmaW5lIERFRkFVTFRfSEFTSF9NQVBfU0laRV9GT1JfRUFDSF9CSUdSQU1fTUFQIDEwMAorCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBBS19GT1JDRV9JTkxJTkUgY29uc3QgVCAmbWluKGNvbnN0IFQgJmEsIGNvbnN0IFQgJmIpIHsgcmV0dXJuIGEgPCBiID8gYSA6IGI7IH0KIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IEFLX0ZPUkNFX0lOTElORSBjb25zdCBUICZtYXgoY29uc3QgVCAmYSwgY29uc3QgVCAmYikgeyByZXR1cm4gYSA+IGIgPyBhIDogYjsgfQogCkBAIC00MTcsMTYgKzQyNiw0NSBAQAogfSBEb3VibGVMZXR0ZXJMZXZlbDsKIAogdHlwZWRlZiBlbnVtIHsKKyAgICAvLyBDb3JyZWN0aW9uIGZvciBNQVRDSF9DSEFSCiAgICAgQ1RfTUFUQ0gsCisgICAgLy8gQ29ycmVjdGlvbiBmb3IgUFJPWElNSVRZX0NIQVIKICAgICBDVF9QUk9YSU1JVFksCisgICAgLy8gQ29ycmVjdGlvbiBmb3IgQURESVRJT05BTF9QUk9YSU1JVFlfQ0hBUgogICAgIENUX0FERElUSU9OQUxfUFJPWElNSVRZLAorICAgIC8vIENvcnJlY3Rpb24gZm9yIFNVQlNUSVRVVElPTl9DSEFSCiAgICAgQ1RfU1VCU1RJVFVUSU9OLAorICAgIC8vIFNraXAgb25lIG9taXR0ZWQgbGV0dGVyCiAgICAgQ1RfT01JU1NJT04sCisgICAgLy8gRGVsZXRlIGFuIHVubmVjZXNzYXJpbHkgaW5zZXJ0ZWQgbGV0dGVyCiAgICAgQ1RfSU5TRVJUSU9OLAorICAgIC8vIFN3YXAgdGhlIG9yZGVyIG9mIG5leHQgdHdvIHRvdWNoIHBvaW50cwogICAgIENUX1RSQU5TUE9TSVRJT04sCiAgICAgQ1RfQ09NUExFVElPTiwKICAgICBDVF9URVJNSU5BTCwKKyAgICAvLyBDcmVhdGUgbmV3IHdvcmQgd2l0aCBzcGFjZSBvbWlzc2lvbgogICAgIENUX05FV19XT1JEX1NQQUNFX09NSVRUSU9OLAorICAgIC8vIENyZWF0ZSBuZXcgd29yZCB3aXRoIHNwYWNlIHN1YnN0aXR1dGlvbgogICAgIENUX05FV19XT1JEX1NQQUNFX1NVQlNUSVRVVElPTiwKIH0gQ29ycmVjdGlvblR5cGU7CisKKy8vIEVycm9yVHlwZSBpcyBtYWlubHkgZGVjaWRlZCBieSBDb3JyZWN0aW9uVHlwZSBidXQgaXQgaXMgYWxzbyBkZXBlbmRpbmcgb24gaWYKKy8vIHRoZSBjb3JyZWN0aW9uIGhhcyByZWFsbHkgYmVlbiBwZXJmb3JtZWQgb3Igbm90LgordHlwZWRlZiBlbnVtIHsKKyAgICAvLyBTdWJzdGl0dXRpb24sIG9taXNzaW9uIGFuZCB0cmFuc3Bvc2l0aW9uCisgICAgRVRfRURJVF9DT1JSRUNUSU9OLAorICAgIC8vIFByb3hpbWl0eSBlcnJvcgorICAgIEVUX1BST1hJTUlUWV9DT1JSRUNUSU9OLAorICAgIC8vIENvbXBsZXRpb24KKyAgICBFVF9DT01QTEVUSU9OLAorICAgIC8vIE5ldyB3b3JkCisgICAgLy8gVE9ETzogUmVtb3ZlLgorICAgIC8vIEEgbmV3IHdvcmQgZXJyb3Igc2hvdWxkIGJlIGFuIGVkaXQgY29ycmVjdGlvbiBlcnJvciBvciBhIHByb3hpbWl0eSBjb3JyZWN0aW9uIGVycm9yLgorICAgIEVUX05FV19XT1JELAorICAgIC8vIFRyZWF0IGVycm9yIGFzIGFuIGludGVudGlvbmFsIG9taXNzaW9uIHdoZW4gdGhlIENvcnJlY3Rpb25UeXBlIGlzIG9taXNzaW9uIGFuZCB0aGUgbm9kZSBjYW4KKyAgICAvLyBiZSBpbnRlbnRpb25hbCBvbWlzc2lvbi4KKyAgICBFVF9JTlRFTlRJT05BTF9PTUlTU0lPTiwKKyAgICAvLyBOb3QgdHJlYXRlZCBhcyBhbiBlcnJvci4gVHJhY2tlZCBmb3IgY2hlY2tpbmcgZXhhY3QgbWF0Y2gKKyAgICBFVF9OT1RfQU5fRVJST1IKK30gRXJyb3JUeXBlOwogI2VuZGlmIC8vIExBVElOSU1FX0RFRklORVNfSApkaWZmIC0tZ2l0IGEvbmF0aXZlL2puaS9zcmMvZGljdGlvbmFyeS5oIGIvbmF0aXZlL2puaS9zcmMvZGljdGlvbmFyeS5oCmluZGV4IDA2NTNkM2MuLjJhZDViNmMgMTAwNjQ0Ci0tLSBhL25hdGl2ZS9qbmkvc3JjL2RpY3Rpb25hcnkuaAorKysgYi9uYXRpdmUvam5pL3NyYy9kaWN0aW9uYXJ5LmgKQEAgLTMxLDYgKzMxLDcgQEAKIGNsYXNzIERpY3Rpb25hcnkgewogIHB1YmxpYzoKICAgICAvLyBUYWtlbiBmcm9tIFN1Z2dlc3RlZFdvcmRzLmphdmEKKyAgICBzdGF0aWMgY29uc3QgaW50IEtJTkRfTUFTS19LSU5EID0gMHhGRjsgLy8gTWFzayB0byBnZXQgb25seSB0aGUga2luZAogICAgIHN0YXRpYyBjb25zdCBpbnQgS0lORF9UWVBFRCA9IDA7IC8vIFdoYXQgdXNlciB0eXBlZAogICAgIHN0YXRpYyBjb25zdCBpbnQgS0lORF9DT1JSRUNUSU9OID0gMTsgLy8gU2ltcGxlIGNvcnJlY3Rpb24vc3VnZ2VzdGlvbgogICAgIHN0YXRpYyBjb25zdCBpbnQgS0lORF9DT01QTEVUSU9OID0gMjsgLy8gQ29tcGxldGlvbiAoc3VnZ2VzdGlvbiB3aXRoIGFwcGVuZGVkIGNoYXJzKQpAQCAtNDEsNiArNDIsMTAgQEAKICAgICBzdGF0aWMgY29uc3QgaW50IEtJTkRfU0hPUlRDVVQgPSA3OyAvLyBBIHNob3J0Y3V0CiAgICAgc3RhdGljIGNvbnN0IGludCBLSU5EX1BSRURJQ1RJT04gPSA4OyAvLyBBIHByZWRpY3Rpb24gKD09IGEgc3VnZ2VzdGlvbiB3aXRoIG5vIGlucHV0KQogCisgICAgc3RhdGljIGNvbnN0IGludCBLSU5EX01BU0tfRkxBR1MgPSAweEZGRkZGRjAwOyAvLyBNYXNrIHRvIGdldCB0aGUgZmxhZ3MKKyAgICBzdGF0aWMgY29uc3QgaW50IEtJTkRfRkxBR19QT1NTSUJMWV9PRkZFTlNJVkUgPSAweDgwMDAwMDAwOworICAgIHN0YXRpYyBjb25zdCBpbnQgS0lORF9GTEFHX0VYQUNUX01BVENIID0gMHg0MDAwMDAwMDsKKwogICAgIERpY3Rpb25hcnkodm9pZCAqZGljdCwgaW50IGRpY3RTaXplLCBpbnQgbW1hcEZkLCBpbnQgZGljdEJ1ZkFkanVzdCk7CiAKICAgICBpbnQgZ2V0U3VnZ2VzdGlvbnMoUHJveGltaXR5SW5mbyAqcHJveGltaXR5SW5mbywgdm9pZCAqdHJhdmVyc2VTZXNzaW9uLCBpbnQgKnhjb29yZGluYXRlcywKZGlmZiAtLWdpdCBhL25hdGl2ZS9qbmkvc3JjL211bHRpX2JpZ3JhbV9tYXAuaCBiL25hdGl2ZS9qbmkvc3JjL211bHRpX2JpZ3JhbV9tYXAuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZTFiNjMwCi0tLSAvZGV2L251bGwKKysrIGIvbmF0aXZlL2puaS9zcmMvbXVsdGlfYmlncmFtX21hcC5oCkBAIC0wLDAgKzEsODkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisjaWZuZGVmIExBVElOSU1FX01VTFRJX0JJR1JBTV9NQVBfSAorI2RlZmluZSBMQVRJTklNRV9NVUxUSV9CSUdSQU1fTUFQX0gKKworI2luY2x1ZGUgPGNzdHJpbmc+CisjaW5jbHVkZSA8c3RkaW50Lmg+CisKKyNpbmNsdWRlICJkZWZpbmVzLmgiCisjaW5jbHVkZSAiYmluYXJ5X2Zvcm1hdC5oIgorI2luY2x1ZGUgImhhc2hfbWFwX2NvbXBhdC5oIgorCituYW1lc3BhY2UgbGF0aW5pbWUgeworCisvLyBDbGFzcyBmb3IgY2FjaGluZyBiaWdyYW0gbWFwcyBmb3IgbXVsdGlwbGUgcHJldmlvdXMgd29yZCBjb250ZXh0cy4gVGhpcyBpcyB1c2VmdWwgc2luY2UgdGhlCisvLyBhbGdvcml0aG0gbmVlZHMgdG8gbG9vayB1cCB0aGUgc2V0IG9mIGJpZ3JhbXMgZm9yIGV2ZXJ5IHdvcmQgcGFpciB0aGF0IG9jY3VycyBpbiBldmVyeQorLy8gbXVsdGktd29yZCBzdWdnZXN0aW9uLgorY2xhc3MgTXVsdGlCaWdyYW1NYXAgeworIHB1YmxpYzoKKyAgICBNdWx0aUJpZ3JhbU1hcCgpIDogbUJpZ3JhbU1hcHMoKSB7fQorICAgIH5NdWx0aUJpZ3JhbU1hcCgpIHt9CisKKyAgICAvLyBMb29rIHVwIHRoZSBiaWdyYW0gcHJvYmFiaWxpdHkgZm9yIHRoZSBnaXZlbiB3b3JkIHBhaXIgZnJvbSB0aGUgY2FjaGVkIGJpZ3JhbSBtYXBzLgorICAgIC8vIEFsc28gY2FjaGVzIHRoZSBiaWdyYW1zIGlmIHRoZXJlIGlzIHNwYWNlIHJlbWFpbmluZyBhbmQgdGhleSBoYXZlIG5vdCBiZWVuIGNhY2hlZCBhbHJlYWR5LgorICAgIGludCBnZXRCaWdyYW1Qcm9iYWJpbGl0eShjb25zdCB1aW50OF90ICpjb25zdCBkaWNSb290LCBjb25zdCBpbnQgd29yZFBvc2l0aW9uLAorICAgICAgICAgICAgY29uc3QgaW50IG5leHRXb3JkUG9zaXRpb24sIGNvbnN0IGludCB1bmlncmFtUHJvYmFiaWxpdHkpIHsKKyAgICAgICAgaGFzaF9tYXBfY29tcGF0PGludCwgQmlncmFtTWFwPjo6Y29uc3RfaXRlcmF0b3IgbWFwUG9zaXRpb24gPQorICAgICAgICAgICAgICAgIG1CaWdyYW1NYXBzLmZpbmQod29yZFBvc2l0aW9uKTsKKyAgICAgICAgaWYgKG1hcFBvc2l0aW9uICE9IG1CaWdyYW1NYXBzLmVuZCgpKSB7CisgICAgICAgICAgICByZXR1cm4gbWFwUG9zaXRpb24tPnNlY29uZC5nZXRCaWdyYW1Qcm9iYWJpbGl0eShuZXh0V29yZFBvc2l0aW9uLCB1bmlncmFtUHJvYmFiaWxpdHkpOworICAgICAgICB9CisgICAgICAgIGlmIChtQmlncmFtTWFwcy5zaXplKCkgPCBNQVhfQ0FDSEVEX1BSRVZfV09SRFNfSU5fQklHUkFNX01BUCkgeworICAgICAgICAgICAgYWRkQmlncmFtc0ZvcldvcmRQb3NpdGlvbihkaWNSb290LCB3b3JkUG9zaXRpb24pOworICAgICAgICAgICAgcmV0dXJuIG1CaWdyYW1NYXBzW3dvcmRQb3NpdGlvbl0uZ2V0QmlncmFtUHJvYmFiaWxpdHkoCisgICAgICAgICAgICAgICAgICAgIG5leHRXb3JkUG9zaXRpb24sIHVuaWdyYW1Qcm9iYWJpbGl0eSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIEJpbmFyeUZvcm1hdDo6Z2V0QmlncmFtUHJvYmFiaWxpdHkoCisgICAgICAgICAgICAgICAgZGljUm9vdCwgd29yZFBvc2l0aW9uLCBuZXh0V29yZFBvc2l0aW9uLCB1bmlncmFtUHJvYmFiaWxpdHkpOworICAgIH0KKworICAgIHZvaWQgY2xlYXIoKSB7CisgICAgICAgIG1CaWdyYW1NYXBzLmNsZWFyKCk7CisgICAgfQorCisgcHJpdmF0ZToKKyAgICBESVNBTExPV19DT1BZX0FORF9BU1NJR04oTXVsdGlCaWdyYW1NYXApOworCisgICAgY2xhc3MgQmlncmFtTWFwIHsKKyAgICAgcHVibGljOgorICAgICAgICBCaWdyYW1NYXAoKSA6IG1CaWdyYW1NYXAoREVGQVVMVF9IQVNIX01BUF9TSVpFX0ZPUl9FQUNIX0JJR1JBTV9NQVApIHt9CisgICAgICAgIH5CaWdyYW1NYXAoKSB7fQorCisgICAgICAgIHZvaWQgaW5pdChjb25zdCB1aW50OF90ICpjb25zdCBkaWNSb290LCBpbnQgcG9zaXRpb24pIHsKKyAgICAgICAgICAgIEJpbmFyeUZvcm1hdDo6ZmlsbEJpZ3JhbVByb2JhYmlsaXR5VG9IYXNoTWFwKGRpY1Jvb3QsIHBvc2l0aW9uLCAmbUJpZ3JhbU1hcCk7CisgICAgICAgIH0KKworICAgICAgICBpbmxpbmUgaW50IGdldEJpZ3JhbVByb2JhYmlsaXR5KGNvbnN0IGludCBuZXh0V29yZFBvc2l0aW9uLCBjb25zdCBpbnQgdW5pZ3JhbVByb2JhYmlsaXR5KQorICAgICAgICAgICAgICAgIGNvbnN0IHsKKyAgICAgICAgICAgcmV0dXJuIEJpbmFyeUZvcm1hdDo6Z2V0QmlncmFtUHJvYmFiaWxpdHlGcm9tSGFzaE1hcCgKKyAgICAgICAgICAgICAgICAgICBuZXh0V29yZFBvc2l0aW9uLCAmbUJpZ3JhbU1hcCwgdW5pZ3JhbVByb2JhYmlsaXR5KTsKKyAgICAgICAgfQorCisgICAgIHByaXZhdGU6CisgICAgICAgIC8vIE5vdGU6IERlZmF1bHQgY29weSBjb25zdHJ1Y3RvciBuZWVkZWQgZm9yIHVzZSBpbiBoYXNoX21hcC4KKyAgICAgICAgaGFzaF9tYXBfY29tcGF0PGludCwgaW50PiBtQmlncmFtTWFwOworICAgIH07CisKKyAgICB2b2lkIGFkZEJpZ3JhbXNGb3JXb3JkUG9zaXRpb24oY29uc3QgdWludDhfdCAqY29uc3QgZGljUm9vdCwgY29uc3QgaW50IHBvc2l0aW9uKSB7CisgICAgICAgIG1CaWdyYW1NYXBzW3Bvc2l0aW9uXS5pbml0KGRpY1Jvb3QsIHBvc2l0aW9uKTsKKyAgICB9CisKKyAgICBoYXNoX21hcF9jb21wYXQ8aW50LCBCaWdyYW1NYXA+IG1CaWdyYW1NYXBzOworfTsKK30gLy8gbmFtZXNwYWNlIGxhdGluaW1lCisjZW5kaWYgLy8gTEFUSU5JTUVfTVVMVElfQklHUkFNX01BUF9ICmRpZmYgLS1naXQgYS9uYXRpdmUvam5pL3NyYy9zdWdnZXN0L2NvcmUvZGljbm9kZS9kaWNfbm9kZS5oIGIvbmF0aXZlL2puaS9zcmMvc3VnZ2VzdC9jb3JlL2RpY25vZGUvZGljX25vZGUuaAppbmRleCAzMmZhYWU1Li45Mjc4M2RlIDEwMDY0NAotLS0gYS9uYXRpdmUvam5pL3NyYy9zdWdnZXN0L2NvcmUvZGljbm9kZS9kaWNfbm9kZS5oCisrKyBiL25hdGl2ZS9qbmkvc3JjL3N1Z2dlc3QvY29yZS9kaWNub2RlL2RpY19ub2RlLmgKQEAgLTIxMCw4ICsyMTAsNyBAQAogICAgIH0KIAogICAgIGJvb2wgaXNJbXBvc3NpYmxlQmlncmFtV29yZCgpIGNvbnN0IHsKLSAgICAgICAgY29uc3QgaW50IHByb2JhYmlsaXR5ID0gbURpY05vZGVQcm9wZXJ0aWVzLmdldFByb2JhYmlsaXR5KCk7Ci0gICAgICAgIGlmIChwcm9iYWJpbGl0eSA9PSAwKSB7CisgICAgICAgIGlmIChtRGljTm9kZVByb3BlcnRpZXMuaGFzQmxhY2tsaXN0ZWRPck5vdEFXb3JkRmxhZygpKSB7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgICAgICBjb25zdCBpbnQgcHJldldvcmRMZW4gPSBtRGljTm9kZVN0YXRlLm1EaWNOb2RlU3RhdGVQcmV2V29yZC5nZXRQcmV2V29yZExlbmd0aCgpCkBAIC0zNjAsMTEgKzM1OSw2IEBACiAgICAgICAgIHJldHVybiBtRGljTm9kZVN0YXRlLm1EaWNOb2RlU3RhdGVTY29yaW5nLmdldENvbXBvdW5kRGlzdGFuY2UobGFuZ3VhZ2VXZWlnaHQpOwogICAgIH0KIAotICAgIC8vIE5vdGUgdGhhdCAiY29zdCIgbWVhbnMgZGVsdGEgZm9yICJkaXN0YW5jZSIgdGhhdCBpcyB3ZWlnaHRlZC4KLSAgICBmbG9hdCBnZXRUb3RhbFByZXZXb3Jkc0xhbmd1YWdlQ29zdCgpIGNvbnN0IHsKLSAgICAgICAgcmV0dXJuIG1EaWNOb2RlU3RhdGUubURpY05vZGVTdGF0ZVNjb3JpbmcuZ2V0VG90YWxQcmV2V29yZHNMYW5ndWFnZUNvc3QoKTsKLSAgICB9Ci0KICAgICAvLyBVc2VkIHRvIGNvbW1pdCBpbnB1dCBwYXJ0aWFsbHkKICAgICBpbnQgZ2V0UHJldldvcmROb2RlUG9zKCkgY29uc3QgewogICAgICAgICByZXR1cm4gbURpY05vZGVTdGF0ZS5tRGljTm9kZVN0YXRlUHJldldvcmQuZ2V0UHJldldvcmROb2RlUG9zKCk7CkBAIC00NjksNiArNDYzLDEwIEBACiAgICAgICAgIG1EaWNOb2RlU3RhdGUubURpY05vZGVTdGF0ZVNjb3JpbmcuYWR2YW5jZURpZ3JhcGhJbmRleCgpOwogICAgIH0KIAorICAgIGJvb2wgaXNFeGFjdE1hdGNoKCkgY29uc3QgeworICAgICAgICByZXR1cm4gbURpY05vZGVTdGF0ZS5tRGljTm9kZVN0YXRlU2NvcmluZy5pc0V4YWN0TWF0Y2goKTsKKyAgICB9CisKICAgICB1aW50OF90IGdldEZsYWdzKCkgY29uc3QgewogICAgICAgICByZXR1cm4gbURpY05vZGVQcm9wZXJ0aWVzLmdldEZsYWdzKCk7CiAgICAgfQpAQCAtNTQ4LDEzICs1NDYsMTIgQEAKICAgICAvLyBDYXZlYXQ6IE11c3Qgbm90IGJlIGNhbGxlZCBvdXRzaWRlIFdlaWdodGluZwogICAgIC8vIFRoaXMgcmVzdHJpY3Rpb24gaXMgZ3VhcmFudGVlZCBieSAiZnJpZW5kIgogICAgIEFLX0ZPUkNFX0lOTElORSB2b2lkIGFkZENvc3QoY29uc3QgZmxvYXQgc3BhdGlhbENvc3QsIGNvbnN0IGZsb2F0IGxhbmd1YWdlQ29zdCwKLSAgICAgICAgICAgIGNvbnN0IGJvb2wgZG9Ob3JtYWxpemF0aW9uLCBjb25zdCBpbnQgaW5wdXRTaXplLCBjb25zdCBib29sIGlzRWRpdENvcnJlY3Rpb24sCi0gICAgICAgICAgICBjb25zdCBib29sIGlzUHJveGltaXR5Q29ycmVjdGlvbikgeworICAgICAgICAgICAgY29uc3QgYm9vbCBkb05vcm1hbGl6YXRpb24sIGNvbnN0IGludCBpbnB1dFNpemUsIGNvbnN0IEVycm9yVHlwZSBlcnJvclR5cGUpIHsKICAgICAgICAgaWYgKERFQlVHX0dFT19GVUxMKSB7CiAgICAgICAgICAgICBMT0dJX1NIT1dfQUREX0NPU1RfUFJPUDsKICAgICAgICAgfQogICAgICAgICBtRGljTm9kZVN0YXRlLm1EaWNOb2RlU3RhdGVTY29yaW5nLmFkZENvc3Qoc3BhdGlhbENvc3QsIGxhbmd1YWdlQ29zdCwgZG9Ob3JtYWxpemF0aW9uLAotICAgICAgICAgICAgICAgIGlucHV0U2l6ZSwgZ2V0VG90YWxJbnB1dEluZGV4KCksIGlzRWRpdENvcnJlY3Rpb24sIGlzUHJveGltaXR5Q29ycmVjdGlvbik7CisgICAgICAgICAgICAgICAgaW5wdXRTaXplLCBnZXRUb3RhbElucHV0SW5kZXgoKSwgZXJyb3JUeXBlKTsKICAgICB9CiAKICAgICAvLyBDYXZlYXQ6IE11c3Qgbm90IGJlIGNhbGxlZCBvdXRzaWRlIFdlaWdodGluZwpkaWZmIC0tZ2l0IGEvbmF0aXZlL2puaS9zcmMvc3VnZ2VzdC9jb3JlL2RpY25vZGUvZGljX25vZGVfcHJvcGVydGllcy5oIGIvbmF0aXZlL2puaS9zcmMvc3VnZ2VzdC9jb3JlL2RpY25vZGUvZGljX25vZGVfcHJvcGVydGllcy5oCmluZGV4IDE3M2VmMzUuLjYzYTZiMTMgMTAwNjQ0Ci0tLSBhL25hdGl2ZS9qbmkvc3JjL3N1Z2dlc3QvY29yZS9kaWNub2RlL2RpY19ub2RlX3Byb3BlcnRpZXMuaAorKysgYi9uYXRpdmUvam5pL3NyYy9zdWdnZXN0L2NvcmUvZGljbm9kZS9kaWNfbm9kZV9wcm9wZXJ0aWVzLmgKQEAgLTE5LDYgKzE5LDcgQEAKIAogI2luY2x1ZGUgPHN0ZGludC5oPgogCisjaW5jbHVkZSAiYmluYXJ5X2Zvcm1hdC5oIgogI2luY2x1ZGUgImRlZmluZXMuaCIKIAogbmFtZXNwYWNlIGxhdGluaW1lIHsKQEAgLTE0NCw2ICsxNDUsMTAgQEAKICAgICAgICAgcmV0dXJuIG1DaGlsZHJlbkNvdW50ID4gMCB8fCBtRGVwdGggIT0gbUxlYXZpbmdEZXB0aDsKICAgICB9CiAKKyAgICBib29sIGhhc0JsYWNrbGlzdGVkT3JOb3RBV29yZEZsYWcoKSBjb25zdCB7CisgICAgICAgIHJldHVybiBCaW5hcnlGb3JtYXQ6Omhhc0JsYWNrbGlzdGVkT3JOb3RBV29yZEZsYWcobUZsYWdzKTsKKyAgICB9CisKICBwcml2YXRlOgogICAgIC8vIENhdXRpb24hISEKICAgICAvLyBVc2UgYSBkZWZhdWx0IGNvcHkgY29uc3RydWN0b3IgYW5kIGFuIGFzc2lnbiBvcGVyYXRvciBiZWNhdXNlIHNoYWxsb3cgY29waWVzIGFyZSBvawpkaWZmIC0tZ2l0IGEvbmF0aXZlL2puaS9zcmMvc3VnZ2VzdC9jb3JlL2RpY25vZGUvZGljX25vZGVfc3RhdGVfaW5wdXQuaCBiL25hdGl2ZS9qbmkvc3JjL3N1Z2dlc3QvY29yZS9kaWNub2RlL2RpY19ub2RlX3N0YXRlX2lucHV0LmgKaW5kZXggN2FkM2UzZS4uYmJkOTQzNSAxMDA2NDQKLS0tIGEvbmF0aXZlL2puaS9zcmMvc3VnZ2VzdC9jb3JlL2RpY25vZGUvZGljX25vZGVfc3RhdGVfaW5wdXQuaAorKysgYi9uYXRpdmUvam5pL3NyYy9zdWdnZXN0L2NvcmUvZGljbm9kZS9kaWNfbm9kZV9zdGF0ZV9pbnB1dC5oCkBAIC00Niw4ICs0Niw4IEBACiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgTUFYX1BPSU5URVJfQ09VTlRfRzsgaSsrKSB7CiAgICAgICAgICAgICAgbUlucHV0SW5kZXhbaV0gPSBzcmMtPm1JbnB1dEluZGV4W2ldOwogICAgICAgICAgICAgIG1QcmV2Q29kZVBvaW50W2ldID0gc3JjLT5tUHJldkNvZGVQb2ludFtpXTsKLSAgICAgICAgbVRlcm1pbmFsRGlmZkNvc3RbaV0gPSByZXNldFRlcm1pbmFsRGlmZkNvc3QgPwotICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGZsb2F0PihNQVhfVkFMVUVfRk9SX1dFSUdIVElORykgOiBzcmMtPm1UZXJtaW5hbERpZmZDb3N0W2ldOworICAgICAgICAgICAgIG1UZXJtaW5hbERpZmZDb3N0W2ldID0gcmVzZXRUZXJtaW5hbERpZmZDb3N0ID8KKyAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGZsb2F0PihNQVhfVkFMVUVfRk9SX1dFSUdIVElORykgOiBzcmMtPm1UZXJtaW5hbERpZmZDb3N0W2ldOwogICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvbmF0aXZlL2puaS9zcmMvc3VnZ2VzdC9jb3JlL2RpY25vZGUvZGljX25vZGVfc3RhdGVfc2NvcmluZy5oIGIvbmF0aXZlL2puaS9zcmMvc3VnZ2VzdC9jb3JlL2RpY25vZGUvZGljX25vZGVfc3RhdGVfc2NvcmluZy5oCmluZGV4IDg5MDJkMzEuLmRjYTlkNjAgMTAwNjQ0Ci0tLSBhL25hdGl2ZS9qbmkvc3JjL3N1Z2dlc3QvY29yZS9kaWNub2RlL2RpY19ub2RlX3N0YXRlX3Njb3JpbmcuaAorKysgYi9uYXRpdmUvam5pL3NyYy9zdWdnZXN0L2NvcmUvZGljbm9kZS9kaWNfbm9kZV9zdGF0ZV9zY29yaW5nLmgKQEAgLTMxLDcgKzMxLDcgQEAKICAgICAgICAgICAgICAgbURpZ3JhcGhJbmRleChEaWdyYXBoVXRpbHM6Ok5PVF9BX0RJR1JBUEhfSU5ERVgpLAogICAgICAgICAgICAgICBtRWRpdENvcnJlY3Rpb25Db3VudCgwKSwgbVByb3hpbWl0eUNvcnJlY3Rpb25Db3VudCgwKSwKICAgICAgICAgICAgICAgbU5vcm1hbGl6ZWRDb21wb3VuZERpc3RhbmNlKDAuMGYpLCBtU3BhdGlhbERpc3RhbmNlKDAuMGYpLCBtTGFuZ3VhZ2VEaXN0YW5jZSgwLjBmKSwKLSAgICAgICAgICAgICAgbVRvdGFsUHJldldvcmRzTGFuZ3VhZ2VDb3N0KDAuMGYpLCBtUmF3TGVuZ3RoKDAuMGYpIHsKKyAgICAgICAgICAgICAgbVJhd0xlbmd0aCgwLjBmKSwgbUV4YWN0TWF0Y2godHJ1ZSkgewogICAgIH0KIAogICAgIHZpcnR1YWwgfkRpY05vZGVTdGF0ZVNjb3JpbmcoKSB7fQpAQCAtNDIsMTAgKzQyLDEwIEBACiAgICAgICAgIG1Ob3JtYWxpemVkQ29tcG91bmREaXN0YW5jZSA9IDAuMGY7CiAgICAgICAgIG1TcGF0aWFsRGlzdGFuY2UgPSAwLjBmOwogICAgICAgICBtTGFuZ3VhZ2VEaXN0YW5jZSA9IDAuMGY7Ci0gICAgICAgIG1Ub3RhbFByZXZXb3Jkc0xhbmd1YWdlQ29zdCA9IDAuMGY7CiAgICAgICAgIG1SYXdMZW5ndGggPSAwLjBmOwogICAgICAgICBtRG91YmxlTGV0dGVyTGV2ZWwgPSBOT1RfQV9ET1VCTEVfTEVUVEVSOwogICAgICAgICBtRGlncmFwaEluZGV4ID0gRGlncmFwaFV0aWxzOjpOT1RfQV9ESUdSQVBIX0lOREVYOworICAgICAgICBtRXhhY3RNYXRjaCA9IHRydWU7CiAgICAgfQogCiAgICAgQUtfRk9SQ0VfSU5MSU5FIHZvaWQgaW5pdChjb25zdCBEaWNOb2RlU3RhdGVTY29yaW5nICpjb25zdCBzY29yaW5nKSB7CkBAIC01NCwyNCArNTQsMzUgQEAKICAgICAgICAgbU5vcm1hbGl6ZWRDb21wb3VuZERpc3RhbmNlID0gc2NvcmluZy0+bU5vcm1hbGl6ZWRDb21wb3VuZERpc3RhbmNlOwogICAgICAgICBtU3BhdGlhbERpc3RhbmNlID0gc2NvcmluZy0+bVNwYXRpYWxEaXN0YW5jZTsKICAgICAgICAgbUxhbmd1YWdlRGlzdGFuY2UgPSBzY29yaW5nLT5tTGFuZ3VhZ2VEaXN0YW5jZTsKLSAgICAgICAgbVRvdGFsUHJldldvcmRzTGFuZ3VhZ2VDb3N0ID0gc2NvcmluZy0+bVRvdGFsUHJldldvcmRzTGFuZ3VhZ2VDb3N0OwogICAgICAgICBtUmF3TGVuZ3RoID0gc2NvcmluZy0+bVJhd0xlbmd0aDsKICAgICAgICAgbURvdWJsZUxldHRlckxldmVsID0gc2NvcmluZy0+bURvdWJsZUxldHRlckxldmVsOwogICAgICAgICBtRGlncmFwaEluZGV4ID0gc2NvcmluZy0+bURpZ3JhcGhJbmRleDsKKyAgICAgICAgbUV4YWN0TWF0Y2ggPSBzY29yaW5nLT5tRXhhY3RNYXRjaDsKICAgICB9CiAKICAgICB2b2lkIGFkZENvc3QoY29uc3QgZmxvYXQgc3BhdGlhbENvc3QsIGNvbnN0IGZsb2F0IGxhbmd1YWdlQ29zdCwgY29uc3QgYm9vbCBkb05vcm1hbGl6YXRpb24sCi0gICAgICAgICAgICBjb25zdCBpbnQgaW5wdXRTaXplLCBjb25zdCBpbnQgdG90YWxJbnB1dEluZGV4LCBjb25zdCBib29sIGlzRWRpdENvcnJlY3Rpb24sCi0gICAgICAgICAgICBjb25zdCBib29sIGlzUHJveGltaXR5Q29ycmVjdGlvbikgeworICAgICAgICAgICAgY29uc3QgaW50IGlucHV0U2l6ZSwgY29uc3QgaW50IHRvdGFsSW5wdXRJbmRleCwgY29uc3QgRXJyb3JUeXBlIGVycm9yVHlwZSkgewogICAgICAgICBhZGREaXN0YW5jZShzcGF0aWFsQ29zdCwgbGFuZ3VhZ2VDb3N0LCBkb05vcm1hbGl6YXRpb24sIGlucHV0U2l6ZSwgdG90YWxJbnB1dEluZGV4KTsKLSAgICAgICAgaWYgKGlzRWRpdENvcnJlY3Rpb24pIHsKLSAgICAgICAgICAgICsrbUVkaXRDb3JyZWN0aW9uQ291bnQ7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGlzUHJveGltaXR5Q29ycmVjdGlvbikgewotICAgICAgICAgICAgKyttUHJveGltaXR5Q29ycmVjdGlvbkNvdW50OwotICAgICAgICB9Ci0gICAgICAgIGlmIChsYW5ndWFnZUNvc3QgPiAwLjBmKSB7Ci0gICAgICAgICAgICBzZXRUb3RhbFByZXZXb3Jkc0xhbmd1YWdlQ29zdChtVG90YWxQcmV2V29yZHNMYW5ndWFnZUNvc3QgKyBsYW5ndWFnZUNvc3QpOworICAgICAgICBzd2l0Y2ggKGVycm9yVHlwZSkgeworICAgICAgICAgICAgY2FzZSBFVF9FRElUX0NPUlJFQ1RJT046CisgICAgICAgICAgICAgICAgKyttRWRpdENvcnJlY3Rpb25Db3VudDsKKyAgICAgICAgICAgICAgICBtRXhhY3RNYXRjaCA9IGZhbHNlOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBFVF9QUk9YSU1JVFlfQ09SUkVDVElPTjoKKyAgICAgICAgICAgICAgICArK21Qcm94aW1pdHlDb3JyZWN0aW9uQ291bnQ7CisgICAgICAgICAgICAgICAgbUV4YWN0TWF0Y2ggPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgRVRfQ09NUExFVElPTjoKKyAgICAgICAgICAgICAgICBtRXhhY3RNYXRjaCA9IGZhbHNlOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBFVF9ORVdfV09SRDoKKyAgICAgICAgICAgICAgICBtRXhhY3RNYXRjaCA9IGZhbHNlOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBFVF9JTlRFTlRJT05BTF9PTUlTU0lPTjoKKyAgICAgICAgICAgICAgICBtRXhhY3RNYXRjaCA9IGZhbHNlOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBFVF9OT1RfQU5fRVJST1I6CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTE0OCw4ICsxNTksOCBAQAogICAgICAgICB9CiAgICAgfQogCi0gICAgZmxvYXQgZ2V0VG90YWxQcmV2V29yZHNMYW5ndWFnZUNvc3QoKSBjb25zdCB7Ci0gICAgICAgIHJldHVybiBtVG90YWxQcmV2V29yZHNMYW5ndWFnZUNvc3Q7CisgICAgYm9vbCBpc0V4YWN0TWF0Y2goKSBjb25zdCB7CisgICAgICAgIHJldHVybiBtRXhhY3RNYXRjaDsKICAgICB9CiAKICBwcml2YXRlOgpAQCAtMTY1LDggKzE3Niw4IEBACiAgICAgZmxvYXQgbU5vcm1hbGl6ZWRDb21wb3VuZERpc3RhbmNlOwogICAgIGZsb2F0IG1TcGF0aWFsRGlzdGFuY2U7CiAgICAgZmxvYXQgbUxhbmd1YWdlRGlzdGFuY2U7Ci0gICAgZmxvYXQgbVRvdGFsUHJldldvcmRzTGFuZ3VhZ2VDb3N0OwogICAgIGZsb2F0IG1SYXdMZW5ndGg7CisgICAgYm9vbCBtRXhhY3RNYXRjaDsKIAogICAgIEFLX0ZPUkNFX0lOTElORSB2b2lkIGFkZERpc3RhbmNlKGZsb2F0IHNwYXRpYWxEaXN0YW5jZSwgZmxvYXQgbGFuZ3VhZ2VEaXN0YW5jZSwKICAgICAgICAgICAgIGJvb2wgZG9Ob3JtYWxpemF0aW9uLCBpbnQgaW5wdXRTaXplLCBpbnQgdG90YWxJbnB1dEluZGV4KSB7CkBAIC0xNzksMTEgKzE5MCw2IEBACiAgICAgICAgICAgICAgICAgICAgIC8gc3RhdGljX2Nhc3Q8ZmxvYXQ+KG1heCgxLCB0b3RhbElucHV0SW5kZXgpKTsKICAgICAgICAgfQogICAgIH0KLQotICAgIC8vVE9ETzogcmVtb3ZlCi0gICAgQUtfRk9SQ0VfSU5MSU5FIHZvaWQgc2V0VG90YWxQcmV2V29yZHNMYW5ndWFnZUNvc3QoZmxvYXQgdG90YWxQcmV2V29yZHNMYW5ndWFnZUNvc3QpIHsKLSAgICAgICAgbVRvdGFsUHJldldvcmRzTGFuZ3VhZ2VDb3N0ID0gdG90YWxQcmV2V29yZHNMYW5ndWFnZUNvc3Q7Ci0gICAgfQogfTsKIH0gLy8gbmFtZXNwYWNlIGxhdGluaW1lCiAjZW5kaWYgLy8gTEFUSU5JTUVfRElDX05PREVfU1RBVEVfU0NPUklOR19ICmRpZmYgLS1naXQgYS9uYXRpdmUvam5pL3NyYy9zdWdnZXN0L2NvcmUvZGljbm9kZS9kaWNfbm9kZV91dGlscy5jcHAgYi9uYXRpdmUvam5pL3NyYy9zdWdnZXN0L2NvcmUvZGljbm9kZS9kaWNfbm9kZV91dGlscy5jcHAKaW5kZXggMDMxZTcwNi4uNTM1N2MzNyAxMDA2NDQKLS0tIGEvbmF0aXZlL2puaS9zcmMvc3VnZ2VzdC9jb3JlL2RpY25vZGUvZGljX25vZGVfdXRpbHMuY3BwCisrKyBiL25hdGl2ZS9qbmkvc3JjL3N1Z2dlc3QvY29yZS9kaWNub2RlL2RpY19ub2RlX3V0aWxzLmNwcApAQCAtMjEsNiArMjEsNyBAQAogI2luY2x1ZGUgImRpY19ub2RlLmgiCiAjaW5jbHVkZSAiZGljX25vZGVfdXRpbHMuaCIKICNpbmNsdWRlICJkaWNfbm9kZV92ZWN0b3IuaCIKKyNpbmNsdWRlICJtdWx0aV9iaWdyYW1fbWFwLmgiCiAjaW5jbHVkZSAicHJveGltaXR5X2luZm8uaCIKICNpbmNsdWRlICJwcm94aW1pdHlfaW5mb19zdGF0ZS5oIgogCkBAIC0xOTEsMTEgKzE5MiwxMSBAQAogICogQ29tcHV0ZXMgdGhlIGNvbWJpbmVkIGJpZ3JhbSAvIHVuaWdyYW0gY29zdCBmb3IgdGhlIGdpdmVuIGRpY05vZGUuCiAgKi8KIC8qIHN0YXRpYyAqLyBmbG9hdCBEaWNOb2RlVXRpbHM6OmdldEJpZ3JhbU5vZGVJbXByb2JhYmlsaXR5KGNvbnN0IHVpbnQ4X3QgKmNvbnN0IGRpY1Jvb3QsCi0gICAgICAgIGNvbnN0IERpY05vZGUgKmNvbnN0IG5vZGUsIGhhc2hfbWFwX2NvbXBhdDxpbnQsIGludDE2X3Q+ICpiaWdyYW1DYWNoZU1hcCkgeworICAgICAgICBjb25zdCBEaWNOb2RlICpjb25zdCBub2RlLCBNdWx0aUJpZ3JhbU1hcCAqbXVsdGlCaWdyYW1NYXApIHsKICAgICBpZiAobm9kZS0+aXNJbXBvc3NpYmxlQmlncmFtV29yZCgpKSB7CiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxmbG9hdD4oTUFYX1ZBTFVFX0ZPUl9XRUlHSFRJTkcpOwogICAgIH0KLSAgICBjb25zdCBpbnQgcHJvYmFiaWxpdHkgPSBnZXRCaWdyYW1Ob2RlUHJvYmFiaWxpdHkoZGljUm9vdCwgbm9kZSwgYmlncmFtQ2FjaGVNYXApOworICAgIGNvbnN0IGludCBwcm9iYWJpbGl0eSA9IGdldEJpZ3JhbU5vZGVQcm9iYWJpbGl0eShkaWNSb290LCBub2RlLCBtdWx0aUJpZ3JhbU1hcCk7CiAgICAgLy8gVE9ETzogVGhpcyBlcXVhdGlvbiB0byBjYWxjdWxhdGUgdGhlIGltcHJvYmFiaWxpdHkgbG9va3MgdW5yZWFzb25hYmxlLiAgSW52ZXN0aWdhdGUgdGhpcy4KICAgICBjb25zdCBmbG9hdCBjb3N0ID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KE1BWF9QUk9CQUJJTElUWSAtIHByb2JhYmlsaXR5KQogICAgICAgICAgICAgLyBzdGF0aWNfY2FzdDxmbG9hdD4oTUFYX1BST0JBQklMSVRZKTsKQEAgLTIwMyw5MiArMjA0LDI1IEBACiB9CiAKIC8qIHN0YXRpYyAqLyBpbnQgRGljTm9kZVV0aWxzOjpnZXRCaWdyYW1Ob2RlUHJvYmFiaWxpdHkoY29uc3QgdWludDhfdCAqY29uc3QgZGljUm9vdCwKLSAgICAgICAgY29uc3QgRGljTm9kZSAqY29uc3Qgbm9kZSwgaGFzaF9tYXBfY29tcGF0PGludCwgaW50MTZfdD4gKmJpZ3JhbUNhY2hlTWFwKSB7CisgICAgICAgIGNvbnN0IERpY05vZGUgKmNvbnN0IG5vZGUsIE11bHRpQmlncmFtTWFwICptdWx0aUJpZ3JhbU1hcCkgewogICAgIGNvbnN0IGludCB1bmlncmFtUHJvYmFiaWxpdHkgPSBub2RlLT5nZXRQcm9iYWJpbGl0eSgpOwotICAgIGNvbnN0IGludCBlbmNvZGVkRGlmZk9mQmlncmFtUHJvYmFiaWxpdHkgPQotICAgICAgICAgICAgZ2V0QmlncmFtTm9kZUVuY29kZWREaWZmUHJvYmFiaWxpdHkoZGljUm9vdCwgbm9kZSwgYmlncmFtQ2FjaGVNYXApOwotICAgIGlmIChOT1RfQV9QUk9CQUJJTElUWSA9PSBlbmNvZGVkRGlmZk9mQmlncmFtUHJvYmFiaWxpdHkpIHsKKyAgICBjb25zdCBpbnQgd29yZFBvcyA9IG5vZGUtPmdldFBvcygpOworICAgIGNvbnN0IGludCBwcmV2V29yZFBvcyA9IG5vZGUtPmdldFByZXZXb3JkUG9zKCk7CisgICAgaWYgKE5PVF9WQUxJRF9XT1JEID09IHdvcmRQb3MgfHwgTk9UX1ZBTElEX1dPUkQgPT0gcHJldldvcmRQb3MpIHsKKyAgICAgICAgLy8gTm90ZTogTm9ybWFsbHkgd29yZFBvcyBjb21lcyBmcm9tIHRoZSBkaWN0aW9uYXJ5IGFuZCBzaG91bGQgbmV2ZXIgZXF1YWwgTk9UX1ZBTElEX1dPUkQuCiAgICAgICAgIHJldHVybiBiYWNrb2ZmKHVuaWdyYW1Qcm9iYWJpbGl0eSk7CiAgICAgfQotICAgIHJldHVybiBCaW5hcnlGb3JtYXQ6OmNvbXB1dGVQcm9iYWJpbGl0eUZvckJpZ3JhbSgKLSAgICAgICAgICAgIHVuaWdyYW1Qcm9iYWJpbGl0eSwgZW5jb2RlZERpZmZPZkJpZ3JhbVByb2JhYmlsaXR5KTsKKyAgICBpZiAobXVsdGlCaWdyYW1NYXApIHsKKyAgICAgICAgcmV0dXJuIG11bHRpQmlncmFtTWFwLT5nZXRCaWdyYW1Qcm9iYWJpbGl0eSgKKyAgICAgICAgICAgICAgICBkaWNSb290LCBwcmV2V29yZFBvcywgd29yZFBvcywgdW5pZ3JhbVByb2JhYmlsaXR5KTsKKyAgICB9CisgICAgcmV0dXJuIEJpbmFyeUZvcm1hdDo6Z2V0QmlncmFtUHJvYmFiaWxpdHkoZGljUm9vdCwgcHJldldvcmRQb3MsIHdvcmRQb3MsIHVuaWdyYW1Qcm9iYWJpbGl0eSk7CiB9CiAKIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogLy8gQmlncmFtIC8gVW5pZ3JhbSBkaWN0aW9uYXJ5IHV0aWxzIC8vCiAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KIAotLyogc3RhdGljICovIGludDE2X3QgRGljTm9kZVV0aWxzOjpnZXRCaWdyYW1Ob2RlRW5jb2RlZERpZmZQcm9iYWJpbGl0eShjb25zdCB1aW50OF90ICpjb25zdCBkaWNSb290LAotICAgICAgICBjb25zdCBEaWNOb2RlICpjb25zdCBub2RlLCBoYXNoX21hcF9jb21wYXQ8aW50LCBpbnQxNl90PiAqYmlncmFtQ2FjaGVNYXApIHsKLSAgICBjb25zdCBpbnQgd29yZFBvcyA9IG5vZGUtPmdldFBvcygpOwotICAgIGNvbnN0IGludCBwcmV2V29yZFBvcyA9IG5vZGUtPmdldFByZXZXb3JkUG9zKCk7Ci0gICAgcmV0dXJuIGdldEJpZ3JhbVByb2JhYmlsaXR5KGRpY1Jvb3QsIHByZXZXb3JkUG9zLCB3b3JkUG9zLCBiaWdyYW1DYWNoZU1hcCk7Ci19Ci0KLS8vIFRPRE86IE1vdmUgdGhpcyB0byBCaWdyYW1EaWN0aW9uYXJ5Ci0vKiBzdGF0aWMgKi8gaW50MTZfdCBEaWNOb2RlVXRpbHM6OmdldEJpZ3JhbVByb2JhYmlsaXR5KGNvbnN0IHVpbnQ4X3QgKmNvbnN0IGRpY1Jvb3QsIGludCBwb3MsCi0gICAgICAgIGNvbnN0IGludCBuZXh0UG9zLCBoYXNoX21hcF9jb21wYXQ8aW50LCBpbnQxNl90PiAqYmlncmFtQ2FjaGVNYXApIHsKLSAgICAvLyBUT0RPOiB0aGlzIGlzIHBhaW5mdWxseSBzbG93IGNvbXBhcmVkIHRvIHRoZSBtZXRob2QgdXNlZCBpbiB0aGUgcHJldmlvdXMgdmVyc2lvbiBvZiB0aGUKLSAgICAvLyBhbGdvcml0aG0uIFN3aXRjaCB0byB0aGF0IG1ldGhvZC4KLSAgICBpZiAoTk9UX1ZBTElEX1dPUkQgPT0gcG9zKSByZXR1cm4gTk9UX0FfUFJPQkFCSUxJVFk7Ci0gICAgaWYgKE5PVF9WQUxJRF9XT1JEID09IG5leHRQb3MpIHJldHVybiBOT1RfQV9QUk9CQUJJTElUWTsKLQotICAgIC8vIENyZWF0ZSBhIGhhc2ggY29kZSBmb3IgdGhlIGdpdmVuIG5vZGUgcGFpciAoYmFzZWQgb24gSm9zaCBCbG9jaCdzIGVmZmVjdGl2ZSBKYXZhKS4KLSAgICAvLyBUT0RPOiBVc2UgYSByZWFsIGhhc2ggbWFwIGRhdGEgc3RydWN0dXJlIHRoYXQgZGVhbHMgd2l0aCBjb2xsaXNpb25zLgotICAgIGludCBoYXNoID0gMTc7Ci0gICAgaGFzaCA9IGhhc2ggKiAzMSArIHBvczsKLSAgICBoYXNoID0gaGFzaCAqIDMxICsgbmV4dFBvczsKLQotICAgIGhhc2hfbWFwX2NvbXBhdDxpbnQsIGludDE2X3Q+Ojpjb25zdF9pdGVyYXRvciBtYXBQb3MgPSBiaWdyYW1DYWNoZU1hcC0+ZmluZChoYXNoKTsKLSAgICBpZiAobWFwUG9zICE9IGJpZ3JhbUNhY2hlTWFwLT5lbmQoKSkgewotICAgICAgICByZXR1cm4gbWFwUG9zLT5zZWNvbmQ7Ci0gICAgfQotICAgIGlmIChOT1RfVkFMSURfV09SRCA9PSBwb3MpIHsKLSAgICAgICAgcmV0dXJuIE5PVF9BX1BST0JBQklMSVRZOwotICAgIH0KLSAgICBjb25zdCB1aW50OF90IGZsYWdzID0gQmluYXJ5Rm9ybWF0OjpnZXRGbGFnc0FuZEZvcndhcmRQb2ludGVyKGRpY1Jvb3QsICZwb3MpOwotICAgIGlmICgwID09IChmbGFncyAmIEJpbmFyeUZvcm1hdDo6RkxBR19IQVNfQklHUkFNUykpIHsKLSAgICAgICAgcmV0dXJuIE5PVF9BX1BST0JBQklMSVRZOwotICAgIH0KLSAgICBpZiAoMCA9PSAoZmxhZ3MgJiBCaW5hcnlGb3JtYXQ6OkZMQUdfSEFTX01VTFRJUExFX0NIQVJTKSkgewotICAgICAgICBCaW5hcnlGb3JtYXQ6OmdldENvZGVQb2ludEFuZEZvcndhcmRQb2ludGVyKGRpY1Jvb3QsICZwb3MpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIHBvcyA9IEJpbmFyeUZvcm1hdDo6c2tpcE90aGVyQ2hhcmFjdGVycyhkaWNSb290LCBwb3MpOwotICAgIH0KLSAgICBwb3MgPSBCaW5hcnlGb3JtYXQ6OnNraXBDaGlsZHJlblBvc2l0aW9uKGZsYWdzLCBwb3MpOwotICAgIHBvcyA9IEJpbmFyeUZvcm1hdDo6c2tpcFByb2JhYmlsaXR5KGZsYWdzLCBwb3MpOwotICAgIHVpbnQ4X3QgYmlncmFtRmxhZ3M7Ci0gICAgaW50IGNvdW50ID0gMDsKLSAgICBkbyB7Ci0gICAgICAgIGJpZ3JhbUZsYWdzID0gQmluYXJ5Rm9ybWF0OjpnZXRGbGFnc0FuZEZvcndhcmRQb2ludGVyKGRpY1Jvb3QsICZwb3MpOwotICAgICAgICBjb25zdCBpbnQgYmlncmFtUG9zID0gQmluYXJ5Rm9ybWF0OjpnZXRBdHRyaWJ1dGVBZGRyZXNzQW5kRm9yd2FyZFBvaW50ZXIoZGljUm9vdCwKLSAgICAgICAgICAgICAgICBiaWdyYW1GbGFncywgJnBvcyk7Ci0gICAgICAgIGlmIChiaWdyYW1Qb3MgPT0gbmV4dFBvcykgewotICAgICAgICAgICAgY29uc3QgaW50MTZfdCBwcm9iYWJpbGl0eSA9IEJpbmFyeUZvcm1hdDo6TUFTS19BVFRSSUJVVEVfUFJPQkFCSUxJVFkgJiBiaWdyYW1GbGFnczsKLSAgICAgICAgICAgIGlmIChzdGF0aWNfY2FzdDxpbnQ+KGJpZ3JhbUNhY2hlTWFwLT5zaXplKCkpIDwgTUFYX0JJR1JBTV9NQVBfU0laRSkgewotICAgICAgICAgICAgICAgICgqYmlncmFtQ2FjaGVNYXApW2hhc2hdID0gcHJvYmFiaWxpdHk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gcHJvYmFiaWxpdHk7Ci0gICAgICAgIH0KLSAgICAgICAgY291bnQrKzsKLSAgICB9IHdoaWxlICgoMCAhPSAoQmluYXJ5Rm9ybWF0OjpGTEFHX0FUVFJJQlVURV9IQVNfTkVYVCAmIGJpZ3JhbUZsYWdzKSkKLSAgICAgICAgICAgICYmIGNvdW50IDwgTUFYX0JJR1JBTVNfQ09OU0lERVJFRF9QRVJfQ09OVEVYVCk7Ci0gICAgaWYgKHN0YXRpY19jYXN0PGludD4oYmlncmFtQ2FjaGVNYXAtPnNpemUoKSkgPCBNQVhfQklHUkFNX01BUF9TSVpFKSB7Ci0gICAgICAgIC8vIFRPRE86IGRvZXMgdGhpcyAtMSBtZWFuIE5PVF9WQUxJRF9XT1JEPwotICAgICAgICAoKmJpZ3JhbUNhY2hlTWFwKVtoYXNoXSA9IC0xOwotICAgIH0KLSAgICByZXR1cm4gTk9UX0FfUFJPQkFCSUxJVFk7Ci19Ci0KLS8qIHN0YXRpYyAqLyBpbnQgRGljTm9kZVV0aWxzOjpnZXRXb3JkUG9zKGNvbnN0IHVpbnQ4X3QgKmNvbnN0IGRpY1Jvb3QsIGNvbnN0IGludCAqd29yZCwKLSAgICAgICAgY29uc3QgaW50IHdvcmRMZW5ndGgpIHsKLSAgICBpZiAoIXdvcmQpIHsKLSAgICAgICAgcmV0dXJuIE5PVF9WQUxJRF9XT1JEOwotICAgIH0KLSAgICByZXR1cm4gQmluYXJ5Rm9ybWF0OjpnZXRUZXJtaW5hbFBvc2l0aW9uKAotICAgICAgICAgICAgZGljUm9vdCwgd29yZCwgd29yZExlbmd0aCwgZmFsc2UgLyogZm9yY2VMb3dlckNhc2VTZWFyY2ggKi8pOwotfQotCiAvKiBzdGF0aWMgKi8gYm9vbCBEaWNOb2RlVXRpbHM6OmlzTWF0Y2hlZE5vZGVDb2RlUG9pbnQoY29uc3QgUHJveGltaXR5SW5mb1N0YXRlICpwSW5mb1N0YXRlLAogICAgICAgICBjb25zdCBpbnQgcG9pbnRJbmRleCwgY29uc3QgYm9vbCBleGFjdE9ubHksIGNvbnN0IGludCBub2RlQ29kZVBvaW50KSB7CiAgICAgaWYgKCFwSW5mb1N0YXRlKSB7CmRpZmYgLS1naXQgYS9uYXRpdmUvam5pL3NyYy9zdWdnZXN0L2NvcmUvZGljbm9kZS9kaWNfbm9kZV91dGlscy5oIGIvbmF0aXZlL2puaS9zcmMvc3VnZ2VzdC9jb3JlL2RpY25vZGUvZGljX25vZGVfdXRpbHMuaAppbmRleCAxNWY5NzMwLi41YmM1NDJkIDEwMDY0NAotLS0gYS9uYXRpdmUvam5pL3NyYy9zdWdnZXN0L2NvcmUvZGljbm9kZS9kaWNfbm9kZV91dGlscy5oCisrKyBiL25hdGl2ZS9qbmkvc3JjL3N1Z2dlc3QvY29yZS9kaWNub2RlL2RpY19ub2RlX3V0aWxzLmgKQEAgLTIxLDcgKzIxLDYgQEAKICNpbmNsdWRlIDx2ZWN0b3I+CiAKICNpbmNsdWRlICJkZWZpbmVzLmgiCi0jaW5jbHVkZSAiaGFzaF9tYXBfY29tcGF0LmgiCiAKIG5hbWVzcGFjZSBsYXRpbmltZSB7CiAKQEAgLTI5LDYgKzI4LDcgQEAKIGNsYXNzIERpY05vZGVWZWN0b3I7CiBjbGFzcyBQcm94aW1pdHlJbmZvOwogY2xhc3MgUHJveGltaXR5SW5mb1N0YXRlOworY2xhc3MgTXVsdGlCaWdyYW1NYXA7CiAKIGNsYXNzIERpY05vZGVVdGlscyB7CiAgcHVibGljOgpAQCAtNDEsOSArNDEsOCBAQAogICAgIHN0YXRpYyB2b2lkIGluaXRCeUNvcHkoRGljTm9kZSAqc3JjTm9kZSwgRGljTm9kZSAqZGVzdE5vZGUpOwogICAgIHN0YXRpYyB2b2lkIGdldEFsbENoaWxkRGljTm9kZXMoRGljTm9kZSAqZGljTm9kZSwgY29uc3QgdWludDhfdCAqY29uc3QgZGljUm9vdCwKICAgICAgICAgICAgIERpY05vZGVWZWN0b3IgKmNoaWxkRGljTm9kZXMpOwotICAgIHN0YXRpYyBpbnQgZ2V0V29yZFBvcyhjb25zdCB1aW50OF90ICpjb25zdCBkaWNSb290LCBjb25zdCBpbnQgKndvcmQsIGNvbnN0IGludCBwcmV2V29yZExlbmd0aCk7CiAgICAgc3RhdGljIGZsb2F0IGdldEJpZ3JhbU5vZGVJbXByb2JhYmlsaXR5KGNvbnN0IHVpbnQ4X3QgKmNvbnN0IGRpY1Jvb3QsCi0gICAgICAgICAgICBjb25zdCBEaWNOb2RlICpjb25zdCBub2RlLCBoYXNoX21hcF9jb21wYXQ8aW50LCBpbnQxNl90PiAqY29uc3QgYmlncmFtQ2FjaGVNYXApOworICAgICAgICAgICAgY29uc3QgRGljTm9kZSAqY29uc3Qgbm9kZSwgTXVsdGlCaWdyYW1NYXAgKmNvbnN0IG11bHRpQmlncmFtTWFwKTsKICAgICBzdGF0aWMgYm9vbCBpc0RpY05vZGVGaWx0ZXJlZE91dChjb25zdCBpbnQgbm9kZUNvZGVQb2ludCwgY29uc3QgUHJveGltaXR5SW5mbyAqY29uc3QgcEluZm8sCiAgICAgICAgICAgICBjb25zdCBzdGQ6OnZlY3RvcjxpbnQ+ICpjb25zdCBjb2RlUG9pbnRzRmlsdGVyKTsKICAgICAvLyBUT0RPOiBNb3ZlIHRvIHByaXZhdGUKQEAgLTU4LDE1ICs1NywxMSBAQAogCiAgcHJpdmF0ZToKICAgICBESVNBTExPV19JTVBMSUNJVF9DT05TVFJVQ1RPUlMoRGljTm9kZVV0aWxzKTsKLSAgICAvLyBNYXggY2FjaGUgc2l6ZSBmb3IgdGhlIHNwYWNlIG9taXNzaW9uIGVycm9yIGNvcnJlY3Rpb24gYmlncmFtIGxvb2t1cAotICAgIHN0YXRpYyBjb25zdCBpbnQgTUFYX0JJR1JBTV9NQVBfU0laRSA9IDIwMDAwOwogICAgIC8vIE1heCBudW1iZXIgb2YgYmlncmFtcyB0byBsb29rIHVwCiAgICAgc3RhdGljIGNvbnN0IGludCBNQVhfQklHUkFNU19DT05TSURFUkVEX1BFUl9DT05URVhUID0gNTAwOwogCiAgICAgc3RhdGljIGludCBnZXRCaWdyYW1Ob2RlUHJvYmFiaWxpdHkoY29uc3QgdWludDhfdCAqY29uc3QgZGljUm9vdCwgY29uc3QgRGljTm9kZSAqY29uc3Qgbm9kZSwKLSAgICAgICAgICAgIGhhc2hfbWFwX2NvbXBhdDxpbnQsIGludDE2X3Q+ICpiaWdyYW1DYWNoZU1hcCk7Ci0gICAgc3RhdGljIGludDE2X3QgZ2V0QmlncmFtTm9kZUVuY29kZWREaWZmUHJvYmFiaWxpdHkoY29uc3QgdWludDhfdCAqY29uc3QgZGljUm9vdCwKLSAgICAgICAgICAgIGNvbnN0IERpY05vZGUgKmNvbnN0IG5vZGUsIGhhc2hfbWFwX2NvbXBhdDxpbnQsIGludDE2X3Q+ICpiaWdyYW1DYWNoZU1hcCk7CisgICAgICAgICAgICBNdWx0aUJpZ3JhbU1hcCAqbXVsdGlCaWdyYW1NYXApOwogICAgIHN0YXRpYyB2b2lkIGNyZWF0ZUFuZEdldFBhc3NpbmdDaGlsZE5vZGUoRGljTm9kZSAqZGljTm9kZSwgY29uc3QgUHJveGltaXR5SW5mb1N0YXRlICpwSW5mb1N0YXRlLAogICAgICAgICAgICAgY29uc3QgaW50IHBvaW50SW5kZXgsIGNvbnN0IGJvb2wgZXhhY3RPbmx5LCBEaWNOb2RlVmVjdG9yICpjaGlsZERpY05vZGVzKTsKICAgICBzdGF0aWMgdm9pZCBjcmVhdGVBbmRHZXRBbGxMZWF2aW5nQ2hpbGROb2RlcyhEaWNOb2RlICpkaWNOb2RlLCBjb25zdCB1aW50OF90ICpjb25zdCBkaWNSb290LApAQCAtNzcsOCArNzIsNiBAQAogICAgICAgICAgICAgY29uc3QgaW50IHRlcm1pbmFsRGVwdGgsIGNvbnN0IFByb3hpbWl0eUluZm9TdGF0ZSAqcEluZm9TdGF0ZSwgY29uc3QgaW50IHBvaW50SW5kZXgsCiAgICAgICAgICAgICBjb25zdCBib29sIGV4YWN0T25seSwgY29uc3Qgc3RkOjp2ZWN0b3I8aW50PiAqY29uc3QgY29kZVBvaW50c0ZpbHRlciwKICAgICAgICAgICAgIGNvbnN0IFByb3hpbWl0eUluZm8gKmNvbnN0IHBJbmZvLCBEaWNOb2RlVmVjdG9yICpjaGlsZERpY05vZGVzKTsKLSAgICBzdGF0aWMgaW50MTZfdCBnZXRCaWdyYW1Qcm9iYWJpbGl0eShjb25zdCB1aW50OF90ICpjb25zdCBkaWNSb290LCBpbnQgcG9zLCBjb25zdCBpbnQgbmV4dFBvcywKLSAgICAgICAgICAgIGhhc2hfbWFwX2NvbXBhdDxpbnQsIGludDE2X3Q+ICpiaWdyYW1DYWNoZU1hcCk7CiAKICAgICAvLyBUT0RPOiBNb3ZlIHRvIHByb3hpbWl0eSBpbmZvCiAgICAgc3RhdGljIGJvb2wgaXNNYXRjaGVkTm9kZUNvZGVQb2ludChjb25zdCBQcm94aW1pdHlJbmZvU3RhdGUgKnBJbmZvU3RhdGUsIGNvbnN0IGludCBwb2ludEluZGV4LApkaWZmIC0tZ2l0IGEvbmF0aXZlL2puaS9zcmMvc3VnZ2VzdC9jb3JlL3BvbGljeS9zY29yaW5nLmggYi9uYXRpdmUvam5pL3NyYy9zdWdnZXN0L2NvcmUvcG9saWN5L3Njb3JpbmcuaAppbmRleCBiOGMxMGUyLi4xMDJlODU2IDEwMDY0NAotLS0gYS9uYXRpdmUvam5pL3NyYy9zdWdnZXN0L2NvcmUvcG9saWN5L3Njb3JpbmcuaAorKysgYi9uYXRpdmUvam5pL3NyYy9zdWdnZXN0L2NvcmUvcG9saWN5L3Njb3JpbmcuaApAQCAtMjksMTYgKzI5LDE0IEBACiAgcHVibGljOgogICAgIHZpcnR1YWwgaW50IGNhbGN1bGF0ZUZpbmFsU2NvcmUoY29uc3QgZmxvYXQgY29tcG91bmREaXN0YW5jZSwgY29uc3QgaW50IGlucHV0U2l6ZSwKICAgICAgICAgICAgIGNvbnN0IGJvb2wgZm9yY2VDb21taXQpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgZ2V0TW9zdFByb2JhYmxlU3RyaW5nKAotICAgICAgICAgICAgY29uc3QgRGljVHJhdmVyc2VTZXNzaW9uICpjb25zdCB0cmF2ZXJzZVNlc3Npb24sIGNvbnN0IGludCB0ZXJtaW5hbFNpemUsCi0gICAgICAgICAgICBjb25zdCBmbG9hdCBsYW5ndWFnZVdlaWdodCwgaW50ICpjb25zdCBvdXRwdXRDb2RlUG9pbnRzLCBpbnQgKmNvbnN0IHR5cGUsCi0gICAgICAgICAgICBpbnQgKmNvbnN0IGZyZXEpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0TW9zdFByb2JhYmxlU3RyaW5nKGNvbnN0IERpY1RyYXZlcnNlU2Vzc2lvbiAqY29uc3QgdHJhdmVyc2VTZXNzaW9uLAorICAgICAgICAgICAgY29uc3QgaW50IHRlcm1pbmFsU2l6ZSwgY29uc3QgZmxvYXQgbGFuZ3VhZ2VXZWlnaHQsIGludCAqY29uc3Qgb3V0cHV0Q29kZVBvaW50cywKKyAgICAgICAgICAgIGludCAqY29uc3QgdHlwZSwgaW50ICpjb25zdCBmcmVxKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNhZmV0eU5ldEZvck1vc3RQcm9iYWJsZVN0cmluZyhjb25zdCBpbnQgdGVybWluYWxTaXplLAogICAgICAgICAgICAgY29uc3QgaW50IG1heFNjb3JlLCBpbnQgKmNvbnN0IG91dHB1dENvZGVQb2ludHMsIGludCAqY29uc3QgZnJlcXVlbmNpZXMpIGNvbnN0ID0gMDsKICAgICAvLyBUT0RPOiBNYWtlIG1vcmUgZ2VuZXJpYwotICAgIHZpcnR1YWwgdm9pZCBzZWFyY2hXb3JkV2l0aERvdWJsZUxldHRlcihEaWNOb2RlICp0ZXJtaW5hbHMsCi0gICAgICAgICAgICBjb25zdCBpbnQgdGVybWluYWxTaXplLCBpbnQgKmRvdWJsZUxldHRlclRlcm1pbmFsSW5kZXgsCi0gICAgICAgICAgICBEb3VibGVMZXR0ZXJMZXZlbCAqZG91YmxlTGV0dGVyTGV2ZWwpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2VhcmNoV29yZFdpdGhEb3VibGVMZXR0ZXIoRGljTm9kZSAqdGVybWluYWxzLCBjb25zdCBpbnQgdGVybWluYWxTaXplLAorICAgICAgICAgICAgaW50ICpkb3VibGVMZXR0ZXJUZXJtaW5hbEluZGV4LCBEb3VibGVMZXR0ZXJMZXZlbCAqZG91YmxlTGV0dGVyTGV2ZWwpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGZsb2F0IGdldEFkanVzdGVkTGFuZ3VhZ2VXZWlnaHQoRGljVHJhdmVyc2VTZXNzaW9uICpjb25zdCB0cmF2ZXJzZVNlc3Npb24sCiAgICAgICAgICAgICBEaWNOb2RlICpjb25zdCB0ZXJtaW5hbHMsIGNvbnN0IGludCBzaXplKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBmbG9hdCBnZXREb3VibGVMZXR0ZXJEZW1vdGlvbkRpc3RhbmNlQ29zdChjb25zdCBpbnQgdGVybWluYWxJbmRleCwKZGlmZiAtLWdpdCBhL25hdGl2ZS9qbmkvc3JjL3N1Z2dlc3QvY29yZS9wb2xpY3kvc3VnZ2VzdF9wb2xpY3kuaCBiL25hdGl2ZS9qbmkvc3JjL3N1Z2dlc3QvY29yZS9wb2xpY3kvc3VnZ2VzdF9wb2xpY3kuaAppbmRleCA4ODVlMjE0Li41YjY0MDJjIDEwMDY0NAotLS0gYS9uYXRpdmUvam5pL3NyYy9zdWdnZXN0L2NvcmUvcG9saWN5L3N1Z2dlc3RfcG9saWN5LmgKKysrIGIvbmF0aXZlL2puaS9zcmMvc3VnZ2VzdC9jb3JlL3BvbGljeS9zdWdnZXN0X3BvbGljeS5oCkBAIC0yMCw2ICsyMCw3IEBACiAjaW5jbHVkZSAiZGVmaW5lcy5oIgogCiBuYW1lc3BhY2UgbGF0aW5pbWUgeworCiBjbGFzcyBUcmF2ZXJzYWw7CiBjbGFzcyBTY29yaW5nOwogY2xhc3MgV2VpZ2h0aW5nOwpkaWZmIC0tZ2l0IGEvbmF0aXZlL2puaS9zcmMvc3VnZ2VzdC9jb3JlL3BvbGljeS90cmF2ZXJzYWwuaCBiL25hdGl2ZS9qbmkvc3JjL3N1Z2dlc3QvY29yZS9wb2xpY3kvdHJhdmVyc2FsLmgKaW5kZXggMDJjMzU4YS4uYzZmNjZmMiAxMDA2NDQKLS0tIGEvbmF0aXZlL2puaS9zcmMvc3VnZ2VzdC9jb3JlL3BvbGljeS90cmF2ZXJzYWwuaAorKysgYi9uYXRpdmUvam5pL3NyYy9zdWdnZXN0L2NvcmUvcG9saWN5L3RyYXZlcnNhbC5oCkBAIC0yOCw3ICsyOCw4IEBACiAgICAgdmlydHVhbCBpbnQgZ2V0TWF4UG9pbnRlckNvdW50KCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBhbGxvd3NFcnJvckNvcnJlY3Rpb25zKGNvbnN0IERpY05vZGUgKmNvbnN0IGRpY05vZGUpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaXNPbWlzc2lvbihjb25zdCBEaWNUcmF2ZXJzZVNlc3Npb24gKmNvbnN0IHRyYXZlcnNlU2Vzc2lvbiwKLSAgICAgICAgICAgIGNvbnN0IERpY05vZGUgKmNvbnN0IGRpY05vZGUsIGNvbnN0IERpY05vZGUgKmNvbnN0IGNoaWxkRGljTm9kZSkgY29uc3QgPSAwOworICAgICAgICAgICAgY29uc3QgRGljTm9kZSAqY29uc3QgZGljTm9kZSwgY29uc3QgRGljTm9kZSAqY29uc3QgY2hpbGREaWNOb2RlLAorICAgICAgICAgICAgY29uc3QgYm9vbCBhbGxvd3NFcnJvckNvcnJlY3Rpb25zKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIGlzU3BhY2VTdWJzdGl0dXRpb25UZXJtaW5hbChjb25zdCBEaWNUcmF2ZXJzZVNlc3Npb24gKmNvbnN0IHRyYXZlcnNlU2Vzc2lvbiwKICAgICAgICAgICAgIGNvbnN0IERpY05vZGUgKmNvbnN0IGRpY05vZGUpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaXNTcGFjZU9taXNzaW9uVGVybWluYWwoY29uc3QgRGljVHJhdmVyc2VTZXNzaW9uICpjb25zdCB0cmF2ZXJzZVNlc3Npb24sCkBAIC0zOCw5ICszOSw4IEBACiAgICAgICAgICAgICBjb25zdCBEaWNOb2RlICpjb25zdCBkaWNOb2RlKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIGNhbkRvTG9va0FoZWFkQ29ycmVjdGlvbihjb25zdCBEaWNUcmF2ZXJzZVNlc3Npb24gKmNvbnN0IHRyYXZlcnNlU2Vzc2lvbiwKICAgICAgICAgICAgIGNvbnN0IERpY05vZGUgKmNvbnN0IGRpY05vZGUpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIFByb3hpbWl0eVR5cGUgZ2V0UHJveGltaXR5VHlwZSgKLSAgICAgICAgICAgIGNvbnN0IERpY1RyYXZlcnNlU2Vzc2lvbiAqY29uc3QgdHJhdmVyc2VTZXNzaW9uLCBjb25zdCBEaWNOb2RlICpjb25zdCBkaWNOb2RlLAotICAgICAgICAgICAgY29uc3QgRGljTm9kZSAqY29uc3QgY2hpbGREaWNOb2RlKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBQcm94aW1pdHlUeXBlIGdldFByb3hpbWl0eVR5cGUoY29uc3QgRGljVHJhdmVyc2VTZXNzaW9uICpjb25zdCB0cmF2ZXJzZVNlc3Npb24sCisgICAgICAgICAgICBjb25zdCBEaWNOb2RlICpjb25zdCBkaWNOb2RlLCBjb25zdCBEaWNOb2RlICpjb25zdCBjaGlsZERpY05vZGUpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgc2FtZUFzVHlwZWQoY29uc3QgRGljVHJhdmVyc2VTZXNzaW9uICpjb25zdCB0cmF2ZXJzZVNlc3Npb24sCiAgICAgICAgICAgICBjb25zdCBEaWNOb2RlICpjb25zdCBkaWNOb2RlKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIG5lZWRzVG9UcmF2ZXJzZUFsbFVzZXJJbnB1dCgpIGNvbnN0ID0gMDsKQEAgLTQ4LDkgKzQ4LDggQEAKICAgICB2aXJ0dWFsIGJvb2wgYWxsb3dQYXJ0aWFsQ29tbWl0KCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgaW50IGdldERlZmF1bHRFeHBhbmREaWNOb2RlU2l6ZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGludCBnZXRNYXhDYWNoZVNpemUoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBib29sIGlzUG9zc2libGVPbWlzc2lvbkNoaWxkTm9kZSgKLSAgICAgICAgICAgIGNvbnN0IERpY1RyYXZlcnNlU2Vzc2lvbiAqY29uc3QgdHJhdmVyc2VTZXNzaW9uLCBjb25zdCBEaWNOb2RlICpjb25zdCBwYXJlbnREaWNOb2RlLAotICAgICAgICAgICAgY29uc3QgRGljTm9kZSAqY29uc3QgZGljTm9kZSkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc1Bvc3NpYmxlT21pc3Npb25DaGlsZE5vZGUoY29uc3QgRGljVHJhdmVyc2VTZXNzaW9uICpjb25zdCB0cmF2ZXJzZVNlc3Npb24sCisgICAgICAgICAgICBjb25zdCBEaWNOb2RlICpjb25zdCBwYXJlbnREaWNOb2RlLCBjb25zdCBEaWNOb2RlICpjb25zdCBkaWNOb2RlKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIGlzR29vZFRvVHJhdmVyc2VOZXh0V29yZChjb25zdCBEaWNOb2RlICpjb25zdCBkaWNOb2RlKSBjb25zdCA9IDA7CiAKICBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9uYXRpdmUvam5pL3NyYy9zdWdnZXN0L2NvcmUvcG9saWN5L3dlaWdodGluZy5jcHAgYi9uYXRpdmUvam5pL3NyYy9zdWdnZXN0L2NvcmUvcG9saWN5L3dlaWdodGluZy5jcHAKaW5kZXggYjljMGI4MS4uZDAxNTMxZiAxMDA2NDQKLS0tIGEvbmF0aXZlL2puaS9zcmMvc3VnZ2VzdC9jb3JlL3BvbGljeS93ZWlnaHRpbmcuY3BwCisrKyBiL25hdGl2ZS9qbmkvc3JjL3N1Z2dlc3QvY29yZS9wb2xpY3kvd2VpZ2h0aW5nLmNwcApAQCAtMTgsNyArMTgsNiBAQAogCiAjaW5jbHVkZSAiY2hhcl91dGlscy5oIgogI2luY2x1ZGUgImRlZmluZXMuaCIKLSNpbmNsdWRlICJoYXNoX21hcF9jb21wYXQuaCIKICNpbmNsdWRlICJzdWdnZXN0L2NvcmUvZGljbm9kZS9kaWNfbm9kZS5oIgogI2luY2x1ZGUgInN1Z2dlc3QvY29yZS9kaWNub2RlL2RpY19ub2RlX3Byb2ZpbGVyLmgiCiAjaW5jbHVkZSAic3VnZ2VzdC9jb3JlL2RpY25vZGUvZGljX25vZGVfdXRpbHMuaCIKQEAgLTI2LDYgKzI1LDggQEAKIAogbmFtZXNwYWNlIGxhdGluaW1lIHsKIAorY2xhc3MgTXVsdGlCaWdyYW1NYXA7CisKIHN0YXRpYyBpbmxpbmUgdm9pZCBwcm9maWxlKGNvbnN0IENvcnJlY3Rpb25UeXBlIGNvcnJlY3Rpb25UeXBlLCBEaWNOb2RlICpjb25zdCBub2RlKSB7CiAjaWYgREVCVUdfRElDVAogICAgIHN3aXRjaCAoY29ycmVjdGlvblR5cGUpIHsKQEAgLTY5LDIwICs3MCwxOCBAQAogfQogCiAvKiBzdGF0aWMgKi8gdm9pZCBXZWlnaHRpbmc6OmFkZENvc3RBbmRGb3J3YXJkSW5wdXRJbmRleChjb25zdCBXZWlnaHRpbmcgKmNvbnN0IHdlaWdodGluZywKLSAgICAgICAgY29uc3QgQ29ycmVjdGlvblR5cGUgY29ycmVjdGlvblR5cGUsCi0gICAgICAgIGNvbnN0IERpY1RyYXZlcnNlU2Vzc2lvbiAqY29uc3QgdHJhdmVyc2VTZXNzaW9uLAorICAgICAgICBjb25zdCBDb3JyZWN0aW9uVHlwZSBjb3JyZWN0aW9uVHlwZSwgY29uc3QgRGljVHJhdmVyc2VTZXNzaW9uICpjb25zdCB0cmF2ZXJzZVNlc3Npb24sCiAgICAgICAgIGNvbnN0IERpY05vZGUgKmNvbnN0IHBhcmVudERpY05vZGUsIERpY05vZGUgKmNvbnN0IGRpY05vZGUsCi0gICAgICAgIGhhc2hfbWFwX2NvbXBhdDxpbnQsIGludDE2X3Q+ICpjb25zdCBiaWdyYW1DYWNoZU1hcCkgeworICAgICAgICBNdWx0aUJpZ3JhbU1hcCAqY29uc3QgbXVsdGlCaWdyYW1NYXApIHsKICAgICBjb25zdCBpbnQgaW5wdXRTaXplID0gdHJhdmVyc2VTZXNzaW9uLT5nZXRJbnB1dFNpemUoKTsKICAgICBEaWNOb2RlX0lucHV0U3RhdGVHIGlucHV0U3RhdGVHOwogICAgIGlucHV0U3RhdGVHLm1OZWVkc1RvVXBkYXRlSW5wdXRTdGF0ZUcgPSBmYWxzZTsgLy8gRG9uJ3QgdXNlIGlucHV0IGluZm8gYnkgZGVmYXVsdAogICAgIGNvbnN0IGZsb2F0IHNwYXRpYWxDb3N0ID0gV2VpZ2h0aW5nOjpnZXRTcGF0aWFsQ29zdCh3ZWlnaHRpbmcsIGNvcnJlY3Rpb25UeXBlLAogICAgICAgICAgICAgdHJhdmVyc2VTZXNzaW9uLCBwYXJlbnREaWNOb2RlLCBkaWNOb2RlLCAmaW5wdXRTdGF0ZUcpOwogICAgIGNvbnN0IGZsb2F0IGxhbmd1YWdlQ29zdCA9IFdlaWdodGluZzo6Z2V0TGFuZ3VhZ2VDb3N0KHdlaWdodGluZywgY29ycmVjdGlvblR5cGUsCi0gICAgICAgICAgICB0cmF2ZXJzZVNlc3Npb24sIHBhcmVudERpY05vZGUsIGRpY05vZGUsIGJpZ3JhbUNhY2hlTWFwKTsKLSAgICBjb25zdCBib29sIGVkaXQgPSBXZWlnaHRpbmc6OmlzRWRpdENvcnJlY3Rpb24oY29ycmVjdGlvblR5cGUpOwotICAgIGNvbnN0IGJvb2wgcHJveGltaXR5ID0gV2VpZ2h0aW5nOjppc1Byb3hpbWl0eUNvcnJlY3Rpb24od2VpZ2h0aW5nLCBjb3JyZWN0aW9uVHlwZSwKLSAgICAgICAgICAgIHRyYXZlcnNlU2Vzc2lvbiwgZGljTm9kZSk7CisgICAgICAgICAgICB0cmF2ZXJzZVNlc3Npb24sIHBhcmVudERpY05vZGUsIGRpY05vZGUsIG11bHRpQmlncmFtTWFwKTsKKyAgICBjb25zdCBFcnJvclR5cGUgZXJyb3JUeXBlID0gd2VpZ2h0aW5nLT5nZXRFcnJvclR5cGUoY29ycmVjdGlvblR5cGUsIHRyYXZlcnNlU2Vzc2lvbiwKKyAgICAgICAgICAgIHBhcmVudERpY05vZGUsIGRpY05vZGUpOwogICAgIHByb2ZpbGUoY29ycmVjdGlvblR5cGUsIGRpY05vZGUpOwogICAgIGlmIChpbnB1dFN0YXRlRy5tTmVlZHNUb1VwZGF0ZUlucHV0U3RhdGVHKSB7CiAgICAgICAgIGRpY05vZGUtPnVwZGF0ZUlucHV0SW5kZXhHKCZpbnB1dFN0YXRlRyk7CkBAIC05MSwxMyArOTAsMTMgQEAKICAgICAgICAgICAgICAgICAoY29ycmVjdGlvblR5cGUgPT0gQ1RfVFJBTlNQT1NJVElPTikpOwogICAgIH0KICAgICBkaWNOb2RlLT5hZGRDb3N0KHNwYXRpYWxDb3N0LCBsYW5ndWFnZUNvc3QsIHdlaWdodGluZy0+bmVlZHNUb05vcm1hbGl6ZUNvbXBvdW5kRGlzdGFuY2UoKSwKLSAgICAgICAgICAgIGlucHV0U2l6ZSwgZWRpdCwgcHJveGltaXR5KTsKKyAgICAgICAgICAgIGlucHV0U2l6ZSwgZXJyb3JUeXBlKTsKIH0KIAogLyogc3RhdGljICovIGZsb2F0IFdlaWdodGluZzo6Z2V0U3BhdGlhbENvc3QoY29uc3QgV2VpZ2h0aW5nICpjb25zdCB3ZWlnaHRpbmcsCi0gICAgICAgIGNvbnN0IENvcnJlY3Rpb25UeXBlIGNvcnJlY3Rpb25UeXBlLAotICAgICAgICBjb25zdCBEaWNUcmF2ZXJzZVNlc3Npb24gKmNvbnN0IHRyYXZlcnNlU2Vzc2lvbiwgY29uc3QgRGljTm9kZSAqY29uc3QgcGFyZW50RGljTm9kZSwKLSAgICAgICAgY29uc3QgRGljTm9kZSAqY29uc3QgZGljTm9kZSwgRGljTm9kZV9JbnB1dFN0YXRlRyAqY29uc3QgaW5wdXRTdGF0ZUcpIHsKKyAgICAgICAgY29uc3QgQ29ycmVjdGlvblR5cGUgY29ycmVjdGlvblR5cGUsIGNvbnN0IERpY1RyYXZlcnNlU2Vzc2lvbiAqY29uc3QgdHJhdmVyc2VTZXNzaW9uLAorICAgICAgICBjb25zdCBEaWNOb2RlICpjb25zdCBwYXJlbnREaWNOb2RlLCBjb25zdCBEaWNOb2RlICpjb25zdCBkaWNOb2RlLAorICAgICAgICBEaWNOb2RlX0lucHV0U3RhdGVHICpjb25zdCBpbnB1dFN0YXRlRykgewogICAgIHN3aXRjaChjb3JyZWN0aW9uVHlwZSkgewogICAgIGNhc2UgQ1RfT01JU1NJT046CiAgICAgICAgIHJldHVybiB3ZWlnaHRpbmctPmdldE9taXNzaW9uQ29zdChwYXJlbnREaWNOb2RlLCBkaWNOb2RlKTsKQEAgLTEyOSwxNCArMTI4LDE0IEBACiAvKiBzdGF0aWMgKi8gZmxvYXQgV2VpZ2h0aW5nOjpnZXRMYW5ndWFnZUNvc3QoY29uc3QgV2VpZ2h0aW5nICpjb25zdCB3ZWlnaHRpbmcsCiAgICAgICAgIGNvbnN0IENvcnJlY3Rpb25UeXBlIGNvcnJlY3Rpb25UeXBlLCBjb25zdCBEaWNUcmF2ZXJzZVNlc3Npb24gKmNvbnN0IHRyYXZlcnNlU2Vzc2lvbiwKICAgICAgICAgY29uc3QgRGljTm9kZSAqY29uc3QgcGFyZW50RGljTm9kZSwgY29uc3QgRGljTm9kZSAqY29uc3QgZGljTm9kZSwKLSAgICAgICAgaGFzaF9tYXBfY29tcGF0PGludCwgaW50MTZfdD4gKmNvbnN0IGJpZ3JhbUNhY2hlTWFwKSB7CisgICAgICAgIE11bHRpQmlncmFtTWFwICpjb25zdCBtdWx0aUJpZ3JhbU1hcCkgewogICAgIHN3aXRjaChjb3JyZWN0aW9uVHlwZSkgewogICAgIGNhc2UgQ1RfT01JU1NJT046CiAgICAgICAgIHJldHVybiAwLjBmOwogICAgIGNhc2UgQ1RfU1VCU1RJVFVUSU9OOgogICAgICAgICByZXR1cm4gMC4wZjsKICAgICBjYXNlIENUX05FV19XT1JEX1NQQUNFX09NSVRUSU9OOgotICAgICAgICByZXR1cm4gd2VpZ2h0aW5nLT5nZXROZXdXb3JkQmlncmFtQ29zdCh0cmF2ZXJzZVNlc3Npb24sIHBhcmVudERpY05vZGUsIGJpZ3JhbUNhY2hlTWFwKTsKKyAgICAgICAgcmV0dXJuIHdlaWdodGluZy0+Z2V0TmV3V29yZEJpZ3JhbUNvc3QodHJhdmVyc2VTZXNzaW9uLCBwYXJlbnREaWNOb2RlLCBtdWx0aUJpZ3JhbU1hcCk7CiAgICAgY2FzZSBDVF9NQVRDSDoKICAgICAgICAgcmV0dXJuIDAuMGY7CiAgICAgY2FzZSBDVF9DT01QTEVUSU9OOgpAQCAtMTQ0LDExICsxNDMsMTEgQEAKICAgICBjYXNlIENUX1RFUk1JTkFMOiB7CiAgICAgICAgIGNvbnN0IGZsb2F0IGxhbmd1YWdlSW1wcm9iYWJpbGl0eSA9CiAgICAgICAgICAgICAgICAgRGljTm9kZVV0aWxzOjpnZXRCaWdyYW1Ob2RlSW1wcm9iYWJpbGl0eSgKLSAgICAgICAgICAgICAgICAgICAgICAgIHRyYXZlcnNlU2Vzc2lvbi0+Z2V0T2Zmc2V0RGljdCgpLCBkaWNOb2RlLCBiaWdyYW1DYWNoZU1hcCk7CisgICAgICAgICAgICAgICAgICAgICAgICB0cmF2ZXJzZVNlc3Npb24tPmdldE9mZnNldERpY3QoKSwgZGljTm9kZSwgbXVsdGlCaWdyYW1NYXApOwogICAgICAgICByZXR1cm4gd2VpZ2h0aW5nLT5nZXRUZXJtaW5hbExhbmd1YWdlQ29zdCh0cmF2ZXJzZVNlc3Npb24sIGRpY05vZGUsIGxhbmd1YWdlSW1wcm9iYWJpbGl0eSk7CiAgICAgfQogICAgIGNhc2UgQ1RfTkVXX1dPUkRfU1BBQ0VfU1VCU1RJVFVUSU9OOgotICAgICAgICByZXR1cm4gd2VpZ2h0aW5nLT5nZXROZXdXb3JkQmlncmFtQ29zdCh0cmF2ZXJzZVNlc3Npb24sIHBhcmVudERpY05vZGUsIGJpZ3JhbUNhY2hlTWFwKTsKKyAgICAgICAgcmV0dXJuIHdlaWdodGluZy0+Z2V0TmV3V29yZEJpZ3JhbUNvc3QodHJhdmVyc2VTZXNzaW9uLCBwYXJlbnREaWNOb2RlLCBtdWx0aUJpZ3JhbU1hcCk7CiAgICAgY2FzZSBDVF9JTlNFUlRJT046CiAgICAgICAgIHJldHVybiAwLjBmOwogICAgIGNhc2UgQ1RfVFJBTlNQT1NJVElPTjoKQEAgLTE1OCw2NCArMTU3LDYgQEAKICAgICB9CiB9CiAKLS8qIHN0YXRpYyAqLyBib29sIFdlaWdodGluZzo6aXNFZGl0Q29ycmVjdGlvbihjb25zdCBDb3JyZWN0aW9uVHlwZSBjb3JyZWN0aW9uVHlwZSkgewotICAgIHN3aXRjaChjb3JyZWN0aW9uVHlwZSkgewotICAgICAgICBjYXNlIENUX09NSVNTSU9OOgotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIGNhc2UgQ1RfQURESVRJT05BTF9QUk9YSU1JVFk6Ci0gICAgICAgICAgICAvLyBTaG91bGQgcmV0dXJuIHRydWU/Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGNhc2UgQ1RfU1VCU1RJVFVUSU9OOgotICAgICAgICAgICAgLy8gU2hvdWxkIHJldHVybiB0cnVlPwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBjYXNlIENUX05FV19XT1JEX1NQQUNFX09NSVRUSU9OOgotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBjYXNlIENUX01BVENIOgotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBjYXNlIENUX0NPTVBMRVRJT046Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGNhc2UgQ1RfVEVSTUlOQUw6Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGNhc2UgQ1RfTkVXX1dPUkRfU1BBQ0VfU1VCU1RJVFVUSU9OOgotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBjYXNlIENUX0lOU0VSVElPTjoKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICBjYXNlIENUX1RSQU5TUE9TSVRJT046Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci19Ci0KLS8qIHN0YXRpYyAqLyBib29sIFdlaWdodGluZzo6aXNQcm94aW1pdHlDb3JyZWN0aW9uKGNvbnN0IFdlaWdodGluZyAqY29uc3Qgd2VpZ2h0aW5nLAotICAgICAgICBjb25zdCBDb3JyZWN0aW9uVHlwZSBjb3JyZWN0aW9uVHlwZSwKLSAgICAgICAgY29uc3QgRGljVHJhdmVyc2VTZXNzaW9uICpjb25zdCB0cmF2ZXJzZVNlc3Npb24sIGNvbnN0IERpY05vZGUgKmNvbnN0IGRpY05vZGUpIHsKLSAgICBzd2l0Y2goY29ycmVjdGlvblR5cGUpIHsKLSAgICAgICAgY2FzZSBDVF9PTUlTU0lPTjoKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgY2FzZSBDVF9BRERJVElPTkFMX1BST1hJTUlUWToKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgY2FzZSBDVF9TVUJTVElUVVRJT046Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGNhc2UgQ1RfTkVXX1dPUkRfU1BBQ0VfT01JVFRJT046Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGNhc2UgQ1RfTUFUQ0g6Ci0gICAgICAgICAgICByZXR1cm4gd2VpZ2h0aW5nLT5pc1Byb3hpbWl0eURpY05vZGUodHJhdmVyc2VTZXNzaW9uLCBkaWNOb2RlKTsKLSAgICAgICAgY2FzZSBDVF9DT01QTEVUSU9OOgotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBjYXNlIENUX1RFUk1JTkFMOgotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBjYXNlIENUX05FV19XT1JEX1NQQUNFX1NVQlNUSVRVVElPTjoKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgY2FzZSBDVF9JTlNFUlRJT046Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGNhc2UgQ1RfVFJBTlNQT1NJVElPTjoKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci19Ci0KIC8qIHN0YXRpYyAqLyBpbnQgV2VpZ2h0aW5nOjpnZXRGb3J3YXJkSW5wdXRDb3VudChjb25zdCBDb3JyZWN0aW9uVHlwZSBjb3JyZWN0aW9uVHlwZSkgewogICAgIHN3aXRjaChjb3JyZWN0aW9uVHlwZSkgewogICAgICAgICBjYXNlIENUX09NSVNTSU9OOgpAQCAtMjI5LDcgKzE3MCw3IEBACiAgICAgICAgIGNhc2UgQ1RfTUFUQ0g6CiAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgY2FzZSBDVF9DT01QTEVUSU9OOgotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgY2FzZSBDVF9URVJNSU5BTDoKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICBjYXNlIENUX05FV19XT1JEX1NQQUNFX1NVQlNUSVRVVElPTjoKZGlmZiAtLWdpdCBhL25hdGl2ZS9qbmkvc3JjL3N1Z2dlc3QvY29yZS9wb2xpY3kvd2VpZ2h0aW5nLmggYi9uYXRpdmUvam5pL3NyYy9zdWdnZXN0L2NvcmUvcG9saWN5L3dlaWdodGluZy5oCmluZGV4IGJjZTQ3OWMuLjBkMjc0NWIgMTAwNjQ0Ci0tLSBhL25hdGl2ZS9qbmkvc3JjL3N1Z2dlc3QvY29yZS9wb2xpY3kvd2VpZ2h0aW5nLmgKKysrIGIvbmF0aXZlL2puaS9zcmMvc3VnZ2VzdC9jb3JlL3BvbGljeS93ZWlnaHRpbmcuaApAQCAtMTgsMTMgKzE4LDEzIEBACiAjZGVmaW5lIExBVElOSU1FX1dFSUdIVElOR19ICiAKICNpbmNsdWRlICJkZWZpbmVzLmgiCi0jaW5jbHVkZSAiaGFzaF9tYXBfY29tcGF0LmgiCiAKIG5hbWVzcGFjZSBsYXRpbmltZSB7CiAKIGNsYXNzIERpY05vZGU7CiBjbGFzcyBEaWNUcmF2ZXJzZVNlc3Npb247CiBzdHJ1Y3QgRGljTm9kZV9JbnB1dFN0YXRlRzsKK2NsYXNzIE11bHRpQmlncmFtTWFwOwogCiBjbGFzcyBXZWlnaHRpbmcgewogIHB1YmxpYzoKQEAgLTMyLDcgKzMyLDcgQEAKICAgICAgICAgICAgIGNvbnN0IENvcnJlY3Rpb25UeXBlIGNvcnJlY3Rpb25UeXBlLAogICAgICAgICAgICAgY29uc3QgRGljVHJhdmVyc2VTZXNzaW9uICpjb25zdCB0cmF2ZXJzZVNlc3Npb24sCiAgICAgICAgICAgICBjb25zdCBEaWNOb2RlICpjb25zdCBwYXJlbnREaWNOb2RlLCBEaWNOb2RlICpjb25zdCBkaWNOb2RlLAotICAgICAgICAgICAgaGFzaF9tYXBfY29tcGF0PGludCwgaW50MTZfdD4gKmNvbnN0IGJpZ3JhbUNhY2hlTWFwKTsKKyAgICAgICAgICAgIE11bHRpQmlncmFtTWFwICpjb25zdCBtdWx0aUJpZ3JhbU1hcCk7CiAKICBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCBmbG9hdCBnZXRUZXJtaW5hbFNwYXRpYWxDb3N0KGNvbnN0IERpY1RyYXZlcnNlU2Vzc2lvbiAqY29uc3QgdHJhdmVyc2VTZXNzaW9uLApAQCAtNjEsNyArNjEsNyBAQAogCiAgICAgdmlydHVhbCBmbG9hdCBnZXROZXdXb3JkQmlncmFtQ29zdCgKICAgICAgICAgICAgIGNvbnN0IERpY1RyYXZlcnNlU2Vzc2lvbiAqY29uc3QgdHJhdmVyc2VTZXNzaW9uLCBjb25zdCBEaWNOb2RlICpjb25zdCBkaWNOb2RlLAotICAgICAgICAgICAgaGFzaF9tYXBfY29tcGF0PGludCwgaW50MTZfdD4gKmNvbnN0IGJpZ3JhbUNhY2hlTWFwKSBjb25zdCA9IDA7CisgICAgICAgICAgICBNdWx0aUJpZ3JhbU1hcCAqY29uc3QgbXVsdGlCaWdyYW1NYXApIGNvbnN0ID0gMDsKIAogICAgIHZpcnR1YWwgZmxvYXQgZ2V0Q29tcGxldGlvbkNvc3QoCiAgICAgICAgICAgICBjb25zdCBEaWNUcmF2ZXJzZVNlc3Npb24gKmNvbnN0IHRyYXZlcnNlU2Vzc2lvbiwKQEAgLTgwLDYgKzgwLDEwIEBACiAgICAgdmlydHVhbCBmbG9hdCBnZXRTcGFjZVN1YnN0aXR1dGlvbkNvc3QoY29uc3QgRGljVHJhdmVyc2VTZXNzaW9uICpjb25zdCB0cmF2ZXJzZVNlc3Npb24sCiAgICAgICAgICAgICBjb25zdCBEaWNOb2RlICpjb25zdCBkaWNOb2RlKSBjb25zdCA9IDA7CiAKKyAgICB2aXJ0dWFsIEVycm9yVHlwZSBnZXRFcnJvclR5cGUoY29uc3QgQ29ycmVjdGlvblR5cGUgY29ycmVjdGlvblR5cGUsCisgICAgICAgICAgICBjb25zdCBEaWNUcmF2ZXJzZVNlc3Npb24gKmNvbnN0IHRyYXZlcnNlU2Vzc2lvbiwKKyAgICAgICAgICAgIGNvbnN0IERpY05vZGUgKmNvbnN0IHBhcmVudERpY05vZGUsIGNvbnN0IERpY05vZGUgKmNvbnN0IGRpY05vZGUpIGNvbnN0ID0gMDsKKwogICAgIFdlaWdodGluZygpIHt9CiAgICAgdmlydHVhbCB+V2VpZ2h0aW5nKCkge30KIApAQCAtOTMsMTMgKzk3LDcgQEAKICAgICBzdGF0aWMgZmxvYXQgZ2V0TGFuZ3VhZ2VDb3N0KGNvbnN0IFdlaWdodGluZyAqY29uc3Qgd2VpZ2h0aW5nLAogICAgICAgICAgICAgY29uc3QgQ29ycmVjdGlvblR5cGUgY29ycmVjdGlvblR5cGUsIGNvbnN0IERpY1RyYXZlcnNlU2Vzc2lvbiAqY29uc3QgdHJhdmVyc2VTZXNzaW9uLAogICAgICAgICAgICAgY29uc3QgRGljTm9kZSAqY29uc3QgcGFyZW50RGljTm9kZSwgY29uc3QgRGljTm9kZSAqY29uc3QgZGljTm9kZSwKLSAgICAgICAgICAgIGhhc2hfbWFwX2NvbXBhdDxpbnQsIGludDE2X3Q+ICpjb25zdCBiaWdyYW1DYWNoZU1hcCk7Ci0gICAgLy8gVE9ETzogTW92ZSB0byBUeXBpbmdXZWlnaHRpbmcgYW5kIEdlc3R1cmVXZWlnaHRpbmc/Ci0gICAgc3RhdGljIGJvb2wgaXNFZGl0Q29ycmVjdGlvbihjb25zdCBDb3JyZWN0aW9uVHlwZSBjb3JyZWN0aW9uVHlwZSk7Ci0gICAgLy8gVE9ETzogTW92ZSB0byBUeXBpbmdXZWlnaHRpbmcgYW5kIEdlc3R1cmVXZWlnaHRpbmc/Ci0gICAgc3RhdGljIGJvb2wgaXNQcm94aW1pdHlDb3JyZWN0aW9uKGNvbnN0IFdlaWdodGluZyAqY29uc3Qgd2VpZ2h0aW5nLAotICAgICAgICAgICAgY29uc3QgQ29ycmVjdGlvblR5cGUgY29ycmVjdGlvblR5cGUsIGNvbnN0IERpY1RyYXZlcnNlU2Vzc2lvbiAqY29uc3QgdHJhdmVyc2VTZXNzaW9uLAotICAgICAgICAgICAgY29uc3QgRGljTm9kZSAqY29uc3QgZGljTm9kZSk7CisgICAgICAgICAgICBNdWx0aUJpZ3JhbU1hcCAqY29uc3QgbXVsdGlCaWdyYW1NYXApOwogICAgIC8vIFRPRE86IE1vdmUgdG8gVHlwaW5nV2VpZ2h0aW5nIGFuZCBHZXN0dXJlV2VpZ2h0aW5nPwogICAgIHN0YXRpYyBpbnQgZ2V0Rm9yd2FyZElucHV0Q291bnQoY29uc3QgQ29ycmVjdGlvblR5cGUgY29ycmVjdGlvblR5cGUpOwogfTsKZGlmZiAtLWdpdCBhL25hdGl2ZS9qbmkvc3JjL3N1Z2dlc3QvY29yZS9zZXNzaW9uL2RpY190cmF2ZXJzZV9zZXNzaW9uLmNwcCBiL25hdGl2ZS9qbmkvc3JjL3N1Z2dlc3QvY29yZS9zZXNzaW9uL2RpY190cmF2ZXJzZV9zZXNzaW9uLmNwcAppbmRleCAzYzQ0ZGIyLi41MTE2NTg1IDEwMDY0NAotLS0gYS9uYXRpdmUvam5pL3NyYy9zdWdnZXN0L2NvcmUvc2Vzc2lvbi9kaWNfdHJhdmVyc2Vfc2Vzc2lvbi5jcHAKKysrIGIvbmF0aXZlL2puaS9zcmMvc3VnZ2VzdC9jb3JlL3Nlc3Npb24vZGljX3RyYXZlcnNlX3Nlc3Npb24uY3BwCkBAIC02OSw3ICs2OSwxNSBAQAogICAgICAgICBtUHJldldvcmRQb3MgPSBOT1RfVkFMSURfV09SRDsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBtUHJldldvcmRQb3MgPSBEaWNOb2RlVXRpbHM6OmdldFdvcmRQb3MoZGljdGlvbmFyeS0+Z2V0T2Zmc2V0RGljdCgpLCBwcmV2V29yZCwgcHJldldvcmRMZW5ndGgpOworICAgIC8vIFRPRE86IG1lcmdlIGZvbGxvd2luZyBzaW1pbGFyIGNhbGxzIHRvIGdldFRlcm1pbmFsUG9zaXRpb24gaW50byBvbmUgY2FzZS1pbnNlbnNpdGl2ZSBjYWxsLgorICAgIG1QcmV2V29yZFBvcyA9IEJpbmFyeUZvcm1hdDo6Z2V0VGVybWluYWxQb3NpdGlvbihkaWN0aW9uYXJ5LT5nZXRPZmZzZXREaWN0KCksIHByZXZXb3JkLAorICAgICAgICAgICAgcHJldldvcmRMZW5ndGgsIGZhbHNlIC8qIGZvcmNlTG93ZXJDYXNlU2VhcmNoICovKTsKKyAgICBpZiAobVByZXZXb3JkUG9zID09IE5PVF9WQUxJRF9XT1JEKSB7CisgICAgICAgIC8vIENoZWNrIGJpZ3JhbXMgZm9yIGxvd2VyLWNhc2VkIHByZXZpb3VzIHdvcmQgaWYgb3JpZ2luYWwgd2FzIG5vdCBmb3VuZC4gVXNlZnVsIGZvcgorICAgICAgICAvLyBhdXRvLWNhcGl0YWxpemVkIHdvcmRzIGxpa2UgIlRoZSBbY3VycmVudF93b3JkXSIuCisgICAgICAgIG1QcmV2V29yZFBvcyA9IEJpbmFyeUZvcm1hdDo6Z2V0VGVybWluYWxQb3NpdGlvbihkaWN0aW9uYXJ5LT5nZXRPZmZzZXREaWN0KCksIHByZXZXb3JkLAorICAgICAgICAgICAgICAgIHByZXZXb3JkTGVuZ3RoLCB0cnVlIC8qIGZvcmNlTG93ZXJDYXNlU2VhcmNoICovKTsKKyAgICB9CiB9CiAKIHZvaWQgRGljVHJhdmVyc2VTZXNzaW9uOjpzZXR1cEZvckdldFN1Z2dlc3Rpb25zKGNvbnN0IFByb3hpbWl0eUluZm8gKnBJbmZvLApAQCAtOTIsNyArMTAwLDcgQEAKIAogdm9pZCBEaWNUcmF2ZXJzZVNlc3Npb246OnJlc2V0Q2FjaGUoY29uc3QgaW50IG5leHRBY3RpdmVDYWNoZVNpemUsIGNvbnN0IGludCBtYXhXb3JkcykgewogICAgIG1EaWNOb2Rlc0NhY2hlLnJlc2V0KG5leHRBY3RpdmVDYWNoZVNpemUsIG1heFdvcmRzKTsKLSAgICBtQmlncmFtQ2FjaGVNYXAuY2xlYXIoKTsKKyAgICBtTXVsdGlCaWdyYW1NYXAuY2xlYXIoKTsKICAgICBtUGFydGlhbGx5Q29tbWl0ZWQgPSBmYWxzZTsKIH0KIApkaWZmIC0tZ2l0IGEvbmF0aXZlL2puaS9zcmMvc3VnZ2VzdC9jb3JlL3Nlc3Npb24vZGljX3RyYXZlcnNlX3Nlc3Npb24uaCBiL25hdGl2ZS9qbmkvc3JjL3N1Z2dlc3QvY29yZS9zZXNzaW9uL2RpY190cmF2ZXJzZV9zZXNzaW9uLmgKaW5kZXggZDljMmE1MS4uZDg4YmU1YiAxMDA2NDQKLS0tIGEvbmF0aXZlL2puaS9zcmMvc3VnZ2VzdC9jb3JlL3Nlc3Npb24vZGljX3RyYXZlcnNlX3Nlc3Npb24uaAorKysgYi9uYXRpdmUvam5pL3NyYy9zdWdnZXN0L2NvcmUvc2Vzc2lvbi9kaWNfdHJhdmVyc2Vfc2Vzc2lvbi5oCkBAIC0yMSw4ICsyMSw4IEBACiAjaW5jbHVkZSA8dmVjdG9yPgogCiAjaW5jbHVkZSAiZGVmaW5lcy5oIgotI2luY2x1ZGUgImhhc2hfbWFwX2NvbXBhdC5oIgogI2luY2x1ZGUgImpuaS5oIgorI2luY2x1ZGUgIm11bHRpX2JpZ3JhbV9tYXAuaCIKICNpbmNsdWRlICJwcm94aW1pdHlfaW5mb19zdGF0ZS5oIgogI2luY2x1ZGUgInN1Z2dlc3QvY29yZS9kaWNub2RlL2RpY19ub2Rlc19jYWNoZS5oIgogCkBAIC0zNSw3ICszNSw3IEBACiAgcHVibGljOgogICAgIEFLX0ZPUkNFX0lOTElORSBEaWNUcmF2ZXJzZVNlc3Npb24oSk5JRW52ICplbnYsIGpzdHJpbmcgbG9jYWxlU3RyKQogICAgICAgICAgICAgOiBtUHJldldvcmRQb3MoTk9UX1ZBTElEX1dPUkQpLCBtUHJveGltaXR5SW5mbygwKSwKLSAgICAgICAgICAgICAgbURpY3Rpb25hcnkoMCksIG1EaWNOb2Rlc0NhY2hlKCksIG1CaWdyYW1DYWNoZU1hcCgpLAorICAgICAgICAgICAgICBtRGljdGlvbmFyeSgwKSwgbURpY05vZGVzQ2FjaGUoKSwgbU11bHRpQmlncmFtTWFwKCksCiAgICAgICAgICAgICAgIG1JbnB1dFNpemUoMCksIG1QYXJ0aWFsbHlDb21taXRlZChmYWxzZSksIG1NYXhQb2ludGVyQ291bnQoMSksCiAgICAgICAgICAgICAgIG1NdWx0aVdvcmRDb3N0TXVsdGlwbGllcigxLjBmKSB7CiAgICAgICAgIC8vIE5PVEU6IG1Qcm94aW1pdHlJbmZvU3RhdGVzIGlzIGFuIGFycmF5IG9mIGluc3RhbmNlcy4KQEAgLTY3LDcgKzY3LDcgQEAKICAgICAvLyBUT0RPOiBVc2UgcHJvcGVyIHBhcmFtZXRlciB3aGVuIGNoYW5nZWQKICAgICBpbnQgZ2V0RGljUm9vdFBvcygpIGNvbnN0IHsgcmV0dXJuIDA7IH0KICAgICBEaWNOb2Rlc0NhY2hlICpnZXREaWNUcmF2ZXJzZUNhY2hlKCkgeyByZXR1cm4gJm1EaWNOb2Rlc0NhY2hlOyB9Ci0gICAgaGFzaF9tYXBfY29tcGF0PGludCwgaW50MTZfdD4gKmdldEJpZ3JhbUNhY2hlTWFwKCkgeyByZXR1cm4gJm1CaWdyYW1DYWNoZU1hcDsgfQorICAgIE11bHRpQmlncmFtTWFwICpnZXRNdWx0aUJpZ3JhbU1hcCgpIHsgcmV0dXJuICZtTXVsdGlCaWdyYW1NYXA7IH0KICAgICBjb25zdCBQcm94aW1pdHlJbmZvU3RhdGUgKmdldFByb3hpbWl0eUluZm9TdGF0ZShpbnQgaWQpIGNvbnN0IHsKICAgICAgICAgcmV0dXJuICZtUHJveGltaXR5SW5mb1N0YXRlc1tpZF07CiAgICAgfQpAQCAtMTcwLDcgKzE3MCw3IEBACiAKICAgICBEaWNOb2Rlc0NhY2hlIG1EaWNOb2Rlc0NhY2hlOwogICAgIC8vIFRlbXBvcmFyeSBjYWNoZSBmb3IgYmlncmFtIGZyZXF1ZW5jaWVzCi0gICAgaGFzaF9tYXBfY29tcGF0PGludCwgaW50MTZfdD4gbUJpZ3JhbUNhY2hlTWFwOworICAgIE11bHRpQmlncmFtTWFwIG1NdWx0aUJpZ3JhbU1hcDsKICAgICBQcm94aW1pdHlJbmZvU3RhdGUgbVByb3hpbWl0eUluZm9TdGF0ZXNbTUFYX1BPSU5URVJfQ09VTlRfR107CiAKICAgICBpbnQgbUlucHV0U2l6ZTsKZGlmZiAtLWdpdCBhL25hdGl2ZS9qbmkvc3JjL3N1Z2dlc3QvY29yZS9zdWdnZXN0LmNwcCBiL25hdGl2ZS9qbmkvc3JjL3N1Z2dlc3QvY29yZS9zdWdnZXN0LmNwcAppbmRleCA5ZGUyY2QyLi4zMjIxZGVlIDEwMDY0NAotLS0gYS9uYXRpdmUvam5pL3NyYy9zdWdnZXN0L2NvcmUvc3VnZ2VzdC5jcHAKKysrIGIvbmF0aXZlL2puaS9zcmMvc3VnZ2VzdC9jb3JlL3N1Z2dlc3QuY3BwCkBAIC0xNjEsMTIgKzE2MSwxNSBAQAogICAgICAgICAgICAgICAgICsgZG91YmxlTGV0dGVyQ29zdDsKICAgICAgICAgY29uc3QgVGVybWluYWxBdHRyaWJ1dGVzIHRlcm1pbmFsQXR0cmlidXRlcyh0cmF2ZXJzZVNlc3Npb24tPmdldE9mZnNldERpY3QoKSwKICAgICAgICAgICAgICAgICB0ZXJtaW5hbERpY05vZGUtPmdldEZsYWdzKCksIHRlcm1pbmFsRGljTm9kZS0+Z2V0QXR0cmlidXRlc1BvcygpKTsKLSAgICAgICAgY29uc3QgaW50IG9yaWdpbmFsVGVybWluYWxQcm9iYWJpbGl0eSA9IHRlcm1pbmFsRGljTm9kZS0+Z2V0UHJvYmFiaWxpdHkoKTsKKyAgICAgICAgY29uc3QgYm9vbCBpc1Bvc3NpYmx5T2ZmZW5zaXZlV29yZCA9IHRlcm1pbmFsRGljTm9kZS0+Z2V0UHJvYmFiaWxpdHkoKSA8PSAwOworICAgICAgICBjb25zdCBib29sIGlzRXhhY3RNYXRjaCA9IHRlcm1pbmFsRGljTm9kZS0+aXNFeGFjdE1hdGNoKCk7CisgICAgICAgIGNvbnN0IGludCBvdXRwdXRUeXBlRmxhZ3MgPQorICAgICAgICAgICAgICAgIGlzUG9zc2libHlPZmZlbnNpdmVXb3JkID8gRGljdGlvbmFyeTo6S0lORF9GTEFHX1BPU1NJQkxZX09GRkVOU0lWRSA6IDAKKyAgICAgICAgICAgICAgICB8IGlzRXhhY3RNYXRjaCA/IERpY3Rpb25hcnk6OktJTkRfRkxBR19FWEFDVF9NQVRDSCA6IDA7CiAKLSAgICAgICAgLy8gRG8gbm90IHN1Z2dlc3Qgd29yZHMgd2l0aCBhIDAgcHJvYmFiaWxpdHksIG9yIGVudHJpZXMgdGhhdCBhcmUgYmxhY2tsaXN0ZWQgb3IgZG8gbm90Ci0gICAgICAgIC8vIHJlcHJlc2VudCBhIHdvcmQuIEhvd2V2ZXIsIHdlIHNob3VsZCBzdGlsbCBzdWJtaXQgdGhlaXIgc2hvcnRjdXRzIGlmIGFueS4KLSAgICAgICAgY29uc3QgYm9vbCBpc1ZhbGlkV29yZCA9Ci0gICAgICAgICAgICAgICAgb3JpZ2luYWxUZXJtaW5hbFByb2JhYmlsaXR5ID4gMCAmJiAhdGVybWluYWxBdHRyaWJ1dGVzLmlzQmxhY2tsaXN0ZWRPck5vdEFXb3JkKCk7CisgICAgICAgIC8vIEVudHJpZXMgdGhhdCBhcmUgYmxhY2tsaXN0ZWQgb3IgZG8gbm90IHJlcHJlc2VudCBhIHdvcmQgc2hvdWxkIG5vdCBiZSBvdXRwdXQuCisgICAgICAgIGNvbnN0IGJvb2wgaXNWYWxpZFdvcmQgPSAhdGVybWluYWxBdHRyaWJ1dGVzLmlzQmxhY2tsaXN0ZWRPck5vdEFXb3JkKCk7CisKICAgICAgICAgLy8gSW5jcmVhc2Ugb3V0cHV0IHNjb3JlIG9mIHRvcCB0eXBpbmcgc3VnZ2VzdGlvbiB0byBlbnN1cmUgYXV0b2NvcnJlY3Rpb24uCiAgICAgICAgIC8vIFRPRE86IEJldHRlciBpbnRlZ3JhdGlvbiB3aXRoIGphdmEgc2lkZSBhdXRvY29ycmVjdGlvbiBsb2dpYy4KICAgICAgICAgLy8gRm9yY2UgYXV0b2NvcnJlY3Rpb24gZm9yIG9idmlvdXMgbG9uZyBtdWx0aS13b3JkIHN1Z2dlc3Rpb25zLgpAQCAtMTg4LDEwICsxOTEsOSBAQAogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgLy8gRG8gbm90IHN1Z2dlc3Qgd29yZHMgd2l0aCBhIDAgcHJvYmFiaWxpdHksIG9yIGVudHJpZXMgdGhhdCBhcmUgYmxhY2tsaXN0ZWQgb3IgZG8gbm90Ci0gICAgICAgIC8vIHJlcHJlc2VudCBhIHdvcmQuIEhvd2V2ZXIsIHdlIHNob3VsZCBzdGlsbCBzdWJtaXQgdGhlaXIgc2hvcnRjdXRzIGlmIGFueS4KKyAgICAgICAgLy8gRG9uJ3Qgb3V0cHV0IGludmFsaWQgd29yZHMuIEhvd2V2ZXIsIHdlIHN0aWxsIG5lZWQgdG8gc3VibWl0IHRoZWlyIHNob3J0Y3V0cyBpZiBhbnkuCiAgICAgICAgIGlmIChpc1ZhbGlkV29yZCkgewotICAgICAgICAgICAgb3V0cHV0VHlwZXNbb3V0cHV0V29yZEluZGV4XSA9IERpY3Rpb25hcnk6OktJTkRfQ09SUkVDVElPTjsKKyAgICAgICAgICAgIG91dHB1dFR5cGVzW291dHB1dFdvcmRJbmRleF0gPSBEaWN0aW9uYXJ5OjpLSU5EX0NPUlJFQ1RJT04gfCBvdXRwdXRUeXBlRmxhZ3M7CiAgICAgICAgICAgICBmcmVxdWVuY2llc1tvdXRwdXRXb3JkSW5kZXhdID0gZmluYWxTY29yZTsKICAgICAgICAgICAgIC8vIFBvcHVsYXRlIHRoZSBvdXRwdXRDaGFycyBhcnJheSB3aXRoIHRoZSBzdWdnZXN0ZWQgd29yZC4KICAgICAgICAgICAgIGNvbnN0IGludCBzdGFydEluZGV4ID0gb3V0cHV0V29yZEluZGV4ICogTUFYX1dPUkRfTEVOR1RIOwpAQCAtMjk0LDggKzI5Niw4IEBACiAgICAgICAgICAgICAgICAgICAgIGNvcnJlY3Rpb25EaWNOb2RlLmFkdmFuY2VEaWdyYXBoSW5kZXgoKTsKICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc0RpY05vZGVBc0RpZ3JhcGgodHJhdmVyc2VTZXNzaW9uLCAmY29ycmVjdGlvbkRpY05vZGUpOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoYWxsb3dzRXJyb3JDb3JyZWN0aW9ucwotICAgICAgICAgICAgICAgICAgICAgICAgJiYgVFJBVkVSU0FMLT5pc09taXNzaW9uKHRyYXZlcnNlU2Vzc2lvbiwgJmRpY05vZGUsIGNoaWxkRGljTm9kZSkpIHsKKyAgICAgICAgICAgICAgICBpZiAoVFJBVkVSU0FMLT5pc09taXNzaW9uKHRyYXZlcnNlU2Vzc2lvbiwgJmRpY05vZGUsIGNoaWxkRGljTm9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGFsbG93c0Vycm9yQ29ycmVjdGlvbnMpKSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIFRPRE86IChHZXN0dXJlKSBDaGFuZ2Ugd2VpZ2h0IGJldHdlZW4gb21pc3Npb24gYW5kIHN1YnN0aXR1dGlvbiBlcnJvcnMKICAgICAgICAgICAgICAgICAgICAgLy8gVE9ETzogKEdlc3R1cmUpIFRlcm1pbmFsIG5vZGUgc2hvdWxkIG5vdCBiZSBoYW5kbGVkIGFzIG9taXNzaW9uCiAgICAgICAgICAgICAgICAgICAgIGNvcnJlY3Rpb25EaWNOb2RlLmluaXRCeUNvcHkoY2hpbGREaWNOb2RlKTsKQEAgLTM1Nyw3ICszNTksNyBAQAogICAgIERpY05vZGUgdGVybWluYWxEaWNOb2RlOwogICAgIERpY05vZGVVdGlsczo6aW5pdEJ5Q29weShkaWNOb2RlLCAmdGVybWluYWxEaWNOb2RlKTsKICAgICBXZWlnaHRpbmc6OmFkZENvc3RBbmRGb3J3YXJkSW5wdXRJbmRleChXRUlHSFRJTkcsIENUX1RFUk1JTkFMLCB0cmF2ZXJzZVNlc3Npb24sIDAsCi0gICAgICAgICAgICAmdGVybWluYWxEaWNOb2RlLCB0cmF2ZXJzZVNlc3Npb24tPmdldEJpZ3JhbUNhY2hlTWFwKCkpOworICAgICAgICAgICAgJnRlcm1pbmFsRGljTm9kZSwgdHJhdmVyc2VTZXNzaW9uLT5nZXRNdWx0aUJpZ3JhbU1hcCgpKTsKICAgICB0cmF2ZXJzZVNlc3Npb24tPmdldERpY1RyYXZlcnNlQ2FjaGUoKS0+Y29weVB1c2hUZXJtaW5hbCgmdGVybWluYWxEaWNOb2RlKTsKIH0KIApAQCAtMzg5LDggKzM5MSwxMCBAQAogCiB2b2lkIFN1Z2dlc3Q6OnByb2Nlc3NEaWNOb2RlQXNBZGRpdGlvbmFsUHJveGltaXR5Q2hhcihEaWNUcmF2ZXJzZVNlc3Npb24gKnRyYXZlcnNlU2Vzc2lvbiwKICAgICAgICAgRGljTm9kZSAqZGljTm9kZSwgRGljTm9kZSAqY2hpbGREaWNOb2RlKSBjb25zdCB7CisgICAgLy8gTm90ZTogTW9zdCB0eXBlcyBvZiBjb3JyZWN0aW9ucyBkb24ndCBuZWVkIHRvIGxvb2sgdXAgdGhlIGJpZ3JhbSBpbmZvcm1hdGlvbiBzaW5jZSB0aGV5IGRvCisgICAgLy8gbm90IHRyZWF0IHRoZSBub2RlIGFzIGEgdGVybWluYWwuIFRoZXJlIGlzIG5vIG5lZWQgdG8gcGFzcyB0aGUgYmlncmFtIG1hcCBpbiB0aGVzZSBjYXNlcy4KICAgICBXZWlnaHRpbmc6OmFkZENvc3RBbmRGb3J3YXJkSW5wdXRJbmRleChXRUlHSFRJTkcsIENUX0FERElUSU9OQUxfUFJPWElNSVRZLAotICAgICAgICAgICAgdHJhdmVyc2VTZXNzaW9uLCBkaWNOb2RlLCBjaGlsZERpY05vZGUsIDAgLyogYmlncmFtQ2FjaGVNYXAgKi8pOworICAgICAgICAgICAgdHJhdmVyc2VTZXNzaW9uLCBkaWNOb2RlLCBjaGlsZERpY05vZGUsIDAgLyogbXVsdGlCaWdyYW1NYXAgKi8pOwogICAgIHdlaWdodENoaWxkTm9kZSh0cmF2ZXJzZVNlc3Npb24sIGNoaWxkRGljTm9kZSk7CiAgICAgcHJvY2Vzc0V4cGFuZGVkRGljTm9kZSh0cmF2ZXJzZVNlc3Npb24sIGNoaWxkRGljTm9kZSk7CiB9CkBAIC0zOTgsNyArNDAyLDcgQEAKIHZvaWQgU3VnZ2VzdDo6cHJvY2Vzc0RpY05vZGVBc1N1YnN0aXR1dGlvbihEaWNUcmF2ZXJzZVNlc3Npb24gKnRyYXZlcnNlU2Vzc2lvbiwKICAgICAgICAgRGljTm9kZSAqZGljTm9kZSwgRGljTm9kZSAqY2hpbGREaWNOb2RlKSBjb25zdCB7CiAgICAgV2VpZ2h0aW5nOjphZGRDb3N0QW5kRm9yd2FyZElucHV0SW5kZXgoV0VJR0hUSU5HLCBDVF9TVUJTVElUVVRJT04sIHRyYXZlcnNlU2Vzc2lvbiwKLSAgICAgICAgICAgIGRpY05vZGUsIGNoaWxkRGljTm9kZSwgMCAvKiBiaWdyYW1DYWNoZU1hcCAqLyk7CisgICAgICAgICAgICBkaWNOb2RlLCBjaGlsZERpY05vZGUsIDAgLyogbXVsdGlCaWdyYW1NYXAgKi8pOwogICAgIHdlaWdodENoaWxkTm9kZSh0cmF2ZXJzZVNlc3Npb24sIGNoaWxkRGljTm9kZSk7CiAgICAgcHJvY2Vzc0V4cGFuZGVkRGljTm9kZSh0cmF2ZXJzZVNlc3Npb24sIGNoaWxkRGljTm9kZSk7CiB9CkBAIC00MjIsMjAgKzQyNiwxNSBAQAogICovCiB2b2lkIFN1Z2dlc3Q6OnByb2Nlc3NEaWNOb2RlQXNPbWlzc2lvbigKICAgICAgICAgRGljVHJhdmVyc2VTZXNzaW9uICp0cmF2ZXJzZVNlc3Npb24sIERpY05vZGUgKmRpY05vZGUpIGNvbnN0IHsKLSAgICAvLyBJZiB0aGUgb21pc3Npb24gaXMgc3VyZWx5IGludGVudGlvbmFsIHRoYXQgaXQgc2hvdWxkIGluY3VyIHplcm8gY29zdC4KLSAgICBjb25zdCBib29sIGlzWmVyb0Nvc3RPbWlzc2lvbiA9IGRpY05vZGUtPmlzWmVyb0Nvc3RPbWlzc2lvbigpOwogICAgIERpY05vZGVWZWN0b3IgY2hpbGREaWNOb2RlczsKLQogICAgIERpY05vZGVVdGlsczo6Z2V0QWxsQ2hpbGREaWNOb2RlcyhkaWNOb2RlLCB0cmF2ZXJzZVNlc3Npb24tPmdldE9mZnNldERpY3QoKSwgJmNoaWxkRGljTm9kZXMpOwogCiAgICAgY29uc3QgaW50IHNpemUgPSBjaGlsZERpY05vZGVzLmdldFNpemVBbmRMb2NrKCk7CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKICAgICAgICAgRGljTm9kZSAqY29uc3QgY2hpbGREaWNOb2RlID0gY2hpbGREaWNOb2Rlc1tpXTsKLSAgICAgICAgaWYgKCFpc1plcm9Db3N0T21pc3Npb24pIHsKLSAgICAgICAgICAgIC8vIFRyZWF0IHRoaXMgd29yZCBhcyBvbWlzc2lvbgotICAgICAgICAgICAgV2VpZ2h0aW5nOjphZGRDb3N0QW5kRm9yd2FyZElucHV0SW5kZXgoV0VJR0hUSU5HLCBDVF9PTUlTU0lPTiwgdHJhdmVyc2VTZXNzaW9uLAotICAgICAgICAgICAgICAgICAgICBkaWNOb2RlLCBjaGlsZERpY05vZGUsIDAgLyogYmlncmFtQ2FjaGVNYXAgKi8pOwotICAgICAgICB9CisgICAgICAgIC8vIFRyZWF0IHRoaXMgd29yZCBhcyBvbWlzc2lvbgorICAgICAgICBXZWlnaHRpbmc6OmFkZENvc3RBbmRGb3J3YXJkSW5wdXRJbmRleChXRUlHSFRJTkcsIENUX09NSVNTSU9OLCB0cmF2ZXJzZVNlc3Npb24sCisgICAgICAgICAgICAgICAgZGljTm9kZSwgY2hpbGREaWNOb2RlLCAwIC8qIG11bHRpQmlncmFtTWFwICovKTsKICAgICAgICAgd2VpZ2h0Q2hpbGROb2RlKHRyYXZlcnNlU2Vzc2lvbiwgY2hpbGREaWNOb2RlKTsKIAogICAgICAgICBpZiAoIVRSQVZFUlNBTC0+aXNQb3NzaWJsZU9taXNzaW9uQ2hpbGROb2RlKHRyYXZlcnNlU2Vzc2lvbiwgZGljTm9kZSwgY2hpbGREaWNOb2RlKSkgewpAQCAtNDU5LDcgKzQ1OCw3IEBACiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKICAgICAgICAgRGljTm9kZSAqY29uc3QgY2hpbGREaWNOb2RlID0gY2hpbGREaWNOb2Rlc1tpXTsKICAgICAgICAgV2VpZ2h0aW5nOjphZGRDb3N0QW5kRm9yd2FyZElucHV0SW5kZXgoV0VJR0hUSU5HLCBDVF9JTlNFUlRJT04sIHRyYXZlcnNlU2Vzc2lvbiwKLSAgICAgICAgICAgICAgICBkaWNOb2RlLCBjaGlsZERpY05vZGUsIDAgLyogYmlncmFtQ2FjaGVNYXAgKi8pOworICAgICAgICAgICAgICAgIGRpY05vZGUsIGNoaWxkRGljTm9kZSwgMCAvKiBtdWx0aUJpZ3JhbU1hcCAqLyk7CiAgICAgICAgIHByb2Nlc3NFeHBhbmRlZERpY05vZGUodHJhdmVyc2VTZXNzaW9uLCBjaGlsZERpY05vZGUpOwogICAgIH0KIH0KQEAgLTQ4NCw3ICs0ODMsNyBAQAogICAgICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBjaGlsZFNpemUyOyBqKyspIHsKICAgICAgICAgICAgICAgICBEaWNOb2RlICpjb25zdCBjaGlsZERpY05vZGUyID0gY2hpbGREaWNOb2RlczJbal07CiAgICAgICAgICAgICAgICAgV2VpZ2h0aW5nOjphZGRDb3N0QW5kRm9yd2FyZElucHV0SW5kZXgoV0VJR0hUSU5HLCBDVF9UUkFOU1BPU0lUSU9OLAotICAgICAgICAgICAgICAgICAgICAgICAgdHJhdmVyc2VTZXNzaW9uLCBjaGlsZERpY05vZGVzMVtpXSwgY2hpbGREaWNOb2RlMiwgMCAvKiBiaWdyYW1DYWNoZU1hcCAqLyk7CisgICAgICAgICAgICAgICAgICAgICAgICB0cmF2ZXJzZVNlc3Npb24sIGNoaWxkRGljTm9kZXMxW2ldLCBjaGlsZERpY05vZGUyLCAwIC8qIG11bHRpQmlncmFtTWFwICovKTsKICAgICAgICAgICAgICAgICBwcm9jZXNzRXhwYW5kZWREaWNOb2RlKHRyYXZlcnNlU2Vzc2lvbiwgY2hpbGREaWNOb2RlMik7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTQ5OSwxMCArNDk4LDEwIEBACiAgICAgY29uc3QgaW50IGlucHV0U2l6ZSA9IHRyYXZlcnNlU2Vzc2lvbi0+Z2V0SW5wdXRTaXplKCk7CiAgICAgaWYgKGRpY05vZGUtPmlzQ29tcGxldGlvbihpbnB1dFNpemUpKSB7CiAgICAgICAgIFdlaWdodGluZzo6YWRkQ29zdEFuZEZvcndhcmRJbnB1dEluZGV4KFdFSUdIVElORywgQ1RfQ09NUExFVElPTiwgdHJhdmVyc2VTZXNzaW9uLAotICAgICAgICAgICAgICAgIDAgLyogcGFyZW50RGljTm9kZSAqLywgZGljTm9kZSwgMCAvKiBiaWdyYW1DYWNoZU1hcCAqLyk7CisgICAgICAgICAgICAgICAgMCAvKiBwYXJlbnREaWNOb2RlICovLCBkaWNOb2RlLCAwIC8qIG11bHRpQmlncmFtTWFwICovKTsKICAgICB9IGVsc2UgeyAvLyBjb21wbGV0aW9uCiAgICAgICAgIFdlaWdodGluZzo6YWRkQ29zdEFuZEZvcndhcmRJbnB1dEluZGV4KFdFSUdIVElORywgQ1RfTUFUQ0gsIHRyYXZlcnNlU2Vzc2lvbiwKLSAgICAgICAgICAgICAgICAwIC8qIHBhcmVudERpY05vZGUgKi8sIGRpY05vZGUsIDAgLyogYmlncmFtQ2FjaGVNYXAgKi8pOworICAgICAgICAgICAgICAgIDAgLyogcGFyZW50RGljTm9kZSAqLywgZGljTm9kZSwgMCAvKiBtdWx0aUJpZ3JhbU1hcCAqLyk7CiAgICAgfQogfQogCkBAIC01MjMsNyArNTIyLDcgQEAKICAgICBjb25zdCBDb3JyZWN0aW9uVHlwZSBjb3JyZWN0aW9uVHlwZSA9IHNwYWNlU3Vic3RpdHV0aW9uID8KICAgICAgICAgICAgIENUX05FV19XT1JEX1NQQUNFX1NVQlNUSVRVVElPTiA6IENUX05FV19XT1JEX1NQQUNFX09NSVRUSU9OOwogICAgIFdlaWdodGluZzo6YWRkQ29zdEFuZEZvcndhcmRJbnB1dEluZGV4KFdFSUdIVElORywgY29ycmVjdGlvblR5cGUsIHRyYXZlcnNlU2Vzc2lvbiwgZGljTm9kZSwKLSAgICAgICAgICAgICZuZXdEaWNOb2RlLCB0cmF2ZXJzZVNlc3Npb24tPmdldEJpZ3JhbUNhY2hlTWFwKCkpOworICAgICAgICAgICAgJm5ld0RpY05vZGUsIHRyYXZlcnNlU2Vzc2lvbi0+Z2V0TXVsdGlCaWdyYW1NYXAoKSk7CiAgICAgdHJhdmVyc2VTZXNzaW9uLT5nZXREaWNUcmF2ZXJzZUNhY2hlKCktPmNvcHlQdXNoTmV4dEFjdGl2ZSgmbmV3RGljTm9kZSk7CiB9CiB9IC8vIG5hbWVzcGFjZSBsYXRpbmltZQpkaWZmIC0tZ2l0IGEvbmF0aXZlL2puaS9zcmMvc3VnZ2VzdC9wb2xpY3lpbXBsL3R5cGluZy9zY29yaW5nX3BhcmFtcy5jcHAgYi9uYXRpdmUvam5pL3NyYy9zdWdnZXN0L3BvbGljeWltcGwvdHlwaW5nL3Njb3JpbmdfcGFyYW1zLmNwcAppbmRleCAwZmE2ODRmLi4yOTljYTgzIDEwMDY0NAotLS0gYS9uYXRpdmUvam5pL3NyYy9zdWdnZXN0L3BvbGljeWltcGwvdHlwaW5nL3Njb3JpbmdfcGFyYW1zLmNwcAorKysgYi9uYXRpdmUvam5pL3NyYy9zdWdnZXN0L3BvbGljeWltcGwvdHlwaW5nL3Njb3JpbmdfcGFyYW1zLmNwcApAQCAtMjgsMjQgKzI4LDI0IEBACiBjb25zdCBmbG9hdCBTY29yaW5nUGFyYW1zOjpESVNUQU5DRV9XRUlHSFRfTEVOR1RIID0gMC4xMzJmOwogY29uc3QgZmxvYXQgU2NvcmluZ1BhcmFtczo6UFJPWElNSVRZX0NPU1QgPSAwLjA4NmY7CiBjb25zdCBmbG9hdCBTY29yaW5nUGFyYW1zOjpGSVJTVF9QUk9YSU1JVFlfQ09TVCA9IDAuMTA0ZjsKLWNvbnN0IGZsb2F0IFNjb3JpbmdQYXJhbXM6Ok9NSVNTSU9OX0NPU1QgPSAwLjM4OGY7Ci1jb25zdCBmbG9hdCBTY29yaW5nUGFyYW1zOjpPTUlTU0lPTl9DT1NUX1NBTUVfQ0hBUiA9IDAuNDMxZjsKLWNvbnN0IGZsb2F0IFNjb3JpbmdQYXJhbXM6Ok9NSVNTSU9OX0NPU1RfRklSU1RfQ0hBUiA9IDAuNTMyZjsKLWNvbnN0IGZsb2F0IFNjb3JpbmdQYXJhbXM6OklOU0VSVElPTl9DT1NUID0gMC42NzBmOwotY29uc3QgZmxvYXQgU2NvcmluZ1BhcmFtczo6SU5TRVJUSU9OX0NPU1RfU0FNRV9DSEFSID0gMC41MjZmOwotY29uc3QgZmxvYXQgU2NvcmluZ1BhcmFtczo6SU5TRVJUSU9OX0NPU1RfRklSU1RfQ0hBUiA9IDAuNTYzZjsKLWNvbnN0IGZsb2F0IFNjb3JpbmdQYXJhbXM6OlRSQU5TUE9TSVRJT05fQ09TVCA9IDAuNDk0ZjsKLWNvbnN0IGZsb2F0IFNjb3JpbmdQYXJhbXM6OlNQQUNFX1NVQlNUSVRVVElPTl9DT1NUID0gMC4yMzlmOworY29uc3QgZmxvYXQgU2NvcmluZ1BhcmFtczo6T01JU1NJT05fQ09TVCA9IDAuNDU4ZjsKK2NvbnN0IGZsb2F0IFNjb3JpbmdQYXJhbXM6Ok9NSVNTSU9OX0NPU1RfU0FNRV9DSEFSID0gMC40OTFmOworY29uc3QgZmxvYXQgU2NvcmluZ1BhcmFtczo6T01JU1NJT05fQ09TVF9GSVJTVF9DSEFSID0gMC41ODJmOworY29uc3QgZmxvYXQgU2NvcmluZ1BhcmFtczo6SU5TRVJUSU9OX0NPU1QgPSAwLjczMGY7Citjb25zdCBmbG9hdCBTY29yaW5nUGFyYW1zOjpJTlNFUlRJT05fQ09TVF9TQU1FX0NIQVIgPSAwLjU4NmY7Citjb25zdCBmbG9hdCBTY29yaW5nUGFyYW1zOjpJTlNFUlRJT05fQ09TVF9GSVJTVF9DSEFSID0gMC42MjNmOworY29uc3QgZmxvYXQgU2NvcmluZ1BhcmFtczo6VFJBTlNQT1NJVElPTl9DT1NUID0gMC41MTZmOworY29uc3QgZmxvYXQgU2NvcmluZ1BhcmFtczo6U1BBQ0VfU1VCU1RJVFVUSU9OX0NPU1QgPSAwLjMxOWY7CiBjb25zdCBmbG9hdCBTY29yaW5nUGFyYW1zOjpBRERJVElPTkFMX1BST1hJTUlUWV9DT1NUID0gMC4zODBmOwotY29uc3QgZmxvYXQgU2NvcmluZ1BhcmFtczo6U1VCU1RJVFVUSU9OX0NPU1QgPSAwLjM2M2Y7Ci1jb25zdCBmbG9hdCBTY29yaW5nUGFyYW1zOjpDT1NUX05FV19XT1JEID0gMC4wNTRmOworY29uc3QgZmxvYXQgU2NvcmluZ1BhcmFtczo6U1VCU1RJVFVUSU9OX0NPU1QgPSAwLjQwM2Y7Citjb25zdCBmbG9hdCBTY29yaW5nUGFyYW1zOjpDT1NUX05FV19XT1JEID0gMC4wNDJmOwogY29uc3QgZmxvYXQgU2NvcmluZ1BhcmFtczo6Q09TVF9ORVdfV09SRF9DQVBJVEFMSVpFRCA9IDAuMTc0ZjsKIGNvbnN0IGZsb2F0IFNjb3JpbmdQYXJhbXM6OkRJU1RBTkNFX1dFSUdIVF9MQU5HVUFHRSA9IDEuMTIzZjsKLWNvbnN0IGZsb2F0IFNjb3JpbmdQYXJhbXM6OkNPU1RfRklSU1RfTE9PS0FIRUFEID0gMC40NjJmOwotY29uc3QgZmxvYXQgU2NvcmluZ1BhcmFtczo6Q09TVF9MT09LQUhFQUQgPSAwLjA5MmY7Ci1jb25zdCBmbG9hdCBTY29yaW5nUGFyYW1zOjpIQVNfUFJPWElNSVRZX1RFUk1JTkFMX0NPU1QgPSAwLjEyNmY7Ci1jb25zdCBmbG9hdCBTY29yaW5nUGFyYW1zOjpIQVNfRURJVF9DT1JSRUNUSU9OX1RFUk1JTkFMX0NPU1QgPSAwLjA1NmY7Ci1jb25zdCBmbG9hdCBTY29yaW5nUGFyYW1zOjpIQVNfTVVMVElfV09SRF9URVJNSU5BTF9DT1NUID0gMC4xMzZmOworY29uc3QgZmxvYXQgU2NvcmluZ1BhcmFtczo6Q09TVF9GSVJTVF9MT09LQUhFQUQgPSAwLjU0NWY7Citjb25zdCBmbG9hdCBTY29yaW5nUGFyYW1zOjpDT1NUX0xPT0tBSEVBRCA9IDAuMDczZjsKK2NvbnN0IGZsb2F0IFNjb3JpbmdQYXJhbXM6OkhBU19QUk9YSU1JVFlfVEVSTUlOQUxfQ09TVCA9IDAuMTA1ZjsKK2NvbnN0IGZsb2F0IFNjb3JpbmdQYXJhbXM6OkhBU19FRElUX0NPUlJFQ1RJT05fVEVSTUlOQUxfQ09TVCA9IDAuMDM4ZjsKK2NvbnN0IGZsb2F0IFNjb3JpbmdQYXJhbXM6OkhBU19NVUxUSV9XT1JEX1RFUk1JTkFMX0NPU1QgPSAwLjQ0NGY7CiBjb25zdCBmbG9hdCBTY29yaW5nUGFyYW1zOjpUWVBJTkdfQkFTRV9PVVRQVVRfU0NPUkUgPSAxLjBmOwogY29uc3QgZmxvYXQgU2NvcmluZ1BhcmFtczo6VFlQSU5HX01BWF9PVVRQVVRfU0NPUkVfUEVSX0lOUFVUID0gMC4xZjsKIGNvbnN0IGZsb2F0IFNjb3JpbmdQYXJhbXM6Ok1BWF9OT1JNX0RJU1RBTkNFX0ZPUl9FRElUID0gMC4xZjsKZGlmZiAtLWdpdCBhL25hdGl2ZS9qbmkvc3JjL3N1Z2dlc3QvcG9saWN5aW1wbC90eXBpbmcvdHlwaW5nX3RyYXZlcnNhbC5oIGIvbmF0aXZlL2puaS9zcmMvc3VnZ2VzdC9wb2xpY3lpbXBsL3R5cGluZy90eXBpbmdfdHJhdmVyc2FsLmgKaW5kZXggOWY4MzQ3NC4uZmIxZmI3OSAxMDA2NDQKLS0tIGEvbmF0aXZlL2puaS9zcmMvc3VnZ2VzdC9wb2xpY3lpbXBsL3R5cGluZy90eXBpbmdfdHJhdmVyc2FsLmgKKysrIGIvbmF0aXZlL2puaS9zcmMvc3VnZ2VzdC9wb2xpY3lpbXBsL3R5cGluZy90eXBpbmdfdHJhdmVyc2FsLmgKQEAgLTQzLDEwICs0MywxNyBAQAogICAgIH0KIAogICAgIEFLX0ZPUkNFX0lOTElORSBib29sIGlzT21pc3Npb24oY29uc3QgRGljVHJhdmVyc2VTZXNzaW9uICpjb25zdCB0cmF2ZXJzZVNlc3Npb24sCi0gICAgICAgICAgICBjb25zdCBEaWNOb2RlICpjb25zdCBkaWNOb2RlLCBjb25zdCBEaWNOb2RlICpjb25zdCBjaGlsZERpY05vZGUpIGNvbnN0IHsKKyAgICAgICAgICAgIGNvbnN0IERpY05vZGUgKmNvbnN0IGRpY05vZGUsIGNvbnN0IERpY05vZGUgKmNvbnN0IGNoaWxkRGljTm9kZSwKKyAgICAgICAgICAgIGNvbnN0IGJvb2wgYWxsb3dzRXJyb3JDb3JyZWN0aW9ucykgY29uc3QgewogICAgICAgICBpZiAoIUNPUlJFQ1RfT01JU1NJT04pIHsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQorICAgICAgICAvLyBOb3RlOiBBbHdheXMgY29uc2lkZXIgaW50ZW50aW9uYWwgb21pc3Npb25zIChsaWtlIGFwb3N0cm9waGVzKSBzaW5jZSB0aGV5IGFyZSBjb21tb24uCisgICAgICAgIGNvbnN0IGJvb2wgY2FuQ29uc2lkZXJPbWlzc2lvbiA9CisgICAgICAgICAgICAgICAgYWxsb3dzRXJyb3JDb3JyZWN0aW9ucyB8fCBjaGlsZERpY05vZGUtPmNhbkJlSW50ZW50aW9uYWxPbWlzc2lvbigpOworICAgICAgICBpZiAoIWNhbkNvbnNpZGVyT21pc3Npb24pIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQogICAgICAgICBjb25zdCBpbnQgaW5wdXRTaXplID0gdHJhdmVyc2VTZXNzaW9uLT5nZXRJbnB1dFNpemUoKTsKICAgICAgICAgLy8gVE9ETzogRG9uJ3QgcmVmZXIgdG8gaXNDb21wbGV0aW9uPwogICAgICAgICBpZiAoZGljTm9kZS0+aXNDb21wbGV0aW9uKGlucHV0U2l6ZSkpIHsKZGlmZiAtLWdpdCBhL25hdGl2ZS9qbmkvc3JjL3N1Z2dlc3QvcG9saWN5aW1wbC90eXBpbmcvdHlwaW5nX3dlaWdodGluZy5jcHAgYi9uYXRpdmUvam5pL3NyYy9zdWdnZXN0L3BvbGljeWltcGwvdHlwaW5nL3R5cGluZ193ZWlnaHRpbmcuY3BwCmluZGV4IDE1MDAzNDEuLmU0YzY5ZDEgMTAwNjQ0Ci0tLSBhL25hdGl2ZS9qbmkvc3JjL3N1Z2dlc3QvcG9saWN5aW1wbC90eXBpbmcvdHlwaW5nX3dlaWdodGluZy5jcHAKKysrIGIvbmF0aXZlL2puaS9zcmMvc3VnZ2VzdC9wb2xpY3lpbXBsL3R5cGluZy90eXBpbmdfd2VpZ2h0aW5nLmNwcApAQCAtMjAsNSArMjAsNDEgQEAKICNpbmNsdWRlICJzdWdnZXN0L3BvbGljeWltcGwvdHlwaW5nL3Njb3JpbmdfcGFyYW1zLmgiCiAKIG5hbWVzcGFjZSBsYXRpbmltZSB7CisKIGNvbnN0IFR5cGluZ1dlaWdodGluZyBUeXBpbmdXZWlnaHRpbmc6OnNJbnN0YW5jZTsKKworRXJyb3JUeXBlIFR5cGluZ1dlaWdodGluZzo6Z2V0RXJyb3JUeXBlKGNvbnN0IENvcnJlY3Rpb25UeXBlIGNvcnJlY3Rpb25UeXBlLAorICAgICAgICBjb25zdCBEaWNUcmF2ZXJzZVNlc3Npb24gKmNvbnN0IHRyYXZlcnNlU2Vzc2lvbiwgY29uc3QgRGljTm9kZSAqY29uc3QgcGFyZW50RGljTm9kZSwKKyAgICAgICAgY29uc3QgRGljTm9kZSAqY29uc3QgZGljTm9kZSkgY29uc3QgeworICAgIHN3aXRjaCAoY29ycmVjdGlvblR5cGUpIHsKKyAgICAgICAgY2FzZSBDVF9NQVRDSDoKKyAgICAgICAgICAgIGlmIChpc1Byb3hpbWl0eURpY05vZGUodHJhdmVyc2VTZXNzaW9uLCBkaWNOb2RlKSkgeworICAgICAgICAgICAgICAgIHJldHVybiBFVF9QUk9YSU1JVFlfQ09SUkVDVElPTjsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIEVUX05PVF9BTl9FUlJPUjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgY2FzZSBDVF9BRERJVElPTkFMX1BST1hJTUlUWToKKyAgICAgICAgICAgIHJldHVybiBFVF9QUk9YSU1JVFlfQ09SUkVDVElPTjsKKyAgICAgICAgY2FzZSBDVF9PTUlTU0lPTjoKKyAgICAgICAgICAgIGlmIChwYXJlbnREaWNOb2RlLT5jYW5CZUludGVudGlvbmFsT21pc3Npb24oKSkgeworICAgICAgICAgICAgICAgIHJldHVybiBFVF9JTlRFTlRJT05BTF9PTUlTU0lPTjsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIEVUX0VESVRfQ09SUkVDVElPTjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENUX1NVQlNUSVRVVElPTjoKKyAgICAgICAgY2FzZSBDVF9JTlNFUlRJT046CisgICAgICAgIGNhc2UgQ1RfVFJBTlNQT1NJVElPTjoKKyAgICAgICAgICAgIHJldHVybiBFVF9FRElUX0NPUlJFQ1RJT047CisgICAgICAgIGNhc2UgQ1RfTkVXX1dPUkRfU1BBQ0VfT01JVFRJT046CisgICAgICAgIGNhc2UgQ1RfTkVXX1dPUkRfU1BBQ0VfU1VCU1RJVFVUSU9OOgorICAgICAgICAgICAgcmV0dXJuIEVUX05FV19XT1JEOworICAgICAgICBjYXNlIENUX1RFUk1JTkFMOgorICAgICAgICAgICAgcmV0dXJuIEVUX05PVF9BTl9FUlJPUjsKKyAgICAgICAgY2FzZSBDVF9DT01QTEVUSU9OOgorICAgICAgICAgICAgcmV0dXJuIEVUX0NPTVBMRVRJT047CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gRVRfTk9UX0FOX0VSUk9SOworICAgIH0KK30KIH0gIC8vIG5hbWVzcGFjZSBsYXRpbmltZQpkaWZmIC0tZ2l0IGEvbmF0aXZlL2puaS9zcmMvc3VnZ2VzdC9wb2xpY3lpbXBsL3R5cGluZy90eXBpbmdfd2VpZ2h0aW5nLmggYi9uYXRpdmUvam5pL3NyYy9zdWdnZXN0L3BvbGljeWltcGwvdHlwaW5nL3R5cGluZ193ZWlnaHRpbmcuaAppbmRleCA3NGU0ZTM0Li5lNmZhMWJkIDEwMDY0NAotLS0gYS9uYXRpdmUvam5pL3NyYy9zdWdnZXN0L3BvbGljeWltcGwvdHlwaW5nL3R5cGluZ193ZWlnaHRpbmcuaAorKysgYi9uYXRpdmUvam5pL3NyYy9zdWdnZXN0L3BvbGljeWltcGwvdHlwaW5nL3R5cGluZ193ZWlnaHRpbmcuaApAQCAtMjgsMTQgKzI4LDE1IEBACiAKIGNsYXNzIERpY05vZGU7CiBzdHJ1Y3QgRGljTm9kZV9JbnB1dFN0YXRlRzsKK2NsYXNzIE11bHRpQmlncmFtTWFwOwogCiBjbGFzcyBUeXBpbmdXZWlnaHRpbmcgOiBwdWJsaWMgV2VpZ2h0aW5nIHsKICBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IFR5cGluZ1dlaWdodGluZyAqZ2V0SW5zdGFuY2UoKSB7IHJldHVybiAmc0luc3RhbmNlOyB9CiAKICBwcm90ZWN0ZWQ6Ci0gICAgZmxvYXQgZ2V0VGVybWluYWxTcGF0aWFsQ29zdCgKLSAgICAgICAgICAgIGNvbnN0IERpY1RyYXZlcnNlU2Vzc2lvbiAqY29uc3QgdHJhdmVyc2VTZXNzaW9uLCBjb25zdCBEaWNOb2RlICpjb25zdCBkaWNOb2RlKSBjb25zdCB7CisgICAgZmxvYXQgZ2V0VGVybWluYWxTcGF0aWFsQ29zdChjb25zdCBEaWNUcmF2ZXJzZVNlc3Npb24gKmNvbnN0IHRyYXZlcnNlU2Vzc2lvbiwKKyAgICAgICAgICAgIGNvbnN0IERpY05vZGUgKmNvbnN0IGRpY05vZGUpIGNvbnN0IHsKICAgICAgICAgZmxvYXQgY29zdCA9IDAuMGY7CiAgICAgICAgIGlmIChkaWNOb2RlLT5oYXNNdWx0aXBsZVdvcmRzKCkpIHsKICAgICAgICAgICAgIGNvc3QgKz0gU2NvcmluZ1BhcmFtczo6SEFTX01VTFRJX1dPUkRfVEVSTUlOQUxfQ09TVDsKQEAgLTUwLDEzICs1MSwxNCBAQAogICAgIH0KIAogICAgIGZsb2F0IGdldE9taXNzaW9uQ29zdChjb25zdCBEaWNOb2RlICpjb25zdCBwYXJlbnREaWNOb2RlLCBjb25zdCBEaWNOb2RlICpjb25zdCBkaWNOb2RlKSBjb25zdCB7Ci0gICAgICAgIGJvb2wgc2FtZUNvZGVQb2ludCA9IGZhbHNlOwotICAgICAgICBib29sIGlzRmlyc3RMZXR0ZXJPbWlzc2lvbiA9IGZhbHNlOwotICAgICAgICBmbG9hdCBjb3N0ID0gMC4wZjsKLSAgICAgICAgc2FtZUNvZGVQb2ludCA9IGRpY05vZGUtPmlzU2FtZU5vZGVDb2RlUG9pbnQocGFyZW50RGljTm9kZSk7CisgICAgICAgIGNvbnN0IGJvb2wgaXNaZXJvQ29zdE9taXNzaW9uID0gcGFyZW50RGljTm9kZS0+aXNaZXJvQ29zdE9taXNzaW9uKCk7CisgICAgICAgIGNvbnN0IGJvb2wgc2FtZUNvZGVQb2ludCA9IGRpY05vZGUtPmlzU2FtZU5vZGVDb2RlUG9pbnQocGFyZW50RGljTm9kZSk7CiAgICAgICAgIC8vIElmIHRoZSB0cmF2ZXJzYWwgb21pdHRlZCB0aGUgZmlyc3QgbGV0dGVyIHRoZW4gdGhlIGRpY05vZGUgc2hvdWxkIG5vdyBiZSBvbiB0aGUgc2Vjb25kLgotICAgICAgICBpc0ZpcnN0TGV0dGVyT21pc3Npb24gPSBkaWNOb2RlLT5nZXREZXB0aCgpID09IDI7Ci0gICAgICAgIGlmIChpc0ZpcnN0TGV0dGVyT21pc3Npb24pIHsKKyAgICAgICAgY29uc3QgYm9vbCBpc0ZpcnN0TGV0dGVyT21pc3Npb24gPSBkaWNOb2RlLT5nZXREZXB0aCgpID09IDI7CisgICAgICAgIGZsb2F0IGNvc3QgPSAwLjBmOworICAgICAgICBpZiAoaXNaZXJvQ29zdE9taXNzaW9uKSB7CisgICAgICAgICAgICBjb3N0ID0gMC4wZjsKKyAgICAgICAgfSBlbHNlIGlmIChpc0ZpcnN0TGV0dGVyT21pc3Npb24pIHsKICAgICAgICAgICAgIGNvc3QgPSBTY29yaW5nUGFyYW1zOjpPTUlTU0lPTl9DT1NUX0ZJUlNUX0NIQVI7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBjb3N0ID0gc2FtZUNvZGVQb2ludCA/IFNjb3JpbmdQYXJhbXM6Ok9NSVNTSU9OX0NPU1RfU0FNRV9DSEFSCkBAIC02NSw5ICs2Nyw4IEBACiAgICAgICAgIHJldHVybiBjb3N0OwogICAgIH0KIAotICAgIGZsb2F0IGdldE1hdGNoZWRDb3N0KAotICAgICAgICAgICAgY29uc3QgRGljVHJhdmVyc2VTZXNzaW9uICpjb25zdCB0cmF2ZXJzZVNlc3Npb24sIGNvbnN0IERpY05vZGUgKmNvbnN0IGRpY05vZGUsCi0gICAgICAgICAgICBEaWNOb2RlX0lucHV0U3RhdGVHICppbnB1dFN0YXRlRykgY29uc3QgeworICAgIGZsb2F0IGdldE1hdGNoZWRDb3N0KGNvbnN0IERpY1RyYXZlcnNlU2Vzc2lvbiAqY29uc3QgdHJhdmVyc2VTZXNzaW9uLAorICAgICAgICAgICAgY29uc3QgRGljTm9kZSAqY29uc3QgZGljTm9kZSwgRGljTm9kZV9JbnB1dFN0YXRlRyAqaW5wdXRTdGF0ZUcpIGNvbnN0IHsKICAgICAgICAgY29uc3QgaW50IHBvaW50SW5kZXggPSBkaWNOb2RlLT5nZXRJbnB1dEluZGV4KDApOwogICAgICAgICAvLyBOb3RlOiBtaW4oKSByZXF1aXJlZCBzaW5jZSBsZW5ndGggY2FuIGJlIE1BWF9QT0lOVF9UT19LRVlfTEVOR1RIIGZvciBjaGFyYWN0ZXJzIG5vdCBvbgogICAgICAgICAvLyB0aGUga2V5Ym9hcmQgKGxpa2UgYWNjZW50ZWQgbGV0dGVycykKQEAgLTg0LDggKzg1LDggQEAKICAgICAgICAgcmV0dXJuIHdlaWdodGVkRGlzdGFuY2UgKyBjb3N0OwogICAgIH0KIAotICAgIGJvb2wgaXNQcm94aW1pdHlEaWNOb2RlKAotICAgICAgICAgICAgY29uc3QgRGljVHJhdmVyc2VTZXNzaW9uICpjb25zdCB0cmF2ZXJzZVNlc3Npb24sIGNvbnN0IERpY05vZGUgKmNvbnN0IGRpY05vZGUpIGNvbnN0IHsKKyAgICBib29sIGlzUHJveGltaXR5RGljTm9kZShjb25zdCBEaWNUcmF2ZXJzZVNlc3Npb24gKmNvbnN0IHRyYXZlcnNlU2Vzc2lvbiwKKyAgICAgICAgICAgIGNvbnN0IERpY05vZGUgKmNvbnN0IGRpY05vZGUpIGNvbnN0IHsKICAgICAgICAgY29uc3QgaW50IHBvaW50SW5kZXggPSBkaWNOb2RlLT5nZXRJbnB1dEluZGV4KDApOwogICAgICAgICBjb25zdCBpbnQgcHJpbWFyeUNvZGVQb2ludCA9IHRvQmFzZUxvd2VyQ2FzZSgKICAgICAgICAgICAgICAgICB0cmF2ZXJzZVNlc3Npb24tPmdldFByb3hpbWl0eUluZm9TdGF0ZSgwKS0+Z2V0UHJpbWFyeUNvZGVQb2ludEF0KHBvaW50SW5kZXgpKTsKQEAgLTkzLDkgKzk0LDggQEAKICAgICAgICAgcmV0dXJuIHByaW1hcnlDb2RlUG9pbnQgIT0gZGljTm9kZUNoYXI7CiAgICAgfQogCi0gICAgZmxvYXQgZ2V0VHJhbnNwb3NpdGlvbkNvc3QoCi0gICAgICAgICAgICBjb25zdCBEaWNUcmF2ZXJzZVNlc3Npb24gKmNvbnN0IHRyYXZlcnNlU2Vzc2lvbiwgY29uc3QgRGljTm9kZSAqY29uc3QgcGFyZW50RGljTm9kZSwKLSAgICAgICAgICAgIGNvbnN0IERpY05vZGUgKmNvbnN0IGRpY05vZGUpIGNvbnN0IHsKKyAgICBmbG9hdCBnZXRUcmFuc3Bvc2l0aW9uQ29zdChjb25zdCBEaWNUcmF2ZXJzZVNlc3Npb24gKmNvbnN0IHRyYXZlcnNlU2Vzc2lvbiwKKyAgICAgICAgICAgIGNvbnN0IERpY05vZGUgKmNvbnN0IHBhcmVudERpY05vZGUsIGNvbnN0IERpY05vZGUgKmNvbnN0IGRpY05vZGUpIGNvbnN0IHsKICAgICAgICAgY29uc3QgaW50MTZfdCBwYXJlbnRQb2ludEluZGV4ID0gcGFyZW50RGljTm9kZS0+Z2V0SW5wdXRJbmRleCgwKTsKICAgICAgICAgY29uc3QgaW50IHByZXZDb2RlUG9pbnQgPSBwYXJlbnREaWNOb2RlLT5nZXROb2RlQ29kZVBvaW50KCk7CiAgICAgICAgIGNvbnN0IGZsb2F0IGRpc3RhbmNlMSA9IHRyYXZlcnNlU2Vzc2lvbi0+Z2V0UHJveGltaXR5SW5mb1N0YXRlKDApLT5nZXRQb2ludFRvS2V5TGVuZ3RoKApAQCAtMTA5LDggKzEwOSw3IEBACiAgICAgICAgIHJldHVybiBTY29yaW5nUGFyYW1zOjpUUkFOU1BPU0lUSU9OX0NPU1QgKyB3ZWlnaHRlZExlbmd0aERpc3RhbmNlOwogICAgIH0KIAotICAgIGZsb2F0IGdldEluc2VydGlvbkNvc3QoCi0gICAgICAgICAgICBjb25zdCBEaWNUcmF2ZXJzZVNlc3Npb24gKmNvbnN0IHRyYXZlcnNlU2Vzc2lvbiwKKyAgICBmbG9hdCBnZXRJbnNlcnRpb25Db3N0KGNvbnN0IERpY1RyYXZlcnNlU2Vzc2lvbiAqY29uc3QgdHJhdmVyc2VTZXNzaW9uLAogICAgICAgICAgICAgY29uc3QgRGljTm9kZSAqY29uc3QgcGFyZW50RGljTm9kZSwgY29uc3QgRGljTm9kZSAqY29uc3QgZGljTm9kZSkgY29uc3QgewogICAgICAgICBjb25zdCBpbnQxNl90IHBhcmVudFBvaW50SW5kZXggPSBwYXJlbnREaWNOb2RlLT5nZXRJbnB1dEluZGV4KDApOwogICAgICAgICBjb25zdCBpbnQgcHJldkNvZGVQb2ludCA9CkBAIC0xMzYsMTEgKzEzNSwxMSBAQAogICAgICAgICByZXR1cm4gY29zdCAqIHRyYXZlcnNlU2Vzc2lvbi0+Z2V0TXVsdGlXb3JkQ29zdE11bHRpcGxpZXIoKTsKICAgICB9CiAKLSAgICBmbG9hdCBnZXROZXdXb3JkQmlncmFtQ29zdCgKLSAgICAgICAgICAgIGNvbnN0IERpY1RyYXZlcnNlU2Vzc2lvbiAqY29uc3QgdHJhdmVyc2VTZXNzaW9uLCBjb25zdCBEaWNOb2RlICpjb25zdCBkaWNOb2RlLAotICAgICAgICAgICAgaGFzaF9tYXBfY29tcGF0PGludCwgaW50MTZfdD4gKmNvbnN0IGJpZ3JhbUNhY2hlTWFwKSBjb25zdCB7CisgICAgZmxvYXQgZ2V0TmV3V29yZEJpZ3JhbUNvc3QoY29uc3QgRGljVHJhdmVyc2VTZXNzaW9uICpjb25zdCB0cmF2ZXJzZVNlc3Npb24sCisgICAgICAgICAgICBjb25zdCBEaWNOb2RlICpjb25zdCBkaWNOb2RlLAorICAgICAgICAgICAgTXVsdGlCaWdyYW1NYXAgKmNvbnN0IG11bHRpQmlncmFtTWFwKSBjb25zdCB7CiAgICAgICAgIHJldHVybiBEaWNOb2RlVXRpbHM6OmdldEJpZ3JhbU5vZGVJbXByb2JhYmlsaXR5KHRyYXZlcnNlU2Vzc2lvbi0+Z2V0T2Zmc2V0RGljdCgpLAotICAgICAgICAgICAgICAgIGRpY05vZGUsIGJpZ3JhbUNhY2hlTWFwKTsKKyAgICAgICAgICAgICAgICBkaWNOb2RlLCBtdWx0aUJpZ3JhbU1hcCkgKiBTY29yaW5nUGFyYW1zOjpESVNUQU5DRV9XRUlHSFRfTEFOR1VBR0U7CiAgICAgfQogCiAgICAgZmxvYXQgZ2V0Q29tcGxldGlvbkNvc3QoY29uc3QgRGljVHJhdmVyc2VTZXNzaW9uICpjb25zdCB0cmF2ZXJzZVNlc3Npb24sCkBAIC0xNTYsMjEgKzE1NSw5IEBACiAKICAgICBmbG9hdCBnZXRUZXJtaW5hbExhbmd1YWdlQ29zdChjb25zdCBEaWNUcmF2ZXJzZVNlc3Npb24gKmNvbnN0IHRyYXZlcnNlU2Vzc2lvbiwKICAgICAgICAgICAgIGNvbnN0IERpY05vZGUgKmNvbnN0IGRpY05vZGUsIGNvbnN0IGZsb2F0IGRpY05vZGVMYW5ndWFnZUltcHJvYmFiaWxpdHkpIGNvbnN0IHsKLSAgICAgICAgY29uc3QgYm9vbCBoYXNFZGl0Q291bnQgPSBkaWNOb2RlLT5nZXRFZGl0Q29ycmVjdGlvbkNvdW50KCkgPiAwOwotICAgICAgICBjb25zdCBib29sIGlzU2FtZUxlbmd0aCA9IGRpY05vZGUtPmdldERlcHRoKCkgPT0gdHJhdmVyc2VTZXNzaW9uLT5nZXRJbnB1dFNpemUoKTsKLSAgICAgICAgY29uc3QgYm9vbCBoYXNNdWx0aXBsZVdvcmRzID0gZGljTm9kZS0+aGFzTXVsdGlwbGVXb3JkcygpOwotICAgICAgICBjb25zdCBib29sIGhhc1Byb3hpbWl0eUVycm9ycyA9IGRpY05vZGUtPmdldFByb3hpbWl0eUNvcnJlY3Rpb25Db3VudCgpID4gMDsKLSAgICAgICAgLy8gR2VzdHVyZSBpbnB1dCBpcyBhbHdheXMgYXNzdW1lZCB0byBoYXZlIHByb3hpbWl0eSBlcnJvcnMKLSAgICAgICAgLy8gYmVjYXVzZSB0aGUgaW5wdXQgd29yZCBzaG91bGRuJ3QgYmUgdHJlYXRlZCBhcyBwZXJmZWN0Ci0gICAgICAgIGNvbnN0IGJvb2wgaXNFeGFjdE1hdGNoID0gIWhhc0VkaXRDb3VudCAmJiAhaGFzTXVsdGlwbGVXb3JkcwotICAgICAgICAgICAgICAgICYmICFoYXNQcm94aW1pdHlFcnJvcnMgJiYgaXNTYW1lTGVuZ3RoOwotCi0gICAgICAgIGNvbnN0IGZsb2F0IHRvdGFsUHJldldvcmRzTGFuZ3VhZ2VDb3N0ID0gZGljTm9kZS0+Z2V0VG90YWxQcmV2V29yZHNMYW5ndWFnZUNvc3QoKTsKLSAgICAgICAgY29uc3QgZmxvYXQgbGFuZ3VhZ2VJbXByb2JhYmlsaXR5ID0gaXNFeGFjdE1hdGNoID8gMC4wZiA6IGRpY05vZGVMYW5ndWFnZUltcHJvYmFiaWxpdHk7Ci0gICAgICAgIGNvbnN0IGZsb2F0IGxhbmd1YWdlV2VpZ2h0ID0gU2NvcmluZ1BhcmFtczo6RElTVEFOQ0VfV0VJR0hUX0xBTkdVQUdFOwotICAgICAgICAvLyBUT0RPOiBDYXZlYXQ6IFRoZSBmb2xsb3dpbmcgZXF1YXRpb24gc2hvdWxkIGJlOgotICAgICAgICAvLyB0b3RhbFByZXZXb3Jkc0xhbmd1YWdlQ29zdCArIChsYW5ndWFnZUltcHJvYmFiaWxpdHkgKiBsYW5ndWFnZVdlaWdodCk7Ci0gICAgICAgIHJldHVybiAodG90YWxQcmV2V29yZHNMYW5ndWFnZUNvc3QgKyBsYW5ndWFnZUltcHJvYmFiaWxpdHkpICogbGFuZ3VhZ2VXZWlnaHQ7CisgICAgICAgIGNvbnN0IGZsb2F0IGxhbmd1YWdlSW1wcm9iYWJpbGl0eSA9IChkaWNOb2RlLT5pc0V4YWN0TWF0Y2goKSkgPworICAgICAgICAgICAgICAgIDAuMGYgOiBkaWNOb2RlTGFuZ3VhZ2VJbXByb2JhYmlsaXR5OworICAgICAgICByZXR1cm4gbGFuZ3VhZ2VJbXByb2JhYmlsaXR5ICogU2NvcmluZ1BhcmFtczo6RElTVEFOQ0VfV0VJR0hUX0xBTkdVQUdFOwogICAgIH0KIAogICAgIEFLX0ZPUkNFX0lOTElORSBib29sIG5lZWRzVG9Ob3JtYWxpemVDb21wb3VuZERpc3RhbmNlKCkgY29uc3QgewpAQCAtMTg1LDggKzE3Miw3IEBACiAgICAgICAgIHJldHVybiBTY29yaW5nUGFyYW1zOjpTVUJTVElUVVRJT05fQ09TVDsKICAgICB9CiAKLSAgICBBS19GT1JDRV9JTkxJTkUgZmxvYXQgZ2V0U3BhY2VTdWJzdGl0dXRpb25Db3N0KAotICAgICAgICAgICAgY29uc3QgRGljVHJhdmVyc2VTZXNzaW9uICpjb25zdCB0cmF2ZXJzZVNlc3Npb24sCisgICAgQUtfRk9SQ0VfSU5MSU5FIGZsb2F0IGdldFNwYWNlU3Vic3RpdHV0aW9uQ29zdChjb25zdCBEaWNUcmF2ZXJzZVNlc3Npb24gKmNvbnN0IHRyYXZlcnNlU2Vzc2lvbiwKICAgICAgICAgICAgIGNvbnN0IERpY05vZGUgKmNvbnN0IGRpY05vZGUpIGNvbnN0IHsKICAgICAgICAgY29uc3QgYm9vbCBpc0NhcGl0YWxpemVkID0gZGljTm9kZS0+aXNDYXBpdGFsaXplZCgpOwogICAgICAgICBjb25zdCBmbG9hdCBjb3N0ID0gU2NvcmluZ1BhcmFtczo6U1BBQ0VfU1VCU1RJVFVUSU9OX0NPU1QgKyAoaXNDYXBpdGFsaXplZCA/CkBAIC0xOTQsNiArMTgwLDEwIEBACiAgICAgICAgIHJldHVybiBjb3N0ICogdHJhdmVyc2VTZXNzaW9uLT5nZXRNdWx0aVdvcmRDb3N0TXVsdGlwbGllcigpOwogICAgIH0KIAorICAgIEVycm9yVHlwZSBnZXRFcnJvclR5cGUoY29uc3QgQ29ycmVjdGlvblR5cGUgY29ycmVjdGlvblR5cGUsCisgICAgICAgICAgICBjb25zdCBEaWNUcmF2ZXJzZVNlc3Npb24gKmNvbnN0IHRyYXZlcnNlU2Vzc2lvbiwKKyAgICAgICAgICAgIGNvbnN0IERpY05vZGUgKmNvbnN0IHBhcmVudERpY05vZGUsIGNvbnN0IERpY05vZGUgKmNvbnN0IGRpY05vZGUpIGNvbnN0OworCiAgcHJpdmF0ZToKICAgICBESVNBTExPV19DT1BZX0FORF9BU1NJR04oVHlwaW5nV2VpZ2h0aW5nKTsKICAgICBzdGF0aWMgY29uc3QgVHlwaW5nV2VpZ2h0aW5nIHNJbnN0YW5jZTsKZGlmZiAtLWdpdCBhL25hdGl2ZS9qbmkvc3JjL3Rlcm1pbmFsX2F0dHJpYnV0ZXMuaCBiL25hdGl2ZS9qbmkvc3JjL3Rlcm1pbmFsX2F0dHJpYnV0ZXMuaAppbmRleCAxNDRhZTE0Li45MmVmNzFjIDEwMDY0NAotLS0gYS9uYXRpdmUvam5pL3NyYy90ZXJtaW5hbF9hdHRyaWJ1dGVzLmgKKysrIGIvbmF0aXZlL2puaS9zcmMvdGVybWluYWxfYXR0cmlidXRlcy5oCkBAIC03Miw3ICs3Miw3IEBACiAgICAgfQogCiAgICAgYm9vbCBpc0JsYWNrbGlzdGVkT3JOb3RBV29yZCgpIGNvbnN0IHsKLSAgICAgICAgcmV0dXJuIG1GbGFncyAmIChCaW5hcnlGb3JtYXQ6OkZMQUdfSVNfQkxBQ0tMSVNURUQgfCBCaW5hcnlGb3JtYXQ6OkZMQUdfSVNfTk9UX0FfV09SRCk7CisgICAgICAgIHJldHVybiBCaW5hcnlGb3JtYXQ6Omhhc0JsYWNrbGlzdGVkT3JOb3RBV29yZEZsYWcobUZsYWdzKTsKICAgICB9CiAKICBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvdGVzdHMvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2tleWJvYXJkL2ludGVybmFsL1BvaW50ZXJUcmFja2VyUXVldWVUZXN0cy5qYXZhIGIvdGVzdHMvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2tleWJvYXJkL2ludGVybmFsL1BvaW50ZXJUcmFja2VyUXVldWVUZXN0cy5qYXZhCmluZGV4IGQ2NzAwY2YuLmE1NzJkYWEgMTAwNjQ0Ci0tLSBhL3Rlc3RzL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9rZXlib2FyZC9pbnRlcm5hbC9Qb2ludGVyVHJhY2tlclF1ZXVlVGVzdHMuamF2YQorKysgYi90ZXN0cy9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2Qva2V5Ym9hcmQvaW50ZXJuYWwvUG9pbnRlclRyYWNrZXJRdWV1ZVRlc3RzLmphdmEKQEAgLTUxLDcgKzUxLDcgQEAKICAgICAgICAgfQogCiAgICAgICAgIEBPdmVycmlkZQotICAgICAgICBwdWJsaWMgdm9pZCBjYW5jZWxUcmFja2luZygpIHt9CisgICAgICAgIHB1YmxpYyB2b2lkIGNhbmNlbFRyYWNraW5nRm9yQWN0aW9uKCkge30KIAogICAgICAgICBAT3ZlcnJpZGUKICAgICAgICAgcHVibGljIFN0cmluZyB0b1N0cmluZygpIHsK