<?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>44064</bug_id>
          
          <creation_ts>2010-08-16 11:00:35 -0700</creation_ts>
          <short_desc>GraphicsContext3D::reshape is clearing using current clear color instead of transparent</short_desc>
          <delta_ts>2010-11-19 13:04:23 -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>WebGL</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</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>
          
          <blocked>49355</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dave Hyatt">hyatt</reporter>
          <assigned_to name="Zhenyao Mo">zmo</assigned_to>
          <cc>cmarrin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>kbr</cc>
    
    <cc>zmo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>265168</commentid>
    <comment_count>0</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2010-08-16 11:00:35 -0700</bug_when>
    <thetext>The WebGL spec says when you resize the canvas (what happens in our reshape call), the buffer should be cleared and filled with transparent.  We&apos;re incorrectly filling with the current clear color instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>265203</commentid>
    <comment_count>1</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-08-16 12:47:38 -0700</bug_when>
    <thetext>The bug is in GraphicsContext3DMac.mm. It should be querying the clear color, setting it to (0, 0, 0, 0) before the clear call, and resetting it afterward.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>265215</commentid>
    <comment_count>2</comment_count>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2010-08-16 13:34:09 -0700</bug_when>
    <thetext>(In reply to comment #1)
&gt; The bug is in GraphicsContext3DMac.mm. It should be querying the clear color, setting it to (0, 0, 0, 0) before the clear call, and resetting it afterward.

Yes, this is why I took the bug. Because it is so simple :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>265216</commentid>
    <comment_count>3</comment_count>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2010-08-16 13:34:47 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (In reply to comment #1)
&gt; &gt; The bug is in GraphicsContext3DMac.mm. It should be querying the clear color, setting it to (0, 0, 0, 0) before the clear call, and resetting it afterward.
&gt; 
&gt; Yes, this is why I took the bug. Because it is so simple :-)

But on a serious note, the test case should be testing this, but it&apos;s not. I will add this test to the testcase as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>265222</commentid>
    <comment_count>4</comment_count>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2010-08-16 13:49:05 -0700</bug_when>
    <thetext>I guess Ken assigned to me because my code caused the bug.  Since you are working on it, I am assigning it back to you.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>311030</commentid>
    <comment_count>5</comment_count>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2010-11-18 12:12:33 -0800</bug_when>
    <thetext>This bug is blocking texture/renderbuffer initialization patch in WebCore/graphics/gpu/DrawingBuffer.cpp:reset().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>311165</commentid>
    <comment_count>6</comment_count>
      <attachid>74318</attachid>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2010-11-18 16:30:01 -0800</bug_when>
    <thetext>Created attachment 74318
patch

Will modify khornos&apos;s side of the test once it&apos;s reviewed here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>311227</commentid>
    <comment_count>7</comment_count>
      <attachid>74318</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-11-18 18:21:43 -0800</bug_when>
    <thetext>Comment on attachment 74318
patch

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

Looks good. Apologies but we decided to change the clear depth upon resizing to the default value (1.0) rather than 0.0 on today&apos;s WebGL conference call, so would appreciate it if you could fix that up in these changes.

&gt; WebCore/platform/graphics/gpu/DrawingBuffer.cpp:183
&gt; +        m_context-&gt;clearDepth(0);

Per discussion on today&apos;s WebGL conference call, we should use the default clear depth, which is 1.0. The spec&apos;s been updated with this change.

&gt; WebCore/platform/graphics/opengl/GraphicsContext3DOpenGL.cpp:227
&gt; +        ::glClearDepth(0);

Here too.

&gt; WebKit/chromium/src/WebGraphicsContext3DDefaultImpl.cpp:455
&gt; +        glClearDepth(0);

Here too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>311511</commentid>
    <comment_count>8</comment_count>
      <attachid>74397</attachid>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2010-11-19 09:04:32 -0800</bug_when>
    <thetext>Created attachment 74397
revised patch

depth clear value all set to 1.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>311612</commentid>
    <comment_count>9</comment_count>
      <attachid>74397</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-11-19 12:13:30 -0800</bug_when>
    <thetext>Comment on attachment 74397
revised patch

Looks good to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>311647</commentid>
    <comment_count>10</comment_count>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2010-11-19 13:04:23 -0800</bug_when>
    <thetext>Committed r72431: &lt;http://trac.webkit.org/changeset/72431&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>74318</attachid>
            <date>2010-11-18 16:30:01 -0800</date>
            <delta_ts>2010-11-19 09:04:32 -0800</delta_ts>
            <desc>patch</desc>
            <filename>clear.patch</filename>
            <type>text/plain</type>
            <size>14015</size>
            <attacher name="Zhenyao Mo">zmo</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MjM0NCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTUgQEAKKzIwMTAtMTEtMTggIFpoZW55YW8gTW8gIDx6bW9AZ29vZ2xlLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBHcmFwaGlj
c0NvbnRleHQzRDo6cmVzaGFwZSBpcyBjbGVhcmluZyB1c2luZyBjdXJyZW50IGNsZWFyIGNvbG9y
IGluc3RlYWQgb2YgdHJhbnNwYXJlbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTQ0MDY0CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUv
RHJhd2luZ0J1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmF3aW5nQnVmZmVyOjpyZXNl
dCk6IFVzZSAwIGFzIGNsZWFyIHZhbHVlcy4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0M0Q6OnJlc2hhcGUpOiBEaXR0by4KKwogMjAxMC0xMS0xOCAgQWxleGV5IFBy
b3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBHZW9mZnJl
eSBHYXJlbi4KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0RyYXdpbmdCdWZm
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0RyYXdp
bmdCdWZmZXIuY3BwCShyZXZpc2lvbiA3MjMzOCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L0RyYXdpbmdCdWZmZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjcsMjAgKzE2Nywy
OSBAQCB2b2lkIERyYXdpbmdCdWZmZXI6OnJlc2V0KGNvbnN0IEludFNpemUmCiAgICAgICAgIG1f
Y29udGV4dC0+YmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwg
bV9tdWx0aXNhbXBsZUZCTyk7CiAKICAgICAvLyBJbml0aWFsaXplIHJlbmRlcmJ1ZmZlcnMgdG8g
MC4KLSAgICB1bnNpZ25lZCBjaGFyIGNvbG9yTWFza1tdID0ge3RydWUsIHRydWUsIHRydWUsIHRy
dWV9LCBkZXB0aE1hc2sgPSB0cnVlLCBzdGVuY2lsTWFzayA9IHRydWU7CisgICAgZmxvYXQgY2xl
YXJDb2xvcltdID0gezAsIDAsIDAsIDB9LCBjbGVhckRlcHRoID0gMDsKKyAgICBpbnQgY2xlYXJT
dGVuY2lsID0gMDsKKyAgICB1bnNpZ25lZCBjaGFyIGNvbG9yTWFza1tdID0ge3RydWUsIHRydWUs
IHRydWUsIHRydWV9LCBkZXB0aE1hc2sgPSB0cnVlOworICAgIHVuc2lnbmVkIGludCBzdGVuY2ls
TWFzayA9IDB4ZmZmZmZmZmY7CiAgICAgdW5zaWduZWQgY2hhciBpc1NjaXNzb3JFbmFibGVkID0g
ZmFsc2U7CiAgICAgdW5zaWduZWQgY2hhciBpc0RpdGhlckVuYWJsZWQgPSBmYWxzZTsKICAgICB1
bnNpZ25lZCBsb25nIGNsZWFyTWFzayA9IEdyYXBoaWNzQ29udGV4dDNEOjpDT0xPUl9CVUZGRVJf
QklUOworICAgIG1fY29udGV4dC0+Z2V0RmxvYXR2KEdyYXBoaWNzQ29udGV4dDNEOjpDT0xPUl9D
TEVBUl9WQUxVRSwgY2xlYXJDb2xvcik7CisgICAgbV9jb250ZXh0LT5jbGVhckNvbG9yKDAsIDAs
IDAsIDApOwogICAgIG1fY29udGV4dC0+Z2V0Qm9vbGVhbnYoR3JhcGhpY3NDb250ZXh0M0Q6OkNP
TE9SX1dSSVRFTUFTSywgY29sb3JNYXNrKTsKICAgICBtX2NvbnRleHQtPmNvbG9yTWFzayh0cnVl
LCB0cnVlLCB0cnVlLCB0cnVlKTsKICAgICBpZiAoYXR0cmlidXRlcy5kZXB0aCkgeworICAgICAg
ICBtX2NvbnRleHQtPmdldEZsb2F0dihHcmFwaGljc0NvbnRleHQzRDo6REVQVEhfQ0xFQVJfVkFM
VUUsICZjbGVhckRlcHRoKTsKKyAgICAgICAgbV9jb250ZXh0LT5jbGVhckRlcHRoKDApOwogICAg
ICAgICBtX2NvbnRleHQtPmdldEJvb2xlYW52KEdyYXBoaWNzQ29udGV4dDNEOjpERVBUSF9XUklU
RU1BU0ssICZkZXB0aE1hc2spOwogICAgICAgICBtX2NvbnRleHQtPmRlcHRoTWFzayh0cnVlKTsK
ICAgICAgICAgY2xlYXJNYXNrIHw9IEdyYXBoaWNzQ29udGV4dDNEOjpERVBUSF9CVUZGRVJfQklU
OwogICAgIH0KICAgICBpZiAoYXR0cmlidXRlcy5zdGVuY2lsKSB7Ci0gICAgICAgIG1fY29udGV4
dC0+Z2V0Qm9vbGVhbnYoR3JhcGhpY3NDb250ZXh0M0Q6OlNURU5DSUxfV1JJVEVNQVNLLCAmc3Rl
bmNpbE1hc2spOwotICAgICAgICBtX2NvbnRleHQtPnN0ZW5jaWxNYXNrKHRydWUpOworICAgICAg
ICBtX2NvbnRleHQtPmdldEludGVnZXJ2KEdyYXBoaWNzQ29udGV4dDNEOjpTVEVOQ0lMX0NMRUFS
X1ZBTFVFLCAmY2xlYXJTdGVuY2lsKTsKKyAgICAgICAgbV9jb250ZXh0LT5jbGVhclN0ZW5jaWwo
MCk7CisgICAgICAgIG1fY29udGV4dC0+Z2V0SW50ZWdlcnYoR3JhcGhpY3NDb250ZXh0M0Q6OlNU
RU5DSUxfV1JJVEVNQVNLLCByZWludGVycHJldF9jYXN0PGludCo+KCZzdGVuY2lsTWFzaykpOwor
ICAgICAgICBtX2NvbnRleHQtPnN0ZW5jaWxNYXNrU2VwYXJhdGUoR3JhcGhpY3NDb250ZXh0M0Q6
OkZST05ULCAweGZmZmZmZmZmKTsKICAgICAgICAgY2xlYXJNYXNrIHw9IEdyYXBoaWNzQ29udGV4
dDNEOjpTVEVOQ0lMX0JVRkZFUl9CSVQ7CiAgICAgfQogICAgIGlzU2Npc3NvckVuYWJsZWQgPSBt
X2NvbnRleHQtPmlzRW5hYmxlZChHcmFwaGljc0NvbnRleHQzRDo6U0NJU1NPUl9URVNUKTsKQEAg
LTE5MCwxMSArMTk5LDE2IEBAIHZvaWQgRHJhd2luZ0J1ZmZlcjo6cmVzZXQoY29uc3QgSW50U2l6
ZSYKIAogICAgIG1fY29udGV4dC0+Y2xlYXIoY2xlYXJNYXNrKTsKIAorICAgIG1fY29udGV4dC0+
Y2xlYXJDb2xvcihjbGVhckNvbG9yWzBdLCBjbGVhckNvbG9yWzFdLCBjbGVhckNvbG9yWzJdLCBj
bGVhckNvbG9yWzNdKTsKICAgICBtX2NvbnRleHQtPmNvbG9yTWFzayhjb2xvck1hc2tbMF0sIGNv
bG9yTWFza1sxXSwgY29sb3JNYXNrWzJdLCBjb2xvck1hc2tbM10pOwotICAgIGlmIChhdHRyaWJ1
dGVzLmRlcHRoKQorICAgIGlmIChhdHRyaWJ1dGVzLmRlcHRoKSB7CisgICAgICAgIG1fY29udGV4
dC0+Y2xlYXJEZXB0aChjbGVhckRlcHRoKTsKICAgICAgICAgbV9jb250ZXh0LT5kZXB0aE1hc2so
ZGVwdGhNYXNrKTsKLSAgICBpZiAoYXR0cmlidXRlcy5zdGVuY2lsKQotICAgICAgICBtX2NvbnRl
eHQtPnN0ZW5jaWxNYXNrKHN0ZW5jaWxNYXNrKTsKKyAgICB9CisgICAgaWYgKGF0dHJpYnV0ZXMu
c3RlbmNpbCkgeworICAgICAgICBtX2NvbnRleHQtPmNsZWFyU3RlbmNpbChjbGVhclN0ZW5jaWwp
OworICAgICAgICBtX2NvbnRleHQtPnN0ZW5jaWxNYXNrU2VwYXJhdGUoR3JhcGhpY3NDb250ZXh0
M0Q6OkZST05ULCBzdGVuY2lsTWFzayk7CisgICAgfQogICAgIGlmIChpc1NjaXNzb3JFbmFibGVk
KQogICAgICAgICBtX2NvbnRleHQtPmVuYWJsZShHcmFwaGljc0NvbnRleHQzRDo6U0NJU1NPUl9U
RVNUKTsKICAgICBlbHNlCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9H
cmFwaGljc0NvbnRleHQzRE9wZW5HTC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0wuY3BwCShyZXZpc2lvbiA3
MjMzOCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4
dDNET3BlbkdMLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjExLDIwICsyMTEsMjkgQEAgdm9pZCBH
cmFwaGljc0NvbnRleHQzRDo6cmVzaGFwZShpbnQgd2lkdAogICAgIH0KIAogICAgIC8vIEluaXRp
YWxpemUgcmVuZGVyYnVmZmVycyB0byAwLgotICAgIEdMYm9vbGVhbiBjb2xvck1hc2tbXSA9IHtH
TF9UUlVFLCBHTF9UUlVFLCBHTF9UUlVFLCBHTF9UUlVFfSwgZGVwdGhNYXNrID0gR0xfVFJVRSwg
c3RlbmNpbE1hc2sgPSBHTF9UUlVFOworICAgIEdMZmxvYXQgY2xlYXJDb2xvcltdID0gezAsIDAs
IDAsIDB9LCBjbGVhckRlcHRoID0gMDsKKyAgICBHTGludCBjbGVhclN0ZW5jaWwgPSAwOworICAg
IEdMYm9vbGVhbiBjb2xvck1hc2tbXSA9IHtHTF9UUlVFLCBHTF9UUlVFLCBHTF9UUlVFLCBHTF9U
UlVFfSwgZGVwdGhNYXNrID0gR0xfVFJVRTsKKyAgICBHTHVpbnQgc3RlbmNpbE1hc2sgPSAweGZm
ZmZmZmZmOwogICAgIEdMYm9vbGVhbiBpc1NjaXNzb3JFbmFibGVkID0gR0xfRkFMU0U7CiAgICAg
R0xib29sZWFuIGlzRGl0aGVyRW5hYmxlZCA9IEdMX0ZBTFNFOwogICAgIEdMYml0ZmllbGQgY2xl
YXJNYXNrID0gR0xfQ09MT1JfQlVGRkVSX0JJVDsKKyAgICA6OmdsR2V0RmxvYXR2KEdMX0NPTE9S
X0NMRUFSX1ZBTFVFLCBjbGVhckNvbG9yKTsKKyAgICA6OmdsQ2xlYXJDb2xvcigwLCAwLCAwLCAw
KTsKICAgICA6OmdsR2V0Qm9vbGVhbnYoR0xfQ09MT1JfV1JJVEVNQVNLLCBjb2xvck1hc2spOwog
ICAgIDo6Z2xDb2xvck1hc2soR0xfVFJVRSwgR0xfVFJVRSwgR0xfVFJVRSwgR0xfVFJVRSk7CiAg
ICAgaWYgKG1fYXR0cnMuZGVwdGgpIHsKKyAgICAgICAgOjpnbEdldEZsb2F0dihHTF9ERVBUSF9D
TEVBUl9WQUxVRSwgJmNsZWFyRGVwdGgpOworICAgICAgICA6OmdsQ2xlYXJEZXB0aCgwKTsKICAg
ICAgICAgOjpnbEdldEJvb2xlYW52KEdMX0RFUFRIX1dSSVRFTUFTSywgJmRlcHRoTWFzayk7CiAg
ICAgICAgIDo6Z2xEZXB0aE1hc2soR0xfVFJVRSk7CiAgICAgICAgIGNsZWFyTWFzayB8PSBHTF9E
RVBUSF9CVUZGRVJfQklUOwogICAgIH0KICAgICBpZiAobV9hdHRycy5zdGVuY2lsKSB7Ci0gICAg
ICAgIDo6Z2xHZXRCb29sZWFudihHTF9TVEVOQ0lMX1dSSVRFTUFTSywgJnN0ZW5jaWxNYXNrKTsK
LSAgICAgICAgOjpnbFN0ZW5jaWxNYXNrKEdMX1RSVUUpOworICAgICAgICA6OmdsR2V0SW50ZWdl
cnYoR0xfU1RFTkNJTF9DTEVBUl9WQUxVRSwgJmNsZWFyU3RlbmNpbCk7CisgICAgICAgIDo6Z2xD
bGVhclN0ZW5jaWwoMCk7CisgICAgICAgIDo6Z2xHZXRJbnRlZ2VydihHTF9TVEVOQ0lMX1dSSVRF
TUFTSywgcmVpbnRlcnByZXRfY2FzdDxHTGludCo+KCZzdGVuY2lsTWFzaykpOworICAgICAgICA6
OmdsU3RlbmNpbE1hc2tTZXBhcmF0ZShHTF9GUk9OVCwgMHhmZmZmZmZmZik7CiAgICAgICAgIGNs
ZWFyTWFzayB8PSBHTF9TVEVOQ0lMX0JVRkZFUl9CSVQ7CiAgICAgfQogICAgIGlzU2Npc3NvckVu
YWJsZWQgPSA6OmdsSXNFbmFibGVkKEdMX1NDSVNTT1JfVEVTVCk7CkBAIC0yMzQsMTEgKzI0Mywx
NiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpyZXNoYXBlKGludCB3aWR0CiAKICAgICA6Omds
Q2xlYXIoY2xlYXJNYXNrKTsKIAorICAgIDo6Z2xDbGVhckNvbG9yKGNsZWFyQ29sb3JbMF0sIGNs
ZWFyQ29sb3JbMV0sIGNsZWFyQ29sb3JbMl0sIGNsZWFyQ29sb3JbM10pOwogICAgIDo6Z2xDb2xv
ck1hc2soY29sb3JNYXNrWzBdLCBjb2xvck1hc2tbMV0sIGNvbG9yTWFza1syXSwgY29sb3JNYXNr
WzNdKTsKLSAgICBpZiAobV9hdHRycy5kZXB0aCkKKyAgICBpZiAobV9hdHRycy5kZXB0aCkgewor
ICAgICAgICA6OmdsQ2xlYXJEZXB0aChjbGVhckRlcHRoKTsKICAgICAgICAgOjpnbERlcHRoTWFz
ayhkZXB0aE1hc2spOwotICAgIGlmIChtX2F0dHJzLnN0ZW5jaWwpCi0gICAgICAgIDo6Z2xTdGVu
Y2lsTWFzayhzdGVuY2lsTWFzayk7CisgICAgfQorICAgIGlmIChtX2F0dHJzLnN0ZW5jaWwpIHsK
KyAgICAgICAgOjpnbENsZWFyU3RlbmNpbChjbGVhclN0ZW5jaWwpOworICAgICAgICA6OmdsU3Rl
bmNpbE1hc2tTZXBhcmF0ZShHTF9GUk9OVCwgc3RlbmNpbE1hc2spOworICAgIH0KICAgICBpZiAo
aXNTY2lzc29yRW5hYmxlZCkKICAgICAgICAgOjpnbEVuYWJsZShHTF9TQ0lTU09SX1RFU1QpOwog
ICAgIGVsc2UKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gNzIzNDQpCisrKyBXZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTAtMTEt
MTggIFpoZW55YW8gTW8gIDx6bW9AZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBHcmFwaGljc0NvbnRleHQzRDo6cmVzaGFwZSBpcyBj
bGVhcmluZyB1c2luZyBjdXJyZW50IGNsZWFyIGNvbG9yIGluc3RlYWQgb2YgdHJhbnNwYXJlbnQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ0MDY0CisK
KyAgICAgICAgKiBzcmMvV2ViR3JhcGhpY3NDb250ZXh0M0REZWZhdWx0SW1wbC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNERGVmYXVsdEltcGw6OnJlc2hhcGUpOiBV
c2UgMCBhcyBjbGVhciB2YWx1ZXMuCisKIDIwMTAtMTEtMTggIFRvbnkgQ2hhbmcgIDx0b255QGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCBmaXggY2hyb21pdW0gY29tcGlsZS4g
IFdlIG5lZWQgaXBjIGFuZCBvcGVuc3NsIG5vdy4KSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMv
V2ViR3JhcGhpY3NDb250ZXh0M0REZWZhdWx0SW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJHcmFwaGljc0NvbnRleHQzRERlZmF1bHRJbXBsLmNwcAkocmV2aXNp
b24gNzIzMzgpCisrKyBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYkdyYXBoaWNzQ29udGV4dDNERGVm
YXVsdEltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MzksMjAgKzQzOSwyOSBAQCB2b2lkIFdl
YkdyYXBoaWNzQ29udGV4dDNERGVmYXVsdEltcGw6OnJlCiAgICAgfQogCiAgICAgLy8gSW5pdGlh
bGl6ZSByZW5kZXJidWZmZXJzIHRvIDAuCi0gICAgR0xib29sZWFuIGNvbG9yTWFza1tdID0ge0dM
X1RSVUUsIEdMX1RSVUUsIEdMX1RSVUUsIEdMX1RSVUV9LCBkZXB0aE1hc2sgPSBHTF9UUlVFLCBz
dGVuY2lsTWFzayA9IEdMX1RSVUU7CisgICAgR0xmbG9hdCBjbGVhckNvbG9yW10gPSB7MCwgMCwg
MCwgMH0sIGNsZWFyRGVwdGggPSAwOworICAgIEdMaW50IGNsZWFyU3RlbmNpbCA9IDA7CisgICAg
R0xib29sZWFuIGNvbG9yTWFza1tdID0ge0dMX1RSVUUsIEdMX1RSVUUsIEdMX1RSVUUsIEdMX1RS
VUV9LCBkZXB0aE1hc2sgPSBHTF9UUlVFOworICAgIEdMdWludCBzdGVuY2lsTWFzayA9IDB4ZmZm
ZmZmZmY7CiAgICAgR0xib29sZWFuIGlzU2Npc3NvckVuYWJsZWQgPSBHTF9GQUxTRTsKICAgICBH
TGJvb2xlYW4gaXNEaXRoZXJFbmFibGVkID0gR0xfRkFMU0U7CiAgICAgR0xiaXRmaWVsZCBjbGVh
ck1hc2sgPSBHTF9DT0xPUl9CVUZGRVJfQklUOworICAgIGdsR2V0RmxvYXR2KEdMX0NPTE9SX0NM
RUFSX1ZBTFVFLCBjbGVhckNvbG9yKTsKKyAgICBnbENsZWFyQ29sb3IoMCwgMCwgMCwgMCk7CiAg
ICAgZ2xHZXRCb29sZWFudihHTF9DT0xPUl9XUklURU1BU0ssIGNvbG9yTWFzayk7CiAgICAgZ2xD
b2xvck1hc2soR0xfVFJVRSwgR0xfVFJVRSwgR0xfVFJVRSwgR0xfVFJVRSk7CiAgICAgaWYgKG1f
YXR0cmlidXRlcy5kZXB0aCkgeworICAgICAgICBnbEdldEZsb2F0dihHTF9ERVBUSF9DTEVBUl9W
QUxVRSwgJmNsZWFyRGVwdGgpOworICAgICAgICBnbENsZWFyRGVwdGgoMCk7CiAgICAgICAgIGds
R2V0Qm9vbGVhbnYoR0xfREVQVEhfV1JJVEVNQVNLLCAmZGVwdGhNYXNrKTsKICAgICAgICAgZ2xE
ZXB0aE1hc2soR0xfVFJVRSk7CiAgICAgICAgIGNsZWFyTWFzayB8PSBHTF9ERVBUSF9CVUZGRVJf
QklUOwogICAgIH0KICAgICBpZiAobV9hdHRyaWJ1dGVzLnN0ZW5jaWwpIHsKLSAgICAgICAgZ2xH
ZXRCb29sZWFudihHTF9TVEVOQ0lMX1dSSVRFTUFTSywgJnN0ZW5jaWxNYXNrKTsKLSAgICAgICAg
Z2xTdGVuY2lsTWFzayhHTF9UUlVFKTsKKyAgICAgICAgZ2xHZXRJbnRlZ2VydihHTF9TVEVOQ0lM
X0NMRUFSX1ZBTFVFLCAmY2xlYXJTdGVuY2lsKTsKKyAgICAgICAgZ2xDbGVhclN0ZW5jaWwoMCk7
CisgICAgICAgIGdsR2V0SW50ZWdlcnYoR0xfU1RFTkNJTF9XUklURU1BU0ssIHJlaW50ZXJwcmV0
X2Nhc3Q8R0xpbnQqPigmc3RlbmNpbE1hc2spKTsKKyAgICAgICAgZ2xTdGVuY2lsTWFza1NlcGFy
YXRlKEdMX0ZST05ULCAweGZmZmZmZmZmKTsKICAgICAgICAgY2xlYXJNYXNrIHw9IEdMX1NURU5D
SUxfQlVGRkVSX0JJVDsKICAgICB9CiAgICAgaXNTY2lzc29yRW5hYmxlZCA9IGdsSXNFbmFibGVk
KEdMX1NDSVNTT1JfVEVTVCk7CkBAIC00NjIsMTEgKzQ3MSwxNiBAQCB2b2lkIFdlYkdyYXBoaWNz
Q29udGV4dDNERGVmYXVsdEltcGw6OnJlCiAKICAgICBnbENsZWFyKGNsZWFyTWFzayk7CiAKKyAg
ICBnbENsZWFyQ29sb3IoY2xlYXJDb2xvclswXSwgY2xlYXJDb2xvclsxXSwgY2xlYXJDb2xvclsy
XSwgY2xlYXJDb2xvclszXSk7CiAgICAgZ2xDb2xvck1hc2soY29sb3JNYXNrWzBdLCBjb2xvck1h
c2tbMV0sIGNvbG9yTWFza1syXSwgY29sb3JNYXNrWzNdKTsKLSAgICBpZiAobV9hdHRyaWJ1dGVz
LmRlcHRoKQorICAgIGlmIChtX2F0dHJpYnV0ZXMuZGVwdGgpIHsKKyAgICAgICAgZ2xDbGVhckRl
cHRoKGNsZWFyRGVwdGgpOwogICAgICAgICBnbERlcHRoTWFzayhkZXB0aE1hc2spOwotICAgIGlm
IChtX2F0dHJpYnV0ZXMuc3RlbmNpbCkKLSAgICAgICAgZ2xTdGVuY2lsTWFzayhzdGVuY2lsTWFz
ayk7CisgICAgfQorICAgIGlmIChtX2F0dHJpYnV0ZXMuc3RlbmNpbCkgeworICAgICAgICBnbENs
ZWFyU3RlbmNpbChjbGVhclN0ZW5jaWwpOworICAgICAgICBnbFN0ZW5jaWxNYXNrU2VwYXJhdGUo
R0xfRlJPTlQsIHN0ZW5jaWxNYXNrKTsKKyAgICB9CiAgICAgaWYgKGlzU2Npc3NvckVuYWJsZWQp
CiAgICAgICAgIGdsRW5hYmxlKEdMX1NDSVNTT1JfVEVTVCk7CiAgICAgZWxzZQpJbmRleDogTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwko
cmV2aXNpb24gNzIzNDQpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxMyBAQAorMjAxMC0xMS0xOCAgWmhlbnlhbyBNbyAgPHptb0Bnb29nbGUuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEdyYXBo
aWNzQ29udGV4dDNEOjpyZXNoYXBlIGlzIGNsZWFyaW5nIHVzaW5nIGN1cnJlbnQgY2xlYXIgY29s
b3IgaW5zdGVhZCBvZiB0cmFuc3BhcmVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NDQwNjQKKworICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL3Jl
bmRlcmJ1ZmZlci1pbml0aWFsaXphdGlvbi1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9j
YW52YXMvd2ViZ2wvcmVuZGVyYnVmZmVyLWluaXRpYWxpemF0aW9uLmh0bWw6IFRlc3QgdGhhdCBv
IGlzIHVzZWQgYXMgdGhlIGNsZWFyIHZhbHVlcyBpbnN0ZWFkIG9mIHRoZSBjdXJyZW50IGdsIGNs
ZWFyIHZhbHVlcy4KKwogMjAxMC0xMS0xOCAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxl
LmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBHZW9mZnJleSBHYXJlbi4KSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3JlbmRlcmJ1ZmZlci1pbml0aWFsaXphdGlvbi1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvcmVu
ZGVyYnVmZmVyLWluaXRpYWxpemF0aW9uLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNzIzMzgpCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9yZW5kZXJidWZmZXItaW5pdGlhbGl6YXRp
b24tZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC02LDYgKzYsMTEgQEAgVGVzdCB3aGV0
aGVyIHRoZSBXZWJHTCBpbnRlcm5hbCBidWZmZXJzIAogUEFTUyBCdWZmZXJzIGhhdmUgYmVlbiBp
bml0aWFsaXplZCB0byAwLgogVGVzdCB3aGV0aGVyIHVzZXIgY3JlYXRlZCBidWZmZXJzIGhhdmUg
YmVlbiBpbml0aWFsaXplZCB0byAwLgogUEFTUyBCdWZmZXJzIGhhdmUgYmVlbiBpbml0aWFsaXpl
ZCB0byAwLgorVGVzdCB3aGV0aGVyIHRoZSBXZWJHTCBpbnRlcm5hbCBidWZmZXJzIGhhdmUgYmVl
biBpbml0aWFsaXplZCB0byAwLgorUEFTUyBCdWZmZXJzIGhhdmUgYmVlbiBpbml0aWFsaXplZCB0
byAwLgorVGVzdCB3aGV0aGVyIHVzZXIgY3JlYXRlZCBidWZmZXJzIGhhdmUgYmVlbiBpbml0aWFs
aXplZCB0byAwLgorUEFTUyBCdWZmZXJzIGhhdmUgYmVlbiBpbml0aWFsaXplZCB0byAwLgorUEFT
UyBjbGVhckNvbG9yIGlzIFsxLCAwLCAwLCAxXQogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQogCiBURVNUIENPTVBMRVRFCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJn
bC9yZW5kZXJidWZmZXItaW5pdGlhbGl6YXRpb24uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9yZW5kZXJidWZmZXItaW5pdGlhbGl6YXRpb24uaHRtbAko
cmV2aXNpb24gNzIzMzgpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9yZW5kZXJi
dWZmZXItaW5pdGlhbGl6YXRpb24uaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNCwyMyArNCwxNyBA
QAogPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+CiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3dlYmdsLXRlc3QuanMiPjwvc2NyaXB0PgogPHNj
cmlwdD4KLWZ1bmN0aW9uIHJ1blRlc3QoKQorZnVuY3Rpb24gcnVuVGVzdChnbCwgd2lkdGgsIGhl
aWdodCkKIHsKLSAgICB2YXIgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3Ri
ZWQiKTsKLSAgICB2YXIgZ2wgPSBjYW52YXMuZ2V0Q29udGV4dCgiZXhwZXJpbWVudGFsLXdlYmds
Iik7Ci0gICAgaWYgKCFnbCkgewotICAgICAgICB0ZXN0RmFpbGVkKCdjYW52YXMuZ2V0Q29udGV4
dCgpIGZhaWxlZCcpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQogCiAgICAgZGVidWco
J1Rlc3Qgd2hldGhlciB0aGUgV2ViR0wgaW50ZXJuYWwgYnVmZmVycyBoYXZlIGJlZW4gaW5pdGlh
bGl6ZWQgdG8gMC4nKTsKLSAgICB2YXIgYnVmID0gbmV3IFVpbnQ4QXJyYXkoNTAwICogNTAwICog
NCk7Ci0gICAgZ2wucmVhZFBpeGVscygwLCAwLCA1MDAsIDUwMCwgZ2wuUkdCQSwgZ2wuVU5TSUdO
RURfQllURSwgYnVmKTsKKyAgICB2YXIgdG90YWxCeXRlcyA9IHdpZHRoICogaGVpZ2h0ICogNDsK
KyAgICB2YXIgYnVmID0gbmV3IFVpbnQ4QXJyYXkodG90YWxCeXRlcyk7CisgICAgZ2wucmVhZFBp
eGVscygwLCAwLCB3aWR0aCwgaGVpZ2h0LCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCBidWYp
OwogICAgIGlmIChnbC5nZXRFcnJvcigpICE9IGdsLk5PX0VSUk9SKSB7CiAgICAgICAgIHRlc3RG
YWlsZWQoJ0dMIGVycm9yIGRldGVjdGVkIGFmdGVyIHJlYWRQaXhlbHMoKS4nKTsKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICB2YXIgdG90YWxCeXRlcyA9IDUwMCAqIDUwMCAqIDQ7
CiAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0b3RhbEJ5dGVzOyArK2kpIHsKICAgICAgICAgaWYg
KGJ1ZltpXSAhPSAwKSB7CiAgICAgICAgICAgICB0ZXN0RmFpbGVkKCdXZWJHTCBpbnRlcm5hbCBi
dWZmZXJzIGFyZSBkaXJ0eS4nKTsKQEAgLTM0LDcgKzI4LDcgQEAgZnVuY3Rpb24gcnVuVGVzdCgp
CiAgICAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBmYm8pOwogICAgIHZhciBj
b2xvcmJ1ZmZlciA9IGdsLmNyZWF0ZVJlbmRlcmJ1ZmZlcigpOwogICAgIGdsLmJpbmRSZW5kZXJi
dWZmZXIoZ2wuUkVOREVSQlVGRkVSLCBjb2xvcmJ1ZmZlcik7Ci0gICAgZ2wucmVuZGVyYnVmZmVy
U3RvcmFnZShnbC5SRU5ERVJCVUZGRVIsIGdsLlJHQkE0LCA1MDAsIDUwMCk7CisgICAgZ2wucmVu
ZGVyYnVmZmVyU3RvcmFnZShnbC5SRU5ERVJCVUZGRVIsIGdsLlJHQkE0LCB3aWR0aCwgaGVpZ2h0
KTsKICAgICBpZiAoZ2wuZ2V0RXJyb3IoKSAhPSBnbC5OT19FUlJPUikgewogICAgICAgICB0ZXN0
RmFpbGVkKCdHTCBlcnJvciBkZXRlY3RlZCBhZnRlciByZW5kZXJidWZmZXJTdG9yYWdlKGludGVy
bmFsZm9ybWF0ID0gUkdCQTQpLicpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC00NCw3ICsz
OCw3IEBAIGZ1bmN0aW9uIHJ1blRlc3QoKQogICAgICAgICB0ZXN0RmFpbGVkKCdGcmFtZWJ1ZmZl
ciBpbmNvbXBsZXRlLicpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIGdsLnJl
YWRQaXhlbHMoMCwgMCwgNTAwLCA1MDAsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIGJ1Zik7
CisgICAgZ2wucmVhZFBpeGVscygwLCAwLCB3aWR0aCwgaGVpZ2h0LCBnbC5SR0JBLCBnbC5VTlNJ
R05FRF9CWVRFLCBidWYpOwogICAgIGlmIChnbC5nZXRFcnJvcigpICE9IGdsLk5PX0VSUk9SKSB7
CiAgICAgICAgIHRlc3RGYWlsZWQoJ0dMIGVycm9yIGRldGVjdGVkIGFmdGVyIHJlYWRQaXhlbHMo
KS4nKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNjIsNyArNTYsNyBAQCBmdW5jdGlvbiBy
dW5UZXN0KCkKIDwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08Y2FudmFzIGlkPSJ0ZXN0YmVk
IiB3aWR0aD0iNTAwcHgiIGhlaWdodD0iNTAwcHgiPjwvY2FudmFzPgorPGNhbnZhcyBpZD0idGVz
dGJlZCIgd2lkdGg9IjQwMHB4IiBoZWlnaHQ9IjQwMHB4Ij48L2NhbnZhcz4KIDxkaXYgaWQ9ImRl
c2NyaXB0aW9uIj48L2Rpdj4KIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgogPHNjcmlwdD4KQEAg
LTcwLDcgKzY0LDI0IEBAIHZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSBmYWxzZTsKIAogZGVzY3Jp
cHRpb24oJ1ZlcmlmeSByZW5kZXJidWZmZXJzIGFyZSBpbml0aWFsaXplZCB0byAwIGJlZm9yZSBi
ZWluZyByZWFkIGluIFdlYkdMJyk7CiAKLXJ1blRlc3QoKTsKK3ZhciBjYW52YXMgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgidGVzdGJlZCIpOwordmFyIGdsID0gY2FudmFzLmdldENvbnRleHQo
ImV4cGVyaW1lbnRhbC13ZWJnbCIpOworaWYgKCFnbCkgeworICAgIHRlc3RGYWlsZWQoJ2NhbnZh
cy5nZXRDb250ZXh0KCkgZmFpbGVkJyk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitydW5UZXN0
KGdsLCBjYW52YXMud2lkdGgsIGNhbnZhcy5oZWlnaHQpOworCisvLyBUZXN0aW5nIHRoYXQgY2Fu
dmFzIHJlc2l6aW5nIHdpbGwgY2xlYXIgdGhlIGJ1ZmZlcnMgd2l0aCAwIGluc3RlYWQgb2YgdGhl
IGN1cnJlbnQgY2xlYXIgdmFsdWVzLgorZ2wuY2xlYXJDb2xvcigxLCAwLCAwLCAxKTsKK2NhbnZh
cy53aWR0aCArPSAxOworY2FudmFzLmhlaWdodCArPSAxOworcnVuVGVzdChnbCwgY2FudmFzLndp
ZHRoLCBjYW52YXMuaGVpZ2h0KTsKKworLy8gVGVzdGluZyBidWZmZXIgY2xlYXJpbmcgd29uJ3Qg
Y2hhbmdlIHRoZSBjbGVhciB2YWx1ZXMuCit2YXIgY2xlYXJDb2xvciA9IGdsLmdldFBhcmFtZXRl
cihnbC5DT0xPUl9DTEVBUl9WQUxVRSk7CitzaG91bGRCZSgiY2xlYXJDb2xvciIsICJbMSwgMCwg
MCwgMV0iKTsKIAogc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKIDwvc2NyaXB0Pgo=
</data>
<flag name="review"
          id="64889"
          type_id="1"
          status="-"
          setter="kbr"
    />
    <flag name="commit-queue"
          id="64890"
          type_id="3"
          status="-"
          setter="zmo"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>74397</attachid>
            <date>2010-11-19 09:04:32 -0800</date>
            <delta_ts>2010-11-19 12:13:30 -0800</delta_ts>
            <desc>revised patch</desc>
            <filename>clear.patch</filename>
            <type>text/plain</type>
            <size>14015</size>
            <attacher name="Zhenyao Mo">zmo</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MjM0NCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTUgQEAKKzIwMTAtMTEtMTggIFpoZW55YW8gTW8gIDx6bW9AZ29vZ2xlLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBHcmFwaGlj
c0NvbnRleHQzRDo6cmVzaGFwZSBpcyBjbGVhcmluZyB1c2luZyBjdXJyZW50IGNsZWFyIGNvbG9y
IGluc3RlYWQgb2YgdHJhbnNwYXJlbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTQ0MDY0CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUv
RHJhd2luZ0J1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmF3aW5nQnVmZmVyOjpyZXNl
dCk6IFVzZSAwIGFzIGNsZWFyIHZhbHVlcy4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0M0Q6OnJlc2hhcGUpOiBEaXR0by4KKwogMjAxMC0xMS0xOCAgQWxleGV5IFBy
b3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBHZW9mZnJl
eSBHYXJlbi4KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0RyYXdpbmdCdWZm
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0RyYXdp
bmdCdWZmZXIuY3BwCShyZXZpc2lvbiA3MjMzOCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L0RyYXdpbmdCdWZmZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjcsMjAgKzE2Nywy
OSBAQCB2b2lkIERyYXdpbmdCdWZmZXI6OnJlc2V0KGNvbnN0IEludFNpemUmCiAgICAgICAgIG1f
Y29udGV4dC0+YmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwg
bV9tdWx0aXNhbXBsZUZCTyk7CiAKICAgICAvLyBJbml0aWFsaXplIHJlbmRlcmJ1ZmZlcnMgdG8g
MC4KLSAgICB1bnNpZ25lZCBjaGFyIGNvbG9yTWFza1tdID0ge3RydWUsIHRydWUsIHRydWUsIHRy
dWV9LCBkZXB0aE1hc2sgPSB0cnVlLCBzdGVuY2lsTWFzayA9IHRydWU7CisgICAgZmxvYXQgY2xl
YXJDb2xvcltdID0gezAsIDAsIDAsIDB9LCBjbGVhckRlcHRoID0gMDsKKyAgICBpbnQgY2xlYXJT
dGVuY2lsID0gMDsKKyAgICB1bnNpZ25lZCBjaGFyIGNvbG9yTWFza1tdID0ge3RydWUsIHRydWUs
IHRydWUsIHRydWV9LCBkZXB0aE1hc2sgPSB0cnVlOworICAgIHVuc2lnbmVkIGludCBzdGVuY2ls
TWFzayA9IDB4ZmZmZmZmZmY7CiAgICAgdW5zaWduZWQgY2hhciBpc1NjaXNzb3JFbmFibGVkID0g
ZmFsc2U7CiAgICAgdW5zaWduZWQgY2hhciBpc0RpdGhlckVuYWJsZWQgPSBmYWxzZTsKICAgICB1
bnNpZ25lZCBsb25nIGNsZWFyTWFzayA9IEdyYXBoaWNzQ29udGV4dDNEOjpDT0xPUl9CVUZGRVJf
QklUOworICAgIG1fY29udGV4dC0+Z2V0RmxvYXR2KEdyYXBoaWNzQ29udGV4dDNEOjpDT0xPUl9D
TEVBUl9WQUxVRSwgY2xlYXJDb2xvcik7CisgICAgbV9jb250ZXh0LT5jbGVhckNvbG9yKDAsIDAs
IDAsIDApOwogICAgIG1fY29udGV4dC0+Z2V0Qm9vbGVhbnYoR3JhcGhpY3NDb250ZXh0M0Q6OkNP
TE9SX1dSSVRFTUFTSywgY29sb3JNYXNrKTsKICAgICBtX2NvbnRleHQtPmNvbG9yTWFzayh0cnVl
LCB0cnVlLCB0cnVlLCB0cnVlKTsKICAgICBpZiAoYXR0cmlidXRlcy5kZXB0aCkgeworICAgICAg
ICBtX2NvbnRleHQtPmdldEZsb2F0dihHcmFwaGljc0NvbnRleHQzRDo6REVQVEhfQ0xFQVJfVkFM
VUUsICZjbGVhckRlcHRoKTsKKyAgICAgICAgbV9jb250ZXh0LT5jbGVhckRlcHRoKDEpOwogICAg
ICAgICBtX2NvbnRleHQtPmdldEJvb2xlYW52KEdyYXBoaWNzQ29udGV4dDNEOjpERVBUSF9XUklU
RU1BU0ssICZkZXB0aE1hc2spOwogICAgICAgICBtX2NvbnRleHQtPmRlcHRoTWFzayh0cnVlKTsK
ICAgICAgICAgY2xlYXJNYXNrIHw9IEdyYXBoaWNzQ29udGV4dDNEOjpERVBUSF9CVUZGRVJfQklU
OwogICAgIH0KICAgICBpZiAoYXR0cmlidXRlcy5zdGVuY2lsKSB7Ci0gICAgICAgIG1fY29udGV4
dC0+Z2V0Qm9vbGVhbnYoR3JhcGhpY3NDb250ZXh0M0Q6OlNURU5DSUxfV1JJVEVNQVNLLCAmc3Rl
bmNpbE1hc2spOwotICAgICAgICBtX2NvbnRleHQtPnN0ZW5jaWxNYXNrKHRydWUpOworICAgICAg
ICBtX2NvbnRleHQtPmdldEludGVnZXJ2KEdyYXBoaWNzQ29udGV4dDNEOjpTVEVOQ0lMX0NMRUFS
X1ZBTFVFLCAmY2xlYXJTdGVuY2lsKTsKKyAgICAgICAgbV9jb250ZXh0LT5jbGVhclN0ZW5jaWwo
MCk7CisgICAgICAgIG1fY29udGV4dC0+Z2V0SW50ZWdlcnYoR3JhcGhpY3NDb250ZXh0M0Q6OlNU
RU5DSUxfV1JJVEVNQVNLLCByZWludGVycHJldF9jYXN0PGludCo+KCZzdGVuY2lsTWFzaykpOwor
ICAgICAgICBtX2NvbnRleHQtPnN0ZW5jaWxNYXNrU2VwYXJhdGUoR3JhcGhpY3NDb250ZXh0M0Q6
OkZST05ULCAweGZmZmZmZmZmKTsKICAgICAgICAgY2xlYXJNYXNrIHw9IEdyYXBoaWNzQ29udGV4
dDNEOjpTVEVOQ0lMX0JVRkZFUl9CSVQ7CiAgICAgfQogICAgIGlzU2Npc3NvckVuYWJsZWQgPSBt
X2NvbnRleHQtPmlzRW5hYmxlZChHcmFwaGljc0NvbnRleHQzRDo6U0NJU1NPUl9URVNUKTsKQEAg
LTE5MCwxMSArMTk5LDE2IEBAIHZvaWQgRHJhd2luZ0J1ZmZlcjo6cmVzZXQoY29uc3QgSW50U2l6
ZSYKIAogICAgIG1fY29udGV4dC0+Y2xlYXIoY2xlYXJNYXNrKTsKIAorICAgIG1fY29udGV4dC0+
Y2xlYXJDb2xvcihjbGVhckNvbG9yWzBdLCBjbGVhckNvbG9yWzFdLCBjbGVhckNvbG9yWzJdLCBj
bGVhckNvbG9yWzNdKTsKICAgICBtX2NvbnRleHQtPmNvbG9yTWFzayhjb2xvck1hc2tbMF0sIGNv
bG9yTWFza1sxXSwgY29sb3JNYXNrWzJdLCBjb2xvck1hc2tbM10pOwotICAgIGlmIChhdHRyaWJ1
dGVzLmRlcHRoKQorICAgIGlmIChhdHRyaWJ1dGVzLmRlcHRoKSB7CisgICAgICAgIG1fY29udGV4
dC0+Y2xlYXJEZXB0aChjbGVhckRlcHRoKTsKICAgICAgICAgbV9jb250ZXh0LT5kZXB0aE1hc2so
ZGVwdGhNYXNrKTsKLSAgICBpZiAoYXR0cmlidXRlcy5zdGVuY2lsKQotICAgICAgICBtX2NvbnRl
eHQtPnN0ZW5jaWxNYXNrKHN0ZW5jaWxNYXNrKTsKKyAgICB9CisgICAgaWYgKGF0dHJpYnV0ZXMu
c3RlbmNpbCkgeworICAgICAgICBtX2NvbnRleHQtPmNsZWFyU3RlbmNpbChjbGVhclN0ZW5jaWwp
OworICAgICAgICBtX2NvbnRleHQtPnN0ZW5jaWxNYXNrU2VwYXJhdGUoR3JhcGhpY3NDb250ZXh0
M0Q6OkZST05ULCBzdGVuY2lsTWFzayk7CisgICAgfQogICAgIGlmIChpc1NjaXNzb3JFbmFibGVk
KQogICAgICAgICBtX2NvbnRleHQtPmVuYWJsZShHcmFwaGljc0NvbnRleHQzRDo6U0NJU1NPUl9U
RVNUKTsKICAgICBlbHNlCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9H
cmFwaGljc0NvbnRleHQzRE9wZW5HTC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0wuY3BwCShyZXZpc2lvbiA3
MjMzOCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4
dDNET3BlbkdMLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjExLDIwICsyMTEsMjkgQEAgdm9pZCBH
cmFwaGljc0NvbnRleHQzRDo6cmVzaGFwZShpbnQgd2lkdAogICAgIH0KIAogICAgIC8vIEluaXRp
YWxpemUgcmVuZGVyYnVmZmVycyB0byAwLgotICAgIEdMYm9vbGVhbiBjb2xvck1hc2tbXSA9IHtH
TF9UUlVFLCBHTF9UUlVFLCBHTF9UUlVFLCBHTF9UUlVFfSwgZGVwdGhNYXNrID0gR0xfVFJVRSwg
c3RlbmNpbE1hc2sgPSBHTF9UUlVFOworICAgIEdMZmxvYXQgY2xlYXJDb2xvcltdID0gezAsIDAs
IDAsIDB9LCBjbGVhckRlcHRoID0gMDsKKyAgICBHTGludCBjbGVhclN0ZW5jaWwgPSAwOworICAg
IEdMYm9vbGVhbiBjb2xvck1hc2tbXSA9IHtHTF9UUlVFLCBHTF9UUlVFLCBHTF9UUlVFLCBHTF9U
UlVFfSwgZGVwdGhNYXNrID0gR0xfVFJVRTsKKyAgICBHTHVpbnQgc3RlbmNpbE1hc2sgPSAweGZm
ZmZmZmZmOwogICAgIEdMYm9vbGVhbiBpc1NjaXNzb3JFbmFibGVkID0gR0xfRkFMU0U7CiAgICAg
R0xib29sZWFuIGlzRGl0aGVyRW5hYmxlZCA9IEdMX0ZBTFNFOwogICAgIEdMYml0ZmllbGQgY2xl
YXJNYXNrID0gR0xfQ09MT1JfQlVGRkVSX0JJVDsKKyAgICA6OmdsR2V0RmxvYXR2KEdMX0NPTE9S
X0NMRUFSX1ZBTFVFLCBjbGVhckNvbG9yKTsKKyAgICA6OmdsQ2xlYXJDb2xvcigwLCAwLCAwLCAw
KTsKICAgICA6OmdsR2V0Qm9vbGVhbnYoR0xfQ09MT1JfV1JJVEVNQVNLLCBjb2xvck1hc2spOwog
ICAgIDo6Z2xDb2xvck1hc2soR0xfVFJVRSwgR0xfVFJVRSwgR0xfVFJVRSwgR0xfVFJVRSk7CiAg
ICAgaWYgKG1fYXR0cnMuZGVwdGgpIHsKKyAgICAgICAgOjpnbEdldEZsb2F0dihHTF9ERVBUSF9D
TEVBUl9WQUxVRSwgJmNsZWFyRGVwdGgpOworICAgICAgICA6OmdsQ2xlYXJEZXB0aCgxKTsKICAg
ICAgICAgOjpnbEdldEJvb2xlYW52KEdMX0RFUFRIX1dSSVRFTUFTSywgJmRlcHRoTWFzayk7CiAg
ICAgICAgIDo6Z2xEZXB0aE1hc2soR0xfVFJVRSk7CiAgICAgICAgIGNsZWFyTWFzayB8PSBHTF9E
RVBUSF9CVUZGRVJfQklUOwogICAgIH0KICAgICBpZiAobV9hdHRycy5zdGVuY2lsKSB7Ci0gICAg
ICAgIDo6Z2xHZXRCb29sZWFudihHTF9TVEVOQ0lMX1dSSVRFTUFTSywgJnN0ZW5jaWxNYXNrKTsK
LSAgICAgICAgOjpnbFN0ZW5jaWxNYXNrKEdMX1RSVUUpOworICAgICAgICA6OmdsR2V0SW50ZWdl
cnYoR0xfU1RFTkNJTF9DTEVBUl9WQUxVRSwgJmNsZWFyU3RlbmNpbCk7CisgICAgICAgIDo6Z2xD
bGVhclN0ZW5jaWwoMCk7CisgICAgICAgIDo6Z2xHZXRJbnRlZ2VydihHTF9TVEVOQ0lMX1dSSVRF
TUFTSywgcmVpbnRlcnByZXRfY2FzdDxHTGludCo+KCZzdGVuY2lsTWFzaykpOworICAgICAgICA6
OmdsU3RlbmNpbE1hc2tTZXBhcmF0ZShHTF9GUk9OVCwgMHhmZmZmZmZmZik7CiAgICAgICAgIGNs
ZWFyTWFzayB8PSBHTF9TVEVOQ0lMX0JVRkZFUl9CSVQ7CiAgICAgfQogICAgIGlzU2Npc3NvckVu
YWJsZWQgPSA6OmdsSXNFbmFibGVkKEdMX1NDSVNTT1JfVEVTVCk7CkBAIC0yMzQsMTEgKzI0Mywx
NiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpyZXNoYXBlKGludCB3aWR0CiAKICAgICA6Omds
Q2xlYXIoY2xlYXJNYXNrKTsKIAorICAgIDo6Z2xDbGVhckNvbG9yKGNsZWFyQ29sb3JbMF0sIGNs
ZWFyQ29sb3JbMV0sIGNsZWFyQ29sb3JbMl0sIGNsZWFyQ29sb3JbM10pOwogICAgIDo6Z2xDb2xv
ck1hc2soY29sb3JNYXNrWzBdLCBjb2xvck1hc2tbMV0sIGNvbG9yTWFza1syXSwgY29sb3JNYXNr
WzNdKTsKLSAgICBpZiAobV9hdHRycy5kZXB0aCkKKyAgICBpZiAobV9hdHRycy5kZXB0aCkgewor
ICAgICAgICA6OmdsQ2xlYXJEZXB0aChjbGVhckRlcHRoKTsKICAgICAgICAgOjpnbERlcHRoTWFz
ayhkZXB0aE1hc2spOwotICAgIGlmIChtX2F0dHJzLnN0ZW5jaWwpCi0gICAgICAgIDo6Z2xTdGVu
Y2lsTWFzayhzdGVuY2lsTWFzayk7CisgICAgfQorICAgIGlmIChtX2F0dHJzLnN0ZW5jaWwpIHsK
KyAgICAgICAgOjpnbENsZWFyU3RlbmNpbChjbGVhclN0ZW5jaWwpOworICAgICAgICA6OmdsU3Rl
bmNpbE1hc2tTZXBhcmF0ZShHTF9GUk9OVCwgc3RlbmNpbE1hc2spOworICAgIH0KICAgICBpZiAo
aXNTY2lzc29yRW5hYmxlZCkKICAgICAgICAgOjpnbEVuYWJsZShHTF9TQ0lTU09SX1RFU1QpOwog
ICAgIGVsc2UKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gNzIzNDQpCisrKyBXZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTAtMTEt
MTggIFpoZW55YW8gTW8gIDx6bW9AZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBHcmFwaGljc0NvbnRleHQzRDo6cmVzaGFwZSBpcyBj
bGVhcmluZyB1c2luZyBjdXJyZW50IGNsZWFyIGNvbG9yIGluc3RlYWQgb2YgdHJhbnNwYXJlbnQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ0MDY0CisK
KyAgICAgICAgKiBzcmMvV2ViR3JhcGhpY3NDb250ZXh0M0REZWZhdWx0SW1wbC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNERGVmYXVsdEltcGw6OnJlc2hhcGUpOiBV
c2UgMCBhcyBjbGVhciB2YWx1ZXMuCisKIDIwMTAtMTEtMTggIFRvbnkgQ2hhbmcgIDx0b255QGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCBmaXggY2hyb21pdW0gY29tcGlsZS4g
IFdlIG5lZWQgaXBjIGFuZCBvcGVuc3NsIG5vdy4KSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMv
V2ViR3JhcGhpY3NDb250ZXh0M0REZWZhdWx0SW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJHcmFwaGljc0NvbnRleHQzRERlZmF1bHRJbXBsLmNwcAkocmV2aXNp
b24gNzIzMzgpCisrKyBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYkdyYXBoaWNzQ29udGV4dDNERGVm
YXVsdEltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MzksMjAgKzQzOSwyOSBAQCB2b2lkIFdl
YkdyYXBoaWNzQ29udGV4dDNERGVmYXVsdEltcGw6OnJlCiAgICAgfQogCiAgICAgLy8gSW5pdGlh
bGl6ZSByZW5kZXJidWZmZXJzIHRvIDAuCi0gICAgR0xib29sZWFuIGNvbG9yTWFza1tdID0ge0dM
X1RSVUUsIEdMX1RSVUUsIEdMX1RSVUUsIEdMX1RSVUV9LCBkZXB0aE1hc2sgPSBHTF9UUlVFLCBz
dGVuY2lsTWFzayA9IEdMX1RSVUU7CisgICAgR0xmbG9hdCBjbGVhckNvbG9yW10gPSB7MCwgMCwg
MCwgMH0sIGNsZWFyRGVwdGggPSAwOworICAgIEdMaW50IGNsZWFyU3RlbmNpbCA9IDA7CisgICAg
R0xib29sZWFuIGNvbG9yTWFza1tdID0ge0dMX1RSVUUsIEdMX1RSVUUsIEdMX1RSVUUsIEdMX1RS
VUV9LCBkZXB0aE1hc2sgPSBHTF9UUlVFOworICAgIEdMdWludCBzdGVuY2lsTWFzayA9IDB4ZmZm
ZmZmZmY7CiAgICAgR0xib29sZWFuIGlzU2Npc3NvckVuYWJsZWQgPSBHTF9GQUxTRTsKICAgICBH
TGJvb2xlYW4gaXNEaXRoZXJFbmFibGVkID0gR0xfRkFMU0U7CiAgICAgR0xiaXRmaWVsZCBjbGVh
ck1hc2sgPSBHTF9DT0xPUl9CVUZGRVJfQklUOworICAgIGdsR2V0RmxvYXR2KEdMX0NPTE9SX0NM
RUFSX1ZBTFVFLCBjbGVhckNvbG9yKTsKKyAgICBnbENsZWFyQ29sb3IoMCwgMCwgMCwgMCk7CiAg
ICAgZ2xHZXRCb29sZWFudihHTF9DT0xPUl9XUklURU1BU0ssIGNvbG9yTWFzayk7CiAgICAgZ2xD
b2xvck1hc2soR0xfVFJVRSwgR0xfVFJVRSwgR0xfVFJVRSwgR0xfVFJVRSk7CiAgICAgaWYgKG1f
YXR0cmlidXRlcy5kZXB0aCkgeworICAgICAgICBnbEdldEZsb2F0dihHTF9ERVBUSF9DTEVBUl9W
QUxVRSwgJmNsZWFyRGVwdGgpOworICAgICAgICBnbENsZWFyRGVwdGgoMSk7CiAgICAgICAgIGds
R2V0Qm9vbGVhbnYoR0xfREVQVEhfV1JJVEVNQVNLLCAmZGVwdGhNYXNrKTsKICAgICAgICAgZ2xE
ZXB0aE1hc2soR0xfVFJVRSk7CiAgICAgICAgIGNsZWFyTWFzayB8PSBHTF9ERVBUSF9CVUZGRVJf
QklUOwogICAgIH0KICAgICBpZiAobV9hdHRyaWJ1dGVzLnN0ZW5jaWwpIHsKLSAgICAgICAgZ2xH
ZXRCb29sZWFudihHTF9TVEVOQ0lMX1dSSVRFTUFTSywgJnN0ZW5jaWxNYXNrKTsKLSAgICAgICAg
Z2xTdGVuY2lsTWFzayhHTF9UUlVFKTsKKyAgICAgICAgZ2xHZXRJbnRlZ2VydihHTF9TVEVOQ0lM
X0NMRUFSX1ZBTFVFLCAmY2xlYXJTdGVuY2lsKTsKKyAgICAgICAgZ2xDbGVhclN0ZW5jaWwoMCk7
CisgICAgICAgIGdsR2V0SW50ZWdlcnYoR0xfU1RFTkNJTF9XUklURU1BU0ssIHJlaW50ZXJwcmV0
X2Nhc3Q8R0xpbnQqPigmc3RlbmNpbE1hc2spKTsKKyAgICAgICAgZ2xTdGVuY2lsTWFza1NlcGFy
YXRlKEdMX0ZST05ULCAweGZmZmZmZmZmKTsKICAgICAgICAgY2xlYXJNYXNrIHw9IEdMX1NURU5D
SUxfQlVGRkVSX0JJVDsKICAgICB9CiAgICAgaXNTY2lzc29yRW5hYmxlZCA9IGdsSXNFbmFibGVk
KEdMX1NDSVNTT1JfVEVTVCk7CkBAIC00NjIsMTEgKzQ3MSwxNiBAQCB2b2lkIFdlYkdyYXBoaWNz
Q29udGV4dDNERGVmYXVsdEltcGw6OnJlCiAKICAgICBnbENsZWFyKGNsZWFyTWFzayk7CiAKKyAg
ICBnbENsZWFyQ29sb3IoY2xlYXJDb2xvclswXSwgY2xlYXJDb2xvclsxXSwgY2xlYXJDb2xvclsy
XSwgY2xlYXJDb2xvclszXSk7CiAgICAgZ2xDb2xvck1hc2soY29sb3JNYXNrWzBdLCBjb2xvck1h
c2tbMV0sIGNvbG9yTWFza1syXSwgY29sb3JNYXNrWzNdKTsKLSAgICBpZiAobV9hdHRyaWJ1dGVz
LmRlcHRoKQorICAgIGlmIChtX2F0dHJpYnV0ZXMuZGVwdGgpIHsKKyAgICAgICAgZ2xDbGVhckRl
cHRoKGNsZWFyRGVwdGgpOwogICAgICAgICBnbERlcHRoTWFzayhkZXB0aE1hc2spOwotICAgIGlm
IChtX2F0dHJpYnV0ZXMuc3RlbmNpbCkKLSAgICAgICAgZ2xTdGVuY2lsTWFzayhzdGVuY2lsTWFz
ayk7CisgICAgfQorICAgIGlmIChtX2F0dHJpYnV0ZXMuc3RlbmNpbCkgeworICAgICAgICBnbENs
ZWFyU3RlbmNpbChjbGVhclN0ZW5jaWwpOworICAgICAgICBnbFN0ZW5jaWxNYXNrU2VwYXJhdGUo
R0xfRlJPTlQsIHN0ZW5jaWxNYXNrKTsKKyAgICB9CiAgICAgaWYgKGlzU2Npc3NvckVuYWJsZWQp
CiAgICAgICAgIGdsRW5hYmxlKEdMX1NDSVNTT1JfVEVTVCk7CiAgICAgZWxzZQpJbmRleDogTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwko
cmV2aXNpb24gNzIzNDQpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxMyBAQAorMjAxMC0xMS0xOCAgWmhlbnlhbyBNbyAgPHptb0Bnb29nbGUuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEdyYXBo
aWNzQ29udGV4dDNEOjpyZXNoYXBlIGlzIGNsZWFyaW5nIHVzaW5nIGN1cnJlbnQgY2xlYXIgY29s
b3IgaW5zdGVhZCBvZiB0cmFuc3BhcmVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NDQwNjQKKworICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL3Jl
bmRlcmJ1ZmZlci1pbml0aWFsaXphdGlvbi1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9j
YW52YXMvd2ViZ2wvcmVuZGVyYnVmZmVyLWluaXRpYWxpemF0aW9uLmh0bWw6IFRlc3QgdGhhdCBv
IGlzIHVzZWQgYXMgdGhlIGNsZWFyIHZhbHVlcyBpbnN0ZWFkIG9mIHRoZSBjdXJyZW50IGdsIGNs
ZWFyIHZhbHVlcy4KKwogMjAxMC0xMS0xOCAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxl
LmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBHZW9mZnJleSBHYXJlbi4KSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3JlbmRlcmJ1ZmZlci1pbml0aWFsaXphdGlvbi1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvcmVu
ZGVyYnVmZmVyLWluaXRpYWxpemF0aW9uLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNzIzMzgpCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9yZW5kZXJidWZmZXItaW5pdGlhbGl6YXRp
b24tZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC02LDYgKzYsMTEgQEAgVGVzdCB3aGV0
aGVyIHRoZSBXZWJHTCBpbnRlcm5hbCBidWZmZXJzIAogUEFTUyBCdWZmZXJzIGhhdmUgYmVlbiBp
bml0aWFsaXplZCB0byAwLgogVGVzdCB3aGV0aGVyIHVzZXIgY3JlYXRlZCBidWZmZXJzIGhhdmUg
YmVlbiBpbml0aWFsaXplZCB0byAwLgogUEFTUyBCdWZmZXJzIGhhdmUgYmVlbiBpbml0aWFsaXpl
ZCB0byAwLgorVGVzdCB3aGV0aGVyIHRoZSBXZWJHTCBpbnRlcm5hbCBidWZmZXJzIGhhdmUgYmVl
biBpbml0aWFsaXplZCB0byAwLgorUEFTUyBCdWZmZXJzIGhhdmUgYmVlbiBpbml0aWFsaXplZCB0
byAwLgorVGVzdCB3aGV0aGVyIHVzZXIgY3JlYXRlZCBidWZmZXJzIGhhdmUgYmVlbiBpbml0aWFs
aXplZCB0byAwLgorUEFTUyBCdWZmZXJzIGhhdmUgYmVlbiBpbml0aWFsaXplZCB0byAwLgorUEFT
UyBjbGVhckNvbG9yIGlzIFsxLCAwLCAwLCAxXQogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQogCiBURVNUIENPTVBMRVRFCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJn
bC9yZW5kZXJidWZmZXItaW5pdGlhbGl6YXRpb24uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9yZW5kZXJidWZmZXItaW5pdGlhbGl6YXRpb24uaHRtbAko
cmV2aXNpb24gNzIzMzgpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9yZW5kZXJi
dWZmZXItaW5pdGlhbGl6YXRpb24uaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNCwyMyArNCwxNyBA
QAogPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+CiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3dlYmdsLXRlc3QuanMiPjwvc2NyaXB0PgogPHNj
cmlwdD4KLWZ1bmN0aW9uIHJ1blRlc3QoKQorZnVuY3Rpb24gcnVuVGVzdChnbCwgd2lkdGgsIGhl
aWdodCkKIHsKLSAgICB2YXIgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3Ri
ZWQiKTsKLSAgICB2YXIgZ2wgPSBjYW52YXMuZ2V0Q29udGV4dCgiZXhwZXJpbWVudGFsLXdlYmds
Iik7Ci0gICAgaWYgKCFnbCkgewotICAgICAgICB0ZXN0RmFpbGVkKCdjYW52YXMuZ2V0Q29udGV4
dCgpIGZhaWxlZCcpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQogCiAgICAgZGVidWco
J1Rlc3Qgd2hldGhlciB0aGUgV2ViR0wgaW50ZXJuYWwgYnVmZmVycyBoYXZlIGJlZW4gaW5pdGlh
bGl6ZWQgdG8gMC4nKTsKLSAgICB2YXIgYnVmID0gbmV3IFVpbnQ4QXJyYXkoNTAwICogNTAwICog
NCk7Ci0gICAgZ2wucmVhZFBpeGVscygwLCAwLCA1MDAsIDUwMCwgZ2wuUkdCQSwgZ2wuVU5TSUdO
RURfQllURSwgYnVmKTsKKyAgICB2YXIgdG90YWxCeXRlcyA9IHdpZHRoICogaGVpZ2h0ICogNDsK
KyAgICB2YXIgYnVmID0gbmV3IFVpbnQ4QXJyYXkodG90YWxCeXRlcyk7CisgICAgZ2wucmVhZFBp
eGVscygwLCAwLCB3aWR0aCwgaGVpZ2h0LCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCBidWYp
OwogICAgIGlmIChnbC5nZXRFcnJvcigpICE9IGdsLk5PX0VSUk9SKSB7CiAgICAgICAgIHRlc3RG
YWlsZWQoJ0dMIGVycm9yIGRldGVjdGVkIGFmdGVyIHJlYWRQaXhlbHMoKS4nKTsKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICB2YXIgdG90YWxCeXRlcyA9IDUwMCAqIDUwMCAqIDQ7
CiAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0b3RhbEJ5dGVzOyArK2kpIHsKICAgICAgICAgaWYg
KGJ1ZltpXSAhPSAwKSB7CiAgICAgICAgICAgICB0ZXN0RmFpbGVkKCdXZWJHTCBpbnRlcm5hbCBi
dWZmZXJzIGFyZSBkaXJ0eS4nKTsKQEAgLTM0LDcgKzI4LDcgQEAgZnVuY3Rpb24gcnVuVGVzdCgp
CiAgICAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBmYm8pOwogICAgIHZhciBj
b2xvcmJ1ZmZlciA9IGdsLmNyZWF0ZVJlbmRlcmJ1ZmZlcigpOwogICAgIGdsLmJpbmRSZW5kZXJi
dWZmZXIoZ2wuUkVOREVSQlVGRkVSLCBjb2xvcmJ1ZmZlcik7Ci0gICAgZ2wucmVuZGVyYnVmZmVy
U3RvcmFnZShnbC5SRU5ERVJCVUZGRVIsIGdsLlJHQkE0LCA1MDAsIDUwMCk7CisgICAgZ2wucmVu
ZGVyYnVmZmVyU3RvcmFnZShnbC5SRU5ERVJCVUZGRVIsIGdsLlJHQkE0LCB3aWR0aCwgaGVpZ2h0
KTsKICAgICBpZiAoZ2wuZ2V0RXJyb3IoKSAhPSBnbC5OT19FUlJPUikgewogICAgICAgICB0ZXN0
RmFpbGVkKCdHTCBlcnJvciBkZXRlY3RlZCBhZnRlciByZW5kZXJidWZmZXJTdG9yYWdlKGludGVy
bmFsZm9ybWF0ID0gUkdCQTQpLicpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC00NCw3ICsz
OCw3IEBAIGZ1bmN0aW9uIHJ1blRlc3QoKQogICAgICAgICB0ZXN0RmFpbGVkKCdGcmFtZWJ1ZmZl
ciBpbmNvbXBsZXRlLicpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIGdsLnJl
YWRQaXhlbHMoMCwgMCwgNTAwLCA1MDAsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIGJ1Zik7
CisgICAgZ2wucmVhZFBpeGVscygwLCAwLCB3aWR0aCwgaGVpZ2h0LCBnbC5SR0JBLCBnbC5VTlNJ
R05FRF9CWVRFLCBidWYpOwogICAgIGlmIChnbC5nZXRFcnJvcigpICE9IGdsLk5PX0VSUk9SKSB7
CiAgICAgICAgIHRlc3RGYWlsZWQoJ0dMIGVycm9yIGRldGVjdGVkIGFmdGVyIHJlYWRQaXhlbHMo
KS4nKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNjIsNyArNTYsNyBAQCBmdW5jdGlvbiBy
dW5UZXN0KCkKIDwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08Y2FudmFzIGlkPSJ0ZXN0YmVk
IiB3aWR0aD0iNTAwcHgiIGhlaWdodD0iNTAwcHgiPjwvY2FudmFzPgorPGNhbnZhcyBpZD0idGVz
dGJlZCIgd2lkdGg9IjQwMHB4IiBoZWlnaHQ9IjQwMHB4Ij48L2NhbnZhcz4KIDxkaXYgaWQ9ImRl
c2NyaXB0aW9uIj48L2Rpdj4KIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgogPHNjcmlwdD4KQEAg
LTcwLDcgKzY0LDI0IEBAIHZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSBmYWxzZTsKIAogZGVzY3Jp
cHRpb24oJ1ZlcmlmeSByZW5kZXJidWZmZXJzIGFyZSBpbml0aWFsaXplZCB0byAwIGJlZm9yZSBi
ZWluZyByZWFkIGluIFdlYkdMJyk7CiAKLXJ1blRlc3QoKTsKK3ZhciBjYW52YXMgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgidGVzdGJlZCIpOwordmFyIGdsID0gY2FudmFzLmdldENvbnRleHQo
ImV4cGVyaW1lbnRhbC13ZWJnbCIpOworaWYgKCFnbCkgeworICAgIHRlc3RGYWlsZWQoJ2NhbnZh
cy5nZXRDb250ZXh0KCkgZmFpbGVkJyk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitydW5UZXN0
KGdsLCBjYW52YXMud2lkdGgsIGNhbnZhcy5oZWlnaHQpOworCisvLyBUZXN0aW5nIHRoYXQgY2Fu
dmFzIHJlc2l6aW5nIHdpbGwgY2xlYXIgdGhlIGJ1ZmZlcnMgd2l0aCAwIGluc3RlYWQgb2YgdGhl
IGN1cnJlbnQgY2xlYXIgdmFsdWVzLgorZ2wuY2xlYXJDb2xvcigxLCAwLCAwLCAxKTsKK2NhbnZh
cy53aWR0aCArPSAxOworY2FudmFzLmhlaWdodCArPSAxOworcnVuVGVzdChnbCwgY2FudmFzLndp
ZHRoLCBjYW52YXMuaGVpZ2h0KTsKKworLy8gVGVzdGluZyBidWZmZXIgY2xlYXJpbmcgd29uJ3Qg
Y2hhbmdlIHRoZSBjbGVhciB2YWx1ZXMuCit2YXIgY2xlYXJDb2xvciA9IGdsLmdldFBhcmFtZXRl
cihnbC5DT0xPUl9DTEVBUl9WQUxVRSk7CitzaG91bGRCZSgiY2xlYXJDb2xvciIsICJbMSwgMCwg
MCwgMV0iKTsKIAogc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKIDwvc2NyaXB0Pgo=
</data>
<flag name="review"
          id="64989"
          type_id="1"
          status="+"
          setter="kbr"
    />
    <flag name="commit-queue"
          id="64990"
          type_id="3"
          status="-"
          setter="zmo"
    />
          </attachment>
      

    </bug>

</bugzilla>