ZGlmZiAtLWdpdCBhL2NvcmUvZnBkZmFwaS9wYWdlL2NwZGZfY29udGVudG1hcmtpdGVtLmNwcCBiL2NvcmUvZnBkZmFwaS9wYWdlL2NwZGZfY29udGVudG1hcmtpdGVtLmNwcAppbmRleCA0YjA4NGI2Li5kODMxZmMyIDEwMDY0NAotLS0gYS9jb3JlL2ZwZGZhcGkvcGFnZS9jcGRmX2NvbnRlbnRtYXJraXRlbS5jcHAKKysrIGIvY29yZS9mcGRmYXBpL3BhZ2UvY3BkZl9jb250ZW50bWFya2l0ZW0uY3BwCkBAIC0xOCw3ICsxOCw3IEBACiBjb25zdCBDUERGX0RpY3Rpb25hcnkqIENQREZfQ29udGVudE1hcmtJdGVtOjpHZXRQYXJhbSgpIGNvbnN0IHsKICAgc3dpdGNoIChtX1BhcmFtVHlwZSkgewogICAgIGNhc2Uga1Byb3BlcnRpZXNEaWN0OgotICAgICAgcmV0dXJuIG1fcFByb3BlcnRpZXNEaWN0LkdldCgpOworICAgICAgcmV0dXJuIG1fcFByb3BlcnRpZXNIb2xkZXItPkdldERpY3RGb3IobV9Qcm9wZXJ0eU5hbWUpOwogICAgIGNhc2Uga0RpcmVjdERpY3Q6CiAgICAgICByZXR1cm4gbV9wRGlyZWN0RGljdC5nZXQoKTsKICAgICBjYXNlIGtOb25lOgpAQCAtNDMsOSArNDMsMTAgQEAKICAgbV9wRGlyZWN0RGljdCA9IHN0ZDo6bW92ZShwRGljdCk7CiB9CiAKLXZvaWQgQ1BERl9Db250ZW50TWFya0l0ZW06OlNldFByb3BlcnRpZXNEaWN0KENQREZfRGljdGlvbmFyeSogcERpY3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBCeXRlU3RyaW5nJiBwcm9wZXJ0eV9uYW1lKSB7Cit2b2lkIENQREZfQ29udGVudE1hcmtJdGVtOjpTZXRQcm9wZXJ0aWVzSG9sZGVyKAorICAgIENQREZfRGljdGlvbmFyeSogcEhvbGRlciwKKyAgICBjb25zdCBCeXRlU3RyaW5nJiBwcm9wZXJ0eV9uYW1lKSB7CiAgIG1fUGFyYW1UeXBlID0ga1Byb3BlcnRpZXNEaWN0OwotICBtX3BQcm9wZXJ0aWVzRGljdCA9IHBEaWN0OworICBtX3BQcm9wZXJ0aWVzSG9sZGVyID0gcEhvbGRlcjsKICAgbV9Qcm9wZXJ0eU5hbWUgPSBwcm9wZXJ0eV9uYW1lOwogfQpkaWZmIC0tZ2l0IGEvY29yZS9mcGRmYXBpL3BhZ2UvY3BkZl9jb250ZW50bWFya2l0ZW0uaCBiL2NvcmUvZnBkZmFwaS9wYWdlL2NwZGZfY29udGVudG1hcmtpdGVtLmgKaW5kZXggOTM5ZGQzMS4uYzAxY2EyMSAxMDA2NDQKLS0tIGEvY29yZS9mcGRmYXBpL3BhZ2UvY3BkZl9jb250ZW50bWFya2l0ZW0uaAorKysgYi9jb3JlL2ZwZGZhcGkvcGFnZS9jcGRmX2NvbnRlbnRtYXJraXRlbS5oCkBAIC0zMiwxNCArMzIsMTQgQEAKICAgYm9vbCBIYXNNQ0lEKCkgY29uc3Q7CiAKICAgdm9pZCBTZXREaXJlY3REaWN0KHN0ZDo6dW5pcXVlX3B0cjxDUERGX0RpY3Rpb25hcnk+IHBEaWN0KTsKLSAgdm9pZCBTZXRQcm9wZXJ0aWVzRGljdChDUERGX0RpY3Rpb25hcnkqIHBEaWN0LAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEJ5dGVTdHJpbmcmIHByb3BlcnR5X25hbWUpOworICB2b2lkIFNldFByb3BlcnRpZXNIb2xkZXIoQ1BERl9EaWN0aW9uYXJ5KiBwSG9sZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQnl0ZVN0cmluZyYgcHJvcGVydHlfbmFtZSk7CiAKICBwcml2YXRlOgogICBQYXJhbVR5cGUgbV9QYXJhbVR5cGUgPSBrTm9uZTsKICAgQnl0ZVN0cmluZyBtX01hcmtOYW1lOwogICBCeXRlU3RyaW5nIG1fUHJvcGVydHlOYW1lOwotICBVbm93bmVkUHRyPENQREZfRGljdGlvbmFyeT4gbV9wUHJvcGVydGllc0RpY3Q7CisgIFVub3duZWRQdHI8Q1BERl9EaWN0aW9uYXJ5PiBtX3BQcm9wZXJ0aWVzSG9sZGVyOwogICBzdGQ6OnVuaXF1ZV9wdHI8Q1BERl9EaWN0aW9uYXJ5PiBtX3BEaXJlY3REaWN0OwogfTsKIApkaWZmIC0tZ2l0IGEvY29yZS9mcGRmYXBpL3BhZ2UvY3BkZl9jb250ZW50bWFya3MuY3BwIGIvY29yZS9mcGRmYXBpL3BhZ2UvY3BkZl9jb250ZW50bWFya3MuY3BwCmluZGV4IGNhYWY2ZTMuLjc1ZDUwMzQgMTAwNjQ0Ci0tLSBhL2NvcmUvZnBkZmFwaS9wYWdlL2NwZGZfY29udGVudG1hcmtzLmNwcAorKysgYi9jb3JlL2ZwZGZhcGkvcGFnZS9jcGRmX2NvbnRlbnRtYXJrcy5jcHAKQEAgLTU2LDEyICs1NiwxMiBAQAogICBtX3BNYXJrRGF0YS0+QWRkTWFya1dpdGhEaXJlY3REaWN0KHN0ZDo6bW92ZShuYW1lKSwgcERpY3QpOwogfQogCi12b2lkIENQREZfQ29udGVudE1hcmtzOjpBZGRNYXJrV2l0aFByb3BlcnRpZXNEaWN0KAotICAgIEJ5dGVTdHJpbmcgbmFtZSwKK3ZvaWQgQ1BERl9Db250ZW50TWFya3M6OkFkZE1hcmtXaXRoUHJvcGVydGllc0hvbGRlcigKKyAgICBjb25zdCBCeXRlU3RyaW5nJiBuYW1lLAogICAgIENQREZfRGljdGlvbmFyeSogcERpY3QsCiAgICAgY29uc3QgQnl0ZVN0cmluZyYgcHJvcGVydHlfbmFtZSkgewogICBFbnN1cmVNYXJrRGF0YUV4aXN0cygpOwotICBtX3BNYXJrRGF0YS0+QWRkTWFya1dpdGhQcm9wZXJ0aWVzRGljdChzdGQ6Om1vdmUobmFtZSksIHBEaWN0LCBwcm9wZXJ0eV9uYW1lKTsKKyAgbV9wTWFya0RhdGEtPkFkZE1hcmtXaXRoUHJvcGVydGllc0hvbGRlcihuYW1lLCBwRGljdCwgcHJvcGVydHlfbmFtZSk7CiB9CiAKIGJvb2wgQ1BERl9Db250ZW50TWFya3M6OlJlbW92ZU1hcmsoQ1BERl9Db250ZW50TWFya0l0ZW0qIHBNYXJrSXRlbSkgewpAQCAtMTQ3LDEyICsxNDcsMTIgQEAKICAgbV9NYXJrcy5wdXNoX2JhY2socEl0ZW0pOwogfQogCi12b2lkIENQREZfQ29udGVudE1hcmtzOjpNYXJrRGF0YTo6QWRkTWFya1dpdGhQcm9wZXJ0aWVzRGljdCgKLSAgICBCeXRlU3RyaW5nIG5hbWUsCit2b2lkIENQREZfQ29udGVudE1hcmtzOjpNYXJrRGF0YTo6QWRkTWFya1dpdGhQcm9wZXJ0aWVzSG9sZGVyKAorICAgIGNvbnN0IEJ5dGVTdHJpbmcmIG5hbWUsCiAgICAgQ1BERl9EaWN0aW9uYXJ5KiBwRGljdCwKICAgICBjb25zdCBCeXRlU3RyaW5nJiBwcm9wZXJ0eV9uYW1lKSB7CiAgIGF1dG8gcEl0ZW0gPSBwZGZpdW06Ok1ha2VSZXRhaW48Q1BERl9Db250ZW50TWFya0l0ZW0+KHN0ZDo6bW92ZShuYW1lKSk7Ci0gIHBJdGVtLT5TZXRQcm9wZXJ0aWVzRGljdChwRGljdCwgcHJvcGVydHlfbmFtZSk7CisgIHBJdGVtLT5TZXRQcm9wZXJ0aWVzSG9sZGVyKHBEaWN0LCBwcm9wZXJ0eV9uYW1lKTsKICAgbV9NYXJrcy5wdXNoX2JhY2socEl0ZW0pOwogfQogCmRpZmYgLS1naXQgYS9jb3JlL2ZwZGZhcGkvcGFnZS9jcGRmX2NvbnRlbnRtYXJrcy5oIGIvY29yZS9mcGRmYXBpL3BhZ2UvY3BkZl9jb250ZW50bWFya3MuaAppbmRleCAzMzU1OTJiLi41YzA1OTM2IDEwMDY0NAotLS0gYS9jb3JlL2ZwZGZhcGkvcGFnZS9jcGRmX2NvbnRlbnRtYXJrcy5oCisrKyBiL2NvcmUvZnBkZmFwaS9wYWdlL2NwZGZfY29udGVudG1hcmtzLmgKQEAgLTMyLDkgKzMyLDkgQEAKIAogICB2b2lkIEFkZE1hcmsoQnl0ZVN0cmluZyBuYW1lKTsKICAgdm9pZCBBZGRNYXJrV2l0aERpcmVjdERpY3QoQnl0ZVN0cmluZyBuYW1lLCBDUERGX0RpY3Rpb25hcnkqIHBEaWN0KTsKLSAgdm9pZCBBZGRNYXJrV2l0aFByb3BlcnRpZXNEaWN0KEJ5dGVTdHJpbmcgbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENQREZfRGljdGlvbmFyeSogcERpY3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBCeXRlU3RyaW5nJiBwcm9wZXJ0eV9uYW1lKTsKKyAgdm9pZCBBZGRNYXJrV2l0aFByb3BlcnRpZXNIb2xkZXIoY29uc3QgQnl0ZVN0cmluZyYgbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1BERl9EaWN0aW9uYXJ5KiBwSG9sZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBCeXRlU3RyaW5nJiBwcm9wZXJ0eV9uYW1lKTsKICAgYm9vbCBSZW1vdmVNYXJrKENQREZfQ29udGVudE1hcmtJdGVtKiBwTWFya0l0ZW0pOwogICB2b2lkIERlbGV0ZUxhc3RNYXJrKCk7CiAgIHNpemVfdCBGaW5kRmlyc3REaWZmZXJlbmNlKGNvbnN0IENQREZfQ29udGVudE1hcmtzKiBvdGhlcikgY29uc3Q7CkBAIC01NCw5ICs1NCw5IEBACiAgICAgaW50IEdldE1hcmtlZENvbnRlbnRJRCgpIGNvbnN0OwogICAgIHZvaWQgQWRkTWFyayhCeXRlU3RyaW5nIG5hbWUpOwogICAgIHZvaWQgQWRkTWFya1dpdGhEaXJlY3REaWN0KEJ5dGVTdHJpbmcgbmFtZSwgQ1BERl9EaWN0aW9uYXJ5KiBwRGljdCk7Ci0gICAgdm9pZCBBZGRNYXJrV2l0aFByb3BlcnRpZXNEaWN0KEJ5dGVTdHJpbmcgbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1BERl9EaWN0aW9uYXJ5KiBwRGljdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQnl0ZVN0cmluZyYgcHJvcGVydHlfbmFtZSk7CisgICAgdm9pZCBBZGRNYXJrV2l0aFByb3BlcnRpZXNIb2xkZXIoY29uc3QgQnl0ZVN0cmluZyYgbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDUERGX0RpY3Rpb25hcnkqIHBIb2xkZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQnl0ZVN0cmluZyYgcHJvcGVydHlfbmFtZSk7CiAgICAgYm9vbCBSZW1vdmVNYXJrKENQREZfQ29udGVudE1hcmtJdGVtKiBwTWFya0l0ZW0pOwogICAgIHZvaWQgRGVsZXRlTGFzdE1hcmsoKTsKIApkaWZmIC0tZ2l0IGEvY29yZS9mcGRmYXBpL3BhZ2UvY3BkZl9zdHJlYW1jb250ZW50cGFyc2VyLmNwcCBiL2NvcmUvZnBkZmFwaS9wYWdlL2NwZGZfc3RyZWFtY29udGVudHBhcnNlci5jcHAKaW5kZXggNWE5ZDZiNi4uZGY5ZmEzZiAxMDA2NDQKLS0tIGEvY29yZS9mcGRmYXBpL3BhZ2UvY3BkZl9zdHJlYW1jb250ZW50cGFyc2VyLmNwcAorKysgYi9jb3JlL2ZwZGZhcGkvcGFnZS9jcGRmX3N0cmVhbWNvbnRlbnRwYXJzZXIuY3BwCkBAIC01OTEsMzAgKzU5MSwyNiBAQAogfQogCiB2b2lkIENQREZfU3RyZWFtQ29udGVudFBhcnNlcjo6SGFuZGxlX0JlZ2luTWFya2VkQ29udGVudF9EaWN0aW9uYXJ5KCkgewotICBCeXRlU3RyaW5nIHRhZyA9IEdldFN0cmluZygxKTsKICAgQ1BERl9PYmplY3QqIHBQcm9wZXJ0eSA9IEdldE9iamVjdCgwKTsKICAgaWYgKCFwUHJvcGVydHkpCiAgICAgcmV0dXJuOwogCi0gIGJvb2wgYkluZGlyZWN0ID0gcFByb3BlcnR5LT5Jc05hbWUoKTsKLSAgQnl0ZVN0cmluZyBwcm9wZXJ0eV9uYW1lOwotICBpZiAoYkluZGlyZWN0KSB7Ci0gICAgcHJvcGVydHlfbmFtZSA9IHBQcm9wZXJ0eS0+R2V0U3RyaW5nKCk7Ci0gICAgcFByb3BlcnR5ID0gRmluZFJlc291cmNlT2JqKCJQcm9wZXJ0aWVzIiwgcHJvcGVydHlfbmFtZSk7Ci0gICAgaWYgKCFwUHJvcGVydHkpCisgIEJ5dGVTdHJpbmcgdGFnID0gR2V0U3RyaW5nKDEpOworICBzdGQ6OnVuaXF1ZV9wdHI8Q1BERl9Db250ZW50TWFya3M+IG5ld19tYXJrcyA9CisgICAgICBtX0NvbnRlbnRNYXJrc1N0YWNrLnRvcCgpLT5DbG9uZSgpOworCisgIGlmIChwUHJvcGVydHktPklzTmFtZSgpKSB7CisgICAgQnl0ZVN0cmluZyBwcm9wZXJ0eV9uYW1lID0gcFByb3BlcnR5LT5HZXRTdHJpbmcoKTsKKyAgICBDUERGX0RpY3Rpb25hcnkqIHBIb2xkZXIgPSBGaW5kUmVzb3VyY2VIb2xkZXIoIlByb3BlcnRpZXMiKTsKKyAgICBpZiAoIXBIb2xkZXIgfHwgIXBIb2xkZXItPkdldERpY3RGb3IocHJvcGVydHlfbmFtZSkpCiAgICAgICByZXR1cm47CisgICAgbmV3X21hcmtzLT5BZGRNYXJrV2l0aFByb3BlcnRpZXNIb2xkZXIodGFnLCBwSG9sZGVyLCBwcm9wZXJ0eV9uYW1lKTsKKyAgfSBlbHNlIGlmIChwUHJvcGVydHktPklzRGljdGlvbmFyeSgpKSB7CisgICAgbmV3X21hcmtzLT5BZGRNYXJrV2l0aERpcmVjdERpY3QodGFnLCBwUHJvcGVydHktPkFzRGljdGlvbmFyeSgpKTsKKyAgfSBlbHNlIHsKKyAgICByZXR1cm47CiAgIH0KLSAgaWYgKENQREZfRGljdGlvbmFyeSogcERpY3QgPSBwUHJvcGVydHktPkFzRGljdGlvbmFyeSgpKSB7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPENQREZfQ29udGVudE1hcmtzPiBuZXdfbWFya3MgPQotICAgICAgICBtX0NvbnRlbnRNYXJrc1N0YWNrLnRvcCgpLT5DbG9uZSgpOwotICAgIGlmIChiSW5kaXJlY3QpIHsKLSAgICAgIG5ld19tYXJrcy0+QWRkTWFya1dpdGhQcm9wZXJ0aWVzRGljdChzdGQ6Om1vdmUodGFnKSwgcERpY3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlfbmFtZSk7Ci0gICAgfSBlbHNlIHsKLSAgICAgIG5ld19tYXJrcy0+QWRkTWFya1dpdGhEaXJlY3REaWN0KHN0ZDo6bW92ZSh0YWcpLCBwRGljdCk7Ci0gICAgfQotICAgIG1fQ29udGVudE1hcmtzU3RhY2sucHVzaChzdGQ6Om1vdmUobmV3X21hcmtzKSk7Ci0gIH0KKyAgbV9Db250ZW50TWFya3NTdGFjay5wdXNoKHN0ZDo6bW92ZShuZXdfbWFya3MpKTsKIH0KIAogdm9pZCBDUERGX1N0cmVhbUNvbnRlbnRQYXJzZXI6OkhhbmRsZV9CZWdpbkltYWdlKCkgewpAQCAtMTEzOSwxOCArMTEzNSwyNSBAQAogICB9CiB9CiAKLUNQREZfT2JqZWN0KiBDUERGX1N0cmVhbUNvbnRlbnRQYXJzZXI6OkZpbmRSZXNvdXJjZU9iaihjb25zdCBCeXRlU3RyaW5nJiB0eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEJ5dGVTdHJpbmcmIG5hbWUpIHsKK0NQREZfRGljdGlvbmFyeSogQ1BERl9TdHJlYW1Db250ZW50UGFyc2VyOjpGaW5kUmVzb3VyY2VIb2xkZXIoCisgICAgY29uc3QgQnl0ZVN0cmluZyYgdHlwZSkgewogICBpZiAoIW1fcFJlc291cmNlcykKICAgICByZXR1cm4gbnVsbHB0cjsKKwogICBDUERGX0RpY3Rpb25hcnkqIHBEaWN0ID0gbV9wUmVzb3VyY2VzLT5HZXREaWN0Rm9yKHR5cGUpOwogICBpZiAocERpY3QpCi0gICAgcmV0dXJuIHBEaWN0LT5HZXREaXJlY3RPYmplY3RGb3IobmFtZSk7CisgICAgcmV0dXJuIHBEaWN0OworCiAgIGlmIChtX3BSZXNvdXJjZXMgPT0gbV9wUGFnZVJlc291cmNlcyB8fCAhbV9wUGFnZVJlc291cmNlcykKICAgICByZXR1cm4gbnVsbHB0cjsKIAotICBDUERGX0RpY3Rpb25hcnkqIHBQYWdlRGljdCA9IG1fcFBhZ2VSZXNvdXJjZXMtPkdldERpY3RGb3IodHlwZSk7Ci0gIHJldHVybiBwUGFnZURpY3QgPyBwUGFnZURpY3QtPkdldERpcmVjdE9iamVjdEZvcihuYW1lKSA6IG51bGxwdHI7CisgIHJldHVybiBtX3BQYWdlUmVzb3VyY2VzLT5HZXREaWN0Rm9yKHR5cGUpOworfQorCitDUERGX09iamVjdCogQ1BERl9TdHJlYW1Db250ZW50UGFyc2VyOjpGaW5kUmVzb3VyY2VPYmooY29uc3QgQnl0ZVN0cmluZyYgdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBCeXRlU3RyaW5nJiBuYW1lKSB7CisgIENQREZfRGljdGlvbmFyeSogcEhvbGRlciA9IEZpbmRSZXNvdXJjZUhvbGRlcih0eXBlKTsKKyAgcmV0dXJuIHBIb2xkZXIgPyBwSG9sZGVyLT5HZXREaXJlY3RPYmplY3RGb3IobmFtZSkgOiBudWxscHRyOwogfQogCiBDUERGX0ZvbnQqIENQREZfU3RyZWFtQ29udGVudFBhcnNlcjo6RmluZEZvbnQoY29uc3QgQnl0ZVN0cmluZyYgbmFtZSkgewpkaWZmIC0tZ2l0IGEvY29yZS9mcGRmYXBpL3BhZ2UvY3BkZl9zdHJlYW1jb250ZW50cGFyc2VyLmggYi9jb3JlL2ZwZGZhcGkvcGFnZS9jcGRmX3N0cmVhbWNvbnRlbnRwYXJzZXIuaAppbmRleCAwNTU1NmZmLi41MzI1M2MwIDEwMDY0NAotLS0gYS9jb3JlL2ZwZGZhcGkvcGFnZS9jcGRmX3N0cmVhbWNvbnRlbnRwYXJzZXIuaAorKysgYi9jb3JlL2ZwZGZhcGkvcGFnZS9jcGRmX3N0cmVhbWNvbnRlbnRwYXJzZXIuaApAQCAtMTE5LDYgKzExOSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGJHcmFwaCk7CiAgIENQREZfQ29sb3JTcGFjZSogRmluZENvbG9yU3BhY2UoY29uc3QgQnl0ZVN0cmluZyYgbmFtZSk7CiAgIENQREZfUGF0dGVybiogRmluZFBhdHRlcm4oY29uc3QgQnl0ZVN0cmluZyYgbmFtZSwgYm9vbCBiU2hhZGluZyk7CisgIENQREZfRGljdGlvbmFyeSogRmluZFJlc291cmNlSG9sZGVyKGNvbnN0IEJ5dGVTdHJpbmcmIHR5cGUpOwogICBDUERGX09iamVjdCogRmluZFJlc291cmNlT2JqKGNvbnN0IEJ5dGVTdHJpbmcmIHR5cGUsIGNvbnN0IEJ5dGVTdHJpbmcmIG5hbWUpOwogCiAgIC8vIFRha2VzIG93bmVyc2hpcCBvZiB8cEltYWdlT2JqfCwgcmV0dXJucyB1bm93bmVkIHBvaW50ZXIgdG8gaXQuCmRpZmYgLS1naXQgYS9mcGRmc2RrL2ZwZGZfZm9ybWZpbGxfZW1iZWRkZXJ0ZXN0LmNwcCBiL2ZwZGZzZGsvZnBkZl9mb3JtZmlsbF9lbWJlZGRlcnRlc3QuY3BwCmluZGV4IGY1YjM5YWUuLmRhMGFkYjIgMTAwNjQ0Ci0tLSBhL2ZwZGZzZGsvZnBkZl9mb3JtZmlsbF9lbWJlZGRlcnRlc3QuY3BwCisrKyBiL2ZwZGZzZGsvZnBkZl9mb3JtZmlsbF9lbWJlZGRlcnRlc3QuY3BwCkBAIC0xMiw2ICsxMiw3IEBACiAjaW5jbHVkZSAicHVibGljL2NwcC9mcGRmX3Njb3BlcnMuaCIKICNpbmNsdWRlICJwdWJsaWMvZnBkZl9mb3JtZmlsbC5oIgogI2luY2x1ZGUgInB1YmxpYy9mcGRmX2Z3bGV2ZW50LmgiCisjaW5jbHVkZSAicHVibGljL2ZwZGZfcHJvZ3Jlc3NpdmUuaCIKICNpbmNsdWRlICJ0ZXN0aW5nL2VtYmVkZGVyX3Rlc3QuaCIKICNpbmNsdWRlICJ0ZXN0aW5nL2VtYmVkZGVyX3Rlc3RfbW9ja19kZWxlZ2F0ZS5oIgogI2luY2x1ZGUgInRlc3RpbmcvZW1iZWRkZXJfdGVzdF90aW1lcl9oYW5kbGluZ19kZWxlZ2F0ZS5oIgpAQCAtMzg1LDYgKzM4NiwyNCBAQAogICBVbmxvYWRQYWdlKHBhZ2UpOwogfQogCitURVNUX0YoRlBERkZvcm1GaWxsRW1iZWRkZXJ0ZXN0LCBCVUdfOTAwNTUyKSB7CisgIEVtYmVkZGVyVGVzdFRpbWVySGFuZGxpbmdEZWxlZ2F0ZSBkZWxlZ2F0ZTsKKyAgU2V0RGVsZWdhdGUoJmRlbGVnYXRlKTsKKworICBFWFBFQ1RfVFJVRShPcGVuRG9jdW1lbnQoImJ1Z185MDA1NTIucGRmIikpOworICBGUERGX1BBR0UgcGFnZSA9IExvYWRQYWdlKDApOworICBBU1NFUlRfVFJVRShwYWdlKTsKKyAgRG9PcGVuQWN0aW9ucygpOworICBkZWxlZ2F0ZS5BZHZhbmNlVGltZSg0MDAwKTsKKworICAvLyBTaW11bGF0ZSBhIHJlcGFpbnQuCisgIEZQREZfQklUTUFQIGJpdG1hcCA9IEZQREZCaXRtYXBfQ3JlYXRlKDUxMiwgNTEyLCAwKTsKKyAgQVNTRVJUX1RSVUUoYml0bWFwKTsKKyAgRlBERl9SZW5kZXJQYWdlQml0bWFwX1N0YXJ0KGJpdG1hcCwgcGFnZSwgMCwgMCwgNTEyLCA1MTIsIDAsIDAsIG51bGxwdHIpOworICBGUERGQml0bWFwX0Rlc3Ryb3koYml0bWFwKTsKKyAgVW5sb2FkUGFnZShwYWdlKTsKK30KKwogY2xhc3MgRG9VUklBY3Rpb25CbG9ja2VkRGVsZWdhdGUgZmluYWwgOiBwdWJsaWMgRW1iZWRkZXJUZXN0OjpEZWxlZ2F0ZSB7CiAgcHVibGljOgogICB2b2lkIERvVVJJQWN0aW9uKEZQREZfQllURVNUUklORyB1cmkpIG92ZXJyaWRlIHsKZGlmZiAtLWdpdCBhL3Rlc3RpbmcvcmVzb3VyY2VzL2J1Z185MDA1NTIuaW4gYi90ZXN0aW5nL3Jlc291cmNlcy9idWdfOTAwNTUyLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA4NzYzZjgKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0aW5nL3Jlc291cmNlcy9idWdfOTAwNTUyLmluCkBAIC0wLDAgKzEsNzYgQEAKK3t7aGVhZGVyfX0KK3t7b2JqZWN0IDEgMH19IDw8CisgIC9UeXBlIC9DYXRhbG9nCisgIC9QYWdlcyAyIDAgUgorICAvT3BlbkFjdGlvbiA4IDAgUgorPj4KK3t7b2JqZWN0IDIgMH19IDw8CisgIC9UeXBlIC9QYWdlcworICAvQ291bnQgMQorICAvS2lkcyBbMyAwIFJdCis+PgorZW5kb2JqCit7e29iamVjdCAzIDB9fSA8PAorICAvVHlwZSAvUGFnZQorICAvUGFyZW50IDIgMCBSCisgIC9NZWRpYUJveCBbMCAwIDYwMCA3MDBdCisgIC9SZXNvdXJjZXMgNSAwIFIKKyAgL0NvbnRlbnRzIDQgMCBSCisgIC9Bbm5vdHMgWzYgMCBSXQorPj4KK2VuZG9iagore3tvYmplY3QgNCAwfX0gPDwKKyAge3tzdHJlYW1sZW59fQorPj4KK3N0cmVhbQorICAoT0MpCisgIC9WCisgIEJEQworICBCVAorICAgL0YxIDIwIFRmCisgICAxMDAgMTAwIFRkCisgICAoVGVzdCkgVGoKKyAgRVQKK2VuZHN0cmVhbQorZW5kb2JqCit7e29iamVjdCA1IDB9fSA8PAorICAvUHJvcGVydGllcyA2IDAgUgorICAvRm9udCA8PEYxIDcgMCBSPj4KKz4+CitlbmRvYmoKK3t7b2JqZWN0IDYgMH19IDw8CisgIC9GVCAvVHgKKyAgL1R5cGUgL0Fubm90CisgIC9TdWJ0eXBlIC9XaWRnZXQKKyAgL1QgKHR4dDEpCisgIC9GIDQKKyAgL1JlY3QgWzIwMCAyMDAgNDAwIDQwMF0KKyAgL1YgPDwvQSAoYik+PgorPj4KK2VuZG9iagore3tvYmplY3QgNyAwfX0gPDwKKyAgL1R5cGUgL0ZvbnQKKyAgL1N1YnR5cGUgL1R5cGUxCisgIC9CYXNlRm9udCAvSGVsdmV0aWNhCis+PgorZW5kb2JqCit7e29iamVjdCA4IDB9fSA8PAorICAvVHlwZSAvQWN0aW9uCisgIC9TIC9KYXZhU2NyaXB0CisgIC9KUyA5IDAgUgorPj4KK2VuZG9iagore3tvYmplY3QgOSAwfX0gPDwKKyAge3tzdHJlYW1sZW59fQorPj4KK3N0cmVhbQorZnVuY3Rpb24gcnVuKCkgeworICB0aGlzLmdldEZpZWxkKCd0eHQxJykudmFsdWUgPSAnYSc7Cit9CithcHAuc2V0VGltZU91dCgncnVuKCknLCAxMDAwKQorZW5kc3RyZWFtCitlbmRvYmoKK3t7eHJlZn19Cit7e3RyYWlsZXJ9fQore3tzdGFydHhyZWZ9fQorJSVFT0YKZGlmZiAtLWdpdCBhL3Rlc3RpbmcvcmVzb3VyY2VzL2J1Z185MDA1NTIucGRmIGIvdGVzdGluZy9yZXNvdXJjZXMvYnVnXzkwMDU1Mi5wZGYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTczZThhZQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RpbmcvcmVzb3VyY2VzL2J1Z185MDA1NTIucGRmCkBAIC0wLDAgKzEsOTIgQEAKKyVQREYtMS43CisloPKk9AorMSAwIG9iaiA8PAorICAvVHlwZSAvQ2F0YWxvZworICAvUGFnZXMgMiAwIFIKKyAgL09wZW5BY3Rpb24gOCAwIFIKKz4+CisyIDAgb2JqIDw8CisgIC9UeXBlIC9QYWdlcworICAvQ291bnQgMQorICAvS2lkcyBbMyAwIFJdCis+PgorZW5kb2JqCiszIDAgb2JqIDw8CisgIC9UeXBlIC9QYWdlCisgIC9QYXJlbnQgMiAwIFIKKyAgL01lZGlhQm94IFswIDAgNjAwIDcwMF0KKyAgL1Jlc291cmNlcyA1IDAgUgorICAvQ29udGVudHMgNCAwIFIKKyAgL0Fubm90cyBbNiAwIFJdCis+PgorZW5kb2JqCis0IDAgb2JqIDw8CisgIC9MZW5ndGggNjgKKz4+CitzdHJlYW0KKyAgKE9DKQorICAvVgorICBCREMKKyAgQlQKKyAgIC9GMSAyMCBUZgorICAgMTAwIDEwMCBUZAorICAgKFRlc3QpIFRqCisgIEVUCitlbmRzdHJlYW0KK2VuZG9iagorNSAwIG9iaiA8PAorICAvUHJvcGVydGllcyA2IDAgUgorICAvRm9udCA8PEYxIDcgMCBSPj4KKz4+CitlbmRvYmoKKzYgMCBvYmogPDwKKyAgL0ZUIC9UeAorICAvVHlwZSAvQW5ub3QKKyAgL1N1YnR5cGUgL1dpZGdldAorICAvVCAodHh0MSkKKyAgL0YgNAorICAvUmVjdCBbMjAwIDIwMCA0MDAgNDAwXQorICAvViA8PC9BIChiKT4+Cis+PgorZW5kb2JqCis3IDAgb2JqIDw8CisgIC9UeXBlIC9Gb250CisgIC9TdWJ0eXBlIC9UeXBlMQorICAvQmFzZUZvbnQgL0hlbHZldGljYQorPj4KK2VuZG9iagorOCAwIG9iaiA8PAorICAvVHlwZSAvQWN0aW9uCisgIC9TIC9KYXZhU2NyaXB0CisgIC9KUyA5IDAgUgorPj4KK2VuZG9iagorOSAwIG9iaiA8PAorICAvTGVuZ3RoIDg2Cis+Pgorc3RyZWFtCitmdW5jdGlvbiBydW4oKSB7CisgIHRoaXMuZ2V0RmllbGQoJ3R4dDEnKS52YWx1ZSA9ICdhJzsKK30KK2FwcC5zZXRUaW1lT3V0KCdydW4oKScsIDEwMDApCitlbmRzdHJlYW0KK2VuZG9iagoreHJlZgorMCAxMAorMDAwMDAwMDAwMCA2NTUzNSBmIAorMDAwMDAwMDAxNSAwMDAwMCBuIAorMDAwMDAwMDA4MSAwMDAwMCBuIAorMDAwMDAwMDE0NCAwMDAwMCBuIAorMDAwMDAwMDI3NiAwMDAwMCBuIAorMDAwMDAwMDM5NSAwMDAwMCBuIAorMDAwMDAwMDQ1NyAwMDAwMCBuIAorMDAwMDAwMDU4MyAwMDAwMCBuIAorMDAwMDAwMDY1OSAwMDAwMCBuIAorMDAwMDAwMDcyNSAwMDAwMCBuIAordHJhaWxlciA8PAorICAvUm9vdCAxIDAgUgorICAvU2l6ZSAxMAorPj4KK3N0YXJ0eHJlZgorODYyCislJUVPRgo=