Li4gU2VxdWVuY2VzL0NsYXNzZXMvL2RlcXVlIHwzMAoKZGVxdWUKPT09PT0KCkRlc2NyaXB0aW9uCi0tLS0tLS0tLS0tCgpgYGRlcXVlYGAgaXMgYSB8dmFyaWFkaWN8LCBgcmFuZG9tIGFjY2Vzc2BfXywgYGV4dGVuc2libGVgX18gc2VxdWVuY2Ugb2YgdHlwZXMgdGhhdCAKc3VwcG9ydHMgY29uc3RhbnQtdGltZSBpbnNlcnRpb24gYW5kIHJlbW92YWwgb2YgZWxlbWVudHMgYXQgYm90aCBlbmRzLCBhbmQgCmxpbmVhci10aW1lIGluc2VydGlvbiBhbmQgcmVtb3ZhbCBvZiBlbGVtZW50cyBpbiB0aGUgbWlkZGxlLiBJbiB0aGlzIGltcGxlbWVudGF0aW9uIApvZiB0aGUgbGlicmFyeSwgYGBkZXF1ZWBgIGlzIGEgc3lub255bSBmb3IgfHZlY3RvcnwuCgpfXyBgUmFuZG9tIEFjY2VzcyBTZXF1ZW5jZWBfCl9fIGBFeHRlbnNpYmxlIFNlcXVlbmNlYF8KCkhlYWRlcgotLS0tLS0KCi4uIHBhcnNlZC1saXRlcmFsOjoKCiAgICAjaW5jbHVkZSA8Ym9vc3QvbXBsL2RlcXVlLmhwcD4KCgpNb2RlbCBvZgotLS0tLS0tLQoKKiB8VmFyaWFkaWMgU2VxdWVuY2V8CiogfFJhbmRvbSBBY2Nlc3MgU2VxdWVuY2V8CiogfEV4dGVuc2libGUgU2VxdWVuY2V8CiogfEJhY2sgRXh0ZW5zaWJsZSBTZXF1ZW5jZXwKKiB8RnJvbnQgRXh0ZW5zaWJsZSBTZXF1ZW5jZXwKCgpFeHByZXNzaW9uIHNlbWFudGljcwotLS0tLS0tLS0tLS0tLS0tLS0tLQoKU2VlIHx2ZWN0b3J8IHNwZWNpZmljYXRpb24uCgoKRXhhbXBsZQotLS0tLS0tCgouLiBwYXJzZWQtbGl0ZXJhbDo6CiAgICAKICAgIHR5cGVkZWYgZGVxdWU8ZmxvYXQsZG91YmxlLGxvbmcgZG91YmxlPiBmbG9hdHM7CiAgICB0eXBlZGVmIHB1c2hfYmFjazxmbG9hdHMsaW50Pjo6dHlwZSB0eXBlczsKCiAgICBCT09TVF9NUExfQVNTRVJUKCggfGlzX3NhbWV8XDwgYXRfYzx0eXBlcywzPjo6dHlwZSwgaW50ID4gKSk7CgoKU2VlIGFsc28KLS0tLS0tLS0KCnxTZXF1ZW5jZXN8LCB8dmVjdG9yfCwgfGxpc3R8LCB8c2V0fAoKCi4uIGNvcHlyaWdodDo6IENvcHlyaWdodCCpICAyMDAxLTIwMDkgQWxla3NleSBHdXJ0b3ZveSBhbmQgRGF2aWQgQWJyYWhhbXMKICAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwogICBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkK