<?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>40945</bug_id>
          
          <creation_ts>2010-06-21 14:22:30 -0700</creation_ts>
          <short_desc>WebSocket errors should be logged to console</short_desc>
          <delta_ts>2010-12-20 21:55:26 -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>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>41419</dependson>
          <blocked>34565</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexey Proskuryakov">ap</reporter>
          <assigned_to name="Yuta Kitamura">yutak</assigned_to>
          <cc>joenotcharles</cc>
    
    <cc>ukai</cc>
    
    <cc>yutak</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>240891</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-06-21 14:22:30 -0700</bug_when>
    <thetext>Currently, there is no explanation of why a WebSocket connection is not established - all a developer gets is a &quot;close&quot; event.

While this is correct behavior for Web content, it&apos;s extremely unfriendly to developers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>240892</commentid>
    <comment_count>1</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-06-21 14:27:42 -0700</bug_when>
    <thetext>One particularly mysterious case that we need to report is failing to establish a connection due to SSL failures.

For CFNetwork, we can use APIs such as CFErrorCopyDescription() to report the errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>317535</commentid>
    <comment_count>2</comment_count>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2010-12-06 03:57:58 -0800</bug_when>
    <thetext>I will take care of this.

Here is rough sketch of my implementation plan:

* Add some members (failingURL and localizedDescription for example, as in ResourceError) to SocketStreamError.
* Pass the reason of a failure to SocketStreamError instance (in each port), and notify it via SocketStreamHandleClient::didFail().
* Log the reason of failure in WebSocketChannel::didFail handler.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>323705</commentid>
    <comment_count>3</comment_count>
      <attachid>76866</attachid>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2010-12-17 04:23:26 -0800</bug_when>
    <thetext>Created attachment 76866
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>323820</commentid>
    <comment_count>4</comment_count>
      <attachid>76866</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-12-17 09:16:16 -0800</bug_when>
    <thetext>Comment on attachment 76866
Patch

+ws://nonexistent.domain.invalid:80/WebSocket network error: error code 2 (Operation could not be completed. (kCFErrorDomainCFNetwork error 2.))

It isn&apos;t great to print the almost useless error code twice.

This bug is originally about invalid SSL certificates. Did you check that a useful message is printed for those? How does it look?

+#ifdef BUILDING_ON_TIGER

Please put modern code first, and Tiger specific in a fallback branch (i.e. please reverse both ifdefs).

This is definitely an improvement, r=me. Please do check that this addresses the original issue reported here (printing an error for SSL certificates).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>324267</commentid>
    <comment_count>5</comment_count>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2010-12-19 19:13:39 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 76866 [details])
&gt; +ws://nonexistent.domain.invalid:80/WebSocket network error: error code 2 (Operation could not be completed. (kCFErrorDomainCFNetwork error 2.))
&gt; 
&gt; It isn&apos;t great to print the almost useless error code twice.

I will change the code so that it will not show errorCode when localizedDescription is provided.

&gt; 
&gt; This bug is originally about invalid SSL certificates. Did you check that a useful message is printed for those? How does it look?

I tried, and it looked like:
&gt;WebSocket network error: error code -9812 (Operation could not be completed. (OSStatus Error -9812))
...which sounds less helpful.

It looks like this status code comes from SecureTransport.h: 
&gt;errSSLUnknownRootCert		= -9812,	/* valid cert chain, untrusted root */

Do you have any idea about how to improve this message? I do not have a good experience on Mac programming, and do not know a portable way to convert this status code into human-readable description.


&gt; 
&gt; +#ifdef BUILDING_ON_TIGER
&gt; 
&gt; Please put modern code first, and Tiger specific in a fallback branch (i.e. please reverse both ifdefs).

Sure.

&gt; 
&gt; This is definitely an improvement, r=me. Please do check that this addresses the original issue reported here (printing an error for SSL certificates).

Thank you for your review!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>324274</commentid>
    <comment_count>6</comment_count>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2010-12-19 19:38:24 -0800</bug_when>
    <thetext>On Windows, the error message about SSL certificate will look like:

&gt; WebSocket network error: error code -2146762487 (The operation couldn’t be completed. (OSStatus error -2146762487.))

I have no idea about where this value comes from...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>324279</commentid>
    <comment_count>7</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-12-19 20:27:19 -0800</bug_when>
    <thetext>For errors in kCFErrorDomainOSStatus domain, GetMacOSStatusCommentString() might print a useful message. I&apos;d be slightly surprised if that worked when CFErrorCopyDescription() didn&apos;t, but seems worth a try.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>324281</commentid>
    <comment_count>8</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-12-19 20:51:02 -0800</bug_when>
    <thetext>Oops, I just noticed a memory leak:

+        RetainPtr&lt;CFErrorRef&gt; error(CFReadStreamCopyError(m_readStream.get()));

This should be (in two places):

+        RetainPtr&lt;CFErrorRef&gt; error(AdoptCF, CFReadStreamCopyError(m_readStream.get()));</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>324282</commentid>
    <comment_count>9</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-12-19 20:52:05 -0800</bug_when>
    <thetext>And same for description, of course - CFErrorCopyDescription is also a &quot;copy&quot; function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>324350</commentid>
    <comment_count>10</comment_count>
      <attachid>76994</attachid>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2010-12-20 06:20:06 -0800</bug_when>
    <thetext>Created attachment 76994
Patch v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>324352</commentid>
    <comment_count>11</comment_count>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2010-12-20 06:22:55 -0800</bug_when>
    <thetext>I&apos;m requesting a review again because I made significant changes to the previous patch:
- Changed error handling in SocketStreamHandle to handle OSStatus
- Added a test to check invalid SSL certificate.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>324417</commentid>
    <comment_count>12</comment_count>
      <attachid>76994</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-12-20 08:44:45 -0800</bug_when>
    <thetext>Comment on attachment 76994
Patch v2

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

&gt; WebCore/platform/network/cf/SocketStreamHandleCFNet.cpp:599
&gt; +void SocketStreamHandle::notifyCFErrorToClient(CFErrorRef error)

The name of this function is not grammatically correct. I&apos;d say &quot;reportErrorToClient&quot; or just &quot;reportError&quot; - there is no need to encode argument type in funticon name.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>324781</commentid>
    <comment_count>13</comment_count>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2010-12-20 21:44:28 -0800</bug_when>
    <thetext>Committed r74390: &lt;http://trac.webkit.org/changeset/74390&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>324782</commentid>
    <comment_count>14</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-12-20 21:55:26 -0800</bug_when>
    <thetext>I&apos;ve filed &lt;rdar://problem/8787916&gt; about making CFErrorCopyDescription use a better string for Security framework&apos;s OSStatus errors.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>76866</attachid>
            <date>2010-12-17 04:23:26 -0800</date>
            <delta_ts>2010-12-20 06:20:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-40945-20101217212323.patch</filename>
            <type>text/plain</type>
            <size>10533</size>
            <attacher name="Yuta Kitamura">yutak</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAxYjFjMjgwNzk3YjBjMzE0NmViNWVmOTVhNTM3MGRkYmQ0OTMyNTFlLi4yYjI0ZGRj
MDYzZjUzYWNiMjQzNjI5MmRiNTFjNGJhYjBkNGM0ZGJhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMTAtMTItMTcgIFl1dGEgS2l0YW11cmEgIDx5dXRha0BjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViU29ja2V0IGVycm9y
cyBzaG91bGQgYmUgbG9nZ2VkIHRvIGNvbnNvbGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTQwOTQ1CisKKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3Bl
Y3Rvci9jb25zb2xlLXdlYnNvY2tldC1lcnJvci5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9tYWMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvY29uc29sZS13ZWJzb2NrZXQtZXJyb3ItZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vaHR0cC90ZXN0cy9pbnNw
ZWN0b3IvY29uc29sZS13ZWJzb2NrZXQtZXJyb3ItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKwogMjAx
MC0xMi0xNyAgSmFtZXMgU2ltb25zZW4gIDxzaW1vbmphbUBjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgRGFyaW4gRmlzaGVyLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9pbnNwZWN0b3IvY29uc29sZS13ZWJzb2NrZXQtZXJyb3IuaHRtbCBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUtd2Vic29ja2V0LWVycm9yLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uOThmOGQ0NGE1MWZjNzRlY2Y4ODdhMGQ1NWFiN2ViMzlkZmUwZWZlNgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUtd2Vi
c29ja2V0LWVycm9yLmh0bWwKQEAgLTAsMCArMSwyOSBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3Jp
cHQgc3JjPSJpbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iY29uc29s
ZS10ZXN0cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorZnVuY3Rpb24gZG9pdCgpCit7CisgICAg
dmFyIHdzID0gbmV3IFdlYlNvY2tldCgid3M6Ly9ub25leGlzdGVudC5kb21haW4uaW52YWxpZC8i
KTsgLy8gTmV0d29yayBlcnJvciBzaG91bGQgYmUgbG9nZ2VkIHRvIGNvbnNvbGUuCisgICAgd3Mu
b25vcGVuID0gZnVuY3Rpb24oKSB7CisgICAgICAgIGNvbnNvbGUubG9nKCJvbm9wZW4gaXMgY2Fs
bGVkLiIpOworICAgIH07CisgICAgd3Mub25lcnJvciA9IGZ1bmN0aW9uKCkgeworICAgICAgICBj
b25zb2xlLmxvZygib25lcnJvciBpcyBjYWxsZWQuIik7CisgICAgfTsKKyAgICB3cy5vbmNsb3Nl
ID0gZnVuY3Rpb24oKSB7CisgICAgICAgIGNvbnNvbGUubG9nKCJvbmNsb3NlIGlzIGNhbGxlZC4i
KTsKKyAgICAgICAgZHVtcENvbnNvbGVNZXNzYWdlcyhmYWxzZSk7CisgICAgfTsKK30KKzwvc2Ny
aXB0PgorPC9oZWFkPgorCis8Ym9keSBvbmxvYWQ9Im9ubG9hZCgpIj4KKzxwPgorV2ViU29ja2V0
J3MgbmV0d29yayBlcnJvcnMgc2hvdWxkIGJlIGxvZ2dlZCB0byBjb25zb2xlLgorPC9wPgorCis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvaHR0
cC90ZXN0cy9pbnNwZWN0b3IvY29uc29sZS13ZWJzb2NrZXQtZXJyb3ItZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUtd2Vi
c29ja2V0LWVycm9yLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iN2YyOWM5MjQyYTBhZTc5NTk0
NjBjZmNmYjNkYjk3NzQ2Yzg4OGM5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUtd2Vic29ja2V0LWVycm9yLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDYgQEAKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAxNjogb25j
bG9zZSBpcyBjYWxsZWQuCitXZWJTb2NrZXQncyBuZXR3b3JrIGVycm9ycyBzaG91bGQgYmUgbG9n
Z2VkIHRvIGNvbnNvbGUuCisKK3dzOi8vbm9uZXhpc3RlbnQuZG9tYWluLmludmFsaWQ6ODAvV2Vi
U29ja2V0IG5ldHdvcmsgZXJyb3I6IGVycm9yIGNvZGUgMiAoT3BlcmF0aW9uIGNvdWxkIG5vdCBi
ZSBjb21wbGV0ZWQuIChrQ0ZFcnJvckRvbWFpbkNGTmV0d29yayBlcnJvciAyLikpCitjb25zb2xl
LXdlYnNvY2tldC1lcnJvci5odG1sOjE2b25jbG9zZSBpcyBjYWxsZWQuCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9odHRwL3Rlc3RzL2luc3BlY3Rvci9jb25zb2xlLXdl
YnNvY2tldC1lcnJvci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vaHR0
cC90ZXN0cy9pbnNwZWN0b3IvY29uc29sZS13ZWJzb2NrZXQtZXJyb3ItZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjI4NDY4YzZlZTg5MDMxYjgwOGJmNGQ4ZDk3MmI0YmY3ZWJjNzIzNzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vaHR0cC90ZXN0cy9pbnNwZWN0
b3IvY29uc29sZS13ZWJzb2NrZXQtZXJyb3ItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNiBAQAor
Q09OU09MRSBNRVNTQUdFOiBsaW5lIDE2OiBvbmNsb3NlIGlzIGNhbGxlZC4KK1dlYlNvY2tldCdz
IG5ldHdvcmsgZXJyb3JzIHNob3VsZCBiZSBsb2dnZWQgdG8gY29uc29sZS4KKword3M6Ly9ub25l
eGlzdGVudC5kb21haW4uaW52YWxpZDo4MC9XZWJTb2NrZXQgbmV0d29yayBlcnJvcjogZXJyb3Ig
Y29kZSAtMSAoVGhlIG9wZXJhdGlvbiBjb3VsZG7igJl0IGJlIGNvbXBsZXRlZC4gKGtDRkVycm9y
RG9tYWluQ0ZOZXR3b3JrIGVycm9yIC0xLikpCitjb25zb2xlLXdlYnNvY2tldC1lcnJvci5odG1s
OjE2b25jbG9zZSBpcyBjYWxsZWQuCisKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIv
V2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmE0NDU0ZTY1Nzk0ZGNlZTQ0Y2YzODIzZjg4ZmVjOTEw
YzgxMThhZi4uMmE1NzQzYjVjNGVkNWI0MzU3YzQ3MjE0OWJmN2JmZThlNmEyYjkyMyAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwyNiBAQAorMjAxMC0xMi0xNyAgWXV0YSBLaXRhbXVyYSAgPHl1dGFrQGNocm9taXVtLm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWJTb2Nr
ZXQgZXJyb3JzIHNob3VsZCBiZSBsb2dnZWQgdG8gY29uc29sZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDA5NDUKKworICAgICAgICBUZXN0OiBodHRw
L3Rlc3RzL2luc3BlY3Rvci9jb25zb2xlLXdlYnNvY2tldC1lcnJvci5odG1sCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUVycm9yQmFzZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTb2NrZXRTdHJlYW1FcnJvckJhc2U6OmNvbXBhcmUpOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvU29ja2V0U3RyZWFtRXJyb3JCYXNlLmg6CisgICAgICAgIChXZWJDb3JlOjpT
b2NrZXRTdHJlYW1FcnJvckJhc2U6OmZhaWxpbmdVUkwpOgorICAgICAgICAoV2ViQ29yZTo6U29j
a2V0U3RyZWFtRXJyb3JCYXNlOjpsb2NhbGl6ZWREZXNjcmlwdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpTb2NrZXRTdHJlYW1FcnJvckJhc2U6OlNvY2tldFN0cmVhbUVycm9yQmFzZSk6CisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1FcnJvci5oOgorICAgICAgICAo
V2ViQ29yZTo6U29ja2V0U3RyZWFtRXJyb3I6OlNvY2tldFN0cmVhbUVycm9yKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZUNGTmV0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZTo6cmVhZFN0cmVhbUNhbGxiYWNrKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZTo6d3JpdGVTdHJlYW1DYWxsYmFjayk6
CisgICAgICAgICogd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OldlYlNvY2tldENoYW5uZWw6OmRpZEZhaWwpOgorCiAyMDEwLTEyLTE3ICBDYXJsb3Mg
R2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBNYXJ0aW4gUm9iaW5zb24uCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
U29ja2V0U3RyZWFtRXJyb3JCYXNlLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2Nr
ZXRTdHJlYW1FcnJvckJhc2UuY3BwCmluZGV4IDcyZmI0NGNlOWU2NzQzYmE0YWMzM2Y1NmU0ZTQ2
M2NlNmU5YmY0Y2YuLmJiYjVkNTUzZjViMDAwY2Q0ZDUzZDUwMWE1OThkZWRmMjhkMzlmY2QgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1FcnJvckJhc2Uu
Y3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1FcnJvckJhc2Uu
Y3BwCkBAIC00Miw3ICs0MiwyMiBAQCBTb2NrZXRTdHJlYW1FcnJvciBTb2NrZXRTdHJlYW1FcnJv
ckJhc2U6OmNvcHkoKSBjb25zdAogCiBib29sIFNvY2tldFN0cmVhbUVycm9yQmFzZTo6Y29tcGFy
ZShjb25zdCBTb2NrZXRTdHJlYW1FcnJvciYgYSwgY29uc3QgU29ja2V0U3RyZWFtRXJyb3ImIGIp
CiB7Ci0gICAgcmV0dXJuIGEuZXJyb3JDb2RlKCkgPT0gYi5lcnJvckNvZGUoKTsKKyAgICBpZiAo
YS5pc051bGwoKSAmJiBiLmlzTnVsbCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGlm
IChhLmlzTnVsbCgpIHx8IGIuaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IGlmIChhLmVycm9yQ29kZSgpICE9IGIuZXJyb3JDb2RlKCkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIGlmIChhLmZhaWxpbmdVUkwoKSAhPSBiLmZhaWxpbmdVUkwoKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgaWYgKGEubG9jYWxpemVkRGVzY3JpcHRpb24oKSAhPSBiLmxv
Y2FsaXplZERlc2NyaXB0aW9uKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVy
biB0cnVlOwogfQogCiB9ICAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUVycm9yQmFzZS5oIGIvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUVycm9yQmFzZS5oCmluZGV4IGI3Y2EzNWJkYzJmZWFm
NmY0NDcxMzFlZTQwZTZlOGU3NTVkY2RkZjAuLmU2Y2M1NjdkMjUwYzJkNDU2MTM2MTJmYmFmOWY5
Yzg0NWZjNTk0ZDIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRT
dHJlYW1FcnJvckJhc2UuaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3Ry
ZWFtRXJyb3JCYXNlLmgKQEAgLTMyLDYgKzMyLDggQEAKICNpZm5kZWYgU29ja2V0U3RyZWFtRXJy
b3JCYXNlX2gKICNkZWZpbmUgU29ja2V0U3RyZWFtRXJyb3JCYXNlX2gKIAorI2luY2x1ZGUgIlBs
YXRmb3JtU3RyaW5nLmgiCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIFNvY2tl
dFN0cmVhbUVycm9yOwpAQCAtNDQsNiArNDYsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4gbV9pc051bGw7IH0KIAogICAgICAgICBp
bnQgZXJyb3JDb2RlKCkgY29uc3QgeyByZXR1cm4gbV9lcnJvckNvZGU7IH0KKyAgICAgICAgY29u
c3QgU3RyaW5nJiBmYWlsaW5nVVJMKCkgY29uc3QgeyByZXR1cm4gbV9mYWlsaW5nVVJMOyB9Cisg
ICAgICAgIGNvbnN0IFN0cmluZyYgbG9jYWxpemVkRGVzY3JpcHRpb24oKSBjb25zdCB7IHJldHVy
biBtX2xvY2FsaXplZERlc2NyaXB0aW9uOyB9CiAKICAgICAgICAgc3RhdGljIGJvb2wgY29tcGFy
ZShjb25zdCBTb2NrZXRTdHJlYW1FcnJvciYsIGNvbnN0IFNvY2tldFN0cmVhbUVycm9yJik7CiAK
QEAgLTYwLDcgKzY0LDE3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgewogICAgICAg
ICB9CiAKKyAgICAgICAgU29ja2V0U3RyZWFtRXJyb3JCYXNlKGludCBlcnJvckNvZGUsIGNvbnN0
IFN0cmluZyYgZmFpbGluZ1VSTCwgY29uc3QgU3RyaW5nJiBsb2NhbGl6ZWREZXNjcmlwdGlvbikK
KyAgICAgICAgICAgIDogbV9lcnJvckNvZGUoZXJyb3JDb2RlKQorICAgICAgICAgICAgLCBtX2Zh
aWxpbmdVUkwoZmFpbGluZ1VSTCkKKyAgICAgICAgICAgICwgbV9sb2NhbGl6ZWREZXNjcmlwdGlv
bihsb2NhbGl6ZWREZXNjcmlwdGlvbikKKyAgICAgICAgICAgICwgbV9pc051bGwoZmFsc2UpCisg
ICAgICAgIHsKKyAgICAgICAgfQorCiAgICAgICAgIGludCBtX2Vycm9yQ29kZTsKKyAgICAgICAg
U3RyaW5nIG1fZmFpbGluZ1VSTDsKKyAgICAgICAgU3RyaW5nIG1fbG9jYWxpemVkRGVzY3JpcHRp
b247CiAgICAgICAgIGJvb2wgbV9pc051bGw7CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUVycm9yLmggYi9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtRXJyb3IuaAppbmRleCA2YTBiNDQxMmFlYzNjMjlj
ODRkOTg5YmM2N2JlMTEzNDVkMDhlYmQ4Li41YTBjYTA3ZmQ5YTY0MDYwYzVkMmYzOTZlOTQ4ZTZi
OGU1ZDAwN2NiIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0
U3RyZWFtRXJyb3IuaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3Ry
ZWFtRXJyb3IuaApAQCAtNDIsNyArNDIsMTAgQEAgcHVibGljOgogICAgICAgICA6IFNvY2tldFN0
cmVhbUVycm9yQmFzZShlcnJvckNvZGUpCiAgICAgewogICAgIH0KLQorICAgIFNvY2tldFN0cmVh
bUVycm9yKGludCBlcnJvckNvZGUsIGNvbnN0IFN0cmluZyYgZmFpbGluZ1VSTCwgY29uc3QgU3Ry
aW5nJiBsb2NhbGl6ZWREZXNjcmlwdGlvbikKKyAgICAgICAgOiBTb2NrZXRTdHJlYW1FcnJvckJh
c2UoZXJyb3JDb2RlLCBmYWlsaW5nVVJMLCBsb2NhbGl6ZWREZXNjcmlwdGlvbikKKyAgICB7Cisg
ICAgfQogfTsKIAogfSAgLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGVDRk5ldC5jcHAgYi9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlQ0ZOZXQuY3BwCmluZGV4IDI0
YjU4MzUyMzc4YTIzMGVhNTgyMjljZDM2Y2IxN2VjZTJkNzM0YzcuLjQ1OGY5OWJiYzA2YzYwNDdl
NWU5NWJkMjQwZDBiZDJiZmFiZDRhY2YgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGVDRk5ldC5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZUNGTmV0LmNwcApAQCAtNTMwLDggKzUzMCwx
NSBAQCB2b2lkIFNvY2tldFN0cmVhbUhhbmRsZTo6cmVhZFN0cmVhbUNhbGxiYWNrKENGU3RyZWFt
RXZlbnRUeXBlIHR5cGUpCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIGtDRlN0cmVhbUV2ZW50RXJyb3JPY2N1cnJlZDogeworI2lmZGVmIEJV
SUxESU5HX09OX1RJR0VSCiAgICAgICAgIENGU3RyZWFtRXJyb3IgZXJyb3IgPSBDRlJlYWRTdHJl
YW1HZXRFcnJvcihtX3JlYWRTdHJlYW0uZ2V0KCkpOwogICAgICAgICBtX2NsaWVudC0+ZGlkRmFp
bCh0aGlzLCBTb2NrZXRTdHJlYW1FcnJvcihlcnJvci5lcnJvcikpOyAvLyBGSVhNRTogUHJvdmlk
ZSBhIHNlbnNpYmxlIGVycm9yLgorI2Vsc2UKKyAgICAgICAgUmV0YWluUHRyPENGRXJyb3JSZWY+
IGVycm9yKENGUmVhZFN0cmVhbUNvcHlFcnJvcihtX3JlYWRTdHJlYW0uZ2V0KCkpKTsKKyAgICAg
ICAgQ0ZJbmRleCBlcnJvckNvZGUgPSBDRkVycm9yR2V0Q29kZShlcnJvci5nZXQoKSk7CisgICAg
ICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gZGVzY3JpcHRpb24oQ0ZFcnJvckNvcHlEZXNjcmlw
dGlvbihlcnJvci5nZXQoKSkpOworICAgICAgICBtX2NsaWVudC0+ZGlkRmFpbCh0aGlzLCBTb2Nr
ZXRTdHJlYW1FcnJvcihzdGF0aWNfY2FzdDxpbnQ+KGVycm9yQ29kZSksIG1fdXJsLnN0cmluZygp
LCBTdHJpbmcoZGVzY3JpcHRpb24uZ2V0KCkpKSk7CisjZW5kaWYKICAgICAgICAgYnJlYWs7CiAg
ICAgfQogICAgIGNhc2Uga0NGU3RyZWFtRXZlbnRFbmRFbmNvdW50ZXJlZDoKQEAgLTU3NCw4ICs1
ODEsMTUgQEAgdm9pZCBTb2NrZXRTdHJlYW1IYW5kbGU6OndyaXRlU3RyZWFtQ2FsbGJhY2soQ0ZT
dHJlYW1FdmVudFR5cGUgdHlwZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2Uga0NG
U3RyZWFtRXZlbnRFcnJvck9jY3VycmVkOiB7CisjaWZkZWYgQlVJTERJTkdfT05fVElHRVIKICAg
ICAgICAgQ0ZTdHJlYW1FcnJvciBlcnJvciA9IENGV3JpdGVTdHJlYW1HZXRFcnJvcihtX3dyaXRl
U3RyZWFtLmdldCgpKTsKICAgICAgICAgbV9jbGllbnQtPmRpZEZhaWwodGhpcywgU29ja2V0U3Ry
ZWFtRXJyb3IoZXJyb3IuZXJyb3IpKTsgLy8gRklYTUU6IFByb3ZpZGUgYSBzZW5zaWJsZSBlcnJv
ci4KKyNlbHNlCisgICAgICAgIFJldGFpblB0cjxDRkVycm9yUmVmPiBlcnJvcihDRldyaXRlU3Ry
ZWFtQ29weUVycm9yKG1fd3JpdGVTdHJlYW0uZ2V0KCkpKTsKKyAgICAgICAgQ0ZJbmRleCBlcnJv
ckNvZGUgPSBDRkVycm9yR2V0Q29kZShlcnJvci5nZXQoKSk7CisgICAgICAgIFJldGFpblB0cjxD
RlN0cmluZ1JlZj4gZGVzY3JpcHRpb24oQ0ZFcnJvckNvcHlEZXNjcmlwdGlvbihlcnJvci5nZXQo
KSkpOworICAgICAgICBtX2NsaWVudC0+ZGlkRmFpbCh0aGlzLCBTb2NrZXRTdHJlYW1FcnJvcihz
dGF0aWNfY2FzdDxpbnQ+KGVycm9yQ29kZSksIG1fdXJsLnN0cmluZygpLCBTdHJpbmcoZGVzY3Jp
cHRpb24uZ2V0KCkpKSk7CisjZW5kaWYKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2Ug
a0NGU3RyZWFtRXZlbnRFbmRFbmNvdW50ZXJlZDoKZGlmZiAtLWdpdCBhL1dlYkNvcmUvd2Vic29j
a2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcCBiL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRD
aGFubmVsLmNwcAppbmRleCAwMWMyYmVmZmRhNTJhNTY1YzA4Yjg0ZTdjY2QxZDNjOWFlNjcwY2Yw
Li5lZDJjZWExYTU2OWU3ZGU5MjdmZmI2OTcyOGRiYTQxMDM4ZWJhMjc1IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAKKysrIGIvV2ViQ29yZS93ZWJz
b2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCkBAIC0yMDYsMTAgKzIwNiwxNiBAQCB2b2lkIFdl
YlNvY2tldENoYW5uZWw6OmRpZFJlY2VpdmVEYXRhKFNvY2tldFN0cmVhbUhhbmRsZSogaGFuZGxl
LCBjb25zdCBjaGFyKiBkYQogICAgICAgICAgICAgYnJlYWs7CiB9CiAKLXZvaWQgV2ViU29ja2V0
Q2hhbm5lbDo6ZGlkRmFpbChTb2NrZXRTdHJlYW1IYW5kbGUqIGhhbmRsZSwgY29uc3QgU29ja2V0
U3RyZWFtRXJyb3ImKQordm9pZCBXZWJTb2NrZXRDaGFubmVsOjpkaWRGYWlsKFNvY2tldFN0cmVh
bUhhbmRsZSogaGFuZGxlLCBjb25zdCBTb2NrZXRTdHJlYW1FcnJvciYgZXJyb3IpCiB7CiAgICAg
TE9HKE5ldHdvcmssICJXZWJTb2NrZXRDaGFubmVsICVwIGRpZEZhaWwiLCB0aGlzKTsKICAgICBB
U1NFUlQoaGFuZGxlID09IG1faGFuZGxlIHx8ICFtX2hhbmRsZSk7CisgICAgaWYgKG1fY29udGV4
dCkgeworICAgICAgICBTdHJpbmcgbWVzc2FnZSA9IG1ha2VTdHJpbmcoIldlYlNvY2tldCBuZXR3
b3JrIGVycm9yOiBlcnJvciBjb2RlICIsIFN0cmluZzo6bnVtYmVyKGVycm9yLmVycm9yQ29kZSgp
KSk7CisgICAgICAgIGlmICghZXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24oKS5pc051bGwoKSkK
KyAgICAgICAgICAgIG1lc3NhZ2UuYXBwZW5kKCIgKCIgKyBlcnJvci5sb2NhbGl6ZWREZXNjcmlw
dGlvbigpICsgIikiKTsKKyAgICAgICAgbV9jb250ZXh0LT5hZGRNZXNzYWdlKE90aGVyTWVzc2Fn
ZVNvdXJjZSwgTmV0d29ya0Vycm9yTWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCBtZXNz
YWdlLCAwLCBlcnJvci5mYWlsaW5nVVJMKCkpOworICAgIH0KICAgICBtX3Nob3VsZERpc2NhcmRS
ZWNlaXZlZERhdGEgPSB0cnVlOwogICAgIGhhbmRsZS0+Y2xvc2UoKTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>76994</attachid>
            <date>2010-12-20 06:20:06 -0800</date>
            <delta_ts>2010-12-20 08:44:45 -0800</delta_ts>
            <desc>Patch v2</desc>
            <filename>bug-40945-20101220232003.patch</filename>
            <type>text/plain</type>
            <size>14149</size>
            <attacher name="Yuta Kitamura">yutak</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBmMjNmOWY2NjA1NWE5YTNhZjdhNjE3YzY2YmZkMGY5MDdhODQxNGU3Li45ZTNlZjAw
ZmZiNjI1OTI1MzBiOWEzN2M5ZGFmMzAwNTI1ODIyYTc1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAK
KzIwMTAtMTItMjAgIFl1dGEgS2l0YW11cmEgIDx5dXRha0BjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViU29ja2V0IGVycm9y
cyBzaG91bGQgYmUgbG9nZ2VkIHRvIGNvbnNvbGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTQwOTQ1CisKKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3Bl
Y3Rvci9jb25zb2xlLXdlYnNvY2tldC1lcnJvci5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9tYWMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvY29uc29sZS13ZWJzb2NrZXQtZXJyb3ItZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vU2tpcHBlZDogQWRkZWQg
Y29uc29sZS13ZWJzb2NrZXQtZXJyb3IuaHRtbAorICAgICAgICBiZWNhdXNlIEhUVFBTIHNlcnZl
ciBpcyBub3Qgc3VwcG9ydGVkIG9uIFdpbmRvd3MgeWV0LgorCiAyMDEwLTEyLTIwICBYYW4gTG9w
ZXogIDx4bG9wZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBlZGl0aW5nL3NlbGVjdGlv
bi9leHRlbmQtYnktY2hhcmFjdGVyLTAwMy5odG1sIGlzIGZsYWtleQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvY29uc29sZS13ZWJzb2NrZXQtZXJyb3IuaHRt
bCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUtd2Vic29ja2V0LWVy
cm9yLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGMwYTAxOTE3ZDc1ZTcxYTU5MmViOTBhODdmMmVkYWNlNTMx
ZDExMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9y
L2NvbnNvbGUtd2Vic29ja2V0LWVycm9yLmh0bWwKQEAgLTAsMCArMSw2OCBAQAorPGh0bWw+Cis8
aGVhZD4KKzxzY3JpcHQgc3JjPSJpbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iY29uc29sZS10ZXN0cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgordmFyIHRlc3RGdW5j
dGlvbnMgPSBbdGVzdEROU0xvb2t1cCwgdGVzdFNTTENlcnRpZmljYXRlXTsKK3ZhciBuZXh0VGVz
dEluZGV4ID0gMDsKKworZnVuY3Rpb24gZG9pdCgpCit7CisgICAgZG9OZXh0VGVzdCgpOworfQor
CitmdW5jdGlvbiBkb05leHRUZXN0KCkKK3sKKyAgICBpZiAobmV4dFRlc3RJbmRleCA9PSB0ZXN0
RnVuY3Rpb25zLmxlbmd0aCkgeworICAgICAgICBkdW1wQ29uc29sZU1lc3NhZ2VzKGZhbHNlKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICB2YXIgdGVzdEZ1bmN0aW9uID0gdGVzdEZ1bmN0
aW9uc1tuZXh0VGVzdEluZGV4XTsKKyAgICBuZXh0VGVzdEluZGV4Kys7CisgICAgdGVzdEZ1bmN0
aW9uKCk7Cit9CisKK2Z1bmN0aW9uIHRlc3RETlNMb29rdXAoKQoreworICAgIGNvbnNvbGUubG9n
KCJ0ZXN0RE5TTG9va3VwOiBUZXN0IHN0YXJ0ZWQuIik7CisgICAgdmFyIHdzID0gbmV3IFdlYlNv
Y2tldCgid3M6Ly9ub25leGlzdGVudC5kb21haW4uaW52YWxpZC8iKTsgLy8gTmV0d29yayBlcnJv
ciBzaG91bGQgYmUgbG9nZ2VkIHRvIGNvbnNvbGUuCisgICAgd3Mub25vcGVuID0gZnVuY3Rpb24o
KSB7CisgICAgICAgIGNvbnNvbGUubG9nKCJ0ZXN0RE5TTG9va3VwOiBvbm9wZW4gaXMgY2FsbGVk
LiIpOworICAgIH07CisgICAgd3Mub25lcnJvciA9IGZ1bmN0aW9uKCkgeworICAgICAgICBjb25z
b2xlLmxvZygidGVzdEROU0xvb2t1cDogb25lcnJvciBpcyBjYWxsZWQuIik7CisgICAgfTsKKyAg
ICB3cy5vbmNsb3NlID0gZnVuY3Rpb24oKSB7CisgICAgICAgIGNvbnNvbGUubG9nKCJ0ZXN0RE5T
TG9va3VwOiBvbmNsb3NlIGlzIGNhbGxlZC4iKTsKKyAgICAgICAgZG9OZXh0VGVzdCgpOworICAg
IH07Cit9CisKK2Z1bmN0aW9uIHRlc3RTU0xDZXJ0aWZpY2F0ZSgpCit7CisgICAgY29uc29sZS5s
b2coInRlc3RTU0xDZXJ0aWZpY2F0ZTogVGVzdCBzdGFydGVkLiIpOworICAgIC8vIFRoZSBmb2xs
b3dpbmcgc3RhdGVtZW50IHNob3VsZCBjYXVzZSAiVW50cnVzdGVkIHJvb3QgY2VydGlmaWNhdGUi
IGVycm9yLgorICAgIC8vIE5vdGUgdGhhdCBwb3J0IDg0NDMgc2VydmVzIEhUVFBTIGNvbnRlbnQg
cmF0aGVyIHRoYW4gc2VjdXJlIFdlYlNvY2tldCwKKyAgICAvLyBidXQgaXQgZG9lcyBub3QgbWF0
dGVyIGJlY2F1c2UgdGhlIHRlc3QgZG9lcyBub3Qgc2VuZCBvciByZWNlaXZlIGFueSBwYXlsb2Fk
LgorICAgIHZhciB3cyA9IG5ldyBXZWJTb2NrZXQoIndzczovLzEyNy4wLjAuMTo4NDQzLyIpOwor
ICAgIHdzLm9ub3BlbiA9IGZ1bmN0aW9uKCkgeworICAgICAgICBjb25zb2xlLmxvZygidGVzdFNT
TENlcnRpZmljYXRlOiBvbm9wZW4gaXMgY2FsbGVkLiIpOworICAgIH07CisgICAgd3Mub25lcnJv
ciA9IGZ1bmN0aW9uKCkgeworICAgICAgICBjb25zb2xlLmxvZygidGVzdFNTTENlcnRpZmljYXRl
OiBvbmVycm9yIGlzIGNhbGxlZC4iKTsKKyAgICB9OworICAgIHdzLm9uY2xvc2UgPSBmdW5jdGlv
bigpIHsKKyAgICAgICAgY29uc29sZS5sb2coInRlc3RTU0xDZXJ0aWZpY2F0ZTogb25jbG9zZSBp
cyBjYWxsZWQuIik7CisgICAgICAgIGRvTmV4dFRlc3QoKTsKKyAgICB9OworfQorPC9zY3JpcHQ+
Cis8L2hlYWQ+CisKKzxib2R5IG9ubG9hZD0ib25sb2FkKCkiPgorPHA+CitXZWJTb2NrZXQncyBu
ZXR3b3JrIGVycm9ycyBzaG91bGQgYmUgbG9nZ2VkIHRvIGNvbnNvbGUuCis8L3A+CisKKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9odHRwL3Rl
c3RzL2luc3BlY3Rvci9jb25zb2xlLXdlYnNvY2tldC1lcnJvci1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvY29uc29sZS13ZWJzb2Nr
ZXQtZXJyb3ItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgzOTkzODYzOTc3MDYyZGUwNjk0ZGI3
YjA1NDE2OWFmYmMxYzI5OTIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvY29uc29sZS13ZWJzb2NrZXQtZXJyb3ItZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsMTMgQEAKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAyNzogdGVzdERO
U0xvb2t1cDogVGVzdCBzdGFydGVkLgorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDM2OiB0ZXN0RE5T
TG9va3VwOiBvbmNsb3NlIGlzIGNhbGxlZC4KK0NPTlNPTEUgTUVTU0FHRTogbGluZSA0MzogdGVz
dFNTTENlcnRpZmljYXRlOiBUZXN0IHN0YXJ0ZWQuCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgNTU6
IHRlc3RTU0xDZXJ0aWZpY2F0ZTogb25jbG9zZSBpcyBjYWxsZWQuCitXZWJTb2NrZXQncyBuZXR3
b3JrIGVycm9ycyBzaG91bGQgYmUgbG9nZ2VkIHRvIGNvbnNvbGUuCisKK2NvbnNvbGUtd2Vic29j
a2V0LWVycm9yLmh0bWw6Mjd0ZXN0RE5TTG9va3VwOiBUZXN0IHN0YXJ0ZWQuCit3czovL25vbmV4
aXN0ZW50LmRvbWFpbi5pbnZhbGlkOjgwL1dlYlNvY2tldCBuZXR3b3JrIGVycm9yOiBPcGVyYXRp
b24gY291bGQgbm90IGJlIGNvbXBsZXRlZC4gKGtDRkVycm9yRG9tYWluQ0ZOZXR3b3JrIGVycm9y
IDIuKQorY29uc29sZS13ZWJzb2NrZXQtZXJyb3IuaHRtbDozNnRlc3RETlNMb29rdXA6IG9uY2xv
c2UgaXMgY2FsbGVkLgorY29uc29sZS13ZWJzb2NrZXQtZXJyb3IuaHRtbDo0M3Rlc3RTU0xDZXJ0
aWZpY2F0ZTogVGVzdCBzdGFydGVkLgord3NzOi8vMTI3LjAuMC4xOjg0NDMvV2ViU29ja2V0IG5l
dHdvcmsgZXJyb3I6IE9TU3RhdHVzIEVycm9yIC05ODEyOiB2YWxpZCBjZXJ0IGNoYWluLCB1bnRy
dXN0ZWQgcm9vdCAKK2NvbnNvbGUtd2Vic29ja2V0LWVycm9yLmh0bWw6NTV0ZXN0U1NMQ2VydGlm
aWNhdGU6IG9uY2xvc2UgaXMgY2FsbGVkLgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS93aW4vU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9Ta2lwcGVkCmluZGV4
IDgxMDIzMTI2M2JmMzhlMDhjNDdmMzYyOTViZjZjYTNlMzFlZDdjZTIuLjA1Y2YzYzhiODJlZTQ5
Zjk0NTA1YzlhMmQ1NzFjN2NlZWQ0YWNmZGIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL3dpbi9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9Ta2lwcGVkCkBA
IC00Miw2ICs0Miw3IEBAIGh0dHAvdGVzdHMvbmF2aWdhdGlvbi9waW5nLWNyb3NzLW9yaWdpbi1m
cm9tLWh0dHBzLmh0bWwKIGh0dHAvdGVzdHMvc3NsCiBodHRwL3Rlc3RzL3NlY3VyaXR5L2Nyb3Nz
LWZyYW1lLWFjY2Vzcy1wcm90b2NvbC1leHBsaWNpdC1kb21haW4uaHRtbAogaHR0cC90ZXN0cy9z
ZWN1cml0eS9jcm9zcy1mcmFtZS1hY2Nlc3MtcHJvdG9jb2wuaHRtbAoraHR0cC90ZXN0cy9pbnNw
ZWN0b3IvY29uc29sZS13ZWJzb2NrZXQtZXJyb3IuaHRtbAogCiAjIEZhaWxzIDxyZGFyOi8vcHJv
YmxlbS81Njc0Mjg5PgogbWVkaWEvdmlkZW8tc2Vlay1wYXN0LWVuZC1wYXVzZWQuaHRtbApkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBjMThm
ZTkwOTAxZWQzYThmMjYyNmVmMGQ3MzM1OTdhYWZlNjdmNmI1Li43OGZjODQzOGM1YTExZmZjYjdh
ZjVlMTU1ZDdmZWQ0MzM5ZjQ3MmRlIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysg
Yi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDEwLTEyLTIwICBZdXRhIEtp
dGFtdXJhICA8eXV0YWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFdlYlNvY2tldCBlcnJvcnMgc2hvdWxkIGJlIGxvZ2dlZCB0
byBjb25zb2xlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD00MDk0NQorCisgICAgICAgIFRlc3Q6IGh0dHAvdGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUtd2Vi
c29ja2V0LWVycm9yLmh0bWwKKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvU29ja2V0U3Ry
ZWFtRXJyb3JCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNvY2tldFN0cmVhbUVycm9yQmFz
ZTo6Y29tcGFyZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1FcnJv
ckJhc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNvY2tldFN0cmVhbUVycm9yQmFzZTo6ZmFpbGlu
Z1VSTCk6CisgICAgICAgIChXZWJDb3JlOjpTb2NrZXRTdHJlYW1FcnJvckJhc2U6OmxvY2FsaXpl
ZERlc2NyaXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNvY2tldFN0cmVhbUVycm9yQmFzZTo6
U29ja2V0U3RyZWFtRXJyb3JCYXNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Nv
Y2tldFN0cmVhbUVycm9yLmg6CisgICAgICAgIChXZWJDb3JlOjpTb2NrZXRTdHJlYW1FcnJvcjo6
U29ja2V0U3RyZWFtRXJyb3IpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0
U3RyZWFtSGFuZGxlLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJl
YW1IYW5kbGVDRk5ldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGU6
OnJlYWRTdHJlYW1DYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5k
bGU6OndyaXRlU3RyZWFtQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6U29ja2V0U3RyZWFt
SGFuZGxlOjpub3RpZnlDRkVycm9yVG9DbGllbnQpOgorICAgICAgICAqIHdlYnNvY2tldHMvV2Vi
U29ja2V0Q2hhbm5lbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjpk
aWRGYWlsKToKKwogMjAxMC0xMi0yMCAgWXVyeSBTZW1pa2hhdHNreSAgPHl1cnlzQGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBQYXZlbCBGZWxkbWFuLgpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUVycm9yQmFzZS5jcHAgYi9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtRXJyb3JCYXNlLmNwcAppbmRleCA3MmZi
NDRjZTllNjc0M2JhNGFjMzNmNTZlNGU0NjNjZTZlOWJmNGNmLi5iYmI1ZDU1M2Y1YjAwMGNkNGQ1
M2Q1MDFhNTk4ZGVkZjI4ZDM5ZmNkIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvU29ja2V0U3RyZWFtRXJyb3JCYXNlLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvU29ja2V0U3RyZWFtRXJyb3JCYXNlLmNwcApAQCAtNDIsNyArNDIsMjIgQEAgU29ja2V0U3Ry
ZWFtRXJyb3IgU29ja2V0U3RyZWFtRXJyb3JCYXNlOjpjb3B5KCkgY29uc3QKIAogYm9vbCBTb2Nr
ZXRTdHJlYW1FcnJvckJhc2U6OmNvbXBhcmUoY29uc3QgU29ja2V0U3RyZWFtRXJyb3ImIGEsIGNv
bnN0IFNvY2tldFN0cmVhbUVycm9yJiBiKQogewotICAgIHJldHVybiBhLmVycm9yQ29kZSgpID09
IGIuZXJyb3JDb2RlKCk7CisgICAgaWYgKGEuaXNOdWxsKCkgJiYgYi5pc051bGwoKSkKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisKKyAgICBpZiAoYS5pc051bGwoKSB8fCBiLmlzTnVsbCgpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoYS5lcnJvckNvZGUoKSAhPSBiLmVycm9yQ29k
ZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoYS5mYWlsaW5nVVJMKCkgIT0g
Yi5mYWlsaW5nVVJMKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChhLmxvY2Fs
aXplZERlc2NyaXB0aW9uKCkgIT0gYi5sb2NhbGl6ZWREZXNjcmlwdGlvbigpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogfSAgLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1F
cnJvckJhc2UuaCBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1FcnJvckJh
c2UuaAppbmRleCBiN2NhMzViZGMyZmVhZjZmNDQ3MTMxZWU0MGU2ZThlNzU1ZGNkZGYwLi5lNmNj
NTY3ZDI1MGMyZDQ1NjEzNjEyZmJhZjlmOWM4NDVmYzU5NGQyIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtRXJyb3JCYXNlLmgKKysrIGIvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUVycm9yQmFzZS5oCkBAIC0zMiw2ICszMiw4IEBA
CiAjaWZuZGVmIFNvY2tldFN0cmVhbUVycm9yQmFzZV9oCiAjZGVmaW5lIFNvY2tldFN0cmVhbUVy
cm9yQmFzZV9oCiAKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKICAgICBjbGFzcyBTb2NrZXRTdHJlYW1FcnJvcjsKQEAgLTQ0LDYgKzQ2LDggQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJu
IG1faXNOdWxsOyB9CiAKICAgICAgICAgaW50IGVycm9yQ29kZSgpIGNvbnN0IHsgcmV0dXJuIG1f
ZXJyb3JDb2RlOyB9CisgICAgICAgIGNvbnN0IFN0cmluZyYgZmFpbGluZ1VSTCgpIGNvbnN0IHsg
cmV0dXJuIG1fZmFpbGluZ1VSTDsgfQorICAgICAgICBjb25zdCBTdHJpbmcmIGxvY2FsaXplZERl
c2NyaXB0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9sb2NhbGl6ZWREZXNjcmlwdGlvbjsgfQogCiAg
ICAgICAgIHN0YXRpYyBib29sIGNvbXBhcmUoY29uc3QgU29ja2V0U3RyZWFtRXJyb3ImLCBjb25z
dCBTb2NrZXRTdHJlYW1FcnJvciYpOwogCkBAIC02MCw3ICs2NCwxNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgICAgIHsKICAgICAgICAgfQogCisgICAgICAgIFNvY2tldFN0cmVhbUVycm9y
QmFzZShpbnQgZXJyb3JDb2RlLCBjb25zdCBTdHJpbmcmIGZhaWxpbmdVUkwsIGNvbnN0IFN0cmlu
ZyYgbG9jYWxpemVkRGVzY3JpcHRpb24pCisgICAgICAgICAgICA6IG1fZXJyb3JDb2RlKGVycm9y
Q29kZSkKKyAgICAgICAgICAgICwgbV9mYWlsaW5nVVJMKGZhaWxpbmdVUkwpCisgICAgICAgICAg
ICAsIG1fbG9jYWxpemVkRGVzY3JpcHRpb24obG9jYWxpemVkRGVzY3JpcHRpb24pCisgICAgICAg
ICAgICAsIG1faXNOdWxsKGZhbHNlKQorICAgICAgICB7CisgICAgICAgIH0KKwogICAgICAgICBp
bnQgbV9lcnJvckNvZGU7CisgICAgICAgIFN0cmluZyBtX2ZhaWxpbmdVUkw7CisgICAgICAgIFN0
cmluZyBtX2xvY2FsaXplZERlc2NyaXB0aW9uOwogICAgICAgICBib29sIG1faXNOdWxsOwogICAg
IH07CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJl
YW1FcnJvci5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUVycm9y
LmgKaW5kZXggNmEwYjQ0MTJhZWMzYzI5Yzg0ZDk4OWJjNjdiZTExMzQ1ZDA4ZWJkOC4uNWEwY2Ew
N2ZkOWE2NDA2MGM1ZDJmMzk2ZTk0OGU2YjhlNWQwMDdjYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUVycm9yLmgKKysrIGIvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUVycm9yLmgKQEAgLTQyLDcgKzQyLDEwIEBAIHB1
YmxpYzoKICAgICAgICAgOiBTb2NrZXRTdHJlYW1FcnJvckJhc2UoZXJyb3JDb2RlKQogICAgIHsK
ICAgICB9Ci0KKyAgICBTb2NrZXRTdHJlYW1FcnJvcihpbnQgZXJyb3JDb2RlLCBjb25zdCBTdHJp
bmcmIGZhaWxpbmdVUkwsIGNvbnN0IFN0cmluZyYgbG9jYWxpemVkRGVzY3JpcHRpb24pCisgICAg
ICAgIDogU29ja2V0U3RyZWFtRXJyb3JCYXNlKGVycm9yQ29kZSwgZmFpbGluZ1VSTCwgbG9jYWxp
emVkRGVzY3JpcHRpb24pCisgICAgeworICAgIH0KIH07CiAKIH0gIC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFt
SGFuZGxlLmggYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxl
LmgKaW5kZXggNDFkNTQzYTE1YmUxMWJlM2NiYmZjZjQzNmVhMmViMGVhOTA1YzQ0YS4uMmZjODU2
ODQ3YTgxYWIxMTQ5YTMyODc3N2RkMmEzYzFmNzMzZWEzZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZS5oCisrKyBiL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGUuaApAQCAtODQsNiArODQsMTAgQEAg
cHJpdmF0ZToKICAgICB2b2lkIHJlYWRTdHJlYW1DYWxsYmFjayhDRlN0cmVhbUV2ZW50VHlwZSk7
CiAgICAgdm9pZCB3cml0ZVN0cmVhbUNhbGxiYWNrKENGU3RyZWFtRXZlbnRUeXBlKTsKIAorI2lm
bmRlZiBCVUlMRElOR19PTl9USUdFUgorICAgIHZvaWQgbm90aWZ5Q0ZFcnJvclRvQ2xpZW50KENG
RXJyb3JSZWYpOworI2VuZGlmCisKICAgICAvLyBObyBhdXRoZW50aWNhdGlvbiBmb3Igc3RyZWFt
cyBwZXIgc2UsIGJ1dCBwcm94eSBtYXkgYXNrIGZvciBjcmVkZW50aWFscy4KICAgICB2aXJ0dWFs
IHZvaWQgcmVjZWl2ZWRDcmVkZW50aWFsKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiwg
Y29uc3QgQ3JlZGVudGlhbCYpOwogICAgIHZpcnR1YWwgdm9pZCByZWNlaXZlZFJlcXVlc3RUb0Nv
bnRpbnVlV2l0aG91dENyZWRlbnRpYWwoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKTsK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5k
bGVDRk5ldC5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFu
ZGxlQ0ZOZXQuY3BwCmluZGV4IDI0YjU4MzUyMzc4YTIzMGVhNTgyMjljZDM2Y2IxN2VjZTJkNzM0
YzcuLjNmZGU4ODZmMjg3MTI3NGY0MDExMzM1NTViYTJiYzRmMjQ3YmVjNTMgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGVDRk5ldC5jcHAK
KysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZUNGTmV0
LmNwcApAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgIlNvY2tldFN0cmVhbUVycm9yLmgiCiAj
aW5jbHVkZSAiU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50LmgiCiAjaW5jbHVkZSA8d3RmL01haW5U
aHJlYWQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oPgogCiAjaWYg
ZGVmaW5lZChCVUlMRElOR19PTl9USUdFUikgfHwgZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJE
KQogI2luY2x1ZGUgPFN5c3RlbUNvbmZpZ3VyYXRpb24vU3lzdGVtQ29uZmlndXJhdGlvbi5oPgpA
QCAtNTMwLDggKzUzMSwxMyBAQCB2b2lkIFNvY2tldFN0cmVhbUhhbmRsZTo6cmVhZFN0cmVhbUNh
bGxiYWNrKENGU3RyZWFtRXZlbnRUeXBlIHR5cGUpCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIGtDRlN0cmVhbUV2ZW50RXJyb3JPY2N1cnJl
ZDogeworI2lmbmRlZiBCVUlMRElOR19PTl9USUdFUgorICAgICAgICBSZXRhaW5QdHI8Q0ZFcnJv
clJlZj4gZXJyb3IoQWRvcHRDRiwgQ0ZSZWFkU3RyZWFtQ29weUVycm9yKG1fcmVhZFN0cmVhbS5n
ZXQoKSkpOworICAgICAgICBub3RpZnlDRkVycm9yVG9DbGllbnQoZXJyb3IuZ2V0KCkpOworI2Vs
c2UKICAgICAgICAgQ0ZTdHJlYW1FcnJvciBlcnJvciA9IENGUmVhZFN0cmVhbUdldEVycm9yKG1f
cmVhZFN0cmVhbS5nZXQoKSk7CiAgICAgICAgIG1fY2xpZW50LT5kaWRGYWlsKHRoaXMsIFNvY2tl
dFN0cmVhbUVycm9yKGVycm9yLmVycm9yKSk7IC8vIEZJWE1FOiBQcm92aWRlIGEgc2Vuc2libGUg
ZXJyb3IuCisjZW5kaWYKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2Uga0NGU3RyZWFt
RXZlbnRFbmRFbmNvdW50ZXJlZDoKQEAgLTU3NCw4ICs1ODAsMTMgQEAgdm9pZCBTb2NrZXRTdHJl
YW1IYW5kbGU6OndyaXRlU3RyZWFtQ2FsbGJhY2soQ0ZTdHJlYW1FdmVudFR5cGUgdHlwZSkKICAg
ICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2Uga0NGU3RyZWFtRXZlbnRFcnJvck9jY3VycmVk
OiB7CisjaWZuZGVmIEJVSUxESU5HX09OX1RJR0VSCisgICAgICAgIFJldGFpblB0cjxDRkVycm9y
UmVmPiBlcnJvcihBZG9wdENGLCBDRldyaXRlU3RyZWFtQ29weUVycm9yKG1fd3JpdGVTdHJlYW0u
Z2V0KCkpKTsKKyAgICAgICAgbm90aWZ5Q0ZFcnJvclRvQ2xpZW50KGVycm9yLmdldCgpKTsKKyNl
bHNlCiAgICAgICAgIENGU3RyZWFtRXJyb3IgZXJyb3IgPSBDRldyaXRlU3RyZWFtR2V0RXJyb3Io
bV93cml0ZVN0cmVhbS5nZXQoKSk7CiAgICAgICAgIG1fY2xpZW50LT5kaWRGYWlsKHRoaXMsIFNv
Y2tldFN0cmVhbUVycm9yKGVycm9yLmVycm9yKSk7IC8vIEZJWE1FOiBQcm92aWRlIGEgc2Vuc2li
bGUgZXJyb3IuCisjZW5kaWYKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2Uga0NGU3Ry
ZWFtRXZlbnRFbmRFbmNvdW50ZXJlZDoKQEAgLTU4NCw2ICs1OTUsMjkgQEAgdm9pZCBTb2NrZXRT
dHJlYW1IYW5kbGU6OndyaXRlU3RyZWFtQ2FsbGJhY2soQ0ZTdHJlYW1FdmVudFR5cGUgdHlwZSkK
ICAgICB9CiB9CiAKKyNpZm5kZWYgQlVJTERJTkdfT05fVElHRVIKK3ZvaWQgU29ja2V0U3RyZWFt
SGFuZGxlOjpub3RpZnlDRkVycm9yVG9DbGllbnQoQ0ZFcnJvclJlZiBlcnJvcikKK3sKKyAgICBD
RkluZGV4IGVycm9yQ29kZSA9IENGRXJyb3JHZXRDb2RlKGVycm9yKTsKKyAgICBTdHJpbmcgZGVz
Y3JpcHRpb247CisKKyNpZiBQTEFURk9STShNQUMpCisgICAgaWYgKENGRXF1YWwoQ0ZFcnJvckdl
dERvbWFpbihlcnJvciksIGtDRkVycm9yRG9tYWluT1NTdGF0dXMpKSB7CisgICAgICAgIGNvbnN0
IGNoYXIqIGRlc2NyaXB0aW9uT1NTdGF0dXMgPSBHZXRNYWNPU1N0YXR1c0NvbW1lbnRTdHJpbmco
c3RhdGljX2Nhc3Q8T1NTdGF0dXM+KGVycm9yQ29kZSkpOworICAgICAgICBpZiAoZGVzY3JpcHRp
b25PU1N0YXR1cyAmJiBkZXNjcmlwdGlvbk9TU3RhdHVzWzBdICE9ICdcMCcpCisgICAgICAgICAg
ICBkZXNjcmlwdGlvbiA9IG1ha2VTdHJpbmcoIk9TU3RhdHVzIEVycm9yICIsIFN0cmluZzo6bnVt
YmVyKGVycm9yQ29kZSksICI6ICIsIGRlc2NyaXB0aW9uT1NTdGF0dXMpOworICAgIH0KKyNlbmRp
ZgorCisgICAgaWYgKGRlc2NyaXB0aW9uLmlzTnVsbCgpKSB7CisgICAgICAgIFJldGFpblB0cjxD
RlN0cmluZ1JlZj4gZGVzY3JpcHRpb25DRihBZG9wdENGLCBDRkVycm9yQ29weURlc2NyaXB0aW9u
KGVycm9yKSk7CisgICAgICAgIGRlc2NyaXB0aW9uID0gU3RyaW5nKGRlc2NyaXB0aW9uQ0YuZ2V0
KCkpOworICAgIH0KKworICAgIG1fY2xpZW50LT5kaWRGYWlsKHRoaXMsIFNvY2tldFN0cmVhbUVy
cm9yKHN0YXRpY19jYXN0PGludD4oZXJyb3JDb2RlKSwgbV91cmwuc3RyaW5nKCksIGRlc2NyaXB0
aW9uKSk7Cit9CisjZW5kaWYgLy8gQlVJTERJTkdfT05fVElHRVIKKwogU29ja2V0U3RyZWFtSGFu
ZGxlOjp+U29ja2V0U3RyZWFtSGFuZGxlKCkKIHsKICAgICBMT0coTmV0d29yaywgIlNvY2tldFN0
cmVhbUhhbmRsZSAlcCBkdG9yIiwgdGhpcyk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3dlYnNvY2tl
dHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAgYi9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hh
bm5lbC5jcHAKaW5kZXggMDFjMmJlZmZkYTUyYTU2NWMwOGI4NGU3Y2NkMWQzYzlhZTY3MGNmMC4u
MDlmY2Q2YjVlNjA5MDcxYjBlMzdiNjViMTg1ZjhhMDdlMGQwZDg2NyAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCisrKyBiL1dlYkNvcmUvd2Vic29j
a2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcApAQCAtMjA2LDEwICsyMDYsMjAgQEAgdm9pZCBXZWJT
b2NrZXRDaGFubmVsOjpkaWRSZWNlaXZlRGF0YShTb2NrZXRTdHJlYW1IYW5kbGUqIGhhbmRsZSwg
Y29uc3QgY2hhciogZGEKICAgICAgICAgICAgIGJyZWFrOwogfQogCi12b2lkIFdlYlNvY2tldENo
YW5uZWw6OmRpZEZhaWwoU29ja2V0U3RyZWFtSGFuZGxlKiBoYW5kbGUsIGNvbnN0IFNvY2tldFN0
cmVhbUVycm9yJikKK3ZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6ZGlkRmFpbChTb2NrZXRTdHJlYW1I
YW5kbGUqIGhhbmRsZSwgY29uc3QgU29ja2V0U3RyZWFtRXJyb3ImIGVycm9yKQogewogICAgIExP
RyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hhbm5lbCAlcCBkaWRGYWlsIiwgdGhpcyk7CiAgICAgQVNT
RVJUKGhhbmRsZSA9PSBtX2hhbmRsZSB8fCAhbV9oYW5kbGUpOworICAgIGlmIChtX2NvbnRleHQp
IHsKKyAgICAgICAgU3RyaW5nIG1lc3NhZ2U7CisgICAgICAgIGlmIChlcnJvci5pc051bGwoKSkK
KyAgICAgICAgICAgIG1lc3NhZ2UgPSAiV2ViU29ja2V0IG5ldHdvcmsgZXJyb3IiOworICAgICAg
ICBlbHNlIGlmIChlcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbigpLmlzTnVsbCgpKQorICAgICAg
ICAgICAgbWVzc2FnZSA9IG1ha2VTdHJpbmcoIldlYlNvY2tldCBuZXR3b3JrIGVycm9yOiBlcnJv
ciBjb2RlICIsIFN0cmluZzo6bnVtYmVyKGVycm9yLmVycm9yQ29kZSgpKSk7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIG1lc3NhZ2UgPSBtYWtlU3RyaW5nKCJXZWJTb2NrZXQgbmV0d29yayBl
cnJvcjogIiwgZXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24oKSk7CisgICAgICAgIG1fY29udGV4
dC0+YWRkTWVzc2FnZShPdGhlck1lc3NhZ2VTb3VyY2UsIE5ldHdvcmtFcnJvck1lc3NhZ2VUeXBl
LCBFcnJvck1lc3NhZ2VMZXZlbCwgbWVzc2FnZSwgMCwgZXJyb3IuZmFpbGluZ1VSTCgpKTsKKyAg
ICB9CiAgICAgbV9zaG91bGREaXNjYXJkUmVjZWl2ZWREYXRhID0gdHJ1ZTsKICAgICBoYW5kbGUt
PmNsb3NlKCk7CiB9Cg==
</data>
<flag name="review"
          id="68036"
          type_id="1"
          status="+"
          setter="ap"
    />
          </attachment>
      

    </bug>

</bugzilla>