<?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>166636</bug_id>
          
          <creation_ts>2017-01-02 01:53:42 -0800</creation_ts>
          <short_desc>Leverage Substring to create new AtomicStringImpl for StaticStringImpl and SymbolImpl</short_desc>
          <delta_ts>2017-01-02 18:41:44 -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 Template Framework</component>
          <version>WebKit 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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>166586</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>dbates</cc>
    
    <cc>saam</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1263269</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-01-02 01:53:42 -0800</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1263347</commentid>
    <comment_count>1</comment_count>
      <attachid>297910</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-01-02 13:41:46 -0800</bug_when>
    <thetext>Created attachment 297910
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1263348</commentid>
    <comment_count>2</comment_count>
      <attachid>297911</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-01-02 14:03:23 -0800</bug_when>
    <thetext>Created attachment 297911
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1263349</commentid>
    <comment_count>3</comment_count>
      <attachid>297911</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-01-02 14:04:13 -0800</bug_when>
    <thetext>Comment on attachment 297911
Patch

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

&gt; Source/WTF/wtf/text/AtomicStringImpl.cpp:-474
&gt; -

This is lookUp. So the above special handling is not necessary.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1263361</commentid>
    <comment_count>4</comment_count>
      <attachid>297916</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-01-02 15:55:42 -0800</bug_when>
    <thetext>Created attachment 297916
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1263378</commentid>
    <comment_count>5</comment_count>
      <attachid>297916</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-01-02 18:25:06 -0800</bug_when>
    <thetext>Comment on attachment 297916
Patch

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

Love this. Really great.

&gt; Source/WTF/wtf/text/AtomicStringImpl.cpp:71
&gt; +typedef HashSet&lt;StringImpl*&gt; StringTableImpl;

In new code we are using &quot;using&quot; rather than typedef.

&gt; Source/WTF/wtf/text/StringImpl.h:562
&gt; +        StringImpl&amp; get()

Not sure that I really love the name get() for this. Maybe downcastStringImpl or downcast&lt;StringImpl&gt; (presumably those would be non-member functions) or maybe operator StringImpl&amp;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1263379</commentid>
    <comment_count>6</comment_count>
      <attachid>297916</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-01-02 18:29:10 -0800</bug_when>
    <thetext>Comment on attachment 297916
Patch

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

Thanks!

&gt;&gt; Source/WTF/wtf/text/AtomicStringImpl.cpp:71
&gt;&gt; +typedef HashSet&lt;StringImpl*&gt; StringTableImpl;
&gt; 
&gt; In new code we are using &quot;using&quot; rather than typedef.

Looks fine! Fixed.

&gt;&gt; Source/WTF/wtf/text/StringImpl.h:562
&gt;&gt; +        StringImpl&amp; get()
&gt; 
&gt; Not sure that I really love the name get() for this. Maybe downcastStringImpl or downcast&lt;StringImpl&gt; (presumably those would be non-member functions) or maybe operator StringImpl&amp;.

This name `get()` is aligned with NeverDestroyed&lt;&gt;::get() thing. But operator StringImpl&amp; seems nice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1263381</commentid>
    <comment_count>7</comment_count>
      <attachid>297916</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-01-02 18:31:59 -0800</bug_when>
    <thetext>Comment on attachment 297916
Patch

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

&gt;&gt;&gt; Source/WTF/wtf/text/StringImpl.h:562
&gt;&gt;&gt; +        StringImpl&amp; get()
&gt;&gt; 
&gt;&gt; Not sure that I really love the name get() for this. Maybe downcastStringImpl or downcast&lt;StringImpl&gt; (presumably those would be non-member functions) or maybe operator StringImpl&amp;.
&gt; 
&gt; This name `get()` is aligned with NeverDestroyed&lt;&gt;::get() thing. But operator StringImpl&amp; seems nice.

And to avoid copying StaticStringImpl, I think making it noncopyable is nice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1263383</commentid>
    <comment_count>8</comment_count>
      <attachid>297920</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-01-02 18:41:13 -0800</bug_when>
    <thetext>Created attachment 297920
Patch

Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1263384</commentid>
    <comment_count>9</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-01-02 18:41:44 -0800</bug_when>
    <thetext>Committed r210230: &lt;http://trac.webkit.org/changeset/210230&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>297910</attachid>
            <date>2017-01-02 13:41:46 -0800</date>
            <delta_ts>2017-01-02 14:03:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-166636-20170103064022.patch</filename>
            <type>text/plain</type>
            <size>4224</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEwMjI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDAyNzFmYTc0NWFjMmE2MmEzN2E0NWFm
ZmI2Njk5MDUwYTAzYTQ0MTkuLmRkM2RkYjg1ZGU1NGE5NWFjZGI5MmQ2NDJjZWQ5MDBiOTZlNjBh
NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDUgKzEsMjggQEAKIDIwMTctMDEtMDIgIFl1c3VrZSBTdXp1a2kgIDx1dGF0
YW5lLnRlYUBnbWFpbC5jb20+CiAKKyAgICAgICAgTGV2ZXJhZ2UgU3Vic3RyaW5nIHRvIGNyZWF0
ZSBuZXcgQXRvbWljU3RyaW5nSW1wbCBmb3IgU3RhdGljU3RyaW5nSW1wbCBhbmQgU3ltYm9sSW1w
bAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY2NjM2
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUHJldmlv
dXNseSB3ZSBhbHdheXMgY3JlYXRlIHRoZSBmdWxsIGF0b21pYyBzdHJpbmcgaWYgd2UgbmVlZCB0
byBjcmVhdGUgdGhlIHNhbWUgc3RyaW5nCisgICAgICAgIGJhc2VkIG9uIHRoZSBnaXZlbiB2YWx1
ZS4gRm9yIGV4YW1wbGUsIHdoZW4gZ2VuZXJhdGluZyBBdG9taWNTdHJpbmdJbXBsIGZyb20gdGhl
IFN5bWJvbEltcGwsCisgICAgICAgIHdlIG5lZWQgdG8gY3JlYXRlIGEgbmV3IEF0b21pY1N0cmlu
Z0ltcGwgc2luY2UgU3ltYm9sSW1wbCBuZXZlciBiZWNvbWVzIGBpc0F0b21pYygpID09IHRydWVg
LgorICAgICAgICBCdXQgaXQgaXMgY29zdGx5LgorCisgICAgICAgIFRoaXMgcGF0Y2ggbGV2ZXJh
Z2VzIHRoZSBzdWJzdHJpbmcgc3lzdGVtIG9mIFN0cmluZ0ltcGwuIEluc3RlYWQgb2YgYWxsb2Nh
dGluZyB0aGUgY29tcGxldGVseQorICAgICAgICBkdXBsaWNhdGUgc3RyaW5nLCB3ZSBjcmVhdGUg
YSBzdWJzdHJpbmcgU3RyaW5nSW1wbCB0aGF0IHNoYXJlcyB0aGUgc2FtZSBjb250ZW50IHdpdGgg
dGhlCisgICAgICAgIGJhc2Ugc3RyaW5nLgorCisgICAgICAgIE5vIGJlaGF2aW9yIGNoYW5nZS4g
QW5kIHRoZSBiYWhhdmlvciBpcyBhbHJlYWR5IHRlc3RlZCBpbiBUZXN0V1RGLgorCisgICAgICAg
ICogd3RmL3RleHQvQXRvbWljU3RyaW5nSW1wbC5jcHA6CisgICAgICAgIChXVEY6OmFkZFN1YnN0
cmluZyk6CisgICAgICAgIChXVEY6OkF0b21pY1N0cmluZ0ltcGw6OmFkZFNsb3dDYXNlKToKKyAg
ICAgICAgKFdURjo6QXRvbWljU3RyaW5nSW1wbDo6bG9va1VwU2xvd0Nhc2UpOgorCisyMDE3LTAx
LTAyICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCiAgICAgICAgIFVz
ZSBTdGF0aWNTdHJpbmdJbXBsIGluc3RlYWQgb2YgU3RhdGljQVNDSUlMaXRlcmFsCiAgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjY1ODYKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9BdG9taWNTdHJpbmdJbXBsLmNwcCBiL1NvdXJjZS9X
VEYvd3RmL3RleHQvQXRvbWljU3RyaW5nSW1wbC5jcHAKaW5kZXggYWY3Y2NiNTYzMzYyMDFhMTk5
OTA5ZjRiMTdjYTNmMjE2MDgzOTc5ZS4uMmQ2ZmI1MDY3Y2YwOGYwNTk5MmVlNmEwMjY0Nzg0NGMz
MjUyYTVjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9BdG9taWNTdHJpbmdJbXBs
LmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0cmluZ0ltcGwuY3BwCkBAIC00
MDAsMTYgKzQwMCwyNCBAQCBSZWY8QXRvbWljU3RyaW5nSW1wbD4gQXRvbWljU3RyaW5nSW1wbDo6
YWRkTGl0ZXJhbChjb25zdCBjaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZwogICAgIHJldHVybiBhZGRU
b1N0cmluZ1RhYmxlPENoYXJCdWZmZXIsIENoYXJCdWZmZXJGcm9tTGl0ZXJhbERhdGFUcmFuc2xh
dG9yPihidWZmZXIpOwogfQogCitzdGF0aWMgaW5saW5lIFJlZjxBdG9taWNTdHJpbmdJbXBsPiBh
ZGRTdWJzdHJpbmcoU3RyaW5nSW1wbCYgYmFzZSkKK3sKKyAgICBBU1NFUlQoYmFzZS5sZW5ndGgo
KSk7CisgICAgQVNTRVJUKGJhc2UuaXNTeW1ib2woKSB8fCBiYXNlLmlzU3RhdGljKCkpOworCisg
ICAgU3Vic3RyaW5nTG9jYXRpb24gYnVmZmVyID0geyAmYmFzZSwgMCwgYmFzZS5sZW5ndGgoKSB9
OworICAgIGlmIChiYXNlLmlzOEJpdCgpKQorICAgICAgICByZXR1cm4gYWRkVG9TdHJpbmdUYWJs
ZTxTdWJzdHJpbmdMb2NhdGlvbiwgU3Vic3RyaW5nVHJhbnNsYXRvcjg+KGJ1ZmZlcik7CisgICAg
cmV0dXJuIGFkZFRvU3RyaW5nVGFibGU8U3Vic3RyaW5nTG9jYXRpb24sIFN1YnN0cmluZ1RyYW5z
bGF0b3IxNj4oYnVmZmVyKTsKK30KKwogUmVmPEF0b21pY1N0cmluZ0ltcGw+IEF0b21pY1N0cmlu
Z0ltcGw6OmFkZFNsb3dDYXNlKFN0cmluZ0ltcGwmIHN0cmluZykKIHsKICAgICBpZiAoIXN0cmlu
Zy5sZW5ndGgoKSkKICAgICAgICAgcmV0dXJuICpzdGF0aWNfY2FzdDxBdG9taWNTdHJpbmdJbXBs
Kj4oU3RyaW5nSW1wbDo6ZW1wdHkoKSk7CiAKLSAgICBpZiAoc3RyaW5nLmlzU3ltYm9sKCkgfHwg
c3RyaW5nLmlzU3RhdGljKCkpIHsKLSAgICAgICAgaWYgKHN0cmluZy5pczhCaXQoKSkKLSAgICAg
ICAgICAgIHJldHVybiAqYWRkKHN0cmluZy5jaGFyYWN0ZXJzOCgpLCBzdHJpbmcubGVuZ3RoKCkp
OwotICAgICAgICByZXR1cm4gKmFkZChzdHJpbmcuY2hhcmFjdGVyczE2KCksIHN0cmluZy5sZW5n
dGgoKSk7Ci0gICAgfQorICAgIGlmIChzdHJpbmcuaXNTeW1ib2woKSB8fCBzdHJpbmcuaXNTdGF0
aWMoKSkKKyAgICAgICAgcmV0dXJuIGFkZFN1YnN0cmluZyhzdHJpbmcpOwogCiAgICAgQVNTRVJU
X1dJVEhfTUVTU0FHRSghc3RyaW5nLmlzQXRvbWljKCksICJBdG9taWNTdHJpbmdJbXBsIHNob3Vs
ZCBub3QgaGl0IHRoZSBzbG93IGNhc2UgaWYgdGhlIHN0cmluZyBpcyBhbHJlYWR5IGF0b21pYy4i
KTsKIApAQCAtNDI5LDExICs0MzcsOCBAQCBSZWY8QXRvbWljU3RyaW5nSW1wbD4gQXRvbWljU3Ry
aW5nSW1wbDo6YWRkU2xvd0Nhc2UoQXRvbWljU3RyaW5nVGFibGUmIHN0cmluZ1RhYgogICAgIGlm
ICghc3RyaW5nLmxlbmd0aCgpKQogICAgICAgICByZXR1cm4gKnN0YXRpY19jYXN0PEF0b21pY1N0
cmluZ0ltcGwqPihTdHJpbmdJbXBsOjplbXB0eSgpKTsKIAotICAgIGlmIChzdHJpbmcuaXNTeW1i
b2woKSB8fCBzdHJpbmcuaXNTdGF0aWMoKSkgewotICAgICAgICBpZiAoc3RyaW5nLmlzOEJpdCgp
KQotICAgICAgICAgICAgcmV0dXJuICphZGQoc3RyaW5nLmNoYXJhY3RlcnM4KCksIHN0cmluZy5s
ZW5ndGgoKSk7Ci0gICAgICAgIHJldHVybiAqYWRkKHN0cmluZy5jaGFyYWN0ZXJzMTYoKSwgc3Ry
aW5nLmxlbmd0aCgpKTsKLSAgICB9CisgICAgaWYgKHN0cmluZy5pc1N5bWJvbCgpIHx8IHN0cmlu
Zy5pc1N0YXRpYygpKQorICAgICAgICByZXR1cm4gYWRkU3Vic3RyaW5nKHN0cmluZyk7CiAKICAg
ICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFzdHJpbmcuaXNBdG9taWMoKSwgIkF0b21pY1N0cmluZ0lt
cGwgc2hvdWxkIG5vdCBoaXQgdGhlIHNsb3cgY2FzZSBpZiB0aGUgc3RyaW5nIGlzIGFscmVhZHkg
YXRvbWljLiIpOwogCkBAIC00NjYsMTEgKzQ3MSw4IEBAIFJlZlB0cjxBdG9taWNTdHJpbmdJbXBs
PiBBdG9taWNTdHJpbmdJbXBsOjpsb29rVXBTbG93Q2FzZShTdHJpbmdJbXBsJiBzdHJpbmcpCiAg
ICAgaWYgKCFzdHJpbmcubGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxBdG9t
aWNTdHJpbmdJbXBsKj4oU3RyaW5nSW1wbDo6ZW1wdHkoKSk7CiAKLSAgICBpZiAoc3RyaW5nLmlz
U3ltYm9sKCkgfHwgc3RyaW5nLmlzU3RhdGljKCkpIHsKLSAgICAgICAgaWYgKHN0cmluZy5pczhC
aXQoKSkKLSAgICAgICAgICAgIHJldHVybiBsb29rVXBJbnRlcm5hbChzdHJpbmcuY2hhcmFjdGVy
czgoKSwgc3RyaW5nLmxlbmd0aCgpKTsKLSAgICAgICAgcmV0dXJuIGxvb2tVcEludGVybmFsKHN0
cmluZy5jaGFyYWN0ZXJzMTYoKSwgc3RyaW5nLmxlbmd0aCgpKTsKLSAgICB9CisgICAgaWYgKHN0
cmluZy5pc1N5bWJvbCgpIHx8IHN0cmluZy5pc1N0YXRpYygpKQorICAgICAgICByZXR1cm4gYWRk
U3Vic3RyaW5nKHN0cmluZyk7CiAKICAgICBBdG9taWNTdHJpbmdUYWJsZUxvY2tlciBsb2NrZXI7
CiAgICAgSGFzaFNldDxTdHJpbmdJbXBsKj4mIGF0b21pY1N0cmluZ1RhYmxlID0gc3RyaW5nVGFi
bGUoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>297911</attachid>
            <date>2017-01-02 14:03:23 -0800</date>
            <delta_ts>2017-01-02 15:55:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-166636-20170103070159.patch</filename>
            <type>text/plain</type>
            <size>7794</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEwMjI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDAyNzFmYTc0NWFjMmE2MmEzN2E0NWFm
ZmI2Njk5MDUwYTAzYTQ0MTkuLjIzMDNiYjkzNjRiMjBiYzlkMTI5ZjNlMjRkMGYwODFmZmE2OTQw
NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDUgKzEsMjggQEAKIDIwMTctMDEtMDIgIFl1c3VrZSBTdXp1a2kgIDx1dGF0
YW5lLnRlYUBnbWFpbC5jb20+CiAKKyAgICAgICAgTGV2ZXJhZ2UgU3Vic3RyaW5nIHRvIGNyZWF0
ZSBuZXcgQXRvbWljU3RyaW5nSW1wbCBmb3IgU3RhdGljU3RyaW5nSW1wbCBhbmQgU3ltYm9sSW1w
bAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY2NjM2
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUHJldmlv
dXNseSB3ZSBhbHdheXMgY3JlYXRlIHRoZSBmdWxsIGF0b21pYyBzdHJpbmcgaWYgd2UgbmVlZCB0
byBjcmVhdGUgdGhlIHNhbWUgc3RyaW5nCisgICAgICAgIGJhc2VkIG9uIHRoZSBnaXZlbiB2YWx1
ZS4gRm9yIGV4YW1wbGUsIHdoZW4gZ2VuZXJhdGluZyBBdG9taWNTdHJpbmdJbXBsIGZyb20gdGhl
IFN5bWJvbEltcGwsCisgICAgICAgIHdlIG5lZWQgdG8gY3JlYXRlIGEgbmV3IEF0b21pY1N0cmlu
Z0ltcGwgc2luY2UgU3ltYm9sSW1wbCBuZXZlciBiZWNvbWVzIGBpc0F0b21pYygpID09IHRydWVg
LgorICAgICAgICBCdXQgaXQgaXMgY29zdGx5LgorCisgICAgICAgIFRoaXMgcGF0Y2ggbGV2ZXJh
Z2VzIHRoZSBzdWJzdHJpbmcgc3lzdGVtIG9mIFN0cmluZ0ltcGwuIEluc3RlYWQgb2YgYWxsb2Nh
dGluZyB0aGUgY29tcGxldGVseQorICAgICAgICBkdXBsaWNhdGUgc3RyaW5nLCB3ZSBjcmVhdGUg
YSBzdWJzdHJpbmcgU3RyaW5nSW1wbCB0aGF0IHNoYXJlcyB0aGUgc2FtZSBjb250ZW50IHdpdGgg
dGhlCisgICAgICAgIGJhc2Ugc3RyaW5nLgorCisgICAgICAgICogd3RmL3RleHQvQXRvbWljU3Ry
aW5nSW1wbC5jcHA6CisgICAgICAgIChXVEY6OmFkZFN1YnN0cmluZyk6CisgICAgICAgIChXVEY6
OkF0b21pY1N0cmluZ0ltcGw6OmFkZFNsb3dDYXNlKToKKyAgICAgICAgKFdURjo6QXRvbWljU3Ry
aW5nSW1wbDo6bG9va1VwU2xvd0Nhc2UpOgorICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0ltcGwu
aDoKKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6U3RhdGljU3RyaW5nSW1wbDo6Z2V0KToKKwor
MjAxNy0wMS0wMiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKwogICAg
ICAgICBVc2UgU3RhdGljU3RyaW5nSW1wbCBpbnN0ZWFkIG9mIFN0YXRpY0FTQ0lJTGl0ZXJhbAog
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY2NTg2CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5nSW1wbC5jcHAgYi9T
b3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0cmluZ0ltcGwuY3BwCmluZGV4IGFmN2NjYjU2MzM2
MjAxYTE5OTkwOWY0YjE3Y2EzZjIxNjA4Mzk3OWUuLmZmY2FmZmRmMGE5ZGUxYjU3YmVkNzE3Zjdm
M2ZmNWM1NjQ3MGIyOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3Ry
aW5nSW1wbC5jcHAKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9BdG9taWNTdHJpbmdJbXBsLmNw
cApAQCAtNDAwLDE2ICs0MDAsMjQgQEAgUmVmPEF0b21pY1N0cmluZ0ltcGw+IEF0b21pY1N0cmlu
Z0ltcGw6OmFkZExpdGVyYWwoY29uc3QgY2hhciogY2hhcmFjdGVycywgdW5zaWcKICAgICByZXR1
cm4gYWRkVG9TdHJpbmdUYWJsZTxDaGFyQnVmZmVyLCBDaGFyQnVmZmVyRnJvbUxpdGVyYWxEYXRh
VHJhbnNsYXRvcj4oYnVmZmVyKTsKIH0KIAorc3RhdGljIGlubGluZSBSZWY8QXRvbWljU3RyaW5n
SW1wbD4gYWRkU3Vic3RyaW5nKFN0cmluZ0ltcGwmIGJhc2UpCit7CisgICAgQVNTRVJUKGJhc2Uu
bGVuZ3RoKCkpOworICAgIEFTU0VSVChiYXNlLmlzU3ltYm9sKCkgfHwgYmFzZS5pc1N0YXRpYygp
KTsKKworICAgIFN1YnN0cmluZ0xvY2F0aW9uIGJ1ZmZlciA9IHsgJmJhc2UsIDAsIGJhc2UubGVu
Z3RoKCkgfTsKKyAgICBpZiAoYmFzZS5pczhCaXQoKSkKKyAgICAgICAgcmV0dXJuIGFkZFRvU3Ry
aW5nVGFibGU8U3Vic3RyaW5nTG9jYXRpb24sIFN1YnN0cmluZ1RyYW5zbGF0b3I4PihidWZmZXIp
OworICAgIHJldHVybiBhZGRUb1N0cmluZ1RhYmxlPFN1YnN0cmluZ0xvY2F0aW9uLCBTdWJzdHJp
bmdUcmFuc2xhdG9yMTY+KGJ1ZmZlcik7Cit9CisKIFJlZjxBdG9taWNTdHJpbmdJbXBsPiBBdG9t
aWNTdHJpbmdJbXBsOjphZGRTbG93Q2FzZShTdHJpbmdJbXBsJiBzdHJpbmcpCiB7CiAgICAgaWYg
KCFzdHJpbmcubGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiAqc3RhdGljX2Nhc3Q8QXRvbWljU3Ry
aW5nSW1wbCo+KFN0cmluZ0ltcGw6OmVtcHR5KCkpOwogCi0gICAgaWYgKHN0cmluZy5pc1N5bWJv
bCgpIHx8IHN0cmluZy5pc1N0YXRpYygpKSB7Ci0gICAgICAgIGlmIChzdHJpbmcuaXM4Qml0KCkp
Ci0gICAgICAgICAgICByZXR1cm4gKmFkZChzdHJpbmcuY2hhcmFjdGVyczgoKSwgc3RyaW5nLmxl
bmd0aCgpKTsKLSAgICAgICAgcmV0dXJuICphZGQoc3RyaW5nLmNoYXJhY3RlcnMxNigpLCBzdHJp
bmcubGVuZ3RoKCkpOwotICAgIH0KKyAgICBpZiAoc3RyaW5nLmlzU3ltYm9sKCkgfHwgc3RyaW5n
LmlzU3RhdGljKCkpCisgICAgICAgIHJldHVybiBhZGRTdWJzdHJpbmcoc3RyaW5nKTsKIAogICAg
IEFTU0VSVF9XSVRIX01FU1NBR0UoIXN0cmluZy5pc0F0b21pYygpLCAiQXRvbWljU3RyaW5nSW1w
bCBzaG91bGQgbm90IGhpdCB0aGUgc2xvdyBjYXNlIGlmIHRoZSBzdHJpbmcgaXMgYWxyZWFkeSBh
dG9taWMuIik7CiAKQEAgLTQyOSwxMSArNDM3LDggQEAgUmVmPEF0b21pY1N0cmluZ0ltcGw+IEF0
b21pY1N0cmluZ0ltcGw6OmFkZFNsb3dDYXNlKEF0b21pY1N0cmluZ1RhYmxlJiBzdHJpbmdUYWIK
ICAgICBpZiAoIXN0cmluZy5sZW5ndGgoKSkKICAgICAgICAgcmV0dXJuICpzdGF0aWNfY2FzdDxB
dG9taWNTdHJpbmdJbXBsKj4oU3RyaW5nSW1wbDo6ZW1wdHkoKSk7CiAKLSAgICBpZiAoc3RyaW5n
LmlzU3ltYm9sKCkgfHwgc3RyaW5nLmlzU3RhdGljKCkpIHsKLSAgICAgICAgaWYgKHN0cmluZy5p
czhCaXQoKSkKLSAgICAgICAgICAgIHJldHVybiAqYWRkKHN0cmluZy5jaGFyYWN0ZXJzOCgpLCBz
dHJpbmcubGVuZ3RoKCkpOwotICAgICAgICByZXR1cm4gKmFkZChzdHJpbmcuY2hhcmFjdGVyczE2
KCksIHN0cmluZy5sZW5ndGgoKSk7Ci0gICAgfQorICAgIGlmIChzdHJpbmcuaXNTeW1ib2woKSB8
fCBzdHJpbmcuaXNTdGF0aWMoKSkKKyAgICAgICAgcmV0dXJuIGFkZFN1YnN0cmluZyhzdHJpbmcp
OwogCiAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghc3RyaW5nLmlzQXRvbWljKCksICJBdG9taWNT
dHJpbmdJbXBsIHNob3VsZCBub3QgaGl0IHRoZSBzbG93IGNhc2UgaWYgdGhlIHN0cmluZyBpcyBh
bHJlYWR5IGF0b21pYy4iKTsKIApAQCAtNDY2LDEyICs0NzEsNiBAQCBSZWZQdHI8QXRvbWljU3Ry
aW5nSW1wbD4gQXRvbWljU3RyaW5nSW1wbDo6bG9va1VwU2xvd0Nhc2UoU3RyaW5nSW1wbCYgc3Ry
aW5nKQogICAgIGlmICghc3RyaW5nLmxlbmd0aCgpKQogICAgICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8QXRvbWljU3RyaW5nSW1wbCo+KFN0cmluZ0ltcGw6OmVtcHR5KCkpOwogCi0gICAgaWYgKHN0
cmluZy5pc1N5bWJvbCgpIHx8IHN0cmluZy5pc1N0YXRpYygpKSB7Ci0gICAgICAgIGlmIChzdHJp
bmcuaXM4Qml0KCkpCi0gICAgICAgICAgICByZXR1cm4gbG9va1VwSW50ZXJuYWwoc3RyaW5nLmNo
YXJhY3RlcnM4KCksIHN0cmluZy5sZW5ndGgoKSk7Ci0gICAgICAgIHJldHVybiBsb29rVXBJbnRl
cm5hbChzdHJpbmcuY2hhcmFjdGVyczE2KCksIHN0cmluZy5sZW5ndGgoKSk7Ci0gICAgfQotCiAg
ICAgQXRvbWljU3RyaW5nVGFibGVMb2NrZXIgbG9ja2VyOwogICAgIEhhc2hTZXQ8U3RyaW5nSW1w
bCo+JiBhdG9taWNTdHJpbmdUYWJsZSA9IHN0cmluZ1RhYmxlKCk7CiAgICAgYXV0byBpdGVyYXRv
ciA9IGF0b21pY1N0cmluZ1RhYmxlLmZpbmQoJnN0cmluZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1w
bC5oCmluZGV4IGY3NjI0MmI1NGIyNDZhOThmNzgxNjg3YTA2MTg2MjgzNGZiODE1MGYuLjQzYWE3
NTg1MzZmMzRjNTEwYzFkZmEzYmRjYzQ0NjhhOWY2Y2FmMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5n
SW1wbC5oCkBAIC01NTksNiArNTU5LDExIEBAIGNsYXNzIFN0cmluZ0ltcGwgewogICAgICAgICB7
CiAgICAgICAgIH0KIAorICAgICAgICBTdHJpbmdJbXBsJiBnZXQoKQorICAgICAgICB7CisgICAg
ICAgICAgICByZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8U3RyaW5nSW1wbCo+KHRoaXMpOworICAg
ICAgICB9CisKICAgICAgICAgLy8gVGhlc2UgbWVtYmVyIHZhcmlhYmxlcyBtdXN0IG1hdGNoIHRo
ZSBsYXlvdXQgb2YgU3RyaW5nSW1wbC4KICAgICAgICAgdW5zaWduZWQgbV9yZWZDb3VudDsKICAg
ICAgICAgdW5zaWduZWQgbV9sZW5ndGg7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9U
b29scy9DaGFuZ2VMb2cKaW5kZXggZTRiZWZlZTkzN2M0ZjIxMWY0YTkxMmEyMDE1NGYyMDA5OTYy
MWMwMC4uZGUyMmRkZGZkMjc3ODRlOGRhY2VmYTZjZjE1ODMwOTMxYmZhN2RmZSAxMDA2NDQKLS0t
IGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBA
CisyMDE3LTAxLTAyICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisg
ICAgICAgIExldmVyYWdlIFN1YnN0cmluZyB0byBjcmVhdGUgbmV3IEF0b21pY1N0cmluZ0ltcGwg
Zm9yIFN0YXRpY1N0cmluZ0ltcGwgYW5kIFN5bWJvbEltcGwKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NjYzNgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU3Ry
aW5nSW1wbC5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKwogMjAxNy0wMS0w
MiAgTWFudWVsIFJlZ28gQ2FzYXNub3ZhcyAgPHJlZ29AaWdhbGlhLmNvbT4KIAogICAgICAgICBb
R1RLXSBXZWJDb3JlL0NTU1BhcnNlciB1bml0IHRlc3QgaXMgbm90IGJlaW5nIGJ1aWx0CmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9TdHJpbmdJbXBsLmNwcCBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1N0cmluZ0ltcGwuY3BwCmluZGV4IGEzOThmMDdi
OGJkNWEzMzNjYjdhYWYzOTgxYTk1N2M5NjllZDBmNjUuLjUzMDc5MDA3MDJhMzk1YzUyN2I1YWM5
M2Y1NGNmOTMyZTA4NjVkZWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V1RGL1N0cmluZ0ltcGwuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1N0
cmluZ0ltcGwuY3BwCkBAIC01NTQsMTEgKzU1NCwxNyBAQCBURVNUKFdURiwgU3RyaW5nSW1wbFN5
bWJvbFRvQXRvbWljU3RyaW5nKQogICAgIEFTU0VSVF9UUlVFKHJlZmVyZW5jZS0+aXNTeW1ib2wo
KSk7CiAgICAgQVNTRVJUX0ZBTFNFKHJlZmVyZW5jZS0+aXNBdG9taWMoKSk7CiAKKyAgICBhdXRv
IHJlc3VsdCA9IEF0b21pY1N0cmluZ0ltcGw6Omxvb2tVcChyZWZlcmVuY2UucHRyKCkpOworICAg
IEFTU0VSVF9GQUxTRShyZXN1bHQpOworCiAgICAgYXV0byBhdG9taWMgPSBBdG9taWNTdHJpbmdJ
bXBsOjphZGQocmVmZXJlbmNlLnB0cigpKTsKICAgICBBU1NFUlRfVFJVRShhdG9taWMtPmlzQXRv
bWljKCkpOwogICAgIEFTU0VSVF9GQUxTRShhdG9taWMtPmlzU3ltYm9sKCkpOwogICAgIEFTU0VS
VF9UUlVFKHJlZmVyZW5jZS0+aXNTeW1ib2woKSk7CiAgICAgQVNTRVJUX0ZBTFNFKHJlZmVyZW5j
ZS0+aXNBdG9taWMoKSk7CisKKyAgICBhdXRvIHJlc3VsdDIgPSBBdG9taWNTdHJpbmdJbXBsOjps
b29rVXAocmVmZXJlbmNlLnB0cigpKTsKKyAgICBBU1NFUlRfVFJVRShyZXN1bHQyKTsKIH0KIAog
VEVTVChXVEYsIFN0cmluZ0ltcGxOdWxsU3ltYm9sVG9BdG9taWNTdHJpbmcpCkBAIC01NjcsMTEg
KzU3Myw0MyBAQCBURVNUKFdURiwgU3RyaW5nSW1wbE51bGxTeW1ib2xUb0F0b21pY1N0cmluZykK
ICAgICBBU1NFUlRfVFJVRShyZWZlcmVuY2UtPmlzU3ltYm9sKCkpOwogICAgIEFTU0VSVF9GQUxT
RShyZWZlcmVuY2UtPmlzQXRvbWljKCkpOwogCisgICAgLy8gQmVjYXVzZSB0aGUgc3Vic3RyaW5n
IG9mIHRoZSByZWZlcmVuY2UgaXMgdGhlIGVtcHR5IHN0cmluZyB3aGljaCBpcyBhbHJlYWR5IGlu
dGVybmVkLgorICAgIGF1dG8gcmVzdWx0ID0gQXRvbWljU3RyaW5nSW1wbDo6bG9va1VwKHJlZmVy
ZW5jZS5wdHIoKSk7CisgICAgQVNTRVJUX1RSVUUocmVzdWx0KTsKKwogICAgIGF1dG8gYXRvbWlj
ID0gQXRvbWljU3RyaW5nSW1wbDo6YWRkKHJlZmVyZW5jZS5wdHIoKSk7CiAgICAgQVNTRVJUX1RS
VUUoYXRvbWljLT5pc0F0b21pYygpKTsKICAgICBBU1NFUlRfRkFMU0UoYXRvbWljLT5pc1N5bWJv
bCgpKTsKICAgICBBU1NFUlRfVFJVRShyZWZlcmVuY2UtPmlzU3ltYm9sKCkpOwogICAgIEFTU0VS
VF9GQUxTRShyZWZlcmVuY2UtPmlzQXRvbWljKCkpOworICAgIEFTU0VSVF9FUShhdG9taWMuZ2V0
KCksIFN0cmluZ0ltcGw6OmVtcHR5KCkpOworCisgICAgYXV0byByZXN1bHQyID0gQXRvbWljU3Ry
aW5nSW1wbDo6bG9va1VwKHJlZmVyZW5jZS5wdHIoKSk7CisgICAgQVNTRVJUX1RSVUUocmVzdWx0
Mik7Cit9CisKK3N0YXRpYyBTdHJpbmdJbXBsOjpTdGF0aWNTdHJpbmdJbXBsIHN0YXRpY1N0cmlu
ZyB7IkNvY29hIn07CisKK1RFU1QoV1RGLCBTdHJpbmdJbXBsU3RhdGljVG9BdG9taWNTdHJpbmcp
Cit7CisgICAgYXV0byYgb3JpZ2luYWwgPSBzdGF0aWNTdHJpbmcuZ2V0KCk7CisgICAgQVNTRVJU
X0ZBTFNFKG9yaWdpbmFsLmlzU3ltYm9sKCkpOworICAgIEFTU0VSVF9GQUxTRShvcmlnaW5hbC5p
c0F0b21pYygpKTsKKyAgICBBU1NFUlRfVFJVRShvcmlnaW5hbC5pc1N0YXRpYygpKTsKKworICAg
IGF1dG8gcmVzdWx0ID0gQXRvbWljU3RyaW5nSW1wbDo6bG9va1VwKCZvcmlnaW5hbCk7CisgICAg
QVNTRVJUX0ZBTFNFKHJlc3VsdCk7CisKKyAgICBhdXRvIGF0b21pYyA9IEF0b21pY1N0cmluZ0lt
cGw6OmFkZCgmb3JpZ2luYWwpOworICAgIEFTU0VSVF9UUlVFKGF0b21pYy0+aXNBdG9taWMoKSk7
CisgICAgQVNTRVJUX0ZBTFNFKGF0b21pYy0+aXNTeW1ib2woKSk7CisgICAgQVNTRVJUX0ZBTFNF
KGF0b21pYy0+aXNTdGF0aWMoKSk7CisgICAgQVNTRVJUX0ZBTFNFKG9yaWdpbmFsLmlzU3ltYm9s
KCkpOworICAgIEFTU0VSVF9GQUxTRShvcmlnaW5hbC5pc0F0b21pYygpKTsKKyAgICBBU1NFUlRf
VFJVRShvcmlnaW5hbC5pc1N0YXRpYygpKTsKKworICAgIGF1dG8gcmVzdWx0MiA9IEF0b21pY1N0
cmluZ0ltcGw6Omxvb2tVcCgmb3JpZ2luYWwpOworICAgIEFTU0VSVF9UUlVFKHJlc3VsdDIpOwog
fQogCiBURVNUKFdURiwgU3RyaW5nSW1wbENvbnN0ZXhwckhhc2hlcikK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>297916</attachid>
            <date>2017-01-02 15:55:42 -0800</date>
            <delta_ts>2017-01-02 18:25:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-166636-20170103085418.patch</filename>
            <type>text/plain</type>
            <size>10366</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEwMjI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDAyNzFmYTc0NWFjMmE2MmEzN2E0NWFm
ZmI2Njk5MDUwYTAzYTQ0MTkuLjMyYjgyMzQ2NzRjZDE3NmUzNDcxZTQwMGNhN2Q4NjdjYTgzMDVk
ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDUgKzEsMzEgQEAKIDIwMTctMDEtMDIgIFl1c3VrZSBTdXp1a2kgIDx1dGF0
YW5lLnRlYUBnbWFpbC5jb20+CiAKKyAgICAgICAgTGV2ZXJhZ2UgU3Vic3RyaW5nIHRvIGNyZWF0
ZSBuZXcgQXRvbWljU3RyaW5nSW1wbCBmb3IgU3RhdGljU3RyaW5nSW1wbCBhbmQgU3ltYm9sSW1w
bAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY2NjM2
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUHJldmlv
dXNseSB3ZSBhbHdheXMgY3JlYXRlIHRoZSBmdWxsIGF0b21pYyBzdHJpbmcgaWYgd2UgbmVlZCB0
byBjcmVhdGUgdGhlIHNhbWUgc3RyaW5nCisgICAgICAgIGJhc2VkIG9uIHRoZSBnaXZlbiB2YWx1
ZS4gRm9yIGV4YW1wbGUsIHdoZW4gZ2VuZXJhdGluZyBBdG9taWNTdHJpbmdJbXBsIGZyb20gdGhl
IFN5bWJvbEltcGwsCisgICAgICAgIHdlIG5lZWQgdG8gY3JlYXRlIGEgbmV3IEF0b21pY1N0cmlu
Z0ltcGwgc2luY2UgU3ltYm9sSW1wbCBuZXZlciBiZWNvbWVzIGBpc0F0b21pYygpID09IHRydWVg
LgorICAgICAgICBCdXQgaXQgaXMgY29zdGx5LgorCisgICAgICAgIFRoaXMgcGF0Y2ggbGV2ZXJh
Z2VzIHRoZSBzdWJzdHJpbmcgc3lzdGVtIG9mIFN0cmluZ0ltcGwuIEluc3RlYWQgb2YgYWxsb2Nh
dGluZyB0aGUgY29tcGxldGVseQorICAgICAgICBkdXBsaWNhdGUgc3RyaW5nLCB3ZSBjcmVhdGUg
YSBzdWJzdHJpbmcgU3RyaW5nSW1wbCB0aGF0IHNoYXJlcyB0aGUgc2FtZSBjb250ZW50IHdpdGgg
dGhlCisgICAgICAgIGJhc2Ugc3RyaW5nLgorCisgICAgICAgICogd3RmL3RleHQvQXRvbWljU3Ry
aW5nSW1wbC5jcHA6CisgICAgICAgIChXVEY6OnN0cmluZ1RhYmxlKToKKyAgICAgICAgKFdURjo6
YWRkVG9TdHJpbmdUYWJsZSk6CisgICAgICAgIChXVEY6OmFkZFN1YnN0cmluZyk6CisgICAgICAg
IChXVEY6OkF0b21pY1N0cmluZ0ltcGw6OmFkZFNsb3dDYXNlKToKKyAgICAgICAgKFdURjo6QXRv
bWljU3RyaW5nSW1wbDo6cmVtb3ZlKToKKyAgICAgICAgKFdURjo6QXRvbWljU3RyaW5nSW1wbDo6
bG9va1VwU2xvd0Nhc2UpOgorICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0ltcGwuaDoKKyAgICAg
ICAgKFdURjo6U3RyaW5nSW1wbDo6U3RhdGljU3RyaW5nSW1wbDo6Z2V0KToKKworMjAxNy0wMS0w
MiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKwogICAgICAgICBVc2Ug
U3RhdGljU3RyaW5nSW1wbCBpbnN0ZWFkIG9mIFN0YXRpY0FTQ0lJTGl0ZXJhbAogICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY2NTg2CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5nSW1wbC5jcHAgYi9Tb3VyY2UvV1RG
L3d0Zi90ZXh0L0F0b21pY1N0cmluZ0ltcGwuY3BwCmluZGV4IGFmN2NjYjU2MzM2MjAxYTE5OTkw
OWY0YjE3Y2EzZjIxNjA4Mzk3OWUuLjQyZDlhYjg0NzA3YTY5YmZlNTRlMjljMjY3NmZjMzRjMTZm
YjUwN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5nSW1wbC5j
cHAKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9BdG9taWNTdHJpbmdJbXBsLmNwcApAQCAtNjgs
MTggKzY4LDE3IEBAIGNsYXNzIEF0b21pY1N0cmluZ1RhYmxlTG9ja2VyIHsKIAogI2VuZGlmIC8v
IFVTRShXRUJfVEhSRUFEKQogCi1zdGF0aWMgQUxXQVlTX0lOTElORSBIYXNoU2V0PFN0cmluZ0lt
cGwqPiYgc3RyaW5nVGFibGUoKQordHlwZWRlZiBIYXNoU2V0PFN0cmluZ0ltcGwqPiBTdHJpbmdU
YWJsZUltcGw7CisKK3N0YXRpYyBBTFdBWVNfSU5MSU5FIFN0cmluZ1RhYmxlSW1wbCYgc3RyaW5n
VGFibGUoKQogewogICAgIHJldHVybiB3dGZUaHJlYWREYXRhKCkuYXRvbWljU3RyaW5nVGFibGUo
KS0+dGFibGUoKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgSGFzaFRyYW5z
bGF0b3I+Ci1zdGF0aWMgaW5saW5lIFJlZjxBdG9taWNTdHJpbmdJbXBsPiBhZGRUb1N0cmluZ1Rh
YmxlKGNvbnN0IFQmIHZhbHVlKQorc3RhdGljIGlubGluZSBSZWY8QXRvbWljU3RyaW5nSW1wbD4g
YWRkVG9TdHJpbmdUYWJsZShBdG9taWNTdHJpbmdUYWJsZUxvY2tlciYsIFN0cmluZ1RhYmxlSW1w
bCYgYXRvbWljU3RyaW5nVGFibGUsIGNvbnN0IFQmIHZhbHVlKQogewotICAgIEF0b21pY1N0cmlu
Z1RhYmxlTG9ja2VyIGxvY2tlcjsKLQotICAgIEhhc2hTZXQ8U3RyaW5nSW1wbCo+JiBhdG9taWNT
dHJpbmdUYWJsZSA9IHN0cmluZ1RhYmxlKCk7Ci0gICAgSGFzaFNldDxTdHJpbmdJbXBsKj46OkFk
ZFJlc3VsdCBhZGRSZXN1bHQgPSBhdG9taWNTdHJpbmdUYWJsZS5hZGQ8SGFzaFRyYW5zbGF0b3I+
KHZhbHVlKTsKKyAgICBhdXRvIGFkZFJlc3VsdCA9IGF0b21pY1N0cmluZ1RhYmxlLmFkZDxIYXNo
VHJhbnNsYXRvcj4odmFsdWUpOwogCiAgICAgLy8gSWYgdGhlIHN0cmluZyBpcyBuZXdseS10cmFu
c2xhdGVkLCB0aGVuIHdlIG5lZWQgdG8gYWRvcHQgaXQuCiAgICAgLy8gVGhlIGJvb2xlYW4gaW4g
dGhlIHBhaXIgdGVsbHMgdXMgaWYgdGhhdCBpcyBzby4KQEAgLTg4LDYgKzg3LDEzIEBAIHN0YXRp
YyBpbmxpbmUgUmVmPEF0b21pY1N0cmluZ0ltcGw+IGFkZFRvU3RyaW5nVGFibGUoY29uc3QgVCYg
dmFsdWUpCiAgICAgcmV0dXJuICpzdGF0aWNfY2FzdDxBdG9taWNTdHJpbmdJbXBsKj4oKmFkZFJl
c3VsdC5pdGVyYXRvcik7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEhhc2hU
cmFuc2xhdG9yPgorc3RhdGljIGlubGluZSBSZWY8QXRvbWljU3RyaW5nSW1wbD4gYWRkVG9TdHJp
bmdUYWJsZShjb25zdCBUJiB2YWx1ZSkKK3sKKyAgICBBdG9taWNTdHJpbmdUYWJsZUxvY2tlciBs
b2NrZXI7CisgICAgcmV0dXJuIGFkZFRvU3RyaW5nVGFibGU8VCwgSGFzaFRyYW5zbGF0b3I+KGxv
Y2tlciwgc3RyaW5nVGFibGUoKSwgdmFsdWUpOworfQorCiBzdHJ1Y3QgQ1N0cmluZ1RyYW5zbGF0
b3IgewogICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IExDaGFyKiBjKQogICAgIHsKQEAg
LTQwMCwxNiArNDA2LDMwIEBAIFJlZjxBdG9taWNTdHJpbmdJbXBsPiBBdG9taWNTdHJpbmdJbXBs
OjphZGRMaXRlcmFsKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnCiAgICAgcmV0dXJuIGFk
ZFRvU3RyaW5nVGFibGU8Q2hhckJ1ZmZlciwgQ2hhckJ1ZmZlckZyb21MaXRlcmFsRGF0YVRyYW5z
bGF0b3I+KGJ1ZmZlcik7CiB9CiAKK3N0YXRpYyBpbmxpbmUgUmVmPEF0b21pY1N0cmluZ0ltcGw+
IGFkZFN1YnN0cmluZyhBdG9taWNTdHJpbmdUYWJsZUxvY2tlciYgbG9ja2VyLCBTdHJpbmdUYWJs
ZUltcGwmIGF0b21pY1N0cmluZ1RhYmxlLCBTdHJpbmdJbXBsJiBiYXNlKQoreworICAgIEFTU0VS
VChiYXNlLmxlbmd0aCgpKTsKKyAgICBBU1NFUlQoYmFzZS5pc1N5bWJvbCgpIHx8IGJhc2UuaXNT
dGF0aWMoKSk7CisKKyAgICBTdWJzdHJpbmdMb2NhdGlvbiBidWZmZXIgPSB7ICZiYXNlLCAwLCBi
YXNlLmxlbmd0aCgpIH07CisgICAgaWYgKGJhc2UuaXM4Qml0KCkpCisgICAgICAgIHJldHVybiBh
ZGRUb1N0cmluZ1RhYmxlPFN1YnN0cmluZ0xvY2F0aW9uLCBTdWJzdHJpbmdUcmFuc2xhdG9yOD4o
bG9ja2VyLCBhdG9taWNTdHJpbmdUYWJsZSwgYnVmZmVyKTsKKyAgICByZXR1cm4gYWRkVG9TdHJp
bmdUYWJsZTxTdWJzdHJpbmdMb2NhdGlvbiwgU3Vic3RyaW5nVHJhbnNsYXRvcjE2Pihsb2NrZXIs
IGF0b21pY1N0cmluZ1RhYmxlLCBidWZmZXIpOworfQorCitzdGF0aWMgaW5saW5lIFJlZjxBdG9t
aWNTdHJpbmdJbXBsPiBhZGRTdWJzdHJpbmcoU3RyaW5nSW1wbCYgYmFzZSkKK3sKKyAgICBBdG9t
aWNTdHJpbmdUYWJsZUxvY2tlciBsb2NrZXI7CisgICAgcmV0dXJuIGFkZFN1YnN0cmluZyhsb2Nr
ZXIsIHN0cmluZ1RhYmxlKCksIGJhc2UpOworfQorCiBSZWY8QXRvbWljU3RyaW5nSW1wbD4gQXRv
bWljU3RyaW5nSW1wbDo6YWRkU2xvd0Nhc2UoU3RyaW5nSW1wbCYgc3RyaW5nKQogewogICAgIGlm
ICghc3RyaW5nLmxlbmd0aCgpKQogICAgICAgICByZXR1cm4gKnN0YXRpY19jYXN0PEF0b21pY1N0
cmluZ0ltcGwqPihTdHJpbmdJbXBsOjplbXB0eSgpKTsKIAotICAgIGlmIChzdHJpbmcuaXNTeW1i
b2woKSB8fCBzdHJpbmcuaXNTdGF0aWMoKSkgewotICAgICAgICBpZiAoc3RyaW5nLmlzOEJpdCgp
KQotICAgICAgICAgICAgcmV0dXJuICphZGQoc3RyaW5nLmNoYXJhY3RlcnM4KCksIHN0cmluZy5s
ZW5ndGgoKSk7Ci0gICAgICAgIHJldHVybiAqYWRkKHN0cmluZy5jaGFyYWN0ZXJzMTYoKSwgc3Ry
aW5nLmxlbmd0aCgpKTsKLSAgICB9CisgICAgaWYgKHN0cmluZy5pc1N5bWJvbCgpIHx8IHN0cmlu
Zy5pc1N0YXRpYygpKQorICAgICAgICByZXR1cm4gYWRkU3Vic3RyaW5nKHN0cmluZyk7CiAKICAg
ICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFzdHJpbmcuaXNBdG9taWMoKSwgIkF0b21pY1N0cmluZ0lt
cGwgc2hvdWxkIG5vdCBoaXQgdGhlIHNsb3cgY2FzZSBpZiB0aGUgc3RyaW5nIGlzIGFscmVhZHkg
YXRvbWljLiIpOwogCkBAIC00MzAsOSArNDUwLDggQEAgUmVmPEF0b21pY1N0cmluZ0ltcGw+IEF0
b21pY1N0cmluZ0ltcGw6OmFkZFNsb3dDYXNlKEF0b21pY1N0cmluZ1RhYmxlJiBzdHJpbmdUYWIK
ICAgICAgICAgcmV0dXJuICpzdGF0aWNfY2FzdDxBdG9taWNTdHJpbmdJbXBsKj4oU3RyaW5nSW1w
bDo6ZW1wdHkoKSk7CiAKICAgICBpZiAoc3RyaW5nLmlzU3ltYm9sKCkgfHwgc3RyaW5nLmlzU3Rh
dGljKCkpIHsKLSAgICAgICAgaWYgKHN0cmluZy5pczhCaXQoKSkKLSAgICAgICAgICAgIHJldHVy
biAqYWRkKHN0cmluZy5jaGFyYWN0ZXJzOCgpLCBzdHJpbmcubGVuZ3RoKCkpOwotICAgICAgICBy
ZXR1cm4gKmFkZChzdHJpbmcuY2hhcmFjdGVyczE2KCksIHN0cmluZy5sZW5ndGgoKSk7CisgICAg
ICAgIEF0b21pY1N0cmluZ1RhYmxlTG9ja2VyIGxvY2tlcjsKKyAgICAgICAgcmV0dXJuIGFkZFN1
YnN0cmluZyhsb2NrZXIsIHN0cmluZ1RhYmxlLnRhYmxlKCksIHN0cmluZyk7CiAgICAgfQogCiAg
ICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghc3RyaW5nLmlzQXRvbWljKCksICJBdG9taWNTdHJpbmdJ
bXBsIHNob3VsZCBub3QgaGl0IHRoZSBzbG93IGNhc2UgaWYgdGhlIHN0cmluZyBpcyBhbHJlYWR5
IGF0b21pYy4iKTsKQEAgLTQ1Miw4ICs0NzEsOCBAQCB2b2lkIEF0b21pY1N0cmluZ0ltcGw6OnJl
bW92ZShBdG9taWNTdHJpbmdJbXBsKiBzdHJpbmcpCiB7CiAgICAgQVNTRVJUKHN0cmluZy0+aXNB
dG9taWMoKSk7CiAgICAgQXRvbWljU3RyaW5nVGFibGVMb2NrZXIgbG9ja2VyOwotICAgIEhhc2hT
ZXQ8U3RyaW5nSW1wbCo+JiBhdG9taWNTdHJpbmdUYWJsZSA9IHN0cmluZ1RhYmxlKCk7Ci0gICAg
SGFzaFNldDxTdHJpbmdJbXBsKj46Oml0ZXJhdG9yIGl0ZXJhdG9yID0gYXRvbWljU3RyaW5nVGFi
bGUuZmluZChzdHJpbmcpOworICAgIGF1dG8mIGF0b21pY1N0cmluZ1RhYmxlID0gc3RyaW5nVGFi
bGUoKTsKKyAgICBhdXRvIGl0ZXJhdG9yID0gYXRvbWljU3RyaW5nVGFibGUuZmluZChzdHJpbmcp
OwogICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoaXRlcmF0b3IgIT0gYXRvbWljU3RyaW5nVGFibGUu
ZW5kKCksICJUaGUgc3RyaW5nIGJlaW5nIHJlbW92ZWQgaXMgYXRvbWljIGluIHRoZSBzdHJpbmcg
dGFibGUgb2YgYW4gb3RoZXIgdGhyZWFkISIpOwogICAgIEFTU0VSVChzdHJpbmcgPT0gKml0ZXJh
dG9yKTsKICAgICBhdG9taWNTdHJpbmdUYWJsZS5yZW1vdmUoaXRlcmF0b3IpOwpAQCAtNDY2LDE0
ICs0ODUsOCBAQCBSZWZQdHI8QXRvbWljU3RyaW5nSW1wbD4gQXRvbWljU3RyaW5nSW1wbDo6bG9v
a1VwU2xvd0Nhc2UoU3RyaW5nSW1wbCYgc3RyaW5nKQogICAgIGlmICghc3RyaW5nLmxlbmd0aCgp
KQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8QXRvbWljU3RyaW5nSW1wbCo+KFN0cmluZ0lt
cGw6OmVtcHR5KCkpOwogCi0gICAgaWYgKHN0cmluZy5pc1N5bWJvbCgpIHx8IHN0cmluZy5pc1N0
YXRpYygpKSB7Ci0gICAgICAgIGlmIChzdHJpbmcuaXM4Qml0KCkpCi0gICAgICAgICAgICByZXR1
cm4gbG9va1VwSW50ZXJuYWwoc3RyaW5nLmNoYXJhY3RlcnM4KCksIHN0cmluZy5sZW5ndGgoKSk7
Ci0gICAgICAgIHJldHVybiBsb29rVXBJbnRlcm5hbChzdHJpbmcuY2hhcmFjdGVyczE2KCksIHN0
cmluZy5sZW5ndGgoKSk7Ci0gICAgfQotCiAgICAgQXRvbWljU3RyaW5nVGFibGVMb2NrZXIgbG9j
a2VyOwotICAgIEhhc2hTZXQ8U3RyaW5nSW1wbCo+JiBhdG9taWNTdHJpbmdUYWJsZSA9IHN0cmlu
Z1RhYmxlKCk7CisgICAgYXV0byYgYXRvbWljU3RyaW5nVGFibGUgPSBzdHJpbmdUYWJsZSgpOwog
ICAgIGF1dG8gaXRlcmF0b3IgPSBhdG9taWNTdHJpbmdUYWJsZS5maW5kKCZzdHJpbmcpOwogICAg
IGlmIChpdGVyYXRvciAhPSBhdG9taWNTdHJpbmdUYWJsZS5lbmQoKSkKICAgICAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PEF0b21pY1N0cmluZ0ltcGwqPigqaXRlcmF0b3IpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0
cmluZ0ltcGwuaAppbmRleCBmNzYyNDJiNTRiMjQ2YTk4Zjc4MTY4N2EwNjE4NjI4MzRmYjgxNTBm
Li40M2FhNzU4NTM2ZjM0YzUxMGMxZGZhM2JkY2M0NDY4YTlmNmNhZjJlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0
L1N0cmluZ0ltcGwuaApAQCAtNTU5LDYgKzU1OSwxMSBAQCBjbGFzcyBTdHJpbmdJbXBsIHsKICAg
ICAgICAgewogICAgICAgICB9CiAKKyAgICAgICAgU3RyaW5nSW1wbCYgZ2V0KCkKKyAgICAgICAg
eworICAgICAgICAgICAgcmV0dXJuICpyZWludGVycHJldF9jYXN0PFN0cmluZ0ltcGwqPih0aGlz
KTsKKyAgICAgICAgfQorCiAgICAgICAgIC8vIFRoZXNlIG1lbWJlciB2YXJpYWJsZXMgbXVzdCBt
YXRjaCB0aGUgbGF5b3V0IG9mIFN0cmluZ0ltcGwuCiAgICAgICAgIHVuc2lnbmVkIG1fcmVmQ291
bnQ7CiAgICAgICAgIHVuc2lnbmVkIG1fbGVuZ3RoOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdl
TG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGU0YmVmZWU5MzdjNGYyMTFmNGE5MTJhMjAxNTRm
MjAwOTk2MjFjMDAuLmRlMjJkZGRmZDI3Nzg0ZThkYWNlZmE2Y2YxNTgzMDkzMWJmYTdkZmUgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxMyBAQAorMjAxNy0wMS0wMiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNv
bT4KKworICAgICAgICBMZXZlcmFnZSBTdWJzdHJpbmcgdG8gY3JlYXRlIG5ldyBBdG9taWNTdHJp
bmdJbXBsIGZvciBTdGF0aWNTdHJpbmdJbXBsIGFuZCBTeW1ib2xJbXBsCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjY2MzYKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMv
V1RGL1N0cmluZ0ltcGwuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisKIDIw
MTctMDEtMDIgIE1hbnVlbCBSZWdvIENhc2Fzbm92YXMgIDxyZWdvQGlnYWxpYS5jb20+CiAKICAg
ICAgICAgW0dUS10gV2ViQ29yZS9DU1NQYXJzZXIgdW5pdCB0ZXN0IGlzIG5vdCBiZWluZyBidWls
dApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU3RyaW5nSW1wbC5j
cHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9TdHJpbmdJbXBsLmNwcAppbmRleCBh
Mzk4ZjA3YjhiZDVhMzMzY2I3YWFmMzk4MWE5NTdjOTY5ZWQwZjY1Li41MzA3OTAwNzAyYTM5NWM1
MjdiNWFjOTNmNTRjZjkzMmUwODY1ZGViIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dURi9TdHJpbmdJbXBsLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dURi9TdHJpbmdJbXBsLmNwcApAQCAtNTU0LDExICs1NTQsMTcgQEAgVEVTVChXVEYsIFN0cmlu
Z0ltcGxTeW1ib2xUb0F0b21pY1N0cmluZykKICAgICBBU1NFUlRfVFJVRShyZWZlcmVuY2UtPmlz
U3ltYm9sKCkpOwogICAgIEFTU0VSVF9GQUxTRShyZWZlcmVuY2UtPmlzQXRvbWljKCkpOwogCisg
ICAgYXV0byByZXN1bHQgPSBBdG9taWNTdHJpbmdJbXBsOjpsb29rVXAocmVmZXJlbmNlLnB0cigp
KTsKKyAgICBBU1NFUlRfRkFMU0UocmVzdWx0KTsKKwogICAgIGF1dG8gYXRvbWljID0gQXRvbWlj
U3RyaW5nSW1wbDo6YWRkKHJlZmVyZW5jZS5wdHIoKSk7CiAgICAgQVNTRVJUX1RSVUUoYXRvbWlj
LT5pc0F0b21pYygpKTsKICAgICBBU1NFUlRfRkFMU0UoYXRvbWljLT5pc1N5bWJvbCgpKTsKICAg
ICBBU1NFUlRfVFJVRShyZWZlcmVuY2UtPmlzU3ltYm9sKCkpOwogICAgIEFTU0VSVF9GQUxTRShy
ZWZlcmVuY2UtPmlzQXRvbWljKCkpOworCisgICAgYXV0byByZXN1bHQyID0gQXRvbWljU3RyaW5n
SW1wbDo6bG9va1VwKHJlZmVyZW5jZS5wdHIoKSk7CisgICAgQVNTRVJUX1RSVUUocmVzdWx0Mik7
CiB9CiAKIFRFU1QoV1RGLCBTdHJpbmdJbXBsTnVsbFN5bWJvbFRvQXRvbWljU3RyaW5nKQpAQCAt
NTY3LDExICs1NzMsNDMgQEAgVEVTVChXVEYsIFN0cmluZ0ltcGxOdWxsU3ltYm9sVG9BdG9taWNT
dHJpbmcpCiAgICAgQVNTRVJUX1RSVUUocmVmZXJlbmNlLT5pc1N5bWJvbCgpKTsKICAgICBBU1NF
UlRfRkFMU0UocmVmZXJlbmNlLT5pc0F0b21pYygpKTsKIAorICAgIC8vIEJlY2F1c2UgdGhlIHN1
YnN0cmluZyBvZiB0aGUgcmVmZXJlbmNlIGlzIHRoZSBlbXB0eSBzdHJpbmcgd2hpY2ggaXMgYWxy
ZWFkeSBpbnRlcm5lZC4KKyAgICBhdXRvIHJlc3VsdCA9IEF0b21pY1N0cmluZ0ltcGw6Omxvb2tV
cChyZWZlcmVuY2UucHRyKCkpOworICAgIEFTU0VSVF9UUlVFKHJlc3VsdCk7CisKICAgICBhdXRv
IGF0b21pYyA9IEF0b21pY1N0cmluZ0ltcGw6OmFkZChyZWZlcmVuY2UucHRyKCkpOwogICAgIEFT
U0VSVF9UUlVFKGF0b21pYy0+aXNBdG9taWMoKSk7CiAgICAgQVNTRVJUX0ZBTFNFKGF0b21pYy0+
aXNTeW1ib2woKSk7CiAgICAgQVNTRVJUX1RSVUUocmVmZXJlbmNlLT5pc1N5bWJvbCgpKTsKICAg
ICBBU1NFUlRfRkFMU0UocmVmZXJlbmNlLT5pc0F0b21pYygpKTsKKyAgICBBU1NFUlRfRVEoYXRv
bWljLmdldCgpLCBTdHJpbmdJbXBsOjplbXB0eSgpKTsKKworICAgIGF1dG8gcmVzdWx0MiA9IEF0
b21pY1N0cmluZ0ltcGw6Omxvb2tVcChyZWZlcmVuY2UucHRyKCkpOworICAgIEFTU0VSVF9UUlVF
KHJlc3VsdDIpOworfQorCitzdGF0aWMgU3RyaW5nSW1wbDo6U3RhdGljU3RyaW5nSW1wbCBzdGF0
aWNTdHJpbmcgeyJDb2NvYSJ9OworCitURVNUKFdURiwgU3RyaW5nSW1wbFN0YXRpY1RvQXRvbWlj
U3RyaW5nKQoreworICAgIGF1dG8mIG9yaWdpbmFsID0gc3RhdGljU3RyaW5nLmdldCgpOworICAg
IEFTU0VSVF9GQUxTRShvcmlnaW5hbC5pc1N5bWJvbCgpKTsKKyAgICBBU1NFUlRfRkFMU0Uob3Jp
Z2luYWwuaXNBdG9taWMoKSk7CisgICAgQVNTRVJUX1RSVUUob3JpZ2luYWwuaXNTdGF0aWMoKSk7
CisKKyAgICBhdXRvIHJlc3VsdCA9IEF0b21pY1N0cmluZ0ltcGw6Omxvb2tVcCgmb3JpZ2luYWwp
OworICAgIEFTU0VSVF9GQUxTRShyZXN1bHQpOworCisgICAgYXV0byBhdG9taWMgPSBBdG9taWNT
dHJpbmdJbXBsOjphZGQoJm9yaWdpbmFsKTsKKyAgICBBU1NFUlRfVFJVRShhdG9taWMtPmlzQXRv
bWljKCkpOworICAgIEFTU0VSVF9GQUxTRShhdG9taWMtPmlzU3ltYm9sKCkpOworICAgIEFTU0VS
VF9GQUxTRShhdG9taWMtPmlzU3RhdGljKCkpOworICAgIEFTU0VSVF9GQUxTRShvcmlnaW5hbC5p
c1N5bWJvbCgpKTsKKyAgICBBU1NFUlRfRkFMU0Uob3JpZ2luYWwuaXNBdG9taWMoKSk7CisgICAg
QVNTRVJUX1RSVUUob3JpZ2luYWwuaXNTdGF0aWMoKSk7CisKKyAgICBhdXRvIHJlc3VsdDIgPSBB
dG9taWNTdHJpbmdJbXBsOjpsb29rVXAoJm9yaWdpbmFsKTsKKyAgICBBU1NFUlRfVFJVRShyZXN1
bHQyKTsKIH0KIAogVEVTVChXVEYsIFN0cmluZ0ltcGxDb25zdGV4cHJIYXNoZXIpCg==
</data>
<flag name="review"
          id="320179"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>297920</attachid>
            <date>2017-01-02 18:41:13 -0800</date>
            <delta_ts>2017-01-02 18:41:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-166636-20170103113948.patch</filename>
            <type>text/plain</type>
            <size>10728</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEwMjI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDAyNzFmYTc0NWFjMmE2MmEzN2E0NWFm
ZmI2Njk5MDUwYTAzYTQ0MTkuLjk0YzdhMmI5YmI1M2FlYjc5OWI5ODgzMDkzYzJmNjE0YmU1ZTZl
MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDUgKzEsMzEgQEAKIDIwMTctMDEtMDIgIFl1c3VrZSBTdXp1a2kgIDx1dGF0
YW5lLnRlYUBnbWFpbC5jb20+CiAKKyAgICAgICAgTGV2ZXJhZ2UgU3Vic3RyaW5nIHRvIGNyZWF0
ZSBuZXcgQXRvbWljU3RyaW5nSW1wbCBmb3IgU3RhdGljU3RyaW5nSW1wbCBhbmQgU3ltYm9sSW1w
bAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY2NjM2
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUHJldmlv
dXNseSB3ZSBhbHdheXMgY3JlYXRlIHRoZSBmdWxsIGF0b21pYyBzdHJpbmcgaWYgd2UgbmVlZCB0
byBjcmVhdGUgdGhlIHNhbWUgc3RyaW5nCisgICAgICAgIGJhc2VkIG9uIHRoZSBnaXZlbiB2YWx1
ZS4gRm9yIGV4YW1wbGUsIHdoZW4gZ2VuZXJhdGluZyBBdG9taWNTdHJpbmdJbXBsIGZyb20gdGhl
IFN5bWJvbEltcGwsCisgICAgICAgIHdlIG5lZWQgdG8gY3JlYXRlIGEgbmV3IEF0b21pY1N0cmlu
Z0ltcGwgc2luY2UgU3ltYm9sSW1wbCBuZXZlciBiZWNvbWVzIGBpc0F0b21pYygpID09IHRydWVg
LgorICAgICAgICBCdXQgaXQgaXMgY29zdGx5LgorCisgICAgICAgIFRoaXMgcGF0Y2ggbGV2ZXJh
Z2VzIHRoZSBzdWJzdHJpbmcgc3lzdGVtIG9mIFN0cmluZ0ltcGwuIEluc3RlYWQgb2YgYWxsb2Nh
dGluZyB0aGUgY29tcGxldGVseQorICAgICAgICBkdXBsaWNhdGUgc3RyaW5nLCB3ZSBjcmVhdGUg
YSBzdWJzdHJpbmcgU3RyaW5nSW1wbCB0aGF0IHNoYXJlcyB0aGUgc2FtZSBjb250ZW50IHdpdGgg
dGhlCisgICAgICAgIGJhc2Ugc3RyaW5nLgorCisgICAgICAgICogd3RmL3RleHQvQXRvbWljU3Ry
aW5nSW1wbC5jcHA6CisgICAgICAgIChXVEY6OnN0cmluZ1RhYmxlKToKKyAgICAgICAgKFdURjo6
YWRkVG9TdHJpbmdUYWJsZSk6CisgICAgICAgIChXVEY6OmFkZFN1YnN0cmluZyk6CisgICAgICAg
IChXVEY6OkF0b21pY1N0cmluZ0ltcGw6OmFkZFNsb3dDYXNlKToKKyAgICAgICAgKFdURjo6QXRv
bWljU3RyaW5nSW1wbDo6cmVtb3ZlKToKKyAgICAgICAgKFdURjo6QXRvbWljU3RyaW5nSW1wbDo6
bG9va1VwU2xvd0Nhc2UpOgorICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0ltcGwuaDoKKyAgICAg
ICAgKFdURjo6U3RyaW5nSW1wbDo6U3RhdGljU3RyaW5nSW1wbDo6b3BlcmF0b3IgU3RyaW5nSW1w
bCYpOgorCisyMDE3LTAxLTAyICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29t
PgorCiAgICAgICAgIFVzZSBTdGF0aWNTdHJpbmdJbXBsIGluc3RlYWQgb2YgU3RhdGljQVNDSUlM
aXRlcmFsCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NjY1ODYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9BdG9taWNTdHJpbmdJbXBs
LmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5nSW1wbC5jcHAKaW5kZXggYWY3
Y2NiNTYzMzYyMDFhMTk5OTA5ZjRiMTdjYTNmMjE2MDgzOTc5ZS4uZmI1MGI3ZmRkY2NlOWVlYzI4
YmM5YjU5Y2QwOTJlMTQxYmE0NjFmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9B
dG9taWNTdHJpbmdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0cmlu
Z0ltcGwuY3BwCkBAIC02OCwxOCArNjgsMTcgQEAgY2xhc3MgQXRvbWljU3RyaW5nVGFibGVMb2Nr
ZXIgewogCiAjZW5kaWYgLy8gVVNFKFdFQl9USFJFQUQpCiAKLXN0YXRpYyBBTFdBWVNfSU5MSU5F
IEhhc2hTZXQ8U3RyaW5nSW1wbCo+JiBzdHJpbmdUYWJsZSgpCit1c2luZyBTdHJpbmdUYWJsZUlt
cGwgPSBIYXNoU2V0PFN0cmluZ0ltcGwqPjsKKworc3RhdGljIEFMV0FZU19JTkxJTkUgU3RyaW5n
VGFibGVJbXBsJiBzdHJpbmdUYWJsZSgpCiB7CiAgICAgcmV0dXJuIHd0ZlRocmVhZERhdGEoKS5h
dG9taWNTdHJpbmdUYWJsZSgpLT50YWJsZSgpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0
eXBlbmFtZSBIYXNoVHJhbnNsYXRvcj4KLXN0YXRpYyBpbmxpbmUgUmVmPEF0b21pY1N0cmluZ0lt
cGw+IGFkZFRvU3RyaW5nVGFibGUoY29uc3QgVCYgdmFsdWUpCitzdGF0aWMgaW5saW5lIFJlZjxB
dG9taWNTdHJpbmdJbXBsPiBhZGRUb1N0cmluZ1RhYmxlKEF0b21pY1N0cmluZ1RhYmxlTG9ja2Vy
JiwgU3RyaW5nVGFibGVJbXBsJiBhdG9taWNTdHJpbmdUYWJsZSwgY29uc3QgVCYgdmFsdWUpCiB7
Ci0gICAgQXRvbWljU3RyaW5nVGFibGVMb2NrZXIgbG9ja2VyOwotCi0gICAgSGFzaFNldDxTdHJp
bmdJbXBsKj4mIGF0b21pY1N0cmluZ1RhYmxlID0gc3RyaW5nVGFibGUoKTsKLSAgICBIYXNoU2V0
PFN0cmluZ0ltcGwqPjo6QWRkUmVzdWx0IGFkZFJlc3VsdCA9IGF0b21pY1N0cmluZ1RhYmxlLmFk
ZDxIYXNoVHJhbnNsYXRvcj4odmFsdWUpOworICAgIGF1dG8gYWRkUmVzdWx0ID0gYXRvbWljU3Ry
aW5nVGFibGUuYWRkPEhhc2hUcmFuc2xhdG9yPih2YWx1ZSk7CiAKICAgICAvLyBJZiB0aGUgc3Ry
aW5nIGlzIG5ld2x5LXRyYW5zbGF0ZWQsIHRoZW4gd2UgbmVlZCB0byBhZG9wdCBpdC4KICAgICAv
LyBUaGUgYm9vbGVhbiBpbiB0aGUgcGFpciB0ZWxscyB1cyBpZiB0aGF0IGlzIHNvLgpAQCAtODgs
NiArODcsMTMgQEAgc3RhdGljIGlubGluZSBSZWY8QXRvbWljU3RyaW5nSW1wbD4gYWRkVG9TdHJp
bmdUYWJsZShjb25zdCBUJiB2YWx1ZSkKICAgICByZXR1cm4gKnN0YXRpY19jYXN0PEF0b21pY1N0
cmluZ0ltcGwqPigqYWRkUmVzdWx0Lml0ZXJhdG9yKTsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUg
VCwgdHlwZW5hbWUgSGFzaFRyYW5zbGF0b3I+CitzdGF0aWMgaW5saW5lIFJlZjxBdG9taWNTdHJp
bmdJbXBsPiBhZGRUb1N0cmluZ1RhYmxlKGNvbnN0IFQmIHZhbHVlKQoreworICAgIEF0b21pY1N0
cmluZ1RhYmxlTG9ja2VyIGxvY2tlcjsKKyAgICByZXR1cm4gYWRkVG9TdHJpbmdUYWJsZTxULCBI
YXNoVHJhbnNsYXRvcj4obG9ja2VyLCBzdHJpbmdUYWJsZSgpLCB2YWx1ZSk7Cit9CisKIHN0cnVj
dCBDU3RyaW5nVHJhbnNsYXRvciB7CiAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgTENo
YXIqIGMpCiAgICAgewpAQCAtNDAwLDE2ICs0MDYsMzAgQEAgUmVmPEF0b21pY1N0cmluZ0ltcGw+
IEF0b21pY1N0cmluZ0ltcGw6OmFkZExpdGVyYWwoY29uc3QgY2hhciogY2hhcmFjdGVycywgdW5z
aWcKICAgICByZXR1cm4gYWRkVG9TdHJpbmdUYWJsZTxDaGFyQnVmZmVyLCBDaGFyQnVmZmVyRnJv
bUxpdGVyYWxEYXRhVHJhbnNsYXRvcj4oYnVmZmVyKTsKIH0KIAorc3RhdGljIGlubGluZSBSZWY8
QXRvbWljU3RyaW5nSW1wbD4gYWRkU3Vic3RyaW5nKEF0b21pY1N0cmluZ1RhYmxlTG9ja2VyJiBs
b2NrZXIsIFN0cmluZ1RhYmxlSW1wbCYgYXRvbWljU3RyaW5nVGFibGUsIFN0cmluZ0ltcGwmIGJh
c2UpCit7CisgICAgQVNTRVJUKGJhc2UubGVuZ3RoKCkpOworICAgIEFTU0VSVChiYXNlLmlzU3lt
Ym9sKCkgfHwgYmFzZS5pc1N0YXRpYygpKTsKKworICAgIFN1YnN0cmluZ0xvY2F0aW9uIGJ1ZmZl
ciA9IHsgJmJhc2UsIDAsIGJhc2UubGVuZ3RoKCkgfTsKKyAgICBpZiAoYmFzZS5pczhCaXQoKSkK
KyAgICAgICAgcmV0dXJuIGFkZFRvU3RyaW5nVGFibGU8U3Vic3RyaW5nTG9jYXRpb24sIFN1YnN0
cmluZ1RyYW5zbGF0b3I4Pihsb2NrZXIsIGF0b21pY1N0cmluZ1RhYmxlLCBidWZmZXIpOworICAg
IHJldHVybiBhZGRUb1N0cmluZ1RhYmxlPFN1YnN0cmluZ0xvY2F0aW9uLCBTdWJzdHJpbmdUcmFu
c2xhdG9yMTY+KGxvY2tlciwgYXRvbWljU3RyaW5nVGFibGUsIGJ1ZmZlcik7Cit9CisKK3N0YXRp
YyBpbmxpbmUgUmVmPEF0b21pY1N0cmluZ0ltcGw+IGFkZFN1YnN0cmluZyhTdHJpbmdJbXBsJiBi
YXNlKQoreworICAgIEF0b21pY1N0cmluZ1RhYmxlTG9ja2VyIGxvY2tlcjsKKyAgICByZXR1cm4g
YWRkU3Vic3RyaW5nKGxvY2tlciwgc3RyaW5nVGFibGUoKSwgYmFzZSk7Cit9CisKIFJlZjxBdG9t
aWNTdHJpbmdJbXBsPiBBdG9taWNTdHJpbmdJbXBsOjphZGRTbG93Q2FzZShTdHJpbmdJbXBsJiBz
dHJpbmcpCiB7CiAgICAgaWYgKCFzdHJpbmcubGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiAqc3Rh
dGljX2Nhc3Q8QXRvbWljU3RyaW5nSW1wbCo+KFN0cmluZ0ltcGw6OmVtcHR5KCkpOwogCi0gICAg
aWYgKHN0cmluZy5pc1N5bWJvbCgpIHx8IHN0cmluZy5pc1N0YXRpYygpKSB7Ci0gICAgICAgIGlm
IChzdHJpbmcuaXM4Qml0KCkpCi0gICAgICAgICAgICByZXR1cm4gKmFkZChzdHJpbmcuY2hhcmFj
dGVyczgoKSwgc3RyaW5nLmxlbmd0aCgpKTsKLSAgICAgICAgcmV0dXJuICphZGQoc3RyaW5nLmNo
YXJhY3RlcnMxNigpLCBzdHJpbmcubGVuZ3RoKCkpOwotICAgIH0KKyAgICBpZiAoc3RyaW5nLmlz
U3ltYm9sKCkgfHwgc3RyaW5nLmlzU3RhdGljKCkpCisgICAgICAgIHJldHVybiBhZGRTdWJzdHJp
bmcoc3RyaW5nKTsKIAogICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXN0cmluZy5pc0F0b21pYygp
LCAiQXRvbWljU3RyaW5nSW1wbCBzaG91bGQgbm90IGhpdCB0aGUgc2xvdyBjYXNlIGlmIHRoZSBz
dHJpbmcgaXMgYWxyZWFkeSBhdG9taWMuIik7CiAKQEAgLTQzMCw5ICs0NTAsOCBAQCBSZWY8QXRv
bWljU3RyaW5nSW1wbD4gQXRvbWljU3RyaW5nSW1wbDo6YWRkU2xvd0Nhc2UoQXRvbWljU3RyaW5n
VGFibGUmIHN0cmluZ1RhYgogICAgICAgICByZXR1cm4gKnN0YXRpY19jYXN0PEF0b21pY1N0cmlu
Z0ltcGwqPihTdHJpbmdJbXBsOjplbXB0eSgpKTsKIAogICAgIGlmIChzdHJpbmcuaXNTeW1ib2wo
KSB8fCBzdHJpbmcuaXNTdGF0aWMoKSkgewotICAgICAgICBpZiAoc3RyaW5nLmlzOEJpdCgpKQot
ICAgICAgICAgICAgcmV0dXJuICphZGQoc3RyaW5nLmNoYXJhY3RlcnM4KCksIHN0cmluZy5sZW5n
dGgoKSk7Ci0gICAgICAgIHJldHVybiAqYWRkKHN0cmluZy5jaGFyYWN0ZXJzMTYoKSwgc3RyaW5n
Lmxlbmd0aCgpKTsKKyAgICAgICAgQXRvbWljU3RyaW5nVGFibGVMb2NrZXIgbG9ja2VyOworICAg
ICAgICByZXR1cm4gYWRkU3Vic3RyaW5nKGxvY2tlciwgc3RyaW5nVGFibGUudGFibGUoKSwgc3Ry
aW5nKTsKICAgICB9CiAKICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFzdHJpbmcuaXNBdG9taWMo
KSwgIkF0b21pY1N0cmluZ0ltcGwgc2hvdWxkIG5vdCBoaXQgdGhlIHNsb3cgY2FzZSBpZiB0aGUg
c3RyaW5nIGlzIGFscmVhZHkgYXRvbWljLiIpOwpAQCAtNDUyLDggKzQ3MSw4IEBAIHZvaWQgQXRv
bWljU3RyaW5nSW1wbDo6cmVtb3ZlKEF0b21pY1N0cmluZ0ltcGwqIHN0cmluZykKIHsKICAgICBB
U1NFUlQoc3RyaW5nLT5pc0F0b21pYygpKTsKICAgICBBdG9taWNTdHJpbmdUYWJsZUxvY2tlciBs
b2NrZXI7Ci0gICAgSGFzaFNldDxTdHJpbmdJbXBsKj4mIGF0b21pY1N0cmluZ1RhYmxlID0gc3Ry
aW5nVGFibGUoKTsKLSAgICBIYXNoU2V0PFN0cmluZ0ltcGwqPjo6aXRlcmF0b3IgaXRlcmF0b3Ig
PSBhdG9taWNTdHJpbmdUYWJsZS5maW5kKHN0cmluZyk7CisgICAgYXV0byYgYXRvbWljU3RyaW5n
VGFibGUgPSBzdHJpbmdUYWJsZSgpOworICAgIGF1dG8gaXRlcmF0b3IgPSBhdG9taWNTdHJpbmdU
YWJsZS5maW5kKHN0cmluZyk7CiAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShpdGVyYXRvciAhPSBh
dG9taWNTdHJpbmdUYWJsZS5lbmQoKSwgIlRoZSBzdHJpbmcgYmVpbmcgcmVtb3ZlZCBpcyBhdG9t
aWMgaW4gdGhlIHN0cmluZyB0YWJsZSBvZiBhbiBvdGhlciB0aHJlYWQhIik7CiAgICAgQVNTRVJU
KHN0cmluZyA9PSAqaXRlcmF0b3IpOwogICAgIGF0b21pY1N0cmluZ1RhYmxlLnJlbW92ZShpdGVy
YXRvcik7CkBAIC00NjYsMTQgKzQ4NSw4IEBAIFJlZlB0cjxBdG9taWNTdHJpbmdJbXBsPiBBdG9t
aWNTdHJpbmdJbXBsOjpsb29rVXBTbG93Q2FzZShTdHJpbmdJbXBsJiBzdHJpbmcpCiAgICAgaWYg
KCFzdHJpbmcubGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxBdG9taWNTdHJp
bmdJbXBsKj4oU3RyaW5nSW1wbDo6ZW1wdHkoKSk7CiAKLSAgICBpZiAoc3RyaW5nLmlzU3ltYm9s
KCkgfHwgc3RyaW5nLmlzU3RhdGljKCkpIHsKLSAgICAgICAgaWYgKHN0cmluZy5pczhCaXQoKSkK
LSAgICAgICAgICAgIHJldHVybiBsb29rVXBJbnRlcm5hbChzdHJpbmcuY2hhcmFjdGVyczgoKSwg
c3RyaW5nLmxlbmd0aCgpKTsKLSAgICAgICAgcmV0dXJuIGxvb2tVcEludGVybmFsKHN0cmluZy5j
aGFyYWN0ZXJzMTYoKSwgc3RyaW5nLmxlbmd0aCgpKTsKLSAgICB9Ci0KICAgICBBdG9taWNTdHJp
bmdUYWJsZUxvY2tlciBsb2NrZXI7Ci0gICAgSGFzaFNldDxTdHJpbmdJbXBsKj4mIGF0b21pY1N0
cmluZ1RhYmxlID0gc3RyaW5nVGFibGUoKTsKKyAgICBhdXRvJiBhdG9taWNTdHJpbmdUYWJsZSA9
IHN0cmluZ1RhYmxlKCk7CiAgICAgYXV0byBpdGVyYXRvciA9IGF0b21pY1N0cmluZ1RhYmxlLmZp
bmQoJnN0cmluZyk7CiAgICAgaWYgKGl0ZXJhdG9yICE9IGF0b21pY1N0cmluZ1RhYmxlLmVuZCgp
KQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8QXRvbWljU3RyaW5nSW1wbCo+KCppdGVyYXRv
cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaCBiL1NvdXJj
ZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oCmluZGV4IGY3NjI0MmI1NGIyNDZhOThmNzgxNjg3
YTA2MTg2MjgzNGZiODE1MGYuLmIyYzQ1ZThmYTJiYWM2MzgwODYxYWM4OWZhYmJiYjZiNjExY2Iy
OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oCisrKyBiL1Nv
dXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oCkBAIC01MzcsNiArNTM3LDcgQEAgY2xhc3Mg
U3RyaW5nSW1wbCB7CiAgICAgfQogCiAgICAgY2xhc3MgU3RhdGljU3RyaW5nSW1wbCB7CisgICAg
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFN0YXRpY1N0cmluZ0ltcGwpOwogICAgIHB1YmxpYzoK
ICAgICAgICAgLy8gVXNlZCB0byBjb25zdHJ1Y3Qgc3RhdGljIHN0cmluZ3MsIHdoaWNoIGhhdmUg
YW4gc3BlY2lhbCByZWZDb3VudCB0aGF0IGNhbiBuZXZlciBoaXQgemVyby4KICAgICAgICAgLy8g
VGhpcyBtZWFucyB0aGF0IHRoZSBzdGF0aWMgc3RyaW5nIHdpbGwgbmV2ZXIgYmUgZGVzdHJveWVk
LCB3aGljaCBpcyBpbXBvcnRhbnQgYmVjYXVzZQpAQCAtNTU5LDYgKzU2MCwxMSBAQCBjbGFzcyBT
dHJpbmdJbXBsIHsKICAgICAgICAgewogICAgICAgICB9CiAKKyAgICAgICAgb3BlcmF0b3IgU3Ry
aW5nSW1wbCYoKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gKnJlaW50ZXJwcmV0X2Nh
c3Q8U3RyaW5nSW1wbCo+KHRoaXMpOworICAgICAgICB9CisKICAgICAgICAgLy8gVGhlc2UgbWVt
YmVyIHZhcmlhYmxlcyBtdXN0IG1hdGNoIHRoZSBsYXlvdXQgb2YgU3RyaW5nSW1wbC4KICAgICAg
ICAgdW5zaWduZWQgbV9yZWZDb3VudDsKICAgICAgICAgdW5zaWduZWQgbV9sZW5ndGg7CmRpZmYg
LS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZTRiZWZlZTkz
N2M0ZjIxMWY0YTkxMmEyMDE1NGYyMDA5OTYyMWMwMC4uZGUyMmRkZGZkMjc3ODRlOGRhY2VmYTZj
ZjE1ODMwOTMxYmZhN2RmZSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE3LTAxLTAyICBZdXN1a2UgU3V6dWtpICA8
dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIExldmVyYWdlIFN1YnN0cmluZyB0byBj
cmVhdGUgbmV3IEF0b21pY1N0cmluZ0ltcGwgZm9yIFN0YXRpY1N0cmluZ0ltcGwgYW5kIFN5bWJv
bEltcGwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2
NjYzNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU3RyaW5nSW1wbC5jcHA6CisgICAgICAgIChUZXN0V2Vi
S2l0QVBJOjpURVNUKToKKwogMjAxNy0wMS0wMiAgTWFudWVsIFJlZ28gQ2FzYXNub3ZhcyAgPHJl
Z29AaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBXZWJDb3JlL0NTU1BhcnNlciB1bml0IHRl
c3QgaXMgbm90IGJlaW5nIGJ1aWx0CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dURi9TdHJpbmdJbXBsLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1N0
cmluZ0ltcGwuY3BwCmluZGV4IGEzOThmMDdiOGJkNWEzMzNjYjdhYWYzOTgxYTk1N2M5NjllZDBm
NjUuLmZkYjcwMWM5MDQ5ZjU1MjIzMDllMmUwMDM1NmVmYTZlMmFkNTBhMjAgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1N0cmluZ0ltcGwuY3BwCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1N0cmluZ0ltcGwuY3BwCkBAIC01NTQsMTEgKzU1NCwx
NyBAQCBURVNUKFdURiwgU3RyaW5nSW1wbFN5bWJvbFRvQXRvbWljU3RyaW5nKQogICAgIEFTU0VS
VF9UUlVFKHJlZmVyZW5jZS0+aXNTeW1ib2woKSk7CiAgICAgQVNTRVJUX0ZBTFNFKHJlZmVyZW5j
ZS0+aXNBdG9taWMoKSk7CiAKKyAgICBhdXRvIHJlc3VsdCA9IEF0b21pY1N0cmluZ0ltcGw6Omxv
b2tVcChyZWZlcmVuY2UucHRyKCkpOworICAgIEFTU0VSVF9GQUxTRShyZXN1bHQpOworCiAgICAg
YXV0byBhdG9taWMgPSBBdG9taWNTdHJpbmdJbXBsOjphZGQocmVmZXJlbmNlLnB0cigpKTsKICAg
ICBBU1NFUlRfVFJVRShhdG9taWMtPmlzQXRvbWljKCkpOwogICAgIEFTU0VSVF9GQUxTRShhdG9t
aWMtPmlzU3ltYm9sKCkpOwogICAgIEFTU0VSVF9UUlVFKHJlZmVyZW5jZS0+aXNTeW1ib2woKSk7
CiAgICAgQVNTRVJUX0ZBTFNFKHJlZmVyZW5jZS0+aXNBdG9taWMoKSk7CisKKyAgICBhdXRvIHJl
c3VsdDIgPSBBdG9taWNTdHJpbmdJbXBsOjpsb29rVXAocmVmZXJlbmNlLnB0cigpKTsKKyAgICBB
U1NFUlRfVFJVRShyZXN1bHQyKTsKIH0KIAogVEVTVChXVEYsIFN0cmluZ0ltcGxOdWxsU3ltYm9s
VG9BdG9taWNTdHJpbmcpCkBAIC01NjcsMTEgKzU3Myw0MyBAQCBURVNUKFdURiwgU3RyaW5nSW1w
bE51bGxTeW1ib2xUb0F0b21pY1N0cmluZykKICAgICBBU1NFUlRfVFJVRShyZWZlcmVuY2UtPmlz
U3ltYm9sKCkpOwogICAgIEFTU0VSVF9GQUxTRShyZWZlcmVuY2UtPmlzQXRvbWljKCkpOwogCisg
ICAgLy8gQmVjYXVzZSB0aGUgc3Vic3RyaW5nIG9mIHRoZSByZWZlcmVuY2UgaXMgdGhlIGVtcHR5
IHN0cmluZyB3aGljaCBpcyBhbHJlYWR5IGludGVybmVkLgorICAgIGF1dG8gcmVzdWx0ID0gQXRv
bWljU3RyaW5nSW1wbDo6bG9va1VwKHJlZmVyZW5jZS5wdHIoKSk7CisgICAgQVNTRVJUX1RSVUUo
cmVzdWx0KTsKKwogICAgIGF1dG8gYXRvbWljID0gQXRvbWljU3RyaW5nSW1wbDo6YWRkKHJlZmVy
ZW5jZS5wdHIoKSk7CiAgICAgQVNTRVJUX1RSVUUoYXRvbWljLT5pc0F0b21pYygpKTsKICAgICBB
U1NFUlRfRkFMU0UoYXRvbWljLT5pc1N5bWJvbCgpKTsKICAgICBBU1NFUlRfVFJVRShyZWZlcmVu
Y2UtPmlzU3ltYm9sKCkpOwogICAgIEFTU0VSVF9GQUxTRShyZWZlcmVuY2UtPmlzQXRvbWljKCkp
OworICAgIEFTU0VSVF9FUShhdG9taWMuZ2V0KCksIFN0cmluZ0ltcGw6OmVtcHR5KCkpOworCisg
ICAgYXV0byByZXN1bHQyID0gQXRvbWljU3RyaW5nSW1wbDo6bG9va1VwKHJlZmVyZW5jZS5wdHIo
KSk7CisgICAgQVNTRVJUX1RSVUUocmVzdWx0Mik7Cit9CisKK3N0YXRpYyBTdHJpbmdJbXBsOjpT
dGF0aWNTdHJpbmdJbXBsIHN0YXRpY1N0cmluZyB7IkNvY29hIn07CisKK1RFU1QoV1RGLCBTdHJp
bmdJbXBsU3RhdGljVG9BdG9taWNTdHJpbmcpCit7CisgICAgU3RyaW5nSW1wbCYgb3JpZ2luYWwg
PSBzdGF0aWNTdHJpbmc7CisgICAgQVNTRVJUX0ZBTFNFKG9yaWdpbmFsLmlzU3ltYm9sKCkpOwor
ICAgIEFTU0VSVF9GQUxTRShvcmlnaW5hbC5pc0F0b21pYygpKTsKKyAgICBBU1NFUlRfVFJVRShv
cmlnaW5hbC5pc1N0YXRpYygpKTsKKworICAgIGF1dG8gcmVzdWx0ID0gQXRvbWljU3RyaW5nSW1w
bDo6bG9va1VwKCZvcmlnaW5hbCk7CisgICAgQVNTRVJUX0ZBTFNFKHJlc3VsdCk7CisKKyAgICBh
dXRvIGF0b21pYyA9IEF0b21pY1N0cmluZ0ltcGw6OmFkZCgmb3JpZ2luYWwpOworICAgIEFTU0VS
VF9UUlVFKGF0b21pYy0+aXNBdG9taWMoKSk7CisgICAgQVNTRVJUX0ZBTFNFKGF0b21pYy0+aXNT
eW1ib2woKSk7CisgICAgQVNTRVJUX0ZBTFNFKGF0b21pYy0+aXNTdGF0aWMoKSk7CisgICAgQVNT
RVJUX0ZBTFNFKG9yaWdpbmFsLmlzU3ltYm9sKCkpOworICAgIEFTU0VSVF9GQUxTRShvcmlnaW5h
bC5pc0F0b21pYygpKTsKKyAgICBBU1NFUlRfVFJVRShvcmlnaW5hbC5pc1N0YXRpYygpKTsKKwor
ICAgIGF1dG8gcmVzdWx0MiA9IEF0b21pY1N0cmluZ0ltcGw6Omxvb2tVcCgmb3JpZ2luYWwpOwor
ICAgIEFTU0VSVF9UUlVFKHJlc3VsdDIpOwogfQogCiBURVNUKFdURiwgU3RyaW5nSW1wbENvbnN0
ZXhwckhhc2hlcikK
</data>

          </attachment>
      

    </bug>

</bugzilla>