<?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>16537</bug_id>
          
          <creation_ts>2007-12-20 10:42:33 -0800</creation_ts>
          <short_desc>Make date code faster by removing redundant calls</short_desc>
          <delta_ts>2007-12-21 09:15:53 -0800</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>Mac</rep_platform>
          <op_sys>OS X 10.4</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>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>64832</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2007-12-20 10:42:33 -0800</bug_when>
    <thetext>Make date code faster by removing redundant calls

This is just one step in the right direction for the date code.  We&apos;re still executing way more than we need to each run through msToGregorianDateTime (which is called for basically every date function, since we store the date in ms since 1970 and have to convert to a GregorianDateTime struct each time before we can do anything interesting with the data).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>64833</commentid>
    <comment_count>1</comment_count>
      <attachid>18007</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2007-12-20 10:43:36 -0800</bug_when>
    <thetext>Created attachment 18007
Make msFrom1970ToYear human-readable

 JavaScriptCore/kjs/DateMath.cpp |   30 ++++++++++++++++++------------
 1 files changed, 18 insertions(+), 12 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>64834</commentid>
    <comment_count>2</comment_count>
      <attachid>18008</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2007-12-20 10:43:38 -0800</bug_when>
    <thetext>Created attachment 18008
Make msToDayInMonth slightly more readable and avoid recalculating msSince1970ToAbsoluteYear

 JavaScriptCore/kjs/DateMath.cpp |   90 +++++++++++++++++++--------------------
 1 files changed, 44 insertions(+), 46 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>64835</commentid>
    <comment_count>3</comment_count>
      <attachid>18009</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2007-12-20 10:43:40 -0800</bug_when>
    <thetext>Created attachment 18009
Remove use of isInLeapYear to avoid calling msSince1970ToAbsoluteYear

 JavaScriptCore/kjs/DateMath.cpp |    9 ++-------
 1 files changed, 2 insertions(+), 7 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>64836</commentid>
    <comment_count>4</comment_count>
      <attachid>18010</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2007-12-20 10:43:42 -0800</bug_when>
    <thetext>Created attachment 18010
Remove dayInYear call by changing msToDayInMonth to dayInMonthFromDayInYear

 JavaScriptCore/kjs/DateMath.cpp |   17 ++++++++---------
 1 files changed, 8 insertions(+), 9 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>64837</commentid>
    <comment_count>5</comment_count>
      <attachid>18011</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2007-12-20 10:43:44 -0800</bug_when>
    <thetext>Created attachment 18011
Remove more duplicate calls to dayInYear and getUTCOffset for further speedup

 JavaScriptCore/kjs/DateMath.cpp |   40 +++++++++++++++++++++-----------------
 1 files changed, 22 insertions(+), 18 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>64838</commentid>
    <comment_count>6</comment_count>
      <attachid>18007</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2007-12-20 10:49:37 -0800</bug_when>
    <thetext>Comment on attachment 18007
Make msFrom1970ToYear human-readable

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>64841</commentid>
    <comment_count>7</comment_count>
      <attachid>18008</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2007-12-20 11:01:06 -0800</bug_when>
    <thetext>Comment on attachment 18008
Make msToDayInMonth slightly more readable and avoid recalculating msSince1970ToAbsoluteYear

-static inline int msToYear(double ms)
+static inline int msSince1970ToAbsoluteYear(double msSince1970)

I don&apos;t really agree that this change is cleanup.

In the date code, &quot;ms&quot; always means &quot;msSince1970.&quot; Substituting &quot;msSince1970&quot; makes the code read awkwardly for me. Also, I think it&apos;s a mistake to put &quot;msSince1970&quot; in only select places -- that makes it seem as if there&apos;s a difference between &quot;ms&quot; functions and &quot;msSince1970&quot; functions, when there&apos;s not.

Perhaps it would be better just to add a comment at the top of the file stating that &quot;ms&quot; means &quot;ms since 1970.&quot;

I&apos;m also not sure what you mean by the term &quot;AbsoluteYear.&quot; What is an absolute year? (/me imagines an ad for Absolut Vodka on the back of the New Yorker.)

+    static int minYear = std::min(msSince1970ToAbsoluteYear(getCurrentUTCTime()), maximumYearForDST()-27) ;

Need a space around the &quot;-&quot; here.

The checkMonth change looks good. I wish the function had a name that hinted that it changed it arguments, but I can&apos;t think of a good one.

Not sure what to do with this patch. I guess I&apos;ll r- for the comments above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>64842</commentid>
    <comment_count>8</comment_count>
      <attachid>18009</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2007-12-20 11:01:45 -0800</bug_when>
    <thetext>Comment on attachment 18009
Remove use of isInLeapYear to avoid calling msSince1970ToAbsoluteYear

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>64843</commentid>
    <comment_count>9</comment_count>
      <attachid>18010</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2007-12-20 11:02:33 -0800</bug_when>
    <thetext>Comment on attachment 18010
Remove dayInYear call by changing msToDayInMonth to dayInMonthFromDayInYear

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>64844</commentid>
    <comment_count>10</comment_count>
      <attachid>18011</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2007-12-20 11:03:11 -0800</bug_when>
    <thetext>Comment on attachment 18011
Remove more duplicate calls to dayInYear and getUTCOffset for further speedup

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>64845</commentid>
    <comment_count>11</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2007-12-20 11:04:00 -0800</bug_when>
    <thetext>I think you should run the JavaScriptCore tests with your machine set to interesting locales (on both sides of the international date line) before landing these patches.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>64850</commentid>
    <comment_count>12</comment_count>
      <attachid>18012</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2007-12-20 11:57:49 -0800</bug_when>
    <thetext>Created attachment 18012
Final combined patch w/ ggaren&apos;s suggested fixes


        Reviewed by Geoff.

        Small reworking of Date code for 4% speedup on Date tests (0.2% overall)
        http://bugs.webkit.org/show_bug.cgi?id=16537

        Make msToYear human-readable
        Make msToDayInMonth slightly more readable and avoid recalculating msToYear
        Remove use of isInLeapYear to avoid calling msToYear
        Remove dayInYear call by changing msToDayInMonth to dayInMonthFromDayInYear
        Remove more duplicate calls to dayInYear and getUTCOffset for further speedup

        * kjs/DateMath.cpp:
        (KJS::daysFrom1970ToYear):
        (KJS::msToYear):
        (KJS::monthFromDayInYear):
        (KJS::checkMonth):
        (KJS::dayInMonthFromDayInYear):
        (KJS::dateToDayInYear):
        (KJS::getDSTOffsetSimple):
        (KJS::getDSTOffset):
        (KJS::gregorianDateTimeToMS):
        (KJS::msToGregorianDateTime):
---
 JavaScriptCore/ChangeLog        |   25 +++++++
 JavaScriptCore/kjs/DateMath.cpp |  146 ++++++++++++++++++++-------------------
 2 files changed, 99 insertions(+), 72 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>64959</commentid>
    <comment_count>13</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2007-12-21 09:15:53 -0800</bug_when>
    <thetext>Fixed in r28913.

</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>18007</attachid>
            <date>2007-12-20 10:43:36 -0800</date>
            <delta_ts>2007-12-20 10:49:37 -0800</delta_ts>
            <desc>Make msFrom1970ToYear human-readable</desc>
            <filename>Make-msFrom1970ToYear-human-readable.patch</filename>
            <type>text/plain</type>
            <size>2394</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">NjRiMzY1Y2VhYTZkM2MyNGRkZmMwM2QzNTFjZDgyZjc0MWI4NTQ3MwpkaWZmIC0tZ2l0IGEvSmF2
YVNjcmlwdENvcmUva2pzL0RhdGVNYXRoLmNwcCBiL0phdmFTY3JpcHRDb3JlL2tqcy9EYXRlTWF0
aC5jcHAKaW5kZXggOGY0MTA3NC4uOTRmZDViMyAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUv
a2pzL0RhdGVNYXRoLmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS9ranMvRGF0ZU1hdGguY3BwCkBA
IC05NywxNSArOTcsMjEgQEAgc3RhdGljIGlubGluZSBpbnQgZGF5c0luWWVhcihpbnQgeWVhcikK
IAogc3RhdGljIGlubGluZSBkb3VibGUgZGF5c0Zyb20xOTcwVG9ZZWFyKGludCB5ZWFyKQogewot
ICAgIHJldHVybiAzNjUuMCAqICh5ZWFyIC0gMTk3MCkKLSAgICAgICAgKyBmbG9vcigoeWVhciAt
IDE5NjkpIC8gNC4wKQotICAgICAgICAtIGZsb29yKCh5ZWFyIC0gMTkwMSkgLyAxMDAuMCkKLSAg
ICAgICAgKyBmbG9vcigoeWVhciAtIDE2MDEpIC8gNDAwLjApOwotfQorICAgIC8vIFRoZSBHcmVn
b3JpYW4gQ2FsZW5kYXIgcnVsZXMgZm9yIGxlYXAgeWVhcnM6CisgICAgLy8gRXZlcnkgZm91cnRo
IHllYXIgaXMgYSBsZWFwIHllYXIuCTIwMDQsIDIwMDgsIGFuZCAyMDEyIGFyZSBsZWFwIHllYXJz
LgorICAgIC8vIEhvd2V2ZXIsIGV2ZXJ5IGh1bmRyZWR0aCB5ZWFyIGlzIG5vdCBhIGxlYXAgeWVh
ci4JMTkwMCBhbmQgMjEwMCBhcmUgbm90IGxlYXAgeWVhcnMuCisgICAgLy8gRXZlcnkgZm91ciBo
dW5kcmVkIHllYXJzLCB0aGVyZSdzIGEgbGVhcCB5ZWFyIGFmdGVyIGFsbC4JMjAwMCBhbmQgMjQw
MCBhcmUgbGVhcCB5ZWFycy4KIAotc3RhdGljIGlubGluZSBkb3VibGUgbXNGcm9tMTk3MFRvWWVh
cihpbnQgeWVhcikKLXsKLSAgICByZXR1cm4gbXNQZXJEYXkgKiBkYXlzRnJvbTE5NzBUb1llYXIo
eWVhcik7CisgICAgc3RhdGljIGNvbnN0IGludCBsZWFwRGF5c0JlZm9yZTE5NzFCeTRSdWxlID0g
MTk3MCAvIDQ7CisgICAgc3RhdGljIGNvbnN0IGludCBleGNsdWRlZExlYXBEYXlzQmVmb3JlMTk3
MUJ5MTAwUnVsZSA9IDE5NzAgLyAxMDA7CisgICAgc3RhdGljIGNvbnN0IGludCBsZWFwRGF5c0Jl
Zm9yZTE5NzFCeTQwMFJ1bGUgPSAxOTcwIC8gNDAwOworCisgICAgY29uc3QgZG91YmxlIHllYXJN
aW51c09uZSA9IHllYXIgLSAxOworICAgIGNvbnN0IGRvdWJsZSB5ZWFyc1RvQWRkQnk0UnVsZSA9
IGZsb29yKHllYXJNaW51c09uZSAvIDQuMCkgLSBsZWFwRGF5c0JlZm9yZTE5NzFCeTRSdWxlOwor
ICAgIGNvbnN0IGRvdWJsZSB5ZWFyc1RvRXhjbHVkZUJ5MTAwUnVsZSA9IGZsb29yKHllYXJNaW51
c09uZSAvIDEwMC4wKSAtIGV4Y2x1ZGVkTGVhcERheXNCZWZvcmUxOTcxQnkxMDBSdWxlOworICAg
IGNvbnN0IGRvdWJsZSB5ZWFyc1RvQWRkQnk0MDBSdWxlID0gZmxvb3IoeWVhck1pbnVzT25lIC8g
NDAwLjApIC0gbGVhcERheXNCZWZvcmUxOTcxQnk0MDBSdWxlOworCisgICAgcmV0dXJuIDM2NS4w
ICogKHllYXIgLSAxOTcwKSArIHllYXJzVG9BZGRCeTRSdWxlIC0geWVhcnNUb0V4Y2x1ZGVCeTEw
MFJ1bGUgKyB5ZWFyc1RvQWRkQnk0MDBSdWxlOwogfQogCiBzdGF0aWMgaW5saW5lIGRvdWJsZSBt
c1RvRGF5cyhkb3VibGUgbXMpCkBAIC0xMTYsMTAgKzEyMiwxMCBAQCBzdGF0aWMgaW5saW5lIGRv
dWJsZSBtc1RvRGF5cyhkb3VibGUgbXMpCiBzdGF0aWMgaW5saW5lIGludCBtc1RvWWVhcihkb3Vi
bGUgbXMpCiB7CiAgICAgaW50IHkgPSBzdGF0aWNfY2FzdDxpbnQ+KGZsb29yKG1zIC8gKG1zUGVy
RGF5ICogMzY1LjI0MjUpKSArIDE5NzApOwotICAgIGRvdWJsZSB0MiA9IG1zRnJvbTE5NzBUb1ll
YXIoeSk7Ci0gICAgaWYgKHQyID4gbXMpIHsKKyAgICBkb3VibGUgdDIgPSBtc1BlckRheSAqIGRh
eXNGcm9tMTk3MFRvWWVhcih5KTsKKyAgICBpZiAodDIgPiBtcykKICAgICAgICAgeS0tOwotICAg
IH0gZWxzZSB7CisgICAgZWxzZSB7CiAgICAgICAgIGlmICh0MiArIG1zUGVyRGF5ICogZGF5c0lu
WWVhcih5KSA8PSBtcykKICAgICAgICAgICAgIHkrKzsKICAgICB9CkBAIC0yNzIsNyArMjc4LDcg
QEAgc3RhdGljIGludCBkYXRlVG9EYXlJblllYXIoaW50IHllYXIsIGludCBtb250aCwgaW50IGRh
eSkKICAgICAgICAgLS15ZWFyOwogICAgIH0KIAotICAgIGludCB5ZWFyZGF5ID0gc3RhdGljX2Nh
c3Q8aW50PihmbG9vcihtc0Zyb20xOTcwVG9ZZWFyKHllYXIpIC8gbXNQZXJEYXkpKTsKKyAgICBp
bnQgeWVhcmRheSA9IHN0YXRpY19jYXN0PGludD4oZmxvb3IoZGF5c0Zyb20xOTcwVG9ZZWFyKHll
YXIpKSk7CiAgICAgaW50IG1vbnRoZGF5ID0gbW9udGhUb0RheUluWWVhcihtb250aCwgaXNMZWFw
WWVhcih5ZWFyKSk7CiAKICAgICByZXR1cm4geWVhcmRheSArIG1vbnRoZGF5ICsgZGF5IC0gMTsK
</data>
<flag name="review"
          id="7812"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>18008</attachid>
            <date>2007-12-20 10:43:38 -0800</date>
            <delta_ts>2007-12-20 11:01:06 -0800</delta_ts>
            <desc>Make msToDayInMonth slightly more readable and avoid recalculating msSince1970ToAbsoluteYear</desc>
            <filename>Make-msToDayInMonth-slightly-more-readable-and-avoid-recalculating-msSince1970ToAbsoluteYear.patch</filename>
            <type>text/plain</type>
            <size>5602</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">NTAyYTYyNmYxOTk1NDNhNjJmMTJlOGYzOTRmNjEwNzQyMDhkZjA5MgpkaWZmIC0tZ2l0IGEvSmF2
YVNjcmlwdENvcmUva2pzL0RhdGVNYXRoLmNwcCBiL0phdmFTY3JpcHRDb3JlL2tqcy9EYXRlTWF0
aC5jcHAKaW5kZXggOTRmZDViMy4uMzI2MDAyZSAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUv
a2pzL0RhdGVNYXRoLmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS9ranMvRGF0ZU1hdGguY3BwCkBA
IC0xMTksMjIgKzExOSwyMCBAQCBzdGF0aWMgaW5saW5lIGRvdWJsZSBtc1RvRGF5cyhkb3VibGUg
bXMpCiAgICAgcmV0dXJuIGZsb29yKG1zIC8gbXNQZXJEYXkpOwogfQogCi1zdGF0aWMgaW5saW5l
IGludCBtc1RvWWVhcihkb3VibGUgbXMpCitzdGF0aWMgaW5saW5lIGludCBtc1NpbmNlMTk3MFRv
QWJzb2x1dGVZZWFyKGRvdWJsZSBtc1NpbmNlMTk3MCkKIHsKLSAgICBpbnQgeSA9IHN0YXRpY19j
YXN0PGludD4oZmxvb3IobXMgLyAobXNQZXJEYXkgKiAzNjUuMjQyNSkpICsgMTk3MCk7Ci0gICAg
ZG91YmxlIHQyID0gbXNQZXJEYXkgKiBkYXlzRnJvbTE5NzBUb1llYXIoeSk7Ci0gICAgaWYgKHQy
ID4gbXMpCi0gICAgICAgIHktLTsKLSAgICBlbHNlIHsKLSAgICAgICAgaWYgKHQyICsgbXNQZXJE
YXkgKiBkYXlzSW5ZZWFyKHkpIDw9IG1zKQotICAgICAgICAgICAgeSsrOwotICAgIH0KLSAgICBy
ZXR1cm4geTsKKyAgICBpbnQgYXBwcm94WWVhciA9IHN0YXRpY19jYXN0PGludD4oZmxvb3IobXNT
aW5jZTE5NzAgLyAobXNQZXJEYXkgKiAzNjUuMjQyNSkpICsgMTk3MCk7CisgICAgZG91YmxlIG1z
RnJvbUFwcHJveFllYXJUbzE5NzAgPSBtc1BlckRheSAqIGRheXNGcm9tMTk3MFRvWWVhcihhcHBy
b3hZZWFyKTsKKyAgICBpZiAobXNGcm9tQXBwcm94WWVhclRvMTk3MCA+IG1zU2luY2UxOTcwKQor
ICAgICAgICByZXR1cm4gYXBwcm94WWVhciAtIDE7CisgICAgaWYgKG1zRnJvbUFwcHJveFllYXJU
bzE5NzAgKyBtc1BlckRheSAqIGRheXNJblllYXIoYXBwcm94WWVhcikgPD0gbXNTaW5jZTE5NzAp
CisgICAgICAgIHJldHVybiBhcHByb3hZZWFyICsgMTsKKyAgICByZXR1cm4gYXBwcm94WWVhcjsK
IH0KIAogc3RhdGljIGlubGluZSBib29sIGlzSW5MZWFwWWVhcihkb3VibGUgbXMpCiB7Ci0gICAg
cmV0dXJuIGlzTGVhcFllYXIobXNUb1llYXIobXMpKTsKKyAgICByZXR1cm4gaXNMZWFwWWVhciht
c1NpbmNlMTk3MFRvQWJzb2x1dGVZZWFyKG1zKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgaW50IGRh
eUluWWVhcihkb3VibGUgbXMsIGludCB5ZWFyKQpAQCAtMTg2LDcgKzE4NCw3IEBAIHN0YXRpYyBp
bmxpbmUgaW50IG1zVG9Ib3Vycyhkb3VibGUgbXMpCiBzdGF0aWMgaW5saW5lIGludCBtc1RvTW9u
dGgoZG91YmxlIG1zKQogewogICAgIGludCBzdGVwOwotICAgIGludCB5ZWFyID0gbXNUb1llYXIo
bXMpOworICAgIGludCB5ZWFyID0gbXNTaW5jZTE5NzBUb0Fic29sdXRlWWVhcihtcyk7CiAgICAg
aW50IGQgPSBkYXlJblllYXIobXMsIHllYXIpOwogCiAgICAgaWYgKGQgPCAoc3RlcCA9IDMxKSkK
QEAgLTIxNSw0NCArMjEzLDQzIEBAIHN0YXRpYyBpbmxpbmUgaW50IG1zVG9Nb250aChkb3VibGUg
bXMpCiAgICAgcmV0dXJuIDExOwogfQogCi1zdGF0aWMgaW5saW5lIGludCBtc1RvRGF5SW5Nb250
aChkb3VibGUgbXMpCitzdGF0aWMgaW5saW5lIGJvb2wgY2hlY2tNb250aChpbnQgZGF5SW5ZZWFy
LCBpbnQmIHN0YXJ0RGF5T2ZUaGlzTW9udGgsIGludCYgc3RhcnREYXlPZk5leHRNb250aCwgaW50
IGRheXNJblRoaXNNb250aCkKIHsKLSAgICBpbnQgc3RlcCwgbmV4dDsKLSAgICBpbnQgeWVhciA9
IG1zVG9ZZWFyKG1zKTsKLSAgICBpbnQgZCA9IGRheUluWWVhcihtcywgeWVhcik7CisgICAgc3Rh
cnREYXlPZlRoaXNNb250aCA9IHN0YXJ0RGF5T2ZOZXh0TW9udGg7CisgICAgc3RhcnREYXlPZk5l
eHRNb250aCArPSBkYXlzSW5UaGlzTW9udGg7CisgICAgcmV0dXJuIChkYXlJblllYXIgPD0gc3Rh
cnREYXlPZk5leHRNb250aCk7Cit9CisKK3N0YXRpYyBpbmxpbmUgaW50IG1zVG9EYXlJbk1vbnRo
KGRvdWJsZSBtcywgaW50IHByZWNvbXB1dGVkQWJzb2x1dGVZZWFyKQoreworICAgIEFTU0VSVCht
c1NpbmNlMTk3MFRvQWJzb2x1dGVZZWFyKG1zKSA9PSBwcmVjb21wdXRlZEFic29sdXRlWWVhcik7
CisgICAgaW50IGQgPSBkYXlJblllYXIobXMsIHByZWNvbXB1dGVkQWJzb2x1dGVZZWFyKTsKKwor
ICAgIGludCBzdGVwOworICAgIGludCBuZXh0ID0gMzA7CiAKLSAgICBpZiAoZCA8PSAobmV4dCA9
IDMwKSkKLSAgICAgICAgcmV0dXJuIGQgKyAxOwotICAgIHN0ZXAgPSBuZXh0OwotICAgIG5leHQg
Kz0gKGlzSW5MZWFwWWVhcihtcykgPyAyOSA6IDI4KTsKICAgICBpZiAoZCA8PSBuZXh0KQorICAg
ICAgICByZXR1cm4gZCArIDE7CisgICAgY29uc3QgaW50IGRheXNJbkZlYiA9IChpc0luTGVhcFll
YXIobXMpID8gMjkgOiAyOCk7CisgICAgaWYgKGNoZWNrTW9udGgoZCwgc3RlcCwgbmV4dCwgZGF5
c0luRmViKSkKICAgICAgICAgcmV0dXJuIGQgLSBzdGVwOwotICAgIHN0ZXAgPSBuZXh0OwotICAg
IGlmIChkIDw9IChuZXh0ICs9IDMxKSkKKyAgICBpZiAoY2hlY2tNb250aChkLCBzdGVwLCBuZXh0
LCAzMSkpCiAgICAgICAgIHJldHVybiBkIC0gc3RlcDsKLSAgICBzdGVwID0gbmV4dDsKLSAgICBp
ZiAoZCA8PSAobmV4dCArPSAzMCkpCisgICAgaWYgKGNoZWNrTW9udGgoZCwgc3RlcCwgbmV4dCwg
MzApKQogICAgICAgICByZXR1cm4gZCAtIHN0ZXA7Ci0gICAgc3RlcCA9IG5leHQ7Ci0gICAgaWYg
KGQgPD0gKG5leHQgKz0gMzEpKQorICAgIGlmIChjaGVja01vbnRoKGQsIHN0ZXAsIG5leHQsIDMx
KSkKICAgICAgICAgcmV0dXJuIGQgLSBzdGVwOwotICAgIHN0ZXAgPSBuZXh0OwotICAgIGlmIChk
IDw9IChuZXh0ICs9IDMwKSkKKyAgICBpZiAoY2hlY2tNb250aChkLCBzdGVwLCBuZXh0LCAzMCkp
CiAgICAgICAgIHJldHVybiBkIC0gc3RlcDsKLSAgICBzdGVwID0gbmV4dDsKLSAgICBpZiAoZCA8
PSAobmV4dCArPSAzMSkpCisgICAgaWYgKGNoZWNrTW9udGgoZCwgc3RlcCwgbmV4dCwgMzEpKQog
ICAgICAgICByZXR1cm4gZCAtIHN0ZXA7Ci0gICAgc3RlcCA9IG5leHQ7Ci0gICAgaWYgKGQgPD0g
KG5leHQgKz0gMzEpKQorICAgIGlmIChjaGVja01vbnRoKGQsIHN0ZXAsIG5leHQsIDMxKSkKICAg
ICAgICAgcmV0dXJuIGQgLSBzdGVwOwotICAgIHN0ZXAgPSBuZXh0OwotICAgIGlmIChkIDw9IChu
ZXh0ICs9IDMwKSkKKyAgICBpZiAoY2hlY2tNb250aChkLCBzdGVwLCBuZXh0LCAzMCkpCiAgICAg
ICAgIHJldHVybiBkIC0gc3RlcDsKLSAgICBzdGVwID0gbmV4dDsKLSAgICBpZiAoZCA8PSAobmV4
dCArPSAzMSkpCisgICAgaWYgKGNoZWNrTW9udGgoZCwgc3RlcCwgbmV4dCwgMzEpKQogICAgICAg
ICByZXR1cm4gZCAtIHN0ZXA7Ci0gICAgc3RlcCA9IG5leHQ7Ci0gICAgaWYgKGQgPD0gKG5leHQg
Kz0gMzApKQorICAgIGlmIChjaGVja01vbnRoKGQsIHN0ZXAsIG5leHQsIDMwKSkKICAgICAgICAg
cmV0dXJuIGQgLSBzdGVwOwogICAgIHN0ZXAgPSBuZXh0OwogICAgIHJldHVybiBkIC0gc3RlcDsK
QEAgLTMxOSw3ICszMTYsNyBAQCBzdGF0aWMgaW50IG1pbWltdW1ZZWFyRm9yRFNUKCkKICAgICAv
LyBncmVhdGVyIHRoYW4gdGhlIG1heCB5ZWFyIG1pbnVzIDI3ICgyMDEwKSwgd2Ugd2FudCB0byB1
c2UgdGhlIG1heCB5ZWFyCiAgICAgLy8gbWludXMgMjcgaW5zdGVhZCwgdG8gZW5zdXJlIHRoZXJl
IGlzIGEgcmFuZ2Ugb2YgMjggeWVhcnMgdGhhdCBhbGwgeWVhcnMKICAgICAvLyBjYW4gbWFwIHRv
LgotICAgIHN0YXRpYyBpbnQgbWluWWVhciA9IHN0ZDo6bWluKG1zVG9ZZWFyKGdldEN1cnJlbnRV
VENUaW1lKCkpLCBtYXhpbXVtWWVhckZvckRTVCgpLTI3KSA7CisgICAgc3RhdGljIGludCBtaW5Z
ZWFyID0gc3RkOjptaW4obXNTaW5jZTE5NzBUb0Fic29sdXRlWWVhcihnZXRDdXJyZW50VVRDVGlt
ZSgpKSwgbWF4aW11bVllYXJGb3JEU1QoKS0yNykgOwogICAgIHJldHVybiBtaW5ZZWFyOwogfQog
CkBAIC00NTksMTAgKzQ1NiwxMCBAQCBzdGF0aWMgZG91YmxlIGdldERTVE9mZnNldChkb3VibGUg
bXMpCiAgICAgLy8gc3RhbmRhcmQgZXhwbGljaXRseSBkaWN0YXRlcyB0aGF0IGhpc3RvcmljYWwg
aW5mb3JtYXRpb24gc2hvdWxkIG5vdCBiZSBjb25zaWRlcmVkIHdoZW4KICAgICAvLyBkZXRlcm1p
bmluZyBEU1QuIEZvciB0aGlzIHJlYXNvbiB3ZSBzaGlmdCBhd2F5IGZyb20geWVhcnMgdGhhdCBs
b2NhbHRpbWUgY2FuIGhhbmRsZSBidXQgd291bGQKICAgICAvLyByZXR1cm4gaGlzdG9yaWNhbGx5
IGFjY3VyYXRlIGluZm9ybWF0aW9uLgotICAgIGludCB5ZWFyID0gbXNUb1llYXIobXMpOwotICAg
IGludCBlcXV2YWxlbnRZZWFyID0gZXF1aXZhbGVudFllYXJGb3JEU1QoeWVhcik7Ci0gICAgaWYg
KHllYXIgIT0gZXF1dmFsZW50WWVhcikgewotICAgICAgICBpbnQgZGF5ID0gZGF0ZVRvRGF5SW5Z
ZWFyKGVxdXZhbGVudFllYXIsIG1zVG9Nb250aChtcyksIG1zVG9EYXlJbk1vbnRoKG1zKSk7Cisg
ICAgaW50IHllYXIgPSBtc1NpbmNlMTk3MFRvQWJzb2x1dGVZZWFyKG1zKTsKKyAgICBpbnQgZXF1
aXZhbGVudFllYXIgPSBlcXVpdmFsZW50WWVhckZvckRTVCh5ZWFyKTsKKyAgICBpZiAoeWVhciAh
PSBlcXVpdmFsZW50WWVhcikgeworICAgICAgICBpbnQgZGF5ID0gZGF0ZVRvRGF5SW5ZZWFyKGVx
dWl2YWxlbnRZZWFyLCBtc1RvTW9udGgobXMpLCBtc1RvRGF5SW5Nb250aChtcywgeWVhcikpOwog
ICAgICAgICBtcyA9IChkYXkgKiBtc1BlckRheSkgKyBtc1RvTWlsbGlzZWNvbmRzKG1zKTsKICAg
ICB9CiAKQEAgLTQ5MywxNCArNDkwLDE1IEBAIHZvaWQgbXNUb0dyZWdvcmlhbkRhdGVUaW1lKGRv
dWJsZSBtcywgYm9vbCBvdXRwdXRJc1VUQywgR3JlZ29yaWFuRGF0ZVRpbWUmIHRtKQogICAgICAg
ICBtcyArPSBkc3RPZmYgKyBnZXRVVENPZmZzZXQoKTsKICAgICB9CiAKKyAgICBjb25zdCBpbnQg
eWVhciA9IG1zU2luY2UxOTcwVG9BYnNvbHV0ZVllYXIobXMpOwogICAgIHRtLnNlY29uZCAgID0g
IG1zVG9TZWNvbmRzKG1zKTsKICAgICB0bS5taW51dGUgICA9ICBtc1RvTWludXRlcyhtcyk7CiAg
ICAgdG0uaG91ciAgICAgPSAgbXNUb0hvdXJzKG1zKTsKICAgICB0bS53ZWVrRGF5ICA9ICBtc1Rv
V2Vla0RheShtcyk7Ci0gICAgdG0ubW9udGhEYXkgPSAgbXNUb0RheUluTW9udGgobXMpOwotICAg
IHRtLnllYXJEYXkgID0gIGRheUluWWVhcihtcywgbXNUb1llYXIobXMpKTsKKyAgICB0bS5tb250
aERheSA9ICBtc1RvRGF5SW5Nb250aChtcywgeWVhcik7CisgICAgdG0ueWVhckRheSAgPSAgZGF5
SW5ZZWFyKG1zLCB5ZWFyKTsKICAgICB0bS5tb250aCAgICA9ICBtc1RvTW9udGgobXMpOwotICAg
IHRtLnllYXIgICAgID0gIG1zVG9ZZWFyKG1zKSAtIDE5MDA7CisgICAgdG0ueWVhciAgICAgPSAg
eWVhciAtIDE5MDA7CiAgICAgdG0uaXNEU1QgICAgPSAgZHN0T2ZmICE9IDAuMDsKIAogICAgIHRt
LnV0Y09mZnNldCA9IHN0YXRpY19jYXN0PGxvbmc+KChkc3RPZmYgKyBnZXRVVENPZmZzZXQoKSkg
LyBtc1BlclNlY29uZCk7Cg==
</data>
<flag name="review"
          id="7813"
          type_id="1"
          status="-"
          setter="ggaren"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>18009</attachid>
            <date>2007-12-20 10:43:40 -0800</date>
            <delta_ts>2007-12-20 11:01:45 -0800</delta_ts>
            <desc>Remove use of isInLeapYear to avoid calling msSince1970ToAbsoluteYear</desc>
            <filename>Remove-use-of-isInLeapYear-to-avoid-calling-msSince1970ToAbsoluteYear.patch</filename>
            <type>text/plain</type>
            <size>1212</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">OWVkNDlhNTFkNTlkZjY3NzhiYTY0ZTc3YWEwNTU1ZjgzZGY3ZjZmOApkaWZmIC0tZ2l0IGEvSmF2
YVNjcmlwdENvcmUva2pzL0RhdGVNYXRoLmNwcCBiL0phdmFTY3JpcHRDb3JlL2tqcy9EYXRlTWF0
aC5jcHAKaW5kZXggMzI2MDAyZS4uMzdhNDg1NCAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUv
a2pzL0RhdGVNYXRoLmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS9ranMvRGF0ZU1hdGguY3BwCkBA
IC0xMzAsMTEgKzEzMCw2IEBAIHN0YXRpYyBpbmxpbmUgaW50IG1zU2luY2UxOTcwVG9BYnNvbHV0
ZVllYXIoZG91YmxlIG1zU2luY2UxOTcwKQogICAgIHJldHVybiBhcHByb3hZZWFyOwogfQogCi1z
dGF0aWMgaW5saW5lIGJvb2wgaXNJbkxlYXBZZWFyKGRvdWJsZSBtcykKLXsKLSAgICByZXR1cm4g
aXNMZWFwWWVhcihtc1NpbmNlMTk3MFRvQWJzb2x1dGVZZWFyKG1zKSk7Ci19Ci0KIHN0YXRpYyBp
bmxpbmUgaW50IGRheUluWWVhcihkb3VibGUgbXMsIGludCB5ZWFyKQogewogICAgIHJldHVybiBz
dGF0aWNfY2FzdDxpbnQ+KG1zVG9EYXlzKG1zKSAtIGRheXNGcm9tMTk3MFRvWWVhcih5ZWFyKSk7
CkBAIC0xODksNyArMTg0LDcgQEAgc3RhdGljIGlubGluZSBpbnQgbXNUb01vbnRoKGRvdWJsZSBt
cykKIAogICAgIGlmIChkIDwgKHN0ZXAgPSAzMSkpCiAgICAgICAgIHJldHVybiAwOwotICAgIHN0
ZXAgKz0gKGlzSW5MZWFwWWVhcihtcykgPyAyOSA6IDI4KTsKKyAgICBzdGVwICs9IChpc0xlYXBZ
ZWFyKHllYXIpID8gMjkgOiAyOCk7CiAgICAgaWYgKGQgPCBzdGVwKQogICAgICAgICByZXR1cm4g
MTsKICAgICBpZiAoZCA8IChzdGVwICs9IDMxKSkKQEAgLTIzMCw3ICsyMjUsNyBAQCBzdGF0aWMg
aW5saW5lIGludCBtc1RvRGF5SW5Nb250aChkb3VibGUgbXMsIGludCBwcmVjb21wdXRlZEFic29s
dXRlWWVhcikKIAogICAgIGlmIChkIDw9IG5leHQpCiAgICAgICAgIHJldHVybiBkICsgMTsKLSAg
ICBjb25zdCBpbnQgZGF5c0luRmViID0gKGlzSW5MZWFwWWVhcihtcykgPyAyOSA6IDI4KTsKKyAg
ICBjb25zdCBpbnQgZGF5c0luRmViID0gKGlzTGVhcFllYXIocHJlY29tcHV0ZWRBYnNvbHV0ZVll
YXIpID8gMjkgOiAyOCk7CiAgICAgaWYgKGNoZWNrTW9udGgoZCwgc3RlcCwgbmV4dCwgZGF5c0lu
RmViKSkKICAgICAgICAgcmV0dXJuIGQgLSBzdGVwOwogICAgIGlmIChjaGVja01vbnRoKGQsIHN0
ZXAsIG5leHQsIDMxKSkK
</data>
<flag name="review"
          id="7814"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>18010</attachid>
            <date>2007-12-20 10:43:42 -0800</date>
            <delta_ts>2007-12-20 11:02:33 -0800</delta_ts>
            <desc>Remove dayInYear call by changing msToDayInMonth to dayInMonthFromDayInYear</desc>
            <filename>Remove-dayInYear-call-by-changing-msToDayInMonth-to-dayInMonthFromDayInYear.patch</filename>
            <type>text/plain</type>
            <size>2807</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">NjEzMTZlN2U2ZmEyZWFlZTljYzc3NzI1MzJlNTBmYmIzYTY2MmI0MgpkaWZmIC0tZ2l0IGEvSmF2
YVNjcmlwdENvcmUva2pzL0RhdGVNYXRoLmNwcCBiL0phdmFTY3JpcHRDb3JlL2tqcy9EYXRlTWF0
aC5jcHAKaW5kZXggMzdhNDg1NC4uMzhhYWFlZSAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUv
a2pzL0RhdGVNYXRoLmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS9ranMvRGF0ZU1hdGguY3BwCkBA
IC0yMTUsMTcgKzIxNSwxNSBAQCBzdGF0aWMgaW5saW5lIGJvb2wgY2hlY2tNb250aChpbnQgZGF5
SW5ZZWFyLCBpbnQmIHN0YXJ0RGF5T2ZUaGlzTW9udGgsIGludCYgc3RhcgogICAgIHJldHVybiAo
ZGF5SW5ZZWFyIDw9IHN0YXJ0RGF5T2ZOZXh0TW9udGgpOwogfQogCi1zdGF0aWMgaW5saW5lIGlu
dCBtc1RvRGF5SW5Nb250aChkb3VibGUgbXMsIGludCBwcmVjb21wdXRlZEFic29sdXRlWWVhcikK
K3N0YXRpYyBpbmxpbmUgaW50IGRheUluTW9udGhGcm9tRGF5SW5ZZWFyKGludCBkYXlJblllYXIs
IGJvb2wgbGVhcFllYXIpCiB7Ci0gICAgQVNTRVJUKG1zU2luY2UxOTcwVG9BYnNvbHV0ZVllYXIo
bXMpID09IHByZWNvbXB1dGVkQWJzb2x1dGVZZWFyKTsKLSAgICBpbnQgZCA9IGRheUluWWVhciht
cywgcHJlY29tcHV0ZWRBYnNvbHV0ZVllYXIpOwotCisgICAgY29uc3QgaW50IGQgPSBkYXlJblll
YXI7CiAgICAgaW50IHN0ZXA7CiAgICAgaW50IG5leHQgPSAzMDsKIAogICAgIGlmIChkIDw9IG5l
eHQpCiAgICAgICAgIHJldHVybiBkICsgMTsKLSAgICBjb25zdCBpbnQgZGF5c0luRmViID0gKGlz
TGVhcFllYXIocHJlY29tcHV0ZWRBYnNvbHV0ZVllYXIpID8gMjkgOiAyOCk7CisgICAgY29uc3Qg
aW50IGRheXNJbkZlYiA9IChsZWFwWWVhciA/IDI5IDogMjgpOwogICAgIGlmIChjaGVja01vbnRo
KGQsIHN0ZXAsIG5leHQsIGRheXNJbkZlYikpCiAgICAgICAgIHJldHVybiBkIC0gc3RlcDsKICAg
ICBpZiAoY2hlY2tNb250aChkLCBzdGVwLCBuZXh0LCAzMSkpCkBAIC00MDQsNyArNDAyLDcgQEAg
c3RhdGljIGRvdWJsZSBnZXREU1RPZmZzZXRTaW1wbGUoZG91YmxlIGxvY2FsVGltZVNlY29uZHMp
CiB7CiAgICAgaWYgKGxvY2FsVGltZVNlY29uZHMgPiBtYXhVbml4VGltZSkKICAgICAgICAgbG9j
YWxUaW1lU2Vjb25kcyA9IG1heFVuaXhUaW1lOwotICAgIGVsc2UgaWYobG9jYWxUaW1lU2Vjb25k
cyA8IDApIC8vIEdvIGFoZWFkIGEgZGF5IHRvIG1ha2UgbG9jYWx0aW1lIHdvcmsgKGRvZXMgbm90
IHdvcmsgd2l0aCAwKQorICAgIGVsc2UgaWYgKGxvY2FsVGltZVNlY29uZHMgPCAwKSAvLyBHbyBh
aGVhZCBhIGRheSB0byBtYWtlIGxvY2FsdGltZSB3b3JrIChkb2VzIG5vdCB3b3JrIHdpdGggMCkK
ICAgICAgICAgbG9jYWxUaW1lU2Vjb25kcyArPSBzZWNvbmRzUGVyRGF5OwogCiAgICAgLy9pbnB1
dCBpcyBVVEMgc28gd2UgaGF2ZSB0byBzaGlmdCBiYWNrIHRvIGxvY2FsIHRpbWUgdG8gZGV0ZXJt
aW5lIERTVCB0aHVzIHRoZSArIGdldFVUQ09mZnNldCgpCkBAIC00MzcsNyArNDM1LDcgQEAgc3Rh
dGljIGRvdWJsZSBnZXREU1RPZmZzZXRTaW1wbGUoZG91YmxlIGxvY2FsVGltZVNlY29uZHMpCiAK
ICAgICBkb3VibGUgZGlmZiA9ICgobG9jYWxUTS50bV9ob3VyIC0gb2Zmc2V0SG91cikgKiBzZWNv
bmRzUGVySG91cikgKyAoKGxvY2FsVE0udG1fbWluIC0gb2Zmc2V0TWludXRlKSAqIDYwKTsKIAot
ICAgIGlmKGRpZmYgPCAwKQorICAgIGlmIChkaWZmIDwgMCkKICAgICAgICAgZGlmZiArPSBzZWNv
bmRzUGVyRGF5OwogCiAgICAgcmV0dXJuIChkaWZmICogbXNQZXJTZWNvbmQpOwpAQCAtNDU0LDcg
KzQ1Miw4IEBAIHN0YXRpYyBkb3VibGUgZ2V0RFNUT2Zmc2V0KGRvdWJsZSBtcykKICAgICBpbnQg
eWVhciA9IG1zU2luY2UxOTcwVG9BYnNvbHV0ZVllYXIobXMpOwogICAgIGludCBlcXVpdmFsZW50
WWVhciA9IGVxdWl2YWxlbnRZZWFyRm9yRFNUKHllYXIpOwogICAgIGlmICh5ZWFyICE9IGVxdWl2
YWxlbnRZZWFyKSB7Ci0gICAgICAgIGludCBkYXkgPSBkYXRlVG9EYXlJblllYXIoZXF1aXZhbGVu
dFllYXIsIG1zVG9Nb250aChtcyksIG1zVG9EYXlJbk1vbnRoKG1zLCB5ZWFyKSk7CisgICAgICAg
IGludCBkYXlJbk1vbnRoID0gZGF5SW5Nb250aEZyb21EYXlJblllYXIoZGF5SW5ZZWFyKG1zLCB5
ZWFyKSwgaXNMZWFwWWVhcih5ZWFyKSk7CisgICAgICAgIGludCBkYXkgPSBkYXRlVG9EYXlJblll
YXIoZXF1aXZhbGVudFllYXIsIG1zVG9Nb250aChtcyksIGRheUluTW9udGgpOwogICAgICAgICBt
cyA9IChkYXkgKiBtc1BlckRheSkgKyBtc1RvTWlsbGlzZWNvbmRzKG1zKTsKICAgICB9CiAKQEAg
LTQ5MCw4ICs0ODksOCBAQCB2b2lkIG1zVG9HcmVnb3JpYW5EYXRlVGltZShkb3VibGUgbXMsIGJv
b2wgb3V0cHV0SXNVVEMsIEdyZWdvcmlhbkRhdGVUaW1lJiB0bSkKICAgICB0bS5taW51dGUgICA9
ICBtc1RvTWludXRlcyhtcyk7CiAgICAgdG0uaG91ciAgICAgPSAgbXNUb0hvdXJzKG1zKTsKICAg
ICB0bS53ZWVrRGF5ICA9ICBtc1RvV2Vla0RheShtcyk7Ci0gICAgdG0ubW9udGhEYXkgPSAgbXNU
b0RheUluTW9udGgobXMsIHllYXIpOwogICAgIHRtLnllYXJEYXkgID0gIGRheUluWWVhcihtcywg
eWVhcik7CisgICAgdG0ubW9udGhEYXkgPSAgZGF5SW5Nb250aEZyb21EYXlJblllYXIodG0ueWVh
ckRheSwgaXNMZWFwWWVhcih5ZWFyKSk7CiAgICAgdG0ubW9udGggICAgPSAgbXNUb01vbnRoKG1z
KTsKICAgICB0bS55ZWFyICAgICA9ICB5ZWFyIC0gMTkwMDsKICAgICB0bS5pc0RTVCAgICA9ICBk
c3RPZmYgIT0gMC4wOwo=
</data>
<flag name="review"
          id="7815"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>18011</attachid>
            <date>2007-12-20 10:43:44 -0800</date>
            <delta_ts>2007-12-20 11:03:11 -0800</delta_ts>
            <desc>Remove more duplicate calls to dayInYear and getUTCOffset for further speedup</desc>
            <filename>Remove-more-duplicate-calls-to-dayInYear-and-getUTCOffset-for-further-speedup.patch</filename>
            <type>text/plain</type>
            <size>4900</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">NmRmMzBhODEyNGZmZGZiYzI5ZTc3YzQyZmVmNGMwMTc4OGQxMWM2YgpkaWZmIC0tZ2l0IGEvSmF2
YVNjcmlwdENvcmUva2pzL0RhdGVNYXRoLmNwcCBiL0phdmFTY3JpcHRDb3JlL2tqcy9EYXRlTWF0
aC5jcHAKaW5kZXggMzhhYWFlZS4uZTdhZmEzNSAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUv
a2pzL0RhdGVNYXRoLmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS9ranMvRGF0ZU1hdGguY3BwCkBA
IC0xMzAsOSArMTMwLDkgQEAgc3RhdGljIGlubGluZSBpbnQgbXNTaW5jZTE5NzBUb0Fic29sdXRl
WWVhcihkb3VibGUgbXNTaW5jZTE5NzApCiAgICAgcmV0dXJuIGFwcHJveFllYXI7CiB9CiAKLXN0
YXRpYyBpbmxpbmUgaW50IGRheUluWWVhcihkb3VibGUgbXMsIGludCB5ZWFyKQorc3RhdGljIGlu
bGluZSBpbnQgZGF5SW5ZZWFyKGRvdWJsZSBtc1NpbmNlMTk3MCwgaW50IHllYXIpCiB7Ci0gICAg
cmV0dXJuIHN0YXRpY19jYXN0PGludD4obXNUb0RheXMobXMpIC0gZGF5c0Zyb20xOTcwVG9ZZWFy
KHllYXIpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50Pihtc1RvRGF5cyhtc1NpbmNlMTk3
MCkgLSBkYXlzRnJvbTE5NzBUb1llYXIoeWVhcikpOwogfQogCiBzdGF0aWMgaW5saW5lIGRvdWJs
ZSBtc1RvTWlsbGlzZWNvbmRzKGRvdWJsZSBtcykKQEAgLTE3NiwxNSArMTc2LDE0IEBAIHN0YXRp
YyBpbmxpbmUgaW50IG1zVG9Ib3Vycyhkb3VibGUgbXMpCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PGludD4ocmVzdWx0KTsKIH0KIAotc3RhdGljIGlubGluZSBpbnQgbXNUb01vbnRoKGRvdWJsZSBt
cykKK3N0YXRpYyBpbmxpbmUgaW50IG1vbnRoRnJvbURheUluWWVhcihpbnQgZGF5SW5ZZWFyLCBi
b29sIGxlYXBZZWFyKQogeworICAgIGNvbnN0IGludCBkID0gZGF5SW5ZZWFyOwogICAgIGludCBz
dGVwOwotICAgIGludCB5ZWFyID0gbXNTaW5jZTE5NzBUb0Fic29sdXRlWWVhcihtcyk7Ci0gICAg
aW50IGQgPSBkYXlJblllYXIobXMsIHllYXIpOwogCiAgICAgaWYgKGQgPCAoc3RlcCA9IDMxKSkK
ICAgICAgICAgcmV0dXJuIDA7Ci0gICAgc3RlcCArPSAoaXNMZWFwWWVhcih5ZWFyKSA/IDI5IDog
MjgpOworICAgIHN0ZXAgKz0gKGxlYXBZZWFyID8gMjkgOiAyOCk7CiAgICAgaWYgKGQgPCBzdGVw
KQogICAgICAgICByZXR1cm4gMTsKICAgICBpZiAoZCA8IChzdGVwICs9IDMxKSkKQEAgLTM5OCw3
ICszOTcsNyBAQCBkb3VibGUgZ2V0VVRDT2Zmc2V0KCkKICAqIHNlY29uZHMgKG5vdCBtaWxsaXNl
Y29uZHMpIGFuZCBjYW5ub3QgaGFuZGxlIGRhdGVzIGJlZm9yZSAxOTcwCiAgKiBvbiBzb21lIE9T
JwogICovCi1zdGF0aWMgZG91YmxlIGdldERTVE9mZnNldFNpbXBsZShkb3VibGUgbG9jYWxUaW1l
U2Vjb25kcykKK3N0YXRpYyBkb3VibGUgZ2V0RFNUT2Zmc2V0U2ltcGxlKGRvdWJsZSBsb2NhbFRp
bWVTZWNvbmRzLCBkb3VibGUgdXRjT2Zmc2V0KQogewogICAgIGlmIChsb2NhbFRpbWVTZWNvbmRz
ID4gbWF4VW5peFRpbWUpCiAgICAgICAgIGxvY2FsVGltZVNlY29uZHMgPSBtYXhVbml4VGltZTsK
QEAgLTQwNiw3ICs0MDUsNyBAQCBzdGF0aWMgZG91YmxlIGdldERTVE9mZnNldFNpbXBsZShkb3Vi
bGUgbG9jYWxUaW1lU2Vjb25kcykKICAgICAgICAgbG9jYWxUaW1lU2Vjb25kcyArPSBzZWNvbmRz
UGVyRGF5OwogCiAgICAgLy9pbnB1dCBpcyBVVEMgc28gd2UgaGF2ZSB0byBzaGlmdCBiYWNrIHRv
IGxvY2FsIHRpbWUgdG8gZGV0ZXJtaW5lIERTVCB0aHVzIHRoZSArIGdldFVUQ09mZnNldCgpCi0g
ICAgZG91YmxlIG9mZnNldFRpbWUgPSAobG9jYWxUaW1lU2Vjb25kcyAqIG1zUGVyU2Vjb25kKSAr
IGdldFVUQ09mZnNldCgpOworICAgIGRvdWJsZSBvZmZzZXRUaW1lID0gKGxvY2FsVGltZVNlY29u
ZHMgKiBtc1BlclNlY29uZCkgKyB1dGNPZmZzZXQ7CiAKICAgICAvLyBPZmZzZXQgZnJvbSBVVEMg
YnV0IGRvZXNuJ3QgaW5jbHVkZSBEU1Qgb2J2aW91c2x5CiAgICAgaW50IG9mZnNldEhvdXIgPSAg
bXNUb0hvdXJzKG9mZnNldFRpbWUpOwpAQCAtNDQyLDcgKzQ0MSw3IEBAIHN0YXRpYyBkb3VibGUg
Z2V0RFNUT2Zmc2V0U2ltcGxlKGRvdWJsZSBsb2NhbFRpbWVTZWNvbmRzKQogfQogCiAvLyBHZXQg
dGhlIERTVCBvZmZzZXQsIGdpdmVuIGEgdGltZSBpbiBVVEMKLXN0YXRpYyBkb3VibGUgZ2V0RFNU
T2Zmc2V0KGRvdWJsZSBtcykKK3N0YXRpYyBkb3VibGUgZ2V0RFNUT2Zmc2V0KGRvdWJsZSBtcywg
ZG91YmxlIHV0Y09mZnNldCkKIHsKICAgICAvLyBPbiBNYWMgT1MgWCwgdGhlIGNhbGwgdG8gbG9j
YWx0aW1lIChzZWUgZ2V0RFNUT2Zmc2V0U2ltcGxlKSB3aWxsIHJldHVybiBoaXN0b3JpY2FsbHkg
YWNjdXJhdGUKICAgICAvLyBEU1QgaW5mb3JtYXRpb24gKGUuZy4gTmV3IFplYWxhbmQgZGlkIG5v
dCBoYXZlIERTVCBmcm9tIDE5NDYgdG8gMTk3NCkgaG93ZXZlciB0aGUgSmF2YVNjcmlwdApAQCAt
NDUyLDEyICs0NTEsMTUgQEAgc3RhdGljIGRvdWJsZSBnZXREU1RPZmZzZXQoZG91YmxlIG1zKQog
ICAgIGludCB5ZWFyID0gbXNTaW5jZTE5NzBUb0Fic29sdXRlWWVhcihtcyk7CiAgICAgaW50IGVx
dWl2YWxlbnRZZWFyID0gZXF1aXZhbGVudFllYXJGb3JEU1QoeWVhcik7CiAgICAgaWYgKHllYXIg
IT0gZXF1aXZhbGVudFllYXIpIHsKLSAgICAgICAgaW50IGRheUluTW9udGggPSBkYXlJbk1vbnRo
RnJvbURheUluWWVhcihkYXlJblllYXIobXMsIHllYXIpLCBpc0xlYXBZZWFyKHllYXIpKTsKLSAg
ICAgICAgaW50IGRheSA9IGRhdGVUb0RheUluWWVhcihlcXVpdmFsZW50WWVhciwgbXNUb01vbnRo
KG1zKSwgZGF5SW5Nb250aCk7CisgICAgICAgIGJvb2wgbGVhcFllYXIgPSBpc0xlYXBZZWFyKHll
YXIpOworICAgICAgICBpbnQgZGF5SW5ZZWFyTG9jYWwgPSBkYXlJblllYXIobXMsIHllYXIpOwor
ICAgICAgICBpbnQgZGF5SW5Nb250aCA9IGRheUluTW9udGhGcm9tRGF5SW5ZZWFyKGRheUluWWVh
ckxvY2FsLCBsZWFwWWVhcik7CisgICAgICAgIGludCBtb250aCA9IG1vbnRoRnJvbURheUluWWVh
cihkYXlJblllYXJMb2NhbCwgbGVhcFllYXIpOworICAgICAgICBpbnQgZGF5ID0gZGF0ZVRvRGF5
SW5ZZWFyKGVxdWl2YWxlbnRZZWFyLCBtb250aCwgZGF5SW5Nb250aCk7CiAgICAgICAgIG1zID0g
KGRheSAqIG1zUGVyRGF5KSArIG1zVG9NaWxsaXNlY29uZHMobXMpOwogICAgIH0KIAotICAgIHJl
dHVybiBnZXREU1RPZmZzZXRTaW1wbGUobXMgLyBtc1BlclNlY29uZCk7CisgICAgcmV0dXJuIGdl
dERTVE9mZnNldFNpbXBsZShtcyAvIG1zUGVyU2Vjb25kLCB1dGNPZmZzZXQpOwogfQogCiBkb3Vi
bGUgZ3JlZ29yaWFuRGF0ZVRpbWVUb01TKGNvbnN0IEdyZWdvcmlhbkRhdGVUaW1lJiB0LCBkb3Vi
bGUgbWlsbGlTZWNvbmRzLCBib29sIGlucHV0SXNVVEMpCkBAIC00NjcsOCArNDY5LDkgQEAgZG91
YmxlIGdyZWdvcmlhbkRhdGVUaW1lVG9NUyhjb25zdCBHcmVnb3JpYW5EYXRlVGltZSYgdCwgZG91
YmxlIG1pbGxpU2Vjb25kcywgYm8KICAgICBkb3VibGUgcmVzdWx0ID0gKGRheSAqIG1zUGVyRGF5
KSArIG1zOwogCiAgICAgaWYgKCFpbnB1dElzVVRDKSB7IC8vIGNvbnZlcnQgdG8gVVRDCi0gICAg
ICAgIHJlc3VsdCAtPSBnZXRVVENPZmZzZXQoKTsgICAgICAgCi0gICAgICAgIHJlc3VsdCAtPSBn
ZXREU1RPZmZzZXQocmVzdWx0KTsKKyAgICAgICAgZG91YmxlIHV0Y09mZnNldCA9IGdldFVUQ09m
ZnNldCgpOworICAgICAgICByZXN1bHQgLT0gdXRjT2Zmc2V0OworICAgICAgICByZXN1bHQgLT0g
Z2V0RFNUT2Zmc2V0KHJlc3VsdCwgdXRjT2Zmc2V0KTsKICAgICB9CiAKICAgICByZXR1cm4gcmVz
dWx0OwpAQCAtNDc4LDEwICs0ODEsMTEgQEAgdm9pZCBtc1RvR3JlZ29yaWFuRGF0ZVRpbWUoZG91
YmxlIG1zLCBib29sIG91dHB1dElzVVRDLCBHcmVnb3JpYW5EYXRlVGltZSYgdG0pCiB7CiAgICAg
Ly8gaW5wdXQgaXMgVVRDCiAgICAgZG91YmxlIGRzdE9mZiA9IDAuMDsKKyAgICBjb25zdCBkb3Vi
bGUgdXRjT2ZmID0gZ2V0VVRDT2Zmc2V0KCk7CiAgICAgCiAgICAgaWYgKCFvdXRwdXRJc1VUQykg
eyAgLy8gY29udmVydCB0byBsb2NhbCB0aW1lCi0gICAgICAgIGRzdE9mZiA9IGdldERTVE9mZnNl
dChtcyk7Ci0gICAgICAgIG1zICs9IGRzdE9mZiArIGdldFVUQ09mZnNldCgpOworICAgICAgICBk
c3RPZmYgPSBnZXREU1RPZmZzZXQobXMsIHV0Y09mZik7CisgICAgICAgIG1zICs9IGRzdE9mZiAr
IHV0Y09mZjsKICAgICB9CiAKICAgICBjb25zdCBpbnQgeWVhciA9IG1zU2luY2UxOTcwVG9BYnNv
bHV0ZVllYXIobXMpOwpAQCAtNDkxLDExICs0OTUsMTEgQEAgdm9pZCBtc1RvR3JlZ29yaWFuRGF0
ZVRpbWUoZG91YmxlIG1zLCBib29sIG91dHB1dElzVVRDLCBHcmVnb3JpYW5EYXRlVGltZSYgdG0p
CiAgICAgdG0ud2Vla0RheSAgPSAgbXNUb1dlZWtEYXkobXMpOwogICAgIHRtLnllYXJEYXkgID0g
IGRheUluWWVhcihtcywgeWVhcik7CiAgICAgdG0ubW9udGhEYXkgPSAgZGF5SW5Nb250aEZyb21E
YXlJblllYXIodG0ueWVhckRheSwgaXNMZWFwWWVhcih5ZWFyKSk7Ci0gICAgdG0ubW9udGggICAg
PSAgbXNUb01vbnRoKG1zKTsKKyAgICB0bS5tb250aCAgICA9ICBtb250aEZyb21EYXlJblllYXIo
dG0ueWVhckRheSwgaXNMZWFwWWVhcih5ZWFyKSk7CiAgICAgdG0ueWVhciAgICAgPSAgeWVhciAt
IDE5MDA7CiAgICAgdG0uaXNEU1QgICAgPSAgZHN0T2ZmICE9IDAuMDsKIAotICAgIHRtLnV0Y09m
ZnNldCA9IHN0YXRpY19jYXN0PGxvbmc+KChkc3RPZmYgKyBnZXRVVENPZmZzZXQoKSkgLyBtc1Bl
clNlY29uZCk7CisgICAgdG0udXRjT2Zmc2V0ID0gc3RhdGljX2Nhc3Q8bG9uZz4oKGRzdE9mZiAr
IHV0Y09mZikgLyBtc1BlclNlY29uZCk7CiAgICAgdG0udGltZVpvbmUgPSBOVUxMOwogfQogCg==
</data>
<flag name="review"
          id="7816"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>18012</attachid>
            <date>2007-12-20 11:57:49 -0800</date>
            <delta_ts>2007-12-20 11:58:18 -0800</delta_ts>
            <desc>Final combined patch w/ ggaren&apos;s suggested fixes</desc>
            <filename>final.patch</filename>
            <type>text/plain</type>
            <size>11253</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">MWIyNjNjYTEyNDc3OTkxNDA2NWI3NDJjYmFiYjYxYTQ1N2M0MmQ2NwpkaWZmIC0tZ2l0IGEvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDc0
NTQ2YTUuLmRhMjVkYzMgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysg
Yi9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAwNy0xMi0yMCAg
RXJpYyBTZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgR2Vv
ZmYuCisKKyAgICAgICAgU21hbGwgcmV3b3JraW5nIG9mIERhdGUgY29kZSBmb3IgNCUgc3BlZWR1
cCBvbiBEYXRlIHRlc3RzICgwLjIlIG92ZXJhbGwpCisgICAgICAgIGh0dHA6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NTM3CisKKyAgICAgICAgTWFrZSBtc1RvWWVhciBodW1h
bi1yZWFkYWJsZQorICAgICAgICBNYWtlIG1zVG9EYXlJbk1vbnRoIHNsaWdodGx5IG1vcmUgcmVh
ZGFibGUgYW5kIGF2b2lkIHJlY2FsY3VsYXRpbmcgbXNUb1llYXIKKyAgICAgICAgUmVtb3ZlIHVz
ZSBvZiBpc0luTGVhcFllYXIgdG8gYXZvaWQgY2FsbGluZyBtc1RvWWVhcgorICAgICAgICBSZW1v
dmUgZGF5SW5ZZWFyIGNhbGwgYnkgY2hhbmdpbmcgbXNUb0RheUluTW9udGggdG8gZGF5SW5Nb250
aEZyb21EYXlJblllYXIKKyAgICAgICAgUmVtb3ZlIG1vcmUgZHVwbGljYXRlIGNhbGxzIHRvIGRh
eUluWWVhciBhbmQgZ2V0VVRDT2Zmc2V0IGZvciBmdXJ0aGVyIHNwZWVkdXAKKworICAgICAgICAq
IGtqcy9EYXRlTWF0aC5jcHA6CisgICAgICAgIChLSlM6OmRheXNGcm9tMTk3MFRvWWVhcik6Cisg
ICAgICAgIChLSlM6Om1zVG9ZZWFyKToKKyAgICAgICAgKEtKUzo6bW9udGhGcm9tRGF5SW5ZZWFy
KToKKyAgICAgICAgKEtKUzo6Y2hlY2tNb250aCk6CisgICAgICAgIChLSlM6OmRheUluTW9udGhG
cm9tRGF5SW5ZZWFyKToKKyAgICAgICAgKEtKUzo6ZGF0ZVRvRGF5SW5ZZWFyKToKKyAgICAgICAg
KEtKUzo6Z2V0RFNUT2Zmc2V0U2ltcGxlKToKKyAgICAgICAgKEtKUzo6Z2V0RFNUT2Zmc2V0KToK
KyAgICAgICAgKEtKUzo6Z3JlZ29yaWFuRGF0ZVRpbWVUb01TKToKKyAgICAgICAgKEtKUzo6bXNU
b0dyZWdvcmlhbkRhdGVUaW1lKToKKwogMjAwNy0xMi0yMCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBh
cHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYy4KZGlmZiAtLWdpdCBhL0phdmFT
Y3JpcHRDb3JlL2tqcy9EYXRlTWF0aC5jcHAgYi9KYXZhU2NyaXB0Q29yZS9ranMvRGF0ZU1hdGgu
Y3BwCmluZGV4IDhmNDEwNzQuLmNhNzg4NmEgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL2tq
cy9EYXRlTWF0aC5jcHAKKysrIGIvSmF2YVNjcmlwdENvcmUva2pzL0RhdGVNYXRoLmNwcApAQCAt
OTcsMTUgKzk3LDIxIEBAIHN0YXRpYyBpbmxpbmUgaW50IGRheXNJblllYXIoaW50IHllYXIpCiAK
IHN0YXRpYyBpbmxpbmUgZG91YmxlIGRheXNGcm9tMTk3MFRvWWVhcihpbnQgeWVhcikKIHsKLSAg
ICByZXR1cm4gMzY1LjAgKiAoeWVhciAtIDE5NzApCi0gICAgICAgICsgZmxvb3IoKHllYXIgLSAx
OTY5KSAvIDQuMCkKLSAgICAgICAgLSBmbG9vcigoeWVhciAtIDE5MDEpIC8gMTAwLjApCi0gICAg
ICAgICsgZmxvb3IoKHllYXIgLSAxNjAxKSAvIDQwMC4wKTsKLX0KKyAgICAvLyBUaGUgR3JlZ29y
aWFuIENhbGVuZGFyIHJ1bGVzIGZvciBsZWFwIHllYXJzOgorICAgIC8vIEV2ZXJ5IGZvdXJ0aCB5
ZWFyIGlzIGEgbGVhcCB5ZWFyLgkyMDA0LCAyMDA4LCBhbmQgMjAxMiBhcmUgbGVhcCB5ZWFycy4K
KyAgICAvLyBIb3dldmVyLCBldmVyeSBodW5kcmVkdGggeWVhciBpcyBub3QgYSBsZWFwIHllYXIu
CTE5MDAgYW5kIDIxMDAgYXJlIG5vdCBsZWFwIHllYXJzLgorICAgIC8vIEV2ZXJ5IGZvdXIgaHVu
ZHJlZCB5ZWFycywgdGhlcmUncyBhIGxlYXAgeWVhciBhZnRlciBhbGwuCTIwMDAgYW5kIDI0MDAg
YXJlIGxlYXAgeWVhcnMuCiAKLXN0YXRpYyBpbmxpbmUgZG91YmxlIG1zRnJvbTE5NzBUb1llYXIo
aW50IHllYXIpCi17Ci0gICAgcmV0dXJuIG1zUGVyRGF5ICogZGF5c0Zyb20xOTcwVG9ZZWFyKHll
YXIpOworICAgIHN0YXRpYyBjb25zdCBpbnQgbGVhcERheXNCZWZvcmUxOTcxQnk0UnVsZSA9IDE5
NzAgLyA0OworICAgIHN0YXRpYyBjb25zdCBpbnQgZXhjbHVkZWRMZWFwRGF5c0JlZm9yZTE5NzFC
eTEwMFJ1bGUgPSAxOTcwIC8gMTAwOworICAgIHN0YXRpYyBjb25zdCBpbnQgbGVhcERheXNCZWZv
cmUxOTcxQnk0MDBSdWxlID0gMTk3MCAvIDQwMDsKKworICAgIGNvbnN0IGRvdWJsZSB5ZWFyTWlu
dXNPbmUgPSB5ZWFyIC0gMTsKKyAgICBjb25zdCBkb3VibGUgeWVhcnNUb0FkZEJ5NFJ1bGUgPSBm
bG9vcih5ZWFyTWludXNPbmUgLyA0LjApIC0gbGVhcERheXNCZWZvcmUxOTcxQnk0UnVsZTsKKyAg
ICBjb25zdCBkb3VibGUgeWVhcnNUb0V4Y2x1ZGVCeTEwMFJ1bGUgPSBmbG9vcih5ZWFyTWludXNP
bmUgLyAxMDAuMCkgLSBleGNsdWRlZExlYXBEYXlzQmVmb3JlMTk3MUJ5MTAwUnVsZTsKKyAgICBj
b25zdCBkb3VibGUgeWVhcnNUb0FkZEJ5NDAwUnVsZSA9IGZsb29yKHllYXJNaW51c09uZSAvIDQw
MC4wKSAtIGxlYXBEYXlzQmVmb3JlMTk3MUJ5NDAwUnVsZTsKKworICAgIHJldHVybiAzNjUuMCAq
ICh5ZWFyIC0gMTk3MCkgKyB5ZWFyc1RvQWRkQnk0UnVsZSAtIHllYXJzVG9FeGNsdWRlQnkxMDBS
dWxlICsgeWVhcnNUb0FkZEJ5NDAwUnVsZTsKIH0KIAogc3RhdGljIGlubGluZSBkb3VibGUgbXNU
b0RheXMoZG91YmxlIG1zKQpAQCAtMTE1LDIwICsxMjEsMTMgQEAgc3RhdGljIGlubGluZSBkb3Vi
bGUgbXNUb0RheXMoZG91YmxlIG1zKQogCiBzdGF0aWMgaW5saW5lIGludCBtc1RvWWVhcihkb3Vi
bGUgbXMpCiB7Ci0gICAgaW50IHkgPSBzdGF0aWNfY2FzdDxpbnQ+KGZsb29yKG1zIC8gKG1zUGVy
RGF5ICogMzY1LjI0MjUpKSArIDE5NzApOwotICAgIGRvdWJsZSB0MiA9IG1zRnJvbTE5NzBUb1ll
YXIoeSk7Ci0gICAgaWYgKHQyID4gbXMpIHsKLSAgICAgICAgeS0tOwotICAgIH0gZWxzZSB7Ci0g
ICAgICAgIGlmICh0MiArIG1zUGVyRGF5ICogZGF5c0luWWVhcih5KSA8PSBtcykKLSAgICAgICAg
ICAgIHkrKzsKLSAgICB9Ci0gICAgcmV0dXJuIHk7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgYm9vbCBp
c0luTGVhcFllYXIoZG91YmxlIG1zKQotewotICAgIHJldHVybiBpc0xlYXBZZWFyKG1zVG9ZZWFy
KG1zKSk7CisgICAgaW50IGFwcHJveFllYXIgPSBzdGF0aWNfY2FzdDxpbnQ+KGZsb29yKG1zIC8g
KG1zUGVyRGF5ICogMzY1LjI0MjUpKSArIDE5NzApOworICAgIGRvdWJsZSBtc0Zyb21BcHByb3hZ
ZWFyVG8xOTcwID0gbXNQZXJEYXkgKiBkYXlzRnJvbTE5NzBUb1llYXIoYXBwcm94WWVhcik7Cisg
ICAgaWYgKG1zRnJvbUFwcHJveFllYXJUbzE5NzAgPiBtcykKKyAgICAgICAgcmV0dXJuIGFwcHJv
eFllYXIgLSAxOworICAgIGlmIChtc0Zyb21BcHByb3hZZWFyVG8xOTcwICsgbXNQZXJEYXkgKiBk
YXlzSW5ZZWFyKGFwcHJveFllYXIpIDw9IG1zKQorICAgICAgICByZXR1cm4gYXBwcm94WWVhciAr
IDE7CisgICAgcmV0dXJuIGFwcHJveFllYXI7CiB9CiAKIHN0YXRpYyBpbmxpbmUgaW50IGRheUlu
WWVhcihkb3VibGUgbXMsIGludCB5ZWFyKQpAQCAtMTc3LDE1ICsxNzYsMTQgQEAgc3RhdGljIGlu
bGluZSBpbnQgbXNUb0hvdXJzKGRvdWJsZSBtcykKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50
PihyZXN1bHQpOwogfQogCi1zdGF0aWMgaW5saW5lIGludCBtc1RvTW9udGgoZG91YmxlIG1zKQor
c3RhdGljIGlubGluZSBpbnQgbW9udGhGcm9tRGF5SW5ZZWFyKGludCBkYXlJblllYXIsIGJvb2wg
bGVhcFllYXIpCiB7CisgICAgY29uc3QgaW50IGQgPSBkYXlJblllYXI7CiAgICAgaW50IHN0ZXA7
Ci0gICAgaW50IHllYXIgPSBtc1RvWWVhcihtcyk7Ci0gICAgaW50IGQgPSBkYXlJblllYXIobXMs
IHllYXIpOwogCiAgICAgaWYgKGQgPCAoc3RlcCA9IDMxKSkKICAgICAgICAgcmV0dXJuIDA7Ci0g
ICAgc3RlcCArPSAoaXNJbkxlYXBZZWFyKG1zKSA/IDI5IDogMjgpOworICAgIHN0ZXAgKz0gKGxl
YXBZZWFyID8gMjkgOiAyOCk7CiAgICAgaWYgKGQgPCBzdGVwKQogICAgICAgICByZXR1cm4gMTsK
ICAgICBpZiAoZCA8IChzdGVwICs9IDMxKSkKQEAgLTIwOSw0NCArMjA3LDQxIEBAIHN0YXRpYyBp
bmxpbmUgaW50IG1zVG9Nb250aChkb3VibGUgbXMpCiAgICAgcmV0dXJuIDExOwogfQogCi1zdGF0
aWMgaW5saW5lIGludCBtc1RvRGF5SW5Nb250aChkb3VibGUgbXMpCitzdGF0aWMgaW5saW5lIGJv
b2wgY2hlY2tNb250aChpbnQgZGF5SW5ZZWFyLCBpbnQmIHN0YXJ0RGF5T2ZUaGlzTW9udGgsIGlu
dCYgc3RhcnREYXlPZk5leHRNb250aCwgaW50IGRheXNJblRoaXNNb250aCkKIHsKLSAgICBpbnQg
c3RlcCwgbmV4dDsKLSAgICBpbnQgeWVhciA9IG1zVG9ZZWFyKG1zKTsKLSAgICBpbnQgZCA9IGRh
eUluWWVhcihtcywgeWVhcik7CisgICAgc3RhcnREYXlPZlRoaXNNb250aCA9IHN0YXJ0RGF5T2ZO
ZXh0TW9udGg7CisgICAgc3RhcnREYXlPZk5leHRNb250aCArPSBkYXlzSW5UaGlzTW9udGg7Cisg
ICAgcmV0dXJuIChkYXlJblllYXIgPD0gc3RhcnREYXlPZk5leHRNb250aCk7Cit9CisKK3N0YXRp
YyBpbmxpbmUgaW50IGRheUluTW9udGhGcm9tRGF5SW5ZZWFyKGludCBkYXlJblllYXIsIGJvb2wg
bGVhcFllYXIpCit7CisgICAgY29uc3QgaW50IGQgPSBkYXlJblllYXI7CisgICAgaW50IHN0ZXA7
CisgICAgaW50IG5leHQgPSAzMDsKIAotICAgIGlmIChkIDw9IChuZXh0ID0gMzApKQotICAgICAg
ICByZXR1cm4gZCArIDE7Ci0gICAgc3RlcCA9IG5leHQ7Ci0gICAgbmV4dCArPSAoaXNJbkxlYXBZ
ZWFyKG1zKSA/IDI5IDogMjgpOwogICAgIGlmIChkIDw9IG5leHQpCisgICAgICAgIHJldHVybiBk
ICsgMTsKKyAgICBjb25zdCBpbnQgZGF5c0luRmViID0gKGxlYXBZZWFyID8gMjkgOiAyOCk7Cisg
ICAgaWYgKGNoZWNrTW9udGgoZCwgc3RlcCwgbmV4dCwgZGF5c0luRmViKSkKICAgICAgICAgcmV0
dXJuIGQgLSBzdGVwOwotICAgIHN0ZXAgPSBuZXh0OwotICAgIGlmIChkIDw9IChuZXh0ICs9IDMx
KSkKKyAgICBpZiAoY2hlY2tNb250aChkLCBzdGVwLCBuZXh0LCAzMSkpCiAgICAgICAgIHJldHVy
biBkIC0gc3RlcDsKLSAgICBzdGVwID0gbmV4dDsKLSAgICBpZiAoZCA8PSAobmV4dCArPSAzMCkp
CisgICAgaWYgKGNoZWNrTW9udGgoZCwgc3RlcCwgbmV4dCwgMzApKQogICAgICAgICByZXR1cm4g
ZCAtIHN0ZXA7Ci0gICAgc3RlcCA9IG5leHQ7Ci0gICAgaWYgKGQgPD0gKG5leHQgKz0gMzEpKQor
ICAgIGlmIChjaGVja01vbnRoKGQsIHN0ZXAsIG5leHQsIDMxKSkKICAgICAgICAgcmV0dXJuIGQg
LSBzdGVwOwotICAgIHN0ZXAgPSBuZXh0OwotICAgIGlmIChkIDw9IChuZXh0ICs9IDMwKSkKKyAg
ICBpZiAoY2hlY2tNb250aChkLCBzdGVwLCBuZXh0LCAzMCkpCiAgICAgICAgIHJldHVybiBkIC0g
c3RlcDsKLSAgICBzdGVwID0gbmV4dDsKLSAgICBpZiAoZCA8PSAobmV4dCArPSAzMSkpCisgICAg
aWYgKGNoZWNrTW9udGgoZCwgc3RlcCwgbmV4dCwgMzEpKQogICAgICAgICByZXR1cm4gZCAtIHN0
ZXA7Ci0gICAgc3RlcCA9IG5leHQ7Ci0gICAgaWYgKGQgPD0gKG5leHQgKz0gMzEpKQorICAgIGlm
IChjaGVja01vbnRoKGQsIHN0ZXAsIG5leHQsIDMxKSkKICAgICAgICAgcmV0dXJuIGQgLSBzdGVw
OwotICAgIHN0ZXAgPSBuZXh0OwotICAgIGlmIChkIDw9IChuZXh0ICs9IDMwKSkKKyAgICBpZiAo
Y2hlY2tNb250aChkLCBzdGVwLCBuZXh0LCAzMCkpCiAgICAgICAgIHJldHVybiBkIC0gc3RlcDsK
LSAgICBzdGVwID0gbmV4dDsKLSAgICBpZiAoZCA8PSAobmV4dCArPSAzMSkpCisgICAgaWYgKGNo
ZWNrTW9udGgoZCwgc3RlcCwgbmV4dCwgMzEpKQogICAgICAgICByZXR1cm4gZCAtIHN0ZXA7Ci0g
ICAgc3RlcCA9IG5leHQ7Ci0gICAgaWYgKGQgPD0gKG5leHQgKz0gMzApKQorICAgIGlmIChjaGVj
a01vbnRoKGQsIHN0ZXAsIG5leHQsIDMwKSkKICAgICAgICAgcmV0dXJuIGQgLSBzdGVwOwogICAg
IHN0ZXAgPSBuZXh0OwogICAgIHJldHVybiBkIC0gc3RlcDsKQEAgLTI3Miw3ICsyNjcsNyBAQCBz
dGF0aWMgaW50IGRhdGVUb0RheUluWWVhcihpbnQgeWVhciwgaW50IG1vbnRoLCBpbnQgZGF5KQog
ICAgICAgICAtLXllYXI7CiAgICAgfQogCi0gICAgaW50IHllYXJkYXkgPSBzdGF0aWNfY2FzdDxp
bnQ+KGZsb29yKG1zRnJvbTE5NzBUb1llYXIoeWVhcikgLyBtc1BlckRheSkpOworICAgIGludCB5
ZWFyZGF5ID0gc3RhdGljX2Nhc3Q8aW50PihmbG9vcihkYXlzRnJvbTE5NzBUb1llYXIoeWVhcikp
KTsKICAgICBpbnQgbW9udGhkYXkgPSBtb250aFRvRGF5SW5ZZWFyKG1vbnRoLCBpc0xlYXBZZWFy
KHllYXIpKTsKIAogICAgIHJldHVybiB5ZWFyZGF5ICsgbW9udGhkYXkgKyBkYXkgLSAxOwpAQCAt
MzEzLDcgKzMwOCw3IEBAIHN0YXRpYyBpbnQgbWltaW11bVllYXJGb3JEU1QoKQogICAgIC8vIGdy
ZWF0ZXIgdGhhbiB0aGUgbWF4IHllYXIgbWludXMgMjcgKDIwMTApLCB3ZSB3YW50IHRvIHVzZSB0
aGUgbWF4IHllYXIKICAgICAvLyBtaW51cyAyNyBpbnN0ZWFkLCB0byBlbnN1cmUgdGhlcmUgaXMg
YSByYW5nZSBvZiAyOCB5ZWFycyB0aGF0IGFsbCB5ZWFycwogICAgIC8vIGNhbiBtYXAgdG8uCi0g
ICAgc3RhdGljIGludCBtaW5ZZWFyID0gc3RkOjptaW4obXNUb1llYXIoZ2V0Q3VycmVudFVUQ1Rp
bWUoKSksIG1heGltdW1ZZWFyRm9yRFNUKCktMjcpIDsKKyAgICBzdGF0aWMgaW50IG1pblllYXIg
PSBzdGQ6Om1pbihtc1RvWWVhcihnZXRDdXJyZW50VVRDVGltZSgpKSwgbWF4aW11bVllYXJGb3JE
U1QoKSAtIDI3KSA7CiAgICAgcmV0dXJuIG1pblllYXI7CiB9CiAKQEAgLTQwMiwxNSArMzk3LDE1
IEBAIGRvdWJsZSBnZXRVVENPZmZzZXQoKQogICogc2Vjb25kcyAobm90IG1pbGxpc2Vjb25kcykg
YW5kIGNhbm5vdCBoYW5kbGUgZGF0ZXMgYmVmb3JlIDE5NzAKICAqIG9uIHNvbWUgT1MnCiAgKi8K
LXN0YXRpYyBkb3VibGUgZ2V0RFNUT2Zmc2V0U2ltcGxlKGRvdWJsZSBsb2NhbFRpbWVTZWNvbmRz
KQorc3RhdGljIGRvdWJsZSBnZXREU1RPZmZzZXRTaW1wbGUoZG91YmxlIGxvY2FsVGltZVNlY29u
ZHMsIGRvdWJsZSB1dGNPZmZzZXQpCiB7CiAgICAgaWYgKGxvY2FsVGltZVNlY29uZHMgPiBtYXhV
bml4VGltZSkKICAgICAgICAgbG9jYWxUaW1lU2Vjb25kcyA9IG1heFVuaXhUaW1lOwotICAgIGVs
c2UgaWYobG9jYWxUaW1lU2Vjb25kcyA8IDApIC8vIEdvIGFoZWFkIGEgZGF5IHRvIG1ha2UgbG9j
YWx0aW1lIHdvcmsgKGRvZXMgbm90IHdvcmsgd2l0aCAwKQorICAgIGVsc2UgaWYgKGxvY2FsVGlt
ZVNlY29uZHMgPCAwKSAvLyBHbyBhaGVhZCBhIGRheSB0byBtYWtlIGxvY2FsdGltZSB3b3JrIChk
b2VzIG5vdCB3b3JrIHdpdGggMCkKICAgICAgICAgbG9jYWxUaW1lU2Vjb25kcyArPSBzZWNvbmRz
UGVyRGF5OwogCiAgICAgLy9pbnB1dCBpcyBVVEMgc28gd2UgaGF2ZSB0byBzaGlmdCBiYWNrIHRv
IGxvY2FsIHRpbWUgdG8gZGV0ZXJtaW5lIERTVCB0aHVzIHRoZSArIGdldFVUQ09mZnNldCgpCi0g
ICAgZG91YmxlIG9mZnNldFRpbWUgPSAobG9jYWxUaW1lU2Vjb25kcyAqIG1zUGVyU2Vjb25kKSAr
IGdldFVUQ09mZnNldCgpOworICAgIGRvdWJsZSBvZmZzZXRUaW1lID0gKGxvY2FsVGltZVNlY29u
ZHMgKiBtc1BlclNlY29uZCkgKyB1dGNPZmZzZXQ7CiAKICAgICAvLyBPZmZzZXQgZnJvbSBVVEMg
YnV0IGRvZXNuJ3QgaW5jbHVkZSBEU1Qgb2J2aW91c2x5CiAgICAgaW50IG9mZnNldEhvdXIgPSAg
bXNUb0hvdXJzKG9mZnNldFRpbWUpOwpAQCAtNDM5LDE0ICs0MzQsMTQgQEAgc3RhdGljIGRvdWJs
ZSBnZXREU1RPZmZzZXRTaW1wbGUoZG91YmxlIGxvY2FsVGltZVNlY29uZHMpCiAKICAgICBkb3Vi
bGUgZGlmZiA9ICgobG9jYWxUTS50bV9ob3VyIC0gb2Zmc2V0SG91cikgKiBzZWNvbmRzUGVySG91
cikgKyAoKGxvY2FsVE0udG1fbWluIC0gb2Zmc2V0TWludXRlKSAqIDYwKTsKIAotICAgIGlmKGRp
ZmYgPCAwKQorICAgIGlmIChkaWZmIDwgMCkKICAgICAgICAgZGlmZiArPSBzZWNvbmRzUGVyRGF5
OwogCiAgICAgcmV0dXJuIChkaWZmICogbXNQZXJTZWNvbmQpOwogfQogCiAvLyBHZXQgdGhlIERT
VCBvZmZzZXQsIGdpdmVuIGEgdGltZSBpbiBVVEMKLXN0YXRpYyBkb3VibGUgZ2V0RFNUT2Zmc2V0
KGRvdWJsZSBtcykKK3N0YXRpYyBkb3VibGUgZ2V0RFNUT2Zmc2V0KGRvdWJsZSBtcywgZG91Ymxl
IHV0Y09mZnNldCkKIHsKICAgICAvLyBPbiBNYWMgT1MgWCwgdGhlIGNhbGwgdG8gbG9jYWx0aW1l
IChzZWUgZ2V0RFNUT2Zmc2V0U2ltcGxlKSB3aWxsIHJldHVybiBoaXN0b3JpY2FsbHkgYWNjdXJh
dGUKICAgICAvLyBEU1QgaW5mb3JtYXRpb24gKGUuZy4gTmV3IFplYWxhbmQgZGlkIG5vdCBoYXZl
IERTVCBmcm9tIDE5NDYgdG8gMTk3NCkgaG93ZXZlciB0aGUgSmF2YVNjcmlwdApAQCAtNDU0LDEz
ICs0NDksMTcgQEAgc3RhdGljIGRvdWJsZSBnZXREU1RPZmZzZXQoZG91YmxlIG1zKQogICAgIC8v
IGRldGVybWluaW5nIERTVC4gRm9yIHRoaXMgcmVhc29uIHdlIHNoaWZ0IGF3YXkgZnJvbSB5ZWFy
cyB0aGF0IGxvY2FsdGltZSBjYW4gaGFuZGxlIGJ1dCB3b3VsZAogICAgIC8vIHJldHVybiBoaXN0
b3JpY2FsbHkgYWNjdXJhdGUgaW5mb3JtYXRpb24uCiAgICAgaW50IHllYXIgPSBtc1RvWWVhciht
cyk7Ci0gICAgaW50IGVxdXZhbGVudFllYXIgPSBlcXVpdmFsZW50WWVhckZvckRTVCh5ZWFyKTsK
LSAgICBpZiAoeWVhciAhPSBlcXV2YWxlbnRZZWFyKSB7Ci0gICAgICAgIGludCBkYXkgPSBkYXRl
VG9EYXlJblllYXIoZXF1dmFsZW50WWVhciwgbXNUb01vbnRoKG1zKSwgbXNUb0RheUluTW9udGgo
bXMpKTsKKyAgICBpbnQgZXF1aXZhbGVudFllYXIgPSBlcXVpdmFsZW50WWVhckZvckRTVCh5ZWFy
KTsKKyAgICBpZiAoeWVhciAhPSBlcXVpdmFsZW50WWVhcikgeworICAgICAgICBib29sIGxlYXBZ
ZWFyID0gaXNMZWFwWWVhcih5ZWFyKTsKKyAgICAgICAgaW50IGRheUluWWVhckxvY2FsID0gZGF5
SW5ZZWFyKG1zLCB5ZWFyKTsKKyAgICAgICAgaW50IGRheUluTW9udGggPSBkYXlJbk1vbnRoRnJv
bURheUluWWVhcihkYXlJblllYXJMb2NhbCwgbGVhcFllYXIpOworICAgICAgICBpbnQgbW9udGgg
PSBtb250aEZyb21EYXlJblllYXIoZGF5SW5ZZWFyTG9jYWwsIGxlYXBZZWFyKTsKKyAgICAgICAg
aW50IGRheSA9IGRhdGVUb0RheUluWWVhcihlcXVpdmFsZW50WWVhciwgbW9udGgsIGRheUluTW9u
dGgpOwogICAgICAgICBtcyA9IChkYXkgKiBtc1BlckRheSkgKyBtc1RvTWlsbGlzZWNvbmRzKG1z
KTsKICAgICB9CiAKLSAgICByZXR1cm4gZ2V0RFNUT2Zmc2V0U2ltcGxlKG1zIC8gbXNQZXJTZWNv
bmQpOworICAgIHJldHVybiBnZXREU1RPZmZzZXRTaW1wbGUobXMgLyBtc1BlclNlY29uZCwgdXRj
T2Zmc2V0KTsKIH0KIAogZG91YmxlIGdyZWdvcmlhbkRhdGVUaW1lVG9NUyhjb25zdCBHcmVnb3Jp
YW5EYXRlVGltZSYgdCwgZG91YmxlIG1pbGxpU2Vjb25kcywgYm9vbCBpbnB1dElzVVRDKQpAQCAt
NDcwLDggKzQ2OSw5IEBAIGRvdWJsZSBncmVnb3JpYW5EYXRlVGltZVRvTVMoY29uc3QgR3JlZ29y
aWFuRGF0ZVRpbWUmIHQsIGRvdWJsZSBtaWxsaVNlY29uZHMsIGJvCiAgICAgZG91YmxlIHJlc3Vs
dCA9IChkYXkgKiBtc1BlckRheSkgKyBtczsKIAogICAgIGlmICghaW5wdXRJc1VUQykgeyAvLyBj
b252ZXJ0IHRvIFVUQwotICAgICAgICByZXN1bHQgLT0gZ2V0VVRDT2Zmc2V0KCk7ICAgICAgIAot
ICAgICAgICByZXN1bHQgLT0gZ2V0RFNUT2Zmc2V0KHJlc3VsdCk7CisgICAgICAgIGRvdWJsZSB1
dGNPZmZzZXQgPSBnZXRVVENPZmZzZXQoKTsKKyAgICAgICAgcmVzdWx0IC09IHV0Y09mZnNldDsK
KyAgICAgICAgcmVzdWx0IC09IGdldERTVE9mZnNldChyZXN1bHQsIHV0Y09mZnNldCk7CiAgICAg
fQogCiAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTQ4MSwyMyArNDgxLDI1IEBAIHZvaWQgbXNUb0dy
ZWdvcmlhbkRhdGVUaW1lKGRvdWJsZSBtcywgYm9vbCBvdXRwdXRJc1VUQywgR3JlZ29yaWFuRGF0
ZVRpbWUmIHRtKQogewogICAgIC8vIGlucHV0IGlzIFVUQwogICAgIGRvdWJsZSBkc3RPZmYgPSAw
LjA7CisgICAgY29uc3QgZG91YmxlIHV0Y09mZiA9IGdldFVUQ09mZnNldCgpOwogICAgIAogICAg
IGlmICghb3V0cHV0SXNVVEMpIHsgIC8vIGNvbnZlcnQgdG8gbG9jYWwgdGltZQotICAgICAgICBk
c3RPZmYgPSBnZXREU1RPZmZzZXQobXMpOwotICAgICAgICBtcyArPSBkc3RPZmYgKyBnZXRVVENP
ZmZzZXQoKTsKKyAgICAgICAgZHN0T2ZmID0gZ2V0RFNUT2Zmc2V0KG1zLCB1dGNPZmYpOworICAg
ICAgICBtcyArPSBkc3RPZmYgKyB1dGNPZmY7CiAgICAgfQogCisgICAgY29uc3QgaW50IHllYXIg
PSBtc1RvWWVhcihtcyk7CiAgICAgdG0uc2Vjb25kICAgPSAgbXNUb1NlY29uZHMobXMpOwogICAg
IHRtLm1pbnV0ZSAgID0gIG1zVG9NaW51dGVzKG1zKTsKICAgICB0bS5ob3VyICAgICA9ICBtc1Rv
SG91cnMobXMpOwogICAgIHRtLndlZWtEYXkgID0gIG1zVG9XZWVrRGF5KG1zKTsKLSAgICB0bS5t
b250aERheSA9ICBtc1RvRGF5SW5Nb250aChtcyk7Ci0gICAgdG0ueWVhckRheSAgPSAgZGF5SW5Z
ZWFyKG1zLCBtc1RvWWVhcihtcykpOwotICAgIHRtLm1vbnRoICAgID0gIG1zVG9Nb250aChtcyk7
Ci0gICAgdG0ueWVhciAgICAgPSAgbXNUb1llYXIobXMpIC0gMTkwMDsKKyAgICB0bS55ZWFyRGF5
ICA9ICBkYXlJblllYXIobXMsIHllYXIpOworICAgIHRtLm1vbnRoRGF5ID0gIGRheUluTW9udGhG
cm9tRGF5SW5ZZWFyKHRtLnllYXJEYXksIGlzTGVhcFllYXIoeWVhcikpOworICAgIHRtLm1vbnRo
ICAgID0gIG1vbnRoRnJvbURheUluWWVhcih0bS55ZWFyRGF5LCBpc0xlYXBZZWFyKHllYXIpKTsK
KyAgICB0bS55ZWFyICAgICA9ICB5ZWFyIC0gMTkwMDsKICAgICB0bS5pc0RTVCAgICA9ICBkc3RP
ZmYgIT0gMC4wOwogCi0gICAgdG0udXRjT2Zmc2V0ID0gc3RhdGljX2Nhc3Q8bG9uZz4oKGRzdE9m
ZiArIGdldFVUQ09mZnNldCgpKSAvIG1zUGVyU2Vjb25kKTsKKyAgICB0bS51dGNPZmZzZXQgPSBz
dGF0aWNfY2FzdDxsb25nPigoZHN0T2ZmICsgdXRjT2ZmKSAvIG1zUGVyU2Vjb25kKTsKICAgICB0
bS50aW1lWm9uZSA9IE5VTEw7CiB9CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>