From mboxrd@z Thu Jan 1 00:00:00 1970 From: thunk2@arcor.de (Thomas Plass) Subject: [ANN] org-conflict add-on: timing conflicts detector and resolver for Org agenda Date: Thu, 4 Apr 2019 21:41:15 +0200 Message-ID: <23718.24027.215006.427898@AGAME7.local> Reply-To: Thomas Plass Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="jJ5DeAOFrT" Content-Transfer-Encoding: 7bit Return-path: Received: from eggs.gnu.org ([209.51.188.92]:54343) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hC8F0-0000XK-9Y for emacs-orgmode@gnu.org; Thu, 04 Apr 2019 15:41:39 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hC8Ew-0005Br-1n for emacs-orgmode@gnu.org; Thu, 04 Apr 2019 15:41:36 -0400 Received: from vsmx012.vodafonemail.xion.oxcs.net ([153.92.174.90]:5547) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1hC8Et-0004sZ-94 for emacs-orgmode@gnu.org; Thu, 04 Apr 2019 15:41:32 -0400 List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: "Emacs-orgmode" To: emacs-orgmode --jJ5DeAOFrT Content-Type: text/plain; charset=us-ascii Content-Description: message body text Content-Transfer-Encoding: 7bit With this post, I'd like to submit org-conflict, a new Org add-on, to the community for enjoyment, scrutiny and feedback. Org-conflict aims to help Org agenda users prevent creating scheduling conflicts. If you use the agenda for calendar purposes, you might benefit from validating timestamps before you commit them. My own demand for conflict-free timestamps arose from using Org as the back end of an iCalendar client I created for VM which exports Org entries. Most people who send me meeting requests use MS Outlook and I got envious when I saw that Outlook informs them immediately of any scheduling conflict when it processes incoming iCalendar data. Initially, org-conflict was intended just as a Lisp predicate called from the VM presentation buffer. Adding an interactive mode, so that it could be used on regular Org timestamps, was fairly easy. Having then added conflict resolution, I thought this might have enough functionality to count as an Org add-on. So here it is as the attached org-conflict.el, tested with Org 9.0 and 9.2. Its implementation is "pure Org" and relies only on code that is loaded anyway when Org is running. Instead of posting a longish message to this list, I opted to explain org-conflict in the attached FAQ document, of course a .org file. The added benefit being that the document is a self-contained demo. Following the guided tour, you know after a couple of minutes interaction if this package is for you. If this is all tl;dr, here's org-conflict in brief: - compares a test time/timestamp/-range against 'org-agenda-files. Eligible timestamps in there are event-type, ie. contain a time-of-day and encode a duration - detects overlaps ("conflicts"), computes a resolution - supports intervals between events ("coffee breaks") - supports virtual ranges (end time is before start time) - customizable levels of automation - designed to be put on the C-c C-c hook, makes timestamps magic - dedicated interactive and non-interactive modes Please let me know if this package is remotely useful, completely misses the point or has crippling bugs and oversights. Regards, Thomas --jJ5DeAOFrT Content-Type: application/octet-stream; name="org-conflict.el" Content-Disposition: attachment; filename="org-conflict.el" Content-Transfer-Encoding: base64 Ozs7IG9yZy1jb25mbGljdC5lbCAtLS0gVGltaW5nIGNvbmZsaWN0cyBkZXRlY3RvciBhbmQgcmVz b2x2ZXIgZm9yIE9yZyBBZ2VuZGENCg0KOzsgQ29weXJpZ2h0IChDKSAyMDE5IFRob21hcyBQbGFz cw0KDQo7OyBBdXRob3I6IFRob21hcyBQbGFzcyA8dGhvbWFzIGRvdCBwbGFzcyBhdCBhcmNvciBk b3QgZGU+DQo7OyBWZXJzaW9uOiAwLjkNCjs7IEtleXdvcmRzOiBhZ2VuZGEsIGNhbGVuZGFyLCB0 aW1pbmcsIHNjaGVkdWxpbmcsIHZhbGlkYXRpb24NCg0KOzsgVGhpcyBmaWxlIGlzIG5vdCBwYXJ0 IG9mIEdOVSBFbWFjcy4NCg0KOzsgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcg0KOzsgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMNCjs7IHB1Ymxpc2hlZCBieSB0aGUg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQNCjs7IHlv dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCg0KOzsgVGhpcyBwcm9ncmFtIGlzIGRpc3Ry aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dA0KOzsgV0lUSE9V VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZg0KOzsg TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl IHRoZSBHTlUNCjs7IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4NCg0K OzsgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UNCjs7IGFsb25nIHdpdGggdGhpcyBwcm9ncmFtIDsgc2VlIHRoZSBmaWxlIENP UFlJTkcuICBJZiBub3QsIHdyaXRlIHRvDQo7OyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u LCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsDQo7OyBCb3N0b24sIE1BIDAyMTEx LTEzMDcsIFVTQS4NCg0KOzs7IENvbW1lbnRhcnk6DQoNCjs7IFRoaXMgcGFja2FnZSBoZWxwcyBP cmcgYWdlbmRhIHVzZXJzIHByZXZlbnQgY3JlYXRpbmcgc2NoZWR1bGluZw0KOzsgY29uZmxpY3Rz Lg0KOzsgDQo7OyBJdCBkZXRlY3RzIGFuZCBvZmZlcnMgdG8gcmVzb2x2ZSB0aW1pbmcgY29uZmxp Y3RzIGJ5IGNoZWNraW5nIGENCjs7IHRlc3QgdGltZSBvciB0aW1lc3RhbXAgZm9yIHBvdGVudGlh bCBvdmVybGFwcyB3aXRoIHRpbWVzdGFtcHMgYW5kDQo7OyAtcmFuZ2VzIGRlZmluZWQgaW4gJ29y Zy1hZ2VuZGEtZmlsZXMuDQo7Ow0KOzsgQ29uZmxpY3QgaGFuZGxpbmcgaXMgY29uZmlndXJhYmxl IGFuZCByYW5nZXMgZnJvbSBwcmVzZW50YXRpb24gb3Zlcg0KOzsgYXV0by1yZXNvbHV0aW9uIHRv IGF1dG8tcmVwbGFjbWVudC4gIENoZWNraW5nIG1heSB0YWtlIGludG8gYWNjb3VudA0KOzsgY29u ZmlndXJhYmxlIGludGVydmFscyAoImNvZmZlZSBicmVha3MiKSBhcm91bmQgZXZlbnRzLg0KOzsg DQo7OyBJbnN0YWxsYXRpb246DQo7OyANCjs7IDEuIGFkZCAocmVxdWlyZSAnb3JnLWNvbmZsaWN0 KSB0byB5b3VyIC5lbWFjcyBvciBlcXVpdmFsZW50IHN0YXJ0dXANCjs7ICAgIGZpbGUuDQo7OyAN Cjs7IDIuIGl0IGlzIHJlY29tbWVuZGVkIHRvIHB1dCBgb3JnLWNvbmZsaWN0LWNoZWNrLXRpbWVz dGFtcC1vci1yYW5nZScNCjs7ICAgIG9udG8gT3JnJ3MgZ2VuZXJhbCBwdXJwb3NlIHZhbGlkYXRp b24vbm9ybWFsaXphdGlvbiBob29rIGFjY2Vzc2VkDQo7OyAgICBieSB0aGUgZ2xvYmFsIEN0cmwt YyBDdHJsLWMga2V5YmluZGluZy4gIFRvIGFkZCBjb25mbGljdCBjaGVja2luZw0KOzsgICAgZnVu Y3Rpb25hbGl0eSB0byB0aW1lc3RhbXBzLCBhZGQgdGhpcyB0byB0aGUgc3RhcnR1cCBmaWxlOg0K OzsgDQo7OyAgICAoYWRkLWhvb2sgJ29yZy1jdHJsLWMtY3RybC1jLWhvb2sgJ29yZy1jb25mbGlj dC1jaGVjay10aW1lc3RhbXAtb3ItcmFuZ2UpDQo7OyAgICAgICAgICAgICANCjs7IDMuIG9wZW4g b3JnLWNvbmZsaWN0J3MgY3VzdG9taXphdGlvbiBvcHRpb25zIGJ5IGV2YWx1YXRpbmcNCjs7IA0K OzsgICAgKGN1c3RvbWl6ZS1ncm91cCAnb3JnLWNvbmZsaWN0IHQpDQo7OyANCjs7ICAgIG9yIG1h bnVhbGx5IHNldCBhbnkgb2YgdGhlIHVzZXIgdmFyaWFibGVzDQo7OyAgDQo7OyAgICAtICdvcmct Y29uZmxpY3QtY29uZmxpY3QtYWN0aW9uDQo7OyAgICAtICdvcmctY29uZmxpY3QtZXZlbnQtbWlu aW11bS1pbnRlcnZhbA0KOzsgICAgLSAnb3JnLWNvbmZsaWN0LWRlZmF1bHQtZXZlbnQtZHVyYXRp b24NCjs7ICAgIC0gJ29yZy1jb25mbGljdC1yZXNvbHV0aW9uLWhvcml6b24tZGF5cw0KOzsgDQo7 OyBGdW5jdGlvbmFsIHJlcXVpcmVtZW50czogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgWzIvMl0NCjs7IA0KOzsgLSBbWF0gT3JnJ3MgdXNlciB2YXJpYWJsZSAn b3JnLWFnZW5kYS1maWxlcyBzZXQgdG8gYSBub24tbmlsIHZhbHVlDQo7OyAtIFtYXSB0aW1lc3Rh bXBzIGFuZCAtcmFuZ2VzIHN0b3JlZCBpbiAnb3JnLWFnZW5kYS1maWxlcyAgICAgICAgICAgICAg WzMvM10NCjs7ICAgLSBbWF0gYXJlIDxhY3RpdmU+LCBub3QgW2luYWN0aXZlXSBub3IgdGFnZ2Vk IGFzIDpBUkNISVZFOmQNCjs7ICAgLSBbWF0gaW5jbHVkZSBhIHRpbWUtb2YtZGF5DQo7OyAgIC0g W1hdIGVuY29kZSBhIGR1cmF0aW9uIA0KOzsNCjs7IEV4YW1wbGUgdXNhZ2UgKGludGVyYWN0aXZl IG1vZGUpOg0KOzsgDQo7OyBHaXZlbiB0aGUgZm9sbG93aW5nIGVudHJpZXMNCjs7IA0KOzsgKiBU T0RPIFByb2plY3QgbWVldGluZyB3aXRoIERhbmENCjs7ICAgU0NIRURVTEVEOiA8MjAxOS0wOC0w MiBGcmkgMTA6MDAtMTE6MzA+DQo7OyANCjs7ICogTHVuY2ggd2l0aCBTYW5keQ0KOzsgICA8MjAx OS0wOC0wMiBGcmkgMTI6MDAtMTI6NDU+LA0KOzsgDQo7OyBhIDQ1IG1pbnV0ZSBwZXJpb2Qgc3Rh cnRpbmcgYXQgMTA6MzAgb24gdGhlIHNhbWUgZGF5LCBleHByZXNzZWQgYXMNCjs7IHRoZSB0aW1l c3RhbXANCjs7IA0KOzsgICA8MjAxOS0wOC0wMiBGcmkgMTA6MzAtMTE6MTU+DQo7OyANCjs7IGNy ZWF0ZXMgY2FzY2FkaW5nIGNvbmZsaWN0cyB3aXRoIGJvdGggc2NoZWR1bGluZ3MgZHVlIHRvIGl0 cyBzdGFydA0KOzsgdGltZSBhbmQgZHVyYXRpb24uDQo7OyANCjs7IFRpbWVzdGFtcHMgdG8gYmUg dmFsaWRhdGVkIG5lZWQgbm90IGJlIGFzIGNvbXBsZXRlIGFzIHRoZWlyIGNvbXBhcmlzb24NCjs7 IGNvdW50ZXJwYXJ0cy4gIE1pc3NpbmcgaW5mb3JtYXRpb24gc3VjaCBhcyB0aGUgc3RhcnQgdGlt ZSBvciB0aGUNCjs7IGR1cmF0aW9uIHdpbGwgYmUgcHJvbXB0ZWQgZm9yIG9yIGNhbiBiZSBzdXBw bGllZCB2aWEgYSBwcmVmaXgNCjs7IGFyZ3VtZW50LiAgSW4gZmFjdCwgYSB0aW1lc3RhbXAgaXNu J3QgcmVxdWlyZWQgYXQgYWxsIGZvciBjb25mbGljdA0KOzsgY2hlY2tpbmcgYXMgZXhlY3V0aW5n IGBvcmctY29uZmxpY3QnIGluIGFueSBjb250ZXh0IG90aGVyIHRoYW4gYQ0KOzsgdGltZXN0YW1w IHdpbGwgcHJvbXB0IGZvciBhbGwgcmVxdWlyZWQgZGF0YS4NCjs7IA0KOzsgQy1jIEMtYydpbmcg KG9yIGludm9raW5nIE0teCBvcmctY29uZmxpY3QpIG9uIHRoZSBhYm92ZSB0aW1lc3RhbXANCjs7 IHdpbGwgc3RhcnQgdGhlIGNvbXBhcmlzb24gYWdhaW5zdCBhbGwgZWxpZ2libGUgdGltZXN0YW1w cyBhbmQNCjs7IC1yYW5nZXMuICBJZiBubyBjb25mbGljdHMgYXJlIGRldGVjdGVkLCBhIHN0YXR1 cyBtZXNzYWdlIGlzIHByaW50ZWQNCjs7IGluIHRoZSBlY2hvIGFyZWEuICBPdGhlcndpc2UsIHVz ZXIgZm9jdXMgc3dpdGNoZXMgdG8gYW4gaW5mb3JtYXRpdmUNCjs7IHByb21wdC4NCjs7IA0KOzsg QnkgZGVmYXVsdCwgb3JnLWNvbmZsaWN0IHdpbGwgb2ZmZXIgdG8gcmVzb2x2ZSBjb25mbGljdHMg YnkNCjs7IGNvbXB1dGluZyBhIHZhbHVlIHJlcHJlc2VudGluZyB0aGUgZWFybGllc3Qgbm9uLWNv bmZsaWN0aW5nIHN0YXJ0DQo7OyB0aW1lIHJlbGF0aXZlIHRvIHRoZSBnaXZlbiB0ZXN0IHRpbWUg d2l0aCBlbm91Z2ggdGltZSBmb3IgdGhlDQo7OyBkZXNpcmVkIGR1cmF0aW9uLiAgQmFycmluZyBh IG5vbi0wIHZhbHVlIG9mIHRoZSB1c2VyIHZhcmlhYmxlDQo7OyAnb3JnLWNvbmZsaWN0LWV2ZW50 LW1pbmltdW0taW50ZXJ2YWwsIHRoZSBwcm9wb3NlZCByZXNvbHV0aW9uIHRvDQo7OyB0aGUgYWJv dmUgY29uZmxpY3Qgd291bGQgYmUgdGhlIGVuZCB0aW1lIG9mIHRoZSBzZWNvbmQgaXRlbSwNCjs7 IGV4cHJlc3NlZCBhcyBhIHRpbWVzdGFtcA0KOzsgDQo7OyAgIDwyMDE5LTA4LTAyIEZyaSAxMjo0 NS0xMzozMD4NCjs7IA0KOzsgd2hpY2ggY2FuIGJlIGVkaXRlZCBpbiB0aGUgbWluaWJ1ZmZlciwg cHV0IG9uIHRoZSBraWxsIHJpbmcgb3INCjs7IGluc2VydGVkIGF0IHBvaW50LCByZXBsYWNpbmcg dGhlIGNvbmZsaWN0aW5nIHRpbWVzdGFtcC4NCjs7IA0KOzsgRXhhbXBsZSB1c2FnZSAobm9uLWlu dGVyYWN0aXZlIG1vZGUpOg0KOzsgDQo7OyBUaGUgcHJlZGljYXRlIGBvcmctY29uZmxpY3QtY29u ZmxpY3QtcCcgcmV0dXJucyB0aGUgY29uZmxpY3Qgc3RhdHVzDQo7OyBvZiBpdHMgYXJndW1lbnRz IGFzIGEgYm9vbGVhbi4gIEluIGl0cyBzaW1wbGVzdCBmb3JtLCB0aGUgY2FzZQ0KOzsgYWJvdmUg Y291bGQgYmUgY291Y2hlZCBpbiB0ZXJtcyBvZiBhIHRpbWUgdmFsdWUgZm9yIHRoZSBzdGFydCB0 aW1lDQo7OyBhbmQgYW4gaW50ZWdlciBmb3IgdGhlIGR1cmF0aW9uDQo7OyANCjs7ICAob3JnLWNv bmZsaWN0LWNvbmZsaWN0LXAgJygwIDMwIDEwIDIgOCAyMDE5KSA0NSkNCjs7IA0KOzsgYW5kIHdp bGwgcmV0dXJuIHQuICBBZGRpdGlvbmFsIGFyZ3VtZW50cyByZXR1cm4gaW5mb3JtYXRpb24gYWJv dXQNCjs7IHRoZSBkZXRlY3RlZCBjb25mbGljdHMgb3IgdGhlaXIgcmVzb2x1dGlvbiBpbnN0ZWFk Lg0KDQo7OzsgQ29kZToNCg0KKHJlcXVpcmUgJ29yZy1hZ2VuZGEpDQooZGVjbGFyZS1mdW5jdGlv biBvcmctZWxlbWVudC10eXBlICJvcmctZWxlbWVudCIpDQoNCihkZWZncm91cCBvcmctY29uZmxp Y3QgbmlsDQogICJPcHRpb25zIGNvbmNlcm5pbmcgdGhlIE9yZyBhZ2VuZGEgdGltaW5nIGNvbmZs aWN0cyBjaGVja2VyL3Jlc29sdmVyLiINCiAgOnRhZyAiT3JnIEFnZW5kYSBDb25mbGljdHMiDQog IDpncm91cCAnb3JnLWFnZW5kYSkNCg0KKGRlZmN1c3RvbSBvcmctY29uZmxpY3QtY29uZmxpY3Qt YWN0aW9uICdyZXZpZXcNCiAgIkFjdGlvbiBgb3JnLWNvbmZsaWN0JyBzaG91bGQgdGFrZSB1cG9u IGRldGVjdGluZyBjb25mbGljdHMuDQpJbnRlcmFjdGl2ZWx5LCBkZXRlcm1pbmVzIGhvdyB0byBo YW5kbGUgY29uZmxpY3RzLiAgVmFsaWQgdmFsdWVzDQpmb3IgdGhpcyBzeW1ib2wgYXJlOg0KDQog ICAgcmV2aWV3OiBQcmVzZW50IGNvbmZsaWN0cyBmb3IgcmV2aWV3IGFuZCByZXNvbHV0aW9uLg0K ICAgcmVzb2x2ZTogQ29tcHV0ZSBhbmQgcHJlc2VudCBhIHJlc29sdXRpb24gZm9yIGZ1cnRoZXIg YWN0aW9uLg0KICAgcmVwbGFjZTogSW5zZXJ0IGEgcmVzb2x1dGlvbiBhdCBwb2ludCwgcmVwbGFj aW5nIHRoZSBjdXJyZW50IHRpbWVzdGFtcC4iDQogIDpncm91cCAnb3JnLWNvbmZsaWN0DQogIDp0 YWcgIkNvbmZsaWN0IEFjdGlvbiINCiAgOnR5cGUgJyhjaG9pY2UNCgkgIChjb25zdCA6dGFnICJQ cmVzZW50IGNvbmZsaWN0cyBmb3IgcmV2aWV3IGFuZCByZXNvbHV0aW9uIiByZXZpZXcpDQoJICAo Y29uc3QgOnRhZyAiUHJlc2VudCBhIHJlc29sdXRpb24gZm9yIGZ1cnRoZXIgYWN0aW9uIiByZXNv bHZlKQ0KCSAgKGNvbnN0IDp0YWcgIkluc2VydCBhIHJlc29sdXRpb24gYXQgcG9pbnQiIHJlcGxh Y2UpKSkNCg0KKGRlZmN1c3RvbSBvcmctY29uZmxpY3QtZXZlbnQtbWluaW11bS1pbnRlcnZhbCAw DQogICJNaW5pbXVtIG51bWJlciBvZiBtaW51dGVzIGJldHdlZW4gdHdvIGNvbnNlY3V0aXZlIG5v bi1jb25mbGljdGluZyBldmVudHMuDQpUaGlzIHZhbHVlIGVuYWJsZXMgcGxhbm5pbmcgZm9yIGEg YnJlYWsgYmV0d2VlbiBtZWV0aW5ncy4NCg0KU2V0IHRvIDAsIHRoZSBmb2xsb3dpbmcgYmFjay10 by1iYWNrIGV2ZW50cyBkbyBub3QgY29uZmxpY3Q6DQoNCiAgICA4OjQ1LSA5OjMwDQogICAgOToz MC0xMDowMA0KICAgMTA6MDAtMTE6MDANCg0KU2V0IHRvIDE1LCB0aGUgZXZlbnRzIGFib3ZlIHdv dWxkIG5lZWQgdG8gYmUgbWluaW1hbGx5IHNwYWNlZA0KbGlrZSB0aGlzOg0KDQogICAgODo0NS0g OTozMA0KICAgIDk6NDUtMTA6MTUNCiAgIDEwOjMwLTExOjMwDQoNCkludGVydmFscyBkbyBub3Qg ZXh0ZW5kIHBhc3QgbWlkbmlnaHQuICBBbHNvLCB0aGVyZSBhcmUgbm8NCmludGVydmFscyBiZWZv cmUgYW5kIGFmdGVyIGV2ZW50cyB0aGF0IHNwYW4gbXVsdGlwbGUgZGF5cy4iDQogIDpncm91cCAn b3JnLWNvbmZsaWN0DQogIDp0YWcgIkludGVydmFscyBiZXR3ZWVuIEV2ZW50cyINCiAgOnR5cGUg J2ludGVnZXIpDQoNCihkZWZjdXN0b20gb3JnLWNvbmZsaWN0LWRlZmF1bHQtZXZlbnQtZHVyYXRp b24gMA0KICAiRGVmYXVsdCBkdXJhdGlvbiwgaW4gbWludXRlcywgYXNzdW1lZCBmb3IgcmFuZ2Vs ZXNzIHRpbWVzdGFtcHMuDQpXaGVuIHNldCB0byAwLCBpbnZva2luZyBgb3JnLWNvbmZsaWN0JyBv biB0aGUgcmFuZ2VsZXNzIHRpbWVzdGFtcA0KDQogICAgPDIwMTktMDctMTkgRnIgMTA6MDA+DQoN CndpbGwgcHJvbXB0IGZvciBhIGR1cmF0aW9uLiAgV2hlbiBzZXQgdG8sIHNheSwgNDUsIGFsbCBj aGVja3MNCndpbGwgc2lsZW50bHkgYXNzdW1lIGV2ZW50cyB0byB0YWtlIDQ1IG1pbnV0ZXMuDQoN CkEgbnVtZXJpYyBwcmVmaXggYXJndW1lbnQgZm9yIGBvcmctY29uZmxpY3QnIHdpbGwgdGVtcG9y YXJpbHkNCm92ZXJyaWRlIHRoZSBnbG9iYWwgdmFsdWUsIHNvIHRoYXQNCg0KIEMtdSA1MCBNLXgg b3JnLWNvbmZsaWN0IA0KDQpzZXRzIGR1cmF0aW9uIHRvIDUwIG1pbnV0ZXMgZm9yIHRoaXMgaW52 b2NhdGlvbi4iDQogIDpncm91cCAnb3JnLWNvbmZsaWN0DQogIDp0YWcgIkRlZmF1bHQgRXZlbnQg RHVyYXRpb24iDQogIDp0eXBlICdpbnRlZ2VyKQ0KDQoNCihkZWZjdXN0b20gb3JnLWNvbmZsaWN0 LXJlc29sdXRpb24taG9yaXpvbi1kYXlzIDMwDQogICJNYXhpbXVtIG51bWJlciBvZiBkYXlzIGlu IHdoaWNoIGEgcmVzb2x1dGlvbiBtdXN0IGJlIGZvdW5kLg0KV2hlbiBhIGNoZWNrIGV4Y2VlZHMg dGhpcyB2YWx1ZSwgdGhlIGZvbGxvd2luZyBoYXBwZW5zOg0KDQotIGludGVyYWN0aXZlbHksIGEg cHJvbXB0IHdpbGwgYXNrIHdoZXRoZXIgdG8gY29udGludWUgc2VhcmNoaW5nDQogIHRoZSBuZXh0 IE4gZGF5cyBvciBhYm9ydA0KDQotIGNhbGxlZCBmcm9tIGEgcHJvZ3JhbSwgbmlsIHdpbGwgYmUg cmV0dXJuZWQgaW1tZWRpYXRlbHkuIg0KICA6Z3JvdXAgJ29yZy1jb25mbGljdA0KICA6dGFnICJS ZXNvbHV0aW9uIEhvcml6b24iDQogIDp0eXBlICdpbnRlZ2VyKQ0KDQooZGVmdmFyIG9yZy1jb25m bGljdC1yZXNvbHV0aW9uLWFnZW5kYS1idWZmZXIgbmlsDQogICJOYW1lL3N0YXR1cyBtYXJrZXIg b2YgdGhlIHByaXZhdGUgb3JnLWNvbmZsaWN0IGFnZW5kYSBidWZmZXIuIikNCg0KKGRlZnZhciBv cmctY29uZmxpY3QtYWdlbmRhLWJ1ZmZlci1uYW1lLWNhY2hlIG5pbA0KICAiTmFtZSBvZiBvcmln aW5hbCBhZ2VuZGEgYnVmZmVyIHRvIGJlIHJlc3RvcmVkLiIpDQoNCihkZWZ2YXIgb3JnLWNvbmZs aWN0LXdpbmRvdy1jb25mIG5pbA0KICAiV2luZG93IGNvbmZpZ3VyYXRpb24gdG8gYmUgcmVzdG9y ZWQuIikNCg0KOzs7IyMjYXV0b2xvYWQNCihkZWZhbGlhcyAnb3JnLWNvbmZsaWN0ICdvcmctY29u ZmxpY3QtY29uZmxpY3QtcCkNCg0KKGRlZnVuIG9yZy1jb25mbGljdC1jaGVjay10aW1lc3RhbXAt b3ItcmFuZ2UgKCkNCiAgIkhvb2sgZnVuY3Rpb24gc3VpdGFibGUgZm9yIGFkZGluZyB0byAnb3Jn LWN0cmwtYy1jdHJsLWMtaG9vay4NCk5vcm1hbGl6ZXMgdGltZXN0YW1wcyBiZWZvcmUgY2hlY2tp bmcgZm9yIGNvbmZsaWN0cy4NCg0KQSBudW1lcmljIHByZWZpeCBhcmd1bWVudCBvdGhlciB0aGFu IDAgc2V0cyB0aGUgZXZlbnQgZHVyYXRpb24NCmZvciBhIHJhbmdlbGVzcyB0aW1lc3RhbXAgdG8g dGhhdCBtYW55IG1pbnV0ZXMuICBUaGlzIG92ZXJyaWRlcw0KdGhlIHZhbHVlIG9mICdvcmctY29u ZmxpY3QtZGVmYXVsdC1ldmVudC1kdXJhdGlvbiBmb3IgdGhlIGN1cnJlbnQNCmNoZWNrLg0KDQpB IG51bWVyaWMgcHJlZml4IG9mIDAgYnlwYXNzZXMgY2hlY2tpbmcuIg0KICAoaWYgKG9yIChlcSBj dXJyZW50LXByZWZpeC1hcmcgJ29yZy1jb25mbGljdC1jaGVjay10aW1lc3RhbXAtb3ItcmFuZ2Up DQogICAgICAgICAgKGVxIGN1cnJlbnQtcHJlZml4LWFyZyAwKQ0KICAgICAgICAgIChub3QgKG1l bXEgKG9yZy1lbGVtZW50LXR5cGUgKG9yZy1lbGVtZW50LWNvbnRleHQpKQ0KICAgICAgICAgICAg ICAgICAgICAgJyh0aW1lc3RhbXAgcGxhbm5pbmcpKSkpDQogICAgICBuaWwNCiAgICAobGV0ICgo b3JnLWNvbmZsaWN0LWRlZmF1bHQtZXZlbnQtZHVyYXRpb24NCiAgICAgICAgICAgKGlmIChhbmQg Y3VycmVudC1wcmVmaXgtYXJnDQogICAgICAgICAgICAgICAgICAgIChudW1iZXJwIGN1cnJlbnQt cHJlZml4LWFyZykpDQogICAgICAgICAgICAgICBjdXJyZW50LXByZWZpeC1hcmcNCiAgICAgICAg ICAgICBvcmctY29uZmxpY3QtZGVmYXVsdC1ldmVudC1kdXJhdGlvbikpDQogICAgICAgICAgKGN1 cnJlbnQtcHJlZml4LWFyZyAnb3JnLWNvbmZsaWN0LWNoZWNrLXRpbWVzdGFtcC1vci1yYW5nZSkp DQogICAgICAoaWdub3JlLWVycm9ycw0KICAgICAgICAoY2FsbC1pbnRlcmFjdGl2ZWx5ICMnb3Jn LWN0cmwtYy1jdHJsLWMpKQ0KICAgICAgKGNhbGwtaW50ZXJhY3RpdmVseSAjJ29yZy1jb25mbGlj dC1jb25mbGljdC1wKQ0KICAgICAgdCkpKQ0KDQoNCihkZWZ1biBvcmctY29uZmxpY3QtY29uZmxp Y3QtcCAoJm9wdGlvbmFsIHRpbWUNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHJhbmdlZW5kDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICByZXR1cm4tY29uZmxpY3RzDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBjb25mbGljdC1hY3Rpb24pDQogICJDaGVjayB0aW1lc3RhbXBzIGZvciBjb25mbGljdHMg d2l0aCBPcmcgYWdlbmRhIGl0ZW1zLg0KSW50ZXJhY3RpdmVseSwgb2ZmZXIgdG8gZWl0aGVyIHJl c29sdmUgdGhlIGNvbmZsaWN0cywgY29tcHV0ZSBhDQpyZXNvbHV0aW9uIG9yIGluc2VydCBhIHJl c29sdXRpb24gaW1tZWRpYXRlbHkuICBDYWxsZWQgZnJvbSBhDQpwcm9ncmFtLCBiZWhhdmUgbGlr ZSBhIHByZWRpY2F0ZSBvciByZXR1cm4gaW5mb3JtYXRpb24gYWJvdXQNCmNvbmZsaWN0cyBhbmQg cmVzb2x1dGlvbnMuDQoNCkludGVyYWN0aXZlbHksIGlmIHBvaW50IGlzIG5vdCBhdCBhIHRpbWUg cmFuZ2Ugb3IgdGltZXN0YW1wLA0KcHJvbXB0IGZvciBhIGRhdGUrdGltZSwgcG9wcGluZyB1cCB0 aGUgY2FsZW5kYXIsIGlmIGNvbmZpZ3VyZWQuDQpPdGhlcndpc2UsIGNvbXBhcmUgdGhlIHRpbWUg cmFuZ2Ugb3IgdGltZXN0YW1wIGF0IHBvaW50IGFnYWluc3QNCmV4aXN0aW5nIHRpbWVzdGFtcHMg YW5kIC1yYW5nZXMgYXMgdXNlZCBmb3IgdGhlIGFnZW5kYS4gIEVsaWdpYmxlDQpmb3IgY29tcGFy aXNvbiBhcmUgdGltZXN0YW1wcy9yYW5nZXMgd2hpY2ggYXJlIGFjdGl2ZSBhbmQgY29udGFpbg0K Ym90aCBhIHRpbWUtb2YtZGF5IGFuZCBhIHJhbmdlIFwoaS5lLiBzcGVjaWZ5IGEgc3RhcnQgdGlt ZSBhbmQgYQ0KZHVyYXRpb25cKS4NCg0KQ2FsbGVkIHByb2dyYW1tYXRpY2FsbHksIGV4cGVjdHMg YSBzdGFydCB0aW1lIFRJTUUgdmFsdWUgYXMNCnJldHVybmVkIGJ5IGBkZWNvZGUtdGltZScgYW5k IGEgUkFOR0VFTkQgd2hpY2ggY2FuIGVpdGhlciBiZSBhDQpmdXR1cmUgdGltZSB2YWx1ZSBvciBh IHBvc2l0aXZlIGludGVnZXIgZGVub3RpbmcgdGhlIGR1cmF0aW9uLA0KbWVhc3VyZWQgaW4gbWlu dXRlcy4gIFJBTkdFRU5EIGRlZmF1bHRzIHRvLCBpZiBzZXQsIHRoZQ0KY2FsY3VsYXRlZCB2YWx1 ZSBvZiBUSU1FICsgJ29yZy1jb25mbGljdC1kZWZhdWx0LWV2ZW50LWR1cmF0aW9uLg0KDQpSZXR1 cm5zIG5pbCBpZiBubyBjb25mbGljdHMgd2VyZSBkZXRlY3RlZCwgdCBvdGhlcndpc2UuDQoNCklm IGZsYWcgUkVUVVJOLUNPTkZMSUNUUyBpcyBub24tbmlsLCByZXR1cm5zIGEgbGlzdCBvZiBjb25m bGljdHMuDQpJdGVtcyBhcmUgbGlzdHMgY29udGFpbmluZyBzaXggZWxlbWVudHM6DQoNCiBEQVlO VU1CRVIgaW50ZWdlciBzdWl0YWJsZSBmb3IgdXNlIGJ5IG9yZyBhZ2VuZGEgZnVuY3Rpb25zDQog U1RBUlQgICAgIHN0YXJ0IHRpbWUgdmFsdWUNCiBFTkQgICAgICAgZW5kIHRpbWUgdmFsdWUNCiBI RUFESU5HICAgaGVhZGluZyBvZiBjb25mbGljdCBpdGVtLCBhdWdtZW50ZWQgYnkgZGF0ZSBhbmQg dGltZQ0KIE1BUktFUiAgICBpdGVtJ3MgbWFya2VyIGFzIHNldCBieSBPcmcsIHN1aXRhYmxlIGZv ciBuYXZpZ2F0aW9uDQogU0VRVUVOQ0UgIGNvbnMgY2VsbCBlbmNvZGluZyBzZXF1ZW5jZSBpbmZv cm1hdGlvbiBvciBuaWwNCg0KU3ltYm9sIENPTkZMSUNULUFDVElPTiBkZXRlcm1pbmVzIHdoYXQg dG8gZG8gd2hlbiBjb25mbGljdHMgd2VyZQ0KZGV0ZWN0ZWQuICBSZWZlciB0byBgb3JnLWNvbmZs aWN0LXByZXNlbnQtY29uZmxpY3RzJyBmb3IgbW9yZQ0KaW5mb3JtYXRpb24gb24gYWN0aW9ucyBh dmFpbGFibGUgaW4gaW50ZXJhY3RpdmUgbW9kZS4NCg0KV2hlbiBjYWxsZWQgcHJvZ3JhbW1hdGlj YWxseSwgc3VwcG9ydGVkIENPTkZMSUNULUFDVElPTiBzeW1ib2xzDQphcmU6DQoNCnJlc29sdXRp b24gICAgICAgICAgICByZXR1cm5zIGEgbGlzdCB3aXRoIGRhdGEgZm9yIHRoZSBlYXJsaWVzdCAN CiAgICAgICAgICAgICAgICAgICAgICBub24tY29uZmxpY3RpbmcgdGltZToNCg0KICAgICAgICAg ICAgICAgICAgICAgIFNUQVJUICAgICBzdGFydCB0aW1lIHZhbHVlIA0KICAgICAgICAgICAgICAg ICAgICAgIEVORCAgICAgICBlbmQgdGltZSB2YWx1ZSANCiAgICAgICAgICAgICAgICAgICAgICBE VVJBVElPTiAgZHVyYXRpb24gaW4gbWludXRlcyAoaW50ZWdlcikNCiAgICAgICAgICAgICAgICAg ICAgICBTRVFVRU5DRVAgaXRlbSBmb2xsb3dzIG11bHRpLWRheSBzZXF1ZW5jZQ0KDQpyZXNvbHV0 aW9uLWFzLXN0cmluZyAgcmV0dXJucyBhbiBPcmcgdGltZXN0YW1wL3JhbmdlDQoNCkNPTkZMSUNU LUFDVElPTiBpcyBob25vdXJlZCBvbmx5IHdoZW4gUkVUVVJOLUNPTkZMSUNUUyBpcyBuaWwuDQpX aGVuIG5vIHJlc29sdXRpb24gY291bGQgYmUgZXN0YWJsaXNoZWQsIHJldHVybnMgbmlsIG9yIHRo ZSBlbXB0eQ0Kc3RyaW5nLiINCiAgKGludGVyYWN0aXZlDQogICAoYXBwZW5kDQogICAgKGlmIChv cmctYXQtZGF0ZS1yYW5nZS1wICdsYXgpDQogICAgICAgIChvcmctY29uZmxpY3QtZ2V0LXRpbWVz LWF0LXBvaW50IChwb2ludCkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKGxpc3QgKGNhciAobWF0Y2gtZGF0YSkpIChjYWRyIChtYXRjaC1kYXRhKSkpDQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQgbmlsIChjYXIgKG1hdGNoLWRhdGEp KSkNCiAgICAgIChpZiAob3JnLWF0LXRpbWVzdGFtcC1wICdsYXgpDQogICAgICAgICAgKG9yZy1j b25mbGljdC1nZXQtdGltZXMtYXQtcG9pbnQgKHBvaW50KSAobGlzdCAoY2FyIChtYXRjaC1kYXRh KSkpKQ0KICAgICAgICAobGlzdCAoZGVjb2RlLXRpbWUgKG9yZy1yZWFkLWRhdGUgdCB0KSkgbmls KSkpDQogICAgKGxpc3QgbmlsIG9yZy1jb25mbGljdC1jb25mbGljdC1hY3Rpb24pKSkgOyB3aGVu IHVzZXIgYWN0aW9uIGludm9sdmVkLCBwcmVwYXJlIGZvciBhY3Rpb24NCiAgKGxldCogKChza2lw LW1hcmtlci1wb3NuIChnZXQtdGV4dC1wcm9wZXJ0eSAocG9pbnQpICdza2lwLW1hcmtlcnMpKQ0K ICAgICAgICAgKHJldHVybi1wb3MgKGdldC10ZXh0LXByb3BlcnR5IChwb2ludCkgJ3JldHVybi1w b3MpKQ0KICAgICAgICAgKHRpbWUgKGFuZCAob3JnLWNvbmZsaWN0LXRpbWUtcCB0aW1lKSB0aW1l KSkNCiAgICAgICAgIChyYW5nZWVuZCAob3IgKGFuZCByYW5nZWVuZA0KICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChpZiAoaW50ZWdlcnAgcmFuZ2VlbmQpDQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChvcmctY29uZmxpY3QtdGltZS1hZGQgdGltZSAoKiA2MCByYW5nZWVuZCkp DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYW5kIChvcmctY29uZmxpY3QtdGltZS1w IHJhbmdlZW5kKSByYW5nZWVuZCkpKQ0KICAgICAgICAgICAgICAgICAgICAgICAoYW5kIGN1cnJl bnQtcHJlZml4LWFyZw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2VycCBjdXJy ZW50LXByZWZpeC1hcmcpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9yZy1jb25mbGlj dC10aW1lLWFkZCB0aW1lICgqIDYwIGN1cnJlbnQtcHJlZml4LWFyZykpKQ0KICAgICAgICAgICAg ICAgICAgICAgICAob3JnLWNvbmZsaWN0LWFkanVzdC1mb3ItZGVmYXVsdC1kdXJhdGlvbiB0aW1l KSkpDQogICAgICAgICA7OyByYW5nZSBlbmQgbXVzdCBiZSBpbiB0aGUgZnV0dXJlDQogICAgICAg ICAocmFuZ2VlbmQxIChpZiAoPD0gKHRpbWUtdG8tc2Vjb25kcyAoYXBwbHkgIydlbmNvZGUtdGlt ZSByYW5nZWVuZCkpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRpbWUtdG8tc2Vjb25k cyAoYXBwbHkgIydlbmNvZGUtdGltZSB0aW1lKSkpDQogICAgICAgICAgICAgICAgICAgICAgICAo bGV0ICgob3JnLWNvbmZsaWN0LWRlZmF1bHQtZXZlbnQtZHVyYXRpb24gbmlsKSkgOyBmb3JjZSBw cm9tcHRpbmcNCiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9yZy1jb25mbGljdC1hZGp1c3Qt Zm9yLWRlZmF1bHQtZHVyYXRpb24gdGltZSkpDQogICAgICAgICAgICAgICAgICAgICAgcmFuZ2Vl bmQpKQ0KICAgICAgICAgKGNvbmZsaWN0cyAob3JnLWNvbmZsaWN0LWdldC1jb25mbGljdHMgdGlt ZSByYW5nZWVuZDEgc2tpcC1tYXJrZXItcG9zbikpDQogICAgICAgICAoY29uZmxpY3QtYWN0aW9u IChvciBjb25mbGljdC1hY3Rpb24gb3JnLWNvbmZsaWN0LWNvbmZsaWN0LWFjdGlvbikpKQ0KICAg IChhbmQgcmV0dXJuLXBvcyAoZ290by1jaGFyIHJldHVybi1wb3MpKQ0KICAgIChpZiAoY2FsbGVk LWludGVyYWN0aXZlbHktcCAnYW55KQ0KICAgICAgICAoaWYgKG5vdCBjb25mbGljdHMpDQogICAg ICAgICAgICAobWVzc2FnZSAiTm8gY29uZmxpY3RzIGZvdW5kJXMuIiAob3JnLWNvbmZsaWN0LXJl c3RyaWN0aW9uLXAgdCAiLCAiKSkNCiAgICAgICAgICAoc2V0cSBvcmctY29uZmxpY3QtYWdlbmRh LWJ1ZmZlci1uYW1lLWNhY2hlIChvciBvcmctYWdlbmRhLWJ1ZmZlci10bXAtbmFtZQ0KICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy1h Z2VuZGEtYnVmZmVyLW5hbWUpDQogICAgICAgICAgICAgICAgb3JnLWNvbmZsaWN0LXdpbmRvdy1j b25mIChjdXJyZW50LXdpbmRvdy1jb25maWd1cmF0aW9uKSkNCiAgICAgICAgICAob3JnLWNvbmZs aWN0LXByZXNlbnQtY29uZmxpY3RzIHRpbWUgcmFuZ2VlbmQxIHNraXAtbWFya2VyLXBvc24NCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZsaWN0cyBjb25mbGlj dC1hY3Rpb24pDQogICAgICAgICAgKG9yZy1jb25mbGljdC1hZ2VuZGEtcXVpdCkpDQogICAgICAo aWYgKG5vdCBjb25mbGljdHMpDQogICAgICAgICAgbmlsDQogICAgICAgIChpZiByZXR1cm4tY29u ZmxpY3RzDQogICAgICAgICAgICBjb25mbGljdHMNCiAgICAgICAgICAoaWYgKG1lbXEgY29uZmxp Y3QtYWN0aW9uICcocmVzb2x1dGlvbiByZXNvbHV0aW9uLWFzLXN0cmluZykpDQogICAgICAgICAg ICAgIChsZXQgKChyZXNvbHV0aW9uIChvcmctY29uZmxpY3QtcmVzb2x2ZS1jb25mbGljdHMgdGlt ZSByYW5nZWVuZDENCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBza2lwLW1hcmtlci1wb3NuIGNvbmZsaWN0cykpKQ0KICAgICAg ICAgICAgICAgIChpZiAoZXEgY29uZmxpY3QtYWN0aW9uICdyZXNvbHV0aW9uLWFzLXN0cmluZykN CiAgICAgICAgICAgICAgICAgICAgKGlmIHJlc29sdXRpb24NCiAgICAgICAgICAgICAgICAgICAg ICAgIChvcmctY29uZmxpY3QtbWFrZS10aW1lc3RhbXAtb3ItcmFuZ2UgKGNhciByZXNvbHV0aW9u KSAoY2FkciByZXNvbHV0aW9uKSkNCiAgICAgICAgICAgICAgICAgICAgICAiIikNCiAgICAgICAg ICAgICAgICAgIHJlc29sdXRpb24pKQ0KICAgICAgICAgICAgdCkpKSkpKQ0KDQooZGVmdW4gb3Jn LWNvbmZsaWN0LXByZXNlbnQtY29uZmxpY3RzICh0aW1lIHJhbmdlZW5kIHNraXAtbWFya2VyLXBv c24gY29uZmxpY3RzDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICZvcHRpb25hbCBjb25mbGljdC1hY3Rpb24gcmVzb2x1dGlvbikNCiAgIlByZXNlbnQgY29uZmxp Y3RzIENPTkZMSUNUUyBmb3IgdGltZSBUSU1FIGFuZCB0aW1lIFJBTkdFRU5EDQphbmQgc29saWNp dCBhY3Rpb25zIHByb21wdGVkIGZvciBpbiB0aGUgbWluaWJ1ZmZlci4NCk9wdGlvbmFsIHN5bWJv bCBDT05GTElDVC1BQ1RJT04gcHJlc2VsZWN0cyBhbiBhY3Rpb24gdG8gdGFrZS4NClJlc29sdXRp b24gUkVTT0xVVElPTiBpcyBhIGNhY2hlIHZhbHVlIHVzZWQgd2hlbiByZWN1cnNpbmcuDQoNClZh bGlkIHZhbHVlcyBmb3IgQ09ORkxJQ1QtQUNUSU9OIGFyZToNCnJldmlldyAgIHByaW50IHN0YXRp c3RpY3MgYWJvdXQgY29uZmxpY3RzIGFuZCBvZmZlciB0byByZXNvbHZlIHRoZW0NCnJlc29sdmUg IGNvbXB1dGUgYSByZXNvbHV0aW9uIGFuZCBwcmVzZW50IGl0IGZvciBmdXJ0aGVyIGFjdGlvbg0K cmVwbGFjZSAgcmVwbGFjZSB0aGUgdGltZXN0YW1wIGF0IHBvaW50IHdpdGggdGhlIHJlc29sdXRp b24gb3IgaW5zZXJ0IGl0Ig0KICAobGV0KiAoKHNpbmdsZXRvbnAgKD0gKGxlbmd0aCBjb25mbGlj dHMpIDEpKQ0KICAgICAgICAgKHRlYXNlciAobnRoIDMgKGNhciBjb25mbGljdHMpKSkNCiAgICAg ICAgIChyZXN0cmljdGlvbi1pbmZvIChvcmctY29uZmxpY3QtcmVzdHJpY3Rpb24tcCB0KSkNCiAg ICAgICAgIChwcm9tcHQgKGZvcm1hdCAoY29uY2F0ICJDb25mbGljdCVzIGRldGVjdGVkJXMgJXMl c1xuUHJlc3MgIg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIltzXWhvdyBhZ2Vu ZGEsICINCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJbcl1lc29sdmUgY29uZmxp Y3QlcyAiDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAib3IgIg0KICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIltxXXVpdDogIikNCiAgICAgICAgICAgICAgICAgICAg ICAgICAoaWYgc2luZ2xldG9ucCAiIiAicyIpDQogICAgICAgICAgICAgICAgICAgICAgICAgKGlm IHNpbmdsZXRvbnAgIjoiIChmb3JtYXQgIiAoJWQpLCBmaXJzdDoiIChsZW5ndGggY29uZmxpY3Rz KSkpDQogICAgICAgICAgICAgICAgICAgICAgICAgKHN1YnN0cmluZyB0ZWFzZXIgMCAobWluIChs ZW5ndGggdGVhc2VyKSA3MCkpDQogICAgICAgICAgICAgICAgICAgICAgICAgcmVzdHJpY3Rpb24t aW5mbw0KICAgICAgICAgICAgICAgICAgICAgICAgIChpZiBzaW5nbGV0b25wICIiICJzIikpKQ0K ICAgICAgICAgKGNoYXJzICcoP3MgP3EgP3IpKQ0KICAgICAgICAgKGNob2ljZSAoaWYgKG1lbXEg Y29uZmxpY3QtYWN0aW9uICcocmVzb2x2ZSByZXBsYWNlKSkgP3IpKQ0KICAgICAgICAgKGJ1ZiAo Y3VycmVudC1idWZmZXIpKSkNCiAgICAod2hpbGUgKG51bGwgY2hvaWNlKQ0KICAgICAgKHNldHEg Y2hvaWNlIChyZWFkLWNoYXItY2hvaWNlIHByb21wdCBjaGFycykpKQ0KICAgIChwY2FzZSBjaG9p Y2UNCiAgICAgICg/cyAob3JnLWNvbmZsaWN0LWFnZW5kYS1saXN0IChjYWRyIChjYXIgY29uZmxp Y3RzKSkgbmlsIHNraXAtbWFya2VyLXBvc24pDQogICAgICAgICAgKHNldC1idWZmZXIgYnVmKQ0K ICAgICAgICAgIChvcmctY29uZmxpY3QtcHJlc2VudC1jb25mbGljdHMgdGltZSByYW5nZWVuZCBz a2lwLW1hcmtlci1wb3NuIGNvbmZsaWN0cyAncmV2aWV3KSkNCiAgICAgICg/cSAobWVzc2FnZSAi QWJvcnQiKSkNCiAgICAgICg/ciAobGV0KiAoKHJlc29sdXRpb24NCiAgICAgICAgICAgICAgICAg IChvciByZXNvbHV0aW9uDQogICAgICAgICAgICAgICAgICAgICAgKGZ1bmNhbGwtaW50ZXJhY3Rp dmVseSAnb3JnLWNvbmZsaWN0LXJlc29sdmUtY29uZmxpY3RzDQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lIHJhbmdlZW5kIHNraXAtbWFya2VyLXBvc24g Y29uZmxpY3RzKSkpDQogICAgICAgICAgICAgICAgIChzIChjYXIgcmVzb2x1dGlvbikpDQogICAg ICAgICAgICAgICAgIChlIChjYWRyIHJlc29sdXRpb24pKQ0KICAgICAgICAgICAgICAgICAocGVy aW9kIChvcmctY29uZmxpY3QtZm9ybWF0LW1pbnV0ZXMgKG50aCAyIHJlc29sdXRpb24pKSkNCiAg ICAgICAgICAgICAgICAgKHRpbWVzdGFtcCAob3JnLWNvbmZsaWN0LW1ha2UtdGltZXN0YW1wLW9y LXJhbmdlIHMgZSkpDQogICAgICAgICAgICAgICAgIChyZWdpb24gKHNhdmUtbWF0Y2gtZGF0YQ0K ICAgICAgICAgICAgICAgICAgICAgICAgICAgKHdoZW4gKG9yIChvcmctYXQtZGF0ZS1yYW5nZS1w ICdsYXgpIChvcmctYXQtdGltZXN0YW1wLXAgJ2xheCkpDQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChjb25zIChjYXIgKG1hdGNoLWRhdGEgdCkpIChjYWRyIChtYXRjaC1kYXRhIHQpKSkp KSkNCiAgICAgICAgICAgICAgICAgKGRhdGUtaW5mbyAoaWYgKGFuZCAoPSAobnRoIDUgcykgKG50 aCA1IHRpbWUpKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICg9IChudGgg NCBzKSAobnRoIDQgdGltZSkpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KD0gKG50aCAzIHMpIChudGggMyB0aW1lKSkpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICIiDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXG5Ob3RlOiBkYXRlcyBvZiBj b25mbGljdCBhbmQgcmVzb2x1dGlvbiBkaWZmZXIuIikpDQogICAgICAgICAgICAgICAgIChpbnRl cnZhbC1pbmZvIChjb25kICgobnRoIDMgcmVzb2x1dGlvbikgIihnYXA6IHJhbmdlIGhhcyBub25l KSIpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoPSAwIG9yZy1jb25m bGljdC1ldmVudC1taW5pbXVtLWludGVydmFsKSAiKGdhcDogbm9uZSkiKQ0KICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAodCAoZm9ybWF0ICIoZ2FwOiAlZCBtaW4pIg0KICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy1jb25mbGlj dC1ldmVudC1taW5pbXVtLWludGVydmFsKSkpKQ0KICAgICAgICAgICAgICAgICAoZG9pbnNlcnQg KGxhbWJkYSAocykNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHdoZW4gcmVnaW9uDQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdvdG8tY2hhciAoY2FyIHJlZ2lvbikpDQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlbGV0ZS1yZWdpb24gKGNhciByZWdpb24p IChjZHIgcmVnaW9uKSkpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnNlcnQgcykN CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1lc3NhZ2UgIlJlc29sdXRpb24gaW5zZXJ0 ZWQlcy4lcyINCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlmIHJlZ2lv biAiLCByZXBsYWNpbmcgY29uZmxpY3RpbmcgdGltZXN0YW1wIiAiIikNCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZS1pbmZvKSkpKQ0KICAgICAgICAgICAgKHNldHEg Y2hhcnMgJyg/cyA/YyA/ZSA/cSA/cCA/ciA/UikNCiAgICAgICAgICAgICAgICAgIGNob2ljZSAo aWYgKGVxIGNvbmZsaWN0LWFjdGlvbiAncmVwbGFjZSkgP1IpDQogICAgICAgICAgICAgICAgICBw cm9tcHQgKGZvcm1hdCAoY29uY2F0ICJFYXJsaWVzdCBwb3NzaWJsZSB0aW1lIGZvciBhICVzIHBl cmlvZCAlczogIg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJWQg JXMgJWQsICVkOiUwMmQlcyVzXG5QcmVzcyAiDQogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAiW3NdaG93IGFnZW5kYSwgIg0KICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIltwXXJldmlldywgIg0KICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIltjXW9weSwgIg0KICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIltlXWRpdCwgIg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIltyXWVwbGFjZS9pbnNlcnQgIg0KICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIm9yICINCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICJbcV11aXQ6ICIpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw ZXJpb2QNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVydmFsLWluZm8NCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChudGggMyBzKQ0KICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKGNhbGVuZGFyLW1vbnRoLW5hbWUgKG50aCA0IHMpKQ0KICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKG50aCA1IHMpDQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAobnRoIDIgcykNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChudGggMSBzKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZS1pbmZvDQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN0cmljdGlvbi1pbmZvKSkNCiAgICAg ICAgICAgICA7OyBhZ2VuZGEgaXMgdmlzaWJsZTogdXBkYXRlIGl0IGlmIHJlc29sdXRpb24gYW5k DQogICAgICAgICAgICAgOzsgY29uZmxpY3QgYXJlIG9uIGRpZmZlcmVudCBkYXRlcyAoa2VlcCB2 aWV3IHdoZW4NCiAgICAgICAgICAgICA7OyByZXNvbHV0aW9uIHByZXZpZXcgaXMgc2hvd2luZykN CiAgICAgICAgICAgIChpZiAoYW5kIChub3QgKGVxdWFsIGNvbmZsaWN0LWFjdGlvbiAncmVzb2x2 ZSkpDQogICAgICAgICAgICAgICAgICAgICBvcmctY29uZmxpY3QtcmVzb2x1dGlvbi1hZ2VuZGEt YnVmZmVyDQogICAgICAgICAgICAgICAgICAgICAoZ2V0LWJ1ZmZlciBvcmctY29uZmxpY3QtcmVz b2x1dGlvbi1hZ2VuZGEtYnVmZmVyKQ0KICAgICAgICAgICAgICAgICAgICAgKG5vdCAoZXF1YWwg ZGF0ZS1pbmZvICIiKSkpDQogICAgICAgICAgICAgICAgKHNhdmUtd2luZG93LWV4Y3Vyc2lvbg0K ICAgICAgICAgICAgICAgICAgKG9yZy1jb25mbGljdC1hZ2VuZGEtbGlzdCBzIG5pbCBza2lwLW1h cmtlci1wb3NuKSkpDQogICAgICAgICAgICAod2hpbGUgKG51bGwgY2hvaWNlKQ0KICAgICAgICAg ICAgICAoc2V0cSBjaG9pY2UgKHJlYWQtY2hhci1jaG9pY2UgcHJvbXB0IGNoYXJzKSkpDQogICAg ICAgICAgICAocGNhc2UgY2hvaWNlDQogICAgICAgICAgICAgICgob3IgP3MgP3ApIChpZiAoYW5k IG9yZy1jb25mbGljdC1yZXNvbHV0aW9uLWFnZW5kYS1idWZmZXINCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKGdldC1idWZmZXIgb3JnLWNvbmZsaWN0LXJlc29sdXRpb24tYWdl bmRhLWJ1ZmZlcikNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vdCAoZXF1 YWwgZGF0ZS1pbmZvICIiKSkpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2lsbC1i dWZmZXIgb3JnLWNvbmZsaWN0LXJlc29sdXRpb24tYWdlbmRhLWJ1ZmZlcikpDQogICAgICAgICAg ICAgICAoaWYgKGVxIGNob2ljZSA/cCkNCiAgICAgICAgICAgICAgICAgICAobGV0ICgodG1wLWFn ZW5kYS1maWxlIChvcmctY29uZmxpY3QtdGVtcC1maWxlDQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgcw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGUNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi Pj4+Pj4+Pj4iDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjw8 PDw8PDwgciBlIHMgbyBsIHUgdCBpIG8gbiA8PDw8PDw8PDw8PDw8PDwiKSkpDQogICAgICAgICAg ICAgICAgICAgICAob3JnLWNvbmZsaWN0LWFnZW5kYS1saXN0IHMgdG1wLWFnZW5kYS1maWxlIHNr aXAtbWFya2VyLXBvc24pKQ0KICAgICAgICAgICAgICAgICAob3JnLWNvbmZsaWN0LWFnZW5kYS1s aXN0IHMgbmlsIHNraXAtbWFya2VyLXBvc24pKQ0KICAgICAgICAgICAgICAgKHNldC1idWZmZXIg YnVmKQ0KICAgICAgICAgICAgICAgKG9yZy1jb25mbGljdC1wcmVzZW50LWNvbmZsaWN0cyB0aW1l IHJhbmdlZW5kIHNraXAtbWFya2VyLXBvc24NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgY29uZmxpY3RzICdyZXNvbHZlIHJlc29sdXRpb24pKQ0KICAgICAg ICAgICAgICAoP2MgKGtpbGwtbmV3IHRpbWVzdGFtcCkNCiAgICAgICAgICAgICAgICAgIChtZXNz YWdlDQogICAgICAgICAgICAgICAgICAgKHN1YnN0aXR1dGUtY29tbWFuZC1rZXlzICJSZXNvbHV0 aW9uIGNvcGllZCwgdXNlIGBcXFt5YW5rXScgdG8gaW5zZXJ0LiIpKSkNCiAgICAgICAgICAgICAg KD9lIChsZXQgKChyZXNwIChyZWFkLXN0cmluZyAiRWRpdCB0aW1lc3RhbXAsIHByZXNzIFJFVCB0 byByZXBsYWNlL2luc2VydDogIg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHRpbWVzdGFtcCkpKQ0KICAgICAgICAgICAgICAgICAgICAoZnVuY2FsbCBkb2luc2Vy dCByZXNwKSkpDQogICAgICAgICAgICAgICgob3IgP3IgP1IpIChmdW5jYWxsIGRvaW5zZXJ0IHRp bWVzdGFtcCkpDQogICAgICAgICAgICAgICg/cSAobWVzc2FnZSAiQWJvcnQiKSkNCiAgICAgICAg ICAgICAgKF8gbmlsKSkpKQ0KICAgICAgKF8gbmlsKSkpKQ0KDQooZGVmdW4gb3JnLWNvbmZsaWN0 LXJlc29sdmUtY29uZmxpY3RzICh0aW1lIHJhbmdlZW5kIHNraXAtbWFya2VyLXBvc24gY29uZmxp Y3RzKQ0KICAiQ2FsY3VsYXRlIGZvciBjb25mbGljdHMgQ09ORkxJQ1RTIHRoZSBlYXJsaWVzdCBu b24tY29uZmxpY3RpbmcNCnRpbWUgZm9yIHRpbWUgVElNRSwgZW5kIHRpbWUgUkFOR0VFTkQgYW5k IGJ1ZmZlciBwb3NpdGlvbnMNClNLSVAtTUFSS0VSLVBPU04uDQoNClJldHVybnMgYSBsaXN0IHdp dGggaW5mb3JtYXRpb24gYWJvdXQgdGhlIHJlc29sdmVkIHRpbWUNCiAgU1RBUlQgICAgIHN0YXJ0 IHRpbWUgdmFsdWUNCiAgRU5EICAgICAgIGVuZCB0aW1lIHZhbHVlDQogIERVUkFUSU9OICBpbnRl Z2VyIGRlbm90aW5nIHRoZSBkdXJhdGlvbiBpbiBtaW51dGVzDQogIFNFUVVFTkNFUCBib29sZWFu IGluZGljYXRpbmcgd2hldGhlciByZXNvbHV0aW9uIGZvbGxvd3MgDQogICAgICAgICAgICBhIG11 bHRpLWRheSBzZXF1ZW5jZSBhbmQgdGh1cyBzaG91bGQgbm90IA0KICAgICAgICAgICAgcmVjZWl2 ZSBhIGxlYWRpbmcgaW50ZXJ2YWwNCg0KV2hlbiBubyByZXNvbHV0aW9uIGNvdWxkIGJlIGVzdGFi bGlzaGVkLCBhYm9ydCB3aXRoIGFuIGVycm9yIG9yDQpyZXR1cm4gbmlsIHdoZW4gY2FsbGVkIGZy b20gYSBwcm9ncmFtLiINCiAgKGxldCogKChjb25mbGljdCAoY2FyIChvcmctY29uZmxpY3Qtc29y dC1jb25mbGljdHMgY29uZmxpY3RzIDIgIyc+KSkpIDsgc29ydGluZyBuZWNlc3Nhcnk/DQogICAg ICAgICAoc2VxLWluZm8gKG50aCA1IGNvbmZsaWN0KSkNCiAgICAgICAgIChkdXJhdGlvbiAodHJ1 bmNhdGUgKC0gKHRpbWUtdG8tc2Vjb25kcyAoYXBwbHkgIydlbmNvZGUtdGltZSByYW5nZWVuZCkp DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRpbWUtdG8tc2Vjb25kcyAoYXBwbHkg IydlbmNvZGUtdGltZSB0aW1lKSkpKSkNCiAgICAgICAgIChpbnQtbWluICh3aGVuIChhbmQgb3Jn LWNvbmZsaWN0LWV2ZW50LW1pbmltdW0taW50ZXJ2YWwNCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKGludGVnZXJwIG9yZy1jb25mbGljdC1ldmVudC1taW5pbXVtLWludGVydmFsKQ0KICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAoPiBvcmctY29uZmxpY3QtZXZlbnQtbWluaW11bS1p bnRlcnZhbCAwKSkNCiAgICAgICAgICAgICAgICAgICAgb3JnLWNvbmZsaWN0LWV2ZW50LW1pbmlt dW0taW50ZXJ2YWwpKQ0KICAgICAgICAgOzsgY3J1Y2lhbGx5LCBlbnN1cmUgdGhhdCB0aGUgdGlt ZSBjdXJzb3IgYWR2YW5jZXMgYnkgYXQNCiAgICAgICAgIDs7IGxlYXN0IDEgbWludXRlIHBhc3Qg dGhlIGVuZCBvZiB0aGUgbGFzdCBjb25mbGljdA0KICAgICAgICAgKGludC1taW4tZWZmZWN0aXZl IChjb25kIChzZXEtaW5mbyAxKSA7IG92ZXJyaWRlIHJlZ3VsYXIgaW50ZXJ2YWwgYWZ0ZXIgc2Vx dWVuY2VzDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludC1taW4gKG1heCBp bnQtbWluIDEpKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0IDEpKSkNCiAg ICAgICAgIChvcmctY29uZmxpY3QtZXZlbnQtbWluaW11bS1pbnRlcnZhbCBpbnQtbWluLWVmZmVj dGl2ZSkgOyBzZXQgZm9yIHJlY3Vyc2lvbg0KICAgICAgICAgOzsgIGZhc3QgZm9yd2FyZCB0byBz ZXF1ZW5jZSBlbmQNCiAgICAgICAgIChlbmQtdGltZSAoaWYgKGFuZCBzZXEtaW5mbyAoPiAoY2Ry IHNlcS1pbmZvKSAoY2FyIHNlcS1pbmZvKSkpDQogICAgICAgICAgICAgICAgICAgICAgIChvcmct Y29uZmxpY3QtdGltZS1hZGQgKG50aCAyIGNvbmZsaWN0KQ0KICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICgqIDg2NDAwICgtIChjZHIgc2VxLWluZm8pDQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDEr IChjYXIgc2VxLWluZm8pKSkpKQ0KICAgICAgICAgICAgICAgICAgICAgKG50aCAyIGNvbmZsaWN0 KSkpDQogICAgICAgICAobmV4dC10aW1lIChvcmctY29uZmxpY3QtdGltZS1hZGQgZW5kLXRpbWUg KCogaW50LW1pbi1lZmZlY3RpdmUgNjApKSkNCiAgICAgICAgIChzdGFydC1kYXkgKG50aCAzIChu dGggMiBjb25mbGljdCkpKQ0KICAgICAgICAgKGRheXMtc2VhcmNoZWQgMCkNCiAgICAgICAgIChu ZXh0LWRheXMtbWVzcyAidGhlIG5leHQiKQ0KICAgICAgICAgbmV4dC1yYW5nZWVuZCBsYXN0LWNv bmZsaWN0IGFib3J0ZWQpDQogICAgKHdoaWxlIGNvbmZsaWN0DQogICAgICAoc2V0cSBsYXN0LWNv bmZsaWN0IGNvbmZsaWN0DQogICAgICAgICAgICBuZXh0LXJhbmdlZW5kIChvcmctY29uZmxpY3Qt dGltZS1hZGQgbmV4dC10aW1lIGR1cmF0aW9uKSkNCiAgICAgIChwdXQtdGV4dC1wcm9wZXJ0eSAo cG9pbnQpICgxKyAocG9pbnQpKSAnc2tpcC1tYXJrZXJzIHNraXAtbWFya2VyLXBvc24pDQogICAg ICAobWVzc2FnZSAicmVzb2x2aW5nLi4uJXMiIChmb3JtYXQtdGltZS1zdHJpbmcgIiVGLCAlUiIg KGFwcGx5ICMnZW5jb2RlLXRpbWUgbmV4dC10aW1lKSkpDQogICAgICAobGV0ICgobmV4dC1jb25m bGljdHMgKG9yZy1jb25mbGljdC1jb25mbGljdC1wIG5leHQtdGltZSBuZXh0LXJhbmdlZW5kIHQg bmlsKSkpDQogICAgICAgIChzZXRxIGNvbmZsaWN0IChjYXIgKG9yZy1jb25mbGljdC1zb3J0LWNv bmZsaWN0cyBuZXh0LWNvbmZsaWN0cyAyICMnPikpKQ0KICAgICAgICAod2hlbiBjb25mbGljdA0K ICAgICAgICAgICh3aGVuICgvPSAobnRoIDMgKG50aCAyIGNvbmZsaWN0KSkgc3RhcnQtZGF5KQ0K ICAgICAgICAgICAgKHNldHEgc3RhcnQtZGF5IChudGggMyAobnRoIDIgY29uZmxpY3QpKQ0KICAg ICAgICAgICAgICAgICAgZGF5cy1zZWFyY2hlZCAoMSsgZGF5cy1zZWFyY2hlZCkpKQ0KICAgICAg ICAgIChsZXQgKChpbnQtbWluLWxvb3AgaW50LW1pbi1lZmZlY3RpdmUpKQ0KICAgICAgICAgICAg OzsganVzdCB0byBiZSBzYWZlOiBjaGVjayByZXN1bHQgdG8gcHJldmVudCBpbmZpbml0ZSBsb29w cw0KICAgICAgICAgICAgOzsgb24gcmVjdXJyaW5nIGlucHV0DQogICAgICAgICAgICAod2hlbiAo ZXF1YWwgKG50aCAyIGNvbmZsaWN0KSAobnRoIDIgbGFzdC1jb25mbGljdCkpDQogICAgICAgICAg ICAgIChzZXRxIGludC1taW4tbG9vcCAoMSsgaW50LW1pbi1lZmZlY3RpdmUpDQogICAgICAgICAg ICAgICAgICAgIGludC1taW4gbmlsKSkNCiAgICAgICAgICAgIChzZXRxIG5leHQtdGltZSAob3Jn LWNvbmZsaWN0LXRpbWUtYWRkIChudGggMiBjb25mbGljdCkgKCogaW50LW1pbi1sb29wIDYwKSkp KQ0KICAgICAgICAgIDs7IFBhbmljOiBhZnRlciBoYXZpbmcgc2VhcmNoZWQNCiAgICAgICAgICA7 OyAnb3JnLWNvbmZsaWN0LXJlc29sdXRpb24taG9yaXpvbi1kYXlzIGRheXMgd2l0aCBubw0KICAg ICAgICAgIDs7IHJlc3VsdCwgcHJvbXB0IHVzZXIuICBDYWxsZWQgcHJvZ3JhbW1hdGljYWxseSwg YWJvcnQNCiAgICAgICAgICA7OyBpbW1lZGlhdGVseSBhbmQgcmV0dXJuIG5pbC4NCiAgICAgICAg ICAod2hlbiAoPiBkYXlzLXNlYXJjaGVkIG9yZy1jb25mbGljdC1yZXNvbHV0aW9uLWhvcml6b24t ZGF5cykNCiAgICAgICAgICAgIChpZiAoY2FsbGVkLWludGVyYWN0aXZlbHktcCAnYW55KQ0KICAg ICAgICAgICAgICAgIChpZiAoeS1vci1uLXAgKGZvcm1hdCAoY29uY2F0ICJObyByZXNvbHV0aW9u IGZvdW5kIHdpdGhpbiAlcyAlZCBkYXlzLiAiDQogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIkNvbnRpbnVlPyAiKQ0KICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBuZXh0LWRheXMtbWVzcw0KICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBvcmctY29uZmxpY3QtcmVzb2x1dGlvbi1ob3Jpem9uLWRheXMpKQ0KICAgICAg ICAgICAgICAgICAgICAoc2V0cSBkYXlzLXNlYXJjaGVkIDANCiAgICAgICAgICAgICAgICAgICAg ICAgICAgbmV4dC1kYXlzLW1lc3MgImFub3RoZXIiKQ0KICAgICAgICAgICAgICAgICAgKGVycm9y ICJObyByZXNvbHV0aW9uIGZvdW5kLiBBYm9ydGVkLiIpKQ0KICAgICAgICAgICAgICAoc2V0cSBj b25mbGljdCBuaWwNCiAgICAgICAgICAgICAgICAgICAgYWJvcnRlZCB0KSkpKSkpDQogICAgKG1l c3NhZ2UgInJlc29sdmluZy4uLiBkb25lIikNCiAgICA7OyBmb3IgY29uc2lzdGVuY3ksIHN1YnRy YWN0IHRoZSBlZmZlY3RpdmUgbWluaW11bSBpbnRlcnZhbCB3aGVuDQogICAgOzsgdGhlIGFydGlm aWNhbCAxLW1pbnV0ZSBhZHZhbmNlIHdhcyB1c2VkIGZvciAwL25pbC12YWx1ZWQNCiAgICA7OyBp bnRlcnZhbC1taW5pbXVtIHZhcmlhYmxlIG9yIGEgbXVsdGktZGF5IHNlcXVlbmNlICgibm8NCiAg ICA7OyBjb2ZmZWUtYnJlYWsgYWZ0ZXIgdmFjYXRpb24gZW5kIikNCiAgICAod2hlbiAob3IgKG5v dCBpbnQtbWluKQ0KICAgICAgICAgICAgICBzZXEtaW5mbykNCiAgICAgIChzZXRxIG5leHQtdGlt ZSAob3JnLWNvbmZsaWN0LXRpbWUtYWRkIG5leHQtdGltZSAoKiBpbnQtbWluLWVmZmVjdGl2ZSAt NjApKQ0KICAgICAgICAgICAgbmV4dC1yYW5nZWVuZCAob3JnLWNvbmZsaWN0LXRpbWUtYWRkIG5l eHQtcmFuZ2VlbmQgKCogaW50LW1pbi1lZmZlY3RpdmUgLTYwKSkpKQ0KICAgIChpZiBhYm9ydGVk DQogICAgICAgIG5pbA0KICAgICAgKGxpc3QgbmV4dC10aW1lDQogICAgICAgICAgICBuZXh0LXJh bmdlZW5kDQogICAgICAgICAgICAoLyBkdXJhdGlvbiA2MCkNCiAgICAgICAgICAgIChjb25zcCBz ZXEtaW5mbykpKSkpDQoNCihkZWZ1biBvcmctY29uZmxpY3QtZ2V0LXRpbWVzLWF0LXBvaW50IChy ZXR1cm4tcG9zDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm9wdGlv bmFsIG1hcmtlci1wb3NuIHJhbmdlcCByYW5nZS1wYXJ0LXAgcG9tKQ0KICAiQ29udmVydHMgdGlt ZSByYW5nZXMgYW5kIHRpbWVzdGFtcHMgYXQgcG9zaXRpb24gUkVUVVJOLVBPUy4NClJldHVybnMg YSBsaXN0IG9mIGRlY29kZWQgdGltZXMuICBNYXkgcHJvbXB0IGZvciBtaXNzaW5nDQpzdGFydCBh bmQvb3IgZW5kIHRpbWVzLiINCiAgKGxldCAodGltZXMpDQogICAgKGlmIHBvbSAoZ290by1jaGFy IHBvbSkpICAgICAgICAgICAgOyBoYXZlIHRvIG1vdmUgcG9pbnQgZm9yIHJhbmdlcywgY2FuJ3Qg c2F2ZSBleGN1cnNpb24NCiAgICAoaWYgKGFuZCByYW5nZXANCiAgICAgICAgICAgICAobm90IHJh bmdlLXBhcnQtcCkpDQogICAgICAgIChhbmQgKHNldHEgdGltZXMgKG9yZy1jb25mbGljdC1nZXQt dGltZXMtYXQtcG9pbnQgbmlsIG5pbCB0IHQpKQ0KICAgICAgICAgICAgIChzZWFyY2gtZm9yd2Fy ZCAiLS0iKQ0KICAgICAgICAgICAgIChzZXRxIHRpbWVzIChsaXN0IChjYXIgdGltZXMpDQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNhciAob3JnLWNvbmZsaWN0LWdldC10aW1lcy1h dC1wb2ludCBuaWwgbmlsIHQgdCkpKSkpDQogICAgICAob3JnLWF0LXRpbWVzdGFtcC1wICdsYXgp IDsgc2V0IG1hdGNoIGRhdGENCiAgICAgIChsZXQgKChkYXRlIChmb3JtYXQgIiVzLSVzLSVzICIg KG1hdGNoLXN0cmluZyAyKSAobWF0Y2gtc3RyaW5nIDMpIChtYXRjaC1zdHJpbmcgNCkpKQ0KICAg ICAgICAgICAgKHRpbWUgKG1hdGNoLXN0cmluZyA2KSkNCiAgICAgICAgICAgIChlbmQtdGltZSBy YW5nZS1wYXJ0LXApKQ0KICAgICAgICAoaWYgKGFuZCB0aW1lDQogICAgICAgICAgICAgICAgIChz YXZlLW1hdGNoLWRhdGENCiAgICAgICAgICAgICAgICAgICAoc3RyaW5nLW1hdGNoICJcXGBbIF0q WzAtOV1cXHsxLDJcXH06WzAtOV1cXHsyXFx9IiB0aW1lKSkpDQogICAgICAgICAgICAoc2V0cSB0 aW1lcw0KICAgICAgICAgICAgICAgICAgKGxpc3QNCiAgICAgICAgICAgICAgICAgICAoc2F2ZS1t YXRjaC1kYXRhDQogICAgICAgICAgICAgICAgICAgICAoZGVjb2RlLXRpbWUgKG9yZy1yZWFkLWRh dGUgbmlsIHQgKGNvbmNhdCBkYXRlIHRpbWUpKSkpDQogICAgICAgICAgICAgICAgICAgKHByb2du DQogICAgICAgICAgICAgICAgICAgICAoZ290by1jaGFyIChjYXIgKHJldmVyc2UgKG1hdGNoLWRh dGEpKSkpDQogICAgICAgICAgICAgICAgICAgICAoaWYgKGFuZCAobm90IHJhbmdlcCkNCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChsb29raW5nLWF0ICItP1xcKFswLTldXFx7MSwyXFx9 OlswLTldXFx7MlxcfVxcKSIpKQ0KICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNvZGUtdGlt ZQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAob3JnLXJlYWQtZGF0ZSBuaWwgdCAoY29uY2F0 IGRhdGUNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAoYnVmZmVyLXN1YnN0cmluZyAobWF0Y2gtYmVnaW5uaW5nIDEpDQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKG1hdGNoLWVuZCAxKSkpKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICBuaWwpKSkpKQ0K ICAgICAgICAgIChzZXRxIHRpbWUgKHJlYWQtc3RyaW5nDQogICAgICAgICAgICAgICAgICAgICAg KGZvcm1hdCAiU3BlY2lmeSBzdGFydCB0aW1lIEhIOk1NIGZvciBcIiVzXCI6ICIgKG1hdGNoLXN0 cmluZyAxKSkNCiAgICAgICAgICAgICAgICAgICAgICAiMDA6MDAiKSkNCiAgICAgICAgICAodW5s ZXNzIChzdHJpbmctbWF0Y2ggIl5bIF0qWzAxMl1bMC05XT86WzAtNV1bMC05XVsgXSokIiB0aW1l KQ0KICAgICAgICAgICAgKGVycm9yICJXcm9uZyBmb3JtYXQgZm9yIHRpbWU6ICVzICIgdGltZSkp DQogICAgICAgICAgKHVubGVzcyBlbmQtdGltZQ0KICAgICAgICAgICAgKGxldCAoKHJlc3AgKHJl YWQtc3RyaW5nICJTcGVjaWZ5IGVuZCB0aW1lIEhIOk1NIG9yIGR1cmF0aW9uIElOVCBtaW51dGVz OiAiDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlmICg+IG9yZy1jb25m bGljdC1kZWZhdWx0LWV2ZW50LWR1cmF0aW9uIDApDQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChmb3JtYXQgIiVkIiBvcmctY29uZmxpY3QtZGVmYXVsdC1ldmVudC1k dXJhdGlvbikNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWUpKSkp DQogICAgICAgICAgICAgIChpZiAoYW5kIChub3QgKHN0cmluZy1tYXRjaCAiOiIgcmVzcCkpDQog ICAgICAgICAgICAgICAgICAgICAgIChzdHJpbmctbWF0Y2ggIl5cXHMtKlxcKFswLTldK1xcKSIg cmVzcCkNCiAgICAgICAgICAgICAgICAgICAgICAgKD4gKHJlYWQgKG1hdGNoLXN0cmluZyAxIHJl c3ApKSAwKSkNCiAgICAgICAgICAgICAgICAgIChzZXRxIGVuZC10aW1lIChyZWFkIChtYXRjaC1z dHJpbmcgMSByZXNwKSkpDQogICAgICAgICAgICAgICAgKHByb2duDQogICAgICAgICAgICAgICAg ICAodW5sZXNzIChzdHJpbmctbWF0Y2ggIl5bIF0qWzAtOV1cXHsxLDJcXH06WzAtNV1bMC05XVsg XSokIiByZXNwKQ0KICAgICAgICAgICAgICAgICAgICAoZXJyb3IgIldyb25nIGZvcm1hdDogXCIl c1wiICIgcmVzcCkpDQogICAgICAgICAgICAgICAgICAodW5sZXNzIChzdHJpbmctZ3JlYXRlcnAg KHJlcGxhY2UtcmVnZXhwLWluLXN0cmluZyAiOiIgIiIgcmVzcCkNCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAocmVwbGFjZS1yZWdleHAtaW4tc3RyaW5nICI6IiAi IiB0aW1lKSkNCiAgICAgICAgICAgICAgICAgICAgKGVycm9yICJNYWxmb3JtZWQgZW5kIHRpbWUg JXM6IG11c3QgYmUgYWZ0ZXIgc3RhcnQgdGltZSAlcyIgcmVzcCB0aW1lKSkNCiAgICAgICAgICAg ICAgICAgIChzZXRxIGVuZC10aW1lIChjb25jYXQgZGF0ZSByZXNwKSkpKSkpDQogICAgICAgICAg KHNldHEgdGltZXMgKGxpc3QgKGRlY29kZS10aW1lIChvcmctcmVhZC1kYXRlIHQgdCAoY29uY2F0 IGRhdGUgdGltZSkpKSANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaWYgKHN0cmluZ3Ag ZW5kLXRpbWUpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNvZGUtdGltZSAo b3JnLXJlYWQtZGF0ZSB0IHQgZW5kLXRpbWUpKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZW5kLXRpbWUpKSkpKSkNCiAgICAoaWYgbWFya2VyLXBvc24NCiAgICAgICAgKHByb2duDQog ICAgICAgICAgKGdvdG8tY2hhciAoY2FyIG1hcmtlci1wb3NuKSkNCiAgICAgICAgICAocHV0LXRl eHQtcHJvcGVydHkgKHBvaW50KSAoMSsgKHBvaW50KSkgJ3NraXAtbWFya2Vycw0KICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAobWFwY2FyICdtYXJrZXItcG9zaXRpb24gbWFya2VyLXBvc24p KSkpDQogICAgKHB1dC10ZXh0LXByb3BlcnR5IChwb2ludCkgKDErIChwb2ludCkpICdyZXR1cm4t cG9zIHJldHVybi1wb3MpDQogICAgdGltZXMpKQ0KDQooZGVmdW4gb3JnLWNvbmZsaWN0LWdldC1j b25mbGljdHMgKHRpbWUgJm9wdGlvbmFsIHJhbmdlZW5kIHNraXAtcG9zbikNCiAgIkNvbXBpbGUg YSBsaXN0IG9mIGNvbmZsaWN0cyBmb3IgdGltZSBUSU1FLg0KDQpPcHRpb25hbCB0aW1lIFJBTkdF RU5EIGRldGVybWluZXMgZW5kIHRpbWUuICBMaXN0IFNLSVAtUE9TTg0KY29udGFpbnMgYnVmZmVy IHBvc2l0aW9ucyBvZiBpdGVtcyBub3QgYmUgaW5jbHVkZWQgaW4gdGhlIGNoZWNrcw0KXChlLmcu IHRoZSB0ZXN0ZXIgaXRlbVwpLg0KDQpJbmplY3RzIGEgdGVzdCBlbnRyeSBpbnRvIE9yZydzIGFn ZW5kYSB3b3JraW5ncyBhbmQgcGFyc2VzDQphZ2VuZGEgYnVmZmVycyBjb250YWluaW5nIGZvcm1h dC1jb250cm9sbGVkIGRheSBsaXN0aW5ncy4iDQogIChsZXQqICgod29yay1idWYtbmFtZSAiICpv cmcgZGF5IHNjaGVkdWxlKiIpDQogICAgICAgICAod29yay1idWYgKGdldC1idWZmZXItY3JlYXRl IHdvcmstYnVmLW5hbWUpKQ0KICAgICAgICAgKHRtcC1hZ2VuZGEtZmlsZSAob3JnLWNvbmZsaWN0 LXRlbXAtZmlsZSB0aW1lIHJhbmdlZW5kKSkNCiAgICAgICAgIChvcmctYWdlbmRhLWJ1ZmZlci1u YW1lIHdvcmstYnVmLW5hbWUpDQogICAgICAgICAob3JnLWFnZW5kYS10aW1lcmFuZ2UtbGVhZGVy cyAgJygiIiAiJWQvJWQiKSkNCiAgICAgICAgIChvcmctYWdlbmRhLXNjaGVkdWxlZC1sZWFkZXJz ICcoIiIgIiIpKQ0KICAgICAgICAgKGRlbGltICJ8IikNCiAgICAgICAgIChvcmctYWdlbmRhLXBy ZWZpeC1mb3JtYXQgKGNvbmNhdCAiJXMiIGRlbGltICIldCIgZGVsaW0gIiVjIiBkZWxpbSkpDQog ICAgICAgICAob3JnLWFnZW5kYS1jYXRlZ29yeS1pY29uLWFsaXN0IG5pbCkNCiAgICAgICAgIChv cmctYWdlbmRhLXBlcnNpc3RlbnQtZmlsdGVyIG5pbCkNCiAgICAgICAgIChvcmctcHJlZml4LWNh dGVnb3J5LW1heC1sZW5ndGggbmlsKQ0KICAgICAgICAgKG9yZy1hZ2VuZGEtcmVtb3ZlLXRhZ3Mg dCkNCiAgICAgICAgIChvcmctYWdlbmRhLXJlbW92ZS10aW1lcy13aGVuLWluLXByZWZpeCBuaWwp DQogICAgICAgICAob3JnLWFnZW5kYS1yZXBlYXRpbmctdGltZXN0YW1wLXNob3ctYWxsIHQpDQog ICAgICAgICAob3JnLWFnZW5kYS1za2lwLWFyY2hpdmVkLXRyZWVzIHQpDQogICAgICAgICAob3Jn LWFnZW5kYS1za2lwLWNvbW1lbnQtdHJlZXMgdCkNCiAgICAgICAgIChvcmctYWdlbmRhLWlnbm9y ZS1wcm9wZXJ0aWVzIG5pbCkNCiAgICAgICAgIChvcmctYWdlbmRhLXBlcnNpc3RlbnQtZmlsdGVy IG5pbCkNCiAgICAgICAgIChvcmctYWdlbmRhLWluY2x1ZGUtaW5hY3RpdmUtdGltZXN0YW1wcyBu aWwpDQogICAgICAgICAob3JnLWFnZW5kYS1za2lwLXRpbWVzdGFtcC1pZi1kb25lIHQpDQogICAg ICAgICAob3JnLWFnZW5kYS1za2lwLWNvbW1lbnQtdHJlZXMgdCkNCiAgICAgICAgIChvcmctYWdl bmRhLXVzZS10YWctaW5oZXJpdGFuY2UgbmlsKQ0KICAgICAgICAgKG9yZy1hZ2VuZGEtc3RpY2t5 IG5pbCkNCiAgICAgICAgICh0eXBlcyAnKDpkZWFkbGluZSogOnNjaGVkdWxlZCogOnRpbWVzdGFt cCA6c2V4cCkpDQogICAgICAgICAoYWdlbmRhLWZpbGVzIChhcHBlbmQgKG9yZy1hZ2VuZGEtZmls ZXMgdCBuaWwpIChsaXN0IHRtcC1hZ2VuZGEtZmlsZSkpKQ0KICAgICAgICAgKGRheW51bWJlcnMg KG51bWJlci1zZXF1ZW5jZSAodGltZS10by1kYXlzIChhcHBseSAjJ2VuY29kZS10aW1lIHRpbWUp KQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodGltZS10by1kYXlzIChh cHBseSAjJ2VuY29kZS10aW1lIChvciByYW5nZWVuZCB0aW1lKSkpKSkNCiAgICAgICAgIHRtcC1h Z2VuZGEtYnVmZmVyIGRheW51bSBkYXllbnRyaWVzIGFsbGVudHJpZXMgZmlsZXMgZmlsZSBkYXRl IGNvbmZsaWN0cykNCiAgICAob3IgKHNldHEgdG1wLWFnZW5kYS1idWZmZXIgKGZpbmQtZmlsZS1u b3NlbGVjdCB0bXAtYWdlbmRhLWZpbGUpKQ0KICAgICAgICAoZXJyb3IgIkNhbid0IG9wZW4gdGVt cCBmaWxlICVzISIgdG1wLWFnZW5kYS1maWxlKSkNCiAgICAodW53aW5kLXByb3RlY3QNCiAgICAg ICAgKHdpdGgtY3VycmVudC1idWZmZXIgd29yay1idWYNCiAgICAgICAgICAob3JnLWFnZW5kYS1w cmVwYXJlKQ0KICAgICAgICAgIChvcmctY29tcGlsZS1wcmVmaXgtZm9ybWF0IG5pbCkNCiAgICAg ICAgICAoY2F0Y2ggJ29uZmlyc3QNCiAgICAgICAgICAgICh3aGlsZSAoc2V0cSBkYXludW0gKHBv cCBkYXludW1iZXJzKSkNCiAgICAgICAgICAgICAgKHNldHEgZGF0ZSAoY2FsZW5kYXItZ3JlZ29y aWFuLWZyb20tYWJzb2x1dGUgZGF5bnVtKQ0KICAgICAgICAgICAgICAgICAgICBmaWxlcyBhZ2Vu ZGEtZmlsZXMNCiAgICAgICAgICAgICAgICAgICAgYWxsZW50cmllcyBuaWwpDQogICAgICAgICAg ICAgIChlcmFzZS1idWZmZXIpDQogICAgICAgICAgICAgICh3aGlsZSAoc2V0cSBmaWxlIChwb3Ag ZmlsZXMpKQ0KICAgICAgICAgICAgICAgIChjYXRjaCAnbmV4dGZpbGUNCiAgICAgICAgICAgICAg ICAgIChvcmctY2hlY2stYWdlbmRhLWZpbGUgZmlsZSkNCiAgICAgICAgICAgICAgICAgIChzZXRx IGRheWVudHJpZXMgKGFwcGx5ICdvcmctYWdlbmRhLWdldC1kYXktZW50cmllcyBmaWxlIGRhdGUg dHlwZXMpKQ0KICAgICAgICAgICAgICAgICAgKHNldHEgYWxsZW50cmllcyAoYXBwZW5kIGFsbGVu dHJpZXMgZGF5ZW50cmllcykpKSkNCiAgICAgICAgICAgICAgKGlmIGFsbGVudHJpZXMNCiAgICAg ICAgICAgICAgICAgIChwcm9nbg0KICAgICAgICAgICAgICAgICAgICAoaW5zZXJ0IChtYXBjb25j YXQgJ2lkZW50aXR5IGFsbGVudHJpZXMgIlxuIikgIlxuIikNCiAgICAgICAgICAgICAgICAgICAg KGlmIChzZXRxIGNvbmZsaWN0cyAob3JnLWNvbmZsaWN0LXBhcnNlLWRheWxpc3RpbmctZm9yLWNv bmZsaWN0cw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bXAtYWdl bmRhLWZpbGUgZGVsaW0gZGF5bnVtIHNraXAtcG9zbikpDQogICAgICAgICAgICAgICAgICAgICAg ICAodGhyb3cgJ29uZmlyc3QgdCkpKSkpKSkNCiAgICAgIChraWxsLWJ1ZmZlciB3b3JrLWJ1ZikN CiAgICAgIChraWxsLWJ1ZmZlciB0bXAtYWdlbmRhLWJ1ZmZlcikNCiAgICAgIChkZWxldGUtZmls ZSB0bXAtYWdlbmRhLWZpbGUpKQ0KICAgIGNvbmZsaWN0cykpDQoNCihkZWZ1biBvcmctY29uZmxp Y3QtcGFyc2UtZGF5bGlzdGluZy1mb3ItY29uZmxpY3RzICh0ZXN0ZXItaWQgZmllbGQtZGVsaW1p dGVyDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ZGF5LW51bWJlciBza2lwLWxpc3QpDQogICJQYXJzZSBhIGZvcm1hdC1jb250cm9sbGVkIGFnZW5k YSBkYXkgdmlldyB0byBkZXRlcm1pbmUgY29uZmxpY3RzLg0KUmVjb2duaXplIHRoZSB0ZXN0ZXIg aXRlbSBieSBpdHMgY2F0ZWdvcnkgVEVTVEVSLUlEIGFmdGVyDQpzcGxpdHRpbmcgbGluZXMgb24g RklFTEQtREVMSU1JVEVSLiAgVXNlcyBPcmcgREFZLU5VTUJFUiBmb3INCmluY2x1c2lvbiBpbiBy ZXR1cm5lZCBjb25mbGljdCBpdGVtcy4gIFVzZXMgYnVmZmVyIHBvc2l0aW9ucyBpbg0KU0tJUC1M SVNUIHRvIHNraXAgb3ZlciBlbnRyaWVzIChzdWNoIGFzIHRoZSB0ZXN0ZXIgaXRlbSkuDQoNClJl dHVybnMgbGlzdCBvZiBjb25mbGljdCBpdGVtcy4iDQogIChsZXQgKChlZmZlY3RpdmUtaW50ZXJ2 YWwgKGlmIChhbmQgb3JnLWNvbmZsaWN0LWV2ZW50LW1pbmltdW0taW50ZXJ2YWwNCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcnAgb3JnLWNvbmZsaWN0LWV2ZW50 LW1pbmltdW0taW50ZXJ2YWwpKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMS0g b3JnLWNvbmZsaWN0LWV2ZW50LW1pbmltdW0taW50ZXJ2YWwpDQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAtMSkpDQogICAgICAgIGZpZWxkcyBzcGFucyB0ZXN0ZXItc3RhcnQgdGVzdGVy LWVuZCB0ZXN0ZXItY2F0ZWdvcnkpDQogICAgKGdvdG8tY2hhciAocG9pbnQtbWluKSkNCiAgICAo d2hpbGUgKG5vdCAoZW9icCkpDQogICAgICAobGV0IChtYXJrZXIgc3RhcnQgZW5kIHJhbmdlIHRp bWUgY2F0ZWdvcnkgaGVhZGxpbmUgc3BhbiBzZXFubyBzZXF0b3RhbCBzZXFzdGFydCBzZXFlbmQp DQogICAgICAgIChzZXRxIGZpZWxkcyAoc3BsaXQtc3RyaW5nIChidWZmZXItc3Vic3RyaW5nLW5v LXByb3BlcnRpZXMgKHBvaW50LWF0LWJvbCkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocG9pbnQtYXQtZW9sKSkNCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQtZGVsaW1pdGVyIG5pbCAiICsi KQ0KICAgICAgICAgICAgICBtYXJrZXIgKGdldC10ZXh0LXByb3BlcnR5IChwb2ludC1hdC1ib2wp ICdvcmctbWFya2VyKQ0KICAgICAgICAgICAgICByYW5nZSAobnRoIDAgZmllbGRzKQ0KICAgICAg ICAgICAgICB0aW1lIChudGggMSBmaWVsZHMpDQogICAgICAgICAgICAgIGNhdGVnb3J5ICAobnRo IDIgZmllbGRzKQ0KICAgICAgICAgICAgICBoZWFkbGluZSAoaWYgKG50aCA0IGZpZWxkcykgOyBo ZWFkbGluZSBjb250YWluZWQgZGVsaW1pdGVyDQogICAgICAgICAgICAgICAgICAgICAgICAgICAo bWFwY29uY2F0IChsYW1iZGEgKG4pDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKG50aCBuIGZpZWxkcykpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIChudW1iZXItc2VxdWVuY2UgMyAoMS0gKGxlbmd0aCBmaWVsZHMpKSkNCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbmNhdCAiICIgZmllbGQtZGVsaW1pdGVyICIg IikpDQogICAgICAgICAgICAgICAgICAgICAgICAgKG50aCAzIGZpZWxkcykpKQ0KICAgICAgICAo aWYgKGFuZCBjYXRlZ29yeQ0KICAgICAgICAgICAgICAgICB0aW1lDQogICAgICAgICAgICAgICAg IChub3QgKGVxdWFsIGNhdGVnb3J5ICIiKSkNCiAgICAgICAgICAgICAgICAgKHN0cmluZy1tYXRj aCAiXFxgXFwoWzAtOV1bMC05XT9cXCk6XFwoWzAtOV1bMC05XVxcKVxcKC4rXFwpIiB0aW1lKSkN CiAgICAgICAgICAgIChzZXRxIHN0YXJ0ICgrICgqIChzdHJpbmctdG8tbnVtYmVyIChtYXRjaC1z dHJpbmcgMSB0aW1lKSkgNjApDQogICAgICAgICAgICAgICAgICAgICAgICAgICAoc3RyaW5nLXRv LW51bWJlciAobWF0Y2gtc3RyaW5nIDIgdGltZSkpKQ0KICAgICAgICAgICAgICAgICAgZW5kIChp ZiAoZXF1YWwgKGFyZWYgKG1hdGNoLXN0cmluZyAzIHRpbWUpIDApID8tKQ0KICAgICAgICAgICAg ICAgICAgICAgICAgICAoKyAoKiAoc3RyaW5nLXRvLW51bWJlciAoc3Vic3RyaW5nIChtYXRjaC1z dHJpbmcgMyB0aW1lKSAxIDMpKSA2MCkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN0 cmluZy10by1udW1iZXIgKHN1YnN0cmluZyAobWF0Y2gtc3RyaW5nIDMgdGltZSkgNCA2KSkpDQog ICAgICAgICAgICAgICAgICAgICAgICBuaWwpKSkNCiAgICAgICAgOzsgT3JnIGRvZXNuJ3Qgc2Vl bSB0byBpbnRlcnByZXQgdGltZXN0YW1wcyBpbnRlbmRpbmcgdG8NCiAgICAgICAgOzsgZW5jb2Rl IGFuIG92ZXJuaWdodCByZXBlYXRlciBzdWNoIGFzIDwxOTk5LTA1LTA2IE1vIDE1OjAwLTEwOjAw ICsxZD4NCiAgICAgICAgOzsgVGh1cyB3ZSBzcGxpdCB0aGUgZW50cnkgYW5kIGNyZWF0ZSBhIHZp cnR1YWwgc2VxdWVuY2UuDQogICAgICAgIChpZiAoYW5kIHN0YXJ0IGVuZA0KICAgICAgICAgICAg ICAgICAoPiBzdGFydCBlbmQpDQogICAgICAgICAgICAgICAgIChub3QgKHN0cmluZz0gY2F0ZWdv cnkgdGVzdGVyLWlkKSkpDQogICAgICAgICAgICAoc2F2ZS1leGN1cnNpb24NCiAgICAgICAgICAg ICAgKHNldHEgZW5kIDE0NDApDQogICAgICAgICAgICAgIChmb3J3YXJkLWxpbmUgMSkNCiAgICAg ICAgICAgICAgKGluc2VydCAocHJvcGVydGl6ZSAoZm9ybWF0ICIyLzJ8JXMlc3wlc3wlc1xuIg0K ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN1YnN0cmluZyAobWF0 Y2gtc3RyaW5nIDMgdGltZSkgMSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChtYXRjaC1zdHJpbmcgMyB0aW1lKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgY2F0ZWdvcnkgaGVhZGxpbmUpDQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgJ29yZy1tYXJrZXIgbWFya2VyKSkpKQ0KICAgICAgICAod2hlbiAoc3RyaW5n LW1hdGNoICJcXGBcXChbMC05XStcXCkvXFwoWzAtOV0rXFwpIiByYW5nZSkNCiAgICAgICAgICAo c2V0cSBzZXFubyAocmVhZCAobWF0Y2gtc3RyaW5nIDEgcmFuZ2UpKQ0KICAgICAgICAgICAgICAg IHNlcXRvdGFsIChyZWFkIChtYXRjaC1zdHJpbmcgMiByYW5nZSkpDQogICAgICAgICAgICAgICAg c2Vxc3RhcnQgKGFuZCAoPSBzZXFubyAxKSBzdGFydCkNCiAgICAgICAgICAgICAgICBzZXFlbmQg KGFuZCAoPSBzZXFubyBzZXF0b3RhbCkgc3RhcnQpKSkNCiAgICAgICAgKGNvbmQgKChhbmQgc2tp cC1saXN0DQogICAgICAgICAgICAgICAgICAgIChnZXQtdGV4dC1wcm9wZXJ0eSAocG9pbnQtYXQt Ym9sKSAnb3JnLW1hcmtlcikNCiAgICAgICAgICAgICAgICAgICAgKG1lbXEgKG1hcmtlci1wb3Np dGlvbiAoZ2V0LXRleHQtcHJvcGVydHkgKHBvaW50LWF0LWJvbCkgJ29yZy1tYXJrZXIpKQ0KICAg ICAgICAgICAgICAgICAgICAgICAgICBza2lwLWxpc3QpKQ0KICAgICAgICAgICAgICAgbmlsKQ0K ICAgICAgICAgICAgICAoKGFuZCAobm90IHRlc3Rlci1zdGFydCkNCiAgICAgICAgICAgICAgICAg ICAgKHN0cmluZz0gY2F0ZWdvcnkgdGVzdGVyLWlkKSkNCiAgICAgICAgICAgICAgIChzZXRxIHRl c3Rlci1zdGFydCAoaWYgc2Vxbm8gKG9yIHNlcXN0YXJ0IDApIChvciBzdGFydCAwKSkNCiAgICAg ICAgICAgICAgICAgICAgIHRlc3Rlci1lbmQgKGlmIHNlcW5vIChvciBzZXFlbmQgMTQ0MCkgKG9y IGVuZCAxNDQwKSkNCiAgICAgICAgICAgICAgICAgICAgIHRlc3Rlci1jYXRlZ29yeSBjYXRlZ29y eSkpDQogICAgICAgICAgICAgICgoYW5kIHNlcW5vDQogICAgICAgICAgICAgICAgICAgIChub3Qg KGVxdWFsIGNhdGVnb3J5IHRlc3Rlci1jYXRlZ29yeSkpKQ0KICAgICAgICAgICAgICAgKGlmIHNl cXN0YXJ0DQogICAgICAgICAgICAgICAgICAgKHNldHEgc3BhbiAoY29ucyBzZXFzdGFydCAxNDQw KSkNCiAgICAgICAgICAgICAgICAgKGlmIHNlcWVuZA0KICAgICAgICAgICAgICAgICAgICAgKHNl dHEgc3BhbiAoY29ucyAwIHNlcWVuZCkpDQogICAgICAgICAgICAgICAgICAgKHNldHEgc3BhbiAo Y29ucyAwIDE0NDApKSkpKQ0KICAgICAgICAgICAgICAoZW5kDQogICAgICAgICAgICAgICAoc2V0 cSBzcGFuIChjb25zIHN0YXJ0IGVuZCkpKSkNCiAgICAgICAgKHdoZW4gc3Bhbg0KICAgICAgICAg IChsZXQqICgoY2FsLWRhdGUgKGNhbGVuZGFyLWdyZWdvcmlhbi1mcm9tLWFic29sdXRlIGRheS1u dW1iZXIpKQ0KICAgICAgICAgICAgICAgICAoZGF5IChjYWRyIGNhbC1kYXRlKSkNCiAgICAgICAg ICAgICAgICAgKG1vbiAoY2FyIGNhbC1kYXRlKSkNCiAgICAgICAgICAgICAgICAgKHllYXIgKG50 aCAyIGNhbC1kYXRlKSkNCiAgICAgICAgICAgICAgICAgKHN0YXJ0aCAoLyAoY2FyIHNwYW4pIDYw KSkNCiAgICAgICAgICAgICAgICAgKHN0YXJ0bSAoJSAoY2FyIHNwYW4pIDYwKSkNCiAgICAgICAg ICAgICAgICAgKGVuZGggKC8gKGNkciBzcGFuKSA2MCkpDQogICAgICAgICAgICAgICAgIChlbmRt ICglIChjZHIgc3BhbikgNjApKQ0KICAgICAgICAgICAgICAgICAoZGlzcGxheS1zdHJpbmcgKGZv cm1hdCAiJWQgJXMgJWQgJWQ6JTAyZC0lZDolMDJkLCAlcyINCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZGF5IChjYWxlbmRhci1tb250aC1uYW1lIG1vbikgeWVhcg0K ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydGggc3RhcnRtIA0K ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRoIGVuZG0gDQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRsaW5lKSkpDQogICAgICAg ICAgICAoc2V0cSBzcGFucw0KICAgICAgICAgICAgICAgICAgKGFwcGVuZCBzcGFucw0KICAgICAg ICAgICAgICAgICAgICAgICAgICAobGlzdA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxp c3Qgc3Bhbg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF5LW51bWJlcg0KICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxpc3QgMCBzdGFydG0gc3RhcnRoIGRheSBt b24geWVhcikNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsaXN0IDAgZW5kbSBl bmRoIGRheSBtb24geWVhcikNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3Bs YXktc3RyaW5nDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJrZXINCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhbmQgc2Vxbm8gKGNvbnMgc2Vxbm8gc2VxdG90 YWwpKSkpKSkpKSkNCiAgICAgIChmb3J3YXJkLWxpbmUgMSkpDQogICAgKHVubGVzcyB0ZXN0ZXIt c3RhcnQNCiAgICAgIChlcnJvciAiQ2Fubm90IGZpbmQgdGVzdCBlbnRyeSBpbiBkYXkgdmlldywg ZXhwZWN0ZWQgY2F0ZWdvcnkgXCIlc1wiIiB0ZXN0ZXItaWQpKQ0KICAgIChkZWxxIG5pbA0KICAg ICAgICAgIChtYXBjYXIgDQogICAgICAgICAgIChsYW1iZGEgKHNwYW4pDQogICAgICAgICAgICAg KGxldCogKChzIChjYWFyIHNwYW4pKQ0KICAgICAgICAgICAgICAgICAgICAoZSAoY2RhciBzcGFu KSkNCiAgICAgICAgICAgICAgICAgICAgKHNlcSAobnRoIDYgc3BhbikpDQogICAgICAgICAgICAg ICAgICAgIChwcmUtZ2FwIChpZiAoYW5kIHNlcSAoLz0gKGNhciBzZXEpIDEpKQ0KICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgLTEgICA7IG5vIGdhcCBhZnRlciBzZXF1ZW5jZSBlbmQN CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlZmZlY3RpdmUtaW50ZXJ2YWwpKQ0KICAg ICAgICAgICAgICAgICAgICAocG9zdC1nYXAgKGlmIChhbmQgc2VxICg9IChjYXIgc2VxKSAxKSkN CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtMSAgOyBubyBnYXAgYmVmb3JlIHNl cXVlbmNlIHN0YXJ0DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVmZmVjdGl2ZS1p bnRlcnZhbCkpDQogICAgICAgICAgICAgICAgICAgIChzdGFydCAoLSB0ZXN0ZXItc3RhcnQgcHJl LWdhcCkpDQogICAgICAgICAgICAgICAgICAgIChlbmQgKCsgdGVzdGVyLWVuZCBwb3N0LWdhcCkp KQ0KICAgICAgICAgICAgICAgKGlmIChvciAoYW5kICg+PSBzdGFydCBzKSAoPD0gc3RhcnQgZSkp IA0KICAgICAgICAgICAgICAgICAgICAgICAoYW5kICg8PSBzdGFydCBzKSAoPj0gZW5kIHMpICg8 PSBlbmQgZSkpDQogICAgICAgICAgICAgICAgICAgICAgIChhbmQgKDw9IHN0YXJ0IHMpICg+PSBl bmQgZSkpKQ0KICAgICAgICAgICAgICAgICAgIChzZXRjZHIgc3BhbiAoY2RyIHNwYW4pKQ0KICAg ICAgICAgICAgICAgICBuaWwpKSkNCiAgICAgICAgICAgc3BhbnMpKSkpDQoNCihkZWZ1biBvcmct Y29uZmxpY3Qtc29ydC1jb25mbGljdHMgKGNvbmZsaWN0cyBudGggJm9wdGlvbmFsIHByZWQpDQog ICJTb3J0IGNvbmZsaWN0cyBDT05GTElDVFMgYnkgY29tcGFyaW5nIHRoZWlyIE5USCBmaWVsZC4N CkNvbXBhcmlzb24gbWF5IHVzZSBvcHRpb25hbCBwcmVkaWNhdGUgUFJFRCwgZGVmYXVsdHMgdG8g Iyc8LiINCiAgKGxldCAoKHByZWRpY2F0ZSAob3IgcHJlZCAjJzwpKSkNCiAgICAoc29ydCBjb25m bGljdHMNCiAgICAgICAgICAjJyhsYW1iZGEgKGEgYikNCiAgICAgICAgICAgICAgKGZ1bmNhbGwg cHJlZGljYXRlDQogICAgICAgICAgICAgICAgICAgICAgICh0aW1lLXRvLXNlY29uZHMgKGFwcGx5 ICMnZW5jb2RlLXRpbWUgKG50aCBudGggYSkpKQ0KICAgICAgICAgICAgICAgICAgICAgICAodGlt ZS10by1zZWNvbmRzIChhcHBseSAjJ2VuY29kZS10aW1lIChudGggbnRoIGIpKSkpKSkpKQ0KDQoo ZGVmdW4gb3JnLWNvbmZsaWN0LXRlbXAtZmlsZSAodGltZSAmb3B0aW9uYWwgcmFuZ2VlbmQgdWlk IGhlYWRpbmcpDQogICJDcmVhdGVzIGEgdGVtcG9yYXJ5IGZpbGUgY29udGFpbmluZyBhbiBpdGVt IHRvIGJlIGluamVjdGVkLg0KSXRlbSB3aWxsIHJlY2VpdmUgY2F0ZWdvcnkgVUlEIGFuZCBhIHRp bWVzdGFtcCBlbmNvZGluZyB0aW1lIFRJTUUNCmFuZCB0aW1lIFJBTkdFRU5ELiAgTWF5IGNhcnJ5 IHRoZSBvcHRpb25hbCBoZWFkaW5nIEhFQURJTkcuDQoNClJldHVybnMgbmFtZSBvZiB0ZW1wIGZp bGUuIg0KICAobGV0KiAoKHRtcC1hZ2VuZGEtZmlsZSAob3JnLWJhYmVsLXRlbXAtZmlsZSAiYWdl bmRhLWNvbmZsaWN0LSIgIi5vcmciKSkNCiAgICAgICAgICh1aWQgKG9yIHVpZCB0bXAtYWdlbmRh LWZpbGUpKQ0KICAgICAgICAgKHRtcC1hZ2VuZGEtaXRlbSAob3JnLWNvbmZsaWN0LWNyZWF0ZS1j b25mbGljdC1pdGVtIHVpZCB0aW1lIHJhbmdlZW5kIGhlYWRpbmcpKSkNCiAgICAod2l0aC10ZW1w LWZpbGUgdG1wLWFnZW5kYS1maWxlIChpbnNlcnQgdG1wLWFnZW5kYS1pdGVtKSkNCiAgICB0bXAt YWdlbmRhLWZpbGUpKQ0KDQooZGVmdW4gb3JnLWNvbmZsaWN0LWNyZWF0ZS1jb25mbGljdC1pdGVt ICh1aWQgdGltZSAmb3B0aW9uYWwgZW5kdGltZSBoZWFkaW5nKSANCiAgIlJldHVybiBhbiBPcmcg aXRlbSB3aXRoIGNhdGVnb3J5IFVJRCBmb3IgdGltZSBUSU1FIGFuZCB0aW1lIEVORFRJTUUuDQpU aGlzIHRlc3QgaXRlbSB3aWxsIGJlIHNhdmVkIHRvIGEgZmlsZSB0byBiZSB0ZW1wb3JhcmlseSBp bmNsdWRlZA0KaW4gdGhlIGxpc3Qgb2YgT3JnIGFnZW5kYSBmaWxlcy4iDQogIChmb3JtYXQgIiog JXNcblNDSEVEVUxFRDogJXNcbjpQUk9QRVJUSUVTOlxuOkNBVEVHT1JZOiAlc1xuOkVORDpcbiIN CiAgICAgICAgICAob3IgaGVhZGluZyAiY29uZmxpY3QgdGVzdGVyIikNCiAgICAgICAgICAob3Jn LWNvbmZsaWN0LW1ha2UtdGltZXN0YW1wLW9yLXJhbmdlIHRpbWUgZW5kdGltZSkNCiAgICAgICAg ICB1aWQpKQ0KDQooZGVmdW4gb3JnLWNvbmZsaWN0LW1ha2UtdGltZXN0YW1wLW9yLXJhbmdlICh0 aW1lICZvcHRpb25hbCBlbmR0aW1lKQ0KICAiUmV0dXJuIGFuIE9yZyB0aW1lc3RhbXAgb3IgLXJh bmdlIGZvciB0aW1lIFRJTUUgYW5kIHRpbWUgRU5EVElNRS4iDQogIChmb3JtYXQgIjwlZC0lMDJk LSUwMmQgJXMgJTAyZDolMDJkJXMiDQogICAgICAgICAgKG50aCA1IHRpbWUpIChudGggNCB0aW1l KSAobnRoIDMgdGltZSkNCiAgICAgICAgICAoZm9ybWF0LXRpbWUtc3RyaW5nICIlYSIgKGFwcGx5 ICMnZW5jb2RlLXRpbWUgdGltZSkpDQogICAgICAgICAgKG50aCAyIHRpbWUpIChudGggMSB0aW1l KQ0KICAgICAgICAgIChpZiAobm90IGVuZHRpbWUpDQogICAgICAgICAgICAgICI+Ig0KICAgICAg ICAgICAgKGlmIChvciAoLz0gKG50aCA1IGVuZHRpbWUpIChudGggNSB0aW1lKSkNCiAgICAgICAg ICAgICAgICAgICAgKC89IChudGggNCBlbmR0aW1lKSAobnRoIDQgdGltZSkpDQogICAgICAgICAg ICAgICAgICAgICgvPSAobnRoIDMgZW5kdGltZSkgKG50aCAzIHRpbWUpKSkNCiAgICAgICAgICAg ICAgICAoZm9ybWF0ICI+LS08JWQtJTAyZC0lMDJkICVzICUwMmQ6JTAyZD4iDQogICAgICAgICAg ICAgICAgICAgICAgICAobnRoIDUgZW5kdGltZSkgKG50aCA0IGVuZHRpbWUpIChudGggMyBlbmR0 aW1lKQ0KICAgICAgICAgICAgICAgICAgICAgICAgKGZvcm1hdC10aW1lLXN0cmluZyAiJWEiIChh cHBseSAjJ2VuY29kZS10aW1lIGVuZHRpbWUpKQ0KICAgICAgICAgICAgICAgICAgICAgICAgKG50 aCAyIGVuZHRpbWUpIChudGggMSBlbmR0aW1lKSkNCiAgICAgICAgICAgICAgKGlmIChhbmQgKD0g KG50aCAxIGVuZHRpbWUpIChudGggMSB0aW1lKSkNCiAgICAgICAgICAgICAgICAgICAgICAgKD0g KG50aCAyIGVuZHRpbWUpIChudGggMiB0aW1lKSkpDQogICAgICAgICAgICAgICAgICAiPiINCiAg ICAgICAgICAgICAgICAoZm9ybWF0ICItJTAyZDolMDJkPiIgKG50aCAyIGVuZHRpbWUpIChudGgg MSBlbmR0aW1lKSkpKSkpKQ0KDQooZGVmdW4gb3JnLWNvbmZsaWN0LWFkanVzdC1mb3ItZGVmYXVs dC1kdXJhdGlvbiAodGltZSkNCiAgIkFwcGx5IGEgZGVmYXVsdCBkdXJhdGlvbiB0byBhIHJhbmdl bGVzcyB0aW1lIFRJTUUuDQpUaGlzIHVzZXMgdGhlIHVzZXIgdmFyaWFibGUgJ29yZy1jb25mbGlj dC1kZWZhdWx0LWV2ZW50LWR1cmF0aW9uDQp3aGVuIHNldCB0byBhIHZhbHVlIGdyZWF0ZXIgdGhh biAwLiAgT3RoZXJ3aXNlLCBwcm9tcHQgdXNlci4iDQogIChsZXQgKChkZWZhdWx0IChhbmQgb3Jn LWNvbmZsaWN0LWRlZmF1bHQtZXZlbnQtZHVyYXRpb24gOyBkeW5hbWljYWxseSBzY29wZWQNCiAg ICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcnAgb3JnLWNvbmZsaWN0LWRlZmF1bHQtZXZlbnQt ZHVyYXRpb24pDQogICAgICAgICAgICAgICAgICAgICAgKD4gb3JnLWNvbmZsaWN0LWRlZmF1bHQt ZXZlbnQtZHVyYXRpb24gMCkNCiAgICAgICAgICAgICAgICAgICAgICBvcmctY29uZmxpY3QtZGVm YXVsdC1ldmVudC1kdXJhdGlvbikpKQ0KICAgIChpZiBkZWZhdWx0DQogICAgICAgIChvcmctY29u ZmxpY3QtdGltZS1hZGQgdGltZSAoKiA2MCBkZWZhdWx0KSkNCiAgICAgIChsZXQgKChtaW5zIDAp DQogICAgICAgICAgICAoZmFjdG9ycyAnKCgibSIgLiAxKSAoImgiIC4gNjApICgiZCIgLiAxNDQw KSkpDQogICAgICAgICAgICByZXNwKQ0KICAgICAgICAod2hpbGUgKDw9IG1pbnMgMCkNCiAgICAg ICAgICAoc2V0cSByZXNwIChyZWFkLXN0cmluZyAiU3BlY2lmeSBhIGR1cmF0aW9uLCBpbiBtaW51 dGVzIE4sIGhvdXJzIE5oIG9yIGRheXMgTmQ6ICIpKQ0KICAgICAgICAgIChpZiAoc3RyaW5nLW1h dGNoICJeXFxzLSpcXChbMC05XStcXChcXC5bMC05XStcXCk/XFwpXFwoW21kaF1cXCkiIHJlc3Ap DQogICAgICAgICAgICAgIChzZXRxIHJlc3AgKCsgKCogKGNkciAoYXNzb2MgKG1hdGNoLXN0cmlu ZyAzIHJlc3ApIGZhY3RvcnMpKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZWFkICht YXRjaC1zdHJpbmcgMSByZXNwKSkpDQogICAgICAgICAgICAgICAgICAgICAgICAgKGlmIChtYXRj aC1zdHJpbmcgMiByZXNwKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAoY2RyIChh c3NvYyAobWF0Y2gtc3RyaW5nIDMgcmVzcCkgZmFjdG9ycykpDQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChyZWFkIChtYXRjaC1zdHJpbmcgMiByZXNwKSkpDQogICAgICAgICAgICAg ICAgICAgICAgICAgICAwKSkpDQogICAgICAgICAgICAoc2V0cSByZXNwIChyZWFkIHJlc3ApKSkN CiAgICAgICAgICAoYW5kIChudW1iZXJwIHJlc3ApDQogICAgICAgICAgICAgICAoc2V0cSBtaW5z ICh0cnVuY2F0ZSByZXNwKSkpKQ0KICAgICAgICAob3JnLWNvbmZsaWN0LXRpbWUtYWRkIHRpbWUg KCogNjAgcmVzcCkpKSkpKQ0KDQooZGVmdW4gb3JnLWNvbmZsaWN0LXRpbWUtcCAoYXJnKQ0KICAi UmV0dXJuIHQgaWYgQVJHIGxvb2tzIGxpa2UgYSB2YWxpZCB0aW1lIHZhbHVlLiINCiAgKG9yIChh bmQgKGxpc3RwIGFyZykNCiAgICAgICAgICAgKD49IChsZW5ndGggYXJnKSA2KQ0KICAgICAgICAg ICAobm90IChtZW1xIG5pbCAobWFwY2FyICdpbnRlZ2VycCAoc2VxLXRha2UgYXJnIDYpKSkpKQ0K ICAgICAgKGVycm9yICJOb3QgYSB0aW1lIHZhbHVlOiAlUyIgYXJnKSkpDQoNCihkZWZ1biBvcmct Y29uZmxpY3QtdGltZS1hZGQgKHRpbWUgc2Vjb25kcykNCiAgIlJldHVybnMgdGltZSBUSU1FIGFk anVzdGVkIGJ5IHNlY29uZHMgU0VDT05EUy4iDQogIChkZWNvZGUtdGltZQ0KICAgKHRpbWUtYWRk IHNlY29uZHMNCiAgICAgICAgICAgICAodGltZS10by1zZWNvbmRzIChhcHBseSAjJ2VuY29kZS10 aW1lIHRpbWUpKSkpKQ0KDQooZGVmdW4gb3JnLWNvbmZsaWN0LWFnZW5kYS1saXN0ICh0aW1lICZv cHRpb25hbCBmaWxlLXRvLWluamVjdCBza2lwLW1hcmtlci1wb3NuKQ0KICAiUnVuIGBvcmctYWdl bmRhLWxpc3QnIGZvciB0aGUgZGF5IG9mIHRpbWUgVElNRS4NClRlbXBvcmFyaWx5IGFkZCBmaWxl IEZJTEUtVE8tSU5KRUNUIHRvIHRoZSBsaXN0IG9mIGFnZW5kYSBmaWxlcy4NClNldCB1cCBhIGBv cmctYWdlbmRhLXNraXAtZnVuY3Rpb24nIHdpdGggcG9zaXRpb25zIGluIGxpc3QNClNLSVAtTUFS S0VSLVBPU04uIg0KICAobGV0ICgob3JnLWFnZW5kYS1za2lwLWZ1bmN0aW9uDQogICAgICAgICAo YW5kIHNraXAtbWFya2VyLXBvc24NCiAgICAgICAgICAgICAgYChvcmctY29uZmxpY3QtYWdlbmRh LXNraXAtZnVuY3Rpb24gJygsQHNraXAtbWFya2VyLXBvc24pKSkpKQ0KICAgIChzZXRxIG9yZy1j b25mbGljdC1yZXNvbHV0aW9uLWFnZW5kYS1idWZmZXIgIipPcmcgQ29uZmxpY3QgQWdlbmRhKiIN CiAgICAgICAgICBvcmctYWdlbmRhLWJ1ZmZlci10bXAtbmFtZSBvcmctY29uZmxpY3QtcmVzb2x1 dGlvbi1hZ2VuZGEtYnVmZmVyKQ0KICAgIChtZXNzYWdlICJjb21waWxpbmcgYWdlbmRhIGRheSB2 aWV3Li4uIikNCiAgICAoaWYgKG5vdCBmaWxlLXRvLWluamVjdCkNCiAgICAgICAgKG9yZy1hZ2Vu ZGEtbGlzdCBuaWwgKHRpbWUtdG8tZGF5cyAoYXBwbHkgIydlbmNvZGUtdGltZSB0aW1lKSkgJ2Rh eSB0KQ0KICAgICAgOzsgdGhlc2UgYG9yZy1hZ2VuZGEtZmlsZXMnIG9wdGlvbnMgT0sgdG8gdXNl Pw0KICAgICAgKGxldCAoKG9yZy1hZ2VuZGEtZmlsZXMgKGFwcGVuZCAob3JnLWFnZW5kYS1maWxl cyB0IG5pbCkgKGxpc3QgZmlsZS10by1pbmplY3QpKSkNCiAgICAgICAgICAgIHRtcC1hZ2VuZGEt YnVmZmVyKQ0KICAgICAgICAodW53aW5kLXByb3RlY3QNCiAgICAgICAgICAgIChvcmctYWdlbmRh LWxpc3QgbmlsICh0aW1lLXRvLWRheXMgKGFwcGx5ICMnZW5jb2RlLXRpbWUgdGltZSkpICdkYXkg dCkNCiAgICAgICAgICAoaWYgKHNldHEgdG1wLWFnZW5kYS1idWZmZXIgKGZpbmQtYnVmZmVyLXZp c2l0aW5nIGZpbGUtdG8taW5qZWN0KSkNCiAgICAgICAgICAgICAgKHByb2duDQogICAgICAgICAg ICAgICAgKGtpbGwtYnVmZmVyIHRtcC1hZ2VuZGEtYnVmZmVyKQ0KICAgICAgICAgICAgICAgIChk ZWxldGUtZmlsZSBmaWxlLXRvLWluamVjdCkpKSkpKQ0KICAgIChtZXNzYWdlICJjb21waWxpbmcg YWdlbmRhIGRheSB2aWV3Li4uZG9uZSIpKSkNCg0KKGRlZnVuIG9yZy1jb25mbGljdC1hZ2VuZGEt c2tpcC1mdW5jdGlvbiAocG9zbikNCiAgIlNraXAgZW50cmllcyBjb250YWluaW5nIHRpbWVzdGFt cHMgYXQgYnVmZmVyIHBvc2l0aW9ucyBQT1NOLiINCiAgOzsgdGhpcyBpcyBjYWxsZWQgb25seSB3 aGVuIGNvbGxlY3RpbmcgZm9yIG91ciBwcml2YXRlIGRheSB2aWV3DQogIChzYXZlLWV4Y3Vyc2lv bg0KICAgIChzYXZlLW1hdGNoLWRhdGENCiAgICAgIChmb3J3YXJkLWNoYXIgLTEpDQogICAgICAo aWYgKGFuZCAob3IgKG9yZy1hdC1kYXRlLXJhbmdlLXAgJ2xheCkgKG9yZy1hdC10aW1lc3RhbXAt cCAnbGF4KSkNCiAgICAgICAgICAgICAgIChtZW1xIChjYXIgKG1hdGNoLWRhdGEgdCkpIHBvc24p KQ0KICAgICAgICAgICAgKGNhZHIgKG1hdGNoLWRhdGEgdCkpDQogICAgICAgIG5pbCkpKSkNCg0K KGRlZnVuIG9yZy1jb25mbGljdC1hZ2VuZGEtcXVpdCAoKQ0KICAiS2lsbCBwcml2YXRlIGFnZW5k YSBidWZmZXIgd2l0aCBgb3JnLWFnZW5kYS1xdWl0Jy4NClJlc3RvcmVzIGFnZW5kYSBidWZmZXIg bmFtZSBhbmQgcHJlLWNvbmZsaWN0IHdpbmRvdw0KY29uZmlndXJhdGlvbi4iDQogICh3aGVuIChh bmQgb3JnLWNvbmZsaWN0LXJlc29sdXRpb24tYWdlbmRhLWJ1ZmZlcg0KICAgICAgICAgICAgIChn ZXQtYnVmZmVyIG9yZy1jb25mbGljdC1yZXNvbHV0aW9uLWFnZW5kYS1idWZmZXIpKQ0KICAgIChs ZXQgKChvcmctYWdlbmRhLXN0aWNreSBuaWwpKQ0KICAgICAgKHNldC1idWZmZXIgb3JnLWNvbmZs aWN0LXJlc29sdXRpb24tYWdlbmRhLWJ1ZmZlcikNCiAgICAgIChzZXRxIG9yZy1jb25mbGljdC1y ZXNvbHV0aW9uLWFnZW5kYS1idWZmZXIgbmlsKQ0KICAgICAgKHdoZW4gb3JnLWNvbmZsaWN0LWFn ZW5kYS1idWZmZXItbmFtZS1jYWNoZQ0KICAgICAgICAoc2V0cSBvcmctYWdlbmRhLWJ1ZmZlci10 bXAtbmFtZSBvcmctY29uZmxpY3QtYWdlbmRhLWJ1ZmZlci1uYW1lLWNhY2hlDQogICAgICAgICAg ICAgIG9yZy1jb25mbGljdC1hZ2VuZGEtYnVmZmVyLW5hbWUtY2FjaGUgbmlsKSkNCiAgICAgIChj YWxsLWludGVyYWN0aXZlbHkgIydvcmctYWdlbmRhLXF1aXQpDQogICAgICA7OyBoYXZlIHRvIHJl c3RvcmUgd2luZG93cyBvdXJzZWx2ZXM6IHNldHRpbmcNCiAgICAgIDs7ICdvcmctYWdlbmRhLXJl c3RvcmUtd2luZG93cy1hZnRlci1xdWl0IHdvbid0IGRvIGFzDQogICAgICA7OyBzd2l0Y2hpbmcg YmV0d2VlbiBkaXNwbGF5IGFnZW5kYSBhbmQgcHJldmlldyBhZ2VuZGEgbWVzc2VzDQogICAgICA7 OyB1cCAnb3JnLWFnZW5kYS1wcmUtd2luZG93LWNvbmYNCiAgICAgICh3aGVuIG9yZy1jb25mbGlj dC13aW5kb3ctY29uZg0KICAgICAgICAoc2V0LXdpbmRvdy1jb25maWd1cmF0aW9uIG9yZy1jb25m bGljdC13aW5kb3ctY29uZikNCiAgICAgICAgKHNldHEgb3JnLWNvbmZsaWN0LXdpbmRvdy1jb25m IG5pbCkpKSkpDQoNCihkZWZ1biBvcmctY29uZmxpY3QtcmVzdHJpY3Rpb24tcCAoJm9wdGlvbmFs IHJldHVybi1hcy1zdHJpbmcgc2VwKQ0KICAiUmV0dXJuIGFnZW5kYSByZXN0cmljdGlvbiBzdGF0 dXMuDQpJZiBmbGFnIFJFVFVSTi1BUy1TVFJJTkcgaXMgbm9uLW5pbCwgYXMgYSBzdHJpbmcgc2Vw YXJhdGVkIGJ5DQpTRVAgKGRlZmF1bHRzIHRvIG5ld2xpbmUpLiINCiAgKGlmIG9yZy1hZ2VuZGEt b3ZlcnJpZGluZy1yZXN0cmljdGlvbg0KICAgICAgKGlmIHJldHVybi1hcy1zdHJpbmcNCiAgICAg ICAgICAoZm9ybWF0ICIlcyVzIHJlc3RyaWN0aW9ucyBhcmUgaW4gZWZmZWN0Ig0KICAgICAgICAg ICAgICAgICAgKG9yIHNlcCAiXG4iKQ0KICAgICAgICAgICAgICAgICAgb3JnLWFnZW5kYS1vdmVy cmlkaW5nLXJlc3RyaWN0aW9uKQ0KICAgICAgICB0KQ0KICAgIChpZiByZXR1cm4tYXMtc3RyaW5n ICIiIG5pbCkpKQ0KDQooZGVmdW4gb3JnLWNvbmZsaWN0LWZvcm1hdC1taW51dGVzIChtaW51dGVz KQ0KICAiUmV0dXJuIGludGVnZXIgTUlOVVRFUyBhcyBhIGh1bWFuLXJlYWRhYmxlIHN0cmluZy4N ClRoZXJlIGFyZSBubyAwLW1pbnV0ZSBwZXJpb2RzIGluIG9yZy1jb25mbGljdC4iDQogIChsZXQg KHBhcnRzKQ0KICAgICh3aGlsZSBtaW51dGVzDQogICAgICAobGV0ICgoZGF5cyAoLyBtaW51dGVz IDE0NDApKQ0KICAgICAgICAgICAgKGhvdXJzICgvIG1pbnV0ZXMgNjApKSkNCiAgICAgICAgKGlm ICg+IGRheXMgMCkNCiAgICAgICAgICAgIChzZXRxIHBhcnRzIChhcHBlbmQgcGFydHMgKGxpc3Qg KGZvcm1hdCAiJWRkIiBkYXlzKSkpDQogICAgICAgICAgICAgICAgICBtaW51dGVzICglIG1pbnV0 ZXMgMTQ0MCkpDQogICAgICAgICAgKGlmICg+IGhvdXJzIDApDQogICAgICAgICAgICAgIChzZXRx IHBhcnRzIChhcHBlbmQgcGFydHMgKGxpc3QgKGZvcm1hdCAiJWRoIiBob3VycykpKQ0KICAgICAg ICAgICAgICAgICAgICBtaW51dGVzICglIG1pbnV0ZXMgNjApKQ0KICAgICAgICAgICAgKGlmICg+ IG1pbnV0ZXMgMCkNCiAgICAgICAgICAgICAgICAoc2V0cSBwYXJ0cyAoYXBwZW5kIHBhcnRzIChs aXN0IChmb3JtYXQgIiVkbWluIiBtaW51dGVzKSkpDQogICAgICAgICAgICAgICAgICAgICAgbWlu dXRlcyBuaWwpDQogICAgICAgICAgICAgIChzZXRxIG1pbnV0ZXMgbmlsKSkpKSkpDQogICAgKG1h cGNvbmNhdCAnaWRlbnRpdHkgcGFydHMgIiAiKSkpDQoNCihkZWZ1biBvcmctY29uZmxpY3QtY2hl Y2stb3JnLWFnZW5kYS1maWxlcyAoKQ0KICAodW5sZXNzIG9yZy1hZ2VuZGEtZmlsZXMNCiAgICAo dXNlci1lcnJvciAib3JnLWNvbmZsaWN0IHJlcXVpcmVzIHRoZSB2YXJpYWJsZSAnb3JnLWFnZW5k YS1maWxlcyB0byBiZSBzZXQiKSkpDQoNCihvcmctY29uZmxpY3QtY2hlY2stb3JnLWFnZW5kYS1m aWxlcykNCg0KKHByb3ZpZGUgJ29yZy1jb25mbGljdCkNCg0KOzs7IG9yZy1jb25mbGljdC5lbCBl bmRzIGhlcmUNCg== --jJ5DeAOFrT Content-Type: application/octet-stream; name="org-conflict-faq.org" Content-Disposition: attachment; filename="org-conflict-faq.org" Content-Transfer-Encoding: base64 IytTVEFSVFVQOiBjb250ZW50IGluZGVudA0KIytDQVRFR09SWTogZGVtbw0KIytBVVRIT1I6IFRo b21hcyBQbGFzcyA8dGhvbWFzIGRvdCBwbGFzcyBhdCBhcmNvciBkb3QgZGU+DQojK0RBVEU6IDQt QXByLTIwMTkNCg0KVGhpcyBkb2N1bWVudCBkZXNjcmliZXMgdGhlIG9yZy1jb25mbGljdC5lbCBh ZGQtb24gZm9yIEVtYWNzIE9yZyBtb2RlDQphcyBhbiBGQVEuICBJdCBhbHNvIGNvbnRhaW5zIGxp dmUgZGF0YSBmb3IgZGVtb25zdHJhdGluZw0Kb3JnLWNvbmZsaWN0J3MgZnVuY3Rpb25hbGl0eS4N Cg0KKiBROiBXaGF0J3MgdGhlIHB1cnBvc2Ugb2Ygb3JnLWNvbmZsaWN0Pw0KDQpBOiBPcmctY29u ZmxpY3QgaGVscHMgT3JnIGFnZW5kYSB1c2VycyBwcmV2ZW50IGNyZWF0aW5nIHNjaGVkdWxpbmcN CiAgIGNvbmZsaWN0cy4gIEl0IGNvbXBhcmVzIGEgdGVzdCBpdGVtIGFnYWluc3QgZXhpc3Rpbmcg dGltaW5nDQogICBzcGVjaWZpY2F0aW9ucyBhbmQgcmVwb3J0cyBkZXRlY3RlZCBjb25mbGljdHMg dGhhdCBhcmlzZSBmcm9tDQogICBvdmVybGFwcy4gIEFsc28sIG9yZy1jb25mbGljdCBvZmZlcnMg dG8gcmVzb2x2ZSB0aGUgY29uZmxpY3QgYnkNCiAgIGNvbXB1dGluZyB0aGUgZWFybGllc3Qgbm9u LWNvbmZsaWN0aW5nIHRpbWUuDQoNCiogUTogV2hhdCdzIHRoZSBwb2ludCBvZiB0aGUgYWRkLW9u LCBjYW4ndCB5b3UganVzdCB1c2UgdGhlIGFnZW5kYSB0byBjaGVjayB0aW1lcz8NCg0KQTogQXMg bXVjaCBhcyBJIGxpa2UgaW50ZXJhY3Rpbmcgd2l0aCBPcmcsIHNvbWV0aW1lcyBzb21lIHRoaW5n cyBuZWVkDQogICBhdXRvbWF0aW9uLg0KDQogICBNeSBwYXJ0aWN1bGFyIHVzZSBjYXNlIGZvciBh dXRvbWF0ZWQgYWdlbmRhIGNoZWNraW5nIGlzIHRoaXM6IE15DQogICBpQ2FsZW5kYXIgY2xpZW50 IGZvciBWTSB1c2VzIE9yZyBhcyB0aGUgYmFjayBlbmQgZm9yIHN0b3JpbmcgYW5kDQogICBtYW5h Z2luZyBldmVudHMgd2hpY2ggZ2V0IGV4cG9ydGVkIGFzIE9yZyBlbnRyaWVzLg0KDQogICBXaGVu IGEgbmV3IG1lZXRpbmcgcmVxdWVzdCBoaXRzIG15IGluYm94LCBteSByZXNwb25zZSBuZWVkcyB0 byBiZQ0KICAgaW5mb3JtZWQgYnkgdGhlIGtub3dsZWRnZSwgd2hldGhlciBvciBub3QgdGhlIHBy b3Bvc2VkIHRpbWUNCiAgIGNvbmZsaWN0cyB3aXRoIHNvbWV0aGluZyBlbHNlIGFscmVhZHkgaW4g dGhlIGNhbGVuZGFyLg0KDQogICBOb3csIHRoZSBzZXF1ZW5jZSBvZiBsZWF2aW5nIHRoZSBwcmVz ZW50YXRpb24gYnVmZmVyLCBmaXJpbmcgdXAgdGhlDQogICBhZ2VuZGEsIG5hdmlnYXRpbmcgdG8g dGhlIGRheSBpbiBxdWVzdGlvbiwgc2Nhbm5pbmcgdGhlIHZpZXcsDQogICBjYWxjdWxhdGluZyB0 aW1lcyBpbiBteSBoZWFkIGJlZm9yZSBmaW5hbGx5IHJldHVybmluZyB0byB0aGUgbWFpbA0KICAg anVzdCBzZWVtZWQgdW5iZWFyYWJseSB0ZWRpb3VzLiAgU28sIG9yZy1jb25mbGljdCBzdGFydGVk IG9mZiBhcyBhDQogICBzaW1wbGUgcHJlZGljYXRlIHRoYXQgY291bGQgYmUgY2FsbGVkIGZyb20g TGlzcC4gIEl0IHN0aWxsIGJlaGF2ZXMNCiAgIGxpa2Ugb25lIGV2ZW4gaWYgSSBhZGRlZCBhbiBp bnRlcmFjdGl2ZSBtb2RlIHdoaWNoIHR1cm5lZCBpdCBpbnRvDQogICBhbiBhZGQtb24gZm9yIHVz ZSBpbiBPcmcgYnVmZmVycy4NCiAgIA0KKiBROiBJIGRvbid0IHVzZSB0aGUgYWdlbmRhLCBsZXQg YWxvbmUgYXMgYSBjYWxlbmRhci4gSXMgdGhpcyBhZGQtb24gZm9yIG1lPw0KDQpBOiBQcm9iYWJs eSBub3QuICBIb3dldmVyLCB5b3UgY2FuIGdpdmUgaXQgYSBxdWljayB0ZXN0IGRyaXZlIHVzaW5n DQogICB0aGUgZGVtbyBkYXRhIGNvbnRhaW5lZCBpbiB0aGlzIGZpbGUuICBQcm9jZWVkIGFzIGZv bGxvd3M6DQoNCiAgIC0gc2F2ZSBhbmQgbG9hZCB0aGUgYWNjb21wYW55aW5nIG9yZy1jb25mbGlj dC5lbA0KICANCiAgICAgLSBvcHRpb25hbGx5LCBvcGVuIG9yZy1jb25mbGljdCdzIGN1c3RvbWl6 YXRpb24gb3B0aW9ucyBieQ0KICAgICAgIGV2YWx1YXRpbmcgDQogIA0KICAgICAgIChjdXN0b21p emUtZ3JvdXAgJ29yZy1jb25mbGljdCB0KQ0KICANCiAgIC0gaGl0ICdDLWMgWycgdG8gYWRkIHRo ZSBjdXJyZW50IGZpbGUgb3JnLWNvbmZsaWN0LWZhcS5vcmcgdG8NCiAgICAgJ29yZy1hZ2VuZGEt ZmlsZXMgKGFsdGVybmF0aXZlbHksIGNyZWF0ZSBhIG5ldyBvcmcgZmlsZSwgeWFuayB0aGUNCiAg ICAgdGhyZWUgZW50cmllcyB3aXRoIHRpbWVzdGFtcHMgYmVsb3cgYW5kIHNhdmUgdGhlIGZpbGUp DQogICANCioqIERlbW8gY2FsZW5kYXIgZGF0YQ0KICAgVGhlIGZvbGxvd2luZyB0aHJlZSBlbnRy aWVzIGFyZSB0aG91Z2h0IGFzIGNvbW1pdHRlZCBhZ2VuZGENCiAgIHNjaGVkdWxpbmdzLg0KDQoq KiogVE9ETyBQcm9qZWN0IG1lZXRpbmcgd2l0aCBEYW5hDQogICAgU0NIRURVTEVEOiA8MjAxOS0w OC0wMiBGciAxMDowMC0xMTozMD4NCg0KKioqIEx1bmNoIHdpdGggU2FuZHkNCiAgIDwyMDE5LTA4 LTAyIEZyIDEyOjAwLTEyOjQ1Pg0KICAgDQoqKiogVE9ETyBKb3VyIEZpeGUNCiAgICBTQ0hFRFVM RUQ6IDwyMDE5LTA4LTAyIEZyIDE0OjAwLTE0OjMwICsxdz4NCiAgICANCioqIFRoZSB0ZXN0IGVu dHJ5DQogICAgV2UgbmVlZCBhbiBlbnRyeSB0byB0ZXN0IGFnYWluc3QgdGhlIHNtYWxsIHNldCBv ZiByZWZlcmVuY2UNCiAgICBlbnRyaWVzLiAgVGhlIGV2ZW50IHRvIGNoZWNrIHdpbGwgYWxzbyBi ZSBvbiBGcmksIEF1Z3VzdCAyIDIwMTkgYW5kDQogICAgc2hvdWxkIGxhc3QgNDUgbWludXRlcywg c3RhcnRpbmcgaW4gdGhlIGxhdGUgbW9ybmluZy4gIFdlDQogICAgaW5zZXJ0IHRoZSBmb2xsb3dp bmcgZW50cnkgd2l0aCBhIHRlbnRhdGl2ZSBkYXRlIHRpbWU6DQoNCioqKiBUT0RPIENsaWVudCB3 YW50cyB0byBzYXkgSGkgZHVyaW5nIHRoZSBkYXkNCiAgICBTQ0hFRFVMRUQ6IDwyMDE5LTA4LTAy IEZyIDEwOjMwPg0KDQoqKiBZb3VyIGZpcnN0IG9yZy1jb25mbGljdCBzZXNzaW9uDQogICBOb3Rl OiBhcyB0aGlzIHNlc3Npb24gYWx0ZXJzIHRoZSB3aW5kb3cgY29uZmlndXJhdGlvbiB0ZW1wb3Jh cmlseSwNCiAgIHlvdSBtaWdodCB3YW50IHRvIGNyZWF0ZSBhIGJ1ZmZlciBpbiBhIG5ldyBmcmFt ZSBhbmQgY29weSB0aGlzDQogICBzdWJ0cmVlIGludG8gaXQgZm9yIGNvbnRpbnVlZCB2aXNpYmls aXR5IGFzIHlvdSBnbyBhbG9uZy4NCg0KICAgLSBwbGFjZSB0aGUgaW5zZXJ0aW9uIHBvaW50IGFu eXdoZXJlIGluIHRoZSB0aW1lc3RhbXAgb2YgdGhlIHRlc3QgZW50cnkNCiAgDQogICAtIGludm9r ZSBNLXggb3JnLWNvbmZsaWN0DQogIA0KICAgICBBcyB0aGUgdGltZXN0YW1wIGRvZXNuJ3QgZGVm aW5lIGEgZHVyYXRpb24sIHlvdSdsbCBiZSBwcm9tcHRlZDoNCiAgDQogICAgIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0NCiAgICAgU3BlY2lmeSBhIGR1cmF0aW9uLCBpbiBtaW51dGVzIE4sIGhvdXJzIE5o IG9yIGRheXMgTmQ6DQogICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgDQogICAtIHR5cGUgNDUg YW5kIGhpdCBSRVRVUk4NCiAgDQogICAgIChCVFcsIHlvdSBjb3VsZCBoYXZlIGJ5cGFzc2VkIHRo YXQgcHJvbXB0IGJ5IHByb3ZpZGluZyBhIHByZWZpeA0KICAgICBhcmd1bWVudCAnQy11IDQ1JyBv ciBhZGRpbmcgIi0xMToxNSIgdG8gdGhlICIxMDozMCIgdG8gdHVybiB0aGUNCiAgICAgdGltZS1v Zi1kYXkgaW50byBhIHJhbmdlKS4NCiAgICAgDQogICAgIFlvdSdsbCBiZSB0cmFuc3BvcnRlZCB0 byBhIHByb21wdCBsb29raW5nIHNpbWlsYXIgdG8gdGhpczoNCiAgDQogICAgIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0NCiAgICAgQ29uZmxpY3QgZGV0ZWN0ZWQ6IDIgQXVndXN0IDIwMTkgMTA6MDAtMTE6 MzAsIFRPRE8gUHJvamVjdCBtZWV0aW5nIHdpdGggRGFuYQ0KICAgICBQcmVzcyBbc11ob3cgYWdl bmRhLCBbcl1lc29sdmUgY29uZmxpY3Qgb3IgW3FddWl0OiANCiAgICAgLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQ0KICANCiAgIC0gaGl0ICdzJw0KICANCiAgICAgQW4gYWdlbmRhIHZpZXcgaXMgcG9wcGVk IHVwLCBzaW1pbGFyIHRvIHRoaXMgb25lIChncmlkIGxpbmVzIG9taXR0ZWQgZm9yIGJyZXZpdHkp Og0KICAgICAgICANCiAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICAgICAgRGF5LWFnZW5k YSAoVzMxKToNCiAgICAgICBGcmVpdGFnICAgICAyIEF1Z3VzdCAyMDE5DQogICAgICAgIGRlbW86 ICAgICAgICAxMDowMC0xMTozMCBTY2hlZHVsZWQ6ICBUT0RPIFByb2plY3QgbWVldGluZyB3aXRo IERhbmENCiAgICAgICAgZGVtbzogICAgICAgIDEyOjAwLTEyOjQ1IEx1bmNoIHdpdGggU2FuZHkN CiAgICAgICAgZGVtbzogICAgICAgIDE0OjAwLTE0OjMwIFNjaGVkdWxlZDogIFRPRE8gSm91ciBG aXhlDQogICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICANCiAgICAgTm90ZSB0d28gdGhpbmdz OiB0aGlzIGFnZW5kYSB2aWV3IGlzIG5vdCBmb3IgaW50ZXJhY3Rpb24gKHlvdSdyZQ0KICAgICBz dGlsbCBhdCB0aGUgYWJvdmUgcHJvbXB0KSBhbmQgLSB0byByZWR1Y2UgY2x1dHRlciAtIHRoZSBl bnRyeQ0KICAgICB5b3UncmUgdGVzdGluZyBmb3IgaXNuJ3QgbGlzdGVkIGJlY2F1c2UgeW91J3Jl IG5vdCBjb21taXR0ZWQgeWV0Lg0KDQoqKiogQ29uZmxpY3RzIGFyZSBmb3IgcmVzb2x1dGlvbiwg YXJlbid0IHRoZXk/DQoNCiAgIC0gbm93IGhpdCAncicgdG8gZ2V0IHRoaXMgb25lIHJlc29sdmVk DQogIA0KICAgICBUaGUgcHJvbXB0IGNoYW5nZXMgdG8gdGhpcyBvbmU6DQogICAgIA0KICAgICAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tDQogICAgIEVhcmxpZXN0IHBvc3NpYmxlIHRpbWUgZm9yIGEgNDVt aW4gcGVyaW9kIChnYXA6IG5vbmUpOiAyIEF1Z3VzdCAyMDE5LCAxMjo0NQ0KICAgICBQcmVzcyBb c11ob3cgYWdlbmRhLCBbcF1yZXZpZXcsIFtjXW9weSwgW2VdZGl0LCBbcl1lcGxhY2UvaW5zZXJ0 IG9yIFtxXXVpdDogDQogICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgDQogICAgIEEgcmVzb2x1 dGlvbiBpcyB0aGUgZWFybGllc3QgdGltZSBhZnRlciBhIGdpdmVuIHN0YXJ0IHRpbWUgd2l0aA0K ICAgICBlbm91Z2ggdGltZSBmb3IgdGhlIGRlc2lyZWQgZHVyYXRpb24gc3VjaCB0aGF0IGl0IGRv ZXMgbm90DQogICAgIG92ZXJsYXAgd2l0aCBhbnkgb3RoZXIgZXZlbnRzLg0KICANCiAgIC0gaGl0 ICdwJyB0byBzZWUgd2hlcmUgdGhlIHByb3Bvc2VkIHJlc29sdXRpb24gd2lsbCBiZSBwbGFjZWQN CiAgDQogICAgIFRoZSBhZ2VuZGEgdmlldyBnZXRzIHVwZGF0ZWQgYW5kIHNob3dzIGFuIGVudHJ5 IGNvbnRhaW5pbmcgdGhlDQogICAgIGVudHJ5IHRleHQNCiAgDQogICAgICAgICAgICAgICAgICAg IDw8PDw8PDwgciBlIHMgbyBsIHUgdCBpIG8gbiA8PDw8PDw8PDw8PDw8PDwNCiAgDQogICAgICAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tDQogICAgICBEYXktYWdlbmRhIChXMzEpOg0KICAgICAgRnJlaXRh ZyAgICAgMiBBdWd1c3QgMjAxOQ0KICAgICAgIGRlbW86ICAgICAgICAxMDowMC0xMTozMCBTY2hl ZHVsZWQ6ICBUT0RPIFByb2plY3QgbWVldGluZyB3aXRoIERhbmENCiAgICAgICBkZW1vOiAgICAg ICAgMTI6MDAtMTI6NDUgTHVuY2ggd2l0aCBTYW5keQ0KICAgICAgICA+Pj4+Pj4+PjogICAxMjo0 NS0xMzozMCBTY2hlZHVsZWQ6ICA8PDw8PDw8IHIgZSBzIG8gbCB1IHQgaSBvIG4gPDw8PDw8PDw8 PDw8PDw8DQogICAgICAgZGVtbzogICAgICAgIDE0OjAwLTE0OjMwIFNjaGVkdWxlZDogIFRPRE8g Sm91ciBGaXhlDQogICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoNCiAgIFN0aWxsIGJlaW5nIGF0 IHRoZSBwcm9tcHQsIHlvdSBjYW4gbm93IHVzZQ0KICAgDQogICAtICdjJyB0byBwdXQgYSB0aW1l c3RhbXAgZm9yIHRoZSByZXNvbHV0aW9uIG9udG8gdGhlIGtpbGwgcmluZw0KICANCiAgIC0gJ2Un IHRvIGVkaXQgdGhhdCB0aW1lc3RhbXAgaW4gdGhlIG1pbmlidWZmZXINCiAgDQogICAtICdyJyB0 byByZXBsYWNlIHRoZSBjb25mbGljdGluZyB0aW1lc3RhbXAgaW4geW91ciBPcmcgYnVmZmVyIHdp dGgNCiAgICAgdGhlIHJlc29sdXRpb24gKGludm9rZSBvcmctY29uZmxpY3Qgb24gdGhlIG5ldyB0 aW1lc3RhbXAgYWdhaW46DQogICAgIGl0IHdpbGwgZWNobyB0aGUgbWVzc2FnZSAiTm8gY29uZmxp Y3RzIGZvdW5kLiIpDQoNCiAgIFNvLCBiYXJyaW5nIGFueSBjdXN0b21pemF0aW9uLCB0aGF0J3Mg dGhlIG9yZy1jb25mbGljdCB3b3JrZmxvdyBhbmQNCiAgIGludGVyYWN0aXZlIHNpZGUuDQogICAN CiAgIC0gdG8gY2xlYW4gdXAsIGhpdCAnQy1jIF0nIHRvIHJlbW92ZSB0aGUgY3VycmVudCBmaWxl DQogICAgIG9yZy1jb25mbGljdC1mYXEub3JnIGZyb20gJ29yZy1hZ2VuZGEtZmlsZXMNCiAgICAg IA0KKiBROiBJIGRvbid0IGxpa2UgdG8gIk0teCIgdGhpbmdzLiAgRG9lcyBvcmctY29uZmxpY3Qg Y29tZSB3aXRoIGEga2V5YmluZGluZz8NCg0KQTogTm90IGFzIHN1Y2guICBJdCBjb21lcywgaG93 ZXZlciwgd2l0aCBhIGZ1bmN0aW9uIGRlc2lnbmVkIHRvIGJlDQogICBhZGRlZCB0byBPcmcncyBj dHJsLWMgY3RybC1jIGhvb2suICBJIGZpbmQgaXQgbmF0dXJhbCB0byBDLWMgQy1jDQogICB0aGlu Z3MgdGhhdCBuZWVkIHNvbWUgbm9ybWFsaXphdGlvbiBhbmQgYWxzbywgdGhlcmUncyBub3QgeWV0 DQogICBhbm90aGVyIGtleWJpbmRpbmcgdG8gbWVtb3JpemUuICBQdXQgdGhpcyBpbiB5b3VyIHN0 YXJ0dXAgZmlsZToNCg0KICAgKGFkZC1ob29rICdvcmctY3RybC1jLWN0cmwtYy1ob29rICdvcmct Y29uZmxpY3QtY2hlY2stdGltZXN0YW1wLW9yLXJhbmdlKQ0KDQogICBDLWMgQy1jIHdpbGwgd29y ayBhcyB1c3VhbCwgb25seSB0aW1lc3RhbXBzIGFuZCAtcmFuZ2VzIHdpbGwgYmUNCiAgIGNvbmZs aWN0LWNoZWNrZWQgYWZ0ZXIgT3JnJ3Mgc3RhbmRhcmQgbm9ybWFsaXphdGlvbiBoYXMgYmVlbiBy dW4gb24NCiAgIHRoZW0uDQoNCiAgIFRvIHN1cHByZXNzIGNoZWNraW5nIGZvciBhIHNpbmdsZSBp bnZvY2F0aW9uLCBzdXBwbHkgYSAwLXZhbHVlZA0KICAgcHJlZml4DQoNCiAgIEMtdSAwIEMtYyBD LWMgICAgIChyZW1lbWJlcjogbnVtZXJpYyBwcmVmaXggPT0gZHVyYXRpb24pDQoNCiAgIG9yIHJl bW92ZSAnb3JnLWNvbmZsaWN0LWNoZWNrLXRpbWVzdGFtcC1vci1yYW5nZSBmcm9tIHRoZSBob29r IHRvDQogICBkaXNhYmxlIGNoZWNraW5nLg0KDQoqIFE6IFdoYXQga2luZCBvZiB0aW1lc3RhbXBz IGFyZSBzdXBwb3J0ZWQ/DQoNCkE6IFRpbWVzdGFtcHMgZWxpZ2libGUgZm9yIGNvbXBhcmlzb24g YWdhaW5zdCBhIHRlc3QgdGltZS90aW1lc3RhbXANCiAgIHNhdGlzZnkgdGhlc2UgcmVxdWlyZW1l bnRzOg0KDQogIC0gW1hdIHJlc2lkZSBpbiBmaWxlcyByZWZlcmVuY2VkIGJ5IHRoZSBPcmcgdmFy aWFibGUgJ29yZy1hZ2VuZGEtZmlsZXMNCiAgLSBbWF0gYXJlIDxhY3RpdmU+LCBub3QgW2luYWN0 aXZlXSBub3IgdGFnZ2VkIGFzIDpBUkNISVZFOmQNCiAgLSBbWF0gaW5jbHVkZSBhIHRpbWUtb2Yt ZGF5DQogIC0gW1hdIGVuY29kZSBhIGR1cmF0aW9uIA0KDQpFeGFtcGxlczoNCg0KIytCRUdJTl9T UkMgb3JnDQoNCiAgLSA8MjAwMS0wOC0wMyBGcj4gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdW5lbGlnaWJsZQ0KICAtIFsyMDAxLTA4LTAzIEZyXSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB1bmVsaWdpYmxlDQogIC0gPDIwMDEtMDgtMDMgRnIgMTA6MzA+ICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHVuZWxpZ2libGUNCg0KICAtIDwyMDAxLTA4LTAzIEZyIDEw OjAwLTExOjMwPiAgICAgICAgICAgICAgICAgICAgICBlbGlnaWJsZQ0KICAtIDwyMDAxLTA4LTAz IEZyIDEwOjAwLTExOjMwICtSRVBfVEFHPiAgICAgICAgICAgICBlbGlnaWJsZQ0KICAtIDwyMDAx LTA4LTAzIEZyIDEwOjAwPi0tPDIwMDEtMDgtMDQgU2EgMTE6MzA+ICAgICBlbGlnaWJsZQ0KDQoj K0VORF9TUkMNCg0KICAgVGhlIHRlc3QgaXRlbSwgaG93ZXZlciwgY2FuIGJlIGFueSBvZiB0aGUg YWJvdmUuICBNaXNzaW5nDQogICBpbmZvcm1hdGlvbiBpcyBwcm9tcHRlZCBmb3IgYW5kIGNhbiBi ZSBzdXBwbGllZCBieSBhIHByZWZpeA0KICAgYXJndW1lbnQuDQoNCiAgIEluIGZhY3QsIGEgdGlt ZXN0YW1wIGlzbid0IHJlcXVpcmVkIGF0IGFsbC4gIEludm9raW5nIG9yZy1jb25mbGljdA0KICAg aW4gYW55IGNvbnRleHQgb3RoZXIgdGhhbiBhIHRpbWVzdGFtcCB3aWxsIHBvcCB1cCB0aGUgc3Rh bmRhcmQgT3JnDQogICBjYWxlbmRhciBmb3IgYSBkYXRlK3RpbWUuDQoNCioqIEhpbnQ6IENvZGlu ZyB5b3VyIHZhY2F0aW9ucw0KDQogICBUbyBzZXQgdXAgeW91ciB2YWNhdGlvbnMgZm9yIGNvbmZs aWN0IGNoZWNraW5nLCBkb24ndCBmb3JnZXQgdG8gZnVsbHkNCiAgIHF1YWxpZnkgdGhlIHRpbWUg cmFuZ2U6DQoNCiMrQkVHSU5fU1JDIG9yZw0KDQogICogU3VtbWVyIHZhY2F0aW9uIChubyBtZWV0 aW5ncyEpDQogICAgPDIwMTktMDctMDEgTW8gMDA6MDA+LS08MjAxOS0wNy0yMSBTbyAyNDowMD4N Cg0KIytFTkRfU1JDDQoNCiogUTogSXMgaXQgcG9zc2libGUgdG8gY29uZmlndXJlIGNvZmZlZSBi cmVha3MgYmV0d2VlbiBldmVudHMgdG8gcHJldmVudCBiYWNrLXRvLWJhY2sgbWVldGluZ3M/DQoN CkE6IFllcy4gIFRoZSB2YXJpYWJsZSAnb3JnLWNvbmZsaWN0LWV2ZW50LW1pbmltdW0taW50ZXJ2 YWwgKCJJbnRlcnZhbHMNCiAgIGJldHdlZW4gRXZlbnRzIiBpbiB0aGUgQ3VzdG9taXphdGlvbiBk aWFsb2cpIGRvZXMgZXhhY3RseSB0aGF0Lg0KICAgTm90ZSB0aGF0IHRoZSBpbnRlcnZhbCBpcyBh cHBsaWVkIHRvIGJvdGggZW5kcy4NCg0KICAgU2V0IHRvIDE1LCBvdXIgbmV3bHkgY29tbWl0dGVk IHRlc3QgZXZlbnQgd291bGQgc3RhcnQgYXQgMTM6MDANCiAgIHNpbmNlIGx1bmNoIGVuZGVkIDEy OjQ1ICh3aGV0aGVyIHlvdSByZWFsbHkgbmVlZCBhIGJyZWFrIGFmdGVyDQogICBsdW5jaCBpcyBh bm90aGVyIG1hdHRlci4uLikuICBBbHNvLCB0aGUgZ2FwIGFmdGVyIGl0IGlzIGp1c3QgbGFyZ2UN CiAgIGVub3VnaDoNCiAgIA0KICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICAgIERheS1hZ2Vu ZGEgKFczMSk6DQogICAgIEZyZWl0YWcgICAgIDIgQXVndXN0IDIwMTkNCiAgICAgIGRlbW86ICAg ICAgICAxMDowMC0xMTozMCBTY2hlZHVsZWQ6ICBUT0RPIFByb2plY3QgbWVldGluZyB3aXRoIERh bmENCiAgICAgIGRlbW86ICAgICAgICAxMjowMC0xMjo0NSBMdW5jaCB3aXRoIFNhbmR5DQogICAg ICBkZW1vOiAgICAgICAgMTM6MDAtMTM6NDUgU2NoZWR1bGVkOiAgVE9ETyBDbGllbnQgd2FudHMg dG8gc2F5IEhpIGR1cmluZyB0aGUgZGF5DQogICAgICBkZW1vOiAgICAgICAgMTQ6MDAtMTQ6MzAg U2NoZWR1bGVkOiAgVE9ETyBKb3VyIEZpeGUNCiAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAg DQogICBJbnRlcnZhbHMgZG8gbm90IGV4dGVuZCBwYXN0IG1pZG5pZ2h0LiAgQWxzbywgdGhlcmUg YXJlIG5vDQogICBpbnRlcnZhbHMgYmVmb3JlIGFuZCBhZnRlciBldmVudHMgdGhhdCBzcGFuIG11 bHRpcGxlIGRheXMuDQoNCiogUTogQ2FuIEkgY29uZmlndXJlIGFuICJhZnRlciBob3VycyIgcGVy aW9kPw0KDQpBOiBZZXMsIG9yZy1jb25mbGljdCBzdXBwb3J0cyB3aGF0IEkgY2FsbCBhbiBvdmVy bmlnaHQgcmVwZWF0ZXIuICBUaGlzDQogICBpcyBhIHZpcnR1YWwgcmFuZ2Ugd2hvc2Ugc3RhcnQg dGltZSBpcyBpbiB0aGUgZnV0dXJlIG9mIGl0cyBlbmQNCiAgIHRpbWUuICBDb25zaWRlciBhIGZp bGUgYWZ0ZXJob3Vycy5vcmcgY29udGFpbmluZyB0aGlzIGVudHJ5Og0KDQojK0JFR0lOX1NSQyBv cmcNCg0KICAqIEFmdGVyIGhvdXJzDQogICAgPDIwMDAtMDEtMDMgTW8gMTg6MDAtMTA6MDAgKzFk Pg0KDQojK0VORF9TUkMNCg0KICAgVG8gT3JnLCB0aGlzIG1ha2VzIHNlbnNlIG9ubHkgYXMgZmFy IGFzIGl0IHdpbGwgY3JlYXRlIGEgcmVjdXJyaW5nDQogICBlbnRyeSBpbiB0aGUgYWdlbmRhIGF0 IDE4OjAwIGVhY2ggZGF5LiAgSXQncyBub3QgcmVjb2duaXplZCBhcyBhDQogICByYW5nZSB0aG91 Z2guICBPcmctY29uZmxpY3QgZG9lcyB0aGUgRFdJTSB0aGluZyBhbmQgaW50ZXJuYWxseQ0KICAg c3BsaXRzIHRoZSB0aW1lLW9mLWRheSBpbnRvIHRoZXNlIHR3byBldmVudHMgKGZvciBlYWNoIG9j Y3VycmVuY2UNCiAgIHJlc3BlY3RpdmVseSkNCg0KIytCRUdJTl9TUkMgb3JnDQoNCiAgPDIwMDAt MDEtMDMgTW8gMTg6MDAtMjQ6MDA+DQogIDwyMDAwLTAxLTA0IERpIDAwOjAwLTEwOjAwPg0KDQoj K0VORF9TUkMNCg0KICAgQnV0IHRoZXJlJ3MgYSBkaWZmZXJlbmNlLiAgSWYgZGVmaW5lZCBtYW51 YWxseSwgdGhlIGxhdHRlciB0d28NCiAgIHdvdWxkIGJlIHNlcGFyYXRlIGV2ZW50cyBhbmQgZWFj aCBiZSBzdWJqZWN0IHRvIHRoZSBtaW5pbXVtDQogICBpbnRlcnZhbCBydWxlLiAgV2hpY2ggbWVh bnMgdGhhdCB5b3UnZCBzdGFydCBhbmQgZW5kIHlvdXIgd29ya2luZw0KICAgZGF5IHdpdGggYSBj b2ZmZWUgYnJlYWsuICBJbiBjb250cmFzdCwgdGhlIHJlcGVhdGVyIHRpbWVzdGFtcA0KICAgZGVm aW5lcyBhIG11bHRpLWRheSBldmVudCBhbmQgdGh1cyB3aWxsIG5vdCByZWNlaXZlIGdhcHMgYmVm b3JlIGFuZA0KICAgYWZ0ZXIgaXQuICBTbywgYSAzMC1taW51dGUgcGVyaW9kIGZvciB0aGUgY29u ZmxpY3RpbmcgbWlkLUp1bHkNCiAgIHRlc3QgZGF0ZSAyMDE5LTA3LTEwIHdpbGwgcmVzb2x2ZSB0 byAxMDowMC0xMDozMCBvbiB0aGUgZmlyc3QNCiAgIE1vbmRheSBmb2xsb3dpbmcgdGhlIHN1bW1l ciB2YWNhdGlvbjoNCg0KIytCRUdJTl9TUkMgb3JnDQoNCiAgICA8MjAxOS0wNy0yMiBNbyAxMDow MC0xMDozMD4NCg0KIytFTkRfU1JDDQoNCiogUTogQ2FuIG9yZy1jb25mbGljdCB0YWtlIG1lIHN0 cmFpZ2h0IHRvIHRoZSByZXNvbHV0aW9uIHByb21wdD8NCg0KQTogWWVzLiBCeSBkZWZhdWx0LCBv cmctY29uZmxpY3QgaXMgaW4gInByZXNlbnQgYW5kIHJldmlldyIgbW9kZS4NCiAgIFNldHRpbmcg J29yZy1jb25mbGljdC1jb25mbGljdC1hY3Rpb24gdG8gJ3Jlc29sdmUNCg0KICAgKHNldHEgJ29y Zy1jb25mbGljdC1jb25mbGljdC1hY3Rpb24gJ3Jlc29sdmUpDQoNCiAgIG9yIHNlbGVjdGluZyAi UHJlc2VudCBhIHJlc29sdXRpb24gZm9yIGZ1cnRoZXIgYWN0aW9uIiBmcm9tIHRoZQ0KICAgbWVu dSBvZiB0aGUgIkNvbmZsaWN0IEFjdGlvbiIgaXRlbSBpbiB0aGUgY3VzdG9taXphdGlvbiB3aWxs IG1ha2UNCiAgIG9yZy1jb25mbGljdCBza2lwIHRoZSByZXZpZXcgcHJvbXB0IGFuZCBnbyBzdHJh aWdodCB0byB0aGUNCiAgIHJlc29sdXRpb24gbWVudSBwcm9tcHQuDQogICANCiogUTogQ2FuIEkg Z2V0IGEgbmV3IHRpbWVzdGFtcCB3aXRob3V0IGJlaW5nIHByb21wdGVkIGF0IGFsbD8NCg0KQTog WWVzLiBJZiB5b3UncmUgaGFwcHkgd2l0aCBvcmctY29uZmxpY3QncyBzdWdnZXN0aW9ucywgeW91 IGNhbiBoYXZlDQogICBpdCByZXBsYWNlIHRoZSBjb25mbGljdGluZyB0aW1lc3RhbXAgb3IgLXJh bmdlIGF0IHBvaW50IHdpdGggdGhlDQogICByZXNvbHV0aW9uLCBubyBxdWVzdGlvbnMgYXNrZWQu DQoNCiAgIFNldCB0aGUgY29uZmxpY3QgYWN0aW9uIHRvICdyZXBsYWNlIGxpa2Ugc28NCg0KICAg KHNldHEgJ29yZy1jb25mbGljdC1jb25mbGljdC1hY3Rpb24gJ3JlcGxhY2UpDQogDQogICBvciBz ZWxlY3QgIkluc2VydCBhIHJlc29sdXRpb24gYXQgcG9pbnQiIGZyb20gdGhlIG1lbnUgb2YgdGhl DQogICAiQ29uZmxpY3QgQWN0aW9uIiBpdGVtIGluIHRoZSBjdXN0b21pemF0aW9uLg0KDQoqIFE6 IFdoYXQgaGFwcGVucyBpZiBhIGNvbmZsaWN0IGNhbm5vdCBiZSByZXNvbHZlZD8NCg0KQTogT3Jn LWNvbmZsaWN0IChhcyB5ZXQpIGNhbm5vdCBrbm93IGlmIGEgcmVzb2x1dGlvbiBpcw0KICAgY29t cHV0YXRpb25hbGx5IGltcG9zc2libGUgb3IgdGhhdCBpdCBtaWdodCBhdmFpbGFibGUsIGJ1dCBu b3QgaW4NCiAgIHRoZSBmb3Jlc2VlYWJsZSBmdXR1cmUuICBUaGUgZmlyc3QgY2FzZSB3b3VsZCBi ZSB0byBmaW5kIGEgMTAtaG91cg0KICAgc2xvdCBwcmV2ZW50ZWQgYnkgdGhlIGFib3ZlICJhZnRl ciBob3VycyIgcmVwZWF0ZXIgYWxsb3dpbmcgb25seSBhbg0KICAgZWlnaHQgaG91ciB3b3JraW5n IGRheS4NCg0KICAgQnkgZGVmYXVsdCwgb3JnLWNvbmZsaWN0IHdpbGwgc2VhcmNoIHRoZSBuZXh0 IDMwIGRheXMgZnJvbSB0aGUNCiAgIHN0YXJ0IGRheSBvZiB0aGUgdGVzdCBpdGVtLiAgSWYgaXQg Y2Fubm90IGZpbmQgYSBzb2x1dGlvbiBpbiB0aGF0DQogICB0aW1lIGZyYW1lLCBpdCB3aWxsIGFz ayB3aGV0aGVyIHRvIGtlZXAgc2VhcmNoaW5nIHRoZSBmb2xsb3dpbmcgMzANCiAgIGRheXMgb3Ig YWJvcnQgKGNhbGxlZCBub24taW50ZXJhY3RpdmVseSwgaXQgd2lsbCByZXR1cm4gbmlsDQogICBp bW1lZGlhdGVseSkuDQoNCiAgIFRoaXMgcGFyYW1ldGVyIGlzIGNvbmZpZ3VyZWQgYnkgdGhlIHZh cmlhYmxlDQogICAnb3JnLWNvbmZsaWN0LXJlc29sdXRpb24taG9yaXpvbi1kYXlzIG9yIHRoZSAi UmVzb2x1dGlvbiBIb3Jpem9uIg0KICAgY3VzdG9taXphdGlvbiBpdGVtLg0KDQoqIFE6IENhbiBJ IHVzZSBvcmctY29uZmxpY3QgZnJvbSBhIHByb2dyYW0/DQoNCkE6IFllcy4gUmVmZXIgdG8gdGhl IGRvY3N0cmluZyBvZiBgb3JnLWNvbmZsaWN0LWNvbmZsaWN0LXAnIGZvcg0KICAgZGV0YWlscy4g IEluIGl0cyBzaW1wbGVzdCBmb3JtLCBpdCB0YWtlcyBhIHRpbWUgdmFsdWUgYW5kIGFuDQogICBp bnRlZ2VyIHNwZWNpZnlpbmcgdGhlIGR1cmF0aW9uDQoNCiAgIChvcmctY29uZmxpY3QtY29uZmxp Y3QtcCAnKDAgMzAgMTAgMiA4IDIwMTkpIDQ1KQ0KDQogICBhbmQgYmVoYXZlcyBsaWtlIGEgcHJl ZGljYXRlIHJldHVybmluZyBhIGJvb2xlYW4gaW5kaWNhdGluZyB0aGUNCiAgIGNvbmZsaWN0IHN0 YXR1cywgdCBmb3Igb3VyIHRlc3QgY2FzZS4gIEFkZGl0aW9uYWwgYXJndW1lbnRzIHJldHVybg0K ICAgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGRldGVjdGVkIGNvbmZsaWN0cyBvciB0aGVpciByZXNv bHV0aW9uDQogICBpbnN0ZWFkLg0K --jJ5DeAOFrT--