<?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>215535</bug_id>
          
          <creation_ts>2020-08-15 00:56:42 -0700</creation_ts>
          <short_desc>Use std::call_once + LazyNeverDestroyed to initialize complex data structures</short_desc>
          <delta_ts>2020-08-15 21:40:51 -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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>annulen</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>mark.lam</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1680598</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-08-15 00:56:42 -0700</bug_when>
    <thetext>Use std::call_once + LazyNeverDestroyed to initialize complex data structures</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1680602</commentid>
    <comment_count>1</comment_count>
      <attachid>406657</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-08-15 01:08:00 -0700</bug_when>
    <thetext>Created attachment 406657
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1680603</commentid>
    <comment_count>2</comment_count>
      <attachid>406658</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-08-15 01:11:45 -0700</bug_when>
    <thetext>Created attachment 406658
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1680604</commentid>
    <comment_count>3</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-08-15 01:12:36 -0700</bug_when>
    <thetext>&lt;rdar://problem/66774266&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1680605</commentid>
    <comment_count>4</comment_count>
      <attachid>406659</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-08-15 01:18:14 -0700</bug_when>
    <thetext>Created attachment 406659
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1680606</commentid>
    <comment_count>5</comment_count>
      <attachid>406659</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-08-15 01:34:16 -0700</bug_when>
    <thetext>Comment on attachment 406659
Patch

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

r=me if EWS bots are happy.

&gt; Source/WTF/wtf/Logger.cpp:35
&gt; +Lock loggerObserverLock { };

Don&apos;t need the { }.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1680607</commentid>
    <comment_count>6</comment_count>
      <attachid>406660</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-08-15 01:42:36 -0700</bug_when>
    <thetext>Created attachment 406660
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1680635</commentid>
    <comment_count>7</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-08-15 11:41:02 -0700</bug_when>
    <thetext>Committed r265735: &lt;https://trac.webkit.org/changeset/265735&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1680637</commentid>
    <comment_count>8</comment_count>
      <attachid>406660</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-08-15 12:00:53 -0700</bug_when>
    <thetext>Comment on attachment 406660
Patch

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

&gt; Source/WTF/wtf/Language.cpp:87
&gt; -    static NeverDestroyed&lt;Vector&lt;String&gt;&gt; override;
&gt; +    static LazyNeverDestroyed&lt;Vector&lt;String&gt;&gt; override;
&gt; +    static std::once_flag onceKey;
&gt; +    std::call_once(onceKey, [&amp;] {
&gt; +        override.construct();
&gt; +    });
&gt;      return override;

This doesn&apos;t seem like a useful change. The reference counts on the strings aren’t thread safe either. Same might apply for some of the other examples in this patch, but this one is clear cut case. Unless I am missing something?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1680644</commentid>
    <comment_count>9</comment_count>
      <attachid>406660</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-08-15 13:11:02 -0700</bug_when>
    <thetext>Comment on attachment 406660
Patch

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

&gt;&gt; Source/WTF/wtf/Language.cpp:87
&gt;&gt;      return override;
&gt; 
&gt; This doesn&apos;t seem like a useful change. The reference counts on the strings aren’t thread safe either. Same might apply for some of the other examples in this patch, but this one is clear cut case. Unless I am missing something?

The goal of this patch is fixing &lt;rdar://problem/66774266&gt; (RunLoop). So the other part is mechanical change.
I changed all `NeverDestroyed&lt;ComplexData&gt;` code in WTF mechanically to prevent the above type of issues.
If some of them are proven that this is not thread-related, I think we can change it to MainThreadNeverDestroyed&lt;&gt; etc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1680661</commentid>
    <comment_count>10</comment_count>
      <attachid>406660</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-08-15 21:40:51 -0700</bug_when>
    <thetext>Comment on attachment 406660
Patch

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

&gt;&gt;&gt; Source/WTF/wtf/Language.cpp:87
&gt;&gt;&gt;      return override;
&gt;&gt; 
&gt;&gt; This doesn&apos;t seem like a useful change. The reference counts on the strings aren’t thread safe either. Same might apply for some of the other examples in this patch, but this one is clear cut case. Unless I am missing something?
&gt; 
&gt; The goal of this patch is fixing &lt;rdar://problem/66774266&gt; (RunLoop). So the other part is mechanical change.
&gt; I changed all `NeverDestroyed&lt;ComplexData&gt;` code in WTF mechanically to prevent the above type of issues.
&gt; If some of them are proven that this is not thread-related, I think we can change it to MainThreadNeverDestroyed&lt;&gt; etc.

Filed in https://bugs.webkit.org/show_bug.cgi?id=215546</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>406657</attachid>
            <date>2020-08-15 01:08:00 -0700</date>
            <delta_ts>2020-08-15 01:11:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215535-20200815010759.patch</filename>
            <type>text/plain</type>
            <size>23494</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY1NzI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGE0Yzg5NTEwNTFhZDNkZTVmYzkyOTIz
Nzc2ODBmOTM0NjdkNmQ4NTQuLjYzMGZlMDUwOTA1ZTcyYTcyM2VhMzUyMTZlODQwNDAzYzdjY2My
ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNTYgQEAKKzIwMjAtMDgtMTUgIFl1c3VrZSBTdXp1a2kgIDx5dXN1
a2VzdXp1a2lAc2xvd3N0YXJ0Lm9yZz4KKworICAgICAgICBVc2Ugc3RkOjpjYWxsX29uY2UgKyBM
YXp5TmV2ZXJEZXN0cm95ZWQgdG8gaW5pdGlhbGl6ZSBjb21wbGV4IGRhdGEgc3RydWN0dXJlcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE1NTM1Cisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS82Njc3NDI2Nj4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBOZXZlckRlc3Ryb3llZDw+IGlzIG5vdCB0aHJlYWQt
c2FmZSBpbiBEYXJ3aW4gYnVpbGQgc2luY2UgaXQgaXMgbm90IHVzaW5nIEMrKzExIHRocmVhZC1z
YWZlIHN0YXRpYyB2YXJpYWJsZSBzZW1hbnRpY3MuCisgICAgICAgIFRoaXMgcGF0Y2ggdXNlcyBM
YXp5TmV2ZXJEZXN0cm95ZWQgYW5kIGNhbGxfb25jZSB0byBpbml0aWFsaXplIGNvbXBsZXggZGF0
YSBzdHJ1Y3R1cmVzIHNvIHRoYXQgd2UgY2FuIGVuc3VyZSB0aGV5IGFyZQorICAgICAgICBpbml0
aWFsaXplZCBhdG9taWNhbGx5LgorCisgICAgICAgIFdlIGFsc28gbW92ZSBzb21lIG9mIGBzaW5n
bGV0b25gIGRlZmluaXRpb25zIGZyb20gaGVhZGVycyB0byBjcHAgZmlsZXMuIFRoaXMgaXMgaW1w
b3J0YW50IHNpbmNlIHRoaXMgZW5zdXJlcyB0aGF0IHNpbmdsZXRvbgorICAgICAgICBpcyBvbmx5
IG9uZSBpbnN0YW5jZSB3aGljaCBpcyBnZW5lcmF0ZWQgaW4gb25lIHRyYW5zbGF0aW9uIHVuaXQu
CisKKyAgICAgICAgKiBXVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiB3
dGYvQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogd3RmL0Zhc3RNYWxsb2MuY3BwOgorICAgICAg
ICAoV1RGOjpNYWxsb2NDYWxsVHJhY2tlcjo6c2luZ2xldG9uKToKKyAgICAgICAgKiB3dGYvTGFu
Z3VhZ2UuY3BwOgorICAgICAgICAoV1RGOjpvYnNlcnZlck1hcCk6CisgICAgICAgIChXVEY6OnBy
ZWZlcnJlZExhbmd1YWdlc092ZXJyaWRlKToKKyAgICAgICAgKiB3dGYvTG9nZ2VyLmNwcDoKKyAg
ICAgICAgKFdURjo6TG9nZ2VyOjpvYnNlcnZlcnMpOgorICAgICAgICAqIHd0Zi9Mb2dnZXIuaDoK
KyAgICAgICAgKFdURjo6TG9nZ2VyOjpvYnNlcnZlckxvY2spOgorICAgICAgICAoV1RGOjpMb2dn
ZXI6Om9ic2VydmVycyk6IERlbGV0ZWQuCisgICAgICAgICogd3RmL01lbW9yeVByZXNzdXJlSGFu
ZGxlci5jcHA6CisgICAgICAgIChXVEY6Ok1lbW9yeVByZXNzdXJlSGFuZGxlcjo6c2luZ2xldG9u
KToKKyAgICAgICAgKiB3dGYvTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmg6CisgICAgICAgICogd3Rm
L1J1bkxvb3AuY3BwOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpjdXJyZW50KToKKyAgICAgICAg
KiB3dGYvVGhyZWFkaW5nLmNwcDoKKyAgICAgICAgKFdURjo6VGhyZWFkOjppbml0aWFsaXplSW5U
aHJlYWQpOgorICAgICAgICAqIHd0Zi9VUkwuY3BwOgorICAgICAgICAoV1RGOjphYm91dEJsYW5r
VVJMKToKKyAgICAgICAgKFdURjo6YWJvdXRTcmNEb2NVUkwpOgorICAgICAgICAqIHd0Zi9jZi9M
YW5ndWFnZUNGLmNwcDoKKyAgICAgICAgKFdURjo6cHJlZmVycmVkTGFuZ3VhZ2VzKToKKyAgICAg
ICAgKiB3dGYvY29jb2EvTlNVUkxFeHRyYXMubW06CisgICAgICAgIChXVEY6OnJhbmdlT2ZVUkxT
Y2hlbWUpOgorICAgICAgICAqIHd0Zi90ZXh0L0xpbmVCcmVha0l0ZXJhdG9yUG9vbElDVS5jcHA6
IENvcGllZCBmcm9tIFNvdXJjZS9XVEYvd3RmL0xvZ2dlci5jcHAuCisgICAgICAgIChXVEY6Okxp
bmVCcmVha0l0ZXJhdG9yUG9vbDo6c2hhcmVkUG9vbCk6CisgICAgICAgICogd3RmL3RleHQvTGlu
ZUJyZWFrSXRlcmF0b3JQb29sSUNVLmg6CisgICAgICAgIChXVEY6OkxpbmVCcmVha0l0ZXJhdG9y
UG9vbDo6c2hhcmVkUG9vbCk6IERlbGV0ZWQuCisgICAgICAgICogd3RmL3RleHQvU3RyaW5nVmll
dy5jcHA6CisgICAgICAgICogd3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuY3BwOgorICAgICAg
ICAoV1RGOjpUZXh0QnJlYWtJdGVyYXRvckNhY2hlOjpzaW5nbGV0b24pOgorICAgICAgICAqIHd0
Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmg6CisgICAgICAgIChXVEY6OlRleHRCcmVha0l0ZXJh
dG9yQ2FjaGU6OnNpbmdsZXRvbik6IERlbGV0ZWQuCisgICAgICAgICogd3RmL3RocmVhZHMvU2ln
bmFscy5jcHA6CisgICAgICAgIChXVEY6OmFjdGl2ZVRocmVhZHMpOgorCiAyMDIwLTA4LTExICBX
ZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFRleHQgaW5w
dXQgYXV0b2NvcnJlY3Q9Im9mZiIgYXR0cmlidXRlIGlnbm9yZWQgb24gTWFjCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dURi9X
VEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAxNGJhMDRjMDQ3YTQxZDlkNWEzZDY0
YzJlODgxZTQwZDAwYzM5ZDE1Li4yODdmN2JmNTZkYjE4MTk5YzEyZmE5MjY0MDYzNzUwNGE0ODA1
YzU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE3OCw2
ICsxNzgsNyBAQAogCQlFMzhENkUyNzFGNTUyMkUzMDBBNzVDQzQgLyogU3RyaW5nQnVpbGRlckpT
T04uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM4
RDZFMjYxRjU1MjJFMzAwQTc1Q0M0IC8qIFN0cmluZ0J1aWxkZXJKU09OLmNwcCAqLzsgfTsKIAkJ
RTM5MkZBMjcyMkU5MkJGRjAwRUNEQzczIC8qIFJlc291cmNlVXNhZ2VDb2NvYS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzkyRkEyNjIyRTkyQkZG
MDBFQ0RDNzMgLyogUmVzb3VyY2VVc2FnZUNvY29hLmNwcCAqLzsgfTsKIAkJRTNBMzJCQzQxRkM4
MzBFMjAwN0Q3RTc2IC8qIEpTVmFsdWVNYWxsb2MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNBMzJCQzIxRkM4MzBFMjAwN0Q3RTc2IC8qIEpTVmFs
dWVNYWxsb2MuY3BwICovOyB9OworCQlFM0I4RTQxRDI0RTdDRTkyMDAzNjU1RDggLyogTGluZUJy
ZWFrSXRlcmF0b3JQb29sSUNVLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEUzQjhFNDFDMjRFN0NFOTIwMDM2NTVEOCAvKiBMaW5lQnJlYWtJdGVyYXRv
clBvb2xJQ1UuY3BwICovOyB9OwogCQlFM0JFMDlBNzI0QTU4NTREMDA5REYyQjQgLyogSUNVSGVs
cGVycy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
M0JFMDlBNjI0QTU4NTQ1MDA5REYyQjQgLyogSUNVSGVscGVycy5jcHAgKi87IH07CiAJCUU0QTBB
RDM5MUE5NjI0NTUwMDUzNkRGNiAvKiBXb3JrUXVldWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTRBMEFEMzcxQTk2MjQ1NTAwNTM2REY2IC8qIFdv
cmtRdWV1ZS5jcHAgKi87IH07CiAJCUU0QTBBRDNEMUE5NjI1M0MwMDUzNkRGNiAvKiBXb3JrUXVl
dWVDb2NvYS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFNEEwQUQzQzFBOTYyNTNDMDA1MzZERjYgLyogV29ya1F1ZXVlQ29jb2EuY3BwICovOyB9OwpA
QCAtNzI4LDYgKzcyOSw3IEBACiAJCUUzOTJGQTI2MjJFOTJCRkYwMEVDREM3MyAvKiBSZXNvdXJj
ZVVzYWdlQ29jb2EuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVz
b3VyY2VVc2FnZUNvY29hLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTNBMzJC
QzIxRkM4MzBFMjAwN0Q3RTc2IC8qIEpTVmFsdWVNYWxsb2MuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSlNWYWx1ZU1hbGxvYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUUzQTMyQkMzMUZDODMwRTIwMDdEN0U3NiAvKiBKU1ZhbHVlTWFsbG9jLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTVmFsdWVNYWxsb2MuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTNCOEU0MUMyNEU3Q0U5MjAwMzY1NUQ4IC8qIExpbmVC
cmVha0l0ZXJhdG9yUG9vbElDVS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBMaW5lQnJlYWtJdGVyYXRvclBvb2xJQ1UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlFM0JFMDlBNjI0QTU4NTQ1MDA5REYyQjQgLyogSUNVSGVscGVycy5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBJQ1VIZWxwZXJzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRTNDRjc2OTAyMTE1RDZCQTAwOTFERTQ4IC8qIENvbXBhY3RQb2ludGVyVHVwbGUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29tcGFjdFBvaW50ZXJUdXBsZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0UxNTgyNTFFQURBNTNDMDA0QTA3OUQgLyogU3lz
dGVtRnJlZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTeXN0ZW1GcmVlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMzgzLDYgKzEzODUsNyBAQAogCQkJCTUw
REUzNUY0MjE1QkIwMTUwMEI5NzlDNyAvKiBFeHRlcm5hbFN0cmluZ0ltcGwuaCAqLywKIAkJCQky
NjE0N0IwODE1RERDQ0RDMDBEREI5MDcgLyogSW50ZWdlclRvU3RyaW5nQ29udmVyc2lvbi5oICov
LAogCQkJCTkzQUM5MUE3MTg5NDJGQzQwMDI0NDkzOSAvKiBMQ2hhci5oICovLAorCQkJCUUzQjhF
NDFDMjRFN0NFOTIwMDM2NTVEOCAvKiBMaW5lQnJlYWtJdGVyYXRvclBvb2xJQ1UuY3BwICovLAog
CQkJCTFDMTgxQzgxMUQzMDc5N0MwMEY1RkExNiAvKiBMaW5lQnJlYWtJdGVyYXRvclBvb2xJQ1Uu
aCAqLywKIAkJCQlDMkJDRkM1MzFGNjIxRjNGMDBDOTIyMkMgLyogTGluZUVuZGluZy5jcHAgKi8s
CiAJCQkJQzJCQ0ZDNTQxRjYyMUYzRjAwQzkyMjJDIC8qIExpbmVFbmRpbmcuaCAqLywKQEAgLTE2
ODEsNiArMTY4NCw3IEBACiAJCQkJQzJCQ0ZDNDAxRjYxRDEzMDAwQzkyMjJDIC8qIExhbmd1YWdl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUMyQkNGQzQyMUY2MUQ2MTYwMEM5MjIyQyAvKiBMYW5n
dWFnZUNGLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFDNTAzQkU2MjNBQUUwQUUwMDcyRTY2QiAv
KiBMYW5ndWFnZUNvY29hLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJRTNCOEU0MUQyNEU3Q0U5MjAw
MzY1NUQ4IC8qIExpbmVCcmVha0l0ZXJhdG9yUG9vbElDVS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlDMkJDRkM1NTFGNjIxRjNGMDBDOTIyMkMgLyogTGluZUVuZGluZy5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkwRkUxNjQ2QTFCNkZGQzk2MDA0MDBFN0MgLyogTG9jay5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkwRjYwRjMyRjFERkNCRDFCMDA0MTZENkMgLyogTG9ja2VkUHJpbnRTdHJlYW0uY3Bw
IGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4
dCBiL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CmluZGV4IDU2NGNhOTFkOWU2NTc5MjJk
ZjIyMTc5YzMzNWMwZmVhODJlNjBkY2EuLjEwOWIwZDlmN2MyN2M2MTVhZWJmZTViNTZhNWQyNWZj
MzY4NGNmZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CisrKyBi
L1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CkBAIC00NzYsNiArNDc2LDcgQEAgc2V0KFdU
Rl9TT1VSQ0VTCiAgICAgdGV4dC9CYXNlNjQuY3BwCiAgICAgdGV4dC9DU3RyaW5nLmNwcAogICAg
IHRleHQvRXh0ZXJuYWxTdHJpbmdJbXBsLmNwcAorICAgIHRleHQvTGluZUJyZWFrSXRlcmF0b3JQ
b29sSUNVLmNwcAogICAgIHRleHQvTGluZUVuZGluZy5jcHAKICAgICB0ZXh0L1N0cmluZ0J1ZmZl
ci5jcHAKICAgICB0ZXh0L1N0cmluZ0J1aWxkZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9GYXN0TWFsbG9jLmNwcCBiL1NvdXJjZS9XVEYvd3RmL0Zhc3RNYWxsb2MuY3BwCmluZGV4
IDgzNGIxOGU4MDhjYjBlZjllZTM2N2IwZGExMDI3YzAyYTc2OTA2Y2UuLjRmMWYxNDZkMTA1Mjg0
MGNlNzIxZDVmMmFhYjZlNWM1ZmFlMmNlNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0Zh
c3RNYWxsb2MuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL0Zhc3RNYWxsb2MuY3BwCkBAIC0zNDAs
NyArMzQwLDExIEBAIGNsYXNzIE1hbGxvY0NhbGxUcmFja2VyIHsKIE1hbGxvY0NhbGxUcmFja2Vy
JiBNYWxsb2NDYWxsVHJhY2tlcjo6c2luZ2xldG9uKCkKIHsKICAgICBBdm9pZFJlY29yZGluZ1Nj
b3BlIGF2b2lkUmVjb3JkaW5nOwotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxNYWxsb2NDYWxs
VHJhY2tlcj4gdHJhY2tlcjsKKyAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1hbGxvY0Nh
bGxUcmFja2VyPiB0cmFja2VyOworICAgIHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7CisgICAgc3Rk
OjpjYWxsX29uY2Uob25jZUtleSwgWyZdIHsKKyAgICAgICAgdHJhY2tlci5jb25zdHJ1Y3QoKTsK
KyAgICB9KTsKICAgICByZXR1cm4gdHJhY2tlcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvTGFuZ3VhZ2UuY3BwIGIvU291cmNlL1dURi93dGYvTGFuZ3VhZ2UuY3BwCmluZGV4IGFm
OWMwN2E3NzZkYzZlN2U1MGUxNjRkNGZkZWJhMjM1MjE4M2Y3NDIuLmE5YWQxOTEwZDNmYjY2ZDAz
YjcyZmVkMmRhMDE2YWMzNWE1MmQyNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0xhbmd1
YWdlLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9MYW5ndWFnZS5jcHAKQEAgLTQxLDcgKzQxLDEx
IEBAIHN0YXRpYyBMb2NrIHVzZXJQcmVmZXJyZWRMYW5ndWFnZXNNdXRleDsKIHR5cGVkZWYgSGFz
aE1hcDx2b2lkKiwgTGFuZ3VhZ2VDaGFuZ2VPYnNlcnZlckZ1bmN0aW9uPiBPYnNlcnZlck1hcDsK
IHN0YXRpYyBPYnNlcnZlck1hcCYgb2JzZXJ2ZXJNYXAoKQogewotICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxPYnNlcnZlck1hcD4gbWFwOworICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8
T2JzZXJ2ZXJNYXA+IG1hcDsKKyAgICBzdGQ6Om9uY2VfZmxhZyBvbmNlS2V5OworICAgIHN0ZDo6
Y2FsbF9vbmNlKG9uY2VLZXksIFsmXSB7CisgICAgICAgIG1hcC5jb25zdHJ1Y3QoKTsKKyAgICB9
KTsKICAgICByZXR1cm4gbWFwLmdldCgpOwogfQogCkBAIC03NSw3ICs3OSwxMSBAQCBTdHJpbmcg
ZGVmYXVsdExhbmd1YWdlKCkKIAogc3RhdGljIFZlY3RvcjxTdHJpbmc+JiBwcmVmZXJyZWRMYW5n
dWFnZXNPdmVycmlkZSgpCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFZlY3RvcjxTdHJp
bmc+PiBvdmVycmlkZTsKKyAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPFZlY3RvcjxTdHJp
bmc+PiBvdmVycmlkZTsKKyAgICBzdGQ6Om9uY2VfZmxhZyBvbmNlS2V5OworICAgIHN0ZDo6Y2Fs
bF9vbmNlKG9uY2VLZXksIFsmXSB7CisgICAgICAgIG92ZXJyaWRlLmNvbnN0cnVjdCgpOworICAg
IH0pOwogICAgIHJldHVybiBvdmVycmlkZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvTG9nZ2VyLmNwcCBiL1NvdXJjZS9XVEYvd3RmL0xvZ2dlci5jcHAKaW5kZXggN2ZmMTIzMDMw
ZGU1MDcxMDkzMjhmYjUwNWFiMzFkMzhlNGUxNGRhNi4uNmQ5YmJiYTJiMjg1MTgzMmVhZjZmMDY1
M2RmY2FkYzRhOGIxOGIxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvTG9nZ2VyLmNwcAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi9Mb2dnZXIuY3BwCkBAIC0yNiwxMSArMjYsMTQgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJMb2dnZXIuaCIKIAorI2luY2x1ZGUgPG11dGV4Pgog
I2luY2x1ZGUgPHd0Zi9IZXhOdW1iZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KIAogbmFtZXNwYWNlIFdURiB7CiAKK0xvY2sgbG9nZ2VyT2JzZXJ2ZXJMb2NrIHsgfTsKKwog
U3RyaW5nIExvZ2dlcjo6TG9nU2l0ZUlkZW50aWZpZXI6OnRvU3RyaW5nKCkgY29uc3QKIHsKICAg
ICBpZiAoY2xhc3NOYW1lKQpAQCAtNDMsNCArNDYsMTQgQEAgU3RyaW5nIExvZ0FyZ3VtZW50PGNv
bnN0IHZvaWQqPjo6dG9TdHJpbmcoY29uc3Qgdm9pZCogYXJndW1lbnQpCiAgICAgcmV0dXJuIG1h
a2VTdHJpbmcoJygnLCBoZXgocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGFyZ3VtZW50KSks
ICcpJyk7CiB9CiAKK1ZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPExvZ2dlcjo6T2JzZXJ2
ZXI+PiYgTG9nZ2VyOjpvYnNlcnZlcnMoKQoreworICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95
ZWQ8VmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8T2JzZXJ2ZXI+Pj4gb2JzZXJ2ZXJzOwor
ICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlS2V5OworICAgIHN0ZDo6Y2FsbF9vbmNlKG9u
Y2VLZXksIFsmXSB7CisgICAgICAgIG9ic2VydmVycy5jb25zdHJ1Y3QoKTsKKyAgICB9KTsKKyAg
ICByZXR1cm4gb2JzZXJ2ZXJzOworfQorCiB9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL0xvZ2dlci5oIGIvU291cmNlL1dURi93dGYvTG9nZ2VyLmgKaW5kZXgg
NjNjMWMzOWExMWEzNzU0YTI1ZTc4YzE2N2ZlNjA2ZWFmYjk4NzcwYS4uOWI5MzEwNmFkMThiYjZj
NmZhNTEzZTllNTAxZjBlZjEwYTU5MzAyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvTG9n
Z2VyLmgKKysrIGIvU291cmNlL1dURi93dGYvTG9nZ2VyLmgKQEAgLTExMiw2ICsxMTIsOCBAQCBz
dHJ1Y3QgQ29uc29sZUxvZ1ZhbHVlPEFyZ3VtZW50LCBmYWxzZT4gewogICAgIH0KIH07CiAKK2V4
dGVybiBMb2NrIGxvZ2dlck9ic2VydmVyTG9jazsKKwogY2xhc3MgTG9nZ2VyIDogcHVibGljIFRo
cmVhZFNhZmVSZWZDb3VudGVkPExvZ2dlcj4gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKExv
Z2dlcik7CiBwdWJsaWM6CkBAIC0zNTksMTYgKzM2MSwxMSBAQCBjbGFzcyBMb2dnZXIgOiBwdWJs
aWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8TG9nZ2VyPiB7CiAgICAgICAgICAgICBvYnNlcnZlci5k
aWRMb2dNZXNzYWdlKGNoYW5uZWwsIGxldmVsLCB7IENvbnNvbGVMb2dWYWx1ZTxBcmd1bWVudD46
OnRvVmFsdWUoYXJndW1lbnRzKS4uLiB9KTsKICAgICB9CiAKLSAgICBzdGF0aWMgVmVjdG9yPHN0
ZDo6cmVmZXJlbmNlX3dyYXBwZXI8T2JzZXJ2ZXI+PiYgb2JzZXJ2ZXJzKCkKLSAgICB7Ci0gICAg
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxP
YnNlcnZlcj4+PiBvYnNlcnZlcnM7Ci0gICAgICAgIHJldHVybiBvYnNlcnZlcnM7Ci0gICAgfQor
ICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBw
ZXI8T2JzZXJ2ZXI+PiYgb2JzZXJ2ZXJzKCk7CiAKICAgICBzdGF0aWMgTG9jayYgb2JzZXJ2ZXJM
b2NrKCkKICAgICB7Ci0gICAgICAgIHN0YXRpYyBMb2NrIG9ic2VydmVyTG9jazsKLSAgICAgICAg
cmV0dXJuIG9ic2VydmVyTG9jazsKKyAgICAgICAgcmV0dXJuIGxvZ2dlck9ic2VydmVyTG9jazsK
ICAgICB9CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvTWVtb3J5UHJlc3N1cmVIYW5k
bGVyLmNwcCBiL1NvdXJjZS9XVEYvd3RmL01lbW9yeVByZXNzdXJlSGFuZGxlci5jcHAKaW5kZXgg
ZmE3NzI0ZDQwZDM5ODU2Y2Q3ZjJkYWU3ZjE0MWFlZWZjOWFjMWZmOS4uZmU5YzlhNTE3Y2YyMWUx
OWI2ZGRlM2Y3ZGY4ZjQ2MDFmZWZmNzJmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvTWVt
b3J5UHJlc3N1cmVIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9NZW1vcnlQcmVzc3Vy
ZUhhbmRsZXIuY3BwCkBAIC00OCw3ICs0OCwxMSBAQCBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBN
ZW1vcnlQcmVzc3VyZUhhbmRsZXI6OlJlbGllZkxvZ2dlcjo6c19sb2dnaW5nRW5hYmxlZCA9CiAK
IE1lbW9yeVByZXNzdXJlSGFuZGxlciYgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpzaW5nbGV0b24o
KQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxNZW1vcnlQcmVzc3VyZUhhbmRsZXI+IG1l
bW9yeVByZXNzdXJlSGFuZGxlcjsKKyAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1lbW9y
eVByZXNzdXJlSGFuZGxlcj4gbWVtb3J5UHJlc3N1cmVIYW5kbGVyOworICAgIHN0YXRpYyBzdGQ6
Om9uY2VfZmxhZyBvbmNlS2V5OworICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsmXSB7Cisg
ICAgICAgIG1lbW9yeVByZXNzdXJlSGFuZGxlci5jb25zdHJ1Y3QoKTsKKyAgICB9KTsKICAgICBy
ZXR1cm4gbWVtb3J5UHJlc3N1cmVIYW5kbGVyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuaCBiL1NvdXJjZS9XVEYvd3RmL01lbW9yeVByZXNz
dXJlSGFuZGxlci5oCmluZGV4IDY0NTk4MmM1NzMyMmU0YzRkNTAzOTU5OGY2MmUwNGU4MzA2NDlh
MjcuLmNlNWIyODMzNjNhMzFjZTdlNGIwMjgzYTg4YTk5ZDNhYTFjYWQ5ODkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL01lbW9yeVByZXNzdXJlSGFuZGxlci5oCisrKyBiL1NvdXJjZS9XVEYv
d3RmL01lbW9yeVByZXNzdXJlSGFuZGxlci5oCkBAIC01OCw3ICs1OCw3IEBAIHR5cGVkZWYgV1RG
OjpGdW5jdGlvbjx2b2lkKENyaXRpY2FsLCBTeW5jaHJvbm91cyk+IExvd01lbW9yeUhhbmRsZXI7
CiAKIGNsYXNzIE1lbW9yeVByZXNzdXJlSGFuZGxlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7Ci0gICAgZnJpZW5kIGNsYXNzIFdURjo6TmV2ZXJEZXN0cm95ZWQ8TWVtb3J5UHJlc3N1
cmVIYW5kbGVyPjsKKyAgICBmcmllbmQgY2xhc3MgV1RGOjpMYXp5TmV2ZXJEZXN0cm95ZWQ8TWVt
b3J5UHJlc3N1cmVIYW5kbGVyPjsKIHB1YmxpYzoKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3Rh
dGljIE1lbW9yeVByZXNzdXJlSGFuZGxlciYgc2luZ2xldG9uKCk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL1J1bkxvb3AuY3BwIGIvU291cmNlL1dURi93dGYvUnVuTG9vcC5jcHAKaW5k
ZXggMzJiMjFhM2JhZDM5ODI4OGRmMDM5NTEwMjViMWNjMTUzNTczM2RjMC4uYzg1OGExMTZmZTJk
NDRhNmVlMTVhZDVjN2VmNTNkNzAwZGYwYjVkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
UnVuTG9vcC5jcHAKKysrIGIvU291cmNlL1dURi93dGYvUnVuTG9vcC5jcHAKQEAgLTYwLDcgKzYw
LDExIEBAIHZvaWQgUnVuTG9vcDo6aW5pdGlhbGl6ZU1haW4oKQogCiBSdW5Mb29wJiBSdW5Mb29w
OjpjdXJyZW50KCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VGhyZWFkU3BlY2lmaWM8
SG9sZGVyPj4gcnVuTG9vcEhvbGRlcjsKKyAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPFRo
cmVhZFNwZWNpZmljPEhvbGRlcj4+IHJ1bkxvb3BIb2xkZXI7CisgICAgc3RhdGljIHN0ZDo6b25j
ZV9mbGFnIG9uY2VLZXk7CisgICAgc3RkOjpjYWxsX29uY2Uob25jZUtleSwgWyZdIHsKKyAgICAg
ICAgcnVuTG9vcEhvbGRlci5jb25zdHJ1Y3QoKTsKKyAgICB9KTsKICAgICByZXR1cm4gcnVuTG9v
cEhvbGRlci5nZXQoKS0+cnVuTG9vcCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi9UaHJlYWRpbmcuY3BwIGIvU291cmNlL1dURi93dGYvVGhyZWFkaW5nLmNwcAppbmRleCBhNWYz
YzU3Y2ZkM2QwMmRjNmFkOWEyMzEyZjliMjNmMDk0NWJhMGQzLi4zMzFjYjNlM2YxMGEwZDk4OTQy
MzIzMTg2MGVhYzdjNTQwMWRkZmNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRp
bmcuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZy5jcHAKQEAgLTg3LDcgKzg3LDEx
IEBAIHN0cnVjdCBUaHJlYWQ6Ok5ld1RocmVhZENvbnRleHQgOiBwdWJsaWMgVGhyZWFkU2FmZVJl
ZkNvdW50ZWQ8TmV3VGhyZWFkQ29udGV4dD4KIAogSGFzaFNldDxUaHJlYWQqPiYgVGhyZWFkOjph
bGxUaHJlYWRzKGNvbnN0IExvY2tIb2xkZXImKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxIYXNoU2V0PFRocmVhZCo+PiBhbGxUaHJlYWRzOworICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0
cm95ZWQ8SGFzaFNldDxUaHJlYWQqPj4gYWxsVGhyZWFkczsKKyAgICBzdGF0aWMgc3RkOjpvbmNl
X2ZsYWcgb25jZUtleTsKKyAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbJl0geworICAgICAg
ICBhbGxUaHJlYWRzLmNvbnN0cnVjdCgpOworICAgIH0pOwogICAgIHJldHVybiBhbGxUaHJlYWRz
OwogfQogCkBAIC0xMzQsNyArMTM4LDExIEBAIHZvaWQgVGhyZWFkOjppbml0aWFsaXplSW5UaHJl
YWQoKQogI2lmIFVTRShXRUJfVEhSRUFEKQogICAgIC8vIE9uIGlPUywgb25lIEF0b21TdHJpbmdU
YWJsZSBpcyBzaGFyZWQgYmV0d2VlbiB0aGUgbWFpbiBVSSB0aHJlYWQgYW5kIHRoZSBXZWJUaHJl
YWQuCiAgICAgaWYgKGlzV2ViVGhyZWFkKCkgfHwgaXNVSVRocmVhZCgpKSB7Ci0gICAgICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9tU3RyaW5nVGFibGU+IHNoYXJlZFN0cmluZ1RhYmxlOwor
ICAgICAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPEF0b21TdHJpbmdUYWJsZT4gc2hhcmVk
U3RyaW5nVGFibGU7CisgICAgICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlS2V5OworICAg
ICAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbJl0geworICAgICAgICAgICAgc2hhcmVkU3Ry
aW5nVGFibGUuY29uc3RydWN0KCk7CisgICAgICAgIH0pOwogICAgICAgICBtX2N1cnJlbnRBdG9t
U3RyaW5nVGFibGUgPSAmc2hhcmVkU3RyaW5nVGFibGUuZ2V0KCk7CiAgICAgfQogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9VUkwuY3BwIGIvU291cmNlL1dURi93dGYvVVJMLmNw
cAppbmRleCA2NTMzOGNmZDc3ZDQ2N2I1YzM2MmVlZGFlMTMyZWMzYWQwZTMzZjdhLi5mMGFlN2Qz
NGYyNWRjNmQzNDUyZTYxMDhmNWE5NWIzYWFlMDg5OWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L3d0Zi9VUkwuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL1VSTC5jcHAKQEAgLTgyMCwyMiArODIw
LDIyIEBAIGJvb2wgcHJvdG9jb2xJc0luSFRUUEZhbWlseShTdHJpbmdWaWV3IHVybCkKIAogY29u
c3QgVVJMJiBhYm91dEJsYW5rVVJMKCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VVJM
PiBzdGF0aWNCbGFua1VSTDsKKyAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPFVSTD4gc3Rh
dGljQmxhbmtVUkw7CiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOwogICAgIHN0
ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBbJl0gewogICAgICAgICBzdGF0aWMgY29uc3RleHByIGNv
bnN0IGNoYXIqIGFib3V0QmxhbmsgPSAiYWJvdXQ6YmxhbmsiOwotICAgICAgICBzdGF0aWNCbGFu
a1VSTC5nZXQoKSA9IFVSTChVUkwoKSwgU3RyaW5nSW1wbDo6Y3JlYXRlU3RhdGljU3RyaW5nSW1w
bChhYm91dEJsYW5rLCBzdHJsZW4oYWJvdXRCbGFuaykpKTsKKyAgICAgICAgc3RhdGljQmxhbmtV
UkwuY29uc3RydWN0KFVSTCgpLCBTdHJpbmdJbXBsOjpjcmVhdGVTdGF0aWNTdHJpbmdJbXBsKGFi
b3V0QmxhbmssIHN0cmxlbihhYm91dEJsYW5rKSkpOwogICAgIH0pOwogICAgIHJldHVybiBzdGF0
aWNCbGFua1VSTDsKIH0KIAogY29uc3QgVVJMJiBhYm91dFNyY0RvY1VSTCgpCiB7Ci0gICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPFVSTD4gc3RhdGljU3JjRG9jVVJMOworICAgIHN0YXRpYyBMYXp5
TmV2ZXJEZXN0cm95ZWQ8VVJMPiBzdGF0aWNTcmNEb2NVUkw7CiAgICAgc3RhdGljIHN0ZDo6b25j
ZV9mbGFnIG9uY2VGbGFnOwogICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBbJl0gewogICAg
ICAgICBzdGF0aWMgY29uc3RleHByIGNvbnN0IGNoYXIqIGFib3V0U3JjRG9jID0gImFib3V0OnNy
Y2RvYyI7Ci0gICAgICAgIHN0YXRpY1NyY0RvY1VSTC5nZXQoKSA9IFVSTChVUkwoKSwgU3RyaW5n
SW1wbDo6Y3JlYXRlU3RhdGljU3RyaW5nSW1wbChhYm91dFNyY0RvYywgc3RybGVuKGFib3V0U3Jj
RG9jKSkpOworICAgICAgICBzdGF0aWNTcmNEb2NVUkwuY29uc3RydWN0KFVSTCgpLCBTdHJpbmdJ
bXBsOjpjcmVhdGVTdGF0aWNTdHJpbmdJbXBsKGFib3V0U3JjRG9jLCBzdHJsZW4oYWJvdXRTcmNE
b2MpKSk7CiAgICAgfSk7CiAgICAgcmV0dXJuIHN0YXRpY1NyY0RvY1VSTDsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL2NmL0xhbmd1YWdlQ0YuY3BwIGIvU291cmNlL1dURi93dGYvY2Yv
TGFuZ3VhZ2VDRi5jcHAKaW5kZXggMTIzOTZkYWQ0NmZlNDM4ODUxNGE1ODczOTNhNjhmNjU3MTRh
NjBiYy4uNDI1YWViZThmM2VkYWQyNTRhYWYyNDU4ODBlNTgxNGNjZDliY2M2ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvY2YvTGFuZ3VhZ2VDRi5jcHAKKysrIGIvU291cmNlL1dURi93dGYv
Y2YvTGFuZ3VhZ2VDRi5jcHAKQEAgLTQyLDcgKzQyLDExIEBAIHN0YXRpYyBMb2NrIHByZWZlcnJl
ZExhbmd1YWdlc011dGV4OwogCiBzdGF0aWMgVmVjdG9yPFN0cmluZz4mIHByZWZlcnJlZExhbmd1
YWdlcygpCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFZlY3RvcjxTdHJpbmc+PiBsYW5n
dWFnZXM7CisgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxWZWN0b3I8U3RyaW5nPj4gbGFu
Z3VhZ2VzOworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlS2V5OworICAgIHN0ZDo6Y2Fs
bF9vbmNlKG9uY2VLZXksIFsmXSB7CisgICAgICAgIGxhbmd1YWdlcy5jb25zdHJ1Y3QoKTsKKyAg
ICB9KTsKICAgICByZXR1cm4gbGFuZ3VhZ2VzOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9jb2NvYS9OU1VSTEV4dHJhcy5tbSBiL1NvdXJjZS9XVEYvd3RmL2NvY29hL05TVVJMRXh0
cmFzLm1tCmluZGV4IGE0NWQ4YzExYzdlZWE1ZWQ2OTRjZDY1ZmYyMGVlOTYyNWM1OTYzYWQuLjIw
OWVhNWI4NjY0YTFiYTMxOTJmOWVjMjM1MzllMzBjZTJjOTdhODIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL2NvY29hL05TVVJMRXh0cmFzLm1tCisrKyBiL1NvdXJjZS9XVEYvd3RmL2NvY29h
L05TVVJMRXh0cmFzLm1tCkBAIC0yOSw2ICsyOSw3IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNp
bXBvcnQgIk5TVVJMRXh0cmFzLmgiCiAKKyNpbXBvcnQgPG11dGV4PgogI2ltcG9ydCA8d3RmL0Z1
bmN0aW9uLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAjaW1wb3J0IDx3dGYvVVJMSGVs
cGVycy5oPgpAQCAtNDI0LDggKzQyNSwxMiBAQCBOU1JhbmdlIHJhbmdlT2ZVUkxTY2hlbWUoTlNT
dHJpbmcgKnN0cmluZykKICAgICAgICAgIGV2ZW4gbmVlZCB0byBlbmZvcmNlIHRoZSBjaGFyYWN0
ZXIgc2V0IGhlcmUuCiAgICAgICAgICAqLwogICAgICAgICBOU1N0cmluZyAqYWNjZXB0YWJsZUNo
YXJhY3RlcnMgPSBAIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFy
c3R1dnd4eXowMTIzNDU2Nzg5Ky4tIjsKLSAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJl
dGFpblB0cjxOU0NoYXJhY3RlclNldD4+IEludmVyc2VTY2hlbWVDaGFyYWN0ZXJTZXQoW1tOU0No
YXJhY3RlclNldCBjaGFyYWN0ZXJTZXRXaXRoQ2hhcmFjdGVyc0luU3RyaW5nOmFjY2VwdGFibGVD
aGFyYWN0ZXJzXSBpbnZlcnRlZFNldF0pOwotICAgICAgICBOU1JhbmdlIGlsbGVnYWxzID0gW3N0
cmluZyByYW5nZU9mQ2hhcmFjdGVyRnJvbVNldDpJbnZlcnNlU2NoZW1lQ2hhcmFjdGVyU2V0Lmdl
dCgpLmdldCgpIG9wdGlvbnM6MCByYW5nZTpzY2hlbWVdOworICAgICAgICBzdGF0aWMgTGF6eU5l
dmVyRGVzdHJveWVkPFJldGFpblB0cjxOU0NoYXJhY3RlclNldD4+IGludmVyc2VTY2hlbWVDaGFy
YWN0ZXJTZXQ7CisgICAgICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlS2V5OworICAgICAg
ICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbJl0geworICAgICAgICAgICAgaW52ZXJzZVNjaGVt
ZUNoYXJhY3RlclNldC5jb25zdHJ1Y3QoW1tOU0NoYXJhY3RlclNldCBjaGFyYWN0ZXJTZXRXaXRo
Q2hhcmFjdGVyc0luU3RyaW5nOmFjY2VwdGFibGVDaGFyYWN0ZXJzXSBpbnZlcnRlZFNldF0pOwor
ICAgICAgICB9KTsKKyAgICAgICAgTlNSYW5nZSBpbGxlZ2FscyA9IFtzdHJpbmcgcmFuZ2VPZkNo
YXJhY3RlckZyb21TZXQ6aW52ZXJzZVNjaGVtZUNoYXJhY3RlclNldC5nZXQoKS5nZXQoKSBvcHRp
b25zOjAgcmFuZ2U6c2NoZW1lXTsKICAgICAgICAgaWYgKGlsbGVnYWxzLmxvY2F0aW9uID09IE5T
Tm90Rm91bmQpCiAgICAgICAgICAgICByZXR1cm4gc2NoZW1lOwogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL3RleHQvTGluZUJyZWFrSXRlcmF0b3JQb29sSUNVLmNwcCBiL1NvdXJj
ZS9XVEYvd3RmL3RleHQvTGluZUJyZWFrSXRlcmF0b3JQb29sSUNVLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4w
ZDk5MGI5OTUwNDg5NDQ2ZWFhMGZlYmUwNzZmMjZjN2NjZjA1NjJjCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dURi93dGYvdGV4dC9MaW5lQnJlYWtJdGVyYXRvclBvb2xJQ1UuY3BwCkBAIC0w
LDAgKzEsNDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvTGluZUJyZWFrSXRlcmF0
b3JQb29sSUNVLmg+CisKK25hbWVzcGFjZSBXVEYgeworCitMaW5lQnJlYWtJdGVyYXRvclBvb2wm
IExpbmVCcmVha0l0ZXJhdG9yUG9vbDo6c2hhcmVkUG9vbCgpCit7CisgICAgc3RhdGljIExhenlO
ZXZlckRlc3Ryb3llZDxXVEY6OlRocmVhZFNwZWNpZmljPExpbmVCcmVha0l0ZXJhdG9yUG9vbD4+
IHBvb2w7CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7CisgICAgc3RkOjpjYWxs
X29uY2Uob25jZUtleSwgWyZdIHsKKyAgICAgICAgcG9vbC5jb25zdHJ1Y3QoKTsKKyAgICB9KTsK
KyAgICByZXR1cm4gKnBvb2wuZ2V0KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9MaW5lQnJlYWtJdGVyYXRvclBvb2xJQ1UuaCBiL1Nv
dXJjZS9XVEYvd3RmL3RleHQvTGluZUJyZWFrSXRlcmF0b3JQb29sSUNVLmgKaW5kZXggYzc2ZTlk
YzllZDU2MzliMmY4ODc4NDUyNzYyNzhiMDM3NzFmMmU0OC4uZjZkMDRmMGVjMjgxY2U4ZmI1MDcz
MDgxZDcyYzllNjA0YmIyMTdjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9MaW5l
QnJlYWtJdGVyYXRvclBvb2xJQ1UuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0xpbmVCcmVh
a0l0ZXJhdG9yUG9vbElDVS5oCkBAIC00MSwxMSArNDEsNyBAQCBjbGFzcyBMaW5lQnJlYWtJdGVy
YXRvclBvb2wgewogcHVibGljOgogICAgIExpbmVCcmVha0l0ZXJhdG9yUG9vbCgpID0gZGVmYXVs
dDsKIAotICAgIHN0YXRpYyBMaW5lQnJlYWtJdGVyYXRvclBvb2wmIHNoYXJlZFBvb2woKQotICAg
IHsKLSAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFdURjo6VGhyZWFkU3BlY2lmaWM8TGlu
ZUJyZWFrSXRlcmF0b3JQb29sPj4gcG9vbDsKLSAgICAgICAgcmV0dXJuICpwb29sLmdldCgpOwot
ICAgIH0KKyAgICBzdGF0aWMgTGluZUJyZWFrSXRlcmF0b3JQb29sJiBzaGFyZWRQb29sKCk7CiAK
ICAgICBzdGF0aWMgQXRvbVN0cmluZyBtYWtlTG9jYWxlV2l0aEJyZWFrS2V5d29yZChjb25zdCBB
dG9tU3RyaW5nJiBsb2NhbGUsIExpbmVCcmVha0l0ZXJhdG9yTW9kZSBtb2RlKQogICAgIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5jcHAgYi9Tb3VyY2UvV1RG
L3d0Zi90ZXh0L1N0cmluZ1ZpZXcuY3BwCmluZGV4IDQxZmM3YTZiNzlkNWJmYmJmZDAwMzFlMGQ5
MjVkNGUxOTQ3MGRlYzMuLjgwZjgwY2I3NzdmZGUzNzg3YThhYTcxMmY1Njc5ZjlhMWE5YTFkMTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5jcHAKKysrIGIvU291
cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmNwcApAQCAtMzc1LDcgKzM3NSwxMSBAQCBzdGF0
aWMgTG9jayB1bmRlcmx5aW5nU3RyaW5nc011dGV4OwogCiBzdGF0aWMgSGFzaE1hcDxjb25zdCBT
dHJpbmdJbXBsKiwgU3RyaW5nVmlldzo6VW5kZXJseWluZ1N0cmluZyo+JiB1bmRlcmx5aW5nU3Ry
aW5ncygpCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8Y29uc3QgU3RyaW5n
SW1wbCosIFN0cmluZ1ZpZXc6OlVuZGVybHlpbmdTdHJpbmcqPj4gbWFwOworICAgIHN0YXRpYyBM
YXp5TmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxjb25zdCBTdHJpbmdJbXBsKiwgU3RyaW5nVmlldzo6
VW5kZXJseWluZ1N0cmluZyo+PiBtYXA7CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VL
ZXk7CisgICAgc3RkOjpjYWxsX29uY2Uob25jZUtleSwgWyZdIHsKKyAgICAgICAgbWFwLmNvbnN0
cnVjdCgpOworICAgIH0pOwogICAgIHJldHVybiBtYXA7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuY3BwIGIvU291cmNlL1dURi93dGYvdGV4
dC9UZXh0QnJlYWtJdGVyYXRvci5jcHAKaW5kZXggM2I0MzFhZTI1MDBhZTMyYzk0ZmZlOTQ5MTRl
YmQ1MDgxY2JiZjBkMy4uYzJjNWIyNjM4ODY3MjM1Njg5Mjk0MWZjNmMzYzc0MmM5ZDM2ODBiOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5jcHAKKysr
IGIvU291cmNlL1dURi93dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5jcHAKQEAgLTMxLDYgKzMx
LDE2IEBACiAKIG5hbWVzcGFjZSBXVEYgewogCitUZXh0QnJlYWtJdGVyYXRvckNhY2hlJiBUZXh0
QnJlYWtJdGVyYXRvckNhY2hlOjpzaW5nbGV0b24oKQoreworICAgIHN0YXRpYyBMYXp5TmV2ZXJE
ZXN0cm95ZWQ8VGV4dEJyZWFrSXRlcmF0b3JDYWNoZT4gY2FjaGU7CisgICAgc3RhdGljIHN0ZDo6
b25jZV9mbGFnIG9uY2VLZXk7CisgICAgc3RkOjpjYWxsX29uY2Uob25jZUtleSwgWyZdIHsKKyAg
ICAgICAgY2FjaGUuY29uc3RydWN0KCk7CisgICAgfSk7CisgICAgcmV0dXJuIGNhY2hlLmdldCgp
OworfQorCiAjaWYgIVBMQVRGT1JNKE1BQykgJiYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAKIHN0
YXRpYyBWYXJpYW50PFRleHRCcmVha0l0ZXJhdG9ySUNVLCBUZXh0QnJlYWtJdGVyYXRvclBsYXRm
b3JtPiBtYXBNb2RlVG9CYWNraW5nSXRlcmF0b3IoU3RyaW5nVmlldyBzdHJpbmcsIFRleHRCcmVh
a0l0ZXJhdG9yOjpNb2RlIG1vZGUsIGNvbnN0IEF0b21TdHJpbmcmIGxvY2FsZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuaCBiL1NvdXJjZS9XVEYv
d3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuaAppbmRleCBhMjAyMmU0YWU2NjM2Zjg1NzhjYzFh
MmI0M2I1MDYyMWU2NzJmNWE2Li4xYmQ1ZGU0MGNlNjg0MWM2YWQ4ZjYyZWZjNTEzOGEzNjBmOWM4
YjFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmgK
KysrIGIvU291cmNlL1dURi93dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5oCkBAIC0yMSw2ICsy
MSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSA8bXV0ZXg+CiAjaW5jbHVkZSA8d3Rm
L05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9TdHJpbmdWaWV3Lmg+CkBAIC0xMTIsMTQgKzExMywxMCBAQCBjbGFzcyBUZXh0QnJl
YWtJdGVyYXRvckNhY2hlIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIC8vIFVzZSBD
YWNoZWRUZXh0QnJlYWtJdGVyYXRvciBpbnN0ZWFkIG9mIGRlYWxpbmcgd2l0aCB0aGUgY2FjaGUg
ZGlyZWN0bHkuCiBwcml2YXRlOgotICAgIGZyaWVuZCBjbGFzcyBOZXZlckRlc3Ryb3llZDxUZXh0
QnJlYWtJdGVyYXRvckNhY2hlPjsKKyAgICBmcmllbmQgY2xhc3MgTGF6eU5ldmVyRGVzdHJveWVk
PFRleHRCcmVha0l0ZXJhdG9yQ2FjaGU+OwogICAgIGZyaWVuZCBjbGFzcyBDYWNoZWRUZXh0QnJl
YWtJdGVyYXRvcjsKIAotICAgIHN0YXRpYyBUZXh0QnJlYWtJdGVyYXRvckNhY2hlJiBzaW5nbGV0
b24oKQotICAgIHsKLSAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFRleHRCcmVha0l0ZXJh
dG9yQ2FjaGU+IGNhY2hlOwotICAgICAgICByZXR1cm4gY2FjaGUuZ2V0KCk7Ci0gICAgfQorICAg
IHN0YXRpYyBUZXh0QnJlYWtJdGVyYXRvckNhY2hlJiBzaW5nbGV0b24oKTsKIAogICAgIFRleHRC
cmVha0l0ZXJhdG9yQ2FjaGUoY29uc3QgVGV4dEJyZWFrSXRlcmF0b3JDYWNoZSYpID0gZGVsZXRl
OwogICAgIFRleHRCcmVha0l0ZXJhdG9yQ2FjaGUoVGV4dEJyZWFrSXRlcmF0b3JDYWNoZSYmKSA9
IGRlbGV0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RocmVhZHMvU2lnbmFscy5jcHAg
Yi9Tb3VyY2UvV1RGL3d0Zi90aHJlYWRzL1NpZ25hbHMuY3BwCmluZGV4IDJiYzRkZmFhYWJlYzVm
ZGQ4MjY3MWI0YWY5MTFiYzEwNWI5MWJkODMuLjk1NjIyNjYxNWZkMTM3OTc5YmQ2Yjg3NjA5YWEx
ZjhhMzQyNjVlMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RocmVhZHMvU2lnbmFscy5j
cHAKKysrIGIvU291cmNlL1dURi93dGYvdGhyZWFkcy9TaWduYWxzLmNwcApAQCAtMjU4LDE0ICsy
NTgsMTMgQEAgaW5saW5lIHZvaWQgc2V0RXhjZXB0aW9uUG9ydHMoY29uc3QgQWJzdHJhY3RMb2Nr
ZXImIHRocmVhZEdyb3VwTG9ja2VyLCBUaHJlYWQmIHQKIAogc3RhdGljIFRocmVhZEdyb3VwJiBh
Y3RpdmVUaHJlYWRzKCkKIHsKKyAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPHN0ZDo6c2hh
cmVkX3B0cjxUaHJlYWRHcm91cD4+IGFjdGl2ZVRocmVhZHM7CiAgICAgc3RhdGljIHN0ZDo6b25j
ZV9mbGFnIGluaXRpYWxpemVLZXk7Ci0gICAgc3RhdGljIFRocmVhZEdyb3VwKiBhY3RpdmVUaHJl
YWRzUHRyID0gbnVsbHB0cjsKICAgICBzdGQ6OmNhbGxfb25jZShpbml0aWFsaXplS2V5LCBbJl0g
ewogICAgICAgICBDb25maWc6OkFzc2VydE5vdEZyb3plblNjb3BlIGFzc2VydFNjb3BlOwotICAg
ICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8c3RkOjpzaGFyZWRfcHRyPFRocmVhZEdyb3VwPj4g
YWN0aXZlVGhyZWFkcyB7IFRocmVhZEdyb3VwOjpjcmVhdGUoKSB9OwotICAgICAgICBhY3RpdmVU
aHJlYWRzUHRyID0gYWN0aXZlVGhyZWFkcy5nZXQoKS5nZXQoKTsKKyAgICAgICAgYWN0aXZlVGhy
ZWFkcy5jb25zdHJ1Y3QoVGhyZWFkR3JvdXA6OmNyZWF0ZSgpKTsKICAgICB9KTsKLSAgICByZXR1
cm4gKmFjdGl2ZVRocmVhZHNQdHI7CisgICAgcmV0dXJuICgqYWN0aXZlVGhyZWFkcy5nZXQoKSk7
CiB9CiAKIHZvaWQgcmVnaXN0ZXJUaHJlYWRGb3JNYWNoRXhjZXB0aW9uSGFuZGxpbmcoVGhyZWFk
JiB0aHJlYWQpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>406658</attachid>
            <date>2020-08-15 01:11:45 -0700</date>
            <delta_ts>2020-08-15 01:18:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215535-20200815011144.patch</filename>
            <type>text/plain</type>
            <size>23523</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY1NzI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGE0Yzg5NTEwNTFhZDNkZTVmYzkyOTIz
Nzc2ODBmOTM0NjdkNmQ4NTQuLmIwMWRhM2IyNWZiNjM0OTg2YzIxMGYzMDY4MGRjOTczZmM2YjAw
YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNTYgQEAKKzIwMjAtMDgtMTUgIFl1c3VrZSBTdXp1a2kgIDx5c3V6
dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBVc2Ugc3RkOjpjYWxsX29uY2UgKyBMYXp5TmV2ZXJE
ZXN0cm95ZWQgdG8gaW5pdGlhbGl6ZSBjb21wbGV4IGRhdGEgc3RydWN0dXJlcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE1NTM1CisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS82Njc3NDI2Nj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBOZXZlckRlc3Ryb3llZDw+IGlzIG5vdCB0aHJlYWQtc2FmZSBpbiBE
YXJ3aW4gYnVpbGQgc2luY2UgaXQgaXMgbm90IHVzaW5nIEMrKzExIHRocmVhZC1zYWZlIHN0YXRp
YyB2YXJpYWJsZSBzZW1hbnRpY3MuCisgICAgICAgIFRoaXMgcGF0Y2ggdXNlcyBMYXp5TmV2ZXJE
ZXN0cm95ZWQgYW5kIGNhbGxfb25jZSB0byBpbml0aWFsaXplIGNvbXBsZXggZGF0YSBzdHJ1Y3R1
cmVzIHNvIHRoYXQgd2UgY2FuIGVuc3VyZSB0aGV5IGFyZQorICAgICAgICBpbml0aWFsaXplZCBh
dG9taWNhbGx5LgorCisgICAgICAgIFdlIGFsc28gbW92ZSBzb21lIG9mIGBzaW5nbGV0b25gIGRl
ZmluaXRpb25zIGZyb20gaGVhZGVycyB0byBjcHAgZmlsZXMuIFRoaXMgaXMgaW1wb3J0YW50IHNp
bmNlIHRoaXMgZW5zdXJlcyB0aGF0IHNpbmdsZXRvbgorICAgICAgICBpcyBvbmx5IG9uZSBpbnN0
YW5jZSB3aGljaCBpcyBnZW5lcmF0ZWQgaW4gb25lIHRyYW5zbGF0aW9uIHVuaXQuCisKKyAgICAg
ICAgKiBXVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiB3dGYvQ01ha2VM
aXN0cy50eHQ6CisgICAgICAgICogd3RmL0Zhc3RNYWxsb2MuY3BwOgorICAgICAgICAoV1RGOjpN
YWxsb2NDYWxsVHJhY2tlcjo6c2luZ2xldG9uKToKKyAgICAgICAgKiB3dGYvTGFuZ3VhZ2UuY3Bw
OgorICAgICAgICAoV1RGOjpvYnNlcnZlck1hcCk6CisgICAgICAgIChXVEY6OnByZWZlcnJlZExh
bmd1YWdlc092ZXJyaWRlKToKKyAgICAgICAgKiB3dGYvTG9nZ2VyLmNwcDoKKyAgICAgICAgKFdU
Rjo6TG9nZ2VyOjpvYnNlcnZlcnMpOgorICAgICAgICAqIHd0Zi9Mb2dnZXIuaDoKKyAgICAgICAg
KFdURjo6TG9nZ2VyOjpvYnNlcnZlckxvY2spOgorICAgICAgICAoV1RGOjpMb2dnZXI6Om9ic2Vy
dmVycyk6IERlbGV0ZWQuCisgICAgICAgICogd3RmL01lbW9yeVByZXNzdXJlSGFuZGxlci5jcHA6
CisgICAgICAgIChXVEY6Ok1lbW9yeVByZXNzdXJlSGFuZGxlcjo6c2luZ2xldG9uKToKKyAgICAg
ICAgKiB3dGYvTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmg6CisgICAgICAgICogd3RmL1J1bkxvb3Au
Y3BwOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpjdXJyZW50KToKKyAgICAgICAgKiB3dGYvVGhy
ZWFkaW5nLmNwcDoKKyAgICAgICAgKFdURjo6VGhyZWFkOjppbml0aWFsaXplSW5UaHJlYWQpOgor
ICAgICAgICAqIHd0Zi9VUkwuY3BwOgorICAgICAgICAoV1RGOjphYm91dEJsYW5rVVJMKToKKyAg
ICAgICAgKFdURjo6YWJvdXRTcmNEb2NVUkwpOgorICAgICAgICAqIHd0Zi9jZi9MYW5ndWFnZUNG
LmNwcDoKKyAgICAgICAgKFdURjo6cHJlZmVycmVkTGFuZ3VhZ2VzKToKKyAgICAgICAgKiB3dGYv
Y29jb2EvTlNVUkxFeHRyYXMubW06CisgICAgICAgIChXVEY6OnJhbmdlT2ZVUkxTY2hlbWUpOgor
ICAgICAgICAqIHd0Zi90ZXh0L0xpbmVCcmVha0l0ZXJhdG9yUG9vbElDVS5jcHA6IENvcGllZCBm
cm9tIFNvdXJjZS9XVEYvd3RmL0xvZ2dlci5jcHAuCisgICAgICAgIChXVEY6OkxpbmVCcmVha0l0
ZXJhdG9yUG9vbDo6c2hhcmVkUG9vbCk6CisgICAgICAgICogd3RmL3RleHQvTGluZUJyZWFrSXRl
cmF0b3JQb29sSUNVLmg6CisgICAgICAgIChXVEY6OkxpbmVCcmVha0l0ZXJhdG9yUG9vbDo6c2hh
cmVkUG9vbCk6IERlbGV0ZWQuCisgICAgICAgICogd3RmL3RleHQvU3RyaW5nVmlldy5jcHA6Cisg
ICAgICAgICogd3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuY3BwOgorICAgICAgICAoV1RGOjpU
ZXh0QnJlYWtJdGVyYXRvckNhY2hlOjpzaW5nbGV0b24pOgorICAgICAgICAqIHd0Zi90ZXh0L1Rl
eHRCcmVha0l0ZXJhdG9yLmg6CisgICAgICAgIChXVEY6OlRleHRCcmVha0l0ZXJhdG9yQ2FjaGU6
OnNpbmdsZXRvbik6IERlbGV0ZWQuCisgICAgICAgICogd3RmL3RocmVhZHMvU2lnbmFscy5jcHA6
CisgICAgICAgIChXVEY6OmFjdGl2ZVRocmVhZHMpOgorCiAyMDIwLTA4LTExICBXZW5zb24gSHNp
ZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFRleHQgaW5wdXQgYXV0b2Nv
cnJlY3Q9Im9mZiIgYXR0cmlidXRlIGlnbm9yZWQgb24gTWFjCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dURi9XVEYueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAxNGJhMDRjMDQ3YTQxZDlkNWEzZDY0YzJlODgxZTQw
ZDAwYzM5ZDE1Li4yODdmN2JmNTZkYjE4MTk5YzEyZmE5MjY0MDYzNzUwNGE0ODA1YzU3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE3OCw2ICsxNzgsNyBA
QAogCQlFMzhENkUyNzFGNTUyMkUzMDBBNzVDQzQgLyogU3RyaW5nQnVpbGRlckpTT04uY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM4RDZFMjYxRjU1
MjJFMzAwQTc1Q0M0IC8qIFN0cmluZ0J1aWxkZXJKU09OLmNwcCAqLzsgfTsKIAkJRTM5MkZBMjcy
MkU5MkJGRjAwRUNEQzczIC8qIFJlc291cmNlVXNhZ2VDb2NvYS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzkyRkEyNjIyRTkyQkZGMDBFQ0RDNzMg
LyogUmVzb3VyY2VVc2FnZUNvY29hLmNwcCAqLzsgfTsKIAkJRTNBMzJCQzQxRkM4MzBFMjAwN0Q3
RTc2IC8qIEpTVmFsdWVNYWxsb2MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTNBMzJCQzIxRkM4MzBFMjAwN0Q3RTc2IC8qIEpTVmFsdWVNYWxsb2Mu
Y3BwICovOyB9OworCQlFM0I4RTQxRDI0RTdDRTkyMDAzNjU1RDggLyogTGluZUJyZWFrSXRlcmF0
b3JQb29sSUNVLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEUzQjhFNDFDMjRFN0NFOTIwMDM2NTVEOCAvKiBMaW5lQnJlYWtJdGVyYXRvclBvb2xJQ1Uu
Y3BwICovOyB9OwogCQlFM0JFMDlBNzI0QTU4NTREMDA5REYyQjQgLyogSUNVSGVscGVycy5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0JFMDlBNjI0
QTU4NTQ1MDA5REYyQjQgLyogSUNVSGVscGVycy5jcHAgKi87IH07CiAJCUU0QTBBRDM5MUE5NjI0
NTUwMDUzNkRGNiAvKiBXb3JrUXVldWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTRBMEFEMzcxQTk2MjQ1NTAwNTM2REY2IC8qIFdvcmtRdWV1ZS5j
cHAgKi87IH07CiAJCUU0QTBBRDNEMUE5NjI1M0MwMDUzNkRGNiAvKiBXb3JrUXVldWVDb2NvYS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNEEwQUQz
QzFBOTYyNTNDMDA1MzZERjYgLyogV29ya1F1ZXVlQ29jb2EuY3BwICovOyB9OwpAQCAtNzI4LDYg
KzcyOSw3IEBACiAJCUUzOTJGQTI2MjJFOTJCRkYwMEVDREM3MyAvKiBSZXNvdXJjZVVzYWdlQ29j
b2EuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVzb3VyY2VVc2Fn
ZUNvY29hLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTNBMzJCQzIxRkM4MzBF
MjAwN0Q3RTc2IC8qIEpTVmFsdWVNYWxsb2MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSlNWYWx1ZU1hbGxvYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUUzQTMyQkMzMUZDODMwRTIwMDdEN0U3NiAvKiBKU1ZhbHVlTWFsbG9jLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTVmFsdWVNYWxsb2MuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJRTNCOEU0MUMyNEU3Q0U5MjAwMzY1NUQ4IC8qIExpbmVCcmVha0l0ZXJh
dG9yUG9vbElDVS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMaW5l
QnJlYWtJdGVyYXRvclBvb2xJQ1UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlF
M0JFMDlBNjI0QTU4NTQ1MDA5REYyQjQgLyogSUNVSGVscGVycy5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBJQ1VIZWxwZXJzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTNDRjc2
OTAyMTE1RDZCQTAwOTFERTQ4IC8qIENvbXBhY3RQb2ludGVyVHVwbGUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQ29tcGFjdFBvaW50ZXJUdXBsZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlFM0UxNTgyNTFFQURBNTNDMDA0QTA3OUQgLyogU3lzdGVtRnJlZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTeXN0ZW1GcmVlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMzgzLDYgKzEzODUsNyBAQAogCQkJCTUwREUzNUY0MjE1
QkIwMTUwMEI5NzlDNyAvKiBFeHRlcm5hbFN0cmluZ0ltcGwuaCAqLywKIAkJCQkyNjE0N0IwODE1
RERDQ0RDMDBEREI5MDcgLyogSW50ZWdlclRvU3RyaW5nQ29udmVyc2lvbi5oICovLAogCQkJCTkz
QUM5MUE3MTg5NDJGQzQwMDI0NDkzOSAvKiBMQ2hhci5oICovLAorCQkJCUUzQjhFNDFDMjRFN0NF
OTIwMDM2NTVEOCAvKiBMaW5lQnJlYWtJdGVyYXRvclBvb2xJQ1UuY3BwICovLAogCQkJCTFDMTgx
QzgxMUQzMDc5N0MwMEY1RkExNiAvKiBMaW5lQnJlYWtJdGVyYXRvclBvb2xJQ1UuaCAqLywKIAkJ
CQlDMkJDRkM1MzFGNjIxRjNGMDBDOTIyMkMgLyogTGluZUVuZGluZy5jcHAgKi8sCiAJCQkJQzJC
Q0ZDNTQxRjYyMUYzRjAwQzkyMjJDIC8qIExpbmVFbmRpbmcuaCAqLywKQEAgLTE2ODEsNiArMTY4
NCw3IEBACiAJCQkJQzJCQ0ZDNDAxRjYxRDEzMDAwQzkyMjJDIC8qIExhbmd1YWdlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUMyQkNGQzQyMUY2MUQ2MTYwMEM5MjIyQyAvKiBMYW5ndWFnZUNGLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTFDNTAzQkU2MjNBQUUwQUUwMDcyRTY2QiAvKiBMYW5ndWFn
ZUNvY29hLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJRTNCOEU0MUQyNEU3Q0U5MjAwMzY1NUQ4IC8q
IExpbmVCcmVha0l0ZXJhdG9yUG9vbElDVS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDMkJDRkM1
NTFGNjIxRjNGMDBDOTIyMkMgLyogTGluZUVuZGluZy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkw
RkUxNjQ2QTFCNkZGQzk2MDA0MDBFN0MgLyogTG9jay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkw
RjYwRjMyRjFERkNCRDFCMDA0MTZENkMgLyogTG9ja2VkUHJpbnRTdHJlYW0uY3BwIGluIFNvdXJj
ZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dCBiL1NvdXJj
ZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CmluZGV4IDU2NGNhOTFkOWU2NTc5MjJkZjIyMTc5YzMz
NWMwZmVhODJlNjBkY2EuLjEwOWIwZDlmN2MyN2M2MTVhZWJmZTViNTZhNWQyNWZjMzY4NGNmZmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9X
VEYvd3RmL0NNYWtlTGlzdHMudHh0CkBAIC00NzYsNiArNDc2LDcgQEAgc2V0KFdURl9TT1VSQ0VT
CiAgICAgdGV4dC9CYXNlNjQuY3BwCiAgICAgdGV4dC9DU3RyaW5nLmNwcAogICAgIHRleHQvRXh0
ZXJuYWxTdHJpbmdJbXBsLmNwcAorICAgIHRleHQvTGluZUJyZWFrSXRlcmF0b3JQb29sSUNVLmNw
cAogICAgIHRleHQvTGluZUVuZGluZy5jcHAKICAgICB0ZXh0L1N0cmluZ0J1ZmZlci5jcHAKICAg
ICB0ZXh0L1N0cmluZ0J1aWxkZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GYXN0
TWFsbG9jLmNwcCBiL1NvdXJjZS9XVEYvd3RmL0Zhc3RNYWxsb2MuY3BwCmluZGV4IDgzNGIxOGU4
MDhjYjBlZjllZTM2N2IwZGExMDI3YzAyYTc2OTA2Y2UuLjRmMWYxNDZkMTA1Mjg0MGNlNzIxZDVm
MmFhYjZlNWM1ZmFlMmNlNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0Zhc3RNYWxsb2Mu
Y3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL0Zhc3RNYWxsb2MuY3BwCkBAIC0zNDAsNyArMzQwLDEx
IEBAIGNsYXNzIE1hbGxvY0NhbGxUcmFja2VyIHsKIE1hbGxvY0NhbGxUcmFja2VyJiBNYWxsb2ND
YWxsVHJhY2tlcjo6c2luZ2xldG9uKCkKIHsKICAgICBBdm9pZFJlY29yZGluZ1Njb3BlIGF2b2lk
UmVjb3JkaW5nOwotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxNYWxsb2NDYWxsVHJhY2tlcj4g
dHJhY2tlcjsKKyAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1hbGxvY0NhbGxUcmFja2Vy
PiB0cmFja2VyOworICAgIHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7CisgICAgc3RkOjpjYWxsX29u
Y2Uob25jZUtleSwgWyZdIHsKKyAgICAgICAgdHJhY2tlci5jb25zdHJ1Y3QoKTsKKyAgICB9KTsK
ICAgICByZXR1cm4gdHJhY2tlcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvTGFu
Z3VhZ2UuY3BwIGIvU291cmNlL1dURi93dGYvTGFuZ3VhZ2UuY3BwCmluZGV4IGFmOWMwN2E3NzZk
YzZlN2U1MGUxNjRkNGZkZWJhMjM1MjE4M2Y3NDIuLmE5YWQxOTEwZDNmYjY2ZDAzYjcyZmVkMmRh
MDE2YWMzNWE1MmQyNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0xhbmd1YWdlLmNwcAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi9MYW5ndWFnZS5jcHAKQEAgLTQxLDcgKzQxLDExIEBAIHN0YXRp
YyBMb2NrIHVzZXJQcmVmZXJyZWRMYW5ndWFnZXNNdXRleDsKIHR5cGVkZWYgSGFzaE1hcDx2b2lk
KiwgTGFuZ3VhZ2VDaGFuZ2VPYnNlcnZlckZ1bmN0aW9uPiBPYnNlcnZlck1hcDsKIHN0YXRpYyBP
YnNlcnZlck1hcCYgb2JzZXJ2ZXJNYXAoKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxP
YnNlcnZlck1hcD4gbWFwOworICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8T2JzZXJ2ZXJN
YXA+IG1hcDsKKyAgICBzdGQ6Om9uY2VfZmxhZyBvbmNlS2V5OworICAgIHN0ZDo6Y2FsbF9vbmNl
KG9uY2VLZXksIFsmXSB7CisgICAgICAgIG1hcC5jb25zdHJ1Y3QoKTsKKyAgICB9KTsKICAgICBy
ZXR1cm4gbWFwLmdldCgpOwogfQogCkBAIC03NSw3ICs3OSwxMSBAQCBTdHJpbmcgZGVmYXVsdExh
bmd1YWdlKCkKIAogc3RhdGljIFZlY3RvcjxTdHJpbmc+JiBwcmVmZXJyZWRMYW5ndWFnZXNPdmVy
cmlkZSgpCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFZlY3RvcjxTdHJpbmc+PiBvdmVy
cmlkZTsKKyAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPFZlY3RvcjxTdHJpbmc+PiBvdmVy
cmlkZTsKKyAgICBzdGQ6Om9uY2VfZmxhZyBvbmNlS2V5OworICAgIHN0ZDo6Y2FsbF9vbmNlKG9u
Y2VLZXksIFsmXSB7CisgICAgICAgIG92ZXJyaWRlLmNvbnN0cnVjdCgpOworICAgIH0pOwogICAg
IHJldHVybiBvdmVycmlkZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvTG9nZ2Vy
LmNwcCBiL1NvdXJjZS9XVEYvd3RmL0xvZ2dlci5jcHAKaW5kZXggN2ZmMTIzMDMwZGU1MDcxMDkz
MjhmYjUwNWFiMzFkMzhlNGUxNGRhNi4uNmQ5YmJiYTJiMjg1MTgzMmVhZjZmMDY1M2RmY2FkYzRh
OGIxOGIxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvTG9nZ2VyLmNwcAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi9Mb2dnZXIuY3BwCkBAIC0yNiwxMSArMjYsMTQgQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJMb2dnZXIuaCIKIAorI2luY2x1ZGUgPG11dGV4PgogI2luY2x1ZGUg
PHd0Zi9IZXhOdW1iZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFt
ZXNwYWNlIFdURiB7CiAKK0xvY2sgbG9nZ2VyT2JzZXJ2ZXJMb2NrIHsgfTsKKwogU3RyaW5nIExv
Z2dlcjo6TG9nU2l0ZUlkZW50aWZpZXI6OnRvU3RyaW5nKCkgY29uc3QKIHsKICAgICBpZiAoY2xh
c3NOYW1lKQpAQCAtNDMsNCArNDYsMTQgQEAgU3RyaW5nIExvZ0FyZ3VtZW50PGNvbnN0IHZvaWQq
Pjo6dG9TdHJpbmcoY29uc3Qgdm9pZCogYXJndW1lbnQpCiAgICAgcmV0dXJuIG1ha2VTdHJpbmco
JygnLCBoZXgocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGFyZ3VtZW50KSksICcpJyk7CiB9
CiAKK1ZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPExvZ2dlcjo6T2JzZXJ2ZXI+PiYgTG9n
Z2VyOjpvYnNlcnZlcnMoKQoreworICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8VmVjdG9y
PHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8T2JzZXJ2ZXI+Pj4gb2JzZXJ2ZXJzOworICAgIHN0YXRp
YyBzdGQ6Om9uY2VfZmxhZyBvbmNlS2V5OworICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsm
XSB7CisgICAgICAgIG9ic2VydmVycy5jb25zdHJ1Y3QoKTsKKyAgICB9KTsKKyAgICByZXR1cm4g
b2JzZXJ2ZXJzOworfQorCiB9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL0xvZ2dlci5oIGIvU291cmNlL1dURi93dGYvTG9nZ2VyLmgKaW5kZXggNjNjMWMzOWEx
MWEzNzU0YTI1ZTc4YzE2N2ZlNjA2ZWFmYjk4NzcwYS4uOWI5MzEwNmFkMThiYjZjNmZhNTEzZTll
NTAxZjBlZjEwYTU5MzAyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvTG9nZ2VyLmgKKysr
IGIvU291cmNlL1dURi93dGYvTG9nZ2VyLmgKQEAgLTExMiw2ICsxMTIsOCBAQCBzdHJ1Y3QgQ29u
c29sZUxvZ1ZhbHVlPEFyZ3VtZW50LCBmYWxzZT4gewogICAgIH0KIH07CiAKK2V4dGVybiBMb2Nr
IGxvZ2dlck9ic2VydmVyTG9jazsKKwogY2xhc3MgTG9nZ2VyIDogcHVibGljIFRocmVhZFNhZmVS
ZWZDb3VudGVkPExvZ2dlcj4gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKExvZ2dlcik7CiBw
dWJsaWM6CkBAIC0zNTksMTYgKzM2MSwxMSBAQCBjbGFzcyBMb2dnZXIgOiBwdWJsaWMgVGhyZWFk
U2FmZVJlZkNvdW50ZWQ8TG9nZ2VyPiB7CiAgICAgICAgICAgICBvYnNlcnZlci5kaWRMb2dNZXNz
YWdlKGNoYW5uZWwsIGxldmVsLCB7IENvbnNvbGVMb2dWYWx1ZTxBcmd1bWVudD46OnRvVmFsdWUo
YXJndW1lbnRzKS4uLiB9KTsKICAgICB9CiAKLSAgICBzdGF0aWMgVmVjdG9yPHN0ZDo6cmVmZXJl
bmNlX3dyYXBwZXI8T2JzZXJ2ZXI+PiYgb2JzZXJ2ZXJzKCkKLSAgICB7Ci0gICAgICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxPYnNlcnZlcj4+
PiBvYnNlcnZlcnM7Ci0gICAgICAgIHJldHVybiBvYnNlcnZlcnM7Ci0gICAgfQorICAgIFdURl9F
WFBPUlRfUFJJVkFURSBzdGF0aWMgVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8T2JzZXJ2
ZXI+PiYgb2JzZXJ2ZXJzKCk7CiAKICAgICBzdGF0aWMgTG9jayYgb2JzZXJ2ZXJMb2NrKCkKICAg
ICB7Ci0gICAgICAgIHN0YXRpYyBMb2NrIG9ic2VydmVyTG9jazsKLSAgICAgICAgcmV0dXJuIG9i
c2VydmVyTG9jazsKKyAgICAgICAgcmV0dXJuIGxvZ2dlck9ic2VydmVyTG9jazsKICAgICB9CiAK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmNwcCBi
L1NvdXJjZS9XVEYvd3RmL01lbW9yeVByZXNzdXJlSGFuZGxlci5jcHAKaW5kZXggZmE3NzI0ZDQw
ZDM5ODU2Y2Q3ZjJkYWU3ZjE0MWFlZWZjOWFjMWZmOS4uZmU5YzlhNTE3Y2YyMWUxOWI2ZGRlM2Y3
ZGY4ZjQ2MDFmZWZmNzJmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvTWVtb3J5UHJlc3N1
cmVIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIu
Y3BwCkBAIC00OCw3ICs0OCwxMSBAQCBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBNZW1vcnlQcmVz
c3VyZUhhbmRsZXI6OlJlbGllZkxvZ2dlcjo6c19sb2dnaW5nRW5hYmxlZCA9CiAKIE1lbW9yeVBy
ZXNzdXJlSGFuZGxlciYgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpzaW5nbGV0b24oKQogewotICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxNZW1vcnlQcmVzc3VyZUhhbmRsZXI+IG1lbW9yeVByZXNz
dXJlSGFuZGxlcjsKKyAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1lbW9yeVByZXNzdXJl
SGFuZGxlcj4gbWVtb3J5UHJlc3N1cmVIYW5kbGVyOworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxh
ZyBvbmNlS2V5OworICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsmXSB7CisgICAgICAgIG1l
bW9yeVByZXNzdXJlSGFuZGxlci5jb25zdHJ1Y3QoKTsKKyAgICB9KTsKICAgICByZXR1cm4gbWVt
b3J5UHJlc3N1cmVIYW5kbGVyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9NZW1v
cnlQcmVzc3VyZUhhbmRsZXIuaCBiL1NvdXJjZS9XVEYvd3RmL01lbW9yeVByZXNzdXJlSGFuZGxl
ci5oCmluZGV4IDY0NTk4MmM1NzMyMmU0YzRkNTAzOTU5OGY2MmUwNGU4MzA2NDlhMjcuLmNlNWIy
ODMzNjNhMzFjZTdlNGIwMjgzYTg4YTk5ZDNhYTFjYWQ5ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL01lbW9yeVByZXNzdXJlSGFuZGxlci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL01lbW9y
eVByZXNzdXJlSGFuZGxlci5oCkBAIC01OCw3ICs1OCw3IEBAIHR5cGVkZWYgV1RGOjpGdW5jdGlv
bjx2b2lkKENyaXRpY2FsLCBTeW5jaHJvbm91cyk+IExvd01lbW9yeUhhbmRsZXI7CiAKIGNsYXNz
IE1lbW9yeVByZXNzdXJlSGFuZGxlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci0g
ICAgZnJpZW5kIGNsYXNzIFdURjo6TmV2ZXJEZXN0cm95ZWQ8TWVtb3J5UHJlc3N1cmVIYW5kbGVy
PjsKKyAgICBmcmllbmQgY2xhc3MgV1RGOjpMYXp5TmV2ZXJEZXN0cm95ZWQ8TWVtb3J5UHJlc3N1
cmVIYW5kbGVyPjsKIHB1YmxpYzoKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIE1lbW9y
eVByZXNzdXJlSGFuZGxlciYgc2luZ2xldG9uKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL1J1bkxvb3AuY3BwIGIvU291cmNlL1dURi93dGYvUnVuTG9vcC5jcHAKaW5kZXggMzJiMjFh
M2JhZDM5ODI4OGRmMDM5NTEwMjViMWNjMTUzNTczM2RjMC4uYzg1OGExMTZmZTJkNDRhNmVlMTVh
ZDVjN2VmNTNkNzAwZGYwYjVkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUnVuTG9vcC5j
cHAKKysrIGIvU291cmNlL1dURi93dGYvUnVuTG9vcC5jcHAKQEAgLTYwLDcgKzYwLDExIEBAIHZv
aWQgUnVuTG9vcDo6aW5pdGlhbGl6ZU1haW4oKQogCiBSdW5Mb29wJiBSdW5Mb29wOjpjdXJyZW50
KCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VGhyZWFkU3BlY2lmaWM8SG9sZGVyPj4g
cnVuTG9vcEhvbGRlcjsKKyAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPFRocmVhZFNwZWNp
ZmljPEhvbGRlcj4+IHJ1bkxvb3BIb2xkZXI7CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9u
Y2VLZXk7CisgICAgc3RkOjpjYWxsX29uY2Uob25jZUtleSwgWyZdIHsKKyAgICAgICAgcnVuTG9v
cEhvbGRlci5jb25zdHJ1Y3QoKTsKKyAgICB9KTsKICAgICByZXR1cm4gcnVuTG9vcEhvbGRlci5n
ZXQoKS0+cnVuTG9vcCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRp
bmcuY3BwIGIvU291cmNlL1dURi93dGYvVGhyZWFkaW5nLmNwcAppbmRleCBhNWYzYzU3Y2ZkM2Qw
MmRjNmFkOWEyMzEyZjliMjNmMDk0NWJhMGQzLi4zMzFjYjNlM2YxMGEwZDk4OTQyMzIzMTg2MGVh
YzdjNTQwMWRkZmNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmcuY3BwCisr
KyBiL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZy5jcHAKQEAgLTg3LDcgKzg3LDExIEBAIHN0cnVj
dCBUaHJlYWQ6Ok5ld1RocmVhZENvbnRleHQgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8
TmV3VGhyZWFkQ29udGV4dD4KIAogSGFzaFNldDxUaHJlYWQqPiYgVGhyZWFkOjphbGxUaHJlYWRz
KGNvbnN0IExvY2tIb2xkZXImKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0
PFRocmVhZCo+PiBhbGxUaHJlYWRzOworICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8SGFz
aFNldDxUaHJlYWQqPj4gYWxsVGhyZWFkczsKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25j
ZUtleTsKKyAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbJl0geworICAgICAgICBhbGxUaHJl
YWRzLmNvbnN0cnVjdCgpOworICAgIH0pOwogICAgIHJldHVybiBhbGxUaHJlYWRzOwogfQogCkBA
IC0xMzQsNyArMTM4LDExIEBAIHZvaWQgVGhyZWFkOjppbml0aWFsaXplSW5UaHJlYWQoKQogI2lm
IFVTRShXRUJfVEhSRUFEKQogICAgIC8vIE9uIGlPUywgb25lIEF0b21TdHJpbmdUYWJsZSBpcyBz
aGFyZWQgYmV0d2VlbiB0aGUgbWFpbiBVSSB0aHJlYWQgYW5kIHRoZSBXZWJUaHJlYWQuCiAgICAg
aWYgKGlzV2ViVGhyZWFkKCkgfHwgaXNVSVRocmVhZCgpKSB7Ci0gICAgICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxBdG9tU3RyaW5nVGFibGU+IHNoYXJlZFN0cmluZ1RhYmxlOworICAgICAgICBz
dGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPEF0b21TdHJpbmdUYWJsZT4gc2hhcmVkU3RyaW5nVGFi
bGU7CisgICAgICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlS2V5OworICAgICAgICBzdGQ6
OmNhbGxfb25jZShvbmNlS2V5LCBbJl0geworICAgICAgICAgICAgc2hhcmVkU3RyaW5nVGFibGUu
Y29uc3RydWN0KCk7CisgICAgICAgIH0pOwogICAgICAgICBtX2N1cnJlbnRBdG9tU3RyaW5nVGFi
bGUgPSAmc2hhcmVkU3RyaW5nVGFibGUuZ2V0KCk7CiAgICAgfQogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi9VUkwuY3BwIGIvU291cmNlL1dURi93dGYvVVJMLmNwcAppbmRleCA2
NTMzOGNmZDc3ZDQ2N2I1YzM2MmVlZGFlMTMyZWMzYWQwZTMzZjdhLi5mMGFlN2QzNGYyNWRjNmQz
NDUyZTYxMDhmNWE5NWIzYWFlMDg5OWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9VUkwu
Y3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL1VSTC5jcHAKQEAgLTgyMCwyMiArODIwLDIyIEBAIGJv
b2wgcHJvdG9jb2xJc0luSFRUUEZhbWlseShTdHJpbmdWaWV3IHVybCkKIAogY29uc3QgVVJMJiBh
Ym91dEJsYW5rVVJMKCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VVJMPiBzdGF0aWNC
bGFua1VSTDsKKyAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPFVSTD4gc3RhdGljQmxhbmtV
Ukw7CiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOwogICAgIHN0ZDo6Y2FsbF9v
bmNlKG9uY2VGbGFnLCBbJl0gewogICAgICAgICBzdGF0aWMgY29uc3RleHByIGNvbnN0IGNoYXIq
IGFib3V0QmxhbmsgPSAiYWJvdXQ6YmxhbmsiOwotICAgICAgICBzdGF0aWNCbGFua1VSTC5nZXQo
KSA9IFVSTChVUkwoKSwgU3RyaW5nSW1wbDo6Y3JlYXRlU3RhdGljU3RyaW5nSW1wbChhYm91dEJs
YW5rLCBzdHJsZW4oYWJvdXRCbGFuaykpKTsKKyAgICAgICAgc3RhdGljQmxhbmtVUkwuY29uc3Ry
dWN0KFVSTCgpLCBTdHJpbmdJbXBsOjpjcmVhdGVTdGF0aWNTdHJpbmdJbXBsKGFib3V0Qmxhbmss
IHN0cmxlbihhYm91dEJsYW5rKSkpOwogICAgIH0pOwogICAgIHJldHVybiBzdGF0aWNCbGFua1VS
TDsKIH0KIAogY29uc3QgVVJMJiBhYm91dFNyY0RvY1VSTCgpCiB7Ci0gICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPFVSTD4gc3RhdGljU3JjRG9jVVJMOworICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0
cm95ZWQ8VVJMPiBzdGF0aWNTcmNEb2NVUkw7CiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9u
Y2VGbGFnOwogICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBbJl0gewogICAgICAgICBzdGF0
aWMgY29uc3RleHByIGNvbnN0IGNoYXIqIGFib3V0U3JjRG9jID0gImFib3V0OnNyY2RvYyI7Ci0g
ICAgICAgIHN0YXRpY1NyY0RvY1VSTC5nZXQoKSA9IFVSTChVUkwoKSwgU3RyaW5nSW1wbDo6Y3Jl
YXRlU3RhdGljU3RyaW5nSW1wbChhYm91dFNyY0RvYywgc3RybGVuKGFib3V0U3JjRG9jKSkpOwor
ICAgICAgICBzdGF0aWNTcmNEb2NVUkwuY29uc3RydWN0KFVSTCgpLCBTdHJpbmdJbXBsOjpjcmVh
dGVTdGF0aWNTdHJpbmdJbXBsKGFib3V0U3JjRG9jLCBzdHJsZW4oYWJvdXRTcmNEb2MpKSk7CiAg
ICAgfSk7CiAgICAgcmV0dXJuIHN0YXRpY1NyY0RvY1VSTDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL2NmL0xhbmd1YWdlQ0YuY3BwIGIvU291cmNlL1dURi93dGYvY2YvTGFuZ3VhZ2VD
Ri5jcHAKaW5kZXggMTIzOTZkYWQ0NmZlNDM4ODUxNGE1ODczOTNhNjhmNjU3MTRhNjBiYy4uNDI1
YWViZThmM2VkYWQyNTRhYWYyNDU4ODBlNTgxNGNjZDliY2M2ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvY2YvTGFuZ3VhZ2VDRi5jcHAKKysrIGIvU291cmNlL1dURi93dGYvY2YvTGFuZ3Vh
Z2VDRi5jcHAKQEAgLTQyLDcgKzQyLDExIEBAIHN0YXRpYyBMb2NrIHByZWZlcnJlZExhbmd1YWdl
c011dGV4OwogCiBzdGF0aWMgVmVjdG9yPFN0cmluZz4mIHByZWZlcnJlZExhbmd1YWdlcygpCiB7
Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFZlY3RvcjxTdHJpbmc+PiBsYW5ndWFnZXM7Cisg
ICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxWZWN0b3I8U3RyaW5nPj4gbGFuZ3VhZ2VzOwor
ICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlS2V5OworICAgIHN0ZDo6Y2FsbF9vbmNlKG9u
Y2VLZXksIFsmXSB7CisgICAgICAgIGxhbmd1YWdlcy5jb25zdHJ1Y3QoKTsKKyAgICB9KTsKICAg
ICByZXR1cm4gbGFuZ3VhZ2VzOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9jb2Nv
YS9OU1VSTEV4dHJhcy5tbSBiL1NvdXJjZS9XVEYvd3RmL2NvY29hL05TVVJMRXh0cmFzLm1tCmlu
ZGV4IGE0NWQ4YzExYzdlZWE1ZWQ2OTRjZDY1ZmYyMGVlOTYyNWM1OTYzYWQuLjIwOWVhNWI4NjY0
YTFiYTMxOTJmOWVjMjM1MzllMzBjZTJjOTdhODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L2NvY29hL05TVVJMRXh0cmFzLm1tCisrKyBiL1NvdXJjZS9XVEYvd3RmL2NvY29hL05TVVJMRXh0
cmFzLm1tCkBAIC0yOSw2ICsyOSw3IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIk5T
VVJMRXh0cmFzLmgiCiAKKyNpbXBvcnQgPG11dGV4PgogI2ltcG9ydCA8d3RmL0Z1bmN0aW9uLmg+
CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAjaW1wb3J0IDx3dGYvVVJMSGVscGVycy5oPgpA
QCAtNDI0LDggKzQyNSwxMiBAQCBOU1JhbmdlIHJhbmdlT2ZVUkxTY2hlbWUoTlNTdHJpbmcgKnN0
cmluZykKICAgICAgICAgIGV2ZW4gbmVlZCB0byBlbmZvcmNlIHRoZSBjaGFyYWN0ZXIgc2V0IGhl
cmUuCiAgICAgICAgICAqLwogICAgICAgICBOU1N0cmluZyAqYWNjZXB0YWJsZUNoYXJhY3RlcnMg
PSBAIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXow
MTIzNDU2Nzg5Ky4tIjsKLSAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxO
U0NoYXJhY3RlclNldD4+IEludmVyc2VTY2hlbWVDaGFyYWN0ZXJTZXQoW1tOU0NoYXJhY3RlclNl
dCBjaGFyYWN0ZXJTZXRXaXRoQ2hhcmFjdGVyc0luU3RyaW5nOmFjY2VwdGFibGVDaGFyYWN0ZXJz
XSBpbnZlcnRlZFNldF0pOwotICAgICAgICBOU1JhbmdlIGlsbGVnYWxzID0gW3N0cmluZyByYW5n
ZU9mQ2hhcmFjdGVyRnJvbVNldDpJbnZlcnNlU2NoZW1lQ2hhcmFjdGVyU2V0LmdldCgpLmdldCgp
IG9wdGlvbnM6MCByYW5nZTpzY2hlbWVdOworICAgICAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJv
eWVkPFJldGFpblB0cjxOU0NoYXJhY3RlclNldD4+IGludmVyc2VTY2hlbWVDaGFyYWN0ZXJTZXQ7
CisgICAgICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlS2V5OworICAgICAgICBzdGQ6OmNh
bGxfb25jZShvbmNlS2V5LCBbJl0geworICAgICAgICAgICAgaW52ZXJzZVNjaGVtZUNoYXJhY3Rl
clNldC5jb25zdHJ1Y3QoW1tOU0NoYXJhY3RlclNldCBjaGFyYWN0ZXJTZXRXaXRoQ2hhcmFjdGVy
c0luU3RyaW5nOmFjY2VwdGFibGVDaGFyYWN0ZXJzXSBpbnZlcnRlZFNldF0pOworICAgICAgICB9
KTsKKyAgICAgICAgTlNSYW5nZSBpbGxlZ2FscyA9IFtzdHJpbmcgcmFuZ2VPZkNoYXJhY3RlckZy
b21TZXQ6aW52ZXJzZVNjaGVtZUNoYXJhY3RlclNldC5nZXQoKS5nZXQoKSBvcHRpb25zOjAgcmFu
Z2U6c2NoZW1lXTsKICAgICAgICAgaWYgKGlsbGVnYWxzLmxvY2F0aW9uID09IE5TTm90Rm91bmQp
CiAgICAgICAgICAgICByZXR1cm4gc2NoZW1lOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL3RleHQvTGluZUJyZWFrSXRlcmF0b3JQb29sSUNVLmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L3RleHQvTGluZUJyZWFrSXRlcmF0b3JQb29sSUNVLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZDk5MGI5OTUw
NDg5NDQ2ZWFhMGZlYmUwNzZmMjZjN2NjZjA1NjJjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dURi93dGYvdGV4dC9MaW5lQnJlYWtJdGVyYXRvclBvb2xJQ1UuY3BwCkBAIC0wLDAgKzEsNDEg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvTGluZUJyZWFrSXRlcmF0b3JQb29sSUNV
Lmg+CisKK25hbWVzcGFjZSBXVEYgeworCitMaW5lQnJlYWtJdGVyYXRvclBvb2wmIExpbmVCcmVh
a0l0ZXJhdG9yUG9vbDo6c2hhcmVkUG9vbCgpCit7CisgICAgc3RhdGljIExhenlOZXZlckRlc3Ry
b3llZDxXVEY6OlRocmVhZFNwZWNpZmljPExpbmVCcmVha0l0ZXJhdG9yUG9vbD4+IHBvb2w7Cisg
ICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7CisgICAgc3RkOjpjYWxsX29uY2Uob25j
ZUtleSwgWyZdIHsKKyAgICAgICAgcG9vbC5jb25zdHJ1Y3QoKTsKKyAgICB9KTsKKyAgICByZXR1
cm4gKnBvb2wuZ2V0KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvdGV4dC9MaW5lQnJlYWtJdGVyYXRvclBvb2xJQ1UuaCBiL1NvdXJjZS9XVEYv
d3RmL3RleHQvTGluZUJyZWFrSXRlcmF0b3JQb29sSUNVLmgKaW5kZXggYzc2ZTlkYzllZDU2Mzli
MmY4ODc4NDUyNzYyNzhiMDM3NzFmMmU0OC4uYjE4OTMxMjUxYjIxZmRmMzQ0ODI3OWZkMzBlODQ1
ZTU3OWI1ZDVmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9MaW5lQnJlYWtJdGVy
YXRvclBvb2xJQ1UuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0xpbmVCcmVha0l0ZXJhdG9y
UG9vbElDVS5oCkBAIC00MSwxMSArNDEsNyBAQCBjbGFzcyBMaW5lQnJlYWtJdGVyYXRvclBvb2wg
ewogcHVibGljOgogICAgIExpbmVCcmVha0l0ZXJhdG9yUG9vbCgpID0gZGVmYXVsdDsKIAotICAg
IHN0YXRpYyBMaW5lQnJlYWtJdGVyYXRvclBvb2wmIHNoYXJlZFBvb2woKQotICAgIHsKLSAgICAg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFdURjo6VGhyZWFkU3BlY2lmaWM8TGluZUJyZWFrSXRl
cmF0b3JQb29sPj4gcG9vbDsKLSAgICAgICAgcmV0dXJuICpwb29sLmdldCgpOwotICAgIH0KKyAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIExpbmVCcmVha0l0ZXJhdG9yUG9vbCYgc2hhcmVk
UG9vbCgpOwogCiAgICAgc3RhdGljIEF0b21TdHJpbmcgbWFrZUxvY2FsZVdpdGhCcmVha0tleXdv
cmQoY29uc3QgQXRvbVN0cmluZyYgbG9jYWxlLCBMaW5lQnJlYWtJdGVyYXRvck1vZGUgbW9kZSkK
ICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuY3BwIGIv
U291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmNwcAppbmRleCA0MWZjN2E2Yjc5ZDViZmJi
ZmQwMDMxZTBkOTI1ZDRlMTk0NzBkZWMzLi44MGY4MGNiNzc3ZmRlMzc4N2E4YWE3MTJmNTY3OWY5
YTFhOWExZDEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuY3Bw
CisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5jcHAKQEAgLTM3NSw3ICszNzUs
MTEgQEAgc3RhdGljIExvY2sgdW5kZXJseWluZ1N0cmluZ3NNdXRleDsKIAogc3RhdGljIEhhc2hN
YXA8Y29uc3QgU3RyaW5nSW1wbCosIFN0cmluZ1ZpZXc6OlVuZGVybHlpbmdTdHJpbmcqPiYgdW5k
ZXJseWluZ1N0cmluZ3MoKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoTWFwPGNv
bnN0IFN0cmluZ0ltcGwqLCBTdHJpbmdWaWV3OjpVbmRlcmx5aW5nU3RyaW5nKj4+IG1hcDsKKyAg
ICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPEhhc2hNYXA8Y29uc3QgU3RyaW5nSW1wbCosIFN0
cmluZ1ZpZXc6OlVuZGVybHlpbmdTdHJpbmcqPj4gbWFwOworICAgIHN0YXRpYyBzdGQ6Om9uY2Vf
ZmxhZyBvbmNlS2V5OworICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsmXSB7CisgICAgICAg
IG1hcC5jb25zdHJ1Y3QoKTsKKyAgICB9KTsKICAgICByZXR1cm4gbWFwOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmNwcCBiL1NvdXJjZS9X
VEYvd3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuY3BwCmluZGV4IDNiNDMxYWUyNTAwYWUzMmM5
NGZmZTk0OTE0ZWJkNTA4MWNiYmYwZDMuLmMyYzViMjYzODg2NzIzNTY4OTI5NDFmYzZjM2M3NDJj
OWQzNjgwYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0
b3IuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuY3BwCkBA
IC0zMSw2ICszMSwxNiBAQAogCiBuYW1lc3BhY2UgV1RGIHsKIAorVGV4dEJyZWFrSXRlcmF0b3JD
YWNoZSYgVGV4dEJyZWFrSXRlcmF0b3JDYWNoZTo6c2luZ2xldG9uKCkKK3sKKyAgICBzdGF0aWMg
TGF6eU5ldmVyRGVzdHJveWVkPFRleHRCcmVha0l0ZXJhdG9yQ2FjaGU+IGNhY2hlOworICAgIHN0
YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlS2V5OworICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXks
IFsmXSB7CisgICAgICAgIGNhY2hlLmNvbnN0cnVjdCgpOworICAgIH0pOworICAgIHJldHVybiBj
YWNoZS5nZXQoKTsKK30KKwogI2lmICFQTEFURk9STShNQUMpICYmICFQTEFURk9STShJT1NfRkFN
SUxZKQogCiBzdGF0aWMgVmFyaWFudDxUZXh0QnJlYWtJdGVyYXRvcklDVSwgVGV4dEJyZWFrSXRl
cmF0b3JQbGF0Zm9ybT4gbWFwTW9kZVRvQmFja2luZ0l0ZXJhdG9yKFN0cmluZ1ZpZXcgc3RyaW5n
LCBUZXh0QnJlYWtJdGVyYXRvcjo6TW9kZSBtb2RlLCBjb25zdCBBdG9tU3RyaW5nJiBsb2NhbGUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmggYi9T
b3VyY2UvV1RGL3d0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmgKaW5kZXggYTIwMjJlNGFlNjYz
NmY4NTc4Y2MxYTJiNDNiNTA2MjFlNjcyZjVhNi4uODkxOWEwZDM3NGUzNzE0MTg1MGI5NmQ5ZjBi
YmE3YjI1M2IxMzQ2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9UZXh0QnJlYWtJ
dGVyYXRvci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuaApA
QCAtMjEsNiArMjEsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgPG11dGV4PgogI2lu
Y2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVmlldy5oPgpAQCAtMTEyLDE0ICsxMTMsMTAgQEAgY2xh
c3MgVGV4dEJyZWFrSXRlcmF0b3JDYWNoZSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiAvLyBVc2UgQ2FjaGVkVGV4dEJyZWFrSXRlcmF0b3IgaW5zdGVhZCBvZiBkZWFsaW5nIHdpdGgg
dGhlIGNhY2hlIGRpcmVjdGx5LgogcHJpdmF0ZToKLSAgICBmcmllbmQgY2xhc3MgTmV2ZXJEZXN0
cm95ZWQ8VGV4dEJyZWFrSXRlcmF0b3JDYWNoZT47CisgICAgZnJpZW5kIGNsYXNzIExhenlOZXZl
ckRlc3Ryb3llZDxUZXh0QnJlYWtJdGVyYXRvckNhY2hlPjsKICAgICBmcmllbmQgY2xhc3MgQ2Fj
aGVkVGV4dEJyZWFrSXRlcmF0b3I7CiAKLSAgICBzdGF0aWMgVGV4dEJyZWFrSXRlcmF0b3JDYWNo
ZSYgc2luZ2xldG9uKCkKLSAgICB7Ci0gICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxUZXh0
QnJlYWtJdGVyYXRvckNhY2hlPiBjYWNoZTsKLSAgICAgICAgcmV0dXJuIGNhY2hlLmdldCgpOwot
ICAgIH0KKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFRleHRCcmVha0l0ZXJhdG9yQ2Fj
aGUmIHNpbmdsZXRvbigpOwogCiAgICAgVGV4dEJyZWFrSXRlcmF0b3JDYWNoZShjb25zdCBUZXh0
QnJlYWtJdGVyYXRvckNhY2hlJikgPSBkZWxldGU7CiAgICAgVGV4dEJyZWFrSXRlcmF0b3JDYWNo
ZShUZXh0QnJlYWtJdGVyYXRvckNhY2hlJiYpID0gZGVsZXRlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi93dGYvdGhyZWFkcy9TaWduYWxzLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RocmVhZHMvU2ln
bmFscy5jcHAKaW5kZXggMmJjNGRmYWFhYmVjNWZkZDgyNjcxYjRhZjkxMWJjMTA1YjkxYmQ4My4u
OTU2MjI2NjE1ZmQxMzc5NzliZDZiODc2MDlhYTFmOGEzNDI2NWUwZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvdGhyZWFkcy9TaWduYWxzLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90aHJl
YWRzL1NpZ25hbHMuY3BwCkBAIC0yNTgsMTQgKzI1OCwxMyBAQCBpbmxpbmUgdm9pZCBzZXRFeGNl
cHRpb25Qb3J0cyhjb25zdCBBYnN0cmFjdExvY2tlciYgdGhyZWFkR3JvdXBMb2NrZXIsIFRocmVh
ZCYgdAogCiBzdGF0aWMgVGhyZWFkR3JvdXAmIGFjdGl2ZVRocmVhZHMoKQogeworICAgIHN0YXRp
YyBMYXp5TmV2ZXJEZXN0cm95ZWQ8c3RkOjpzaGFyZWRfcHRyPFRocmVhZEdyb3VwPj4gYWN0aXZl
VGhyZWFkczsKICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgaW5pdGlhbGl6ZUtleTsKLSAgICBz
dGF0aWMgVGhyZWFkR3JvdXAqIGFjdGl2ZVRocmVhZHNQdHIgPSBudWxscHRyOwogICAgIHN0ZDo6
Y2FsbF9vbmNlKGluaXRpYWxpemVLZXksIFsmXSB7CiAgICAgICAgIENvbmZpZzo6QXNzZXJ0Tm90
RnJvemVuU2NvcGUgYXNzZXJ0U2NvcGU7Ci0gICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxz
dGQ6OnNoYXJlZF9wdHI8VGhyZWFkR3JvdXA+PiBhY3RpdmVUaHJlYWRzIHsgVGhyZWFkR3JvdXA6
OmNyZWF0ZSgpIH07Ci0gICAgICAgIGFjdGl2ZVRocmVhZHNQdHIgPSBhY3RpdmVUaHJlYWRzLmdl
dCgpLmdldCgpOworICAgICAgICBhY3RpdmVUaHJlYWRzLmNvbnN0cnVjdChUaHJlYWRHcm91cDo6
Y3JlYXRlKCkpOwogICAgIH0pOwotICAgIHJldHVybiAqYWN0aXZlVGhyZWFkc1B0cjsKKyAgICBy
ZXR1cm4gKCphY3RpdmVUaHJlYWRzLmdldCgpKTsKIH0KIAogdm9pZCByZWdpc3RlclRocmVhZEZv
ck1hY2hFeGNlcHRpb25IYW5kbGluZyhUaHJlYWQmIHRocmVhZCkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>406659</attachid>
            <date>2020-08-15 01:18:14 -0700</date>
            <delta_ts>2020-08-15 01:34:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215535-20200815011813.patch</filename>
            <type>text/plain</type>
            <size>23542</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY1NzI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGE0Yzg5NTEwNTFhZDNkZTVmYzkyOTIz
Nzc2ODBmOTM0NjdkNmQ4NTQuLmIwMWRhM2IyNWZiNjM0OTg2YzIxMGYzMDY4MGRjOTczZmM2YjAw
YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNTYgQEAKKzIwMjAtMDgtMTUgIFl1c3VrZSBTdXp1a2kgIDx5c3V6
dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBVc2Ugc3RkOjpjYWxsX29uY2UgKyBMYXp5TmV2ZXJE
ZXN0cm95ZWQgdG8gaW5pdGlhbGl6ZSBjb21wbGV4IGRhdGEgc3RydWN0dXJlcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE1NTM1CisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS82Njc3NDI2Nj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBOZXZlckRlc3Ryb3llZDw+IGlzIG5vdCB0aHJlYWQtc2FmZSBpbiBE
YXJ3aW4gYnVpbGQgc2luY2UgaXQgaXMgbm90IHVzaW5nIEMrKzExIHRocmVhZC1zYWZlIHN0YXRp
YyB2YXJpYWJsZSBzZW1hbnRpY3MuCisgICAgICAgIFRoaXMgcGF0Y2ggdXNlcyBMYXp5TmV2ZXJE
ZXN0cm95ZWQgYW5kIGNhbGxfb25jZSB0byBpbml0aWFsaXplIGNvbXBsZXggZGF0YSBzdHJ1Y3R1
cmVzIHNvIHRoYXQgd2UgY2FuIGVuc3VyZSB0aGV5IGFyZQorICAgICAgICBpbml0aWFsaXplZCBh
dG9taWNhbGx5LgorCisgICAgICAgIFdlIGFsc28gbW92ZSBzb21lIG9mIGBzaW5nbGV0b25gIGRl
ZmluaXRpb25zIGZyb20gaGVhZGVycyB0byBjcHAgZmlsZXMuIFRoaXMgaXMgaW1wb3J0YW50IHNp
bmNlIHRoaXMgZW5zdXJlcyB0aGF0IHNpbmdsZXRvbgorICAgICAgICBpcyBvbmx5IG9uZSBpbnN0
YW5jZSB3aGljaCBpcyBnZW5lcmF0ZWQgaW4gb25lIHRyYW5zbGF0aW9uIHVuaXQuCisKKyAgICAg
ICAgKiBXVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiB3dGYvQ01ha2VM
aXN0cy50eHQ6CisgICAgICAgICogd3RmL0Zhc3RNYWxsb2MuY3BwOgorICAgICAgICAoV1RGOjpN
YWxsb2NDYWxsVHJhY2tlcjo6c2luZ2xldG9uKToKKyAgICAgICAgKiB3dGYvTGFuZ3VhZ2UuY3Bw
OgorICAgICAgICAoV1RGOjpvYnNlcnZlck1hcCk6CisgICAgICAgIChXVEY6OnByZWZlcnJlZExh
bmd1YWdlc092ZXJyaWRlKToKKyAgICAgICAgKiB3dGYvTG9nZ2VyLmNwcDoKKyAgICAgICAgKFdU
Rjo6TG9nZ2VyOjpvYnNlcnZlcnMpOgorICAgICAgICAqIHd0Zi9Mb2dnZXIuaDoKKyAgICAgICAg
KFdURjo6TG9nZ2VyOjpvYnNlcnZlckxvY2spOgorICAgICAgICAoV1RGOjpMb2dnZXI6Om9ic2Vy
dmVycyk6IERlbGV0ZWQuCisgICAgICAgICogd3RmL01lbW9yeVByZXNzdXJlSGFuZGxlci5jcHA6
CisgICAgICAgIChXVEY6Ok1lbW9yeVByZXNzdXJlSGFuZGxlcjo6c2luZ2xldG9uKToKKyAgICAg
ICAgKiB3dGYvTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmg6CisgICAgICAgICogd3RmL1J1bkxvb3Au
Y3BwOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpjdXJyZW50KToKKyAgICAgICAgKiB3dGYvVGhy
ZWFkaW5nLmNwcDoKKyAgICAgICAgKFdURjo6VGhyZWFkOjppbml0aWFsaXplSW5UaHJlYWQpOgor
ICAgICAgICAqIHd0Zi9VUkwuY3BwOgorICAgICAgICAoV1RGOjphYm91dEJsYW5rVVJMKToKKyAg
ICAgICAgKFdURjo6YWJvdXRTcmNEb2NVUkwpOgorICAgICAgICAqIHd0Zi9jZi9MYW5ndWFnZUNG
LmNwcDoKKyAgICAgICAgKFdURjo6cHJlZmVycmVkTGFuZ3VhZ2VzKToKKyAgICAgICAgKiB3dGYv
Y29jb2EvTlNVUkxFeHRyYXMubW06CisgICAgICAgIChXVEY6OnJhbmdlT2ZVUkxTY2hlbWUpOgor
ICAgICAgICAqIHd0Zi90ZXh0L0xpbmVCcmVha0l0ZXJhdG9yUG9vbElDVS5jcHA6IENvcGllZCBm
cm9tIFNvdXJjZS9XVEYvd3RmL0xvZ2dlci5jcHAuCisgICAgICAgIChXVEY6OkxpbmVCcmVha0l0
ZXJhdG9yUG9vbDo6c2hhcmVkUG9vbCk6CisgICAgICAgICogd3RmL3RleHQvTGluZUJyZWFrSXRl
cmF0b3JQb29sSUNVLmg6CisgICAgICAgIChXVEY6OkxpbmVCcmVha0l0ZXJhdG9yUG9vbDo6c2hh
cmVkUG9vbCk6IERlbGV0ZWQuCisgICAgICAgICogd3RmL3RleHQvU3RyaW5nVmlldy5jcHA6Cisg
ICAgICAgICogd3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuY3BwOgorICAgICAgICAoV1RGOjpU
ZXh0QnJlYWtJdGVyYXRvckNhY2hlOjpzaW5nbGV0b24pOgorICAgICAgICAqIHd0Zi90ZXh0L1Rl
eHRCcmVha0l0ZXJhdG9yLmg6CisgICAgICAgIChXVEY6OlRleHRCcmVha0l0ZXJhdG9yQ2FjaGU6
OnNpbmdsZXRvbik6IERlbGV0ZWQuCisgICAgICAgICogd3RmL3RocmVhZHMvU2lnbmFscy5jcHA6
CisgICAgICAgIChXVEY6OmFjdGl2ZVRocmVhZHMpOgorCiAyMDIwLTA4LTExICBXZW5zb24gSHNp
ZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFRleHQgaW5wdXQgYXV0b2Nv
cnJlY3Q9Im9mZiIgYXR0cmlidXRlIGlnbm9yZWQgb24gTWFjCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dURi9XVEYueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAxNGJhMDRjMDQ3YTQxZDlkNWEzZDY0YzJlODgxZTQw
ZDAwYzM5ZDE1Li4yODdmN2JmNTZkYjE4MTk5YzEyZmE5MjY0MDYzNzUwNGE0ODA1YzU3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE3OCw2ICsxNzgsNyBA
QAogCQlFMzhENkUyNzFGNTUyMkUzMDBBNzVDQzQgLyogU3RyaW5nQnVpbGRlckpTT04uY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM4RDZFMjYxRjU1
MjJFMzAwQTc1Q0M0IC8qIFN0cmluZ0J1aWxkZXJKU09OLmNwcCAqLzsgfTsKIAkJRTM5MkZBMjcy
MkU5MkJGRjAwRUNEQzczIC8qIFJlc291cmNlVXNhZ2VDb2NvYS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzkyRkEyNjIyRTkyQkZGMDBFQ0RDNzMg
LyogUmVzb3VyY2VVc2FnZUNvY29hLmNwcCAqLzsgfTsKIAkJRTNBMzJCQzQxRkM4MzBFMjAwN0Q3
RTc2IC8qIEpTVmFsdWVNYWxsb2MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTNBMzJCQzIxRkM4MzBFMjAwN0Q3RTc2IC8qIEpTVmFsdWVNYWxsb2Mu
Y3BwICovOyB9OworCQlFM0I4RTQxRDI0RTdDRTkyMDAzNjU1RDggLyogTGluZUJyZWFrSXRlcmF0
b3JQb29sSUNVLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEUzQjhFNDFDMjRFN0NFOTIwMDM2NTVEOCAvKiBMaW5lQnJlYWtJdGVyYXRvclBvb2xJQ1Uu
Y3BwICovOyB9OwogCQlFM0JFMDlBNzI0QTU4NTREMDA5REYyQjQgLyogSUNVSGVscGVycy5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0JFMDlBNjI0
QTU4NTQ1MDA5REYyQjQgLyogSUNVSGVscGVycy5jcHAgKi87IH07CiAJCUU0QTBBRDM5MUE5NjI0
NTUwMDUzNkRGNiAvKiBXb3JrUXVldWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTRBMEFEMzcxQTk2MjQ1NTAwNTM2REY2IC8qIFdvcmtRdWV1ZS5j
cHAgKi87IH07CiAJCUU0QTBBRDNEMUE5NjI1M0MwMDUzNkRGNiAvKiBXb3JrUXVldWVDb2NvYS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNEEwQUQz
QzFBOTYyNTNDMDA1MzZERjYgLyogV29ya1F1ZXVlQ29jb2EuY3BwICovOyB9OwpAQCAtNzI4LDYg
KzcyOSw3IEBACiAJCUUzOTJGQTI2MjJFOTJCRkYwMEVDREM3MyAvKiBSZXNvdXJjZVVzYWdlQ29j
b2EuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVzb3VyY2VVc2Fn
ZUNvY29hLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTNBMzJCQzIxRkM4MzBF
MjAwN0Q3RTc2IC8qIEpTVmFsdWVNYWxsb2MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSlNWYWx1ZU1hbGxvYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUUzQTMyQkMzMUZDODMwRTIwMDdEN0U3NiAvKiBKU1ZhbHVlTWFsbG9jLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTVmFsdWVNYWxsb2MuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJRTNCOEU0MUMyNEU3Q0U5MjAwMzY1NUQ4IC8qIExpbmVCcmVha0l0ZXJh
dG9yUG9vbElDVS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMaW5l
QnJlYWtJdGVyYXRvclBvb2xJQ1UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlF
M0JFMDlBNjI0QTU4NTQ1MDA5REYyQjQgLyogSUNVSGVscGVycy5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBJQ1VIZWxwZXJzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTNDRjc2
OTAyMTE1RDZCQTAwOTFERTQ4IC8qIENvbXBhY3RQb2ludGVyVHVwbGUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQ29tcGFjdFBvaW50ZXJUdXBsZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlFM0UxNTgyNTFFQURBNTNDMDA0QTA3OUQgLyogU3lzdGVtRnJlZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTeXN0ZW1GcmVlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMzgzLDYgKzEzODUsNyBAQAogCQkJCTUwREUzNUY0MjE1
QkIwMTUwMEI5NzlDNyAvKiBFeHRlcm5hbFN0cmluZ0ltcGwuaCAqLywKIAkJCQkyNjE0N0IwODE1
RERDQ0RDMDBEREI5MDcgLyogSW50ZWdlclRvU3RyaW5nQ29udmVyc2lvbi5oICovLAogCQkJCTkz
QUM5MUE3MTg5NDJGQzQwMDI0NDkzOSAvKiBMQ2hhci5oICovLAorCQkJCUUzQjhFNDFDMjRFN0NF
OTIwMDM2NTVEOCAvKiBMaW5lQnJlYWtJdGVyYXRvclBvb2xJQ1UuY3BwICovLAogCQkJCTFDMTgx
QzgxMUQzMDc5N0MwMEY1RkExNiAvKiBMaW5lQnJlYWtJdGVyYXRvclBvb2xJQ1UuaCAqLywKIAkJ
CQlDMkJDRkM1MzFGNjIxRjNGMDBDOTIyMkMgLyogTGluZUVuZGluZy5jcHAgKi8sCiAJCQkJQzJC
Q0ZDNTQxRjYyMUYzRjAwQzkyMjJDIC8qIExpbmVFbmRpbmcuaCAqLywKQEAgLTE2ODEsNiArMTY4
NCw3IEBACiAJCQkJQzJCQ0ZDNDAxRjYxRDEzMDAwQzkyMjJDIC8qIExhbmd1YWdlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUMyQkNGQzQyMUY2MUQ2MTYwMEM5MjIyQyAvKiBMYW5ndWFnZUNGLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTFDNTAzQkU2MjNBQUUwQUUwMDcyRTY2QiAvKiBMYW5ndWFn
ZUNvY29hLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJRTNCOEU0MUQyNEU3Q0U5MjAwMzY1NUQ4IC8q
IExpbmVCcmVha0l0ZXJhdG9yUG9vbElDVS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDMkJDRkM1
NTFGNjIxRjNGMDBDOTIyMkMgLyogTGluZUVuZGluZy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkw
RkUxNjQ2QTFCNkZGQzk2MDA0MDBFN0MgLyogTG9jay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkw
RjYwRjMyRjFERkNCRDFCMDA0MTZENkMgLyogTG9ja2VkUHJpbnRTdHJlYW0uY3BwIGluIFNvdXJj
ZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dCBiL1NvdXJj
ZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CmluZGV4IDU2NGNhOTFkOWU2NTc5MjJkZjIyMTc5YzMz
NWMwZmVhODJlNjBkY2EuLjEwOWIwZDlmN2MyN2M2MTVhZWJmZTViNTZhNWQyNWZjMzY4NGNmZmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9X
VEYvd3RmL0NNYWtlTGlzdHMudHh0CkBAIC00NzYsNiArNDc2LDcgQEAgc2V0KFdURl9TT1VSQ0VT
CiAgICAgdGV4dC9CYXNlNjQuY3BwCiAgICAgdGV4dC9DU3RyaW5nLmNwcAogICAgIHRleHQvRXh0
ZXJuYWxTdHJpbmdJbXBsLmNwcAorICAgIHRleHQvTGluZUJyZWFrSXRlcmF0b3JQb29sSUNVLmNw
cAogICAgIHRleHQvTGluZUVuZGluZy5jcHAKICAgICB0ZXh0L1N0cmluZ0J1ZmZlci5jcHAKICAg
ICB0ZXh0L1N0cmluZ0J1aWxkZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GYXN0
TWFsbG9jLmNwcCBiL1NvdXJjZS9XVEYvd3RmL0Zhc3RNYWxsb2MuY3BwCmluZGV4IDgzNGIxOGU4
MDhjYjBlZjllZTM2N2IwZGExMDI3YzAyYTc2OTA2Y2UuLjRmMWYxNDZkMTA1Mjg0MGNlNzIxZDVm
MmFhYjZlNWM1ZmFlMmNlNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0Zhc3RNYWxsb2Mu
Y3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL0Zhc3RNYWxsb2MuY3BwCkBAIC0zNDAsNyArMzQwLDEx
IEBAIGNsYXNzIE1hbGxvY0NhbGxUcmFja2VyIHsKIE1hbGxvY0NhbGxUcmFja2VyJiBNYWxsb2ND
YWxsVHJhY2tlcjo6c2luZ2xldG9uKCkKIHsKICAgICBBdm9pZFJlY29yZGluZ1Njb3BlIGF2b2lk
UmVjb3JkaW5nOwotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxNYWxsb2NDYWxsVHJhY2tlcj4g
dHJhY2tlcjsKKyAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1hbGxvY0NhbGxUcmFja2Vy
PiB0cmFja2VyOworICAgIHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7CisgICAgc3RkOjpjYWxsX29u
Y2Uob25jZUtleSwgWyZdIHsKKyAgICAgICAgdHJhY2tlci5jb25zdHJ1Y3QoKTsKKyAgICB9KTsK
ICAgICByZXR1cm4gdHJhY2tlcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvTGFu
Z3VhZ2UuY3BwIGIvU291cmNlL1dURi93dGYvTGFuZ3VhZ2UuY3BwCmluZGV4IGFmOWMwN2E3NzZk
YzZlN2U1MGUxNjRkNGZkZWJhMjM1MjE4M2Y3NDIuLmE5YWQxOTEwZDNmYjY2ZDAzYjcyZmVkMmRh
MDE2YWMzNWE1MmQyNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0xhbmd1YWdlLmNwcAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi9MYW5ndWFnZS5jcHAKQEAgLTQxLDcgKzQxLDExIEBAIHN0YXRp
YyBMb2NrIHVzZXJQcmVmZXJyZWRMYW5ndWFnZXNNdXRleDsKIHR5cGVkZWYgSGFzaE1hcDx2b2lk
KiwgTGFuZ3VhZ2VDaGFuZ2VPYnNlcnZlckZ1bmN0aW9uPiBPYnNlcnZlck1hcDsKIHN0YXRpYyBP
YnNlcnZlck1hcCYgb2JzZXJ2ZXJNYXAoKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxP
YnNlcnZlck1hcD4gbWFwOworICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8T2JzZXJ2ZXJN
YXA+IG1hcDsKKyAgICBzdGQ6Om9uY2VfZmxhZyBvbmNlS2V5OworICAgIHN0ZDo6Y2FsbF9vbmNl
KG9uY2VLZXksIFsmXSB7CisgICAgICAgIG1hcC5jb25zdHJ1Y3QoKTsKKyAgICB9KTsKICAgICBy
ZXR1cm4gbWFwLmdldCgpOwogfQogCkBAIC03NSw3ICs3OSwxMSBAQCBTdHJpbmcgZGVmYXVsdExh
bmd1YWdlKCkKIAogc3RhdGljIFZlY3RvcjxTdHJpbmc+JiBwcmVmZXJyZWRMYW5ndWFnZXNPdmVy
cmlkZSgpCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFZlY3RvcjxTdHJpbmc+PiBvdmVy
cmlkZTsKKyAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPFZlY3RvcjxTdHJpbmc+PiBvdmVy
cmlkZTsKKyAgICBzdGQ6Om9uY2VfZmxhZyBvbmNlS2V5OworICAgIHN0ZDo6Y2FsbF9vbmNlKG9u
Y2VLZXksIFsmXSB7CisgICAgICAgIG92ZXJyaWRlLmNvbnN0cnVjdCgpOworICAgIH0pOwogICAg
IHJldHVybiBvdmVycmlkZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvTG9nZ2Vy
LmNwcCBiL1NvdXJjZS9XVEYvd3RmL0xvZ2dlci5jcHAKaW5kZXggN2ZmMTIzMDMwZGU1MDcxMDkz
MjhmYjUwNWFiMzFkMzhlNGUxNGRhNi4uNmQ5YmJiYTJiMjg1MTgzMmVhZjZmMDY1M2RmY2FkYzRh
OGIxOGIxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvTG9nZ2VyLmNwcAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi9Mb2dnZXIuY3BwCkBAIC0yNiwxMSArMjYsMTQgQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJMb2dnZXIuaCIKIAorI2luY2x1ZGUgPG11dGV4PgogI2luY2x1ZGUg
PHd0Zi9IZXhOdW1iZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFt
ZXNwYWNlIFdURiB7CiAKK0xvY2sgbG9nZ2VyT2JzZXJ2ZXJMb2NrIHsgfTsKKwogU3RyaW5nIExv
Z2dlcjo6TG9nU2l0ZUlkZW50aWZpZXI6OnRvU3RyaW5nKCkgY29uc3QKIHsKICAgICBpZiAoY2xh
c3NOYW1lKQpAQCAtNDMsNCArNDYsMTQgQEAgU3RyaW5nIExvZ0FyZ3VtZW50PGNvbnN0IHZvaWQq
Pjo6dG9TdHJpbmcoY29uc3Qgdm9pZCogYXJndW1lbnQpCiAgICAgcmV0dXJuIG1ha2VTdHJpbmco
JygnLCBoZXgocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGFyZ3VtZW50KSksICcpJyk7CiB9
CiAKK1ZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPExvZ2dlcjo6T2JzZXJ2ZXI+PiYgTG9n
Z2VyOjpvYnNlcnZlcnMoKQoreworICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8VmVjdG9y
PHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8T2JzZXJ2ZXI+Pj4gb2JzZXJ2ZXJzOworICAgIHN0YXRp
YyBzdGQ6Om9uY2VfZmxhZyBvbmNlS2V5OworICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsm
XSB7CisgICAgICAgIG9ic2VydmVycy5jb25zdHJ1Y3QoKTsKKyAgICB9KTsKKyAgICByZXR1cm4g
b2JzZXJ2ZXJzOworfQorCiB9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL0xvZ2dlci5oIGIvU291cmNlL1dURi93dGYvTG9nZ2VyLmgKaW5kZXggNjNjMWMzOWEx
MWEzNzU0YTI1ZTc4YzE2N2ZlNjA2ZWFmYjk4NzcwYS4uOTE1NjExZTAzMjNhNTUxZmZkNTNmMDA1
YmUzOTI0ZTA2ZWI2YWMyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvTG9nZ2VyLmgKKysr
IGIvU291cmNlL1dURi93dGYvTG9nZ2VyLmgKQEAgLTExMiw2ICsxMTIsOCBAQCBzdHJ1Y3QgQ29u
c29sZUxvZ1ZhbHVlPEFyZ3VtZW50LCBmYWxzZT4gewogICAgIH0KIH07CiAKK1dURl9FWFBPUlRf
UFJJVkFURSBleHRlcm4gTG9jayBsb2dnZXJPYnNlcnZlckxvY2s7CisKIGNsYXNzIExvZ2dlciA6
IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxMb2dnZXI+IHsKICAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShMb2dnZXIpOwogcHVibGljOgpAQCAtMzU5LDE2ICszNjEsMTEgQEAgY2xhc3MgTG9n
Z2VyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPExvZ2dlcj4gewogICAgICAgICAgICAg
b2JzZXJ2ZXIuZGlkTG9nTWVzc2FnZShjaGFubmVsLCBsZXZlbCwgeyBDb25zb2xlTG9nVmFsdWU8
QXJndW1lbnQ+Ojp0b1ZhbHVlKGFyZ3VtZW50cykuLi4gfSk7CiAgICAgfQogCi0gICAgc3RhdGlj
IFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPE9ic2VydmVyPj4mIG9ic2VydmVycygpCi0g
ICAgewotICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VmVjdG9yPHN0ZDo6cmVmZXJlbmNl
X3dyYXBwZXI8T2JzZXJ2ZXI+Pj4gb2JzZXJ2ZXJzOwotICAgICAgICByZXR1cm4gb2JzZXJ2ZXJz
OwotICAgIH0KKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFZlY3RvcjxzdGQ6OnJlZmVy
ZW5jZV93cmFwcGVyPE9ic2VydmVyPj4mIG9ic2VydmVycygpOwogCiAgICAgc3RhdGljIExvY2sm
IG9ic2VydmVyTG9jaygpCiAgICAgewotICAgICAgICBzdGF0aWMgTG9jayBvYnNlcnZlckxvY2s7
Ci0gICAgICAgIHJldHVybiBvYnNlcnZlckxvY2s7CisgICAgICAgIHJldHVybiBsb2dnZXJPYnNl
cnZlckxvY2s7CiAgICAgfQogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL01lbW9yeVBy
ZXNzdXJlSGFuZGxlci5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIu
Y3BwCmluZGV4IGZhNzcyNGQ0MGQzOTg1NmNkN2YyZGFlN2YxNDFhZWVmYzlhYzFmZjkuLmZlOWM5
YTUxN2NmMjFlMTliNmRkZTNmN2RmOGY0NjAxZmVmZjcyZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL01lbW9yeVByZXNzdXJlSGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dURi93dGYvTWVt
b3J5UHJlc3N1cmVIYW5kbGVyLmNwcApAQCAtNDgsNyArNDgsMTEgQEAgV1RGX0VYUE9SVF9QUklW
QVRFIGJvb2wgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpSZWxpZWZMb2dnZXI6OnNfbG9nZ2luZ0Vu
YWJsZWQgPQogCiBNZW1vcnlQcmVzc3VyZUhhbmRsZXImIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6
c2luZ2xldG9uKCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8TWVtb3J5UHJlc3N1cmVI
YW5kbGVyPiBtZW1vcnlQcmVzc3VyZUhhbmRsZXI7CisgICAgc3RhdGljIExhenlOZXZlckRlc3Ry
b3llZDxNZW1vcnlQcmVzc3VyZUhhbmRsZXI+IG1lbW9yeVByZXNzdXJlSGFuZGxlcjsKKyAgICBz
dGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsKKyAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5
LCBbJl0geworICAgICAgICBtZW1vcnlQcmVzc3VyZUhhbmRsZXIuY29uc3RydWN0KCk7CisgICAg
fSk7CiAgICAgcmV0dXJuIG1lbW9yeVByZXNzdXJlSGFuZGxlcjsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmggYi9Tb3VyY2UvV1RGL3d0Zi9N
ZW1vcnlQcmVzc3VyZUhhbmRsZXIuaAppbmRleCA2NDU5ODJjNTczMjJlNGM0ZDUwMzk1OThmNjJl
MDRlODMwNjQ5YTI3Li5jZTViMjgzMzYzYTMxY2U3ZTRiMDI4M2E4OGE5OWQzYWExY2FkOTg5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuaAorKysgYi9T
b3VyY2UvV1RGL3d0Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuaApAQCAtNTgsNyArNTgsNyBAQCB0
eXBlZGVmIFdURjo6RnVuY3Rpb248dm9pZChDcml0aWNhbCwgU3luY2hyb25vdXMpPiBMb3dNZW1v
cnlIYW5kbGVyOwogCiBjbGFzcyBNZW1vcnlQcmVzc3VyZUhhbmRsZXIgewogICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwotICAgIGZyaWVuZCBjbGFzcyBXVEY6Ok5ldmVyRGVzdHJveWVkPE1l
bW9yeVByZXNzdXJlSGFuZGxlcj47CisgICAgZnJpZW5kIGNsYXNzIFdURjo6TGF6eU5ldmVyRGVz
dHJveWVkPE1lbW9yeVByZXNzdXJlSGFuZGxlcj47CiBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyBNZW1vcnlQcmVzc3VyZUhhbmRsZXImIHNpbmdsZXRvbigpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9SdW5Mb29wLmNwcCBiL1NvdXJjZS9XVEYvd3RmL1J1bkxv
b3AuY3BwCmluZGV4IDMyYjIxYTNiYWQzOTgyODhkZjAzOTUxMDI1YjFjYzE1MzU3MzNkYzAuLmM4
NThhMTE2ZmUyZDQ0YTZlZTE1YWQ1YzdlZjUzZDcwMGRmMGI1ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL1J1bkxvb3AuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL1J1bkxvb3AuY3BwCkBA
IC02MCw3ICs2MCwxMSBAQCB2b2lkIFJ1bkxvb3A6OmluaXRpYWxpemVNYWluKCkKIAogUnVuTG9v
cCYgUnVuTG9vcDo6Y3VycmVudCgpCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFRocmVh
ZFNwZWNpZmljPEhvbGRlcj4+IHJ1bkxvb3BIb2xkZXI7CisgICAgc3RhdGljIExhenlOZXZlckRl
c3Ryb3llZDxUaHJlYWRTcGVjaWZpYzxIb2xkZXI+PiBydW5Mb29wSG9sZGVyOworICAgIHN0YXRp
YyBzdGQ6Om9uY2VfZmxhZyBvbmNlS2V5OworICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsm
XSB7CisgICAgICAgIHJ1bkxvb3BIb2xkZXIuY29uc3RydWN0KCk7CisgICAgfSk7CiAgICAgcmV0
dXJuIHJ1bkxvb3BIb2xkZXIuZ2V0KCktPnJ1bkxvb3AoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvVGhyZWFkaW5nLmNwcCBiL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZy5jcHAK
aW5kZXggYTVmM2M1N2NmZDNkMDJkYzZhZDlhMjMxMmY5YjIzZjA5NDViYTBkMy4uMzMxY2IzZTNm
MTBhMGQ5ODk0MjMyMzE4NjBlYWM3YzU0MDFkZGZjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvVGhyZWFkaW5nLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmcuY3BwCkBAIC04
Nyw3ICs4NywxMSBAQCBzdHJ1Y3QgVGhyZWFkOjpOZXdUaHJlYWRDb250ZXh0IDogcHVibGljIFRo
cmVhZFNhZmVSZWZDb3VudGVkPE5ld1RocmVhZENvbnRleHQ+CiAKIEhhc2hTZXQ8VGhyZWFkKj4m
IFRocmVhZDo6YWxsVGhyZWFkcyhjb25zdCBMb2NrSG9sZGVyJikKIHsKLSAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8SGFzaFNldDxUaHJlYWQqPj4gYWxsVGhyZWFkczsKKyAgICBzdGF0aWMgTGF6
eU5ldmVyRGVzdHJveWVkPEhhc2hTZXQ8VGhyZWFkKj4+IGFsbFRocmVhZHM7CisgICAgc3RhdGlj
IHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7CisgICAgc3RkOjpjYWxsX29uY2Uob25jZUtleSwgWyZd
IHsKKyAgICAgICAgYWxsVGhyZWFkcy5jb25zdHJ1Y3QoKTsKKyAgICB9KTsKICAgICByZXR1cm4g
YWxsVGhyZWFkczsKIH0KIApAQCAtMTM0LDcgKzEzOCwxMSBAQCB2b2lkIFRocmVhZDo6aW5pdGlh
bGl6ZUluVGhyZWFkKCkKICNpZiBVU0UoV0VCX1RIUkVBRCkKICAgICAvLyBPbiBpT1MsIG9uZSBB
dG9tU3RyaW5nVGFibGUgaXMgc2hhcmVkIGJldHdlZW4gdGhlIG1haW4gVUkgdGhyZWFkIGFuZCB0
aGUgV2ViVGhyZWFkLgogICAgIGlmIChpc1dlYlRocmVhZCgpIHx8IGlzVUlUaHJlYWQoKSkgewot
ICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbVN0cmluZ1RhYmxlPiBzaGFyZWRTdHJp
bmdUYWJsZTsKKyAgICAgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxBdG9tU3RyaW5nVGFi
bGU+IHNoYXJlZFN0cmluZ1RhYmxlOworICAgICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25j
ZUtleTsKKyAgICAgICAgc3RkOjpjYWxsX29uY2Uob25jZUtleSwgWyZdIHsKKyAgICAgICAgICAg
IHNoYXJlZFN0cmluZ1RhYmxlLmNvbnN0cnVjdCgpOworICAgICAgICB9KTsKICAgICAgICAgbV9j
dXJyZW50QXRvbVN0cmluZ1RhYmxlID0gJnNoYXJlZFN0cmluZ1RhYmxlLmdldCgpOwogICAgIH0K
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVVJMLmNwcCBiL1NvdXJjZS9XVEYv
d3RmL1VSTC5jcHAKaW5kZXggNjUzMzhjZmQ3N2Q0NjdiNWMzNjJlZWRhZTEzMmVjM2FkMGUzM2Y3
YS4uZjBhZTdkMzRmMjVkYzZkMzQ1MmU2MTA4ZjVhOTViM2FhZTA4OTllNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi93dGYvVVJMLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9VUkwuY3BwCkBAIC04
MjAsMjIgKzgyMCwyMiBAQCBib29sIHByb3RvY29sSXNJbkhUVFBGYW1pbHkoU3RyaW5nVmlldyB1
cmwpCiAKIGNvbnN0IFVSTCYgYWJvdXRCbGFua1VSTCgpCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPFVSTD4gc3RhdGljQmxhbmtVUkw7CisgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3ll
ZDxVUkw+IHN0YXRpY0JsYW5rVVJMOwogICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxh
ZzsKICAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywgWyZdIHsKICAgICAgICAgc3RhdGljIGNv
bnN0ZXhwciBjb25zdCBjaGFyKiBhYm91dEJsYW5rID0gImFib3V0OmJsYW5rIjsKLSAgICAgICAg
c3RhdGljQmxhbmtVUkwuZ2V0KCkgPSBVUkwoVVJMKCksIFN0cmluZ0ltcGw6OmNyZWF0ZVN0YXRp
Y1N0cmluZ0ltcGwoYWJvdXRCbGFuaywgc3RybGVuKGFib3V0QmxhbmspKSk7CisgICAgICAgIHN0
YXRpY0JsYW5rVVJMLmNvbnN0cnVjdChVUkwoKSwgU3RyaW5nSW1wbDo6Y3JlYXRlU3RhdGljU3Ry
aW5nSW1wbChhYm91dEJsYW5rLCBzdHJsZW4oYWJvdXRCbGFuaykpKTsKICAgICB9KTsKICAgICBy
ZXR1cm4gc3RhdGljQmxhbmtVUkw7CiB9CiAKIGNvbnN0IFVSTCYgYWJvdXRTcmNEb2NVUkwoKQog
ewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxVUkw+IHN0YXRpY1NyY0RvY1VSTDsKKyAgICBz
dGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPFVSTD4gc3RhdGljU3JjRG9jVVJMOwogICAgIHN0YXRp
YyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKICAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywg
WyZdIHsKICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCBjaGFyKiBhYm91dFNyY0RvYyA9
ICJhYm91dDpzcmNkb2MiOwotICAgICAgICBzdGF0aWNTcmNEb2NVUkwuZ2V0KCkgPSBVUkwoVVJM
KCksIFN0cmluZ0ltcGw6OmNyZWF0ZVN0YXRpY1N0cmluZ0ltcGwoYWJvdXRTcmNEb2MsIHN0cmxl
bihhYm91dFNyY0RvYykpKTsKKyAgICAgICAgc3RhdGljU3JjRG9jVVJMLmNvbnN0cnVjdChVUkwo
KSwgU3RyaW5nSW1wbDo6Y3JlYXRlU3RhdGljU3RyaW5nSW1wbChhYm91dFNyY0RvYywgc3RybGVu
KGFib3V0U3JjRG9jKSkpOwogICAgIH0pOwogICAgIHJldHVybiBzdGF0aWNTcmNEb2NVUkw7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9jZi9MYW5ndWFnZUNGLmNwcCBiL1NvdXJjZS9X
VEYvd3RmL2NmL0xhbmd1YWdlQ0YuY3BwCmluZGV4IDEyMzk2ZGFkNDZmZTQzODg1MTRhNTg3Mzkz
YTY4ZjY1NzE0YTYwYmMuLjQyNWFlYmU4ZjNlZGFkMjU0YWFmMjQ1ODgwZTU4MTRjY2Q5YmNjNmYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL2NmL0xhbmd1YWdlQ0YuY3BwCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL2NmL0xhbmd1YWdlQ0YuY3BwCkBAIC00Miw3ICs0MiwxMSBAQCBzdGF0aWMgTG9j
ayBwcmVmZXJyZWRMYW5ndWFnZXNNdXRleDsKIAogc3RhdGljIFZlY3RvcjxTdHJpbmc+JiBwcmVm
ZXJyZWRMYW5ndWFnZXMoKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxWZWN0b3I8U3Ry
aW5nPj4gbGFuZ3VhZ2VzOworICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8VmVjdG9yPFN0
cmluZz4+IGxhbmd1YWdlczsKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsKKyAg
ICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbJl0geworICAgICAgICBsYW5ndWFnZXMuY29uc3Ry
dWN0KCk7CisgICAgfSk7CiAgICAgcmV0dXJuIGxhbmd1YWdlczsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvY29jb2EvTlNVUkxFeHRyYXMubW0gYi9Tb3VyY2UvV1RGL3d0Zi9jb2Nv
YS9OU1VSTEV4dHJhcy5tbQppbmRleCBhNDVkOGMxMWM3ZWVhNWVkNjk0Y2Q2NWZmMjBlZTk2MjVj
NTk2M2FkLi4yMDllYTViODY2NGExYmEzMTkyZjllYzIzNTM5ZTMwY2UyYzk3YTgyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9OU1VSTEV4dHJhcy5tbQorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9jb2NvYS9OU1VSTEV4dHJhcy5tbQpAQCAtMjksNiArMjksNyBAQAogI2ltcG9ydCAiY29u
ZmlnLmgiCiAjaW1wb3J0ICJOU1VSTEV4dHJhcy5oIgogCisjaW1wb3J0IDxtdXRleD4KICNpbXBv
cnQgPHd0Zi9GdW5jdGlvbi5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogI2ltcG9ydCA8
d3RmL1VSTEhlbHBlcnMuaD4KQEAgLTQyNCw4ICs0MjUsMTIgQEAgTlNSYW5nZSByYW5nZU9mVVJM
U2NoZW1lKE5TU3RyaW5nICpzdHJpbmcpCiAgICAgICAgICBldmVuIG5lZWQgdG8gZW5mb3JjZSB0
aGUgY2hhcmFjdGVyIHNldCBoZXJlLgogICAgICAgICAgKi8KICAgICAgICAgTlNTdHJpbmcgKmFj
Y2VwdGFibGVDaGFyYWN0ZXJzID0gQCJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdo
aWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsuLSI7Ci0gICAgICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxSZXRhaW5QdHI8TlNDaGFyYWN0ZXJTZXQ+PiBJbnZlcnNlU2NoZW1lQ2hhcmFjdGVy
U2V0KFtbTlNDaGFyYWN0ZXJTZXQgY2hhcmFjdGVyU2V0V2l0aENoYXJhY3RlcnNJblN0cmluZzph
Y2NlcHRhYmxlQ2hhcmFjdGVyc10gaW52ZXJ0ZWRTZXRdKTsKLSAgICAgICAgTlNSYW5nZSBpbGxl
Z2FscyA9IFtzdHJpbmcgcmFuZ2VPZkNoYXJhY3RlckZyb21TZXQ6SW52ZXJzZVNjaGVtZUNoYXJh
Y3RlclNldC5nZXQoKS5nZXQoKSBvcHRpb25zOjAgcmFuZ2U6c2NoZW1lXTsKKyAgICAgICAgc3Rh
dGljIExhenlOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8TlNDaGFyYWN0ZXJTZXQ+PiBpbnZlcnNl
U2NoZW1lQ2hhcmFjdGVyU2V0OworICAgICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtl
eTsKKyAgICAgICAgc3RkOjpjYWxsX29uY2Uob25jZUtleSwgWyZdIHsKKyAgICAgICAgICAgIGlu
dmVyc2VTY2hlbWVDaGFyYWN0ZXJTZXQuY29uc3RydWN0KFtbTlNDaGFyYWN0ZXJTZXQgY2hhcmFj
dGVyU2V0V2l0aENoYXJhY3RlcnNJblN0cmluZzphY2NlcHRhYmxlQ2hhcmFjdGVyc10gaW52ZXJ0
ZWRTZXRdKTsKKyAgICAgICAgfSk7CisgICAgICAgIE5TUmFuZ2UgaWxsZWdhbHMgPSBbc3RyaW5n
IHJhbmdlT2ZDaGFyYWN0ZXJGcm9tU2V0OmludmVyc2VTY2hlbWVDaGFyYWN0ZXJTZXQuZ2V0KCku
Z2V0KCkgb3B0aW9uczowIHJhbmdlOnNjaGVtZV07CiAgICAgICAgIGlmIChpbGxlZ2Fscy5sb2Nh
dGlvbiA9PSBOU05vdEZvdW5kKQogICAgICAgICAgICAgcmV0dXJuIHNjaGVtZTsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0xpbmVCcmVha0l0ZXJhdG9yUG9vbElDVS5j
cHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0xpbmVCcmVha0l0ZXJhdG9yUG9vbElDVS5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMGQ5OTBiOTk1MDQ4OTQ0NmVhYTBmZWJlMDc2ZjI2YzdjY2YwNTYyYwotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvTGluZUJyZWFrSXRlcmF0b3JQb29sSUNV
LmNwcApAQCAtMCwwICsxLDQxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L0xpbmVC
cmVha0l0ZXJhdG9yUG9vbElDVS5oPgorCituYW1lc3BhY2UgV1RGIHsKKworTGluZUJyZWFrSXRl
cmF0b3JQb29sJiBMaW5lQnJlYWtJdGVyYXRvclBvb2w6OnNoYXJlZFBvb2woKQoreworICAgIHN0
YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8V1RGOjpUaHJlYWRTcGVjaWZpYzxMaW5lQnJlYWtJdGVy
YXRvclBvb2w+PiBwb29sOworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlS2V5OworICAg
IHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsmXSB7CisgICAgICAgIHBvb2wuY29uc3RydWN0KCk7
CisgICAgfSk7CisgICAgcmV0dXJuICpwb29sLmdldCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBX
VEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvTGluZUJyZWFrSXRlcmF0b3JQb29s
SUNVLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0xpbmVCcmVha0l0ZXJhdG9yUG9vbElDVS5oCmlu
ZGV4IGM3NmU5ZGM5ZWQ1NjM5YjJmODg3ODQ1Mjc2Mjc4YjAzNzcxZjJlNDguLmIxODkzMTI1MWIy
MWZkZjM0NDgyNzlmZDMwZTg0NWU1NzliNWQ1ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L3RleHQvTGluZUJyZWFrSXRlcmF0b3JQb29sSUNVLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4
dC9MaW5lQnJlYWtJdGVyYXRvclBvb2xJQ1UuaApAQCAtNDEsMTEgKzQxLDcgQEAgY2xhc3MgTGlu
ZUJyZWFrSXRlcmF0b3JQb29sIHsKIHB1YmxpYzoKICAgICBMaW5lQnJlYWtJdGVyYXRvclBvb2wo
KSA9IGRlZmF1bHQ7CiAKLSAgICBzdGF0aWMgTGluZUJyZWFrSXRlcmF0b3JQb29sJiBzaGFyZWRQ
b29sKCkKLSAgICB7Ci0gICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxXVEY6OlRocmVhZFNw
ZWNpZmljPExpbmVCcmVha0l0ZXJhdG9yUG9vbD4+IHBvb2w7Ci0gICAgICAgIHJldHVybiAqcG9v
bC5nZXQoKTsKLSAgICB9CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBMaW5lQnJlYWtJ
dGVyYXRvclBvb2wmIHNoYXJlZFBvb2woKTsKIAogICAgIHN0YXRpYyBBdG9tU3RyaW5nIG1ha2VM
b2NhbGVXaXRoQnJlYWtLZXl3b3JkKGNvbnN0IEF0b21TdHJpbmcmIGxvY2FsZSwgTGluZUJyZWFr
SXRlcmF0b3JNb2RlIG1vZGUpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4
dC9TdHJpbmdWaWV3LmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5jcHAKaW5k
ZXggNDFmYzdhNmI3OWQ1YmZiYmZkMDAzMWUwZDkyNWQ0ZTE5NDcwZGVjMy4uODBmODBjYjc3N2Zk
ZTM3ODdhOGFhNzEyZjU2NzlmOWExYTlhMWQxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
dGV4dC9TdHJpbmdWaWV3LmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcu
Y3BwCkBAIC0zNzUsNyArMzc1LDExIEBAIHN0YXRpYyBMb2NrIHVuZGVybHlpbmdTdHJpbmdzTXV0
ZXg7CiAKIHN0YXRpYyBIYXNoTWFwPGNvbnN0IFN0cmluZ0ltcGwqLCBTdHJpbmdWaWV3OjpVbmRl
cmx5aW5nU3RyaW5nKj4mIHVuZGVybHlpbmdTdHJpbmdzKCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8SGFzaE1hcDxjb25zdCBTdHJpbmdJbXBsKiwgU3RyaW5nVmlldzo6VW5kZXJseWlu
Z1N0cmluZyo+PiBtYXA7CisgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxIYXNoTWFwPGNv
bnN0IFN0cmluZ0ltcGwqLCBTdHJpbmdWaWV3OjpVbmRlcmx5aW5nU3RyaW5nKj4+IG1hcDsKKyAg
ICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsKKyAgICBzdGQ6OmNhbGxfb25jZShvbmNl
S2V5LCBbJl0geworICAgICAgICBtYXAuY29uc3RydWN0KCk7CisgICAgfSk7CiAgICAgcmV0dXJu
IG1hcDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9UZXh0QnJlYWtJdGVy
YXRvci5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmNwcAppbmRl
eCAzYjQzMWFlMjUwMGFlMzJjOTRmZmU5NDkxNGViZDUwODFjYmJmMGQzLi5jMmM1YjI2Mzg4Njcy
MzU2ODkyOTQxZmM2YzNjNzQyYzlkMzY4MGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1RleHRC
cmVha0l0ZXJhdG9yLmNwcApAQCAtMzEsNiArMzEsMTYgQEAKIAogbmFtZXNwYWNlIFdURiB7CiAK
K1RleHRCcmVha0l0ZXJhdG9yQ2FjaGUmIFRleHRCcmVha0l0ZXJhdG9yQ2FjaGU6OnNpbmdsZXRv
bigpCit7CisgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxUZXh0QnJlYWtJdGVyYXRvckNh
Y2hlPiBjYWNoZTsKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsKKyAgICBzdGQ6
OmNhbGxfb25jZShvbmNlS2V5LCBbJl0geworICAgICAgICBjYWNoZS5jb25zdHJ1Y3QoKTsKKyAg
ICB9KTsKKyAgICByZXR1cm4gY2FjaGUuZ2V0KCk7Cit9CisKICNpZiAhUExBVEZPUk0oTUFDKSAm
JiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogc3RhdGljIFZhcmlhbnQ8VGV4dEJyZWFrSXRlcmF0
b3JJQ1UsIFRleHRCcmVha0l0ZXJhdG9yUGxhdGZvcm0+IG1hcE1vZGVUb0JhY2tpbmdJdGVyYXRv
cihTdHJpbmdWaWV3IHN0cmluZywgVGV4dEJyZWFrSXRlcmF0b3I6Ok1vZGUgbW9kZSwgY29uc3Qg
QXRvbVN0cmluZyYgbG9jYWxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9UZXh0
QnJlYWtJdGVyYXRvci5oIGIvU291cmNlL1dURi93dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5o
CmluZGV4IGEyMDIyZTRhZTY2MzZmODU3OGNjMWEyYjQzYjUwNjIxZTY3MmY1YTYuLjg5MTlhMGQz
NzRlMzcxNDE4NTBiOTZkOWYwYmJhN2IyNTNiMTM0NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1Rl
eHRCcmVha0l0ZXJhdG9yLmgKQEAgLTIxLDYgKzIxLDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNp
bmNsdWRlIDxtdXRleD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRl
IDx3dGYvVmFyaWFudC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1ZpZXcuaD4KQEAgLTEx
MiwxNCArMTEzLDEwIEBAIGNsYXNzIFRleHRCcmVha0l0ZXJhdG9yQ2FjaGUgewogICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogLy8gVXNlIENhY2hlZFRleHRCcmVha0l0ZXJhdG9yIGluc3Rl
YWQgb2YgZGVhbGluZyB3aXRoIHRoZSBjYWNoZSBkaXJlY3RseS4KIHByaXZhdGU6Ci0gICAgZnJp
ZW5kIGNsYXNzIE5ldmVyRGVzdHJveWVkPFRleHRCcmVha0l0ZXJhdG9yQ2FjaGU+OworICAgIGZy
aWVuZCBjbGFzcyBMYXp5TmV2ZXJEZXN0cm95ZWQ8VGV4dEJyZWFrSXRlcmF0b3JDYWNoZT47CiAg
ICAgZnJpZW5kIGNsYXNzIENhY2hlZFRleHRCcmVha0l0ZXJhdG9yOwogCi0gICAgc3RhdGljIFRl
eHRCcmVha0l0ZXJhdG9yQ2FjaGUmIHNpbmdsZXRvbigpCi0gICAgewotICAgICAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8VGV4dEJyZWFrSXRlcmF0b3JDYWNoZT4gY2FjaGU7Ci0gICAgICAgIHJl
dHVybiBjYWNoZS5nZXQoKTsKLSAgICB9CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBU
ZXh0QnJlYWtJdGVyYXRvckNhY2hlJiBzaW5nbGV0b24oKTsKIAogICAgIFRleHRCcmVha0l0ZXJh
dG9yQ2FjaGUoY29uc3QgVGV4dEJyZWFrSXRlcmF0b3JDYWNoZSYpID0gZGVsZXRlOwogICAgIFRl
eHRCcmVha0l0ZXJhdG9yQ2FjaGUoVGV4dEJyZWFrSXRlcmF0b3JDYWNoZSYmKSA9IGRlbGV0ZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RocmVhZHMvU2lnbmFscy5jcHAgYi9Tb3VyY2Uv
V1RGL3d0Zi90aHJlYWRzL1NpZ25hbHMuY3BwCmluZGV4IDJiYzRkZmFhYWJlYzVmZGQ4MjY3MWI0
YWY5MTFiYzEwNWI5MWJkODMuLjk1NjIyNjYxNWZkMTM3OTc5YmQ2Yjg3NjA5YWExZjhhMzQyNjVl
MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RocmVhZHMvU2lnbmFscy5jcHAKKysrIGIv
U291cmNlL1dURi93dGYvdGhyZWFkcy9TaWduYWxzLmNwcApAQCAtMjU4LDE0ICsyNTgsMTMgQEAg
aW5saW5lIHZvaWQgc2V0RXhjZXB0aW9uUG9ydHMoY29uc3QgQWJzdHJhY3RMb2NrZXImIHRocmVh
ZEdyb3VwTG9ja2VyLCBUaHJlYWQmIHQKIAogc3RhdGljIFRocmVhZEdyb3VwJiBhY3RpdmVUaHJl
YWRzKCkKIHsKKyAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPHN0ZDo6c2hhcmVkX3B0cjxU
aHJlYWRHcm91cD4+IGFjdGl2ZVRocmVhZHM7CiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIGlu
aXRpYWxpemVLZXk7Ci0gICAgc3RhdGljIFRocmVhZEdyb3VwKiBhY3RpdmVUaHJlYWRzUHRyID0g
bnVsbHB0cjsKICAgICBzdGQ6OmNhbGxfb25jZShpbml0aWFsaXplS2V5LCBbJl0gewogICAgICAg
ICBDb25maWc6OkFzc2VydE5vdEZyb3plblNjb3BlIGFzc2VydFNjb3BlOwotICAgICAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8c3RkOjpzaGFyZWRfcHRyPFRocmVhZEdyb3VwPj4gYWN0aXZlVGhy
ZWFkcyB7IFRocmVhZEdyb3VwOjpjcmVhdGUoKSB9OwotICAgICAgICBhY3RpdmVUaHJlYWRzUHRy
ID0gYWN0aXZlVGhyZWFkcy5nZXQoKS5nZXQoKTsKKyAgICAgICAgYWN0aXZlVGhyZWFkcy5jb25z
dHJ1Y3QoVGhyZWFkR3JvdXA6OmNyZWF0ZSgpKTsKICAgICB9KTsKLSAgICByZXR1cm4gKmFjdGl2
ZVRocmVhZHNQdHI7CisgICAgcmV0dXJuICgqYWN0aXZlVGhyZWFkcy5nZXQoKSk7CiB9CiAKIHZv
aWQgcmVnaXN0ZXJUaHJlYWRGb3JNYWNoRXhjZXB0aW9uSGFuZGxpbmcoVGhyZWFkJiB0aHJlYWQp
Cg==
</data>
<flag name="review"
          id="422050"
          type_id="1"
          status="+"
          setter="mark.lam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>406660</attachid>
            <date>2020-08-15 01:42:36 -0700</date>
            <delta_ts>2020-08-15 01:42:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215535-20200815014235.patch</filename>
            <type>text/plain</type>
            <size>23559</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY1NzI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGE0Yzg5NTEwNTFhZDNkZTVmYzkyOTIz
Nzc2ODBmOTM0NjdkNmQ4NTQuLmIwMWRhM2IyNWZiNjM0OTg2YzIxMGYzMDY4MGRjOTczZmM2YjAw
YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNTYgQEAKKzIwMjAtMDgtMTUgIFl1c3VrZSBTdXp1a2kgIDx5c3V6
dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBVc2Ugc3RkOjpjYWxsX29uY2UgKyBMYXp5TmV2ZXJE
ZXN0cm95ZWQgdG8gaW5pdGlhbGl6ZSBjb21wbGV4IGRhdGEgc3RydWN0dXJlcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE1NTM1CisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS82Njc3NDI2Nj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBOZXZlckRlc3Ryb3llZDw+IGlzIG5vdCB0aHJlYWQtc2FmZSBpbiBE
YXJ3aW4gYnVpbGQgc2luY2UgaXQgaXMgbm90IHVzaW5nIEMrKzExIHRocmVhZC1zYWZlIHN0YXRp
YyB2YXJpYWJsZSBzZW1hbnRpY3MuCisgICAgICAgIFRoaXMgcGF0Y2ggdXNlcyBMYXp5TmV2ZXJE
ZXN0cm95ZWQgYW5kIGNhbGxfb25jZSB0byBpbml0aWFsaXplIGNvbXBsZXggZGF0YSBzdHJ1Y3R1
cmVzIHNvIHRoYXQgd2UgY2FuIGVuc3VyZSB0aGV5IGFyZQorICAgICAgICBpbml0aWFsaXplZCBh
dG9taWNhbGx5LgorCisgICAgICAgIFdlIGFsc28gbW92ZSBzb21lIG9mIGBzaW5nbGV0b25gIGRl
ZmluaXRpb25zIGZyb20gaGVhZGVycyB0byBjcHAgZmlsZXMuIFRoaXMgaXMgaW1wb3J0YW50IHNp
bmNlIHRoaXMgZW5zdXJlcyB0aGF0IHNpbmdsZXRvbgorICAgICAgICBpcyBvbmx5IG9uZSBpbnN0
YW5jZSB3aGljaCBpcyBnZW5lcmF0ZWQgaW4gb25lIHRyYW5zbGF0aW9uIHVuaXQuCisKKyAgICAg
ICAgKiBXVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiB3dGYvQ01ha2VM
aXN0cy50eHQ6CisgICAgICAgICogd3RmL0Zhc3RNYWxsb2MuY3BwOgorICAgICAgICAoV1RGOjpN
YWxsb2NDYWxsVHJhY2tlcjo6c2luZ2xldG9uKToKKyAgICAgICAgKiB3dGYvTGFuZ3VhZ2UuY3Bw
OgorICAgICAgICAoV1RGOjpvYnNlcnZlck1hcCk6CisgICAgICAgIChXVEY6OnByZWZlcnJlZExh
bmd1YWdlc092ZXJyaWRlKToKKyAgICAgICAgKiB3dGYvTG9nZ2VyLmNwcDoKKyAgICAgICAgKFdU
Rjo6TG9nZ2VyOjpvYnNlcnZlcnMpOgorICAgICAgICAqIHd0Zi9Mb2dnZXIuaDoKKyAgICAgICAg
KFdURjo6TG9nZ2VyOjpvYnNlcnZlckxvY2spOgorICAgICAgICAoV1RGOjpMb2dnZXI6Om9ic2Vy
dmVycyk6IERlbGV0ZWQuCisgICAgICAgICogd3RmL01lbW9yeVByZXNzdXJlSGFuZGxlci5jcHA6
CisgICAgICAgIChXVEY6Ok1lbW9yeVByZXNzdXJlSGFuZGxlcjo6c2luZ2xldG9uKToKKyAgICAg
ICAgKiB3dGYvTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmg6CisgICAgICAgICogd3RmL1J1bkxvb3Au
Y3BwOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpjdXJyZW50KToKKyAgICAgICAgKiB3dGYvVGhy
ZWFkaW5nLmNwcDoKKyAgICAgICAgKFdURjo6VGhyZWFkOjppbml0aWFsaXplSW5UaHJlYWQpOgor
ICAgICAgICAqIHd0Zi9VUkwuY3BwOgorICAgICAgICAoV1RGOjphYm91dEJsYW5rVVJMKToKKyAg
ICAgICAgKFdURjo6YWJvdXRTcmNEb2NVUkwpOgorICAgICAgICAqIHd0Zi9jZi9MYW5ndWFnZUNG
LmNwcDoKKyAgICAgICAgKFdURjo6cHJlZmVycmVkTGFuZ3VhZ2VzKToKKyAgICAgICAgKiB3dGYv
Y29jb2EvTlNVUkxFeHRyYXMubW06CisgICAgICAgIChXVEY6OnJhbmdlT2ZVUkxTY2hlbWUpOgor
ICAgICAgICAqIHd0Zi90ZXh0L0xpbmVCcmVha0l0ZXJhdG9yUG9vbElDVS5jcHA6IENvcGllZCBm
cm9tIFNvdXJjZS9XVEYvd3RmL0xvZ2dlci5jcHAuCisgICAgICAgIChXVEY6OkxpbmVCcmVha0l0
ZXJhdG9yUG9vbDo6c2hhcmVkUG9vbCk6CisgICAgICAgICogd3RmL3RleHQvTGluZUJyZWFrSXRl
cmF0b3JQb29sSUNVLmg6CisgICAgICAgIChXVEY6OkxpbmVCcmVha0l0ZXJhdG9yUG9vbDo6c2hh
cmVkUG9vbCk6IERlbGV0ZWQuCisgICAgICAgICogd3RmL3RleHQvU3RyaW5nVmlldy5jcHA6Cisg
ICAgICAgICogd3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuY3BwOgorICAgICAgICAoV1RGOjpU
ZXh0QnJlYWtJdGVyYXRvckNhY2hlOjpzaW5nbGV0b24pOgorICAgICAgICAqIHd0Zi90ZXh0L1Rl
eHRCcmVha0l0ZXJhdG9yLmg6CisgICAgICAgIChXVEY6OlRleHRCcmVha0l0ZXJhdG9yQ2FjaGU6
OnNpbmdsZXRvbik6IERlbGV0ZWQuCisgICAgICAgICogd3RmL3RocmVhZHMvU2lnbmFscy5jcHA6
CisgICAgICAgIChXVEY6OmFjdGl2ZVRocmVhZHMpOgorCiAyMDIwLTA4LTExICBXZW5zb24gSHNp
ZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFRleHQgaW5wdXQgYXV0b2Nv
cnJlY3Q9Im9mZiIgYXR0cmlidXRlIGlnbm9yZWQgb24gTWFjCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dURi9XVEYueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAxNGJhMDRjMDQ3YTQxZDlkNWEzZDY0YzJlODgxZTQw
ZDAwYzM5ZDE1Li4yODdmN2JmNTZkYjE4MTk5YzEyZmE5MjY0MDYzNzUwNGE0ODA1YzU3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE3OCw2ICsxNzgsNyBA
QAogCQlFMzhENkUyNzFGNTUyMkUzMDBBNzVDQzQgLyogU3RyaW5nQnVpbGRlckpTT04uY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM4RDZFMjYxRjU1
MjJFMzAwQTc1Q0M0IC8qIFN0cmluZ0J1aWxkZXJKU09OLmNwcCAqLzsgfTsKIAkJRTM5MkZBMjcy
MkU5MkJGRjAwRUNEQzczIC8qIFJlc291cmNlVXNhZ2VDb2NvYS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzkyRkEyNjIyRTkyQkZGMDBFQ0RDNzMg
LyogUmVzb3VyY2VVc2FnZUNvY29hLmNwcCAqLzsgfTsKIAkJRTNBMzJCQzQxRkM4MzBFMjAwN0Q3
RTc2IC8qIEpTVmFsdWVNYWxsb2MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTNBMzJCQzIxRkM4MzBFMjAwN0Q3RTc2IC8qIEpTVmFsdWVNYWxsb2Mu
Y3BwICovOyB9OworCQlFM0I4RTQxRDI0RTdDRTkyMDAzNjU1RDggLyogTGluZUJyZWFrSXRlcmF0
b3JQb29sSUNVLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEUzQjhFNDFDMjRFN0NFOTIwMDM2NTVEOCAvKiBMaW5lQnJlYWtJdGVyYXRvclBvb2xJQ1Uu
Y3BwICovOyB9OwogCQlFM0JFMDlBNzI0QTU4NTREMDA5REYyQjQgLyogSUNVSGVscGVycy5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0JFMDlBNjI0
QTU4NTQ1MDA5REYyQjQgLyogSUNVSGVscGVycy5jcHAgKi87IH07CiAJCUU0QTBBRDM5MUE5NjI0
NTUwMDUzNkRGNiAvKiBXb3JrUXVldWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTRBMEFEMzcxQTk2MjQ1NTAwNTM2REY2IC8qIFdvcmtRdWV1ZS5j
cHAgKi87IH07CiAJCUU0QTBBRDNEMUE5NjI1M0MwMDUzNkRGNiAvKiBXb3JrUXVldWVDb2NvYS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNEEwQUQz
QzFBOTYyNTNDMDA1MzZERjYgLyogV29ya1F1ZXVlQ29jb2EuY3BwICovOyB9OwpAQCAtNzI4LDYg
KzcyOSw3IEBACiAJCUUzOTJGQTI2MjJFOTJCRkYwMEVDREM3MyAvKiBSZXNvdXJjZVVzYWdlQ29j
b2EuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVzb3VyY2VVc2Fn
ZUNvY29hLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTNBMzJCQzIxRkM4MzBF
MjAwN0Q3RTc2IC8qIEpTVmFsdWVNYWxsb2MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSlNWYWx1ZU1hbGxvYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUUzQTMyQkMzMUZDODMwRTIwMDdEN0U3NiAvKiBKU1ZhbHVlTWFsbG9jLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTVmFsdWVNYWxsb2MuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJRTNCOEU0MUMyNEU3Q0U5MjAwMzY1NUQ4IC8qIExpbmVCcmVha0l0ZXJh
dG9yUG9vbElDVS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMaW5l
QnJlYWtJdGVyYXRvclBvb2xJQ1UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlF
M0JFMDlBNjI0QTU4NTQ1MDA5REYyQjQgLyogSUNVSGVscGVycy5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBJQ1VIZWxwZXJzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTNDRjc2
OTAyMTE1RDZCQTAwOTFERTQ4IC8qIENvbXBhY3RQb2ludGVyVHVwbGUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQ29tcGFjdFBvaW50ZXJUdXBsZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlFM0UxNTgyNTFFQURBNTNDMDA0QTA3OUQgLyogU3lzdGVtRnJlZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTeXN0ZW1GcmVlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMzgzLDYgKzEzODUsNyBAQAogCQkJCTUwREUzNUY0MjE1
QkIwMTUwMEI5NzlDNyAvKiBFeHRlcm5hbFN0cmluZ0ltcGwuaCAqLywKIAkJCQkyNjE0N0IwODE1
RERDQ0RDMDBEREI5MDcgLyogSW50ZWdlclRvU3RyaW5nQ29udmVyc2lvbi5oICovLAogCQkJCTkz
QUM5MUE3MTg5NDJGQzQwMDI0NDkzOSAvKiBMQ2hhci5oICovLAorCQkJCUUzQjhFNDFDMjRFN0NF
OTIwMDM2NTVEOCAvKiBMaW5lQnJlYWtJdGVyYXRvclBvb2xJQ1UuY3BwICovLAogCQkJCTFDMTgx
QzgxMUQzMDc5N0MwMEY1RkExNiAvKiBMaW5lQnJlYWtJdGVyYXRvclBvb2xJQ1UuaCAqLywKIAkJ
CQlDMkJDRkM1MzFGNjIxRjNGMDBDOTIyMkMgLyogTGluZUVuZGluZy5jcHAgKi8sCiAJCQkJQzJC
Q0ZDNTQxRjYyMUYzRjAwQzkyMjJDIC8qIExpbmVFbmRpbmcuaCAqLywKQEAgLTE2ODEsNiArMTY4
NCw3IEBACiAJCQkJQzJCQ0ZDNDAxRjYxRDEzMDAwQzkyMjJDIC8qIExhbmd1YWdlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUMyQkNGQzQyMUY2MUQ2MTYwMEM5MjIyQyAvKiBMYW5ndWFnZUNGLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTFDNTAzQkU2MjNBQUUwQUUwMDcyRTY2QiAvKiBMYW5ndWFn
ZUNvY29hLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJRTNCOEU0MUQyNEU3Q0U5MjAwMzY1NUQ4IC8q
IExpbmVCcmVha0l0ZXJhdG9yUG9vbElDVS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDMkJDRkM1
NTFGNjIxRjNGMDBDOTIyMkMgLyogTGluZUVuZGluZy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkw
RkUxNjQ2QTFCNkZGQzk2MDA0MDBFN0MgLyogTG9jay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkw
RjYwRjMyRjFERkNCRDFCMDA0MTZENkMgLyogTG9ja2VkUHJpbnRTdHJlYW0uY3BwIGluIFNvdXJj
ZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dCBiL1NvdXJj
ZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CmluZGV4IDU2NGNhOTFkOWU2NTc5MjJkZjIyMTc5YzMz
NWMwZmVhODJlNjBkY2EuLjEwOWIwZDlmN2MyN2M2MTVhZWJmZTViNTZhNWQyNWZjMzY4NGNmZmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9X
VEYvd3RmL0NNYWtlTGlzdHMudHh0CkBAIC00NzYsNiArNDc2LDcgQEAgc2V0KFdURl9TT1VSQ0VT
CiAgICAgdGV4dC9CYXNlNjQuY3BwCiAgICAgdGV4dC9DU3RyaW5nLmNwcAogICAgIHRleHQvRXh0
ZXJuYWxTdHJpbmdJbXBsLmNwcAorICAgIHRleHQvTGluZUJyZWFrSXRlcmF0b3JQb29sSUNVLmNw
cAogICAgIHRleHQvTGluZUVuZGluZy5jcHAKICAgICB0ZXh0L1N0cmluZ0J1ZmZlci5jcHAKICAg
ICB0ZXh0L1N0cmluZ0J1aWxkZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GYXN0
TWFsbG9jLmNwcCBiL1NvdXJjZS9XVEYvd3RmL0Zhc3RNYWxsb2MuY3BwCmluZGV4IDgzNGIxOGU4
MDhjYjBlZjllZTM2N2IwZGExMDI3YzAyYTc2OTA2Y2UuLmMyMjhkM2IyYTI4YzA2ZWY1ZjIwY2Nh
YmY0ZDljYjUxNzNjNzU3NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0Zhc3RNYWxsb2Mu
Y3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL0Zhc3RNYWxsb2MuY3BwCkBAIC0zNDAsNyArMzQwLDEx
IEBAIGNsYXNzIE1hbGxvY0NhbGxUcmFja2VyIHsKIE1hbGxvY0NhbGxUcmFja2VyJiBNYWxsb2ND
YWxsVHJhY2tlcjo6c2luZ2xldG9uKCkKIHsKICAgICBBdm9pZFJlY29yZGluZ1Njb3BlIGF2b2lk
UmVjb3JkaW5nOwotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxNYWxsb2NDYWxsVHJhY2tlcj4g
dHJhY2tlcjsKKyAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1hbGxvY0NhbGxUcmFja2Vy
PiB0cmFja2VyOworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlS2V5OworICAgIHN0ZDo6
Y2FsbF9vbmNlKG9uY2VLZXksIFsmXSB7CisgICAgICAgIHRyYWNrZXIuY29uc3RydWN0KCk7Cisg
ICAgfSk7CiAgICAgcmV0dXJuIHRyYWNrZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL0xhbmd1YWdlLmNwcCBiL1NvdXJjZS9XVEYvd3RmL0xhbmd1YWdlLmNwcAppbmRleCBhZjlj
MDdhNzc2ZGM2ZTdlNTBlMTY0ZDRmZGViYTIzNTIxODNmNzQyLi5lOTA3MTJmODk1Mjg4MDE3YjE5
NmFkNmEzMjIwNTVjOWY2NTY1ZTBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9MYW5ndWFn
ZS5jcHAKKysrIGIvU291cmNlL1dURi93dGYvTGFuZ3VhZ2UuY3BwCkBAIC00MSw3ICs0MSwxMSBA
QCBzdGF0aWMgTG9jayB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzTXV0ZXg7CiB0eXBlZGVmIEhhc2hN
YXA8dm9pZCosIExhbmd1YWdlQ2hhbmdlT2JzZXJ2ZXJGdW5jdGlvbj4gT2JzZXJ2ZXJNYXA7CiBz
dGF0aWMgT2JzZXJ2ZXJNYXAmIG9ic2VydmVyTWFwKCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8T2JzZXJ2ZXJNYXA+IG1hcDsKKyAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPE9i
c2VydmVyTWFwPiBtYXA7CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7CisgICAg
c3RkOjpjYWxsX29uY2Uob25jZUtleSwgWyZdIHsKKyAgICAgICAgbWFwLmNvbnN0cnVjdCgpOwor
ICAgIH0pOwogICAgIHJldHVybiBtYXAuZ2V0KCk7CiB9CiAKQEAgLTc1LDcgKzc5LDExIEBAIFN0
cmluZyBkZWZhdWx0TGFuZ3VhZ2UoKQogCiBzdGF0aWMgVmVjdG9yPFN0cmluZz4mIHByZWZlcnJl
ZExhbmd1YWdlc092ZXJyaWRlKCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VmVjdG9y
PFN0cmluZz4+IG92ZXJyaWRlOworICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8VmVjdG9y
PFN0cmluZz4+IG92ZXJyaWRlOworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlS2V5Owor
ICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsmXSB7CisgICAgICAgIG92ZXJyaWRlLmNvbnN0
cnVjdCgpOworICAgIH0pOwogICAgIHJldHVybiBvdmVycmlkZTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvTG9nZ2VyLmNwcCBiL1NvdXJjZS9XVEYvd3RmL0xvZ2dlci5jcHAKaW5k
ZXggN2ZmMTIzMDMwZGU1MDcxMDkzMjhmYjUwNWFiMzFkMzhlNGUxNGRhNi4uYzhkODZjMDQ1YTM1
YmJmZWIzMTI0NzNmZWUzOGM5YWQyNjI5YjRhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
TG9nZ2VyLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9Mb2dnZXIuY3BwCkBAIC0yNiwxMSArMjYs
MTQgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJMb2dnZXIuaCIKIAorI2luY2x1
ZGUgPG11dGV4PgogI2luY2x1ZGUgPHd0Zi9IZXhOdW1iZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdURiB7CiAKK0xvY2sgbG9nZ2VyT2JzZXJ2ZXJM
b2NrOworCiBTdHJpbmcgTG9nZ2VyOjpMb2dTaXRlSWRlbnRpZmllcjo6dG9TdHJpbmcoKSBjb25z
dAogewogICAgIGlmIChjbGFzc05hbWUpCkBAIC00Myw0ICs0NiwxNCBAQCBTdHJpbmcgTG9nQXJn
dW1lbnQ8Y29uc3Qgdm9pZCo+Ojp0b1N0cmluZyhjb25zdCB2b2lkKiBhcmd1bWVudCkKICAgICBy
ZXR1cm4gbWFrZVN0cmluZygnKCcsIGhleChyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oYXJn
dW1lbnQpKSwgJyknKTsKIH0KIAorVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8TG9nZ2Vy
OjpPYnNlcnZlcj4+JiBMb2dnZXI6Om9ic2VydmVycygpCit7CisgICAgc3RhdGljIExhenlOZXZl
ckRlc3Ryb3llZDxWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxPYnNlcnZlcj4+PiBvYnNl
cnZlcnM7CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7CisgICAgc3RkOjpjYWxs
X29uY2Uob25jZUtleSwgWyZdIHsKKyAgICAgICAgb2JzZXJ2ZXJzLmNvbnN0cnVjdCgpOworICAg
IH0pOworICAgIHJldHVybiBvYnNlcnZlcnM7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdURgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi93dGYvTG9nZ2VyLmggYi9Tb3VyY2UvV1RGL3d0Zi9Mb2dnZXIu
aAppbmRleCA2M2MxYzM5YTExYTM3NTRhMjVlNzhjMTY3ZmU2MDZlYWZiOTg3NzBhLi45MTU2MTFl
MDMyM2E1NTFmZmQ1M2YwMDViZTM5MjRlMDZlYjZhYzJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L3d0Zi9Mb2dnZXIuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9Mb2dnZXIuaApAQCAtMTEyLDYgKzEx
Miw4IEBAIHN0cnVjdCBDb25zb2xlTG9nVmFsdWU8QXJndW1lbnQsIGZhbHNlPiB7CiAgICAgfQog
fTsKIAorV1RGX0VYUE9SVF9QUklWQVRFIGV4dGVybiBMb2NrIGxvZ2dlck9ic2VydmVyTG9jazsK
KwogY2xhc3MgTG9nZ2VyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPExvZ2dlcj4gewog
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKExvZ2dlcik7CiBwdWJsaWM6CkBAIC0zNTksMTYgKzM2
MSwxMSBAQCBjbGFzcyBMb2dnZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8TG9nZ2Vy
PiB7CiAgICAgICAgICAgICBvYnNlcnZlci5kaWRMb2dNZXNzYWdlKGNoYW5uZWwsIGxldmVsLCB7
IENvbnNvbGVMb2dWYWx1ZTxBcmd1bWVudD46OnRvVmFsdWUoYXJndW1lbnRzKS4uLiB9KTsKICAg
ICB9CiAKLSAgICBzdGF0aWMgVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8T2JzZXJ2ZXI+
PiYgb2JzZXJ2ZXJzKCkKLSAgICB7Ci0gICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxWZWN0
b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxPYnNlcnZlcj4+PiBvYnNlcnZlcnM7Ci0gICAgICAg
IHJldHVybiBvYnNlcnZlcnM7Ci0gICAgfQorICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMg
VmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8T2JzZXJ2ZXI+PiYgb2JzZXJ2ZXJzKCk7CiAK
ICAgICBzdGF0aWMgTG9jayYgb2JzZXJ2ZXJMb2NrKCkKICAgICB7Ci0gICAgICAgIHN0YXRpYyBM
b2NrIG9ic2VydmVyTG9jazsKLSAgICAgICAgcmV0dXJuIG9ic2VydmVyTG9jazsKKyAgICAgICAg
cmV0dXJuIGxvZ2dlck9ic2VydmVyTG9jazsKICAgICB9CiAKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi93dGYvTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmNwcCBiL1NvdXJjZS9XVEYvd3RmL01lbW9y
eVByZXNzdXJlSGFuZGxlci5jcHAKaW5kZXggZmE3NzI0ZDQwZDM5ODU2Y2Q3ZjJkYWU3ZjE0MWFl
ZWZjOWFjMWZmOS4uZmU5YzlhNTE3Y2YyMWUxOWI2ZGRlM2Y3ZGY4ZjQ2MDFmZWZmNzJmNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmNwcAorKysgYi9T
b3VyY2UvV1RGL3d0Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwCkBAIC00OCw3ICs0OCwxMSBA
QCBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OlJlbGllZkxv
Z2dlcjo6c19sb2dnaW5nRW5hYmxlZCA9CiAKIE1lbW9yeVByZXNzdXJlSGFuZGxlciYgTWVtb3J5
UHJlc3N1cmVIYW5kbGVyOjpzaW5nbGV0b24oKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxNZW1vcnlQcmVzc3VyZUhhbmRsZXI+IG1lbW9yeVByZXNzdXJlSGFuZGxlcjsKKyAgICBzdGF0
aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1lbW9yeVByZXNzdXJlSGFuZGxlcj4gbWVtb3J5UHJlc3N1
cmVIYW5kbGVyOworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlS2V5OworICAgIHN0ZDo6
Y2FsbF9vbmNlKG9uY2VLZXksIFsmXSB7CisgICAgICAgIG1lbW9yeVByZXNzdXJlSGFuZGxlci5j
b25zdHJ1Y3QoKTsKKyAgICB9KTsKICAgICByZXR1cm4gbWVtb3J5UHJlc3N1cmVIYW5kbGVyOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuaCBi
L1NvdXJjZS9XVEYvd3RmL01lbW9yeVByZXNzdXJlSGFuZGxlci5oCmluZGV4IDY0NTk4MmM1NzMy
MmU0YzRkNTAzOTU5OGY2MmUwNGU4MzA2NDlhMjcuLmNlNWIyODMzNjNhMzFjZTdlNGIwMjgzYTg4
YTk5ZDNhYTFjYWQ5ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL01lbW9yeVByZXNzdXJl
SGFuZGxlci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL01lbW9yeVByZXNzdXJlSGFuZGxlci5oCkBA
IC01OCw3ICs1OCw3IEBAIHR5cGVkZWYgV1RGOjpGdW5jdGlvbjx2b2lkKENyaXRpY2FsLCBTeW5j
aHJvbm91cyk+IExvd01lbW9yeUhhbmRsZXI7CiAKIGNsYXNzIE1lbW9yeVByZXNzdXJlSGFuZGxl
ciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci0gICAgZnJpZW5kIGNsYXNzIFdURjo6
TmV2ZXJEZXN0cm95ZWQ8TWVtb3J5UHJlc3N1cmVIYW5kbGVyPjsKKyAgICBmcmllbmQgY2xhc3Mg
V1RGOjpMYXp5TmV2ZXJEZXN0cm95ZWQ8TWVtb3J5UHJlc3N1cmVIYW5kbGVyPjsKIHB1YmxpYzoK
ICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIE1lbW9yeVByZXNzdXJlSGFuZGxlciYgc2lu
Z2xldG9uKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1J1bkxvb3AuY3BwIGIvU291
cmNlL1dURi93dGYvUnVuTG9vcC5jcHAKaW5kZXggMzJiMjFhM2JhZDM5ODI4OGRmMDM5NTEwMjVi
MWNjMTUzNTczM2RjMC4uYzg1OGExMTZmZTJkNDRhNmVlMTVhZDVjN2VmNTNkNzAwZGYwYjVkNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUnVuTG9vcC5jcHAKKysrIGIvU291cmNlL1dURi93
dGYvUnVuTG9vcC5jcHAKQEAgLTYwLDcgKzYwLDExIEBAIHZvaWQgUnVuTG9vcDo6aW5pdGlhbGl6
ZU1haW4oKQogCiBSdW5Mb29wJiBSdW5Mb29wOjpjdXJyZW50KCkKIHsKLSAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8VGhyZWFkU3BlY2lmaWM8SG9sZGVyPj4gcnVuTG9vcEhvbGRlcjsKKyAgICBz
dGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPFRocmVhZFNwZWNpZmljPEhvbGRlcj4+IHJ1bkxvb3BI
b2xkZXI7CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7CisgICAgc3RkOjpjYWxs
X29uY2Uob25jZUtleSwgWyZdIHsKKyAgICAgICAgcnVuTG9vcEhvbGRlci5jb25zdHJ1Y3QoKTsK
KyAgICB9KTsKICAgICByZXR1cm4gcnVuTG9vcEhvbGRlci5nZXQoKS0+cnVuTG9vcCgpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmcuY3BwIGIvU291cmNlL1dURi93
dGYvVGhyZWFkaW5nLmNwcAppbmRleCBhNWYzYzU3Y2ZkM2QwMmRjNmFkOWEyMzEyZjliMjNmMDk0
NWJhMGQzLi4zMzFjYjNlM2YxMGEwZDk4OTQyMzIzMTg2MGVhYzdjNTQwMWRkZmNkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmcuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL1Ro
cmVhZGluZy5jcHAKQEAgLTg3LDcgKzg3LDExIEBAIHN0cnVjdCBUaHJlYWQ6Ok5ld1RocmVhZENv
bnRleHQgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8TmV3VGhyZWFkQ29udGV4dD4KIAog
SGFzaFNldDxUaHJlYWQqPiYgVGhyZWFkOjphbGxUaHJlYWRzKGNvbnN0IExvY2tIb2xkZXImKQog
ewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0PFRocmVhZCo+PiBhbGxUaHJlYWRz
OworICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxUaHJlYWQqPj4gYWxsVGhy
ZWFkczsKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsKKyAgICBzdGQ6OmNhbGxf
b25jZShvbmNlS2V5LCBbJl0geworICAgICAgICBhbGxUaHJlYWRzLmNvbnN0cnVjdCgpOworICAg
IH0pOwogICAgIHJldHVybiBhbGxUaHJlYWRzOwogfQogCkBAIC0xMzQsNyArMTM4LDExIEBAIHZv
aWQgVGhyZWFkOjppbml0aWFsaXplSW5UaHJlYWQoKQogI2lmIFVTRShXRUJfVEhSRUFEKQogICAg
IC8vIE9uIGlPUywgb25lIEF0b21TdHJpbmdUYWJsZSBpcyBzaGFyZWQgYmV0d2VlbiB0aGUgbWFp
biBVSSB0aHJlYWQgYW5kIHRoZSBXZWJUaHJlYWQuCiAgICAgaWYgKGlzV2ViVGhyZWFkKCkgfHwg
aXNVSVRocmVhZCgpKSB7Ci0gICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9tU3RyaW5n
VGFibGU+IHNoYXJlZFN0cmluZ1RhYmxlOworICAgICAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJv
eWVkPEF0b21TdHJpbmdUYWJsZT4gc2hhcmVkU3RyaW5nVGFibGU7CisgICAgICAgIHN0YXRpYyBz
dGQ6Om9uY2VfZmxhZyBvbmNlS2V5OworICAgICAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBb
Jl0geworICAgICAgICAgICAgc2hhcmVkU3RyaW5nVGFibGUuY29uc3RydWN0KCk7CisgICAgICAg
IH0pOwogICAgICAgICBtX2N1cnJlbnRBdG9tU3RyaW5nVGFibGUgPSAmc2hhcmVkU3RyaW5nVGFi
bGUuZ2V0KCk7CiAgICAgfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9VUkwu
Y3BwIGIvU291cmNlL1dURi93dGYvVVJMLmNwcAppbmRleCA2NTMzOGNmZDc3ZDQ2N2I1YzM2MmVl
ZGFlMTMyZWMzYWQwZTMzZjdhLi5mMGFlN2QzNGYyNWRjNmQzNDUyZTYxMDhmNWE5NWIzYWFlMDg5
OWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9VUkwuY3BwCisrKyBiL1NvdXJjZS9XVEYv
d3RmL1VSTC5jcHAKQEAgLTgyMCwyMiArODIwLDIyIEBAIGJvb2wgcHJvdG9jb2xJc0luSFRUUEZh
bWlseShTdHJpbmdWaWV3IHVybCkKIAogY29uc3QgVVJMJiBhYm91dEJsYW5rVVJMKCkKIHsKLSAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VVJMPiBzdGF0aWNCbGFua1VSTDsKKyAgICBzdGF0aWMg
TGF6eU5ldmVyRGVzdHJveWVkPFVSTD4gc3RhdGljQmxhbmtVUkw7CiAgICAgc3RhdGljIHN0ZDo6
b25jZV9mbGFnIG9uY2VGbGFnOwogICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBbJl0gewog
ICAgICAgICBzdGF0aWMgY29uc3RleHByIGNvbnN0IGNoYXIqIGFib3V0QmxhbmsgPSAiYWJvdXQ6
YmxhbmsiOwotICAgICAgICBzdGF0aWNCbGFua1VSTC5nZXQoKSA9IFVSTChVUkwoKSwgU3RyaW5n
SW1wbDo6Y3JlYXRlU3RhdGljU3RyaW5nSW1wbChhYm91dEJsYW5rLCBzdHJsZW4oYWJvdXRCbGFu
aykpKTsKKyAgICAgICAgc3RhdGljQmxhbmtVUkwuY29uc3RydWN0KFVSTCgpLCBTdHJpbmdJbXBs
OjpjcmVhdGVTdGF0aWNTdHJpbmdJbXBsKGFib3V0QmxhbmssIHN0cmxlbihhYm91dEJsYW5rKSkp
OwogICAgIH0pOwogICAgIHJldHVybiBzdGF0aWNCbGFua1VSTDsKIH0KIAogY29uc3QgVVJMJiBh
Ym91dFNyY0RvY1VSTCgpCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFVSTD4gc3RhdGlj
U3JjRG9jVVJMOworICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8VVJMPiBzdGF0aWNTcmNE
b2NVUkw7CiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOwogICAgIHN0ZDo6Y2Fs
bF9vbmNlKG9uY2VGbGFnLCBbJl0gewogICAgICAgICBzdGF0aWMgY29uc3RleHByIGNvbnN0IGNo
YXIqIGFib3V0U3JjRG9jID0gImFib3V0OnNyY2RvYyI7Ci0gICAgICAgIHN0YXRpY1NyY0RvY1VS
TC5nZXQoKSA9IFVSTChVUkwoKSwgU3RyaW5nSW1wbDo6Y3JlYXRlU3RhdGljU3RyaW5nSW1wbChh
Ym91dFNyY0RvYywgc3RybGVuKGFib3V0U3JjRG9jKSkpOworICAgICAgICBzdGF0aWNTcmNEb2NV
UkwuY29uc3RydWN0KFVSTCgpLCBTdHJpbmdJbXBsOjpjcmVhdGVTdGF0aWNTdHJpbmdJbXBsKGFi
b3V0U3JjRG9jLCBzdHJsZW4oYWJvdXRTcmNEb2MpKSk7CiAgICAgfSk7CiAgICAgcmV0dXJuIHN0
YXRpY1NyY0RvY1VSTDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2NmL0xhbmd1YWdl
Q0YuY3BwIGIvU291cmNlL1dURi93dGYvY2YvTGFuZ3VhZ2VDRi5jcHAKaW5kZXggMTIzOTZkYWQ0
NmZlNDM4ODUxNGE1ODczOTNhNjhmNjU3MTRhNjBiYy4uNDI1YWViZThmM2VkYWQyNTRhYWYyNDU4
ODBlNTgxNGNjZDliY2M2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvY2YvTGFuZ3VhZ2VD
Ri5jcHAKKysrIGIvU291cmNlL1dURi93dGYvY2YvTGFuZ3VhZ2VDRi5jcHAKQEAgLTQyLDcgKzQy
LDExIEBAIHN0YXRpYyBMb2NrIHByZWZlcnJlZExhbmd1YWdlc011dGV4OwogCiBzdGF0aWMgVmVj
dG9yPFN0cmluZz4mIHByZWZlcnJlZExhbmd1YWdlcygpCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPFZlY3RvcjxTdHJpbmc+PiBsYW5ndWFnZXM7CisgICAgc3RhdGljIExhenlOZXZlckRl
c3Ryb3llZDxWZWN0b3I8U3RyaW5nPj4gbGFuZ3VhZ2VzOworICAgIHN0YXRpYyBzdGQ6Om9uY2Vf
ZmxhZyBvbmNlS2V5OworICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsmXSB7CisgICAgICAg
IGxhbmd1YWdlcy5jb25zdHJ1Y3QoKTsKKyAgICB9KTsKICAgICByZXR1cm4gbGFuZ3VhZ2VzOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9OU1VSTEV4dHJhcy5tbSBiL1Nv
dXJjZS9XVEYvd3RmL2NvY29hL05TVVJMRXh0cmFzLm1tCmluZGV4IGE0NWQ4YzExYzdlZWE1ZWQ2
OTRjZDY1ZmYyMGVlOTYyNWM1OTYzYWQuLjIwOWVhNWI4NjY0YTFiYTMxOTJmOWVjMjM1MzllMzBj
ZTJjOTdhODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL2NvY29hL05TVVJMRXh0cmFzLm1t
CisrKyBiL1NvdXJjZS9XVEYvd3RmL2NvY29hL05TVVJMRXh0cmFzLm1tCkBAIC0yOSw2ICsyOSw3
IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIk5TVVJMRXh0cmFzLmgiCiAKKyNpbXBv
cnQgPG11dGV4PgogI2ltcG9ydCA8d3RmL0Z1bmN0aW9uLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWlu
UHRyLmg+CiAjaW1wb3J0IDx3dGYvVVJMSGVscGVycy5oPgpAQCAtNDI0LDggKzQyNSwxMiBAQCBO
U1JhbmdlIHJhbmdlT2ZVUkxTY2hlbWUoTlNTdHJpbmcgKnN0cmluZykKICAgICAgICAgIGV2ZW4g
bmVlZCB0byBlbmZvcmNlIHRoZSBjaGFyYWN0ZXIgc2V0IGhlcmUuCiAgICAgICAgICAqLwogICAg
ICAgICBOU1N0cmluZyAqYWNjZXB0YWJsZUNoYXJhY3RlcnMgPSBAIkFCQ0RFRkdISUpLTE1OT1BR
UlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky4tIjsKLSAgICAg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxOU0NoYXJhY3RlclNldD4+IEludmVy
c2VTY2hlbWVDaGFyYWN0ZXJTZXQoW1tOU0NoYXJhY3RlclNldCBjaGFyYWN0ZXJTZXRXaXRoQ2hh
cmFjdGVyc0luU3RyaW5nOmFjY2VwdGFibGVDaGFyYWN0ZXJzXSBpbnZlcnRlZFNldF0pOwotICAg
ICAgICBOU1JhbmdlIGlsbGVnYWxzID0gW3N0cmluZyByYW5nZU9mQ2hhcmFjdGVyRnJvbVNldDpJ
bnZlcnNlU2NoZW1lQ2hhcmFjdGVyU2V0LmdldCgpLmdldCgpIG9wdGlvbnM6MCByYW5nZTpzY2hl
bWVdOworICAgICAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxOU0NoYXJh
Y3RlclNldD4+IGludmVyc2VTY2hlbWVDaGFyYWN0ZXJTZXQ7CisgICAgICAgIHN0YXRpYyBzdGQ6
Om9uY2VfZmxhZyBvbmNlS2V5OworICAgICAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbJl0g
eworICAgICAgICAgICAgaW52ZXJzZVNjaGVtZUNoYXJhY3RlclNldC5jb25zdHJ1Y3QoW1tOU0No
YXJhY3RlclNldCBjaGFyYWN0ZXJTZXRXaXRoQ2hhcmFjdGVyc0luU3RyaW5nOmFjY2VwdGFibGVD
aGFyYWN0ZXJzXSBpbnZlcnRlZFNldF0pOworICAgICAgICB9KTsKKyAgICAgICAgTlNSYW5nZSBp
bGxlZ2FscyA9IFtzdHJpbmcgcmFuZ2VPZkNoYXJhY3RlckZyb21TZXQ6aW52ZXJzZVNjaGVtZUNo
YXJhY3RlclNldC5nZXQoKS5nZXQoKSBvcHRpb25zOjAgcmFuZ2U6c2NoZW1lXTsKICAgICAgICAg
aWYgKGlsbGVnYWxzLmxvY2F0aW9uID09IE5TTm90Rm91bmQpCiAgICAgICAgICAgICByZXR1cm4g
c2NoZW1lOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvTGluZUJyZWFr
SXRlcmF0b3JQb29sSUNVLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvTGluZUJyZWFrSXRlcmF0
b3JQb29sSUNVLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZDk5MGI5OTUwNDg5NDQ2ZWFhMGZlYmUwNzZmMjZj
N2NjZjA1NjJjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9MaW5lQnJl
YWtJdGVyYXRvclBvb2xJQ1UuY3BwCkBAIC0wLDAgKzEsNDEgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSA8d3RmL3RleHQvTGluZUJyZWFrSXRlcmF0b3JQb29sSUNVLmg+CisKK25hbWVzcGFjZSBXVEYg
eworCitMaW5lQnJlYWtJdGVyYXRvclBvb2wmIExpbmVCcmVha0l0ZXJhdG9yUG9vbDo6c2hhcmVk
UG9vbCgpCit7CisgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxXVEY6OlRocmVhZFNwZWNp
ZmljPExpbmVCcmVha0l0ZXJhdG9yUG9vbD4+IHBvb2w7CisgICAgc3RhdGljIHN0ZDo6b25jZV9m
bGFnIG9uY2VLZXk7CisgICAgc3RkOjpjYWxsX29uY2Uob25jZUtleSwgWyZdIHsKKyAgICAgICAg
cG9vbC5jb25zdHJ1Y3QoKTsKKyAgICB9KTsKKyAgICByZXR1cm4gKnBvb2wuZ2V0KCk7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9MaW5l
QnJlYWtJdGVyYXRvclBvb2xJQ1UuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvTGluZUJyZWFrSXRl
cmF0b3JQb29sSUNVLmgKaW5kZXggYzc2ZTlkYzllZDU2MzliMmY4ODc4NDUyNzYyNzhiMDM3NzFm
MmU0OC4uYjE4OTMxMjUxYjIxZmRmMzQ0ODI3OWZkMzBlODQ1ZTU3OWI1ZDVmNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvdGV4dC9MaW5lQnJlYWtJdGVyYXRvclBvb2xJQ1UuaAorKysgYi9T
b3VyY2UvV1RGL3d0Zi90ZXh0L0xpbmVCcmVha0l0ZXJhdG9yUG9vbElDVS5oCkBAIC00MSwxMSAr
NDEsNyBAQCBjbGFzcyBMaW5lQnJlYWtJdGVyYXRvclBvb2wgewogcHVibGljOgogICAgIExpbmVC
cmVha0l0ZXJhdG9yUG9vbCgpID0gZGVmYXVsdDsKIAotICAgIHN0YXRpYyBMaW5lQnJlYWtJdGVy
YXRvclBvb2wmIHNoYXJlZFBvb2woKQotICAgIHsKLSAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPFdURjo6VGhyZWFkU3BlY2lmaWM8TGluZUJyZWFrSXRlcmF0b3JQb29sPj4gcG9vbDsKLSAg
ICAgICAgcmV0dXJuICpwb29sLmdldCgpOwotICAgIH0KKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
c3RhdGljIExpbmVCcmVha0l0ZXJhdG9yUG9vbCYgc2hhcmVkUG9vbCgpOwogCiAgICAgc3RhdGlj
IEF0b21TdHJpbmcgbWFrZUxvY2FsZVdpdGhCcmVha0tleXdvcmQoY29uc3QgQXRvbVN0cmluZyYg
bG9jYWxlLCBMaW5lQnJlYWtJdGVyYXRvck1vZGUgbW9kZSkKICAgICB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuY3BwIGIvU291cmNlL1dURi93dGYvdGV4dC9T
dHJpbmdWaWV3LmNwcAppbmRleCA0MWZjN2E2Yjc5ZDViZmJiZmQwMDMxZTBkOTI1ZDRlMTk0NzBk
ZWMzLi44MGY4MGNiNzc3ZmRlMzc4N2E4YWE3MTJmNTY3OWY5YTFhOWExZDEzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L3RleHQvU3RyaW5nVmlldy5jcHAKQEAgLTM3NSw3ICszNzUsMTEgQEAgc3RhdGljIExvY2sgdW5k
ZXJseWluZ1N0cmluZ3NNdXRleDsKIAogc3RhdGljIEhhc2hNYXA8Y29uc3QgU3RyaW5nSW1wbCos
IFN0cmluZ1ZpZXc6OlVuZGVybHlpbmdTdHJpbmcqPiYgdW5kZXJseWluZ1N0cmluZ3MoKQogewot
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoTWFwPGNvbnN0IFN0cmluZ0ltcGwqLCBTdHJp
bmdWaWV3OjpVbmRlcmx5aW5nU3RyaW5nKj4+IG1hcDsKKyAgICBzdGF0aWMgTGF6eU5ldmVyRGVz
dHJveWVkPEhhc2hNYXA8Y29uc3QgU3RyaW5nSW1wbCosIFN0cmluZ1ZpZXc6OlVuZGVybHlpbmdT
dHJpbmcqPj4gbWFwOworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlS2V5OworICAgIHN0
ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsmXSB7CisgICAgICAgIG1hcC5jb25zdHJ1Y3QoKTsKKyAg
ICB9KTsKICAgICByZXR1cm4gbWFwOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvVGV4dEJyZWFr
SXRlcmF0b3IuY3BwCmluZGV4IDNiNDMxYWUyNTAwYWUzMmM5NGZmZTk0OTE0ZWJkNTA4MWNiYmYw
ZDMuLmMyYzViMjYzODg2NzIzNTY4OTI5NDFmYzZjM2M3NDJjOWQzNjgwYjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9X
VEYvd3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuY3BwCkBAIC0zMSw2ICszMSwxNiBAQAogCiBu
YW1lc3BhY2UgV1RGIHsKIAorVGV4dEJyZWFrSXRlcmF0b3JDYWNoZSYgVGV4dEJyZWFrSXRlcmF0
b3JDYWNoZTo6c2luZ2xldG9uKCkKK3sKKyAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPFRl
eHRCcmVha0l0ZXJhdG9yQ2FjaGU+IGNhY2hlOworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBv
bmNlS2V5OworICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsmXSB7CisgICAgICAgIGNhY2hl
LmNvbnN0cnVjdCgpOworICAgIH0pOworICAgIHJldHVybiBjYWNoZS5nZXQoKTsKK30KKwogI2lm
ICFQTEFURk9STShNQUMpICYmICFQTEFURk9STShJT1NfRkFNSUxZKQogCiBzdGF0aWMgVmFyaWFu
dDxUZXh0QnJlYWtJdGVyYXRvcklDVSwgVGV4dEJyZWFrSXRlcmF0b3JQbGF0Zm9ybT4gbWFwTW9k
ZVRvQmFja2luZ0l0ZXJhdG9yKFN0cmluZ1ZpZXcgc3RyaW5nLCBUZXh0QnJlYWtJdGVyYXRvcjo6
TW9kZSBtb2RlLCBjb25zdCBBdG9tU3RyaW5nJiBsb2NhbGUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1Rl
eHRCcmVha0l0ZXJhdG9yLmgKaW5kZXggYTIwMjJlNGFlNjYzNmY4NTc4Y2MxYTJiNDNiNTA2MjFl
NjcyZjVhNi4uODkxOWEwZDM3NGUzNzE0MTg1MGI5NmQ5ZjBiYmE3YjI1M2IxMzQ2ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5oCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuaApAQCAtMjEsNiArMjEsNyBAQAogCiAj
cHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgPG11dGV4PgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ry
b3llZC5oPgogI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3Ry
aW5nVmlldy5oPgpAQCAtMTEyLDE0ICsxMTMsMTAgQEAgY2xhc3MgVGV4dEJyZWFrSXRlcmF0b3JD
YWNoZSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAvLyBVc2UgQ2FjaGVkVGV4dEJy
ZWFrSXRlcmF0b3IgaW5zdGVhZCBvZiBkZWFsaW5nIHdpdGggdGhlIGNhY2hlIGRpcmVjdGx5Lgog
cHJpdmF0ZToKLSAgICBmcmllbmQgY2xhc3MgTmV2ZXJEZXN0cm95ZWQ8VGV4dEJyZWFrSXRlcmF0
b3JDYWNoZT47CisgICAgZnJpZW5kIGNsYXNzIExhenlOZXZlckRlc3Ryb3llZDxUZXh0QnJlYWtJ
dGVyYXRvckNhY2hlPjsKICAgICBmcmllbmQgY2xhc3MgQ2FjaGVkVGV4dEJyZWFrSXRlcmF0b3I7
CiAKLSAgICBzdGF0aWMgVGV4dEJyZWFrSXRlcmF0b3JDYWNoZSYgc2luZ2xldG9uKCkKLSAgICB7
Ci0gICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxUZXh0QnJlYWtJdGVyYXRvckNhY2hlPiBj
YWNoZTsKLSAgICAgICAgcmV0dXJuIGNhY2hlLmdldCgpOwotICAgIH0KKyAgICBXVEZfRVhQT1JU
X1BSSVZBVEUgc3RhdGljIFRleHRCcmVha0l0ZXJhdG9yQ2FjaGUmIHNpbmdsZXRvbigpOwogCiAg
ICAgVGV4dEJyZWFrSXRlcmF0b3JDYWNoZShjb25zdCBUZXh0QnJlYWtJdGVyYXRvckNhY2hlJikg
PSBkZWxldGU7CiAgICAgVGV4dEJyZWFrSXRlcmF0b3JDYWNoZShUZXh0QnJlYWtJdGVyYXRvckNh
Y2hlJiYpID0gZGVsZXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGhyZWFkcy9TaWdu
YWxzLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RocmVhZHMvU2lnbmFscy5jcHAKaW5kZXggMmJjNGRm
YWFhYmVjNWZkZDgyNjcxYjRhZjkxMWJjMTA1YjkxYmQ4My4uOTU2MjI2NjE1ZmQxMzc5NzliZDZi
ODc2MDlhYTFmOGEzNDI2NWUwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGhyZWFkcy9T
aWduYWxzLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90aHJlYWRzL1NpZ25hbHMuY3BwCkBAIC0y
NTgsMTQgKzI1OCwxMyBAQCBpbmxpbmUgdm9pZCBzZXRFeGNlcHRpb25Qb3J0cyhjb25zdCBBYnN0
cmFjdExvY2tlciYgdGhyZWFkR3JvdXBMb2NrZXIsIFRocmVhZCYgdAogCiBzdGF0aWMgVGhyZWFk
R3JvdXAmIGFjdGl2ZVRocmVhZHMoKQogeworICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8
c3RkOjpzaGFyZWRfcHRyPFRocmVhZEdyb3VwPj4gYWN0aXZlVGhyZWFkczsKICAgICBzdGF0aWMg
c3RkOjpvbmNlX2ZsYWcgaW5pdGlhbGl6ZUtleTsKLSAgICBzdGF0aWMgVGhyZWFkR3JvdXAqIGFj
dGl2ZVRocmVhZHNQdHIgPSBudWxscHRyOwogICAgIHN0ZDo6Y2FsbF9vbmNlKGluaXRpYWxpemVL
ZXksIFsmXSB7CiAgICAgICAgIENvbmZpZzo6QXNzZXJ0Tm90RnJvemVuU2NvcGUgYXNzZXJ0U2Nv
cGU7Ci0gICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxzdGQ6OnNoYXJlZF9wdHI8VGhyZWFk
R3JvdXA+PiBhY3RpdmVUaHJlYWRzIHsgVGhyZWFkR3JvdXA6OmNyZWF0ZSgpIH07Ci0gICAgICAg
IGFjdGl2ZVRocmVhZHNQdHIgPSBhY3RpdmVUaHJlYWRzLmdldCgpLmdldCgpOworICAgICAgICBh
Y3RpdmVUaHJlYWRzLmNvbnN0cnVjdChUaHJlYWRHcm91cDo6Y3JlYXRlKCkpOwogICAgIH0pOwot
ICAgIHJldHVybiAqYWN0aXZlVGhyZWFkc1B0cjsKKyAgICByZXR1cm4gKCphY3RpdmVUaHJlYWRz
LmdldCgpKTsKIH0KIAogdm9pZCByZWdpc3RlclRocmVhZEZvck1hY2hFeGNlcHRpb25IYW5kbGlu
ZyhUaHJlYWQmIHRocmVhZCkK
</data>

          </attachment>
      

    </bug>

</bugzilla>