<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>44632</bug_id>
          
          <creation_ts>2010-08-25 13:13:56 -0700</creation_ts>
          <short_desc>Date.parse not ES5 compliant, cannot parse standard Date Time String format</short_desc>
          <delta_ts>2010-10-14 19:45:18 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Major</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Nathan Vander Wilt">natevw</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>barraclough</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>ggaren</cc>
    
    <cc>natevw</cc>
    
    <cc>oliver</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>269454</commentid>
    <comment_count>0</comment_count>
    <who name="Nathan Vander Wilt">natevw</who>
    <bug_when>2010-08-25 13:13:56 -0700</bug_when>
    <thetext>WebKit&apos;s Date.parse method cannot handle datetime strings in ECMAScript 5&apos;s RFC 3339/ISO 8601–style date interchange format (formally defined in ECMA-262-5 § 15.9.1.15).

This breaks compliance with ECMA-262-5, because in according to § 15.9.4.2 the following comparison should yield true:

x = new Date();
Date.parse(x.toString()) === Date.parse(x.toISOString())


As of WebKit r65825, the comparison yields false because Date.parse((new Date).toISOString()) returns NaN instead of the correct UTC milliseconds.


Notes:
Date.parse correctly handles the English readable RFC 822–style date formats dumped by Date.prototype.toString(), but these are not suitable for interchange (and standards-wise parsing them only represents an allowable implementation-specific fallback heuristic).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>293756</commentid>
    <comment_count>1</comment_count>
      <attachid>70673</attachid>
    <who name="Nathan Vander Wilt">natevw</who>
    <bug_when>2010-10-13 15:32:52 -0700</bug_when>
    <thetext>Created attachment 70673
Implemented ECMAScript/RFC3339 date parser in JavaScriptCore

I&apos;ve implemented the missing Date.parse/constructor logic for RFC 3339–style timestrings.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>293881</commentid>
    <comment_count>2</comment_count>
      <attachid>70673</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-10-13 18:06:52 -0700</bug_when>
    <thetext>Comment on attachment 70673
Implemented ECMAScript/RFC3339 date parser in JavaScriptCore

View in context: https://bugs.webkit.org/attachment.cgi?id=70673&amp;action=review

review- because of the decimal separator issue

&gt; JavaScriptCore/wtf/DateMath.cpp:566
&gt; +    static unsigned int daysPerMonth[] = {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};

We normally use “unsigned”, not “unsigned int”.

&gt; JavaScriptCore/wtf/DateMath.cpp:569
&gt; +    unsigned int month = 0, day = 0, hours = 0, minutes = 0;

We normally use “unsigned”, not “unsigned int”. We don’t declare multiple variables on a single line.

&gt; JavaScriptCore/wtf/DateMath.cpp:574
&gt; +    // NOTE: this is a bit more lenient on the year string than ES5 specifies:
&gt; +    //       instead of restricting to 4 digits (or 6 digits with mandatory +/-),
&gt; +    //       it accepts any integer value. Consider this an implementation fallback.

We use sentence format for comments, meaning the first word should be capitalized.

We don’t put NOTE in front of comments.

We don’t indent subsequent lines of comments in this fashion.

&gt; JavaScriptCore/wtf/DateMath.cpp:576
&gt; +    int numFieldsParsed = sscanf(dateString, &quot;%d-%2u-%2u T %2u:%2u:%lf %6s&quot;,
&gt; +                                 &amp;year, &amp;month, &amp;day, &amp;hours, &amp;minutes, &amp;seconds, timeZoneBuffer);

We don’t indent subsequent lines in this fashion.

Typically sscanf has poor performance. Would you be willing to write the parsing without using that function?

The sscanf function will determine which decimal point character based on the POSIX locale, and I presume we do not want that behavior here, so the seconds parsing is a bit of a problem.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>294144</commentid>
    <comment_count>3</comment_count>
    <who name="Nathan Vander Wilt">natevw</who>
    <bug_when>2010-10-14 08:58:17 -0700</bug_when>
    <thetext>Thanks for looking at this, Darin. The locale issue would definitely have been a problem, so I will look into using the conversion helper functions for the existing (&quot;fallback&quot;) implementation instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>294465</commentid>
    <comment_count>4</comment_count>
      <attachid>70798</attachid>
    <who name="Nathan Vander Wilt">natevw</who>
    <bug_when>2010-10-14 16:50:32 -0700</bug_when>
    <thetext>Created attachment 70798
Rewrote patch based on feedback

Rewrote patch based on review feedback. Added additional tests for issues discovered during rewrite.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>294475</commentid>
    <comment_count>5</comment_count>
      <attachid>70798</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-10-14 17:06:16 -0700</bug_when>
    <thetext>Comment on attachment 70798
Rewrote patch based on feedback

View in context: https://bugs.webkit.org/attachment.cgi?id=70798&amp;action=review

I’d like to see still-more test cases. I don’t think these tests cover every branch in the function. I believe I can remove some of the code and still have all the tests pass.

This is OK to land as-is, but I’d prefer to see an even better version of the patch with more tests and more-conventional WebKit coding style.

&gt; JavaScriptCore/wtf/DateMath.cpp:567
&gt; +    static unsigned daysPerMonth[] = {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};

Should be “static const”. Also would be nice to specify 12 here as the array size. Our normal style is to put spaces inside the braces.

&gt; JavaScriptCore/wtf/DateMath.cpp:577
&gt; +    long year;
&gt; +    long month;
&gt; +    long day;
&gt; +    long hours;
&gt; +    long minutes;
&gt; +    long intSeconds;
&gt; +    double seconds;
&gt; +    
&gt; +    char* postParsePosition;

Would be nicer to define these right where they are initialized rather than defining them all at the top.

&gt; JavaScriptCore/wtf/DateMath.cpp:586
&gt; +    dateString = postParsePosition + 1;

It’s a little strange to keep moving this pointer along, but call it “date string”, since it’s a pointer to the remainder of the string, not the entire string. Might be better to give this a different name.

&gt; JavaScriptCore/wtf/DateMath.cpp:628
&gt; +        long numFracDigits;

This especially should be defined on the line where it’s initialized.

&gt; JavaScriptCore/wtf/DateMath.cpp:643
&gt; +    if (day &lt; 1 || day &gt; daysPerMonth[month-1])

We put spaces around operators like the &quot;-&quot; here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>294511</commentid>
    <comment_count>6</comment_count>
      <attachid>70814</attachid>
    <who name="Nathan Vander Wilt">natevw</who>
    <bug_when>2010-10-14 18:01:52 -0700</bug_when>
    <thetext>Created attachment 70814
Adds more tests (and stricter input checking) and fixes more style issues.

Besides the new style issues, I&apos;ve added some more tests for corner cases and made the invalid date checking a bit stricter.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>294542</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-10-14 19:44:20 -0700</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 70814:

[u&apos;webarchive/test-link-rel-icon.html&apos;]

Please file bugs against the tests.  The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>294544</commentid>
    <comment_count>8</comment_count>
      <attachid>70814</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-10-14 19:45:12 -0700</bug_when>
    <thetext>Comment on attachment 70814
Adds more tests (and stricter input checking) and fixes more style issues.

Clearing flags on attachment: 70814

Committed r69833: &lt;http://trac.webkit.org/changeset/69833&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>294545</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-10-14 19:45:18 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>70673</attachid>
            <date>2010-10-13 15:32:52 -0700</date>
            <delta_ts>2010-10-14 16:50:32 -0700</delta_ts>
            <desc>Implemented ECMAScript/RFC3339 date parser in JavaScriptCore</desc>
            <filename>Date_ES5_parse.txt</filename>
            <type>text/plain</type>
            <size>9618</size>
            <attacher name="Nathan Vander Wilt">natevw</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDY5NzAwKQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTAtMTAtMTMgIE5hdGhhbiBW
YW5kZXIgV2lsdCAgPG5hdGVAYW5keWV0Lm5ldD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBwYXJzZXIgZm9yIEVDTUFTY3JpcHQgNSBzdGFu
ZGFyZCBkYXRlIGZvcm1hdCwgc28gRGF0ZS5wYXJzZSBjYW4gaGFuZGxlIFJGQyAzMzM5IHRpbWVz
dGFtcHM6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NDYzMgorCisg
ICAgICAgICogcnVudGltZS9EYXRlQ29udmVyc2lvbi5jcHA6CisgICAgICAgIChKU0M6OnBhcnNl
RGF0ZSk6CisgICAgICAgICogd3RmL0RhdGVNYXRoLmNwcDoKKyAgICAgICAgKFdURjo6eW1kaG1z
VG9TZWNvbmRzKToKKyAgICAgICAgKFdURjo6cGFyc2VFUzVEYXRlRnJvbU51bGxUZXJtaW5hdGVk
Q2hhcmFjdGVycyk6CisgICAgICAgICogd3RmL0RhdGVNYXRoLmg6CisKIDIwMTAtMTAtMTMgIEdh
dmluIEJhcnJhY2xvdWdoICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgogCiAgICAgICAgIFdpbmRv
d3MgYnVpbGQgZml4LgpJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29udmVyc2lv
bi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29udmVyc2lv
bi5jcHAJKHJldmlzaW9uIDY5NjY4KQorKysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29u
dmVyc2lvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU3LDcgKzU3LDkgQEAgZG91YmxlIHBhcnNl
RGF0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IAogewogICAgIGlmIChkYXRlID09IGV4ZWMtPmds
b2JhbERhdGEoKS5jYWNoZWREYXRlU3RyaW5nKQogICAgICAgICByZXR1cm4gZXhlYy0+Z2xvYmFs
RGF0YSgpLmNhY2hlZERhdGVTdHJpbmdWYWx1ZTsKLSAgICBkb3VibGUgdmFsdWUgPSBwYXJzZURh
dGVGcm9tTnVsbFRlcm1pbmF0ZWRDaGFyYWN0ZXJzKGV4ZWMsIGRhdGUudXRmOCgpLmRhdGEoKSk7
CisgICAgZG91YmxlIHZhbHVlID0gcGFyc2VFUzVEYXRlRnJvbU51bGxUZXJtaW5hdGVkQ2hhcmFj
dGVycyhkYXRlLnV0ZjgoKS5kYXRhKCkpOworICAgIGlmIChpc25hbih2YWx1ZSkpCisgICAgICAg
IHZhbHVlID0gcGFyc2VEYXRlRnJvbU51bGxUZXJtaW5hdGVkQ2hhcmFjdGVycyhleGVjLCBkYXRl
LnV0ZjgoKS5kYXRhKCkpOwogICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5jYWNoZWREYXRlU3RyaW5n
ID0gZGF0ZTsKICAgICBleGVjLT5nbG9iYWxEYXRhKCkuY2FjaGVkRGF0ZVN0cmluZ1ZhbHVlID0g
dmFsdWU7CiAgICAgcmV0dXJuIHZhbHVlOwpJbmRleDogSmF2YVNjcmlwdENvcmUvd3RmL0RhdGVN
YXRoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS93dGYvRGF0ZU1hdGguY3BwCShy
ZXZpc2lvbiA2OTY2OCkKKysrIEphdmFTY3JpcHRDb3JlL3d0Zi9EYXRlTWF0aC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTMsNiArMyw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDctMjAwOSBU
b3JjaCBNb2JpbGUsIEluYy4KKyAqIENvcHlyaWdodCAoQykgMjAxMCAmeWV0LCBMTEMuIChuYXRl
QGFuZHlldC5uZXQpCiAgKgogICogVGhlIE9yaWdpbmFsIENvZGUgaXMgTW96aWxsYSBDb21tdW5p
Y2F0b3IgY2xpZW50IGNvZGUsIHJlbGVhc2VkCiAgKiBNYXJjaCAzMSwgMTk5OC4KQEAgLTQ3OSw3
ICs0ODAsNyBAQCB2b2lkIGluaXRpYWxpemVEYXRlcygpCiAgICAgZXF1aXZhbGVudFllYXJGb3JE
U1QoMjAwMCk7IC8vIE5lZWQgdG8gY2FsbCBvbmNlIHRvIGluaXRpYWxpemUgYSBzdGF0aWMgdXNl
ZCBpbiB0aGlzIGZ1bmN0aW9uLgogfQogCi1zdGF0aWMgaW5saW5lIGRvdWJsZSB5bWRobXNUb1Nl
Y29uZHMobG9uZyB5ZWFyLCBpbnQgbW9uLCBpbnQgZGF5LCBpbnQgaG91ciwgaW50IG1pbnV0ZSwg
aW50IHNlY29uZCkKK3N0YXRpYyBpbmxpbmUgZG91YmxlIHltZGhtc1RvU2Vjb25kcyhsb25nIHll
YXIsIGludCBtb24sIGludCBkYXksIGludCBob3VyLCBpbnQgbWludXRlLCBkb3VibGUgc2Vjb25k
KQogewogICAgIGRvdWJsZSBkYXlzID0gKGRheSAtIDMyMDc1KQogICAgICAgICArIGZsb29yKDE0
NjEgKiAoeWVhciArIDQ4MDAuMCArIChtb24gLSAxNCkgLyAxMikgLyA0KQpAQCAtNTU3LDYgKzU1
OCw2NyBAQCBzdGF0aWMgYm9vbCBwYXJzZUxvbmcoY29uc3QgY2hhciogc3RyaW5nCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKK2RvdWJsZSBwYXJzZUVTNURhdGVGcm9tTnVsbFRlcm1pbmF0ZWRDaGFy
YWN0ZXJzKGNvbnN0IGNoYXIqIGRhdGVTdHJpbmcpCit7CisgICAgLy8gVGhpcyBwYXJzZXMgYSBk
YXRlIGluIHRoZSBmb3JtIGRlZmluZWQgaW4gRUNNQS0yNjItNSwgc2VjdGlvbiAxNS45LjEuMTUK
KyAgICAvLyAgICAoc2ltaWxhciB0byBSRkMgMzMzOSAvIElTTyA4NjAxOiBZWVlZLU1NLUREVEhI
Om1tOnNzLnNzc1opCisgICAgCisgICAgc3RhdGljIHVuc2lnbmVkIGludCBkYXlzUGVyTW9udGhb
XSA9IHszMSwgMjksIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzEsIDMwLCAzMSwgMzAsIDMxfTsKKyAg
ICAKKyAgICBpbnQgeWVhciA9IDA7CisgICAgdW5zaWduZWQgaW50IG1vbnRoID0gMCwgZGF5ID0g
MCwgaG91cnMgPSAwLCBtaW51dGVzID0gMDsKKyAgICBkb3VibGUgc2Vjb25kcyA9IDAuMDsKKyAg
ICBjaGFyIHRpbWVab25lQnVmZmVyWzddID0gIiI7CisgICAgLy8gTk9URTogdGhpcyBpcyBhIGJp
dCBtb3JlIGxlbmllbnQgb24gdGhlIHllYXIgc3RyaW5nIHRoYW4gRVM1IHNwZWNpZmllczoKKyAg
ICAvLyAgICAgICBpbnN0ZWFkIG9mIHJlc3RyaWN0aW5nIHRvIDQgZGlnaXRzIChvciA2IGRpZ2l0
cyB3aXRoIG1hbmRhdG9yeSArLy0pLAorICAgIC8vICAgICAgIGl0IGFjY2VwdHMgYW55IGludGVn
ZXIgdmFsdWUuIENvbnNpZGVyIHRoaXMgYW4gaW1wbGVtZW50YXRpb24gZmFsbGJhY2suCisgICAg
aW50IG51bUZpZWxkc1BhcnNlZCA9IHNzY2FuZihkYXRlU3RyaW5nLCAiJWQtJTJ1LSUydSBUICUy
dTolMnU6JWxmICU2cyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmeWVhciwg
Jm1vbnRoLCAmZGF5LCAmaG91cnMsICZtaW51dGVzLCAmc2Vjb25kcywgdGltZVpvbmVCdWZmZXIp
OworICAgIGlmIChudW1GaWVsZHNQYXJzZWQgPCA2KQorICAgICAgICByZXR1cm4gTmFOOworICAg
IAorICAgIGlmIChtb250aCA8IDEgfHwgbW9udGggPiAxMikKKyAgICAgICAgcmV0dXJuIE5hTjsK
KyAgICBpZiAoZGF5IDwgMSB8fCBkYXkgPiBkYXlzUGVyTW9udGhbbW9udGgtMV0pCisgICAgICAg
IHJldHVybiBOYU47CisgICAgaWYgKG1vbnRoID09IDIgJiYgZGF5ID4gMjggJiYgIWlzTGVhcFll
YXIoeWVhcikpCisgICAgICAgIHJldHVybiBOYU47CisgICAgaWYgKGhvdXJzID4gMjQpCisgICAg
ICAgIHJldHVybiBOYU47CisgICAgaWYgKGhvdXJzID09IDI0ICYmIChtaW51dGVzIHx8IHNlY29u
ZHMpKQorICAgICAgICByZXR1cm4gTmFOOworICAgIGlmIChtaW51dGVzID4gNTkpCisgICAgICAg
IHJldHVybiBOYU47CisgICAgaWYgKHNlY29uZHMgPCAwIHx8IHNlY29uZHMgPj0gNjEpCisgICAg
ICAgIHJldHVybiBOYU47CisgICAgaWYgKHNlY29uZHMgPiA2MCkgeworICAgICAgICAvLyBpZ25v
cmUgbGVhcCBzZWNvbmRzCisgICAgICAgIHNlY29uZHMgPSA2MDsKKyAgICB9CisgICAgCisgICAg
aW50IHRpbWVab25lU2Vjb25kcyA9IDA7CisgICAgaWYgKHRpbWVab25lQnVmZmVyWzBdICE9ICda
JykgeworICAgICAgICBpbnQgdHpIb3VycyA9IDA7CisgICAgICAgIHVuc2lnbmVkIGludCB0ek1p
bnV0ZXMgPSAwOworICAgICAgICBpbnQgbnVtVGltZXpvbmVGaWVsZHNQYXJzZWQgPSBzc2NhbmYo
dGltZVpvbmVCdWZmZXIsICIlM2Q6JTJ1ZCIsICZ0ekhvdXJzLCAmdHpNaW51dGVzKTsKKyAgICAg
ICAgaWYgKG51bVRpbWV6b25lRmllbGRzUGFyc2VkIDwgMikKKyAgICAgICAgICAgIHJldHVybiBO
YU47CisgICAgICAgIAorICAgICAgICB1bnNpZ25lZCBpbnQgdHpIb3Vyc0FicyA9IGFicyh0ekhv
dXJzKTsKKyAgICAgICAgaWYgKHR6SG91cnNBYnMgPiAyNCkKKyAgICAgICAgICAgIHJldHVybiBO
YU47CisgICAgICAgIGlmICh0ek1pbnV0ZXMgPiA1OSkKKyAgICAgICAgICAgIHJldHVybiBOYU47
CisgICAgICAgIAorICAgICAgICB0aW1lWm9uZVNlY29uZHMgPSA2MCAqICh0ek1pbnV0ZXMgKyAo
NjAgKiB0ekhvdXJzQWJzKSk7CisgICAgICAgIGlmICh0ekhvdXJzIDwgMCkKKyAgICAgICAgICAg
IHRpbWVab25lU2Vjb25kcyA9IC10aW1lWm9uZVNlY29uZHM7CisgICAgfQorICAgIAorICAgIGRv
dWJsZSBkYXRlU2Vjb25kcyA9IHltZGhtc1RvU2Vjb25kcyh5ZWFyLCBtb250aCwgZGF5LCBob3Vy
cywgbWludXRlcywgc2Vjb25kcykgLSB0aW1lWm9uZVNlY29uZHM7CisgICAgcmV0dXJuIGRhdGVT
ZWNvbmRzICogbXNQZXJTZWNvbmQ7Cit9CisKIC8vIE9kZCBjYXNlIHdoZXJlICdleGVjJyBpcyBh
bGxvd2VkIHRvIGJlIDAsIHRvIGFjY29tb2RhdGUgYSBjYWxsZXIgaW4gV2ViQ29yZS4KIHN0YXRp
YyBkb3VibGUgcGFyc2VEYXRlRnJvbU51bGxUZXJtaW5hdGVkQ2hhcmFjdGVycyhjb25zdCBjaGFy
KiBkYXRlU3RyaW5nLCBib29sJiBoYXZlVFosIGludCYgb2Zmc2V0KQogewpJbmRleDogSmF2YVNj
cmlwdENvcmUvd3RmL0RhdGVNYXRoLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvd3Rm
L0RhdGVNYXRoLmgJKHJldmlzaW9uIDY5NjY4KQorKysgSmF2YVNjcmlwdENvcmUvd3RmL0RhdGVN
YXRoLmgJKHdvcmtpbmcgY29weSkKQEAgLTUzLDcgKzUzLDggQEAgbmFtZXNwYWNlIFdURiB7CiB2
b2lkIGluaXRpYWxpemVEYXRlcygpOwogaW50IGVxdWl2YWxlbnRZZWFyRm9yRFNUKGludCB5ZWFy
KTsKIAotLy8gTm90IHJlYWxseSBtYXRoIHJlbGF0ZWQsIGJ1dCB0aGlzIGlzIGN1cnJlbnRseSB0
aGUgb25seSBzaGFyZWQgcGxhY2UgdG8gcHV0IHRoZXNlLiAgCisvLyBOb3QgcmVhbGx5IG1hdGgg
cmVsYXRlZCwgYnV0IHRoaXMgaXMgY3VycmVudGx5IHRoZSBvbmx5IHNoYXJlZCBwbGFjZSB0byBw
dXQgdGhlc2UuCitkb3VibGUgcGFyc2VFUzVEYXRlRnJvbU51bGxUZXJtaW5hdGVkQ2hhcmFjdGVy
cyhjb25zdCBjaGFyKiBkYXRlU3RyaW5nKTsKIGRvdWJsZSBwYXJzZURhdGVGcm9tTnVsbFRlcm1p
bmF0ZWRDaGFyYWN0ZXJzKGNvbnN0IGNoYXIqIGRhdGVTdHJpbmcpOwogZG91YmxlIHRpbWVDbGlw
KGRvdWJsZSk7CiAKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDY5NzAwKQorKysgTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTAtMTAtMTMgIE5hdGhh
biBWYW5kZXIgV2lsdCAgPG5hdGVAYW5keWV0Lm5ldD4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCB0ZXN0cyBmb3IgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ0NjMyCisKKyAgICAgICAgKiBmYXN0L2pzL2RhdGUt
cGFyc2UtdGVzdC1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9qcy9zY3JpcHQtdGVzdHMv
ZGF0ZS1wYXJzZS10ZXN0LmpzOgorICAgICAgICAodGVzdERhdGVQYXJzZUV4YWN0KToKKwogMjAx
MC0xMC0xMyAgTmF0ZSBDaGFwaW4gIDxqYXBoZXRAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVu
cmV2aWV3ZWQsIENocm9taXVtIGV4cGVjdGF0aW9ucyB1cGRhdGUuCkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2pzL2RhdGUtcGFyc2UtdGVzdC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9qcy9kYXRlLXBhcnNlLXRlc3QtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA2
OTY2OCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvZGF0ZS1wYXJzZS10ZXN0LWV4cGVjdGVkLnR4
dAkod29ya2luZyBjb3B5KQpAQCAtMyw2ICszLDE3IEBAIFRlc3Qgb2YgSmF2YVNjcmlwdCBkYXRl
IHBhcnNpbmcuCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1l
c3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCiAKIAorUEFTUyBEYXRlLnBhcnNl
KCIxOTk1LTEyLTI1VDAxOjMwOjAwWiIpID09IDgxOTg1NTAwMDAwMCBpcyB0cnVlCitQQVNTIERh
dGUucGFyc2UoIjE5OTUtMTItMjVUMDE6MzA6MDAuNVoiKSA9PSA4MTk4NTUwMDA1MDAgaXMgdHJ1
ZQorUEFTUyBEYXRlLnBhcnNlKCIxOTk1LTEyLTI1VDAxOjMwOjAwKzAwOjAwIikgPT0gODE5ODU1
MDAwMDAwIGlzIHRydWUKK1BBU1MgRGF0ZS5wYXJzZSgiMTk5NS0xMi0yNVQwMTozMDowMC4wKzAx
OjAxIikgPT0gODE5ODUxMzQwMDAwIGlzIHRydWUKK1BBU1MgRGF0ZS5wYXJzZSgiMTk5NS0xMi0y
NVQwMTozMDowMC4wLTAxOjAxIikgPT0gODE5ODU4NjYwMDAwIGlzIHRydWUKK1BBU1MgRGF0ZS5w
YXJzZSgiMC0xLTFUMDA6MDA6MDBaIikgPT0gLTYyMTY3MjE5MjAwMDAwIGlzIHRydWUKK1BBU1Mg
RGF0ZS5wYXJzZSgiKzk5OTk5LTEyLTMxVDI0OjAwOjAwWiIpID09IDMwOTM1Mjc5ODA4MDAwMDAg
aXMgdHJ1ZQorUEFTUyBEYXRlLnBhcnNlKCItOTk5OTktMS0xVDAwOjAwOjAwWiIpID09IC0zMjE3
ODMwNzk2ODAwMDAwIGlzIHRydWUKK1BBU1MgRGF0ZS5wYXJzZSgiMTk5NS0wMi0yOVQwMDowMDow
MFoiKSBpcyBOYU4KK1BBU1MgRGF0ZS5wYXJzZSgiMTk5NS0xMi0yNSAwMTozMDowMFoiKSBpcyBO
YU4KK1BBU1MgRGF0ZS5wYXJzZSgiMTk5NS0xMi0yNVQwMTozMDowMHoiKSBpcyBOYU4KIFBBU1Mg
RGF0ZS5wYXJzZSgiRGVjIDI1IDE5OTUgR01UIikgPT0gODE5ODQ5NjAwMDAwIGlzIHRydWUKIFBB
U1MgRGF0ZS5wYXJzZSgiREVDIDI1IDE5OTUgR01UIikgPT0gODE5ODQ5NjAwMDAwIGlzIHRydWUK
IFBBU1MgRGF0ZS5wYXJzZSgiZGVjIDI1IDE5OTUgZ210IikgPT0gODE5ODQ5NjAwMDAwIGlzIHRy
dWUKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvc2NyaXB0LXRlc3RzL2RhdGUtcGFyc2UtdGVz
dC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL3NjcmlwdC10ZXN0cy9kYXRl
LXBhcnNlLXRlc3QuanMJKHJldmlzaW9uIDY5NjY4KQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9z
Y3JpcHQtdGVzdHMvZGF0ZS1wYXJzZS10ZXN0LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsy
OCwzMiBAQCBmdW5jdGlvbiB0ZXN0RGF0ZVBhcnNlKGRhdGUsIG51bWVyaWNSZXN1CiAgICAgfQog
fQogCitmdW5jdGlvbiB0ZXN0RGF0ZVBhcnNlRXhhY3QoZGF0ZSwgbnVtZXJpY1Jlc3VsdCkKK3sK
KyAgICBpZiAobnVtZXJpY1Jlc3VsdCA9PSAiTmFOIikgeworICAgICAgICBzaG91bGRCZU5hTign
RGF0ZS5wYXJzZSgiJyArIGRhdGUgKyAnIiknKTsKKyAgICB9IGVsc2UgeworICAgICAgICBzaG91
bGRCZVRydWUoJ0RhdGUucGFyc2UoIicgKyBkYXRlICsgJyIpID09ICcgKyBudW1lcmljUmVzdWx0
LnRvU3RyaW5nKCkpOworICAgIH0KK30KKworCisvLyB0ZXN0IEVDTUFTY3JpcHQgNSBzdGFuZGFy
ZCBkYXRlIHBhcnNpbmcKK3Rlc3REYXRlUGFyc2VFeGFjdCgiMTk5NS0xMi0yNVQwMTozMDowMFoi
LCAiODE5ODU1MDAwMDAwIik7Cit0ZXN0RGF0ZVBhcnNlRXhhY3QoIjE5OTUtMTItMjVUMDE6MzA6
MDAuNVoiLCAiODE5ODU1MDAwNTAwIik7Cit0ZXN0RGF0ZVBhcnNlRXhhY3QoIjE5OTUtMTItMjVU
MDE6MzA6MDArMDA6MDAiLCAiODE5ODU1MDAwMDAwIik7Cit0ZXN0RGF0ZVBhcnNlRXhhY3QoIjE5
OTUtMTItMjVUMDE6MzA6MDAuMCswMTowMSIsICI4MTk4NTEzNDAwMDAiKTsKK3Rlc3REYXRlUGFy
c2VFeGFjdCgiMTk5NS0xMi0yNVQwMTozMDowMC4wLTAxOjAxIiwgIjgxOTg1ODY2MDAwMCIpOwor
dGVzdERhdGVQYXJzZUV4YWN0KCIwLTEtMVQwMDowMDowMFoiLCAiLTYyMTY3MjE5MjAwMDAwIik7
Cit0ZXN0RGF0ZVBhcnNlRXhhY3QoIis5OTk5OS0xMi0zMVQyNDowMDowMFoiLCAiMzA5MzUyNzk4
MDgwMDAwMCIpOwordGVzdERhdGVQYXJzZUV4YWN0KCItOTk5OTktMS0xVDAwOjAwOjAwWiIsICIt
MzIxNzgzMDc5NjgwMDAwMCIpOwordGVzdERhdGVQYXJzZUV4YWN0KCIxOTk1LTAyLTI5VDAwOjAw
OjAwWiIsICJOYU4iKTsKK3Rlc3REYXRlUGFyc2VFeGFjdCgiMTk5NS0xMi0yNSAwMTozMDowMFoi
LCAiTmFOIik7Cit0ZXN0RGF0ZVBhcnNlRXhhY3QoIjE5OTUtMTItMjVUMDE6MzA6MDB6IiwgIk5h
TiIpOworCisKKy8vIHRlc3Qgb2xkIGltcGxlbWVudGF0aW9uIGZhbGxiYWNrCisKIHZhciB0aW1l
Wm9uZU9mZnNldCA9IERhdGUucGFyc2UoIiBEZWMgMjUgMTk5NSAxOjMwICIpIC0gRGF0ZS5wYXJz
ZSgiIERlYyAyNSAxOTk1IDE6MzAgR01UICIpOwogCiB0ZXN0RGF0ZVBhcnNlKCJEZWMgMjUgMTk5
NSBHTVQiLCAiODE5ODQ5NjAwMDAwIik7CkBAIC00Myw3ICs2OSw3IEBAIHRlc3REYXRlUGFyc2Uo
IkRlYyAyNSAxOTk1IDE6MzAgQU0gIiwgIjgKIAogdGVzdERhdGVQYXJzZSgiRGVjIDI1IDE5OTUg
MTM6MzAgR01UIiwgIjgxOTg5ODIwMDAwMCIpOwogdGVzdERhdGVQYXJzZSgiRGVjIDI1IDE5OTUg
MTM6MzAiLCAiODE5ODk4MjAwMDAwICsgdGltZVpvbmVPZmZzZXQiKTsKLXRlc3REYXRlUGFyc2Uo
J0RlYyAyNSAxMzozMCAxOTk1JywgIjgxOTg5ODIwMDAwMCArIHRpbWVab25lT2Zmc2V0Iik7Cit0
ZXN0RGF0ZVBhcnNlKCJEZWMgMjUgMTM6MzAgMTk5NSIsICI4MTk4OTgyMDAwMDAgKyB0aW1lWm9u
ZU9mZnNldCIpOwogdGVzdERhdGVQYXJzZSgiRGVjIDI1IDE5OTUgMTM6MzAgIiwgIjgxOTg5ODIw
MDAwMCArIHRpbWVab25lT2Zmc2V0Iik7CiB0ZXN0RGF0ZVBhcnNlKCJEZWMgMjUgMTk5NSAxOjMw
IFBNIEdNVCIsICI4MTk4OTgyMDAwMDAiKTsKIHRlc3REYXRlUGFyc2UoIkRlYyAyNSAxOTk1IDE6
MzAgUE0iLCAiODE5ODk4MjAwMDAwICsgdGltZVpvbmVPZmZzZXQiKTsK
</data>
<flag name="review"
          id="60545"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>70798</attachid>
            <date>2010-10-14 16:50:32 -0700</date>
            <delta_ts>2010-10-14 18:01:52 -0700</delta_ts>
            <desc>Rewrote patch based on feedback</desc>
            <filename>DateParseES5_try2.txt</filename>
            <type>text/plain</type>
            <size>13235</size>
            <attacher name="Nathan Vander Wilt">natevw</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDY5ODIxKQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTAtMTAtMTQgIE5hdGhhbiBW
YW5kZXIgV2lsdCAgPG5hdGVAYW5keWV0Lm5ldD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBwYXJzZXIgZm9yIEVDTUFTY3JpcHQgNSBzdGFu
ZGFyZCBkYXRlIGZvcm1hdCwgc28gRGF0ZS5wYXJzZSBjYW4gaGFuZGxlIFJGQyAzMzM5IHRpbWVz
dGFtcHM6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NDYzMgorCisg
ICAgICAgICogcnVudGltZS9EYXRlQ29udmVyc2lvbi5jcHA6CisgICAgICAgIChKU0M6OnBhcnNl
RGF0ZSk6CisgICAgICAgICogd3RmL0RhdGVNYXRoLmNwcDoKKyAgICAgICAgKFdURjo6eW1kaG1z
VG9TZWNvbmRzKToKKyAgICAgICAgKFdURjo6cGFyc2VFUzVEYXRlRnJvbU51bGxUZXJtaW5hdGVk
Q2hhcmFjdGVycyk6CisgICAgICAgICogd3RmL0RhdGVNYXRoLmg6CisKIDIwMTAtMTAtMTQgIE5p
a29sYXMgWmltbWVybWFubiAgPG56aW1tZXJtYW5uQHJpbS5jb20+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgR2F2aW4gQmFycmFjbG91Z2guCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Rh
dGVDb252ZXJzaW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Rh
dGVDb252ZXJzaW9uLmNwcAkocmV2aXNpb24gNjk4MjEpCisrKyBKYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0RhdGVDb252ZXJzaW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTcsNyArNTcsOSBAQCBk
b3VibGUgcGFyc2VEYXRlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgCiB7CiAgICAgaWYgKGRhdGUg
PT0gZXhlYy0+Z2xvYmFsRGF0YSgpLmNhY2hlZERhdGVTdHJpbmcpCiAgICAgICAgIHJldHVybiBl
eGVjLT5nbG9iYWxEYXRhKCkuY2FjaGVkRGF0ZVN0cmluZ1ZhbHVlOwotICAgIGRvdWJsZSB2YWx1
ZSA9IHBhcnNlRGF0ZUZyb21OdWxsVGVybWluYXRlZENoYXJhY3RlcnMoZXhlYywgZGF0ZS51dGY4
KCkuZGF0YSgpKTsKKyAgICBkb3VibGUgdmFsdWUgPSBwYXJzZUVTNURhdGVGcm9tTnVsbFRlcm1p
bmF0ZWRDaGFyYWN0ZXJzKGRhdGUudXRmOCgpLmRhdGEoKSk7CisgICAgaWYgKGlzbmFuKHZhbHVl
KSkKKyAgICAgICAgdmFsdWUgPSBwYXJzZURhdGVGcm9tTnVsbFRlcm1pbmF0ZWRDaGFyYWN0ZXJz
KGV4ZWMsIGRhdGUudXRmOCgpLmRhdGEoKSk7CiAgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLmNhY2hl
ZERhdGVTdHJpbmcgPSBkYXRlOwogICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5jYWNoZWREYXRlU3Ry
aW5nVmFsdWUgPSB2YWx1ZTsKICAgICByZXR1cm4gdmFsdWU7CkluZGV4OiBKYXZhU2NyaXB0Q29y
ZS93dGYvRGF0ZU1hdGguY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3d0Zi9EYXRl
TWF0aC5jcHAJKHJldmlzaW9uIDY5ODIxKQorKysgSmF2YVNjcmlwdENvcmUvd3RmL0RhdGVNYXRo
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMyw2ICszLDcgQEAKICAqIENvcHlyaWdodCAoQykgMjAw
NiwgMjAwNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMp
IDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykg
MjAwNy0yMDA5IFRvcmNoIE1vYmlsZSwgSW5jLgorICogQ29weXJpZ2h0IChDKSAyMDEwICZ5ZXQs
IExMQy4gKG5hdGVAYW5keWV0Lm5ldCkKICAqCiAgKiBUaGUgT3JpZ2luYWwgQ29kZSBpcyBNb3pp
bGxhIENvbW11bmljYXRvciBjbGllbnQgY29kZSwgcmVsZWFzZWQKICAqIE1hcmNoIDMxLCAxOTk4
LgpAQCAtNDc5LDcgKzQ4MCw3IEBAIHZvaWQgaW5pdGlhbGl6ZURhdGVzKCkKICAgICBlcXVpdmFs
ZW50WWVhckZvckRTVCgyMDAwKTsgLy8gTmVlZCB0byBjYWxsIG9uY2UgdG8gaW5pdGlhbGl6ZSBh
IHN0YXRpYyB1c2VkIGluIHRoaXMgZnVuY3Rpb24uCiB9CiAKLXN0YXRpYyBpbmxpbmUgZG91Ymxl
IHltZGhtc1RvU2Vjb25kcyhsb25nIHllYXIsIGludCBtb24sIGludCBkYXksIGludCBob3VyLCBp
bnQgbWludXRlLCBpbnQgc2Vjb25kKQorc3RhdGljIGlubGluZSBkb3VibGUgeW1kaG1zVG9TZWNv
bmRzKGxvbmcgeWVhciwgaW50IG1vbiwgaW50IGRheSwgaW50IGhvdXIsIGludCBtaW51dGUsIGRv
dWJsZSBzZWNvbmQpCiB7CiAgICAgZG91YmxlIGRheXMgPSAoZGF5IC0gMzIwNzUpCiAgICAgICAg
ICsgZmxvb3IoMTQ2MSAqICh5ZWFyICsgNDgwMC4wICsgKG1vbiAtIDE0KSAvIDEyKSAvIDQpCkBA
IC01NTcsNiArNTU4LDE1MSBAQCBzdGF0aWMgYm9vbCBwYXJzZUxvbmcoY29uc3QgY2hhciogc3Ry
aW5nCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK2RvdWJsZSBwYXJzZUVTNURhdGVGcm9tTnVsbFRl
cm1pbmF0ZWRDaGFyYWN0ZXJzKGNvbnN0IGNoYXIqIGRhdGVTdHJpbmcpCit7CisgICAgLy8gVGhp
cyBwYXJzZXMgYSBkYXRlIG9mIHRoZSBmb3JtIGRlZmluZWQgaW4gRUNNQS0yNjItNSwgc2VjdGlv
biAxNS45LjEuMTUKKyAgICAvLyAoc2ltaWxhciB0byBSRkMgMzMzOSAvIElTTyA4NjAxOiBZWVlZ
LU1NLUREVEhIOm1tOnNzWy5zc3NdWikuCisgICAgLy8gSW4gbW9zdCBjYXNlcyBpdCBpcyBpbnRl
bnRpb25hbGx5IHN0cmljdCAoZS5nLiBjb3JyZWN0IGZpZWxkIHdpZHRocywgbm8gc3RyYXkgd2hp
dGVzcGFjZSkuCisgICAgCisgICAgc3RhdGljIHVuc2lnbmVkIGRheXNQZXJNb250aFtdID0gezMx
LCAyOSwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMSwgMzAsIDMxLCAzMCwgMzF9OworICAgIAorICAg
IGxvbmcgeWVhcjsKKyAgICBsb25nIG1vbnRoOworICAgIGxvbmcgZGF5OworICAgIGxvbmcgaG91
cnM7CisgICAgbG9uZyBtaW51dGVzOworICAgIGxvbmcgaW50U2Vjb25kczsKKyAgICBkb3VibGUg
c2Vjb25kczsKKyAgICAKKyAgICBjaGFyKiBwb3N0UGFyc2VQb3NpdGlvbjsKKyAgICAKKyAgICAv
LyBUaGlzIGlzIGEgYml0IG1vcmUgbGVuaWVudCBvbiB0aGUgeWVhciBzdHJpbmcgdGhhbiBFUzUg
c3BlY2lmaWVzOgorICAgIC8vIGluc3RlYWQgb2YgcmVzdHJpY3RpbmcgdG8gNCBkaWdpdHMgKG9y
IDYgZGlnaXRzIHdpdGggbWFuZGF0b3J5ICsvLSksCisgICAgLy8gaXQgYWNjZXB0cyBhbnkgaW50
ZWdlciB2YWx1ZS4gQ29uc2lkZXIgdGhpcyBhbiBpbXBsZW1lbnRhdGlvbiBmYWxsYmFjay4KKyAg
ICBpZiAoIXBhcnNlTG9uZyhkYXRlU3RyaW5nLCAmcG9zdFBhcnNlUG9zaXRpb24sIDEwLCAmeWVh
cikpCisgICAgICAgIHJldHVybiBOYU47CisgICAgaWYgKCpwb3N0UGFyc2VQb3NpdGlvbiAhPSAn
LScpCisgICAgICAgIHJldHVybiBOYU47CisgICAgZGF0ZVN0cmluZyA9IHBvc3RQYXJzZVBvc2l0
aW9uICsgMTsKKyAgICAKKyAgICBpZiAoIXBhcnNlTG9uZyhkYXRlU3RyaW5nLCAmcG9zdFBhcnNl
UG9zaXRpb24sIDEwLCAmbW9udGgpKQorICAgICAgICByZXR1cm4gTmFOOworICAgIGlmICgqcG9z
dFBhcnNlUG9zaXRpb24gIT0gJy0nIHx8IChwb3N0UGFyc2VQb3NpdGlvbiAtIGRhdGVTdHJpbmcp
ICE9IDIpCisgICAgICAgIHJldHVybiBOYU47CisgICAgZGF0ZVN0cmluZyA9IHBvc3RQYXJzZVBv
c2l0aW9uICsgMTsKKyAgICAKKyAgICBpZiAoIXBhcnNlTG9uZyhkYXRlU3RyaW5nLCAmcG9zdFBh
cnNlUG9zaXRpb24sIDEwLCAmZGF5KSkKKyAgICAgICAgcmV0dXJuIE5hTjsKKyAgICBpZiAoKnBv
c3RQYXJzZVBvc2l0aW9uICE9ICdUJyB8fCAocG9zdFBhcnNlUG9zaXRpb24gLSBkYXRlU3RyaW5n
KSAhPSAyKQorICAgICAgICByZXR1cm4gTmFOOworICAgIGRhdGVTdHJpbmcgPSBwb3N0UGFyc2VQ
b3NpdGlvbiArIDE7CisgICAgCisgICAgaWYgKCFwYXJzZUxvbmcoZGF0ZVN0cmluZywgJnBvc3RQ
YXJzZVBvc2l0aW9uLCAxMCwgJmhvdXJzKSkKKyAgICAgICAgcmV0dXJuIE5hTjsKKyAgICBpZiAo
KnBvc3RQYXJzZVBvc2l0aW9uICE9ICc6JyB8fCAocG9zdFBhcnNlUG9zaXRpb24gLSBkYXRlU3Ry
aW5nKSAhPSAyKQorICAgICAgICByZXR1cm4gTmFOOworICAgIGRhdGVTdHJpbmcgPSBwb3N0UGFy
c2VQb3NpdGlvbiArIDE7CisgICAgCisgICAgaWYgKCFwYXJzZUxvbmcoZGF0ZVN0cmluZywgJnBv
c3RQYXJzZVBvc2l0aW9uLCAxMCwgJm1pbnV0ZXMpKQorICAgICAgICByZXR1cm4gTmFOOworICAg
IGlmICgqcG9zdFBhcnNlUG9zaXRpb24gIT0gJzonIHx8IChwb3N0UGFyc2VQb3NpdGlvbiAtIGRh
dGVTdHJpbmcpICE9IDIpCisgICAgICAgIHJldHVybiBOYU47CisgICAgZGF0ZVN0cmluZyA9IHBv
c3RQYXJzZVBvc2l0aW9uICsgMTsKKyAgICAKKyAgICBpZiAoIXBhcnNlTG9uZyhkYXRlU3RyaW5n
LCAmcG9zdFBhcnNlUG9zaXRpb24sIDEwLCAmaW50U2Vjb25kcykpCisgICAgICAgIHJldHVybiBO
YU47CisgICAgaWYgKChwb3N0UGFyc2VQb3NpdGlvbiAtIGRhdGVTdHJpbmcpICE9IDIpCisgICAg
ICAgIHJldHVybiBOYU47CisgICAgCisgICAgc2Vjb25kcyA9IGludFNlY29uZHM7CisgICAgaWYg
KCpwb3N0UGFyc2VQb3NpdGlvbiA9PSAnLicpIHsKKyAgICAgICAgZGF0ZVN0cmluZyA9IHBvc3RQ
YXJzZVBvc2l0aW9uICsgMTsKKyAgICAgICAgCisgICAgICAgIC8vIEluIEVDTUEtMjYyLTUgaXQn
cyBhIGJpdCB1bmNsZWFyIGlmICcuJyBjYW4gYmUgcHJlc2VudCB3aXRob3V0IG1pbGxpc2Vjb25k
cywgYnV0CisgICAgICAgIC8vIGEgcmVhc29uYWJsZSBpbnRlcnByZXRhdGlvbiBndWlkZWQgYnkg
dGhlIGdpdmVuIGV4YW1wbGVzIGFuZCBSRkMgMzMzOSBzYXlzICJubyIuCisgICAgICAgIC8vIFdl
IGNoZWNrIHRoZSBuZXh0IGNoYXJhY3RlciB0byBhdm9pZCByZWFkaW5nICsvLSB0aW1lem9uZSBo
b3VycyBhZnRlciBhbiBpbnZhbGlkIGRlY2ltYWwuCisgICAgICAgIGlmICghaXNBU0NJSURpZ2l0
KCpkYXRlU3RyaW5nKSkKKyAgICAgICAgICAgIHJldHVybiBOYU47CisgICAgICAgIAorICAgICAg
ICBsb25nIGZyYWNTZWNvbmRzOworICAgICAgICBsb25nIG51bUZyYWNEaWdpdHM7CisgICAgICAg
IAorICAgICAgICAvLyBXZSBhcmUgbW9yZSBsZW5pZW50IHRoYW4gRVM1IGJ5IGFjY2VwdGluZyBt
b3JlIG9yIGxlc3MgdGhhbiAzIGZyYWN0aW9uIGRpZ2l0cy4KKyAgICAgICAgaWYgKCFwYXJzZUxv
bmcoZGF0ZVN0cmluZywgJnBvc3RQYXJzZVBvc2l0aW9uLCAxMCwgJmZyYWNTZWNvbmRzKSkKKyAg
ICAgICAgICAgIHJldHVybiBOYU47CisgICAgICAgIAorICAgICAgICBudW1GcmFjRGlnaXRzID0g
cG9zdFBhcnNlUG9zaXRpb24gLSBkYXRlU3RyaW5nOworICAgICAgICBzZWNvbmRzICs9IGZyYWNT
ZWNvbmRzICogcG93KDEwLCAtbnVtRnJhY0RpZ2l0cyk7CisgICAgfQorICAgIGRhdGVTdHJpbmcg
PSBwb3N0UGFyc2VQb3NpdGlvbjsKKyAgICAKKyAgICAvLyBBIGZldyBvZiB0aGVzZSBjaGVja3Mg
Y291bGQgYmUgZG9uZSBpbmxpbmUgYWJvdmUsIGJ1dCBzaW5jZSBtYW55IG9mIHRoZW0gYXJlIGlu
dGVycmVsYXRlZAorICAgIC8vIHdlIHdvdWxkIGJlIHNhY3JpZmljaW5nIHJlYWRhYmlsaXR5IHRv
ICJvcHRpbWl6ZSIgdGhlIChwcmVzdW1hYmx5IGxlc3MgY29tbW9uKSBmYWlsdXJlIHBhdGguCisg
ICAgaWYgKG1vbnRoIDwgMSB8fCBtb250aCA+IDEyKQorICAgICAgICByZXR1cm4gTmFOOworICAg
IGlmIChkYXkgPCAxIHx8IGRheSA+IGRheXNQZXJNb250aFttb250aC0xXSkKKyAgICAgICAgcmV0
dXJuIE5hTjsKKyAgICBpZiAobW9udGggPT0gMiAmJiBkYXkgPiAyOCAmJiAhaXNMZWFwWWVhcih5
ZWFyKSkKKyAgICAgICAgcmV0dXJuIE5hTjsKKyAgICBpZiAoaG91cnMgPCAwIHx8IGhvdXJzID4g
MjQpCisgICAgICAgIHJldHVybiBOYU47CisgICAgaWYgKGhvdXJzID09IDI0ICYmIChtaW51dGVz
IHx8IHNlY29uZHMpKQorICAgICAgICByZXR1cm4gTmFOOworICAgIGlmIChtaW51dGVzIDwgMCB8
fCBtaW51dGVzID4gNTkpCisgICAgICAgIHJldHVybiBOYU47CisgICAgaWYgKHNlY29uZHMgPCAw
IHx8IHNlY29uZHMgPj0gNjEpCisgICAgICAgIHJldHVybiBOYU47CisgICAgaWYgKHNlY29uZHMg
PiA2MCkgeworICAgICAgICAvLyBEaXNjYXJkIGxlYXAgc2Vjb25kcyBieSBjbGFtcGluZyB0byB0
aGUgZW5kIG9mIGEgbWludXRlLgorICAgICAgICBzZWNvbmRzID0gNjA7CisgICAgfQorICAgIAor
ICAgIGxvbmcgdGltZVpvbmVTZWNvbmRzID0gMDsKKyAgICBpZiAoKmRhdGVTdHJpbmcgIT0gJ1on
KSB7CisgICAgICAgIGJvb2wgdHpOZWdhdGl2ZTsKKyAgICAgICAgaWYgKCpkYXRlU3RyaW5nID09
ICctJykKKyAgICAgICAgICAgIHR6TmVnYXRpdmUgPSB0cnVlOworICAgICAgICBlbHNlIGlmICgq
ZGF0ZVN0cmluZyA9PSAnKycpCisgICAgICAgICAgICB0ek5lZ2F0aXZlID0gZmFsc2U7CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybiBOYU47CisgICAgICAgIGRhdGVTdHJpbmcgKz0g
MTsKKyAgICAgICAgCisgICAgICAgIGxvbmcgdHpIb3VyczsKKyAgICAgICAgbG9uZyB0ekhvdXJz
QWJzOworICAgICAgICBsb25nIHR6TWludXRlczsKKyAgICAgICAgCisgICAgICAgIGlmICghcGFy
c2VMb25nKGRhdGVTdHJpbmcsICZwb3N0UGFyc2VQb3NpdGlvbiwgMTAsICZ0ekhvdXJzKSkKKyAg
ICAgICAgICAgIHJldHVybiBOYU47CisgICAgICAgIGlmICgqcG9zdFBhcnNlUG9zaXRpb24gIT0g
JzonIHx8IChwb3N0UGFyc2VQb3NpdGlvbiAtIGRhdGVTdHJpbmcpICE9IDIpCisgICAgICAgICAg
ICByZXR1cm4gTmFOOworICAgICAgICB0ekhvdXJzQWJzID0gYWJzKHR6SG91cnMpOworICAgICAg
ICBkYXRlU3RyaW5nID0gcG9zdFBhcnNlUG9zaXRpb24gKyAxOworICAgICAgICAKKyAgICAgICAg
aWYgKCFwYXJzZUxvbmcoZGF0ZVN0cmluZywgJnBvc3RQYXJzZVBvc2l0aW9uLCAxMCwgJnR6TWlu
dXRlcykpCisgICAgICAgICAgICByZXR1cm4gTmFOOworICAgICAgICBpZiAoKHBvc3RQYXJzZVBv
c2l0aW9uIC0gZGF0ZVN0cmluZykgIT0gMikKKyAgICAgICAgICAgIHJldHVybiBOYU47CisgICAg
ICAgIGRhdGVTdHJpbmcgPSBwb3N0UGFyc2VQb3NpdGlvbjsKKyAgICAgICAgCisgICAgICAgIGlm
ICh0ekhvdXJzQWJzID4gMjQpCisgICAgICAgICAgICByZXR1cm4gTmFOOworICAgICAgICBpZiAo
dHpNaW51dGVzIDwgMCB8fCB0ek1pbnV0ZXMgPiA1OSkKKyAgICAgICAgICAgIHJldHVybiBOYU47
CisgICAgICAgIAorICAgICAgICB0aW1lWm9uZVNlY29uZHMgPSA2MCAqICh0ek1pbnV0ZXMgKyAo
NjAgKiB0ekhvdXJzQWJzKSk7CisgICAgICAgIGlmICh0ek5lZ2F0aXZlKQorICAgICAgICAgICAg
dGltZVpvbmVTZWNvbmRzID0gLXRpbWVab25lU2Vjb25kczsKKyAgICB9IGVsc2UgeworICAgICAg
ICBkYXRlU3RyaW5nICs9IDE7CisgICAgfQorICAgIGlmICgqZGF0ZVN0cmluZykKKyAgICAgICAg
cmV0dXJuIE5hTjsKKyAgICAKKyAgICBkb3VibGUgZGF0ZVNlY29uZHMgPSB5bWRobXNUb1NlY29u
ZHMoeWVhciwgbW9udGgsIGRheSwgaG91cnMsIG1pbnV0ZXMsIHNlY29uZHMpIC0gdGltZVpvbmVT
ZWNvbmRzOworICAgIHJldHVybiBkYXRlU2Vjb25kcyAqIG1zUGVyU2Vjb25kOworfQorCiAvLyBP
ZGQgY2FzZSB3aGVyZSAnZXhlYycgaXMgYWxsb3dlZCB0byBiZSAwLCB0byBhY2NvbW9kYXRlIGEg
Y2FsbGVyIGluIFdlYkNvcmUuCiBzdGF0aWMgZG91YmxlIHBhcnNlRGF0ZUZyb21OdWxsVGVybWlu
YXRlZENoYXJhY3RlcnMoY29uc3QgY2hhciogZGF0ZVN0cmluZywgYm9vbCYgaGF2ZVRaLCBpbnQm
IG9mZnNldCkKIHsKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi9EYXRlTWF0aC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIEphdmFTY3JpcHRDb3JlL3d0Zi9EYXRlTWF0aC5oCShyZXZpc2lvbiA2OTgyMSkKKysr
IEphdmFTY3JpcHRDb3JlL3d0Zi9EYXRlTWF0aC5oCSh3b3JraW5nIGNvcHkpCkBAIC01Myw3ICs1
Myw4IEBAIG5hbWVzcGFjZSBXVEYgewogdm9pZCBpbml0aWFsaXplRGF0ZXMoKTsKIGludCBlcXVp
dmFsZW50WWVhckZvckRTVChpbnQgeWVhcik7CiAKLS8vIE5vdCByZWFsbHkgbWF0aCByZWxhdGVk
LCBidXQgdGhpcyBpcyBjdXJyZW50bHkgdGhlIG9ubHkgc2hhcmVkIHBsYWNlIHRvIHB1dCB0aGVz
ZS4gIAorLy8gTm90IHJlYWxseSBtYXRoIHJlbGF0ZWQsIGJ1dCB0aGlzIGlzIGN1cnJlbnRseSB0
aGUgb25seSBzaGFyZWQgcGxhY2UgdG8gcHV0IHRoZXNlLgorZG91YmxlIHBhcnNlRVM1RGF0ZUZy
b21OdWxsVGVybWluYXRlZENoYXJhY3RlcnMoY29uc3QgY2hhciogZGF0ZVN0cmluZyk7CiBkb3Vi
bGUgcGFyc2VEYXRlRnJvbU51bGxUZXJtaW5hdGVkQ2hhcmFjdGVycyhjb25zdCBjaGFyKiBkYXRl
U3RyaW5nKTsKIGRvdWJsZSB0aW1lQ2xpcChkb3VibGUpOwogCkluZGV4OiBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA2
OTgyMSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDEzIEBACisyMDEwLTEwLTE0ICBOYXRoYW4gVmFuZGVyIFdpbHQgIDxuYXRlQGFuZHlldC5uZXQ+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQg
dGVzdHMgZm9yIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NDYzMgor
CisgICAgICAgICogZmFzdC9qcy9kYXRlLXBhcnNlLXRlc3QtZXhwZWN0ZWQudHh0OgorICAgICAg
ICAqIGZhc3QvanMvc2NyaXB0LXRlc3RzL2RhdGUtcGFyc2UtdGVzdC5qczoKKyAgICAgICAgKHRl
c3REYXRlUGFyc2VFeGFjdCk6CisKIDIwMTAtMTAtMDggIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2Jp
bnNvbkBpZ2FsaWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFhhbiBMb3Blei4KSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvanMvZGF0ZS1wYXJzZS10ZXN0LWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL2RhdGUtcGFyc2UtdGVzdC1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDY5ODIxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9kYXRlLXBhcnNlLXRlc3Qt
ZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0zLDYgKzMsMjIgQEAgVGVzdCBvZiBKYXZh
U2NyaXB0IGRhdGUgcGFyc2luZy4KIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBv
ZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIAogCitQQVNT
IERhdGUucGFyc2UoIjE5OTUtMTItMjVUMDE6MzA6MDBaIikgPT0gODE5ODU1MDAwMDAwIGlzIHRy
dWUKK1BBU1MgRGF0ZS5wYXJzZSgiMTk5NS0xMi0yNVQwMTozMDowMC41WiIpID09IDgxOTg1NTAw
MDUwMCBpcyB0cnVlCitQQVNTIERhdGUucGFyc2UoIjE5OTUtMTItMjVUMDE6MzA6MDAuMDA5WiIp
ID09IDgxOTg1NTAwMDAwOSBpcyB0cnVlCitQQVNTIERhdGUucGFyc2UoIjE5OTUtMTItMjVUMDE6
MzA6MDArMDA6MDAiKSA9PSA4MTk4NTUwMDAwMDAgaXMgdHJ1ZQorUEFTUyBEYXRlLnBhcnNlKCIx
OTk1LTEyLTI1VDAxOjMwOjAwLjArMDA6MDEiKSA9PSA4MTk4NTQ5NDAwMDAgaXMgdHJ1ZQorUEFT
UyBEYXRlLnBhcnNlKCIxOTk1LTEyLTI1VDAxOjMwOjAwLjAtMDA6MDEiKSA9PSA4MTk4NTUwNjAw
MDAgaXMgdHJ1ZQorUEFTUyBEYXRlLnBhcnNlKCIxOTk1LTEyLTI1VDAxOjMwOjAwLjArMDE6MDEi
KSA9PSA4MTk4NTEzNDAwMDAgaXMgdHJ1ZQorUEFTUyBEYXRlLnBhcnNlKCIxOTk1LTEyLTI1VDAx
OjMwOjAwLjAtMDE6MDEiKSA9PSA4MTk4NTg2NjAwMDAgaXMgdHJ1ZQorUEFTUyBEYXRlLnBhcnNl
KCIwMDAwLTAxLTAxVDAwOjAwOjAwWiIpID09IC02MjE2NzIxOTIwMDAwMCBpcyB0cnVlCitQQVNT
IERhdGUucGFyc2UoIis5OTk5OS0xMi0zMVQyNDowMDowMFoiKSA9PSAzMDkzNTI3OTgwODAwMDAw
IGlzIHRydWUKK1BBU1MgRGF0ZS5wYXJzZSgiLTk5OTk5LTAxLTAxVDAwOjAwOjAwWiIpID09IC0z
MjE3ODMwNzk2ODAwMDAwIGlzIHRydWUKK1BBU1MgRGF0ZS5wYXJzZSgiMTk5NS0xMi0yNVQwMToz
MDowMFogIikgaXMgTmFOCitQQVNTIERhdGUucGFyc2UoIjE5OTUtMTItMjVUMDE6MzA6MDArMDA6
MDAgIikgaXMgTmFOCitQQVNTIERhdGUucGFyc2UoIjE5OTUtMDItMjlUMDA6MDA6MDBaIikgaXMg
TmFOCitQQVNTIERhdGUucGFyc2UoIjE5OTUtMTItMjUgMDE6MzA6MDBaIikgaXMgTmFOCitQQVNT
IERhdGUucGFyc2UoIjE5OTUtMTItMjVUMDE6MzA6MDB6IikgaXMgTmFOCiBQQVNTIERhdGUucGFy
c2UoIkRlYyAyNSAxOTk1IEdNVCIpID09IDgxOTg0OTYwMDAwMCBpcyB0cnVlCiBQQVNTIERhdGUu
cGFyc2UoIkRFQyAyNSAxOTk1IEdNVCIpID09IDgxOTg0OTYwMDAwMCBpcyB0cnVlCiBQQVNTIERh
dGUucGFyc2UoImRlYyAyNSAxOTk1IGdtdCIpID09IDgxOTg0OTYwMDAwMCBpcyB0cnVlCkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2pzL3NjcmlwdC10ZXN0cy9kYXRlLXBhcnNlLXRlc3QuanMKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVzdHMvZGF0ZS1wYXJzZS10
ZXN0LmpzCShyZXZpc2lvbiA2OTgyMSkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvc2NyaXB0LXRl
c3RzL2RhdGUtcGFyc2UtdGVzdC5qcwkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsMzcgQEAg
ZnVuY3Rpb24gdGVzdERhdGVQYXJzZShkYXRlLCBudW1lcmljUmVzdQogICAgIH0KIH0KIAorZnVu
Y3Rpb24gdGVzdERhdGVQYXJzZUV4YWN0KGRhdGUsIG51bWVyaWNSZXN1bHQpCit7CisgICAgaWYg
KG51bWVyaWNSZXN1bHQgPT0gIk5hTiIpIHsKKyAgICAgICAgc2hvdWxkQmVOYU4oJ0RhdGUucGFy
c2UoIicgKyBkYXRlICsgJyIpJyk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgc2hvdWxkQmVUcnVl
KCdEYXRlLnBhcnNlKCInICsgZGF0ZSArICciKSA9PSAnICsgbnVtZXJpY1Jlc3VsdC50b1N0cmlu
ZygpKTsKKyAgICB9Cit9CisKKworLy8gdGVzdCBFQ01BU2NyaXB0IDUgc3RhbmRhcmQgZGF0ZSBw
YXJzaW5nCit0ZXN0RGF0ZVBhcnNlRXhhY3QoIjE5OTUtMTItMjVUMDE6MzA6MDBaIiwgIjgxOTg1
NTAwMDAwMCIpOwordGVzdERhdGVQYXJzZUV4YWN0KCIxOTk1LTEyLTI1VDAxOjMwOjAwLjVaIiwg
IjgxOTg1NTAwMDUwMCIpOwordGVzdERhdGVQYXJzZUV4YWN0KCIxOTk1LTEyLTI1VDAxOjMwOjAw
LjAwOVoiLCAiODE5ODU1MDAwMDA5Iik7Cit0ZXN0RGF0ZVBhcnNlRXhhY3QoIjE5OTUtMTItMjVU
MDE6MzA6MDArMDA6MDAiLCAiODE5ODU1MDAwMDAwIik7Cit0ZXN0RGF0ZVBhcnNlRXhhY3QoIjE5
OTUtMTItMjVUMDE6MzA6MDAuMCswMDowMSIsICI4MTk4NTQ5NDAwMDAiKTsKK3Rlc3REYXRlUGFy
c2VFeGFjdCgiMTk5NS0xMi0yNVQwMTozMDowMC4wLTAwOjAxIiwgIjgxOTg1NTA2MDAwMCIpOwor
dGVzdERhdGVQYXJzZUV4YWN0KCIxOTk1LTEyLTI1VDAxOjMwOjAwLjArMDE6MDEiLCAiODE5ODUx
MzQwMDAwIik7Cit0ZXN0RGF0ZVBhcnNlRXhhY3QoIjE5OTUtMTItMjVUMDE6MzA6MDAuMC0wMTow
MSIsICI4MTk4NTg2NjAwMDAiKTsKK3Rlc3REYXRlUGFyc2VFeGFjdCgiMDAwMC0wMS0wMVQwMDow
MDowMFoiLCAiLTYyMTY3MjE5MjAwMDAwIik7Cit0ZXN0RGF0ZVBhcnNlRXhhY3QoIis5OTk5OS0x
Mi0zMVQyNDowMDowMFoiLCAiMzA5MzUyNzk4MDgwMDAwMCIpOwordGVzdERhdGVQYXJzZUV4YWN0
KCItOTk5OTktMDEtMDFUMDA6MDA6MDBaIiwgIi0zMjE3ODMwNzk2ODAwMDAwIik7Cit0ZXN0RGF0
ZVBhcnNlRXhhY3QoIjE5OTUtMTItMjVUMDE6MzA6MDBaICIsICJOYU4iKTsKK3Rlc3REYXRlUGFy
c2VFeGFjdCgiMTk5NS0xMi0yNVQwMTozMDowMCswMDowMCAiLCAiTmFOIik7Cit0ZXN0RGF0ZVBh
cnNlRXhhY3QoIjE5OTUtMDItMjlUMDA6MDA6MDBaIiwgIk5hTiIpOwordGVzdERhdGVQYXJzZUV4
YWN0KCIxOTk1LTEyLTI1IDAxOjMwOjAwWiIsICJOYU4iKTsKK3Rlc3REYXRlUGFyc2VFeGFjdCgi
MTk5NS0xMi0yNVQwMTozMDowMHoiLCAiTmFOIik7CisKKworLy8gdGVzdCBvbGQgaW1wbGVtZW50
YXRpb24gZmFsbGJhY2sKKwogdmFyIHRpbWVab25lT2Zmc2V0ID0gRGF0ZS5wYXJzZSgiIERlYyAy
NSAxOTk1IDE6MzAgIikgLSBEYXRlLnBhcnNlKCIgRGVjIDI1IDE5OTUgMTozMCBHTVQgIik7CiAK
IHRlc3REYXRlUGFyc2UoIkRlYyAyNSAxOTk1IEdNVCIsICI4MTk4NDk2MDAwMDAiKTsKQEAgLTQz
LDcgKzc0LDcgQEAgdGVzdERhdGVQYXJzZSgiRGVjIDI1IDE5OTUgMTozMCBBTSAiLCAiOAogCiB0
ZXN0RGF0ZVBhcnNlKCJEZWMgMjUgMTk5NSAxMzozMCBHTVQiLCAiODE5ODk4MjAwMDAwIik7CiB0
ZXN0RGF0ZVBhcnNlKCJEZWMgMjUgMTk5NSAxMzozMCIsICI4MTk4OTgyMDAwMDAgKyB0aW1lWm9u
ZU9mZnNldCIpOwotdGVzdERhdGVQYXJzZSgnRGVjIDI1IDEzOjMwIDE5OTUnLCAiODE5ODk4MjAw
MDAwICsgdGltZVpvbmVPZmZzZXQiKTsKK3Rlc3REYXRlUGFyc2UoIkRlYyAyNSAxMzozMCAxOTk1
IiwgIjgxOTg5ODIwMDAwMCArIHRpbWVab25lT2Zmc2V0Iik7CiB0ZXN0RGF0ZVBhcnNlKCJEZWMg
MjUgMTk5NSAxMzozMCAiLCAiODE5ODk4MjAwMDAwICsgdGltZVpvbmVPZmZzZXQiKTsKIHRlc3RE
YXRlUGFyc2UoIkRlYyAyNSAxOTk1IDE6MzAgUE0gR01UIiwgIjgxOTg5ODIwMDAwMCIpOwogdGVz
dERhdGVQYXJzZSgiRGVjIDI1IDE5OTUgMTozMCBQTSIsICI4MTk4OTgyMDAwMDAgKyB0aW1lWm9u
ZU9mZnNldCIpOwo=
</data>
<flag name="review"
          id="60707"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>70814</attachid>
            <date>2010-10-14 18:01:52 -0700</date>
            <delta_ts>2010-10-14 19:45:12 -0700</delta_ts>
            <desc>Adds more tests (and stricter input checking) and fixes more style issues.</desc>
            <filename>DateParseES5_more_tests.txt</filename>
            <type>text/plain</type>
            <size>14928</size>
            <attacher name="Nathan Vander Wilt">natevw</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDY5ODIxKQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTAtMTAtMTQgIE5hdGhhbiBW
YW5kZXIgV2lsdCAgPG5hdGVAYW5keWV0Lm5ldD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBwYXJzZXIgZm9yIEVDTUFTY3JpcHQgNSBzdGFu
ZGFyZCBkYXRlIGZvcm1hdCwgc28gRGF0ZS5wYXJzZSBjYW4gaGFuZGxlIFJGQyAzMzM5IHRpbWVz
dGFtcHM6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NDYzMgorCisg
ICAgICAgICogcnVudGltZS9EYXRlQ29udmVyc2lvbi5jcHA6CisgICAgICAgIChKU0M6OnBhcnNl
RGF0ZSk6CisgICAgICAgICogd3RmL0RhdGVNYXRoLmNwcDoKKyAgICAgICAgKFdURjo6eW1kaG1z
VG9TZWNvbmRzKToKKyAgICAgICAgKFdURjo6cGFyc2VFUzVEYXRlRnJvbU51bGxUZXJtaW5hdGVk
Q2hhcmFjdGVycyk6CisgICAgICAgICogd3RmL0RhdGVNYXRoLmg6CisKIDIwMTAtMTAtMTQgIE5p
a29sYXMgWmltbWVybWFubiAgPG56aW1tZXJtYW5uQHJpbS5jb20+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgR2F2aW4gQmFycmFjbG91Z2guCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Rh
dGVDb252ZXJzaW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Rh
dGVDb252ZXJzaW9uLmNwcAkocmV2aXNpb24gNjk4MjEpCisrKyBKYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0RhdGVDb252ZXJzaW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTcsNyArNTcsOSBAQCBk
b3VibGUgcGFyc2VEYXRlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgCiB7CiAgICAgaWYgKGRhdGUg
PT0gZXhlYy0+Z2xvYmFsRGF0YSgpLmNhY2hlZERhdGVTdHJpbmcpCiAgICAgICAgIHJldHVybiBl
eGVjLT5nbG9iYWxEYXRhKCkuY2FjaGVkRGF0ZVN0cmluZ1ZhbHVlOwotICAgIGRvdWJsZSB2YWx1
ZSA9IHBhcnNlRGF0ZUZyb21OdWxsVGVybWluYXRlZENoYXJhY3RlcnMoZXhlYywgZGF0ZS51dGY4
KCkuZGF0YSgpKTsKKyAgICBkb3VibGUgdmFsdWUgPSBwYXJzZUVTNURhdGVGcm9tTnVsbFRlcm1p
bmF0ZWRDaGFyYWN0ZXJzKGRhdGUudXRmOCgpLmRhdGEoKSk7CisgICAgaWYgKGlzbmFuKHZhbHVl
KSkKKyAgICAgICAgdmFsdWUgPSBwYXJzZURhdGVGcm9tTnVsbFRlcm1pbmF0ZWRDaGFyYWN0ZXJz
KGV4ZWMsIGRhdGUudXRmOCgpLmRhdGEoKSk7CiAgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLmNhY2hl
ZERhdGVTdHJpbmcgPSBkYXRlOwogICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5jYWNoZWREYXRlU3Ry
aW5nVmFsdWUgPSB2YWx1ZTsKICAgICByZXR1cm4gdmFsdWU7CkluZGV4OiBKYXZhU2NyaXB0Q29y
ZS93dGYvRGF0ZU1hdGguY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3d0Zi9EYXRl
TWF0aC5jcHAJKHJldmlzaW9uIDY5ODIxKQorKysgSmF2YVNjcmlwdENvcmUvd3RmL0RhdGVNYXRo
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMyw2ICszLDcgQEAKICAqIENvcHlyaWdodCAoQykgMjAw
NiwgMjAwNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMp
IDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykg
MjAwNy0yMDA5IFRvcmNoIE1vYmlsZSwgSW5jLgorICogQ29weXJpZ2h0IChDKSAyMDEwICZ5ZXQs
IExMQy4gKG5hdGVAYW5keWV0Lm5ldCkKICAqCiAgKiBUaGUgT3JpZ2luYWwgQ29kZSBpcyBNb3pp
bGxhIENvbW11bmljYXRvciBjbGllbnQgY29kZSwgcmVsZWFzZWQKICAqIE1hcmNoIDMxLCAxOTk4
LgpAQCAtNDc5LDcgKzQ4MCw3IEBAIHZvaWQgaW5pdGlhbGl6ZURhdGVzKCkKICAgICBlcXVpdmFs
ZW50WWVhckZvckRTVCgyMDAwKTsgLy8gTmVlZCB0byBjYWxsIG9uY2UgdG8gaW5pdGlhbGl6ZSBh
IHN0YXRpYyB1c2VkIGluIHRoaXMgZnVuY3Rpb24uCiB9CiAKLXN0YXRpYyBpbmxpbmUgZG91Ymxl
IHltZGhtc1RvU2Vjb25kcyhsb25nIHllYXIsIGludCBtb24sIGludCBkYXksIGludCBob3VyLCBp
bnQgbWludXRlLCBpbnQgc2Vjb25kKQorc3RhdGljIGlubGluZSBkb3VibGUgeW1kaG1zVG9TZWNv
bmRzKGxvbmcgeWVhciwgaW50IG1vbiwgaW50IGRheSwgaW50IGhvdXIsIGludCBtaW51dGUsIGRv
dWJsZSBzZWNvbmQpCiB7CiAgICAgZG91YmxlIGRheXMgPSAoZGF5IC0gMzIwNzUpCiAgICAgICAg
ICsgZmxvb3IoMTQ2MSAqICh5ZWFyICsgNDgwMC4wICsgKG1vbiAtIDE0KSAvIDEyKSAvIDQpCkBA
IC01NTcsNiArNTU4LDE2MiBAQCBzdGF0aWMgYm9vbCBwYXJzZUxvbmcoY29uc3QgY2hhciogc3Ry
aW5nCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK2RvdWJsZSBwYXJzZUVTNURhdGVGcm9tTnVsbFRl
cm1pbmF0ZWRDaGFyYWN0ZXJzKGNvbnN0IGNoYXIqIGRhdGVTdHJpbmcpCit7CisgICAgLy8gVGhp
cyBwYXJzZXMgYSBkYXRlIG9mIHRoZSBmb3JtIGRlZmluZWQgaW4gRUNNQS0yNjItNSwgc2VjdGlv
biAxNS45LjEuMTUKKyAgICAvLyAoc2ltaWxhciB0byBSRkMgMzMzOSAvIElTTyA4NjAxOiBZWVlZ
LU1NLUREVEhIOm1tOnNzWy5zc3NdWikuCisgICAgLy8gSW4gbW9zdCBjYXNlcyBpdCBpcyBpbnRl
bnRpb25hbGx5IHN0cmljdCAoZS5nLiBjb3JyZWN0IGZpZWxkIHdpZHRocywgbm8gc3RyYXkgd2hp
dGVzcGFjZSkuCisgICAgCisgICAgc3RhdGljIGNvbnN0IGxvbmcgZGF5c1Blck1vbnRoWzEyXSA9
IHsgMzEsIDI5LCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMxLCAzMCwgMzEsIDMwLCAzMSB9OworICAg
IAorICAgIGNvbnN0IGNoYXIqIGN1cnJlbnRQb3NpdGlvbiA9IGRhdGVTdHJpbmc7CisgICAgY2hh
ciogcG9zdFBhcnNlUG9zaXRpb247CisgICAgCisgICAgLy8gVGhpcyBpcyBhIGJpdCBtb3JlIGxl
bmllbnQgb24gdGhlIHllYXIgc3RyaW5nIHRoYW4gRVM1IHNwZWNpZmllczoKKyAgICAvLyBpbnN0
ZWFkIG9mIHJlc3RyaWN0aW5nIHRvIDQgZGlnaXRzIChvciA2IGRpZ2l0cyB3aXRoIG1hbmRhdG9y
eSArLy0pLAorICAgIC8vIGl0IGFjY2VwdHMgYW55IGludGVnZXIgdmFsdWUuIENvbnNpZGVyIHRo
aXMgYW4gaW1wbGVtZW50YXRpb24gZmFsbGJhY2suCisgICAgbG9uZyB5ZWFyOworICAgIGlmICgh
cGFyc2VMb25nKGN1cnJlbnRQb3NpdGlvbiwgJnBvc3RQYXJzZVBvc2l0aW9uLCAxMCwgJnllYXIp
KQorICAgICAgICByZXR1cm4gTmFOOworICAgIGlmICgqcG9zdFBhcnNlUG9zaXRpb24gIT0gJy0n
KQorICAgICAgICByZXR1cm4gTmFOOworICAgIGN1cnJlbnRQb3NpdGlvbiA9IHBvc3RQYXJzZVBv
c2l0aW9uICsgMTsKKyAgICAKKyAgICBsb25nIG1vbnRoOworICAgIGlmICghaXNBU0NJSURpZ2l0
KCpjdXJyZW50UG9zaXRpb24pKQorICAgICAgICByZXR1cm4gTmFOOworICAgIGlmICghcGFyc2VM
b25nKGN1cnJlbnRQb3NpdGlvbiwgJnBvc3RQYXJzZVBvc2l0aW9uLCAxMCwgJm1vbnRoKSkKKyAg
ICAgICAgcmV0dXJuIE5hTjsKKyAgICBpZiAoKnBvc3RQYXJzZVBvc2l0aW9uICE9ICctJyB8fCAo
cG9zdFBhcnNlUG9zaXRpb24gLSBjdXJyZW50UG9zaXRpb24pICE9IDIpCisgICAgICAgIHJldHVy
biBOYU47CisgICAgY3VycmVudFBvc2l0aW9uID0gcG9zdFBhcnNlUG9zaXRpb24gKyAxOworICAg
IAorICAgIGxvbmcgZGF5OworICAgIGlmICghaXNBU0NJSURpZ2l0KCpjdXJyZW50UG9zaXRpb24p
KQorICAgICAgICByZXR1cm4gTmFOOworICAgIGlmICghcGFyc2VMb25nKGN1cnJlbnRQb3NpdGlv
biwgJnBvc3RQYXJzZVBvc2l0aW9uLCAxMCwgJmRheSkpCisgICAgICAgIHJldHVybiBOYU47Cisg
ICAgaWYgKCpwb3N0UGFyc2VQb3NpdGlvbiAhPSAnVCcgfHwgKHBvc3RQYXJzZVBvc2l0aW9uIC0g
Y3VycmVudFBvc2l0aW9uKSAhPSAyKQorICAgICAgICByZXR1cm4gTmFOOworICAgIGN1cnJlbnRQ
b3NpdGlvbiA9IHBvc3RQYXJzZVBvc2l0aW9uICsgMTsKKyAgICAKKyAgICBsb25nIGhvdXJzOwor
ICAgIGlmICghaXNBU0NJSURpZ2l0KCpjdXJyZW50UG9zaXRpb24pKQorICAgICAgICByZXR1cm4g
TmFOOworICAgIGlmICghcGFyc2VMb25nKGN1cnJlbnRQb3NpdGlvbiwgJnBvc3RQYXJzZVBvc2l0
aW9uLCAxMCwgJmhvdXJzKSkKKyAgICAgICAgcmV0dXJuIE5hTjsKKyAgICBpZiAoKnBvc3RQYXJz
ZVBvc2l0aW9uICE9ICc6JyB8fCAocG9zdFBhcnNlUG9zaXRpb24gLSBjdXJyZW50UG9zaXRpb24p
ICE9IDIpCisgICAgICAgIHJldHVybiBOYU47CisgICAgY3VycmVudFBvc2l0aW9uID0gcG9zdFBh
cnNlUG9zaXRpb24gKyAxOworICAgIAorICAgIGxvbmcgbWludXRlczsKKyAgICBpZiAoIWlzQVND
SUlEaWdpdCgqY3VycmVudFBvc2l0aW9uKSkKKyAgICAgICAgcmV0dXJuIE5hTjsKKyAgICBpZiAo
IXBhcnNlTG9uZyhjdXJyZW50UG9zaXRpb24sICZwb3N0UGFyc2VQb3NpdGlvbiwgMTAsICZtaW51
dGVzKSkKKyAgICAgICAgcmV0dXJuIE5hTjsKKyAgICBpZiAoKnBvc3RQYXJzZVBvc2l0aW9uICE9
ICc6JyB8fCAocG9zdFBhcnNlUG9zaXRpb24gLSBjdXJyZW50UG9zaXRpb24pICE9IDIpCisgICAg
ICAgIHJldHVybiBOYU47CisgICAgY3VycmVudFBvc2l0aW9uID0gcG9zdFBhcnNlUG9zaXRpb24g
KyAxOworICAgIAorICAgIGxvbmcgaW50U2Vjb25kczsKKyAgICBpZiAoIWlzQVNDSUlEaWdpdCgq
Y3VycmVudFBvc2l0aW9uKSkKKyAgICAgICAgcmV0dXJuIE5hTjsKKyAgICBpZiAoIXBhcnNlTG9u
ZyhjdXJyZW50UG9zaXRpb24sICZwb3N0UGFyc2VQb3NpdGlvbiwgMTAsICZpbnRTZWNvbmRzKSkK
KyAgICAgICAgcmV0dXJuIE5hTjsKKyAgICBpZiAoKHBvc3RQYXJzZVBvc2l0aW9uIC0gY3VycmVu
dFBvc2l0aW9uKSAhPSAyKQorICAgICAgICByZXR1cm4gTmFOOworICAgIAorICAgIGRvdWJsZSBz
ZWNvbmRzID0gaW50U2Vjb25kczsKKyAgICBpZiAoKnBvc3RQYXJzZVBvc2l0aW9uID09ICcuJykg
eworICAgICAgICBjdXJyZW50UG9zaXRpb24gPSBwb3N0UGFyc2VQb3NpdGlvbiArIDE7CisgICAg
ICAgIAorICAgICAgICAvLyBJbiBFQ01BLTI2Mi01IGl0J3MgYSBiaXQgdW5jbGVhciBpZiAnLicg
Y2FuIGJlIHByZXNlbnQgd2l0aG91dCBtaWxsaXNlY29uZHMsIGJ1dAorICAgICAgICAvLyBhIHJl
YXNvbmFibGUgaW50ZXJwcmV0YXRpb24gZ3VpZGVkIGJ5IHRoZSBnaXZlbiBleGFtcGxlcyBhbmQg
UkZDIDMzMzkgc2F5cyAibm8iLgorICAgICAgICAvLyBXZSBjaGVjayB0aGUgbmV4dCBjaGFyYWN0
ZXIgdG8gYXZvaWQgcmVhZGluZyArLy0gdGltZXpvbmUgaG91cnMgYWZ0ZXIgYW4gaW52YWxpZCBk
ZWNpbWFsLgorICAgICAgICBpZiAoIWlzQVNDSUlEaWdpdCgqY3VycmVudFBvc2l0aW9uKSkKKyAg
ICAgICAgICAgIHJldHVybiBOYU47CisgICAgICAgIAorICAgICAgICAvLyBXZSBhcmUgbW9yZSBs
ZW5pZW50IHRoYW4gRVM1IGJ5IGFjY2VwdGluZyBtb3JlIG9yIGxlc3MgdGhhbiAzIGZyYWN0aW9u
IGRpZ2l0cy4KKyAgICAgICAgbG9uZyBmcmFjU2Vjb25kczsKKyAgICAgICAgaWYgKCFwYXJzZUxv
bmcoY3VycmVudFBvc2l0aW9uLCAmcG9zdFBhcnNlUG9zaXRpb24sIDEwLCAmZnJhY1NlY29uZHMp
KQorICAgICAgICAgICAgcmV0dXJuIE5hTjsKKyAgICAgICAgCisgICAgICAgIGxvbmcgbnVtRnJh
Y0RpZ2l0cyA9IHBvc3RQYXJzZVBvc2l0aW9uIC0gY3VycmVudFBvc2l0aW9uOworICAgICAgICBz
ZWNvbmRzICs9IGZyYWNTZWNvbmRzICogcG93KDEwLCAtbnVtRnJhY0RpZ2l0cyk7CisgICAgfQor
ICAgIGN1cnJlbnRQb3NpdGlvbiA9IHBvc3RQYXJzZVBvc2l0aW9uOworICAgIAorICAgIC8vIEEg
ZmV3IG9mIHRoZXNlIGNoZWNrcyBjb3VsZCBiZSBkb25lIGlubGluZSBhYm92ZSwgYnV0IHNpbmNl
IG1hbnkgb2YgdGhlbSBhcmUgaW50ZXJyZWxhdGVkCisgICAgLy8gd2Ugd291bGQgYmUgc2Fjcmlm
aWNpbmcgcmVhZGFiaWxpdHkgdG8gIm9wdGltaXplIiB0aGUgKHByZXN1bWFibHkgbGVzcyBjb21t
b24pIGZhaWx1cmUgcGF0aC4KKyAgICBpZiAobW9udGggPCAxIHx8IG1vbnRoID4gMTIpCisgICAg
ICAgIHJldHVybiBOYU47CisgICAgaWYgKGRheSA8IDEgfHwgZGF5ID4gZGF5c1Blck1vbnRoW21v
bnRoIC0gMV0pCisgICAgICAgIHJldHVybiBOYU47CisgICAgaWYgKG1vbnRoID09IDIgJiYgZGF5
ID4gMjggJiYgIWlzTGVhcFllYXIoeWVhcikpCisgICAgICAgIHJldHVybiBOYU47CisgICAgaWYg
KGhvdXJzIDwgMCB8fCBob3VycyA+IDI0KQorICAgICAgICByZXR1cm4gTmFOOworICAgIGlmICho
b3VycyA9PSAyNCAmJiAobWludXRlcyB8fCBzZWNvbmRzKSkKKyAgICAgICAgcmV0dXJuIE5hTjsK
KyAgICBpZiAobWludXRlcyA8IDAgfHwgbWludXRlcyA+IDU5KQorICAgICAgICByZXR1cm4gTmFO
OworICAgIGlmIChzZWNvbmRzIDwgMCB8fCBzZWNvbmRzID49IDYxKQorICAgICAgICByZXR1cm4g
TmFOOworICAgIGlmIChzZWNvbmRzID4gNjApIHsKKyAgICAgICAgLy8gRGlzY2FyZCBsZWFwIHNl
Y29uZHMgYnkgY2xhbXBpbmcgdG8gdGhlIGVuZCBvZiBhIG1pbnV0ZS4KKyAgICAgICAgc2Vjb25k
cyA9IDYwOworICAgIH0KKyAgICAKKyAgICBsb25nIHRpbWVab25lU2Vjb25kcyA9IDA7CisgICAg
aWYgKCpjdXJyZW50UG9zaXRpb24gIT0gJ1onKSB7CisgICAgICAgIGJvb2wgdHpOZWdhdGl2ZTsK
KyAgICAgICAgaWYgKCpjdXJyZW50UG9zaXRpb24gPT0gJy0nKQorICAgICAgICAgICAgdHpOZWdh
dGl2ZSA9IHRydWU7CisgICAgICAgIGVsc2UgaWYgKCpjdXJyZW50UG9zaXRpb24gPT0gJysnKQor
ICAgICAgICAgICAgdHpOZWdhdGl2ZSA9IGZhbHNlOworICAgICAgICBlbHNlCisgICAgICAgICAg
ICByZXR1cm4gTmFOOworICAgICAgICBjdXJyZW50UG9zaXRpb24gKz0gMTsKKyAgICAgICAgCisg
ICAgICAgIGxvbmcgdHpIb3VyczsKKyAgICAgICAgbG9uZyB0ekhvdXJzQWJzOworICAgICAgICBs
b25nIHR6TWludXRlczsKKyAgICAgICAgCisgICAgICAgIGlmICghaXNBU0NJSURpZ2l0KCpjdXJy
ZW50UG9zaXRpb24pKQorICAgICAgICAgICAgcmV0dXJuIE5hTjsKKyAgICAgICAgaWYgKCFwYXJz
ZUxvbmcoY3VycmVudFBvc2l0aW9uLCAmcG9zdFBhcnNlUG9zaXRpb24sIDEwLCAmdHpIb3Vycykp
CisgICAgICAgICAgICByZXR1cm4gTmFOOworICAgICAgICBpZiAoKnBvc3RQYXJzZVBvc2l0aW9u
ICE9ICc6JyB8fCAocG9zdFBhcnNlUG9zaXRpb24gLSBjdXJyZW50UG9zaXRpb24pICE9IDIpCisg
ICAgICAgICAgICByZXR1cm4gTmFOOworICAgICAgICB0ekhvdXJzQWJzID0gYWJzKHR6SG91cnMp
OworICAgICAgICBjdXJyZW50UG9zaXRpb24gPSBwb3N0UGFyc2VQb3NpdGlvbiArIDE7CisgICAg
ICAgIAorICAgICAgICBpZiAoIWlzQVNDSUlEaWdpdCgqY3VycmVudFBvc2l0aW9uKSkKKyAgICAg
ICAgICAgIHJldHVybiBOYU47CisgICAgICAgIGlmICghcGFyc2VMb25nKGN1cnJlbnRQb3NpdGlv
biwgJnBvc3RQYXJzZVBvc2l0aW9uLCAxMCwgJnR6TWludXRlcykpCisgICAgICAgICAgICByZXR1
cm4gTmFOOworICAgICAgICBpZiAoKHBvc3RQYXJzZVBvc2l0aW9uIC0gY3VycmVudFBvc2l0aW9u
KSAhPSAyKQorICAgICAgICAgICAgcmV0dXJuIE5hTjsKKyAgICAgICAgY3VycmVudFBvc2l0aW9u
ID0gcG9zdFBhcnNlUG9zaXRpb247CisgICAgICAgIAorICAgICAgICBpZiAodHpIb3Vyc0FicyA+
IDI0KQorICAgICAgICAgICAgcmV0dXJuIE5hTjsKKyAgICAgICAgaWYgKHR6TWludXRlcyA8IDAg
fHwgdHpNaW51dGVzID4gNTkpCisgICAgICAgICAgICByZXR1cm4gTmFOOworICAgICAgICAKKyAg
ICAgICAgdGltZVpvbmVTZWNvbmRzID0gNjAgKiAodHpNaW51dGVzICsgKDYwICogdHpIb3Vyc0Fi
cykpOworICAgICAgICBpZiAodHpOZWdhdGl2ZSkKKyAgICAgICAgICAgIHRpbWVab25lU2Vjb25k
cyA9IC10aW1lWm9uZVNlY29uZHM7CisgICAgfSBlbHNlIHsKKyAgICAgICAgY3VycmVudFBvc2l0
aW9uICs9IDE7CisgICAgfQorICAgIGlmICgqY3VycmVudFBvc2l0aW9uKQorICAgICAgICByZXR1
cm4gTmFOOworICAgIAorICAgIGRvdWJsZSBkYXRlU2Vjb25kcyA9IHltZGhtc1RvU2Vjb25kcyh5
ZWFyLCBtb250aCwgZGF5LCBob3VycywgbWludXRlcywgc2Vjb25kcykgLSB0aW1lWm9uZVNlY29u
ZHM7CisgICAgcmV0dXJuIGRhdGVTZWNvbmRzICogbXNQZXJTZWNvbmQ7Cit9CisKIC8vIE9kZCBj
YXNlIHdoZXJlICdleGVjJyBpcyBhbGxvd2VkIHRvIGJlIDAsIHRvIGFjY29tb2RhdGUgYSBjYWxs
ZXIgaW4gV2ViQ29yZS4KIHN0YXRpYyBkb3VibGUgcGFyc2VEYXRlRnJvbU51bGxUZXJtaW5hdGVk
Q2hhcmFjdGVycyhjb25zdCBjaGFyKiBkYXRlU3RyaW5nLCBib29sJiBoYXZlVFosIGludCYgb2Zm
c2V0KQogewpJbmRleDogSmF2YVNjcmlwdENvcmUvd3RmL0RhdGVNYXRoLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gSmF2YVNjcmlwdENvcmUvd3RmL0RhdGVNYXRoLmgJKHJldmlzaW9uIDY5ODIxKQorKysgSmF2
YVNjcmlwdENvcmUvd3RmL0RhdGVNYXRoLmgJKHdvcmtpbmcgY29weSkKQEAgLTUzLDcgKzUzLDgg
QEAgbmFtZXNwYWNlIFdURiB7CiB2b2lkIGluaXRpYWxpemVEYXRlcygpOwogaW50IGVxdWl2YWxl
bnRZZWFyRm9yRFNUKGludCB5ZWFyKTsKIAotLy8gTm90IHJlYWxseSBtYXRoIHJlbGF0ZWQsIGJ1
dCB0aGlzIGlzIGN1cnJlbnRseSB0aGUgb25seSBzaGFyZWQgcGxhY2UgdG8gcHV0IHRoZXNlLiAg
CisvLyBOb3QgcmVhbGx5IG1hdGggcmVsYXRlZCwgYnV0IHRoaXMgaXMgY3VycmVudGx5IHRoZSBv
bmx5IHNoYXJlZCBwbGFjZSB0byBwdXQgdGhlc2UuCitkb3VibGUgcGFyc2VFUzVEYXRlRnJvbU51
bGxUZXJtaW5hdGVkQ2hhcmFjdGVycyhjb25zdCBjaGFyKiBkYXRlU3RyaW5nKTsKIGRvdWJsZSBw
YXJzZURhdGVGcm9tTnVsbFRlcm1pbmF0ZWRDaGFyYWN0ZXJzKGNvbnN0IGNoYXIqIGRhdGVTdHJp
bmcpOwogZG91YmxlIHRpbWVDbGlwKGRvdWJsZSk7CiAKSW5kZXg6IExheW91dFRlc3RzL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDY5ODIx
KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMg
QEAKKzIwMTAtMTAtMTQgIE5hdGhhbiBWYW5kZXIgV2lsdCAgPG5hdGVAYW5keWV0Lm5ldD4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCB0ZXN0
cyBmb3IgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ0NjMyCisKKyAg
ICAgICAgKiBmYXN0L2pzL2RhdGUtcGFyc2UtdGVzdC1leHBlY3RlZC50eHQ6CisgICAgICAgICog
ZmFzdC9qcy9zY3JpcHQtdGVzdHMvZGF0ZS1wYXJzZS10ZXN0LmpzOgorICAgICAgICAodGVzdERh
dGVQYXJzZUV4YWN0KToKKwogMjAxMC0xMC0wOCAgTWFydGluIFJvYmluc29uICA8bXJvYmluc29u
QGlnYWxpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgWGFuIExvcGV6LgpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9qcy9kYXRlLXBhcnNlLXRlc3QtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvanMvZGF0ZS1wYXJzZS10ZXN0LWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gNjk4MjEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL2RhdGUtcGFyc2UtdGVzdC1leHBl
Y3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTMsNiArMywzMiBAQCBUZXN0IG9mIEphdmFTY3Jp
cHQgZGF0ZSBwYXJzaW5nLgogT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgogCiAKK1BBU1MgRGF0
ZS5wYXJzZSgiMTk5NS0xMi0yNVQwMTozMDowMFoiKSA9PSA4MTk4NTUwMDAwMDAgaXMgdHJ1ZQor
UEFTUyBEYXRlLnBhcnNlKCIxOTk1LTEyLTI1VDAxOjMwOjAwLjVaIikgPT0gODE5ODU1MDAwNTAw
IGlzIHRydWUKK1BBU1MgRGF0ZS5wYXJzZSgiMTk5NS0xMi0yNVQwMTozMDowMC4wMDlaIikgPT0g
ODE5ODU1MDAwMDA5IGlzIHRydWUKK1BBU1MgRGF0ZS5wYXJzZSgiMTk5NS0xMi0yNVQwMTozMDow
MCswMDowMCIpID09IDgxOTg1NTAwMDAwMCBpcyB0cnVlCitQQVNTIERhdGUucGFyc2UoIjE5OTUt
MTItMjVUMDE6MzA6MDAuMCswMDowMSIpID09IDgxOTg1NDk0MDAwMCBpcyB0cnVlCitQQVNTIERh
dGUucGFyc2UoIjE5OTUtMTItMjVUMDE6MzA6MDAuMC0wMDowMSIpID09IDgxOTg1NTA2MDAwMCBp
cyB0cnVlCitQQVNTIERhdGUucGFyc2UoIjE5OTUtMTItMjVUMDE6MzA6MDAuMCswMTowMSIpID09
IDgxOTg1MTM0MDAwMCBpcyB0cnVlCitQQVNTIERhdGUucGFyc2UoIjE5OTUtMTItMjVUMDE6MzA6
MDAuMC0wMTowMSIpID09IDgxOTg1ODY2MDAwMCBpcyB0cnVlCitQQVNTIERhdGUucGFyc2UoIjAw
MDAtMDEtMDFUMDA6MDA6MDBaIikgPT0gLTYyMTY3MjE5MjAwMDAwIGlzIHRydWUKK1BBU1MgRGF0
ZS5wYXJzZSgiKzk5OTk5LTEyLTMxVDI0OjAwOjAwWiIpID09IDMwOTM1Mjc5ODA4MDAwMDAgaXMg
dHJ1ZQorUEFTUyBEYXRlLnBhcnNlKCItOTk5OTktMDEtMDFUMDA6MDA6MDBaIikgPT0gLTMyMTc4
MzA3OTY4MDAwMDAgaXMgdHJ1ZQorUEFTUyBEYXRlLnBhcnNlKCIxOTk1LTEyLTMxVDIzOjU5OjYw
WiIpID09IDgyMDQ1NDQwMDAwMCBpcyB0cnVlCitQQVNTIERhdGUucGFyc2UoIjE5OTUtMTItMzFU
MjM6NTk6NjAuNVoiKSA9PSA4MjA0NTQ0MDAwMDAgaXMgdHJ1ZQorUEFTUyBEYXRlLnBhcnNlKCIx
OTk1LTEzLTI1VDAxOjMwOjAwWiIpIGlzIE5hTgorUEFTUyBEYXRlLnBhcnNlKCIxOTk1LTAwLTI1
VDAxOjMwOjAwWiIpIGlzIE5hTgorUEFTUyBEYXRlLnBhcnNlKCIxOTk1LS0xLTI1VDAxOjMwOjAw
WiIpIGlzIE5hTgorUEFTUyBEYXRlLnBhcnNlKCIxOTk1LTAxLTI1VDAxOjA1Oi0wLjNaIikgaXMg
TmFOCitQQVNTIERhdGUucGFyc2UoIjE5OTUvMTIvMjVUMDE6MzA6MDBaIikgaXMgTmFOCitQQVNT
IERhdGUucGFyc2UoIjE5OTUtMTItMjVUMTozMDowMFoiKSBpcyBOYU4KK1BBU1MgRGF0ZS5wYXJz
ZSgiMTk5NS0xMi0yNVQwMTozMDowMC5aIikgaXMgTmFOCitQQVNTIERhdGUucGFyc2UoIjE5OTUt
MTItMjVUMDE6MzA6MDAuKzFaIikgaXMgTmFOCitQQVNTIERhdGUucGFyc2UoIjE5OTUtMTItMjVU
MDE6MzA6MDBaICIpIGlzIE5hTgorUEFTUyBEYXRlLnBhcnNlKCIxOTk1LTEyLTI1VDAxOjMwOjAw
KzAwOjAwICIpIGlzIE5hTgorUEFTUyBEYXRlLnBhcnNlKCIxOTk1LTAyLTI5VDAwOjAwOjAwWiIp
IGlzIE5hTgorUEFTUyBEYXRlLnBhcnNlKCIxOTk1LTEyLTI1IDAxOjMwOjAwWiIpIGlzIE5hTgor
UEFTUyBEYXRlLnBhcnNlKCIxOTk1LTEyLTI1VDAxOjMwOjAweiIpIGlzIE5hTgogUEFTUyBEYXRl
LnBhcnNlKCJEZWMgMjUgMTk5NSBHTVQiKSA9PSA4MTk4NDk2MDAwMDAgaXMgdHJ1ZQogUEFTUyBE
YXRlLnBhcnNlKCJERUMgMjUgMTk5NSBHTVQiKSA9PSA4MTk4NDk2MDAwMDAgaXMgdHJ1ZQogUEFT
UyBEYXRlLnBhcnNlKCJkZWMgMjUgMTk5NSBnbXQiKSA9PSA4MTk4NDk2MDAwMDAgaXMgdHJ1ZQpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVzdHMvZGF0ZS1wYXJzZS10ZXN0Lmpz
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvc2NyaXB0LXRlc3RzL2RhdGUtcGFy
c2UtdGVzdC5qcwkocmV2aXNpb24gNjk4MjEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL3Njcmlw
dC10ZXN0cy9kYXRlLXBhcnNlLXRlc3QuanMJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDQ5
IEBAIGZ1bmN0aW9uIHRlc3REYXRlUGFyc2UoZGF0ZSwgbnVtZXJpY1Jlc3UKICAgICB9CiB9CiAK
K2Z1bmN0aW9uIHRlc3REYXRlUGFyc2VFeGFjdChkYXRlLCBudW1lcmljUmVzdWx0KQoreworICAg
IGlmIChudW1lcmljUmVzdWx0ID09ICJOYU4iKSB7CisgICAgICAgIHNob3VsZEJlTmFOKCdEYXRl
LnBhcnNlKCInICsgZGF0ZSArICciKScpOworICAgIH0gZWxzZSB7CisgICAgICAgIHNob3VsZEJl
VHJ1ZSgnRGF0ZS5wYXJzZSgiJyArIGRhdGUgKyAnIikgPT0gJyArIG51bWVyaWNSZXN1bHQudG9T
dHJpbmcoKSk7CisgICAgfQorfQorCisKKy8vIHRlc3QgRUNNQVNjcmlwdCA1IHN0YW5kYXJkIGRh
dGUgcGFyc2luZwordGVzdERhdGVQYXJzZUV4YWN0KCIxOTk1LTEyLTI1VDAxOjMwOjAwWiIsICI4
MTk4NTUwMDAwMDAiKTsKK3Rlc3REYXRlUGFyc2VFeGFjdCgiMTk5NS0xMi0yNVQwMTozMDowMC41
WiIsICI4MTk4NTUwMDA1MDAiKTsKK3Rlc3REYXRlUGFyc2VFeGFjdCgiMTk5NS0xMi0yNVQwMToz
MDowMC4wMDlaIiwgIjgxOTg1NTAwMDAwOSIpOwordGVzdERhdGVQYXJzZUV4YWN0KCIxOTk1LTEy
LTI1VDAxOjMwOjAwKzAwOjAwIiwgIjgxOTg1NTAwMDAwMCIpOwordGVzdERhdGVQYXJzZUV4YWN0
KCIxOTk1LTEyLTI1VDAxOjMwOjAwLjArMDA6MDEiLCAiODE5ODU0OTQwMDAwIik7Cit0ZXN0RGF0
ZVBhcnNlRXhhY3QoIjE5OTUtMTItMjVUMDE6MzA6MDAuMC0wMDowMSIsICI4MTk4NTUwNjAwMDAi
KTsKK3Rlc3REYXRlUGFyc2VFeGFjdCgiMTk5NS0xMi0yNVQwMTozMDowMC4wKzAxOjAxIiwgIjgx
OTg1MTM0MDAwMCIpOwordGVzdERhdGVQYXJzZUV4YWN0KCIxOTk1LTEyLTI1VDAxOjMwOjAwLjAt
MDE6MDEiLCAiODE5ODU4NjYwMDAwIik7CisKK3Rlc3REYXRlUGFyc2VFeGFjdCgiMDAwMC0wMS0w
MVQwMDowMDowMFoiLCAiLTYyMTY3MjE5MjAwMDAwIik7Cit0ZXN0RGF0ZVBhcnNlRXhhY3QoIis5
OTk5OS0xMi0zMVQyNDowMDowMFoiLCAiMzA5MzUyNzk4MDgwMDAwMCIpOwordGVzdERhdGVQYXJz
ZUV4YWN0KCItOTk5OTktMDEtMDFUMDA6MDA6MDBaIiwgIi0zMjE3ODMwNzk2ODAwMDAwIik7Cit0
ZXN0RGF0ZVBhcnNlRXhhY3QoIjE5OTUtMTItMzFUMjM6NTk6NjBaIiwgIjgyMDQ1NDQwMDAwMCIp
OwordGVzdERhdGVQYXJzZUV4YWN0KCIxOTk1LTEyLTMxVDIzOjU5OjYwLjVaIiwgIjgyMDQ1NDQw
MDAwMCIpOworCit0ZXN0RGF0ZVBhcnNlRXhhY3QoIjE5OTUtMTMtMjVUMDE6MzA6MDBaIiwgIk5h
TiIpOwordGVzdERhdGVQYXJzZUV4YWN0KCIxOTk1LTAwLTI1VDAxOjMwOjAwWiIsICJOYU4iKTsK
K3Rlc3REYXRlUGFyc2VFeGFjdCgiMTk5NS0tMS0yNVQwMTozMDowMFoiLCAiTmFOIik7Cit0ZXN0
RGF0ZVBhcnNlRXhhY3QoIjE5OTUtMDEtMjVUMDE6MDU6LTAuM1oiLCAiTmFOIik7Cit0ZXN0RGF0
ZVBhcnNlRXhhY3QoIjE5OTUvMTIvMjVUMDE6MzA6MDBaIiwgIk5hTiIpOwordGVzdERhdGVQYXJz
ZUV4YWN0KCIxOTk1LTEyLTI1VDE6MzA6MDBaIiwgIk5hTiIpOwordGVzdERhdGVQYXJzZUV4YWN0
KCIxOTk1LTEyLTI1VDAxOjMwOjAwLloiLCAiTmFOIik7Cit0ZXN0RGF0ZVBhcnNlRXhhY3QoIjE5
OTUtMTItMjVUMDE6MzA6MDAuKzFaIiwgIk5hTiIpOwordGVzdERhdGVQYXJzZUV4YWN0KCIxOTk1
LTEyLTI1VDAxOjMwOjAwWiAiLCAiTmFOIik7Cit0ZXN0RGF0ZVBhcnNlRXhhY3QoIjE5OTUtMTIt
MjVUMDE6MzA6MDArMDA6MDAgIiwgIk5hTiIpOwordGVzdERhdGVQYXJzZUV4YWN0KCIxOTk1LTAy
LTI5VDAwOjAwOjAwWiIsICJOYU4iKTsKK3Rlc3REYXRlUGFyc2VFeGFjdCgiMTk5NS0xMi0yNSAw
MTozMDowMFoiLCAiTmFOIik7Cit0ZXN0RGF0ZVBhcnNlRXhhY3QoIjE5OTUtMTItMjVUMDE6MzA6
MDB6IiwgIk5hTiIpOworCisKKy8vIHRlc3Qgb2xkIGltcGxlbWVudGF0aW9uIGZhbGxiYWNrCisK
IHZhciB0aW1lWm9uZU9mZnNldCA9IERhdGUucGFyc2UoIiBEZWMgMjUgMTk5NSAxOjMwICIpIC0g
RGF0ZS5wYXJzZSgiIERlYyAyNSAxOTk1IDE6MzAgR01UICIpOwogCiB0ZXN0RGF0ZVBhcnNlKCJE
ZWMgMjUgMTk5NSBHTVQiLCAiODE5ODQ5NjAwMDAwIik7CkBAIC00Myw3ICs4Niw3IEBAIHRlc3RE
YXRlUGFyc2UoIkRlYyAyNSAxOTk1IDE6MzAgQU0gIiwgIjgKIAogdGVzdERhdGVQYXJzZSgiRGVj
IDI1IDE5OTUgMTM6MzAgR01UIiwgIjgxOTg5ODIwMDAwMCIpOwogdGVzdERhdGVQYXJzZSgiRGVj
IDI1IDE5OTUgMTM6MzAiLCAiODE5ODk4MjAwMDAwICsgdGltZVpvbmVPZmZzZXQiKTsKLXRlc3RE
YXRlUGFyc2UoJ0RlYyAyNSAxMzozMCAxOTk1JywgIjgxOTg5ODIwMDAwMCArIHRpbWVab25lT2Zm
c2V0Iik7Cit0ZXN0RGF0ZVBhcnNlKCJEZWMgMjUgMTM6MzAgMTk5NSIsICI4MTk4OTgyMDAwMDAg
KyB0aW1lWm9uZU9mZnNldCIpOwogdGVzdERhdGVQYXJzZSgiRGVjIDI1IDE5OTUgMTM6MzAgIiwg
IjgxOTg5ODIwMDAwMCArIHRpbWVab25lT2Zmc2V0Iik7CiB0ZXN0RGF0ZVBhcnNlKCJEZWMgMjUg
MTk5NSAxOjMwIFBNIEdNVCIsICI4MTk4OTgyMDAwMDAiKTsKIHRlc3REYXRlUGFyc2UoIkRlYyAy
NSAxOTk1IDE6MzAgUE0iLCAiODE5ODk4MjAwMDAwICsgdGltZVpvbmVPZmZzZXQiKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>