dHJlZSBlN2YxOWZjY2JjNjBlOTcxNTIwYWYwOTE0MDJmNDNhZDUxZjEyNDllCnBhcmVudCA1NWU1OGYyMzM0OGMyZjlmYTkxOGU3MzcwYzBkZGI5OGIzMDdlZTI4CmF1dGhvciBXaWxseSBUYXJyZWF1IDx3QDF3dC5ldT4gMTQ2MjE5ODAyNyArMDIwMApjb21taXR0ZXIgV2lsbHkgVGFycmVhdSA8d0Axd3QuZXU+IDE0NjIxOTk5NjIgKzAyMDAKZW5jb2RpbmcgbGF0aW4xCgpCVUcvTUVESVVNOiBodHRwOiBmaXggcmlzayBvZiBDUFUgc3Bpa2VzIHdpdGggcGlwZWxpbmVkIHJlcXVlc3RzIGZyb20gZGVhZCBjbGllbnQKClNpbmNlIGNsaWVudC1zaWRlIEhUVFAga2VlcC1hbGl2ZSB3YXMgaW50cm9kdWNlZCBpbiAxLjQtZGV2LCBhIGdvb2QKbnVtYmVyIG9mIGNvcm5lciBjYXNlcyBoYWQgdG8gYmUgZGVhbHQgd2l0aC4gT25lIG9mIHRoZW0gcmVtYWluZWQgYW5kCmNhdXNlZCBzb21lIG9jY2FzaW9uYWwgQ1BVIHNwaWtlcyB0aGF0IEN5cmlsIEJvbnTpIGhhZCB0aGUgb3Bwb3J0dW5pdHkKdG8gb2JzZXJ2ZSBmcm9tIHRpbWUgdG8gdGltZSBhbmQgZXZlbiByZWNlbnRseSB0byBjYXB0dXJlIGZvciBkZWVwZXIKYW5hbHlzaXMuCgpXaGF0IGhhcHBlbnMgaXMgdGhlIGZvbGxvd2luZyBzY2VuYXJpbyA6CiAgMSkgYSBjbGllbnQgc2VuZHMgYSBmaXJzdCByZXF1ZXN0IHdoaWNoIGNhdXNlcyB0aGUgc2VydmVyIHRvIHJlc3BvbmQKICAgICB1c2luZyBjaHVua2VkIGVuY29kaW5nCgogIDIpIHRoZSBzZXJ2ZXIgc3RhcnRzIHRvIHJlc3BvbmQgd2l0aCBhIGxhcmdlIHJlc3BvbnNlIHRoYXQgZG9lc24ndAogICAgIGZpdCBpbnRvIGEgc2luZ2xlIGJ1ZmZlcgoKICAzKSB0aGUgcmVzcG9uc2UgYnVmZmVyIGZpbGxzIHVwIHdpdGggdGhlIHJlc3BvbnNlCgogIDQpIHRoZSBjbGllbnQgcmVhZHMgdGhlIHJlc3BvbnNlIHdoaWxlIGl0IGlzIGJlaW5nIHNlbnQgYnkgdGhlIHNlcnZlci4KCiAgNSkgaGFwcm94eSBldmVudHVhbGx5IHJlY2VpdmVzIHRoZSBlbmQgb2YgdGhlIHJlc3BvbnNlIGZyb20gdGhlIHNlcnZlciwKICAgICB3aGljaCBvY2N1cGllcyB0aGUgd2hvbGUgcmVzcG9uc2UgYnVmZmVyIChtdXN0IGF0IGxlYXN0IG92ZXJyaWRlIHRoZQogICAgIHJlc2VydmUpLCBwYXJzZXMgaXQgYW5kIHByZXBhcmVzIHRvIHJlY2VpdmUgYSBzZWNvbmQgcmVxdWVzdCB3aGlsZQogICAgIHNlbmRpbmcgdGhlIGxhc3QgZGF0YSBibG9ja3MgdG8gdGhlIGNsaWVudC4gSXQgdGhlbiByZWluaXRpYWxpemVzIHRoZQogICAgIHdob2xlIGh0dHBfdHhuIGFuZCBjYWxscyBodHRwX3dhaXRfZm9yX3JlcXVlc3QoKSwgd2hpY2ggYXJtcyB0aGUKICAgICBodHRwLXJlcXVlc3QgdGltZW91dC4KCiAgNikgYXQgdGhpcyBleGFjdCBtb21lbnQgdGhlIGNsaWVudCBlbWl0cyBhIHNlY29uZCByZXF1ZXN0LCBwcm9iYWJseQogICAgIGFza2luZyBmb3IgYW4gb2JqZWN0IHJlZmVyZW5jZWQgaW4gdGhlIGZpcnN0IHBhZ2Ugd2hpbGUgcGFyc2luZyBpdAogICAgIG9uIHRoZSBmbHksIGFuZCBzaWxlbnRseSBkaXNhcHBlYXJzIGZyb20gdGhlIGludGVybmV0IChpbnRlcm5ldAogICAgIGFjY2VzcyBjdXQgb3Igc29mdHdhcmUgaGF2aW5nIHRyb3VibGUgd2l0aCBwaXBlbGluZWQgcmVxdWVzdCkuCgogIDcpIHRoZSBzZWNvbmQgcmVxdWVzdCBhcnJpdmVzIGludG8gdGhlIHJlcXVlc3QgYnVmZmVyIGFuZCB0aGUgcmVzcG9uc2UKICAgICBkYXRhIHN0YWxsIGluIHRoZSByZXNwb25zZSBidWZmZXIsIHByZXZlbnRpbmcgdGhlIHJlc2VydmUgZnJvbSBiZWluZwogICAgIHVzZWQgZm9yIGFueXRoaW5nIGVsc2UuCgogIDgpIGhhcHJveHkgY2FsbHMgaHR0cF93YWl0X2Zvcl9yZXF1ZXN0KCkgdG8gcGFyc2UgdGhlIG5leHQgcmVxdWVzdCB3aGljaAogICAgIGhhcyBqdXN0IGFycml2ZWQsIGJ1dCBzaW5jZSBpdCBzZWVzIHRoZSByZXNwb25zZSBidWZmZXIgaXMgZnVsbCwgaXQKICAgICByZWZyYWlucyBmcm9tIGRvaW5nIHNvIGFuZCB3YWl0cyBmb3Igc29tZSBkYXRhIHRvIGxlYXZlIG9yIGEgdGltZW91dAogICAgIHRvIHN0cmlrZS4KCiAgOSkgdGhlIGh0dHAtcmVxdWVzdCB0aW1lb3V0IHN0cmlrZXMsIGNhdXNpbmcgaHR0cF93YWl0X2Zvcl9yZXF1ZXN0KCkgdG8KICAgICBiZSBjYWxsZWQgYWdhaW4sIGFuZCB0aGUgZnVuY3Rpb24gaW1tZWRpYXRlbHkgcmV0dXJucyBzaW5jZSBpdCBjYW5ub3QKICAgICBldmVuIHByb2R1Y2UgYW4gZXJyb3IgbWVzc2FnZSwgYW5kIHRoZSBsb29wIGlzIG1haW50YWluZWQgaGVyZS4KCiAxMCkgdGhlIGNsaWVudCB0aW1lb3V0IHN0cmlrZXMsIGFib3J0aW5nIHRoZSBsb29wLgoKQXQgZmlyc3QgZ2xhbmNlIGEgY2hlY2sgZm9yIHRpbWVvdXQgd291bGQgYmUgbmVlZGVkICpiZWZvcmUqIGNvbnNpZGVyaW5nCnRoZSBidWZmZXIgaW4gaHR0cF93YWl0X2Zvcl9yZXF1ZXN0KCksIGJ1dCB0aGUgaXNzdWUgaXMgbm90IHRoZXJlIGluIGZhY3QsCmJlY2F1c2Ugd2hlbiBkb2luZyBzbyB3ZSBzZWUgaW4gdGhlIGxvZ3MgYSBjbGllbnQgdGltZW91dCBlcnJvciB3aGlsZQp3YWl0aW5nIGZvciBhIHJlcXVlc3QsIHdoaWNoIGlzIHdyb25nLiBUaGUgcmVhbCBpc3N1ZSBpcyB0aGF0IHdlIG11c3Qgbm90CmNvbnNpZGVyIHRoZSBmaXJzdCB0cmFuc2FjdGlvbiB0ZXJtaW5hdGVkIHVudGlsIGF0IGxlYXN0IHRoZSByZXNlcnZlIGlzCnJlbGVhc2VkIHNvIHRoYXQgaHR0cF93YWl0X2Zvcl9yZXF1ZXN0KCkgaGFzIG5vIHByb2JsZW0gc3RhcnRpbmcgdG8gcHJvY2VzcwphIG5ldyByZXF1ZXN0LiBUaGlzIGFsbG93cyB0aGUgZmlyc3QgcmVzcG9uc2UgdG8gYmUgcmVwb3J0ZWQgaW4gdGltZW91dCBhbmQKbm90IHRoZSBzZWNvbmQgcmVxdWVzdC4gQSBtb3JlIHJlc3RyaWN0aXZlIGNvbnRyb2wgY291bGQgY29uc2lzdCBpbiBub3QKY29uc2lkZXJpbmcgdGhlIHJlcXVlc3QgY29tcGxldGUgdW50aWwgdGhlIHJlc3BvbnNlIGJ1ZmZlciBoYXMgbm8gbW9yZQpvdXRnb2luZyBkYXRhIGJ1dCB0aGlzIGJyaW5ncyBubyBhZGRlZCB2YWx1ZSBhbmQgbmVlZGxlc3NseSBpbmNyZWFzZXMgdGhlCm51bWJlciBvZiB3YWtlLXVwcyB3aGVuIGRlYWxpbmcgd2l0aCBwaXBlbGluaW5nLgoKTm90ZSB0aGF0IHRoZSBzYW1lIGlzc3VlIGV4aXN0cyB3aXRoIHRoZSByZXF1ZXN0LCB3ZSBtdXN0IGVuc3VyZSB0aGF0IGFueQpQT1NUIGRhdGEgYXJlIGZpbmlzaGVkIGJlaW5nIGZvcndhcmRlZCB0byB0aGUgc2VydmVyIGJlZm9yZSBhY2NlcHRpbmcgYSBuZXcKcmVxdWVzdC4gVGhpcyBjYXNlIGlzIG11Y2ggaGFyZGVyIHRvIHRyaWdnZXIgaG93ZXZlciBhcyBzZXJ2ZXJzIHJhcmVseQpkaXNhcHBlYXIgYW5kIGlmIHRoZXkgZG8gc28sIHRoZXkgaW1wYWN0IGFsbCB0aGVpciBzZXNzaW9ucyBhdCBvbmNlLgoKTm8gc3BlY2lmaWMgcmVwcm9kdWNlciBpcyB1c2FibGUgYmVjYXVzZSB0aGUgYnVnIGlzIHZlcnkgaGFyZCB0byByZXByb2R1Y2UKYW5kIGRlcGVuZHMgb24gdGhlIHN5c3RlbSBhcyB3ZWxsIHdpdGggc2V0dGluZ3MgdmFyeWluZyBhY3Jvc3MgcmVib290cy4gT24KYSB0ZXN0IG1hY2hpbmUsIHNvY2tldCBidWZmZXJzIHdlcmUgcmVkdWNlZCB0byA0MDk2ICh0Y3Bfcm1lbSBhbmQgdGNwX3dtZW0pLApoYXByb3h5J3MgYnVmZmVycyB3ZXJlIHNldCB0byAxNjM4NCBhbmQgdHVuZS5tYXhyZXdyaXRlIHRvIDEyMjg4LiBUaGUgcHJveHkKbXVzdCB3b3JrIGluIGh0dHAtc2VydmVyLWNsb3NlIG1vZGUsIHdpdGggYSByZXF1ZXN0IHRpbWVvdXQgc21hbGxlciB0aGFuIHRoZQpjbGllbnQgdGltZW91dC4gVGhlIHRlc3QgaXMgcnVuIGxpa2UgdGhpcyA6CgogICQgKHByaW50ZiAiR0VUIC8xNTAwMCBIVFRQLzEuMVxyXG5cclxuIjsgdXNsZWVwIDEwMDAwMDsgXAogICAgIHByaW50ZiAiR0VUIC8gSFRUUC8xLjBcclxuXHJcbiI7IHNsZWVwIDE1KSB8IG5jNiAtLXNlbmQtb25seSAwIDgwMDIKClRoZSBzZXJ2ZXIgcmV0dXJucyBjaHVua3Mgb2YgdGhlIHJlcXVlc3RlZCBzaXplICgxNTAwMCBieXRlcyBoZXJlLCBidXQKNzgwMDAgaW4gYSBwcmV2aW91cyB0ZXN0IHdhcyB0aGUgb25seSB3b3JraW5nIHZhbHVlKS4gU3RyYWNlIG11c3Qgc2hvdyB0aGUKbGFzdCByZWN2ZnJvbSgpIHN1Y2NlZWQgYW5kIHRoZSBsYXN0IHNlbmR0bygpIGJlaW5nIHNob3J0ZXIgdGhhbiBkZXNpcmVkIG9yCmJldHRlciwgbm90IGJlaW5nIGNhbGxlZC4KClRoaXMgZml4IG11c3QgYmUgYmFja3BvcnRlZCB0byAxLjYsIDEuNSBhbmQgMS40LiBJdCB3YXMgbWFkZSBpbiBhIHdheSB0aGF0CnNob3VsZCBtYWtlIGl0IHBvc3NpYmxlIHRvIGJhY2twb3J0IGl0LiBJdCBkZXBlbmRzIG9uIGNoYW5uZWxfY29uZ2VzdGVkKCkKd2hpY2ggYWxzbyBuZWVkcyB0byBiZSBiYWNrcG9ydGVkLiBGdXJ0aGVyIGNsZWFudXAgb2YgaHR0cF93YWl0X2Zvcl9yZXF1ZXN0KCkKY291bGQgYmUgbWFkZSBnaXZlbiB0aGF0IHNvbWUgb2YgdGhlIHRlc3RzIGFyZSBub3cgdXNlbGVzcy4K