ZGlmZiAtLWdpdCBhL2NvbnRyb2xzL0VESVQuVE9ETyBiL2NvbnRyb2xzL0VESVQuVE9ETwppbmRleCBlYzVjNGYxLi4zYmRiZThiIDEwMDY0NAotLS0gYS9jb250cm9scy9FRElULlRPRE8KKysrIGIvY29udHJvbHMvRURJVC5UT0RPCkBAIC05NCw3ICs5NCw3IEBACiAKIEF0IHRoZSBlbmQgb2YgRWRpdFduZFByb2MoKSwgRURJVF9SZWxlYXNlUG9pbnRlcigpIGlzIGF1dG9tYXRpY2FsbHkgY2FsbGVkCiB3aGljaCBjbGVhbnMgdXAgdGhlIGluaXRpYWxpemVkIHBvaW50ZXIuICBTbyB5b3UgZG9uJ3QgaGF2ZSB0byB3b3JyeSBhYm91dAotdW5sb2NraW5nIHRoZSBtZW1vcnkgYmxvY2suIFRoaXMgd2F5LCB0aGUgYnVmZmVyIGdldHMgbG9ja2VkIC8gdW5sb2NrIG9ubHkKK3VubG9ja2luZyB0aGUgbWVtb3J5IGJsb2NrLiBUaGlzIHdheSwgdGhlIGJ1ZmZlciBnZXRzIGxvY2tlZCAvIHVubG9ja2VkIG9ubHkKIG9uY2UgZXZlcnkgbWVzc2FnZSwgYWx0aG91Z2ggRURJVF9HZXRQb2ludGVyKCkgbWF5IGFjdHVhbGx5IGhhdmUgYmVlbiBjYWxsZWQKIGEgaHVuZHJlZCB0aW1lcy4gIE9ubHkgd2hlbiB0aGUgYWN0dWFsIEhMT0NBTCBpcyBuZWVkZWQgKGZvciBleGFtcGxlIHRvCiBSZUFsbG9jKSwgYW4gZXh0cmEgY2FsbCAoYmVzaWRlcyB0aGUgY2xlYW51cCBhdCB0aGUgZW5kIG9mIEVkaXRXbmRQcm9jKCkpIHRvCkBAIC0xOTIsMTIgKzE5Miw3IEBACiAKIEQpIEtub3duIGJ1Z3MgLyBGZWF0dXJlcwogCi0tCVRoZSBjb250cm9sIHN0aWxsIGNhbGxzIEdldFRhYmJlZFRleHRFeHRlbnQoKSBhbmQgVGFiYmVkVGV4dE91dCgpIGluCi0JdGhlaXIgMTYgYml0IHZlcnNpb24gKHNpbmNlIHRoZSAzMiBiaXQgdmVyc2lvbnMgZG9uJ3QgeWV0IGV4aXN0KS4KLQlUaGVyZWZvcmUgdGhlIHRhYiBsaXN0IGlzIDE2IGJpdHMgKHNob3VsZCBiZSAzMikuCiAtCVNjcm9sbGJhciB0cmFja2luZyBpcyBicm9rZW4uCi0tCUxvdHMgb2YgQVBJIGNhbGxzIGFyZSB0byAxNiBiaXQgZnVuY3Rpb25zLCBiZWNhdXNlIHRoZWlyIDMyIGJpdAotCXZlcnNpb25zIGhhdmVuJ3QgYmVlbiBpbXBsZW1lbnRlZCB5ZXQgKGUuZy4gY2xpcGJvYXJkKS4KIC0JVHVybmluZyBvbiBXb3JkV3JhcCB3aXRoIDE2LWJpdCBOb3RlcGFkIGxlYXZlcyBwYXJ0IG9mIHRoZSBob3Jpem9udGFsCiAJc2Nyb2xsYmFyIHZpc2libGUgKHByb2JsZW0gd2l0aCBXTV9FUkFTRUJLR05EID8/PykuCiAtCUZJWE1FJ3MgKGdyZXAgZm9yIHRoZW0pLgpkaWZmIC0tZ2l0IGEvZGxscy9kcGxheXgvZHBsYXl4X2dsb2JhbC5jIGIvZGxscy9kcGxheXgvZHBsYXl4X2dsb2JhbC5jCmluZGV4IDg0ZGQzYjYuLjU4MjYxYmQgMTAwNjQ0Ci0tLSBhL2RsbHMvZHBsYXl4L2RwbGF5eF9nbG9iYWwuYworKysgYi9kbGxzL2RwbGF5eC9kcGxheXhfZ2xvYmFsLmMKQEAgLTIyMSw3ICsyMjEsNyBAQAogICB9CiAgIGVsc2UKICAgewotICAgIEVSUiggIjogc2VtYXBob3JlIGVycm9yIDB4JTA4bHhcbiIsIEdldExhc3RFcnJvcigpICk7CisgICAgRVJSKCAiOiBzZW1hcGhvcmUgZXJyb3IgJWxkXG4iLCBHZXRMYXN0RXJyb3IoKSApOwogICAgIHJldHVybiBGQUxTRTsKICAgfQogCkBAIC0yNDYsNyArMjQ2LDcgQEAKICAgfQogICBlbHNlCiAgIHsKLSAgICBFUlIoICI6IHVuYWJsZSB0byBjcmVhdGUgc2hhcmVkIG1lbW9yeSAweCUwOGx4XG4iLCBHZXRMYXN0RXJyb3IoKSApOworICAgIEVSUiggIjogdW5hYmxlIHRvIGNyZWF0ZSBzaGFyZWQgbWVtb3J5ICglbGQpXG4iLCBHZXRMYXN0RXJyb3IoKSApOwogICAgIHJldHVybiBGQUxTRTsKICAgfQogCkBAIC0yNTYsNyArMjU2LDcgQEAKIAogICBpZiggbHBTaGFyZWRTdGF0aWNEYXRhID09IE5VTEwgKQogICB7Ci0gICAgRVJSKCAiOiB1bmFibGUgdG8gbWFwIHN0YXRpYyBkYXRhIGludG8gcHJvY2VzcyBtZW1vcnkgc3BhY2U6IDB4JTA4bHhcbiIsIAorICAgIEVSUiggIjogdW5hYmxlIHRvIG1hcCBzdGF0aWMgZGF0YSBpbnRvIHByb2Nlc3MgbWVtb3J5IHNwYWNlICglbGQpXG4iLCAKICAgICAgICAgIEdldExhc3RFcnJvcigpICk7CiAgICAgcmV0dXJuIEZBTFNFOwogICB9CmRpZmYgLS1naXQgYS9kbGxzL29sZTMyL2NvbXBvYmouYyBiL2RsbHMvb2xlMzIvY29tcG9iai5jCmluZGV4IGU3YzRiZGYuLjVlYzU4NjggMTAwNjQ0Ci0tLSBhL2RsbHMvb2xlMzIvY29tcG9iai5jCisrKyBiL2RsbHMvb2xlMzIvY29tcG9iai5jCkBAIC0xNDU0LDcgKzE0NTQsNyBAQAogCQkJICAoTFBWT0lEKSZscGNsZik7CiAKICAgaWYgKEZBSUxFRChocmVzKSkgewotICAgIEZJWE1FKCJubyBjbGFzc2ZhY3RvcnkgY3JlYXRlZCBmb3IgJXMsIGhyZXMgaXMgMHglMDhseFxuIiwKKyAgICBGSVhNRSgibm8gY2xhc3NmYWN0b3J5IGNyZWF0ZWQgZm9yIENMU0lEICVzLCBocmVzIGlzIDB4JTA4bHhcbiIsCiAJICBkZWJ1Z3N0cl9ndWlkKHJjbHNpZCksaHJlcyk7CiAgICAgcmV0dXJuIGhyZXM7CiAgIH0KZGlmZiAtLWdpdCBhL2RsbHMvb2xlYXV0MzIvdHlwZWxpYi5jIGIvZGxscy9vbGVhdXQzMi90eXBlbGliLmMKaW5kZXggOTE2NGYxNS4uYWU1MTY1YyAxMDA2NDQKLS0tIGEvZGxscy9vbGVhdXQzMi90eXBlbGliLmMKKysrIGIvZGxscy9vbGVhdXQzMi90eXBlbGliLmMKQEAgLTE5NDIsNyArMTk0Miw3IEBACiAgICAgaWYoKnBwVHlwZUxpYikKICAgICAgIHJldCA9IFNfT0s7CiAgICAgZWxzZQotICAgICAgRVJSKCJMb2FkaW5nIG9mIHR5cGVsaWIgJXMgZmFpbGVkIHdpdGggZXJyb3IgMHglMDhseFxuIiwKKyAgICAgIEVSUigiTG9hZGluZyBvZiB0eXBlbGliICVzIGZhaWxlZCB3aXRoIGVycm9yICVsZFxuIiwKIAkgIGRlYnVnc3RyX3cocHN6RmlsZU5hbWUpLCBHZXRMYXN0RXJyb3IoKSk7CiAKICAgICByZXR1cm4gcmV0OwpkaWZmIC0tZ2l0IGEvZGxscy93aW5lcHMvd3BzX0RlLnJjIGIvZGxscy93aW5lcHMvd3BzX0RlLnJjCmluZGV4IDFjOWU2ZjIuLjFhMDZlNDIgMTAwNjQ0Ci0tLSBhL2RsbHMvd2luZXBzL3dwc19EZS5yYworKysgYi9kbGxzL3dpbmVwcy93cHNfRGUucmMKQEAgLTUsNyArNSw3IEBACiBDQVBUSU9OICJQYXBpZXIiCiBGT05UIDgsICJIZWx2IgogewotIExURVhUICJQYXBpZXIgJkdy9t9lOiIsIC0xLCAxMCwgNiwgMTAwLCA4CisgTFRFWFQgIiZQYXBpZXJncvbfZToiLCAtMSwgMTAsIDYsIDEwMCwgOAogIExJU1RCT1ggSUREX1BBUEVSUywgMTAsIDE1LCAyMDAsIDQ1LCBMQlNfU1RBTkRBUkQgfCBMQlNfSEFTU1RSSU5HUyB8CiAJIFdTX1RBQlNUT1AKICBHUk9VUEJPWCAiQXVzcmljaHR1bmciLCAtMSwgMTAsIDgwLCAyMDAsIDUwCmRpZmYgLS1naXQgYS9kbGxzL3gxMWRydi9kZ2EyLmMgYi9kbGxzL3gxMWRydi9kZ2EyLmMKaW5kZXggOWRjNjM0Yi4uYjAwYzgyMiAxMDA2NDQKLS0tIGEvZGxscy94MTFkcnYvZGdhMi5jCisrKyBiL2RsbHMveDExZHJ2L2RnYTIuYwpAQCAtNjMsNyArNjMsNyBAQAogCiAgIC8qIHRlc3QgdGhhdCBpdCB3b3JrcyAqLwogICBpZiAoIVRTWERHQU9wZW5GcmFtZWJ1ZmZlcihnZGlfZGlzcGxheSwgRGVmYXVsdFNjcmVlbihnZGlfZGlzcGxheSkpKSB7Ci0gICAgVFJBQ0UoImRpc2FibGluZyBYRjg2REdBMiAoaW5zdWZmaWNpZW50IHBlcm1pc3Npb25zPylcbiIpOworICAgIFdBUk4oImRpc2FibGluZyBYRjg2REdBMiAoaW5zdWZmaWNpZW50IHBlcm1pc3Npb25zPylcbiIpOwogICAgIHJldHVybjsKICAgfQogICBUU1hER0FDbG9zZUZyYW1lYnVmZmVyKGdkaV9kaXNwbGF5LCBEZWZhdWx0U2NyZWVuKGdkaV9kaXNwbGF5KSk7CkBAIC04NCw3ICs4NCw3IEBACiAgIGZvciAoaT0wOyBpPG5tb2RlczsgaSsrKQogICAgIGNvbnZlcnRfbW9kZSgmbW9kZXNbaV0sICZ4Zjg2ZGdhMl9tb2Rlc1tpKzFdKTsKIAotICBUUkFDRSgiRW5hYmxpbmcgREdBXG4iKTsKKyAgVFJBQ0UoIkVuYWJsaW5nIFhGODZER0EyIG1vZGVcbiIpOwogfQogCiB2b2lkIFgxMURSVl9YRjg2REdBMl9DbGVhbnVwKHZvaWQpCmRpZmYgLS1naXQgYS9kb2N1bWVudGF0aW9uL3BhY2thZ2luZy5zZ21sIGIvZG9jdW1lbnRhdGlvbi9wYWNrYWdpbmcuc2dtbAppbmRleCA5ZTA3ZjcwLi4zMjZlYTg1IDEwMDY0NAotLS0gYS9kb2N1bWVudGF0aW9uL3BhY2thZ2luZy5zZ21sCisrKyBiL2RvY3VtZW50YXRpb24vcGFja2FnaW5nLnNnbWwKQEAgLTgsNiArOCw3IEBACiAgICAgICAgIDxwYXJhPgogICAgICAgICAgIFdyaXR0ZW4gYnkgJm5hbWUtbWFyY3VzLW1laXNzbmVyOyA8ZW1haWw+JmVtYWlsLW1hcmN1cy1tZWlzc25lcjs8L2VtYWlsPgogICAgICAgICAgIFVwZGF0ZWQgYnkgJm5hbWUtamVyZW15LXdoaXRlOyA8ZW1haWw+JmVtYWlsLWplcmVteS13aGl0ZTs8L2VtYWlsPgorICAgICAgICAgIFVwZGF0ZWQgYnkgJm5hbWUtYW5kcmVhcy1tb2hyOyA8ZW1haWw+JmVtYWlsLWFuZHJlYXMtbW9ocjs8L2VtYWlsPgogICAgICAgICA8L3BhcmE+CiAgICAgPC9zZWN0MT4KIApAQCAtMTgsOSArMTksMTUgQEAKICAgICAgIFRoZSBpbmZvcm1hdGlvbiBjb250YWluZWQgaW4gdGhpcyBkb2N1bWVudCBpcyBleHRyZW1lbHkKICAgICAgIHRpbWUgc2Vuc2l0aXZlLiAgPGVtcGhhc2lzPkl0IGlzIHZpdGFsIHRoYXQgYSBwYWNrYWdlcgogICAgICAgc3RheSBjdXJyZW50IHdpdGggY2hhbmdlcyBpbiBXaW5lLiA8Lz4KKyAgICAgIENoYW5nZXMgdG8gdGhpcyBkb2N1bWVudCBjb3VsZCBiZSB0cmFja2VkIGUuZy4gYnkgdmlld2luZyBpdHMgQ1ZTIGxvZy4KKyAgICAgIER1ZSB0byBXaW5lJ3MgZmFzdCBkZXZlbG9wbWVudCwgYSByZWNlbnQgcmV2aXNpb24gZGF0ZQorICAgICAgZG9lcyBub3QgbmVjZXNzYXJpbHkgaW5kaWNhdGUgdGhhdCB0aGlzIGRvY3VtZW50IGlzIDEwMCUgb24gcGFyCisgICAgICB3aXRoIHdoYXQgV2luZSdzIGZ1bGwgaW5zdGFsbGF0aW9uIHJlcXVpcmVtZW50cyBhcmUKKyAgICAgIChlc3BlY2lhbGx5IHdoZW5ldmVyIGxhenkgZGV2ZWxvcGVycyBkb24ndCBwcm9wZXJseSB1cGRhdGUgdGhlCisgICAgICBkb2N1bWVudGF0aW9uIHRvIGluY2x1ZGUgaW5mbyBhYm91dCBuZXcgZmVhdHVyZXMgdGhleSBpbXBsZW1lbnRlZCkuCiAgICAgICA8L3BhcmE+CiAgICAgICA8cGFyYT4KLSAgICAgIFRoaXMgZG9jdW1lbnQgd2FzIGxhc3QgcmV2aXNlZCBvbiBOb3ZlbWJlciAyLCAyMDAwLjwvcGFyYT4KKyAgICAgIFRoaXMgZG9jdW1lbnQgd2FzIGxhc3QgcmV2aXNlZCBvbiBOb3ZlbWJlciAxNCwgMjAwMS48L3BhcmE+CiAKICAgICAgIDwvc2VjdDE+CiAKQEAgLTM0LDcgKzQxLDcgQEAKICAgICAgICAgPG9yZGVyZWRsaXN0PgogICAgICAgICAgICAgPGxpc3RpdGVtIGlkPVdJTkVDT05GRElSPjxwYXJhIGlkPXdpbmVjb25mZGlyLmlkPjxFblZhcj5XSU5FQ09ORkRJUjwvRW5WYXI+PC9wYXJhPgogICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIDxlbnZhcj5XSU5FQ09ORkRJUjwvZW52YXI+IGlzIHRoZSB1c2VycyBXaW5lIGNvbmZpZ3VyYXRpb24gZGlyZWN0b3J5LgorICAgICAgICAgICAgICAgIDxlbnZhcj5XSU5FQ09ORkRJUjwvZW52YXI+IGlzIHRoZSB1c2VyJ3MgV2luZSBjb25maWd1cmF0aW9uIGRpcmVjdG9yeS4KICAgICAgICAgICAgICAgICBUaGlzIGlzIGFsbW9zdCBhbHdheXMgfi8ud2luZSwgYnV0IGNhbiBiZSBvdmVycmlkZGVuCiAgICAgICAgICAgICAgICAgYnkgdGhlIHVzZXIgYnkgc2V0dGluZyB0aGUgPEVuVmFyPldJTkVDT05GRElSPC9FblZhcj4gZW52aXJvbm1lbnQKICAgICAgICAgICAgICAgICB2YXJpYWJsZS4KQEAgLTczLDcgKzgwLDcgQEAKICAgICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICAgVGhpcyBkaXJlY3RvcnkgaXMgc3BlY2lmaWVkIGJ5IHRoZSB1c2VyLCBpbgotICAgICAgICAgICAgICAgIHRoZSB1c2VycyA8bGluayBsaW5rZW5kPXdpbmVyYz5jb25maWd1cmF0aW9uIGZpbGU8L2xpbms+LgorICAgICAgICAgICAgICAgIHRoZSB1c2VyJ3MgPGxpbmsgbGlua2VuZD13aW5lcmM+Y29uZmlndXJhdGlvbiBmaWxlPC9saW5rPi4KICAgICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICAgR2VuZXJhbGx5IHNwZWFraW5nLCB0aGlzIGRpcmVjdG9yeSBpcyBlaXRoZXIgc2V0CkBAIC0xMTgsNyArMTI1LDcgQEAKIAogICAgICAgICA8c2VjdDEgaWQ9InBrZy1nb2FscyI+IDx0aXRsZT5Hb2FsczwvdGl0bGU+CiAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgQW4gaW5zdGFsbGF0aW9uIGZyb20gYSBXaW5lIHBhY2FrYWdlIHNob3VsZDoKKyAgICAgICAgICAgIEFuIGluc3RhbGxhdGlvbiBmcm9tIGEgV2luZSBwYWNrYWdlIHNob3VsZDoKICAgICAgICAgPC9wYXJhPgogICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CiAKQEAgLTEyOCw3ICsxMzUsNyBAQAogICAgICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgICBUaGUgaW5pdGlhbCBpbnN0YWxsYXRpb24gc2hvdWxkIHJlcXVpcmUgbm8gdXNlcgotICAgICAgICAgICAgICAgIGlucHV0LiAgQW4gcnBtIC1pIHdpbmUucnBtIG9yIGFwdCBnZXQgd2luZQorICAgICAgICAgICAgICAgIGlucHV0LiAgQW4gcnBtIC1pIHdpbmUucnBtIG9yIGFwdC1nZXQgaW5zdGFsbCB3aW5lCiAgICAgICAgICAgICAgICAgc2hvdWxkIHN1ZmZpY2UgZm9yIGluaXRpYWwgaW5zdGFsbGF0aW9uLgogICAgICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgIDwvbGlzdGl0ZW0+CkBAIC0xOTksNyArMjA2LDcgQEAKICAgICAgICAgU3VjY2Vzc2Z1bGx5IGluc3RhbGxpbmcgV2luZSByZXF1aXJlczoKICAgICAgIDwvcGFyYT4KIAotICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgIDxpdGVtaXplZGxpc3Q+CiAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICA8cGFyYT5NdWNoIHRob3VnaHQgYW5kIHdvcmsgZnJvbSB0aGUgcGFja2FnZXIgKDF4KTwvcGFyYT4KICAgICAgICAgPC9saXN0aXRlbT4KQEAgLTIwOCwxMSArMjE1LDExIEBACiAgICAgICAgICAgQSBjb25maWd1cmF0aW9uIGZpbGUKICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgV2luZSB3aWxsIG5vdCBydW4gd2l0aCBvdXQgYSBjb25maWd1cmF0aW9uIGZpbGUuICBGdXJ0aGVyLAorICAgICAgICAgIFdpbmUgd2lsbCBub3QgcnVuIHdpdGhvdXQgYSBjb25maWd1cmF0aW9uIGZpbGUuICBGdXJ0aGVyLAogICAgICAgICAgIG5vIGRlZmF1bHQgaXMgY3VycmVudGx5IHByb3ZpZGVkIGJ5IFdpbmUuICBTb21lIHBhY2thZ2VycyBtYXkgYXR0ZW1wdAogICAgICAgICAgIHRvIHByb3ZpZGUgKG9yIGR5bmFtaWNhbGx5IGdlbmVyYXRlKSBhIGRlZmF1bHQgY29uZmlndXJhdGlvbgogICAgICAgICAgIGZpbGUuICBTb21lIHBhY2thZ2VycyBtYXkgd2lzaCB0bwotICAgICAgICAgIHJlbHkgb24gd2luZWNmZyB0byBnZW5lcmF0ZSB0aGUgY29uZmlndXJhdGlvbiBmaWxlLgorICAgICAgICAgIHJlbHkgb24gd2luZXNldHVwIHRvIGdlbmVyYXRlIHRoZSBjb25maWd1cmF0aW9uIGZpbGUuCiAgICAgICAgICAgPC9wYXJhPgogICAgICAgICA8L2xpc3RpdGVtPgogCkBAIC0yMjAsMTMgKzIyNywxMiBAQAogICAgICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgICBBIHdyaXRlYWJsZSA8ZmlsZW5hbWU+QzpcPC9maWxlbmFtZT4gZGlyZWN0b3J5Ci0gICAgICAgICAgICAgICAgc3RydWN0dXJlIG9uIGEgcGVyIHVzZXIgYmFzaXMuIEFwcGxpY2F0aW9ucyBkbyBkdW1wCisgICAgICAgICAgICAgICAgc3RydWN0dXJlIG9uIGEgcGVyLXVzZXIgYmFzaXMuIEFwcGxpY2F0aW9ucyBkbyBkdW1wCiAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi5pbmk8L2ZpbGVuYW1lPiBmaWxlcyBpbnRvCiAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmM6XHdpbmRvd3M8L2ZpbGVuYW1lPiwgaW5zdGFsbGVycyBkdW1wCiAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi5leGU8L2ZpbGVuYW1lPiwgPGZpbGVuYW1lPi5kbGw8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgIGFuZCBtb3JlIGludG8gPGZpbGVuYW1lPmM6XHdpbmRvd3NcPC9maWxlbmFtZT4gYW5kCi0gICAgICAgICAgICAgICAgc3ViZGlyZWN0b3JpZXMgb3IgaW50byA8ZmlsZW5hbWU+QzpcUHJvZ3JhbQotICAgICAgICAgICAgICAgICAgRmlsZXNcPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgYW5kIG1vcmUgaW50byA8ZmlsZW5hbWU+Yzpcd2luZG93czwvZmlsZW5hbWU+IGFuZAorICAgICAgICAgICAgICAgIHN1YmRpcmVjdG9yaWVzIG9yIGludG8gPGZpbGVuYW1lPkM6XFByb2dyYW0gRmlsZXM8L2ZpbGVuYW1lPi4KICAgICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICAgPC9saXN0aXRlbT4KIApAQCAtMjQ0LDcgKzI1MCw3IEBACiAgICAgICAgICAgICAgICAgVGhlcmUgYXJlIHNldmVyYWwgb3RoZXIgY2hvaWNlcyB0aGF0IGNvdWxkIGJlIG1hZGU7CiAgICAgICAgICAgICAgICAgcmVnaXN0cmllcyBjYW4gYmUgaW1wb3J0ZWQgZnJvbSBhIFdpbmRvd3MgcGFydGl0aW9uLgogICAgICAgICAgICAgICAgIEF0IHRoaXMgdGltZSwgV2luZSBkb2VzIG5vdCBjb21wbGV0ZWx5IHN1cHBvcnQKLSAgICAgICAgICAgICAgICBhIGNvbXBsZXggbXVsdGkgdXNlciBpbnN0YWxsYXRpb24sIGFsYSBXaW5kb3dzIE5ULAorICAgICAgICAgICAgICAgIGEgY29tcGxleCBtdWx0aS11c2VyIGluc3RhbGxhdGlvbiBhbGEgV2luZG93cyBOVCwKICAgICAgICAgICAgICAgICBidXQgaXQgY291bGQgZmFpcmx5IHJlYWRpbHkuCiAgICAgICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICAgPC9saXN0aXRlbT4KQEAgLTI3Nyw5ICsyODMsOSBAQAogICAgICAgICA8c2VjdDEgaWQ9InBrZy1zdGF0aWMiPjx0aXRsZT5XaW5lIFN0YXRpYyBhbmQgU2hhcmVhYmxlIEZpbGVzPC90aXRsZT4KIAogICAgICAgICA8cGFyYT4KLSAgICAgICAgQXQgdGhlIHRpbWUgb2YgdGhpcyB3cml0aW5nLCB0aGUgZm9sbG93aW5nIGNvbXBvbmVudHMKKyAgICAgICAgQXQgdGhlIHRpbWUgb2YgdGhpcyB3cml0aW5nLCBhbG1vc3QgYWxsIG9mIHRoZSBmb2xsb3dpbmcgY29tcG9uZW50cwogICAgICAgICBhcmUgaW5zdGFsbGVkIHRocm91Z2ggYSBzdGFuZGFyZCAnbWFrZSBpbnN0YWxsJwotICAgICAgICBvZiBXaW5lLgorICAgICAgICBvZiBXaW5lLiBFeGNlcHRpb25zIGZyb20gdGhlIHJ1bGUgYXJlIG5vdGVkLgogCiAgICAgICAgIDxjYXV0aW9uPgogICAgICAgICA8cGFyYT4KQEAgLTMxNiw2ICszMjIsMjAgQEAKICAgICAgICAgICAgICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgogCisgICAgICAgICAgICAgICAgICA8dmFybGlzdGVudHJ5Pjx0ZXJtPjxmaWxlbmFtZT53aW5lYm9vdHVwPC9maWxlbmFtZT48L3Rlcm0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPHBhcmE+CisJCSAgICBXaW5lbGliIGFwcCB0byBiZSBmb3VuZCBpbiBwcm9ncmFtcy8uCisJCSAgICBJdCdsbCBiZSBjYWxsZWQgYnkgdGhlIHdpbmVsYXVuY2hlciB3aW5lIHdyYXBwZXIgc3RhcnR1cAorCQkgICAgc2NyaXB0IGZvciBldmVyeSBmaXJzdC10aW1lIHdpbmUgaW52b2NhdGlvbi4KKwkJICAgIEl0cyBwdXJwb3NlIGlzIHRvIHByb2Nlc3MgYWxsIFdpbmRvd3Mgc3RhcnR1cCBhdXRvcnVuCisJCSAgICBtZWNoYW5pc21zLCBzdWNoIGFzIHdpbmluaXQuaW5pLCB3aW4uaW5pIExvYWQ9L1J1bj0sCisJCSAgICByZWdpc3RyeSBrZXlzOiBSZW5hbWVGaWxlcy9SdW4vUnVuT25jZSovUnVuU2VydmljZXMqLAorCQkgICAgU3RhcnR1cCBmb2xkZXJzLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICAgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KKwogICAgICAgICAgICAgICAgICAgPHZhcmxpc3RlbnRyeT48dGVybT48ZmlsZW5hbWU+d2luZWNsaXBzcnY8L2ZpbGVuYW1lPjwvdGVybT4KICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgICA8cGFyYT4KQEAgLTMzNCw3ICszNTQsMjcgQEAKICAgICAgICAgICAgICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgogCi0gICAgICAgICAgICAgICAgICA8dmFybGlzdGVudHJ5Pjx0ZXJtPjxmaWxlbmFtZT53aW5lY2ZnPC9maWxlbmFtZT48L3Rlcm0+CisgICAgICAgICAgICAgICAgICA8dmFybGlzdGVudHJ5Pjx0ZXJtPjxmaWxlbmFtZT53aW5lbGF1bmNoZXI8L2ZpbGVuYW1lPjwvdGVybT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8cGFyYT4KKwkJICAgIChub3QgZ2V0dGluZyBpbnN0YWxsZWQgdmlhIG1ha2UgaW5zdGFsbCkKKwkJICAgIEEgd2luZSB3cmFwcGVyIHNoZWxsIHNjcmlwdCB0aGF0IGludGVsbGlnZW50bHkgaGFuZGxlcworCQkgICAgd2luZSBpbnZvY2F0aW9uIGJ5IGluZm9ybWluZyB0aGUgdXNlciBhYm91dCB3aGF0J3MgZ29pbmcKKwkJICAgIG9uLCBhbW9uZyBvdGhlciB0aGluZ3MuCisJCSAgICBUbyBiZSBmb3VuZCBpbiB0b29scy8gZGlyZWN0b3J5LgorCQkgICAgVXNlIG9mIHRoaXMgd3JhcHBlciBzY3JpcHQgaW5zdGVhZCBvZiBkaXJlY3RseSB1c2luZyB3aW5lCisJCSAgICBpcyBzdHJvbmdseSBlbmNvdXJhZ2VkLCBhcyBpdCBub3Qgb25seSBpbXByb3ZlcyB0aGUgdXNlcgorCQkgICAgaW50ZXJmYWNlLCBidXQgYWxzbyBhZGRzIGltcG9ydGFudCBmdW5jdGlvbmFsaXR5IHRvIHdpbmUsCisJCSAgICBzdWNoIGFzIHNlc3Npb24gYm9vdHVwL3N0YXJ0dXAgYWN0aW9ucy4KKwkJICAgIElmIHlvdSBpbnRlbmQgdG8gdXNlIHRoaXMgc2NyaXB0LCB0aGVuIHlvdSBtaWdodCB3YW50IHRvCisJCSAgICByZW5hbWUgdGhlIHdpbmUgZXhlY3V0YWJsZSB0byBlLmcuIHdpbmUuYmluIGFuZAorCQkgICAgd2luZWxhdW5jaGVyIHRvIHdpbmUuCisgICAgICAgICAgICAgICAgICAgIHRoZSA8bGluayBsaW5rZW5kPVdJTkVDT05GRElSIGVuZHRlcm09d2luZWNvbmZkaXIuaWQ+PC9saW5rPi9jb25maWcgZmlsZS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgPC92YXJsaXN0ZW50cnk+CisKKyAgICAgICAgICAgICAgICAgIDx2YXJsaXN0ZW50cnk+PHRlcm0+PGZpbGVuYW1lPndpbmVzZXR1cDwvZmlsZW5hbWU+PC90ZXJtPgogICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgICAgICBUaGlzIGlzIGEgVGNsL1RrIGJhc2VkIGZyb250IGVuZCB0aGF0IHByb3ZpZGVzCkBAIC0zNDgsNyArMzg4LDcgQEAKICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgICAgICAgVGhpcyBzaGVsbCBzY3JpcHQgY2FuIGJlIGNhbGxlZCBieSBXaW5lIGluIG9yZGVyCi0gICAgICAgICAgICAgICAgICAgIHRvIHByb3BvZ2F0ZSBEZXNrdG9wIGljb24gYW5kIG1lbnUgY3JlYXRpb24KKyAgICAgICAgICAgICAgICAgICAgdG8gcHJvcGFnYXRlIERlc2t0b3AgaWNvbiBhbmQgbWVudSBjcmVhdGlvbgogICAgICAgICAgICAgICAgICAgICByZXF1ZXN0cyBvdXQgdG8gYSBHTk9NRSBvciBLREUgKG9yIG90aGVyCiAgICAgICAgICAgICAgICAgICAgIFdpbmRvdyBNYW5hZ2VycykuCiAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KQEAgLTM4Nyw3ICs0MjcsNyBAQAogICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgICAgICBUaGUgZm50MmJkZiB1dGlsaXR5IGV4dHJhY3RzIGZvbnRzIGZyb20gLmZudCBvcgotICAgICAgICAgICAgICAgICAgICAuZGxsIGZpbGVzIGFuZCBzdG9yZXMgdGhlbiBpbiAuZGJmIGZvcm1hdCBmaWxlcy4KKyAgICAgICAgICAgICAgICAgICAgLmRsbCBmaWxlcyBhbmQgc3RvcmVzIHRoZW0gaW4gLmJkZiBmb3JtYXQgZmlsZXMuCiAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgpAQCAtMzk5LDYgKzQzOSwyMiBAQAogICAgICAgICAgICAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAKKyAgICAgICAgICAgICAgICAgIDx2YXJsaXN0ZW50cnk+PHRlcm0+PGZpbGVuYW1lPnVuaW5zdGFsbGVyPC9maWxlbmFtZT48L3Rlcm0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPHBhcmE+CisJCSAgICAobm90IGdldHRpbmcgaW5zdGFsbGVkIHZpYSBtYWtlIGluc3RhbGwpCisgICAgICAgICAgICAgICAgICAgIEEgV2luZWxpYiBwcm9ncmFtIHRvIHVuaW5zdGFsbCBpbnN0YWxsZWQgV2luZG93cyBwcm9ncmFtcy4KKwkJICAgIFRvIGJlIGZvdW5kIGluIHRoZSBwcm9ncmFtcy8gc291cmNlIGRpcmVjdG9yeS4KKwkJICAgIFRoaXMgcHJvZ3JhbSBjYW4gYmUgdXNlZCB0byB1bmluc3RhbGwgbW9zdCBXaW5kb3dzIHByb2dyYW1zCisJCSAgICAoanVzdCBsaWtlIHRoZSBBZGQvUmVtb3ZlIFByb2dyYW1zIGl0ZW0gaW4gV2luZG93cykKKwkJICAgIGJ5IHRha2luZyB0aGUgcmVnaXN0cnkgdW5pbnN0YWxsIHN0cmluZ3MgdGhhdCBnZXQgY3JlYXRlZAorCQkgICAgYnkgaW5zdGFsbGVycyBzdWNoIGFzIEluc3RhbGxTaGllbGQgb3IgV0lTRS4KKwkJICAgIEluIGJpbmFyeSBwYWNrYWdlcywgaXQgc2hvdWxkIHByb2JhYmx5IGJlIHJlbmFtZWQKKwkJICAgIHRvIHNvbWV0aGluZyBsaWtlIHdpbmUtdW5pbnN0YWxsZXIgZm9yIGNvbnNpc3RlbmN5J3Mgc2FrZS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgPC92YXJsaXN0ZW50cnk+CisKICAgICAgICAgICAgICAgICA8L3ZhcmlhYmxlbGlzdD4KICAgICAgICAgICAgIDwvbGlzdGl0ZW0+CiAKQEAgLTQwNywxNiArNDYzLDE1IEBACiAKICAgICAgICAgPHNpbXBsZWxpc3QgY29sdW1ucz01PgogCi08bWVtYmVyPmxpYndpbmUuc28uMS4wPC8+Ci08bWVtYmVyPmxpYmRkcmF3LnNvLjEuMDwvPgotPG1lbWJlcj5saWJvcGVuZ2wzMi5zby4xLjA8Lz4KLTxtZW1iZXI+bGlieDExZHJ2LnNvLjEuMDwvPgogPG1lbWJlcj5saWJhZHZhcGkzMi5zby4xLjA8Lz4KKzxtZW1iZXI+bGliYXZpY2FwMzIuc28uMS4wPC8+CiA8bWVtYmVyPmxpYmF2aWZpbDMyLnNvLjEuMDwvPgogPG1lbWJlcj5saWJjb21jdGwzMi5zby4xLjA8Lz4KIDxtZW1iZXI+bGliY29tZGxnMzIuc28uMS4wPC8+CiA8bWVtYmVyPmxpYmNydGRsbC5zby4xLjA8Lz4KIDxtZW1iZXI+bGliZGNpbWFuMzIuc28uMS4wPC8+Cis8bWVtYmVyPmxpYmRkcmF3LnNvLjEuMDwvPgorPG1lbWJlcj5saWJkZXZlbnVtLnNvLjEuMDwvPgogPG1lbWJlcj5saWJkaW5wdXQuc28uMS4wPC8+CiA8bWVtYmVyPmxpYmRwbGF5LnNvLjEuMDwvPgogPG1lbWJlcj5saWJkcGxheXguc28uMS4wPC8+CkBAIC00MjUsMTIgKzQ4MCwyNyBAQAogPG1lbWJlcj5saWJpY21wLnNvLjEuMDwvPgogPG1lbWJlcj5saWJpbWFnZWhscC5zby4xLjA8Lz4KIDxtZW1iZXI+bGliaW1tMzIuc28uMS4wPC8+Cis8bWVtYmVyPmxpYmpveXN0aWNrLmRydi5zby4xLjA8Lz4KIDxtZW1iZXI+bGlia2VybmVsMzIuc28uMS4wPC8+CiA8bWVtYmVyPmxpYmx6MzIuc28uMS4wPC8+Cis8bWVtYmVyPmxpYm1hcGkuc28uMS4wPC8+Cis8bWVtYmVyPmxpYm1jaWFuaW0uZHJ2LnNvLjEuMDwvPgorPG1lbWJlcj5saWJtY2lhdmkuZHJ2LnNvLjEuMDwvPgorPG1lbWJlcj5saWJtY2ljZGEuZHJ2LnNvLjEuMDwvPgorPG1lbWJlcj5saWJtY2lzZXEuZHJ2LnNvLjEuMDwvPgorPG1lbWJlcj5saWJtY2l3YXZlLmRydi5zby4xLjA8Lz4KKzxtZW1iZXI+bGlibWlkaW1hcC5kcnYuc28uMS4wPC8+CiA8bWVtYmVyPmxpYm1wci5zby4xLjA8Lz4KKzxtZW1iZXI+bGlibXNhY20uZHJ2LnNvLjEuMDwvPgogPG1lbWJlcj5saWJtc2FjbTMyLnNvLjEuMDwvPgorPG1lbWJlcj5saWJtc2Rtby5zby4xLjA8Lz4KKzxtZW1iZXI+bGlibXNpbWczMi5zby4xLjA8Lz4KIDxtZW1iZXI+bGlibXNuZXQzMi5zby4xLjA8Lz4KKzxtZW1iZXI+bGlibXNybGUzMi5zby4xLjA8Lz4KKzxtZW1iZXI+bGlibXN2Y3J0LnNvLjEuMDwvPgogPG1lbWJlcj5saWJtc3ZmdzMyLnNvLjEuMDwvPgorPG1lbWJlcj5saWJuZXRhcGkzMi5zby4xLjA8Lz4KKzxtZW1iZXI+bGlibnRkbGwuc28uMS4wPC8+CiA8bWVtYmVyPmxpYm9kYmMzMi5zby4xLjA8Lz4KIDxtZW1iZXI+bGlib2xlMzIuc28uMS4wPC8+CiA8bWVtYmVyPmxpYm9sZWF1dDMyLnNvLjEuMDwvPgpAQCAtNDM4LDM5ICs1MDgsNDIgQEAKIDxtZW1iZXI+bGlib2xlZGxnLnNvLjEuMDwvPgogPG1lbWJlcj5saWJvbGVwcm8zMi5zby4xLjA8Lz4KIDxtZW1iZXI+bGlib2xlc3ZyMzIuc28uMS4wPC8+Cis8bWVtYmVyPmxpYm9wZW5nbDMyLnNvLjEuMDwvPgogPG1lbWJlcj5saWJwc2FwaS5zby4xLjA8Lz4KKzxtZW1iZXI+bGlicWNhcC5zby4xLjA8Lz4KKzxtZW1iZXI+bGlicXVhcnR6LnNvLjEuMDwvPgogPG1lbWJlcj5saWJyYXNhcGkzMi5zby4xLjA8Lz4KIDxtZW1iZXI+bGlicmljaGVkMzIuc28uMS4wPC8+CiA8bWVtYmVyPmxpYnJwY3J0NC5zby4xLjA8Lz4KIDxtZW1iZXI+bGlic2VyaWFsdWkuc28uMS4wPC8+CiA8bWVtYmVyPmxpYnNldHVwYXBpLnNvLjEuMDwvPgorPG1lbWJlcj5saWJzaGRvY3Z3LnNvLjEuMDwvPgogPG1lbWJlcj5saWJzaGVsbDMyLnNvLjEuMDwvPgogPG1lbWJlcj5saWJzaGZvbGRlci5zby4xLjA8Lz4KIDxtZW1iZXI+bGlic2hsd2FwaS5zby4xLjA8Lz4KKzxtZW1iZXI+bGlic3RpLnNvLjEuMDwvPgogPG1lbWJlcj5saWJ0YXBpMzIuc28uMS4wPC8+CiA8bWVtYmVyPmxpYnR0eWRydi5zby4xLjA8Lz4KKzxtZW1iZXI+bGlidXJsLnNvLjEuMDwvPgogPG1lbWJlcj5saWJ1cmxtb24uc28uMS4wPC8+CiA8bWVtYmVyPmxpYnVzZXIzMi5zby4xLjA8Lz4KIDxtZW1iZXI+bGlidmVyc2lvbi5zby4xLjA8Lz4KIDxtZW1iZXI+bGlidzMyc2tybmwuc28uMS4wPC8+Ci08bWVtYmVyPmxpYnduYXNwaTMyLnNvLjEuMDwvPgorPG1lbWJlcj5saWJ3aW5lLnNvLjEuMDwvPgorPG1lbWJlcj5saWJ3aW5lX3VuaWNvZGUuc28uMS4wPC8+Cis8bWVtYmVyPmxpYndpbmVkb3Muc28uMS4wPC8+Cis8bWVtYmVyPmxpYndpbmVvc3MuZHJ2LnNvLjEuMDwvPgogPG1lbWJlcj5saWJ3aW5lcHMuc28uMS4wPC8+CiA8bWVtYmVyPmxpYndpbmluZXQuc28uMS4wPC8+Ci08bWVtYmVyPmxpYmpveXN0aWNrLmRydi5zby4xLjA8Lz4KIDxtZW1iZXI+bGlid2lubW0uc28uMS4wPC8+Ci08bWVtYmVyPmxpYm1jaWFuaW0uZHJ2LnNvLjEuMDwvPgotPG1lbWJlcj5saWJtY2lhdmkuZHJ2LnNvLjEuMDwvPgotPG1lbWJlcj5saWJtY2ljZGEuZHJ2LnNvLjEuMDwvPgotPG1lbWJlcj5saWJtY2lzZXEuZHJ2LnNvLjEuMDwvPgotPG1lbWJlcj5saWJtY2l3YXZlLmRydi5zby4xLjA8Lz4KLTxtZW1iZXI+bGlibWlkaW1hcC5kcnYuc28uMS4wPC8+Ci08bWVtYmVyPmxpYm1zYWNtLmRydi5zby4xLjA8Lz4KLTxtZW1iZXI+bGlid2luZW9zcy5kcnYuc28uMS4wPC8+Ci08bWVtYmVyPmxpYndzMl8zMi5zby4xLjA8Lz4KKzxtZW1iZXI+bGlid2lubmxzMzIuc28uMS4wPC8+CiA8bWVtYmVyPmxpYndpbnNwb29sLmRydi5zby4xLjA8Lz4KKzxtZW1iZXI+bGlid2ludHJ1c3Quc28uMS4wPC8+Cis8bWVtYmVyPmxpYnduYXNwaTMyLnNvLjEuMDwvPgogPG1lbWJlcj5saWJ3b3czMi5zby4xLjA8Lz4KKzxtZW1iZXI+bGlid3MyXzMyLnNvLjEuMDwvPgogPG1lbWJlcj5saWJ3c29jazMyLnNvLjEuMDwvPgotPG1lbWJlcj5saWJ3aW5lX3VuaWNvZGUuc28uMS4wPC8+Cis8bWVtYmVyPmxpYngxMWRydi5zby4xLjA8Lz4KICAgICAgICAgPC9zaW1wbGVsaXN0PgogCiAgICAgICAgIDwvbGlzdGl0ZW0+CkBAIC03NTIsNyArODI1LDcgQEAKICAgICAgICAgICAgICAgICAgIDx2YXJsaXN0ZW50cnk+PHRlcm0+PGZpbGVuYW1lPjxsaW5rIGxpbmtlbmQ9V0lORUNPTkZESVIgZW5kdGVybT13aW5lY29uZmRpci5pZD48L2xpbms+L3N5c3RlbS5yZWc8L2ZpbGVuYW1lPjwvdGVybT4KICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSB1c2VycyBsb2NhbCBjb3B5IG9mIAorICAgICAgICAgICAgICAgICAgICBUaGlzIGZpbGUgY29udGFpbnMgdGhlIHVzZXIncyBsb2NhbCBjb3B5IG9mIAogICAgICAgICAgICAgICAgICAgICB0aGUgSEtFWV9MT0NBTF9NQUNISU5FIHJlZ2lzdHJ5IGhpdmUuICBJbiBnZW5lcmFsCiAgICAgICAgICAgICAgICAgICAgIHVzZSwgaXQgd2lsbCBjb250YWluIG9ubHkgY2hhbmdlcyBtYWRlIHRvIHRoZQogICAgICAgICAgICAgICAgICAgICBkZWZhdWx0IHJlZ2lzdHJ5IHZhbHVlcy4KQEAgLTc2Myw3ICs4MzYsNyBAQAogICAgICAgICAgICAgICAgICAgPHZhcmxpc3RlbnRyeT48dGVybT48ZmlsZW5hbWU+PGxpbmsgbGlua2VuZD1XSU5FQ09ORkRJUiBlbmR0ZXJtPXdpbmVjb25mZGlyLmlkPjwvbGluaz4vdXNlci5yZWc8L2ZpbGVuYW1lPjwvdGVybT4KICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSB1c2VycyBsb2NhbCBjb3B5IG9mIAorICAgICAgICAgICAgICAgICAgICBUaGlzIGZpbGUgY29udGFpbnMgdGhlIHVzZXIncyBsb2NhbCBjb3B5IG9mIAogICAgICAgICAgICAgICAgICAgICB0aGUgSEtFWV9DVVJSRU5UX1VTRVIgcmVnaXN0cnkgaGl2ZS4gIEluCiAgICAgICAgICAgICAgICAgICAgIGdlbmVyYWwgdXNlLCBpdCB3aWxsIGNvbnRhaW4gb25seSBjaGFuZ2VzIG1hZGUgdG8gdGhlCiAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQgcmVnaXN0cnkgdmFsdWVzLgpAQCAtNzc0LDcgKzg0Nyw3IEBACiAgICAgICAgICAgICAgICAgICA8dmFybGlzdGVudHJ5Pjx0ZXJtPjxmaWxlbmFtZT48bGluayBsaW5rZW5kPVdJTkVDT05GRElSIGVuZHRlcm09d2luZWNvbmZkaXIuaWQ+PC9saW5rPi91c2VyZGVmLnJlZzwvZmlsZW5hbWU+PC90ZXJtPgogICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICBUaGlzIGZpbGUgY29udGFpbnMgdGhlIHVzZXJzIGxvY2FsIGNvcHkgb2YgCisgICAgICAgICAgICAgICAgICAgIFRoaXMgZmlsZSBjb250YWlucyB0aGUgdXNlcidzIGxvY2FsIGNvcHkgb2YgCiAgICAgICAgICAgICAgICAgICAgIHRoZSBIS0VZX1VTRVJTXC5EZWZhdWx0IHJlZ2lzdHJ5IGhpdmUuICBJbgogICAgICAgICAgICAgICAgICAgICBnZW5lcmFsIHVzZSwgaXQgd2lsbCBjb250YWluIG9ubHkgY2hhbmdlcyBtYWRlIHRvIHRoZQogICAgICAgICAgICAgICAgICAgICBkZWZhdWx0IHJlZ2lzdHJ5IHZhbHVlcy4KQEAgLTc5NywxMSArODcwLDExIEBACiAgICAgICAgICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgICAgICBUaGlzIGZpbGUgY29udGFpbnMgdGhlIGdsb2JhbCB2YWx1ZXMgZm9yCiAgICAgICAgICAgICAgICAgICAgIEhLRVlfTE9DQUxfTUFDSElORS4gIFRoZSB2YWx1ZXMgaW4gdGhpcyBmaWxlCi0gICAgICAgICAgICAgICAgICAgIGNhbiBiZSBvdmVycmlkZW4gYnkgdGhlIHVzZXJzIGxvY2FsIHNldHRpbmdzLgorICAgICAgICAgICAgICAgICAgICBjYW4gYmUgb3ZlcnJpZGRlbiBieSB0aGUgdXNlcidzIGxvY2FsIHNldHRpbmdzLgogICAgICAgICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgICAgICAgICAgIDxub3RlPgogICAgICAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgVGhlIGxvY2F0aW9uIG9mIHRoaXMgZGlyZWN0b3J5IGlzIGhhcmQgY29kZWQgd2l0aGluCisgICAgICAgICAgICAgICAgICAgIFRoZSBsb2NhdGlvbiBvZiB0aGlzIGRpcmVjdG9yeSBpcyBoYXJkY29kZWQgd2l0aGluCiAgICAgICAgICAgICAgICAgICAgIHdpbmUsIGdlbmVyYWxseSB0byAvZXRjLiAgVGhpcyB3aWxsIGhvcGVmdWxseSBiZQogICAgICAgICAgICAgICAgICAgICBmaXhlZCBhdCBzb21lIHBvaW50IGluIHRoZSBmdXR1cmUuCiAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KQEAgLTgxNSw3ICs4ODgsNyBAQAogICAgICAgICAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgICAgICAgVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBnbG9iYWwgdmFsdWVzIGZvcgogICAgICAgICAgICAgICAgICAgICBIS0VZX1VTRVJTLiAgVGhlIHZhbHVlcyBpbiB0aGlzIGZpbGUKLSAgICAgICAgICAgICAgICAgICAgY2FuIGJlIG92ZXJyaWRlbiBieSB0aGUgdXNlcnMgbG9jYWwgc2V0dGluZ3MuCisgICAgICAgICAgICAgICAgICAgIGNhbiBiZSBvdmVycmlkZGVuIGJ5IHRoZSB1c2VyJ3MgbG9jYWwgc2V0dGluZ3MuCiAgICAgICAgICAgICAgICAgICAgIFRoaXMgZmlsZSBpcyBsaWtlbHkgdG8gYmUgZGVwcmVjYXRlZCBpbgogICAgICAgICAgICAgICAgICAgICBmYXZvciBvZiBhIGdsb2JhbCB3aW5lLnVzZXJkZWYucmVnIHRoYXQgd2lsbAogICAgICAgICAgICAgICAgICAgICBvbmx5IGNvbnRhaW4gSEtFWV9VU0VSUy8uRGVmYXVsdC4KQEAgLTgzMCw3ICs5MDMsNyBAQAogCiAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgICAgICA8dmFyaWFibGVsaXN0Pjx0aXRsZT5PdGhlciBmaWxlcyBpbiA8bGluayBsaW5rZW5kPVdJTkVDT05GRElSIGVuZHRlcm09d2luZWNvbmZkaXIuaWQ+PC9saW5rPjwvdGl0bGU+Ci0gICAgICAgICAgICAgICAgICA8dmFybGlzdGVudHJ5Pjx0ZXJtPjxmaWxlbmFtZT48bGluayBsaW5rZW5kPVdJTkVDT05GRElSIGVuZHRlcm09d2luZWNvbmZkaXIuaWQ+PC9saW5rPi93aW5lc2VydmVyLVt1c2VybmFtZV08L2ZpbGVuYW1lPjwvdGVybT4KKyAgICAgICAgICAgICAgICAgIDx2YXJsaXN0ZW50cnk+PHRlcm0+PGZpbGVuYW1lPjxsaW5rIGxpbmtlbmQ9V0lORUNPTkZESVIgZW5kdGVybT13aW5lY29uZmRpci5pZD48L2xpbms+L3dpbmVzZXJ2ZXItW2hvc3RuYW1lXTwvZmlsZW5hbWU+PC90ZXJtPgogICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgICAgICBUaGlzIGRpcmVjdG9yeSBjb250YWlucyBmaWxlcyB1c2VkIGJ5IFdpbmUgYW5kIHRoZSBXaW5lc2VydmVyCkBAIC05MTEsNyArOTg0LDcgQEAKICAgICAgICAgICAgICAgICBXaW5kb3dzIER5bmFtaWMgTGluayBMaWJyYXJpZXMgKFtXSU5ET1dTRElSXS9zeXN0ZW0zMi8qLmRsbCkKICAgICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgICAgICAgPHBhcmE+IAotICAgICAgICAgICAgICAgIFdpbmUgaGFzIHRoZSBhYmlsaXR5IHRvIHVzZSB0aGUgYWN0dWFsbCBXaW5kb3dzIERMTCBmaWxlcworICAgICAgICAgICAgICAgIFdpbmUgaGFzIHRoZSBhYmlsaXR5IHRvIHVzZSB0aGUgYWN0dWFsIFdpbmRvd3MgRExMIGZpbGVzCiAgICAgICAgICAgICAgICAgd2hlbiBydW5uaW5nIGFuIGFwcGxpY2F0aW9uLiAgQW4gZW5kIHVzZXIgY2FuIGNvbmZpZ3VyZQogICAgICAgICAgICAgICAgIFdpbmUgc28gdGhhdCBXaW5lIHVzZXMgc29tZSBvciBhbGwgb2YgdGhlc2UgRExMIGZpbGVzCiAgICAgICAgICAgICAgICAgd2hlbiBydW5uaW5nIGEgZ2l2ZW4gYXBwbGljYXRpb24uCkBAIC05NDQsOCArMTAxNyw4IEBACiAgICAgICAgIFRoZSBtb3N0IGJhc2ljIHF1ZXN0aW9uIHRvIGFzayBpcyBnaXZlbiB0aGUgV2luZSBDVlMgdHJlZSwKICAgICAgICAgd2hhdCBwaHlzaWNhbCBmaWxlcyBhcmUgeW91LCB0aGUgcGFja2FnZXIsIGdvaW5nIHRvIHByb2R1Y2U/CiAgICAgICAgIEFyZSB5b3UgZ29pbmcgdG8gcHJvZHVjZSBvbmx5IGEgd2luZS5ycG0gKGFzIE1hcmN1cyBoYXMgZG9uZSksCi0gICAgICAgIG9yIGFyZSB5b3UgZ29pbmcgdG8gcHJvZHVjZSA1IGRlYmlhbiBmaWxlcwotICAgICAgICAobGlid2luZS1kZXYsIGxpYndpbmUsIHdpbmUtZG9jLCB3aW5lLXV0aWxzLCBhbmQgd2luZSkgYXMKKyAgICAgICAgb3IgYXJlIHlvdSBnb2luZyB0byBwcm9kdWNlIDYgRGViaWFuIGZpbGVzCisgICAgICAgIChsaWJ3aW5lLCBsaWJ3aW5lLWRldiwgd2luZSwgd2luZS1kb2MsIHdpbmUtdXRpbHMgYW5kIHdpbmVzZXR1cHRrKSBhcwogICAgICAgICBPdmUgaGFzIGRvbmU/CiAgICAgICAgIDwvcGFyYT4KICAgICAgICAgPHBhcmE+CkBAIC0xMDA3LDYgKzEwODAsMTIgQEAKICAgICAgICAgYW5kIHRoZSBPcGVuTGludXggcGFja2FnZSBmb3Igc3BlY2lmaWMgZGV0YWlscyBvbiBob3cKICAgICAgICAgdGhvc2UgcGFja2FnZXMgYXJlIGJ1aWx0LgogICAgICAgICA8L3BhcmE+CisJPHBhcmE+CisJWW91IG1pZ2h0IGFsc28gd2FudCB0byB1c2UgdGhlIHdpbmUgd3JhcHBlciBzY3JpcHQgd2luZWxhdW5jaGVyCisJdGhhdCBjYW4gYmUgZm91bmQgaW4gdG9vbHMvIGRpcmVjdG9yeSwgYXMgaXQgaGFzIHNldmVyYWwgaW1wb3J0YW50CisJYWR2YW50YWdlcyBvdmVyIGRpcmVjdGx5IGludm9raW5nIHRoZSB3aW5lIGJpbmFyeS4KKwlTZWUgdGhlIDxsaW5rIGxpbmtlbmQ9YmluZmlsZXM+RXhlY3V0YWJsZSBGaWxlczwvbGluaz4gc2VjdGlvbgorCWZvciBkZXRhaWxzLgogCiAgICAgICAgIDxzZWN0MiBpZD1vcHQ+PHRpdGxlPlRoZSBxdWVzdGlvbiBvZiAvb3B0L3dpbmU8L3RpdGxlPgogICAgICAgICA8cGFyYT4KQEAgLTEwMzQsMTUgKzExMTMsMTUgQEAKICAgICAgICAgICAgICAgICBSZWx5IGNvbXBsZXRlbHkgb24gdXNlciBmaWxlIHNwYWNlIC0gaW5zdGFsbCBub3RoaW5nCiAgICAgICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFRoaXMgYXBwcm9hY2ggcmVsaWVzIHVwb24gdGhlIG5ldyB3aW5lY2ZnIHV0aWxpdHkgYW5kCi0gICAgICAgICAgICAgICAgdGhlIG5ldyBhYmlsaXR5IG9mIFdpbmUgdG8gbGF1bmNoIHdpbmVjZmcgaWYgbm8gY29uZmlndXJhdGlvbiBmaWxlIGlzIGZvdW5kLgorICAgICAgICAgICAgICAgIFRoaXMgYXBwcm9hY2ggcmVsaWVzIHVwb24gdGhlIG5ldyB3aW5lc2V0dXAgdXRpbGl0eSBhbmQKKyAgICAgICAgICAgICAgICB0aGUgbmV3IGFiaWxpdHkgb2YgV2luZSB0byBsYXVuY2ggd2luZXNldHVwIGlmIG5vIGNvbmZpZ3VyYXRpb24gZmlsZSBpcyBmb3VuZC4KICAgICAgICAgICAgICAgICBUaGUgYmFzaWMgY29uY2VwdCBpcyB0aGF0IG5vIGdsb2JhbCBjb25maWd1cmF0aW9uIGZpbGVzCiAgICAgICAgICAgICAgICAgYXJlIGNyZWF0ZWQgYXQgaW5zdGFsbCB0aW1lLgogICAgICAgICAgICAgICAgIEluc3RlYWQsIFdpbmUgY29uZmlndXJhdGlvbiBmaWxlcyBhcmUgY3JlYXRlZCBvbiB0aGUKLSAgICAgICAgICAgICAgICBmbHkgYnkgdGhlIHdpbmVjZmcgcHJvZ3JhbSB3aGVuIFdpbmUgaXMgaW52b2tlZC4KLSAgICAgICAgICAgICAgICBGdXJ0aGVyLCB3aW5lY2ZnIGNyZWF0ZXMgZGVmYXVsdCBXaW5kb3dzIGRpcmVjdG9yaWVzCisgICAgICAgICAgICAgICAgZmx5IGJ5IHRoZSB3aW5lc2V0dXAgcHJvZ3JhbSB3aGVuIFdpbmUgaXMgaW52b2tlZC4KKyAgICAgICAgICAgICAgICBGdXJ0aGVyLCB3aW5lc2V0dXAgY3JlYXRlcyBkZWZhdWx0IFdpbmRvd3MgZGlyZWN0b3JpZXMKICAgICAgICAgICAgICAgICBhbmQgcGF0aHMgdGhhdCBhcmUgc3RvcmVkIGNvbXBsZXRlbHkgaW4KLSAgICAgICAgICAgICAgICB0aGUgdXNlcnMgPGxpbmsgbGlua2VuZD1XSU5FQ09ORkRJUiBlbmR0ZXJtPXdpbmVjb25mZGlyLmlkPjwvbGluaz4uCisgICAgICAgICAgICAgICAgdGhlIHVzZXIncyA8bGluayBsaW5rZW5kPVdJTkVDT05GRElSIGVuZHRlcm09d2luZWNvbmZkaXIuaWQ+PC9saW5rPi4KICAgICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICAgVGhpcyBhcHByb2FjaCBoYXMgdGhlIGJlbmVmaXQgb2Ygc2ltcGxpY2l0eSBpbiB0aGF0IGFsbApAQCAtMTA1NCw3ICsxMTMzLDcgQEAKICAgICAgICAgICAgICAgICBUaGlzIGFwcHJvYWNoLCBob3dldmVyLCBhZGRzIGFub3RoZXIgbGV2ZWwgb2YgY29tcGxleGl0eS4KICAgICAgICAgICAgICAgICBJdCBkb2VzIG5vdCBhbGxvdyBXaW5lIHRvIHJ1biBTb2xpdGFpcmUgJ291dCBvZiB0aGUgYm94JzsKICAgICAgICAgICAgICAgICB0aGUgdXNlciBtdXN0IHJ1biB0aGUgY29uZmlndXJhdGlvbiBwcm9ncmFtIGZpcnN0LiAgRnVydGhlciwKLSAgICAgICAgICAgICAgICB3aW5lY2ZnIHJlcXVpcmVzIFRjbC9UaywgYSByZXF1aXJlbWVudCBub3QgYmVsb3ZlZCBieSBzb21lLgorICAgICAgICAgICAgICAgIHdpbmVzZXR1cCByZXF1aXJlcyBUY2wvVGssIGEgcmVxdWlyZW1lbnQgbm90IGJlbG92ZWQgYnkgc29tZS4KICAgICAgICAgICAgICAgICBBZGRpdGlvbmFsbHksIHRoaXMgYXBwcm9hY2ggY2xvc2VzIHRoZSBkb29yIG9uIG11bHRpCiAgICAgICAgICAgICAgICAgdXNlciBjb25maWd1cmF0aW9ucyBhbmQgcHJlc3VtZXMgYSBzaW5nbGUgdXNlciBhcHByb2FjaC4KICAgICAgICAgICAgICAgICA8L3BhcmE+CkBAIC0xMjM0LDcgKzEzMTMsNyBAQAogICAgICAgICAgICAgICA8cGFyYT5DcmVhdGluZyBhIGdvb2QgZGVmYXVsdCBjb25maWd1cmF0aW9uIGZpbGU8L3BhcmE+CiAgICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgIEZvciB0aGUgcmF0aW9uYWxlcyBvZiBuZWVkaW5nIGFzIGxlc3MgaW5wdXQgZnJvbSB0aGUKLSAgICAgICAgICAgICAgICB1c2VyIGFzIHBvc3NpYmxlICBhcmlzZXMgdGhlIG5lZWQgZm9yIGEgdmVyeSBnb29kCisgICAgICAgICAgICAgICAgdXNlciBhcyBwb3NzaWJsZSBhcmlzZXMgdGhlIG5lZWQgZm9yIGEgdmVyeSBnb29kCiAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiBmaWxlLiBUaGUgb25lIHN1cHBsaWVkIHdpdGggV0lORSBpcwogICAgICAgICAgICAgICAgIGN1cnJlbnRseSBsYWNraW5nLiBXZSBuZWVkOgogICAgICAgICAgICAgICA8L3BhcmE+CkBAIC0xMjQ2LDcgKzEzMjUsNyBAQAogICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgQSBmb3IgdGhlIGZsb3BweS4gU3BlY2lmeSB5b3VyIGRpc3RyaWJ1dGlvbnMKKyAgICAgICAgICAgICAgICAgICAgICAgIEEgZm9yIHRoZSBmbG9wcHkuIFNwZWNpZnkgeW91ciBkaXN0cmlidXRpb24ncwogICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdCBmbG9wcHkgbW91bnRwb2ludCBoZXJlLgogICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgICAgICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+CkBAIC0xMjU2LDcgKzEzMzUsNyBAQAogICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICAgICAgICAgICBDIGZvciB0aGUgPGZpbGVuYW1lPkM6XDwvZmlsZW5hbWU+IGRpcmVjdG9yeS4KLSAgICAgICAgICAgICAgICAgICAgICAgIEhlcmUgd2UgdXNlIHRoZSB1c2VycyBob21lZGlyZWN0b3J5LCBmb3IgbW9zdAorICAgICAgICAgICAgICAgICAgICAgICAgSGVyZSB3ZSB1c2UgdGhlIHVzZXIncyBob21lIGRpcmVjdG9yeSwgZm9yIG1vc3QKICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9ucyBkbyBzZWUgPGZpbGVuYW1lPkM6XDwvZmlsZW5hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICBhcyByb290LXdyaXRlYWJsZSBkaXJlY3Rvcnkgb2YgZXZlcnkgd2luZG93cwogICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFsbGF0aW9uIGFuZCB0aGlzIGJhc2ljYWxseSBpcyBpdCBpbiB0aGUKQEAgLTEyNjksNyArMTM0OCw3IEBACiAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgICAgICAgICAgIFIgZm9yIHRoZSBDRC1Sb20gZHJpdmUuIFNwZWNpZnkgeW91cgotICAgICAgICAgICAgICAgICAgICAgICAgZGlzdHJpYnV0aW9ucyBkZWZhdWx0IENELVJPTSBkcml2ZXMgbW91bnRwb2ludAorICAgICAgICAgICAgICAgICAgICAgICAgZGlzdHJpYnV0aW9uJ3MgZGVmYXVsdCBDRC1ST00gZHJpdmVzIG1vdW50cG9pbnQKICAgICAgICAgICAgICAgICAgICAgICAgIGhlcmUuCiAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgICAgICAgICAgICAgPHByb2dyYW1saXN0aW5nPgpAQCAtMTI5NSw3ICsxMzc0LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBpbnN0YW5jZSA8ZmlsZW5hbWU+bG9zZTk1PC9maWxlbmFtZT4sCiAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+d2luPC9maWxlbmFtZT4gb3IKICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zeXNcd2luOTU8L2ZpbGVuYW1lPikuIER1cmluZwotICAgICAgICAgICAgICAgICAgICAgICAgY29tcGlsZS9wYWNrYWdlL2luc3RhbGwgd2UgbGVhdmUgdGhpcyAgdG8gYmUKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBpbGUvcGFja2FnZS9pbnN0YWxsIHdlIGxlYXZlIHRoaXMgdG8gYmUKICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4vPC9maWxlbmFtZT4sIGl0IGhhcyB0byBiZQogICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJlZCBhZnRlciB0aGUgcGFja2FnZSBpbnN0YWxsLgogICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KQEAgLTEzMDQsOCArMTM4Myw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICAgICAgICAgICBaIGZvciB0aGUgVU5JWCBSb290IGRpcmVjdG9yeS4gVGhpcyBhdm9pZHMgYW55CiAgICAgICAgICAgICAgICAgICAgICAgICBwcm9ibGVtcyB3aXRoICJjb3VsZCBub3QgZmluZCBkcml2ZSBmb3IKLSAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnQgZGlyZWN0b3J5IiB1c2VycyBvY2Nhc2lvbmFseSBjb21wbGFpbgotICAgICAgICAgICAgICAgICAgICAgICAgYWJvdXQgaW4gdGhlIG5ld3Nncm91cCBhbmQgdGhlIGlyY2NoYW5uZWwuIEl0CisgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50IGRpcmVjdG9yeSIgdXNlcnMgb2NjYXNpb25hbGx5IGNvbXBsYWluCisgICAgICAgICAgICAgICAgICAgICAgICBhYm91dCBpbiB0aGUgbmV3c2dyb3VwIGFuZCB0aGUgaXJjIGNoYW5uZWwuIEl0CiAgICAgICAgICAgICAgICAgICAgICAgICBhbHNvIG1ha2VzIHRoZSB3aG9sZSBkaXJlY3Rvcnkgc3RydWN0dXJlCiAgICAgICAgICAgICAgICAgICAgICAgICBicm93c2VhYmxlLiBUaGUgdHlwZSBvZiBaIHNob3VsZCBiZSBuZXR3b3JrLAogICAgICAgICAgICAgICAgICAgICAgICAgc28gYXBwbGljYXRpb25zIGV4cGVjdCBpdCB0byBiZSByZWFkb25seS4KQEAgLTEzMjEsMTAgKzE0MDAsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgW3dpbmVdOgogICAgICAgICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICAgICAgICAgPHNjcmVlbj4KLSAgV2luZG93cz1jOlx3aW5kb3dzXCAJCSh0aGUgd2luZG93cy8gc3ViZGlyZWN0b3J5IGluIHRoZSB1c2VycwotICAJCQkJIGhvbWVkaXJlY3RvcnkpCi0gIFN5c3RlbT1jOlx3aW5kb3dzXHN5c3RlbVwJKHRoZSB3aW5kb3dzL3N5c3RlbSBzdWJkaXJlY3RvcnkgaW4gdGhlIHVzZXJzCi0gIAkJCQkgaG9tZWRpcmVjdG9yeSkKKyAgV2luZG93cz1jOlx3aW5kb3dzXCAJCSh0aGUgd2luZG93cy8gc3ViZGlyZWN0b3J5IGluIHRoZSB1c2VyJ3MKKyAgCQkJCSBob21lIGRpcmVjdG9yeSkKKyAgU3lzdGVtPWM6XHdpbmRvd3Ncc3lzdGVtXAkodGhlIHdpbmRvd3Mvc3lzdGVtIHN1YmRpcmVjdG9yeSBpbiB0aGUgdXNlcidzCisgIAkJCQkgaG9tZSBkaXJlY3RvcnkpCiAgIFBhdGg9Yzpcd2luZG93cztjOlx3aW5kb3dzXHN5c3RlbTtjOlx3aW5kb3dzXHN5c3RlbTMyO3c6XDt3OlxzeXN0ZW07dzpcc3lzdGVtMzI7CiAgIDsgVXNpbmcgdGhpcyB0cmljayB3ZSBoYXZlIGluIGZhY3QgdHdvIHdpbmRvd3MgaW5zdGFsbGF0aW9ucyBpbiBvbmUsIHdlCiAgIDsgZ2V0IHRoZSBzdHVmZiBmcm9tIHRoZSByZWFkb25seSBpbnN0YWxsYXRpb24gYW5kIGNhbiB3cml0ZSB0byBvdXIgb3duLgpAQCAtMTM3NCw2ICsxNDUzLDkgQEAKICAgICAgICAgICAgICAgICB0aGF0IDxmaWxlbmFtZT5zZXR1cC5pbnM8L2ZpbGVuYW1lPiBvciBzb21lIG90aGVyIG1lc3MKICAgICAgICAgICAgICAgICBpcyBtaXNzaW5nLi4uIElmIHlvdSBjaG9vc2UgdG8gZG8gc28sIHRoZW4gcGxlYXNlIG1ha2UKICAgICAgICAgICAgICAgICB0aGlzIGNoYW5nZSB2ZXJib3NlIHRvIHRoZSBhZG1pbi4KKwkJQWxzbyBtYWtlIHN1cmUgdGhhdCB0aGUga2VybmVsIHlvdSB1c2UgaW5jbHVkZXMgdGhlIEpvbGlldAorCQlDRC1ST00gc3VwcG9ydCwgZm9yIHRoZSB2ZXJ5IHNhbWUgcmVhc29ucyBhcyBnaXZlbiBhYm92ZQorCQkobm8gbG9uZyBmaWxlbmFtZXMgZHVlIHRvIG1pc3NpbmcgSm9saWV0LCBmaWxlcyBub3QgZm91bmQpLgogICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgICAgPGxpc3RpdGVtPgpAQCAtMTQyMCw3ICsxNTAyLDcgQEAKICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgICAgICBUaGlzIHdpbGwgZ2l2ZSBhIGh1Z2UgbnVtYmVyIG9mIHN5bWxpbmtzLCB5ZXMuCi0gICAgICAgICAgICAgICAgICAgIEhvd2V2ZXIsIGlmIGFuIGluc3RhbGxlciBsYXRlciBvdmVyd3JpdGVzIG9uIG9mCisgICAgICAgICAgICAgICAgICAgIEhvd2V2ZXIsIGlmIGFuIGluc3RhbGxlciBsYXRlciBvdmVyd3JpdGVzIG9uZSBvZgogICAgICAgICAgICAgICAgICAgICB0aG9zZSBmaWxlcywgaXQgd2lsbCBvdmVyd3JpdGUgdGhlIHN5bWxpbmsgKHNvCiAgICAgICAgICAgICAgICAgICAgIHRoYXQgdGhlIGZpbGUgbm93IGxpZXMgaW4gdGhlCiAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT53aW5kb3dzLzwvZmlsZW5hbWU+IHN1YmRpcmVjdG9yeSkuCkBAIC0xNDMzLDcgKzE1MTUsNyBAQAogICAgICAgICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgICAgICBPbiBsYXRlciBpbnZvY2F0aW9uIHRoZSBzY3JpcHQgbWlnaHQgd2FudCB0bwotICAgICAgICAgICAgICAgICAgICBjb21wYXJlIHJlZ3VsYXIgZmlsZXMgaW4gIHRoZSB1c2VycyB3aW5kb3dzCisgICAgICAgICAgICAgICAgICAgIGNvbXBhcmUgcmVndWxhciBmaWxlcyBpbiB0aGUgdXNlcidzIHdpbmRvd3MKICAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3JpZXMgYW5kIGluIHRoZSBnbG9iYWwgd2luZG93cyBkaXJlY3RvcmllcwogICAgICAgICAgICAgICAgICAgICBhbmQgcmVwbGFjZSBzYW1lIGZpbGVzIGJ5IHN5bWxpbmtzICh0byBhdm9pZAogICAgICAgICAgICAgICAgICAgICBkaXNrc3BhY2UgcHJvYmxlbXMpLgpAQCAtMTQ0Niw3ICsxNTI4LDcgQEAKICAgICAgICAgICA8L29yZGVyZWRsaXN0PgogCiAKLSAgICAgIDxzZWN0MiBpZD1zYW1wbGU+PHRpdGxlPlNhbXBsZSA8ZmlsZW5hbWU+d2luZS5pbmk8L2ZpbGVuYW1lPiBmb3IgT3BlbkxpbnV4IDIueDo8L3RpdGxlPgorICAgICAgPHNlY3QyIGlkPXNhbXBsZT48dGl0bGU+U2FtcGxlIDxmaWxlbmFtZT53aW5lLmluaTwvZmlsZW5hbWU+IGZvciBPcGVuTGludXggMi54IChvdXRkYXRlZCwgZm9yIHJldmlldyBwdXJwb3NlcyBvbmx5ICEpOjwvdGl0bGU+CiAKIDxwcm9ncmFtbGlzdGluZz4KIApAQCAtMTQ5OCw3ICsxNTgwLDcgQEAKIAogCiA7Ci07IERyaXZlICdDJyBsaW5rcyB0byB0aGUgdXNlcnMgaG9tZWRpcmVjdG9yeS4gCis7IERyaXZlICdDJyBsaW5rcyB0byB0aGUgdXNlcidzIGhvbWVkaXJlY3RvcnkuIAogOyAKIDsgVGhpcyBtdXN0IHBvaW50IHRvIGEgd3JpdGVhYmxlIGRpcmVjdG9yeSBzdHJ1Y3R1cmUgKG5vdCB5b3VyIHJlYWRvbmx5CiA7IG1vdW50ZWQgRE9TIHBhcnRpdGlvbnMhKSBzaW5jZSBwcm9ncmFtcyB3YW50IHRvIGR1bXAgc3R1ZmYgaW50bwpAQCAtMTc2OCw0MCArMTg1MCw0MCBAQAogICAgIDxvcmRlcmVkbGlzdD4KICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBSZW1vdmUgZHVwbGljYXRpb24gb2YgY29kZSBiZXR3ZWVuIHdpbmVjZmcgYW5kCisgICAgICAgICAgICBSZW1vdmUgZHVwbGljYXRpb24gb2YgY29kZSBiZXR3ZWVuIHdpbmVzZXR1cCBhbmQKICAgICAgICAgICAgIHdpbmVjb25mL3dpbmVpbnN0YWxsLgogICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBDdXJyZW50bHksIHdpbmVjZmcgZHVwbGljYXRlcyBhbGwgb2YgdGhlIGNvZGUgY29udGFpbmVkIAorICAgICAgICAgICAgQ3VycmVudGx5LCB3aW5lc2V0dXAgZHVwbGljYXRlcyBhbGwgb2YgdGhlIGNvZGUgY29udGFpbmVkIAogICAgICAgICAgICAgaW4gd2luZWNvbmYuCiAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgIEluc3RlYWQsIHdpbmVjb25mIHNob3VsZCBiZSBpbXByb3ZlZCB0byBnZW5lcmF0ZQotICAgICAgICAgICAgdGhlIG5ldyBzdHlsZSBjb25maWcgZmlsZSwgYW5kIHRoZW4gd2luZWNmZyBzaG91bGQKKyAgICAgICAgICAgIHRoZSBuZXcgc3R5bGUgY29uZmlnIGZpbGUsIGFuZCB0aGVuIHdpbmVzZXR1cCBzaG91bGQKICAgICAgICAgICAgIHJlbHkgb24gd2luZWNvbmYgdG8gZ2VuZXJhdGUgdGhlIGRlZmF1bHQKICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gZmlsZS4KICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgU2ltaWxhcmx5LCB0aGVyZSBpcyBmdW5jdGlvbmFsaXR5IHN1Y2ggYXMgY3JlYXRpbmcKICAgICAgICAgICAgIHRoZSBkZWZhdWx0IHJlZ2lzdHJ5IGZpbGVzIHRoYXQgaXMgbm93IGRvbmUgYnkKLSAgICAgICAgICAgIGJvdGggd2luZWNmZyBhbmQgd2luZWluc3RhbGwuCisgICAgICAgICAgICBib3RoIHdpbmVzZXR1cCBhbmQgd2luZWluc3RhbGwuCiAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgIEF0IHRoaXMgdGltZSwgaXQgc2VlbXMgbGlrZSB0aGUgcmlnaHQgdGhpbmcgdG8gZG8KICAgICAgICAgICAgIGlzIHRvIGJyZWFrIHVwIG9yIHBhcmFtZXRlcml6ZSB3aW5laW5zdGFsbCwgc28gdGhhdAogICAgICAgICAgICAgaXQgY2FuIGJlIHVzZWQgZm9yIHNpbmdsZSBmdW5jdGlvbiBhY3Rpb25zLAotICAgICAgICAgICAgYW5kIHRoZW4gaGF2ZSB3aW5lY2ZnIGNhbGwgdGhvc2UgZnVuY3Rpb25zLgorICAgICAgICAgICAgYW5kIHRoZW4gaGF2ZSB3aW5lc2V0dXAgY2FsbCB0aG9zZSBmdW5jdGlvbnMuCiAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgIDwvbGlzdGl0ZW0+CiAKICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBFbmhhbmNlIHdpbmVjZmcgdG8gc3VwcG9ydCBXOiBkcml2ZSBnZW5lcmF0aW9uLgorICAgICAgICAgICAgRW5oYW5jZSB3aW5lc2V0dXAgdG8gc3VwcG9ydCBXOiBkcml2ZSBnZW5lcmF0aW9uLgogICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICBUaGUgYmVzdCBwcmFjdGljZXMgY29udmVudGlvbiBub3cgc2VlbXMgdG8gYmUKICAgICAgICAgICAgIHRvIGdlbmVyYXRlIGEgc2V0IG9mIGRyaXZlcyBmcm9tIE06IHRocm91Z2ggVzouCi0gICAgICAgICAgICBBdCB0aGlzIHBvaW50LCB3aW5lY2ZnIGRvZXMgbm90IGdlbmVyYXRlCisgICAgICAgICAgICBBdCB0aGlzIHBvaW50LCB3aW5lc2V0dXAgZG9lcyBub3QgZ2VuZXJhdGUKICAgICAgICAgICAgIGEgZGVmYXVsdCB3aW5lIGNvbmZpZyBmaWxlIHRoYXQgZm9sbG93cwogICAgICAgICAgICAgdGhlc2UgY29udmVudGlvbnMuIEl0IHNob3VsZC4KICAgICAgICAgICAgIDwvcGFyYT4KQEAgLTE4MzgsNyArMTkyMCw3IEBACiAgICAgICAgICAgICBHZXQgTWFyY3VzJ3Mgd2luZXNldHVwIGZhY2lsaXRpZXMgaW50byBDVlMKICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgQWxvbmcgdGhlIGxpbmVzIG9mIHRoZSBjaGFuZ2VzIHRvIHdpbmVjZmcsCisgICAgICAgICAgICBBbG9uZyB0aGUgbGluZXMgb2YgdGhlIGNoYW5nZXMgdG8gd2luZXNldHVwLAogICAgICAgICAgICAgYW5kIHRoZSBjb25zb2xpZGF0aW9uIG9mIHdpbmVjb25mIGFuZCB3aW5laW5zdGFsbCwKICAgICAgICAgICAgIHdlIHNob3VsZCBleHRyYWN0IHRoZSBnb29kIHN0dWZmIGZyb20gTWFyY3VzJ3MKICAgICAgICAgICAgIHdpbmVzZXR1cCBzY3JpcHQsIGFuZCBnZXQgaXQgaW50byBDVlMuCmRpZmYgLS1naXQgYS9kb2N1bWVudGF0aW9uL3NhbXBsZXMvY29uZmlnIGIvZG9jdW1lbnRhdGlvbi9zYW1wbGVzL2NvbmZpZwppbmRleCBiM2ZjZGFkLi4wMGVkNTA2IDEwMDY0NAotLS0gYS9kb2N1bWVudGF0aW9uL3NhbXBsZXMvY29uZmlnCisrKyBiL2RvY3VtZW50YXRpb24vc2FtcGxlcy9jb25maWcKQEAgLTIxMCw2ICsyMTAsOCBAQAogCiBbVHdlYWsuTGF5b3V0XQogOzsgc3VwcG9ydGVkIHN0eWxlcyBhcmUgJ1dpbjMxJyhkZWZhdWx0KSwgJ1dpbjk1JywgJ1dpbjk4JworOzsgdGhpcyBoYXMgKm5vdGhpbmcqIHRvIGRvIHdpdGggdGhlIHdpbmRvd3MgdmVyc2lvbiBXaW5lIHJldHVybnM6Cis7OyB1c2UgY21kbGluZSBvcHRpb24gLS13aW52ZXIgaWYgeW91IHdhbnQgdGhhdC4KICJXaW5lTG9vayIgPSAiV2luOTUiCiAKIFtDb25zb2xlXQpkaWZmIC0tZ2l0IGEvZmlsZXMvZGlyZWN0b3J5LmMgYi9maWxlcy9kaXJlY3RvcnkuYwppbmRleCAwYzdiOTRmLi5iNzY0N2EwIDEwMDY0NAotLS0gYS9maWxlcy9kaXJlY3RvcnkuYworKysgYi9maWxlcy9kaXJlY3RvcnkuYwpAQCAtMTIxLDcgKzEyMSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGgsIHNpemVvZihwYXRoKSApOwogICAgIGlmIChzdHJjaHIocGF0aCwgJy8nKSkKICAgICB7Ci0JTUVTU0FHRSgiTm8gJy8nIGFsbG93ZWQgaW4gW3dpbmVdICdQYXRoPScgc3RhdGVtZW50IG9mIHdpbmUgY29uZmlnIVxuIik7CisJTUVTU0FHRSgiRml4IHlvdXIgd2luZSBjb25maWcgdG8gdXNlIERPUyBkcml2ZSBzeW50YXggaW4gW3dpbmVdICdQYXRoPScgc3RhdGVtZW50ISAobm8gJy8nIGFsbG93ZWQpXG4iKTsKIAlQUk9GSUxFX1VzYWdlV2luZUluaSgpOwogCUV4aXRQcm9jZXNzKDEpOwogICAgIH0KZGlmZiAtLWdpdCBhL2ZpbGVzL2Rvc19mcy5jIGIvZmlsZXMvZG9zX2ZzLmMKaW5kZXggYzc5MTMzYS4uNDk3Y2MxYiAxMDA2NDQKLS0tIGEvZmlsZXMvZG9zX2ZzLmMKKysrIGIvZmlsZXMvZG9zX2ZzLmMKQEAgLTEyMjIsMTMgKzEyMjIsMTMgQEAKICAgICBpbnQgbmFtZWxlbixkcml2ZT0wOwogCiAgICAgaWYgKChzdHJsZW4obmFtZSkgPjEpJiYgKG5hbWVbMV09PSc6JykpCi0gICAgICAvKmRyaXZlIGxldHRlciBnaXZlbiAqLworICAgICAgLyogZHJpdmUgbGV0dGVyIGdpdmVuICovCiAgICAgICB7CiAJZHJpdmVsZXR0ZXIgPSBuYW1lWzBdOwogICAgICAgfQogICAgIGlmICgoc3RybGVuKG5hbWUpID4yKSYmIChuYW1lWzFdPT0nOicpICYmCiAJICAgICAoKG5hbWVbMl09PSdcXCcpIHx8IChuYW1lWzJdPT0nLycpKSkKLSAgICAgIC8qYWJzb2x1dGUgcGF0aCBnaXZlbiAqLworICAgICAgLyogYWJzb2x1dGUgcGF0aCBnaXZlbiAqLwogICAgICAgewogCWxzdHJjcHluQShmdWxsX25hbWUuc2hvcnRfbmFtZSxuYW1lLE1BWF9QQVRITkFNRV9MRU4pOwogCWRyaXZlID0gKGludClGSUxFX3RvdXBwZXIobmFtZVswXSkgLSAnQSc7CkBAIC0xMjg1LDcgKzEyODUsNyBAQAogCWlmICggKnAgPT0gJy8nICkKIAkgICpwID0gJ1xcJzsKICAgICAgIH0KLSAgICAgLyogVXNlIG1lbW1vdmUsIGFzIGFyZWFzIG92ZXJsYXAqLworICAgICAvKiBVc2UgbWVtbW92ZSwgYXMgYXJlYXMgb3ZlcmxhcCAqLwogICAgICAvKiBEZWxldGUgLi4gKi8KICAgICB3aGlsZSAoKHAgPSBzdHJzdHIoZnVsbF9uYW1lLnNob3J0X25hbWUsIlxcLi5cXCIpKSkKICAgICAgIHsKQEAgLTEzMTcsOCArMTMxNyw4IEBACiAgICAgbmFtZWxlbj1zdHJsZW4oZnVsbF9uYW1lLnNob3J0X25hbWUpOwogICAgIGlmICghc3RyY21wKGZ1bGxfbmFtZS5zaG9ydF9uYW1lK25hbWVsZW4tMywiXFwuLiIpKQogCXsKLQkgIC8qIG9uZSBtb3JlIHN0YXJuZ2UgY2FzZTogImM6XHRlc3RcdGVzdDFcLi4iIAotCSAgIHJldHVybiAiYzpcdGVzdCIqLworCSAgLyogb25lIG1vcmUgc3RyYW5nZSBjYXNlOiAiYzpcdGVzdFx0ZXN0MVwuLiIgCisJICAgcmV0dXJuICJjOlx0ZXN0IiAqLwogCSAgKihmdWxsX25hbWUuc2hvcnRfbmFtZStuYW1lbGVuLTMpPTA7CiAJICBxID0gc3RycmNocihmdWxsX25hbWUuc2hvcnRfbmFtZSwnXFwnKTsKIAkgICpxID0wOwpAQCAtMTMzMiw3ICsxMzMyLDcgQEAKIAogICAgIC8qIElmIHRoZSBscEJ1ZmZlciBidWZmZXIgaXMgdG9vIHNtYWxsLCB0aGUgcmV0dXJuIHZhbHVlIGlzIHRoZSAKICAgICBzaXplIG9mIHRoZSBidWZmZXIsIGluIGNoYXJhY3RlcnMsIHJlcXVpcmVkIHRvIGhvbGQgdGhlIHBhdGggCi0gICAgcGx1cyB0aGUgdGVybWluYXRpbmcgXDAgKHRlc3RlZCBhZ2FpbnN0IHdpbjk1b3NyLCBib24gMDAxMTE4KQorICAgIHBsdXMgdGhlIHRlcm1pbmF0aW5nIFwwICh0ZXN0ZWQgYWdhaW5zdCB3aW45NW9zcjIsIGJvbiAwMDExMTgpCiAgICAgLiAqLwogICAgIHJldCA9IHN0cmxlbihmdWxsX25hbWUuc2hvcnRfbmFtZSk7CiAgICAgaWYgKHJldCA+PSBsZW4gKQpkaWZmIC0tZ2l0IGEvbWlzYy9jZHJvbS5jIGIvbWlzYy9jZHJvbS5jCmluZGV4IDk2YzJkYzMuLjYwZjljYzAgMTAwNjQ0Ci0tLSBhL21pc2MvY2Ryb20uYworKysgYi9taXNjL2Nkcm9tLmMKQEAgLTg2OSw3ICs4NjksNyBAQAogCiAJICAgIGNhc2UgQ0RTX01JWEVEOgogCQljZG5hbWUgPSAiTWl4ZWQgbW9kZSI7Ci0JCUVSUigiV2UgZG9uJ3QgaGF2ZSBhIHdheSBvZiBkZXRlcm1pbmluZyB0aGUgbGFiZWwgb2YgYSBtaXhlZCBtb2RlIENEIC0gTGludXggZG9lc24ndCBhbGxvdyByYXcgYWNjZXNzICEhXG4iKTsKKwkJRklYTUUoIk5lZWQgdG8gZ2V0IHRoZSBsYWJlbCBvZiBhIG1peGVkIG1vZGUgQ0Q6IG5vdCBpbXBsZW1lbnRlZCB5ZXQgIVxuIik7CiAJCS8qIGZhbGwgdGhyb3VnaCAqLwogCiAJICAgIGNhc2UgQ0RTX05PX0lORk86CmRpZmYgLS1naXQgYS9tc2Rvcy9pbnQyMS5jIGIvbXNkb3MvaW50MjEuYwppbmRleCA2MGNlYjM3Li5lOWRiMzlkIDEwMDY0NAotLS0gYS9tc2Rvcy9pbnQyMS5jCisrKyBiL21zZG9zL2ludDIxLmMKQEAgLTI0NDgsNyArMjQ0OCw3IEBACiAgICAgfQogCiAgICAgaWYgKChjb250ZXh0LT5FRmxhZ3MgJiAweDAwMDEpKQotICAgICAgICBUUkFDRSgiZmFpbGVkLCBlcnJvciAweCUwNGx4XG4iLCBHZXRMYXN0RXJyb3IoKSApOworICAgICAgICBUUkFDRSgiZmFpbGVkLCBlcnJvciAlbGRcbiIsIEdldExhc3RFcnJvcigpICk7CiAgCiAgICAgVFJBQ0UoInJldHVybmluZzogQVg9JTA0eCBCWD0lMDR4IENYPSUwNHggRFg9JTA0eCAiCiAgICAgICAgICAgICAgICAgICJTST0lMDR4IERJPSUwNHggRFM9JTA0eCBFUz0lMDR4IEVGTD0lMDhseFxuIiwKZGlmZiAtLWdpdCBhL3Byb2dyYW1zL3VuaW5zdGFsbGVyL21haW4uYyBiL3Byb2dyYW1zL3VuaW5zdGFsbGVyL21haW4uYwppbmRleCA2NTY2MmU0Li4xZDAxODc1IDEwMDY0NAotLS0gYS9wcm9ncmFtcy91bmluc3RhbGxlci9tYWluLmMKKysrIGIvcHJvZ3JhbXMvdW5pbnN0YWxsZXIvbWFpbi5jCkBAIC0xLDcgKzEsNyBAQAogLyoKICAqIFEmRCBVbmluc3RhbGxlciAobWFpbi5jKQogICogCi0gKiBDb3B5cmlnaHQgMjAwMCBBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CisgKiBDb3B5cmlnaHQgMjAwMCBBbmRyZWFzIE1vaHIgPGFuZGlAbGlzYXMuZGU+CiAgKiBUbyBiZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgV2luZSBMaWNlbnNlCiAgKi8KIApAQCAtNDAsNyArNDAsNyBAQAogY2hhciBhcHBuYW1lWzE4XTsKIAogc3RhdGljIGNoYXIgYWJvdXRfc3RyaW5nW10gPQotICAgICJXaW5kb3dzIHByb2dyYW0gdW5pbnN0YWxsZXIgKEMpIDIwMDAgYnkgQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPiI7CisgICAgIldpbmRvd3MgcHJvZ3JhbSB1bmluc3RhbGxlciAoQykgMjAwMCBieSBBbmRyZWFzIE1vaHIgPGFuZGlAbGlzYXMuZGU+IjsKIHN0YXRpYyBjaGFyIHByb2dyYW1fZGVzY3JpcHRpb25bXSA9CiAJIldlbGNvbWUgdG8gdGhlIFdpbmUgdW5pbnN0YWxsZXIgIVxuXG5UaGUgcHVycG9zZSBvZiB0aGlzIHByb2dyYW0gaXMgdG8gbGV0IHlvdSBnZXQgcmlkIG9mIGFsbCB0aG9zZSBmYW50YXN0aWMgcHJvZ3JhbXMgdGhhdCBzb21laG93IG1hbmFnZSB0byBhbHdheXMgdGFrZSB3YXkgdG9vIG11Y2ggc3BhY2Ugb24geW91ciBIREQgOi0pIjsKIApkaWZmIC0tZ2l0IGEvcHJvZ3JhbXMvdW5pbnN0YWxsZXIvcnNyYy5yYyBiL3Byb2dyYW1zL3VuaW5zdGFsbGVyL3JzcmMucmMKaW5kZXggYjUxNTEyYS4uNzJjNGY5ZiAxMDA2NDQKLS0tIGEvcHJvZ3JhbXMvdW5pbnN0YWxsZXIvcnNyYy5yYworKysgYi9wcm9ncmFtcy91bmluc3RhbGxlci9yc3JjLnJjCkBAIC0xLDcgKzEsNyBAQAogLyoKICAqIFVuaW5zdGFsbGVyIChyc3JjLnJjKQogICogCi0gKiBDb3B5cmlnaHQgMjAwMCBBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CisgKiBDb3B5cmlnaHQgMjAwMCBBbmRyZWFzIE1vaHIgPGFuZGlAbGlzYXMuZGU+CiAgKiBUbyBiZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgV2luZSBMaWNlbnNlCiAgKi8KIApkaWZmIC0tZ2l0IGEvc2NoZWR1bGVyL3B0aHJlYWQuYyBiL3NjaGVkdWxlci9wdGhyZWFkLmMKaW5kZXggNWVhM2EzZC4uMDA4ZmZmNiAxMDA2NDQKLS0tIGEvc2NoZWR1bGVyL3B0aHJlYWQuYworKysgYi9zY2hlZHVsZXIvcHRocmVhZC5jCkBAIC0yLDcgKzIsNyBAQAogICogcHRocmVhZCBlbXVsYXRpb24gZm9yIHJlLWVudHJhbnQgbGliY3MKICAqCiAgKiBXZSBjYW4ndCB1c2UgcHRocmVhZHMgZGlyZWN0bHksIHNvIHdoeSBub3QgbGV0IGxpYmNzCi0gKiB0aGF0IHdhbnRzIHB0aHJlYWRzIHVzZSBXaW5lJ3Mgb3duIHRocmVhZGluZyBpbnN0ZWFkLi4uCisgKiB0aGF0IHdhbnQgcHRocmVhZHMgdXNlIFdpbmUncyBvd24gdGhyZWFkaW5nIGluc3RlYWQuLi4KICAqCiAgKiBDb3B5cmlnaHQgMTk5OSBPdmUgS+V2ZW4KICAqLwpkaWZmIC0tZ2l0IGEvdG9vbHMvd2luZWluc3RhbGwgYi90b29scy93aW5laW5zdGFsbAppbmRleCBlYjM3MjY0Li4yOWY0MGIzIDEwMDc1NQotLS0gYS90b29scy93aW5laW5zdGFsbAorKysgYi90b29scy93aW5laW5zdGFsbApAQCAtMzc4LDcgKzM3OCw3IEBACiAgICAgdGhlbiB7CiAgICAgICBybSAtZiAkVE1QQ09ORiAkVE1QUkVHID4gL2Rldi9udWxsCiAKLSAgICAgIGVjaG8gIiBub3QgZm91bmQuIgorICAgICAgZWNobyAiIG5vdCBmb3VuZC4gKG5vIG1hdGNoaW5nIC9ldGMvZnN0YWIgbW91bnQgZW50cnkgZm91bmQpIgogICAgICAgY29uZl9xdWVzdGlvbiBsb3cgZG9fd2l0aG91dF93aW5kb3dzIFwKICAgICAgICAiV2luZG93cyB3YXMgbm90IGZvdW5kIG9uIHlvdXIgc3lzdGVtLCBzbyBJIGFzc3VtZSB5b3Ugd2FudCIgXAogICAgICAgICJhIFdpbmUtb25seSBpbnN0YWxsYXRpb24uIEFtIEkgY29ycmVjdD8iCmRpZmYgLS1naXQgYS93aW4zMi9leGNlcHQuYyBiL3dpbjMyL2V4Y2VwdC5jCmluZGV4IDZlNWFmNzEuLjg0OWI1ZjQgMTAwNjQ0Ci0tLSBhL3dpbjMyL2V4Y2VwdC5jCisrKyBiL3dpbjMyL2V4Y2VwdC5jCkBAIC0yOTEsMTIgKzI5MSwxMiBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoJCXN0YXJ0X2RlYnVnZ2VyX2F0b21pYwogICoKLSAqIHN0YXJ0cyB0aGUgZGVidWdnZXIgaXMgYW4gYXRvbWljIHdheToKKyAqIHN0YXJ0cyB0aGUgZGVidWdnZXIgaW4gYW4gYXRvbWljIHdheToKICAqCS0gZWl0aGVyIHRoZSBkZWJ1Z2dlciBpcyBub3Qgc3RhcnRlZCBhbmQgaXQgaXMgc3RhcnRlZAotICoJLSBlaXRoZXIgdGhlIGRlYnVnZ2VyIGhhcyBhbHJlYWR5IGJlZW4gc3RhcnRlZCBieSBhbiBvdGhlciB0aHJlYWQKLSAqCS0gZWl0aGVyIHRoZSBkZWJ1Z2dlciBjb3VsZG4ndCBiZSBzdGFydGVkCisgKgktIG9yIHRoZSBkZWJ1Z2dlciBoYXMgYWxyZWFkeSBiZWVuIHN0YXJ0ZWQgYnkgYW5vdGhlciB0aHJlYWQKKyAqCS0gb3IgdGhlIGRlYnVnZ2VyIGNvdWxkbid0IGJlIHN0YXJ0ZWQKICAqCi0gKiByZXR1cm5zIFRSVUUgZm9yIHRoZSB0d28gZmlyc3QgY29uZGl0aW9uLCBGQUxTRSBmb3IgdGhlIGxhc3QKKyAqIHJldHVybnMgVFJVRSBmb3IgdGhlIHR3byBmaXJzdCBjb25kaXRpb25zLCBGQUxTRSBmb3IgdGhlIGxhc3QKICAqLwogc3RhdGljCWludAlzdGFydF9kZWJ1Z2dlcl9hdG9taWMoUEVYQ0VQVElPTl9QT0lOVEVSUyBlcG9pbnRlcnMpCiB7CkBAIC0zMTQsOSArMzE0LDggQEAKIAlhdHRyLlNlY3VyaXR5RGVzY3JpcHRvciAgICAgICA9IE5VTEw7CiAJYXR0ci5TZWN1cml0eVF1YWxpdHlPZlNlcnZpY2UgPSBOVUxMOwogCi0JLyogYXNrIGZvciBtYW51YWwgcmVzZXQsIHNvIHRoYXQgb25jZSB0aGUgZGVidWdnZXIgaXMgc3RhcnRlZCwgZXZlcnkgdGhyZWFkIHdpbGwgYmUKLQkgKiBrbm93IGl0Ci0JICovCisJLyogYXNrIGZvciBtYW51YWwgcmVzZXQsIHNvIHRoYXQgb25jZSB0aGUgZGVidWdnZXIgaXMgc3RhcnRlZCwKKwkgKiBldmVyeSB0aHJlYWQgd2lsbCBrbm93IGl0ICovCiAJTnRDcmVhdGVFdmVudCggJmhFdmVudCwgRVZFTlRfQUxMX0FDQ0VTUywgJmF0dHIsIFRSVUUsIEZBTFNFICk7CiAJaWYgKEludGVybG9ja2VkQ29tcGFyZUV4Y2hhbmdlKCAoTFBMT05HKSZoUnVuT25jZSwgaEV2ZW50LCAwICkgPT0gMCkKIAl7CkBAIC0zMzgsOSArMzM3LDkgQEAKIAkKICAgICAvKiBhbmQgd2FpdCBmb3IgdGhlIHdpbm5lciB0byBoYXZlIGFjdHVhbGx5IGNyZWF0ZWQgdGhlIGRlYnVnZ2VyICovCiAgICAgV2FpdEZvclNpbmdsZU9iamVjdCggaFJ1bk9uY2UsIElORklOSVRFICk7Ci0gICAgLyogaW4gZmFjdCwgaGVyZSwgd2Ugb25seSBrbm93IHRoYXQgc29tZW9uZSBoYXMgdHJpZWQgdG8gc3RhcnQgdGhlIGRlYnVnZ2VyLCB3ZSdsbCBrbm93Ci0gICAgICogYnkgcmVwb3N0aW5nIHRoZSBleGNlcHRpb24gaWYgaXQgaGFzIGFjdHVhbGx5IGF0dGFjaGVkIHRvIHRoZSBjdXJyZW50IHByb2Nlc3MKLSAgICAgKi8KKyAgICAvKiBpbiBmYWN0LCBoZXJlLCB3ZSBvbmx5IGtub3cgdGhhdCBzb21lb25lIGhhcyB0cmllZCB0byBzdGFydCB0aGUgZGVidWdnZXIsCisgICAgICogd2UnbGwga25vdyBieSByZXBvc3RpbmcgdGhlIGV4Y2VwdGlvbiBpZiBpdCBoYXMgYWN0dWFsbHkgYXR0YWNoZWQKKyAgICAgKiB0byB0aGUgY3VycmVudCBwcm9jZXNzICovCiAgICAgcmV0dXJuIFRSVUU7CiB9CiAKZGlmZiAtLWdpdCBhL3dpbjMyL3RpbWUuYyBiL3dpbjMyL3RpbWUuYwppbmRleCAxNWRmOTU1Li5hMGNhNDdhIDEwMDY0NAotLS0gYS93aW4zMi90aW1lLmMKKysrIGIvd2luMzIvdGltZS5jCkBAIC00MiwyMCArNDIsMjAgQEAKICAqLwogVk9JRCBXSU5BUEkgR2V0U3lzdGVtVGltZShMUFNZU1RFTVRJTUUgc3lzdGltZSkKIHsKLSAgICB0aW1lX3QgbG9jYWxfdGltZTsKLSAgICBzdHJ1Y3QgdG0gKmxvY2FsX3RtOworICAgIHRpbWVfdCBzeXN0ZW1fdGltZTsKKyAgICBzdHJ1Y3QgdG0gKnN5c3RlbV90bTsKICAgICBzdHJ1Y3QgdGltZXZhbCB0djsKIAogICAgIGdldHRpbWVvZmRheSgmdHYsIE5VTEwpOwotICAgIGxvY2FsX3RpbWUgPSB0di50dl9zZWM7Ci0gICAgbG9jYWxfdG0gPSBnbXRpbWUoJmxvY2FsX3RpbWUpOworICAgIHN5c3RlbV90aW1lID0gdHYudHZfc2VjOworICAgIHN5c3RlbV90bSA9IGdtdGltZSgmc3lzdGVtX3RpbWUpOwogCi0gICAgc3lzdGltZS0+d1llYXIgPSBsb2NhbF90bS0+dG1feWVhciArIDE5MDA7Ci0gICAgc3lzdGltZS0+d01vbnRoID0gbG9jYWxfdG0tPnRtX21vbiArIDE7Ci0gICAgc3lzdGltZS0+d0RheU9mV2VlayA9IGxvY2FsX3RtLT50bV93ZGF5OwotICAgIHN5c3RpbWUtPndEYXkgPSBsb2NhbF90bS0+dG1fbWRheTsKLSAgICBzeXN0aW1lLT53SG91ciA9IGxvY2FsX3RtLT50bV9ob3VyOwotICAgIHN5c3RpbWUtPndNaW51dGUgPSBsb2NhbF90bS0+dG1fbWluOwotICAgIHN5c3RpbWUtPndTZWNvbmQgPSBsb2NhbF90bS0+dG1fc2VjOworICAgIHN5c3RpbWUtPndZZWFyID0gc3lzdGVtX3RtLT50bV95ZWFyICsgMTkwMDsKKyAgICBzeXN0aW1lLT53TW9udGggPSBzeXN0ZW1fdG0tPnRtX21vbiArIDE7CisgICAgc3lzdGltZS0+d0RheU9mV2VlayA9IHN5c3RlbV90bS0+dG1fd2RheTsKKyAgICBzeXN0aW1lLT53RGF5ID0gc3lzdGVtX3RtLT50bV9tZGF5OworICAgIHN5c3RpbWUtPndIb3VyID0gc3lzdGVtX3RtLT50bV9ob3VyOworICAgIHN5c3RpbWUtPndNaW51dGUgPSBzeXN0ZW1fdG0tPnRtX21pbjsKKyAgICBzeXN0aW1lLT53U2Vjb25kID0gc3lzdGVtX3RtLT50bV9zZWM7CiAgICAgc3lzdGltZS0+d01pbGxpc2Vjb25kcyA9ICh0di50dl91c2VjIC8gMTAwMCkgJSAxMDAwOwogfQo=