<?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>102635</bug_id>
          
          <creation_ts>2012-11-18 19:57:11 -0800</creation_ts>
          <short_desc>Optimize layer updates after scrolling</short_desc>
          <delta_ts>2012-11-27 07:49:49 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</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="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>bdakin</cc>
    
    <cc>d-r</cc>
    
    <cc>eric</cc>
    
    <cc>mitz</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>tmpsantos</cc>
    
    <cc>vollick</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>770294</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-11-18 19:57:11 -0800</bug_when>
    <thetext>Optimize layer updates after scrolling</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770300</commentid>
    <comment_count>1</comment_count>
      <attachid>174881</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-11-18 20:10:22 -0800</bug_when>
    <thetext>Created attachment 174881
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770301</commentid>
    <comment_count>2</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-11-18 20:11:29 -0800</bug_when>
    <thetext>&lt;rdar://problem/12726580&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>775727</commentid>
    <comment_count>3</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-11-26 11:45:22 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/135746</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>775761</commentid>
    <comment_count>4</comment_count>
    <who name="Thiago Marcos P. Santos">tmpsantos</who>
    <bug_when>2012-11-26 12:18:25 -0800</bug_when>
    <thetext>This crash of EFL Debug Bot after this patch, looks related:

crash log for WebProcess (pid &lt;unknown&gt;):
STDOUT: &lt;empty&gt;
STDERR: ASSERTION FAILED: m_repaintRect == renderer()-&gt;clippedOverflowRectForRepaint(renderer()-&gt;containerForRepaint())
STDERR: /home/buildslave-1/webkit-buildslave/efl-linux-64-debug-wk2/build/Source/WebCore/rendering/RenderLayer.cpp(554) : void WebCore::RenderLayer::updateLayerPositionsAfterScroll(WebCore::RenderGeometryMap*, WebCore::RenderLayer::UpdateLayerPositionsAfterScrollFlags)
STDERR: 1   0x7f0a3827db04 WebCore::RenderLayer::updateLayerPositionsAfterScroll(WebCore::RenderGeometryMap*, unsigned int)
STDERR: 2   0x7f0a3827dbdf WebCore::RenderLayer::updateLayerPositionsAfterScroll(WebCore::RenderGeometryMap*, unsigned int)
STDERR: 3   0x7f0a3827dbdf WebCore::RenderLayer::updateLayerPositionsAfterScroll(WebCore::RenderGeometryMap*, unsigned int)
STDERR: 4   0x7f0a3827dbdf WebCore::RenderLayer::updateLayerPositionsAfterScroll(WebCore::RenderGeometryMap*, unsigned int)
STDERR: 5   0x7f0a3827d912 WebCore::RenderLayer::updateLayerPositionsAfterOverflowScroll()
STDERR: 6   0x7f0a38281d2a WebCore::RenderLayer::scrollTo(int, int)
STDERR: 7   0x7f0a38284557 WebCore::RenderLayer::setScrollOffset(WebCore::IntPoint const&amp;)
STDERR: 8   0x7f0a380495fa WebCore::ScrollableArea::scrollPositionChanged(WebCore::IntPoint const&amp;)
STDERR: 9   0x7f0a38049895 WebCore::ScrollableArea::setScrollOffsetFromAnimation(WebCore::IntPoint const&amp;)
STDERR: 10  0x7f0a38048f4d WebCore::ScrollAnimator::notifyPositionChanged()
STDERR: 11  0x7f0a38048981 WebCore::ScrollAnimator::scrollToOffsetWithoutAnimation(WebCore::FloatPoint const&amp;)
STDERR: 12  0x7f0a38049490 WebCore::ScrollableArea::scrollToOffsetWithoutAnimation(WebCore::FloatPoint const&amp;)
STDERR: 13  0x7f0a38281b5e WebCore::RenderLayer::scrollToOffset(WebCore::IntSize const&amp;, WebCore::RenderLayer::ScrollOffsetClamping)
STDERR: 14  0x7f0a38218247 WebCore::RenderLayer::scrollToYOffset(int, WebCore::RenderLayer::ScrollOffsetClamping)
STDERR: 15  0x7f0a381fea43 WebCore::RenderBox::setScrollTop(int)
STDERR: 16  0x7f0a37a9f879 WebCore::Element::setScrollTop(int)
STDERR: 17  0x7f0a386fa921 WebCore::setJSElementScrollTop(JSC::ExecState*, JSC::JSObject*, JSC::JSValue)
STDERR: 18  0x7f0a387035f0 bool JSC::lookupPut&lt;WebCore::JSElement&gt;(JSC::ExecState*, JSC::PropertyName, JSC::JSValue, JSC::HashTable const*, WebCore::JSElement*, bool)
STDERR: 19  0x7f0a38702f9c void JSC::lookupPut&lt;WebCore::JSElement, WebCore::JSNode&gt;(JSC::ExecState*, JSC::PropertyName, JSC::JSValue, JSC::HashTable const*, WebCore::JSElement*, JSC::PutPropertySlot&amp;)
STDERR: 20  0x7f0a386fa849 WebCore::JSElement::put(JSC::JSCell*, JSC::ExecState*, JSC::PropertyName, JSC::JSValue, JSC::PutPropertySlot&amp;)
STDERR: 21  0x7f0a3879e8c2 void JSC::lookupPut&lt;WebCore::JSHTMLElement, WebCore::JSElement&gt;(JSC::ExecState*, JSC::PropertyName, JSC::JSValue, JSC::HashTable const*, WebCore::JSHTMLElement*, JSC::PutPropertySlot&amp;)
STDERR: 22  0x7f0a3879cae1 WebCore::JSHTMLElement::put(JSC::JSCell*, JSC::ExecState*, JSC::PropertyName, JSC::JSValue, JSC::PutPropertySlot&amp;)
STDERR: 23  0x7f0a38796eab void JSC::lookupPut&lt;WebCore::JSHTMLDivElement, WebCore::JSHTMLElement&gt;(JSC::ExecState*, JSC::PropertyName, JSC::JSValue, JSC::HashTable const*, WebCore::JSHTMLDivElement*, JSC::PutPropertySlot&amp;)
STDERR: 24  0x7f0a38796465 WebCore::JSHTMLDivElement::put(JSC::JSCell*, JSC::ExecState*, JSC::PropertyName, JSC::JSValue, JSC::PutPropertySlot&amp;)
STDERR: 25  0x7f0a3211da7b JSC::JSValue::put(JSC::ExecState*, JSC::PropertyName, JSC::JSValue, JSC::PutPropertySlot&amp;)
STDERR: 26  0x7f0a3237c398
STDERR: 27  0x7f0a32385603</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>775774</commentid>
    <comment_count>5</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-11-26 12:33:50 -0800</bug_when>
    <thetext>Which test is asserting?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>775792</commentid>
    <comment_count>6</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-11-26 12:50:39 -0800</bug_when>
    <thetext>I see that it&apos;s http/tests/inspector/network/network-xhr-replay.html.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>174881</attachid>
            <date>2012-11-18 20:10:22 -0800</date>
            <delta_ts>2012-11-24 18:38:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-102635-20121118200813.patch</filename>
            <type>text/plain</type>
            <size>12825</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1MDg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjAwZmIxNTkyYWZlNDJh
MmM1YmNmNjFlZjZmNTc4NGIxMjFmZTM4Yy4uMThhM2I4NjUwMTYzZWZlNDFmYzg0M2I1M2NmYmYw
MWJhZGQwYzJjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDEyLTExLTE4ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIE9wdGltaXplIGxh
eWVyIHVwZGF0ZXMgYWZ0ZXIgc2Nyb2xsaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMDI2MzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICB1cGRhdGVMYXllclBvc2l0aW9uc0FmdGVyU2Nyb2xsKCkgcHJl
dmlvdXNseSB1bmNvbmRpdGlvbmFsbHkgY2xlYXJlZCBjbGlwCisgICAgICAgIHJlY3RzLCBhbmQg
cmVjb21wdXRlZCByZXBhaW50IHJlY3RzIHRvbyBvZnRlbi4gUmVjb21wdXRpbmcgYm90aCBvZiB0
aGVzZQorICAgICAgICBjYW4gYmUgdmVyeSBleHBlbnNpdmUsIGFzIHRoZXkgaW52b2x2ZSB0cmVl
IHdhbGtzIHVwIHRvIHRoZSByb290LgorICAgICAgICAKKyAgICAgICAgV2UgY2FuIG9wdGltaXpl
IGxheWVyIHVwZGF0ZXMgYWZ0ZXIgZG9jdW1lbnQgc2Nyb2xsaW5nIGJ5IG9ubHkgY2xlYXJpbmcg
Y2xpcAorICAgICAgICByZWN0cywgYW5kIHJlY29tcHV0aW5nIHJlcGFpbnQgcmVjdHMsIGlmIHdl
IGVuY291bnRlciBhIGZpeGVkLSBvciBzdGlja3ktcG9zaXRpb24KKyAgICAgICAgZWxlbWVudC4g
Rm9yIG92ZXJmbG93IHNjcm9sbCwgd2UgaGF2ZSB0byBjbGVhciBjbGlwIHJlY3RzIGFuZCByZWNv
bXB1dGUgcmVwYWludCByZWN0cy4KKworICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6cmVwYWludEZpeGVkRWxlbWVudHNBZnRlclNjcm9s
bGluZyk6IENhbGwgdXBkYXRlTGF5ZXJQb3NpdGlvbnNBZnRlckRvY3VtZW50U2Nyb2xsKCkuCisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckxheWVyOjp1cGRhdGVMYXllclBvc2l0aW9ucyk6IENhbGwgY2xlYXJDbGlwUmVjdHMoKSBi
ZWNhdXNlCisgICAgICAgIHVwZGF0ZUxheWVyUG9zaXRpb24oKSBubyBsb25nZXIgZG9lcy4KKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjp1cGRhdGVMYXllclBvc2l0aW9uc0FmdGVyRG9j
dW1lbnRTY3JvbGwpOiBWZXJzaW9uIG9mIHVwZGF0ZUxheWVyUG9zaXRpb25zQWZ0ZXJTY3JvbGwo
KQorICAgICAgICB0aGF0IGlzIGZvciBkb2N1bWVudCBzY3JvbGxzLiBJdCBoYXMgbm8gbmVlZCB0
byBwdXNoIGxheWVycyB0byB0aGUgZ2VvbWV0cnkgbWFwLgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyTGF5ZXI6OnVwZGF0ZUxheWVyUG9zaXRpb25zQWZ0ZXJPdmVyZmxvd1Njcm9sbCk6IFB1c2hl
cyBsYXllcnMgdG8gdGhlIGdlb21ldHJ5IG1hcCwKKyAgICAgICAgYW5kIGNhbGxzIHVwZGF0ZUxh
eWVyUG9zaXRpb25zQWZ0ZXJTY3JvbGwoKSB3aXRoIHRoZSBJc092ZXJmbG93U2Nyb2xsIGZsYWcu
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6dXBkYXRlTGF5ZXJQb3NpdGlvbnNBZnRl
clNjcm9sbCk6IFNldCB0aGUgSGFzQ2hhbmdlZEFuY2VzdG9yIGZsYWcKKyAgICAgICAgaWYgb3Vy
IGxvY2F0aW9uIGNoYW5nZWQsIGFuZCB1c2UgdGhhdCBhcyBhIGhpbnQgdG8gY2xlYXIgY2FjaGVk
IHJlY3RzLiBCZSBtb3JlIGNvbnNlcnZhdGl2ZQorICAgICAgICB0aGFuIGJlZm9yZSBhYm91dCB3
aGVuIHRvIGNsZWFyIGNhY2hlZCBjbGlwIHJlY3RzLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TGF5ZXI6OnVwZGF0ZUxheWVyUG9zaXRpb24pOiAgTW92ZSByZXNwb25zaWJpbGl0eSBmb3IgY2Fs
bGluZworICAgICAgICBjbGVhckNsaXBSZWN0cygpIG91ZiBvZiB0aGlzIGZ1bmN0aW9uIGFuZCBp
bnRvIGNhbGxlcnMuCisgICAgICAgIChUaGUgb25lIGNhbGxlciBvdXRzaWRlIFJlbmRlckxheWVy
IHdpbGwgYmUgcmVtb3ZlZCB2aWEgYnVnIDEwMjYyNCkuCisgICAgICAgIFJldHVybiBhIGJvb2wg
aW5kaWNhdGluZyB3aGV0aGVyIG91ciBwb3NpdGlvbiBjaGFuZ2VkLgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTGF5ZXI6OnNjcm9sbFRvKTogQ2FsbCB1cGRhdGVMYXllclBvc2l0aW9uc0FmdGVy
T3ZlcmZsb3dTY3JvbGwoKS4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjp1cGRhdGVD
bGlwUmVjdHMpOiBBZGRlZCBzb21lICNpZmRlZmZlZCBvdXQgY29kZSB0aGF0IGlzIHVzZWZ1bAor
ICAgICAgICB0byB2ZXJpZnkgdGhhdCBjYWNoZWQgY2xpcHMgYXJlIGNvcnJlY3Q7IGl0J3MgdG9v
IHNsb3cgdG8gbGVhdmUgZW5hYmxlZCBpbiBkZWJ1ZyBidWlsZHMuCisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckxheWVyLmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6c2V0TG9j
YXRpb24pOiBDaGFuZ2UgdG8gdGFrZSBhIExheW91dFBvaW50LCByYXRoZXIgdGhhbiBzZXBhcmF0
ZQorICAgICAgICB4IGFuZCB5LgorCiAyMDEyLTExLTE4ICBLZW50YXJvIEhhcmEgIDxoYXJha2Vu
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZW1vdmUgR2VuZXJhdGVNb2R1bGUoKSBmcm9tIGFs
bCBjb2RlIGdlbmVyYXRvcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVW
aWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAppbmRleCA5M2NlOTFi
ZjAyODA4MjJmNjk5OTU1NDRlZmUzMDg2NDE5NjkzYjQxLi5kY2RhZTIxM2UxODg4OWRmNzhjYmIz
YmI0NDJlZjc3YjE1YmM1MWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1l
Vmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCkBAIC0xODIy
LDcgKzE4MjIsNyBAQCB2b2lkIEZyYW1lVmlldzo6cmVwYWludEZpeGVkRWxlbWVudHNBZnRlclNj
cm9sbGluZygpCiAgICAgaWYgKCFtX25lc3RlZExheW91dENvdW50ICYmIGhhc1ZpZXdwb3J0Q29u
c3RyYWluZWRPYmplY3RzKCkpIHsKICAgICAgICAgaWYgKFJlbmRlclZpZXcqIHJvb3QgPSByb290
UmVuZGVyZXIodGhpcykpIHsKICAgICAgICAgICAgIHJvb3QtPnVwZGF0ZVdpZGdldFBvc2l0aW9u
cygpOwotICAgICAgICAgICAgcm9vdC0+bGF5ZXIoKS0+dXBkYXRlTGF5ZXJQb3NpdGlvbnNBZnRl
clNjcm9sbCgpOworICAgICAgICAgICAgcm9vdC0+bGF5ZXIoKS0+dXBkYXRlTGF5ZXJQb3NpdGlv
bnNBZnRlckRvY3VtZW50U2Nyb2xsKCk7CiAgICAgICAgIH0KICAgICB9CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAppbmRleCBiYzQ5ZmU4MjMxZTU1NjUyZmZjMGMz
NTUwMzMxZDc1NzlmZDlkMDMzLi41YjM1YjVmYTM5MDBjMGRlMzU2MjljYzdkODI4OWRhNjg4NmM1
YjU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKQEAgLTM1Miw2
ICszNTIsOSBAQCB2b2lkIFJlbmRlckxheWVyOjp1cGRhdGVMYXllclBvc2l0aW9ucyhSZW5kZXJH
ZW9tZXRyeU1hcCogZ2VvbWV0cnlNYXAsIFVwZGF0ZUxheQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gdG8gb3VyIHBhcmVudCBsYXllci4KICAgICBpZiAoZ2VvbWV0cnlNYXApCiAgICAg
ICAgIGdlb21ldHJ5TWFwLT5wdXNoTWFwcGluZ3NUb0FuY2VzdG9yKHRoaXMsIHBhcmVudCgpKTsK
KworICAgIC8vIENsZWFyIG91ciBjYWNoZWQgY2xpcCByZWN0IGluZm9ybWF0aW9uLgorICAgIGNs
ZWFyQ2xpcFJlY3RzKCk7CiAgICAgCiAgICAgaWYgKGhhc092ZXJmbG93Q29udHJvbHMoKSkgewog
ICAgICAgICBMYXlvdXRQb2ludCBvZmZzZXRGcm9tUm9vdDsKQEAgLTUwMywxMyArNTA2LDI0IEBA
IHZvaWQgUmVuZGVyTGF5ZXI6OmNsZWFyUmVwYWludFJlY3RzKCkKICAgICBtX291dGxpbmVCb3gg
PSBJbnRSZWN0KCk7CiB9CiAKLXZvaWQgUmVuZGVyTGF5ZXI6OnVwZGF0ZUxheWVyUG9zaXRpb25z
QWZ0ZXJTY3JvbGwoKQordm9pZCBSZW5kZXJMYXllcjo6dXBkYXRlTGF5ZXJQb3NpdGlvbnNBZnRl
ckRvY3VtZW50U2Nyb2xsKCkKK3sKKyAgICBBU1NFUlQodGhpcyA9PSByZW5kZXJlcigpLT52aWV3
KCktPmxheWVyKCkpOworCisgICAgUmVuZGVyR2VvbWV0cnlNYXAgZ2VvbWV0cnlNYXAoVXNlVHJh
bnNmb3Jtcyk7CisgICAgdXBkYXRlTGF5ZXJQb3NpdGlvbnNBZnRlclNjcm9sbCgmZ2VvbWV0cnlN
YXApOworfQorCit2b2lkIFJlbmRlckxheWVyOjp1cGRhdGVMYXllclBvc2l0aW9uc0FmdGVyT3Zl
cmZsb3dTY3JvbGwoKQogewogICAgIFJlbmRlckdlb21ldHJ5TWFwIGdlb21ldHJ5TWFwKFVzZVRy
YW5zZm9ybXMpOwogICAgIFJlbmRlclZpZXcqIHZpZXcgPSByZW5kZXJlcigpLT52aWV3KCk7CiAg
ICAgaWYgKHRoaXMgIT0gdmlldy0+bGF5ZXIoKSkKICAgICAgICAgZ2VvbWV0cnlNYXAucHVzaE1h
cHBpbmdzVG9BbmNlc3RvcihwYXJlbnQoKSwgMCk7Ci0gICAgdXBkYXRlTGF5ZXJQb3NpdGlvbnNB
ZnRlclNjcm9sbCgmZ2VvbWV0cnlNYXApOworCisgICAgLy8gRklYTUU6IHdoeSBpcyBpdCBPSyB0
byBub3QgY2hlY2sgdGhlIGFuY2VzdG9ycyBvZiB0aGlzIGxheWVyIGluIG9yZGVyIHRvCisgICAg
Ly8gaW5pdGlhbGl6ZSB0aGUgSGFzU2VlblZpZXdwb3J0Q29uc3RyYWluZWRBbmNlc3RvciBhbmQg
SGFzU2VlbkFuY2VzdG9yV2l0aE92ZXJmbG93Q2xpcCBmbGFncz8KKyAgICB1cGRhdGVMYXllclBv
c2l0aW9uc0FmdGVyU2Nyb2xsKCZnZW9tZXRyeU1hcCwgSXNPdmVyZmxvd1Njcm9sbCk7CiB9CiAK
IHZvaWQgUmVuZGVyTGF5ZXI6OnVwZGF0ZUxheWVyUG9zaXRpb25zQWZ0ZXJTY3JvbGwoUmVuZGVy
R2VvbWV0cnlNYXAqIGdlb21ldHJ5TWFwLCBVcGRhdGVMYXllclBvc2l0aW9uc0FmdGVyU2Nyb2xs
RmxhZ3MgZmxhZ3MpCkBAIC01MjQsMjUgKzUzOCwzMiBAQCB2b2lkIFJlbmRlckxheWVyOjp1cGRh
dGVMYXllclBvc2l0aW9uc0FmdGVyU2Nyb2xsKFJlbmRlckdlb21ldHJ5TWFwKiBnZW9tZXRyeU1h
cAogICAgIGlmICghbV9oYXNWaXNpYmxlRGVzY2VuZGFudCAmJiAhbV9oYXNWaXNpYmxlQ29udGVu
dCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgdXBkYXRlTGF5ZXJQb3NpdGlvbigpOworICAgIGJv
b2wgcG9zaXRpb25DaGFuZ2VkID0gdXBkYXRlTGF5ZXJQb3NpdGlvbigpOworICAgIGlmIChwb3Np
dGlvbkNoYW5nZWQpCisgICAgICAgIGZsYWdzIHw9IEhhc0NoYW5nZWRBbmNlc3RvcjsKIAogICAg
IGlmIChnZW9tZXRyeU1hcCkKICAgICAgICAgZ2VvbWV0cnlNYXAtPnB1c2hNYXBwaW5nc1RvQW5j
ZXN0b3IodGhpcywgcGFyZW50KCkpOwogCi0gICAgaWYgKChmbGFncyAmIEhhc1NlZW5WaWV3cG9y
dENvbnN0cmFpbmVkQW5jZXN0b3IpIHx8IHJlbmRlcmVyKCktPnN0eWxlKCktPmhhc1ZpZXdwb3J0
Q29uc3RyYWluZWRQb3NpdGlvbigpKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBJcyBpdCB3b3J0aCBw
YXNzaW5nIHRoZSBvZmZzZXRGcm9tUm9vdCBhcm91bmQgbGlrZSBpbiB1cGRhdGVMYXllclBvc2l0
aW9ucz8KLSAgICAgICAgLy8gRklYTUU6IFdlIGNvdWxkIHRyYWNrIHRoZSByZXBhaW50IGNvbnRh
aW5lciBhcyB3ZSB3YWxrIGRvd24gdGhlIHRyZWUuCi0gICAgICAgIGNvbXB1dGVSZXBhaW50UmVj
dHMocmVuZGVyZXIoKS0+Y29udGFpbmVyRm9yUmVwYWludCgpLCBnZW9tZXRyeU1hcCk7CisgICAg
aWYgKGZsYWdzICYgSGFzQ2hhbmdlZEFuY2VzdG9yIHx8IGZsYWdzICYgSGFzU2VlblZpZXdwb3J0
Q29uc3RyYWluZWRBbmNlc3RvciB8fCBmbGFncyAmIElzT3ZlcmZsb3dTY3JvbGwpCisgICAgICAg
IGNsZWFyQ2xpcFJlY3RzKCk7CisKKyAgICBpZiAocmVuZGVyZXIoKS0+c3R5bGUoKS0+aGFzVmll
d3BvcnRDb25zdHJhaW5lZFBvc2l0aW9uKCkpCiAgICAgICAgIGZsYWdzIHw9IEhhc1NlZW5WaWV3
cG9ydENvbnN0cmFpbmVkQW5jZXN0b3I7Ci0gICAgfSBlbHNlIGlmICgoZmxhZ3MgJiBIYXNTZWVu
QW5jZXN0b3JXaXRoT3ZlcmZsb3dDbGlwKSAmJiAhbV9jYW5Ta2lwUmVwYWludFJlY3RzVXBkYXRl
T25TY3JvbGwpIHsKLSAgICAgICAgLy8gSWYgd2UgaGF2ZSBzZWVuIGFuIG92ZXJmbG93IGNsaXAs
IHdlIHNob3VsZCB1cGRhdGUgb3VyIHJlcGFpbnQgcmVjdHMgYXMgY2xpcHBlZE92ZXJmbG93UmVj
dEZvclJlcGFpbnQKLSAgICAgICAgLy8gaW50ZXJzZWN0cyBpdCB3aXRoIG91ciBhbmNlc3RvciBv
dmVyZmxvdyBjbGlwIHRoYXQgbWF5IGhhdmUgbW92ZWQuCi0gICAgICAgIGNvbXB1dGVSZXBhaW50
UmVjdHMocmVuZGVyZXIoKS0+Y29udGFpbmVyRm9yUmVwYWludCgpLCBnZW9tZXRyeU1hcCk7Ci0g
ICAgfQogCiAgICAgaWYgKHJlbmRlcmVyKCktPmhhc092ZXJmbG93Q2xpcCgpKQogICAgICAgICBm
bGFncyB8PSBIYXNTZWVuQW5jZXN0b3JXaXRoT3ZlcmZsb3dDbGlwOwogCisgICAgaWYgKGZsYWdz
ICYgSGFzU2VlblZpZXdwb3J0Q29uc3RyYWluZWRBbmNlc3RvcgorICAgICAgICB8fCAoZmxhZ3Mg
JiBJc092ZXJmbG93U2Nyb2xsICYmIGZsYWdzICYgSGFzU2VlbkFuY2VzdG9yV2l0aE92ZXJmbG93
Q2xpcCAmJiAhbV9jYW5Ta2lwUmVwYWludFJlY3RzVXBkYXRlT25TY3JvbGwpKSB7CisgICAgICAg
IC8vIEZJWE1FOiBXZSBjb3VsZCB0cmFjayB0aGUgcmVwYWludCBjb250YWluZXIgYXMgd2Ugd2Fs
ayBkb3duIHRoZSB0cmVlLgorICAgICAgICBjb21wdXRlUmVwYWludFJlY3RzKHJlbmRlcmVyKCkt
PmNvbnRhaW5lckZvclJlcGFpbnQoKSwgZ2VvbWV0cnlNYXApOworICAgIH0gZWxzZSB7CisgICAg
ICAgIC8vIENoZWNrIHRoYXQgb3VyIGNhY2hlZCByZWN0cyBhcmUgY29ycmVjdC4KKyAgICAgICAg
QVNTRVJUKG1fcmVwYWludFJlY3QgPT0gcmVuZGVyZXIoKS0+Y2xpcHBlZE92ZXJmbG93UmVjdEZv
clJlcGFpbnQocmVuZGVyZXIoKS0+Y29udGFpbmVyRm9yUmVwYWludCgpKSk7CisgICAgICAgIEFT
U0VSVChtX291dGxpbmVCb3ggPT0gcmVuZGVyZXIoKS0+b3V0bGluZUJvdW5kc0ZvclJlcGFpbnQo
cmVuZGVyZXIoKS0+Y29udGFpbmVyRm9yUmVwYWludCgpLCBnZW9tZXRyeU1hcCkpOworICAgIH0K
KyAgICAKICAgICBmb3IgKFJlbmRlckxheWVyKiBjaGlsZCA9IGZpcnN0Q2hpbGQoKTsgY2hpbGQ7
IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpCiAgICAgICAgIGNoaWxkLT51cGRhdGVMYXll
clBvc2l0aW9uc0FmdGVyU2Nyb2xsKGdlb21ldHJ5TWFwLCBmbGFncyk7CiAKQEAgLTg0Myw3ICs4
NjQsNyBAQCBib29sIFJlbmRlckxheWVyOjp1cGRhdGUzRFRyYW5zZm9ybWVkRGVzY2VuZGFudFN0
YXR1cygpCiAgICAgcmV0dXJuIGhhczNEVHJhbnNmb3JtKCk7CiB9CiAKLXZvaWQgUmVuZGVyTGF5
ZXI6OnVwZGF0ZUxheWVyUG9zaXRpb24oKQorYm9vbCBSZW5kZXJMYXllcjo6dXBkYXRlTGF5ZXJQ
b3NpdGlvbigpCiB7CiAgICAgTGF5b3V0UG9pbnQgbG9jYWxQb2ludDsKICAgICBMYXlvdXRTaXpl
IGlubGluZUJvdW5kaW5nQm94T2Zmc2V0OyAvLyBXZSBkb24ndCBwdXQgdGhpcyBpbnRvIHRoZSBS
ZW5kZXJMYXllciB4L3kgZm9yIGlubGluZXMsIHNvIHdlIG5lZWQgdG8gc3VidHJhY3QgaXQgb3V0
IHdoZW4gZG9uZS4KQEAgLTg1OSw5ICs4ODAsNiBAQCB2b2lkIFJlbmRlckxheWVyOjp1cGRhdGVM
YXllclBvc2l0aW9uKCkKICAgICAgICAgbG9jYWxQb2ludCArPSBib3gtPnRvcExlZnRMb2NhdGlv
bk9mZnNldCgpOwogICAgIH0KIAotICAgIC8vIENsZWFyIG91ciBjYWNoZWQgY2xpcCByZWN0IGlu
Zm9ybWF0aW9uLgotICAgIGNsZWFyQ2xpcFJlY3RzKCk7Ci0gCiAgICAgaWYgKCFyZW5kZXJlcigp
LT5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSAmJiByZW5kZXJlcigpLT5wYXJlbnQoKSkgewogICAg
ICAgICAvLyBXZSBtdXN0IGFkanVzdCBvdXIgcG9zaXRpb24gYnkgd2Fsa2luZyB1cCB0aGUgcmVu
ZGVyIHRyZWUgbG9va2luZyBmb3IgdGhlCiAgICAgICAgIC8vIG5lYXJlc3QgZW5jbG9zaW5nIG9i
amVjdCB3aXRoIGEgbGF5ZXIuCkBAIC05MDksOCArOTI3LDExIEBAIHZvaWQgUmVuZGVyTGF5ZXI6
OnVwZGF0ZUxheWVyUG9zaXRpb24oKQogICAgICAgICBsb2NhbFBvaW50IC09IHNjcm9sbE9mZnNl
dDsKICAgICB9CiAgICAgCisgICAgYm9vbCBwb3NpdGlvbk9yT2Zmc2V0Q2hhbmdlZCA9IGZhbHNl
OwogICAgIGlmIChyZW5kZXJlcigpLT5pc0luRmxvd1Bvc2l0aW9uZWQoKSkgewotICAgICAgICBt
X29mZnNldEZvckluRmxvd1Bvc2l0aW9uID0gdG9SZW5kZXJCb3hNb2RlbE9iamVjdChyZW5kZXJl
cigpKS0+b2Zmc2V0Rm9ySW5GbG93UG9zaXRpb24oKTsKKyAgICAgICAgTGF5b3V0U2l6ZSBuZXdP
ZmZzZXQgPSB0b1JlbmRlckJveE1vZGVsT2JqZWN0KHJlbmRlcmVyKCkpLT5vZmZzZXRGb3JJbkZs
b3dQb3NpdGlvbigpOworICAgICAgICBwb3NpdGlvbk9yT2Zmc2V0Q2hhbmdlZCA9IG5ld09mZnNl
dCAhPSBtX29mZnNldEZvckluRmxvd1Bvc2l0aW9uOworICAgICAgICBtX29mZnNldEZvckluRmxv
d1Bvc2l0aW9uID0gbmV3T2Zmc2V0OwogICAgICAgICBsb2NhbFBvaW50Lm1vdmUobV9vZmZzZXRG
b3JJbkZsb3dQb3NpdGlvbik7CiAgICAgfSBlbHNlIHsKICAgICAgICAgbV9vZmZzZXRGb3JJbkZs
b3dQb3NpdGlvbiA9IExheW91dFNpemUoKTsKQEAgLTkxOCw3ICs5MzksMTAgQEAgdm9pZCBSZW5k
ZXJMYXllcjo6dXBkYXRlTGF5ZXJQb3NpdGlvbigpCiAKICAgICAvLyBGSVhNRTogV2UnZCByZWFs
bHkgbGlrZSB0byBqdXN0IGdldCByaWQgb2YgdGhlIGNvbmNlcHQgb2YgYSBsYXllciByZWN0YW5n
bGUgYW5kIHJlbHkgb24gdGhlIHJlbmRlcmVycy4KICAgICBsb2NhbFBvaW50IC09IGlubGluZUJv
dW5kaW5nQm94T2Zmc2V0OwotICAgIHNldExvY2F0aW9uKGxvY2FsUG9pbnQueCgpLCBsb2NhbFBv
aW50LnkoKSk7CisgICAgCisgICAgcG9zaXRpb25Pck9mZnNldENoYW5nZWQgfD0gbG9jYXRpb24o
KSAhPSBsb2NhbFBvaW50OworICAgIHNldExvY2F0aW9uKGxvY2FsUG9pbnQpOworICAgIHJldHVy
biBwb3NpdGlvbk9yT2Zmc2V0Q2hhbmdlZDsKIH0KIAogVHJhbnNmb3JtYXRpb25NYXRyaXggUmVu
ZGVyTGF5ZXI6OnBlcnNwZWN0aXZlVHJhbnNmb3JtKCkgY29uc3QKQEAgLTE3NDUsNyArMTc2OSw3
IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnNjcm9sbFRvKGludCB4LCBpbnQgeSkKICAgICBib29sIGlu
TGF5b3V0ID0gdmlldyA/IHZpZXctPmZyYW1lVmlldygpLT5pc0luTGF5b3V0KCkgOiBmYWxzZTsK
ICAgICBpZiAoIWluTGF5b3V0KSB7CiAgICAgICAgIC8vIElmIHdlJ3JlIGluIHRoZSBtaWRkbGUg
b2YgbGF5b3V0LCB3ZSdsbCBqdXN0IHVwZGF0ZSBsYXllcnMgb25jZSBsYXlvdXQgaGFzIGZpbmlz
aGVkLgotICAgICAgICB1cGRhdGVMYXllclBvc2l0aW9uc0FmdGVyU2Nyb2xsKCk7CisgICAgICAg
IHVwZGF0ZUxheWVyUG9zaXRpb25zQWZ0ZXJPdmVyZmxvd1Njcm9sbCgpOwogICAgICAgICBpZiAo
dmlldykgewogICAgICAgICAgICAgLy8gVXBkYXRlIHJlZ2lvbnMsIHNjcm9sbGluZyBtYXkgY2hh
bmdlIHRoZSBjbGlwIG9mIGEgcGFydGljdWxhciByZWdpb24uCiAjaWYgRU5BQkxFKERBU0hCT0FS
RF9TVVBQT1JUKSB8fCBFTkFCTEUoRFJBR0dBQkxFX1JFR0lPTikKQEAgLTQxMjAsNiArNDE0NCwx
NSBAQCB2b2lkIFJlbmRlckxheWVyOjp1cGRhdGVDbGlwUmVjdHMoY29uc3QgQ2xpcFJlY3RzQ29u
dGV4dCYgY2xpcFJlY3RzQ29udGV4dCkKICAgICAgICAgQVNTRVJUKGNsaXBSZWN0c0NvbnRleHQu
cm9vdExheWVyID09IG1fY2xpcFJlY3RzQ2FjaGUtPm1fY2xpcFJlY3RzUm9vdFtjbGlwUmVjdHNU
eXBlXSk7CiAgICAgICAgIEFTU0VSVChtX2NsaXBSZWN0c0NhY2hlLT5tX3Jlc3BlY3RpbmdPdmVy
Zmxvd0NsaXBbY2xpcFJlY3RzVHlwZV0gPT0gKGNsaXBSZWN0c0NvbnRleHQucmVzcGVjdE92ZXJm
bG93Q2xpcCA9PSBSZXNwZWN0T3ZlcmZsb3dDbGlwKSk7CiAgICAgICAgIEFTU0VSVChtX2NsaXBS
ZWN0c0NhY2hlLT5tX3Njcm9sbGJhclJlbGV2YW5jeVtjbGlwUmVjdHNUeXBlXSA9PSBjbGlwUmVj
dHNDb250ZXh0Lm92ZXJsYXlTY3JvbGxiYXJTaXplUmVsZXZhbmN5KTsKKyAgICAgICAgCisjaWZk
ZWYgQ0hFQ0tfQ0FDSEVEX0NMSVBfUkVDVFMKKyAgICAgICAgLy8gVGhpcyBjb2RlIGlzIHVzZWZ1
bCB0byBjaGVjayBjYWNoZWQgY2xpcCByZWN0cywgYnV0IGlzIHRvbyBleHBlbnNpdmUgdG8gbGVh
dmUgZW5hYmxlZCBpbiBkZWJ1ZyBidWlsZHMgYnkgZGVmYXVsdC4KKyAgICAgICAgQ2xpcFJlY3Rz
Q29udGV4dCB0ZW1wQ29udGV4dChjbGlwUmVjdHNDb250ZXh0KTsKKyAgICAgICAgdGVtcENvbnRl
eHQuY2xpcFJlY3RzVHlwZSA9IFRlbXBvcmFyeUNsaXBSZWN0czsKKyAgICAgICAgQ2xpcFJlY3Rz
IGNsaXBSZWN0czsKKyAgICAgICAgY2FsY3VsYXRlQ2xpcFJlY3RzKHRlbXBDb250ZXh0LCBjbGlw
UmVjdHMpOworICAgICAgICBBU1NFUlQoY2xpcFJlY3RzID09ICptX2NsaXBSZWN0c0NhY2hlLT5t
X2NsaXBSZWN0c1tjbGlwUmVjdHNUeXBlXS5nZXQoKSk7CisjZW5kaWYKICAgICAgICAgcmV0dXJu
OyAvLyBXZSBoYXZlIHRoZSBjb3JyZWN0IGNhY2hlZCB2YWx1ZS4KICAgICB9CiAgICAgCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCmluZGV4IDcyNTlmNzljZDgzOTU5MWRlZWMz
OTk1NzExZjg1MTEzNDAzYTBjZWYuLjRhODBiOWViYmQ2NjRhYmI5YjM2MmYwMzVhNjEyY2Q3ZjFl
YzVhMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCkBAIC0zMDksNyAr
MzA5LDcgQEAgcHVibGljOgogICAgIH0KICAgICAKICAgICBjb25zdCBMYXlvdXRQb2ludCYgbG9j
YXRpb24oKSBjb25zdCB7IHJldHVybiBtX3RvcExlZnQ7IH0KLSAgICB2b2lkIHNldExvY2F0aW9u
KExheW91dFVuaXQgeCwgTGF5b3V0VW5pdCB5KSB7IG1fdG9wTGVmdCA9IExheW91dFBvaW50KHgs
IHkpOyB9CisgICAgdm9pZCBzZXRMb2NhdGlvbihjb25zdCBMYXlvdXRQb2ludCYgcCkgeyBtX3Rv
cExlZnQgPSBwOyB9CiAKICAgICBjb25zdCBJbnRTaXplJiBzaXplKCkgY29uc3QgeyByZXR1cm4g
bV9sYXllclNpemU7IH0KICAgICB2b2lkIHNldFNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkgeyBt
X2xheWVyU2l6ZSA9IHNpemU7IH0KQEAgLTM5MCw3ICszOTAsOCBAQCBwdWJsaWM6CiAKICAgICBi
b29sIGNhblJlbmRlcjNEVHJhbnNmb3JtcygpIGNvbnN0OwogCi0gICAgdm9pZCB1cGRhdGVMYXll
clBvc2l0aW9uKCk7CisgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBwb3NpdGlvbiBjaGFuZ2Vk
LgorICAgIGJvb2wgdXBkYXRlTGF5ZXJQb3NpdGlvbigpOwogCiAgICAgZW51bSBVcGRhdGVMYXll
clBvc2l0aW9uc0ZsYWcgewogICAgICAgICBDaGVja0ZvclJlcGFpbnQgPSAxLApAQCAtNDAyLDcg
KzQwMyw5IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgVXBkYXRlTGF5ZXJQb3NpdGlvbnNG
bGFncyBkZWZhdWx0RmxhZ3MgPSBDaGVja0ZvclJlcGFpbnQgfCBJc0NvbXBvc2l0aW5nVXBkYXRl
Um9vdCB8IFVwZGF0ZUNvbXBvc2l0aW5nTGF5ZXJzOwogCiAgICAgdm9pZCB1cGRhdGVMYXllclBv
c2l0aW9uc0FmdGVyTGF5b3V0KGNvbnN0IFJlbmRlckxheWVyKiByb290TGF5ZXIsIFVwZGF0ZUxh
eWVyUG9zaXRpb25zRmxhZ3MpOwotICAgIHZvaWQgdXBkYXRlTGF5ZXJQb3NpdGlvbnNBZnRlclNj
cm9sbCgpOworCisgICAgdm9pZCB1cGRhdGVMYXllclBvc2l0aW9uc0FmdGVyT3ZlcmZsb3dTY3Jv
bGwoKTsKKyAgICB2b2lkIHVwZGF0ZUxheWVyUG9zaXRpb25zQWZ0ZXJEb2N1bWVudFNjcm9sbCgp
OwogICAgIAogICAgIGJvb2wgaXNQYWdpbmF0ZWQoKSBjb25zdCB7IHJldHVybiBtX2lzUGFnaW5h
dGVkOyB9CiAKQEAgLTczNSw4ICs3MzgsMTAgQEAgcHJpdmF0ZToKIAogICAgIGVudW0gVXBkYXRl
TGF5ZXJQb3NpdGlvbnNBZnRlclNjcm9sbEZsYWcgewogICAgICAgICBOb0ZsYWcgPSAwLAotICAg
ICAgICBIYXNTZWVuVmlld3BvcnRDb25zdHJhaW5lZEFuY2VzdG9yID0gMSA8PCAwLAotICAgICAg
ICBIYXNTZWVuQW5jZXN0b3JXaXRoT3ZlcmZsb3dDbGlwID0gMSA8PCAxCisgICAgICAgIElzT3Zl
cmZsb3dTY3JvbGwgPSAxIDw8IDAsCisgICAgICAgIEhhc1NlZW5WaWV3cG9ydENvbnN0cmFpbmVk
QW5jZXN0b3IgPSAxIDw8IDEsCisgICAgICAgIEhhc1NlZW5BbmNlc3RvcldpdGhPdmVyZmxvd0Ns
aXAgPSAxIDw8IDIsCisgICAgICAgIEhhc0NoYW5nZWRBbmNlc3RvciA9IDEgPDwgMwogICAgIH07
CiAgICAgdHlwZWRlZiB1bnNpZ25lZCBVcGRhdGVMYXllclBvc2l0aW9uc0FmdGVyU2Nyb2xsRmxh
Z3M7CiAgICAgdm9pZCB1cGRhdGVMYXllclBvc2l0aW9uc0FmdGVyU2Nyb2xsKFJlbmRlckdlb21l
dHJ5TWFwKiwgVXBkYXRlTGF5ZXJQb3NpdGlvbnNBZnRlclNjcm9sbEZsYWdzID0gTm9GbGFnKTsK
</data>
<flag name="review"
          id="190130"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>