<?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>57868</bug_id>
          
          <creation_ts>2011-04-05 11:32:24 -0700</creation_ts>
          <short_desc>REGRESSION (WebKit2): CSS animations on pages that use accelerated compositing stop after switching tabs</short_desc>
          <delta_ts>2011-04-20 14:21:01 -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>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Windows 7</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://www.webkit.org/blog-files/3d-transforms/poster-circle.html</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar, PlatformOnly</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Roben (:aroben)">aroben</reporter>
          <assigned_to name="Chris Marrin">cmarrin</assigned_to>
          <cc>andersca</cc>
    
    <cc>ap</cc>
    
    <cc>cmarrin</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>379768</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-04-05 11:32:24 -0700</bug_when>
    <thetext>To reproduce:

1. Go to http://www.webkit.org/blog-files/3d-transforms/poster-circle.html
2. Open a new tab
3. Switch back to the first tab

The page isn&apos;t animating anymore. Reloading the page fixes the problem.

This did not happen with WebKit1.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379769</commentid>
    <comment_count>1</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-04-05 11:32:51 -0700</bug_when>
    <thetext>&lt;rdar://problem/9236832&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>389352</commentid>
    <comment_count>2</comment_count>
      <attachid>90364</attachid>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2011-04-20 11:03:48 -0700</bug_when>
    <thetext>Created attachment 90364
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>389362</commentid>
    <comment_count>3</comment_count>
      <attachid>90364</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-04-20 11:13:58 -0700</bug_when>
    <thetext>Comment on attachment 90364
Patch

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

&gt; Source/WebCore/platform/graphics/ca/win/PlatformCALayerWin.cpp:46
&gt; +static CFTimeInterval currentTimeToMediaTime(double t)
&gt; +{
&gt; +    return CACurrentMediaTime() + t - WTF::currentTime();
&gt; +}

This is already in GraphicsLayerCA. Shame to copy it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>389366</commentid>
    <comment_count>4</comment_count>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2011-04-20 11:15:23 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 90364 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=90364&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/ca/win/PlatformCALayerWin.cpp:46
&gt; &gt; +static CFTimeInterval currentTimeToMediaTime(double t)
&gt; &gt; +{
&gt; &gt; +    return CACurrentMediaTime() + t - WTF::currentTime();
&gt; &gt; +}
&gt; 
&gt; This is already in GraphicsLayerCA. Shame to copy it.

I&apos;ll reuse it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>389374</commentid>
    <comment_count>5</comment_count>
      <attachid>90364</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-04-20 11:25:02 -0700</bug_when>
    <thetext>Comment on attachment 90364
Patch

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

&gt; Source/WebCore/platform/graphics/ca/mac/PlatformCALayerMac.mm:248
&gt; +void PlatformCALayer::animationStarted(CFTimeInterval beginTime)
&gt; +{
&gt; +    if (m_owner)
&gt; +        m_owner-&gt;platformCALayerAnimationStarted(beginTime);
&gt; +}
&gt; +
&gt; +void PlatformCALayer::ensureAnimationsSubmitted()
&gt; +{
&gt; +}
&gt; +

Why are these needed? Are these functions ever called on Mac?

&gt; Source/WebCore/platform/graphics/ca/PlatformCAAnimation.h:145
&gt; +    void setActualStartTimeIfNeeded(CFTimeInterval t)
&gt; +    {
&gt; +        if (beginTime() &lt;= 0)
&gt; +            setBeginTime(t);
&gt; +    }

Shouldn&apos;t we be comparing beginTime() to the current CA media time, rather than 0?

&gt; Source/WebKit2/WebProcess/WebPage/ca/win/LayerTreeHostCAWin.h:51
&gt; +protected:
&gt; +    // LayerTreeHostCA
&gt; +    virtual void setRootCompositingLayer(WebCore::GraphicsLayer*);

This can (and should) be private, even though it&apos;s protected at the LayerTreeHostCA level. We don&apos;t expect anyone to call this function on a variable with static type LayerTreeHostCAWin*.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>389378</commentid>
    <comment_count>6</comment_count>
      <attachid>90364</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-04-20 11:26:12 -0700</bug_when>
    <thetext>Comment on attachment 90364
Patch

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

&gt; Source/WebKit2/WebProcess/WebPage/ca/win/LayerTreeHostCAWin.cpp:304
&gt; +        GraphicsLayerCA* graphicsLayerCA = static_cast&lt;GraphicsLayerCA*&gt;(graphicsLayer);
&gt; +        PlatformCALayer* platformCALayer = graphicsLayerCA-&gt;platformCALayer();
&gt; +        platformCALayer-&gt;ensureAnimationsSubmitted();

You could get away without the locals here, I think.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>389390</commentid>
    <comment_count>7</comment_count>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2011-04-20 11:43:29 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 90364 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=90364&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/ca/mac/PlatformCALayerMac.mm:248
&gt; &gt; +void PlatformCALayer::animationStarted(CFTimeInterval beginTime)
&gt; &gt; +{
&gt; &gt; +    if (m_owner)
&gt; &gt; +        m_owner-&gt;platformCALayerAnimationStarted(beginTime);
&gt; &gt; +}
&gt; &gt; +
&gt; &gt; +void PlatformCALayer::ensureAnimationsSubmitted()
&gt; &gt; +{
&gt; &gt; +}
&gt; &gt; +
&gt; 
&gt; Why are these needed? Are these functions ever called on Mac?

I will toss them

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/ca/PlatformCAAnimation.h:145
&gt; &gt; +    void setActualStartTimeIfNeeded(CFTimeInterval t)
&gt; &gt; +    {
&gt; &gt; +        if (beginTime() &lt;= 0)
&gt; &gt; +            setBeginTime(t);
&gt; &gt; +    }
&gt; 
&gt; Shouldn&apos;t we be comparing beginTime() to the current CA media time, rather than 0?

All animations either have a beginTime of 0, meaning they should start ASAP, or non-zero, meaning we want them to start at that actual time. So I only want to replace the ones with the &quot;special&quot; value of 0. The &lt;= is just to be safe.

&gt; 
&gt; &gt; Source/WebKit2/WebProcess/WebPage/ca/win/LayerTreeHostCAWin.h:51
&gt; &gt; +protected:
&gt; &gt; +    // LayerTreeHostCA
&gt; &gt; +    virtual void setRootCompositingLayer(WebCore::GraphicsLayer*);
&gt; 
&gt; This can (and should) be private, even though it&apos;s protected at the LayerTreeHostCA level. We don&apos;t expect anyone to call this function on a variable with static type LayerTreeHostCAWin*.

Ok, I thought it would be better to match the parent. But I&apos;ll make it private</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>389434</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-04-20 12:33:42 -0700</bug_when>
    <thetext>Attachment 90364 did not build on mac:
Build output: http://queues.webkit.org/results/8487088</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>389465</commentid>
    <comment_count>9</comment_count>
      <attachid>90395</attachid>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2011-04-20 13:21:11 -0700</bug_when>
    <thetext>Created attachment 90395
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>389468</commentid>
    <comment_count>10</comment_count>
      <attachid>90395</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-04-20 13:23:23 -0700</bug_when>
    <thetext>Comment on attachment 90395
Patch

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

&gt; Source/WebKit2/WebProcess/WebPage/ca/win/LayerTreeHostCAWin.cpp:303
&gt; +    if (graphicsLayer) {
&gt; +        static_cast&lt;GraphicsLayerCA*&gt;(graphicsLayer)-&gt;platformCALayer()-&gt;ensureAnimationsSubmitted();
&gt; +    }

No need for braces here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>389470</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-04-20 13:23:54 -0700</bug_when>
    <thetext>Attachment 90395 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1

Source/WebKit2/WebProcess/WebPage/ca/win/LayerTreeHostCAWin.cpp:303:  One line control clauses should not use braces.  [whitespace/braces] [4]
Total errors found: 1 in 10 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>389517</commentid>
    <comment_count>12</comment_count>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2011-04-20 14:21:01 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/84416</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>90364</attachid>
            <date>2011-04-20 11:03:48 -0700</date>
            <delta_ts>2011-04-20 13:21:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>57868.patch</filename>
            <type>text/plain</type>
            <size>9240</size>
            <attacher name="Chris Marrin">cmarrin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg0Mzg5KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTEtMDQtMjAgIENocmlzIE1h
cnJpbiAgPGNtYXJyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFJFR1JFU1NJT04gKFdlYktpdDIpOiBDU1MgYW5pbWF0aW9ucyBv
biBwYWdlcyB0aGF0IHVzZSBhY2NlbGVyYXRlZCBjb21wb3NpdGluZyBzdG9wIGFmdGVyIHN3aXRj
aGluZyB0YWJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD01Nzg2OAorICAgICAgICAKKyAgICAgICAgUnVubmluZyBDQUNGQW5pbWF0aW9ucyBhcmVuJ3Qg
cmVtZW1iZXJlZCB3aGVuIGxheWVyIHRyZWUgaXMgdW5wYXJlbnRlZCBhbmQgCisgICAgICAgIHRo
ZW4gcmVwYXJlbnRlZC4gQWRkZWQgYSBuZXcgZW5zdXJlQW5pbWF0aW9uc1N1Ym1pdHRlZCBmdW5j
dGlvbiB0byAKKyAgICAgICAgUGxhdGZvcm1DQUxheWVyIHRvIHRyYXZlcnNlIHRoZSB0cmVlIGFu
ZCByZXN1Ym1pdCBhbmltYXRpb25zLCBzZXR0aW5nIHRoZSAKKyAgICAgICAgYmVnaW5UaW1lIHRv
IHRoZSBvcmlnaW5hbCBzdGFydCB0aW1lIG9mIHRoZSBhbmltYXRpb24uIFRoaXMgaXMgY2FsbGVk
IGluIFdLMgorICAgICAgICB3aGVuIGxheWVyIHRyZWUgaXMgbmV3bHkgcGFyZW50ZWQuCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBQW5pbWF0aW9uLmg6CisgICAg
ICAgICAgICBSZW1lbWJlciBhY3R1YWwgYW5pbWF0aW9uIHN0YXJ0IHRpbWUgaW4gQ0FDRkFuaW1h
dGlvbiBiZWdpblRpbWUgcHJvcGVydHkKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9Q
bGF0Zm9ybUNBTGF5ZXIuaDoKKyAgICAgICAgICAgIE5ldyBlbnN1cmVBbmltYXRpb25zU3VibWl0
dGVkIGZ1bmN0aW9uIHdoaWNoIHRyYXZlcnNlcyBsYXllcnMgYW5kIHJlc3VibWl0cyBhbGwgYW5p
bWF0aW9ucworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9QbGF0Zm9ybUNBTGF5
ZXJNYWMubW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FM
YXllcldpbi5jcHA6CisKIDIwMTEtMDQtMjAgIFZzZXZvbG9kIFZsYXNvdiAgPHZzZXZpa0BjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgUGF2ZWwgRmVsZG1hbi4KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9QbGF0Zm9ybUNBTGF5ZXJNYWMu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFj
L1BsYXRmb3JtQ0FMYXllck1hYy5tbQkocmV2aXNpb24gODM3NjMpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvUGxhdGZvcm1DQUxheWVyTWFjLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0yMzYsNiArMjM2LDE2IEBACiAgICAgcmV0dXJuIG1fbGF5ZXIuZ2V0KCk7CiB9
CiAKK3ZvaWQgUGxhdGZvcm1DQUxheWVyOjphbmltYXRpb25TdGFydGVkKENGVGltZUludGVydmFs
IGJlZ2luVGltZSkKK3sKKyAgICBpZiAobV9vd25lcikKKyAgICAgICAgbV9vd25lci0+cGxhdGZv
cm1DQUxheWVyQW5pbWF0aW9uU3RhcnRlZChiZWdpblRpbWUpOworfQorCit2b2lkIFBsYXRmb3Jt
Q0FMYXllcjo6ZW5zdXJlQW5pbWF0aW9uc1N1Ym1pdHRlZCgpCit7Cit9CisKIHZvaWQgUGxhdGZv
cm1DQUxheWVyOjpzZXROZWVkc0Rpc3BsYXkoY29uc3QgRmxvYXRSZWN0KiBkaXJ0eVJlY3QpCiB7
CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuaAkocmV2aXNp
b24gODM3NjMpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9y
bUNBTGF5ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNzQsMTEgKzc0LDggQEAKICAgICBQbGF0Zm9y
bUNBTGF5ZXJDbGllbnQqIG93bmVyKCkgY29uc3QgeyByZXR1cm4gbV9vd25lcjsgfQogICAgIHZv
aWQgc2V0T3duZXIoUGxhdGZvcm1DQUxheWVyQ2xpZW50Kik7CiAKLSAgICB2b2lkIGFuaW1hdGlv
blN0YXJ0ZWQoQ0ZUaW1lSW50ZXJ2YWwgYmVnaW5UaW1lKQotICAgIHsKLSAgICAgICAgaWYgKG1f
b3duZXIpCi0gICAgICAgICAgICBtX293bmVyLT5wbGF0Zm9ybUNBTGF5ZXJBbmltYXRpb25TdGFy
dGVkKGJlZ2luVGltZSk7Ci0gICAgfQorICAgIHZvaWQgYW5pbWF0aW9uU3RhcnRlZChDRlRpbWVJ
bnRlcnZhbCBiZWdpblRpbWUpOworICAgIHZvaWQgZW5zdXJlQW5pbWF0aW9uc1N1Ym1pdHRlZCgp
OwogCiAgICAgLy8gTGF5b3V0IHN1cHBvcnQKICAgICB2b2lkIHNldE5lZWRzTGF5b3V0KCk7CkBA
IC0xODYsNiArMTgzLDggQEAKICAgICBmbG9hdCBjb250ZW50c1NjYWxlKCkgY29uc3Q7CiAgICAg
dm9pZCBzZXRDb250ZW50c1NjYWxlKGZsb2F0KTsKIAorICAgIEhhc2hNYXA8U3RyaW5nLCBSZWZQ
dHI8UGxhdGZvcm1DQUFuaW1hdGlvbj4gPiYgYW5pbWF0aW9ucygpIHsgcmV0dXJuIG1fYW5pbWF0
aW9uczsgfQorCiAjaWYgUExBVEZPUk0oV0lOKSAmJiAhZGVmaW5lZChOREVCVUcpCiAgICAgdm9p
ZCBwcmludFRyZWUoKSBjb25zdDsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldp
bi5jcHAJKHJldmlzaW9uIDgzNzYzKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwLDYg
KzQwLDExIEBACiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCitzdGF0aWMgQ0ZUaW1lSW50
ZXJ2YWwgY3VycmVudFRpbWVUb01lZGlhVGltZShkb3VibGUgdCkKK3sKKyAgICByZXR1cm4gQ0FD
dXJyZW50TWVkaWFUaW1lKCkgKyB0IC0gV1RGOjpjdXJyZW50VGltZSgpOworfQorCiBib29sIFBs
YXRmb3JtQ0FMYXllcjo6aXNWYWx1ZUZ1bmN0aW9uU3VwcG9ydGVkKCkKIHsKICAgICByZXR1cm4g
dHJ1ZTsKQEAgLTE2MCw2ICsxNjUsMzggQEAKICAgICByZXR1cm4gaG9zdCA/IGhvc3QtPnJvb3RM
YXllcigpIDogMDsKIH0KIAordm9pZCBQbGF0Zm9ybUNBTGF5ZXI6OmFuaW1hdGlvblN0YXJ0ZWQo
Q0ZUaW1lSW50ZXJ2YWwgYmVnaW5UaW1lKQoreworICAgIC8vIFVwZGF0ZSBzdGFydCB0aW1lIGZv
ciBhbnkgYW5pbWF0aW9uIG5vdCB5ZXQgc3RhcnRlZAorICAgIENGVGltZUludGVydmFsIGNhY2ZC
ZWdpblRpbWUgPSBjdXJyZW50VGltZVRvTWVkaWFUaW1lKGJlZ2luVGltZSk7CisKKyAgICBIYXNo
TWFwPFN0cmluZywgUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+ID46OmNvbnN0X2l0ZXJhdG9y
IGVuZCA9IG1fYW5pbWF0aW9ucy5lbmQoKTsKKyAgICBmb3IgKEhhc2hNYXA8U3RyaW5nLCBSZWZQ
dHI8UGxhdGZvcm1DQUFuaW1hdGlvbj4gPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX2FuaW1hdGlv
bnMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQorICAgICAgICBpdC0+c2Vjb25kLT5zZXRBY3R1
YWxTdGFydFRpbWVJZk5lZWRlZChjYWNmQmVnaW5UaW1lKTsKKworICAgIGlmIChtX293bmVyKQor
ICAgICAgICBtX293bmVyLT5wbGF0Zm9ybUNBTGF5ZXJBbmltYXRpb25TdGFydGVkKGJlZ2luVGlt
ZSk7Cit9CisKK3N0YXRpYyB2b2lkIHJlc3VibWl0QWxsQW5pbWF0aW9ucyhQbGF0Zm9ybUNBTGF5
ZXIqIGxheWVyKQoreworICAgIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8UGxhdGZvcm1DQUFuaW1h
dGlvbj4gPjo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbGF5ZXItPmFuaW1hdGlvbnMoKS5lbmQoKTsK
KyAgICBmb3IgKEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8UGxhdGZvcm1DQUFuaW1hdGlvbj4gPjo6
Y29uc3RfaXRlcmF0b3IgaXQgPSBsYXllci0+YW5pbWF0aW9ucygpLmJlZ2luKCk7IGl0ICE9IGVu
ZDsgKytpdCkgeworICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHMoQWRvcHRDRiwgaXQt
PmZpcnN0LmNyZWF0ZUNGU3RyaW5nKCkpOworICAgICAgICBDQUNGTGF5ZXJBZGRBbmltYXRpb24o
bGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSwgcy5nZXQoKSwgaXQtPnNlY29uZC0+cGxhdGZvcm1Bbmlt
YXRpb24oKSk7CisgICAgfQorfQorCit2b2lkIFBsYXRmb3JtQ0FMYXllcjo6ZW5zdXJlQW5pbWF0
aW9uc1N1Ym1pdHRlZCgpCit7CisgICAgcmVzdWJtaXRBbGxBbmltYXRpb25zKHRoaXMpOworCisg
ICAgUGxhdGZvcm1DQUxheWVyTGlzdCBjaGlsZHJlbjsKKyAgICBpbnRlcm4odGhpcyktPmdldFN1
YmxheWVycyhjaGlsZHJlbik7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjaGlsZHJlbi5z
aXplKCk7ICsraSkKKyAgICAgICAgY2hpbGRyZW5baV0tPmVuc3VyZUFuaW1hdGlvbnNTdWJtaXR0
ZWQoKTsKK30KKwogdm9pZCBQbGF0Zm9ybUNBTGF5ZXI6OnNldE5lZWRzRGlzcGxheShjb25zdCBG
bG9hdFJlY3QqIGRpcnR5UmVjdCkKIHsKICAgICBpbnRlcm4odGhpcyktPnNldE5lZWRzRGlzcGxh
eShkaXJ0eVJlY3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
UGxhdGZvcm1DQUFuaW1hdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FBbmltYXRpb24uaAkocmV2aXNpb24gODM3NjMpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBQW5pbWF0aW9u
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEzNyw2ICsxMzcsMTIgQEAKIHByb3RlY3RlZDoKICAgICBQ
bGF0Zm9ybUNBQW5pbWF0aW9uKEFuaW1hdGlvblR5cGUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCk7
CiAgICAgUGxhdGZvcm1DQUFuaW1hdGlvbihQbGF0Zm9ybUFuaW1hdGlvblJlZik7CisKKyAgICB2
b2lkIHNldEFjdHVhbFN0YXJ0VGltZUlmTmVlZGVkKENGVGltZUludGVydmFsIHQpCisgICAgewor
ICAgICAgICBpZiAoYmVnaW5UaW1lKCkgPD0gMCkKKyAgICAgICAgICAgIHNldEJlZ2luVGltZSh0
KTsKKyAgICB9CiAgICAgCiBwcml2YXRlOgogICAgIEFuaW1hdGlvblR5cGUgbV90eXBlOwpJbmRl
eDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZwkocmV2aXNpb24gODQzODkpCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOSBAQAorMjAxMS0wNC0yMCAgQ2hyaXMgTWFycmlu
ICA8Y21hcnJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgUkVHUkVTU0lPTiAoV2ViS2l0Mik6IENTUyBhbmltYXRpb25zIG9uIHBh
Z2VzIHRoYXQgdXNlIGFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nIHN0b3AgYWZ0ZXIgc3dpdGNoaW5n
IHRhYnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU3
ODY4CisgICAgICAgIAorICAgICAgICBDYWxsIGVuc3VyZUFuaW1hdGlvbnNTdWJtaXR0ZWQKKwor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9jYS9MYXllclRyZWVIb3N0Q0EuaDoKKyAgICAg
ICAgICAgIE1ha2Ugc2V0Um9vdENvbXBvc2l0aW5nTGF5ZXIgcHJvdGVjdGVkIHNvIGl0IGNhbiBi
ZSBjYWxsZWQgZnJvbSBzdWJjbGFzcworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9jYS93
aW4vTGF5ZXJUcmVlSG9zdENBV2luLmNwcDoKKyAgICAgICAgICAgIE92ZXJyaWRlIHNldFJvb3RD
b21wb3NpdGluZ0xheWVyIHRvIGFkZCBjYWxsIHRvIHJvb3QgbGF5ZXIncworICAgICAgICAgICAg
UGxhdGZvcm1DQUxheWVyOjplbnN1cmVBbmltYXRpb25zU3VibWl0dGVkIG1ldGhvZAorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9jYS93aW4vTGF5ZXJUcmVlSG9zdENBV2luLmg6CisKIDIw
MTEtMDQtMjAgIEFsZWphbmRybyBHLiBDYXN0cm8gIDxhbGV4QGlnYWxpYS5jb20+CiAKICAgICAg
ICAgRml4ZWQgR1RLKyBjb21waWxhdGlvbiBhZnRlciByODQyMDYuCkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvY2EvTGF5ZXJUcmVlSG9zdENBLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2NhL0xheWVyVHJlZUhvc3RDQS5o
CShyZXZpc2lvbiA4Mzc2MykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9j
YS9MYXllclRyZWVIb3N0Q0EuaAkod29ya2luZyBjb3B5KQpAQCAtNDksNiArNDksNyBAQAogICAg
IHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlKCk7CiAgICAgdmlydHVhbCB2b2lkIHNpemVEaWRDaGFu
Z2UoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgbmV3U2l6ZSk7CiAgICAgdmlydHVhbCB2b2lkIGZv
cmNlUmVwYWludCgpOworICAgIHZpcnR1YWwgdm9pZCBzZXRSb290Q29tcG9zaXRpbmdMYXllcihX
ZWJDb3JlOjpHcmFwaGljc0xheWVyKik7CiAKICAgICAvLyBMYXllclRyZWVIb3N0Q0EKICAgICB2
aXJ0dWFsIHZvaWQgZGlkUGVyZm9ybVNjaGVkdWxlZExheWVyRmx1c2goKTsKQEAgLTU3LDcgKzU4
LDYgQEAKICAgICAvLyBMYXllclRyZWVIb3N0LgogICAgIHZpcnR1YWwgY29uc3QgTGF5ZXJUcmVl
Q29udGV4dCYgbGF5ZXJUcmVlQ29udGV4dCgpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRTaG91bGRO
b3RpZnlBZnRlck5leHRTY2hlZHVsZWRMYXllckZsdXNoKGJvb2wpOwotICAgIHZpcnR1YWwgdm9p
ZCBzZXRSb290Q29tcG9zaXRpbmdMYXllcihXZWJDb3JlOjpHcmFwaGljc0xheWVyKik7CiAKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0Tm9uQ29tcG9zaXRlZENvbnRlbnRzTmVlZERpc3BsYXkoY29uc3Qg
V2ViQ29yZTo6SW50UmVjdCYpOwogICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxOb25Db21wb3NpdGVk
Q29udGVudHMoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc2Nyb2xsUmVjdCwgY29uc3QgV2ViQ29y
ZTo6SW50U2l6ZSYgc2Nyb2xsT2Zmc2V0KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9jYS93aW4vTGF5ZXJUcmVlSG9zdENBV2luLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2NhL3dpbi9MYXllclRyZWVIb3N0Q0FXaW4u
aAkocmV2aXNpb24gODM3NjMpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
Y2Evd2luL0xheWVyVHJlZUhvc3RDQVdpbi5oCSh3b3JraW5nIGNvcHkpCkBAIC00Niw2ICs0Niwx
MCBAQAogICAgIHN0YXRpYyBQYXNzUmVmUHRyPExheWVyVHJlZUhvc3RDQVdpbj4gY3JlYXRlKFdl
YlBhZ2UqKTsKICAgICB2aXJ0dWFsIH5MYXllclRyZWVIb3N0Q0FXaW4oKTsKIAorcHJvdGVjdGVk
OgorICAgIC8vIExheWVyVHJlZUhvc3RDQQorICAgIHZpcnR1YWwgdm9pZCBzZXRSb290Q29tcG9z
aXRpbmdMYXllcihXZWJDb3JlOjpHcmFwaGljc0xheWVyKik7CisKIHByaXZhdGU6CiAgICAgZXhw
bGljaXQgTGF5ZXJUcmVlSG9zdENBV2luKFdlYlBhZ2UqKTsKIApJbmRleDogU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2NhL3dpbi9MYXllclRyZWVIb3N0Q0FXaW4uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9jYS93aW4vTGF5ZXJU
cmVlSG9zdENBV2luLmNwcAkocmV2aXNpb24gODM3NjMpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvY2Evd2luL0xheWVyVHJlZUhvc3RDQVdpbi5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI5NCw2ICsyOTQsMTkgQEAKICAgICBtX2lzRmx1c2hpbmdMYXllckNoYW5nZXMgPSBm
YWxzZTsKIH0KIAordm9pZCBMYXllclRyZWVIb3N0Q0FXaW46OnNldFJvb3RDb21wb3NpdGluZ0xh
eWVyKEdyYXBoaWNzTGF5ZXIqIGdyYXBoaWNzTGF5ZXIpCit7ICAgIAorICAgIC8vIFJlc3VibWl0
IGFsbCBleGlzdGluZyBhbmltYXRpb25zLiBDQUNGIGRvZXMgbm90IHJlbWVtYmVyIHJ1bm5pbmcg
YW5pbWF0aW9ucworICAgIC8vIFdoZW4gdGhlIGxheWVyIHRyZWUgaXMgcmVtb3ZlZCBhbmQgdGhl
biBhZGRlZCBiYWNrIHRvIHRoZSBoaWVyYXJjaHkKKyAgICBpZiAoZ3JhcGhpY3NMYXllcikgewor
ICAgICAgICBHcmFwaGljc0xheWVyQ0EqIGdyYXBoaWNzTGF5ZXJDQSA9IHN0YXRpY19jYXN0PEdy
YXBoaWNzTGF5ZXJDQSo+KGdyYXBoaWNzTGF5ZXIpOworICAgICAgICBQbGF0Zm9ybUNBTGF5ZXIq
IHBsYXRmb3JtQ0FMYXllciA9IGdyYXBoaWNzTGF5ZXJDQS0+cGxhdGZvcm1DQUxheWVyKCk7Cisg
ICAgICAgIHBsYXRmb3JtQ0FMYXllci0+ZW5zdXJlQW5pbWF0aW9uc1N1Ym1pdHRlZCgpOworICAg
IH0KKworICAgIExheWVyVHJlZUhvc3RDQTo6c2V0Um9vdENvbXBvc2l0aW5nTGF5ZXIoZ3JhcGhp
Y3NMYXllcik7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gSEFWRShX
S1FDQSkK
</data>
<flag name="review"
          id="83110"
          type_id="1"
          status="-"
          setter="cmarrin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>90395</attachid>
            <date>2011-04-20 13:21:11 -0700</date>
            <delta_ts>2011-04-20 13:23:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>57868.patch</filename>
            <type>text/plain</type>
            <size>10912</size>
            <attacher name="Chris Marrin">cmarrin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg0Mzg5KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTEtMDQtMjAgIENocmlzIE1h
cnJpbiAgPGNtYXJyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFJFR1JFU1NJT04gKFdlYktpdDIpOiBDU1MgYW5pbWF0aW9ucyBv
biBwYWdlcyB0aGF0IHVzZSBhY2NlbGVyYXRlZCBjb21wb3NpdGluZyBzdG9wIGFmdGVyIHN3aXRj
aGluZyB0YWJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD01Nzg2OAorICAgICAgICAKKyAgICAgICAgUnVubmluZyBDQUNGQW5pbWF0aW9ucyBhcmVuJ3Qg
cmVtZW1iZXJlZCB3aGVuIGxheWVyIHRyZWUgaXMgdW5wYXJlbnRlZCBhbmQgCisgICAgICAgIHRo
ZW4gcmVwYXJlbnRlZC4gQWRkZWQgYSBuZXcgZW5zdXJlQW5pbWF0aW9uc1N1Ym1pdHRlZCBmdW5j
dGlvbiB0byAKKyAgICAgICAgUGxhdGZvcm1DQUxheWVyIHRvIHRyYXZlcnNlIHRoZSB0cmVlIGFu
ZCByZXN1Ym1pdCBhbmltYXRpb25zLCBzZXR0aW5nIHRoZSAKKyAgICAgICAgYmVnaW5UaW1lIHRv
IHRoZSBvcmlnaW5hbCBzdGFydCB0aW1lIG9mIHRoZSBhbmltYXRpb24uIFRoaXMgaXMgY2FsbGVk
IGluIFdLMgorICAgICAgICB3aGVuIGxheWVyIHRyZWUgaXMgbmV3bHkgcGFyZW50ZWQuCisgICAg
ICAgIAorICAgICAgICBJIGFsc28gY29uc29saWRhdGVkIGN1cnJlbnRUaW1lVG9NZWRpYVRpbWUg
aW50byBQbGF0Zm9ybUNBTGF5ZXIgc28gaXQgY2FuIGJlIHNoYXJlZAorICAgICAgICBiZXR3ZWVu
IFBsYXRmb3JtQ0FMYXllciBhbmQgR3JhcGhpY3NMYXllckNBLgorCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jYS9QbGF0Zm9ybUNBQW5pbWF0aW9uLmg6CisgICAgICAgICAgICBSZW1lbWJlciBh
Y3R1YWwgYW5pbWF0aW9uIHN0YXJ0IHRpbWUgaW4gQ0FDRkFuaW1hdGlvbiBiZWdpblRpbWUgcHJv
cGVydHkKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuaDoK
KyAgICAgICAgICAgIE5ldyBlbnN1cmVBbmltYXRpb25zU3VibWl0dGVkIGZ1bmN0aW9uIHdoaWNo
IHRyYXZlcnNlcyBsYXllcnMgYW5kIHJlc3VibWl0cyBhbGwgYW5pbWF0aW9ucworICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9QbGF0Zm9ybUNBTGF5ZXJNYWMubW06CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5jcHA6CisKIDIw
MTEtMDQtMjAgIFZzZXZvbG9kIFZsYXNvdiAgPHZzZXZpa0BjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgUGF2ZWwgRmVsZG1hbi4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL21hYy9QbGF0Zm9ybUNBTGF5ZXJNYWMubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1BsYXRmb3JtQ0FMYXllck1h
Yy5tbQkocmV2aXNpb24gODM3NjMpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYS9tYWMvUGxhdGZvcm1DQUxheWVyTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yMzYsNiAr
MjM2LDEyIEBACiAgICAgcmV0dXJuIG1fbGF5ZXIuZ2V0KCk7CiB9CiAKK3ZvaWQgUGxhdGZvcm1D
QUxheWVyOjphbmltYXRpb25TdGFydGVkKENGVGltZUludGVydmFsIGJlZ2luVGltZSkKK3sKKyAg
ICBpZiAobV9vd25lcikKKyAgICAgICAgbV9vd25lci0+cGxhdGZvcm1DQUxheWVyQW5pbWF0aW9u
U3RhcnRlZChiZWdpblRpbWUpOworfQorCiB2b2lkIFBsYXRmb3JtQ0FMYXllcjo6c2V0TmVlZHNE
aXNwbGF5KGNvbnN0IEZsb2F0UmVjdCogZGlydHlSZWN0KQogewogICAgIEJFR0lOX0JMT0NLX09C
SkNfRVhDRVBUSU9OUwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
R3JhcGhpY3NMYXllckNBLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCShyZXZpc2lvbiA4Mzc2MykKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTU4LDEzICs1OCw2IEBACiAvLyBvZiAyNTBtcy4gU28gc2VuZCBhIHZl
cnkgc21hbGwgdmFsdWUgaW5zdGVhZC4KIHN0YXRpYyBjb25zdCBmbG9hdCBjQW5pbWF0aW9uQWxt
b3N0WmVyb0R1cmF0aW9uID0gMWUtM2Y7CiAKLS8vIENBQ3VycmVudE1lZGlhVGltZSgpIGlzIGEg
dGltZSBzaW5jZSBib290LiBUaGVzZSBtZXRob2RzIGNvbnZlcnQgYmV0d2VlbiB0aGF0IGFuZAot
Ly8gV2ViQ29yZSB0aW1lLCB3aGljaCBpcyBzeXN0ZW0gdGltZSAoVVRDKS4KLXN0YXRpYyBDRlRp
bWVJbnRlcnZhbCBjdXJyZW50VGltZVRvTWVkaWFUaW1lKGRvdWJsZSB0KQotewotICAgIHJldHVy
biBDQUN1cnJlbnRNZWRpYVRpbWUoKSArIHQgLSBXVEY6OmN1cnJlbnRUaW1lKCk7Ci19Ci0KIHN0
YXRpYyBib29sIGlzVHJhbnNmb3JtVHlwZVRyYW5zZm9ybWF0aW9uTWF0cml4KFRyYW5zZm9ybU9w
ZXJhdGlvbjo6T3BlcmF0aW9uVHlwZSB0cmFuc2Zvcm1UeXBlKQogewogICAgIHN3aXRjaCAodHJh
bnNmb3JtVHlwZSkgewpAQCAtMTg4Niw3ICsxODc5LDcgQEAKIAogdm9pZCBHcmFwaGljc0xheWVy
Q0E6OnN1c3BlbmRBbmltYXRpb25zKGRvdWJsZSB0aW1lKQogewotICAgIGRvdWJsZSB0ID0gY3Vy
cmVudFRpbWVUb01lZGlhVGltZSh0aW1lID8gdGltZSA6IGN1cnJlbnRUaW1lKCkpOworICAgIGRv
dWJsZSB0ID0gUGxhdGZvcm1DQUxheWVyOjpjdXJyZW50VGltZVRvTWVkaWFUaW1lKHRpbWUgPyB0
aW1lIDogY3VycmVudFRpbWUoKSk7CiAgICAgcHJpbWFyeUxheWVyKCktPnNldFNwZWVkKDApOwog
ICAgIHByaW1hcnlMYXllcigpLT5zZXRUaW1lT2Zmc2V0KHQpOwogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuaAko
cmV2aXNpb24gODM3NjMpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9Q
bGF0Zm9ybUNBTGF5ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIsOCBAQAogI2luY2x1
ZGUgIlBsYXRmb3JtQ0FBbmltYXRpb24uaCIKICNpbmNsdWRlICJQbGF0Zm9ybUNBTGF5ZXJDbGll
bnQuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgPFF1YXJ0ekNvcmUv
Q0FCYXNlLmg+CisjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL0hh
c2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZD
b3VudGVkLmg+CkBAIC00Nyw2ICs0OSw4IEBACiAKIGNsYXNzIFBsYXRmb3JtQ0FMYXllciA6IHB1
YmxpYyBSZWZDb3VudGVkPFBsYXRmb3JtQ0FMYXllcj4gewogcHVibGljOgorICAgIHN0YXRpYyBD
RlRpbWVJbnRlcnZhbCBjdXJyZW50VGltZVRvTWVkaWFUaW1lKGRvdWJsZSB0KSB7IHJldHVybiBD
QUN1cnJlbnRNZWRpYVRpbWUoKSArIHQgLSBXVEY6OmN1cnJlbnRUaW1lKCk7IH0KKwogICAgIC8v
IExheWVyVHlwZVJvb3RMYXllciBpcyB1c2VkIG9uIHNvbWUgcGxhdGZvcm1zLiBJdCBoYXMgbm8g
YmFja2luZyBzdG9yZSwgc28gc2V0TmVlZHNEaXNwbGF5CiAgICAgLy8gc2hvdWxkIG5vdCBjYWxs
IENBQ0ZMYXllclNldE5lZWRzRGlzcGxheSwgYnV0IHJhdGhlciBqdXN0IG5vdGlmeSB0aGUgcmVu
ZGVyZXIgdGhhdCBpdAogICAgIC8vIGhhcyBjaGFuZ2VkIGFuZCBzaG91bGQgYmUgcmUtcmVuZGVy
ZWQuCkBAIC03NCwxMSArNzgsOCBAQAogICAgIFBsYXRmb3JtQ0FMYXllckNsaWVudCogb3duZXIo
KSBjb25zdCB7IHJldHVybiBtX293bmVyOyB9CiAgICAgdm9pZCBzZXRPd25lcihQbGF0Zm9ybUNB
TGF5ZXJDbGllbnQqKTsKIAotICAgIHZvaWQgYW5pbWF0aW9uU3RhcnRlZChDRlRpbWVJbnRlcnZh
bCBiZWdpblRpbWUpCi0gICAgewotICAgICAgICBpZiAobV9vd25lcikKLSAgICAgICAgICAgIG1f
b3duZXItPnBsYXRmb3JtQ0FMYXllckFuaW1hdGlvblN0YXJ0ZWQoYmVnaW5UaW1lKTsKLSAgICB9
CisgICAgdm9pZCBhbmltYXRpb25TdGFydGVkKENGVGltZUludGVydmFsIGJlZ2luVGltZSk7Cisg
ICAgdm9pZCBlbnN1cmVBbmltYXRpb25zU3VibWl0dGVkKCk7CiAKICAgICAvLyBMYXlvdXQgc3Vw
cG9ydAogICAgIHZvaWQgc2V0TmVlZHNMYXlvdXQoKTsKQEAgLTE4Niw2ICsxODcsMTAgQEAKICAg
ICBmbG9hdCBjb250ZW50c1NjYWxlKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRDb250ZW50c1NjYWxl
KGZsb2F0KTsKIAorI2lmIFBMQVRGT1JNKFdJTikKKyAgICBIYXNoTWFwPFN0cmluZywgUmVmUHRy
PFBsYXRmb3JtQ0FBbmltYXRpb24+ID4mIGFuaW1hdGlvbnMoKSB7IHJldHVybiBtX2FuaW1hdGlv
bnM7IH0KKyNlbmRpZgorCiAjaWYgUExBVEZPUk0oV0lOKSAmJiAhZGVmaW5lZChOREVCVUcpCiAg
ICAgdm9pZCBwcmludFRyZWUoKSBjb25zdDsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FM
YXllcldpbi5jcHAJKHJldmlzaW9uIDgzNzYzKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE2MCw2ICsxNjAsMzggQEAKICAgICByZXR1cm4gaG9zdCA/IGhvc3QtPnJvb3RMYXllcigpIDog
MDsKIH0KIAordm9pZCBQbGF0Zm9ybUNBTGF5ZXI6OmFuaW1hdGlvblN0YXJ0ZWQoQ0ZUaW1lSW50
ZXJ2YWwgYmVnaW5UaW1lKQoreworICAgIC8vIFVwZGF0ZSBzdGFydCB0aW1lIGZvciBhbnkgYW5p
bWF0aW9uIG5vdCB5ZXQgc3RhcnRlZAorICAgIENGVGltZUludGVydmFsIGNhY2ZCZWdpblRpbWUg
PSBjdXJyZW50VGltZVRvTWVkaWFUaW1lKGJlZ2luVGltZSk7CisKKyAgICBIYXNoTWFwPFN0cmlu
ZywgUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+ID46OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1f
YW5pbWF0aW9ucy5lbmQoKTsKKyAgICBmb3IgKEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8UGxhdGZv
cm1DQUFuaW1hdGlvbj4gPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX2FuaW1hdGlvbnMuYmVnaW4o
KTsgaXQgIT0gZW5kOyArK2l0KQorICAgICAgICBpdC0+c2Vjb25kLT5zZXRBY3R1YWxTdGFydFRp
bWVJZk5lZWRlZChjYWNmQmVnaW5UaW1lKTsKKworICAgIGlmIChtX293bmVyKQorICAgICAgICBt
X293bmVyLT5wbGF0Zm9ybUNBTGF5ZXJBbmltYXRpb25TdGFydGVkKGJlZ2luVGltZSk7Cit9CisK
K3N0YXRpYyB2b2lkIHJlc3VibWl0QWxsQW5pbWF0aW9ucyhQbGF0Zm9ybUNBTGF5ZXIqIGxheWVy
KQoreworICAgIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8UGxhdGZvcm1DQUFuaW1hdGlvbj4gPjo6
Y29uc3RfaXRlcmF0b3IgZW5kID0gbGF5ZXItPmFuaW1hdGlvbnMoKS5lbmQoKTsKKyAgICBmb3Ig
KEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8UGxhdGZvcm1DQUFuaW1hdGlvbj4gPjo6Y29uc3RfaXRl
cmF0b3IgaXQgPSBsYXllci0+YW5pbWF0aW9ucygpLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkg
eworICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHMoQWRvcHRDRiwgaXQtPmZpcnN0LmNy
ZWF0ZUNGU3RyaW5nKCkpOworICAgICAgICBDQUNGTGF5ZXJBZGRBbmltYXRpb24obGF5ZXItPnBs
YXRmb3JtTGF5ZXIoKSwgcy5nZXQoKSwgaXQtPnNlY29uZC0+cGxhdGZvcm1BbmltYXRpb24oKSk7
CisgICAgfQorfQorCit2b2lkIFBsYXRmb3JtQ0FMYXllcjo6ZW5zdXJlQW5pbWF0aW9uc1N1Ym1p
dHRlZCgpCit7CisgICAgcmVzdWJtaXRBbGxBbmltYXRpb25zKHRoaXMpOworCisgICAgUGxhdGZv
cm1DQUxheWVyTGlzdCBjaGlsZHJlbjsKKyAgICBpbnRlcm4odGhpcyktPmdldFN1YmxheWVycyhj
aGlsZHJlbik7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjaGlsZHJlbi5zaXplKCk7ICsr
aSkKKyAgICAgICAgY2hpbGRyZW5baV0tPmVuc3VyZUFuaW1hdGlvbnNTdWJtaXR0ZWQoKTsKK30K
Kwogdm9pZCBQbGF0Zm9ybUNBTGF5ZXI6OnNldE5lZWRzRGlzcGxheShjb25zdCBGbG9hdFJlY3Qq
IGRpcnR5UmVjdCkKIHsKICAgICBpbnRlcm4odGhpcyktPnNldE5lZWRzRGlzcGxheShkaXJ0eVJl
Y3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1D
QUFuaW1hdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL1BsYXRmb3JtQ0FBbmltYXRpb24uaAkocmV2aXNpb24gODM3NjMpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBQW5pbWF0aW9uLmgJKHdvcmtp
bmcgY29weSkKQEAgLTEzNyw2ICsxMzcsMTIgQEAKIHByb3RlY3RlZDoKICAgICBQbGF0Zm9ybUNB
QW5pbWF0aW9uKEFuaW1hdGlvblR5cGUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCk7CiAgICAgUGxh
dGZvcm1DQUFuaW1hdGlvbihQbGF0Zm9ybUFuaW1hdGlvblJlZik7CisKKyAgICB2b2lkIHNldEFj
dHVhbFN0YXJ0VGltZUlmTmVlZGVkKENGVGltZUludGVydmFsIHQpCisgICAgeworICAgICAgICBp
ZiAoYmVnaW5UaW1lKCkgPD0gMCkKKyAgICAgICAgICAgIHNldEJlZ2luVGltZSh0KTsKKyAgICB9
CiAgICAgCiBwcml2YXRlOgogICAgIEFuaW1hdGlvblR5cGUgbV90eXBlOwpJbmRleDogU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZwkocmV2aXNpb24gODQzODkpCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwxOSBAQAorMjAxMS0wNC0yMCAgQ2hyaXMgTWFycmluICA8Y21hcnJp
bkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgUkVHUkVTU0lPTiAoV2ViS2l0Mik6IENTUyBhbmltYXRpb25zIG9uIHBhZ2VzIHRoYXQg
dXNlIGFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nIHN0b3AgYWZ0ZXIgc3dpdGNoaW5nIHRhYnMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU3ODY4CisgICAg
ICAgIAorICAgICAgICBTdWJjbGFzc2VkIHNldFJvb3RDb21wb3NpdGluZ0xheWVyIHNvIGl0IGNh
biBjYWxsIGVuc3VyZUFuaW1hdGlvbnNTdWJtaXR0ZWQgb24gV2luLgorCisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL2NhL0xheWVyVHJlZUhvc3RDQS5oOgorICAgICAgICAgICAgTWFrZSBz
ZXRSb290Q29tcG9zaXRpbmdMYXllciBwcm90ZWN0ZWQgc28gaXQgY2FuIGJlIGNhbGxlZCBmcm9t
IHN1YmNsYXNzCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2NhL3dpbi9MYXllclRyZWVI
b3N0Q0FXaW4uY3BwOgorICAgICAgICAgICAgT3ZlcnJpZGUgc2V0Um9vdENvbXBvc2l0aW5nTGF5
ZXIgdG8gYWRkIGNhbGwgdG8gcm9vdCBsYXllcidzCisgICAgICAgICAgICBQbGF0Zm9ybUNBTGF5
ZXI6OmVuc3VyZUFuaW1hdGlvbnNTdWJtaXR0ZWQgbWV0aG9kCisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL2NhL3dpbi9MYXllclRyZWVIb3N0Q0FXaW4uaDoKKwogMjAxMS0wNC0yMCAgQWxl
amFuZHJvIEcuIENhc3RybyAgPGFsZXhAaWdhbGlhLmNvbT4KIAogICAgICAgICBGaXhlZCBHVEsr
IGNvbXBpbGF0aW9uIGFmdGVyIHI4NDIwNi4KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9jYS9MYXllclRyZWVIb3N0Q0EuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvY2EvTGF5ZXJUcmVlSG9zdENBLmgJKHJldmlzaW9uIDgz
NzYzKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2NhL0xheWVyVHJlZUhv
c3RDQS5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSw2ICs0OSw3IEBACiAgICAgdmlydHVhbCB2b2lk
IGludmFsaWRhdGUoKTsKICAgICB2aXJ0dWFsIHZvaWQgc2l6ZURpZENoYW5nZShjb25zdCBXZWJD
b3JlOjpJbnRTaXplJiBuZXdTaXplKTsKICAgICB2aXJ0dWFsIHZvaWQgZm9yY2VSZXBhaW50KCk7
CisgICAgdmlydHVhbCB2b2lkIHNldFJvb3RDb21wb3NpdGluZ0xheWVyKFdlYkNvcmU6OkdyYXBo
aWNzTGF5ZXIqKTsKIAogICAgIC8vIExheWVyVHJlZUhvc3RDQQogICAgIHZpcnR1YWwgdm9pZCBk
aWRQZXJmb3JtU2NoZWR1bGVkTGF5ZXJGbHVzaCgpOwpAQCAtNTcsNyArNTgsNiBAQAogICAgIC8v
IExheWVyVHJlZUhvc3QuCiAgICAgdmlydHVhbCBjb25zdCBMYXllclRyZWVDb250ZXh0JiBsYXll
clRyZWVDb250ZXh0KCk7CiAgICAgdmlydHVhbCB2b2lkIHNldFNob3VsZE5vdGlmeUFmdGVyTmV4
dFNjaGVkdWxlZExheWVyRmx1c2goYm9vbCk7Ci0gICAgdmlydHVhbCB2b2lkIHNldFJvb3RDb21w
b3NpdGluZ0xheWVyKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqKTsKIAogICAgIHZpcnR1YWwgdm9p
ZCBzZXROb25Db21wb3NpdGVkQ29udGVudHNOZWVkRGlzcGxheShjb25zdCBXZWJDb3JlOjpJbnRS
ZWN0Jik7CiAgICAgdmlydHVhbCB2b2lkIHNjcm9sbE5vbkNvbXBvc2l0ZWRDb250ZW50cyhjb25z
dCBXZWJDb3JlOjpJbnRSZWN0JiBzY3JvbGxSZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBz
Y3JvbGxPZmZzZXQpOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2Nh
L3dpbi9MYXllclRyZWVIb3N0Q0FXaW4uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvY2Evd2luL0xheWVyVHJlZUhvc3RDQVdpbi5oCShyZXZpc2lvbiA4
Mzc2MykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9jYS93aW4vTGF5ZXJU
cmVlSG9zdENBV2luLmgJKHdvcmtpbmcgY29weSkKQEAgLTY0LDYgKzY0LDcgQEAKIAogICAgIC8v
IExheWVyVHJlZUhvc3RDQQogICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemUoTGF5
ZXJUcmVlQ29udGV4dCYpOworICAgIHZpcnR1YWwgdm9pZCBzZXRSb290Q29tcG9zaXRpbmdMYXll
cihXZWJDb3JlOjpHcmFwaGljc0xheWVyKik7CiAKICAgICAvLyBBYnN0cmFjdENBQ0ZMYXllclRy
ZWVIb3N0CiAgICAgdmlydHVhbCBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXIqIHJvb3RMYXllcigp
IGNvbnN0OwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2NhL3dpbi9M
YXllclRyZWVIb3N0Q0FXaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9jYS93aW4vTGF5ZXJUcmVlSG9zdENBV2luLmNwcAkocmV2aXNpb24gODM3
NjMpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvY2Evd2luL0xheWVyVHJl
ZUhvc3RDQVdpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5NCw2ICsyOTQsMTcgQEAKICAgICBt
X2lzRmx1c2hpbmdMYXllckNoYW5nZXMgPSBmYWxzZTsKIH0KIAordm9pZCBMYXllclRyZWVIb3N0
Q0FXaW46OnNldFJvb3RDb21wb3NpdGluZ0xheWVyKEdyYXBoaWNzTGF5ZXIqIGdyYXBoaWNzTGF5
ZXIpCit7ICAgIAorICAgIC8vIFJlc3VibWl0IGFsbCBleGlzdGluZyBhbmltYXRpb25zLiBDQUNG
IGRvZXMgbm90IHJlbWVtYmVyIHJ1bm5pbmcgYW5pbWF0aW9ucworICAgIC8vIFdoZW4gdGhlIGxh
eWVyIHRyZWUgaXMgcmVtb3ZlZCBhbmQgdGhlbiBhZGRlZCBiYWNrIHRvIHRoZSBoaWVyYXJjaHkK
KyAgICBpZiAoZ3JhcGhpY3NMYXllcikgeworICAgICAgICBzdGF0aWNfY2FzdDxHcmFwaGljc0xh
eWVyQ0EqPihncmFwaGljc0xheWVyKS0+cGxhdGZvcm1DQUxheWVyKCktPmVuc3VyZUFuaW1hdGlv
bnNTdWJtaXR0ZWQoKTsKKyAgICB9CisKKyAgICBMYXllclRyZWVIb3N0Q0E6OnNldFJvb3RDb21w
b3NpdGluZ0xheWVyKGdyYXBoaWNzTGF5ZXIpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
IAogI2VuZGlmIC8vIEhBVkUoV0tRQ0EpCg==
</data>
<flag name="review"
          id="83145"
          type_id="1"
          status="+"
          setter="aroben"
    />
          </attachment>
      

    </bug>

</bugzilla>