<?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>169818</bug_id>
          
          <creation_ts>2017-03-17 11:00:27 -0700</creation_ts>
          <short_desc>Make SocketStreamHandle virtual functions asynchronous</short_desc>
          <delta_ts>2017-03-17 13:31:23 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>beidson</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1289056</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-03-17 11:00:27 -0700</bug_when>
    <thetext>Make SocketStreamHandle virtual functions asynchronous</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1289065</commentid>
    <comment_count>1</comment_count>
      <attachid>304799</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-03-17 11:08:28 -0700</bug_when>
    <thetext>Created attachment 304799
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1289087</commentid>
    <comment_count>2</comment_count>
      <attachid>304807</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-03-17 12:11:36 -0700</bug_when>
    <thetext>Created attachment 304807
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1289118</commentid>
    <comment_count>3</comment_count>
      <attachid>304807</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2017-03-17 13:15:48 -0700</bug_when>
    <thetext>Comment on attachment 304807
Patch

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

&gt; Source/WebCore/platform/network/SocketStreamHandle.h:55
&gt; +    virtual void platformSend(const char* data, size_t length, Function&lt;void(bool)&gt;) = 0;

Why not make the Function an rvalue reference?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1289120</commentid>
    <comment_count>4</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-03-17 13:18:44 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Comment on attachment 304807 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=304807&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/network/SocketStreamHandle.h:55
&gt; &gt; +    virtual void platformSend(const char* data, size_t length, Function&lt;void(bool)&gt;) = 0;
&gt; 
&gt; Why not make the Function an rvalue reference?

In fact, for general use you&apos;d *have too*, because Functions are non copyable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1289126</commentid>
    <comment_count>5</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-03-17 13:31:23 -0700</bug_when>
    <thetext>I don&apos;t have to, but I did.
http://trac.webkit.org/r214114</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>304799</attachid>
            <date>2017-03-17 11:08:28 -0700</date>
            <delta_ts>2017-03-17 12:11:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-169818-20170317110824.patch</filename>
            <type>text/plain</type>
            <size>21310</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxNDEwOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ1IEBACisyMDE3LTAzLTE3ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTWFrZSBTb2Nr
ZXRTdHJlYW1IYW5kbGUgdmlydHVhbCBmdW5jdGlvbnMgYXN5bmNocm9ub3VzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjk4MTgKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBjaGFuZ2UgaW4gYmVoYXZp
b3IuICBJbnN0ZWFkIG9mIHJldHVybmluZyBpbW1lZGlhdGVseSwgY2FsbCBhIGNvbXBsZXRpb24g
aGFuZGxlci4KKyAgICAgICAgVGhpcyBpcyBpbiBwcmVwYXJhdGlvbiBmb3IgbWFraW5nIHRoZW0g
dHJ1bHkgYXN5bmNocm9ub3VzLgorCisgICAgICAgIEkgc3RpbGwgbmVlZCB0byBiZSBhYmxlIHRv
IHN5bmNocm9ub3VzbHkgZ2V0IHRoZSBudW1iZXIgb2YgYnVmZmVyZWQgYnl0ZXMsIGJ1dCB0aGUK
KyAgICAgICAgYnVmZmVyIGl0c2VsZiB3aWxsIHNvb24gYmUgaW4gdGhlIE5ldHdvcmtQcm9jZXNz
IHdpdGggYSBuZXcgc3ViY2xhc3Mgb2YgU29ja2V0U3RyZWFtSGFuZGxlCisgICAgICAgIHRoYXQg
bWVzc2FnZXMgYWNyb3NzIElQQy4gIFRoZSBudW1iZXIgb2YgYnVmZmVyZWQgYnl0ZXMgd2lsbCBz
dGlsbCBiZSBzdG9yZWQgaW4gdGhlIFdlYlByb2Nlc3MsCisgICAgICAgIGFuZCB3aGVuIGl0IHVw
ZGF0ZXMsIHRoZSBtZXNzYWdlIGZyb20gU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50OjpkaWRVcGRh
dGVCdWZmZXJlZEFtb3VudCB3aWxsIHVwZGF0ZSBpdC4KKworICAgICAgICAqIENNYWtlTGlzdHMu
dHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGU6OnNlbmQpOgorICAgICAgICAoV2ViQ29yZTo6U29j
a2V0U3RyZWFtSGFuZGxlOjpjbG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpTb2NrZXRTdHJlYW1I
YW5kbGU6OnNlbmRQZW5kaW5nRGF0YSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9Tb2NrZXRTdHJlYW1IYW5kbGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNvY2tldFN0cmVh
bUhhbmRsZTo6YnVmZmVyZWRBbW91bnQpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6U29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6cGxhdGZvcm1TZW5kKToKKyAgICAgICAgKFdlYkNv
cmU6OlNvY2tldFN0cmVhbUhhbmRsZUltcGw6OnNlbmRQZW5kaW5nRGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpidWZmZXJlZEFtb3VudCk6CisgICAgICAg
IG1fYnVmZmVyIHdhcyBtb3ZlZCBmcm9tIFNvY2tldFN0cmVhbUhhbmRsZSB0byBTb2NrZXRTdHJl
YW1IYW5kbGVJbXBsLCBzbyBzb21lIG9mIHRoZSBsb2dpYyBtdXN0IG1vdmUgd2l0aCBpdC4KKyAg
ICAgICAgSSBtb3ZlZCBhcyBtdWNoIGxvZ2ljIHRoYXQgd2FzIHNoYXJlZCBpbiB0aGUgc3VwZXJj
bGFzcyB0byBhIG5ldyBzaGFyZWQgbG9jYXRpb24gZm9yIGNvZGUgc2hhcmVkIGFtb25nIHRoZSBz
dWJjbGFzcyBpbXBsZW1lbnRhdGlvbnMuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9T
b2NrZXRTdHJlYW1IYW5kbGVJbXBsLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9T
b2NrZXRTdHJlYW1IYW5kbGVJbXBsQ0ZOZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U29ja2V0
U3RyZWFtSGFuZGxlSW1wbDo6cGxhdGZvcm1TZW5kSW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29y
ZTo6U29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6cGxhdGZvcm1TZW5kKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5oOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ3VybC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpwbGF0Zm9ybVNl
bmRJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpw
bGF0Zm9ybVNlbmQpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9T
b2NrZXRTdHJlYW1IYW5kbGVJbXBsLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3Vw
L1NvY2tldFN0cmVhbUhhbmRsZUltcGxTb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNvY2tl
dFN0cmVhbUhhbmRsZUltcGw6OnBsYXRmb3JtU2VuZEludGVybmFsKToKKyAgICAgICAgKFdlYkNv
cmU6OlNvY2tldFN0cmVhbUhhbmRsZUltcGw6OnBsYXRmb3JtU2VuZCk6IERlbGV0ZWQuCisKIDIw
MTctMDMtMTcgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIFJl
YWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZSBpcyBub3Qgc3RvcHBpbmcgcHJvcGVybHkKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAyMTM5NjApCisrKyBTb3VyY2UvV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMjM1Miw2ICsyMzUyLDcgQEAgc2V0KFdl
YkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5j
cHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcAogICAgIHBs
YXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlLmNwcAorICAgIHBsYXRmb3JtL25ldHdv
cmsvU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL1N5bmNo
cm9ub3VzTG9hZGVyQ2xpZW50LmNwcAogCiAgICAgcGxhdGZvcm0vc3FsL1NRTGl0ZUF1dGhvcml6
ZXIuY3BwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMTM5NjApCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTI2MjcsNiArMjYy
Nyw3IEBACiAJCTVDNDMwNEI2MTkxQUVGNDYwMDBFMkJDMCAvKiBKU0VYVFNoYWRlclRleHR1cmVM
T0QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDNDMw
NEI0MTkxQUVGNDYwMDBFMkJDMCAvKiBKU0VYVFNoYWRlclRleHR1cmVMT0QuaCAqLzsgfTsKIAkJ
NUM1MzgxQjIxRDg3RDRCMjAwRTJFQkU2IC8qIFVSTFNlYXJjaFBhcmFtcy5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzUzODFCMDFEODdENDU3MDBF
MkVCRTYgLyogVVJMU2VhcmNoUGFyYW1zLmNwcCAqLzsgfTsKIAkJNUM1MzgxQjUxRDg3RTA4NzAw
RTJFQkU2IC8qIEpTVVJMU2VhcmNoUGFyYW1zLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDNTM4MUIzMUQ4N0UwODEwMEUyRUJFNiAvKiBKU1VSTFNl
YXJjaFBhcmFtcy5jcHAgKi87IH07CisJCTVDNjY4RTYyMUU3QzU3RjEwMEQzMkIzQiAvKiBTb2Nr
ZXRTdHJlYW1IYW5kbGVJbXBsLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDVDNjY4RTYxMUU3QzU3RTIwMEQzMkIzQiAvKiBTb2NrZXRTdHJlYW1IYW5k
bGVJbXBsLmNwcCAqLzsgfTsKIAkJNUM2ODhBQTExRDM4MEJGODAwMEI1NEZBIC8qIFRocmVhZGFi
bGVXZWJTb2NrZXRDaGFubmVsLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDVDNjg4QUEwMUQzODA1MDkwMDBCNTRGQSAvKiBUaHJlYWRhYmxlV2ViU29j
a2V0Q2hhbm5lbC5jcHAgKi87IH07CiAJCTVDNjg4QUEzMUQzODE0QkYwMDBCNTRGQSAvKiBTb2Nr
ZXRQcm92aWRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1QzY4OEFBMjFEMzgxMjZGMDAwQjU0RkEgLyogU29ja2V0UHJvdmlkZXIuY3BwICovOyB9
OwogCQk1QzZFNjU0MjFENUNFRkI5MDBGNzg2MkUgLyogVVJMUGFyc2VyLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDNkU2NTNGMUQ1Q0VEQzkwMEY3
ODYyRSAvKiBVUkxQYXJzZXIuY3BwICovOyB9OwpAQCAtMTAyODEsNiArMTAyODIsNyBAQAogCQk1
QzUzODFCMTFEODdENDU3MDBFMkVCRTYgLyogVVJMU2VhcmNoUGFyYW1zLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVSTFNlYXJjaFBhcmFtcy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1QzUzODFCMzFEODdFMDgxMDBFMkVCRTYgLyogSlNVUkxTZWFyY2hQYXJh
bXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNVUkxTZWFyY2hQ
YXJhbXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzUzODFCNDFEODdFMDgx
MDBFMkVCRTYgLyogSlNVUkxTZWFyY2hQYXJhbXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSlNVUkxTZWFyY2hQYXJhbXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNUM2NjhFNjExRTdDNTdFMjAwRDMyQjNCIC8qIFNvY2tldFN0cmVhbUhhbmRsZUltcGwuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU29ja2V0U3RyZWFtSGFuZGxl
SW1wbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDNjg4QUEwMUQzODA1MDkw
MDBCNTRGQSAvKiBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDNjg4QUEyMUQzODEyNkYwMDBCNTRGQSAvKiBT
b2NrZXRQcm92aWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBT
b2NrZXRQcm92aWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDNkU2NTNG
MUQ1Q0VEQzkwMEY3ODYyRSAvKiBVUkxQYXJzZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gVVJMUGFyc2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTE4NjcxLDYgKzE4NjczLDcgQEAKIAkJCQk1MTBENEEzMDEwMzE2NUVFMDA0OUVBNTQgLyog
U29ja2V0U3RyZWFtSGFuZGxlLmNwcCAqLywKIAkJCQk1MTBENEEzMTEwMzE2NUVFMDA0OUVBNTQg
LyogU29ja2V0U3RyZWFtSGFuZGxlLmggKi8sCiAJCQkJNTEwRDRBMzIxMDMxNjVFRTAwNDlFQTU0
IC8qIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudC5oICovLAorCQkJCTVDNjY4RTYxMUU3QzU3RTIw
MEQzMkIzQiAvKiBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmNwcCAqLywKIAkJCQlFMTgwODExMDE2
RkNGNDJFMDBCODBEMDcgLyogU3luY2hyb25vdXNMb2FkZXJDbGllbnQuY3BwICovLAogCQkJCUUx
ODA4MTE1MTZGQ0Y5Q0IwMEI4MEQwNyAvKiBTeW5jaHJvbm91c0xvYWRlckNsaWVudC5oICovLAog
CQkJKTsKQEAgLTMxNTc4LDYgKzMxNTgxLDcgQEAKIAkJCQkxNDExNUI3MjA5Rjg0Q0Q2MDBDQTRG
QzEgLyogSlNOb2RlRmlsdGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTgzRjEyMDZCMUI4QzEw
NDcwMEQ3NUY2MyAvKiBKU05vZGVGaWx0ZXJDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NTdFNjU3RTAxRTcxMzk3ODAwRjk0MUNBIC8qIENyeXB0b0tleVJhdy5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQk1QzY2OEU2MjFFN0M1N0YxMDBEMzJCM0IgLyogU29ja2V0U3RyZWFtSGFuZGxlSW1w
bC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTc1MEQ4RDBBOTBFNTIxMDAwRkYyMTUgLyogSlNO
b2RlSXRlcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE3NTBERDQwQTkwRTcyOTAwMEZG
MjE1IC8qIEpTTm9kZUl0ZXJhdG9yQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDRDlD
MkMyMEMxN0I2OUUwMDVDOTBBMiAvKiBKU05vZGVMaXN0LmNwcCBpbiBTb3VyY2VzICovLApJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3Ry
ZWFtSGFuZGxlLmNwcAkocmV2aXNpb24gMjE0MTA2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw4
ICszNiw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY29uc3QgdW5zaWduZWQgYnVmZmVy
U2l6ZSA9IDEwMCAqIDEwMjQgKiAxMDI0OwotCiBTb2NrZXRTdHJlYW1IYW5kbGU6OlNvY2tldFN0
cmVhbUhhbmRsZShjb25zdCBVUkwmIHVybCwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50JiBjbGll
bnQpCiAgICAgOiBtX3VybCh1cmwpCiAgICAgLCBtX2NsaWVudChjbGllbnQpCkBAIC01NCwzMSAr
NTIsNyBAQCB2b2lkIFNvY2tldFN0cmVhbUhhbmRsZTo6c2VuZChjb25zdCBjaGFyCiB7CiAgICAg
aWYgKG1fc3RhdGUgPT0gQ29ubmVjdGluZyB8fCBtX3N0YXRlID09IENsb3NpbmcpCiAgICAgICAg
IHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7Ci0gICAgaWYgKCFtX2J1ZmZlci5pc0Vt
cHR5KCkpIHsKLSAgICAgICAgaWYgKG1fYnVmZmVyLnNpemUoKSArIGxlbmd0aCA+IGJ1ZmZlclNp
emUpIHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiByZXBvcnQgZXJyb3IgdG8gaW5kaWNhdGUgdGhh
dCBidWZmZXIgaGFzIG5vIG1vcmUgc3BhY2UuCi0gICAgICAgICAgICByZXR1cm4gY29tcGxldGlv
bkhhbmRsZXIoZmFsc2UpOwotICAgICAgICB9Ci0gICAgICAgIG1fYnVmZmVyLmFwcGVuZChkYXRh
LCBsZW5ndGgpOwotICAgICAgICBtX2NsaWVudC5kaWRVcGRhdGVCdWZmZXJlZEFtb3VudChzdGF0
aWNfY2FzdDxTb2NrZXRTdHJlYW1IYW5kbGUmPigqdGhpcyksIGJ1ZmZlcmVkQW1vdW50KCkpOwot
ICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIodHJ1ZSk7Ci0gICAgfQotICAgIHNpemVf
dCBieXRlc1dyaXR0ZW4gPSAwOwotICAgIGlmIChtX3N0YXRlID09IE9wZW4pIHsKLSAgICAgICAg
aWYgKGF1dG8gcmVzdWx0ID0gcGxhdGZvcm1TZW5kKGRhdGEsIGxlbmd0aCkpCi0gICAgICAgICAg
ICBieXRlc1dyaXR0ZW4gPSByZXN1bHQudmFsdWUoKTsKLSAgICAgICAgZWxzZQotICAgICAgICAg
ICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKLSAgICB9Ci0gICAgaWYgKG1fYnVm
ZmVyLnNpemUoKSArIGxlbmd0aCAtIGJ5dGVzV3JpdHRlbiA+IGJ1ZmZlclNpemUpIHsKLSAgICAg
ICAgLy8gRklYTUU6IHJlcG9ydCBlcnJvciB0byBpbmRpY2F0ZSB0aGF0IGJ1ZmZlciBoYXMgbm8g
bW9yZSBzcGFjZS4KLSAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKLSAg
ICB9Ci0gICAgaWYgKGJ5dGVzV3JpdHRlbiA8IGxlbmd0aCkgewotICAgICAgICBtX2J1ZmZlci5h
cHBlbmQoZGF0YSArIGJ5dGVzV3JpdHRlbiwgbGVuZ3RoIC0gYnl0ZXNXcml0dGVuKTsKLSAgICAg
ICAgbV9jbGllbnQuZGlkVXBkYXRlQnVmZmVyZWRBbW91bnQoc3RhdGljX2Nhc3Q8U29ja2V0U3Ry
ZWFtSGFuZGxlJj4oKnRoaXMpLCBidWZmZXJlZEFtb3VudCgpKTsKLSAgICB9Ci0gICAgcmV0dXJu
IGNvbXBsZXRpb25IYW5kbGVyKHRydWUpOworICAgIHBsYXRmb3JtU2VuZChkYXRhLCBsZW5ndGgs
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAogdm9pZCBTb2NrZXRTdHJlYW1IYW5k
bGU6OmNsb3NlKCkKQEAgLTg2LDcgKzYwLDcgQEAgdm9pZCBTb2NrZXRTdHJlYW1IYW5kbGU6OmNs
b3NlKCkKICAgICBpZiAobV9zdGF0ZSA9PSBDbG9zZWQpCiAgICAgICAgIHJldHVybjsKICAgICBt
X3N0YXRlID0gQ2xvc2luZzsKLSAgICBpZiAoIW1fYnVmZmVyLmlzRW1wdHkoKSkKKyAgICBpZiAo
YnVmZmVyZWRBbW91bnQoKSkKICAgICAgICAgcmV0dXJuOwogICAgIGRpc2Nvbm5lY3QoKTsKIH0K
QEAgLTk5LDMyICs3Myw0IEBAIHZvaWQgU29ja2V0U3RyZWFtSGFuZGxlOjpkaXNjb25uZWN0KCkK
ICAgICBtX3N0YXRlID0gQ2xvc2VkOwogfQogCi1ib29sIFNvY2tldFN0cmVhbUhhbmRsZTo6c2Vu
ZFBlbmRpbmdEYXRhKCkKLXsKLSAgICBpZiAobV9zdGF0ZSAhPSBPcGVuICYmIG1fc3RhdGUgIT0g
Q2xvc2luZykKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChtX2J1ZmZlci5pc0VtcHR5
KCkpIHsKLSAgICAgICAgaWYgKG1fc3RhdGUgPT0gT3BlbikKLSAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICAgICAgaWYgKG1fc3RhdGUgPT0gQ2xvc2luZykgewotICAgICAgICAgICAgZGlz
Y29ubmVjdCgpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgfQot
ICAgIGJvb2wgcGVuZGluZzsKLSAgICBkbyB7Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gcGxhdGZv
cm1TZW5kKG1fYnVmZmVyLmZpcnN0QmxvY2tEYXRhKCksIG1fYnVmZmVyLmZpcnN0QmxvY2tTaXpl
KCkpOwotICAgICAgICBpZiAoIXJlc3VsdCkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICAgICAgc2l6ZV90IGJ5dGVzV3JpdHRlbiA9IHJlc3VsdC52YWx1ZSgpOwotICAgICAgICBpZiAo
IWJ5dGVzV3JpdHRlbikKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgcGVuZGlu
ZyA9IGJ5dGVzV3JpdHRlbiAhPSBtX2J1ZmZlci5maXJzdEJsb2NrU2l6ZSgpOwotICAgICAgICBB
U1NFUlQobV9idWZmZXIuc2l6ZSgpIC0gYnl0ZXNXcml0dGVuIDw9IGJ1ZmZlclNpemUpOwotICAg
ICAgICBtX2J1ZmZlci5jb25zdW1lKGJ5dGVzV3JpdHRlbik7Ci0gICAgfSB3aGlsZSAoIXBlbmRp
bmcgJiYgIW1fYnVmZmVyLmlzRW1wdHkoKSk7Ci0gICAgbV9jbGllbnQuZGlkVXBkYXRlQnVmZmVy
ZWRBbW91bnQoc3RhdGljX2Nhc3Q8U29ja2V0U3RyZWFtSGFuZGxlJj4oKnRoaXMpLCBidWZmZXJl
ZEFtb3VudCgpKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5k
bGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tl
dFN0cmVhbUhhbmRsZS5oCShyZXZpc2lvbiAyMTQxMDYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3
ICszMiw2IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIlVSTC5oIgotI2luY2x1ZGUgPHd0
Zi9TdHJlYW1CdWZmZXIuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDgsMTggKzQ3LDE2IEBAIHB1YmxpYzoKICAgICB2
b2lkIHNlbmQoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCwgRnVuY3Rpb248dm9pZChi
b29sKT4pOwogICAgIHZvaWQgY2xvc2UoKTsgLy8gRGlzY29ubmVjdCBhZnRlciBhbGwgZGF0YSBp
biBidWZmZXIgYXJlIHNlbnQuCiAgICAgdm9pZCBkaXNjb25uZWN0KCk7Ci0gICAgc2l6ZV90IGJ1
ZmZlcmVkQW1vdW50KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuc2l6ZSgpOyB9CisgICAgdmly
dHVhbCBzaXplX3QgYnVmZmVyZWRBbW91bnQoKSA9IDA7CiAKIHByb3RlY3RlZDoKICAgICBTb2Nr
ZXRTdHJlYW1IYW5kbGUoY29uc3QgVVJMJiwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50Jik7CiAK
LSAgICBib29sIHNlbmRQZW5kaW5nRGF0YSgpOwotICAgIHZpcnR1YWwgc3RkOjpvcHRpb25hbDxz
aXplX3Q+IHBsYXRmb3JtU2VuZChjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtU2VuZChjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qg
bGVuZ3RoLCBGdW5jdGlvbjx2b2lkKGJvb2wpPikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBwbGF0
Zm9ybUNsb3NlKCkgPSAwOwogCiAgICAgVVJMIG1fdXJsOwogICAgIFNvY2tldFN0cmVhbUhhbmRs
ZUNsaWVudCYgbV9jbGllbnQ7Ci0gICAgU3RyZWFtQnVmZmVyPGNoYXIsIDEwMjQgKiAxMDI0PiBt
X2J1ZmZlcjsKICAgICBTb2NrZXRTdHJlYW1TdGF0ZSBtX3N0YXRlOwogfTsKIApJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVh
bUhhbmRsZUltcGwuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSw5NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJT
b2NrZXRTdHJlYW1IYW5kbGVJbXBsLmgiCisKKyNpbmNsdWRlICJTb2NrZXRTdHJlYW1IYW5kbGVD
bGllbnQuaCIKKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCit2b2lkIFNvY2tldFN0cmVhbUhhbmRsZUltcGw6OnBsYXRmb3JtU2VuZChjb25zdCBjaGFy
KiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBGdW5jdGlvbjx2b2lkKGJvb2wpPiBjb21wbGV0aW9uSGFu
ZGxlcikKK3sKKyAgICBpZiAoIW1fYnVmZmVyLmlzRW1wdHkoKSkgeworICAgICAgICBpZiAobV9i
dWZmZXIuc2l6ZSgpICsgbGVuZ3RoID4gbWF4QnVmZmVyU2l6ZSkgeworICAgICAgICAgICAgLy8g
RklYTUU6IHJlcG9ydCBlcnJvciB0byBpbmRpY2F0ZSB0aGF0IGJ1ZmZlciBoYXMgbm8gbW9yZSBz
cGFjZS4KKyAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CisgICAg
ICAgIH0KKyAgICAgICAgbV9idWZmZXIuYXBwZW5kKGRhdGEsIGxlbmd0aCk7CisgICAgICAgIG1f
Y2xpZW50LmRpZFVwZGF0ZUJ1ZmZlcmVkQW1vdW50KCp0aGlzLCBidWZmZXJlZEFtb3VudCgpKTsK
KyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHRydWUpOworICAgIH0KKyAgICBzaXpl
X3QgYnl0ZXNXcml0dGVuID0gMDsKKyAgICBpZiAobV9zdGF0ZSA9PSBPcGVuKSB7CisgICAgICAg
IGlmIChhdXRvIHJlc3VsdCA9IHBsYXRmb3JtU2VuZEludGVybmFsKGRhdGEsIGxlbmd0aCkpCisg
ICAgICAgICAgICBieXRlc1dyaXR0ZW4gPSByZXN1bHQudmFsdWUoKTsKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKKyAgICB9CisgICAg
aWYgKG1fYnVmZmVyLnNpemUoKSArIGxlbmd0aCAtIGJ5dGVzV3JpdHRlbiA+IG1heEJ1ZmZlclNp
emUpIHsKKyAgICAgICAgLy8gRklYTUU6IHJlcG9ydCBlcnJvciB0byBpbmRpY2F0ZSB0aGF0IGJ1
ZmZlciBoYXMgbm8gbW9yZSBzcGFjZS4KKyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVy
KGZhbHNlKTsKKyAgICB9CisgICAgaWYgKGJ5dGVzV3JpdHRlbiA8IGxlbmd0aCkgeworICAgICAg
ICBtX2J1ZmZlci5hcHBlbmQoZGF0YSArIGJ5dGVzV3JpdHRlbiwgbGVuZ3RoIC0gYnl0ZXNXcml0
dGVuKTsKKyAgICAgICAgbV9jbGllbnQuZGlkVXBkYXRlQnVmZmVyZWRBbW91bnQoc3RhdGljX2Nh
c3Q8U29ja2V0U3RyZWFtSGFuZGxlJj4oKnRoaXMpLCBidWZmZXJlZEFtb3VudCgpKTsKKyAgICB9
CisgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHRydWUpOworfQorCitib29sIFNvY2tldFN0
cmVhbUhhbmRsZUltcGw6OnNlbmRQZW5kaW5nRGF0YSgpCit7CisgICAgaWYgKG1fc3RhdGUgIT0g
T3BlbiAmJiBtX3N0YXRlICE9IENsb3NpbmcpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBp
ZiAobV9idWZmZXIuaXNFbXB0eSgpKSB7CisgICAgICAgIGlmIChtX3N0YXRlID09IE9wZW4pCisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmIChtX3N0YXRlID09IENsb3Npbmcp
IHsKKyAgICAgICAgICAgIGRpc2Nvbm5lY3QoKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgfQorICAgIH0KKyAgICBib29sIHBlbmRpbmc7CisgICAgZG8geworICAgICAgICBh
dXRvIHJlc3VsdCA9IHBsYXRmb3JtU2VuZEludGVybmFsKG1fYnVmZmVyLmZpcnN0QmxvY2tEYXRh
KCksIG1fYnVmZmVyLmZpcnN0QmxvY2tTaXplKCkpOworICAgICAgICBpZiAoIXJlc3VsdCkKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgc2l6ZV90IGJ5dGVzV3JpdHRlbiA9IHJl
c3VsdC52YWx1ZSgpOworICAgICAgICBpZiAoIWJ5dGVzV3JpdHRlbikKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgcGVuZGluZyA9IGJ5dGVzV3JpdHRlbiAhPSBtX2J1ZmZlci5m
aXJzdEJsb2NrU2l6ZSgpOworICAgICAgICBBU1NFUlQobV9idWZmZXIuc2l6ZSgpIC0gYnl0ZXNX
cml0dGVuIDw9IG1heEJ1ZmZlclNpemUpOworICAgICAgICBtX2J1ZmZlci5jb25zdW1lKGJ5dGVz
V3JpdHRlbik7CisgICAgfSB3aGlsZSAoIXBlbmRpbmcgJiYgIW1fYnVmZmVyLmlzRW1wdHkoKSk7
CisgICAgbV9jbGllbnQuZGlkVXBkYXRlQnVmZmVyZWRBbW91bnQoc3RhdGljX2Nhc3Q8U29ja2V0
U3RyZWFtSGFuZGxlJj4oKnRoaXMpLCBidWZmZXJlZEFtb3VudCgpKTsKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKworc2l6ZV90IFNvY2tldFN0cmVhbUhhbmRsZUltcGw6OmJ1ZmZlcmVkQW1vdW50KCkK
K3sKKyAgICByZXR1cm4gbV9idWZmZXIuc2l6ZSgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVh
bUhhbmRsZUltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZUltcGwuaAkocmV2aXNpb24gMjE0MTA2KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJTZXNzaW9uSUQuaCIK
ICNpbmNsdWRlICJTb2NrZXRTdHJlYW1IYW5kbGUuaCIKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRy
Lmg+CisjaW5jbHVkZSA8d3RmL1N0cmVhbUJ1ZmZlci5oPgogCiB0eXBlZGVmIHN0cnVjdCBfX0NG
SFRUUE1lc3NhZ2UqIENGSFRUUE1lc3NhZ2VSZWY7CiAKQEAgLTUwLDggKzUxLDExIEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIH5Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsKCk7CiAKIHByaXZhdGU6Ci0g
ICAgc3RkOjpvcHRpb25hbDxzaXplX3Q+IHBsYXRmb3JtU2VuZChjb25zdCBjaGFyKiBkYXRhLCBz
aXplX3QgbGVuZ3RoKSBmaW5hbDsKKyAgICB2b2lkIHBsYXRmb3JtU2VuZChjb25zdCBjaGFyKiBk
YXRhLCBzaXplX3QgbGVuZ3RoLCBGdW5jdGlvbjx2b2lkKGJvb2wpPikgZmluYWw7CiAgICAgdm9p
ZCBwbGF0Zm9ybUNsb3NlKCkgZmluYWw7CisgICAgc2l6ZV90IGJ1ZmZlcmVkQW1vdW50KCkgZmlu
YWw7CisgICAgc3RkOjpvcHRpb25hbDxzaXplX3Q+IHBsYXRmb3JtU2VuZEludGVybmFsKGNvbnN0
IGNoYXIqLCBzaXplX3QpOworICAgIGJvb2wgc2VuZFBlbmRpbmdEYXRhKCk7CiAKICAgICBXRUJD
T1JFX0VYUE9SVCBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsKGNvbnN0IFVSTCYsIFNvY2tldFN0cmVh
bUhhbmRsZUNsaWVudCYsIFNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBjcmVkZW50aWFsUGFydGl0
aW9uKTsKICAgICB2b2lkIGNyZWF0ZVN0cmVhbXMoKTsKQEAgLTk3LDYgKzEwMSw5IEBAIHByaXZh
dGU6CiAgICAgUmV0YWluUHRyPENGVVJMUmVmPiBtX2h0dHBzVVJMOyAvLyB3cyhzKTogcmVwbGFj
ZWQgd2l0aCBodHRwczoKICAgICBTZXNzaW9uSUQgbV9zZXNzaW9uSUQ7CiAgICAgU3RyaW5nIG1f
Y3JlZGVudGlhbFBhcnRpdGlvbjsKKyAgICAKKyAgICBTdHJlYW1CdWZmZXI8Y2hhciwgMTAyNCAq
IDEwMjQ+IG1fYnVmZmVyOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBtYXhCdWZmZXJTaXpl
ID0gMTAwICogMTAyNCAqIDEwMjQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZUlt
cGxDRk5ldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ0ZOZXQuY3BwCShyZXZpc2lvbiAyMTQwNzMpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZUlt
cGxDRk5ldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY1Myw3ICs2NTMsNyBAQCBTb2NrZXRTdHJl
YW1IYW5kbGVJbXBsOjp+U29ja2V0U3RyZWFtSGFuCiAgICAgQVNTRVJUKCFtX3BhY1J1bkxvb3BT
b3VyY2UpOwogfQogCi1zdGQ6Om9wdGlvbmFsPHNpemVfdD4gU29ja2V0U3RyZWFtSGFuZGxlSW1w
bDo6cGxhdGZvcm1TZW5kKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpCitzdGQ6Om9w
dGlvbmFsPHNpemVfdD4gU29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6cGxhdGZvcm1TZW5kSW50ZXJu
YWwoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCkKIHsKICAgICBpZiAoIUNGV3JpdGVT
dHJlYW1DYW5BY2NlcHRCeXRlcyhtX3dyaXRlU3RyZWFtLmdldCgpKSkKICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVhbUhhbmRsZUltcGwuaAkocmV2aXNpb24g
MjEzOTYwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0
cmVhbUhhbmRsZUltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1
ZGUgPHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
ZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvU3RyZWFtQnVmZmVyLmg+CiAjaW5jbHVkZSA8d3Rm
L1RocmVhZGluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01Nyw4ICs1OCwxMSBAQCBw
dWJsaWM6CiBwcml2YXRlOgogICAgIFNvY2tldFN0cmVhbUhhbmRsZUltcGwoY29uc3QgVVJMJiwg
U29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50Jik7CiAKLSAgICBzdGQ6Om9wdGlvbmFsPHNpemVfdD4g
cGxhdGZvcm1TZW5kKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpIGZpbmFsOworICAg
IHZvaWQgcGxhdGZvcm1TZW5kKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgsIEZ1bmN0
aW9uPHZvaWQoYm9vbCk+KSBmaW5hbDsKICAgICB2b2lkIHBsYXRmb3JtQ2xvc2UoKSBmaW5hbDsK
KyAgICBzaXplX3QgYnVmZmVyZWRBbW91bnQoKSBmaW5hbDsKKyAgICBzdGQ6Om9wdGlvbmFsPHNp
emVfdD4gcGxhdGZvcm1TZW5kSW50ZXJuYWwoY29uc3QgY2hhciosIHNpemVfdCk7CisgICAgYm9v
bCBzZW5kUGVuZGluZ0RhdGEoKTsKIAogICAgIGJvb2wgcmVhZERhdGEoQ1VSTCopOwogICAgIGJv
b2wgc2VuZERhdGEoQ1VSTCopOwpAQCAtOTQsNiArOTgsOSBAQCBwcml2YXRlOgogICAgIExvY2sg
bV9tdXRleFJlY2VpdmU7CiAgICAgRGVxdWU8U29ja2V0RGF0YT4gbV9zZW5kRGF0YTsKICAgICBE
ZXF1ZTxTb2NrZXREYXRhPiBtX3JlY2VpdmVEYXRhOworCisgICAgU3RyZWFtQnVmZmVyPGNoYXIs
IDEwMjQgKiAxMDI0PiBtX2J1ZmZlcjsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbWF4QnVm
ZmVyU2l6ZSA9IDEwMCAqIDEwMjQgKiAxMDI0OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVh
bUhhbmRsZUltcGxDdXJsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlSW1wbEN1cmwuY3BwCShyZXZpc2lvbiAy
MTM5NjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU29ja2V0U3Ry
ZWFtSGFuZGxlSW1wbEN1cmwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Niw3ICs2Niw3IEBAIFNv
Y2tldFN0cmVhbUhhbmRsZUltcGw6On5Tb2NrZXRTdHJlYW1IYW4KICAgICBBU1NFUlQoIW1fd29y
a2VyVGhyZWFkKTsKIH0KIAotc3RkOjpvcHRpb25hbDxzaXplX3Q+IFNvY2tldFN0cmVhbUhhbmRs
ZUltcGw6OnBsYXRmb3JtU2VuZChjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKQorc3Rk
OjpvcHRpb25hbDxzaXplX3Q+IFNvY2tldFN0cmVhbUhhbmRsZUltcGw6OnBsYXRmb3JtU2VuZElu
dGVybmFsKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpCiB7CiAgICAgTE9HKE5ldHdv
cmssICJTb2NrZXRTdHJlYW1IYW5kbGUgJXAgcGxhdGZvcm1TZW5kIiwgdGhpcyk7CiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb2NrZXRTdHJlYW1IYW5kbGVJ
bXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3Vw
L1NvY2tldFN0cmVhbUhhbmRsZUltcGwuaAkocmV2aXNpb24gMjEzOTYwKQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvY2tldFN0cmVhbUhhbmRsZUltcGwuaAkod29y
a2luZyBjb3B5KQpAQCAtMzgsNiArMzgsNyBAQAogCiAjaW5jbHVkZSAiU2Vzc2lvbklELmgiCiAj
aW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvU3RyZWFtQnVmZmVyLmg+
CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBA
IC01NSw4ICs1NiwxMSBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFNvY2tldFN0cmVhbUhhbmRs
ZUltcGwoY29uc3QgVVJMJiwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50Jik7CiAKLSAgICBzdGQ6
Om9wdGlvbmFsPHNpemVfdD4gcGxhdGZvcm1TZW5kKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBs
ZW5ndGgpIGZpbmFsOworICAgIHZvaWQgcGxhdGZvcm1TZW5kKGNvbnN0IGNoYXIqIGRhdGEsIHNp
emVfdCBsZW5ndGgsIEZ1bmN0aW9uPHZvaWQoYm9vbCk+KSBmaW5hbDsKICAgICB2b2lkIHBsYXRm
b3JtQ2xvc2UoKSBmaW5hbDsKKyAgICBzaXplX3QgYnVmZmVyZWRBbW91bnQoKSBmaW5hbDsKKyAg
ICBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gcGxhdGZvcm1TZW5kSW50ZXJuYWwoY29uc3QgY2hhcios
IHNpemVfdCk7CisgICAgYm9vbCBzZW5kUGVuZGluZ0RhdGEoKTsKIAogICAgIHZvaWQgYmVnaW5X
YWl0aW5nRm9yU29ja2V0V3JpdGFiaWxpdHkoKTsKICAgICB2b2lkIHN0b3BXYWl0aW5nRm9yU29j
a2V0V3JpdGFiaWxpdHkoKTsKQEAgLTc2LDYgKzgwLDkgQEAgcHJpdmF0ZToKICAgICBHUmVmUHRy
PEdTb3VyY2U+IG1fd3JpdGVSZWFkeVNvdXJjZTsKICAgICBHUmVmUHRyPEdDYW5jZWxsYWJsZT4g
bV9jYW5jZWxsYWJsZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Y2hhcltdPiBtX3JlYWRCdWZmZXI7
CisKKyAgICBTdHJlYW1CdWZmZXI8Y2hhciwgMTAyNCAqIDEwMjQ+IG1fYnVmZmVyOworICAgIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCBtYXhCdWZmZXJTaXplID0gMTAwICogMTAyNCAqIDEwMjQ7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL3NvdXAvU29ja2V0U3RyZWFtSGFuZGxlSW1wbFNvdXAuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb2NrZXRTdHJlYW1IYW5k
bGVJbXBsU291cC5jcHAJKHJldmlzaW9uIDIxNDA5MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvc291cC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsU291cC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE5MCw3ICsxOTAsNyBAQCB2b2lkIFNvY2tldFN0cmVhbUhhbmRsZUltcGw6Ondy
aXRlUmVhZHkoCiAgICAgc2VuZFBlbmRpbmdEYXRhKCk7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8c2l6
ZV90PiBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpwbGF0Zm9ybVNlbmQoY29uc3QgY2hhciogZGF0
YSwgc2l6ZV90IGxlbmd0aCkKK3N0ZDo6b3B0aW9uYWw8c2l6ZV90PiBTb2NrZXRTdHJlYW1IYW5k
bGVJbXBsOjpwbGF0Zm9ybVNlbmRJbnRlcm5hbChjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVu
Z3RoKQogewogICAgIExPRyhOZXR3b3JrLCAiU29ja2V0U3RyZWFtSGFuZGxlICVwIHBsYXRmb3Jt
U2VuZCIsIHRoaXMpOwogICAgIGlmICghbV9vdXRwdXRTdHJlYW0gfHwgIWRhdGEpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>304807</attachid>
            <date>2017-03-17 12:11:36 -0700</date>
            <delta_ts>2017-03-17 13:15:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-169818-20170317121134.patch</filename>
            <type>text/plain</type>
            <size>21273</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxNDExMCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ1IEBACisyMDE3LTAzLTE3ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTWFrZSBTb2Nr
ZXRTdHJlYW1IYW5kbGUgdmlydHVhbCBmdW5jdGlvbnMgYXN5bmNocm9ub3VzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjk4MTgKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBjaGFuZ2UgaW4gYmVoYXZp
b3IuICBJbnN0ZWFkIG9mIHJldHVybmluZyBpbW1lZGlhdGVseSwgY2FsbCBhIGNvbXBsZXRpb24g
aGFuZGxlci4KKyAgICAgICAgVGhpcyBpcyBpbiBwcmVwYXJhdGlvbiBmb3IgbWFraW5nIHRoZW0g
dHJ1bHkgYXN5bmNocm9ub3VzLgorCisgICAgICAgIEkgc3RpbGwgbmVlZCB0byBiZSBhYmxlIHRv
IHN5bmNocm9ub3VzbHkgZ2V0IHRoZSBudW1iZXIgb2YgYnVmZmVyZWQgYnl0ZXMsIGJ1dCB0aGUK
KyAgICAgICAgYnVmZmVyIGl0c2VsZiB3aWxsIHNvb24gYmUgaW4gdGhlIE5ldHdvcmtQcm9jZXNz
IHdpdGggYSBuZXcgc3ViY2xhc3Mgb2YgU29ja2V0U3RyZWFtSGFuZGxlCisgICAgICAgIHRoYXQg
bWVzc2FnZXMgYWNyb3NzIElQQy4gIFRoZSBudW1iZXIgb2YgYnVmZmVyZWQgYnl0ZXMgd2lsbCBz
dGlsbCBiZSBzdG9yZWQgaW4gdGhlIFdlYlByb2Nlc3MsCisgICAgICAgIGFuZCB3aGVuIGl0IHVw
ZGF0ZXMsIHRoZSBtZXNzYWdlIGZyb20gU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50OjpkaWRVcGRh
dGVCdWZmZXJlZEFtb3VudCB3aWxsIHVwZGF0ZSBpdC4KKworICAgICAgICAqIENNYWtlTGlzdHMu
dHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGU6OnNlbmQpOgorICAgICAgICAoV2ViQ29yZTo6U29j
a2V0U3RyZWFtSGFuZGxlOjpjbG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpTb2NrZXRTdHJlYW1I
YW5kbGU6OnNlbmRQZW5kaW5nRGF0YSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9Tb2NrZXRTdHJlYW1IYW5kbGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNvY2tldFN0cmVh
bUhhbmRsZTo6YnVmZmVyZWRBbW91bnQpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6U29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6cGxhdGZvcm1TZW5kKToKKyAgICAgICAgKFdlYkNv
cmU6OlNvY2tldFN0cmVhbUhhbmRsZUltcGw6OnNlbmRQZW5kaW5nRGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpidWZmZXJlZEFtb3VudCk6CisgICAgICAg
IG1fYnVmZmVyIHdhcyBtb3ZlZCBmcm9tIFNvY2tldFN0cmVhbUhhbmRsZSB0byBTb2NrZXRTdHJl
YW1IYW5kbGVJbXBsLCBzbyBzb21lIG9mIHRoZSBsb2dpYyBtdXN0IG1vdmUgd2l0aCBpdC4KKyAg
ICAgICAgSSBtb3ZlZCBhcyBtdWNoIGxvZ2ljIHRoYXQgd2FzIHNoYXJlZCBpbiB0aGUgc3VwZXJj
bGFzcyB0byBhIG5ldyBzaGFyZWQgbG9jYXRpb24gZm9yIGNvZGUgc2hhcmVkIGFtb25nIHRoZSBz
dWJjbGFzcyBpbXBsZW1lbnRhdGlvbnMuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9T
b2NrZXRTdHJlYW1IYW5kbGVJbXBsLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9T
b2NrZXRTdHJlYW1IYW5kbGVJbXBsQ0ZOZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U29ja2V0
U3RyZWFtSGFuZGxlSW1wbDo6cGxhdGZvcm1TZW5kSW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29y
ZTo6U29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6cGxhdGZvcm1TZW5kKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5oOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ3VybC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpwbGF0Zm9ybVNl
bmRJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpw
bGF0Zm9ybVNlbmQpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9T
b2NrZXRTdHJlYW1IYW5kbGVJbXBsLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3Vw
L1NvY2tldFN0cmVhbUhhbmRsZUltcGxTb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNvY2tl
dFN0cmVhbUhhbmRsZUltcGw6OnBsYXRmb3JtU2VuZEludGVybmFsKToKKyAgICAgICAgKFdlYkNv
cmU6OlNvY2tldFN0cmVhbUhhbmRsZUltcGw6OnBsYXRmb3JtU2VuZCk6IERlbGV0ZWQuCisKIDIw
MTctMDMtMTcgIERhdmUgSHlhdHQgIDxoeWF0dEBhcHBsZS5jb20+CiAKICAgICAgICAgSW5pdGlh
bCBsZXR0ZXIgZG9lcyBub3QgcGFnaW5hdGUgcHJvcGVybHkuCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3Rz
LnR4dAkocmV2aXNpb24gMjE0MTEwKQorKysgU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJ
KHdvcmtpbmcgY29weSkKQEAgLTI0MjMsNiArMjQyMyw3IEBAIHNldChXZWJDb3JlX1NPVVJDRVMK
ICAgICBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwCiAgICAgcGxhdGZv
cm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3Jr
L1NvY2tldFN0cmVhbUhhbmRsZS5jcHAKKyAgICBwbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVh
bUhhbmRsZUltcGwuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9TeW5jaHJvbm91c0xvYWRlckNs
aWVudC5jcHAKIAogICAgIHBsYXRmb3JtL3NxbC9TUUxpdGVBdXRob3JpemVyLmNwcApJbmRleDog
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
cmV2aXNpb24gMjE0MTEwKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yNjQ3LDYgKzI2NDcsNyBAQAogCQk1QzQz
MDRCNjE5MUFFRjQ2MDAwRTJCQzAgLyogSlNFWFRTaGFkZXJUZXh0dXJlTE9ELmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzQzMDRCNDE5MUFFRjQ2MDAw
RTJCQzAgLyogSlNFWFRTaGFkZXJUZXh0dXJlTE9ELmggKi87IH07CiAJCTVDNTM4MUIyMUQ4N0Q0
QjIwMEUyRUJFNiAvKiBVUkxTZWFyY2hQYXJhbXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUM1MzgxQjAxRDg3RDQ1NzAwRTJFQkU2IC8qIFVSTFNl
YXJjaFBhcmFtcy5jcHAgKi87IH07CiAJCTVDNTM4MUI1MUQ4N0UwODcwMEUyRUJFNiAvKiBKU1VS
TFNlYXJjaFBhcmFtcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1QzUzODFCMzFEODdFMDgxMDBFMkVCRTYgLyogSlNVUkxTZWFyY2hQYXJhbXMuY3Bw
ICovOyB9OworCQk1QzY2OEU2NTFFN0M2QzQwMDBEMzJCM0IgLyogU29ja2V0U3RyZWFtSGFuZGxl
SW1wbC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
QzY2OEU2NDFFN0M2QzM1MDBEMzJCM0IgLyogU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5jcHAgKi87
IH07CiAJCTVDNjg4QUExMUQzODBCRjgwMDBCNTRGQSAvKiBUaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
QzY4OEFBMDFEMzgwNTA5MDAwQjU0RkEgLyogVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3Bw
ICovOyB9OwogCQk1QzY4OEFBMzFEMzgxNEJGMDAwQjU0RkEgLyogU29ja2V0UHJvdmlkZXIuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUM2ODhBQTIx
RDM4MTI2RjAwMEI1NEZBIC8qIFNvY2tldFByb3ZpZGVyLmNwcCAqLzsgfTsKIAkJNUM2RTY1NDIx
RDVDRUZCOTAwRjc4NjJFIC8qIFVSTFBhcnNlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzZFNjUzRjFENUNFREM5MDBGNzg2MkUgLyogVVJMUGFy
c2VyLmNwcCAqLzsgfTsKQEAgLTEwMzM4LDYgKzEwMzM5LDcgQEAKIAkJNUM1MzgxQjExRDg3RDQ1
NzAwRTJFQkU2IC8qIFVSTFNlYXJjaFBhcmFtcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBVUkxTZWFyY2hQYXJhbXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NUM1MzgxQjMxRDg3RTA4MTAwRTJFQkU2IC8qIEpTVVJMU2VhcmNoUGFyYW1zLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTVVJMU2VhcmNoUGFyYW1zLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM1MzgxQjQxRDg3RTA4MTAwRTJFQkU2IC8qIEpT
VVJMU2VhcmNoUGFyYW1zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTVVJM
U2VhcmNoUGFyYW1zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDNjY4RTY0MUU3
QzZDMzUwMEQzMkIzQiAvKiBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNvY2tldFN0cmVhbUhhbmRsZUltcGwuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzY4OEFBMDFEMzgwNTA5MDAwQjU0RkEgLyogVGhy
ZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1QzY4OEFBMjFEMzgxMjZGMDAwQjU0RkEgLyogU29ja2V0UHJvdmlkZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU29ja2V0UHJvdmlkZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzZFNjUzRjFENUNFREM5MDBGNzg2
MkUgLyogVVJMUGFyc2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFVSTFBhcnNlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xODc2Myw2ICsx
ODc2NSw3IEBACiAJCQkJNTEwRDRBMzAxMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUhh
bmRsZS5jcHAgKi8sCiAJCQkJNTEwRDRBMzExMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVh
bUhhbmRsZS5oICovLAogCQkJCTUxMEQ0QTMyMTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJl
YW1IYW5kbGVDbGllbnQuaCAqLywKKwkJCQk1QzY2OEU2NDFFN0M2QzM1MDBEMzJCM0IgLyogU29j
a2V0U3RyZWFtSGFuZGxlSW1wbC5jcHAgKi8sCiAJCQkJRTE4MDgxMTAxNkZDRjQyRTAwQjgwRDA3
IC8qIFN5bmNocm9ub3VzTG9hZGVyQ2xpZW50LmNwcCAqLywKIAkJCQlFMTgwODExNTE2RkNGOUNC
MDBCODBEMDcgLyogU3luY2hyb25vdXNMb2FkZXJDbGllbnQuaCAqLywKIAkJCSk7CkBAIC0zMDc1
Myw2ICszMDc1Niw3IEBACiAJCQkJMkQ1MDAyRjgxQjU2RDc4MTAwMjBBQUY3IC8qIERPTVBhdGgu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTlDNkU0RUIwRDc0NUUyQjAwNjQ0MkU5IC8qIERPTVBs
dWdpbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOUM2RTRFRjBENzQ1RTM4MDA2NDQyRTkgLyog
RE9NUGx1Z2luQXJyYXkuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNUM2NjhFNjUxRTdDNkM0MDAw
RDMyQjNCIC8qIFNvY2tldFN0cmVhbUhhbmRsZUltcGwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QkM1QTg2ODQwQzMzNjc2MDAwRUVBNjQ5IC8qIERPTVNlbGVjdGlvbi5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlDNTU2MTBGMTExQTcwNEVCMDBCODJEMjcgLyogRE9NU3RyaW5nTGlzdC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkxODg2MDRCMzBGMkU2NTRBMDAwQjY0NDMgLyogRE9NVGltZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Nv
Y2tldFN0cmVhbUhhbmRsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGUuY3BwCShyZXZpc2lvbiAyMTQxMTApCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM2LDggKzM2LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1j
b25zdCB1bnNpZ25lZCBidWZmZXJTaXplID0gMTAwICogMTAyNCAqIDEwMjQ7Ci0KIFNvY2tldFN0
cmVhbUhhbmRsZTo6U29ja2V0U3RyZWFtSGFuZGxlKGNvbnN0IFVSTCYgdXJsLCBTb2NrZXRTdHJl
YW1IYW5kbGVDbGllbnQmIGNsaWVudCkKICAgICA6IG1fdXJsKHVybCkKICAgICAsIG1fY2xpZW50
KGNsaWVudCkKQEAgLTU0LDMxICs1Miw3IEBAIHZvaWQgU29ja2V0U3RyZWFtSGFuZGxlOjpzZW5k
KGNvbnN0IGNoYXIKIHsKICAgICBpZiAobV9zdGF0ZSA9PSBDb25uZWN0aW5nIHx8IG1fc3RhdGUg
PT0gQ2xvc2luZykKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKLSAg
ICBpZiAoIW1fYnVmZmVyLmlzRW1wdHkoKSkgewotICAgICAgICBpZiAobV9idWZmZXIuc2l6ZSgp
ICsgbGVuZ3RoID4gYnVmZmVyU2l6ZSkgewotICAgICAgICAgICAgLy8gRklYTUU6IHJlcG9ydCBl
cnJvciB0byBpbmRpY2F0ZSB0aGF0IGJ1ZmZlciBoYXMgbm8gbW9yZSBzcGFjZS4KLSAgICAgICAg
ICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7Ci0gICAgICAgIH0KLSAgICAgICAg
bV9idWZmZXIuYXBwZW5kKGRhdGEsIGxlbmd0aCk7Ci0gICAgICAgIG1fY2xpZW50LmRpZFVwZGF0
ZUJ1ZmZlcmVkQW1vdW50KHN0YXRpY19jYXN0PFNvY2tldFN0cmVhbUhhbmRsZSY+KCp0aGlzKSwg
YnVmZmVyZWRBbW91bnQoKSk7Ci0gICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcih0cnVl
KTsKLSAgICB9Ci0gICAgc2l6ZV90IGJ5dGVzV3JpdHRlbiA9IDA7Ci0gICAgaWYgKG1fc3RhdGUg
PT0gT3BlbikgewotICAgICAgICBpZiAoYXV0byByZXN1bHQgPSBwbGF0Zm9ybVNlbmQoZGF0YSwg
bGVuZ3RoKSkKLSAgICAgICAgICAgIGJ5dGVzV3JpdHRlbiA9IHJlc3VsdC52YWx1ZSgpOwotICAg
ICAgICBlbHNlCi0gICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwot
ICAgIH0KLSAgICBpZiAobV9idWZmZXIuc2l6ZSgpICsgbGVuZ3RoIC0gYnl0ZXNXcml0dGVuID4g
YnVmZmVyU2l6ZSkgewotICAgICAgICAvLyBGSVhNRTogcmVwb3J0IGVycm9yIHRvIGluZGljYXRl
IHRoYXQgYnVmZmVyIGhhcyBubyBtb3JlIHNwYWNlLgotICAgICAgICByZXR1cm4gY29tcGxldGlv
bkhhbmRsZXIoZmFsc2UpOwotICAgIH0KLSAgICBpZiAoYnl0ZXNXcml0dGVuIDwgbGVuZ3RoKSB7
Ci0gICAgICAgIG1fYnVmZmVyLmFwcGVuZChkYXRhICsgYnl0ZXNXcml0dGVuLCBsZW5ndGggLSBi
eXRlc1dyaXR0ZW4pOwotICAgICAgICBtX2NsaWVudC5kaWRVcGRhdGVCdWZmZXJlZEFtb3VudChz
dGF0aWNfY2FzdDxTb2NrZXRTdHJlYW1IYW5kbGUmPigqdGhpcyksIGJ1ZmZlcmVkQW1vdW50KCkp
OwotICAgIH0KLSAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIodHJ1ZSk7CisgICAgcGxhdGZv
cm1TZW5kKGRhdGEsIGxlbmd0aCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCiB2
b2lkIFNvY2tldFN0cmVhbUhhbmRsZTo6Y2xvc2UoKQpAQCAtODYsNyArNjAsNyBAQCB2b2lkIFNv
Y2tldFN0cmVhbUhhbmRsZTo6Y2xvc2UoKQogICAgIGlmIChtX3N0YXRlID09IENsb3NlZCkKICAg
ICAgICAgcmV0dXJuOwogICAgIG1fc3RhdGUgPSBDbG9zaW5nOwotICAgIGlmICghbV9idWZmZXIu
aXNFbXB0eSgpKQorICAgIGlmIChidWZmZXJlZEFtb3VudCgpKQogICAgICAgICByZXR1cm47CiAg
ICAgZGlzY29ubmVjdCgpOwogfQpAQCAtOTksMzIgKzczLDQgQEAgdm9pZCBTb2NrZXRTdHJlYW1I
YW5kbGU6OmRpc2Nvbm5lY3QoKQogICAgIG1fc3RhdGUgPSBDbG9zZWQ7CiB9CiAKLWJvb2wgU29j
a2V0U3RyZWFtSGFuZGxlOjpzZW5kUGVuZGluZ0RhdGEoKQotewotICAgIGlmIChtX3N0YXRlICE9
IE9wZW4gJiYgbV9zdGF0ZSAhPSBDbG9zaW5nKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
aWYgKG1fYnVmZmVyLmlzRW1wdHkoKSkgewotICAgICAgICBpZiAobV9zdGF0ZSA9PSBPcGVuKQot
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBpZiAobV9zdGF0ZSA9PSBDbG9zaW5n
KSB7Ci0gICAgICAgICAgICBkaXNjb25uZWN0KCk7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgYm9vbCBwZW5kaW5nOwotICAgIGRvIHsKLSAgICAgICAg
YXV0byByZXN1bHQgPSBwbGF0Zm9ybVNlbmQobV9idWZmZXIuZmlyc3RCbG9ja0RhdGEoKSwgbV9i
dWZmZXIuZmlyc3RCbG9ja1NpemUoKSk7Ci0gICAgICAgIGlmICghcmVzdWx0KQotICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBzaXplX3QgYnl0ZXNXcml0dGVuID0gcmVzdWx0LnZh
bHVlKCk7Ci0gICAgICAgIGlmICghYnl0ZXNXcml0dGVuKQotICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgICAgICBwZW5kaW5nID0gYnl0ZXNXcml0dGVuICE9IG1fYnVmZmVyLmZpcnN0Qmxv
Y2tTaXplKCk7Ci0gICAgICAgIEFTU0VSVChtX2J1ZmZlci5zaXplKCkgLSBieXRlc1dyaXR0ZW4g
PD0gYnVmZmVyU2l6ZSk7Ci0gICAgICAgIG1fYnVmZmVyLmNvbnN1bWUoYnl0ZXNXcml0dGVuKTsK
LSAgICB9IHdoaWxlICghcGVuZGluZyAmJiAhbV9idWZmZXIuaXNFbXB0eSgpKTsKLSAgICBtX2Ns
aWVudC5kaWRVcGRhdGVCdWZmZXJlZEFtb3VudChzdGF0aWNfY2FzdDxTb2NrZXRTdHJlYW1IYW5k
bGUmPigqdGhpcyksIGJ1ZmZlcmVkQW1vdW50KCkpOwotICAgIHJldHVybiB0cnVlOwotfQotCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL1NvY2tldFN0cmVhbUhhbmRsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlLmgJKHJldmlzaW9uIDIxNDExMCkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDYgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAi
VVJMLmgiCi0jaW5jbHVkZSA8d3RmL1N0cmVhbUJ1ZmZlci5oPgogI2luY2x1ZGUgPHd0Zi9UaHJl
YWRTYWZlUmVmQ291bnRlZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00OCwxOCArNDcs
MTYgQEAgcHVibGljOgogICAgIHZvaWQgc2VuZChjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVu
Z3RoLCBGdW5jdGlvbjx2b2lkKGJvb2wpPik7CiAgICAgdm9pZCBjbG9zZSgpOyAvLyBEaXNjb25u
ZWN0IGFmdGVyIGFsbCBkYXRhIGluIGJ1ZmZlciBhcmUgc2VudC4KICAgICB2b2lkIGRpc2Nvbm5l
Y3QoKTsKLSAgICBzaXplX3QgYnVmZmVyZWRBbW91bnQoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZl
ci5zaXplKCk7IH0KKyAgICB2aXJ0dWFsIHNpemVfdCBidWZmZXJlZEFtb3VudCgpID0gMDsKIAog
cHJvdGVjdGVkOgogICAgIFNvY2tldFN0cmVhbUhhbmRsZShjb25zdCBVUkwmLCBTb2NrZXRTdHJl
YW1IYW5kbGVDbGllbnQmKTsKIAotICAgIGJvb2wgc2VuZFBlbmRpbmdEYXRhKCk7Ci0gICAgdmly
dHVhbCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gcGxhdGZvcm1TZW5kKGNvbnN0IGNoYXIqIGRhdGEs
IHNpemVfdCBsZW5ndGgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1TZW5kKGNvbnN0
IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgsIEZ1bmN0aW9uPHZvaWQoYm9vbCk+KSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtQ2xvc2UoKSA9IDA7CiAKICAgICBVUkwgbV91cmw7CiAg
ICAgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50JiBtX2NsaWVudDsKLSAgICBTdHJlYW1CdWZmZXI8
Y2hhciwgMTAyNCAqIDEwMjQ+IG1fYnVmZmVyOwogICAgIFNvY2tldFN0cmVhbVN0YXRlIG1fc3Rh
dGU7CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0
cmVhbUhhbmRsZUltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDk2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIlNvY2tldFN0cmVhbUhhbmRsZUltcGwuaCIKKworI2luY2x1ZGUg
IlNvY2tldFN0cmVhbUhhbmRsZUNsaWVudC5oIgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3ZvaWQgU29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6cGxh
dGZvcm1TZW5kKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgsIEZ1bmN0aW9uPHZvaWQo
Ym9vbCk+IGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGlmICghbV9idWZmZXIuaXNFbXB0eSgp
KSB7CisgICAgICAgIGlmIChtX2J1ZmZlci5zaXplKCkgKyBsZW5ndGggPiBtYXhCdWZmZXJTaXpl
KSB7CisgICAgICAgICAgICAvLyBGSVhNRTogcmVwb3J0IGVycm9yIHRvIGluZGljYXRlIHRoYXQg
YnVmZmVyIGhhcyBubyBtb3JlIHNwYWNlLgorICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25I
YW5kbGVyKGZhbHNlKTsKKyAgICAgICAgfQorICAgICAgICBtX2J1ZmZlci5hcHBlbmQoZGF0YSwg
bGVuZ3RoKTsKKyAgICAgICAgbV9jbGllbnQuZGlkVXBkYXRlQnVmZmVyZWRBbW91bnQoKnRoaXMs
IGJ1ZmZlcmVkQW1vdW50KCkpOworICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIodHJ1
ZSk7CisgICAgfQorICAgIHNpemVfdCBieXRlc1dyaXR0ZW4gPSAwOworICAgIGlmIChtX3N0YXRl
ID09IE9wZW4pIHsKKyAgICAgICAgaWYgKGF1dG8gcmVzdWx0ID0gcGxhdGZvcm1TZW5kSW50ZXJu
YWwoZGF0YSwgbGVuZ3RoKSkKKyAgICAgICAgICAgIGJ5dGVzV3JpdHRlbiA9IHJlc3VsdC52YWx1
ZSgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIo
ZmFsc2UpOworICAgIH0KKyAgICBpZiAobV9idWZmZXIuc2l6ZSgpICsgbGVuZ3RoIC0gYnl0ZXNX
cml0dGVuID4gbWF4QnVmZmVyU2l6ZSkgeworICAgICAgICAvLyBGSVhNRTogcmVwb3J0IGVycm9y
IHRvIGluZGljYXRlIHRoYXQgYnVmZmVyIGhhcyBubyBtb3JlIHNwYWNlLgorICAgICAgICByZXR1
cm4gY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOworICAgIH0KKyAgICBpZiAoYnl0ZXNXcml0dGVu
IDwgbGVuZ3RoKSB7CisgICAgICAgIG1fYnVmZmVyLmFwcGVuZChkYXRhICsgYnl0ZXNXcml0dGVu
LCBsZW5ndGggLSBieXRlc1dyaXR0ZW4pOworICAgICAgICBtX2NsaWVudC5kaWRVcGRhdGVCdWZm
ZXJlZEFtb3VudChzdGF0aWNfY2FzdDxTb2NrZXRTdHJlYW1IYW5kbGUmPigqdGhpcyksIGJ1ZmZl
cmVkQW1vdW50KCkpOworICAgIH0KKyAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIodHJ1ZSk7
Cit9CisKK2Jvb2wgU29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6c2VuZFBlbmRpbmdEYXRhKCkKK3sK
KyAgICBpZiAobV9zdGF0ZSAhPSBPcGVuICYmIG1fc3RhdGUgIT0gQ2xvc2luZykKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIGlmIChtX2J1ZmZlci5pc0VtcHR5KCkpIHsKKyAgICAgICAgaWYg
KG1fc3RhdGUgPT0gT3BlbikKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYg
KG1fc3RhdGUgPT0gQ2xvc2luZykgeworICAgICAgICAgICAgZGlzY29ubmVjdCgpOworICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorICAgIGJvb2wgcGVuZGluZzsK
KyAgICBkbyB7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gcGxhdGZvcm1TZW5kSW50ZXJuYWwobV9i
dWZmZXIuZmlyc3RCbG9ja0RhdGEoKSwgbV9idWZmZXIuZmlyc3RCbG9ja1NpemUoKSk7CisgICAg
ICAgIGlmICghcmVzdWx0KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBzaXpl
X3QgYnl0ZXNXcml0dGVuID0gcmVzdWx0LnZhbHVlKCk7CisgICAgICAgIGlmICghYnl0ZXNXcml0
dGVuKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBwZW5kaW5nID0gYnl0ZXNX
cml0dGVuICE9IG1fYnVmZmVyLmZpcnN0QmxvY2tTaXplKCk7CisgICAgICAgIEFTU0VSVChtX2J1
ZmZlci5zaXplKCkgLSBieXRlc1dyaXR0ZW4gPD0gbWF4QnVmZmVyU2l6ZSk7CisgICAgICAgIG1f
YnVmZmVyLmNvbnN1bWUoYnl0ZXNXcml0dGVuKTsKKyAgICB9IHdoaWxlICghcGVuZGluZyAmJiAh
bV9idWZmZXIuaXNFbXB0eSgpKTsKKyAgICBtX2NsaWVudC5kaWRVcGRhdGVCdWZmZXJlZEFtb3Vu
dChzdGF0aWNfY2FzdDxTb2NrZXRTdHJlYW1IYW5kbGUmPigqdGhpcyksIGJ1ZmZlcmVkQW1vdW50
KCkpOworICAgIHJldHVybiB0cnVlOworfQorCitzaXplX3QgU29ja2V0U3RyZWFtSGFuZGxlSW1w
bDo6YnVmZmVyZWRBbW91bnQoKQoreworICAgIHJldHVybiBtX2J1ZmZlci5zaXplKCk7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5oCShyZXZp
c2lvbiAyMTQxMTApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tl
dFN0cmVhbUhhbmRsZUltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsNyBAQAogI2lu
Y2x1ZGUgIlNlc3Npb25JRC5oIgogI2luY2x1ZGUgIlNvY2tldFN0cmVhbUhhbmRsZS5oIgogI2lu
Y2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYvU3RyZWFtQnVmZmVyLmg+CiAK
IHR5cGVkZWYgc3RydWN0IF9fQ0ZIVFRQTWVzc2FnZSogQ0ZIVFRQTWVzc2FnZVJlZjsKIApAQCAt
NTAsOCArNTEsMTEgQEAgcHVibGljOgogICAgIHZpcnR1YWwgflNvY2tldFN0cmVhbUhhbmRsZUlt
cGwoKTsKIAogcHJpdmF0ZToKLSAgICBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gcGxhdGZvcm1TZW5k
KGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpIGZpbmFsOworICAgIHZvaWQgcGxhdGZv
cm1TZW5kKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgsIEZ1bmN0aW9uPHZvaWQoYm9v
bCk+KSBmaW5hbDsKICAgICB2b2lkIHBsYXRmb3JtQ2xvc2UoKSBmaW5hbDsKKyAgICBzaXplX3Qg
YnVmZmVyZWRBbW91bnQoKSBmaW5hbDsKKyAgICBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gcGxhdGZv
cm1TZW5kSW50ZXJuYWwoY29uc3QgY2hhciosIHNpemVfdCk7CisgICAgYm9vbCBzZW5kUGVuZGlu
Z0RhdGEoKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIFNvY2tldFN0cmVhbUhhbmRsZUltcGwoY29u
c3QgVVJMJiwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50JiwgU2Vzc2lvbklELCBjb25zdCBTdHJp
bmcmIGNyZWRlbnRpYWxQYXJ0aXRpb24pOwogICAgIHZvaWQgY3JlYXRlU3RyZWFtcygpOwpAQCAt
OTcsNiArMTAxLDkgQEAgcHJpdmF0ZToKICAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IG1faHR0cHNV
Ukw7IC8vIHdzKHMpOiByZXBsYWNlZCB3aXRoIGh0dHBzOgogICAgIFNlc3Npb25JRCBtX3Nlc3Np
b25JRDsKICAgICBTdHJpbmcgbV9jcmVkZW50aWFsUGFydGl0aW9uOworICAgIAorICAgIFN0cmVh
bUJ1ZmZlcjxjaGFyLCAxMDI0ICogMTAyND4gbV9idWZmZXI7CisgICAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkIG1heEJ1ZmZlclNpemUgPSAxMDAgKiAxMDI0ICogMTAyNDsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2Yv
U29ja2V0U3RyZWFtSGFuZGxlSW1wbENGTmV0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDRk5ldC5jcHAJ
KHJldmlzaW9uIDIxNDExMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2Yv
U29ja2V0U3RyZWFtSGFuZGxlSW1wbENGTmV0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjUzLDcg
KzY1Myw3IEBAIFNvY2tldFN0cmVhbUhhbmRsZUltcGw6On5Tb2NrZXRTdHJlYW1IYW4KICAgICBB
U1NFUlQoIW1fcGFjUnVuTG9vcFNvdXJjZSk7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBT
b2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpwbGF0Zm9ybVNlbmQoY29uc3QgY2hhciogZGF0YSwgc2l6
ZV90IGxlbmd0aCkKK3N0ZDo6b3B0aW9uYWw8c2l6ZV90PiBTb2NrZXRTdHJlYW1IYW5kbGVJbXBs
OjpwbGF0Zm9ybVNlbmRJbnRlcm5hbChjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKQog
ewogICAgIGlmICghQ0ZXcml0ZVN0cmVhbUNhbkFjY2VwdEJ5dGVzKG1fd3JpdGVTdHJlYW0uZ2V0
KCkpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVhbUhhbmRsZUltcGwuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFu
ZGxlSW1wbC5oCShyZXZpc2lvbiAyMTQxMTApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC00
Miw2ICs0Miw3IEBACiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAjaW5jbHVkZSA8d3RmL0xvY2su
aD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9TdHJlYW1CdWZm
ZXIuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
QEAgLTU3LDggKzU4LDExIEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgU29ja2V0U3RyZWFtSGFu
ZGxlSW1wbChjb25zdCBVUkwmLCBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQmKTsKIAotICAgIHN0
ZDo6b3B0aW9uYWw8c2l6ZV90PiBwbGF0Zm9ybVNlbmQoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90
IGxlbmd0aCkgZmluYWw7CisgICAgdm9pZCBwbGF0Zm9ybVNlbmQoY29uc3QgY2hhciogZGF0YSwg
c2l6ZV90IGxlbmd0aCwgRnVuY3Rpb248dm9pZChib29sKT4pIGZpbmFsOwogICAgIHZvaWQgcGxh
dGZvcm1DbG9zZSgpIGZpbmFsOworICAgIHNpemVfdCBidWZmZXJlZEFtb3VudCgpIGZpbmFsOwor
ICAgIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBwbGF0Zm9ybVNlbmRJbnRlcm5hbChjb25zdCBjaGFy
Kiwgc2l6ZV90KTsKKyAgICBib29sIHNlbmRQZW5kaW5nRGF0YSgpOwogCiAgICAgYm9vbCByZWFk
RGF0YShDVVJMKik7CiAgICAgYm9vbCBzZW5kRGF0YShDVVJMKik7CkBAIC05NCw2ICs5OCw5IEBA
IHByaXZhdGU6CiAgICAgTG9jayBtX211dGV4UmVjZWl2ZTsKICAgICBEZXF1ZTxTb2NrZXREYXRh
PiBtX3NlbmREYXRhOwogICAgIERlcXVlPFNvY2tldERhdGE+IG1fcmVjZWl2ZURhdGE7CisKKyAg
ICBTdHJlYW1CdWZmZXI8Y2hhciwgMTAyNCAqIDEwMjQ+IG1fYnVmZmVyOworICAgIHN0YXRpYyBj
b25zdCB1bnNpZ25lZCBtYXhCdWZmZXJTaXplID0gMTAwICogMTAyNCAqIDEwMjQ7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlSW1wbEN1cmwuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBs
Q3VybC5jcHAJKHJldmlzaW9uIDIxNDExMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ3VybC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTY2LDcgKzY2LDcgQEAgU29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6flNvY2tldFN0cmVhbUhh
bgogICAgIEFTU0VSVCghbV93b3JrZXJUaHJlYWQpOwogfQogCi1zdGQ6Om9wdGlvbmFsPHNpemVf
dD4gU29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6cGxhdGZvcm1TZW5kKGNvbnN0IGNoYXIqIGRhdGEs
IHNpemVfdCBsZW5ndGgpCitzdGQ6Om9wdGlvbmFsPHNpemVfdD4gU29ja2V0U3RyZWFtSGFuZGxl
SW1wbDo6cGxhdGZvcm1TZW5kSW50ZXJuYWwoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0
aCkKIHsKICAgICBMT0coTmV0d29yaywgIlNvY2tldFN0cmVhbUhhbmRsZSAlcCBwbGF0Zm9ybVNl
bmQiLCB0aGlzKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3Vw
L1NvY2tldFN0cmVhbUhhbmRsZUltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL3NvdXAvU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5oCShyZXZpc2lvbiAy
MTQxMTApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU29ja2V0U3Ry
ZWFtSGFuZGxlSW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw2ICszOCw3IEBACiAKICNpbmNs
dWRlICJTZXNzaW9uSUQuaCIKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUg
PHd0Zi9TdHJlYW1CdWZmZXIuaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKQEAgLTU1LDggKzU2LDExIEBAIHB1YmxpYzoKIHByaXZhdGU6CiAg
ICAgU29ja2V0U3RyZWFtSGFuZGxlSW1wbChjb25zdCBVUkwmLCBTb2NrZXRTdHJlYW1IYW5kbGVD
bGllbnQmKTsKIAotICAgIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBwbGF0Zm9ybVNlbmQoY29uc3Qg
Y2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCkgZmluYWw7CisgICAgdm9pZCBwbGF0Zm9ybVNlbmQo
Y29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCwgRnVuY3Rpb248dm9pZChib29sKT4pIGZp
bmFsOwogICAgIHZvaWQgcGxhdGZvcm1DbG9zZSgpIGZpbmFsOworICAgIHNpemVfdCBidWZmZXJl
ZEFtb3VudCgpIGZpbmFsOworICAgIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBwbGF0Zm9ybVNlbmRJ
bnRlcm5hbChjb25zdCBjaGFyKiwgc2l6ZV90KTsKKyAgICBib29sIHNlbmRQZW5kaW5nRGF0YSgp
OwogCiAgICAgdm9pZCBiZWdpbldhaXRpbmdGb3JTb2NrZXRXcml0YWJpbGl0eSgpOwogICAgIHZv
aWQgc3RvcFdhaXRpbmdGb3JTb2NrZXRXcml0YWJpbGl0eSgpOwpAQCAtNzYsNiArODAsOSBAQCBw
cml2YXRlOgogICAgIEdSZWZQdHI8R1NvdXJjZT4gbV93cml0ZVJlYWR5U291cmNlOwogICAgIEdS
ZWZQdHI8R0NhbmNlbGxhYmxlPiBtX2NhbmNlbGxhYmxlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxj
aGFyW10+IG1fcmVhZEJ1ZmZlcjsKKworICAgIFN0cmVhbUJ1ZmZlcjxjaGFyLCAxMDI0ICogMTAy
ND4gbV9idWZmZXI7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG1heEJ1ZmZlclNpemUgPSAx
MDAgKiAxMDI0ICogMTAyNDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBs
U291cC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9z
b3VwL1NvY2tldFN0cmVhbUhhbmRsZUltcGxTb3VwLmNwcAkocmV2aXNpb24gMjE0MTEwKQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvY2tldFN0cmVhbUhhbmRsZUlt
cGxTb3VwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTkwLDcgKzE5MCw3IEBAIHZvaWQgU29ja2V0
U3RyZWFtSGFuZGxlSW1wbDo6d3JpdGVSZWFkeSgKICAgICBzZW5kUGVuZGluZ0RhdGEoKTsKIH0K
IAotc3RkOjpvcHRpb25hbDxzaXplX3Q+IFNvY2tldFN0cmVhbUhhbmRsZUltcGw6OnBsYXRmb3Jt
U2VuZChjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKQorc3RkOjpvcHRpb25hbDxzaXpl
X3Q+IFNvY2tldFN0cmVhbUhhbmRsZUltcGw6OnBsYXRmb3JtU2VuZEludGVybmFsKGNvbnN0IGNo
YXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpCiB7CiAgICAgTE9HKE5ldHdvcmssICJTb2NrZXRTdHJl
YW1IYW5kbGUgJXAgcGxhdGZvcm1TZW5kIiwgdGhpcyk7CiAgICAgaWYgKCFtX291dHB1dFN0cmVh
bSB8fCAhZGF0YSkK
</data>
<flag name="review"
          id="326298"
          type_id="1"
          status="+"
          setter="aestes"
    />
          </attachment>
      

    </bug>

</bugzilla>