Return-Path: Delivered-To: apmail-xml-xerces-j-dev-archive@www.apache.org Received: (qmail 72567 invoked from network); 28 Sep 2004 22:11:01 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (209.237.227.199) by minotaur-2.apache.org with SMTP; 28 Sep 2004 22:11:01 -0000 Received: (qmail 38231 invoked by uid 500); 28 Sep 2004 22:10:59 -0000 Delivered-To: apmail-xml-xerces-j-dev-archive@xml.apache.org Received: (qmail 38192 invoked by uid 500); 28 Sep 2004 22:10:58 -0000 Mailing-List: contact xerces-j-dev-help@xml.apache.org; run by ezmlm Precedence: bulk Reply-To: xerces-j-dev@xml.apache.org list-help: list-unsubscribe: list-post: Delivered-To: mailing list xerces-j-dev@xml.apache.org Received: (qmail 38179 invoked by uid 99); 28 Sep 2004 22:10:58 -0000 X-ASF-Spam-Status: No, hits=0.3 required=10.0 tests=DNS_FROM_RFC_ABUSE,HTML_50_60,HTML_MESSAGE X-Spam-Check-By: apache.org Received-SPF: pass (hermes.apache.org: local policy) Received: from [32.97.182.103] (HELO e3.ny.us.ibm.com) (32.97.182.103) by apache.org (qpsmtpd/0.28) with ESMTP; Tue, 28 Sep 2004 15:10:54 -0700 Received: from northrelay02.pok.ibm.com (northrelay02.pok.ibm.com [9.56.224.150]) by e3.ny.us.ibm.com (8.12.10/8.12.9) with ESMTP id i8SMAhRV209216 for ; Tue, 28 Sep 2004 18:10:43 -0400 Received: from d25ml02.torolab.ibm.com (d01av02.pok.ibm.com [9.56.224.216]) by northrelay02.pok.ibm.com (8.12.10/NCO/VER6.6) with ESMTP id i8SMBu7p117326 for ; Tue, 28 Sep 2004 18:11:57 -0400 In-Reply-To: To: xerces-j-dev@xml.apache.org MIME-Version: 1.0 Subject: Re: Revised patch - Schema 1.1: timeOnTimeline for date/time values X-Mailer: Lotus Notes Release 6.0.2CF1 June 9, 2003 Message-ID: From: Naela Nissar Date: Tue, 28 Sep 2004 18:10:41 -0400 X-MIMETrack: Serialize by Router on D25ML02/25/M/IBM(Release 6.0.2CF1|June 9, 2003) at 09/28/2004 18:10:43 Content-Type: multipart/mixed; boundary="=_mixed 0079CEC885256F1D_=" X-Virus-Checked: Checked X-Spam-Rating: minotaur-2.apache.org 1.6.2 0/1000/N --=_mixed 0079CEC885256F1D_= Content-Type: multipart/alternative; boundary="=_alternative 0079CEC885256F1D_=" --=_alternative 0079CEC885256F1D_= Content-Type: text/plain; charset="US-ASCII" Attaching a patch for timeOnTimeline that's against the latest code in CVS (timezone preservation). Also contains a fix ... thanks to Ankit for pointing out the problem. This replaces both prior patches. Naela Nissar XML Parser Development IBM Toronto Lab 8200 Warden Ave., Markham, ON Phone: 905-413-4376 Naela Nissar/Toronto/IBM 09/28/2004 03:32 PM To xerces-j-dev@xml.apache.org cc Subject Revised patch - Schema 1.1: timeOnTimeline for date/time values This patch implements the timeOnTimeline property for date/time values as described in XML Schema 1.1 - D2.2. This property is now computed for both Schema 1.0 and Schema 1.1 values and is used in comparing date/time values, replacing the existing method to compare dates (except for duration datatypes). Also fixes a bug where the year 0000 was arising post-normalization in Schema 1.0 values. This replaces the previous patch posted. [attachment "revisedTimeOnTimelinepatch" deleted by Naela Nissar/Toronto/IBM] Naela Nissar XML Parser Development IBM Toronto Lab 8200 Warden Ave., Markham, ON Phone: 905-413-4376 --=_alternative 0079CEC885256F1D_= Content-Type: text/html; charset="US-ASCII"
Attaching a patch for timeOnTimeline that's against the latest code in CVS (timezone preservation).  Also contains a fix  ... thanks to Ankit for pointing out the problem.
This replaces both prior patches.


Naela Nissar
XML Parser Development
IBM Toronto Lab
8200 Warden Ave., Markham, ON
Phone: 905-413-4376    








Naela Nissar/Toronto/IBM

09/28/2004 03:32 PM

To
xerces-j-dev@xml.apache.org
cc
Subject
Revised patch - Schema 1.1: timeOnTimeline for date/time values




This patch implements the timeOnTimeline property for date/time values as described in XML Schema 1.1 - D2.2.  This property is now computed for both Schema 1.0 and Schema 1.1 values and is used in comparing date/time values, replacing the existing method to compare dates (except for duration datatypes).  Also fixes a bug where the year 0000 was arising post-normalization in Schema 1.0 values.

This replaces the previous patch posted.


[attachment "revisedTimeOnTimelinepatch" deleted by Naela Nissar/Toronto/IBM]



Naela Nissar
XML Parser Development
IBM Toronto Lab
8200 Warden Ave., Markham, ON
Phone: 905-413-4376    
--=_alternative 0079CEC885256F1D_=-- --=_mixed 0079CEC885256F1D_= Content-Type: application/octet-stream; name="TimeOnTimelinePatch_headCVS" Content-Disposition: attachment; filename="TimeOnTimelinePatch_headCVS" Content-Transfer-Encoding: base64 SW5kZXg6IHNyYy9vcmcvYXBhY2hlL3hlcmNlcy9pbXBsL2R2L3hzL0Fic3RyYWN0RGF0ZVRpbWVE Vi5qYXZhDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09DQpSQ1MgZmlsZTogL2hvbWUvY3ZzcHVibGljL3htbC14ZXJjZXMv amF2YS9zcmMvb3JnL2FwYWNoZS94ZXJjZXMvaW1wbC9kdi94cy9BYnN0cmFjdERhdGVUaW1lRFYu amF2YSx2DQpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMTcNCmRpZmYgLXUgLXIxLjE3IEFic3RyYWN0 RGF0ZVRpbWVEVi5qYXZhDQotLS0gc3JjL29yZy9hcGFjaGUveGVyY2VzL2ltcGwvZHYveHMvQWJz dHJhY3REYXRlVGltZURWLmphdmEJMjggU2VwIDIwMDQgMjE6MTI6MzMgLTAwMDAJMS4xNw0KKysr IHNyYy9vcmcvYXBhY2hlL3hlcmNlcy9pbXBsL2R2L3hzL0Fic3RyYWN0RGF0ZVRpbWVEVi5qYXZh CTI4IFNlcCAyMDA0IDIxOjM4OjAwIC0wMDAwDQpAQCAtNDQsMTAgKzQ0LDEwIEBADQogDQogDQog ICAgIC8vZGVmaW5lIGNvbnN0YW50cyB0byBiZSB1c2VkIGluIGFzc2lnbmluZyBkZWZhdWx0IHZh bHVlcyBmb3INCi0gICAgLy9hbGwgZGF0ZS90aW1lIGV4Y2x1ZGluZyBkdXJhdGlvbg0KLSAgICBw cm90ZWN0ZWQgZmluYWwgc3RhdGljIGludCBZRUFSPTIwMDA7DQotICAgIHByb3RlY3RlZCBmaW5h bCBzdGF0aWMgaW50IE1PTlRIPTAxOw0KLSAgICBwcm90ZWN0ZWQgZmluYWwgc3RhdGljIGludCBE QVkgPSAxNTsNCisgICAgLy9hbGwgZGF0ZS90aW1lIGV4Y2x1ZGluZyBkdXJhdGlvbiAoc3BlY2lm aWVkIGluIFhNTCBTY2hlbWEgMS4xKQ0KKyAgICBwcm90ZWN0ZWQgZmluYWwgc3RhdGljIGludCBZ RUFSPTE5NzE7DQorICAgIHByb3RlY3RlZCBmaW5hbCBzdGF0aWMgaW50IE1PTlRIPTEyOw0KKyAg ICBwcm90ZWN0ZWQgZmluYWwgc3RhdGljIGludCBEQVkgPSAzMTsNCiANCiAgICAgcHVibGljIHNo b3J0IGdldEFsbG93ZWRGYWNldHMoKXsNCiAgICAgICAgIHJldHVybiAoIFhTU2ltcGxlVHlwZURl Y2wuRkFDRVRfUEFUVEVSTiB8IFhTU2ltcGxlVHlwZURlY2wuRkFDRVRfV0hJVEVTUEFDRSB8IFhT U2ltcGxlVHlwZURlY2wuRkFDRVRfRU5VTUVSQVRJT04gfFhTU2ltcGxlVHlwZURlY2wuRkFDRVRf TUFYSU5DTFVTSVZFIHxYU1NpbXBsZVR5cGVEZWNsLkZBQ0VUX01JTklOQ0xVU0lWRSB8IFhTU2lt cGxlVHlwZURlY2wuRkFDRVRfTUFYRVhDTFVTSVZFICB8IFhTU2ltcGxlVHlwZURlY2wuRkFDRVRf TUlORVhDTFVTSVZFICApOw0KQEAgLTU1LDEzMiArNTUsMTExIEBADQogDQogICAgIC8vIHRoZSBw YXJhbWV0ZXJzIGFyZSBpbiBjb21waWxlZCBmb3JtIChmcm9tIGdldEFjdHVhbFZhbHVlKQ0KICAg ICBwdWJsaWMgaW50IGNvbXBhcmUgKE9iamVjdCB2YWx1ZTEsIE9iamVjdCB2YWx1ZTIpIHsNCi0g ICAgICAgIHJldHVybiBjb21wYXJlRGF0ZXMoKChEYXRlVGltZURhdGEpdmFsdWUxKSwNCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgKChEYXRlVGltZURhdGEpdmFsdWUyKSwgdHJ1ZSk7DQor ICAgIAlpZiAodGhpcyBpbnN0YW5jZW9mIER1cmF0aW9uRFYpIHsNCisgICAgCQlyZXR1cm4gKChE dXJhdGlvbkRWKXRoaXMpLmNvbXBhcmVEYXRlcygoKERhdGVUaW1lRGF0YSl2YWx1ZTEpLCAoKERh dGVUaW1lRGF0YSl2YWx1ZTIpLCB0cnVlKTsNCisgICAgCX0NCisgICAgCQ0KKyAgICAJLy9kYXRl L3RpbWUgZGF0YXR5cGVzIChleGNlcHQgZm9yIGR1cmF0aW9uIHR5cGVzKSBhcmUgY29tcGFyZWQg dXNpbmcgdGhlaXIgdGltZU9uVGltZWxpbmUgdmFsdWVzIA0KKyAgICAJcmV0dXJuIGNvbXBhcmVU aW1lT25UaW1lbGluZSgoRGF0ZVRpbWVEYXRhKXZhbHVlMSwgKERhdGVUaW1lRGF0YSl2YWx1ZTIp Ow0KKyAgICAgICAgIA0KICAgICB9Ly9jb21wYXJlKCkNCiANCi0gICAgLyoqDQotICAgICAqIENv bXBhcmUgYWxnb3JpdGhtIGRlc2NyaWJlZCBpbiBkYXRlRGltZSAoMy4yLjcpLg0KLSAgICAgKiBE dXJhdGlvbiBkYXRhdHlwZSBvdmVyd3JpdGVzIHRoaXMgbWV0aG9kDQotICAgICAqDQotICAgICAq IEBwYXJhbSBkYXRlMSAgbm9ybWFsaXplZCBkYXRlIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBmaXJz dCB2YWx1ZQ0KLSAgICAgKiBAcGFyYW0gZGF0ZTIgIG5vcm1hbGl6ZWQgZGF0ZSByZXByZXNlbnRh dGlvbiBvZiB0aGUgc2Vjb25kIHZhbHVlDQotICAgICAqIEBwYXJhbSBzdHJpY3QNCi0gICAgICog QHJldHVybiBsZXNzLCBncmVhdGVyLCBsZXNzX2VxdWFsLCBncmVhdGVyX2VxdWFsLCBlcXVhbA0K KyAgICAvKiogDQorICAgICAqIFhNTCBTY2hlbWEgMS4xIChhbmQgYWxzbyB1c2VkIHRvIGNvbXBh cmUgU2NoZW1hIDEuMCBkYXRlL3RpbWUgdmFsdWVzKQ0KKyAgICAgKiBDb21wYXJlIHRpbWVPblRp bWVsaW5lIHZhbHVlcyAtIGRpc2N1c3NlZCBpbiBTY2hlbWEgMS4xIC0gMy4yLjguNCBPcmRlciBy ZWxhdGlvbiBvbiBkYXRlVGltZQ0KKyAgICAgKg0KKyAgICAgKiBAcGFyYW0gIGRhdGUxICBub3Jt YWxpemVkIGRhdGUgcmVwcmVzZW50YXRpb24gb2YgdGhlIGZpcnN0IHZhbHVlDQorICAgICAqIEBw YXJhbSAgZGF0ZTIgIG5vcm1hbGl6ZWQgZGF0ZSByZXByZXNlbnRhdGlvbiBvZiB0aGUgc2Vjb25k IHZhbHVlDQorICAgICAqIEByZXR1cm4gSU5ERVRFUk1JTkFURSBpZiB0aGUgb3JkZXIgcmVsYXRp b25zaGlwIGJldHdlZW4gZGF0ZTEgYW5kIGRhdGUyIGlzIGluZGV0ZXJtaW5hdGUuDQorICAgICAq IEVRVUFMIGlmIHRoZSBvcmRlciByZWxhdGlvbiBiZXR3ZWVuIGRhdGUxIGFuZCBkYXRlMiBpcyBF UVVBTC4NCisgICAgICogTEVTU19USEFOIGlmIGRhdGUxIGlzIGxlc3MgdGhhbiBkYXRlMiBhbmQg cmV0dXJuIEdSRUFURVJfVEhBTiBpZiBkYXRlMSBpcyBncmVhdGVyIHRoYW4gZGF0ZTIuDQogICAg ICAqLw0KLSAgICBwcm90ZWN0ZWQgc2hvcnQgY29tcGFyZURhdGVzKERhdGVUaW1lRGF0YSBkYXRl MSwgRGF0ZVRpbWVEYXRhIGRhdGUyLCBib29sZWFuIHN0cmljdCkgew0KLSAgICAgICAgaWYgKGRh dGUxLnV0YyA9PSBkYXRlMi51dGMpIHsNCi0gICAgICAgICAgICByZXR1cm4gY29tcGFyZU9yZGVy KGRhdGUxLCBkYXRlMik7DQotICAgICAgICB9DQotICAgICAgICBzaG9ydCBjMSwgYzI7DQotDQot ICAgICAgICBEYXRlVGltZURhdGEgdGVtcERhdGUgPSBuZXcgRGF0ZVRpbWVEYXRhKHRoaXMpOw0K LQ0KLSAgICAgICAgaWYgKCBkYXRlMS51dGM9PSdaJyApIHsNCi0NCi0gICAgICAgICAgICAvL2Nv bXBhcmUgZGF0ZTE8PWRhdGUxPD0oZGF0ZTIgd2l0aCB0aW1lIHpvbmUgLTE0KQ0KLSAgICAgICAg ICAgIC8vDQotICAgICAgICAgICAgY2xvbmVEYXRlKGRhdGUyLCB0ZW1wRGF0ZSk7IC8vY2xvbmVz IGRhdGUxIHZhbHVlIHRvIGdsb2JhbCB0ZW1wb3Jhcnkgc3RvcmFnZTogZlRlbXBEYXRlDQotICAg ICAgICAgICAgdGVtcERhdGUudGltZXpvbmVIcj0xNDsNCi0gICAgICAgICAgICB0ZW1wRGF0ZS50 aW1lem9uZU1pbiA9IDA7DQotICAgICAgICAgICAgdGVtcERhdGUudXRjPScrJzsNCi0gICAgICAg ICAgICBub3JtYWxpemUodGVtcERhdGUpOw0KLSAgICAgICAgICAgIGMxID0gY29tcGFyZU9yZGVy KGRhdGUxLCB0ZW1wRGF0ZSk7DQotICAgICAgICAgICAgaWYgKGMxID09IExFU1NfVEhBTikNCi0g ICAgICAgICAgICAgICAgcmV0dXJuIGMxOw0KLQ0KLSAgICAgICAgICAgIC8vY29tcGFyZSBkYXRl MT49KGRhdGUyIHdpdGggdGltZSB6b25lICsxNCkNCi0gICAgICAgICAgICAvLw0KLSAgICAgICAg ICAgIGNsb25lRGF0ZShkYXRlMiwgdGVtcERhdGUpOyAvL2Nsb25lcyBkYXRlMSB2YWx1ZSB0byBn bG9iYWwgdGVtcG9yYXJ5IHN0b3JhZ2U6IHRlbXBEYXRlDQotICAgICAgICAgICAgdGVtcERhdGUu dGltZXpvbmVIciA9IC0xNDsNCi0gICAgICAgICAgICB0ZW1wRGF0ZS50aW1lem9uZU1pbiA9IDA7 DQotICAgICAgICAgICAgdGVtcERhdGUudXRjPSctJzsNCi0gICAgICAgICAgICBub3JtYWxpemUo dGVtcERhdGUpOw0KLSAgICAgICAgICAgIGMyID0gY29tcGFyZU9yZGVyKGRhdGUxLCB0ZW1wRGF0 ZSk7DQotICAgICAgICAgICAgaWYgKGMyID09IEdSRUFURVJfVEhBTikNCi0gICAgICAgICAgICAg ICAgcmV0dXJuIGMyOw0KLQ0KLSAgICAgICAgICAgIHJldHVybiBJTkRFVEVSTUlOQVRFOw0KLSAg ICAgICAgfQ0KLSAgICAgICAgZWxzZSBpZiAoIGRhdGUyLnV0Yz09J1onICkgew0KLQ0KLSAgICAg ICAgICAgIC8vY29tcGFyZSAoZGF0ZTEgd2l0aCB0aW1lIHpvbmUgLTE0KTw9ZGF0ZTINCi0gICAg ICAgICAgICAvLw0KLSAgICAgICAgICAgIGNsb25lRGF0ZShkYXRlMSwgdGVtcERhdGUpOyAvL2Ns b25lcyBkYXRlMSB2YWx1ZSB0byBnbG9iYWwgdGVtcG9yYXJ5IHN0b3JhZ2U6IHRlbXBEYXRlDQot ICAgICAgICAgICAgdGVtcERhdGUudGltZXpvbmVIciA9IC0xNDsNCi0gICAgICAgICAgICB0ZW1w RGF0ZS50aW1lem9uZU1pbiA9IDA7DQotICAgICAgICAgICAgdGVtcERhdGUudXRjPSctJzsNCi0g ICAgICAgICAgICBpZiAoREVCVUcpIHsNCi0gICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50 bG4oInRlbXBEYXRlPSIgKyBkYXRlVG9TdHJpbmcodGVtcERhdGUpKTsNCi0gICAgICAgICAgICB9 DQotICAgICAgICAgICAgbm9ybWFsaXplKHRlbXBEYXRlKTsNCi0gICAgICAgICAgICBjMSA9IGNv bXBhcmVPcmRlcih0ZW1wRGF0ZSwgZGF0ZTIpOw0KLSAgICAgICAgICAgIGlmIChERUJVRykgew0K LSAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oImRhdGU9IiArIGRhdGVUb1N0cmlu ZyhkYXRlMikpOw0KLSAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oInRlbXBEYXRl PSIgKyBkYXRlVG9TdHJpbmcodGVtcERhdGUpKTsNCi0gICAgICAgICAgICB9DQotICAgICAgICAg ICAgaWYgKGMxID09IExFU1NfVEhBTikNCi0gICAgICAgICAgICAgICAgcmV0dXJuIGMxOw0KLQ0K LSAgICAgICAgICAgIC8vY29tcGFyZSAoZGF0ZTEgd2l0aCB0aW1lIHpvbmUgKzE0KTw9ZGF0ZTIN Ci0gICAgICAgICAgICAvLw0KLSAgICAgICAgICAgIGNsb25lRGF0ZShkYXRlMSwgdGVtcERhdGUp OyAvL2Nsb25lcyBkYXRlMSB2YWx1ZSB0byBnbG9iYWwgdGVtcG9yYXJ5IHN0b3JhZ2U6IHRlbXBE YXRlDQotICAgICAgICAgICAgdGVtcERhdGUudGltZXpvbmVIciA9IDE0Ow0KLSAgICAgICAgICAg IHRlbXBEYXRlLnRpbWV6b25lTWluID0gMDsNCi0gICAgICAgICAgICB0ZW1wRGF0ZS51dGM9Jysn Ow0KLSAgICAgICAgICAgIG5vcm1hbGl6ZSh0ZW1wRGF0ZSk7DQotICAgICAgICAgICAgYzIgPSBj b21wYXJlT3JkZXIodGVtcERhdGUsIGRhdGUyKTsNCi0gICAgICAgICAgICBpZiAoREVCVUcpIHsN Ci0gICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oInRlbXBEYXRlPSIgKyBkYXRlVG9T dHJpbmcodGVtcERhdGUpKTsNCi0gICAgICAgICAgICB9DQotICAgICAgICAgICAgaWYgKGMyID09 IEdSRUFURVJfVEhBTikNCi0gICAgICAgICAgICAgICAgcmV0dXJuIGMyOw0KLQ0KLSAgICAgICAg ICAgIHJldHVybiBJTkRFVEVSTUlOQVRFOw0KLSAgICAgICAgfQ0KLSAgICAgICAgcmV0dXJuIElO REVURVJNSU5BVEU7DQotDQotICAgIH0NCi0NCi0gICAgLyoqDQotICAgICAqIEdpdmVuIG5vcm1h bGl6ZWQgdmFsdWVzLCBkZXRlcm1pbmVzIG9yZGVyLXJlbGF0aW9uDQotICAgICAqIGJldHdlZW4g Z2l2ZSBkYXRlL3RpbWUgb2JqZWN0cy4NCi0gICAgICoNCi0gICAgICogQHBhcmFtIGRhdGUxICBk YXRlL3RpbWUgb2JqZWN0DQotICAgICAqIEBwYXJhbSBkYXRlMiAgZGF0ZS90aW1lIG9iamVjdA0K LSAgICAgKiBAcmV0dXJuIDAgaWYgZGF0ZTEgYW5kIGRhdGUyIGFyZSBlcXVhbCwgYSB2YWx1ZSBs ZXNzIHRoYW4gMCBpZiBkYXRlMSBpcyBsZXNzIHRoYW4gZGF0ZTIsIGEgdmFsdWUgZ3JlYXRlciB0 aGFuIDAgaWYgZGF0ZTEgaXMgZ3JlYXRlciB0aGFuIGRhdGUyDQotICAgICAqLw0KLSAgICBwcm90 ZWN0ZWQgc2hvcnQgY29tcGFyZU9yZGVyKERhdGVUaW1lRGF0YSBkYXRlMSwgRGF0ZVRpbWVEYXRh IGRhdGUyKSB7DQotICAgICAgICBpZiAoZGF0ZTEueWVhciA8IGRhdGUyLnllYXIpDQotICAgICAg ICAgICAgcmV0dXJuIC0xOw0KLSAgICAgICAgaWYgKGRhdGUxLnllYXIgPiBkYXRlMi55ZWFyKQ0K LSAgICAgICAgICAgIHJldHVybiAxOw0KLSAgICAgICAgaWYgKGRhdGUxLm1vbnRoIDwgZGF0ZTIu bW9udGgpDQotICAgICAgICAgICAgcmV0dXJuIC0xOw0KLSAgICAgICAgaWYgKGRhdGUxLm1vbnRo ID4gZGF0ZTIubW9udGgpDQotICAgICAgICAgICAgcmV0dXJuIDE7DQotICAgICAgICBpZiAoZGF0 ZTEuZGF5IDwgZGF0ZTIuZGF5KQ0KLSAgICAgICAgICAgIHJldHVybiAtMTsNCi0gICAgICAgIGlm IChkYXRlMS5kYXkgPiBkYXRlMi5kYXkpDQotICAgICAgICAgICAgcmV0dXJuIDE7DQotICAgICAg ICBpZiAoZGF0ZTEuaG91ciA8IGRhdGUyLmhvdXIpDQotICAgICAgICAgICAgcmV0dXJuIC0xOw0K LSAgICAgICAgaWYgKGRhdGUxLmhvdXIgPiBkYXRlMi5ob3VyKQ0KLSAgICAgICAgICAgIHJldHVy biAxOw0KLSAgICAgICAgaWYgKGRhdGUxLm1pbnV0ZSA8IGRhdGUyLm1pbnV0ZSkNCi0gICAgICAg ICAgICByZXR1cm4gLTE7DQotICAgICAgICBpZiAoZGF0ZTEubWludXRlID4gZGF0ZTIubWludXRl KQ0KLSAgICAgICAgICAgIHJldHVybiAxOw0KLSAgICAgICAgaWYgKGRhdGUxLnNlY29uZCA8IGRh dGUyLnNlY29uZCkNCi0gICAgICAgICAgICByZXR1cm4gLTE7DQotICAgICAgICBpZiAoZGF0ZTEu c2Vjb25kID4gZGF0ZTIuc2Vjb25kKQ0KLSAgICAgICAgICAgIHJldHVybiAxOw0KLSAgICAgICAg aWYgKGRhdGUxLnV0YyA8IGRhdGUyLnV0YykNCi0gICAgICAgICAgICByZXR1cm4gLTE7DQotICAg ICAgICBpZiAoZGF0ZTEudXRjID4gZGF0ZTIudXRjKQ0KLSAgICAgICAgICAgIHJldHVybiAxOw0K LSAgICAgICAgcmV0dXJuIDA7DQorICAgIHByb3RlY3RlZCBpbnQgY29tcGFyZVRpbWVPblRpbWVs aW5lKERhdGVUaW1lRGF0YSBkYXRlMSwgRGF0ZVRpbWVEYXRhIGRhdGUyKSB7DQorICAgIAkNCisg ICAgICAgIC8vIGJvdGggZG8gb3IgZG9uJ3QgaGF2ZSB0aW1lem9uZQ0KKyAgICAJaWYgKGRhdGUx LnV0YyA9PSBkYXRlMi51dGMpIHsgDQorICAgCQkgICAgLy9hcmUgdGltZU9uVGltZWxpbmUgdmFs dWVzIGVxdWFsPw0KKyAgICAJCWlmIChkYXRlMS50aW1lT25UaW1lbGluZSA9PSBkYXRlMi50aW1l T25UaW1lbGluZSkgew0KKyAgICAJCQlyZXR1cm4gRVFVQUw7DQorICAgIAkJfQ0KKyAgICAJCXJl dHVybiAoZGF0ZTEudGltZU9uVGltZWxpbmUgPCBkYXRlMi50aW1lT25UaW1lbGluZT8gLTE6MSk7 DQorICAgIAl9DQorICAgIAkNCisgICAgCWRvdWJsZSBkaWZmZXJlbmNlID0gZGF0ZTEudGltZU9u VGltZWxpbmUgLSBkYXRlMi50aW1lT25UaW1lbGluZTsNCisgICAgCQ0KKyAgICAJLy9pZiB0aW1l T25UaW1lbGluZSB2YWx1ZXMgZGlmZmVyIGJ5IDE0IGhvdXJzIG9yIGxlc3MsIGluY29tcGFyYWJs ZQ0KKyAgICAJaWYgKGRpZmZlcmVuY2UgPD0gNTA0MDAgJiYgZGlmZmVyZW5jZSA+PSAtNTA0MDAp IA0KKyAgICAJCXJldHVybiBJTkRFVEVSTUlOQVRFOw0KKyAgICAJDQorICAgIAkNCisgICAgCWRv dWJsZSBkMSwgZDI7DQorICAgIAlkMSA9IGRhdGUxLnRpbWVPblRpbWVsaW5lOw0KKyAgICAJZDIg PSBkYXRlMi50aW1lT25UaW1lbGluZTsNCisgICAgCQ0KKyAgICAgICAgLy9kYXRlMSBoYXMgdGlt ZXpvbmU7IGRhdGUyIGRvZXMgbm90DQorICAgIAlpZiAoZGF0ZTEudXRjID09ICdaJykgeyANCisg ICAgCQkvL2FkZCB0aW1lem9uZSAtMTQ6MDAgdG8gZGF0ZTINCisgICAgCQlkMis9NTA0MDA7IA0K KyAgICAJfSANCisgICAgCWVsc2Ugew0KKyAgICAJCS8vYWRkIHRpbWV6b25lIC0xNDowMCB0byBk YXRlMQ0KKyAgICAJCWQxKz01MDQwMDsNCisgICAgCX0NCisgICAgCQkNCisgICAgCXJldHVybiAo ZDEgPCBkMj8gLTE6MSk7IAkgIAkNCisgICAJDQorICAgIH0NCisgICAgDQorICAgDQorICAgDQor ICAgIC8qKiANCisgICAgICogQ29tcHV0ZSB0aW1lT25UaW1lbGluZSB2YWx1ZSBmb3IgYSBEYXRl VGltZURhdGEgc3RydWN0dXJlDQorICAgICAqIGNhbGN1bGF0ZSB0aW1lT25UaW1lbGluZSBhbGdv cml0aG0gZGVzY3JpYmVkIGluIFNjaGVtYSAxLjEgLSBFLjMgVGltZSBvbiBUaW1lbGluZSANCisg ICAgICogDQorICAgICAqIEBwYXJhbSBkYXRhICBub3JtYWxpemVkIGRhdGUgcmVwcmVzZW50YXRp b24gDQorICAgICAqIEByZXR1cm4gYSB2YWx1ZSBkaW1lbnNpb25lZCBpbiBzZWNvbmRzIGNvbXB1 dGVkIHVzaW5nIHRoZSBHcmVnb3JpYW4gYWxnb3JpdGhtIGFzIA0KKyAgICAgKiBtb2RpZmllZCBm b3IgbGVhcC1zZWNvbmRzOyB0aGUgdGltZWxpbmUgb3JpZ2luIHBvaW50LCAwMDAxLTAxLTAxVDAw OjAwOjAwLCBpcyByZXByZXNlbnRlZCBieSAwIA0KKyAgICAgKi8NCisgICAgcHJvdGVjdGVkIHZv aWQgY2FsY1RpbWVPblRpbWVsaW5lIChEYXRlVGltZURhdGEgZGF0YSkgew0KKyAgICAJZG91Ymxl IHRvdGw7DQorICAgIAlpbnQgeXIsIGRhOyANCisgICAgCQ0KKyAgICAJLy9hZGp1c3QgZGF5IHZh bHVlIHRvIHZhbHVlIG5lZWRlZCBmb3IgYWxnb3JpdGhtDQorICAgIAlkYSA9IGRhdGEuZGF5IC0g MTsNCisgICAgIA0KKyAgICAgICAgLy9zZXQgdmFsdWVzIG9mIHRlbXBEYXRlJ3MgZmllbGRzIHRv IHRob3NlIHNwZWNpZmllZCBpbiB0aW1lT25UaW1lbGluZSBhbGdvcml0aG0NCisgICAgICAgIC8v YWxnb3JpdGhtIGlzIGJhc2VkIG9uIFNjaGVtYSAxLjEgd2hpY2ggaW5jbHVkZXMgeWVhciAwMDAw LiBJZiBTY2hlbWEgMS4wIGlzIGluIHVzZSANCisgICAgCS8vYW5kIGRhdGUueWVhciBpcyBuZWdh dGl2ZSwgdGltZU9uVGltZWxpbmUgdmFsdWUgd2lsbCBiZSBvZmYgYnkgb25lIHllYXIgc28gDQor ICAgIAkvL2FjY291bnQgZm9yIHRoaXMgYnkga2VlcGluZyB0aGUgeXIgdmFsdWUgdGhlIHNhbWUN CisgICAgICAgIGlmIChDb25zdGFudHMuU0NIRU1BXzFfMV9TVVBQT1JUIHx8IGRhdGEueWVhciA+ IDAgKSB7DQorICAgICAgICAJeXIgPSBkYXRhLnllYXIgLSAxOw0KKyAgICAgICAgfQ0KKyAgICAg ICAgZWxzZSB7IC8vU0NIRU1BIDEuMCB3aXRoIGEgbmVnYXRpdmUgeWVhciAtIGRvbid0IGFkanVz dCB5ciB2YWx1ZQ0KKyAgICAgICAgCXlyID0gZGF0YS55ZWFyOw0KKyAgICAgICAgfQ0KKyAgICAg ICAgIA0KKyAgICAgICAgIAkNCisgICAgCS8veWVhciBjYWxjdWxhdGlvbiAoIyBvZiBjb21wbGV0 ZSB5ZWFycyAoYWxsIHRha2VuIHRvIGJlIG5vbiBsZWFwIHllYXIpICogIyBzZWNvbmRzL3llYXIp DQorICAgIAl0b3RsID0gKGRvdWJsZSl5ciAqIDMxNTM2MDAwOyAgICAJDQorICAgIAkNCisgICAg CS8vbGVhcC15ZWFyIGRheXMsIG1vbnRocyBhbmQgZGF5cw0KKyAgICAJDQorICAgIAlpbnQgdGVt cCA9IGZRdW90aWVudCh5ciwgNDAwKSAtIGZRdW90aWVudCh5ciwgMTAwKSArIGZRdW90aWVudCh5 ciwgNCk7DQorICAgICAgICB0b3RsKz0gKDg2NDAwICogdGVtcCk7IA0KKyAgICAJDQorICAgIAkv L3doZW4gY29tcHV0aW5nIHRoZSB0b3RhbCBudW1iZXIgb2YgZGF5cyBpbiBtb250aHMgbGVzcyB0 aGFuIGRhdGEubW9udGgNCisgICAgCS8vIGZvciBhIGdpdmVuIHllYXIsIHdlIG11c3QgcGFzcyB0 aGUgYWN0dWFsIHllYXIgDQorICAgIAl0b3RsKz0gODY0MDAgKiBOdW1EYXlzTGVzc1RoYW5Nb250 aEZvciAoeXIgKyAxLCBkYXRhLm1vbnRoKTsNCisgICAgCXRvdGwrPSA4NjQwMCAqIGRhOw0KKyAg ICAJDQorICAgIAkvL2hvdXIsIG1pbnV0ZSBhbmQgc2Vjb25kDQorICAgIAl0b3RsKz0gMzYwMCAq IGRhdGEuaG91ciArIDYwICogZGF0YS5taW51dGUgKyBkYXRhLnNlY29uZDsNCisgICAgCQ0KKyAg ICAJDQorICAgIAlkYXRhLnRpbWVPblRpbWVsaW5lID0gdG90bDsNCisgICAgDQogICAgIH0NCisg ICAgDQogDQogICAgIC8qKg0KICAgICAgKiBQYXJzZXMgdGltZSBoaDptbTpzcy5zc3MgYW5kIHRp bWUgem9uZSBpZiBhbnkNCkBAIC01NzcsNiArNTU2LDEzIEBADQogICAgICAgICAgICAgZGF0ZS5t b250aD1tb2R1bG8odGVtcCwgMSwgMTMpOw0KICAgICAgICAgICAgIGRhdGUueWVhcj1kYXRlLnll YXIrZlF1b3RpZW50KHRlbXAsIDEsIDEzKTsNCiAgICAgICAgIH0NCisgICAgICAgIA0KKyAgICAg ICAgLy9pZiBTY2hlbWEgMS4wIGlzIGluIHVzZSwgeWVhciAwMDAwIGlzIG5vdCBhbGxvd2VkIA0K KyAgICAgICAgLy9pZiBkYXRlLm1vbnRoIGlzIDEsIHllYXIgbXVzdCBiZSAwMDAxDQorICAgICAg ICBpZiAoIUNvbnN0YW50cy5TQ0hFTUFfMV8xX1NVUFBPUlQgJiYgZGF0ZS55ZWFyID09IDApIHsN CisgICAgICAgIAlkYXRlLnllYXIgPSAoZGF0ZS5tb250aCA9PSAxPyAxOi0xKTsNCisgICAgICAg IH0NCisgICAgICAgIA0KICAgICAgICAgZGF0ZS51dGM9J1onOw0KICAgICB9DQogDQpAQCAtNjI5 LDYgKzYxNSwxOSBAQA0KICAgICAgICAgLy9SRVZJU0lUOiBzaG91bGQgd2UgdGFrZSBjYXJlIGFi b3V0IEp1bGlhbiBjYWxlbmRhcj8NCiAgICAgICAgIHJldHVybigoeWVhciU0ID09IDApICYmICgo eWVhciUxMDAgIT0gMCkgfHwgKHllYXIlNDAwID09IDApKSk7DQogICAgIH0NCisgICAgDQorICAg IC8vICBoZWxwIGZ1bmN0aW9uOiBnaXZlbiBhIG1vbnRoIGFuZCBhIHllYXIsIHJldHVybnMgdGhl IHRvdGFsIG51bWJlciBvZiBkYXlzDQorICAgIC8vIGluIG1vbnRocyBsZXNzIHRoYW4gdGhlIG1v bnRoIGFyZ3VtZW50DQorICAgIHByaXZhdGUgaW50IE51bURheXNMZXNzVGhhbk1vbnRoRm9yIChp bnQgeWVhciwgaW50IG1vbnRoKSB7DQorICAgIAlmaW5hbCBpbnQgW10gbm9uTGVhcFllYXIgPSB7 MCwgMzEsIDU5LCA5MCwgMTIwLCAxNTEsIDE4MSwgMjEyLCAyNDMsIDI3MywgMzA0LCAzMzR9Ow0K KyAgICAJZmluYWwgaW50IFtdIExlYXBZZWFyID0gezAsIDMxLCA2MCwgOTEsIDEyMSwgMTUyLCAx ODIsIDIxMywgMjQ0LCAyNzQsIDMwNSwgMzM1fTsJDQorCSAgICAJDQorICAgIAkJaWYgKGlzTGVh cFllYXIoeWVhcikpIHsgICAJCQkNCisgICAgCQkJcmV0dXJuIExlYXBZZWFyW21vbnRoIC0gMV07 DQorICAgIAkJfQ0KKyAgICAgICAJDQorICAgIAlyZXR1cm4gbm9uTGVhcFllYXJbbW9udGggLSAx XTsNCisgICAgfQ0KIA0KICAgICAvLw0KICAgICAvLyBoZWxwIGZ1bmN0aW9uIGRlc2NyaWJlZCBp biBXM0MgUFIgU2NoZW1hIFtFIEFkZGluZyBkdXJhdGlvbnMgdG8gZGF0ZVRpbWVzXQ0KQEAgLTc2 MCw3ICs3NTksNyBAQA0KICAgICAgKi8NCiAgICAgc3RhdGljIGZpbmFsIGNsYXNzIERhdGVUaW1l RGF0YSB7DQogICAgICAgICBpbnQgeWVhciwgbW9udGgsIGRheSwgaG91ciwgbWludXRlLCB1dGM7 DQotICAgICAgICBkb3VibGUgc2Vjb25kOw0KKyAgICAgICAgZG91YmxlIHNlY29uZCwgdGltZU9u VGltZWxpbmU7DQogICAgICAgICBpbnQgdGltZXpvbmVIciwgdGltZXpvbmVNaW47DQogICAgICAg ICAvLyBhIHBvaW50ZXIgdG8gdGhlIHR5cGUgdGhhdCB3YXMgdXNlZCBnbyBnZW5lcmF0ZSB0aGlz IGRhdGENCiAgICAgICAgIC8vIG5vdGUgdGhhdCB0aGlzIGlzIG5vdCB0aGUgYWN0dWFsIHNpbXBs ZSB0eXBlLCBidXQgb25lIG9mIHRoZQ0KQEAgLTc4NCw3ICs3ODMsNyBAQA0KICAgICAgICAgcHVi bGljIGJvb2xlYW4gZXF1YWxzKE9iamVjdCBvYmopIHsNCiAgICAgICAgICAgICBpZiAoIShvYmog aW5zdGFuY2VvZiBEYXRlVGltZURhdGEpKQ0KICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7 DQotICAgICAgICAgICAgcmV0dXJuIHR5cGUuY29tcGFyZURhdGVzKHRoaXMsIChEYXRlVGltZURh dGEpb2JqLCB0cnVlKT09MDsNCisgICAgICAgICAgICByZXR1cm4gdHlwZS5jb21wYXJlKHRoaXMs IChEYXRlVGltZURhdGEpb2JqKT09MDsNCiAgICAgICAgIH0NCiAgICAgICAgIHB1YmxpYyBzeW5j aHJvbml6ZWQgU3RyaW5nIHRvU3RyaW5nKCkgew0KICAgICAgICAgICAgIGlmIChjYW5vbmljYWwg PT0gbnVsbCkgew0KSW5kZXg6IHNyYy9vcmcvYXBhY2hlL3hlcmNlcy9pbXBsL2R2L3hzL0RhdGVE Vi5qYXZhDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09DQpSQ1MgZmlsZTogL2hvbWUvY3ZzcHVibGljL3htbC14ZXJjZXMv amF2YS9zcmMvb3JnL2FwYWNoZS94ZXJjZXMvaW1wbC9kdi94cy9EYXRlRFYuamF2YSx2DQpyZXRy aWV2aW5nIHJldmlzaW9uIDEuMTINCmRpZmYgLXUgLXIxLjEyIERhdGVEVi5qYXZhDQotLS0gc3Jj L29yZy9hcGFjaGUveGVyY2VzL2ltcGwvZHYveHMvRGF0ZURWLmphdmEJMjggU2VwIDIwMDQgMjE6 MTI6MzMgLTAwMDAJMS4xMg0KKysrIHNyYy9vcmcvYXBhY2hlL3hlcmNlcy9pbXBsL2R2L3hzL0Rh dGVEVi5qYXZhCTI4IFNlcCAyMDA0IDIxOjM4OjAwIC0wMDAwDQpAQCAtNTksNiArNTksOSBAQA0K ICAgICAgICAgaWYgKGRhdGUudXRjIT0wICYmIGRhdGUudXRjIT0nWicpIHsNCiAgICAgICAgICAg ICBub3JtYWxpemUoZGF0ZSk7DQogICAgICAgICB9DQorICAgICAgICANCisgICAgICAgIC8vc2V0 dGluZyBvZiB0aW1lT25UaW1lbGluZSB2YWx1ZQ0KKyAgICAgICAgY2FsY1RpbWVPblRpbWVsaW5l KGRhdGUpOw0KICAgICAgICAgcmV0dXJuIGRhdGU7DQogICAgIH0NCiANCkluZGV4OiBzcmMvb3Jn L2FwYWNoZS94ZXJjZXMvaW1wbC9kdi94cy9EYXRlVGltZURWLmphdmENCj09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NClJD UyBmaWxlOiAvaG9tZS9jdnNwdWJsaWMveG1sLXhlcmNlcy9qYXZhL3NyYy9vcmcvYXBhY2hlL3hl cmNlcy9pbXBsL2R2L3hzL0RhdGVUaW1lRFYuamF2YSx2DQpyZXRyaWV2aW5nIHJldmlzaW9uIDEu MTANCmRpZmYgLXUgLXIxLjEwIERhdGVUaW1lRFYuamF2YQ0KLS0tIHNyYy9vcmcvYXBhY2hlL3hl cmNlcy9pbXBsL2R2L3hzL0RhdGVUaW1lRFYuamF2YQkyOCBTZXAgMjAwNCAyMToxMjozMyAtMDAw MAkxLjEwDQorKysgc3JjL29yZy9hcGFjaGUveGVyY2VzL2ltcGwvZHYveHMvRGF0ZVRpbWVEVi5q YXZhCTI4IFNlcCAyMDA0IDIxOjM4OjAwIC0wMDAwDQpAQCAtNzEsNiArNzEsOSBAQA0KICAgICAg ICAgaWYgKGRhdGUudXRjIT0wICYmIGRhdGUudXRjIT0nWicpIHsNCiAgICAgICAgICAgICBub3Jt YWxpemUoZGF0ZSk7DQogICAgICAgICB9DQorICAgICAgICANCisgICAgICAgIC8vc2V0dGluZyBv ZiB0aW1lT25UaW1lbGluZSB2YWx1ZQ0KKyAgICAgICAgY2FsY1RpbWVPblRpbWVsaW5lKGRhdGUp Ow0KICAgICAgICAgcmV0dXJuIGRhdGU7DQogICAgIH0NCiANCkluZGV4OiBzcmMvb3JnL2FwYWNo ZS94ZXJjZXMvaW1wbC9kdi94cy9EYXlEVi5qYXZhDQo9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpSQ1MgZmlsZTogL2hv bWUvY3ZzcHVibGljL3htbC14ZXJjZXMvamF2YS9zcmMvb3JnL2FwYWNoZS94ZXJjZXMvaW1wbC9k di94cy9EYXlEVi5qYXZhLHYNCnJldHJpZXZpbmcgcmV2aXNpb24gMS4xMA0KZGlmZiAtdSAtcjEu MTAgRGF5RFYuamF2YQ0KLS0tIHNyYy9vcmcvYXBhY2hlL3hlcmNlcy9pbXBsL2R2L3hzL0RheURW LmphdmEJMjggU2VwIDIwMDQgMjE6MTI6MzMgLTAwMDAJMS4xMA0KKysrIHNyYy9vcmcvYXBhY2hl L3hlcmNlcy9pbXBsL2R2L3hzL0RheURWLmphdmEJMjggU2VwIDIwMDQgMjE6Mzg6MDAgLTAwMDAN CkBAIC03OSw2ICs3OSw5IEBADQogICAgICAgICBpZiAoIGRhdGUudXRjIT0wICYmIGRhdGUudXRj IT0nWicgKSB7DQogICAgICAgICAgICAgbm9ybWFsaXplKGRhdGUpOw0KICAgICAgICAgfQ0KKyAg ICAgICAgDQorICAgICAgICAvL3NldHRpbmcgb2YgdGltZU9uVGltZWxpbmUgdmFsdWUNCisgICAg ICAgIGNhbGNUaW1lT25UaW1lbGluZShkYXRlKTsNCiAgICAgICAgIHJldHVybiBkYXRlOw0KICAg ICB9DQogDQpJbmRleDogc3JjL29yZy9hcGFjaGUveGVyY2VzL2ltcGwvZHYveHMvRHVyYXRpb25E Vi5qYXZhDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09DQpSQ1MgZmlsZTogL2hvbWUvY3ZzcHVibGljL3htbC14ZXJjZXMv amF2YS9zcmMvb3JnL2FwYWNoZS94ZXJjZXMvaW1wbC9kdi94cy9EdXJhdGlvbkRWLmphdmEsdg0K cmV0cmlldmluZyByZXZpc2lvbiAxLjExDQpkaWZmIC11IC1yMS4xMSBEdXJhdGlvbkRWLmphdmEN Ci0tLSBzcmMvb3JnL2FwYWNoZS94ZXJjZXMvaW1wbC9kdi94cy9EdXJhdGlvbkRWLmphdmEJMTUg U2VwIDIwMDQgMDU6MTI6MjMgLTAwMDAJMS4xMQ0KKysrIHNyYy9vcmcvYXBhY2hlL3hlcmNlcy9p bXBsL2R2L3hzL0R1cmF0aW9uRFYuamF2YQkyOCBTZXAgMjAwNCAyMTozODowMCAtMDAwMA0KQEAg LTI0Miw2ICsyNDIsNDcgQEANCiANCiAgICAgICAgIHJldHVybiByZXN1bHRBOw0KICAgICB9DQor ICAgIA0KKyAgICAvKioNCisgICAgICogR2l2ZW4gbm9ybWFsaXplZCB2YWx1ZXMsIGRldGVybWlu ZXMgb3JkZXItcmVsYXRpb24NCisgICAgICogYmV0d2VlbiBnaXZlIGRhdGUvdGltZSBvYmplY3Rz Lg0KKyAgICAgKg0KKyAgICAgKiBAcGFyYW0gZGF0ZTEgIGRhdGUvdGltZSBvYmplY3QNCisgICAg ICogQHBhcmFtIGRhdGUyICBkYXRlL3RpbWUgb2JqZWN0DQorICAgICAqIEByZXR1cm4gMCBpZiBk YXRlMSBhbmQgZGF0ZTIgYXJlIGVxdWFsLCBhIHZhbHVlIGxlc3MgdGhhbiAwIGlmIGRhdGUxIGlz IGxlc3MgdGhhbiBkYXRlMiwgYSB2YWx1ZSBncmVhdGVyIHRoYW4gMCBpZiBkYXRlMSBpcyBncmVh dGVyIHRoYW4gZGF0ZTINCisgICAgICovDQorICAgIHByaXZhdGUgc2hvcnQgY29tcGFyZU9yZGVy KERhdGVUaW1lRGF0YSBkYXRlMSwgRGF0ZVRpbWVEYXRhIGRhdGUyKSB7DQorICAgICAgICBpZiAo ZGF0ZTEueWVhciA8IGRhdGUyLnllYXIpDQorICAgICAgICAgICAgcmV0dXJuIC0xOw0KKyAgICAg ICAgaWYgKGRhdGUxLnllYXIgPiBkYXRlMi55ZWFyKQ0KKyAgICAgICAgICAgIHJldHVybiAxOw0K KyAgICAgICAgaWYgKGRhdGUxLm1vbnRoIDwgZGF0ZTIubW9udGgpDQorICAgICAgICAgICAgcmV0 dXJuIC0xOw0KKyAgICAgICAgaWYgKGRhdGUxLm1vbnRoID4gZGF0ZTIubW9udGgpDQorICAgICAg ICAgICAgcmV0dXJuIDE7DQorICAgICAgICBpZiAoZGF0ZTEuZGF5IDwgZGF0ZTIuZGF5KQ0KKyAg ICAgICAgICAgIHJldHVybiAtMTsNCisgICAgICAgIGlmIChkYXRlMS5kYXkgPiBkYXRlMi5kYXkp DQorICAgICAgICAgICAgcmV0dXJuIDE7DQorICAgICAgICBpZiAoZGF0ZTEuaG91ciA8IGRhdGUy LmhvdXIpDQorICAgICAgICAgICAgcmV0dXJuIC0xOw0KKyAgICAgICAgaWYgKGRhdGUxLmhvdXIg PiBkYXRlMi5ob3VyKQ0KKyAgICAgICAgICAgIHJldHVybiAxOw0KKyAgICAgICAgaWYgKGRhdGUx Lm1pbnV0ZSA8IGRhdGUyLm1pbnV0ZSkNCisgICAgICAgICAgICByZXR1cm4gLTE7DQorICAgICAg ICBpZiAoZGF0ZTEubWludXRlID4gZGF0ZTIubWludXRlKQ0KKyAgICAgICAgICAgIHJldHVybiAx Ow0KKyAgICAgICAgaWYgKGRhdGUxLnNlY29uZCA8IGRhdGUyLnNlY29uZCkNCisgICAgICAgICAg ICByZXR1cm4gLTE7DQorICAgICAgICBpZiAoZGF0ZTEuc2Vjb25kID4gZGF0ZTIuc2Vjb25kKQ0K KyAgICAgICAgICAgIHJldHVybiAxOw0KKyAgICAgICAgaWYgKGRhdGUxLnV0YyA8IGRhdGUyLnV0 YykNCisgICAgICAgICAgICByZXR1cm4gLTE7DQorICAgICAgICBpZiAoZGF0ZTEudXRjID4gZGF0 ZTIudXRjKQ0KKyAgICAgICAgICAgIHJldHVybiAxOw0KKyAgICAgICAgcmV0dXJuIDA7DQorICAg IH0NCisNCiANCiAgICAgcHJpdmF0ZSBzaG9ydCBjb21wYXJlUmVzdWx0cyhzaG9ydCByZXN1bHRB LCBzaG9ydCByZXN1bHRCLCBib29sZWFuIHN0cmljdCl7DQogDQpJbmRleDogc3JjL29yZy9hcGFj aGUveGVyY2VzL2ltcGwvZHYveHMvTW9udGhEVi5qYXZhDQo9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpSQ1MgZmlsZTog L2hvbWUvY3ZzcHVibGljL3htbC14ZXJjZXMvamF2YS9zcmMvb3JnL2FwYWNoZS94ZXJjZXMvaW1w bC9kdi94cy9Nb250aERWLmphdmEsdg0KcmV0cmlldmluZyByZXZpc2lvbiAxLjEyDQpkaWZmIC11 IC1yMS4xMiBNb250aERWLmphdmENCi0tLSBzcmMvb3JnL2FwYWNoZS94ZXJjZXMvaW1wbC9kdi94 cy9Nb250aERWLmphdmEJMjggU2VwIDIwMDQgMjE6MTI6MzMgLTAwMDAJMS4xMg0KKysrIHNyYy9v cmcvYXBhY2hlL3hlcmNlcy9pbXBsL2R2L3hzL01vbnRoRFYuamF2YQkyOCBTZXAgMjAwNCAyMToz ODowMCAtMDAwMA0KQEAgLTU3LDE0ICs1NywxNiBAQA0KICAgICAgICAgRGF0ZVRpbWVEYXRhIGRh dGUgPSBuZXcgRGF0ZVRpbWVEYXRhKHRoaXMpOw0KICAgICAgICAgaW50IGxlbiA9IHN0ci5sZW5n dGgoKTsNCiANCi0gICAgICAgIC8vc2V0IGNvbnN0YW50cw0KLSAgICAgICAgZGF0ZS55ZWFyPVlF QVI7DQotICAgICAgICBkYXRlLmRheT1EQVk7DQorICAgICAgICANCiAgICAgICAgIGlmIChzdHIu Y2hhckF0KDApIT0nLScgfHwgc3RyLmNoYXJBdCgxKSE9Jy0nKSB7DQogICAgICAgICAgICAgdGhy b3cgbmV3IFNjaGVtYURhdGVUaW1lRXhjZXB0aW9uKCJJbnZhbGlkIGZvcm1hdCBmb3IgZ01vbnRo OiAiK3N0cik7DQogICAgICAgICB9DQogICAgICAgICBpbnQgc3RvcCA9IDQ7DQogICAgICAgICBk YXRlLm1vbnRoPXBhcnNlSW50KHN0ciwyLHN0b3ApOw0KKyAgICAgICAgDQorICAgICAgICAvLyBz ZXQgY29uc3RhbnRzIA0KKyAgICAgICAgZGF0ZS55ZWFyPVlFQVI7DQorICAgICAgICBkYXRlLmRh eT0gbWF4RGF5SW5Nb250aEZvcihkYXRlLnllYXIsIGRhdGUubW9udGgpOw0KIA0KICAgICAgICAg Ly8gUkVWSVNJVDogYWxsb3cgYm90aCAtLU1NIGFuZCAtLU1NLS0gbm93Lg0KICAgICAgICAgLy8g bmVlZCB0byByZW1vdmUgdGhlIGZvbGxvd2luZyA0IGxpbmVzIHRvIGRpc2FsbG93IC0tTU0tLQ0K QEAgLTg4LDYgKzkwLDkgQEANCiAgICAgICAgIGlmICggZGF0ZS51dGMhPTAgJiYgZGF0ZS51dGMh PSdaJyApIHsNCiAgICAgICAgICAgICBub3JtYWxpemUoZGF0ZSk7DQogICAgICAgICB9DQorICAg ICAgICANCisgICAgICAgIC8vc2V0dGluZyBvZiB0aW1lT25UaW1lbGluZSB2YWx1ZQ0KKyAgICAg ICAJY2FsY1RpbWVPblRpbWVsaW5lKGRhdGUpOw0KICAgICAgICAgcmV0dXJuIGRhdGU7DQogICAg IH0NCiANCkluZGV4OiBzcmMvb3JnL2FwYWNoZS94ZXJjZXMvaW1wbC9kdi94cy9Nb250aERheURW LmphdmENCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0NClJDUyBmaWxlOiAvaG9tZS9jdnNwdWJsaWMveG1sLXhlcmNlcy9q YXZhL3NyYy9vcmcvYXBhY2hlL3hlcmNlcy9pbXBsL2R2L3hzL01vbnRoRGF5RFYuamF2YSx2DQpy ZXRyaWV2aW5nIHJldmlzaW9uIDEuMTANCmRpZmYgLXUgLXIxLjEwIE1vbnRoRGF5RFYuamF2YQ0K LS0tIHNyYy9vcmcvYXBhY2hlL3hlcmNlcy9pbXBsL2R2L3hzL01vbnRoRGF5RFYuamF2YQkyOCBT ZXAgMjAwNCAyMToxMjozMyAtMDAwMAkxLjEwDQorKysgc3JjL29yZy9hcGFjaGUveGVyY2VzL2lt cGwvZHYveHMvTW9udGhEYXlEVi5qYXZhCTI4IFNlcCAyMDA0IDIxOjM4OjAwIC0wMDAwDQpAQCAt OTEsNiArOTEsOSBAQA0KICAgICAgICAgaWYgKCBkYXRlLnV0YyE9MCAmJiBkYXRlLnV0YyE9J1on ICkgew0KICAgICAgICAgICAgIG5vcm1hbGl6ZShkYXRlKTsNCiAgICAgICAgIH0NCisgICAgICAg IA0KKyAgICAgICAgLy9zZXR0aW5nIG9mIHRpbWVPblRpbWVsaW5lIHZhbHVlDQorICAgICAgIAlj YWxjVGltZU9uVGltZWxpbmUoZGF0ZSk7DQogICAgICAgICByZXR1cm4gZGF0ZTsNCiAgICAgfQ0K IA0KSW5kZXg6IHNyYy9vcmcvYXBhY2hlL3hlcmNlcy9pbXBsL2R2L3hzL1RpbWVEVi5qYXZhDQo9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09DQpSQ1MgZmlsZTogL2hvbWUvY3ZzcHVibGljL3htbC14ZXJjZXMvamF2YS9zcmMv b3JnL2FwYWNoZS94ZXJjZXMvaW1wbC9kdi94cy9UaW1lRFYuamF2YSx2DQpyZXRyaWV2aW5nIHJl dmlzaW9uIDEuMTANCmRpZmYgLXUgLXIxLjEwIFRpbWVEVi5qYXZhDQotLS0gc3JjL29yZy9hcGFj aGUveGVyY2VzL2ltcGwvZHYveHMvVGltZURWLmphdmEJMjggU2VwIDIwMDQgMjE6MTI6MzMgLTAw MDAJMS4xMA0KKysrIHNyYy9vcmcvYXBhY2hlL3hlcmNlcy9pbXBsL2R2L3hzL1RpbWVEVi5qYXZh CTI4IFNlcCAyMDA0IDIxOjM4OjAwIC0wMDAwDQpAQCAtNjgsOSArNjgsMTIgQEANCiANCiAgICAg ICAgIHZhbGlkYXRlRGF0ZVRpbWUoZGF0ZSk7DQogDQotICAgICAgICBpZiAoIGRhdGUudXRjIT0w ICkgew0KKyAgICAgICAgaWYgKCBkYXRlLnV0YyE9MCAmJiBkYXRlLnV0YyE9J1onICkgew0KICAg ICAgICAgICAgIG5vcm1hbGl6ZShkYXRlKTsNCiAgICAgICAgIH0NCisgICAgICAgIA0KKyAgICAg ICAgLy9zZXR0aW5nIG9mIHRpbWVPblRpbWVsaW5lIHZhbHVlDQorICAgICAgIAljYWxjVGltZU9u VGltZWxpbmUoZGF0ZSk7DQogICAgICAgICByZXR1cm4gZGF0ZTsNCiAgICAgfQ0KIA0KSW5kZXg6 IHNyYy9vcmcvYXBhY2hlL3hlcmNlcy9pbXBsL2R2L3hzL1llYXJEVi5qYXZhDQo9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 DQpSQ1MgZmlsZTogL2hvbWUvY3ZzcHVibGljL3htbC14ZXJjZXMvamF2YS9zcmMvb3JnL2FwYWNo ZS94ZXJjZXMvaW1wbC9kdi94cy9ZZWFyRFYuamF2YSx2DQpyZXRyaWV2aW5nIHJldmlzaW9uIDEu MTANCmRpZmYgLXUgLXIxLjEwIFllYXJEVi5qYXZhDQotLS0gc3JjL29yZy9hcGFjaGUveGVyY2Vz L2ltcGwvZHYveHMvWWVhckRWLmphdmEJMjggU2VwIDIwMDQgMjE6MTI6MzMgLTAwMDAJMS4xMA0K KysrIHNyYy9vcmcvYXBhY2hlL3hlcmNlcy9pbXBsL2R2L3hzL1llYXJEVi5qYXZhCTI4IFNlcCAy MDA0IDIxOjM4OjAwIC0wMDAwDQpAQCAtNzMsNyArNzMsNyBAQA0KIA0KICAgICAgICAgLy9pbml0 aWFsaXplIHZhbHVlcw0KICAgICAgICAgZGF0ZS5tb250aD1NT05USDsNCi0gICAgICAgIGRhdGUu ZGF5PTE7DQorICAgICAgICBkYXRlLmRheT1EQVk7DQogDQogICAgICAgICAvL3ZhbGlkYXRlIGFu ZCBub3JtYWxpemUNCiAgICAgICAgIHZhbGlkYXRlRGF0ZVRpbWUoZGF0ZSk7DQpAQCAtODEsNiAr ODEsOSBAQA0KICAgICAgICAgaWYgKCBkYXRlLnV0YyE9MCAmJiBkYXRlLnV0YyE9J1onICkgew0K ICAgICAgICAgICAgIG5vcm1hbGl6ZShkYXRlKTsNCiAgICAgICAgIH0NCisgICAgICAgIA0KKyAg ICAgICAgLy9zZXR0aW5nIG9mIHRpbWVPblRpbWVsaW5lIHZhbHVlDQorICAgICAgIAljYWxjVGlt ZU9uVGltZWxpbmUoZGF0ZSk7DQogICAgICAgICByZXR1cm4gZGF0ZTsNCiAgICAgfQ0KIA0KSW5k ZXg6IHNyYy9vcmcvYXBhY2hlL3hlcmNlcy9pbXBsL2R2L3hzL1llYXJNb250aERWLmphdmENCj09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0NClJDUyBmaWxlOiAvaG9tZS9jdnNwdWJsaWMveG1sLXhlcmNlcy9qYXZhL3NyYy9v cmcvYXBhY2hlL3hlcmNlcy9pbXBsL2R2L3hzL1llYXJNb250aERWLmphdmEsdg0KcmV0cmlldmlu ZyByZXZpc2lvbiAxLjEwDQpkaWZmIC11IC1yMS4xMCBZZWFyTW9udGhEVi5qYXZhDQotLS0gc3Jj L29yZy9hcGFjaGUveGVyY2VzL2ltcGwvZHYveHMvWWVhck1vbnRoRFYuamF2YQkyOCBTZXAgMjAw NCAyMToxMjozMyAtMDAwMAkxLjEwDQorKysgc3JjL29yZy9hcGFjaGUveGVyY2VzL2ltcGwvZHYv eHMvWWVhck1vbnRoRFYuamF2YQkyOCBTZXAgMjAwNCAyMTozODowMCAtMDAwMA0KQEAgLTU4LDcg KzU4LDcgQEANCiANCiAgICAgICAgIC8vIGdldCBkYXRlDQogICAgICAgICBpbnQgZW5kID0gZ2V0 WWVhck1vbnRoKHN0ciwgMCwgbGVuLCBkYXRlKTsNCi0gICAgICAgIGRhdGUuZGF5ID0gREFZOw0K KyAgICAgICAgZGF0ZS5kYXkgPSBtYXhEYXlJbk1vbnRoRm9yKGRhdGUueWVhciwgZGF0ZS5tb250 aCApOw0KICAgICAgICAgcGFyc2VUaW1lWm9uZSAoc3RyLCBlbmQsIGxlbiwgZGF0ZSk7DQogDQog ICAgICAgICAvL3ZhbGlkYXRlIGFuZCBub3JtYWxpemUNCkBAIC02OCw2ICs2OCw5IEBADQogICAg ICAgICBpZiAoIGRhdGUudXRjIT0wICYmIGRhdGUudXRjIT0nWicgKSB7DQogICAgICAgICAgICAg bm9ybWFsaXplKGRhdGUpOw0KICAgICAgICAgfQ0KKyAgICAgICAgDQorICAgICAgICAvLyBzZXR0 aW5nIG9mIHRpbWVPblRpbWVsaW5lIHZhbHVlDQorICAgICAgIAljYWxjVGltZU9uVGltZWxpbmUo ZGF0ZSk7DQogICAgICAgICByZXR1cm4gZGF0ZTsNCiAgICAgfQ0KIA0K --=_mixed 0079CEC885256F1D_= Content-Type: text/plain; charset=us-ascii --------------------------------------------------------------------- To unsubscribe, e-mail: xerces-j-dev-unsubscribe@xml.apache.org For additional commands, e-mail: xerces-j-dev-help@xml.apache.org --=_mixed 0079CEC885256F1D_=--