<?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>163269</bug_id>
          
          <creation_ts>2016-10-10 22:31:38 -0700</creation_ts>
          <short_desc>Move audio module off of legacy exceptions</short_desc>
          <delta_ts>2016-10-10 23:26:28 -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>Bindings</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>sam</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1238738</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-10-10 22:31:38 -0700</bug_when>
    <thetext>Move audio module off of legacy exceptions</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1238740</commentid>
    <comment_count>1</comment_count>
      <attachid>291231</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-10-10 22:45:06 -0700</bug_when>
    <thetext>Created attachment 291231
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1238741</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-10 22:46:17 -0700</bug_when>
    <thetext>Attachment 291231 did not pass style-queue:


ERROR: Source/WebCore/Modules/webaudio/DefaultAudioDestinationNode.h:52:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/Modules/webaudio/DefaultAudioDestinationNode.h:53:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/Modules/webaudio/DefaultAudioDestinationNode.h:54:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 3 in 37 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1238755</commentid>
    <comment_count>3</comment_count>
      <attachid>291231</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-10 23:26:24 -0700</bug_when>
    <thetext>Comment on attachment 291231
Patch

Clearing flags on attachment: 291231

Committed r207050: &lt;http://trac.webkit.org/changeset/207050&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1238756</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-10 23:26:28 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>291231</attachid>
            <date>2016-10-10 22:45:06 -0700</date>
            <delta_ts>2016-10-10 23:26:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-163269-20161010224144.patch</filename>
            <type>text/plain</type>
            <size>99160</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA3MDQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjhlOWI0YWRjZmNjYjUy
MzZlYTY2ZTMzMzQ1OTk4MmI4YjM5ODI1MS4uYTRjMjMwNzZmMTI1ODI0ZDg4MjVhODFhZTVhNjBk
Nzc2YWQwM2M4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExOSBAQAorMjAxNi0xMC0xMCAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBhdWRpbyBtb2R1bGUg
b2ZmIG9mIGxlZ2FjeSBleGNlcHRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNjMyNjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQW5hbHlzZXJOb2RlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFuYWx5c2VyTm9kZTo6c2V0RmZ0U2l6ZSk6IFVzZSBFeGNlcHRpb25P
ci4KKyAgICAgICAgKFdlYkNvcmU6OkFuYWx5c2VyTm9kZTo6c2V0TWluRGVjaWJlbHMpOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OkFuYWx5c2VyTm9kZTo6c2V0TWF4RGVjaWJlbHMpOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OkFuYWx5c2VyTm9kZTo6c2V0U21vb3RoaW5nVGltZUNvbnN0
YW50KTogRGl0dG8uCisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BbmFseXNlck5vZGUuaDog
VXBkYXRlIGZvciBhYm92ZS4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0FuYWx5c2VyTm9k
ZS5pZGw6IERpdHRvLgorCisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljSW5z
cGVjdG9yTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Jhc2ljSW5zcGVjdG9yTm9k
ZTo6QXVkaW9CYXNpY0luc3BlY3Rvck5vZGUpOgorICAgICAgICBJbml0aWFsaXplIG1fbmVlZEF1
dG9tYXRpY1B1bGwgaW4gY2xhc3MgZGVmaW5pdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
QmFzaWNJbnNwZWN0b3JOb2RlOjpjb25uZWN0KTogVXNlIEV4Y2VwdGlvbk9yLgorICAgICAgICAo
V2ViQ29yZTo6QXVkaW9CYXNpY0luc3BlY3Rvck5vZGU6OmRpc2Nvbm5lY3QpOiBEaXR0by4KKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlLmg6IFVwZGF0
ZWQgZm9yIGFib3ZlLgorCisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0J1ZmZlcjo6Y3JlYXRlRnJvbUF1ZGlvRmlsZURh
dGEpOiBVc2UgcmVmZXJlbmNlLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdWZmZXI6OkF1ZGlv
QnVmZmVyKTogSW5pdGlhbGl6ZSBtX2dhaW4gaW4gY2xhc3MgZGVmaW5pdGlvbi4KKyAgICAgICAg
KFdlYkNvcmU6OkF1ZGlvQnVmZmVyOjpnZXRDaGFubmVsRGF0YSk6IFVzZSBFeGNlcHRpb25Pci4K
KyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQnVmZmVyOjpjaGFubmVsRGF0YSk6IFJlbmFtZSB0byBk
aXNhbWJpZ3VhdGUgd2l0aCBnZXRDaGFubmVsRGF0YS4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
QnVmZmVyOjp6ZXJvKTogVXNlIG1vZGVybiBmb3IgbG9vcC4KKyAgICAgICAgKiBNb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvQnVmZmVyLmg6IFVwZGF0ZSBmb3IgYWJvdmUuCisgICAgICAgICogTW9kdWxl
cy93ZWJhdWRpby9BdWRpb0J1ZmZlci5pZGw6IERpdHRvLgorCisgICAgICAgICogTW9kdWxlcy93
ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9CdWZmZXJTb3VyY2VOb2RlOjpwcm9jZXNzKTogVXNlIHJlZmVyZW5jZS4KKyAgICAgICAgKFdl
YkNvcmU6OkF1ZGlvQnVmZmVyU291cmNlTm9kZTo6c2V0QnVmZmVyKTogVXNlIGNoYW5uZWxEYXRh
LgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdWZmZXJTb3VyY2VOb2RlOjpzdGFydCk6IFVzZSBF
eGNlcHRpb25Pci4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQnVmZmVyU291cmNlTm9kZTo6c3Rh
cnRQbGF5aW5nKTogRGl0dG8uCisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZl
clNvdXJjZU5vZGUuaDogVXBkYXRlIGZvciBhYm92ZS4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5pZGw6IERpdHRvLgorCisgICAgICAgICogTW9kdWxl
cy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Db250
ZXh0OjpjcmVhdGVCdWZmZXIpOiBVc2UgRXhjZXB0aW9uT3IuCisgICAgICAgIChXZWJDb3JlOjpB
dWRpb0NvbnRleHQ6OmNyZWF0ZU1lZGlhRWxlbWVudFNvdXJjZSk6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6QXVkaW9Db250ZXh0OjpjcmVhdGVNZWRpYVN0cmVhbVNvdXJjZSk6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6QXVkaW9Db250ZXh0OjpjcmVhdGVTY3JpcHRQcm9jZXNzb3IpOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4dDo6Y3JlYXRlRGVsYXkpOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4dDo6Y3JlYXRlQ2hhbm5lbFNwbGl0dGVy
KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OmNyZWF0ZUNoYW5uZWxN
ZXJnZXIpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4dDo6Y3JlYXRlUGVy
aW9kaWNXYXZlKTogRGl0dG8uCisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRl
eHQuaDogVXBkYXRlIGZvciBhYm92ZS4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
Q29udGV4dC5pZGw6IERpdHRvLgorCisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rl
c3RpbmF0aW9uTm9kZS5oOiBVc2UgdW5zaWduZWQgaW5zdGVhZAorICAgICAgICBvZiB1bnNpZ25l
ZCBsb25nIGZvciBtYXhDaGFubmVsQ291bnQuCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb05vZGU6OmNvbm5lY3QpOiBV
c2UgRXhjZXB0aW9uT3IuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb05vZGU6OmRpc2Nvbm5lY3Qp
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvTm9kZTo6Y2hhbm5lbENvdW50KTogVXNl
IHVuc2lnbmVkLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Ob2RlOjpzZXRDaGFubmVsQ291bnQp
OiBVc2UgRXhjZXB0aW9uT3IgYW5kIHVuc2lnbmVkLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9O
b2RlOjpzZXRDaGFubmVsQ291bnRNb2RlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpBdWRp
b05vZGU6OnNldENoYW5uZWxJbnRlcnByZXRhdGlvbik6IERpdHRvLgorICAgICAgICAqIE1vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmg6IFVwZGF0ZSBmb3IgYWJvdmUuCisgICAgICAgICogTW9k
dWxlcy93ZWJhdWRpby9BdWRpb05vZGUuaWRsOiBEaXR0by4KKworICAgICAgICAqIE1vZHVsZXMv
d2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZTo6QXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlKToKKyAg
ICAgICAgSW5pdGlhbGl6ZSBkYXRhIG1lbWJlcnMgaW4gY2xhc3MgZGVmaW5pdGlvbi4KKyAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZTo6dXBkYXRlU2NoZWR1bGluZ0lu
Zm8pOiBUYWtlCisgICAgICAgIGEgcmVmZXJlbmNlIGluc3RlYWQgb2YgYSBwb2ludGVyIHRvIHRo
ZSBhdWRpbyBidXMuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGU6
OnN0YXJ0KTogVXNlIEV4Y2VwdGlvbk9yLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TY2hlZHVs
ZWRTb3VyY2VOb2RlOjpzdG9wKTogRGl0dG8uCisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9B
dWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUuaDogVXBkYXRlIGZvciBhYm92ZS4KKworICAgICAgICAq
IE1vZHVsZXMvd2ViYXVkaW8vQ29udm9sdmVyTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
b252b2x2ZXJOb2RlOjpDb252b2x2ZXJOb2RlKTogSW5pdGlhbGl6ZSBtX25vcm1hbGl6ZQorICAg
ICAgICBpbiBjbGFzcyBkZWZpbml0aW9uLgorICAgICAgICAoV2ViQ29yZTo6Q29udm9sdmVyTm9k
ZTo6c2V0QnVmZmVyKTogVXNlIEV4Y2VwdGlvbk9yLgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVk
aW8vQ29udm9sdmVyTm9kZS5oOiBVcGRhdGUgZm9yIGFib3ZlLgorICAgICAgICAqIE1vZHVsZXMv
d2ViYXVkaW8vQ29udm9sdmVyTm9kZS5pZGw6IERpdHRvLgorCisgICAgICAgICogTW9kdWxlcy93
ZWJhdWRpby9EZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlOjpEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5v
ZGUpOgorICAgICAgICBJbml0aWFsaXplIG1fbnVtYmVyT2ZJbnB1dENoYW5uZWxzIGluIGNsYXNz
IGRlZmluaXRpb24uCisgICAgICAgIChXZWJDb3JlOjpEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5v
ZGU6Om1heENoYW5uZWxDb3VudCk6IFVzZSB1bnNpZ25lZC4KKyAgICAgICAgKFdlYkNvcmU6OkRl
ZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6c2V0Q2hhbm5lbENvdW50KTogVXNlIEV4Y2VwdGlv
bk9yLgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25O
b2RlLmg6IFVwZGF0ZSBmb3IgY2hhbmdlcyBhYm92ZS4KKworICAgICAgICAqIE1vZHVsZXMvd2Vi
YXVkaW8vRGVsYXlOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRlbGF5Tm9kZTo6RGVsYXlO
b2RlKTogTW92ZWQgZXhjZXB0aW9uIGxvZ2ljIG91dCBvZiBjb25zdHJ1Y3Rvci4KKyAgICAgICAg
KFdlYkNvcmU6OkRlbGF5Tm9kZTo6Y3JlYXRlKTogQWRkZWQuIE1vdmVkIGV4Y2VwdGlvbiBsb2dp
YyBpbiBoZXJlLgorICAgICAgICAoV2ViQ29yZTo6RGVsYXlOb2RlOjpkZWxheVRpbWUpOiBNb3Zl
ZCB0eXBlY2FzdCBoZXJlIGZyb20gaGVhZGVyLgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8v
RGVsYXlOb2RlLmg6IFVwZGF0ZSBmb3IgYWJvdmUuCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1
ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6T2ZmbGluZUF1
ZGlvQ29udGV4dDo6T2ZmbGluZUF1ZGlvQ29udGV4dCk6IE1hcmtlZCBpbmxpbmUuCisgICAgICAg
IChXZWJDb3JlOjpPZmZsaW5lQXVkaW9Db250ZXh0OjpjcmVhdGUpOiBVc2UgRXhjZXB0aW9uT3Iu
CisgICAgICAgIChXZWJDb3JlOjpPZmZsaW5lQXVkaW9Db250ZXh0Ojp+T2ZmbGluZUF1ZGlvQ29u
dGV4dCk6IERlbGV0ZWQuIFVubmVlZGVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vT2Zm
bGluZUF1ZGlvQ29udGV4dC5oOiBVcGRhdGUgZm9yIGFib3ZlLgorICAgICAgICAqIE1vZHVsZXMv
d2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29udGV4dC5pZGw6IERpdHRvLgorCisgICAgICAgICogTW9k
dWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6T2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlOjpvZmZsaW5lUmVuZGVyKTogVXNl
IGNoYW5uZWxEYXRhLgorCisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9Pc2NpbGxhdG9yTm9k
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpPc2NpbGxhdG9yTm9kZTo6T3NjaWxsYXRvck5vZGUp
OiBVcGRhdGVkIGZvciBjaGFuZ2UgdG8gc2V0VHlwZS4KKyAgICAgICAgKFdlYkNvcmU6Ok9zY2ls
bGF0b3JOb2RlOjpzZXRUeXBlKTogVXNlIEV4Y2VwdGlvbk9yLgorICAgICAgICAoV2ViQ29yZTo6
T3NjaWxsYXRvck5vZGU6OnByb2Nlc3MpOiBVc2UgYSByZWZlcmVuY2UuCisgICAgICAgICogTW9k
dWxlcy93ZWJhdWRpby9Pc2NpbGxhdG9yTm9kZS5oOiBVcGRhdGUgZm9yIGFib3ZlLgorICAgICAg
ICAqIE1vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5vZGUuaWRsOiBEaXR0by4KKworICAgICAg
ICAqIE1vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JpcHRQcm9jZXNzb3JOb2RlOjpwcm9jZXNzKTogVXNlIGNoYW5uZWxEYXRhLgor
CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmg6IEFkZGVkIG92ZXJsb2FkcyBv
ZiB0b0pTIHRvIGl0IGNhbiBiZSB1c2VkIG9uCisgICAgICAgIHJlZmVyZW5jZXMgdG8gYXJyYXkg
YnVmZmVycyBhbmQgYXJyYXkgYnVmZmVyIHZpZXdzLCBub3QganVzdCBwb2ludGVycy4KKwogMjAx
Ni0xMC0xMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFVwZGF0
ZSBXaGVlbEV2ZW50IC8gTW91c2VFdmVudCB0byBzdG9wIHVzaW5nIGxlZ2FjeSBbQ29uc3RydWN0
b3JUZW1wbGF0ZT1FdmVudF0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQW5hbHlzZXJOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QW5hbHlzZXJOb2RlLmNwcAppbmRleCBmYTdjOTI4MTc4MTU3MThhMmZhODRiZTdiOTI4Y2M3ZmUx
NzAzZjBjLi42YWZmOWE2M2Q2M2I0MWJjMTg2ZjA5NWNmMWRjZmRmYzVjNjNhOTdkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0FuYWx5c2VyTm9kZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BbmFseXNlck5vZGUuY3BwCkBAIC0z
MCw3ICszMCw2IEBACiAKICNpbmNsdWRlICJBdWRpb05vZGVJbnB1dC5oIgogI2luY2x1ZGUgIkF1
ZGlvTm9kZU91dHB1dC5oIgotI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCkBAIC03Miw0MCArNzEsMzggQEAgdm9pZCBBbmFseXNlck5vZGU6OnJlc2V0
KCkKICAgICBtX2FuYWx5c2VyLnJlc2V0KCk7CiB9CiAKLXZvaWQgQW5hbHlzZXJOb2RlOjpzZXRG
ZnRTaXplKHVuc2lnbmVkIHNpemUsIEV4Y2VwdGlvbkNvZGUmIGVjKQorRXhjZXB0aW9uT3I8dm9p
ZD4gQW5hbHlzZXJOb2RlOjpzZXRGZnRTaXplKHVuc2lnbmVkIHNpemUpCiB7CiAgICAgaWYgKCFt
X2FuYWx5c2VyLnNldEZmdFNpemUoc2l6ZSkpCi0gICAgICAgIGVjID0gSU5ERVhfU0laRV9FUlI7
CisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJTkRFWF9TSVpFX0VSUiB9OworICAgIHJldHVy
biB7IH07CiB9CiAKLXZvaWQgQW5hbHlzZXJOb2RlOjpzZXRNaW5EZWNpYmVscyhkb3VibGUgaywg
RXhjZXB0aW9uQ29kZSYgZWMpCitFeGNlcHRpb25Pcjx2b2lkPiBBbmFseXNlck5vZGU6OnNldE1p
bkRlY2liZWxzKGRvdWJsZSBrKQogewotICAgIGlmIChrID4gbWF4RGVjaWJlbHMoKSkgewotICAg
ICAgICBlYyA9IElOREVYX1NJWkVfRVJSOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIGlm
IChrID4gbWF4RGVjaWJlbHMoKSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IElOREVYX1NJ
WkVfRVJSIH07CiAKICAgICBtX2FuYWx5c2VyLnNldE1pbkRlY2liZWxzKGspOworICAgIHJldHVy
biB7IH07CiB9CiAKLXZvaWQgQW5hbHlzZXJOb2RlOjpzZXRNYXhEZWNpYmVscyhkb3VibGUgaywg
RXhjZXB0aW9uQ29kZSYgZWMpCitFeGNlcHRpb25Pcjx2b2lkPiBBbmFseXNlck5vZGU6OnNldE1h
eERlY2liZWxzKGRvdWJsZSBrKQogewotICAgIGlmIChrIDwgbWluRGVjaWJlbHMoKSkgewotICAg
ICAgICBlYyA9IElOREVYX1NJWkVfRVJSOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIGlm
IChrIDwgbWluRGVjaWJlbHMoKSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IElOREVYX1NJ
WkVfRVJSIH07CiAKICAgICBtX2FuYWx5c2VyLnNldE1heERlY2liZWxzKGspOworICAgIHJldHVy
biB7IH07CiB9CiAKLXZvaWQgQW5hbHlzZXJOb2RlOjpzZXRTbW9vdGhpbmdUaW1lQ29uc3RhbnQo
ZG91YmxlIGssIEV4Y2VwdGlvbkNvZGUmIGVjKQorRXhjZXB0aW9uT3I8dm9pZD4gQW5hbHlzZXJO
b2RlOjpzZXRTbW9vdGhpbmdUaW1lQ29uc3RhbnQoZG91YmxlIGspCiB7Ci0gICAgaWYgKGsgPCAw
IHx8IGsgPiAxKSB7Ci0gICAgICAgIGVjID0gSU5ERVhfU0laRV9FUlI7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9CisgICAgaWYgKGsgPCAwIHx8IGsgPiAxKQorICAgICAgICByZXR1cm4gRXhjZXB0
aW9uIHsgSU5ERVhfU0laRV9FUlIgfTsKIAogICAgIG1fYW5hbHlzZXIuc2V0U21vb3RoaW5nVGlt
ZUNvbnN0YW50KGspOworICAgIHJldHVybiB7IH07CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQW5hbHlzZXJO
b2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0FuYWx5c2VyTm9kZS5oCmlu
ZGV4IDIwMTQ5MzI5NzE3NjQ0NDQxYTBjYWQ1Y2VjZTIxNTEyZDZlOTUwYjcuLjhiYzYzYjQ0MmYy
MmFlMGVkNzM5YWNlODI0MGZjNmNhMTZhZWRiODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQW5hbHlzZXJOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9BbmFseXNlck5vZGUuaApAQCAtMjIsMTYgKzIyLDE0IEBACiAgKiBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
ICAqLwogCi0jaWZuZGVmIEFuYWx5c2VyTm9kZV9oCi0jZGVmaW5lIEFuYWx5c2VyTm9kZV9oCisj
cHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkF1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlLmgiCiAjaW5j
bHVkZSAiUmVhbHRpbWVBbmFseXNlci5oIgotI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgQW5hbHlzZXJOb2RlIDogcHVibGljIEF1ZGlvQmFz
aWNJbnNwZWN0b3JOb2RlIHsKK2NsYXNzIEFuYWx5c2VyTm9kZSBmaW5hbCA6IHB1YmxpYyBBdWRp
b0Jhc2ljSW5zcGVjdG9yTm9kZSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxBbmFseXNlck5v
ZGU+IGNyZWF0ZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCiAgICAg
ewpAQCAtMzksMjQgKzM3LDE5IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICB2aXJ0dWFsIH5BbmFs
eXNlck5vZGUoKTsKLSAgICAKLSAgICAvLyBBdWRpb05vZGUKLSAgICB2b2lkIHByb2Nlc3Moc2l6
ZV90IGZyYW1lc1RvUHJvY2Vzcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCByZXNldCgpIG92ZXJyaWRl
OwogCi0gICAgLy8gSmF2YXNjcmlwdCBiaW5kaW5ncwogICAgIHVuc2lnbmVkIGZmdFNpemUoKSBj
b25zdCB7IHJldHVybiBtX2FuYWx5c2VyLmZmdFNpemUoKTsgfQotICAgIHZvaWQgc2V0RmZ0U2l6
ZSh1bnNpZ25lZCBzaXplLCBFeGNlcHRpb25Db2RlJik7CisgICAgRXhjZXB0aW9uT3I8dm9pZD4g
c2V0RmZ0U2l6ZSh1bnNpZ25lZCk7CiAKICAgICB1bnNpZ25lZCBmcmVxdWVuY3lCaW5Db3VudCgp
IGNvbnN0IHsgcmV0dXJuIG1fYW5hbHlzZXIuZnJlcXVlbmN5QmluQ291bnQoKTsgfQogCi0gICAg
dm9pZCBzZXRNaW5EZWNpYmVscyhkb3VibGUgaywgRXhjZXB0aW9uQ29kZSYpOworICAgIEV4Y2Vw
dGlvbk9yPHZvaWQ+IHNldE1pbkRlY2liZWxzKGRvdWJsZSk7CiAgICAgZG91YmxlIG1pbkRlY2li
ZWxzKCkgY29uc3QgeyByZXR1cm4gbV9hbmFseXNlci5taW5EZWNpYmVscygpOyB9CiAKLSAgICB2
b2lkIHNldE1heERlY2liZWxzKGRvdWJsZSBrLCBFeGNlcHRpb25Db2RlJik7CisgICAgRXhjZXB0
aW9uT3I8dm9pZD4gc2V0TWF4RGVjaWJlbHMoZG91YmxlKTsKICAgICBkb3VibGUgbWF4RGVjaWJl
bHMoKSBjb25zdCB7IHJldHVybiBtX2FuYWx5c2VyLm1heERlY2liZWxzKCk7IH0KIAotICAgIHZv
aWQgc2V0U21vb3RoaW5nVGltZUNvbnN0YW50KGRvdWJsZSBrLCBFeGNlcHRpb25Db2RlJik7Cisg
ICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0U21vb3RoaW5nVGltZUNvbnN0YW50KGRvdWJsZSk7CiAg
ICAgZG91YmxlIHNtb290aGluZ1RpbWVDb25zdGFudCgpIGNvbnN0IHsgcmV0dXJuIG1fYW5hbHlz
ZXIuc21vb3RoaW5nVGltZUNvbnN0YW50KCk7IH0KIAogICAgIHZvaWQgZ2V0RmxvYXRGcmVxdWVu
Y3lEYXRhKGNvbnN0IFJlZlB0cjxKU0M6OkZsb2F0MzJBcnJheT4mIGFycmF5KSB7IG1fYW5hbHlz
ZXIuZ2V0RmxvYXRGcmVxdWVuY3lEYXRhKGFycmF5LmdldCgpKTsgfQpAQCAtNjQsMTQgKzU3LDE1
IEBAIHB1YmxpYzoKICAgICB2b2lkIGdldEJ5dGVUaW1lRG9tYWluRGF0YShjb25zdCBSZWZQdHI8
SlNDOjpVaW50OEFycmF5PiYgYXJyYXkpIHsgbV9hbmFseXNlci5nZXRCeXRlVGltZURvbWFpbkRh
dGEoYXJyYXkuZ2V0KCkpOyB9CiAKIHByaXZhdGU6Ci0gICAgZG91YmxlIHRhaWxUaW1lKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gMDsgfQotICAgIGRvdWJsZSBsYXRlbmN5VGltZSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KLQogICAgIEFuYWx5c2VyTm9kZShBdWRpb0NvbnRleHQm
LCBmbG9hdCBzYW1wbGVSYXRlKTsKIAorICAgIHZvaWQgcHJvY2VzcyhzaXplX3QgZnJhbWVzVG9Q
cm9jZXNzKSBmaW5hbDsKKyAgICB2b2lkIHJlc2V0KCkgZmluYWw7CisKKyAgICBkb3VibGUgdGFp
bFRpbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAwOyB9CisgICAgZG91YmxlIGxhdGVuY3lUaW1l
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gMDsgfQorCiAgICAgUmVhbHRpbWVBbmFseXNlciBtX2Fu
YWx5c2VyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gQW5hbHlz
ZXJOb2RlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQW5h
bHlzZXJOb2RlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQW5hbHlzZXJO
b2RlLmlkbAppbmRleCAzM2Q1ZmI2ZTY3Y2I5NmY0NjY0M2U5NGI1NDZmNWQ5YmUyZDg4MjdjLi5k
NDNmOTU5MTBiYjQ0OWNjMjZkNzQwZWJlYTRiZjBkYTU1ZWUyMGNhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0FuYWx5c2VyTm9kZS5pZGwKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BbmFseXNlck5vZGUuaWRsCkBAIC0yNiwxNSArMjYs
MTUgQEAKICAgICBDb25kaXRpb25hbD1XRUJfQVVESU8sCiAgICAgSlNHZW5lcmF0ZVRvSlNPYmpl
Y3QsCiBdIGludGVyZmFjZSBBbmFseXNlck5vZGUgOiBBdWRpb05vZGUgewotICAgIFtTZXR0ZXJN
YXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbl0gYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgZmZ0U2l6ZTsK
KyAgICBbU2V0dGVyTWF5VGhyb3dFeGNlcHRpb25dIGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGZm
dFNpemU7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgZnJlcXVlbmN5Qmlu
Q291bnQ7CiAKICAgICAvLyBtaW5EZWNpYmVscyAvIG1heERlY2liZWxzIHJlcHJlc2VudCB0aGUg
cmFuZ2UgdG8gc2NhbGUgdGhlIEZGVCBhbmFseXNpcyBkYXRhIGZvciBjb252ZXJzaW9uIHRvIHVu
c2lnbmVkIGJ5dGUgdmFsdWVzLgotICAgIFtTZXR0ZXJNYXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbl0g
YXR0cmlidXRlIHVucmVzdHJpY3RlZCBkb3VibGUgbWluRGVjaWJlbHM7Ci0gICAgW1NldHRlck1h
eVRocm93TGVnYWN5RXhjZXB0aW9uXSBhdHRyaWJ1dGUgdW5yZXN0cmljdGVkIGRvdWJsZSBtYXhE
ZWNpYmVsczsKKyAgICBbU2V0dGVyTWF5VGhyb3dFeGNlcHRpb25dIGF0dHJpYnV0ZSB1bnJlc3Ry
aWN0ZWQgZG91YmxlIG1pbkRlY2liZWxzOworICAgIFtTZXR0ZXJNYXlUaHJvd0V4Y2VwdGlvbl0g
YXR0cmlidXRlIHVucmVzdHJpY3RlZCBkb3VibGUgbWF4RGVjaWJlbHM7CiAKICAgICAvLyBBIHZh
bHVlIGZyb20gMC4wIC0+IDEuMCB3aGVyZSAwLjAgcmVwcmVzZW50cyBubyB0aW1lIGF2ZXJhZ2lu
ZyB3aXRoIHRoZSBsYXN0IGFuYWx5c2lzIGZyYW1lLgotICAgIFtTZXR0ZXJNYXlUaHJvd0xlZ2Fj
eUV4Y2VwdGlvbl0gYXR0cmlidXRlIHVucmVzdHJpY3RlZCBkb3VibGUgc21vb3RoaW5nVGltZUNv
bnN0YW50OworICAgIFtTZXR0ZXJNYXlUaHJvd0V4Y2VwdGlvbl0gYXR0cmlidXRlIHVucmVzdHJp
Y3RlZCBkb3VibGUgc21vb3RoaW5nVGltZUNvbnN0YW50OwogCiAgICAgLy8gQ29waWVzIHRoZSBj
dXJyZW50IGZyZXF1ZW5jeSBkYXRhIGludG8gdGhlIHBhc3NlZCBhcnJheS4KICAgICAvLyBJZiB0
aGUgYXJyYXkgaGFzIGZld2VyIGVsZW1lbnRzIHRoYW4gdGhlIGZyZXF1ZW5jeUJpbkNvdW50LCB0
aGUgZXhjZXNzIGVsZW1lbnRzIHdpbGwgYmUgZHJvcHBlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CYXNpY0luc3BlY3Rvck5vZGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZS5jcHAK
aW5kZXggMWIwODQ0ZmNmYTA0OTYyNmMxZDNjM2Y2OWFjNjkwNzZmYjJlNzRjMi4uOWZhNDIzZDUw
NTAyMjFiNDUwMzRkY2YyMTFiNmI3MDYyMWVhYzExNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZS5jcHAK
QEAgLTI4LDcgKzI4LDYgQEAKIAogI2luY2x1ZGUgIkF1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlLmgi
CiAKLSNpbmNsdWRlICJBdWRpb0NvbnRleHQuaCIKICNpbmNsdWRlICJBdWRpb05vZGVJbnB1dC5o
IgogI2luY2x1ZGUgIkF1ZGlvTm9kZU91dHB1dC5oIgogCkBAIC0zNiw3ICszNSw2IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogQXVkaW9CYXNpY0luc3BlY3Rvck5vZGU6OkF1ZGlvQmFzaWNJbnNw
ZWN0b3JOb2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSwgdW5zaWdu
ZWQgb3V0cHV0Q2hhbm5lbENvdW50KQogICAgIDogQXVkaW9Ob2RlKGNvbnRleHQsIHNhbXBsZVJh
dGUpCi0gICAgLCBtX25lZWRBdXRvbWF0aWNQdWxsKGZhbHNlKQogewogICAgIGFkZElucHV0KHN0
ZDo6bWFrZV91bmlxdWU8QXVkaW9Ob2RlSW5wdXQ+KHRoaXMpKTsKICAgICBhZGRPdXRwdXQoc3Rk
OjptYWtlX3VuaXF1ZTxBdWRpb05vZGVPdXRwdXQ+KHRoaXMsIG91dHB1dENoYW5uZWxDb3VudCkp
OwpAQCAtNTEsMjQgKzQ5LDI2IEBAIHZvaWQgQXVkaW9CYXNpY0luc3BlY3Rvck5vZGU6OnB1bGxJ
bnB1dHMoc2l6ZV90IGZyYW1lc1RvUHJvY2VzcykKICAgICBpbnB1dCgwKS0+cHVsbChvdXRwdXQo
MCktPmJ1cygpLCBmcmFtZXNUb1Byb2Nlc3MpOwogfQogCi12b2lkIEF1ZGlvQmFzaWNJbnNwZWN0
b3JOb2RlOjpjb25uZWN0KEF1ZGlvTm9kZSogZGVzdGluYXRpb24sIHVuc2lnbmVkIG91dHB1dElu
ZGV4LCB1bnNpZ25lZCBpbnB1dEluZGV4LCBFeGNlcHRpb25Db2RlJiBlYykKK0V4Y2VwdGlvbk9y
PHZvaWQ+IEF1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlOjpjb25uZWN0KEF1ZGlvTm9kZSogZGVzdGlu
YXRpb24sIHVuc2lnbmVkIG91dHB1dEluZGV4LCB1bnNpZ25lZCBpbnB1dEluZGV4KQogewogICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKICAgICBBdWRpb0NvbnRleHQ6OkF1dG9Mb2NrZXIg
bG9ja2VyKGNvbnRleHQoKSk7CiAKLSAgICBBdWRpb05vZGU6OmNvbm5lY3QoZGVzdGluYXRpb24s
IG91dHB1dEluZGV4LCBpbnB1dEluZGV4LCBlYyk7CisgICAgYXV0byByZXN1bHQgPSBBdWRpb05v
ZGU6OmNvbm5lY3QoZGVzdGluYXRpb24sIG91dHB1dEluZGV4LCBpbnB1dEluZGV4KTsKICAgICB1
cGRhdGVQdWxsU3RhdHVzKCk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotdm9pZCBBdWRpb0Jh
c2ljSW5zcGVjdG9yTm9kZTo6ZGlzY29ubmVjdCh1bnNpZ25lZCBvdXRwdXRJbmRleCwgRXhjZXB0
aW9uQ29kZSYgZWMpCitFeGNlcHRpb25Pcjx2b2lkPiBBdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZTo6
ZGlzY29ubmVjdCh1bnNpZ25lZCBvdXRwdXRJbmRleCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOwogCiAgICAgQXVkaW9Db250ZXh0OjpBdXRvTG9ja2VyIGxvY2tlcihjb250ZXh0KCkp
OwogCi0gICAgQXVkaW9Ob2RlOjpkaXNjb25uZWN0KG91dHB1dEluZGV4LCBlYyk7CisgICAgYXV0
byByZXN1bHQgPSBBdWRpb05vZGU6OmRpc2Nvbm5lY3Qob3V0cHV0SW5kZXgpOwogICAgIHVwZGF0
ZVB1bGxTdGF0dXMoKTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiB2b2lkIEF1ZGlvQmFzaWNJ
bnNwZWN0b3JOb2RlOjpjaGVja051bWJlck9mQ2hhbm5lbHNGb3JJbnB1dChBdWRpb05vZGVJbnB1
dCogaW5wdXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvQmFzaWNJbnNwZWN0b3JOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlLmgKaW5kZXggZTllNjZjMGY5NzY1MmRhMjg4NjY3M2Ex
ZWUyNzZiMzQzMGYwZmZmYi4uODVjYTI0MWEyZDFhMzg0YmE5MjZhYTMyODA4ZjdiOWM3NzM3Mzdk
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2lj
SW5zcGVjdG9yTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVk
aW9CYXNpY0luc3BlY3Rvck5vZGUuaApAQCAtMjIsOCArMjIsNyBAQAogICogU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAot
I2lmbmRlZiBBdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZV9oCi0jZGVmaW5lIEF1ZGlvQmFzaWNJbnNw
ZWN0b3JOb2RlX2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQXVkaW9Ob2RlLmgiCiAKQEAg
LTM2LDE3ICszNSwxNSBAQCBjbGFzcyBBdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZSA6IHB1YmxpYyBB
dWRpb05vZGUgewogcHVibGljOgogICAgIEF1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlKEF1ZGlvQ29u
dGV4dCYsIGZsb2F0IHNhbXBsZVJhdGUsIHVuc2lnbmVkIG91dHB1dENoYW5uZWxDb3VudCk7CiAK
LSAgICAvLyBBdWRpb05vZGUKK3ByaXZhdGU6CiAgICAgdm9pZCBwdWxsSW5wdXRzKHNpemVfdCBm
cmFtZXNUb1Byb2Nlc3MpIG92ZXJyaWRlOwotICAgIHZvaWQgY29ubmVjdChBdWRpb05vZGUqLCB1
bnNpZ25lZCBvdXRwdXRJbmRleCwgdW5zaWduZWQgaW5wdXRJbmRleCwgRXhjZXB0aW9uQ29kZSYp
IG92ZXJyaWRlOwotICAgIHZvaWQgZGlzY29ubmVjdCh1bnNpZ25lZCBvdXRwdXRJbmRleCwgRXhj
ZXB0aW9uQ29kZSYpIG92ZXJyaWRlOworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGNvbm5lY3QoQXVk
aW9Ob2RlKiwgdW5zaWduZWQgb3V0cHV0SW5kZXgsIHVuc2lnbmVkIGlucHV0SW5kZXgpIG92ZXJy
aWRlOworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGRpc2Nvbm5lY3QodW5zaWduZWQgb3V0cHV0SW5k
ZXgpIG92ZXJyaWRlOwogICAgIHZvaWQgY2hlY2tOdW1iZXJPZkNoYW5uZWxzRm9ySW5wdXQoQXVk
aW9Ob2RlSW5wdXQqKSBvdmVycmlkZTsKIAotcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZVB1bGxT
dGF0dXMoKTsKLSAgICBib29sIG1fbmVlZEF1dG9tYXRpY1B1bGw7IC8vIFdoZW4gc2V0dGluZyB0
byB0cnVlLCBBdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZSB3aWxsIGJlIHB1bGxlZCBhdXRvbWF0aWNs
bHkgYnkgQXVkaW9Db250ZXh0IGJlZm9yZSB0aGUgZW5kIG9mIGVhY2ggcmVuZGVyIHF1YW50dW0u
CisKKyAgICBib29sIG1fbmVlZEF1dG9tYXRpY1B1bGwgeyBmYWxzZSB9OyAvLyBXaGVuIHNldHRp
bmcgdG8gdHJ1ZSwgQXVkaW9CYXNpY0luc3BlY3Rvck5vZGUgd2lsbCBiZSBwdWxsZWQgYXV0b21h
dGljYWxseSBieSBBdWRpb0NvbnRleHQgYmVmb3JlIHRoZSBlbmQgb2YgZWFjaCByZW5kZXIgcXVh
bnR1bS4KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEF1ZGlvQmFz
aWNJbnNwZWN0b3JOb2RlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9CdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9B
dWRpb0J1ZmZlci5jcHAKaW5kZXggMjBmN2NlYWZmNjk4ZTY2MzU4ODQzYTI5ZDllY2MxMzFlOGVm
MjQzMi4uMzAzOGFjMDNhMjVlNGI2ZDg1ZjQ0OTFmMmExNDM0ZWQzMjU3YjhhZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlci5jcHAKQEAgLTMyLDEy
ICszMiw4IEBACiAKICNpbmNsdWRlICJBdWRpb0J1ZmZlci5oIgogCi0jaW5jbHVkZSAiQXVkaW9C
dXMuaCIKICNpbmNsdWRlICJBdWRpb0NvbnRleHQuaCIKICNpbmNsdWRlICJBdWRpb0ZpbGVSZWFk
ZXIuaCIKLSNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCi0jaW5jbHVkZSAiRXhjZXB0aW9uQ29k
ZVBsYWNlaG9sZGVyLmgiCi0KICNpbmNsdWRlIDxydW50aW1lL0pTQ0lubGluZXMuaD4KICNpbmNs
dWRlIDxydW50aW1lL1R5cGVkQXJyYXlJbmxpbmVzLmg+CiAKQEAgLTQ3LDIyICs0MywxOSBAQCBS
ZWZQdHI8QXVkaW9CdWZmZXI+IEF1ZGlvQnVmZmVyOjpjcmVhdGUodW5zaWduZWQgbnVtYmVyT2ZD
aGFubmVscywgc2l6ZV90IG51bWJlcgogewogICAgIGlmIChzYW1wbGVSYXRlIDwgMjIwNTAgfHwg
c2FtcGxlUmF0ZSA+IDk2MDAwIHx8IG51bWJlck9mQ2hhbm5lbHMgPiBBdWRpb0NvbnRleHQ6Om1h
eE51bWJlck9mQ2hhbm5lbHMoKSB8fCAhbnVtYmVyT2ZGcmFtZXMpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwotICAgIAogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEF1ZGlvQnVmZmVyKG51bWJl
ck9mQ2hhbm5lbHMsIG51bWJlck9mRnJhbWVzLCBzYW1wbGVSYXRlKSk7CiB9CiAKIFJlZlB0cjxB
dWRpb0J1ZmZlcj4gQXVkaW9CdWZmZXI6OmNyZWF0ZUZyb21BdWRpb0ZpbGVEYXRhKGNvbnN0IHZv
aWQqIGRhdGEsIHNpemVfdCBkYXRhU2l6ZSwgYm9vbCBtaXhUb01vbm8sIGZsb2F0IHNhbXBsZVJh
dGUpCiB7CiAgICAgUmVmUHRyPEF1ZGlvQnVzPiBidXMgPSBjcmVhdGVCdXNGcm9tSW5NZW1vcnlB
dWRpb0ZpbGUoZGF0YSwgZGF0YVNpemUsIG1peFRvTW9ubywgc2FtcGxlUmF0ZSk7Ci0gICAgaWYg
KGJ1cy5nZXQoKSkKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQXVkaW9CdWZmZXIoYnVz
LmdldCgpKSk7Ci0KLSAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBpZiAoIWJ1cykKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQXVkaW9CdWZmZXIoKmJ1
cykpOwogfQogCiBBdWRpb0J1ZmZlcjo6QXVkaW9CdWZmZXIodW5zaWduZWQgbnVtYmVyT2ZDaGFu
bmVscywgc2l6ZV90IG51bWJlck9mRnJhbWVzLCBmbG9hdCBzYW1wbGVSYXRlKQotICAgIDogbV9n
YWluKDEuMCkKLSAgICAsIG1fc2FtcGxlUmF0ZShzYW1wbGVSYXRlKQorICAgIDogbV9zYW1wbGVS
YXRlKHNhbXBsZVJhdGUpCiAgICAgLCBtX2xlbmd0aChudW1iZXJPZkZyYW1lcykKIHsKICAgICBt
X2NoYW5uZWxzLnJlc2VydmVDYXBhY2l0eShudW1iZXJPZkNoYW5uZWxzKTsKQEAgLTc0LDE5ICs2
NywxOCBAQCBBdWRpb0J1ZmZlcjo6QXVkaW9CdWZmZXIodW5zaWduZWQgbnVtYmVyT2ZDaGFubmVs
cywgc2l6ZV90IG51bWJlck9mRnJhbWVzLCBmbG9hdAogICAgIH0KIH0KIAotQXVkaW9CdWZmZXI6
OkF1ZGlvQnVmZmVyKEF1ZGlvQnVzKiBidXMpCi0gICAgOiBtX2dhaW4oMS4wKQotICAgICwgbV9z
YW1wbGVSYXRlKGJ1cy0+c2FtcGxlUmF0ZSgpKQotICAgICwgbV9sZW5ndGgoYnVzLT5sZW5ndGgo
KSkKK0F1ZGlvQnVmZmVyOjpBdWRpb0J1ZmZlcihBdWRpb0J1cyYgYnVzKQorICAgIDogbV9zYW1w
bGVSYXRlKGJ1cy5zYW1wbGVSYXRlKCkpCisgICAgLCBtX2xlbmd0aChidXMubGVuZ3RoKCkpCiB7
CiAgICAgLy8gQ29weSBhdWRpbyBkYXRhIGZyb20gdGhlIGJ1cyB0byB0aGUgRmxvYXQzMkFycmF5
cyB3ZSBtYW5hZ2UuCi0gICAgdW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscyA9IGJ1cy0+bnVtYmVy
T2ZDaGFubmVscygpOworICAgIHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMgPSBidXMubnVtYmVy
T2ZDaGFubmVscygpOwogICAgIG1fY2hhbm5lbHMucmVzZXJ2ZUNhcGFjaXR5KG51bWJlck9mQ2hh
bm5lbHMpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1iZXJPZkNoYW5uZWxzOyAr
K2kpIHsKLSAgICAgICAgUmVmUHRyPEZsb2F0MzJBcnJheT4gY2hhbm5lbERhdGFBcnJheSA9IEZs
b2F0MzJBcnJheTo6Y3JlYXRlKG1fbGVuZ3RoKTsKKyAgICAgICAgYXV0byBjaGFubmVsRGF0YUFy
cmF5ID0gRmxvYXQzMkFycmF5OjpjcmVhdGUobV9sZW5ndGgpOwogICAgICAgICBjaGFubmVsRGF0
YUFycmF5LT5zZXROZXV0ZXJhYmxlKGZhbHNlKTsKLSAgICAgICAgY2hhbm5lbERhdGFBcnJheS0+
c2V0UmFuZ2UoYnVzLT5jaGFubmVsKGkpLT5kYXRhKCksIG1fbGVuZ3RoLCAwKTsKLSAgICAgICAg
bV9jaGFubmVscy5hcHBlbmQoY2hhbm5lbERhdGFBcnJheSk7CisgICAgICAgIGNoYW5uZWxEYXRh
QXJyYXktPnNldFJhbmdlKGJ1cy5jaGFubmVsKGkpLT5kYXRhKCksIG1fbGVuZ3RoLCAwKTsKKyAg
ICAgICAgbV9jaGFubmVscy5hcHBlbmQoV1RGTW92ZShjaGFubmVsRGF0YUFycmF5KSk7CiAgICAg
fQogfQogCkBAIC05NSwzMSArODcsMjcgQEAgdm9pZCBBdWRpb0J1ZmZlcjo6cmVsZWFzZU1lbW9y
eSgpCiAgICAgbV9jaGFubmVscy5jbGVhcigpOwogfQogCi1SZWZQdHI8RmxvYXQzMkFycmF5PiBB
dWRpb0J1ZmZlcjo6Z2V0Q2hhbm5lbERhdGEodW5zaWduZWQgY2hhbm5lbEluZGV4LCBFeGNlcHRp
b25Db2RlJiBlYykKK0V4Y2VwdGlvbk9yPFJlZjxGbG9hdDMyQXJyYXk+PiBBdWRpb0J1ZmZlcjo6
Z2V0Q2hhbm5lbERhdGEodW5zaWduZWQgY2hhbm5lbEluZGV4KQogewotICAgIGlmIChjaGFubmVs
SW5kZXggPj0gbV9jaGFubmVscy5zaXplKCkpIHsKLSAgICAgICAgZWMgPSBTWU5UQVhfRVJSOwot
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0KLSAgICBGbG9hdDMyQXJyYXkqIGNoYW5u
ZWxEYXRhID0gbV9jaGFubmVsc1tjaGFubmVsSW5kZXhdLmdldCgpOwotICAgIHJldHVybiBGbG9h
dDMyQXJyYXk6OmNyZWF0ZShjaGFubmVsRGF0YS0+YnVmZmVyKCksIGNoYW5uZWxEYXRhLT5ieXRl
T2Zmc2V0KCksIGNoYW5uZWxEYXRhLT5sZW5ndGgoKSk7CisgICAgaWYgKGNoYW5uZWxJbmRleCA+
PSBtX2NoYW5uZWxzLnNpemUoKSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFNZTlRBWF9F
UlIgfTsKKyAgICBhdXRvJiBjaGFubmVsRGF0YSA9ICptX2NoYW5uZWxzW2NoYW5uZWxJbmRleF07
CisgICAgYXV0byBhcnJheSA9IEZsb2F0MzJBcnJheTo6Y3JlYXRlKGNoYW5uZWxEYXRhLmJ1ZmZl
cigpLCBjaGFubmVsRGF0YS5ieXRlT2Zmc2V0KCksIGNoYW5uZWxEYXRhLmxlbmd0aCgpKTsKKyAg
ICBSRUxFQVNFX0FTU0VSVChhcnJheSk7CisgICAgcmV0dXJuIGFycmF5LnJlbGVhc2VOb25OdWxs
KCk7CiB9CiAKLUZsb2F0MzJBcnJheSogQXVkaW9CdWZmZXI6OmdldENoYW5uZWxEYXRhKHVuc2ln
bmVkIGNoYW5uZWxJbmRleCkKK0Zsb2F0MzJBcnJheSogQXVkaW9CdWZmZXI6OmNoYW5uZWxEYXRh
KHVuc2lnbmVkIGNoYW5uZWxJbmRleCkKIHsKICAgICBpZiAoY2hhbm5lbEluZGV4ID49IG1fY2hh
bm5lbHMuc2l6ZSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQogICAgIHJldHVybiBtX2No
YW5uZWxzW2NoYW5uZWxJbmRleF0uZ2V0KCk7CiB9CiAKIHZvaWQgQXVkaW9CdWZmZXI6Onplcm8o
KQogewotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2NoYW5uZWxzLnNpemUoKTsgKytp
KSB7Ci0gICAgICAgIGlmIChnZXRDaGFubmVsRGF0YShpKSkKLSAgICAgICAgICAgIGdldENoYW5u
ZWxEYXRhKGkpLT56ZXJvUmFuZ2UoMCwgbGVuZ3RoKCkpOwotICAgIH0KKyAgICBmb3IgKGF1dG8m
IGNoYW5uZWwgOiBtX2NoYW5uZWxzKQorICAgICAgICBjaGFubmVsLT56ZXJvUmFuZ2UoMCwgbGVu
Z3RoKCkpOwogfQogCiBzaXplX3QgQXVkaW9CdWZmZXI6Om1lbW9yeUNvc3QoKSBjb25zdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlci5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlci5oCmluZGV4IDgzMTYw
ODQ5MjIzYWJkMzkzYWI2YTg1MzI2OWViNjAzYTE0MjU1MjMuLjM5NGEwZDM0NDBhY2VhNDMzOWYx
Y2Y4MzBhM2IyOWE2MTZiMzRhM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQXVkaW9CdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvQnVmZmVyLmgKQEAgLTI2LDI1ICsyNiwyMSBAQAogICogVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwog
Ci0jaWZuZGVmIEF1ZGlvQnVmZmVyX2gKLSNkZWZpbmUgQXVkaW9CdWZmZXJfaAorI3ByYWdtYSBv
bmNlCiAKKyNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgogI2luY2x1ZGUgPHJ1bnRpbWUvRmxvYXQz
MkFycmF5Lmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvUmVm
UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIEF1ZGlvQnVzOwogCi10eXBlZGVmIGludCBFeGNlcHRpb25Db2RlOwotCiBjbGFzcyBB
dWRpb0J1ZmZlciA6IHB1YmxpYyBSZWZDb3VudGVkPEF1ZGlvQnVmZmVyPiB7CiBwdWJsaWM6ICAg
CiAgICAgc3RhdGljIFJlZlB0cjxBdWRpb0J1ZmZlcj4gY3JlYXRlKHVuc2lnbmVkIG51bWJlck9m
Q2hhbm5lbHMsIHNpemVfdCBudW1iZXJPZkZyYW1lcywgZmxvYXQgc2FtcGxlUmF0ZSk7CiAKLSAg
ICAvLyBSZXR1cm5zIDAgaWYgZGF0YSBpcyBub3QgYSB2YWxpZCBhdWRpbyBmaWxlLgorICAgIC8v
IFJldHVybnMgbnVsbHB0ciBpZiBkYXRhIGlzIG5vdCBhIHZhbGlkIGF1ZGlvIGZpbGUuCiAgICAg
c3RhdGljIFJlZlB0cjxBdWRpb0J1ZmZlcj4gY3JlYXRlRnJvbUF1ZGlvRmlsZURhdGEoY29uc3Qg
dm9pZCogZGF0YSwgc2l6ZV90IGRhdGFTaXplLCBib29sIG1peFRvTW9ubywgZmxvYXQgc2FtcGxl
UmF0ZSk7CiAKICAgICAvLyBGb3JtYXQKQEAgLTU0LDMyICs1MCwyOSBAQCBwdWJsaWM6CiAKICAg
ICAvLyBDaGFubmVsIGRhdGEgYWNjZXNzCiAgICAgdW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscygp
IGNvbnN0IHsgcmV0dXJuIG1fY2hhbm5lbHMuc2l6ZSgpOyB9Ci0gICAgUmVmUHRyPEZsb2F0MzJB
cnJheT4gZ2V0Q2hhbm5lbERhdGEodW5zaWduZWQgY2hhbm5lbEluZGV4LCBFeGNlcHRpb25Db2Rl
Jik7Ci0gICAgRmxvYXQzMkFycmF5KiBnZXRDaGFubmVsRGF0YSh1bnNpZ25lZCBjaGFubmVsSW5k
ZXgpOworICAgIEV4Y2VwdGlvbk9yPFJlZjxGbG9hdDMyQXJyYXk+PiBnZXRDaGFubmVsRGF0YSh1
bnNpZ25lZCBjaGFubmVsSW5kZXgpOworICAgIEZsb2F0MzJBcnJheSogY2hhbm5lbERhdGEodW5z
aWduZWQgY2hhbm5lbEluZGV4KTsKICAgICB2b2lkIHplcm8oKTsKIAogICAgIC8vIFNjYWxhciBn
YWluCiAgICAgZG91YmxlIGdhaW4oKSBjb25zdCB7IHJldHVybiBtX2dhaW47IH0KICAgICB2b2lk
IHNldEdhaW4oZG91YmxlIGdhaW4pIHsgbV9nYWluID0gZ2FpbjsgfQogCi0gICAgLy8gQmVjYXVz
ZSBhbiBBdWRpb0J1ZmZlciBoYXMgYSBKYXZhU2NyaXB0IHdyYXBwZXIsIHdoaWNoIHdpbGwgYmUg
Z2FyYmFnZSBjb2xsZWN0ZWQsIGl0IG1heSB0YWtlIGF3aGlsZSBmb3IgdGhpcyBvYmplY3QgdG8g
YmUgZGVsZXRlZC4KKyAgICAvLyBCZWNhdXNlIGFuIEF1ZGlvQnVmZmVyIGhhcyBhIEphdmFTY3Jp
cHQgd3JhcHBlciwgd2hpY2ggd2lsbCBiZSBnYXJiYWdlIGNvbGxlY3RlZCwgaXQgbWF5IHRha2Ug
YSB3aGlsZSBmb3IgdGhpcyBvYmplY3QgdG8gYmUgZGVsZXRlZC4KICAgICAvLyByZWxlYXNlTWVt
b3J5KCkgY2FuIGJlIGNhbGxlZCB3aGVuIHRoZSBBdWRpb0NvbnRleHQgZ29lcyBhd2F5LCBzbyB3
ZSBjYW4gcmVsZWFzZSB0aGUgbWVtb3J5IGVhcmxpZXIgdGhhbiB3aGVuIHRoZSBnYXJiYWdlIGNv
bGxlY3Rpb24gaGFwcGVucy4KICAgICAvLyBDYXJlZnVsISBPbmx5IGNhbGwgdGhpcyB3aGVuIHRo
ZSBwYWdlIHVubG9hZHMsIGFmdGVyIHRoZSBBdWRpb0NvbnRleHQgaXMgbm8gbG9uZ2VyIHByb2Nl
c3NpbmcuCiAgICAgdm9pZCByZWxlYXNlTWVtb3J5KCk7CiAKICAgICBzaXplX3QgbWVtb3J5Q29z
dCgpIGNvbnN0OwogICAgIAotcHJvdGVjdGVkOgorcHJpdmF0ZToKICAgICBBdWRpb0J1ZmZlcih1
bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzLCBzaXplX3QgbnVtYmVyT2ZGcmFtZXMsIGZsb2F0IHNh
bXBsZVJhdGUpOwotICAgIGV4cGxpY2l0IEF1ZGlvQnVmZmVyKEF1ZGlvQnVzKik7CisgICAgZXhw
bGljaXQgQXVkaW9CdWZmZXIoQXVkaW9CdXMmKTsKIAotICAgIGRvdWJsZSBtX2dhaW47IC8vIHNj
YWxhciBnYWluCisgICAgZG91YmxlIG1fZ2FpbiB7IDEuMCB9OyAvLyBzY2FsYXIgZ2FpbgogICAg
IGZsb2F0IG1fc2FtcGxlUmF0ZTsKICAgICBzaXplX3QgbV9sZW5ndGg7Ci0KICAgICBWZWN0b3I8
UmVmUHRyPEZsb2F0MzJBcnJheT4+IG1fY2hhbm5lbHM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCi0KLSNlbmRpZiAvLyBBdWRpb0J1ZmZlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXIuaWRsCmluZGV4IDdiOGUwZTI2YzBiM2ZlMDBjZjZi
ODU1MmUxMWJhMmQ1OTg4NjUyYTIuLmExYTkwMmUwNjk1ZmRhNjE5MDQ2OTZjMjc5NWQ2MjQ4MmM4
NjhkMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9C
dWZmZXIuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZm
ZXIuaWRsCkBAIC0zOSw1ICszOSw1IEBACiAKICAgICAvLyBDaGFubmVsIGFjY2VzcwogICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIG51bWJlck9mQ2hhbm5lbHM7Ci0gICAgW01h
eVRocm93TGVnYWN5RXhjZXB0aW9uXSBGbG9hdDMyQXJyYXkgZ2V0Q2hhbm5lbERhdGEodW5zaWdu
ZWQgbG9uZyBjaGFubmVsSW5kZXgpOworICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gRmxvYXQzMkFy
cmF5IGdldENoYW5uZWxEYXRhKHVuc2lnbmVkIGxvbmcgY2hhbm5lbEluZGV4KTsKIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNl
Tm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291
cmNlTm9kZS5jcHAKaW5kZXggODM5M2Q3NmY2Y2YzYTllYTMwZGI3MTBlNjJjZDMzZDEyZDVmNWM2
MC4uYTE5ZjYzZjYzZDU0ZDMxMWQxYTQyNmViMDc4NGM0YTRmZDM4ODZjNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VO
b2RlLmNwcApAQCAtMjgsMTcgKzI4LDE0IEBACiAKICNpbmNsdWRlICJBdWRpb0J1ZmZlclNvdXJj
ZU5vZGUuaCIKIAorI2luY2x1ZGUgIkF1ZGlvQnVmZmVyLmgiCiAjaW5jbHVkZSAiQXVkaW9Db250
ZXh0LmgiCiAjaW5jbHVkZSAiQXVkaW9Ob2RlT3V0cHV0LmgiCisjaW5jbHVkZSAiQXVkaW9QYXJh
bS5oIgogI2luY2x1ZGUgIkF1ZGlvVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiRmxvYXRDb252ZXJz
aW9uLmgiCi0jaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgorI2luY2x1ZGUgIlBhbm5lck5v
ZGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSA8YWxn
b3JpdGhtPgotI2luY2x1ZGUgPGluc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2suaD4KLSNpbmNsdWRl
IDx3dGYvTWFpblRocmVhZC5oPgotI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+Ci0jaW5jbHVk
ZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTg2LDEw
ICs4MywxMCBAQCBBdWRpb0J1ZmZlclNvdXJjZU5vZGU6On5BdWRpb0J1ZmZlclNvdXJjZU5vZGUo
KQogCiB2b2lkIEF1ZGlvQnVmZmVyU291cmNlTm9kZTo6cHJvY2VzcyhzaXplX3QgZnJhbWVzVG9Q
cm9jZXNzKQogewotICAgIEF1ZGlvQnVzKiBvdXRwdXRCdXMgPSBvdXRwdXQoMCktPmJ1cygpOwor
ICAgIGF1dG8mIG91dHB1dEJ1cyA9ICpvdXRwdXQoMCktPmJ1cygpOwogCiAgICAgaWYgKCFpc0lu
aXRpYWxpemVkKCkpIHsKLSAgICAgICAgb3V0cHV0QnVzLT56ZXJvKCk7CisgICAgICAgIG91dHB1
dEJ1cy56ZXJvKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTk3LDEyICs5NCwxMiBA
QCB2b2lkIEF1ZGlvQnVmZmVyU291cmNlTm9kZTo6cHJvY2VzcyhzaXplX3QgZnJhbWVzVG9Qcm9j
ZXNzKQogICAgIHN0ZDo6dW5pcXVlX2xvY2s8TG9jaz4gbG9jayhtX3Byb2Nlc3NNdXRleCwgc3Rk
Ojp0cnlfdG9fbG9jayk7CiAgICAgaWYgKCFsb2NrLm93bnNfbG9jaygpKSB7CiAgICAgICAgIC8v
IFRvbyBiYWQgLSB0aGUgdHJ5X2xvY2soKSBmYWlsZWQuIFdlIG11c3QgYmUgaW4gdGhlIG1pZGRs
ZSBvZiBjaGFuZ2luZyBidWZmZXJzIGFuZCB3ZXJlIGFscmVhZHkgb3V0cHV0dGluZyBzaWxlbmNl
IGFueXdheS4KLSAgICAgICAgb3V0cHV0QnVzLT56ZXJvKCk7CisgICAgICAgIG91dHB1dEJ1cy56
ZXJvKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBpZiAoIWJ1ZmZlcigpKSB7Ci0g
ICAgICAgIG91dHB1dEJ1cy0+emVybygpOworICAgICAgICBvdXRwdXRCdXMuemVybygpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xMTAsMzMgKzEwNywzMiBAQCB2b2lkIEF1ZGlvQnVm
ZmVyU291cmNlTm9kZTo6cHJvY2VzcyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKQogICAgIC8vIGJl
Zm9yZSB0aGUgb3V0cHV0IGJ1cyBpcyB1cGRhdGVkIHRvIHRoZSBuZXcgbnVtYmVyIG9mIGNoYW5u
ZWxzIGJlY2F1c2Ugb2YgdXNlIG9mIHRyeUxvY2tzKCkgaW4gdGhlIGNvbnRleHQncyB1cGRhdGlu
ZyBzeXN0ZW0uCiAgICAgLy8gSW4gdGhpcyBjYXNlLCBpZiB0aGUgdGhlIGJ1ZmZlciBoYXMganVz
dCBiZWVuIGNoYW5nZWQgYW5kIHdlJ3JlIG5vdCBxdWl0ZSByZWFkeSB5ZXQsIHRoZW4ganVzdCBv
dXRwdXQgc2lsZW5jZS4KICAgICBpZiAobnVtYmVyT2ZDaGFubmVscygpICE9IGJ1ZmZlcigpLT5u
dW1iZXJPZkNoYW5uZWxzKCkpIHsKLSAgICAgICAgb3V0cHV0QnVzLT56ZXJvKCk7CisgICAgICAg
IG91dHB1dEJ1cy56ZXJvKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBzaXplX3Qg
cXVhbnR1bUZyYW1lT2Zmc2V0OwogICAgIHNpemVfdCBidWZmZXJGcmFtZXNUb1Byb2Nlc3M7Ci0K
ICAgICB1cGRhdGVTY2hlZHVsaW5nSW5mbyhmcmFtZXNUb1Byb2Nlc3MsIG91dHB1dEJ1cywgcXVh
bnR1bUZyYW1lT2Zmc2V0LCBidWZmZXJGcmFtZXNUb1Byb2Nlc3MpOwogCiAgICAgaWYgKCFidWZm
ZXJGcmFtZXNUb1Byb2Nlc3MpIHsKLSAgICAgICAgb3V0cHV0QnVzLT56ZXJvKCk7CisgICAgICAg
IG91dHB1dEJ1cy56ZXJvKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgb3V0cHV0QnVzLT5udW1iZXJPZkNoYW5uZWxzKCk7ICsraSkKLSAg
ICAgICAgbV9kZXN0aW5hdGlvbkNoYW5uZWxzW2ldID0gb3V0cHV0QnVzLT5jaGFubmVsKGkpLT5t
dXRhYmxlRGF0YSgpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBvdXRwdXRCdXMubnVt
YmVyT2ZDaGFubmVscygpOyArK2kpCisgICAgICAgIG1fZGVzdGluYXRpb25DaGFubmVsc1tpXSA9
IG91dHB1dEJ1cy5jaGFubmVsKGkpLT5tdXRhYmxlRGF0YSgpOwogCiAgICAgLy8gUmVuZGVyIGJ5
IHJlYWRpbmcgZGlyZWN0bHkgZnJvbSB0aGUgYnVmZmVyLgotICAgIGlmICghcmVuZGVyRnJvbUJ1
ZmZlcihvdXRwdXRCdXMsIHF1YW50dW1GcmFtZU9mZnNldCwgYnVmZmVyRnJhbWVzVG9Qcm9jZXNz
KSkgewotICAgICAgICBvdXRwdXRCdXMtPnplcm8oKTsKKyAgICBpZiAoIXJlbmRlckZyb21CdWZm
ZXIoJm91dHB1dEJ1cywgcXVhbnR1bUZyYW1lT2Zmc2V0LCBidWZmZXJGcmFtZXNUb1Byb2Nlc3Mp
KSB7CisgICAgICAgIG91dHB1dEJ1cy56ZXJvKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
ICAgICAvLyBBcHBseSB0aGUgZ2FpbiAoaW4tcGxhY2UpIHRvIHRoZSBvdXRwdXQgYnVzLgogICAg
IGZsb2F0IHRvdGFsR2FpbiA9IGdhaW4oKS0+dmFsdWUoKSAqIG1fYnVmZmVyLT5nYWluKCk7Ci0g
ICAgb3V0cHV0QnVzLT5jb3B5V2l0aEdhaW5Gcm9tKCpvdXRwdXRCdXMsICZtX2xhc3RHYWluLCB0
b3RhbEdhaW4pOwotICAgIG91dHB1dEJ1cy0+Y2xlYXJTaWxlbnRGbGFnKCk7CisgICAgb3V0cHV0
QnVzLmNvcHlXaXRoR2FpbkZyb20ob3V0cHV0QnVzLCAmbV9sYXN0R2FpbiwgdG90YWxHYWluKTsK
KyAgICBvdXRwdXRCdXMuY2xlYXJTaWxlbnRGbGFnKCk7CiB9CiAKIC8vIFJldHVybnMgdHJ1ZSBp
ZiB3ZSdyZSBmaW5pc2hlZC4KQEAgLTQyOSw3ICs0MjUsNyBAQCB2b2lkIEF1ZGlvQnVmZmVyU291
cmNlTm9kZTo6c2V0QnVmZmVyKFJlZlB0cjxBdWRpb0J1ZmZlcj4mJiBidWZmZXIpCiAgICAgICAg
IG1fZGVzdGluYXRpb25DaGFubmVscyA9IHN0ZDo6bWFrZV91bmlxdWU8ZmxvYXQqW10+KG51bWJl
ck9mQ2hhbm5lbHMpOwogCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1iZXJP
ZkNoYW5uZWxzOyArK2kpIAotICAgICAgICAgICAgbV9zb3VyY2VDaGFubmVsc1tpXSA9IGJ1ZmZl
ci0+Z2V0Q2hhbm5lbERhdGEoaSktPmRhdGEoKTsKKyAgICAgICAgICAgIG1fc291cmNlQ2hhbm5l
bHNbaV0gPSBidWZmZXItPmNoYW5uZWxEYXRhKGkpLT5kYXRhKCk7CiAgICAgfQogCiAgICAgbV92
aXJ0dWFsUmVhZEluZGV4ID0gMDsKQEAgLTQ0MSw3ICs0MzcsNyBAQCB1bnNpZ25lZCBBdWRpb0J1
ZmZlclNvdXJjZU5vZGU6Om51bWJlck9mQ2hhbm5lbHMoKQogICAgIHJldHVybiBvdXRwdXQoMCkt
Pm51bWJlck9mQ2hhbm5lbHMoKTsKIH0KIAotdm9pZCBBdWRpb0J1ZmZlclNvdXJjZU5vZGU6OnN0
YXJ0KGRvdWJsZSB3aGVuLCBkb3VibGUgZ3JhaW5PZmZzZXQsIE9wdGlvbmFsPGRvdWJsZT4gb3B0
aW9uYWxHcmFpbkR1cmF0aW9uLCBFeGNlcHRpb25Db2RlJiBlYykKK0V4Y2VwdGlvbk9yPHZvaWQ+
IEF1ZGlvQnVmZmVyU291cmNlTm9kZTo6c3RhcnQoZG91YmxlIHdoZW4sIGRvdWJsZSBncmFpbk9m
ZnNldCwgT3B0aW9uYWw8ZG91YmxlPiBvcHRpb25hbEdyYWluRHVyYXRpb24pCiB7CiAgICAgZG91
YmxlIGdyYWluRHVyYXRpb24gPSAwOwogICAgIGlmIChvcHRpb25hbEdyYWluRHVyYXRpb24pCkBA
IC00NDksMzcgKzQ0NSwyOSBAQCB2b2lkIEF1ZGlvQnVmZmVyU291cmNlTm9kZTo6c3RhcnQoZG91
YmxlIHdoZW4sIGRvdWJsZSBncmFpbk9mZnNldCwgT3B0aW9uYWw8ZG91YgogICAgIGVsc2UgaWYg
KGJ1ZmZlcigpKQogICAgICAgICBncmFpbkR1cmF0aW9uID0gYnVmZmVyKCktPmR1cmF0aW9uKCkg
LSBncmFpbk9mZnNldDsKIAotICAgIHN0YXJ0UGxheWluZyhQYXJ0aWFsLCB3aGVuLCBncmFpbk9m
ZnNldCwgZ3JhaW5EdXJhdGlvbiwgZWMpOworICAgIHJldHVybiBzdGFydFBsYXlpbmcoUGFydGlh
bCwgd2hlbiwgZ3JhaW5PZmZzZXQsIGdyYWluRHVyYXRpb24pOwogfQogCi12b2lkIEF1ZGlvQnVm
ZmVyU291cmNlTm9kZTo6c3RhcnRQbGF5aW5nKEJ1ZmZlclBsYXliYWNrTW9kZSBwbGF5YmFja01v
ZGUsIGRvdWJsZSB3aGVuLCBkb3VibGUgZ3JhaW5PZmZzZXQsIGRvdWJsZSBncmFpbkR1cmF0aW9u
LCBFeGNlcHRpb25Db2RlJiBlYykKK0V4Y2VwdGlvbk9yPHZvaWQ+IEF1ZGlvQnVmZmVyU291cmNl
Tm9kZTo6c3RhcnRQbGF5aW5nKEJ1ZmZlclBsYXliYWNrTW9kZSBwbGF5YmFja01vZGUsIGRvdWJs
ZSB3aGVuLCBkb3VibGUgZ3JhaW5PZmZzZXQsIGRvdWJsZSBncmFpbkR1cmF0aW9uKQogewogICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKICAgICBjb250ZXh0KCkubm9kZVdpbGxCZWdpblBs
YXliYWNrKCk7CiAKLSAgICBpZiAobV9wbGF5YmFja1N0YXRlICE9IFVOU0NIRURVTEVEX1NUQVRF
KSB7Ci0gICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9CisgICAgaWYgKG1fcGxheWJhY2tTdGF0ZSAhPSBVTlNDSEVEVUxFRF9TVEFURSkKKyAgICAg
ICAgcmV0dXJuIEV4Y2VwdGlvbiB7IElOVkFMSURfU1RBVEVfRVJSIH07CiAKLSAgICBpZiAoIXN0
ZDo6aXNmaW5pdGUod2hlbikgfHwgKHdoZW4gPCAwKSkgewotICAgICAgICBlYyA9IElOVkFMSURf
U1RBVEVfRVJSOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIGlmICghc3RkOjppc2Zpbml0
ZSh3aGVuKSB8fCAod2hlbiA8IDApKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSU5WQUxJ
RF9TVEFURV9FUlIgfTsKIAotICAgIGlmICghc3RkOjppc2Zpbml0ZShncmFpbk9mZnNldCkgfHwg
KGdyYWluT2Zmc2V0IDwgMCkpIHsKLSAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAoIXN0ZDo6aXNmaW5pdGUoZ3JhaW5PZmZzZXQp
IHx8IChncmFpbk9mZnNldCA8IDApKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSU5WQUxJ
RF9TVEFURV9FUlIgfTsKIAotICAgIGlmICghc3RkOjppc2Zpbml0ZShncmFpbkR1cmF0aW9uKSB8
fCAoZ3JhaW5EdXJhdGlvbiA8IDApKSB7Ci0gICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgaWYgKCFzdGQ6OmlzZmluaXRlKGdyYWluRHVy
YXRpb24pIHx8IChncmFpbkR1cmF0aW9uIDwgMCkpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24g
eyBJTlZBTElEX1NUQVRFX0VSUiB9OwogCiAgICAgaWYgKCFidWZmZXIoKSkKLSAgICAgICAgcmV0
dXJuOworICAgICAgICByZXR1cm4geyB9OwogCiAgICAgbV9pc0dyYWluID0gcGxheWJhY2tNb2Rl
ID09IFBhcnRpYWw7CiAgICAgaWYgKG1faXNHcmFpbikgewpAQCAtNTA3LDYgKzQ5NSw4IEBAIHZv
aWQgQXVkaW9CdWZmZXJTb3VyY2VOb2RlOjpzdGFydFBsYXlpbmcoQnVmZmVyUGxheWJhY2tNb2Rl
IHBsYXliYWNrTW9kZSwgZG91YmxlCiAgICAgICAgIG1fdmlydHVhbFJlYWRJbmRleCA9IEF1ZGlv
VXRpbGl0aWVzOjp0aW1lVG9TYW1wbGVGcmFtZShtX2dyYWluT2Zmc2V0LCBidWZmZXIoKS0+c2Ft
cGxlUmF0ZSgpKTsKICAgICAKICAgICBtX3BsYXliYWNrU3RhdGUgPSBTQ0hFRFVMRURfU1RBVEU7
CisKKyAgICByZXR1cm4geyB9OwogfQogCiBkb3VibGUgQXVkaW9CdWZmZXJTb3VyY2VOb2RlOjp0
b3RhbFBpdGNoUmF0ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuaAppbmRleCBiZjNmN2NmNWZjMDU5YjMwODMxNWYw
ZTM2NTE0Mzk0NjNlYTk5ZTI4Li5hMDkyNjBhZGY5ODJmZWMzNjdjOTc0NTI0ZTA0MzhhNTY0YjQ0
ZWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVm
ZmVyU291cmNlTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVk
aW9CdWZmZXJTb3VyY2VOb2RlLmgKQEAgLTIyLDM1ICsyMiwyOCBAQAogICogU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAot
I2lmbmRlZiBBdWRpb0J1ZmZlclNvdXJjZU5vZGVfaAotI2RlZmluZSBBdWRpb0J1ZmZlclNvdXJj
ZU5vZGVfaAorI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJBdWRpb0J1ZmZlci5oIgotI2luY2x1
ZGUgIkF1ZGlvQnVzLmgiCi0jaW5jbHVkZSAiQXVkaW9QYXJhbS5oIgogI2luY2x1ZGUgIkF1ZGlv
U2NoZWR1bGVkU291cmNlTm9kZS5oIgotI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKLSNpbmNs
dWRlICJQYW5uZXJOb2RlLmgiCi0jaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9Mb2Nr
Lmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNs
YXNzIEF1ZGlvQ29udGV4dDsKK2NsYXNzIEF1ZGlvQnVmZmVyOworY2xhc3MgUGFubmVyTm9kZTsK
IAogLy8gQXVkaW9CdWZmZXJTb3VyY2VOb2RlIGlzIGFuIEF1ZGlvTm9kZSByZXByZXNlbnRpbmcg
YW4gYXVkaW8gc291cmNlIGZyb20gYW4gaW4tbWVtb3J5IGF1ZGlvIGFzc2V0IHJlcHJlc2VudGVk
IGJ5IGFuIEF1ZGlvQnVmZmVyLgogLy8gSXQgZ2VuZXJhbGx5IHdpbGwgYmUgdXNlZCBmb3Igc2hv
cnQgc291bmRzIHdoaWNoIHJlcXVpcmUgYSBoaWdoIGRlZ3JlZSBvZiBzY2hlZHVsaW5nIGZsZXhp
YmlsaXR5IChjYW4gcGxheWJhY2sgaW4gcmh5dGhtaWNhbGx5IHBlcmZlY3Qgd2F5cykuCiAKLWNs
YXNzIEF1ZGlvQnVmZmVyU291cmNlTm9kZSA6IHB1YmxpYyBBdWRpb1NjaGVkdWxlZFNvdXJjZU5v
ZGUgeworY2xhc3MgQXVkaW9CdWZmZXJTb3VyY2VOb2RlIGZpbmFsIDogcHVibGljIEF1ZGlvU2No
ZWR1bGVkU291cmNlTm9kZSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxBdWRpb0J1ZmZlclNv
dXJjZU5vZGU+IGNyZWF0ZShBdWRpb0NvbnRleHQmLCBmbG9hdCBzYW1wbGVSYXRlKTsKIAogICAg
IHZpcnR1YWwgfkF1ZGlvQnVmZmVyU291cmNlTm9kZSgpOwogCiAgICAgLy8gQXVkaW9Ob2RlCi0g
ICAgdm9pZCBwcm9jZXNzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpIG92ZXJyaWRlOwotICAgIHZv
aWQgcmVzZXQoKSBvdmVycmlkZTsKKyAgICB2b2lkIHByb2Nlc3Moc2l6ZV90IGZyYW1lc1RvUHJv
Y2VzcykgZmluYWw7CisgICAgdm9pZCByZXNldCgpIGZpbmFsOwogCiAgICAgLy8gc2V0QnVmZmVy
KCkgaXMgY2FsbGVkIG9uIHRoZSBtYWluIHRocmVhZC4gIFRoaXMgaXMgdGhlIGJ1ZmZlciB3ZSB1
c2UgZm9yIHBsYXliYWNrLgogICAgIC8vIHJldHVybnMgdHJ1ZSBvbiBzdWNjZXNzLgpAQCAtNjIs
NyArNTUsNyBAQCBwdWJsaWM6CiAgICAgdW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscygpOwogCiAg
ICAgLy8gUGxheS1zdGF0ZQotICAgIHZvaWQgc3RhcnQoZG91YmxlIHdoZW4sIGRvdWJsZSBncmFp
bk9mZnNldCwgT3B0aW9uYWw8ZG91YmxlPiBncmFpbkR1cmF0aW9uLCBFeGNlcHRpb25Db2RlJik7
CisgICAgRXhjZXB0aW9uT3I8dm9pZD4gc3RhcnQoZG91YmxlIHdoZW4sIGRvdWJsZSBncmFpbk9m
ZnNldCwgT3B0aW9uYWw8ZG91YmxlPiBncmFpbkR1cmF0aW9uKTsKIAogICAgIC8vIE5vdGU6IHRo
ZSBhdHRyaWJ1dGUgd2FzIG9yaWdpbmFsbHkgZXhwb3NlZCBhcyAubG9vcGluZywgYnV0IHRvIGJl
IG1vcmUgY29uc2lzdGVudCBpbiBuYW1pbmcgd2l0aCA8YXVkaW8+CiAgICAgLy8gYW5kIHdpdGgg
aG93IGl0J3MgZGVzY3JpYmVkIGluIHRoZSBzcGVjaWZpY2F0aW9uLCB0aGUgcHJvcGVyIGF0dHJp
YnV0ZSBuYW1lIGlzIC5sb29wCkBAIC04OCwyMyArODEsMjMgQEAgcHVibGljOgogICAgIHZvaWQg
Y2xlYXJQYW5uZXJOb2RlKCk7CiAKICAgICAvLyBJZiB3ZSBhcmUgbm8gbG9uZ2VyIHBsYXlpbmcs
IHByb3BvZ2F0ZSBzaWxlbmNlIGFoZWFkIHRvIGRvd25zdHJlYW0gbm9kZXMuCi0gICAgYm9vbCBw
cm9wYWdhdGVzU2lsZW5jZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgcHJvcGFnYXRlc1Np
bGVuY2UoKSBjb25zdCBmaW5hbDsKIAogICAgIC8vIEF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZQot
ICAgIHZvaWQgZmluaXNoKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBmaW5pc2goKSBmaW5hbDsKIAog
cHJpdmF0ZToKICAgICBBdWRpb0J1ZmZlclNvdXJjZU5vZGUoQXVkaW9Db250ZXh0JiwgZmxvYXQg
c2FtcGxlUmF0ZSk7CiAKLSAgICBkb3VibGUgdGFpbFRpbWUoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiAwOyB9Ci0gICAgZG91YmxlIGxhdGVuY3lUaW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gMDsgfQorICAgIGRvdWJsZSB0YWlsVGltZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIDA7IH0K
KyAgICBkb3VibGUgbGF0ZW5jeVRpbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAwOyB9CiAKICAg
ICBlbnVtIEJ1ZmZlclBsYXliYWNrTW9kZSB7CiAgICAgICAgIEVudGlyZSwKICAgICAgICAgUGFy
dGlhbAogICAgIH07CiAKLSAgICB2b2lkIHN0YXJ0UGxheWluZyhCdWZmZXJQbGF5YmFja01vZGUs
IGRvdWJsZSB3aGVuLCBkb3VibGUgZ3JhaW5PZmZzZXQsIGRvdWJsZSBncmFpbkR1cmF0aW9uLCBF
eGNlcHRpb25Db2RlJik7CisgICAgRXhjZXB0aW9uT3I8dm9pZD4gc3RhcnRQbGF5aW5nKEJ1ZmZl
clBsYXliYWNrTW9kZSwgZG91YmxlIHdoZW4sIGRvdWJsZSBncmFpbk9mZnNldCwgZG91YmxlIGdy
YWluRHVyYXRpb24pOwogCiAgICAgLy8gUmV0dXJucyB0cnVlIG9uIHN1Y2Nlc3MuCiAgICAgYm9v
bCByZW5kZXJGcm9tQnVmZmVyKEF1ZGlvQnVzKiwgdW5zaWduZWQgZGVzdGluYXRpb25GcmFtZU9m
ZnNldCwgc2l6ZV90IG51bWJlck9mRnJhbWVzKTsKQEAgLTE1NSw1ICsxNDgsMyBAQCBwcml2YXRl
OgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gQXVkaW9CdWZmZXJT
b3VyY2VOb2RlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXVkaW9CdWZmZXJTb3VyY2VOb2RlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmlkbAppbmRleCAwNzA5ZTA2MmFmMjkzOGI1ZjMwMjRl
MzhhYjVmMGI2MWIyOTE4NDI5Li5mNDJiZmU5NTkwZGQ3MTJiZGEwNTgzOWIxNTQ0MjEyMzI3OTgx
YTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVm
ZmVyU291cmNlTm9kZS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9B
dWRpb0J1ZmZlclNvdXJjZU5vZGUuaWRsCkBAIC00NCw4ICs0NCw4IEBACiAgICAgYXR0cmlidXRl
IHVucmVzdHJpY3RlZCBkb3VibGUgbG9vcFN0YXJ0OwogICAgIGF0dHJpYnV0ZSB1bnJlc3RyaWN0
ZWQgZG91YmxlIGxvb3BFbmQ7CiAKLSAgICBbTWF5VGhyb3dMZWdhY3lFeGNlcHRpb25dIHZvaWQg
c3RhcnQob3B0aW9uYWwgdW5yZXN0cmljdGVkIGRvdWJsZSB3aGVuID0gMCwgb3B0aW9uYWwgdW5y
ZXN0cmljdGVkIGRvdWJsZSBncmFpbk9mZnNldCA9IDAsIG9wdGlvbmFsIHVucmVzdHJpY3RlZCBk
b3VibGUgZ3JhaW5EdXJhdGlvbik7Ci0gICAgW01heVRocm93TGVnYWN5RXhjZXB0aW9uXSB2b2lk
IHN0b3Aob3B0aW9uYWwgdW5yZXN0cmljdGVkIGRvdWJsZSB3aGVuID0gMCk7CisgICAgW01heVRo
cm93RXhjZXB0aW9uXSB2b2lkIHN0YXJ0KG9wdGlvbmFsIHVucmVzdHJpY3RlZCBkb3VibGUgd2hl
biA9IDAsIG9wdGlvbmFsIHVucmVzdHJpY3RlZCBkb3VibGUgZ3JhaW5PZmZzZXQgPSAwLCBvcHRp
b25hbCB1bnJlc3RyaWN0ZWQgZG91YmxlIGdyYWluRHVyYXRpb24pOworICAgIFtNYXlUaHJvd0V4
Y2VwdGlvbl0gdm9pZCBzdG9wKG9wdGlvbmFsIHVucmVzdHJpY3RlZCBkb3VibGUgd2hlbiA9IDAp
OwogCiAgICAgYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbmVuZGVkOwogfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcAppbmRleCBhMzE1YzI1
ZmNmZTdjMzQ1MjA3NmEwYWQzOTkyZWE2OWI0NjEyMzk1Li5jMzg5MDcxNTNiNGQ3OWJiMGIwY2Q3
M2IyNGYwNjkyMWE4MWQ3MmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9BdWRpb0NvbnRleHQuY3BwCkBAIC0zNjUsMjYgKzM2NSwyMCBAQCBTdHJpbmcgQXVkaW9D
b250ZXh0Ojpzb3VyY2VBcHBsaWNhdGlvbklkZW50aWZpZXIoKSBjb25zdAogICAgIHJldHVybiBl
bXB0eVN0cmluZygpOwogfQogCi1SZWZQdHI8QXVkaW9CdWZmZXI+IEF1ZGlvQ29udGV4dDo6Y3Jl
YXRlQnVmZmVyKHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIHNpemVfdCBudW1iZXJPZkZyYW1l
cywgZmxvYXQgc2FtcGxlUmF0ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCitFeGNlcHRpb25PcjxSZWY8
QXVkaW9CdWZmZXI+PiBBdWRpb0NvbnRleHQ6OmNyZWF0ZUJ1ZmZlcih1bnNpZ25lZCBudW1iZXJP
ZkNoYW5uZWxzLCBzaXplX3QgbnVtYmVyT2ZGcmFtZXMsIGZsb2F0IHNhbXBsZVJhdGUpCiB7Ci0g
ICAgUmVmUHRyPEF1ZGlvQnVmZmVyPiBhdWRpb0J1ZmZlciA9IEF1ZGlvQnVmZmVyOjpjcmVhdGUo
bnVtYmVyT2ZDaGFubmVscywgbnVtYmVyT2ZGcmFtZXMsIHNhbXBsZVJhdGUpOwotICAgIGlmICgh
YXVkaW9CdWZmZXIpIHsKLSAgICAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKLSAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0gICAgfQotCi0gICAgcmV0dXJuIGF1ZGlvQnVmZmVyOworICAgIGF1
dG8gYXVkaW9CdWZmZXIgPSBBdWRpb0J1ZmZlcjo6Y3JlYXRlKG51bWJlck9mQ2hhbm5lbHMsIG51
bWJlck9mRnJhbWVzLCBzYW1wbGVSYXRlKTsKKyAgICBpZiAoIWF1ZGlvQnVmZmVyKQorICAgICAg
ICByZXR1cm4gRXhjZXB0aW9uIHsgTk9UX1NVUFBPUlRFRF9FUlIgfTsKKyAgICByZXR1cm4gYXVk
aW9CdWZmZXIucmVsZWFzZU5vbk51bGwoKTsKIH0KIAotUmVmUHRyPEF1ZGlvQnVmZmVyPiBBdWRp
b0NvbnRleHQ6OmNyZWF0ZUJ1ZmZlcihBcnJheUJ1ZmZlciYgYXJyYXlCdWZmZXIsIGJvb2wgbWl4
VG9Nb25vLCBFeGNlcHRpb25Db2RlJiBlYykKK0V4Y2VwdGlvbk9yPFJlZjxBdWRpb0J1ZmZlcj4+
IEF1ZGlvQ29udGV4dDo6Y3JlYXRlQnVmZmVyKEFycmF5QnVmZmVyJiBhcnJheUJ1ZmZlciwgYm9v
bCBtaXhUb01vbm8pCiB7Ci0gICAgUmVmUHRyPEF1ZGlvQnVmZmVyPiBhdWRpb0J1ZmZlciA9IEF1
ZGlvQnVmZmVyOjpjcmVhdGVGcm9tQXVkaW9GaWxlRGF0YShhcnJheUJ1ZmZlci5kYXRhKCksIGFy
cmF5QnVmZmVyLmJ5dGVMZW5ndGgoKSwgbWl4VG9Nb25vLCBzYW1wbGVSYXRlKCkpOwotICAgIGlm
ICghYXVkaW9CdWZmZXIpIHsKLSAgICAgICAgZWMgPSBTWU5UQVhfRVJSOwotICAgICAgICByZXR1
cm4gbnVsbHB0cjsKLSAgICB9Ci0KLSAgICByZXR1cm4gYXVkaW9CdWZmZXI7CisgICAgYXV0byBh
dWRpb0J1ZmZlciA9IEF1ZGlvQnVmZmVyOjpjcmVhdGVGcm9tQXVkaW9GaWxlRGF0YShhcnJheUJ1
ZmZlci5kYXRhKCksIGFycmF5QnVmZmVyLmJ5dGVMZW5ndGgoKSwgbWl4VG9Nb25vLCBzYW1wbGVS
YXRlKCkpOworICAgIGlmICghYXVkaW9CdWZmZXIpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24g
eyBTWU5UQVhfRVJSIH07CisgICAgcmV0dXJuIGF1ZGlvQnVmZmVyLnJlbGVhc2VOb25OdWxsKCk7
CiB9CiAKIHZvaWQgQXVkaW9Db250ZXh0OjpkZWNvZGVBdWRpb0RhdGEoUmVmPEFycmF5QnVmZmVy
PiYmIGF1ZGlvRGF0YSwgUmVmUHRyPEF1ZGlvQnVmZmVyQ2FsbGJhY2s+JiYgc3VjY2Vzc0NhbGxi
YWNrLCBSZWZQdHI8QXVkaW9CdWZmZXJDYWxsYmFjaz4mJiBlcnJvckNhbGxiYWNrKQpAQCAtNDA2
LDM2ICs0MDAsMzQgQEAgUmVmPEF1ZGlvQnVmZmVyU291cmNlTm9kZT4gQXVkaW9Db250ZXh0Ojpj
cmVhdGVCdWZmZXJTb3VyY2UoKQogfQogCiAjaWYgRU5BQkxFKFZJREVPKQotUmVmUHRyPE1lZGlh
RWxlbWVudEF1ZGlvU291cmNlTm9kZT4gQXVkaW9Db250ZXh0OjpjcmVhdGVNZWRpYUVsZW1lbnRT
b3VyY2UoSFRNTE1lZGlhRWxlbWVudCYgbWVkaWFFbGVtZW50LCBFeGNlcHRpb25Db2RlJiBlYykK
KworRXhjZXB0aW9uT3I8UmVmPE1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZT4+IEF1ZGlvQ29u
dGV4dDo6Y3JlYXRlTWVkaWFFbGVtZW50U291cmNlKEhUTUxNZWRpYUVsZW1lbnQmIG1lZGlhRWxl
bWVudCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIGxhenlJbml0aWFsaXpl
KCk7CiAgICAgCi0gICAgLy8gRmlyc3QgY2hlY2sgaWYgdGhpcyBtZWRpYSBlbGVtZW50IGFscmVh
ZHkgaGFzIGEgc291cmNlIG5vZGUuCi0gICAgaWYgKG1lZGlhRWxlbWVudC5hdWRpb1NvdXJjZU5v
ZGUoKSkgewotICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOwotICAgICAgICByZXR1cm4g
bnVsbHB0cjsKLSAgICB9Ci0gICAgICAgIAotICAgIFJlZjxNZWRpYUVsZW1lbnRBdWRpb1NvdXJj
ZU5vZGU+IG5vZGUgPSBNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGU6OmNyZWF0ZSgqdGhpcywg
bWVkaWFFbGVtZW50KTsKKyAgICBpZiAobWVkaWFFbGVtZW50LmF1ZGlvU291cmNlTm9kZSgpKQor
ICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSU5WQUxJRF9TVEFURV9FUlIgfTsKKworICAgIGF1
dG8gbm9kZSA9IE1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZTo6Y3JlYXRlKCp0aGlzLCBtZWRp
YUVsZW1lbnQpOwogCiAgICAgbWVkaWFFbGVtZW50LnNldEF1ZGlvU291cmNlTm9kZShub2RlLnB0
cigpKTsKIAogICAgIHJlZk5vZGUobm9kZS5nZXQoKSk7IC8vIGNvbnRleHQga2VlcHMgcmVmZXJl
bmNlIHVudGlsIG5vZGUgaXMgZGlzY29ubmVjdGVkCiAgICAgcmV0dXJuIFdURk1vdmUobm9kZSk7
CiB9CisKICNlbmRpZgogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLVJlZlB0cjxNZWRpYVN0
cmVhbUF1ZGlvU291cmNlTm9kZT4gQXVkaW9Db250ZXh0OjpjcmVhdGVNZWRpYVN0cmVhbVNvdXJj
ZShNZWRpYVN0cmVhbSYgbWVkaWFTdHJlYW0sIEV4Y2VwdGlvbkNvZGUmIGVjKQorCitFeGNlcHRp
b25PcjxSZWY8TWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGU+PiBBdWRpb0NvbnRleHQ6OmNyZWF0
ZU1lZGlhU3RyZWFtU291cmNlKE1lZGlhU3RyZWFtJiBtZWRpYVN0cmVhbSkKIHsKICAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOwogCiAgICAgYXV0byBhdWRpb1RyYWNrcyA9IG1lZGlhU3RyZWFt
LmdldEF1ZGlvVHJhY2tzKCk7Ci0gICAgaWYgKGF1ZGlvVHJhY2tzLmlzRW1wdHkoKSkgewotICAg
ICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAg
ICB9CisgICAgaWYgKGF1ZGlvVHJhY2tzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIEV4Y2Vw
dGlvbiB7IElOVkFMSURfU1RBVEVfRVJSIH07CiAKICAgICBNZWRpYVN0cmVhbVRyYWNrKiBwcm92
aWRlclRyYWNrID0gbnVsbHB0cjsKICAgICBmb3IgKGF1dG8mIHRyYWNrIDogYXVkaW9UcmFja3Mp
IHsKQEAgLTQ0NCwxMSArNDM2LDggQEAgUmVmUHRyPE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2Rl
PiBBdWRpb0NvbnRleHQ6OmNyZWF0ZU1lZGlhU3RyZWFtU291cmNlKE1lZGlhU3QKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfQotCi0gICAgaWYgKCFwcm92aWRlclRyYWNrKSB7
Ci0gICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7Ci0gICAgICAgIHJldHVybiBudWxscHRy
OwotICAgIH0KKyAgICBpZiAoIXByb3ZpZGVyVHJhY2spCisgICAgICAgIHJldHVybiBFeGNlcHRp
b24geyBJTlZBTElEX1NUQVRFX0VSUiB9OwogCiAgICAgbGF6eUluaXRpYWxpemUoKTsKIApAQCAt
NDY4LDE5ICs0NTcsMTcgQEAgUmVmPE1lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGU+IEF1
ZGlvQ29udGV4dDo6Y3JlYXRlTWVkaWFTdHJlYW1EZXN0aW5hdGlvbigKIAogI2VuZGlmCiAKLVJl
ZlB0cjxTY3JpcHRQcm9jZXNzb3JOb2RlPiBBdWRpb0NvbnRleHQ6OmNyZWF0ZVNjcmlwdFByb2Nl
c3NvcihzaXplX3QgYnVmZmVyU2l6ZSwgc2l6ZV90IG51bWJlck9mSW5wdXRDaGFubmVscywgc2l6
ZV90IG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIEV4Y2VwdGlvbkNvZGUmIGVjKQorRXhjZXB0aW9u
T3I8UmVmPFNjcmlwdFByb2Nlc3Nvck5vZGU+PiBBdWRpb0NvbnRleHQ6OmNyZWF0ZVNjcmlwdFBy
b2Nlc3NvcihzaXplX3QgYnVmZmVyU2l6ZSwgc2l6ZV90IG51bWJlck9mSW5wdXRDaGFubmVscywg
c2l6ZV90IG51bWJlck9mT3V0cHV0Q2hhbm5lbHMpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKICAgICBsYXp5SW5pdGlhbGl6ZSgpOwotICAgIFJlZlB0cjxTY3JpcHRQcm9jZXNzb3JO
b2RlPiBub2RlID0gU2NyaXB0UHJvY2Vzc29yTm9kZTo6Y3JlYXRlKCp0aGlzLCBtX2Rlc3RpbmF0
aW9uTm9kZS0+c2FtcGxlUmF0ZSgpLCBidWZmZXJTaXplLCBudW1iZXJPZklucHV0Q2hhbm5lbHMs
IG51bWJlck9mT3V0cHV0Q2hhbm5lbHMpOworICAgIGF1dG8gbm9kZSA9IFNjcmlwdFByb2Nlc3Nv
ck5vZGU6OmNyZWF0ZSgqdGhpcywgbV9kZXN0aW5hdGlvbk5vZGUtPnNhbXBsZVJhdGUoKSwgYnVm
ZmVyU2l6ZSwgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCBudW1iZXJPZk91dHB1dENoYW5uZWxzKTsK
IAotICAgIGlmICghbm9kZSkgewotICAgICAgICBlYyA9IElOREVYX1NJWkVfRVJSOwotICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKLSAgICB9CisgICAgaWYgKCFub2RlKQorICAgICAgICByZXR1cm4g
RXhjZXB0aW9uIHsgSU5ERVhfU0laRV9FUlIgfTsKIAogICAgIHJlZk5vZGUoKm5vZGUpOyAvLyBj
b250ZXh0IGtlZXBzIHJlZmVyZW5jZSB1bnRpbCB3ZSBzdG9wIG1ha2luZyBqYXZhc2NyaXB0IHJl
bmRlcmluZyBjYWxsYmFja3MKLSAgICByZXR1cm4gbm9kZTsKKyAgICByZXR1cm4gbm9kZS5yZWxl
YXNlTm9uTnVsbCgpOwogfQogCiBSZWY8QmlxdWFkRmlsdGVyTm9kZT4gQXVkaW9Db250ZXh0Ojpj
cmVhdGVCaXF1YWRGaWx0ZXIoKQpAQCAtNTMyLDQ0ICs1MTksMzEgQEAgUmVmPEdhaW5Ob2RlPiBB
dWRpb0NvbnRleHQ6OmNyZWF0ZUdhaW4oKQogICAgIHJldHVybiBHYWluTm9kZTo6Y3JlYXRlKCp0
aGlzLCBtX2Rlc3RpbmF0aW9uTm9kZS0+c2FtcGxlUmF0ZSgpKTsKIH0KIAotUmVmUHRyPERlbGF5
Tm9kZT4gQXVkaW9Db250ZXh0OjpjcmVhdGVEZWxheShkb3VibGUgbWF4RGVsYXlUaW1lLCBFeGNl
cHRpb25Db2RlJiBlYykKK0V4Y2VwdGlvbk9yPFJlZjxEZWxheU5vZGU+PiBBdWRpb0NvbnRleHQ6
OmNyZWF0ZURlbGF5KGRvdWJsZSBtYXhEZWxheVRpbWUpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKICAgICBsYXp5SW5pdGlhbGl6ZSgpOwotICAgIFJlZjxEZWxheU5vZGU+IG5vZGUg
PSBEZWxheU5vZGU6OmNyZWF0ZSgqdGhpcywgbV9kZXN0aW5hdGlvbk5vZGUtPnNhbXBsZVJhdGUo
KSwgbWF4RGVsYXlUaW1lLCBlYyk7Ci0gICAgaWYgKGVjKQotICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLSAgICByZXR1cm4gV1RGTW92ZShub2RlKTsKKyAgICByZXR1cm4gRGVsYXlOb2RlOjpjcmVh
dGUoKnRoaXMsIG1fZGVzdGluYXRpb25Ob2RlLT5zYW1wbGVSYXRlKCksIG1heERlbGF5VGltZSk7
CiB9CiAKLVJlZlB0cjxDaGFubmVsU3BsaXR0ZXJOb2RlPiBBdWRpb0NvbnRleHQ6OmNyZWF0ZUNo
YW5uZWxTcGxpdHRlcihzaXplX3QgbnVtYmVyT2ZPdXRwdXRzLCBFeGNlcHRpb25Db2RlJiBlYykK
K0V4Y2VwdGlvbk9yPFJlZjxDaGFubmVsU3BsaXR0ZXJOb2RlPj4gQXVkaW9Db250ZXh0OjpjcmVh
dGVDaGFubmVsU3BsaXR0ZXIoc2l6ZV90IG51bWJlck9mT3V0cHV0cykKIHsKICAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOwogICAgIGxhenlJbml0aWFsaXplKCk7Ci0KLSAgICBSZWZQdHI8Q2hh
bm5lbFNwbGl0dGVyTm9kZT4gbm9kZSA9IENoYW5uZWxTcGxpdHRlck5vZGU6OmNyZWF0ZSgqdGhp
cywgbV9kZXN0aW5hdGlvbk5vZGUtPnNhbXBsZVJhdGUoKSwgbnVtYmVyT2ZPdXRwdXRzKTsKLQot
ICAgIGlmICghbm9kZSkgewotICAgICAgICBlYyA9IElOREVYX1NJWkVfRVJSOwotICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0KLSAgICByZXR1cm4gbm9kZTsKKyAgICBhdXRvIG5vZGUg
PSBDaGFubmVsU3BsaXR0ZXJOb2RlOjpjcmVhdGUoKnRoaXMsIG1fZGVzdGluYXRpb25Ob2RlLT5z
YW1wbGVSYXRlKCksIG51bWJlck9mT3V0cHV0cyk7CisgICAgaWYgKCFub2RlKQorICAgICAgICBy
ZXR1cm4gRXhjZXB0aW9uIHsgSU5ERVhfU0laRV9FUlIgfTsKKyAgICByZXR1cm4gbm9kZS5yZWxl
YXNlTm9uTnVsbCgpOwogfQogCi1SZWZQdHI8Q2hhbm5lbE1lcmdlck5vZGU+IEF1ZGlvQ29udGV4
dDo6Y3JlYXRlQ2hhbm5lbE1lcmdlcihzaXplX3QgbnVtYmVyT2ZJbnB1dHMsIEV4Y2VwdGlvbkNv
ZGUmIGVjKQorRXhjZXB0aW9uT3I8UmVmPENoYW5uZWxNZXJnZXJOb2RlPj4gQXVkaW9Db250ZXh0
OjpjcmVhdGVDaGFubmVsTWVyZ2VyKHNpemVfdCBudW1iZXJPZklucHV0cykKIHsKICAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOwogICAgIGxhenlJbml0aWFsaXplKCk7Ci0KLSAgICBSZWZQdHI8
Q2hhbm5lbE1lcmdlck5vZGU+IG5vZGUgPSBDaGFubmVsTWVyZ2VyTm9kZTo6Y3JlYXRlKCp0aGlz
LCBtX2Rlc3RpbmF0aW9uTm9kZS0+c2FtcGxlUmF0ZSgpLCBudW1iZXJPZklucHV0cyk7Ci0KLSAg
ICBpZiAoIW5vZGUpIHsKLSAgICAgICAgZWMgPSBJTkRFWF9TSVpFX0VSUjsKLSAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0gICAgfQotCi0gICAgcmV0dXJuIG5vZGU7CisgICAgYXV0byBub2RlID0g
Q2hhbm5lbE1lcmdlck5vZGU6OmNyZWF0ZSgqdGhpcywgbV9kZXN0aW5hdGlvbk5vZGUtPnNhbXBs
ZVJhdGUoKSwgbnVtYmVyT2ZJbnB1dHMpOworICAgIGlmICghbm9kZSkKKyAgICAgICAgcmV0dXJu
IEV4Y2VwdGlvbiB7IElOREVYX1NJWkVfRVJSIH07CisgICAgcmV0dXJuIG5vZGUucmVsZWFzZU5v
bk51bGwoKTsKIH0KIAogUmVmPE9zY2lsbGF0b3JOb2RlPiBBdWRpb0NvbnRleHQ6OmNyZWF0ZU9z
Y2lsbGF0b3IoKQpAQCAtNTg2LDE1ICs1NjAsMTEgQEAgUmVmPE9zY2lsbGF0b3JOb2RlPiBBdWRp
b0NvbnRleHQ6OmNyZWF0ZU9zY2lsbGF0b3IoKQogICAgIHJldHVybiBub2RlOwogfQogCi1SZWZQ
dHI8UGVyaW9kaWNXYXZlPiBBdWRpb0NvbnRleHQ6OmNyZWF0ZVBlcmlvZGljV2F2ZShGbG9hdDMy
QXJyYXkmIHJlYWwsIEZsb2F0MzJBcnJheSYgaW1hZ2luYXJ5LCBFeGNlcHRpb25Db2RlJiBlYykK
K0V4Y2VwdGlvbk9yPFJlZjxQZXJpb2RpY1dhdmU+PiBBdWRpb0NvbnRleHQ6OmNyZWF0ZVBlcmlv
ZGljV2F2ZShGbG9hdDMyQXJyYXkmIHJlYWwsIEZsb2F0MzJBcnJheSYgaW1hZ2luYXJ5KQogewog
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgCi0gICAgaWYgKHJlYWwubGVuZ3RoKCkg
IT0gaW1hZ2luYXJ5Lmxlbmd0aCgpIHx8IChyZWFsLmxlbmd0aCgpID4gTWF4UGVyaW9kaWNXYXZl
TGVuZ3RoKSB8fCAhcmVhbC5sZW5ndGgoKSkgewotICAgICAgICBlYyA9IElOREVYX1NJWkVfRVJS
OwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0gICAgCisgICAgaWYgKHJlYWwubGVu
Z3RoKCkgIT0gaW1hZ2luYXJ5Lmxlbmd0aCgpIHx8IChyZWFsLmxlbmd0aCgpID4gTWF4UGVyaW9k
aWNXYXZlTGVuZ3RoKSB8fCAhcmVhbC5sZW5ndGgoKSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlv
biB7IElOREVYX1NJWkVfRVJSIH07CiAgICAgbGF6eUluaXRpYWxpemUoKTsKICAgICByZXR1cm4g
UGVyaW9kaWNXYXZlOjpjcmVhdGUoc2FtcGxlUmF0ZSgpLCByZWFsLCBpbWFnaW5hcnkpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmgKaW5kZXgg
ZTI1YmU5N2I1OGYxNjA1NzlkNDdkNWRlNzc1NzZlZWE5MzY5M2I5MS4uZGZmZWJlOGU0OWJlY2Yw
MTQyZTJkOWRhYjhhZTQ3YTA4M2U2ZjE0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5oCkBAIC05OCw4ICs5OCw4IEBAIHB1YmxpYzoKICAgICB2
b2lkIGluY3JlbWVudEFjdGl2ZVNvdXJjZUNvdW50KCk7CiAgICAgdm9pZCBkZWNyZW1lbnRBY3Rp
dmVTb3VyY2VDb3VudCgpOwogICAgIAotICAgIFJlZlB0cjxBdWRpb0J1ZmZlcj4gY3JlYXRlQnVm
ZmVyKHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIHNpemVfdCBudW1iZXJPZkZyYW1lcywgZmxv
YXQgc2FtcGxlUmF0ZSwgRXhjZXB0aW9uQ29kZSYpOwotICAgIFJlZlB0cjxBdWRpb0J1ZmZlcj4g
Y3JlYXRlQnVmZmVyKEFycmF5QnVmZmVyJiwgYm9vbCBtaXhUb01vbm8sIEV4Y2VwdGlvbkNvZGUm
KTsKKyAgICBFeGNlcHRpb25PcjxSZWY8QXVkaW9CdWZmZXI+PiBjcmVhdGVCdWZmZXIodW5zaWdu
ZWQgbnVtYmVyT2ZDaGFubmVscywgc2l6ZV90IG51bWJlck9mRnJhbWVzLCBmbG9hdCBzYW1wbGVS
YXRlKTsKKyAgICBFeGNlcHRpb25PcjxSZWY8QXVkaW9CdWZmZXI+PiBjcmVhdGVCdWZmZXIoQXJy
YXlCdWZmZXImLCBib29sIG1peFRvTW9ubyk7CiAKICAgICAvLyBBc3luY2hyb25vdXMgYXVkaW8g
ZmlsZSBkYXRhIGRlY29kaW5nLgogICAgIHZvaWQgZGVjb2RlQXVkaW9EYXRhKFJlZjxBcnJheUJ1
ZmZlcj4mJiwgUmVmUHRyPEF1ZGlvQnVmZmVyQ2FsbGJhY2s+JiYsIFJlZlB0cjxBdWRpb0J1ZmZl
ckNhbGxiYWNrPiYmKTsKQEAgLTEyMSwyNSArMTIxLDI1IEBAIHB1YmxpYzoKICAgICAvLyBUaGUg
QXVkaW9Ob2RlIGNyZWF0ZSBtZXRob2RzIGFyZSBjYWxsZWQgb24gdGhlIG1haW4gdGhyZWFkIChm
cm9tIEphdmFTY3JpcHQpLgogICAgIFJlZjxBdWRpb0J1ZmZlclNvdXJjZU5vZGU+IGNyZWF0ZUJ1
ZmZlclNvdXJjZSgpOwogI2lmIEVOQUJMRShWSURFTykKLSAgICBSZWZQdHI8TWVkaWFFbGVtZW50
QXVkaW9Tb3VyY2VOb2RlPiBjcmVhdGVNZWRpYUVsZW1lbnRTb3VyY2UoSFRNTE1lZGlhRWxlbWVu
dCYsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBFeGNlcHRpb25PcjxSZWY8TWVkaWFFbGVtZW50QXVk
aW9Tb3VyY2VOb2RlPj4gY3JlYXRlTWVkaWFFbGVtZW50U291cmNlKEhUTUxNZWRpYUVsZW1lbnQm
KTsKICNlbmRpZgogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0gICAgUmVmUHRyPE1lZGlhU3Ry
ZWFtQXVkaW9Tb3VyY2VOb2RlPiBjcmVhdGVNZWRpYVN0cmVhbVNvdXJjZShNZWRpYVN0cmVhbSYs
IEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBFeGNlcHRpb25PcjxSZWY8TWVkaWFTdHJlYW1BdWRpb1Nv
dXJjZU5vZGU+PiBjcmVhdGVNZWRpYVN0cmVhbVNvdXJjZShNZWRpYVN0cmVhbSYpOwogICAgIFJl
ZjxNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlPiBjcmVhdGVNZWRpYVN0cmVhbURlc3Rp
bmF0aW9uKCk7CiAjZW5kaWYKICAgICBSZWY8R2Fpbk5vZGU+IGNyZWF0ZUdhaW4oKTsKICAgICBS
ZWY8QmlxdWFkRmlsdGVyTm9kZT4gY3JlYXRlQmlxdWFkRmlsdGVyKCk7CiAgICAgUmVmPFdhdmVT
aGFwZXJOb2RlPiBjcmVhdGVXYXZlU2hhcGVyKCk7Ci0gICAgUmVmUHRyPERlbGF5Tm9kZT4gY3Jl
YXRlRGVsYXkoZG91YmxlIG1heERlbGF5VGltZSwgRXhjZXB0aW9uQ29kZSYpOworICAgIEV4Y2Vw
dGlvbk9yPFJlZjxEZWxheU5vZGU+PiBjcmVhdGVEZWxheShkb3VibGUgbWF4RGVsYXlUaW1lKTsK
ICAgICBSZWY8UGFubmVyTm9kZT4gY3JlYXRlUGFubmVyKCk7CiAgICAgUmVmPENvbnZvbHZlck5v
ZGU+IGNyZWF0ZUNvbnZvbHZlcigpOwogICAgIFJlZjxEeW5hbWljc0NvbXByZXNzb3JOb2RlPiBj
cmVhdGVEeW5hbWljc0NvbXByZXNzb3IoKTsKICAgICBSZWY8QW5hbHlzZXJOb2RlPiBjcmVhdGVB
bmFseXNlcigpOwotICAgIFJlZlB0cjxTY3JpcHRQcm9jZXNzb3JOb2RlPiBjcmVhdGVTY3JpcHRQ
cm9jZXNzb3Ioc2l6ZV90IGJ1ZmZlclNpemUsIHNpemVfdCBudW1iZXJPZklucHV0Q2hhbm5lbHMs
IHNpemVfdCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgUmVm
UHRyPENoYW5uZWxTcGxpdHRlck5vZGU+IGNyZWF0ZUNoYW5uZWxTcGxpdHRlcihzaXplX3QgbnVt
YmVyT2ZPdXRwdXRzLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgUmVmUHRyPENoYW5uZWxNZXJnZXJO
b2RlPiBjcmVhdGVDaGFubmVsTWVyZ2VyKHNpemVfdCBudW1iZXJPZklucHV0cywgRXhjZXB0aW9u
Q29kZSYpOworICAgIEV4Y2VwdGlvbk9yPFJlZjxTY3JpcHRQcm9jZXNzb3JOb2RlPj4gY3JlYXRl
U2NyaXB0UHJvY2Vzc29yKHNpemVfdCBidWZmZXJTaXplLCBzaXplX3QgbnVtYmVyT2ZJbnB1dENo
YW5uZWxzLCBzaXplX3QgbnVtYmVyT2ZPdXRwdXRDaGFubmVscyk7CisgICAgRXhjZXB0aW9uT3I8
UmVmPENoYW5uZWxTcGxpdHRlck5vZGU+PiBjcmVhdGVDaGFubmVsU3BsaXR0ZXIoc2l6ZV90IG51
bWJlck9mT3V0cHV0cyk7CisgICAgRXhjZXB0aW9uT3I8UmVmPENoYW5uZWxNZXJnZXJOb2RlPj4g
Y3JlYXRlQ2hhbm5lbE1lcmdlcihzaXplX3QgbnVtYmVyT2ZJbnB1dHMpOwogICAgIFJlZjxPc2Np
bGxhdG9yTm9kZT4gY3JlYXRlT3NjaWxsYXRvcigpOwotICAgIFJlZlB0cjxQZXJpb2RpY1dhdmU+
IGNyZWF0ZVBlcmlvZGljV2F2ZShGbG9hdDMyQXJyYXkmIHJlYWwsIEZsb2F0MzJBcnJheSYgaW1h
Z2luYXJ5LCBFeGNlcHRpb25Db2RlJik7CisgICAgRXhjZXB0aW9uT3I8UmVmPFBlcmlvZGljV2F2
ZT4+IGNyZWF0ZVBlcmlvZGljV2F2ZShGbG9hdDMyQXJyYXkmIHJlYWwsIEZsb2F0MzJBcnJheSYg
aW1hZ2luYXJ5KTsKIAogICAgIC8vIFdoZW4gYSBzb3VyY2Ugbm9kZSBoYXMgbm8gbW9yZSBwcm9j
ZXNzaW5nIHRvIGRvIChoYXMgZmluaXNoZWQgcGxheWluZyksIHRoZW4gaXQgdGVsbHMgdGhlIGNv
bnRleHQgdG8gZGVyZWZlcmVuY2UgaXQuCiAgICAgdm9pZCBub3RpZnlOb2RlRmluaXNoZWRQcm9j
ZXNzaW5nKEF1ZGlvTm9kZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb0NvbnRleHQuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0NvbnRleHQuaWRsCmluZGV4IDgyNjk4YTlkMzc4ODk2NTMyZGY2YzU5MWE1YmU3Mjk5
NTkzMTIxZjkuLmYwY2Q5ODA1MzE2MjU1M2MzZmExYTBhZjRmZTIyYjMxNjk1NWMzNGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmlkbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5pZGwKQEAg
LTYxLDggKzYxLDggQEAgZW51bSBBdWRpb0NvbnRleHRTdGF0ZSB7CiAgICAgLy8gTnVtYmVyIG9m
IEF1ZGlvQnVmZmVyU291cmNlTm9kZXMgdGhhdCBhcmUgY3VycmVudGx5IHBsYXlpbmcuCiAgICAg
cmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgYWN0aXZlU291cmNlQ291bnQ7CiAgICAg
Ci0gICAgW01heVRocm93TGVnYWN5RXhjZXB0aW9uXSBBdWRpb0J1ZmZlciBjcmVhdGVCdWZmZXIo
dW5zaWduZWQgbG9uZyBudW1iZXJPZkNoYW5uZWxzLCB1bnNpZ25lZCBsb25nIG51bWJlck9mRnJh
bWVzLCB1bnJlc3RyaWN0ZWQgZmxvYXQgc2FtcGxlUmF0ZSk7Ci0gICAgW01heVRocm93TGVnYWN5
RXhjZXB0aW9uXSBBdWRpb0J1ZmZlciBjcmVhdGVCdWZmZXIoQXJyYXlCdWZmZXIgYnVmZmVyLCBi
b29sZWFuIG1peFRvTW9ubyk7CisgICAgW01heVRocm93RXhjZXB0aW9uXSBBdWRpb0J1ZmZlciBj
cmVhdGVCdWZmZXIodW5zaWduZWQgbG9uZyBudW1iZXJPZkNoYW5uZWxzLCB1bnNpZ25lZCBsb25n
IG51bWJlck9mRnJhbWVzLCB1bnJlc3RyaWN0ZWQgZmxvYXQgc2FtcGxlUmF0ZSk7CisgICAgW01h
eVRocm93RXhjZXB0aW9uXSBBdWRpb0J1ZmZlciBjcmVhdGVCdWZmZXIoQXJyYXlCdWZmZXIgYnVm
ZmVyLCBib29sZWFuIG1peFRvTW9ubyk7CiAKICAgICAvLyBBc3luY2hyb25vdXMgYXVkaW8gZmls
ZSBkYXRhIGRlY29kaW5nLgogICAgIC8vIEZJWE1FOiBzdWNjZXNzQ2FsbGJhY2sgc2hvdWxkIGJl
IG9wdGlvbmFsIGFuZCB0aGUgY2FsbGJhY2tzIHNob3VsZCBub3QgYmUgbnVsbGFibGUuIFRoaXMg
c2hvdWxkIGFsc28gcmV0dXJuIGEgUHJvbWlzZS4KQEAgLTcxLDI3ICs3MSwyNyBAQCBlbnVtIEF1
ZGlvQ29udGV4dFN0YXRlIHsKICAgICAvLyBTb3VyY2VzCiAgICAgQXVkaW9CdWZmZXJTb3VyY2VO
b2RlIGNyZWF0ZUJ1ZmZlclNvdXJjZSgpOwogCi0gICAgW0NvbmRpdGlvbmFsPVZJREVPLCBNYXlU
aHJvd0xlZ2FjeUV4Y2VwdGlvbl0gTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlIGNyZWF0ZU1l
ZGlhRWxlbWVudFNvdXJjZShIVE1MTWVkaWFFbGVtZW50IG1lZGlhRWxlbWVudCk7CisgICAgW0Nv
bmRpdGlvbmFsPVZJREVPLCBNYXlUaHJvd0V4Y2VwdGlvbl0gTWVkaWFFbGVtZW50QXVkaW9Tb3Vy
Y2VOb2RlIGNyZWF0ZU1lZGlhRWxlbWVudFNvdXJjZShIVE1MTWVkaWFFbGVtZW50IG1lZGlhRWxl
bWVudCk7CiAKLSAgICBbQ29uZGl0aW9uYWw9TUVESUFfU1RSRUFNLCBNYXlUaHJvd0xlZ2FjeUV4
Y2VwdGlvbl0gTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUgY3JlYXRlTWVkaWFTdHJlYW1Tb3Vy
Y2UoTWVkaWFTdHJlYW0gbWVkaWFTdHJlYW0pOworICAgIFtDb25kaXRpb25hbD1NRURJQV9TVFJF
QU0sIE1heVRocm93RXhjZXB0aW9uXSBNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZSBjcmVhdGVN
ZWRpYVN0cmVhbVNvdXJjZShNZWRpYVN0cmVhbSBtZWRpYVN0cmVhbSk7CiAgICAgW0NvbmRpdGlv
bmFsPU1FRElBX1NUUkVBTV0gTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZSBjcmVhdGVN
ZWRpYVN0cmVhbURlc3RpbmF0aW9uKCk7CiAKICAgICAvLyBQcm9jZXNzaW5nIG5vZGVzCiAgICAg
R2Fpbk5vZGUgY3JlYXRlR2FpbigpOwotICAgIFtNYXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbl0gRGVs
YXlOb2RlIGNyZWF0ZURlbGF5KG9wdGlvbmFsIHVucmVzdHJpY3RlZCBkb3VibGUgbWF4RGVsYXlU
aW1lID0gMSk7CisgICAgW01heVRocm93RXhjZXB0aW9uXSBEZWxheU5vZGUgY3JlYXRlRGVsYXko
b3B0aW9uYWwgdW5yZXN0cmljdGVkIGRvdWJsZSBtYXhEZWxheVRpbWUgPSAxKTsKICAgICBCaXF1
YWRGaWx0ZXJOb2RlIGNyZWF0ZUJpcXVhZEZpbHRlcigpOwogICAgIFdhdmVTaGFwZXJOb2RlIGNy
ZWF0ZVdhdmVTaGFwZXIoKTsKICAgICBQYW5uZXJOb2RlIGNyZWF0ZVBhbm5lcigpOwogICAgIENv
bnZvbHZlck5vZGUgY3JlYXRlQ29udm9sdmVyKCk7CiAgICAgRHluYW1pY3NDb21wcmVzc29yTm9k
ZSBjcmVhdGVEeW5hbWljc0NvbXByZXNzb3IoKTsKICAgICBBbmFseXNlck5vZGUgY3JlYXRlQW5h
bHlzZXIoKTsKLSAgICBbTWF5VGhyb3dMZWdhY3lFeGNlcHRpb25dIFNjcmlwdFByb2Nlc3Nvck5v
ZGUgY3JlYXRlU2NyaXB0UHJvY2Vzc29yKHVuc2lnbmVkIGxvbmcgYnVmZmVyU2l6ZSwgb3B0aW9u
YWwgdW5zaWduZWQgbG9uZyBudW1iZXJPZklucHV0Q2hhbm5lbHMgPSAyLCBvcHRpb25hbCB1bnNp
Z25lZCBsb25nIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMgPSAyKTsKKyAgICBbTWF5VGhyb3dFeGNl
cHRpb25dIFNjcmlwdFByb2Nlc3Nvck5vZGUgY3JlYXRlU2NyaXB0UHJvY2Vzc29yKHVuc2lnbmVk
IGxvbmcgYnVmZmVyU2l6ZSwgb3B0aW9uYWwgdW5zaWduZWQgbG9uZyBudW1iZXJPZklucHV0Q2hh
bm5lbHMgPSAyLCBvcHRpb25hbCB1bnNpZ25lZCBsb25nIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMg
PSAyKTsKICAgICBPc2NpbGxhdG9yTm9kZSBjcmVhdGVPc2NpbGxhdG9yKCk7Ci0gICAgW01heVRo
cm93TGVnYWN5RXhjZXB0aW9uXSBQZXJpb2RpY1dhdmUgY3JlYXRlUGVyaW9kaWNXYXZlKEZsb2F0
MzJBcnJheSByZWFsLCBGbG9hdDMyQXJyYXkgaW1hZyk7CisgICAgW01heVRocm93RXhjZXB0aW9u
XSBQZXJpb2RpY1dhdmUgY3JlYXRlUGVyaW9kaWNXYXZlKEZsb2F0MzJBcnJheSByZWFsLCBGbG9h
dDMyQXJyYXkgaW1hZyk7CiAKICAgICAvLyBDaGFubmVsIHNwbGl0dGluZyBhbmQgbWVyZ2luZwot
ICAgIFtNYXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbl0gQ2hhbm5lbFNwbGl0dGVyTm9kZSBjcmVhdGVD
aGFubmVsU3BsaXR0ZXIob3B0aW9uYWwgdW5zaWduZWQgbG9uZyBudW1iZXJPZk91dHB1dHMgPSA2
KTsKLSAgICBbTWF5VGhyb3dMZWdhY3lFeGNlcHRpb25dIENoYW5uZWxNZXJnZXJOb2RlIGNyZWF0
ZUNoYW5uZWxNZXJnZXIob3B0aW9uYWwgdW5zaWduZWQgbG9uZyBudW1iZXJPZklucHV0cyA9IDYp
OworICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gQ2hhbm5lbFNwbGl0dGVyTm9kZSBjcmVhdGVDaGFu
bmVsU3BsaXR0ZXIob3B0aW9uYWwgdW5zaWduZWQgbG9uZyBudW1iZXJPZk91dHB1dHMgPSA2KTsK
KyAgICBbTWF5VGhyb3dFeGNlcHRpb25dIENoYW5uZWxNZXJnZXJOb2RlIGNyZWF0ZUNoYW5uZWxN
ZXJnZXIob3B0aW9uYWwgdW5zaWduZWQgbG9uZyBudW1iZXJPZklucHV0cyA9IDYpOwogCiAgICAg
Ly8gT2ZmbGluZSByZW5kZXJpbmcKICAgICAvLyB2b2lkIHByZXBhcmVPZmZsaW5lQnVmZmVyUmVu
ZGVyaW5nKHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZDaGFubmVscywgdW5zaWduZWQgbG9uZyBudW1i
ZXJPZkZyYW1lcywgdW5yZXN0cmljdGVkIGZsb2F0IHNhbXBsZVJhdGUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5oCmlu
ZGV4IDI3MjU2MjVmYTc1ZTcwM2NhOWU4YmJiNjE0ZjBjYjAwZTIwOTdmZWUuLjdiMzQ4ZTdhNjJj
YTMzMjQ4ODllYmM3N2ZmMDgzNGRiNzdjYmY2YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQXVkaW9EZXN0aW5hdGlvbk5vZGUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2RlLmgKQEAgLTUzLDcgKzUz
LDcgQEAgcHVibGljOgogICAgIHNpemVfdCBjdXJyZW50U2FtcGxlRnJhbWUoKSBjb25zdCB7IHJl
dHVybiBtX2N1cnJlbnRTYW1wbGVGcmFtZTsgfQogICAgIGRvdWJsZSBjdXJyZW50VGltZSgpIGNv
bnN0IHsgcmV0dXJuIGN1cnJlbnRTYW1wbGVGcmFtZSgpIC8gc3RhdGljX2Nhc3Q8ZG91YmxlPihz
YW1wbGVSYXRlKCkpOyB9CiAKLSAgICB2aXJ0dWFsIHVuc2lnbmVkIGxvbmcgbWF4Q2hhbm5lbENv
dW50KCkgY29uc3QgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgdW5zaWduZWQgbWF4Q2hhbm5l
bENvdW50KCkgY29uc3QgeyByZXR1cm4gMDsgfQogCiAgICAgLy8gRW5hYmxlIGxvY2FsL2xpdmUg
aW5wdXQgZm9yIHRoZSBzcGVjaWZpZWQgZGV2aWNlLgogICAgIHZpcnR1YWwgdm9pZCBlbmFibGVJ
bnB1dChjb25zdCBTdHJpbmcmIGlucHV0RGV2aWNlSWQpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmNwcAppbmRleCAwNzk3ZDYxNTA2ZjNiMDVkNTM2
MWFmM2JiOGRhNzJhZDdjOWU5ZThlLi4yZmFhMDMzMTMzYzEwYWM3MmFhNjFmOWRhNWNlZmZhZjcw
MmVlNjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
Tm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGUu
Y3BwCkBAIC0xMjMsOTcgKzEyMyw4OSBAQCBBdWRpb05vZGVPdXRwdXQqIEF1ZGlvTm9kZTo6b3V0
cHV0KHVuc2lnbmVkIGkpCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLXZvaWQgQXVkaW9Ob2Rl
Ojpjb25uZWN0KEF1ZGlvTm9kZSogZGVzdGluYXRpb24sIHVuc2lnbmVkIG91dHB1dEluZGV4LCB1
bnNpZ25lZCBpbnB1dEluZGV4LCBFeGNlcHRpb25Db2RlJiBlYykKK0V4Y2VwdGlvbk9yPHZvaWQ+
IEF1ZGlvTm9kZTo6Y29ubmVjdChBdWRpb05vZGUqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBvdXRw
dXRJbmRleCwgdW5zaWduZWQgaW5wdXRJbmRleCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOyAKICAgICBBdWRpb0NvbnRleHQ6OkF1dG9Mb2NrZXIgbG9ja2VyKGNvbnRleHQoKSk7CiAK
LSAgICBpZiAoIWRlc3RpbmF0aW9uKSB7Ci0gICAgICAgIGVjID0gU1lOVEFYX0VSUjsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAoIWRlc3RpbmF0aW9uKQorICAgICAgICByZXR1cm4g
RXhjZXB0aW9uIHsgU1lOVEFYX0VSUiB9OwogCiAgICAgLy8gU2FuaXR5IGNoZWNrIGlucHV0IGFu
ZCBvdXRwdXQgaW5kaWNlcy4KLSAgICBpZiAob3V0cHV0SW5kZXggPj0gbnVtYmVyT2ZPdXRwdXRz
KCkpIHsKLSAgICAgICAgZWMgPSBJTkRFWF9TSVpFX0VSUjsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KKyAgICBpZiAob3V0cHV0SW5kZXggPj0gbnVtYmVyT2ZPdXRwdXRzKCkpCisgICAgICAgIHJl
dHVybiBFeGNlcHRpb24geyBJTkRFWF9TSVpFX0VSUiB9OwogCi0gICAgaWYgKGRlc3RpbmF0aW9u
ICYmIGlucHV0SW5kZXggPj0gZGVzdGluYXRpb24tPm51bWJlck9mSW5wdXRzKCkpIHsKLSAgICAg
ICAgZWMgPSBJTkRFWF9TSVpFX0VSUjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAo
ZGVzdGluYXRpb24gJiYgaW5wdXRJbmRleCA+PSBkZXN0aW5hdGlvbi0+bnVtYmVyT2ZJbnB1dHMo
KSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IElOREVYX1NJWkVfRVJSIH07CiAKLSAgICBp
ZiAoY29udGV4dCgpICE9IGRlc3RpbmF0aW9uLT5jb250ZXh0KCkpIHsKLSAgICAgICAgZWMgPSBT
WU5UQVhfRVJSOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIGlmIChjb250ZXh0KCkgIT0g
ZGVzdGluYXRpb24tPmNvbnRleHQoKSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFNZTlRB
WF9FUlIgfTsKIAotICAgIEF1ZGlvTm9kZUlucHV0KiBpbnB1dCA9IGRlc3RpbmF0aW9uLT5pbnB1
dChpbnB1dEluZGV4KTsKLSAgICBBdWRpb05vZGVPdXRwdXQqIG91dHB1dCA9IHRoaXMtPm91dHB1
dChvdXRwdXRJbmRleCk7CisgICAgYXV0byogaW5wdXQgPSBkZXN0aW5hdGlvbi0+aW5wdXQoaW5w
dXRJbmRleCk7CisgICAgYXV0byogb3V0cHV0ID0gdGhpcy0+b3V0cHV0KG91dHB1dEluZGV4KTsK
ICAgICBpbnB1dC0+Y29ubmVjdChvdXRwdXQpOwogCiAgICAgLy8gTGV0IGNvbnRleHQga25vdyB0
aGF0IGEgY29ubmVjdGlvbiBoYXMgYmVlbiBtYWRlLgogICAgIGNvbnRleHQoKS5pbmNyZW1lbnRD
b25uZWN0aW9uQ291bnQoKTsKKworICAgIHJldHVybiB7IH07CiB9CiAKLXZvaWQgQXVkaW9Ob2Rl
Ojpjb25uZWN0KEF1ZGlvUGFyYW0qIHBhcmFtLCB1bnNpZ25lZCBvdXRwdXRJbmRleCwgRXhjZXB0
aW9uQ29kZSYgZWMpCitFeGNlcHRpb25Pcjx2b2lkPiBBdWRpb05vZGU6OmNvbm5lY3QoQXVkaW9Q
YXJhbSogcGFyYW0sIHVuc2lnbmVkIG91dHB1dEluZGV4KQogewogICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CiAgICAgQXVkaW9Db250ZXh0OjpBdXRvTG9ja2VyIGxvY2tlcihjb250ZXh0KCkp
OwogCi0gICAgaWYgKCFwYXJhbSkgewotICAgICAgICBlYyA9IFNZTlRBWF9FUlI7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9CisgICAgaWYgKCFwYXJhbSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlv
biB7IFNZTlRBWF9FUlIgfTsKIAotICAgIGlmIChvdXRwdXRJbmRleCA+PSBudW1iZXJPZk91dHB1
dHMoKSkgewotICAgICAgICBlYyA9IElOREVYX1NJWkVfRVJSOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQorICAgIGlmIChvdXRwdXRJbmRleCA+PSBudW1iZXJPZk91dHB1dHMoKSkKKyAgICAgICAg
cmV0dXJuIEV4Y2VwdGlvbiB7IElOREVYX1NJWkVfRVJSIH07CiAKLSAgICBpZiAoY29udGV4dCgp
ICE9IHBhcmFtLT5jb250ZXh0KCkpIHsKLSAgICAgICAgZWMgPSBTWU5UQVhfRVJSOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQorICAgIGlmIChjb250ZXh0KCkgIT0gcGFyYW0tPmNvbnRleHQoKSkK
KyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFNZTlRBWF9FUlIgfTsKIAotICAgIEF1ZGlvTm9k
ZU91dHB1dCogb3V0cHV0ID0gdGhpcy0+b3V0cHV0KG91dHB1dEluZGV4KTsKKyAgICBhdXRvKiBv
dXRwdXQgPSB0aGlzLT5vdXRwdXQob3V0cHV0SW5kZXgpOwogICAgIHBhcmFtLT5jb25uZWN0KG91
dHB1dCk7CisKKyAgICByZXR1cm4geyB9OwogfQogCi12b2lkIEF1ZGlvTm9kZTo6ZGlzY29ubmVj
dCh1bnNpZ25lZCBvdXRwdXRJbmRleCwgRXhjZXB0aW9uQ29kZSYgZWMpCitFeGNlcHRpb25Pcjx2
b2lkPiBBdWRpb05vZGU6OmRpc2Nvbm5lY3QodW5zaWduZWQgb3V0cHV0SW5kZXgpCiB7CiAgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBBdWRpb0NvbnRleHQ6OkF1dG9Mb2NrZXIgbG9j
a2VyKGNvbnRleHQoKSk7CiAKICAgICAvLyBTYW5pdHkgY2hlY2sgaW5wdXQgYW5kIG91dHB1dCBp
bmRpY2VzLgotICAgIGlmIChvdXRwdXRJbmRleCA+PSBudW1iZXJPZk91dHB1dHMoKSkgewotICAg
ICAgICBlYyA9IElOREVYX1NJWkVfRVJSOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIGlm
IChvdXRwdXRJbmRleCA+PSBudW1iZXJPZk91dHB1dHMoKSkKKyAgICAgICAgcmV0dXJuIEV4Y2Vw
dGlvbiB7IElOREVYX1NJWkVfRVJSIH07CiAKLSAgICBBdWRpb05vZGVPdXRwdXQqIG91dHB1dCA9
IHRoaXMtPm91dHB1dChvdXRwdXRJbmRleCk7CisgICAgYXV0byogb3V0cHV0ID0gdGhpcy0+b3V0
cHV0KG91dHB1dEluZGV4KTsKICAgICBvdXRwdXQtPmRpc2Nvbm5lY3RBbGwoKTsKKworICAgIHJl
dHVybiB7IH07CiB9CiAKLXVuc2lnbmVkIGxvbmcgQXVkaW9Ob2RlOjpjaGFubmVsQ291bnQoKQor
dW5zaWduZWQgQXVkaW9Ob2RlOjpjaGFubmVsQ291bnQoKQogewogICAgIHJldHVybiBtX2NoYW5u
ZWxDb3VudDsKIH0KIAotdm9pZCBBdWRpb05vZGU6OnNldENoYW5uZWxDb3VudCh1bnNpZ25lZCBs
b25nIGNoYW5uZWxDb3VudCwgRXhjZXB0aW9uQ29kZSYgZWMpCitFeGNlcHRpb25Pcjx2b2lkPiBB
dWRpb05vZGU6OnNldENoYW5uZWxDb3VudCh1bnNpZ25lZCBjaGFubmVsQ291bnQpCiB7CiAgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBBdWRpb0NvbnRleHQ6OkF1dG9Mb2NrZXIgbG9j
a2VyKGNvbnRleHQoKSk7CiAKLSAgICBpZiAoY2hhbm5lbENvdW50ID4gMCAmJiBjaGFubmVsQ291
bnQgPD0gQXVkaW9Db250ZXh0OjptYXhOdW1iZXJPZkNoYW5uZWxzKCkpIHsKLSAgICAgICAgaWYg
KG1fY2hhbm5lbENvdW50ICE9IGNoYW5uZWxDb3VudCkgewotICAgICAgICAgICAgbV9jaGFubmVs
Q291bnQgPSBjaGFubmVsQ291bnQ7Ci0gICAgICAgICAgICBpZiAobV9jaGFubmVsQ291bnRNb2Rl
ICE9IE1heCkKLSAgICAgICAgICAgICAgICB1cGRhdGVDaGFubmVsc0ZvcklucHV0cygpOwotICAg
ICAgICB9Ci0gICAgfSBlbHNlCi0gICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CisgICAg
aWYgKCEoY2hhbm5lbENvdW50ID4gMCAmJiBjaGFubmVsQ291bnQgPD0gQXVkaW9Db250ZXh0Ojpt
YXhOdW1iZXJPZkNoYW5uZWxzKCkpKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSU5WQUxJ
RF9TVEFURV9FUlIgfTsKKworICAgIGlmIChtX2NoYW5uZWxDb3VudCA9PSBjaGFubmVsQ291bnQp
CisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBtX2NoYW5uZWxDb3VudCA9IGNoYW5uZWxDb3Vu
dDsKKyAgICBpZiAobV9jaGFubmVsQ291bnRNb2RlICE9IE1heCkKKyAgICAgICAgdXBkYXRlQ2hh
bm5lbHNGb3JJbnB1dHMoKTsKKyAgICByZXR1cm4geyB9OwogfQogCiBTdHJpbmcgQXVkaW9Ob2Rl
OjpjaGFubmVsQ291bnRNb2RlKCkKQEAgLTIzMCw3ICsyMjIsNyBAQCBTdHJpbmcgQXVkaW9Ob2Rl
OjpjaGFubmVsQ291bnRNb2RlKCkKICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIH0KIAotdm9p
ZCBBdWRpb05vZGU6OnNldENoYW5uZWxDb3VudE1vZGUoY29uc3QgU3RyaW5nJiBtb2RlLCBFeGNl
cHRpb25Db2RlJiBlYykKK0V4Y2VwdGlvbk9yPHZvaWQ+IEF1ZGlvTm9kZTo6c2V0Q2hhbm5lbENv
dW50TW9kZShjb25zdCBTdHJpbmcmIG1vZGUpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKICAgICBBdWRpb0NvbnRleHQ6OkF1dG9Mb2NrZXIgbG9ja2VyKGNvbnRleHQoKSk7CkBAIC0y
NDQsMTAgKzIzNiwxMiBAQCB2b2lkIEF1ZGlvTm9kZTo6c2V0Q2hhbm5lbENvdW50TW9kZShjb25z
dCBTdHJpbmcmIG1vZGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgIGVsc2UgaWYgKG1vZGUgPT0g
ImV4cGxpY2l0IikKICAgICAgICAgbV9jaGFubmVsQ291bnRNb2RlID0gRXhwbGljaXQ7CiAgICAg
ZWxzZQotICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOworICAgICAgICByZXR1cm4gRXhj
ZXB0aW9uIHsgSU5WQUxJRF9TVEFURV9FUlIgfTsKIAogICAgIGlmIChtX2NoYW5uZWxDb3VudE1v
ZGUgIT0gb2xkTW9kZSkKICAgICAgICAgdXBkYXRlQ2hhbm5lbHNGb3JJbnB1dHMoKTsKKworICAg
IHJldHVybiB7IH07CiB9CiAKIFN0cmluZyBBdWRpb05vZGU6OmNoYW5uZWxJbnRlcnByZXRhdGlv
bigpCkBAIC0yNjIsNyArMjU2LDcgQEAgU3RyaW5nIEF1ZGlvTm9kZTo6Y2hhbm5lbEludGVycHJl
dGF0aW9uKCkKICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIH0KIAotdm9pZCBBdWRpb05vZGU6
OnNldENoYW5uZWxJbnRlcnByZXRhdGlvbihjb25zdCBTdHJpbmcmIGludGVycHJldGF0aW9uLCBF
eGNlcHRpb25Db2RlJiBlYykKK0V4Y2VwdGlvbk9yPHZvaWQ+IEF1ZGlvTm9kZTo6c2V0Q2hhbm5l
bEludGVycHJldGF0aW9uKGNvbnN0IFN0cmluZyYgaW50ZXJwcmV0YXRpb24pCiB7CiAgICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBBdWRpb0NvbnRleHQ6OkF1dG9Mb2NrZXIgbG9ja2Vy
KGNvbnRleHQoKSk7CkBAIC0yNzIsNyArMjY2LDkgQEAgdm9pZCBBdWRpb05vZGU6OnNldENoYW5u
ZWxJbnRlcnByZXRhdGlvbihjb25zdCBTdHJpbmcmIGludGVycHJldGF0aW9uLCBFeGNlcHRpb24K
ICAgICBlbHNlIGlmIChpbnRlcnByZXRhdGlvbiA9PSAiZGlzY3JldGUiKQogICAgICAgICBtX2No
YW5uZWxJbnRlcnByZXRhdGlvbiA9IEF1ZGlvQnVzOjpEaXNjcmV0ZTsKICAgICBlbHNlCi0gICAg
ICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJ
TlZBTElEX1NUQVRFX0VSUiB9OworCisgICAgcmV0dXJuIHsgfTsKIH0KIAogdm9pZCBBdWRpb05v
ZGU6OnVwZGF0ZUNoYW5uZWxzRm9ySW5wdXRzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvTm9kZS5oCmluZGV4IGU1MTQwZDZjNjA1YmYzOGQ1YTYyNzc3NTczYjA4ZmZi
NjhiYmVhNTUuLjk1ZTZiMjliMTA5NGU0Y2MwMmM1MjI5NzYyMzllYzE1MGZlZjRmOGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGUuaApAQCAtMjIsMTQgKzIy
LDEyIEBACiAgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIEF1ZGlvTm9kZV9oCi0jZGVmaW5lIEF1ZGlv
Tm9kZV9oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkF1ZGlvQnVzLmgiCiAjaW5jbHVkZSAi
RXZlbnRUYXJnZXQuaCIKLSNpbmNsdWRlIDxtZW1vcnk+CisjaW5jbHVkZSAiRXhjZXB0aW9uT3Iu
aCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAog
I2RlZmluZSBERUJVR19BVURJT05PREVfUkVGRVJFTkNFUyAwCiAKQEAgLTQwLDggKzM4LDYgQEAg
Y2xhc3MgQXVkaW9Ob2RlSW5wdXQ7CiBjbGFzcyBBdWRpb05vZGVPdXRwdXQ7CiBjbGFzcyBBdWRp
b1BhcmFtOwogCi10eXBlZGVmIGludCBFeGNlcHRpb25Db2RlOwotCiAvLyBBbiBBdWRpb05vZGUg
aXMgdGhlIGJhc2ljIGJ1aWxkaW5nIGJsb2NrIGZvciBoYW5kbGluZyBhdWRpbyB3aXRoaW4gYW4g
QXVkaW9Db250ZXh0LgogLy8gSXQgbWF5IGJlIGFuIGF1ZGlvIHNvdXJjZSwgYW4gaW50ZXJtZWRp
YXRlIHByb2Nlc3NpbmcgbW9kdWxlLCBvciBhbiBhdWRpbyBkZXN0aW5hdGlvbi4KIC8vIEVhY2gg
QXVkaW9Ob2RlIGNhbiBoYXZlIGlucHV0cyBhbmQvb3Igb3V0cHV0cy4gQW4gQXVkaW9Tb3VyY2VO
b2RlIGhhcyBubyBpbnB1dHMgYW5kIGEgc2luZ2xlIG91dHB1dC4KQEAgLTEyNSw5ICsxMjEsOSBA
QCBwdWJsaWM6CiAgICAgQXVkaW9Ob2RlT3V0cHV0KiBvdXRwdXQodW5zaWduZWQpOwogCiAgICAg
Ly8gQ2FsbGVkIGZyb20gbWFpbiB0aHJlYWQgYnkgY29ycmVzcG9uZGluZyBKYXZhU2NyaXB0IG1l
dGhvZHMuCi0gICAgdmlydHVhbCB2b2lkIGNvbm5lY3QoQXVkaW9Ob2RlKiwgdW5zaWduZWQgb3V0
cHV0SW5kZXgsIHVuc2lnbmVkIGlucHV0SW5kZXgsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2b2lk
IGNvbm5lY3QoQXVkaW9QYXJhbSosIHVuc2lnbmVkIG91dHB1dEluZGV4LCBFeGNlcHRpb25Db2Rl
Jik7Ci0gICAgdmlydHVhbCB2b2lkIGRpc2Nvbm5lY3QodW5zaWduZWQgb3V0cHV0SW5kZXgsIEV4
Y2VwdGlvbkNvZGUmKTsKKyAgICB2aXJ0dWFsIEV4Y2VwdGlvbk9yPHZvaWQ+IGNvbm5lY3QoQXVk
aW9Ob2RlKiwgdW5zaWduZWQgb3V0cHV0SW5kZXgsIHVuc2lnbmVkIGlucHV0SW5kZXgpOworICAg
IEV4Y2VwdGlvbk9yPHZvaWQ+IGNvbm5lY3QoQXVkaW9QYXJhbSosIHVuc2lnbmVkIG91dHB1dElu
ZGV4KTsKKyAgICB2aXJ0dWFsIEV4Y2VwdGlvbk9yPHZvaWQ+IGRpc2Nvbm5lY3QodW5zaWduZWQg
b3V0cHV0SW5kZXgpOwogCiAgICAgdmlydHVhbCBmbG9hdCBzYW1wbGVSYXRlKCkgY29uc3QgeyBy
ZXR1cm4gbV9zYW1wbGVSYXRlOyB9CiAKQEAgLTE2NSwxNCArMTYxLDE0IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGVuYWJsZU91dHB1dHNJZk5lY2Vzc2FyeSgpOwogICAgIHZvaWQgZGlzYWJsZU91dHB1
dHNJZk5lY2Vzc2FyeSgpOwogCi0gICAgdW5zaWduZWQgbG9uZyBjaGFubmVsQ291bnQoKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgc2V0Q2hhbm5lbENvdW50KHVuc2lnbmVkIGxvbmcsIEV4Y2VwdGlvbkNv
ZGUmKTsKKyAgICB1bnNpZ25lZCBjaGFubmVsQ291bnQoKTsKKyAgICB2aXJ0dWFsIEV4Y2VwdGlv
bk9yPHZvaWQ+IHNldENoYW5uZWxDb3VudCh1bnNpZ25lZCk7CiAKICAgICBTdHJpbmcgY2hhbm5l
bENvdW50TW9kZSgpOwotICAgIHZvaWQgc2V0Q2hhbm5lbENvdW50TW9kZShjb25zdCBTdHJpbmcm
LCBFeGNlcHRpb25Db2RlJik7CisgICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0Q2hhbm5lbENvdW50
TW9kZShjb25zdCBTdHJpbmcmKTsKIAogICAgIFN0cmluZyBjaGFubmVsSW50ZXJwcmV0YXRpb24o
KTsKLSAgICB2b2lkIHNldENoYW5uZWxJbnRlcnByZXRhdGlvbihjb25zdCBTdHJpbmcmLCBFeGNl
cHRpb25Db2RlJik7CisgICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0Q2hhbm5lbEludGVycHJldGF0
aW9uKGNvbnN0IFN0cmluZyYpOwogCiAgICAgQ2hhbm5lbENvdW50TW9kZSBpbnRlcm5hbENoYW5u
ZWxDb3VudE1vZGUoKSBjb25zdCB7IHJldHVybiBtX2NoYW5uZWxDb3VudE1vZGU7IH0KICAgICBB
dWRpb0J1czo6Q2hhbm5lbEludGVycHJldGF0aW9uIGludGVybmFsQ2hhbm5lbEludGVycHJldGF0
aW9uKCkgY29uc3QgeyByZXR1cm4gbV9jaGFubmVsSW50ZXJwcmV0YXRpb247IH0KQEAgLTIyNyw1
ICsyMjMsMyBAQCBwcm90ZWN0ZWQ6CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNl
bmRpZiAvLyBBdWRpb05vZGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb05vZGUuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9B
dWRpb05vZGUuaWRsCmluZGV4IDg1MzNkZmNlYzQwYWZkNjY0MDA2NDIzZjI5ZWJlOGNkZjE3MzUy
YjQuLmU2NDE4ZWVjODI5MzBlMzIzMzc2ODgyNDkwMzZmNjAyMDdiYzQ3MGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmlkbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5pZGwKQEAgLTMwLDExICszMCwx
MSBAQAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIG51bWJlck9mSW5wdXRz
OwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIG51bWJlck9mT3V0cHV0czsK
IAotICAgIFtTZXR0ZXJNYXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbl0gYXR0cmlidXRlIHVuc2lnbmVk
IGxvbmcgY2hhbm5lbENvdW50OwotICAgIFtTZXR0ZXJNYXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbl0g
YXR0cmlidXRlIERPTVN0cmluZyBjaGFubmVsQ291bnRNb2RlOwotICAgIFtTZXR0ZXJNYXlUaHJv
d0xlZ2FjeUV4Y2VwdGlvbl0gYXR0cmlidXRlIERPTVN0cmluZyBjaGFubmVsSW50ZXJwcmV0YXRp
b247CisgICAgW1NldHRlck1heVRocm93RXhjZXB0aW9uXSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9u
ZyBjaGFubmVsQ291bnQ7CisgICAgW1NldHRlck1heVRocm93RXhjZXB0aW9uXSBhdHRyaWJ1dGUg
RE9NU3RyaW5nIGNoYW5uZWxDb3VudE1vZGU7CisgICAgW1NldHRlck1heVRocm93RXhjZXB0aW9u
XSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGNoYW5uZWxJbnRlcnByZXRhdGlvbjsKIAotICAgIFtNYXlU
aHJvd0xlZ2FjeUV4Y2VwdGlvbl0gdm9pZCBjb25uZWN0KEF1ZGlvTm9kZT8gZGVzdGluYXRpb24s
IG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgb3V0cHV0ID0gMCwgb3B0aW9uYWwgdW5zaWduZWQgbG9u
ZyBpbnB1dCA9IDApOwotICAgIFtNYXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbl0gdm9pZCBjb25uZWN0
KEF1ZGlvUGFyYW0/IGRlc3RpbmF0aW9uLCBvcHRpb25hbCB1bnNpZ25lZCBsb25nIG91dHB1dCA9
IDApOwotICAgIFtNYXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbl0gdm9pZCBkaXNjb25uZWN0KG9wdGlv
bmFsIHVuc2lnbmVkIGxvbmcgb3V0cHV0ID0gMCk7CisgICAgW01heVRocm93RXhjZXB0aW9uXSB2
b2lkIGNvbm5lY3QoQXVkaW9Ob2RlPyBkZXN0aW5hdGlvbiwgb3B0aW9uYWwgdW5zaWduZWQgbG9u
ZyBvdXRwdXQgPSAwLCBvcHRpb25hbCB1bnNpZ25lZCBsb25nIGlucHV0ID0gMCk7CisgICAgW01h
eVRocm93RXhjZXB0aW9uXSB2b2lkIGNvbm5lY3QoQXVkaW9QYXJhbT8gZGVzdGluYXRpb24sIG9w
dGlvbmFsIHVuc2lnbmVkIGxvbmcgb3V0cHV0ID0gMCk7CisgICAgW01heVRocm93RXhjZXB0aW9u
XSB2b2lkIGRpc2Nvbm5lY3Qob3B0aW9uYWwgdW5zaWduZWQgbG9uZyBvdXRwdXQgPSAwKTsKIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU2NoZWR1
bGVkU291cmNlTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
U2NoZWR1bGVkU291cmNlTm9kZS5jcHAKaW5kZXggMGQ0YWRlNTc2MTE3YzNlYjk1MTMwZWMzYjdm
MWJmODIzYjM3NWUzMS4uNzU2NmFhMjQ5NzIxZGNlOGM0ZTNjM2Q4NmMzOThhMTNiMWVkN2ViNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1NjaGVkdWxl
ZFNvdXJjZU5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVk
aW9TY2hlZHVsZWRTb3VyY2VOb2RlLmNwcApAQCAtNDYsMjIgKzQ2LDEyIEBAIGNvbnN0IGRvdWJs
ZSBBdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGU6OlVua25vd25UaW1lID0gLTE7CiAKIEF1ZGlvU2No
ZWR1bGVkU291cmNlTm9kZTo6QXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlKEF1ZGlvQ29udGV4dCYg
Y29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKICAgICA6IEF1ZGlvTm9kZShjb250ZXh0LCBzYW1w
bGVSYXRlKQotICAgICwgbV9wbGF5YmFja1N0YXRlKFVOU0NIRURVTEVEX1NUQVRFKQotICAgICwg
bV9zdGFydFRpbWUoMCkKICAgICAsIG1fZW5kVGltZShVbmtub3duVGltZSkKLSAgICAsIG1faGFz
RW5kZWRMaXN0ZW5lcihmYWxzZSkKIHsKIH0KIAotdm9pZCBBdWRpb1NjaGVkdWxlZFNvdXJjZU5v
ZGU6OnVwZGF0ZVNjaGVkdWxpbmdJbmZvKHNpemVfdCBxdWFudHVtRnJhbWVTaXplLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEF1ZGlvQnVzKiBv
dXRwdXRCdXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2l6ZV90JiBxdWFudHVtRnJhbWVPZmZzZXQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90JiBub25TaWxlbnRGcmFtZXNUb1By
b2Nlc3MpCit2b2lkIEF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZTo6dXBkYXRlU2NoZWR1bGluZ0lu
Zm8oc2l6ZV90IHF1YW50dW1GcmFtZVNpemUsIEF1ZGlvQnVzJiBvdXRwdXRCdXMsIHNpemVfdCYg
cXVhbnR1bUZyYW1lT2Zmc2V0LCBzaXplX3QmIG5vblNpbGVudEZyYW1lc1RvUHJvY2VzcykKIHsK
LSAgICBBU1NFUlQob3V0cHV0QnVzKTsKLSAgICBpZiAoIW91dHB1dEJ1cykKLSAgICAgICAgcmV0
dXJuOwotCiAgICAgQVNTRVJUKHF1YW50dW1GcmFtZVNpemUgPT0gQXVkaW9Ob2RlOjpQcm9jZXNz
aW5nU2l6ZUluRnJhbWVzKTsKICAgICBpZiAocXVhbnR1bUZyYW1lU2l6ZSAhPSBBdWRpb05vZGU6
OlByb2Nlc3NpbmdTaXplSW5GcmFtZXMpCiAgICAgICAgIHJldHVybjsKQEAgLTgzLDcgKzczLDcg
QEAgdm9pZCBBdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGU6OnVwZGF0ZVNjaGVkdWxpbmdJbmZvKHNp
emVfdCBxdWFudHVtRnJhbWVTaXplLAogCiAgICAgaWYgKG1fcGxheWJhY2tTdGF0ZSA9PSBVTlND
SEVEVUxFRF9TVEFURSB8fCBtX3BsYXliYWNrU3RhdGUgPT0gRklOSVNIRURfU1RBVEUgfHwgc3Rh
cnRGcmFtZSA+PSBxdWFudHVtRW5kRnJhbWUpIHsKICAgICAgICAgLy8gT3V0cHV0IHNpbGVuY2Uu
Ci0gICAgICAgIG91dHB1dEJ1cy0+emVybygpOworICAgICAgICBvdXRwdXRCdXMuemVybygpOwog
ICAgICAgICBub25TaWxlbnRGcmFtZXNUb1Byb2Nlc3MgPSAwOwogICAgICAgICByZXR1cm47CiAg
ICAgfQpAQCAtMTAxLDE1ICs5MSwxNSBAQCB2b2lkIEF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZTo6
dXBkYXRlU2NoZWR1bGluZ0luZm8oc2l6ZV90IHF1YW50dW1GcmFtZVNpemUsCiAKICAgICBpZiAo
IW5vblNpbGVudEZyYW1lc1RvUHJvY2VzcykgewogICAgICAgICAvLyBPdXRwdXQgc2lsZW5jZS4K
LSAgICAgICAgb3V0cHV0QnVzLT56ZXJvKCk7CisgICAgICAgIG91dHB1dEJ1cy56ZXJvKCk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICAvLyBIYW5kbGUgc2lsZW5jZSBiZWZvcmUgd2Ug
c3RhcnQgcGxheWluZy4KICAgICAvLyBaZXJvIGFueSBpbml0aWFsIGZyYW1lcyByZXByZXNlbnRp
bmcgc2lsZW5jZSBsZWFkaW5nIHVwIHRvIGEgcmVuZGVyaW5nIHN0YXJ0IHRpbWUgaW4gdGhlIG1p
ZGRsZSBvZiB0aGUgcXVhbnR1bS4KICAgICBpZiAocXVhbnR1bUZyYW1lT2Zmc2V0KSB7Ci0gICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBvdXRwdXRCdXMtPm51bWJlck9mQ2hhbm5lbHMo
KTsgKytpKQotICAgICAgICAgICAgbWVtc2V0KG91dHB1dEJ1cy0+Y2hhbm5lbChpKS0+bXV0YWJs
ZURhdGEoKSwgMCwgc2l6ZW9mKGZsb2F0KSAqIHF1YW50dW1GcmFtZU9mZnNldCk7CisgICAgICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBvdXRwdXRCdXMubnVtYmVyT2ZDaGFubmVscygpOyAr
K2kpCisgICAgICAgICAgICBtZW1zZXQob3V0cHV0QnVzLmNoYW5uZWwoaSktPm11dGFibGVEYXRh
KCksIDAsIHNpemVvZihmbG9hdCkgKiBxdWFudHVtRnJhbWVPZmZzZXQpOwogICAgIH0KIAogICAg
IC8vIEhhbmRsZSBzaWxlbmNlIGFmdGVyIHdlJ3JlIGRvbmUgcGxheWluZy4KQEAgLTEyOCw1MCAr
MTE4LDQzIEBAIHZvaWQgQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlOjp1cGRhdGVTY2hlZHVsaW5n
SW5mbyhzaXplX3QgcXVhbnR1bUZyYW1lU2l6ZSwKICAgICAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgICAgICBub25TaWxlbnRGcmFtZXNUb1Byb2Nlc3MgLT0gZnJhbWVzVG9aZXJvOwogCi0gICAg
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgb3V0cHV0QnVzLT5udW1iZXJPZkNoYW5u
ZWxzKCk7ICsraSkKLSAgICAgICAgICAgICAgICBtZW1zZXQob3V0cHV0QnVzLT5jaGFubmVsKGkp
LT5tdXRhYmxlRGF0YSgpICsgemVyb1N0YXJ0RnJhbWUsIDAsIHNpemVvZihmbG9hdCkgKiBmcmFt
ZXNUb1plcm8pOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG91dHB1dEJ1
cy5udW1iZXJPZkNoYW5uZWxzKCk7ICsraSkKKyAgICAgICAgICAgICAgICBtZW1zZXQob3V0cHV0
QnVzLmNoYW5uZWwoaSktPm11dGFibGVEYXRhKCkgKyB6ZXJvU3RhcnRGcmFtZSwgMCwgc2l6ZW9m
KGZsb2F0KSAqIGZyYW1lc1RvWmVybyk7CiAgICAgICAgIH0KIAogICAgICAgICBmaW5pc2goKTsK
ICAgICB9Ci0KLSAgICByZXR1cm47CiB9CiAKLXZvaWQgQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2Rl
OjpzdGFydChkb3VibGUgd2hlbiwgRXhjZXB0aW9uQ29kZSYgZWMpCitFeGNlcHRpb25Pcjx2b2lk
PiBBdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGU6OnN0YXJ0KGRvdWJsZSB3aGVuKQogewogICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7CiAKICAgICBjb250ZXh0KCkubm9kZVdpbGxCZWdpblBsYXli
YWNrKCk7CiAKLSAgICBpZiAobV9wbGF5YmFja1N0YXRlICE9IFVOU0NIRURVTEVEX1NUQVRFKSB7
Ci0gICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICBpZiAoIXN0ZDo6aXNmaW5pdGUod2hlbikgfHwgKHdoZW4gPCAwKSkgewotICAgICAg
ICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIGlm
IChtX3BsYXliYWNrU3RhdGUgIT0gVU5TQ0hFRFVMRURfU1RBVEUpCisgICAgICAgIHJldHVybiBF
eGNlcHRpb24geyBJTlZBTElEX1NUQVRFX0VSUiB9OworICAgIGlmICghc3RkOjppc2Zpbml0ZSh3
aGVuKSB8fCB3aGVuIDwgMCkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IElOVkFMSURfU1RB
VEVfRVJSIH07CiAKICAgICBtX3N0YXJ0VGltZSA9IHdoZW47CiAgICAgbV9wbGF5YmFja1N0YXRl
ID0gU0NIRURVTEVEX1NUQVRFOworCisgICAgcmV0dXJuIHsgfTsKIH0KIAotdm9pZCBBdWRpb1Nj
aGVkdWxlZFNvdXJjZU5vZGU6OnN0b3AoZG91YmxlIHdoZW4sIEV4Y2VwdGlvbkNvZGUmIGVjKQor
RXhjZXB0aW9uT3I8dm9pZD4gQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlOjpzdG9wKGRvdWJsZSB3
aGVuKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgaWYgKChtX3BsYXliYWNr
U3RhdGUgPT0gVU5TQ0hFRFVMRURfU1RBVEUpIHx8IChtX2VuZFRpbWUgIT0gVW5rbm93blRpbWUp
KSB7Ci0gICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9CiAKLSAgICBpZiAoIXN0ZDo6aXNmaW5pdGUod2hlbikgfHwgKHdoZW4gPCAwKSkgewotICAg
ICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAg
IGlmIChtX3BsYXliYWNrU3RhdGUgPT0gVU5TQ0hFRFVMRURfU1RBVEUgfHwgbV9lbmRUaW1lICE9
IFVua25vd25UaW1lKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSU5WQUxJRF9TVEFURV9F
UlIgfTsKKyAgICBpZiAoIXN0ZDo6aXNmaW5pdGUod2hlbikgfHwgd2hlbiA8IDApCisgICAgICAg
IHJldHVybiBFeGNlcHRpb24geyBJTlZBTElEX1NUQVRFX0VSUiB9OwogCiAgICAgbV9lbmRUaW1l
ID0gd2hlbjsKKworICAgIHJldHVybiB7IH07CiB9CiAKIHZvaWQgQXVkaW9TY2hlZHVsZWRTb3Vy
Y2VOb2RlOjpmaW5pc2goKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9BdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmgKaW5kZXggN2I3MjEzNjViMDA2MjBm
ZTJkYmE1NjE3YWYzZGE5MTdmMGM0YzU4Mi4uZjZhMWIyYzFiN2I5ZDNmY2I3YzU4YjJiMzAwY2Rl
NzBjYWQwOWQwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9B
dWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5oCkBAIC0yNiwxNiArMjYsMTIgQEAKICAq
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBBdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGVfaAotI2Rl
ZmluZSBBdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGVfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRl
ICJBdWRpb05vZGUuaCIKLSNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotY2xhc3MgQXVkaW9CdXM7Ci0KIGNsYXNzIEF1ZGlvU2NoZWR1bGVkU291cmNl
Tm9kZSA6IHB1YmxpYyBBdWRpb05vZGUgewogcHVibGljOgogICAgIC8vIFRoZXNlIGFyZSB0aGUg
cG9zc2libGUgc3RhdGVzIGFuIEF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZSBjYW4gYmUgaW46CkBA
IC01Nyw5ICs1Myw4IEBAIHB1YmxpYzoKICAgICAKICAgICBBdWRpb1NjaGVkdWxlZFNvdXJjZU5v
ZGUoQXVkaW9Db250ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSk7CiAKLSAgICAvLyBTY2hlZHVsaW5n
LgotICAgIHZvaWQgc3RhcnQoZG91YmxlIHdoZW4sIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2b2lk
IHN0b3AoZG91YmxlIHdoZW4sIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBFeGNlcHRpb25Pcjx2b2lk
PiBzdGFydChkb3VibGUgd2hlbik7CisgICAgRXhjZXB0aW9uT3I8dm9pZD4gc3RvcChkb3VibGUg
d2hlbik7CiAKICAgICB1bnNpZ25lZCBzaG9ydCBwbGF5YmFja1N0YXRlKCkgY29uc3QgeyByZXR1
cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQgc2hvcnQ+KG1fcGxheWJhY2tTdGF0ZSk7IH0KICAgICBi
b29sIGlzUGxheWluZ09yU2NoZWR1bGVkKCkgY29uc3QgeyByZXR1cm4gbV9wbGF5YmFja1N0YXRl
ID09IFBMQVlJTkdfU1RBVEUgfHwgbV9wbGF5YmFja1N0YXRlID09IFNDSEVEVUxFRF9TVEFURTsg
fQpAQCAtNjksMjkgKzY0LDI1IEBAIHByb3RlY3RlZDoKICAgICAvLyBHZXQgZnJhbWUgaW5mb3Jt
YXRpb24gZm9yIHRoZSBjdXJyZW50IHRpbWUgcXVhbnR1bS4KICAgICAvLyBXZSBoYW5kbGUgdGhl
IHRyYW5zaXRpb24gaW50byBQTEFZSU5HX1NUQVRFIGFuZCBGSU5JU0hFRF9TVEFURSBoZXJlLAog
ICAgIC8vIHplcm9pbmcgb3V0IHBvcnRpb25zIG9mIHRoZSBvdXRwdXRCdXMgd2hpY2ggYXJlIG91
dHNpZGUgdGhlIHJhbmdlIG9mIHN0YXJ0RnJhbWUgYW5kIGVuZEZyYW1lLgotICAgIC8vCiAgICAg
Ly8gRWFjaCBmcmFtZSB0aW1lIGlzIHJlbGF0aXZlIHRvIHRoZSBjb250ZXh0J3MgY3VycmVudFNh
bXBsZUZyYW1lKCkuCi0gICAgLy8gcXVhbnR1bUZyYW1lT2Zmc2V0ICAgIDogT2Zmc2V0IGZyYW1l
IGluIHRoaXMgdGltZSBxdWFudHVtIHRvIHN0YXJ0IHJlbmRlcmluZy4KLSAgICAvLyBub25TaWxl
bnRGcmFtZXNUb1Byb2Nlc3MgOiBOdW1iZXIgb2YgZnJhbWVzIHJlbmRlcmluZyBub24tc2lsZW5j
ZSAod2lsbCBiZSA8PSBxdWFudHVtRnJhbWVTaXplKS4KLSAgICB2b2lkIHVwZGF0ZVNjaGVkdWxp
bmdJbmZvKHNpemVfdCBxdWFudHVtRnJhbWVTaXplLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQXVkaW9CdXMqIG91dHB1dEJ1cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNpemVfdCYgcXVhbnR1bUZyYW1lT2Zmc2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2l6ZV90JiBub25TaWxlbnRGcmFtZXNUb1Byb2Nlc3MpOworICAgIC8vIHF1YW50dW1GcmFt
ZU9mZnNldDogT2Zmc2V0IGZyYW1lIGluIHRoaXMgdGltZSBxdWFudHVtIHRvIHN0YXJ0IHJlbmRl
cmluZy4KKyAgICAvLyBub25TaWxlbnRGcmFtZXNUb1Byb2Nlc3M6IE51bWJlciBvZiBmcmFtZXMg
cmVuZGVyaW5nIG5vbi1zaWxlbmNlICh3aWxsIGJlIDw9IHF1YW50dW1GcmFtZVNpemUpLgorICAg
IHZvaWQgdXBkYXRlU2NoZWR1bGluZ0luZm8oc2l6ZV90IHF1YW50dW1GcmFtZVNpemUsIEF1ZGlv
QnVzJiBvdXRwdXRCdXMsIHNpemVfdCYgcXVhbnR1bUZyYW1lT2Zmc2V0LCBzaXplX3QmIG5vblNp
bGVudEZyYW1lc1RvUHJvY2Vzcyk7CiAKICAgICAvLyBDYWxsZWQgd2hlbiB3ZSBoYXZlIG5vIG1v
cmUgc291bmQgdG8gcGxheSBvciB0aGUgbm90ZU9mZigpIHRpbWUgaGFzIGJlZW4gcmVhY2hlZC4K
ICAgICB2aXJ0dWFsIHZvaWQgZmluaXNoKCk7CiAKLSAgICBQbGF5YmFja1N0YXRlIG1fcGxheWJh
Y2tTdGF0ZTsKKyAgICBQbGF5YmFja1N0YXRlIG1fcGxheWJhY2tTdGF0ZSB7IFVOU0NIRURVTEVE
X1NUQVRFIH07CiAKICAgICAvLyBtX3N0YXJ0VGltZSBpcyB0aGUgdGltZSB0byBzdGFydCBwbGF5
aW5nIGJhc2VkIG9uIHRoZSBjb250ZXh0J3MgdGltZWxpbmUgKDAgb3IgYSB0aW1lIGxlc3MgdGhh
biB0aGUgY29udGV4dCdzIGN1cnJlbnQgdGltZSBtZWFucyAibm93IikuCi0gICAgZG91YmxlIG1f
c3RhcnRUaW1lOyAvLyBpbiBzZWNvbmRzCisgICAgZG91YmxlIG1fc3RhcnRUaW1lIHsgMCB9OyAv
LyBpbiBzZWNvbmRzCiAKICAgICAvLyBtX2VuZFRpbWUgaXMgdGhlIHRpbWUgdG8gc3RvcCBwbGF5
aW5nIGJhc2VkIG9uIHRoZSBjb250ZXh0J3MgdGltZWxpbmUgKDAgb3IgYSB0aW1lIGxlc3MgdGhh
biB0aGUgY29udGV4dCdzIGN1cnJlbnQgdGltZSBtZWFucyAibm93IikuCiAgICAgLy8gSWYgaXQg
aGFzbid0IGJlZW4gc2V0IGV4cGxpY2l0bHksIHRoZW4gdGhlIHNvdW5kIHdpbGwgbm90IHN0b3Ag
cGxheWluZyAoaWYgbG9vcGluZykgb3Igd2lsbCBzdG9wIHdoZW4gdGhlIGVuZCBvZiB0aGUgQXVk
aW9CdWZmZXIKICAgICAvLyBoYXMgYmVlbiByZWFjaGVkLgogICAgIGRvdWJsZSBtX2VuZFRpbWU7
IC8vIGluIHNlY29uZHMKIAotICAgIGJvb2wgbV9oYXNFbmRlZExpc3RlbmVyOworICAgIGJvb2wg
bV9oYXNFbmRlZExpc3RlbmVyIHsgZmFsc2UgfTsKIAogICAgIHN0YXRpYyBjb25zdCBkb3VibGUg
VW5rbm93blRpbWU7CiAKQEAgLTEwMiw1ICs5MywzIEBAIHByaXZhdGU6CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBBdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGVfaApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Db252b2x2ZXJOb2Rl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ29udm9sdmVyTm9kZS5jcHAK
aW5kZXggMmU2MGI5ODg4NTk1NWI4YWMwYzI3YTU0ODc2Mjk4Y2E3MmQ2OWM0Ni4uMDNlMGEwMDli
NWZhZWQ0NWUzMjRlMzZhOTc3MmZiMjUxYWE2OTdkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9Db252b2x2ZXJOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0NvbnZvbHZlck5vZGUuY3BwCkBAIC0yOSwxMyArMjksOSBAQAog
CiAjaW5jbHVkZSAiQ29udm9sdmVyTm9kZS5oIgogCi0jaW5jbHVkZSAiQXVkaW9CdWZmZXIuaCIK
LSNpbmNsdWRlICJBdWRpb0NvbnRleHQuaCIKICNpbmNsdWRlICJBdWRpb05vZGVJbnB1dC5oIgog
I2luY2x1ZGUgIkF1ZGlvTm9kZU91dHB1dC5oIgotI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIK
ICNpbmNsdWRlICJSZXZlcmIuaCIKLSNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogCiAvLyBO
b3RlIGFib3V0IGVtcGlyaWNhbCB0dW5pbmc6CiAvLyBUaGUgbWF4aW11bSBGRlQgc2l6ZSBhZmZl
Y3RzIHJldmVyYiBwZXJmb3JtYW5jZSBhbmQgYWNjdXJhY3kuCkBAIC00OSw3ICs0NSw2IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogQ29udm9sdmVyTm9kZTo6Q29udm9sdmVyTm9kZShBdWRpb0Nv
bnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCiAgICAgOiBBdWRpb05vZGUoY29udGV4
dCwgc2FtcGxlUmF0ZSkKLSAgICAsIG1fbm9ybWFsaXplKHRydWUpCiB7CiAgICAgYWRkSW5wdXQo
c3RkOjptYWtlX3VuaXF1ZTxBdWRpb05vZGVJbnB1dD4odGhpcykpOwogICAgIGFkZE91dHB1dChz
dGQ6Om1ha2VfdW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywgMikpOwpAQCAtMTA0LDcgKzk5
LDcgQEAgdm9pZCBDb252b2x2ZXJOb2RlOjppbml0aWFsaXplKCkKIHsKICAgICBpZiAoaXNJbml0
aWFsaXplZCgpKQogICAgICAgICByZXR1cm47Ci0gICAgICAgIAorCiAgICAgQXVkaW9Ob2RlOjpp
bml0aWFsaXplKCk7CiB9CiAKQEAgLTExNywxNyArMTEyLDE1IEBAIHZvaWQgQ29udm9sdmVyTm9k
ZTo6dW5pbml0aWFsaXplKCkKICAgICBBdWRpb05vZGU6OnVuaW5pdGlhbGl6ZSgpOwogfQogCi12
b2lkIENvbnZvbHZlck5vZGU6OnNldEJ1ZmZlcihBdWRpb0J1ZmZlciogYnVmZmVyLCBFeGNlcHRp
b25Db2RlJiBlYykKK0V4Y2VwdGlvbk9yPHZvaWQ+IENvbnZvbHZlck5vZGU6OnNldEJ1ZmZlcihB
dWRpb0J1ZmZlciogYnVmZmVyKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAg
CiAgICAgaWYgKCFidWZmZXIpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHsgfTsK
IAotICAgIGlmIChidWZmZXItPnNhbXBsZVJhdGUoKSAhPSBjb250ZXh0KCkuc2FtcGxlUmF0ZSgp
KSB7Ci0gICAgICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9CisgICAgaWYgKGJ1ZmZlci0+c2FtcGxlUmF0ZSgpICE9IGNvbnRleHQoKS5zYW1wbGVSYXRl
KCkpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOT1RfU1VQUE9SVEVEX0VSUiB9OwogCiAg
ICAgdW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscyA9IGJ1ZmZlci0+bnVtYmVyT2ZDaGFubmVscygp
OwogICAgIHNpemVfdCBidWZmZXJMZW5ndGggPSBidWZmZXItPmxlbmd0aCgpOwpAQCAtMTM2LDE2
ICsxMjksMTQgQEAgdm9pZCBDb252b2x2ZXJOb2RlOjpzZXRCdWZmZXIoQXVkaW9CdWZmZXIqIGJ1
ZmZlciwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgLy8gNC1jaGFubmVsIHJlc3BvbnNlIGJlaW5n
IGludGVycHJldGVkIGFzIHRydWUtc3RlcmVvIChzZWUgUmV2ZXJiIGNsYXNzKS4KICAgICBib29s
IGlzQ2hhbm5lbENvdW50R29vZCA9IChudW1iZXJPZkNoYW5uZWxzID09IDEgfHwgbnVtYmVyT2ZD
aGFubmVscyA9PSAyIHx8IG51bWJlck9mQ2hhbm5lbHMgPT0gNCkgJiYgYnVmZmVyTGVuZ3RoOwog
Ci0gICAgaWYgKCFpc0NoYW5uZWxDb3VudEdvb2QpIHsKLSAgICAgICAgZWMgPSBOT1RfU1VQUE9S
VEVEX0VSUjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAoIWlzQ2hhbm5lbENvdW50
R29vZCkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5PVF9TVVBQT1JURURfRVJSIH07CiAK
ICAgICAvLyBXcmFwIHRoZSBBdWRpb0J1ZmZlciBieSBhbiBBdWRpb0J1cy4gSXQncyBhbiBlZmZp
Y2llbnQgcG9pbnRlciBzZXQgYW5kIG5vdCBhIG1lbWNweSgpLgogICAgIC8vIFRoaXMgbWVtb3J5
IGlzIHNpbXBseSB1c2VkIGluIHRoZSBSZXZlcmIgY29uc3RydWN0b3IgYW5kIG5vIHJlZmVyZW5j
ZSB0byBpdCBpcyBrZXB0IGZvciBsYXRlciB1c2UgaW4gdGhhdCBjbGFzcy4KLSAgICBSZWZQdHI8
QXVkaW9CdXM+IGJ1ZmZlckJ1cyA9IEF1ZGlvQnVzOjpjcmVhdGUobnVtYmVyT2ZDaGFubmVscywg
YnVmZmVyTGVuZ3RoLCBmYWxzZSk7CisgICAgYXV0byBidWZmZXJCdXMgPSBBdWRpb0J1czo6Y3Jl
YXRlKG51bWJlck9mQ2hhbm5lbHMsIGJ1ZmZlckxlbmd0aCwgZmFsc2UpOwogICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBudW1iZXJPZkNoYW5uZWxzOyArK2kpCi0gICAgICAgIGJ1ZmZlckJ1
cy0+c2V0Q2hhbm5lbE1lbW9yeShpLCBidWZmZXItPmdldENoYW5uZWxEYXRhKGkpLT5kYXRhKCks
IGJ1ZmZlckxlbmd0aCk7CisgICAgICAgIGJ1ZmZlckJ1cy0+c2V0Q2hhbm5lbE1lbW9yeShpLCBi
dWZmZXItPmNoYW5uZWxEYXRhKGkpLT5kYXRhKCksIGJ1ZmZlckxlbmd0aCk7CiAKICAgICBidWZm
ZXJCdXMtPnNldFNhbXBsZVJhdGUoYnVmZmVyLT5zYW1wbGVSYXRlKCkpOwogCkBAIC0xNTksNiAr
MTUwLDggQEAgdm9pZCBDb252b2x2ZXJOb2RlOjpzZXRCdWZmZXIoQXVkaW9CdWZmZXIqIGJ1ZmZl
ciwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgICAgIG1fcmV2ZXJiID0gV1RGTW92ZShyZXZlcmIp
OwogICAgICAgICBtX2J1ZmZlciA9IGJ1ZmZlcjsKICAgICB9CisKKyAgICByZXR1cm4geyB9Owog
fQogCiBBdWRpb0J1ZmZlciogQ29udm9sdmVyTm9kZTo6YnVmZmVyKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ29udm9sdmVyTm9kZS5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Db252b2x2ZXJOb2RlLmgKaW5kZXggMGEyNWExZmM4YTU2
YmQ5NGI5ODU0NjE0MTM2M2U1OTlkNzk5NzQ4YS4uYzAwNzRkOWE2YTAxYmIzYTE0YjUyNmQ1ZmQ2
MDg4ODllYjFjN2VkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9Db252b2x2ZXJOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9D
b252b2x2ZXJOb2RlLmgKQEAgLTIyLDIwICsyMiwxNyBAQAogICogU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRl
ZiBDb252b2x2ZXJOb2RlX2gKLSNkZWZpbmUgQ29udm9sdmVyTm9kZV9oCisjcHJhZ21hIG9uY2UK
IAogI2luY2x1ZGUgIkF1ZGlvTm9kZS5oIgotI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3
dGYvTG9jay5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBBdWRpb0J1ZmZlcjsKIGNsYXNzIFJldmVyYjsKICAgICAKLWNsYXNzIENvbnZv
bHZlck5vZGUgOiBwdWJsaWMgQXVkaW9Ob2RlIHsKK2NsYXNzIENvbnZvbHZlck5vZGUgZmluYWwg
OiBwdWJsaWMgQXVkaW9Ob2RlIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPENvbnZvbHZlck5v
ZGU+IGNyZWF0ZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCiAgICAg
ewpAQCAtNDQsMTQgKzQxLDcgQEAgcHVibGljOgogICAgIAogICAgIHZpcnR1YWwgfkNvbnZvbHZl
ck5vZGUoKTsKICAgICAKLSAgICAvLyBBdWRpb05vZGUKLSAgICB2b2lkIHByb2Nlc3Moc2l6ZV90
IGZyYW1lc1RvUHJvY2Vzcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCByZXNldCgpIG92ZXJyaWRlOwot
ICAgIHZvaWQgaW5pdGlhbGl6ZSgpIG92ZXJyaWRlOwotICAgIHZvaWQgdW5pbml0aWFsaXplKCkg
b3ZlcnJpZGU7Ci0KLSAgICAvLyBJbXB1bHNlIHJlc3BvbnNlcwotICAgIHZvaWQgc2V0QnVmZmVy
KEF1ZGlvQnVmZmVyKiwgRXhjZXB0aW9uQ29kZSYpOworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNl
dEJ1ZmZlcihBdWRpb0J1ZmZlciopOwogICAgIEF1ZGlvQnVmZmVyKiBidWZmZXIoKTsKIAogICAg
IGJvb2wgbm9ybWFsaXplKCkgY29uc3QgeyByZXR1cm4gbV9ub3JtYWxpemU7IH0KQEAgLTYwLDgg
KzUwLDEzIEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgQ29udm9sdmVyTm9kZShBdWRpb0NvbnRl
eHQmLCBmbG9hdCBzYW1wbGVSYXRlKTsKIAotICAgIGRvdWJsZSB0YWlsVGltZSgpIGNvbnN0IG92
ZXJyaWRlOwotICAgIGRvdWJsZSBsYXRlbmN5VGltZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIGRv
dWJsZSB0YWlsVGltZSgpIGNvbnN0IGZpbmFsOworICAgIGRvdWJsZSBsYXRlbmN5VGltZSgpIGNv
bnN0IGZpbmFsOworCisgICAgdm9pZCBwcm9jZXNzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpIGZp
bmFsOworICAgIHZvaWQgcmVzZXQoKSBmaW5hbDsKKyAgICB2b2lkIGluaXRpYWxpemUoKSBmaW5h
bDsKKyAgICB2b2lkIHVuaW5pdGlhbGl6ZSgpIGZpbmFsOwogCiAgICAgc3RkOjp1bmlxdWVfcHRy
PFJldmVyYj4gbV9yZXZlcmI7CiAgICAgUmVmUHRyPEF1ZGlvQnVmZmVyPiBtX2J1ZmZlcjsKQEAg
LTY5LDEwICs2NCw4IEBAIHByaXZhdGU6CiAgICAgLy8gVGhpcyBzeW5jaHJvbml6ZXMgZHluYW1p
YyBjaGFuZ2VzIHRvIHRoZSBjb252b2x1dGlvbiBpbXB1bHNlIHJlc3BvbnNlIHdpdGggcHJvY2Vz
cygpLgogICAgIG11dGFibGUgTG9jayBtX3Byb2Nlc3NNdXRleDsKIAotICAgIC8vIE5vcm1hbGl6
ZSB0aGUgaW1wdWxzZSByZXNwb25zZSBvciBub3QuIE11c3QgZGVmYXVsdCB0byB0cnVlLgotICAg
IGJvb2wgbV9ub3JtYWxpemU7CisgICAgLy8gTm9ybWFsaXplIHRoZSBpbXB1bHNlIHJlc3BvbnNl
IG9yIG5vdC4KKyAgICBib29sIG1fbm9ybWFsaXplIHsgdHJ1ZSB9OwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gQ29udm9sdmVyTm9kZV9oCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NvbnZvbHZlck5vZGUuaWRsIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Db252b2x2ZXJOb2RlLmlkbAppbmRleCBjOWU5N2Uw
YzZjYTBmMTE0OGExZTIzNTcyOGJkNTc2NTNhZGYwMjRhLi5lNjYxYjU3NjY0ZTViOTFiMjRjYjhl
ZTJlNzczZmRhM2NkYjZjZDIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0NvbnZvbHZlck5vZGUuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQ29udm9sdmVyTm9kZS5pZGwKQEAgLTI3LDYgKzI3LDYgQEAKICAgICBDb25kaXRpb25h
bD1XRUJfQVVESU8sCiAgICAgSlNHZW5lcmF0ZVRvSlNPYmplY3QKIF0gaW50ZXJmYWNlIENvbnZv
bHZlck5vZGUgOiBBdWRpb05vZGUgewotICAgIFtTZXR0ZXJNYXlUaHJvd0xlZ2FjeUV4Y2VwdGlv
bl0gYXR0cmlidXRlIEF1ZGlvQnVmZmVyPyBidWZmZXI7CisgICAgW1NldHRlck1heVRocm93RXhj
ZXB0aW9uXSBhdHRyaWJ1dGUgQXVkaW9CdWZmZXI/IGJ1ZmZlcjsKICAgICBhdHRyaWJ1dGUgYm9v
bGVhbiBub3JtYWxpemU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9EZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9EZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCmluZGV4IDdj
ZWNjYmEzOTUwNTExODRiYTVkODk4NTI0ZWU0Y2QxNDBmYTZjMjIuLmIyNTQyZDMyNjNlZDBhOGUx
MjcxMzExODUwM2M2ZjZlNDA3Y2FhMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAK
QEAgLTI5LDcgKzI5LDcgQEAKICNpbmNsdWRlICJEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUu
aCIKIAogI2luY2x1ZGUgIkF1ZGlvQ29udGV4dC5oIgotI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUu
aCIKKyNpbmNsdWRlICJBdWRpb0Rlc3RpbmF0aW9uLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgog
I2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlIDx3dGYvTWFpblRo
cmVhZC5oPgpAQCAtNDAsNyArNDAsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCiBEZWZh
dWx0QXVkaW9EZXN0aW5hdGlvbk5vZGU6OkRlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZShBdWRp
b0NvbnRleHQmIGNvbnRleHQpCiAgICAgOiBBdWRpb0Rlc3RpbmF0aW9uTm9kZShjb250ZXh0LCBB
dWRpb0Rlc3RpbmF0aW9uOjpoYXJkd2FyZVNhbXBsZVJhdGUoKSkKLSAgICAsIG1fbnVtYmVyT2ZJ
bnB1dENoYW5uZWxzKDApCiB7CiAgICAgLy8gTm9kZS1zcGVjaWZpYyBkZWZhdWx0IG1peGluZyBy
dWxlcy4KICAgICBtX2NoYW5uZWxDb3VudCA9IDI7CkBAIC0xMzIsMTIgKzEzMSwxMiBAQCB2b2lk
IERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6Y2xvc2UoRnVuY3Rpb248dm9pZCgpPiYmIGZ1
bmN0aW9uKQogICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5wb3N0VGFzayhXVEZNb3Zl
KGZ1bmN0aW9uKSk7CiB9CiAKLXVuc2lnbmVkIGxvbmcgRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25O
b2RlOjptYXhDaGFubmVsQ291bnQoKSBjb25zdAordW5zaWduZWQgRGVmYXVsdEF1ZGlvRGVzdGlu
YXRpb25Ob2RlOjptYXhDaGFubmVsQ291bnQoKSBjb25zdAogewogICAgIHJldHVybiBBdWRpb0Rl
c3RpbmF0aW9uOjptYXhDaGFubmVsQ291bnQoKTsKIH0KIAotdm9pZCBEZWZhdWx0QXVkaW9EZXN0
aW5hdGlvbk5vZGU6OnNldENoYW5uZWxDb3VudCh1bnNpZ25lZCBsb25nIGNoYW5uZWxDb3VudCwg
RXhjZXB0aW9uQ29kZSYgZWMpCitFeGNlcHRpb25Pcjx2b2lkPiBEZWZhdWx0QXVkaW9EZXN0aW5h
dGlvbk5vZGU6OnNldENoYW5uZWxDb3VudCh1bnNpZ25lZCBjaGFubmVsQ291bnQpCiB7CiAgICAg
Ly8gVGhlIGNoYW5uZWxDb3VudCBmb3IgdGhlIGlucHV0IHRvIHRoaXMgbm9kZSBjb250cm9scyB0
aGUgYWN0dWFsIG51bWJlciBvZiBjaGFubmVscyB3ZQogICAgIC8vIHNlbmQgdG8gdGhlIGF1ZGlv
IGhhcmR3YXJlLiBJdCBjYW4gb25seSBiZSBzZXQgZGVwZW5kaW5nIG9uIHRoZSBtYXhpbXVtIG51
bWJlciBvZgpAQCAtMTQ1LDIwICsxNDQsMjIgQEAgdm9pZCBEZWZhdWx0QXVkaW9EZXN0aW5hdGlv
bk5vZGU6OnNldENoYW5uZWxDb3VudCh1bnNpZ25lZCBsb25nIGNoYW5uZWxDb3VudCwgRXgKIAog
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKLSAgICBpZiAoIW1heENoYW5uZWxDb3VudCgp
IHx8IGNoYW5uZWxDb3VudCA+IG1heENoYW5uZWxDb3VudCgpKSB7Ci0gICAgICAgIGVjID0gSU5W
QUxJRF9TVEFURV9FUlI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgaWYgKCFtYXhDaGFu
bmVsQ291bnQoKSB8fCBjaGFubmVsQ291bnQgPiBtYXhDaGFubmVsQ291bnQoKSkKKyAgICAgICAg
cmV0dXJuIEV4Y2VwdGlvbiB7IElOVkFMSURfU1RBVEVfRVJSIH07CiAKLSAgICB1bnNpZ25lZCBs
b25nIG9sZENoYW5uZWxDb3VudCA9IHRoaXMtPmNoYW5uZWxDb3VudCgpOwotICAgIEF1ZGlvTm9k
ZTo6c2V0Q2hhbm5lbENvdW50KGNoYW5uZWxDb3VudCwgZWMpOworICAgIGF1dG8gb2xkQ2hhbm5l
bENvdW50ID0gdGhpcy0+Y2hhbm5lbENvdW50KCk7CisgICAgYXV0byByZXN1bHQgPSBBdWRpb05v
ZGU6OnNldENoYW5uZWxDb3VudChjaGFubmVsQ291bnQpOworICAgIGlmIChyZXN1bHQuaGFzRXhj
ZXB0aW9uKCkpCisgICAgICAgIHJldHVybiByZXN1bHQ7CiAKLSAgICBpZiAoIWVjICYmIHRoaXMt
PmNoYW5uZWxDb3VudCgpICE9IG9sZENoYW5uZWxDb3VudCAmJiBpc0luaXRpYWxpemVkKCkpIHsK
KyAgICBpZiAodGhpcy0+Y2hhbm5lbENvdW50KCkgIT0gb2xkQ2hhbm5lbENvdW50ICYmIGlzSW5p
dGlhbGl6ZWQoKSkgewogICAgICAgICAvLyBSZS1jcmVhdGUgZGVzdGluYXRpb24uCiAgICAgICAg
IG1fZGVzdGluYXRpb24tPnN0b3AoKTsKICAgICAgICAgY3JlYXRlRGVzdGluYXRpb24oKTsKICAg
ICAgICAgbV9kZXN0aW5hdGlvbi0+c3RhcnQoKTsKICAgICB9CisKKyAgICByZXR1cm4geyB9Owog
fQogCiBib29sIERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6aXNQbGF5aW5nKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGlu
YXRpb25Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlZmF1bHRBdWRp
b0Rlc3RpbmF0aW9uTm9kZS5oCmluZGV4IDM1YTBkZjE2ZDM0NDdlZWFmNjlkYTk0YjU3YTE5ZmM1
MmVjMWYzOWEuLmQ4ZjZkNDc4YTk1YjQwYjYzZTVlMTAwNWIxYTllYThjYThkYzI4ODMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGlu
YXRpb25Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWZhdWx0
QXVkaW9EZXN0aW5hdGlvbk5vZGUuaApAQCAtMjIsMTggKzIyLDE1IEBACiAgKiBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwog
Ci0jaWZuZGVmIERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZV9oCi0jZGVmaW5lIERlZmF1bHRB
dWRpb0Rlc3RpbmF0aW9uTm9kZV9oCisjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkF1ZGlvRGVz
dGluYXRpb24uaCIKICNpbmNsdWRlICJBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oIgotI2luY2x1ZGUg
PG1lbW9yeT4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBBdWRpb0NvbnRleHQ7Citj
bGFzcyBBdWRpb0Rlc3RpbmF0aW9uOwogICAgIAotY2xhc3MgRGVmYXVsdEF1ZGlvRGVzdGluYXRp
b25Ob2RlIDogcHVibGljIEF1ZGlvRGVzdGluYXRpb25Ob2RlIHsKK2NsYXNzIERlZmF1bHRBdWRp
b0Rlc3RpbmF0aW9uTm9kZSBmaW5hbCA6IHB1YmxpYyBBdWRpb0Rlc3RpbmF0aW9uTm9kZSB7CiBw
dWJsaWM6CiAgICAgc3RhdGljIFJlZjxEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGU+IGNyZWF0
ZShBdWRpb0NvbnRleHQmIGNvbnRleHQpCiAgICAgewpAQCAtNDIsMjkgKzM5LDI1IEBAIHB1Ymxp
YzoKIAogICAgIHZpcnR1YWwgfkRlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZSgpOwogICAgIAot
ICAgIC8vIEF1ZGlvTm9kZSAgIAotICAgIHZvaWQgaW5pdGlhbGl6ZSgpIG92ZXJyaWRlOwotICAg
IHZvaWQgdW5pbml0aWFsaXplKCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzZXRDaGFubmVsQ291bnQo
dW5zaWduZWQgbG9uZywgRXhjZXB0aW9uQ29kZSYpIG92ZXJyaWRlOwotCi0gICAgLy8gQXVkaW9E
ZXN0aW5hdGlvbk5vZGUKLSAgICB2b2lkIGVuYWJsZUlucHV0KGNvbnN0IFN0cmluZyYgaW5wdXRE
ZXZpY2VJZCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzdGFydFJlbmRlcmluZygpIG92ZXJyaWRlOwot
ICAgIHZvaWQgcmVzdW1lKEZ1bmN0aW9uPHZvaWQgKCk+JiYpIG92ZXJyaWRlOwotICAgIHZvaWQg
c3VzcGVuZChGdW5jdGlvbjx2b2lkICgpPiYmKSBvdmVycmlkZTsKLSAgICB2b2lkIGNsb3NlKEZ1
bmN0aW9uPHZvaWQgKCk+JiYpIG92ZXJyaWRlOwotICAgIHVuc2lnbmVkIGxvbmcgbWF4Q2hhbm5l
bENvdW50KCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgYm9vbCBpc1BsYXlpbmcoKSBvdmVycmlkZTsK
LQogcHJpdmF0ZToKICAgICBleHBsaWNpdCBEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUoQXVk
aW9Db250ZXh0Jik7CiAgICAgdm9pZCBjcmVhdGVEZXN0aW5hdGlvbigpOwogCisgICAgdm9pZCBp
bml0aWFsaXplKCkgZmluYWw7CisgICAgdm9pZCB1bmluaXRpYWxpemUoKSBmaW5hbDsKKyAgICBF
eGNlcHRpb25Pcjx2b2lkPiBzZXRDaGFubmVsQ291bnQodW5zaWduZWQpIGZpbmFsOworCisgICAg
dm9pZCBlbmFibGVJbnB1dChjb25zdCBTdHJpbmcmIGlucHV0RGV2aWNlSWQpIGZpbmFsOworICAg
IHZvaWQgc3RhcnRSZW5kZXJpbmcoKSBmaW5hbDsKKyAgICB2b2lkIHJlc3VtZShGdW5jdGlvbjx2
b2lkICgpPiYmKSBmaW5hbDsKKyAgICB2b2lkIHN1c3BlbmQoRnVuY3Rpb248dm9pZCAoKT4mJikg
ZmluYWw7CisgICAgdm9pZCBjbG9zZShGdW5jdGlvbjx2b2lkICgpPiYmKSBmaW5hbDsKKyAgICB1
bnNpZ25lZCBtYXhDaGFubmVsQ291bnQoKSBjb25zdCBmaW5hbDsKKyAgICBib29sIGlzUGxheWlu
ZygpIGZpbmFsOworCiAgICAgc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRGVzdGluYXRpb24+IG1fZGVz
dGluYXRpb247CiAgICAgU3RyaW5nIG1faW5wdXREZXZpY2VJZDsKLSAgICB1bnNpZ25lZCBtX251
bWJlck9mSW5wdXRDaGFubmVsczsKKyAgICB1bnNpZ25lZCBtX251bWJlck9mSW5wdXRDaGFubmVs
cyB7IDAgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIERlZmF1
bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0RlbGF5Tm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0RlbGF5Tm9kZS5jcHAKaW5kZXggYjVjNjkyM2UxZmVmNTdmYWEzZDM4ZGZjNmE1Njk0NWRj
YTZhZDc4NS4uN2VhZTgwOTFjNzJmY2RiODYxNTYxM2U0MjZlMjNiYzUzODgxMzcwYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWxheU5vZGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVsYXlOb2RlLmNwcApAQCAtMjgsMjQg
KzI4LDI5IEBACiAKICNpbmNsdWRlICJEZWxheU5vZGUuaCIKIAorI2luY2x1ZGUgIkRlbGF5UHJv
Y2Vzc29yLmgiCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY29uc3QgZG91YmxlIG1heGltdW1B
bGxvd2VkRGVsYXlUaW1lID0gMTgwOwogCi1EZWxheU5vZGU6OkRlbGF5Tm9kZShBdWRpb0NvbnRl
eHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUsIGRvdWJsZSBtYXhEZWxheVRpbWUsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQoraW5saW5lIERlbGF5Tm9kZTo6RGVsYXlOb2RlKEF1ZGlvQ29udGV4dCYg
Y29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSwgZG91YmxlIG1heERlbGF5VGltZSkKICAgICA6IEF1
ZGlvQmFzaWNQcm9jZXNzb3JOb2RlKGNvbnRleHQsIHNhbXBsZVJhdGUpCiB7Ci0gICAgaWYgKG1h
eERlbGF5VGltZSA8PSAwIHx8IG1heERlbGF5VGltZSA+PSBtYXhpbXVtQWxsb3dlZERlbGF5VGlt
ZSkgewotICAgICAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQogICAgIG1fcHJvY2Vzc29yID0gc3RkOjptYWtlX3VuaXF1ZTxEZWxheVByb2Nlc3Nvcj4o
Y29udGV4dCwgc2FtcGxlUmF0ZSwgMSwgbWF4RGVsYXlUaW1lKTsKICAgICBzZXROb2RlVHlwZShO
b2RlVHlwZURlbGF5KTsKIH0KIAorRXhjZXB0aW9uT3I8UmVmPERlbGF5Tm9kZT4+IERlbGF5Tm9k
ZTo6Y3JlYXRlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSwgZG91Ymxl
IG1heERlbGF5VGltZSkKK3sKKyAgICBpZiAobWF4RGVsYXlUaW1lIDw9IDAgfHwgbWF4RGVsYXlU
aW1lID49IG1heGltdW1BbGxvd2VkRGVsYXlUaW1lKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9u
IHsgTk9UX1NVUFBPUlRFRF9FUlIgfTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEZWxheU5v
ZGUoY29udGV4dCwgc2FtcGxlUmF0ZSwgbWF4RGVsYXlUaW1lKSk7Cit9CisKIEF1ZGlvUGFyYW0q
IERlbGF5Tm9kZTo6ZGVsYXlUaW1lKCkKIHsKLSAgICByZXR1cm4gZGVsYXlQcm9jZXNzb3IoKS0+
ZGVsYXlUaW1lKCk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PERlbGF5UHJvY2Vzc29yJj4oKm1f
cHJvY2Vzc29yKS5kZWxheVRpbWUoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWxheU5vZGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVsYXlOb2RlLmgKaW5kZXggMzBkNDdjYmU3
ZWVhNmU5ZGVlMDQ3ZGI5YzZkNDExOTExMGY5YjQxMS4uMDZjYTlhN2E2ZjZlYjZkZTU3MTFjMGZh
ZWMxMDJlMTc1ZmQ1ZDk4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9EZWxheU5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0Rl
bGF5Tm9kZS5oCkBAIC0yMiwzMyArMjIsMjAgQEAKICAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgRGVs
YXlOb2RlX2gKLSNkZWZpbmUgRGVsYXlOb2RlX2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAi
QXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUuaCIKLSNpbmNsdWRlICJEZWxheVByb2Nlc3Nvci5oIgot
I2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKLSNpbmNsdWRlIDx3dGYvUmVmLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgQXVkaW9QYXJhbTsKLQogY2xhc3MgRGVsYXlOb2RlIDog
cHVibGljIEF1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVm
PERlbGF5Tm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0
ZSwgZG91YmxlIG1heERlbGF5VGltZSwgRXhjZXB0aW9uQ29kZSYgZWMpCi0gICAgewotICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEZWxheU5vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSwgbWF4
RGVsYXlUaW1lLCBlYykpOwotICAgIH0KKyAgICBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPERlbGF5
Tm9kZT4+IGNyZWF0ZShBdWRpb0NvbnRleHQmLCBmbG9hdCBzYW1wbGVSYXRlLCBkb3VibGUgbWF4
RGVsYXlUaW1lKTsKIAogICAgIEF1ZGlvUGFyYW0qIGRlbGF5VGltZSgpOwogCiBwcml2YXRlOgot
ICAgIERlbGF5Tm9kZShBdWRpb0NvbnRleHQmLCBmbG9hdCBzYW1wbGVSYXRlLCBkb3VibGUgbWF4
RGVsYXlUaW1lLCBFeGNlcHRpb25Db2RlJik7Ci0KLSAgICBEZWxheVByb2Nlc3NvciogZGVsYXlQ
cm9jZXNzb3IoKSB7IHJldHVybiBzdGF0aWNfY2FzdDxEZWxheVByb2Nlc3Nvcio+KHByb2Nlc3Nv
cigpKTsgfQorICAgIERlbGF5Tm9kZShBdWRpb0NvbnRleHQmLCBmbG9hdCBzYW1wbGVSYXRlLCBk
b3VibGUgbWF4RGVsYXlUaW1lKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2Vu
ZGlmIC8vIERlbGF5Tm9kZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9PZmZsaW5lQXVkaW9Db250ZXh0LmNwcAppbmRleCA4YTYxYWVhZTQxNTU5MDc3ZDlk
NGQyNTM2ZDhhNjE0NmE3MDk1NWZhLi5iYTVlNDlmYWUyZTlkY2VlMGM3MmY4ZDg1ZTk4ODY0YjA1
NjZiNjY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxp
bmVBdWRpb0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
T2ZmbGluZUF1ZGlvQ29udGV4dC5jcHAKQEAgLTI5LDM4ICsyOSwyNCBAQAogI2luY2x1ZGUgIk9m
ZmxpbmVBdWRpb0NvbnRleHQuaCIKIAogI2luY2x1ZGUgIkRvY3VtZW50LmgiCi0jaW5jbHVkZSAi
RXhjZXB0aW9uQ29kZS5oIgotI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWZQdHI8T2ZmbGluZUF1ZGlvQ29udGV4dD4gT2ZmbGlu
ZUF1ZGlvQ29udGV4dDo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIHVu
c2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIHNpemVfdCBudW1iZXJPZkZyYW1lcywgZmxvYXQgc2Ft
cGxlUmF0ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCi17Ci0gICAgLy8gRklYTUU6IGFkZCBzdXBwb3J0
IGZvciB3b3JrZXJzLgotICAgIGlmICghaXM8RG9jdW1lbnQ+KGNvbnRleHQpKSB7Ci0gICAgICAg
IGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0K
LQotICAgIERvY3VtZW50JiBkb2N1bWVudCA9IGRvd25jYXN0PERvY3VtZW50Pihjb250ZXh0KTsK
LQotICAgIGlmICghbnVtYmVyT2ZDaGFubmVscyB8fCBudW1iZXJPZkNoYW5uZWxzID4gMTAgfHwg
IW51bWJlck9mRnJhbWVzIHx8ICFpc1NhbXBsZVJhdGVSYW5nZUdvb2Qoc2FtcGxlUmF0ZSkpIHsK
LSAgICAgICAgZWMgPSBTWU5UQVhfRVJSOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9
Ci0KLSAgICBSZWZQdHI8T2ZmbGluZUF1ZGlvQ29udGV4dD4gYXVkaW9Db250ZXh0KGFkb3B0UmVm
KG5ldyBPZmZsaW5lQXVkaW9Db250ZXh0KGRvY3VtZW50LCBudW1iZXJPZkNoYW5uZWxzLCBudW1i
ZXJPZkZyYW1lcywgc2FtcGxlUmF0ZSkpKTsKLSAgICBhdWRpb0NvbnRleHQtPnN1c3BlbmRJZk5l
ZWRlZCgpOwotICAgIHJldHVybiBhdWRpb0NvbnRleHQ7Ci19Ci0KLU9mZmxpbmVBdWRpb0NvbnRl
eHQ6Ok9mZmxpbmVBdWRpb0NvbnRleHQoRG9jdW1lbnQmIGRvY3VtZW50LCB1bnNpZ25lZCBudW1i
ZXJPZkNoYW5uZWxzLCBzaXplX3QgbnVtYmVyT2ZGcmFtZXMsIGZsb2F0IHNhbXBsZVJhdGUpCitp
bmxpbmUgT2ZmbGluZUF1ZGlvQ29udGV4dDo6T2ZmbGluZUF1ZGlvQ29udGV4dChEb2N1bWVudCYg
ZG9jdW1lbnQsIHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIHNpemVfdCBudW1iZXJPZkZyYW1l
cywgZmxvYXQgc2FtcGxlUmF0ZSkKICAgICA6IEF1ZGlvQ29udGV4dChkb2N1bWVudCwgbnVtYmVy
T2ZDaGFubmVscywgbnVtYmVyT2ZGcmFtZXMsIHNhbXBsZVJhdGUpCiB7CiB9CiAKLU9mZmxpbmVB
dWRpb0NvbnRleHQ6On5PZmZsaW5lQXVkaW9Db250ZXh0KCkKK0V4Y2VwdGlvbk9yPFJlZjxPZmZs
aW5lQXVkaW9Db250ZXh0Pj4gT2ZmbGluZUF1ZGlvQ29udGV4dDo6Y3JlYXRlKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmIGNvbnRleHQsIHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIHNpemVfdCBu
dW1iZXJPZkZyYW1lcywgZmxvYXQgc2FtcGxlUmF0ZSkKIHsKKyAgICAvLyBGSVhNRTogQWRkIHN1
cHBvcnQgZm9yIHdvcmtlcnMuCisgICAgaWYgKCFpczxEb2N1bWVudD4oY29udGV4dCkpCisgICAg
ICAgIHJldHVybiBFeGNlcHRpb24geyBOT1RfU1VQUE9SVEVEX0VSUiB9OworICAgIGlmICghbnVt
YmVyT2ZDaGFubmVscyB8fCBudW1iZXJPZkNoYW5uZWxzID4gMTAgfHwgIW51bWJlck9mRnJhbWVz
IHx8ICFpc1NhbXBsZVJhdGVSYW5nZUdvb2Qoc2FtcGxlUmF0ZSkpCisgICAgICAgIHJldHVybiBF
eGNlcHRpb24geyBTWU5UQVhfRVJSIH07CisgICAgYXV0byBhdWRpb0NvbnRleHQgPSBhZG9wdFJl
ZigqbmV3IE9mZmxpbmVBdWRpb0NvbnRleHQoZG93bmNhc3Q8RG9jdW1lbnQ+KGNvbnRleHQpLCBu
dW1iZXJPZkNoYW5uZWxzLCBudW1iZXJPZkZyYW1lcywgc2FtcGxlUmF0ZSkpOworICAgIGF1ZGlv
Q29udGV4dC0+c3VzcGVuZElmTmVlZGVkKCk7CisgICAgcmV0dXJuIFdURk1vdmUoYXVkaW9Db250
ZXh0KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9Db250ZXh0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQuaAppbmRleCA4NDY2YjNh
ZTcyZWE1NjZjMjIxZjFhMzNkZWQ0Y2U3YTgyMDQ4M2I3Li41ZDJjMWQ0ZjliYmJjMGM2M2FlZmJk
MzZiYzg0NjljOTExM2U0YzQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQuaApAQCAtMjIsMjMgKzIyLDE4IEBACiAgKiBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KICAqLwogCi0jaWZuZGVmIE9mZmxpbmVBdWRpb0NvbnRleHRfaAotI2RlZmluZSBPZmZsaW5l
QXVkaW9Db250ZXh0X2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQXVkaW9Db250ZXh0Lmgi
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgT2ZmbGluZUF1ZGlvQ29udGV4dCA6IHB1
YmxpYyBBdWRpb0NvbnRleHQgeworY2xhc3MgT2ZmbGluZUF1ZGlvQ29udGV4dCBmaW5hbCA6IHB1
YmxpYyBBdWRpb0NvbnRleHQgewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8T2ZmbGluZUF1
ZGlvQ29udGV4dD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCB1bnNpZ25lZCBudW1i
ZXJPZkNoYW5uZWxzLCBzaXplX3QgbnVtYmVyT2ZGcmFtZXMsIGZsb2F0IHNhbXBsZVJhdGUsIEV4
Y2VwdGlvbkNvZGUmKTsKLQotICAgIHZpcnR1YWwgfk9mZmxpbmVBdWRpb0NvbnRleHQoKTsKKyAg
ICBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPE9mZmxpbmVBdWRpb0NvbnRleHQ+PiBjcmVhdGUoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYsIHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIHNpemVfdCBu
dW1iZXJPZkZyYW1lcywgZmxvYXQgc2FtcGxlUmF0ZSk7CiAKIHByaXZhdGU6CiAgICAgT2ZmbGlu
ZUF1ZGlvQ29udGV4dChEb2N1bWVudCYsIHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIHNpemVf
dCBudW1iZXJPZkZyYW1lcywgZmxvYXQgc2FtcGxlUmF0ZSk7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBPZmZsaW5lQXVkaW9Db250ZXh0X2gKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29udGV4dC5pZGwg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQuaWRs
CmluZGV4IDc1ZjkzODAyOGIwMjkwNWQ0ODY0NTQ3NzRhOTA0MDFkNjYyMTZlMzAuLmM2ZTBkNzRm
MDJmMDM5NWQzZGU3Y2Q3MmRiNzIwM2NjYWY3ZDU1NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29udGV4dC5pZGwKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9Db250ZXh0LmlkbApAQCAtMjYs
OSArMjYsOCBAQAogICAgIENvbmRpdGlvbmFsPVdFQl9BVURJTywKICAgICBKU0dlbmVyYXRlVG9K
U09iamVjdCwKICAgICBDb25zdHJ1Y3Rvcih1bnNpZ25lZCBsb25nIG51bWJlck9mQ2hhbm5lbHMs
IHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZGcmFtZXMsIHVucmVzdHJpY3RlZCBmbG9hdCBzYW1wbGVS
YXRlKSwKLSAgICBDb25zdHJ1Y3Rvck1heVRocm93TGVnYWN5RXhjZXB0aW9uLAorICAgIENvbnN0
cnVjdG9yTWF5VGhyb3dFeGNlcHRpb24sCiAgICAgQ29uc3RydWN0b3JDYWxsV2l0aD1TY3JpcHRF
eGVjdXRpb25Db250ZXh0LAogICAgIEludGVyZmFjZU5hbWU9d2Via2l0T2ZmbGluZUF1ZGlvQ29u
dGV4dAogXSBpbnRlcmZhY2UgT2ZmbGluZUF1ZGlvQ29udGV4dCA6IEF1ZGlvQ29udGV4dCB7Ci0K
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVB
dWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L09mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKaW5kZXggOGQ0YWU0ODJkNzVjNDg4OWFk
N2M2NzFlZWUyYzdkNTEwOTdkMmI1Mi4uNTA1MjMwNDE5N2NkZWRkZTQ3ZmRjYmI5MTJlYzQ3NDA1
NTc5NzQyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9PZmZs
aW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcApAQCAtMTMxLDcgKzEzMSw3
IEBAIHZvaWQgT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlOjpvZmZsaW5lUmVuZGVyKCkKICAg
ICAgICAgCiAgICAgICAgIGZvciAodW5zaWduZWQgY2hhbm5lbEluZGV4ID0gMDsgY2hhbm5lbElu
ZGV4IDwgbnVtYmVyT2ZDaGFubmVsczsgKytjaGFubmVsSW5kZXgpIHsKICAgICAgICAgICAgIGNv
bnN0IGZsb2F0KiBzb3VyY2UgPSBtX3JlbmRlckJ1cy0+Y2hhbm5lbChjaGFubmVsSW5kZXgpLT5k
YXRhKCk7Ci0gICAgICAgICAgICBmbG9hdCogZGVzdGluYXRpb24gPSBtX3JlbmRlclRhcmdldC0+
Z2V0Q2hhbm5lbERhdGEoY2hhbm5lbEluZGV4KS0+ZGF0YSgpOworICAgICAgICAgICAgZmxvYXQq
IGRlc3RpbmF0aW9uID0gbV9yZW5kZXJUYXJnZXQtPmNoYW5uZWxEYXRhKGNoYW5uZWxJbmRleCkt
PmRhdGEoKTsKICAgICAgICAgICAgIG1lbWNweShkZXN0aW5hdGlvbiArIG4sIHNvdXJjZSwgc2l6
ZW9mKGZsb2F0KSAqIGZyYW1lc0F2YWlsYWJsZVRvQ29weSk7CiAgICAgICAgIH0KICAgICAgICAg
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09zY2lsbGF0b3JO
b2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5vZGUu
Y3BwCmluZGV4IDQ2MzVmNzU4ZTliYmZkNjZmYTc1NDMyMzU4NTllYjIwOTZjYzQ0MWIuLmQzOGY5
ZjNjNmRmMTY3YzcxMDVjN2U2ODQ2YjY1NTliNjBhZDUxZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5vZGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5vZGUuY3BwCkBAIC0yOCwxNSArMjgs
MTAgQEAKIAogI2luY2x1ZGUgIk9zY2lsbGF0b3JOb2RlLmgiCiAKLSNpbmNsdWRlICJBdWRpb0Nv
bnRleHQuaCIKICNpbmNsdWRlICJBdWRpb05vZGVPdXRwdXQuaCIKLSNpbmNsdWRlICJBdWRpb1V0
aWxpdGllcy5oIgotI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKLSNpbmNsdWRlICJFeGNlcHRp
b25Db2RlUGxhY2Vob2xkZXIuaCIKKyNpbmNsdWRlICJBdWRpb1BhcmFtLmgiCiAjaW5jbHVkZSAi
UGVyaW9kaWNXYXZlLmgiCiAjaW5jbHVkZSAiVmVjdG9yTWF0aC5oIgotI2luY2x1ZGUgPGFsZ29y
aXRobT4KLSNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKQEAgLTY3LDcgKzYyLDcgQEAgT3NjaWxsYXRvck5vZGU6Ok9zY2lsbGF0b3JOb2RlKEF1ZGlv
Q29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKICAgICBtX2RldHVuZSA9IEF1ZGlv
UGFyYW06OmNyZWF0ZShjb250ZXh0LCAiZGV0dW5lIiwgMCwgLTQ4MDAsIDQ4MDApOwogCiAgICAg
Ly8gU2V0cyB1cCBkZWZhdWx0IHdhdmUuCi0gICAgc2V0VHlwZShtX3R5cGUsIEFTU0VSVF9OT19F
WENFUFRJT04pOworICAgIHNldFR5cGUobV90eXBlKTsKIAogICAgIC8vIEFuIG9zY2lsbGF0b3Ig
aXMgYWx3YXlzIG1vbm8uCiAgICAgYWRkT3V0cHV0KHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9Ob2Rl
T3V0cHV0Pih0aGlzLCAxKSk7CkBAIC04MCw0MCArNzUsNDEgQEAgT3NjaWxsYXRvck5vZGU6On5P
c2NpbGxhdG9yTm9kZSgpCiAgICAgdW5pbml0aWFsaXplKCk7CiB9CiAKLXZvaWQgT3NjaWxsYXRv
ck5vZGU6OnNldFR5cGUoVHlwZSB0eXBlLCBFeGNlcHRpb25Db2RlJiBlYykKK0V4Y2VwdGlvbk9y
PHZvaWQ+IE9zY2lsbGF0b3JOb2RlOjpzZXRUeXBlKFR5cGUgdHlwZSkKIHsKICAgICBQZXJpb2Rp
Y1dhdmUqIHBlcmlvZGljV2F2ZSA9IG51bGxwdHI7Ci0gICAgZmxvYXQgc2FtcGxlUmF0ZSA9IHRo
aXMtPnNhbXBsZVJhdGUoKTsKIAogICAgIHN3aXRjaCAodHlwZSkgewogICAgIGNhc2UgVHlwZTo6
U2luZToKICAgICAgICAgaWYgKCFzX3BlcmlvZGljV2F2ZVNpbmUpCi0gICAgICAgICAgICBzX3Bl
cmlvZGljV2F2ZVNpbmUgPSAmUGVyaW9kaWNXYXZlOjpjcmVhdGVTaW5lKHNhbXBsZVJhdGUpLmxl
YWtSZWYoKTsKKyAgICAgICAgICAgIHNfcGVyaW9kaWNXYXZlU2luZSA9ICZQZXJpb2RpY1dhdmU6
OmNyZWF0ZVNpbmUoc2FtcGxlUmF0ZSgpKS5sZWFrUmVmKCk7CiAgICAgICAgIHBlcmlvZGljV2F2
ZSA9IHNfcGVyaW9kaWNXYXZlU2luZTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBUeXBlOjpT
cXVhcmU6CiAgICAgICAgIGlmICghc19wZXJpb2RpY1dhdmVTcXVhcmUpCi0gICAgICAgICAgICBz
X3BlcmlvZGljV2F2ZVNxdWFyZSA9ICZQZXJpb2RpY1dhdmU6OmNyZWF0ZVNxdWFyZShzYW1wbGVS
YXRlKS5sZWFrUmVmKCk7CisgICAgICAgICAgICBzX3BlcmlvZGljV2F2ZVNxdWFyZSA9ICZQZXJp
b2RpY1dhdmU6OmNyZWF0ZVNxdWFyZShzYW1wbGVSYXRlKCkpLmxlYWtSZWYoKTsKICAgICAgICAg
cGVyaW9kaWNXYXZlID0gc19wZXJpb2RpY1dhdmVTcXVhcmU7CiAgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgVHlwZTo6U2F3dG9vdGg6CiAgICAgICAgIGlmICghc19wZXJpb2RpY1dhdmVTYXd0b290
aCkKLSAgICAgICAgICAgIHNfcGVyaW9kaWNXYXZlU2F3dG9vdGggPSAmUGVyaW9kaWNXYXZlOjpj
cmVhdGVTYXd0b290aChzYW1wbGVSYXRlKS5sZWFrUmVmKCk7CisgICAgICAgICAgICBzX3Blcmlv
ZGljV2F2ZVNhd3Rvb3RoID0gJlBlcmlvZGljV2F2ZTo6Y3JlYXRlU2F3dG9vdGgoc2FtcGxlUmF0
ZSgpKS5sZWFrUmVmKCk7CiAgICAgICAgIHBlcmlvZGljV2F2ZSA9IHNfcGVyaW9kaWNXYXZlU2F3
dG9vdGg7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgVHlwZTo6VHJpYW5nbGU6CiAgICAgICAg
IGlmICghc19wZXJpb2RpY1dhdmVUcmlhbmdsZSkKLSAgICAgICAgICAgIHNfcGVyaW9kaWNXYXZl
VHJpYW5nbGUgPSAmUGVyaW9kaWNXYXZlOjpjcmVhdGVUcmlhbmdsZShzYW1wbGVSYXRlKS5sZWFr
UmVmKCk7CisgICAgICAgICAgICBzX3BlcmlvZGljV2F2ZVRyaWFuZ2xlID0gJlBlcmlvZGljV2F2
ZTo6Y3JlYXRlVHJpYW5nbGUoc2FtcGxlUmF0ZSgpKS5sZWFrUmVmKCk7CiAgICAgICAgIHBlcmlv
ZGljV2F2ZSA9IHNfcGVyaW9kaWNXYXZlVHJpYW5nbGU7CiAgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgVHlwZTo6Q3VzdG9tOgogICAgICAgICBpZiAobV90eXBlICE9IFR5cGU6OkN1c3RvbSkKLSAg
ICAgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7Ci0gICAgICAgIHJldHVybjsKKyAgICAg
ICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJTlZBTElEX1NUQVRFX0VSUiB9OworICAgICAgICBy
ZXR1cm4geyB9OwogICAgIH0KIAogICAgIHNldFBlcmlvZGljV2F2ZShwZXJpb2RpY1dhdmUpOwog
ICAgIG1fdHlwZSA9IHR5cGU7CisKKyAgICByZXR1cm4geyB9OwogfQogCiBib29sIE9zY2lsbGF0
b3JOb2RlOjpjYWxjdWxhdGVTYW1wbGVBY2N1cmF0ZVBoYXNlSW5jcmVtZW50cyhzaXplX3QgZnJh
bWVzVG9Qcm9jZXNzKQpAQCAtMTg0LDEwICsxODAsMTAgQEAgYm9vbCBPc2NpbGxhdG9yTm9kZTo6
Y2FsY3VsYXRlU2FtcGxlQWNjdXJhdGVQaGFzZUluY3JlbWVudHMoc2l6ZV90IGZyYW1lc1RvUHJv
Y2UKIAogdm9pZCBPc2NpbGxhdG9yTm9kZTo6cHJvY2VzcyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNz
KQogewotICAgIEF1ZGlvQnVzKiBvdXRwdXRCdXMgPSBvdXRwdXQoMCktPmJ1cygpOworICAgIGF1
dG8mIG91dHB1dEJ1cyA9ICpvdXRwdXQoMCktPmJ1cygpOwogCi0gICAgaWYgKCFpc0luaXRpYWxp
emVkKCkgfHwgIW91dHB1dEJ1cy0+bnVtYmVyT2ZDaGFubmVscygpKSB7Ci0gICAgICAgIG91dHB1
dEJ1cy0+emVybygpOworICAgIGlmICghaXNJbml0aWFsaXplZCgpIHx8ICFvdXRwdXRCdXMubnVt
YmVyT2ZDaGFubmVscygpKSB7CisgICAgICAgIG91dHB1dEJ1cy56ZXJvKCk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKQEAgLTE5OSwzMCArMTk1LDI5IEBAIHZvaWQgT3NjaWxsYXRvck5vZGU6
OnByb2Nlc3Moc2l6ZV90IGZyYW1lc1RvUHJvY2VzcykKICAgICBzdGQ6OnVuaXF1ZV9sb2NrPExv
Y2s+IGxvY2sobV9wcm9jZXNzTXV0ZXgsIHN0ZDo6dHJ5X3RvX2xvY2spOwogICAgIGlmICghbG9j
ay5vd25zX2xvY2soKSkgewogICAgICAgICAvLyBUb28gYmFkIC0gdGhlIHRyeV9sb2NrKCkgZmFp
bGVkLiBXZSBtdXN0IGJlIGluIHRoZSBtaWRkbGUgb2YgY2hhbmdpbmcgd2F2ZS10YWJsZXMuCi0g
ICAgICAgIG91dHB1dEJ1cy0+emVybygpOworICAgICAgICBvdXRwdXRCdXMuemVybygpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCiAgICAgLy8gV2UgbXVzdCBhY2Nlc3MgbV9wZXJpb2RpY1dh
dmUgb25seSBpbnNpZGUgdGhlIGxvY2suCiAgICAgaWYgKCFtX3BlcmlvZGljV2F2ZS5nZXQoKSkg
ewotICAgICAgICBvdXRwdXRCdXMtPnplcm8oKTsKKyAgICAgICAgb3V0cHV0QnVzLnplcm8oKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIHNpemVfdCBxdWFudHVtRnJhbWVPZmZzZXQ7
CiAgICAgc2l6ZV90IG5vblNpbGVudEZyYW1lc1RvUHJvY2VzczsKLQogICAgIHVwZGF0ZVNjaGVk
dWxpbmdJbmZvKGZyYW1lc1RvUHJvY2Vzcywgb3V0cHV0QnVzLCBxdWFudHVtRnJhbWVPZmZzZXQs
IG5vblNpbGVudEZyYW1lc1RvUHJvY2Vzcyk7CiAKICAgICBpZiAoIW5vblNpbGVudEZyYW1lc1Rv
UHJvY2VzcykgewotICAgICAgICBvdXRwdXRCdXMtPnplcm8oKTsKKyAgICAgICAgb3V0cHV0QnVz
Lnplcm8oKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIHVuc2lnbmVkIHBlcmlvZGlj
V2F2ZVNpemUgPSBtX3BlcmlvZGljV2F2ZS0+cGVyaW9kaWNXYXZlU2l6ZSgpOwogICAgIGRvdWJs
ZSBpbnZQZXJpb2RpY1dhdmVTaXplID0gMS4wIC8gcGVyaW9kaWNXYXZlU2l6ZTsKIAotICAgIGZs
b2F0KiBkZXN0UCA9IG91dHB1dEJ1cy0+Y2hhbm5lbCgwKS0+bXV0YWJsZURhdGEoKTsKKyAgICBm
bG9hdCogZGVzdFAgPSBvdXRwdXRCdXMuY2hhbm5lbCgwKS0+bXV0YWJsZURhdGEoKTsKIAogICAg
IEFTU0VSVChxdWFudHVtRnJhbWVPZmZzZXQgPD0gZnJhbWVzVG9Qcm9jZXNzKTsKIApAQCAtMjky
LDcgKzI4Nyw3IEBAIHZvaWQgT3NjaWxsYXRvck5vZGU6OnByb2Nlc3Moc2l6ZV90IGZyYW1lc1Rv
UHJvY2VzcykKIAogICAgIG1fdmlydHVhbFJlYWRJbmRleCA9IHZpcnR1YWxSZWFkSW5kZXg7CiAK
LSAgICBvdXRwdXRCdXMtPmNsZWFyU2lsZW50RmxhZygpOworICAgIG91dHB1dEJ1cy5jbGVhclNp
bGVudEZsYWcoKTsKIH0KIAogdm9pZCBPc2NpbGxhdG9yTm9kZTo6cmVzZXQoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Pc2NpbGxhdG9yTm9kZS5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Pc2NpbGxhdG9yTm9kZS5oCmluZGV4IDkwZTFh
Mzg0ODYwOTNmNjc0YjZiYmNiZjBjMzZlYTE1Mjk1NGJlNmQuLjc5MGYwMTUwNzYzYjNlMjIyYzQw
MDRmZDYxZTBjY2I1Mjc3ZDcwZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vT3NjaWxsYXRvck5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL09zY2lsbGF0b3JOb2RlLmgKQEAgLTIyLDIzICsyMiwxOCBAQAogICogU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8K
IAotI2lmbmRlZiBPc2NpbGxhdG9yTm9kZV9oCi0jZGVmaW5lIE9zY2lsbGF0b3JOb2RlX2gKKyNw
cmFnbWEgb25jZQogCi0jaW5jbHVkZSAiQXVkaW9CdXMuaCIKLSNpbmNsdWRlICJBdWRpb1BhcmFt
LmgiCiAjaW5jbHVkZSAiQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmgiCiAjaW5jbHVkZSA8d3Rm
L0xvY2suaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotY2xhc3MgQXVkaW9Db250ZXh0OwogY2xhc3MgUGVyaW9kaWNXYXZlOwogCiAvLyBPc2NpbGxh
dG9yTm9kZSBpcyBhbiBhdWRpbyBnZW5lcmF0b3Igb2YgcGVyaW9kaWMgd2F2ZWZvcm1zLgogCi1j
bGFzcyBPc2NpbGxhdG9yTm9kZSA6IHB1YmxpYyBBdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUgewor
Y2xhc3MgT3NjaWxsYXRvck5vZGUgZmluYWwgOiBwdWJsaWMgQXVkaW9TY2hlZHVsZWRTb3VyY2VO
b2RlIHsKIHB1YmxpYzoKICAgICAvLyBUaGUgd2F2ZWZvcm0gdHlwZS4KICAgICBlbnVtIGNsYXNz
IFR5cGUgewpAQCAtNTIsMTMgKzQ3LDkgQEAgcHVibGljOgogICAgIHN0YXRpYyBSZWY8T3NjaWxs
YXRvck5vZGU+IGNyZWF0ZShBdWRpb0NvbnRleHQmLCBmbG9hdCBzYW1wbGVSYXRlKTsKIAogICAg
IHZpcnR1YWwgfk9zY2lsbGF0b3JOb2RlKCk7Ci0gICAgCi0gICAgLy8gQXVkaW9Ob2RlCi0gICAg
dm9pZCBwcm9jZXNzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpIG92ZXJyaWRlOwotICAgIHZvaWQg
cmVzZXQoKSBvdmVycmlkZTsKIAogICAgIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlw
ZTsgfQotICAgIHZvaWQgc2V0VHlwZShUeXBlLCBFeGNlcHRpb25Db2RlJik7CisgICAgRXhjZXB0
aW9uT3I8dm9pZD4gc2V0VHlwZShUeXBlKTsKIAogICAgIEF1ZGlvUGFyYW0qIGZyZXF1ZW5jeSgp
IHsgcmV0dXJuIG1fZnJlcXVlbmN5LmdldCgpOyB9CiAgICAgQXVkaW9QYXJhbSogZGV0dW5lKCkg
eyByZXR1cm4gbV9kZXR1bmUuZ2V0KCk7IH0KQEAgLTY4LDEzICs1OSwxNiBAQCBwdWJsaWM6CiBw
cml2YXRlOgogICAgIE9zY2lsbGF0b3JOb2RlKEF1ZGlvQ29udGV4dCYsIGZsb2F0IHNhbXBsZVJh
dGUpOwogCi0gICAgZG91YmxlIHRhaWxUaW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gMDsg
fQotICAgIGRvdWJsZSBsYXRlbmN5VGltZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0K
KyAgICB2b2lkIHByb2Nlc3Moc2l6ZV90IGZyYW1lc1RvUHJvY2VzcykgZmluYWw7CisgICAgdm9p
ZCByZXNldCgpIGZpbmFsOworCisgICAgZG91YmxlIHRhaWxUaW1lKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gMDsgfQorICAgIGRvdWJsZSBsYXRlbmN5VGltZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IDA7IH0KIAogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGVyZSBhcmUgc2FtcGxlLWFjY3VyYXRl
IHRpbWVsaW5lIHBhcmFtZXRlciBjaGFuZ2VzLgogICAgIGJvb2wgY2FsY3VsYXRlU2FtcGxlQWNj
dXJhdGVQaGFzZUluY3JlbWVudHMoc2l6ZV90IGZyYW1lc1RvUHJvY2Vzcyk7CiAKLSAgICBib29s
IHByb3BhZ2F0ZXNTaWxlbmNlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBwcm9wYWdhdGVz
U2lsZW5jZSgpIGNvbnN0IGZpbmFsOwogCiAgICAgLy8gT25lIG9mIHRoZSB3YXZlZm9ybSB0eXBl
cyBkZWZpbmVkIGluIHRoZSBlbnVtLgogICAgIFR5cGUgbV90eXBlIHsgVHlwZTo6U2luZSB9OwpA
QCAtMTA4LDUgKzEwMiwzIEBAIHByaXZhdGU6CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
Ci0KLSNlbmRpZiAvLyBPc2NpbGxhdG9yTm9kZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL09zY2lsbGF0b3JOb2RlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5vZGUuaWRsCmluZGV4IDI2M2FjN2MxNTQ2ZTA3MTY0
NjM5NzJlZjNkNDU5ZmI3YTAxNzMyNTcuLmI1ZWRjMTBhNDQyOTA1M2M3OWEyNmEwMTE5NTVhYzcx
YTAwMDRmYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT3Nj
aWxsYXRvck5vZGUuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT3Nj
aWxsYXRvck5vZGUuaWRsCkBAIC0zNSw3ICszNSw3IEBAIGVudW0gT3NjaWxsYXRvclR5cGUgewog
ICAgIENvbmRpdGlvbmFsPVdFQl9BVURJTywKICAgICBKU0dlbmVyYXRlVG9KU09iamVjdCwKIF0g
aW50ZXJmYWNlIE9zY2lsbGF0b3JOb2RlIDogQXVkaW9Ob2RlIHsKLSAgICBbU2V0dGVyTWF5VGhy
b3dMZWdhY3lFeGNlcHRpb25dIGF0dHJpYnV0ZSBPc2NpbGxhdG9yVHlwZSB0eXBlOworICAgIFtT
ZXR0ZXJNYXlUaHJvd0V4Y2VwdGlvbl0gYXR0cmlidXRlIE9zY2lsbGF0b3JUeXBlIHR5cGU7CiAK
ICAgICAvLyBQbGF5YmFjayBzdGF0ZSBjb25zdGFudHMuCiAgICAgY29uc3QgdW5zaWduZWQgc2hv
cnQgVU5TQ0hFRFVMRURfU1RBVEUgPSAwOwpAQCAtNDgsOCArNDgsOCBAQCBlbnVtIE9zY2lsbGF0
b3JUeXBlIHsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgQXVkaW9QYXJhbSBmcmVxdWVuY3k7IC8v
IGluIEhlcnR6CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIEF1ZGlvUGFyYW0gZGV0dW5lOyAvLyBp
biBDZW50cwogCi0gICAgW01heVRocm93TGVnYWN5RXhjZXB0aW9uXSB2b2lkIHN0YXJ0KG9wdGlv
bmFsIHVucmVzdHJpY3RlZCBkb3VibGUgd2hlbiA9IDApOwotICAgIFtNYXlUaHJvd0xlZ2FjeUV4
Y2VwdGlvbl0gdm9pZCBzdG9wKG9wdGlvbmFsIHVucmVzdHJpY3RlZCBkb3VibGUgd2hlbiA9IDAp
OworICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBzdGFydChvcHRpb25hbCB1bnJlc3RyaWN0
ZWQgZG91YmxlIHdoZW4gPSAwKTsKKyAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgc3RvcChv
cHRpb25hbCB1bnJlc3RyaWN0ZWQgZG91YmxlIHdoZW4gPSAwKTsKIAogICAgIHZvaWQgc2V0UGVy
aW9kaWNXYXZlKFBlcmlvZGljV2F2ZT8gd2F2ZSk7IC8vIEZJWE1FOiBUaGUgcGFyYW1ldGVyIHNo
b3VsZCBub3QgYmUgbnVsbGFibGUuCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuY3BwCmluZGV4IGJhNDhiYzcwYTBhZGQ1
ZWNiMGJmMjE5MWUxNmJkYjU0MDlmN2Q2NjUuLjFjZTE0MzVlMDFhYTQ4ODAxOGI5Y2U3MzEwYmMx
ZTA1YzE0MGQyOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
U2NyaXB0UHJvY2Vzc29yTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmNwcApAQCAtMTgzLDE0ICsxODMsMTQgQEAgdm9pZCBT
Y3JpcHRQcm9jZXNzb3JOb2RlOjpwcm9jZXNzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1iZXJPZklucHV0
Q2hhbm5lbHM7IGkrKykKLSAgICAgICAgbV9pbnRlcm5hbElucHV0QnVzLT5zZXRDaGFubmVsTWVt
b3J5KGksIGlucHV0QnVmZmVyLT5nZXRDaGFubmVsRGF0YShpKS0+ZGF0YSgpICsgbV9idWZmZXJS
ZWFkV3JpdGVJbmRleCwgZnJhbWVzVG9Qcm9jZXNzKTsKKyAgICAgICAgbV9pbnRlcm5hbElucHV0
QnVzLT5zZXRDaGFubmVsTWVtb3J5KGksIGlucHV0QnVmZmVyLT5jaGFubmVsRGF0YShpKS0+ZGF0
YSgpICsgbV9idWZmZXJSZWFkV3JpdGVJbmRleCwgZnJhbWVzVG9Qcm9jZXNzKTsKIAogICAgIGlm
IChudW1iZXJPZklucHV0Q2hhbm5lbHMpCiAgICAgICAgIG1faW50ZXJuYWxJbnB1dEJ1cy0+Y29w
eUZyb20oKmlucHV0QnVzKTsKIAogICAgIC8vIENvcHkgZnJvbSB0aGUgb3V0cHV0IGJ1ZmZlciB0
byB0aGUgb3V0cHV0LiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZPdXRw
dXRDaGFubmVsczsgKytpKQotICAgICAgICBtZW1jcHkob3V0cHV0QnVzLT5jaGFubmVsKGkpLT5t
dXRhYmxlRGF0YSgpLCBvdXRwdXRCdWZmZXItPmdldENoYW5uZWxEYXRhKGkpLT5kYXRhKCkgKyBt
X2J1ZmZlclJlYWRXcml0ZUluZGV4LCBzaXplb2YoZmxvYXQpICogZnJhbWVzVG9Qcm9jZXNzKTsK
KyAgICAgICAgbWVtY3B5KG91dHB1dEJ1cy0+Y2hhbm5lbChpKS0+bXV0YWJsZURhdGEoKSwgb3V0
cHV0QnVmZmVyLT5jaGFubmVsRGF0YShpKS0+ZGF0YSgpICsgbV9idWZmZXJSZWFkV3JpdGVJbmRl
eCwgc2l6ZW9mKGZsb2F0KSAqIGZyYW1lc1RvUHJvY2Vzcyk7CiAKICAgICAvLyBVcGRhdGUgdGhl
IGJ1ZmZlcmluZyBpbmRleC4KICAgICBtX2J1ZmZlclJlYWRXcml0ZUluZGV4ID0gKG1fYnVmZmVy
UmVhZFdyaXRlSW5kZXggKyBmcmFtZXNUb1Byb2Nlc3MpICUgYnVmZmVyU2l6ZSgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmggYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaAppbmRleCA3NTQ2YzQ5MjlmNTNlMWM4
OTUwM2IzMDQxMzQzYzRjOGI4M2IwZWQ0Li43YTk4OGM1OTdhNjRjOWY4ODJkZmY2NGQ1ZmQ0ZGUy
NzNkYTI4YTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJp
bmRpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaApA
QCAtMjYzLDggKzI2Myw5IEBAIGRvdWJsZSB2YWx1ZVRvRGF0ZShKU0M6OkV4ZWNTdGF0ZSosIEpT
Qzo6SlNWYWx1ZSk7CiAvLyBWYWxpZGF0ZXMgdGhhdCB0aGUgcGFzc2VkIG9iamVjdCBpcyBhIHNl
cXVlbmNlIHR5cGUgcGVyIHNlY3Rpb24gNC4xLjEzIG9mIHRoZSBXZWJJREwgc3BlYy4KIEpTQzo6
SlNPYmplY3QqIHRvSlNTZXF1ZW5jZShKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSwgdW5z
aWduZWQmIGxlbmd0aCk7CiAKK0pTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiwgSlNE
T01HbG9iYWxPYmplY3QqLCBKU0M6OkFycmF5QnVmZmVyJik7CitKU0M6OkpTVmFsdWUgdG9KUyhK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkFycmF5QnVmZmVyVmll
dyYpOwogSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVj
dCosIEpTQzo6QXJyYXlCdWZmZXIqKTsKLUpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRl
KiwgSlNET01HbG9iYWxPYmplY3QqLCBKU0M6OkFycmF5QnVmZmVyVmlldyopOwogSlNDOjpKU1Zh
bHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpBcnJh
eUJ1ZmZlclZpZXcqKTsKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IEpTQzo6SlNWYWx1ZSB0b0pTKEpT
Qzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqLCBSZWY8VD4mJik7CiB0ZW1wbGF0ZTx0
eXBlbmFtZSBUPiBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFs
T2JqZWN0KiwgUmVmUHRyPFQ+JiYpOwpAQCAtNTkxLDI5ICs1OTIsMzIgQEAgaW5saW5lIEpTQzo6
SlNPYmplY3QqIHRvSlNTZXF1ZW5jZShKU0M6OkV4ZWNTdGF0ZSYgZXhlYywgSlNDOjpKU1ZhbHVl
IHZhbHVlLCB1bnMKICAgICByZXR1cm4gb2JqZWN0OwogfQogCi1pbmxpbmUgSlNDOjpKU1ZhbHVl
IHRvSlMoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTQzo6QXJyYXlCdWZmZXIqIGJ1ZmZlcikKK2lubGluZSBKU0M6OkpTVmFsdWUgdG9KUyhK
U0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
Qzo6QXJyYXlCdWZmZXImIGJ1ZmZlcikKIHsKLSAgICBpZiAoIWJ1ZmZlcikKLSAgICAgICAgcmV0
dXJuIEpTQzo6anNOdWxsKCk7Ci0gICAgaWYgKEpTQzo6SlNWYWx1ZSByZXN1bHQgPSBnZXRDYWNo
ZWRXcmFwcGVyKGdsb2JhbE9iamVjdC0+d29ybGQoKSwgKmJ1ZmZlcikpCisgICAgaWYgKGF1dG8g
cmVzdWx0ID0gZ2V0Q2FjaGVkV3JhcHBlcihnbG9iYWxPYmplY3QtPndvcmxkKCksIGJ1ZmZlcikp
CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAKICAgICAvLyBUaGUgSlNBcnJheUJ1ZmZlcjo6Y3Jl
YXRlIGZ1bmN0aW9uIHdpbGwgcmVnaXN0ZXIgdGhlIHdyYXBwZXIgaW4gZmluaXNoQ3JlYXRpb24u
Ci0gICAgcmV0dXJuIEpTQzo6SlNBcnJheUJ1ZmZlcjo6Y3JlYXRlKGV4ZWMtPnZtKCksIGdsb2Jh
bE9iamVjdC0+YXJyYXlCdWZmZXJTdHJ1Y3R1cmUoKSwgYnVmZmVyKTsKKyAgICByZXR1cm4gSlND
OjpKU0FycmF5QnVmZmVyOjpjcmVhdGUoc3RhdGUtPnZtKCksIGdsb2JhbE9iamVjdC0+YXJyYXlC
dWZmZXJTdHJ1Y3R1cmUoKSwgJmJ1ZmZlcik7CiB9CiAKLWlubGluZSBKU0M6OkpTVmFsdWUgdG9K
UyhKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNDOjpBcnJheUJ1ZmZlclZpZXcqIHZpZXcpCitpbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlMoSlND
OjpFeGVjU3RhdGUqIHN0YXRlLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
Qzo6QXJyYXlCdWZmZXJWaWV3JiB2aWV3KQogewotICAgIGlmICghdmlldykKKyAgICByZXR1cm4g
dmlldy53cmFwKHN0YXRlLCBnbG9iYWxPYmplY3QpOworfQorCitpbmxpbmUgSlNDOjpKU1ZhbHVl
IHRvSlMoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU0M6OkFycmF5QnVmZmVyKiBidWZmZXIpCit7CisgICAgaWYgKCFidWZmZXIpCiAgICAg
ICAgIHJldHVybiBKU0M6OmpzTnVsbCgpOwotICAgIHJldHVybiB2aWV3LT53cmFwKGV4ZWMsIGds
b2JhbE9iamVjdCk7CisgICAgcmV0dXJuIHRvSlMoc3RhdGUsIGdsb2JhbE9iamVjdCwgKmJ1ZmZl
cik7CiB9CiAKLWlubGluZSBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSogZXhlYywg
SlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkFycmF5QnVmZmVyVmlldyog
dmlldykKK2lubGluZSBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpT
Qzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpBcnJheUJ1ZmZlclZpZXcqIHZp
ZXcpCiB7CiAgICAgaWYgKCF2aWV3KQogICAgICAgICByZXR1cm4gSlNDOjpqc051bGwoKTsKLSAg
ICByZXR1cm4gdmlldy0+d3JhcChleGVjLCBnbG9iYWxPYmplY3QpOworICAgIHJldHVybiB0b0pT
KHN0YXRlLCBnbG9iYWxPYmplY3QsICp2aWV3KTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4g
aW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8VD4mJiBwdHIpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>