<?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>25108</bug_id>
          
          <creation_ts>2009-04-08 21:53:26 -0700</creation_ts>
          <short_desc>Animation timer can keep firing after accelerated transitions finish</short_desc>
          <delta_ts>2009-04-10 16:27:12 -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>Mac</rep_platform>
          <op_sys>OS X 10.5</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="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Chris Marrin">cmarrin</assigned_to>
          <cc>dino</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>116987</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2009-04-08 21:53:26 -0700</bug_when>
    <thetext>There&apos;s a problem in the animation code that seems to only show up with accelerated compositing turned on. In some cases, the updateAnimationTimer() can keep firing, even when a transition has finished. I&apos;ll attach a testcase.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>116988</commentid>
    <comment_count>1</comment_count>
      <attachid>29357</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2009-04-08 21:54:10 -0700</bug_when>
    <thetext>Created attachment 29357
Testcase

You&apos;ll have to put a breakpoint in updateAnimationTimer() after the transition finishes in order to see the problem.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>116989</commentid>
    <comment_count>2</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2009-04-08 21:56:56 -0700</bug_when>
    <thetext>The problem seems to occur because animation controller assumes that calling setChanged() on a node will result in a subsequent call to CompositeAnimation::animate() for the appropriate renderer; that method can then call cleanupFinishedAnimations().

However, in this testcase, AnimationController::updateAnimations() is returning early, because neither oldStyle nor newStyle contain animations or transitions. I&apos;m not sure how this can be, yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>116990</commentid>
    <comment_count>3</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2009-04-08 22:06:16 -0700</bug_when>
    <thetext>Ah, this happens when the transition styles are removed before the transition ends.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>117160</commentid>
    <comment_count>4</comment_count>
      <attachid>29394</attachid>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2009-04-10 11:35:27 -0700</bug_when>
    <thetext>Created attachment 29394
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>117174</commentid>
    <comment_count>5</comment_count>
      <attachid>29394</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-04-10 13:44:01 -0700</bug_when>
    <thetext>Comment on attachment 29394
Patch

&gt; +    // We can now safely remove any animations or transitions that are finished.
&gt; +    // We can&apos;t remove them any earlier because we might get a false restart of
&gt; +    // a transition. This can happen because we have not yet set the final property
&gt; +    // value until we call the rendering dispatcher. So this can make the current
&gt; +    // style slightly different from the desired final style (because our last 
&gt; +    // animation step was, say 0.9999 or something). And we need to remove them
&gt; +    // here because if there are no more animations running we&apos;ll never get back
&gt; +    // into the animation code to clean them up.
&gt; +    RenderObjectAnimationMap::const_iterator animationsEnd = m_compositeAnimations.end();
&gt; +    for (RenderObjectAnimationMap::const_iterator it = m_compositeAnimations.begin(); it != animationsEnd; ++it) {
&gt; +        RefPtr&lt;CompositeAnimation&gt; compAnim = it-&gt;second;
&gt; +        compAnim-&gt;cleanupFinishedAnimations();
&gt; +    }

Is there a guarantee that the cleanupFinishedAnimations function and the functions it calls won&apos;t result in a change to m_compositeAnimations? If not, then we&apos;ll need to copy the animations out of the map before iterating them, because you can&apos;t safely iterate a hash table if it might change.

This unnecessarily thrashes the reference count of the CompositeAnimation object. The local variable should be a raw pointer, or be eliminated entirely.

review- because of these two issues</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>117179</commentid>
    <comment_count>6</comment_count>
      <attachid>29394</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2009-04-10 14:16:56 -0700</bug_when>
    <thetext>Comment on attachment 29394
Patch

Ooops, we had a mid-air conflict. I&apos;ll clean up and re-submit the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>117180</commentid>
    <comment_count>7</comment_count>
      <attachid>29398</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2009-04-10 14:33:55 -0700</bug_when>
    <thetext>Created attachment 29398
Revised patch

I fixed some other lines to reduce ref churn while iterating, and added a comment that cleanupFinishedAnimations() will never affect m_compositeAnimations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>117199</commentid>
    <comment_count>8</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2009-04-10 16:27:12 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/42410</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>29357</attachid>
            <date>2009-04-08 21:54:10 -0700</date>
            <delta_ts>2009-04-08 21:54:10 -0700</delta_ts>
            <desc>Testcase</desc>
            <filename>dynamic-transition-removal.html</filename>
            <type>text/html</type>
            <size>942</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFs
Ly9FTiIKICAgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+Cgo8aHRtbCBs
YW5nPSJlbiI+CjxoZWFkPgogIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVu
dD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KICA8dGl0bGU+RHluYW1pYyB0cmFuc2l0aW9u
IHJlbW92YWw8L3RpdGxlPgogIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9InNjcmVlbiI+
CiAgICAjYm94IHsKICAgICAgaGVpZ2h0OiAyMDBweDsKICAgICAgd2lkdGg6IDIwMHB4OwogICAg
ICBtYXJnaW46IDIwcHg7CiAgICAgIGJhY2tncm91bmQtY29sb3I6IGJsdWU7CiAgICB9CiAgICAK
ICAgIC5hbmltYXRlZCB7CiAgICAgIC13ZWJraXQtdHJhbnNpdGlvbjogb3BhY2l0eSAzNTBtczsK
ICAgIH0KICA8L3N0eWxlPgogIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBjaGFyc2V0
PSJ1dGYtOCI+CiAgICBmdW5jdGlvbiBzdGFydFRyYW5zaXRpb24oKQogICAgewogICAgICB2YXIg
Ym94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2JveCcpOwogICAgICBib3guY2xhc3NOYW1l
ID0gJ2FuaW1hdGVkJzsKICAgICAgd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CiAgICAg
ICAgYm94LnN0eWxlLm9wYWNpdHkgPSAnMC41JzsKICAgICAgICB3aW5kb3cuc2V0VGltZW91dChm
dW5jdGlvbigpIHsKICAgICAgICAgIGJveC5jbGFzc05hbWUgPSAnJzsKICAgICAgICB9LCAzNTAp
OwogICAgICB9LCAwKTsKICAgIH0KICA8L3NjcmlwdD4KPC9oZWFkPgo8Ym9keT4KCjxkaXYgaWQ9
ImJveCI+CiAgCjwvZGl2Pgo8YnV0dG9uIG9uY2xpY2s9InN0YXJ0VHJhbnNpdGlvbigpIj5DbGlj
ayBtZTwvYnV0dG9uPgo8L2JvZHk+CjwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>29394</attachid>
            <date>2009-04-10 11:35:27 -0700</date>
            <delta_ts>2009-04-10 14:16:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>25108.patch</filename>
            <type>text/plain</type>
            <size>5285</size>
            <attacher name="Chris Marrin">cmarrin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
OGRhNTk1YS4uMzExMzg2YyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAwOS0wNC0xMCAgQ2hyaXMgTWFycmlu
ICA8Y21hcnJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgRml4ZWQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTI1MTA4CisKKyAgICAgICAgSWYgeW91IHJlbW92ZSBhIGNsYXNzIHdpdGggYSB0cmFuc2l0
aW9uIHdoaWxlIHRoYXQgdHJhbnNpdGlvbiBpcyBydW5uaW5nCisgICAgICAgIHRoZSBhbmltYXRp
b24gdGltZXIgd2lsbCBjb250aW51ZSB0byBmaXJlIGFmdGVyIHRoZSB0cmFuc2l0aW9uIGlzIGZp
bmlzaGVkLgorICAgICAgICBUaGlzIGhhcyBubyB2aXN1YWwgaW5kaWNhdGlvbiwgYnV0IGl0IGRv
ZXMgZHJhaW4gdGhlIHByb2Nlc3Nvci4gQW5kIGluIHNvbWUKKyAgICAgICAgY2FzZXMgaXQgbWln
aHQgZXZlbiBjYXVzZSBhIGdsaXRjaCBpbiBmdXR1cmUgYW5pbWF0aW9ucy4gVW5mb3J0dW5hdGVs
eSB0aGVyZQorICAgICAgICBpcyBubyB3YXkgdG8gdGVzdCB0aGlzIHdpdGhvdXQgcHV0dGluZyBp
biBwcmludGZzLgorCisgICAgICAgIFRoaXMgaGFwcGVucyBiZWNhdXNlIHRoZSBhbmltYXRpb24g
bG9naWMgaXMgbmV2ZXIgdHJhdmVyc2VkIGFmdGVyIGEgdHJhbnNpdGlvbgorICAgICAgICBpcyBy
ZW1vdmVkLCBzbyB3ZSBuZXZlciBnZXQgYSBjaGFuY2UgdG8gY2xlYW51cC4gU28gSSBhZGRlZCBj
bGVhbnVwIGluIHRoZSBsb2dpYworICAgICAgICB0aGF0IGZpcmVzIHRoZSBkaXNwYXRjaCBvZiB0
aGUgbGFzdCBzdHlsZSBjaGFuZ2Ugd2hlbiB0aGUgYW5pbWF0aW9uIGZpbmlzaGVzLgorCisgICAg
ICAgICogcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQ29udHJvbGxlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpBbmltYXRpb25Db250cm9sbGVyUHJpdmF0ZTo6dXBkYXRlUmVuZGVyaW5nRGlzcGF0
Y2hlckZpcmVkKToKKyAgICAgICAgKiBwYWdlL2FuaW1hdGlvbi9Db21wb3NpdGVBbmltYXRpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRlQW5pbWF0aW9uOjp1cGRhdGVUcmFuc2l0
aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGVBbmltYXRpb246OmFuaW1hdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRlQW5pbWF0aW9uOjpjbGVhbnVwRmluaXNoZWRBbmlt
YXRpb25zKToKKyAgICAgICAgKiBwYWdlL2FuaW1hdGlvbi9Db21wb3NpdGVBbmltYXRpb24uaDoK
KwogMjAwOS0wNC0wOSAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgogCiAgICAg
ICAgIFJlaW5zdGF0aW5nIDxyZGFyOi8vcHJvYmxlbS82NzE4NTg5PiBPcHRpb24gdG8gdHVybiBv
ZmYgU1ZHIERPTSBPYmplY3RpdmUtQyBiaW5kaW5ncwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdl
L2FuaW1hdGlvbi9BbmltYXRpb25Db250cm9sbGVyLmNwcCBiL1dlYkNvcmUvcGFnZS9hbmltYXRp
b24vQW5pbWF0aW9uQ29udHJvbGxlci5jcHAKaW5kZXggYTNmZGJhMS4uMDgwZDJlYSAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25Db250cm9sbGVyLmNwcAorKysg
Yi9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkNvbnRyb2xsZXIuY3BwCkBAIC0xNTIs
NiArMTUyLDIwIEBAIHZvaWQgQW5pbWF0aW9uQ29udHJvbGxlclByaXZhdGU6OnVwZGF0ZVJlbmRl
cmluZ0Rpc3BhdGNoZXJGaXJlZChUaW1lcjxBbmltYXRpb25DCiAgICAgCiAgICAgaWYgKG1fZnJh
bWUpCiAgICAgICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPnVwZGF0ZVJlbmRlcmluZygpOworCisg
ICAgLy8gV2UgY2FuIG5vdyBzYWZlbHkgcmVtb3ZlIGFueSBhbmltYXRpb25zIG9yIHRyYW5zaXRp
b25zIHRoYXQgYXJlIGZpbmlzaGVkLgorICAgIC8vIFdlIGNhbid0IHJlbW92ZSB0aGVtIGFueSBl
YXJsaWVyIGJlY2F1c2Ugd2UgbWlnaHQgZ2V0IGEgZmFsc2UgcmVzdGFydCBvZgorICAgIC8vIGEg
dHJhbnNpdGlvbi4gVGhpcyBjYW4gaGFwcGVuIGJlY2F1c2Ugd2UgaGF2ZSBub3QgeWV0IHNldCB0
aGUgZmluYWwgcHJvcGVydHkKKyAgICAvLyB2YWx1ZSB1bnRpbCB3ZSBjYWxsIHRoZSByZW5kZXJp
bmcgZGlzcGF0Y2hlci4gU28gdGhpcyBjYW4gbWFrZSB0aGUgY3VycmVudAorICAgIC8vIHN0eWxl
IHNsaWdodGx5IGRpZmZlcmVudCBmcm9tIHRoZSBkZXNpcmVkIGZpbmFsIHN0eWxlIChiZWNhdXNl
IG91ciBsYXN0IAorICAgIC8vIGFuaW1hdGlvbiBzdGVwIHdhcywgc2F5IDAuOTk5OSBvciBzb21l
dGhpbmcpLiBBbmQgd2UgbmVlZCB0byByZW1vdmUgdGhlbQorICAgIC8vIGhlcmUgYmVjYXVzZSBp
ZiB0aGVyZSBhcmUgbm8gbW9yZSBhbmltYXRpb25zIHJ1bm5pbmcgd2UnbGwgbmV2ZXIgZ2V0IGJh
Y2sKKyAgICAvLyBpbnRvIHRoZSBhbmltYXRpb24gY29kZSB0byBjbGVhbiB0aGVtIHVwLgorICAg
IFJlbmRlck9iamVjdEFuaW1hdGlvbk1hcDo6Y29uc3RfaXRlcmF0b3IgYW5pbWF0aW9uc0VuZCA9
IG1fY29tcG9zaXRlQW5pbWF0aW9ucy5lbmQoKTsKKyAgICBmb3IgKFJlbmRlck9iamVjdEFuaW1h
dGlvbk1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX2NvbXBvc2l0ZUFuaW1hdGlvbnMuYmVnaW4o
KTsgaXQgIT0gYW5pbWF0aW9uc0VuZDsgKytpdCkgeworICAgICAgICBSZWZQdHI8Q29tcG9zaXRl
QW5pbWF0aW9uPiBjb21wQW5pbSA9IGl0LT5zZWNvbmQ7CisgICAgICAgIGNvbXBBbmltLT5jbGVh
bnVwRmluaXNoZWRBbmltYXRpb25zKCk7CisgICAgfQogfQogCiB2b2lkIEFuaW1hdGlvbkNvbnRy
b2xsZXJQcml2YXRlOjpzdGFydFVwZGF0ZVJlbmRlcmluZ0Rpc3BhdGNoZXIoKQpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9Db21wb3NpdGVBbmltYXRpb24uY3BwIGIvV2ViQ29y
ZS9wYWdlL2FuaW1hdGlvbi9Db21wb3NpdGVBbmltYXRpb24uY3BwCmluZGV4IGZmZWZhYWUuLmQ2
MDQ1NWEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ29tcG9zaXRlQW5pbWF0
aW9uLmNwcAorKysgYi9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NvbXBvc2l0ZUFuaW1hdGlvbi5j
cHAKQEAgLTExMCw3ICsxMTAsMTEgQEAgdm9pZCBDb21wb3NpdGVBbmltYXRpb246OnVwZGF0ZVRy
YW5zaXRpb25zKFJlbmRlck9iamVjdCogcmVuZGVyZXIsIFJlbmRlclN0eWxlKgogICAgICAgICAg
ICAgYm9vbCBlcXVhbCA9IHRydWU7CiAKICAgICAgICAgICAgIGlmIChpbXBsQW5pbSkgewotICAg
ICAgICAgICAgICAgIC8vIFRoaXMgaW1wbEFuaW0gbWlnaHQgbm90IGJlIGFuIGFscmVhZHkgcnVu
bmluZyB0cmFuc2l0aW9uLiBJdCBtaWdodCBiZQorICAgICAgICAgICAgICAgIC8vIFRoaXMgbWln
aHQgYmUgYSB0cmFuc2l0aW9uIHRoYXQgaXMganVzdCBmaW5pc2hpbmcuIFRoYXQgd291bGQgYmUg
dGhlIGNhc2UKKyAgICAgICAgICAgICAgICAvLyBpZiBpdCB3ZXJlIHBvc3RBY3RpdmUuIEJ1dCB3
ZSBzdGlsbCBuZWVkIHRvIGNoZWNrIGZvciBlcXVhbGl0eSBiZWNhdXNlCisgICAgICAgICAgICAg
ICAgLy8gaXQgY291bGQgYmUganVzdCBmaW5pc2hpbmcgQU5EIGNoYW5naW5nIHRvIGEgbmV3IGdv
YWwgc3RhdGUuCisgICAgICAgICAgICAgICAgLy8KKyAgICAgICAgICAgICAgICAvLyBUaGlzIGlt
cGxBbmltIG1pZ2h0IGFsc28gbm90IGJlIGFuIGFscmVhZHkgcnVubmluZyB0cmFuc2l0aW9uLiBJ
dCBtaWdodCBiZQogICAgICAgICAgICAgICAgIC8vIG5ld2x5IGFkZGVkIHRvIHRoZSBsaXN0IGlu
IGEgcHJldmlvdXMgaXRlcmF0aW9uLiBUaGlzIHdvdWxkIGhhcHBlbiBpZgogICAgICAgICAgICAg
ICAgIC8vIHlvdSBoYXZlIGJvdGggYW4gZXhwbGljaXQgdHJhbnNpdGlvbi1wcm9wZXJ0eSBhbmQg
J2FsbCcgaW4gdGhlIHNhbWUKICAgICAgICAgICAgICAgICAvLyBsaXN0LiBJbiB0aGlzIGNhc2Us
IHRoZSBsYXR0ZXIgb25lIG92ZXJyaWRlcyB0aGUgZWFybGllciBvbmUsIHNvIHdlCkBAIC0yNDUs
NyArMjQ5LDcgQEAgUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gQ29tcG9zaXRlQW5pbWF0aW9uOjph
bmltYXRlKFJlbmRlck9iamVjdCogcmVuZGVyZXIsIFJlbmQKICAgICAgICAgICAgIGtleWZyYW1l
QW5pbS0+YW5pbWF0ZSh0aGlzLCByZW5kZXJlciwgY3VycmVudFN0eWxlLCB0YXJnZXRTdHlsZSwg
cmVzdWx0U3R5bGUpOwogICAgIH0KIAotICAgIGNsZWFudXBGaW5pc2hlZEFuaW1hdGlvbnMocmVu
ZGVyZXIpOworICAgIGNsZWFudXBGaW5pc2hlZEFuaW1hdGlvbnMoKTsKIAogICAgIHJldHVybiBy
ZXN1bHRTdHlsZSA/IHJlc3VsdFN0eWxlLnJlbGVhc2UoKSA6IHRhcmdldFN0eWxlOwogfQpAQCAt
MzM3LDcgKzM0MSw3IEBAIFBhc3NSZWZQdHI8S2V5ZnJhbWVBbmltYXRpb24+IENvbXBvc2l0ZUFu
aW1hdGlvbjo6Z2V0QW5pbWF0aW9uRm9yUHJvcGVydHkoaW50IHByCiAgICAgcmV0dXJuIHJldHZh
bDsKIH0KIAotdm9pZCBDb21wb3NpdGVBbmltYXRpb246OmNsZWFudXBGaW5pc2hlZEFuaW1hdGlv
bnMoUmVuZGVyT2JqZWN0KikKK3ZvaWQgQ29tcG9zaXRlQW5pbWF0aW9uOjpjbGVhbnVwRmluaXNo
ZWRBbmltYXRpb25zKCkKIHsKICAgICBpZiAoaXNTdXNwZW5kZWQoKSkKICAgICAgICAgcmV0dXJu
OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9Db21wb3NpdGVBbmltYXRpb24u
aCBiL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ29tcG9zaXRlQW5pbWF0aW9uLmgKaW5kZXggMTlm
OWZhMi4uNzM5Y2ZkYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9Db21wb3Np
dGVBbmltYXRpb24uaAorKysgYi9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NvbXBvc2l0ZUFuaW1h
dGlvbi5oCkBAIC03NCw3ICs3NCw3IEBAIHB1YmxpYzoKICAgICAKICAgICBQYXNzUmVmUHRyPEtl
eWZyYW1lQW5pbWF0aW9uPiBnZXRBbmltYXRpb25Gb3JQcm9wZXJ0eShpbnQgcHJvcGVydHkpIGNv
bnN0OwogCi0gICAgdm9pZCBjbGVhbnVwRmluaXNoZWRBbmltYXRpb25zKFJlbmRlck9iamVjdCop
OworICAgIHZvaWQgY2xlYW51cEZpbmlzaGVkQW5pbWF0aW9ucygpOwogCiAgICAgdm9pZCBvdmVy
cmlkZUltcGxpY2l0QW5pbWF0aW9ucyhpbnQgcHJvcGVydHkpOwogICAgIHZvaWQgcmVzdW1lT3Zl
cnJpZGRlbkltcGxpY2l0QW5pbWF0aW9ucyhpbnQgcHJvcGVydHkpOwo=
</data>
<flag name="review"
          id="14615"
          type_id="1"
          status="-"
          setter="simon.fraser"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>29398</attachid>
            <date>2009-04-10 14:33:55 -0700</date>
            <delta_ts>2009-04-10 16:13:40 -0700</delta_ts>
            <desc>Revised patch</desc>
            <filename>25108_patch.txt</filename>
            <type>text/plain</type>
            <size>10406</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBhNjBmZmM5Li40MmUwYmM2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMDktMDQt
MTAgIENocmlzIE1hcnJpbiAgPGNtYXJyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IFNpbW9uIEZyYXNlcgorICAgICAgICAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTI1MTA4CisKKyAgICAgICAgVGVzdGNhc2Ugd2hpY2ggcmVwcm9k
dWNlcyB0aGUgaXNzdWUgZGVzY3JpYmVkIGluIGJ1ZyAyNTEwOC4KKyAgICAgICAgV29uJ3QgYWN0
dWFsbHkgcmV2ZWFsIGZhaWx1cmUsIHNpbmNlIHdlIGhhdmUgbm8gd2F5IHRvIHRlc3QKKyAgICAg
ICAgd2hldGhlciBhbmltYXRpb24gdGltZXJzIGtlZXAgZmlyaW5nIGZyb20gRFJULgorCisgICAg
ICAgICogdHJhbnNpdGlvbnMvcmVtb3ZlLXRyYW5zaXRpb24tc3R5bGUtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiB0cmFuc2l0aW9ucy9yZW1vdmUtdHJhbnNpdGlvbi1zdHlsZS5odG1s
OiBBZGRlZC4KKwogMjAwOS0wNC0xMCAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgog
CiAgICAgICAgIC0gc2tpcCBmYWlsdXJlcyBmb2xsb3dpbmcgcjQyMzc5IHVudGlsIHRoZXkgYXJl
IGFkZHJlc3NlZCBieSBjb2RlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90cmFuc2l0aW9ucy9y
ZW1vdmUtdHJhbnNpdGlvbi1zdHlsZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90cmFuc2l0
aW9ucy9yZW1vdmUtdHJhbnNpdGlvbi1zdHlsZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uNmVkMDgwYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3RyYW5zaXRpb25zL3JlbW92ZS10cmFuc2l0aW9uLXN0eWxlLWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDIgQEAKK05vIHJ1bm5pbmcgdHJhbnNpdGlvbnM6IFBBU1MKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvdHJhbnNpdGlvbnMvcmVtb3ZlLXRyYW5zaXRpb24tc3R5bGUuaHRtbCBiL0xh
eW91dFRlc3RzL3RyYW5zaXRpb25zL3JlbW92ZS10cmFuc2l0aW9uLXN0eWxlLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzcxZjgxZQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3RyYW5zaXRpb25zL3JlbW92ZS10cmFuc2l0aW9uLXN0eWxlLmh0bWwKQEAg
LTAsMCArMSw3MCBAQAorPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQu
MDEgVHJhbnNpdGlvbmFsLy9FTiIKKyAgICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29z
ZS5kdGQiPgorCis8aHRtbCBsYW5nPSJlbiI+Cis8aGVhZD4KKyAgPG1ldGEgaHR0cC1lcXVpdj0i
Q29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorICA8dGl0
bGU+RHluYW1pYyB0cmFuc2l0aW9uIHJlbW92YWw8L3RpdGxlPgorICA8c3R5bGUgdHlwZT0idGV4
dC9jc3MiIG1lZGlhPSJzY3JlZW4iPgorICAgICNib3ggeworICAgICAgaGVpZ2h0OiAyMDBweDsK
KyAgICAgIHdpZHRoOiAyMDBweDsKKyAgICAgIG1hcmdpbjogMjBweDsKKyAgICAgIGJhY2tncm91
bmQtY29sb3I6IGJsdWU7CisgICAgfQorICAgIAorICAgIC5hbmltYXRlZCB7CisgICAgICAtd2Vi
a2l0LXRyYW5zaXRpb246IG9wYWNpdHkgMjAwbXM7CisgICAgfQorICA8L3N0eWxlPgorICA8c2Ny
aXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgY2hhcnNldD0idXRmLTgiPgorICAgIGlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndh
aXRVbnRpbERvbmUoKTsKKyAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsK
KyAgICB9CisKKyAgICBmdW5jdGlvbiBsb2cocykKKyAgICB7CisgICAgICB2YXIgcmVzdWx0cyA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHRzJyk7CisgICAgICByZXN1bHRzLmlubmVy
SFRNTCArPSBzICsgJzxicj4nOworICAgIH0KKworICAgIGZ1bmN0aW9uIHRlc3RUcmFuc2l0aW9u
cygpCisgICAgeworICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAg
ICAgICB2YXIgbnVtQW5pbXMgPSBsYXlvdXRUZXN0Q29udHJvbGxlci5udW1iZXJPZkFjdGl2ZUFu
aW1hdGlvbnMoKTsKKyAgICAgICAgaWYgKG51bUFuaW1zID09IDApCisgICAgICAgICAgbG9nKCdO
byBydW5uaW5nIHRyYW5zaXRpb25zOiBQQVNTJyk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICBs
b2coJ1N0aWxsICcgKyBudW1BbmltcyArICcgdHJhbnNpdGlvbnMgcnVubmluZzogRkFJTCcpCisK
KyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgfQorICAg
IH0KKyAgICAKKyAgICBmdW5jdGlvbiByZW1vdmVTdHlsZSgpCisgICAgeworICAgICAgYm94LmNs
YXNzTmFtZSA9ICcnOworICAgICAgd2luZG93LnNldFRpbWVvdXQodGVzdFRyYW5zaXRpb25zLCA1
MCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gc3RhcnRUcmFuc2l0aW9uKCkKKyAgICB7CisgICAg
ICB2YXIgYm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2JveCcpOworICAgICAgYm94LmNs
YXNzTmFtZSA9ICdhbmltYXRlZCc7CisgICAgICB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigp
IHsKKyAgICAgICAgYm94LnN0eWxlLm9wYWNpdHkgPSAnMC41JzsKKyAgICAgICAgd2luZG93LnNl
dFRpbWVvdXQocmVtb3ZlU3R5bGUsIDIwMCk7CisgICAgICB9LCAwKTsKKyAgICB9CisgICAgCisg
ICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBzdGFydFRyYW5zaXRpb24sIGZhbHNl
KTsKKyAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKworPGRpdiBpZD0iYm94Ij48L2Rpdj4K
KworPGRpdiBpZD0icmVzdWx0cyI+PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGlu
ZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3Jl
L0NoYW5nZUxvZwppbmRleCA5ZjkwODYyLi4yYjdjMjE1IDEwMDY0NAotLS0gYS9XZWJDb3JlL0No
YW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDA5LTA0
LTEwICBDaHJpcyBNYXJyaW4gIDxjbWFycmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBTaW1vbiBGcmFzZXIKKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjUxMDgKKworICAgICAgICBJZiB5b3UgcmVtb3ZlIGEgY2xhc3Mgd2l0aCBh
IHRyYW5zaXRpb24gd2hpbGUgdGhhdCB0cmFuc2l0aW9uIGlzIHJ1bm5pbmcKKyAgICAgICAgdGhl
IGFuaW1hdGlvbiB0aW1lciB3aWxsIGNvbnRpbnVlIHRvIGZpcmUgYWZ0ZXIgdGhlIHRyYW5zaXRp
b24gaXMgZmluaXNoZWQuCisgICAgICAgIFRoaXMgaGFzIG5vIHZpc3VhbCBpbmRpY2F0aW9uLCBi
dXQgaXQgZG9lcyBkcmFpbiB0aGUgcHJvY2Vzc29yLiBBbmQgaW4gc29tZQorICAgICAgICBjYXNl
cyBpdCBtaWdodCBldmVuIGNhdXNlIGEgZ2xpdGNoIGluIGZ1dHVyZSBhbmltYXRpb25zLiBVbmZv
cnR1bmF0ZWx5IHRoZXJlCisgICAgICAgIGlzIG5vIHdheSB0byB0ZXN0IHRoaXMgd2l0aG91dCBw
dXR0aW5nIGluIHByaW50ZnMuCisKKyAgICAgICAgVGhpcyBoYXBwZW5zIGJlY2F1c2UgdGhlIGFu
aW1hdGlvbiBsb2dpYyBpcyBuZXZlciB0cmF2ZXJzZWQgYWZ0ZXIgYSB0cmFuc2l0aW9uCisgICAg
ICAgIGlzIHJlbW92ZWQsIHNvIHdlIG5ldmVyIGdldCBhIGNoYW5jZSB0byBjbGVhbnVwLiBTbyBJ
IGFkZGVkIGNsZWFudXAgaW4gdGhlIGxvZ2ljCisgICAgICAgIHRoYXQgZmlyZXMgdGhlIGRpc3Bh
dGNoIG9mIHRoZSBsYXN0IHN0eWxlIGNoYW5nZSB3aGVuIHRoZSBhbmltYXRpb24gZmluaXNoZXMu
CisKKyAgICAgICAgVGVzdDogdHJhbnNpdGlvbnMvcmVtb3ZlLXRyYW5zaXRpb24tc3R5bGUuaHRt
bAorCisgICAgICAgICogcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQ29udHJvbGxlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25Db250cm9sbGVyUHJpdmF0ZTo6dXBkYXRlU3R5bGVJ
Zk5lZWRlZERpc3BhdGNoZXJGaXJlZCk6CisgICAgICAgICogcGFnZS9hbmltYXRpb24vQ29tcG9z
aXRlQW5pbWF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBvc2l0ZUFuaW1hdGlvbjo6
dXBkYXRlVHJhbnNpdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRlQW5pbWF0aW9u
OjphbmltYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBvc2l0ZUFuaW1hdGlvbjo6Y2xlYW51
cEZpbmlzaGVkQW5pbWF0aW9ucyk6CisgICAgICAgICogcGFnZS9hbmltYXRpb24vQ29tcG9zaXRl
QW5pbWF0aW9uLmg6CisKIDIwMDktMDQtMTAgIEFkYW0gUm9iZW4gIDxhcm9iZW5AYXBwbGUuY29t
PgogCiAgICAgICAgIEdpdmUgV2luZG93cydzIDxzZWxlY3Q+IHBvcHVwIG1lbnVzIGRyb3Agc2hh
ZG93cwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25Db250cm9s
bGVyLmNwcCBiL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQ29udHJvbGxlci5jcHAK
aW5kZXggZDNiYzU0My4uM2JhNzEwMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL2FuaW1hdGlv
bi9BbmltYXRpb25Db250cm9sbGVyLmNwcAorKysgYi9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0Fu
aW1hdGlvbkNvbnRyb2xsZXIuY3BwCkBAIC04OSw3ICs4OSw3IEBAIHZvaWQgQW5pbWF0aW9uQ29u
dHJvbGxlclByaXZhdGU6OnVwZGF0ZUFuaW1hdGlvblRpbWVyKGJvb2wgY2FsbFNldENoYW5nZWQv
KiA9IGZhCiAKICAgICBSZW5kZXJPYmplY3RBbmltYXRpb25NYXA6OmNvbnN0X2l0ZXJhdG9yIGFu
aW1hdGlvbnNFbmQgPSBtX2NvbXBvc2l0ZUFuaW1hdGlvbnMuZW5kKCk7CiAgICAgZm9yIChSZW5k
ZXJPYmplY3RBbmltYXRpb25NYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9jb21wb3NpdGVBbmlt
YXRpb25zLmJlZ2luKCk7IGl0ICE9IGFuaW1hdGlvbnNFbmQ7ICsraXQpIHsKLSAgICAgICAgUmVm
UHRyPENvbXBvc2l0ZUFuaW1hdGlvbj4gY29tcEFuaW0gPSBpdC0+c2Vjb25kOworICAgICAgICBD
b21wb3NpdGVBbmltYXRpb24qIGNvbXBBbmltID0gaXQtPnNlY29uZC5nZXQoKTsKICAgICAgICAg
aWYgKCFjb21wQW5pbS0+aXNTdXNwZW5kZWQoKSAmJiBjb21wQW5pbS0+aGFzQW5pbWF0aW9ucygp
KSB7CiAgICAgICAgICAgICBkb3VibGUgdCA9IGNvbXBBbmltLT50aW1lVG9OZXh0U2VydmljZSgp
OwogICAgICAgICAgICAgaWYgKHQgIT0gLTEgJiYgKHQgPCBuZWVkc1NlcnZpY2UgfHwgbmVlZHNT
ZXJ2aWNlID09IC0xKSkKQEAgLTE1Miw2ICsxNTIsMjAgQEAgdm9pZCBBbmltYXRpb25Db250cm9s
bGVyUHJpdmF0ZTo6dXBkYXRlU3R5bGVJZk5lZWRlZERpc3BhdGNoZXJGaXJlZChUaW1lcjxBbmlt
YXQKICAgICAKICAgICBpZiAobV9mcmFtZSkKICAgICAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+
dXBkYXRlU3R5bGVJZk5lZWRlZCgpOworCisgICAgLy8gV2UgY2FuIG5vdyBzYWZlbHkgcmVtb3Zl
IGFueSBhbmltYXRpb25zIG9yIHRyYW5zaXRpb25zIHRoYXQgYXJlIGZpbmlzaGVkLgorICAgIC8v
IFdlIGNhbid0IHJlbW92ZSB0aGVtIGFueSBlYXJsaWVyIGJlY2F1c2Ugd2UgbWlnaHQgZ2V0IGEg
ZmFsc2UgcmVzdGFydCBvZgorICAgIC8vIGEgdHJhbnNpdGlvbi4gVGhpcyBjYW4gaGFwcGVuIGJl
Y2F1c2Ugd2UgaGF2ZSBub3QgeWV0IHNldCB0aGUgZmluYWwgcHJvcGVydHkKKyAgICAvLyB2YWx1
ZSB1bnRpbCB3ZSBjYWxsIHRoZSByZW5kZXJpbmcgZGlzcGF0Y2hlci4gU28gdGhpcyBjYW4gbWFr
ZSB0aGUgY3VycmVudAorICAgIC8vIHN0eWxlIHNsaWdodGx5IGRpZmZlcmVudCBmcm9tIHRoZSBk
ZXNpcmVkIGZpbmFsIHN0eWxlIChiZWNhdXNlIG91ciBsYXN0IAorICAgIC8vIGFuaW1hdGlvbiBz
dGVwIHdhcywgc2F5IDAuOTk5OSBvciBzb21ldGhpbmcpLiBBbmQgd2UgbmVlZCB0byByZW1vdmUg
dGhlbQorICAgIC8vIGhlcmUgYmVjYXVzZSBpZiB0aGVyZSBhcmUgbm8gbW9yZSBhbmltYXRpb25z
IHJ1bm5pbmcgd2UnbGwgbmV2ZXIgZ2V0IGJhY2sKKyAgICAvLyBpbnRvIHRoZSBhbmltYXRpb24g
Y29kZSB0byBjbGVhbiB0aGVtIHVwLgorICAgIFJlbmRlck9iamVjdEFuaW1hdGlvbk1hcDo6Y29u
c3RfaXRlcmF0b3IgYW5pbWF0aW9uc0VuZCA9IG1fY29tcG9zaXRlQW5pbWF0aW9ucy5lbmQoKTsK
KyAgICBmb3IgKFJlbmRlck9iamVjdEFuaW1hdGlvbk1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBt
X2NvbXBvc2l0ZUFuaW1hdGlvbnMuYmVnaW4oKTsgaXQgIT0gYW5pbWF0aW9uc0VuZDsgKytpdCkg
eworICAgICAgICBDb21wb3NpdGVBbmltYXRpb24qIGNvbXBBbmltID0gaXQtPnNlY29uZC5nZXQo
KTsKKyAgICAgICAgY29tcEFuaW0tPmNsZWFudXBGaW5pc2hlZEFuaW1hdGlvbnMoKTsgLy8gd2ls
bCBub3QgbW9kaWZ5IG1fY29tcG9zaXRlQW5pbWF0aW9ucywgc28gT0sgdG8gY2FsbCB3aGlsZSBp
dGVyYXRpbmcKKyAgICB9CiB9CiAKIHZvaWQgQW5pbWF0aW9uQ29udHJvbGxlclByaXZhdGU6OnN0
YXJ0dXBkYXRlU3R5bGVJZk5lZWRlZERpc3BhdGNoZXIoKQpAQCAtMjA3LDkgKzIyMSwxMCBAQCB2
b2lkIEFuaW1hdGlvbkNvbnRyb2xsZXJQcml2YXRlOjpzdXNwZW5kQW5pbWF0aW9ucyhEb2N1bWVu
dCogZG9jdW1lbnQpCiAgICAgUmVuZGVyT2JqZWN0QW5pbWF0aW9uTWFwOjpjb25zdF9pdGVyYXRv
ciBhbmltYXRpb25zRW5kID0gbV9jb21wb3NpdGVBbmltYXRpb25zLmVuZCgpOwogICAgIGZvciAo
UmVuZGVyT2JqZWN0QW5pbWF0aW9uTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1fY29tcG9zaXRl
QW5pbWF0aW9ucy5iZWdpbigpOyBpdCAhPSBhbmltYXRpb25zRW5kOyArK2l0KSB7CiAgICAgICAg
IFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBpdC0+Zmlyc3Q7Ci0gICAgICAgIFJlZlB0cjxDb21w
b3NpdGVBbmltYXRpb24+IGNvbXBBbmltID0gaXQtPnNlY29uZDsKLSAgICAgICAgaWYgKHJlbmRl
cmVyLT5kb2N1bWVudCgpID09IGRvY3VtZW50KQorICAgICAgICBpZiAocmVuZGVyZXItPmRvY3Vt
ZW50KCkgPT0gZG9jdW1lbnQpIHsKKyAgICAgICAgICAgIENvbXBvc2l0ZUFuaW1hdGlvbiogY29t
cEFuaW0gPSBpdC0+c2Vjb25kLmdldCgpOwogICAgICAgICAgICAgY29tcEFuaW0tPnN1c3BlbmRB
bmltYXRpb25zKCk7CisgICAgICAgIH0KICAgICB9CiAgICAgCiAgICAgdXBkYXRlQW5pbWF0aW9u
VGltZXIoKTsKQEAgLTIyMCw5ICsyMzUsMTAgQEAgdm9pZCBBbmltYXRpb25Db250cm9sbGVyUHJp
dmF0ZTo6cmVzdW1lQW5pbWF0aW9ucyhEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgUmVuZGVyT2Jq
ZWN0QW5pbWF0aW9uTWFwOjpjb25zdF9pdGVyYXRvciBhbmltYXRpb25zRW5kID0gbV9jb21wb3Np
dGVBbmltYXRpb25zLmVuZCgpOwogICAgIGZvciAoUmVuZGVyT2JqZWN0QW5pbWF0aW9uTWFwOjpj
b25zdF9pdGVyYXRvciBpdCA9IG1fY29tcG9zaXRlQW5pbWF0aW9ucy5iZWdpbigpOyBpdCAhPSBh
bmltYXRpb25zRW5kOyArK2l0KSB7CiAgICAgICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBp
dC0+Zmlyc3Q7Ci0gICAgICAgIFJlZlB0cjxDb21wb3NpdGVBbmltYXRpb24+IGNvbXBBbmltID0g
aXQtPnNlY29uZDsKLSAgICAgICAgaWYgKHJlbmRlcmVyLT5kb2N1bWVudCgpID09IGRvY3VtZW50
KQorICAgICAgICBpZiAocmVuZGVyZXItPmRvY3VtZW50KCkgPT0gZG9jdW1lbnQpIHsKKyAgICAg
ICAgICAgIENvbXBvc2l0ZUFuaW1hdGlvbiogY29tcEFuaW0gPSBpdC0+c2Vjb25kLmdldCgpOwog
ICAgICAgICAgICAgY29tcEFuaW0tPnJlc3VtZUFuaW1hdGlvbnMoKTsKKyAgICAgICAgfQogICAg
IH0KICAgICAKICAgICB1cGRhdGVBbmltYXRpb25UaW1lcigpOwpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9wYWdlL2FuaW1hdGlvbi9Db21wb3NpdGVBbmltYXRpb24uY3BwIGIvV2ViQ29yZS9wYWdlL2Fu
aW1hdGlvbi9Db21wb3NpdGVBbmltYXRpb24uY3BwCmluZGV4IGZmZWZhYWUuLmQ2MDQ1NWEgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ29tcG9zaXRlQW5pbWF0aW9uLmNwcAor
KysgYi9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NvbXBvc2l0ZUFuaW1hdGlvbi5jcHAKQEAgLTEx
MCw3ICsxMTAsMTEgQEAgdm9pZCBDb21wb3NpdGVBbmltYXRpb246OnVwZGF0ZVRyYW5zaXRpb25z
KFJlbmRlck9iamVjdCogcmVuZGVyZXIsIFJlbmRlclN0eWxlKgogICAgICAgICAgICAgYm9vbCBl
cXVhbCA9IHRydWU7CiAKICAgICAgICAgICAgIGlmIChpbXBsQW5pbSkgewotICAgICAgICAgICAg
ICAgIC8vIFRoaXMgaW1wbEFuaW0gbWlnaHQgbm90IGJlIGFuIGFscmVhZHkgcnVubmluZyB0cmFu
c2l0aW9uLiBJdCBtaWdodCBiZQorICAgICAgICAgICAgICAgIC8vIFRoaXMgbWlnaHQgYmUgYSB0
cmFuc2l0aW9uIHRoYXQgaXMganVzdCBmaW5pc2hpbmcuIFRoYXQgd291bGQgYmUgdGhlIGNhc2UK
KyAgICAgICAgICAgICAgICAvLyBpZiBpdCB3ZXJlIHBvc3RBY3RpdmUuIEJ1dCB3ZSBzdGlsbCBu
ZWVkIHRvIGNoZWNrIGZvciBlcXVhbGl0eSBiZWNhdXNlCisgICAgICAgICAgICAgICAgLy8gaXQg
Y291bGQgYmUganVzdCBmaW5pc2hpbmcgQU5EIGNoYW5naW5nIHRvIGEgbmV3IGdvYWwgc3RhdGUu
CisgICAgICAgICAgICAgICAgLy8KKyAgICAgICAgICAgICAgICAvLyBUaGlzIGltcGxBbmltIG1p
Z2h0IGFsc28gbm90IGJlIGFuIGFscmVhZHkgcnVubmluZyB0cmFuc2l0aW9uLiBJdCBtaWdodCBi
ZQogICAgICAgICAgICAgICAgIC8vIG5ld2x5IGFkZGVkIHRvIHRoZSBsaXN0IGluIGEgcHJldmlv
dXMgaXRlcmF0aW9uLiBUaGlzIHdvdWxkIGhhcHBlbiBpZgogICAgICAgICAgICAgICAgIC8vIHlv
dSBoYXZlIGJvdGggYW4gZXhwbGljaXQgdHJhbnNpdGlvbi1wcm9wZXJ0eSBhbmQgJ2FsbCcgaW4g
dGhlIHNhbWUKICAgICAgICAgICAgICAgICAvLyBsaXN0LiBJbiB0aGlzIGNhc2UsIHRoZSBsYXR0
ZXIgb25lIG92ZXJyaWRlcyB0aGUgZWFybGllciBvbmUsIHNvIHdlCkBAIC0yNDUsNyArMjQ5LDcg
QEAgUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gQ29tcG9zaXRlQW5pbWF0aW9uOjphbmltYXRlKFJl
bmRlck9iamVjdCogcmVuZGVyZXIsIFJlbmQKICAgICAgICAgICAgIGtleWZyYW1lQW5pbS0+YW5p
bWF0ZSh0aGlzLCByZW5kZXJlciwgY3VycmVudFN0eWxlLCB0YXJnZXRTdHlsZSwgcmVzdWx0U3R5
bGUpOwogICAgIH0KIAotICAgIGNsZWFudXBGaW5pc2hlZEFuaW1hdGlvbnMocmVuZGVyZXIpOwor
ICAgIGNsZWFudXBGaW5pc2hlZEFuaW1hdGlvbnMoKTsKIAogICAgIHJldHVybiByZXN1bHRTdHls
ZSA/IHJlc3VsdFN0eWxlLnJlbGVhc2UoKSA6IHRhcmdldFN0eWxlOwogfQpAQCAtMzM3LDcgKzM0
MSw3IEBAIFBhc3NSZWZQdHI8S2V5ZnJhbWVBbmltYXRpb24+IENvbXBvc2l0ZUFuaW1hdGlvbjo6
Z2V0QW5pbWF0aW9uRm9yUHJvcGVydHkoaW50IHByCiAgICAgcmV0dXJuIHJldHZhbDsKIH0KIAot
dm9pZCBDb21wb3NpdGVBbmltYXRpb246OmNsZWFudXBGaW5pc2hlZEFuaW1hdGlvbnMoUmVuZGVy
T2JqZWN0KikKK3ZvaWQgQ29tcG9zaXRlQW5pbWF0aW9uOjpjbGVhbnVwRmluaXNoZWRBbmltYXRp
b25zKCkKIHsKICAgICBpZiAoaXNTdXNwZW5kZWQoKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9Db21wb3NpdGVBbmltYXRpb24uaCBiL1dlYkNv
cmUvcGFnZS9hbmltYXRpb24vQ29tcG9zaXRlQW5pbWF0aW9uLmgKaW5kZXggMTlmOWZhMi4uNzM5
Y2ZkYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9Db21wb3NpdGVBbmltYXRp
b24uaAorKysgYi9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NvbXBvc2l0ZUFuaW1hdGlvbi5oCkBA
IC03NCw3ICs3NCw3IEBAIHB1YmxpYzoKICAgICAKICAgICBQYXNzUmVmUHRyPEtleWZyYW1lQW5p
bWF0aW9uPiBnZXRBbmltYXRpb25Gb3JQcm9wZXJ0eShpbnQgcHJvcGVydHkpIGNvbnN0OwogCi0g
ICAgdm9pZCBjbGVhbnVwRmluaXNoZWRBbmltYXRpb25zKFJlbmRlck9iamVjdCopOworICAgIHZv
aWQgY2xlYW51cEZpbmlzaGVkQW5pbWF0aW9ucygpOwogCiAgICAgdm9pZCBvdmVycmlkZUltcGxp
Y2l0QW5pbWF0aW9ucyhpbnQgcHJvcGVydHkpOwogICAgIHZvaWQgcmVzdW1lT3ZlcnJpZGRlbklt
cGxpY2l0QW5pbWF0aW9ucyhpbnQgcHJvcGVydHkpOwo=
</data>
<flag name="review"
          id="14619"
          type_id="1"
          status="+"
          setter="mitz"
    />
          </attachment>
      

    </bug>

</bugzilla>