<?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>237942</bug_id>
          
          <creation_ts>2022-03-15 22:27:48 -0700</creation_ts>
          <short_desc>[WebGPU] Use the fromAPI() pattern</short_desc>
          <delta_ts>2022-03-16 17:03:31 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>237583</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Myles C. Maxfield">mmaxfield</reporter>
          <assigned_to name="Myles C. Maxfield">mmaxfield</assigned_to>
          <cc>kkinnunen</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1851650</commentid>
    <comment_count>0</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2022-03-15 22:27:48 -0700</bug_when>
    <thetext>[WebGPU] Use the fromAPI() pattern</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1851651</commentid>
    <comment_count>1</comment_count>
      <attachid>454800</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2022-03-15 22:31:59 -0700</bug_when>
    <thetext>Created attachment 454800
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1851653</commentid>
    <comment_count>2</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2022-03-15 22:32:29 -0700</bug_when>
    <thetext>*** Bug 237875 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1851771</commentid>
    <comment_count>3</comment_count>
      <attachid>454800</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2022-03-16 06:49:52 -0700</bug_when>
    <thetext>Comment on attachment 454800
Patch

I hope I didn&apos;t come across as insisting on this. It was just a suggestion, idea.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1852017</commentid>
    <comment_count>4</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2022-03-16 15:16:14 -0700</bug_when>
    <thetext>(In reply to Kimmo Kinnunen from comment #3)
&gt; Comment on attachment 454800 [details]
&gt; Patch
&gt; 
&gt; I hope I didn&apos;t come across as insisting on this. It was just a suggestion,
&gt; idea.

A good one!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1852070</commentid>
    <comment_count>5</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2022-03-16 17:02:53 -0700</bug_when>
    <thetext>Committed r291376 (248508@trunk): &lt;https://commits.webkit.org/248508@trunk&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1852072</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-03-16 17:03:31 -0700</bug_when>
    <thetext>&lt;rdar://problem/90400173&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>454800</attachid>
            <date>2022-03-15 22:31:59 -0700</date>
            <delta_ts>2022-03-16 06:54:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237942-20220315223158.patch</filename>
            <type>text/plain</type>
            <size>110344</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxMzIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJHUFUvQ2hhbmdlTG9nCmluZGV4IGU0MmQ1MjE1MmNmZTE3MTM5
ZTE0ZmYyZWFiMjVhYWUxNTY3MjdjZWMuLmY0ZDYwM2U1MTMwNTdjMThhNmYzNDlhZDEzOWNjZTcw
MzQwNTI1NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJHUFUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMzIEBACisyMDIyLTAzLTE1ICBNeWxlcyBD
LiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkdQVV0gVXNl
IHRoZSBmcm9tQVBJKCkgcGF0dGVybgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjM3OTQyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgSW5zaWRlIEFQSSBmdW5jdGlvbnMsIHVzZSBhbiBvdmVybG9hZGVkIGZy
b21BUEkoKSBmdW5jdGlvbiB0byBjb252ZXJ0CisgICAgICAgIEFQSSB0eXBlcyB0byB0aGVpciBi
YWNraW5nIHR5cGVzLgorCisgICAgICAgICogV2ViR1BVLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogV2ViR1BVL0FQSUNvbnZlcnNpb25zLmg6IEFkZGVkLgorICAgICAgICAo
V2ViR1BVOjpmcm9tQVBJKToKKyAgICAgICAgKiBXZWJHUFUvQWRhcHRlci5oOgorICAgICAgICAq
IFdlYkdQVS9BZGFwdGVyLm1tOgorICAgICAgICAoV2ViR1BVOjpBZGFwdGVyOjpyZXF1ZXN0RGV2
aWNlKToKKyAgICAgICAgKHdncHVBZGFwdGVyRW51bWVyYXRlRmVhdHVyZXMpOgorICAgICAgICAo
d2dwdUFkYXB0ZXJHZXRMaW1pdHMpOgorICAgICAgICAod2dwdUFkYXB0ZXJHZXRQcm9wZXJ0aWVz
KToKKyAgICAgICAgKHdncHVBZGFwdGVySGFzRmVhdHVyZSk6CisgICAgICAgICh3Z3B1QWRhcHRl
clJlcXVlc3REZXZpY2UpOgorICAgICAgICAod2dwdUFkYXB0ZXJSZXF1ZXN0RGV2aWNlV2l0aEJs
b2NrKToKKyAgICAgICAgKiBXZWJHUFUvQmluZEdyb3VwLmg6CisgICAgICAgICogV2ViR1BVL0Jp
bmRHcm91cC5tbToKKyAgICAgICAgKFdlYkdQVTo6RGV2aWNlOjpjcmVhdGVCaW5kR3JvdXApOgor
ICAgICAgICAoV2ViR1BVOjpCaW5kR3JvdXA6OnNldExhYmVsKToKKyAgICAgICAgKHdncHVCaW5k
R3JvdXBTZXRMYWJlbCk6CisgICAgICAgICogV2ViR1BVL0JpbmRHcm91cExheW91dC5oOgorICAg
ICAgICAqIFdlYkdQVS9CaW5kR3JvdXBMYXlvdXQubW06CisgICAgICAgIChXZWJHUFU6OkJpbmRH
cm91cExheW91dDo6c2V0TGFiZWwpOgorICAgICAgICAod2dwdUJpbmRHcm91cExheW91dFNldExh
YmVsKToKKyAgICAgICAgKiBXZWJHUFUvQnVmZmVyLmg6CisgICAgICAgICogV2ViR1BVL0J1ZmZl
ci5tbToKKyAgICAgICAgKFdlYkdQVTo6QnVmZmVyOjpzZXRMYWJlbCk6CisgICAgICAgICh3Z3B1
QnVmZmVyRGVzdHJveSk6CisgICAgICAgICh3Z3B1QnVmZmVyR2V0Q29uc3RNYXBwZWRSYW5nZSk6
CisgICAgICAgICh3Z3B1QnVmZmVyR2V0TWFwcGVkUmFuZ2UpOgorICAgICAgICAod2dwdUJ1ZmZl
ck1hcEFzeW5jKToKKyAgICAgICAgKHdncHVCdWZmZXJNYXBBc3luY1dpdGhCbG9jayk6CisgICAg
ICAgICh3Z3B1QnVmZmVyVW5tYXApOgorICAgICAgICAod2dwdUJ1ZmZlclNldExhYmVsKToKKyAg
ICAgICAgKiBXZWJHUFUvQ29tbWFuZEJ1ZmZlci5oOgorICAgICAgICAqIFdlYkdQVS9Db21tYW5k
QnVmZmVyLm1tOgorICAgICAgICAoV2ViR1BVOjpDb21tYW5kQnVmZmVyOjpzZXRMYWJlbCk6Cisg
ICAgICAgICh3Z3B1Q29tbWFuZEJ1ZmZlclNldExhYmVsKToKKyAgICAgICAgKiBXZWJHUFUvQ29t
bWFuZEVuY29kZXIuaDoKKyAgICAgICAgKiBXZWJHUFUvQ29tbWFuZEVuY29kZXIubW06CisgICAg
ICAgIChXZWJHUFU6OkNvbW1hbmRFbmNvZGVyOjppbnNlcnREZWJ1Z01hcmtlcik6CisgICAgICAg
IChXZWJHUFU6OkNvbW1hbmRFbmNvZGVyOjpwdXNoRGVidWdHcm91cCk6CisgICAgICAgIChXZWJH
UFU6OkNvbW1hbmRFbmNvZGVyOjpzZXRMYWJlbCk6CisgICAgICAgICh3Z3B1Q29tbWFuZEVuY29k
ZXJCZWdpbkNvbXB1dGVQYXNzKToKKyAgICAgICAgKHdncHVDb21tYW5kRW5jb2RlckJlZ2luUmVu
ZGVyUGFzcyk6CisgICAgICAgICh3Z3B1Q29tbWFuZEVuY29kZXJDb3B5QnVmZmVyVG9CdWZmZXIp
OgorICAgICAgICAod2dwdUNvbW1hbmRFbmNvZGVyQ29weUJ1ZmZlclRvVGV4dHVyZSk6CisgICAg
ICAgICh3Z3B1Q29tbWFuZEVuY29kZXJDb3B5VGV4dHVyZVRvQnVmZmVyKToKKyAgICAgICAgKHdn
cHVDb21tYW5kRW5jb2RlckNvcHlUZXh0dXJlVG9UZXh0dXJlKToKKyAgICAgICAgKHdncHVDb21t
YW5kRW5jb2RlckNsZWFyQnVmZmVyKToKKyAgICAgICAgKHdncHVDb21tYW5kRW5jb2RlckZpbmlz
aCk6CisgICAgICAgICh3Z3B1Q29tbWFuZEVuY29kZXJJbnNlcnREZWJ1Z01hcmtlcik6CisgICAg
ICAgICh3Z3B1Q29tbWFuZEVuY29kZXJQb3BEZWJ1Z0dyb3VwKToKKyAgICAgICAgKHdncHVDb21t
YW5kRW5jb2RlclB1c2hEZWJ1Z0dyb3VwKToKKyAgICAgICAgKHdncHVDb21tYW5kRW5jb2RlclJl
c29sdmVRdWVyeVNldCk6CisgICAgICAgICh3Z3B1Q29tbWFuZEVuY29kZXJXcml0ZVRpbWVzdGFt
cCk6CisgICAgICAgICh3Z3B1Q29tbWFuZEVuY29kZXJTZXRMYWJlbCk6CisgICAgICAgICogV2Vi
R1BVL0NvbXB1dGVQYXNzRW5jb2Rlci5oOgorICAgICAgICAqIFdlYkdQVS9Db21wdXRlUGFzc0Vu
Y29kZXIubW06CisgICAgICAgIChXZWJHUFU6OkNvbXB1dGVQYXNzRW5jb2Rlcjo6aW5zZXJ0RGVi
dWdNYXJrZXIpOgorICAgICAgICAoV2ViR1BVOjpDb21wdXRlUGFzc0VuY29kZXI6OnB1c2hEZWJ1
Z0dyb3VwKToKKyAgICAgICAgKFdlYkdQVTo6Q29tcHV0ZVBhc3NFbmNvZGVyOjpzZXRMYWJlbCk6
CisgICAgICAgICh3Z3B1Q29tcHV0ZVBhc3NFbmNvZGVyQmVnaW5QaXBlbGluZVN0YXRpc3RpY3NR
dWVyeSk6CisgICAgICAgICh3Z3B1Q29tcHV0ZVBhc3NFbmNvZGVyRGlzcGF0Y2gpOgorICAgICAg
ICAod2dwdUNvbXB1dGVQYXNzRW5jb2RlckRpc3BhdGNoSW5kaXJlY3QpOgorICAgICAgICAod2dw
dUNvbXB1dGVQYXNzRW5jb2RlckVuZFBhc3MpOgorICAgICAgICAod2dwdUNvbXB1dGVQYXNzRW5j
b2RlckVuZFBpcGVsaW5lU3RhdGlzdGljc1F1ZXJ5KToKKyAgICAgICAgKHdncHVDb21wdXRlUGFz
c0VuY29kZXJJbnNlcnREZWJ1Z01hcmtlcik6CisgICAgICAgICh3Z3B1Q29tcHV0ZVBhc3NFbmNv
ZGVyUG9wRGVidWdHcm91cCk6CisgICAgICAgICh3Z3B1Q29tcHV0ZVBhc3NFbmNvZGVyUHVzaERl
YnVnR3JvdXApOgorICAgICAgICAod2dwdUNvbXB1dGVQYXNzRW5jb2RlclNldEJpbmRHcm91cCk6
CisgICAgICAgICh3Z3B1Q29tcHV0ZVBhc3NFbmNvZGVyU2V0UGlwZWxpbmUpOgorICAgICAgICAo
d2dwdUNvbXB1dGVQYXNzRW5jb2RlclNldExhYmVsKToKKyAgICAgICAgKiBXZWJHUFUvQ29tcHV0
ZVBpcGVsaW5lLmg6CisgICAgICAgICogV2ViR1BVL0NvbXB1dGVQaXBlbGluZS5tbToKKyAgICAg
ICAgKFdlYkdQVTo6RGV2aWNlOjpjcmVhdGVDb21wdXRlUGlwZWxpbmUpOgorICAgICAgICAoV2Vi
R1BVOjpEZXZpY2U6OmNyZWF0ZUNvbXB1dGVQaXBlbGluZUFzeW5jKToKKyAgICAgICAgKFdlYkdQ
VTo6Q29tcHV0ZVBpcGVsaW5lOjpzZXRMYWJlbCk6CisgICAgICAgICh3Z3B1Q29tcHV0ZVBpcGVs
aW5lR2V0QmluZEdyb3VwTGF5b3V0KToKKyAgICAgICAgKHdncHVDb21wdXRlUGlwZWxpbmVTZXRM
YWJlbCk6CisgICAgICAgICogV2ViR1BVL0RldmljZS5oOgorICAgICAgICAqIFdlYkdQVS9EZXZp
Y2UubW06CisgICAgICAgIChXZWJHUFU6OkRldmljZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkdQ
VTo6RGV2aWNlOjpwb3BFcnJvclNjb3BlKToKKyAgICAgICAgKFdlYkdQVTo6RGV2aWNlOjpzZXRE
ZXZpY2VMb3N0Q2FsbGJhY2spOgorICAgICAgICAoV2ViR1BVOjpEZXZpY2U6OnNldFVuY2FwdHVy
ZWRFcnJvckNhbGxiYWNrKToKKyAgICAgICAgKFdlYkdQVTo6RGV2aWNlOjpzZXRMYWJlbCk6Cisg
ICAgICAgICh3Z3B1RGV2aWNlQ3JlYXRlQmluZEdyb3VwKToKKyAgICAgICAgKHdncHVEZXZpY2VD
cmVhdGVCaW5kR3JvdXBMYXlvdXQpOgorICAgICAgICAod2dwdURldmljZUNyZWF0ZUJ1ZmZlcik6
CisgICAgICAgICh3Z3B1RGV2aWNlQ3JlYXRlQ29tbWFuZEVuY29kZXIpOgorICAgICAgICAod2dw
dURldmljZUNyZWF0ZUNvbXB1dGVQaXBlbGluZSk6CisgICAgICAgICh3Z3B1RGV2aWNlQ3JlYXRl
Q29tcHV0ZVBpcGVsaW5lQXN5bmMpOgorICAgICAgICAod2dwdURldmljZUNyZWF0ZUNvbXB1dGVQ
aXBlbGluZUFzeW5jV2l0aEJsb2NrKToKKyAgICAgICAgKHdncHVEZXZpY2VDcmVhdGVQaXBlbGlu
ZUxheW91dCk6CisgICAgICAgICh3Z3B1RGV2aWNlQ3JlYXRlUXVlcnlTZXQpOgorICAgICAgICAo
d2dwdURldmljZUNyZWF0ZVJlbmRlckJ1bmRsZUVuY29kZXIpOgorICAgICAgICAod2dwdURldmlj
ZUNyZWF0ZVJlbmRlclBpcGVsaW5lKToKKyAgICAgICAgKHdncHVEZXZpY2VDcmVhdGVSZW5kZXJQ
aXBlbGluZUFzeW5jKToKKyAgICAgICAgKHdncHVEZXZpY2VDcmVhdGVSZW5kZXJQaXBlbGluZUFz
eW5jV2l0aEJsb2NrKToKKyAgICAgICAgKHdncHVEZXZpY2VDcmVhdGVTYW1wbGVyKToKKyAgICAg
ICAgKHdncHVEZXZpY2VDcmVhdGVTaGFkZXJNb2R1bGUpOgorICAgICAgICAod2dwdURldmljZUNy
ZWF0ZVN3YXBDaGFpbik6CisgICAgICAgICh3Z3B1RGV2aWNlQ3JlYXRlVGV4dHVyZSk6CisgICAg
ICAgICh3Z3B1RGV2aWNlRGVzdHJveSk6CisgICAgICAgICh3Z3B1RGV2aWNlRW51bWVyYXRlRmVh
dHVyZXMpOgorICAgICAgICAod2dwdURldmljZUdldExpbWl0cyk6CisgICAgICAgICh3Z3B1RGV2
aWNlSGFzRmVhdHVyZSk6CisgICAgICAgICh3Z3B1RGV2aWNlUG9wRXJyb3JTY29wZSk6CisgICAg
ICAgICh3Z3B1RGV2aWNlUG9wRXJyb3JTY29wZVdpdGhCbG9jayk6CisgICAgICAgICh3Z3B1RGV2
aWNlUHVzaEVycm9yU2NvcGUpOgorICAgICAgICAod2dwdURldmljZVNldERldmljZUxvc3RDYWxs
YmFjayk6CisgICAgICAgICh3Z3B1RGV2aWNlU2V0RGV2aWNlTG9zdENhbGxiYWNrV2l0aEJsb2Nr
KToKKyAgICAgICAgKHdncHVEZXZpY2VTZXRVbmNhcHR1cmVkRXJyb3JDYWxsYmFjayk6CisgICAg
ICAgICh3Z3B1RGV2aWNlU2V0VW5jYXB0dXJlZEVycm9yQ2FsbGJhY2tXaXRoQmxvY2spOgorICAg
ICAgICAod2dwdURldmljZVNldExhYmVsKToKKyAgICAgICAgKiBXZWJHUFUvSW5zdGFuY2UuaDoK
KyAgICAgICAgKiBXZWJHUFUvSW5zdGFuY2UubW06CisgICAgICAgIChXZWJHUFU6Okluc3RhbmNl
OjpyZXF1ZXN0QWRhcHRlcik6CisgICAgICAgICh3Z3B1SW5zdGFuY2VDcmVhdGVTdXJmYWNlKToK
KyAgICAgICAgKHdncHVJbnN0YW5jZVByb2Nlc3NFdmVudHMpOgorICAgICAgICAod2dwdUluc3Rh
bmNlUmVxdWVzdEFkYXB0ZXIpOgorICAgICAgICAod2dwdUluc3RhbmNlUmVxdWVzdEFkYXB0ZXJX
aXRoQmxvY2spOgorICAgICAgICAqIFdlYkdQVS9QaXBlbGluZUxheW91dC5oOgorICAgICAgICAq
IFdlYkdQVS9QaXBlbGluZUxheW91dC5tbToKKyAgICAgICAgKFdlYkdQVTo6RGV2aWNlOjpjcmVh
dGVQaXBlbGluZUxheW91dCk6CisgICAgICAgIChXZWJHUFU6OlBpcGVsaW5lTGF5b3V0OjpzZXRM
YWJlbCk6CisgICAgICAgICh3Z3B1UGlwZWxpbmVMYXlvdXRTZXRMYWJlbCk6CisgICAgICAgICog
V2ViR1BVL1F1ZXJ5U2V0Lmg6CisgICAgICAgICogV2ViR1BVL1F1ZXJ5U2V0Lm1tOgorICAgICAg
ICAoV2ViR1BVOjpRdWVyeVNldDo6c2V0TGFiZWwpOgorICAgICAgICAod2dwdVF1ZXJ5U2V0RGVz
dHJveSk6CisgICAgICAgICh3Z3B1UXVlcnlTZXRTZXRMYWJlbCk6CisgICAgICAgICogV2ViR1BV
L1F1ZXVlLmg6CisgICAgICAgICogV2ViR1BVL1F1ZXVlLm1tOgorICAgICAgICAoV2ViR1BVOjpR
dWV1ZTo6c2V0TGFiZWwpOgorICAgICAgICAod2dwdVF1ZXVlT25TdWJtaXR0ZWRXb3JrRG9uZSk6
CisgICAgICAgICh3Z3B1UXVldWVPblN1Ym1pdHRlZFdvcmtEb25lV2l0aEJsb2NrKToKKyAgICAg
ICAgKHdncHVRdWV1ZVN1Ym1pdCk6CisgICAgICAgICh3Z3B1UXVldWVXcml0ZUJ1ZmZlcik6Cisg
ICAgICAgICh3Z3B1UXVldWVXcml0ZVRleHR1cmUpOgorICAgICAgICAod2dwdVF1ZXVlU2V0TGFi
ZWwpOgorICAgICAgICAqIFdlYkdQVS9SZW5kZXJCdW5kbGUuaDoKKyAgICAgICAgKiBXZWJHUFUv
UmVuZGVyQnVuZGxlLm1tOgorICAgICAgICAoV2ViR1BVOjpSZW5kZXJCdW5kbGU6OnNldExhYmVs
KToKKyAgICAgICAgKHdncHVSZW5kZXJCdW5kbGVTZXRMYWJlbCk6CisgICAgICAgICogV2ViR1BV
L1JlbmRlckJ1bmRsZUVuY29kZXIuaDoKKyAgICAgICAgKiBXZWJHUFUvUmVuZGVyQnVuZGxlRW5j
b2Rlci5tbToKKyAgICAgICAgKFdlYkdQVTo6UmVuZGVyQnVuZGxlRW5jb2Rlcjo6aW5zZXJ0RGVi
dWdNYXJrZXIpOgorICAgICAgICAoV2ViR1BVOjpSZW5kZXJCdW5kbGVFbmNvZGVyOjpwdXNoRGVi
dWdHcm91cCk6CisgICAgICAgIChXZWJHUFU6OlJlbmRlckJ1bmRsZUVuY29kZXI6OnNldExhYmVs
KToKKyAgICAgICAgKHdncHVSZW5kZXJCdW5kbGVFbmNvZGVyRHJhdyk6CisgICAgICAgICh3Z3B1
UmVuZGVyQnVuZGxlRW5jb2RlckRyYXdJbmRleGVkKToKKyAgICAgICAgKHdncHVSZW5kZXJCdW5k
bGVFbmNvZGVyRHJhd0luZGV4ZWRJbmRpcmVjdCk6CisgICAgICAgICh3Z3B1UmVuZGVyQnVuZGxl
RW5jb2RlckRyYXdJbmRpcmVjdCk6CisgICAgICAgICh3Z3B1UmVuZGVyQnVuZGxlRW5jb2RlckZp
bmlzaCk6CisgICAgICAgICh3Z3B1UmVuZGVyQnVuZGxlRW5jb2Rlckluc2VydERlYnVnTWFya2Vy
KToKKyAgICAgICAgKHdncHVSZW5kZXJCdW5kbGVFbmNvZGVyUG9wRGVidWdHcm91cCk6CisgICAg
ICAgICh3Z3B1UmVuZGVyQnVuZGxlRW5jb2RlclB1c2hEZWJ1Z0dyb3VwKToKKyAgICAgICAgKHdn
cHVSZW5kZXJCdW5kbGVFbmNvZGVyU2V0QmluZEdyb3VwKToKKyAgICAgICAgKHdncHVSZW5kZXJC
dW5kbGVFbmNvZGVyU2V0SW5kZXhCdWZmZXIpOgorICAgICAgICAod2dwdVJlbmRlckJ1bmRsZUVu
Y29kZXJTZXRQaXBlbGluZSk6CisgICAgICAgICh3Z3B1UmVuZGVyQnVuZGxlRW5jb2RlclNldFZl
cnRleEJ1ZmZlcik6CisgICAgICAgICh3Z3B1UmVuZGVyQnVuZGxlRW5jb2RlclNldExhYmVsKToK
KyAgICAgICAgKiBXZWJHUFUvUmVuZGVyUGFzc0VuY29kZXIuaDoKKyAgICAgICAgKiBXZWJHUFUv
UmVuZGVyUGFzc0VuY29kZXIubW06CisgICAgICAgIChXZWJHUFU6OlJlbmRlclBhc3NFbmNvZGVy
OjppbnNlcnREZWJ1Z01hcmtlcik6CisgICAgICAgIChXZWJHUFU6OlJlbmRlclBhc3NFbmNvZGVy
OjpwdXNoRGVidWdHcm91cCk6CisgICAgICAgIChXZWJHUFU6OlJlbmRlclBhc3NFbmNvZGVyOjpz
ZXRMYWJlbCk6CisgICAgICAgICh3Z3B1UmVuZGVyUGFzc0VuY29kZXJCZWdpbk9jY2x1c2lvblF1
ZXJ5KToKKyAgICAgICAgKHdncHVSZW5kZXJQYXNzRW5jb2RlckJlZ2luUGlwZWxpbmVTdGF0aXN0
aWNzUXVlcnkpOgorICAgICAgICAod2dwdVJlbmRlclBhc3NFbmNvZGVyRHJhdyk6CisgICAgICAg
ICh3Z3B1UmVuZGVyUGFzc0VuY29kZXJEcmF3SW5kZXhlZCk6CisgICAgICAgICh3Z3B1UmVuZGVy
UGFzc0VuY29kZXJEcmF3SW5kZXhlZEluZGlyZWN0KToKKyAgICAgICAgKHdncHVSZW5kZXJQYXNz
RW5jb2RlckRyYXdJbmRpcmVjdCk6CisgICAgICAgICh3Z3B1UmVuZGVyUGFzc0VuY29kZXJFbmRP
Y2NsdXNpb25RdWVyeSk6CisgICAgICAgICh3Z3B1UmVuZGVyUGFzc0VuY29kZXJFbmRQYXNzKToK
KyAgICAgICAgKHdncHVSZW5kZXJQYXNzRW5jb2RlckVuZFBpcGVsaW5lU3RhdGlzdGljc1F1ZXJ5
KToKKyAgICAgICAgKHdncHVSZW5kZXJQYXNzRW5jb2RlckV4ZWN1dGVCdW5kbGVzKToKKyAgICAg
ICAgKHdncHVSZW5kZXJQYXNzRW5jb2Rlckluc2VydERlYnVnTWFya2VyKToKKyAgICAgICAgKHdn
cHVSZW5kZXJQYXNzRW5jb2RlclBvcERlYnVnR3JvdXApOgorICAgICAgICAod2dwdVJlbmRlclBh
c3NFbmNvZGVyUHVzaERlYnVnR3JvdXApOgorICAgICAgICAod2dwdVJlbmRlclBhc3NFbmNvZGVy
U2V0QmluZEdyb3VwKToKKyAgICAgICAgKHdncHVSZW5kZXJQYXNzRW5jb2RlclNldEJsZW5kQ29u
c3RhbnQpOgorICAgICAgICAod2dwdVJlbmRlclBhc3NFbmNvZGVyU2V0SW5kZXhCdWZmZXIpOgor
ICAgICAgICAod2dwdVJlbmRlclBhc3NFbmNvZGVyU2V0UGlwZWxpbmUpOgorICAgICAgICAod2dw
dVJlbmRlclBhc3NFbmNvZGVyU2V0U2Npc3NvclJlY3QpOgorICAgICAgICAod2dwdVJlbmRlclBh
c3NFbmNvZGVyU2V0U3RlbmNpbFJlZmVyZW5jZSk6CisgICAgICAgICh3Z3B1UmVuZGVyUGFzc0Vu
Y29kZXJTZXRWZXJ0ZXhCdWZmZXIpOgorICAgICAgICAod2dwdVJlbmRlclBhc3NFbmNvZGVyU2V0
Vmlld3BvcnQpOgorICAgICAgICAod2dwdVJlbmRlclBhc3NFbmNvZGVyU2V0TGFiZWwpOgorICAg
ICAgICAqIFdlYkdQVS9SZW5kZXJQaXBlbGluZS5oOgorICAgICAgICAqIFdlYkdQVS9SZW5kZXJQ
aXBlbGluZS5tbToKKyAgICAgICAgKFdlYkdQVTo6RGV2aWNlOjpjcmVhdGVSZW5kZXJQaXBlbGlu
ZUFzeW5jKToKKyAgICAgICAgKFdlYkdQVTo6UmVuZGVyUGlwZWxpbmU6OnNldExhYmVsKToKKyAg
ICAgICAgKHdncHVSZW5kZXJQaXBlbGluZUdldEJpbmRHcm91cExheW91dCk6CisgICAgICAgICh3
Z3B1UmVuZGVyUGlwZWxpbmVTZXRMYWJlbCk6CisgICAgICAgICogV2ViR1BVL1NhbXBsZXIuaDoK
KyAgICAgICAgKiBXZWJHUFUvU2FtcGxlci5tbToKKyAgICAgICAgKFdlYkdQVTo6U2FtcGxlcjo6
c2V0TGFiZWwpOgorICAgICAgICAod2dwdVNhbXBsZXJTZXRMYWJlbCk6CisgICAgICAgICogV2Vi
R1BVL1NoYWRlck1vZHVsZS5oOgorICAgICAgICAqIFdlYkdQVS9TaGFkZXJNb2R1bGUubW06Cisg
ICAgICAgIChXZWJHUFU6OlNoYWRlck1vZHVsZTo6c2V0TGFiZWwpOgorICAgICAgICAod2dwdVNo
YWRlck1vZHVsZUdldENvbXBpbGF0aW9uSW5mbyk6CisgICAgICAgICh3Z3B1U2hhZGVyTW9kdWxl
R2V0Q29tcGlsYXRpb25JbmZvV2l0aEJsb2NrKToKKyAgICAgICAgKHdncHVTaGFkZXJNb2R1bGVT
ZXRMYWJlbCk6CisgICAgICAgICogV2ViR1BVL1N1cmZhY2UubW06CisgICAgICAgICh3Z3B1U3Vy
ZmFjZUdldFByZWZlcnJlZEZvcm1hdCk6CisgICAgICAgICogV2ViR1BVL1N3YXBDaGFpbi5tbToK
KyAgICAgICAgKHdncHVTd2FwQ2hhaW5HZXRDdXJyZW50VGV4dHVyZVZpZXcpOgorICAgICAgICAo
d2dwdVN3YXBDaGFpblByZXNlbnQpOgorICAgICAgICAqIFdlYkdQVS9UZXh0dXJlLmg6CisgICAg
ICAgICogV2ViR1BVL1RleHR1cmUubW06CisgICAgICAgIChXZWJHUFU6OlRleHR1cmU6OnNldExh
YmVsKToKKyAgICAgICAgKHdncHVUZXh0dXJlQ3JlYXRlVmlldyk6CisgICAgICAgICh3Z3B1VGV4
dHVyZURlc3Ryb3kpOgorICAgICAgICAod2dwdVRleHR1cmVTZXRMYWJlbCk6CisgICAgICAgICog
V2ViR1BVL1RleHR1cmVWaWV3Lmg6CisgICAgICAgICogV2ViR1BVL1RleHR1cmVWaWV3Lm1tOgor
ICAgICAgICAoV2ViR1BVOjpUZXh0dXJlVmlldzo6c2V0TGFiZWwpOgorICAgICAgICAod2dwdVRl
eHR1cmVWaWV3U2V0TGFiZWwpOgorCiAyMDIyLTAzLTE1ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1t
YXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgW1dlYkdQVV0gTWlncmF0ZSBmcm9tIFdURjo6
RnVuY3Rpb24gdG8gV1RGOjpDb21wbGV0aW9uSGFuZGxlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkdQVS9XZWJHUFUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJHUFUvV2Vi
R1BVLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZjc0NDAyOTk5MTEyYzllYWU4MDFk
NmZjOTBhZjk5ZTQ1ZDljODA3MC4uZTY3ZjliMGU3OWQ3Nzc5MjZmMGFkMTFhYzYwZTEzZWVmY2Ey
YWQxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC0xMyw2ICsxMyw3IEBACiAJCTFDMkNFREVFMjcxRThBNzMwMEVEQzE2RiAvKiBNZXRh
bC5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAxQzJDRURFRDI3MUU4QTczMDBFREMxNkYgLyogTWV0YWwuZnJhbWV3b3JrICovOyB9Owog
CQkxQzUzMTlDMDI3QkRDNkNDMDBDRDEyN0UgLyogbWFpbi5zd2lmdCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDNTMxOUJGMjdCREM2Q0MwMENEMTI3RSAv
KiBtYWluLnN3aWZ0ICovOyB9OwogCQkxQzUzMTlDNTI3QkRDNzI3MDBDRDEyN0UgLyogV2ViR1BV
LmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDFDRUJEN0UzMjcxNkFGQkEwMEE1MjU0RCAvKiBXZWJHUFUuZnJhbWV3b3JrICovOyB9Owor
CQkxQzU4MzAxODI3RTE2ODIzMDA5QjQwRjAgLyogQVBJQ29udmVyc2lvbnMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDNTgzMDE3MjdFMTY4MjMwMDlC
NDBGMCAvKiBBUElDb252ZXJzaW9ucy5oICovOyB9OwogCQkxQzVBQ0E5NDI3M0E0MUMyMDA5NUY4
RDUgLyogSW5zdGFuY2UubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxQzVBQ0E5MjI3M0E0MUMyMDA5NUY4RDUgLyogSW5zdGFuY2UubW0gKi87IH07CiAJ
CTFDNUFDQUI2MjczQTQyNkQwMDk1RjhENSAvKiBSZW5kZXJQaXBlbGluZS5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDNUFDQTk4MjczQTQyNkQwMDk1
RjhENSAvKiBSZW5kZXJQaXBlbGluZS5tbSAqLzsgfTsKIAkJMUM1QUNBQkIyNzNBNDI2RDAwOTVG
OEQ1IC8qIEJ1ZmZlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDFDNUFDQTlEMjczQTQyNkQwMDk1RjhENSAvKiBCdWZmZXIubW0gKi87IH07CkBAIC0x
MzMsNiArMTM0LDcgQEAKIAkJMUM1MzE5QkQyN0JEQzZDQjAwQ0QxMjdFIC8qIENvbW1hbmRMaW5l
UGxheWdyb3VuZCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBl
ID0gImNvbXBpbGVkLm1hY2gtby5leGVjdXRhYmxlIjsgaW5jbHVkZUluSW5kZXggPSAwOyBwYXRo
ID0gQ29tbWFuZExpbmVQbGF5Z3JvdW5kOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElS
OyB9OwogCQkxQzUzMTlCRjI3QkRDNkNDMDBDRDEyN0UgLyogbWFpbi5zd2lmdCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuc3dpZnQ7
IHBhdGggPSBtYWluLnN3aWZ0OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzUzMTlD
QTI3QkRENzAwMDBDRDEyN0UgLyogQ29tbWFuZExpbmVQbGF5Z3JvdW5kLnhjY29uZmlnICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZp
ZzsgcGF0aCA9IENvbW1hbmRMaW5lUGxheWdyb3VuZC54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMUM1ODMwMTcyN0UxNjgyMzAwOUI0MEYwIC8qIEFQSUNvbnZlcnNpb25z
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEFQSUNvbnZlcnNpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTFDNUFDQTkyMjczQTQxQzIwMDk1RjhENSAvKiBJbnN0YW5jZS5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IEluc3RhbmNlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkxQzVBQ0E5NjI3M0E0MjZEMDA5NUY4RDUgLyogU3VyZmFjZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBTdXJmYWNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTFDNUFDQTk3MjczQTQyNkQwMDk1RjhENSAvKiBTd2FwQ2hhaW4uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU3dhcENoYWluLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0zMjQsNiArMzI2LDcgQEAKIAkJCWNoaWxkcmVuID0gKAogCQkJCTFDNUFDQUIyMjczQTQy
NkQwMDk1RjhENSAvKiBBZGFwdGVyLmggKi8sCiAJCQkJMUM1QUNBQTkyNzNBNDI2RDAwOTVGOEQ1
IC8qIEFkYXB0ZXIubW0gKi8sCisJCQkJMUM1ODMwMTcyN0UxNjgyMzAwOUI0MEYwIC8qIEFQSUNv
bnZlcnNpb25zLmggKi8sCiAJCQkJMUM1QUNBRDUyNzNBNEQ3MDAwOTVGOEQ1IC8qIEJpbmRHcm91
cC5oICovLAogCQkJCTFDNUFDQURFMjczQTU1QUYwMDk1RjhENSAvKiBCaW5kR3JvdXAubW0gKi8s
CiAJCQkJMUM1QUNBRDgyNzNBNERDMTAwOTVGOEQ1IC8qIEJpbmRHcm91cExheW91dC5oICovLApA
QCAtNDc1LDYgKzQ3OCw3IEBACiAJCQlpc2EgPSBQQlhIZWFkZXJzQnVpbGRQaGFzZTsKIAkJCWJ1
aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgKKwkJCQkxQzU4MzAxODI3
RTE2ODIzMDA5QjQwRjAgLyogQVBJQ29udmVyc2lvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTFD
NUFDQUQ3MjczQTRENzAwMDk1RjhENSAvKiBCaW5kR3JvdXAuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTFDRUJEN0U3MjcxNkFGQkEwMEE1MjU0RCAvKiBXZWJHUFUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTFDNUFDQUQzMjczQTRDODYwMDk1RjhENSAvKiBXZWJHUFVFeHQuaCBpbiBIZWFkZXJzICovLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvQVBJQ29udmVyc2lvbnMuaCBiL1NvdXJj
ZS9XZWJHUFUvV2ViR1BVL0FQSUNvbnZlcnNpb25zLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDZmYmI2NGNhZGYw
ODg4Nzc0Njc4NGVhNTk3ZGVhMjJlMDMxMDU2MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJHUFUvV2ViR1BVL0FQSUNvbnZlcnNpb25zLmgKQEAgLTAsMCArMSwxNzUgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKGMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lt
cG9ydCAiQWRhcHRlci5oIgorI2ltcG9ydCAiQmluZEdyb3VwLmgiCisjaW1wb3J0ICJCaW5kR3Jv
dXBMYXlvdXQuaCIKKyNpbXBvcnQgIkJ1ZmZlci5oIgorI2ltcG9ydCAiQ29tbWFuZEJ1ZmZlci5o
IgorI2ltcG9ydCAiQ29tbWFuZEVuY29kZXIuaCIKKyNpbXBvcnQgIkNvbXB1dGVQYXNzRW5jb2Rl
ci5oIgorI2ltcG9ydCAiQ29tcHV0ZVBpcGVsaW5lLmgiCisjaW1wb3J0ICJEZXZpY2UuaCIKKyNp
bXBvcnQgIkluc3RhbmNlLmgiCisjaW1wb3J0ICJQaXBlbGluZUxheW91dC5oIgorI2ltcG9ydCAi
UXVlcnlTZXQuaCIKKyNpbXBvcnQgIlF1ZXVlLmgiCisjaW1wb3J0ICJSZW5kZXJCdW5kbGUuaCIK
KyNpbXBvcnQgIlJlbmRlckJ1bmRsZUVuY29kZXIuaCIKKyNpbXBvcnQgIlJlbmRlclBhc3NFbmNv
ZGVyLmgiCisjaW1wb3J0ICJSZW5kZXJQaXBlbGluZS5oIgorI2ltcG9ydCAiU2FtcGxlci5oIgor
I2ltcG9ydCAiU2hhZGVyTW9kdWxlLmgiCisjaW1wb3J0ICJTdXJmYWNlLmgiCisjaW1wb3J0ICJT
d2FwQ2hhaW4uaCIKKyNpbXBvcnQgIlRleHR1cmUuaCIKKyNpbXBvcnQgIlRleHR1cmVWaWV3Lmgi
CisjaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkdQVSB7CisK
K2lubGluZSBBZGFwdGVyJiBmcm9tQVBJKFdHUFVBZGFwdGVyIGFkYXB0ZXIpCit7CisgICAgcmV0
dXJuIGFkYXB0ZXItPmFkYXB0ZXI7Cit9CisKK2lubGluZSBCaW5kR3JvdXAmIGZyb21BUEkoV0dQ
VUJpbmRHcm91cCBiaW5kR3JvdXApCit7CisgICAgcmV0dXJuIGJpbmRHcm91cC0+YmluZEdyb3Vw
OworfQorCitpbmxpbmUgQmluZEdyb3VwTGF5b3V0JiBmcm9tQVBJKFdHUFVCaW5kR3JvdXBMYXlv
dXQgYmluZEdyb3VwTGF5b3V0KQoreworICAgIHJldHVybiBiaW5kR3JvdXBMYXlvdXQtPmJpbmRH
cm91cExheW91dDsKK30KKworaW5saW5lIEJ1ZmZlciYgZnJvbUFQSShXR1BVQnVmZmVyIGJ1ZmZl
cikKK3sKKyAgICByZXR1cm4gYnVmZmVyLT5idWZmZXI7Cit9CisKK2lubGluZSBDb21tYW5kQnVm
ZmVyJiBmcm9tQVBJKFdHUFVDb21tYW5kQnVmZmVyIGNvbW1hbmRCdWZmZXIpCit7CisgICAgcmV0
dXJuIGNvbW1hbmRCdWZmZXItPmNvbW1hbmRCdWZmZXI7Cit9CisKK2lubGluZSBDb21tYW5kRW5j
b2RlciYgZnJvbUFQSShXR1BVQ29tbWFuZEVuY29kZXIgY29tbWFuZEVuY29kZXIpCit7CisgICAg
cmV0dXJuIGNvbW1hbmRFbmNvZGVyLT5jb21tYW5kRW5jb2RlcjsKK30KKworaW5saW5lIENvbXB1
dGVQYXNzRW5jb2RlciYgZnJvbUFQSShXR1BVQ29tcHV0ZVBhc3NFbmNvZGVyIGNvbXB1dGVQYXNz
RW5jb2RlcikKK3sKKyAgICByZXR1cm4gY29tcHV0ZVBhc3NFbmNvZGVyLT5jb21wdXRlUGFzc0Vu
Y29kZXI7Cit9CisKK2lubGluZSBDb21wdXRlUGlwZWxpbmUmIGZyb21BUEkoV0dQVUNvbXB1dGVQ
aXBlbGluZSBjb21wdXRlUGlwZWxpbmUpCit7CisgICAgcmV0dXJuIGNvbXB1dGVQaXBlbGluZS0+
Y29tcHV0ZVBpcGVsaW5lOworfQorCitpbmxpbmUgRGV2aWNlJiBmcm9tQVBJKFdHUFVEZXZpY2Ug
ZGV2aWNlKQoreworICAgIHJldHVybiBkZXZpY2UtPmRldmljZTsKK30KKworaW5saW5lIEluc3Rh
bmNlJiBmcm9tQVBJKFdHUFVJbnN0YW5jZSBpbnN0YW5jZSkKK3sKKyAgICByZXR1cm4gaW5zdGFu
Y2UtPmluc3RhbmNlOworfQorCitpbmxpbmUgUGlwZWxpbmVMYXlvdXQmIGZyb21BUEkoV0dQVVBp
cGVsaW5lTGF5b3V0IHBpcGVsaW5lTGF5b3V0KQoreworICAgIHJldHVybiBwaXBlbGluZUxheW91
dC0+cGlwZWxpbmVMYXlvdXQ7Cit9CisKK2lubGluZSBRdWVyeVNldCYgZnJvbUFQSShXR1BVUXVl
cnlTZXQgcXVlcnlTZXQpCit7CisgICAgcmV0dXJuIHF1ZXJ5U2V0LT5xdWVyeVNldDsKK30KKwor
aW5saW5lIFF1ZXVlJiBmcm9tQVBJKFdHUFVRdWV1ZSBxdWV1ZSkKK3sKKyAgICByZXR1cm4gcXVl
dWUtPnF1ZXVlOworfQorCitpbmxpbmUgUmVuZGVyQnVuZGxlJiBmcm9tQVBJKFdHUFVSZW5kZXJC
dW5kbGUgcmVuZGVyQnVuZGxlKQoreworICAgIHJldHVybiByZW5kZXJCdW5kbGUtPnJlbmRlckJ1
bmRsZTsKK30KKworaW5saW5lIFJlbmRlckJ1bmRsZUVuY29kZXImIGZyb21BUEkoV0dQVVJlbmRl
ckJ1bmRsZUVuY29kZXIgcmVuZGVyQnVuZGxlRW5jb2RlcikKK3sKKyAgICByZXR1cm4gcmVuZGVy
QnVuZGxlRW5jb2Rlci0+cmVuZGVyQnVuZGxlRW5jb2RlcjsKK30KKworaW5saW5lIFJlbmRlclBh
c3NFbmNvZGVyJiBmcm9tQVBJKFdHUFVSZW5kZXJQYXNzRW5jb2RlciByZW5kZXJQYXNzRW5jb2Rl
cikKK3sKKyAgICByZXR1cm4gcmVuZGVyUGFzc0VuY29kZXItPnJlbmRlclBhc3NFbmNvZGVyOwor
fQorCitpbmxpbmUgUmVuZGVyUGlwZWxpbmUmIGZyb21BUEkoV0dQVVJlbmRlclBpcGVsaW5lIHJl
bmRlclBpcGVsaW5lKQoreworICAgIHJldHVybiByZW5kZXJQaXBlbGluZS0+cmVuZGVyUGlwZWxp
bmU7Cit9CisKK2lubGluZSBTYW1wbGVyJiBmcm9tQVBJKFdHUFVTYW1wbGVyIHNhbXBsZXIpCit7
CisgICAgcmV0dXJuIHNhbXBsZXItPnNhbXBsZXI7Cit9CisKK2lubGluZSBTaGFkZXJNb2R1bGUm
IGZyb21BUEkoV0dQVVNoYWRlck1vZHVsZSBzaGFkZXJNb2R1bGUpCit7CisgICAgcmV0dXJuIHNo
YWRlck1vZHVsZS0+c2hhZGVyTW9kdWxlOworfQorCitpbmxpbmUgU3VyZmFjZSYgZnJvbUFQSShX
R1BVU3VyZmFjZSBzdXJmYWNlKQoreworICAgIHJldHVybiBzdXJmYWNlLT5zdXJmYWNlOworfQor
CitpbmxpbmUgU3dhcENoYWluJiBmcm9tQVBJKFdHUFVTd2FwQ2hhaW4gc3dhcENoYWluKQorewor
ICAgIHJldHVybiBzd2FwQ2hhaW4tPnN3YXBDaGFpbjsKK30KKworaW5saW5lIFRleHR1cmUmIGZy
b21BUEkoV0dQVVRleHR1cmUgdGV4dHVyZSkKK3sKKyAgICByZXR1cm4gdGV4dHVyZS0+dGV4dHVy
ZTsKK30KKworaW5saW5lIFRleHR1cmVWaWV3JiBmcm9tQVBJKFdHUFVUZXh0dXJlVmlldyB0ZXh0
dXJlVmlldykKK3sKKyAgICByZXR1cm4gdGV4dHVyZVZpZXctPnRleHR1cmVWaWV3OworfQorCitp
bmxpbmUgU3RyaW5nIGZyb21BUEkoY29uc3QgY2hhciogc3RyaW5nKQoreworICAgIHJldHVybiBT
dHJpbmcoc3RyaW5nKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViR1BVCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViR1BVL1dlYkdQVS9BZGFwdGVyLmggYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9BZGFw
dGVyLmgKaW5kZXggMWFkYTk1ZmJjNGE5NGQzZTU4N2FlZjkzMDU5Nzc2M2IwMjc2Y2ZjZi4uNzg5
MjMzMWVmZmI3ODE4MDViODgzNGMyN2U3ZTJkNDlkYzFlZTVhOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkdQVS9XZWJHUFUvQWRhcHRlci5oCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0FkYXB0
ZXIuaApAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBnZXRMaW1pdHMoV0dQVVN1
cHBvcnRlZExpbWl0cyYpOwogICAgIHZvaWQgZ2V0UHJvcGVydGllcyhXR1BVQWRhcHRlclByb3Bl
cnRpZXMmKTsKICAgICBib29sIGhhc0ZlYXR1cmUoV0dQVUZlYXR1cmVOYW1lKTsKLSAgICB2b2lk
IHJlcXVlc3REZXZpY2UoY29uc3QgV0dQVURldmljZURlc2NyaXB0b3ImLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFdHUFVSZXF1ZXN0RGV2aWNlU3RhdHVzLCBSZWZQdHI8RGV2aWNlPiYmLCBjb25z
dCBjaGFyKik+JiYgY2FsbGJhY2spOworICAgIHZvaWQgcmVxdWVzdERldmljZShjb25zdCBXR1BV
RGV2aWNlRGVzY3JpcHRvciYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV0dQVVJlcXVlc3REZXZp
Y2VTdGF0dXMsIFJlZlB0cjxEZXZpY2U+JiYsIFN0cmluZyYmKT4mJiBjYWxsYmFjayk7CiAKIHBy
aXZhdGU6CiAgICAgQWRhcHRlcihpZDxNVExEZXZpY2U+KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJHUFUvV2ViR1BVL0FkYXB0ZXIubW0gYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9BZGFwdGVyLm1t
CmluZGV4IGY5Yjk0ZjcyYTA1OTQ4NjE2MGU1NGFlOGJkZjQ4MWJiYTYxNjQyNDEuLmI1ZmJlYzkz
OGQxNGZhNDJkN2YwMzA4Yjk3YWQ4MjczYzEzNjkyZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJH
UFUvV2ViR1BVL0FkYXB0ZXIubW0KKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQWRhcHRlci5t
bQpAQCAtMjYsNiArMjYsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJBZGFwdGVy
LmgiCiAKKyNpbXBvcnQgIkFQSUNvbnZlcnNpb25zLmgiCiAjaW1wb3J0ICJEZXZpY2UuaCIKICNp
bXBvcnQgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIApAQCAtMTAzLDI0ICsxMDQsMjQgQEAgc3RhdGlj
IGJvb2wgZGV2aWNlTWVldHNSZXF1aXJlZExpbWl0cyhpZDxNVExEZXZpY2U+LCBjb25zdCBXR1BV
UmVxdWlyZWRMaW1pdHMmIHIKICAgICAgICAgJiYgIXJlcXVpcmVkTGltaXRzLmxpbWl0cy5tYXhD
b21wdXRlV29ya2dyb3Vwc1BlckRpbWVuc2lvbjsKIH0KIAotdm9pZCBBZGFwdGVyOjpyZXF1ZXN0
RGV2aWNlKGNvbnN0IFdHUFVEZXZpY2VEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFdHUFVSZXF1ZXN0RGV2aWNlU3RhdHVzLCBSZWZQdHI8RGV2aWNlPiYmLCBj
b25zdCBjaGFyKik+JiYgY2FsbGJhY2spCit2b2lkIEFkYXB0ZXI6OnJlcXVlc3REZXZpY2UoY29u
c3QgV0dQVURldmljZURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoV0dQVVJlcXVlc3REZXZpY2VTdGF0dXMsIFJlZlB0cjxEZXZpY2U+JiYsIFN0cmluZyYmKT4m
JiBjYWxsYmFjaykKIHsKICAgICBpZiAoZGVzY3JpcHRvci5uZXh0SW5DaGFpbikgewotICAgICAg
ICBjYWxsYmFjayhXR1BVUmVxdWVzdERldmljZVN0YXR1c19FcnJvciwgbnVsbHB0ciwgIlVua25v
d24gZGVzY3JpcHRvciB0eXBlIik7CisgICAgICAgIGNhbGxiYWNrKFdHUFVSZXF1ZXN0RGV2aWNl
U3RhdHVzX0Vycm9yLCBudWxscHRyLCAiVW5rbm93biBkZXNjcmlwdG9yIHR5cGUiX3MpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKGRlc2NyaXB0b3IucmVxdWlyZWRGZWF0dXJl
c0NvdW50KSB7Ci0gICAgICAgIGNhbGxiYWNrKFdHUFVSZXF1ZXN0RGV2aWNlU3RhdHVzX0Vycm9y
LCBudWxscHRyLCAiRGV2aWNlIGRvZXMgbm90IHN1cHBvcnQgcmVxdWVzdGVkIGZlYXR1cmVzIik7
CisgICAgICAgIGNhbGxiYWNrKFdHUFVSZXF1ZXN0RGV2aWNlU3RhdHVzX0Vycm9yLCBudWxscHRy
LCAiRGV2aWNlIGRvZXMgbm90IHN1cHBvcnQgcmVxdWVzdGVkIGZlYXR1cmVzIl9zKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmIChkZXNjcmlwdG9yLnJlcXVpcmVkTGltaXRzICYm
ICFkZXZpY2VNZWV0c1JlcXVpcmVkTGltaXRzKG1fZGV2aWNlLCAqZGVzY3JpcHRvci5yZXF1aXJl
ZExpbWl0cykpIHsKLSAgICAgICAgY2FsbGJhY2soV0dQVVJlcXVlc3REZXZpY2VTdGF0dXNfRXJy
b3IsIG51bGxwdHIsICJEZXZpY2UgZG9lcyBub3Qgc3VwcG9ydCByZXF1ZXN0ZWQgbGltaXRzIik7
CisgICAgICAgIGNhbGxiYWNrKFdHUFVSZXF1ZXN0RGV2aWNlU3RhdHVzX0Vycm9yLCBudWxscHRy
LCAiRGV2aWNlIGRvZXMgbm90IHN1cHBvcnQgcmVxdWVzdGVkIGxpbWl0cyJfcyk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICBjYWxsYmFjayhXR1BVUmVxdWVzdERldmljZVN0YXR1c19T
dWNjZXNzLCBEZXZpY2U6OmNyZWF0ZShtX2RldmljZSwgZGVzY3JpcHRvci5sYWJlbCksIG51bGxw
dHIpOworICAgIGNhbGxiYWNrKFdHUFVSZXF1ZXN0RGV2aWNlU3RhdHVzX1N1Y2Nlc3MsIERldmlj
ZTo6Y3JlYXRlKG1fZGV2aWNlLCBTdHJpbmcoZGVzY3JpcHRvci5sYWJlbCkpLCB7IH0pOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJHUFUKQEAgLTEzMiw0MiArMTMzLDQyIEBAIHZvaWQgd2dwdUFk
YXB0ZXJSZWxlYXNlKFdHUFVBZGFwdGVyIGFkYXB0ZXIpCiAKIHNpemVfdCB3Z3B1QWRhcHRlckVu
dW1lcmF0ZUZlYXR1cmVzKFdHUFVBZGFwdGVyIGFkYXB0ZXIsIFdHUFVGZWF0dXJlTmFtZSogZmVh
dHVyZXMpCiB7Ci0gICAgcmV0dXJuIGFkYXB0ZXItPmFkYXB0ZXItPmVudW1lcmF0ZUZlYXR1cmVz
KGZlYXR1cmVzKTsKKyAgICByZXR1cm4gV2ViR1BVOjpmcm9tQVBJKGFkYXB0ZXIpLmVudW1lcmF0
ZUZlYXR1cmVzKGZlYXR1cmVzKTsKIH0KIAogYm9vbCB3Z3B1QWRhcHRlckdldExpbWl0cyhXR1BV
QWRhcHRlciBhZGFwdGVyLCBXR1BVU3VwcG9ydGVkTGltaXRzKiBsaW1pdHMpCiB7Ci0gICAgcmV0
dXJuIGFkYXB0ZXItPmFkYXB0ZXItPmdldExpbWl0cygqbGltaXRzKTsKKyAgICByZXR1cm4gV2Vi
R1BVOjpmcm9tQVBJKGFkYXB0ZXIpLmdldExpbWl0cygqbGltaXRzKTsKIH0KIAogdm9pZCB3Z3B1
QWRhcHRlckdldFByb3BlcnRpZXMoV0dQVUFkYXB0ZXIgYWRhcHRlciwgV0dQVUFkYXB0ZXJQcm9w
ZXJ0aWVzKiBwcm9wZXJ0aWVzKQogewotICAgIGFkYXB0ZXItPmFkYXB0ZXItPmdldFByb3BlcnRp
ZXMoKnByb3BlcnRpZXMpOworICAgIFdlYkdQVTo6ZnJvbUFQSShhZGFwdGVyKS5nZXRQcm9wZXJ0
aWVzKCpwcm9wZXJ0aWVzKTsKIH0KIAogYm9vbCB3Z3B1QWRhcHRlckhhc0ZlYXR1cmUoV0dQVUFk
YXB0ZXIgYWRhcHRlciwgV0dQVUZlYXR1cmVOYW1lIGZlYXR1cmUpCiB7Ci0gICAgcmV0dXJuIGFk
YXB0ZXItPmFkYXB0ZXItPmhhc0ZlYXR1cmUoZmVhdHVyZSk7CisgICAgcmV0dXJuIFdlYkdQVTo6
ZnJvbUFQSShhZGFwdGVyKS5oYXNGZWF0dXJlKGZlYXR1cmUpOwogfQogCiB2b2lkIHdncHVBZGFw
dGVyUmVxdWVzdERldmljZShXR1BVQWRhcHRlciBhZGFwdGVyLCBjb25zdCBXR1BVRGV2aWNlRGVz
Y3JpcHRvciogZGVzY3JpcHRvciwgV0dQVVJlcXVlc3REZXZpY2VDYWxsYmFjayBjYWxsYmFjaywg
dm9pZCogdXNlcmRhdGEpCiB7Ci0gICAgYWRhcHRlci0+YWRhcHRlci0+cmVxdWVzdERldmljZSgq
ZGVzY3JpcHRvciwgW2NhbGxiYWNrLCB1c2VyZGF0YV0gKFdHUFVSZXF1ZXN0RGV2aWNlU3RhdHVz
IHN0YXR1cywgUmVmUHRyPFdlYkdQVTo6RGV2aWNlPiYmIGRldmljZSwgY29uc3QgY2hhciogbWVz
c2FnZSkgeworICAgIFdlYkdQVTo6ZnJvbUFQSShhZGFwdGVyKS5yZXF1ZXN0RGV2aWNlKCpkZXNj
cmlwdG9yLCBbY2FsbGJhY2ssIHVzZXJkYXRhXSAoV0dQVVJlcXVlc3REZXZpY2VTdGF0dXMgc3Rh
dHVzLCBSZWZQdHI8V2ViR1BVOjpEZXZpY2U+JiYgZGV2aWNlLCBTdHJpbmcmJiBtZXNzYWdlKSB7
CiAgICAgICAgIGlmIChkZXZpY2UpIHsKICAgICAgICAgICAgIGF1dG8mIHF1ZXVlID0gZGV2aWNl
LT5nZXRRdWV1ZSgpOwotICAgICAgICAgICAgY2FsbGJhY2soc3RhdHVzLCBuZXcgV0dQVURldmlj
ZUltcGwgeyBkZXZpY2UucmVsZWFzZU5vbk51bGwoKSwgeyBxdWV1ZSB9IH0sIG1lc3NhZ2UsIHVz
ZXJkYXRhKTsKKyAgICAgICAgICAgIGNhbGxiYWNrKHN0YXR1cywgbmV3IFdHUFVEZXZpY2VJbXBs
IHsgZGV2aWNlLnJlbGVhc2VOb25OdWxsKCksIHsgcXVldWUgfSB9LCBtZXNzYWdlLnV0ZjgoKS5k
YXRhKCksIHVzZXJkYXRhKTsKICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBjYWxsYmFjayhz
dGF0dXMsIG51bGxwdHIsIG1lc3NhZ2UsIHVzZXJkYXRhKTsKKyAgICAgICAgICAgIGNhbGxiYWNr
KHN0YXR1cywgbnVsbHB0ciwgbWVzc2FnZS51dGY4KCkuZGF0YSgpLCB1c2VyZGF0YSk7CiAgICAg
fSk7CiB9CiAKIHZvaWQgd2dwdUFkYXB0ZXJSZXF1ZXN0RGV2aWNlV2l0aEJsb2NrKFdHUFVBZGFw
dGVyIGFkYXB0ZXIsIFdHUFVEZXZpY2VEZXNjcmlwdG9yIGNvbnN0ICogZGVzY3JpcHRvciwgV0dQ
VVJlcXVlc3REZXZpY2VCbG9ja0NhbGxiYWNrIGNhbGxiYWNrKQogewotICAgIGFkYXB0ZXItPmFk
YXB0ZXItPnJlcXVlc3REZXZpY2UoKmRlc2NyaXB0b3IsIFtjYWxsYmFja10gKFdHUFVSZXF1ZXN0
RGV2aWNlU3RhdHVzIHN0YXR1cywgUmVmUHRyPFdlYkdQVTo6RGV2aWNlPiYmIGRldmljZSwgY29u
c3QgY2hhciogbWVzc2FnZSkgeworICAgIFdlYkdQVTo6ZnJvbUFQSShhZGFwdGVyKS5yZXF1ZXN0
RGV2aWNlKCpkZXNjcmlwdG9yLCBbY2FsbGJhY2tdIChXR1BVUmVxdWVzdERldmljZVN0YXR1cyBz
dGF0dXMsIFJlZlB0cjxXZWJHUFU6OkRldmljZT4mJiBkZXZpY2UsIFN0cmluZyYmIG1lc3NhZ2Up
IHsKICAgICAgICAgaWYgKGRldmljZSkgewogICAgICAgICAgICAgYXV0byYgcXVldWUgPSBkZXZp
Y2UtPmdldFF1ZXVlKCk7Ci0gICAgICAgICAgICBjYWxsYmFjayhzdGF0dXMsIG5ldyBXR1BVRGV2
aWNlSW1wbCB7IGRldmljZS5yZWxlYXNlTm9uTnVsbCgpLCB7IHF1ZXVlIH0gfSwgbWVzc2FnZSk7
CisgICAgICAgICAgICBjYWxsYmFjayhzdGF0dXMsIG5ldyBXR1BVRGV2aWNlSW1wbCB7IGRldmlj
ZS5yZWxlYXNlTm9uTnVsbCgpLCB7IHF1ZXVlIH0gfSwgbWVzc2FnZS51dGY4KCkuZGF0YSgpKTsK
ICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBjYWxsYmFjayhzdGF0dXMsIG51bGxwdHIsIG1l
c3NhZ2UpOworICAgICAgICAgICAgY2FsbGJhY2soc3RhdHVzLCBudWxscHRyLCBtZXNzYWdlLnV0
ZjgoKS5kYXRhKCkpOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJH
UFUvQmluZEdyb3VwLmggYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9CaW5kR3JvdXAuaAppbmRleCAw
NTc0YTJlMWZlYzJlODA5ZDE4MzNhYjg0NjliMTM2MmFiN2UwYzdhLi42ZTAyMGJjNDE5ZGJhZjM4
OTg0YWZhYmUwZmQzYWU2NTc2OWNlZDhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQ
VS9CaW5kR3JvdXAuaAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9CaW5kR3JvdXAuaApAQCAt
NDEsNyArNDEsNyBAQCBwdWJsaWM6CiAKICAgICB+QmluZEdyb3VwKCk7CiAKLSAgICB2b2lkIHNl
dExhYmVsKGNvbnN0IGNoYXIqKTsKKyAgICB2b2lkIHNldExhYmVsKFN0cmluZyYmKTsKIAogICAg
IGlkPE1UTEJ1ZmZlcj4gdmVydGV4QXJndW1lbnRCdWZmZXIoKSBjb25zdCB7IHJldHVybiBtX3Zl
cnRleEFyZ3VtZW50QnVmZmVyOyB9CiAgICAgaWQ8TVRMQnVmZmVyPiBmcmFnbWVudEFyZ3VtZW50
QnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9mcmFnbWVudEFyZ3VtZW50QnVmZmVyOyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9CaW5kR3JvdXAubW0gYi9Tb3VyY2UvV2ViR1BV
L1dlYkdQVS9CaW5kR3JvdXAubW0KaW5kZXggNzhiYWM3YzMwZDRiMWI1MzIzMTIxZjMyYzRlOThk
ZDMzOGI2MWZhMi4uNDU0MDQzZDk5ZDg1MDYzZTE2MjBhOWY0MmI2YjU4MTMwMjBjMWY5NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUvQmluZEdyb3VwLm1tCisrKyBiL1NvdXJjZS9X
ZWJHUFUvV2ViR1BVL0JpbmRHcm91cC5tbQpAQCAtMjYsNiArMjYsNyBAQAogI2ltcG9ydCAiY29u
ZmlnLmgiCiAjaW1wb3J0ICJCaW5kR3JvdXAuaCIKIAorI2ltcG9ydCAiQVBJQ29udmVyc2lvbnMu
aCIKICNpbXBvcnQgIkJpbmRHcm91cExheW91dC5oIgogI2ltcG9ydCAiQnVmZmVyLmgiCiAjaW1w
b3J0ICJEZXZpY2UuaCIKQEAgLTU0LDcgKzU1LDcgQEAgUmVmUHRyPEJpbmRHcm91cD4gRGV2aWNl
OjpjcmVhdGVCaW5kR3JvdXAoY29uc3QgV0dQVUJpbmRHcm91cERlc2NyaXB0b3ImIGRlc2NyaXAK
ICAgICBpZiAoZGVzY3JpcHRvci5uZXh0SW5DaGFpbikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKLSAgICBjb25zdCBCaW5kR3JvdXBMYXlvdXQmIGJpbmRHcm91cExheW91dCA9IGRlc2NyaXB0
b3IubGF5b3V0LT5iaW5kR3JvdXBMYXlvdXQ7CisgICAgY29uc3QgQmluZEdyb3VwTGF5b3V0JiBi
aW5kR3JvdXBMYXlvdXQgPSBXZWJHUFU6OmZyb21BUEkoZGVzY3JpcHRvci5sYXlvdXQpOwogCiAg
ICAgLy8gRklYTUU6IERvbid0IGFsbG9jYXRlIDMgbmV3IGJ1ZmZlcnMgZm9yIGV2ZXJ5IGJpbmQg
Z3JvdXAuCiAgICAgLy8gSW4gZmFjdCwgZG9uJ3QgZXZlbiBhbGxvY2F0ZSBhIHNpbmdsZSBuZXcg
YnVmZmVyIGZvciBldmVyeSBiaW5kIGdyb3VwLgpAQCAtODksMTggKzkwLDE4IEBAIFJlZlB0cjxC
aW5kR3JvdXA+IERldmljZTo6Y3JlYXRlQmluZEdyb3VwKGNvbnN0IFdHUFVCaW5kR3JvdXBEZXNj
cmlwdG9yJiBkZXNjcmlwCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgICAgICBp
ZiAoYnVmZmVySXNQcmVzZW50KSB7Ci0gICAgICAgICAgICBpZDxNVExCdWZmZXI+IGJ1ZmZlciA9
IGVudHJ5LmJ1ZmZlci0+YnVmZmVyLT5idWZmZXIoKTsKKyAgICAgICAgICAgIGlkPE1UTEJ1ZmZl
cj4gYnVmZmVyID0gV2ViR1BVOjpmcm9tQVBJKGVudHJ5LmJ1ZmZlcikuYnVmZmVyKCk7CiAgICAg
ICAgICAgICAvLyBGSVhNRTogVXNlIGNoZWNrZWQgY2FzdHMuCiAgICAgICAgICAgICBbdmVydGV4
QXJndW1lbnRFbmNvZGVyIHNldEJ1ZmZlcjpidWZmZXIgb2Zmc2V0OnN0YXRpY19jYXN0PE5TVUlu
dGVnZXI+KGVudHJ5Lm9mZnNldCkgYXRJbmRleDplbnRyeS5iaW5kaW5nXTsKICAgICAgICAgICAg
IFtmcmFnbWVudEFyZ3VtZW50RW5jb2RlciBzZXRCdWZmZXI6YnVmZmVyIG9mZnNldDpzdGF0aWNf
Y2FzdDxOU1VJbnRlZ2VyPihlbnRyeS5vZmZzZXQpIGF0SW5kZXg6ZW50cnkuYmluZGluZ107CiAg
ICAgICAgICAgICBbY29tcHV0ZUFyZ3VtZW50RW5jb2RlciBzZXRCdWZmZXI6YnVmZmVyIG9mZnNl
dDpzdGF0aWNfY2FzdDxOU1VJbnRlZ2VyPihlbnRyeS5vZmZzZXQpIGF0SW5kZXg6ZW50cnkuYmlu
ZGluZ107CiAgICAgICAgIH0gZWxzZSBpZiAoc2FtcGxlcklzUHJlc2VudCkgewotICAgICAgICAg
ICAgaWQ8TVRMU2FtcGxlclN0YXRlPiBzYW1wbGVyID0gZW50cnkuc2FtcGxlci0+c2FtcGxlci0+
c2FtcGxlclN0YXRlKCk7CisgICAgICAgICAgICBpZDxNVExTYW1wbGVyU3RhdGU+IHNhbXBsZXIg
PSBXZWJHUFU6OmZyb21BUEkoZW50cnkuc2FtcGxlcikuc2FtcGxlclN0YXRlKCk7CiAgICAgICAg
ICAgICBbdmVydGV4QXJndW1lbnRFbmNvZGVyIHNldFNhbXBsZXJTdGF0ZTpzYW1wbGVyIGF0SW5k
ZXg6ZW50cnkuYmluZGluZ107CiAgICAgICAgICAgICBbZnJhZ21lbnRBcmd1bWVudEVuY29kZXIg
c2V0U2FtcGxlclN0YXRlOnNhbXBsZXIgYXRJbmRleDplbnRyeS5iaW5kaW5nXTsKICAgICAgICAg
ICAgIFtjb21wdXRlQXJndW1lbnRFbmNvZGVyIHNldFNhbXBsZXJTdGF0ZTpzYW1wbGVyIGF0SW5k
ZXg6ZW50cnkuYmluZGluZ107CiAgICAgICAgIH0gZWxzZSBpZiAodGV4dHVyZVZpZXdJc1ByZXNl
bnQpIHsKLSAgICAgICAgICAgIGlkPE1UTFRleHR1cmU+IHRleHR1cmUgPSBlbnRyeS50ZXh0dXJl
Vmlldy0+dGV4dHVyZVZpZXctPnRleHR1cmUoKTsKKyAgICAgICAgICAgIGlkPE1UTFRleHR1cmU+
IHRleHR1cmUgPSBXZWJHUFU6OmZyb21BUEkoZW50cnkudGV4dHVyZVZpZXcpLnRleHR1cmUoKTsK
ICAgICAgICAgICAgIFt2ZXJ0ZXhBcmd1bWVudEVuY29kZXIgc2V0VGV4dHVyZTp0ZXh0dXJlIGF0
SW5kZXg6ZW50cnkuYmluZGluZ107CiAgICAgICAgICAgICBbZnJhZ21lbnRBcmd1bWVudEVuY29k
ZXIgc2V0VGV4dHVyZTp0ZXh0dXJlIGF0SW5kZXg6ZW50cnkuYmluZGluZ107CiAgICAgICAgICAg
ICBbY29tcHV0ZUFyZ3VtZW50RW5jb2RlciBzZXRUZXh0dXJlOnRleHR1cmUgYXRJbmRleDplbnRy
eS5iaW5kaW5nXTsKQEAgLTEyMiw5ICsxMjMsOSBAQCBCaW5kR3JvdXA6OkJpbmRHcm91cChpZDxN
VExCdWZmZXI+IHZlcnRleEFyZ3VtZW50QnVmZmVyLCBpZDxNVExCdWZmZXI+IGZyYWdtZW50QQog
CiBCaW5kR3JvdXA6On5CaW5kR3JvdXAoKSA9IGRlZmF1bHQ7CiAKLXZvaWQgQmluZEdyb3VwOjpz
ZXRMYWJlbChjb25zdCBjaGFyKiBsYWJlbCkKK3ZvaWQgQmluZEdyb3VwOjpzZXRMYWJlbChTdHJp
bmcmJiBsYWJlbCkKIHsKLSAgICBhdXRvIGxhYmVsU3RyaW5nID0gW05TU3RyaW5nIHN0cmluZ1dp
dGhDU3RyaW5nOmxhYmVsIGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXTsKKyAgICBhdXRv
IGxhYmVsU3RyaW5nID0gc3RhdGljX2Nhc3Q8TlNTdHJpbmcgKj4obGFiZWwpOwogICAgIG1fdmVy
dGV4QXJndW1lbnRCdWZmZXIubGFiZWwgPSBsYWJlbFN0cmluZzsKICAgICBtX2ZyYWdtZW50QXJn
dW1lbnRCdWZmZXIubGFiZWwgPSBsYWJlbFN0cmluZzsKICAgICBtX2NvbXB1dGVBcmd1bWVudEJ1
ZmZlci5sYWJlbCA9IGxhYmVsU3RyaW5nOwpAQCAtMTM5LDUgKzE0MCw1IEBAIHZvaWQgd2dwdUJp
bmRHcm91cFJlbGVhc2UoV0dQVUJpbmRHcm91cCBiaW5kR3JvdXApCiAKIHZvaWQgd2dwdUJpbmRH
cm91cFNldExhYmVsKFdHUFVCaW5kR3JvdXAgYmluZEdyb3VwLCBjb25zdCBjaGFyKiBsYWJlbCkK
IHsKLSAgICBiaW5kR3JvdXAtPmJpbmRHcm91cC0+c2V0TGFiZWwobGFiZWwpOworICAgIFdlYkdQ
VTo6ZnJvbUFQSShiaW5kR3JvdXApLnNldExhYmVsKFdlYkdQVTo6ZnJvbUFQSShsYWJlbCkpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvQmluZEdyb3VwTGF5b3V0LmggYi9T
b3VyY2UvV2ViR1BVL1dlYkdQVS9CaW5kR3JvdXBMYXlvdXQuaAppbmRleCAxMDRlYmVhMjk4MjZl
NTJhYmY3ZDg2NzA3ZTEwNTAyNmY3ZjMxNmQyLi5iYjZlNmY4OTEzNTIyYTMwZDVmNmU0NmU4YjM2
ODhiYWYzZTgxYTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9CaW5kR3JvdXBM
YXlvdXQuaAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9CaW5kR3JvdXBMYXlvdXQuaApAQCAt
NDEsNyArNDEsNyBAQCBwdWJsaWM6CiAKICAgICB+QmluZEdyb3VwTGF5b3V0KCk7CiAKLSAgICB2
b2lkIHNldExhYmVsKGNvbnN0IGNoYXIqKTsKKyAgICB2b2lkIHNldExhYmVsKFN0cmluZyYmKTsK
IAogICAgIE5TVUludGVnZXIgZW5jb2RlZExlbmd0aCgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViR1BVL1dlYkdQVS9CaW5kR3JvdXBMYXlvdXQubW0gYi9Tb3VyY2UvV2ViR1BVL1dl
YkdQVS9CaW5kR3JvdXBMYXlvdXQubW0KaW5kZXggODYwOGU5MWQ4Mzk5OGViZTFkMWIyZjQ2ZTFm
NzZmNjhhYjgzZjZlMS4uZGQzZDAyN2E1YzkyM2I5YTJkNTEyYmRlODY4NGI5OWVmNzBkNDhhYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUvQmluZEdyb3VwTGF5b3V0Lm1tCisrKyBi
L1NvdXJjZS9XZWJHUFUvV2ViR1BVL0JpbmRHcm91cExheW91dC5tbQpAQCAtMjYsNiArMjYsNyBA
QAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJCaW5kR3JvdXBMYXlvdXQuaCIKIAorI2lt
cG9ydCAiQVBJQ29udmVyc2lvbnMuaCIKICNpbXBvcnQgIkRldmljZS5oIgogCiBuYW1lc3BhY2Ug
V2ViR1BVIHsKQEAgLTIyMiw5ICsyMjMsOSBAQCBCaW5kR3JvdXBMYXlvdXQ6OkJpbmRHcm91cExh
eW91dChpZDxNVExBcmd1bWVudEVuY29kZXI+IHZlcnRleEFyZ3VtZW50RW5jb2RlciwgaQogCiBC
aW5kR3JvdXBMYXlvdXQ6On5CaW5kR3JvdXBMYXlvdXQoKSA9IGRlZmF1bHQ7CiAKLXZvaWQgQmlu
ZEdyb3VwTGF5b3V0OjpzZXRMYWJlbChjb25zdCBjaGFyKiBsYWJlbCkKK3ZvaWQgQmluZEdyb3Vw
TGF5b3V0OjpzZXRMYWJlbChTdHJpbmcmJiBsYWJlbCkKIHsKLSAgICBhdXRvIGxhYmVsU3RyaW5n
ID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDU3RyaW5nOmxhYmVsIGVuY29kaW5nOk5TVVRGOFN0cmlu
Z0VuY29kaW5nXTsKKyAgICBhdXRvIGxhYmVsU3RyaW5nID0gc3RhdGljX2Nhc3Q8TlNTdHJpbmcg
Kj4obGFiZWwpOwogICAgIG1fdmVydGV4QXJndW1lbnRFbmNvZGVyLmxhYmVsID0gbGFiZWxTdHJp
bmc7CiAgICAgbV9mcmFnbWVudEFyZ3VtZW50RW5jb2Rlci5sYWJlbCA9IGxhYmVsU3RyaW5nOwog
ICAgIG1fY29tcHV0ZUFyZ3VtZW50RW5jb2Rlci5sYWJlbCA9IGxhYmVsU3RyaW5nOwpAQCAtMjQ3
LDUgKzI0OCw1IEBAIHZvaWQgd2dwdUJpbmRHcm91cExheW91dFJlbGVhc2UoV0dQVUJpbmRHcm91
cExheW91dCBiaW5kR3JvdXBMYXlvdXQpCiAKIHZvaWQgd2dwdUJpbmRHcm91cExheW91dFNldExh
YmVsKFdHUFVCaW5kR3JvdXBMYXlvdXQgYmluZEdyb3VwTGF5b3V0LCBjb25zdCBjaGFyKiBsYWJl
bCkKIHsKLSAgICBiaW5kR3JvdXBMYXlvdXQtPmJpbmRHcm91cExheW91dC0+c2V0TGFiZWwobGFi
ZWwpOworICAgIFdlYkdQVTo6ZnJvbUFQSShiaW5kR3JvdXBMYXlvdXQpLnNldExhYmVsKFdlYkdQ
VTo6ZnJvbUFQSShsYWJlbCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUv
QnVmZmVyLmggYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9CdWZmZXIuaAppbmRleCA1YWMxYmI1MTBj
OTlmNTg0ZDE4M2NiYTNkYTA5NDMyNzAzN2NjNGFlLi41ZDI1NmJlMjM3YTFmNDU2ZmU5OWNlY2Q0
ZDA1YTU5ZDRkYzRiYzI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9CdWZmZXIu
aAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9CdWZmZXIuaApAQCAtNDcsNyArNDcsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCogZ2V0TWFwcGVkUmFuZ2Uoc2l6ZV90IG9mZnNldCwgc2l6ZV90KTsK
ICAgICB2b2lkIG1hcEFzeW5jKFdHUFVNYXBNb2RlRmxhZ3MsIHNpemVfdCBvZmZzZXQsIHNpemVf
dCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXR1BVQnVmZmVyTWFwQXN5bmNTdGF0dXMpPiYmIGNh
bGxiYWNrKTsKICAgICB2b2lkIHVubWFwKCk7Ci0gICAgdm9pZCBzZXRMYWJlbChjb25zdCBjaGFy
Kik7CisgICAgdm9pZCBzZXRMYWJlbChTdHJpbmcmJik7CiAKICAgICBpZDxNVExCdWZmZXI+IGJ1
ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJHUFUvV2ViR1BVL0J1ZmZlci5tbSBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0J1ZmZlci5tbQpp
bmRleCBkYWI0MGJmZTBlYTEwNzkxYTVjMzI3MDM3MDNjNGVhZTFhZDE0N2FkLi41NjcxMWQ2YTc0
NjA4NjVmMWYwZTg0MGMzNzdmOGI5NmViOTA2NDIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BV
L1dlYkdQVS9CdWZmZXIubW0KKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQnVmZmVyLm1tCkBA
IC0yNiw2ICsyNiw3IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIkJ1ZmZlci5oIgog
CisjaW1wb3J0ICJBUElDb252ZXJzaW9ucy5oIgogI2ltcG9ydCAiRGV2aWNlLmgiCiAKIG5hbWVz
cGFjZSBXZWJHUFUgewpAQCAtNzMsOSArNzQsOSBAQCB2b2lkIEJ1ZmZlcjo6dW5tYXAoKQogewog
fQogCi12b2lkIEJ1ZmZlcjo6c2V0TGFiZWwoY29uc3QgY2hhciogbGFiZWwpCit2b2lkIEJ1ZmZl
cjo6c2V0TGFiZWwoU3RyaW5nJiYgbGFiZWwpCiB7Ci0gICAgbV9idWZmZXIubGFiZWwgPSBbTlNT
dHJpbmcgc3RyaW5nV2l0aENTdHJpbmc6bGFiZWwgZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2Rp
bmddOworICAgIG1fYnVmZmVyLmxhYmVsID0gc3RhdGljX2Nhc3Q8TlNTdHJpbmcgKj4obGFiZWwp
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJHUFUKQEAgLTg3LDM5ICs4OCwzOSBAQCB2b2lkIHdn
cHVCdWZmZXJSZWxlYXNlKFdHUFVCdWZmZXIgYnVmZmVyKQogCiB2b2lkIHdncHVCdWZmZXJEZXN0
cm95KFdHUFVCdWZmZXIgYnVmZmVyKQogewotICAgIGJ1ZmZlci0+YnVmZmVyLT5kZXN0cm95KCk7
CisgICAgV2ViR1BVOjpmcm9tQVBJKGJ1ZmZlcikuZGVzdHJveSgpOwogfQogCiBjb25zdCB2b2lk
KiB3Z3B1QnVmZmVyR2V0Q29uc3RNYXBwZWRSYW5nZShXR1BVQnVmZmVyIGJ1ZmZlciwgc2l6ZV90
IG9mZnNldCwgc2l6ZV90IHNpemUpCiB7Ci0gICAgcmV0dXJuIGJ1ZmZlci0+YnVmZmVyLT5nZXRD
b25zdE1hcHBlZFJhbmdlKG9mZnNldCwgc2l6ZSk7CisgICAgcmV0dXJuIFdlYkdQVTo6ZnJvbUFQ
SShidWZmZXIpLmdldENvbnN0TWFwcGVkUmFuZ2Uob2Zmc2V0LCBzaXplKTsKIH0KIAogdm9pZCog
d2dwdUJ1ZmZlckdldE1hcHBlZFJhbmdlKFdHUFVCdWZmZXIgYnVmZmVyLCBzaXplX3Qgb2Zmc2V0
LCBzaXplX3Qgc2l6ZSkKIHsKLSAgICByZXR1cm4gYnVmZmVyLT5idWZmZXItPmdldE1hcHBlZFJh
bmdlKG9mZnNldCwgc2l6ZSk7CisgICAgcmV0dXJuIFdlYkdQVTo6ZnJvbUFQSShidWZmZXIpLmdl
dE1hcHBlZFJhbmdlKG9mZnNldCwgc2l6ZSk7CiB9CiAKIHZvaWQgd2dwdUJ1ZmZlck1hcEFzeW5j
KFdHUFVCdWZmZXIgYnVmZmVyLCBXR1BVTWFwTW9kZUZsYWdzIG1vZGUsIHNpemVfdCBvZmZzZXQs
IHNpemVfdCBzaXplLCBXR1BVQnVmZmVyTWFwQ2FsbGJhY2sgY2FsbGJhY2ssIHZvaWQqIHVzZXJk
YXRhKQogewotICAgIGJ1ZmZlci0+YnVmZmVyLT5tYXBBc3luYyhtb2RlLCBvZmZzZXQsIHNpemUs
IFtjYWxsYmFjaywgdXNlcmRhdGFdIChXR1BVQnVmZmVyTWFwQXN5bmNTdGF0dXMgc3RhdHVzKSB7
CisgICAgV2ViR1BVOjpmcm9tQVBJKGJ1ZmZlcikubWFwQXN5bmMobW9kZSwgb2Zmc2V0LCBzaXpl
LCBbY2FsbGJhY2ssIHVzZXJkYXRhXSAoV0dQVUJ1ZmZlck1hcEFzeW5jU3RhdHVzIHN0YXR1cykg
ewogICAgICAgICBjYWxsYmFjayhzdGF0dXMsIHVzZXJkYXRhKTsKICAgICB9KTsKIH0KIAogdm9p
ZCB3Z3B1QnVmZmVyTWFwQXN5bmNXaXRoQmxvY2soV0dQVUJ1ZmZlciBidWZmZXIsIFdHUFVNYXBN
b2RlRmxhZ3MgbW9kZSwgc2l6ZV90IG9mZnNldCwgc2l6ZV90IHNpemUsIFdHUFVCdWZmZXJNYXBC
bG9ja0NhbGxiYWNrIGNhbGxiYWNrKQogewotICAgIGJ1ZmZlci0+YnVmZmVyLT5tYXBBc3luYyht
b2RlLCBvZmZzZXQsIHNpemUsIFtjYWxsYmFja10gKFdHUFVCdWZmZXJNYXBBc3luY1N0YXR1cyBz
dGF0dXMpIHsKKyAgICBXZWJHUFU6OmZyb21BUEkoYnVmZmVyKS5tYXBBc3luYyhtb2RlLCBvZmZz
ZXQsIHNpemUsIFtjYWxsYmFja10gKFdHUFVCdWZmZXJNYXBBc3luY1N0YXR1cyBzdGF0dXMpIHsK
ICAgICAgICAgY2FsbGJhY2soc3RhdHVzKTsKICAgICB9KTsKIH0KIAogdm9pZCB3Z3B1QnVmZmVy
VW5tYXAoV0dQVUJ1ZmZlciBidWZmZXIpCiB7Ci0gICAgYnVmZmVyLT5idWZmZXItPnVubWFwKCk7
CisgICAgV2ViR1BVOjpmcm9tQVBJKGJ1ZmZlcikudW5tYXAoKTsKIH0KIAogdm9pZCB3Z3B1QnVm
ZmVyU2V0TGFiZWwoV0dQVUJ1ZmZlciBidWZmZXIsIGNvbnN0IGNoYXIqIGxhYmVsKQogewotICAg
IGJ1ZmZlci0+YnVmZmVyLT5zZXRMYWJlbChsYWJlbCk7CisgICAgV2ViR1BVOjpmcm9tQVBJKGJ1
ZmZlcikuc2V0TGFiZWwoV2ViR1BVOjpmcm9tQVBJKGxhYmVsKSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViR1BVL1dlYkdQVS9Db21tYW5kQnVmZmVyLmggYi9Tb3VyY2UvV2ViR1BVL1dlYkdQ
VS9Db21tYW5kQnVmZmVyLmgKaW5kZXggOTIwODdkM2I2ZTViYjJmMzEyNGFjNzNhMDU5N2Q4MmY0
ZmJiNzI0Yi4uYWI1ODlmOTBmMTQ1NjNiZGJjZmY1ZGRhMzNhYzk5MDc5MGE1Nzg3NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tbWFuZEJ1ZmZlci5oCisrKyBiL1NvdXJjZS9X
ZWJHUFUvV2ViR1BVL0NvbW1hbmRCdWZmZXIuaApAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAK
ICAgICB+Q29tbWFuZEJ1ZmZlcigpOwogCi0gICAgdm9pZCBzZXRMYWJlbChjb25zdCBjaGFyKik7
CisgICAgdm9pZCBzZXRMYWJlbChTdHJpbmcmJik7CiAKICAgICBpZDxNVExDb21tYW5kQnVmZmVy
PiBjb21tYW5kQnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9jb21tYW5kQnVmZmVyOyB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbW1hbmRCdWZmZXIubW0gYi9Tb3VyY2Uv
V2ViR1BVL1dlYkdQVS9Db21tYW5kQnVmZmVyLm1tCmluZGV4IDA4MWRlMGJmY2M5ZjA5MTdjZTY1
MjBmMzIyNWE2OGI2YzIwNWViYjAuLjk4YTM0NWY0NjMyNmMxMDY1NTI5NGI3MDlmZjdhMWNkODI4
MjI4YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbW1hbmRCdWZmZXIubW0K
KysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tbWFuZEJ1ZmZlci5tbQpAQCAtMjYsNiArMjYs
NyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJDb21tYW5kQnVmZmVyLmgiCiAKKyNp
bXBvcnQgIkFQSUNvbnZlcnNpb25zLmgiCiAKIG5hbWVzcGFjZSBXZWJHUFUgewogCkBAIC0zNiw5
ICszNyw5IEBAIENvbW1hbmRCdWZmZXI6OkNvbW1hbmRCdWZmZXIoaWQ8TVRMQ29tbWFuZEJ1ZmZl
cj4gY29tbWFuZEJ1ZmZlcikKIAogQ29tbWFuZEJ1ZmZlcjo6fkNvbW1hbmRCdWZmZXIoKSA9IGRl
ZmF1bHQ7CiAKLXZvaWQgQ29tbWFuZEJ1ZmZlcjo6c2V0TGFiZWwoY29uc3QgY2hhciogbGFiZWwp
Cit2b2lkIENvbW1hbmRCdWZmZXI6OnNldExhYmVsKFN0cmluZyYmIGxhYmVsKQogewotICAgIG1f
Y29tbWFuZEJ1ZmZlci5sYWJlbCA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ1N0cmluZzpsYWJlbCBl
bmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ107CisgICAgbV9jb21tYW5kQnVmZmVyLmxhYmVs
ID0gc3RhdGljX2Nhc3Q8TlNTdHJpbmcgKj4obGFiZWwpOwogfQogCiB9CkBAIC01MCw1ICs1MSw1
IEBAIHZvaWQgd2dwdUNvbW1hbmRCdWZmZXJSZWxlYXNlKFdHUFVDb21tYW5kQnVmZmVyIGNvbW1h
bmRCdWZmZXIpCiAKIHZvaWQgd2dwdUNvbW1hbmRCdWZmZXJTZXRMYWJlbChXR1BVQ29tbWFuZEJ1
ZmZlciBjb21tYW5kQnVmZmVyLCBjb25zdCBjaGFyKiBsYWJlbCkKIHsKLSAgICBjb21tYW5kQnVm
ZmVyLT5jb21tYW5kQnVmZmVyLT5zZXRMYWJlbChsYWJlbCk7CisgICAgV2ViR1BVOjpmcm9tQVBJ
KGNvbW1hbmRCdWZmZXIpLnNldExhYmVsKFdlYkdQVTo6ZnJvbUFQSShsYWJlbCkpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tbWFuZEVuY29kZXIuaCBiL1NvdXJjZS9X
ZWJHUFUvV2ViR1BVL0NvbW1hbmRFbmNvZGVyLmgKaW5kZXggZGM5NzAxNTY3YzZkN2I2YTdkYTQ0
ZDIzMmQ0MzM3YzAzZTUzM2IyYS4uZjk2MWU2NWVmMjEwN2M4ZjdlMDk0MTc4M2E4NGIzZTU5NWJm
MWEzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tbWFuZEVuY29kZXIuaAor
KysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9Db21tYW5kRW5jb2Rlci5oCkBAIC01NiwxMiArNTYs
MTIgQEAgcHVibGljOgogICAgIHZvaWQgY29weVRleHR1cmVUb1RleHR1cmUoY29uc3QgV0dQVUlt
YWdlQ29weVRleHR1cmUmIHNvdXJjZSwgY29uc3QgV0dQVUltYWdlQ29weVRleHR1cmUmIGRlc3Rp
bmF0aW9uLCBjb25zdCBXR1BVRXh0ZW50M0QmIGNvcHlTaXplKTsKICAgICB2b2lkIGNsZWFyQnVm
ZmVyKGNvbnN0IEJ1ZmZlciYsIHVpbnQ2NF90IG9mZnNldCwgdWludDY0X3Qgc2l6ZSk7CiAgICAg
UmVmUHRyPENvbW1hbmRCdWZmZXI+IGZpbmlzaChjb25zdCBXR1BVQ29tbWFuZEJ1ZmZlckRlc2Ny
aXB0b3ImKTsKLSAgICB2b2lkIGluc2VydERlYnVnTWFya2VyKGNvbnN0IGNoYXIqIG1hcmtlckxh
YmVsKTsKKyAgICB2b2lkIGluc2VydERlYnVnTWFya2VyKFN0cmluZyYmIG1hcmtlckxhYmVsKTsK
ICAgICB2b2lkIHBvcERlYnVnR3JvdXAoKTsKLSAgICB2b2lkIHB1c2hEZWJ1Z0dyb3VwKGNvbnN0
IGNoYXIqIGdyb3VwTGFiZWwpOworICAgIHZvaWQgcHVzaERlYnVnR3JvdXAoU3RyaW5nJiYgZ3Jv
dXBMYWJlbCk7CiAgICAgdm9pZCByZXNvbHZlUXVlcnlTZXQoY29uc3QgUXVlcnlTZXQmLCB1aW50
MzJfdCBmaXJzdFF1ZXJ5LCB1aW50MzJfdCBxdWVyeUNvdW50LCBjb25zdCBCdWZmZXImIGRlc3Rp
bmF0aW9uLCB1aW50NjRfdCBkZXN0aW5hdGlvbk9mZnNldCk7CiAgICAgdm9pZCB3cml0ZVRpbWVz
dGFtcChjb25zdCBRdWVyeVNldCYsIHVpbnQzMl90IHF1ZXJ5SW5kZXgpOwotICAgIHZvaWQgc2V0
TGFiZWwoY29uc3QgY2hhciopOworICAgIHZvaWQgc2V0TGFiZWwoU3RyaW5nJiYpOwogCiBwcml2
YXRlOgogICAgIENvbW1hbmRFbmNvZGVyKGlkPE1UTENvbW1hbmRCdWZmZXI+KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbW1hbmRFbmNvZGVyLm1tIGIvU291cmNlL1dlYkdQ
VS9XZWJHUFUvQ29tbWFuZEVuY29kZXIubW0KaW5kZXggNjY0MDg1YzUwMTJlNDU5ZDJkNzZkYWRh
MjNlOWZmZGZjODI3Nzk2My4uNDViYTcwYjM4YTY4NWJjMDY4N2ViZjAxMjQxNDA4ZDQ1YWMzZmU4
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tbWFuZEVuY29kZXIubW0KKysr
IGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tbWFuZEVuY29kZXIubW0KQEAgLTI2LDYgKzI2LDcg
QEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiQ29tbWFuZEVuY29kZXIuaCIKIAorI2lt
cG9ydCAiQVBJQ29udmVyc2lvbnMuaCIKICNpbXBvcnQgIkJ1ZmZlci5oIgogI2ltcG9ydCAiQ29t
bWFuZEJ1ZmZlci5oIgogI2ltcG9ydCAiQ29tcHV0ZVBhc3NFbmNvZGVyLmgiCkBAIC0xMDMsNyAr
MTA0LDcgQEAgUmVmUHRyPENvbW1hbmRCdWZmZXI+IENvbW1hbmRFbmNvZGVyOjpmaW5pc2goY29u
c3QgV0dQVUNvbW1hbmRCdWZmZXJEZXNjcmlwdG9yJgogICAgIHJldHVybiBDb21tYW5kQnVmZmVy
OjpjcmVhdGUobmlsKTsKIH0KIAotdm9pZCBDb21tYW5kRW5jb2Rlcjo6aW5zZXJ0RGVidWdNYXJr
ZXIoY29uc3QgY2hhciogbWFya2VyTGFiZWwpCit2b2lkIENvbW1hbmRFbmNvZGVyOjppbnNlcnRE
ZWJ1Z01hcmtlcihTdHJpbmcmJiBtYXJrZXJMYWJlbCkKIHsKICAgICBVTlVTRURfUEFSQU0obWFy
a2VyTGFiZWwpOwogfQpAQCAtMTEyLDcgKzExMyw3IEBAIHZvaWQgQ29tbWFuZEVuY29kZXI6OnBv
cERlYnVnR3JvdXAoKQogewogfQogCi12b2lkIENvbW1hbmRFbmNvZGVyOjpwdXNoRGVidWdHcm91
cChjb25zdCBjaGFyKiBncm91cExhYmVsKQordm9pZCBDb21tYW5kRW5jb2Rlcjo6cHVzaERlYnVn
R3JvdXAoU3RyaW5nJiYgZ3JvdXBMYWJlbCkKIHsKICAgICBVTlVTRURfUEFSQU0oZ3JvdXBMYWJl
bCk7CiB9CkBAIC0xMzIsOSArMTMzLDkgQEAgdm9pZCBDb21tYW5kRW5jb2Rlcjo6d3JpdGVUaW1l
c3RhbXAoY29uc3QgUXVlcnlTZXQmIHF1ZXJ5U2V0LCB1aW50MzJfdCBxdWVyeUluZGUKICAgICBV
TlVTRURfUEFSQU0ocXVlcnlJbmRleCk7CiB9CiAKLXZvaWQgQ29tbWFuZEVuY29kZXI6OnNldExh
YmVsKGNvbnN0IGNoYXIqIGxhYmVsKQordm9pZCBDb21tYW5kRW5jb2Rlcjo6c2V0TGFiZWwoU3Ry
aW5nJiYgbGFiZWwpCiB7Ci0gICAgbV9jb21tYW5kQnVmZmVyLmxhYmVsID0gW05TU3RyaW5nIHN0
cmluZ1dpdGhDU3RyaW5nOmxhYmVsIGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXTsKKyAg
ICBtX2NvbW1hbmRCdWZmZXIubGFiZWwgPSBzdGF0aWNfY2FzdDxOU1N0cmluZyAqPihsYWJlbCk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkdQVQpAQCAtMTQ2LDczICsxNDcsNzMgQEAgdm9pZCB3
Z3B1Q29tbWFuZEVuY29kZXJSZWxlYXNlKFdHUFVDb21tYW5kRW5jb2RlciBjb21tYW5kRW5jb2Rl
cikKIAogV0dQVUNvbXB1dGVQYXNzRW5jb2RlciB3Z3B1Q29tbWFuZEVuY29kZXJCZWdpbkNvbXB1
dGVQYXNzKFdHUFVDb21tYW5kRW5jb2RlciBjb21tYW5kRW5jb2RlciwgY29uc3QgV0dQVUNvbXB1
dGVQYXNzRGVzY3JpcHRvciogZGVzY3JpcHRvcikKIHsKLSAgICBhdXRvIHJlc3VsdCA9IGNvbW1h
bmRFbmNvZGVyLT5jb21tYW5kRW5jb2Rlci0+YmVnaW5Db21wdXRlUGFzcygqZGVzY3JpcHRvcik7
CisgICAgYXV0byByZXN1bHQgPSBXZWJHUFU6OmZyb21BUEkoY29tbWFuZEVuY29kZXIpLmJlZ2lu
Q29tcHV0ZVBhc3MoKmRlc2NyaXB0b3IpOwogICAgIHJldHVybiByZXN1bHQgPyBuZXcgV0dQVUNv
bXB1dGVQYXNzRW5jb2RlckltcGwgeyByZXN1bHQucmVsZWFzZU5vbk51bGwoKSB9IDogbnVsbHB0
cjsKIH0KIAogV0dQVVJlbmRlclBhc3NFbmNvZGVyIHdncHVDb21tYW5kRW5jb2RlckJlZ2luUmVu
ZGVyUGFzcyhXR1BVQ29tbWFuZEVuY29kZXIgY29tbWFuZEVuY29kZXIsIGNvbnN0IFdHUFVSZW5k
ZXJQYXNzRGVzY3JpcHRvciogZGVzY3JpcHRvcikKIHsKLSAgICBhdXRvIHJlc3VsdCA9IGNvbW1h
bmRFbmNvZGVyLT5jb21tYW5kRW5jb2Rlci0+YmVnaW5SZW5kZXJQYXNzKCpkZXNjcmlwdG9yKTsK
KyAgICBhdXRvIHJlc3VsdCA9IFdlYkdQVTo6ZnJvbUFQSShjb21tYW5kRW5jb2RlcikuYmVnaW5S
ZW5kZXJQYXNzKCpkZXNjcmlwdG9yKTsKICAgICByZXR1cm4gcmVzdWx0ID8gbmV3IFdHUFVSZW5k
ZXJQYXNzRW5jb2RlckltcGwgeyByZXN1bHQucmVsZWFzZU5vbk51bGwoKSB9IDogbnVsbHB0cjsK
IH0KIAogdm9pZCB3Z3B1Q29tbWFuZEVuY29kZXJDb3B5QnVmZmVyVG9CdWZmZXIoV0dQVUNvbW1h
bmRFbmNvZGVyIGNvbW1hbmRFbmNvZGVyLCBXR1BVQnVmZmVyIHNvdXJjZSwgdWludDY0X3Qgc291
cmNlT2Zmc2V0LCBXR1BVQnVmZmVyIGRlc3RpbmF0aW9uLCB1aW50NjRfdCBkZXN0aW5hdGlvbk9m
ZnNldCwgdWludDY0X3Qgc2l6ZSkKIHsKLSAgICBjb21tYW5kRW5jb2Rlci0+Y29tbWFuZEVuY29k
ZXItPmNvcHlCdWZmZXJUb0J1ZmZlcihzb3VyY2UtPmJ1ZmZlciwgc291cmNlT2Zmc2V0LCBkZXN0
aW5hdGlvbi0+YnVmZmVyLCBkZXN0aW5hdGlvbk9mZnNldCwgc2l6ZSk7CisgICAgV2ViR1BVOjpm
cm9tQVBJKGNvbW1hbmRFbmNvZGVyKS5jb3B5QnVmZmVyVG9CdWZmZXIoV2ViR1BVOjpmcm9tQVBJ
KHNvdXJjZSksIHNvdXJjZU9mZnNldCwgV2ViR1BVOjpmcm9tQVBJKGRlc3RpbmF0aW9uKSwgZGVz
dGluYXRpb25PZmZzZXQsIHNpemUpOwogfQogCiB2b2lkIHdncHVDb21tYW5kRW5jb2RlckNvcHlC
dWZmZXJUb1RleHR1cmUoV0dQVUNvbW1hbmRFbmNvZGVyIGNvbW1hbmRFbmNvZGVyLCBjb25zdCBX
R1BVSW1hZ2VDb3B5QnVmZmVyKiBzb3VyY2UsIGNvbnN0IFdHUFVJbWFnZUNvcHlUZXh0dXJlKiBk
ZXN0aW5hdGlvbiwgY29uc3QgV0dQVUV4dGVudDNEKiBjb3B5U2l6ZSkKIHsKLSAgICBjb21tYW5k
RW5jb2Rlci0+Y29tbWFuZEVuY29kZXItPmNvcHlCdWZmZXJUb1RleHR1cmUoKnNvdXJjZSwgKmRl
c3RpbmF0aW9uLCAqY29weVNpemUpOworICAgIFdlYkdQVTo6ZnJvbUFQSShjb21tYW5kRW5jb2Rl
cikuY29weUJ1ZmZlclRvVGV4dHVyZSgqc291cmNlLCAqZGVzdGluYXRpb24sICpjb3B5U2l6ZSk7
CiB9CiAKIHZvaWQgd2dwdUNvbW1hbmRFbmNvZGVyQ29weVRleHR1cmVUb0J1ZmZlcihXR1BVQ29t
bWFuZEVuY29kZXIgY29tbWFuZEVuY29kZXIsIGNvbnN0IFdHUFVJbWFnZUNvcHlUZXh0dXJlKiBz
b3VyY2UsIGNvbnN0IFdHUFVJbWFnZUNvcHlCdWZmZXIqIGRlc3RpbmF0aW9uLCBjb25zdCBXR1BV
RXh0ZW50M0QqIGNvcHlTaXplKQogewotICAgIGNvbW1hbmRFbmNvZGVyLT5jb21tYW5kRW5jb2Rl
ci0+Y29weVRleHR1cmVUb0J1ZmZlcigqc291cmNlLCAqZGVzdGluYXRpb24sICpjb3B5U2l6ZSk7
CisgICAgV2ViR1BVOjpmcm9tQVBJKGNvbW1hbmRFbmNvZGVyKS5jb3B5VGV4dHVyZVRvQnVmZmVy
KCpzb3VyY2UsICpkZXN0aW5hdGlvbiwgKmNvcHlTaXplKTsKIH0KIAogdm9pZCB3Z3B1Q29tbWFu
ZEVuY29kZXJDb3B5VGV4dHVyZVRvVGV4dHVyZShXR1BVQ29tbWFuZEVuY29kZXIgY29tbWFuZEVu
Y29kZXIsIGNvbnN0IFdHUFVJbWFnZUNvcHlUZXh0dXJlKiBzb3VyY2UsIGNvbnN0IFdHUFVJbWFn
ZUNvcHlUZXh0dXJlKiBkZXN0aW5hdGlvbiwgY29uc3QgV0dQVUV4dGVudDNEKiBjb3B5U2l6ZSkK
IHsKLSAgICBjb21tYW5kRW5jb2Rlci0+Y29tbWFuZEVuY29kZXItPmNvcHlUZXh0dXJlVG9UZXh0
dXJlKCpzb3VyY2UsICpkZXN0aW5hdGlvbiwgKmNvcHlTaXplKTsKKyAgICBXZWJHUFU6OmZyb21B
UEkoY29tbWFuZEVuY29kZXIpLmNvcHlUZXh0dXJlVG9UZXh0dXJlKCpzb3VyY2UsICpkZXN0aW5h
dGlvbiwgKmNvcHlTaXplKTsKIH0KIAogdm9pZCB3Z3B1Q29tbWFuZEVuY29kZXJDbGVhckJ1ZmZl
cihXR1BVQ29tbWFuZEVuY29kZXIgY29tbWFuZEVuY29kZXIsIFdHUFVCdWZmZXIgYnVmZmVyLCB1
aW50NjRfdCBvZmZzZXQsIHVpbnQ2NF90IHNpemUpCiB7Ci0gICAgY29tbWFuZEVuY29kZXItPmNv
bW1hbmRFbmNvZGVyLT5jbGVhckJ1ZmZlcihidWZmZXItPmJ1ZmZlciwgb2Zmc2V0LCBzaXplKTsK
KyAgICBXZWJHUFU6OmZyb21BUEkoY29tbWFuZEVuY29kZXIpLmNsZWFyQnVmZmVyKFdlYkdQVTo6
ZnJvbUFQSShidWZmZXIpLCBvZmZzZXQsIHNpemUpOwogfQogCiBXR1BVQ29tbWFuZEJ1ZmZlciB3
Z3B1Q29tbWFuZEVuY29kZXJGaW5pc2goV0dQVUNvbW1hbmRFbmNvZGVyIGNvbW1hbmRFbmNvZGVy
LCBjb25zdCBXR1BVQ29tbWFuZEJ1ZmZlckRlc2NyaXB0b3IqIGRlc2NyaXB0b3IpCiB7Ci0gICAg
YXV0byByZXN1bHQgPSBjb21tYW5kRW5jb2Rlci0+Y29tbWFuZEVuY29kZXItPmZpbmlzaCgqZGVz
Y3JpcHRvcik7CisgICAgYXV0byByZXN1bHQgPSBXZWJHUFU6OmZyb21BUEkoY29tbWFuZEVuY29k
ZXIpLmZpbmlzaCgqZGVzY3JpcHRvcik7CiAgICAgcmV0dXJuIHJlc3VsdCA/IG5ldyBXR1BVQ29t
bWFuZEJ1ZmZlckltcGwgeyByZXN1bHQucmVsZWFzZU5vbk51bGwoKSB9IDogbnVsbHB0cjsKIH0K
IAogdm9pZCB3Z3B1Q29tbWFuZEVuY29kZXJJbnNlcnREZWJ1Z01hcmtlcihXR1BVQ29tbWFuZEVu
Y29kZXIgY29tbWFuZEVuY29kZXIsIGNvbnN0IGNoYXIqIG1hcmtlckxhYmVsKQogewotICAgIGNv
bW1hbmRFbmNvZGVyLT5jb21tYW5kRW5jb2Rlci0+aW5zZXJ0RGVidWdNYXJrZXIobWFya2VyTGFi
ZWwpOworICAgIFdlYkdQVTo6ZnJvbUFQSShjb21tYW5kRW5jb2RlcikuaW5zZXJ0RGVidWdNYXJr
ZXIoV2ViR1BVOjpmcm9tQVBJKG1hcmtlckxhYmVsKSk7CiB9CiAKIHZvaWQgd2dwdUNvbW1hbmRF
bmNvZGVyUG9wRGVidWdHcm91cChXR1BVQ29tbWFuZEVuY29kZXIgY29tbWFuZEVuY29kZXIpCiB7
Ci0gICAgY29tbWFuZEVuY29kZXItPmNvbW1hbmRFbmNvZGVyLT5wb3BEZWJ1Z0dyb3VwKCk7Cisg
ICAgV2ViR1BVOjpmcm9tQVBJKGNvbW1hbmRFbmNvZGVyKS5wb3BEZWJ1Z0dyb3VwKCk7CiB9CiAK
IHZvaWQgd2dwdUNvbW1hbmRFbmNvZGVyUHVzaERlYnVnR3JvdXAoV0dQVUNvbW1hbmRFbmNvZGVy
IGNvbW1hbmRFbmNvZGVyLCBjb25zdCBjaGFyKiBncm91cExhYmVsKQogewotICAgIGNvbW1hbmRF
bmNvZGVyLT5jb21tYW5kRW5jb2Rlci0+cHVzaERlYnVnR3JvdXAoZ3JvdXBMYWJlbCk7CisgICAg
V2ViR1BVOjpmcm9tQVBJKGNvbW1hbmRFbmNvZGVyKS5wdXNoRGVidWdHcm91cChXZWJHUFU6OmZy
b21BUEkoZ3JvdXBMYWJlbCkpOwogfQogCiB2b2lkIHdncHVDb21tYW5kRW5jb2RlclJlc29sdmVR
dWVyeVNldChXR1BVQ29tbWFuZEVuY29kZXIgY29tbWFuZEVuY29kZXIsIFdHUFVRdWVyeVNldCBx
dWVyeVNldCwgdWludDMyX3QgZmlyc3RRdWVyeSwgdWludDMyX3QgcXVlcnlDb3VudCwgV0dQVUJ1
ZmZlciBkZXN0aW5hdGlvbiwgdWludDY0X3QgZGVzdGluYXRpb25PZmZzZXQpCiB7Ci0gICAgY29t
bWFuZEVuY29kZXItPmNvbW1hbmRFbmNvZGVyLT5yZXNvbHZlUXVlcnlTZXQocXVlcnlTZXQtPnF1
ZXJ5U2V0LCBmaXJzdFF1ZXJ5LCBxdWVyeUNvdW50LCBkZXN0aW5hdGlvbi0+YnVmZmVyLCBkZXN0
aW5hdGlvbk9mZnNldCk7CisgICAgV2ViR1BVOjpmcm9tQVBJKGNvbW1hbmRFbmNvZGVyKS5yZXNv
bHZlUXVlcnlTZXQoV2ViR1BVOjpmcm9tQVBJKHF1ZXJ5U2V0KSwgZmlyc3RRdWVyeSwgcXVlcnlD
b3VudCwgV2ViR1BVOjpmcm9tQVBJKGRlc3RpbmF0aW9uKSwgZGVzdGluYXRpb25PZmZzZXQpOwog
fQogCiB2b2lkIHdncHVDb21tYW5kRW5jb2RlcldyaXRlVGltZXN0YW1wKFdHUFVDb21tYW5kRW5j
b2RlciBjb21tYW5kRW5jb2RlciwgV0dQVVF1ZXJ5U2V0IHF1ZXJ5U2V0LCB1aW50MzJfdCBxdWVy
eUluZGV4KQogewotICAgIGNvbW1hbmRFbmNvZGVyLT5jb21tYW5kRW5jb2Rlci0+d3JpdGVUaW1l
c3RhbXAocXVlcnlTZXQtPnF1ZXJ5U2V0LCBxdWVyeUluZGV4KTsKKyAgICBXZWJHUFU6OmZyb21B
UEkoY29tbWFuZEVuY29kZXIpLndyaXRlVGltZXN0YW1wKFdlYkdQVTo6ZnJvbUFQSShxdWVyeVNl
dCksIHF1ZXJ5SW5kZXgpOwogfQogCiB2b2lkIHdncHVDb21tYW5kRW5jb2RlclNldExhYmVsKFdH
UFVDb21tYW5kRW5jb2RlciBjb21tYW5kRW5jb2RlciwgY29uc3QgY2hhciogbGFiZWwpCiB7Ci0g
ICAgY29tbWFuZEVuY29kZXItPmNvbW1hbmRFbmNvZGVyLT5zZXRMYWJlbChsYWJlbCk7CisgICAg
V2ViR1BVOjpmcm9tQVBJKGNvbW1hbmRFbmNvZGVyKS5zZXRMYWJlbChXZWJHUFU6OmZyb21BUEko
bGFiZWwpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbXB1dGVQYXNz
RW5jb2Rlci5oIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tcHV0ZVBhc3NFbmNvZGVyLmgKaW5k
ZXggNDkwY2Y4YTliNGE2OTViNzRjZTI3Y2I0NzhmN2U5OGU4NDZmMGY1Mi4uMGE3YjhjYzllZTEy
ZTg0MTNlYzg3NzQzYmY1ZjY1YThmMWZjYzEyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9X
ZWJHUFUvQ29tcHV0ZVBhc3NFbmNvZGVyLmgKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29t
cHV0ZVBhc3NFbmNvZGVyLmgKQEAgLTUxLDEyICs1MSwxMiBAQCBwdWJsaWM6CiAgICAgdm9pZCBk
aXNwYXRjaEluZGlyZWN0KGNvbnN0IEJ1ZmZlciYgaW5kaXJlY3RCdWZmZXIsIHVpbnQ2NF90IGlu
ZGlyZWN0T2Zmc2V0KTsKICAgICB2b2lkIGVuZFBhc3MoKTsKICAgICB2b2lkIGVuZFBpcGVsaW5l
U3RhdGlzdGljc1F1ZXJ5KCk7Ci0gICAgdm9pZCBpbnNlcnREZWJ1Z01hcmtlcihjb25zdCBjaGFy
KiBtYXJrZXJMYWJlbCk7CisgICAgdm9pZCBpbnNlcnREZWJ1Z01hcmtlcihTdHJpbmcmJiBtYXJr
ZXJMYWJlbCk7CiAgICAgdm9pZCBwb3BEZWJ1Z0dyb3VwKCk7Ci0gICAgdm9pZCBwdXNoRGVidWdH
cm91cChjb25zdCBjaGFyKiBncm91cExhYmVsKTsKKyAgICB2b2lkIHB1c2hEZWJ1Z0dyb3VwKFN0
cmluZyYmIGdyb3VwTGFiZWwpOwogICAgIHZvaWQgc2V0QmluZEdyb3VwKHVpbnQzMl90IGdyb3Vw
SW5kZXgsIGNvbnN0IEJpbmRHcm91cCYsIHVpbnQzMl90IGR5bmFtaWNPZmZzZXRDb3VudCwgY29u
c3QgdWludDMyX3QqIGR5bmFtaWNPZmZzZXRzKTsKICAgICB2b2lkIHNldFBpcGVsaW5lKGNvbnN0
IENvbXB1dGVQaXBlbGluZSYpOwotICAgIHZvaWQgc2V0TGFiZWwoY29uc3QgY2hhciopOworICAg
IHZvaWQgc2V0TGFiZWwoU3RyaW5nJiYpOwogCiBwcml2YXRlOgogICAgIENvbXB1dGVQYXNzRW5j
b2RlcihpZDxNVExDb21wdXRlQ29tbWFuZEVuY29kZXI+KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJHUFUvV2ViR1BVL0NvbXB1dGVQYXNzRW5jb2Rlci5tbSBiL1NvdXJjZS9XZWJHUFUvV2ViR1BV
L0NvbXB1dGVQYXNzRW5jb2Rlci5tbQppbmRleCAwMjQ1ZGY5MWY3YWJlNGRkODg5NjhlY2Q0MTNl
YzJlMTI0N2EyNjA1Li4xM2U3MWFmMTg5ZTIzYmJjOTM2OWJlNTQ1ZjhmMjFmN2Q1NDcwNTY0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9Db21wdXRlUGFzc0VuY29kZXIubW0KKysr
IGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tcHV0ZVBhc3NFbmNvZGVyLm1tCkBAIC0yNiw2ICsy
Niw3IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIkNvbXB1dGVQYXNzRW5jb2Rlci5o
IgogCisjaW1wb3J0ICJBUElDb252ZXJzaW9ucy5oIgogI2ltcG9ydCAiQmluZEdyb3VwLmgiCiAj
aW1wb3J0ICJCdWZmZXIuaCIKICNpbXBvcnQgIkNvbXB1dGVQaXBlbGluZS5oIgpAQCAtNjcsNyAr
NjgsNyBAQCB2b2lkIENvbXB1dGVQYXNzRW5jb2Rlcjo6ZW5kUGlwZWxpbmVTdGF0aXN0aWNzUXVl
cnkoKQogewogfQogCi12b2lkIENvbXB1dGVQYXNzRW5jb2Rlcjo6aW5zZXJ0RGVidWdNYXJrZXIo
Y29uc3QgY2hhciogbWFya2VyTGFiZWwpCit2b2lkIENvbXB1dGVQYXNzRW5jb2Rlcjo6aW5zZXJ0
RGVidWdNYXJrZXIoU3RyaW5nJiYgbWFya2VyTGFiZWwpCiB7CiAgICAgVU5VU0VEX1BBUkFNKG1h
cmtlckxhYmVsKTsKIH0KQEAgLTc2LDcgKzc3LDcgQEAgdm9pZCBDb21wdXRlUGFzc0VuY29kZXI6
OnBvcERlYnVnR3JvdXAoKQogewogfQogCi12b2lkIENvbXB1dGVQYXNzRW5jb2Rlcjo6cHVzaERl
YnVnR3JvdXAoY29uc3QgY2hhciogZ3JvdXBMYWJlbCkKK3ZvaWQgQ29tcHV0ZVBhc3NFbmNvZGVy
OjpwdXNoRGVidWdHcm91cChTdHJpbmcmJiBncm91cExhYmVsKQogewogICAgIFVOVVNFRF9QQVJB
TShncm91cExhYmVsKTsKIH0KQEAgLTk0LDkgKzk1LDkgQEAgdm9pZCBDb21wdXRlUGFzc0VuY29k
ZXI6OnNldFBpcGVsaW5lKGNvbnN0IENvbXB1dGVQaXBlbGluZSYgcGlwZWxpbmUpCiAgICAgVU5V
U0VEX1BBUkFNKHBpcGVsaW5lKTsKIH0KIAotdm9pZCBDb21wdXRlUGFzc0VuY29kZXI6OnNldExh
YmVsKGNvbnN0IGNoYXIqIGxhYmVsKQordm9pZCBDb21wdXRlUGFzc0VuY29kZXI6OnNldExhYmVs
KFN0cmluZyYmIGxhYmVsKQogewotICAgIG1fY29tcHV0ZUNvbW1hbmRFbmNvZGVyLmxhYmVsID0g
W05TU3RyaW5nIHN0cmluZ1dpdGhDU3RyaW5nOmxhYmVsIGVuY29kaW5nOk5TVVRGOFN0cmluZ0Vu
Y29kaW5nXTsKKyAgICBtX2NvbXB1dGVDb21tYW5kRW5jb2Rlci5sYWJlbCA9IHN0YXRpY19jYXN0
PE5TU3RyaW5nICo+KGxhYmVsKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViR1BVCkBAIC0xMDgs
NTUgKzEwOSw1NSBAQCB2b2lkIHdncHVDb21wdXRlUGFzc0VuY29kZXJSZWxlYXNlKFdHUFVDb21w
dXRlUGFzc0VuY29kZXIgY29tcHV0ZVBhc3NFbmNvZGVyKQogCiB2b2lkIHdncHVDb21wdXRlUGFz
c0VuY29kZXJCZWdpblBpcGVsaW5lU3RhdGlzdGljc1F1ZXJ5KFdHUFVDb21wdXRlUGFzc0VuY29k
ZXIgY29tcHV0ZVBhc3NFbmNvZGVyLCBXR1BVUXVlcnlTZXQgcXVlcnlTZXQsIHVpbnQzMl90IHF1
ZXJ5SW5kZXgpCiB7Ci0gICAgY29tcHV0ZVBhc3NFbmNvZGVyLT5jb21wdXRlUGFzc0VuY29kZXIt
PmJlZ2luUGlwZWxpbmVTdGF0aXN0aWNzUXVlcnkocXVlcnlTZXQtPnF1ZXJ5U2V0LCBxdWVyeUlu
ZGV4KTsKKyAgICBXZWJHUFU6OmZyb21BUEkoY29tcHV0ZVBhc3NFbmNvZGVyKS5iZWdpblBpcGVs
aW5lU3RhdGlzdGljc1F1ZXJ5KFdlYkdQVTo6ZnJvbUFQSShxdWVyeVNldCksIHF1ZXJ5SW5kZXgp
OwogfQogCiB2b2lkIHdncHVDb21wdXRlUGFzc0VuY29kZXJEaXNwYXRjaChXR1BVQ29tcHV0ZVBh
c3NFbmNvZGVyIGNvbXB1dGVQYXNzRW5jb2RlciwgdWludDMyX3QgeCwgdWludDMyX3QgeSwgdWlu
dDMyX3QgeikKIHsKLSAgICBjb21wdXRlUGFzc0VuY29kZXItPmNvbXB1dGVQYXNzRW5jb2Rlci0+
ZGlzcGF0Y2goeCwgeSwgeik7CisgICAgV2ViR1BVOjpmcm9tQVBJKGNvbXB1dGVQYXNzRW5jb2Rl
cikuZGlzcGF0Y2goeCwgeSwgeik7CiB9CiAKIHZvaWQgd2dwdUNvbXB1dGVQYXNzRW5jb2RlckRp
c3BhdGNoSW5kaXJlY3QoV0dQVUNvbXB1dGVQYXNzRW5jb2RlciBjb21wdXRlUGFzc0VuY29kZXIs
IFdHUFVCdWZmZXIgaW5kaXJlY3RCdWZmZXIsIHVpbnQ2NF90IGluZGlyZWN0T2Zmc2V0KQogewot
ICAgIGNvbXB1dGVQYXNzRW5jb2Rlci0+Y29tcHV0ZVBhc3NFbmNvZGVyLT5kaXNwYXRjaEluZGly
ZWN0KGluZGlyZWN0QnVmZmVyLT5idWZmZXIsIGluZGlyZWN0T2Zmc2V0KTsKKyAgICBXZWJHUFU6
OmZyb21BUEkoY29tcHV0ZVBhc3NFbmNvZGVyKS5kaXNwYXRjaEluZGlyZWN0KFdlYkdQVTo6ZnJv
bUFQSShpbmRpcmVjdEJ1ZmZlciksIGluZGlyZWN0T2Zmc2V0KTsKIH0KIAogdm9pZCB3Z3B1Q29t
cHV0ZVBhc3NFbmNvZGVyRW5kUGFzcyhXR1BVQ29tcHV0ZVBhc3NFbmNvZGVyIGNvbXB1dGVQYXNz
RW5jb2RlcikKIHsKLSAgICBjb21wdXRlUGFzc0VuY29kZXItPmNvbXB1dGVQYXNzRW5jb2Rlci0+
ZW5kUGFzcygpOworICAgIFdlYkdQVTo6ZnJvbUFQSShjb21wdXRlUGFzc0VuY29kZXIpLmVuZFBh
c3MoKTsKIH0KIAogdm9pZCB3Z3B1Q29tcHV0ZVBhc3NFbmNvZGVyRW5kUGlwZWxpbmVTdGF0aXN0
aWNzUXVlcnkoV0dQVUNvbXB1dGVQYXNzRW5jb2RlciBjb21wdXRlUGFzc0VuY29kZXIpCiB7Ci0g
ICAgY29tcHV0ZVBhc3NFbmNvZGVyLT5jb21wdXRlUGFzc0VuY29kZXItPmVuZFBpcGVsaW5lU3Rh
dGlzdGljc1F1ZXJ5KCk7CisgICAgV2ViR1BVOjpmcm9tQVBJKGNvbXB1dGVQYXNzRW5jb2Rlciku
ZW5kUGlwZWxpbmVTdGF0aXN0aWNzUXVlcnkoKTsKIH0KIAogdm9pZCB3Z3B1Q29tcHV0ZVBhc3NF
bmNvZGVySW5zZXJ0RGVidWdNYXJrZXIoV0dQVUNvbXB1dGVQYXNzRW5jb2RlciBjb21wdXRlUGFz
c0VuY29kZXIsIGNvbnN0IGNoYXIqIG1hcmtlckxhYmVsKQogewotICAgIGNvbXB1dGVQYXNzRW5j
b2Rlci0+Y29tcHV0ZVBhc3NFbmNvZGVyLT5pbnNlcnREZWJ1Z01hcmtlcihtYXJrZXJMYWJlbCk7
CisgICAgV2ViR1BVOjpmcm9tQVBJKGNvbXB1dGVQYXNzRW5jb2RlcikuaW5zZXJ0RGVidWdNYXJr
ZXIoV2ViR1BVOjpmcm9tQVBJKG1hcmtlckxhYmVsKSk7CiB9CiAKIHZvaWQgd2dwdUNvbXB1dGVQ
YXNzRW5jb2RlclBvcERlYnVnR3JvdXAoV0dQVUNvbXB1dGVQYXNzRW5jb2RlciBjb21wdXRlUGFz
c0VuY29kZXIpCiB7Ci0gICAgY29tcHV0ZVBhc3NFbmNvZGVyLT5jb21wdXRlUGFzc0VuY29kZXIt
PnBvcERlYnVnR3JvdXAoKTsKKyAgICBXZWJHUFU6OmZyb21BUEkoY29tcHV0ZVBhc3NFbmNvZGVy
KS5wb3BEZWJ1Z0dyb3VwKCk7CiB9CiAKIHZvaWQgd2dwdUNvbXB1dGVQYXNzRW5jb2RlclB1c2hE
ZWJ1Z0dyb3VwKFdHUFVDb21wdXRlUGFzc0VuY29kZXIgY29tcHV0ZVBhc3NFbmNvZGVyLCBjb25z
dCBjaGFyKiBncm91cExhYmVsKQogewotICAgIGNvbXB1dGVQYXNzRW5jb2Rlci0+Y29tcHV0ZVBh
c3NFbmNvZGVyLT5wdXNoRGVidWdHcm91cChncm91cExhYmVsKTsKKyAgICBXZWJHUFU6OmZyb21B
UEkoY29tcHV0ZVBhc3NFbmNvZGVyKS5wdXNoRGVidWdHcm91cChXZWJHUFU6OmZyb21BUEkoZ3Jv
dXBMYWJlbCkpOwogfQogCiB2b2lkIHdncHVDb21wdXRlUGFzc0VuY29kZXJTZXRCaW5kR3JvdXAo
V0dQVUNvbXB1dGVQYXNzRW5jb2RlciBjb21wdXRlUGFzc0VuY29kZXIsIHVpbnQzMl90IGdyb3Vw
SW5kZXgsIFdHUFVCaW5kR3JvdXAgZ3JvdXAsIHVpbnQzMl90IGR5bmFtaWNPZmZzZXRDb3VudCwg
Y29uc3QgdWludDMyX3QqIGR5bmFtaWNPZmZzZXRzKQogewotICAgIGNvbXB1dGVQYXNzRW5jb2Rl
ci0+Y29tcHV0ZVBhc3NFbmNvZGVyLT5zZXRCaW5kR3JvdXAoZ3JvdXBJbmRleCwgZ3JvdXAtPmJp
bmRHcm91cCwgZHluYW1pY09mZnNldENvdW50LCBkeW5hbWljT2Zmc2V0cyk7CisgICAgV2ViR1BV
Ojpmcm9tQVBJKGNvbXB1dGVQYXNzRW5jb2Rlcikuc2V0QmluZEdyb3VwKGdyb3VwSW5kZXgsIFdl
YkdQVTo6ZnJvbUFQSShncm91cCksIGR5bmFtaWNPZmZzZXRDb3VudCwgZHluYW1pY09mZnNldHMp
OwogfQogCiB2b2lkIHdncHVDb21wdXRlUGFzc0VuY29kZXJTZXRQaXBlbGluZShXR1BVQ29tcHV0
ZVBhc3NFbmNvZGVyIGNvbXB1dGVQYXNzRW5jb2RlciwgV0dQVUNvbXB1dGVQaXBlbGluZSBwaXBl
bGluZSkKIHsKLSAgICBjb21wdXRlUGFzc0VuY29kZXItPmNvbXB1dGVQYXNzRW5jb2Rlci0+c2V0
UGlwZWxpbmUocGlwZWxpbmUtPmNvbXB1dGVQaXBlbGluZSk7CisgICAgV2ViR1BVOjpmcm9tQVBJ
KGNvbXB1dGVQYXNzRW5jb2Rlcikuc2V0UGlwZWxpbmUoV2ViR1BVOjpmcm9tQVBJKHBpcGVsaW5l
KSk7CiB9CiAKIHZvaWQgd2dwdUNvbXB1dGVQYXNzRW5jb2RlclNldExhYmVsKFdHUFVDb21wdXRl
UGFzc0VuY29kZXIgY29tcHV0ZVBhc3NFbmNvZGVyLCBjb25zdCBjaGFyKiBsYWJlbCkKIHsKLSAg
ICBjb21wdXRlUGFzc0VuY29kZXItPmNvbXB1dGVQYXNzRW5jb2Rlci0+c2V0TGFiZWwobGFiZWwp
OworICAgIFdlYkdQVTo6ZnJvbUFQSShjb21wdXRlUGFzc0VuY29kZXIpLnNldExhYmVsKFdlYkdQ
VTo6ZnJvbUFQSShsYWJlbCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUv
Q29tcHV0ZVBpcGVsaW5lLmggYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9Db21wdXRlUGlwZWxpbmUu
aAppbmRleCBhNjJhNTc2Y2QzNGJmNzRhNTUzZWQ1MTJlNGMwYTdiZTU4NzhmMzUyLi5kYjYyNTkw
MDY2OTg5NWQyN2ZmMWU0M2I1NzdlZmE5MmQxM2Q5YTBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
R1BVL1dlYkdQVS9Db21wdXRlUGlwZWxpbmUuaAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9D
b21wdXRlUGlwZWxpbmUuaApAQCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6CiAgICAgfkNvbXB1dGVQ
aXBlbGluZSgpOwogCiAgICAgUmVmPEJpbmRHcm91cExheW91dD4gZ2V0QmluZEdyb3VwTGF5b3V0
KHVpbnQzMl90IGdyb3VwSW5kZXgpOwotICAgIHZvaWQgc2V0TGFiZWwoY29uc3QgY2hhciopOwor
ICAgIHZvaWQgc2V0TGFiZWwoU3RyaW5nJiYpOwogCiAgICAgaWQ8TVRMQ29tcHV0ZVBpcGVsaW5l
U3RhdGU+IGNvbXB1dGVQaXBlbGluZVN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9jb21wdXRlUGlw
ZWxpbmVTdGF0ZTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9Db21wdXRl
UGlwZWxpbmUubW0gYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9Db21wdXRlUGlwZWxpbmUubW0KaW5k
ZXggZWJlMGYzYThiOTdjNjEzOGNlZWFhZTg4ZDY1ZGU5Yjg2YjQ4OTk5ZC4uNjBjNjc5N2E2YmRk
NzVlNmJhMDY3MTY1ZDk0NzUxOWIzNjIyMTQ3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9X
ZWJHUFUvQ29tcHV0ZVBpcGVsaW5lLm1tCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbXB1
dGVQaXBlbGluZS5tbQpAQCAtMjYsNyArMjYsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1w
b3J0ICJDb21wdXRlUGlwZWxpbmUuaCIKIAotCisjaW1wb3J0ICJBUElDb252ZXJzaW9ucy5oIgog
I2ltcG9ydCAiQmluZEdyb3VwTGF5b3V0LmgiCiAjaW1wb3J0ICJEZXZpY2UuaCIKICNpbXBvcnQg
IlBpcGVsaW5lTGF5b3V0LmgiCkBAIC0xNDgsOCArMTQ4LDggQEAgUmVmUHRyPENvbXB1dGVQaXBl
bGluZT4gRGV2aWNlOjpjcmVhdGVDb21wdXRlUGlwZWxpbmUoY29uc3QgV0dQVUNvbXB1dGVQaXBl
bGluZUQKICAgICBpZiAoZGVzY3JpcHRvci5uZXh0SW5DaGFpbiB8fCBkZXNjcmlwdG9yLmNvbXB1
dGUubmV4dEluQ2hhaW4pCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgY29uc3QgU2hh
ZGVyTW9kdWxlJiBzaGFkZXJNb2R1bGUgPSBkZXNjcmlwdG9yLmNvbXB1dGUubW9kdWxlLT5zaGFk
ZXJNb2R1bGU7Ci0gICAgY29uc3QgUGlwZWxpbmVMYXlvdXQmIHBpcGVsaW5lTGF5b3V0ID0gZGVz
Y3JpcHRvci5sYXlvdXQtPnBpcGVsaW5lTGF5b3V0OworICAgIGNvbnN0IFNoYWRlck1vZHVsZSYg
c2hhZGVyTW9kdWxlID0gV2ViR1BVOjpmcm9tQVBJKGRlc2NyaXB0b3IuY29tcHV0ZS5tb2R1bGUp
OworICAgIGNvbnN0IFBpcGVsaW5lTGF5b3V0JiBwaXBlbGluZUxheW91dCA9IFdlYkdQVTo6ZnJv
bUFQSShkZXNjcmlwdG9yLmxheW91dCk7CiAgICAgYXV0byBsYWJlbCA9IFtOU1N0cmluZyBzdHJp
bmdXaXRoQ1N0cmluZzpkZXNjcmlwdG9yLmxhYmVsIGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29k
aW5nXTsKIAogICAgIGF1dG8gbGlicmFyeUNyZWF0aW9uUmVzdWx0ID0gY3JlYXRlTGlicmFyeSht
X2RldmljZSwgc2hhZGVyTW9kdWxlLCBwaXBlbGluZUxheW91dCwgZGVzY3JpcHRvci5jb21wdXRl
LmVudHJ5UG9pbnQsIGxhYmVsKTsKQEAgLTE3MCw3ICsxNzAsNyBAQCBSZWZQdHI8Q29tcHV0ZVBp
cGVsaW5lPiBEZXZpY2U6OmNyZWF0ZUNvbXB1dGVQaXBlbGluZShjb25zdCBXR1BVQ29tcHV0ZVBp
cGVsaW5lRAogICAgIHJldHVybiBDb21wdXRlUGlwZWxpbmU6OmNyZWF0ZShjb21wdXRlUGlwZWxp
bmVTdGF0ZSk7CiB9CiAKLXZvaWQgRGV2aWNlOjpjcmVhdGVDb21wdXRlUGlwZWxpbmVBc3luYyhj
b25zdCBXR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciYgZGVzY3JpcHRvciwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChXR1BVQ3JlYXRlUGlwZWxpbmVBc3luY1N0YXR1cywgUmVmUHRyPENvbXB1
dGVQaXBlbGluZT4mJiwgY29uc3QgY2hhciogbWVzc2FnZSk+JiYgY2FsbGJhY2spCit2b2lkIERl
dmljZTo6Y3JlYXRlQ29tcHV0ZVBpcGVsaW5lQXN5bmMoY29uc3QgV0dQVUNvbXB1dGVQaXBlbGlu
ZURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV0dQVUNyZWF0
ZVBpcGVsaW5lQXN5bmNTdGF0dXMsIFJlZlB0cjxDb21wdXRlUGlwZWxpbmU+JiYsIFN0cmluZyYm
IG1lc3NhZ2UpPiYmIGNhbGxiYWNrKQogewogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcwog
ICAgIFVOVVNFRF9QQVJBTShkZXNjcmlwdG9yKTsKQEAgLTE5MCw3ICsxOTAsNyBAQCBSZWY8Qmlu
ZEdyb3VwTGF5b3V0PiBDb21wdXRlUGlwZWxpbmU6OmdldEJpbmRHcm91cExheW91dCh1aW50MzJf
dCBncm91cEluZGV4KQogICAgIHJldHVybiBCaW5kR3JvdXBMYXlvdXQ6OmNyZWF0ZShuaWwsIG5p
bCwgbmlsKTsKIH0KIAotdm9pZCBDb21wdXRlUGlwZWxpbmU6OnNldExhYmVsKGNvbnN0IGNoYXIq
KQordm9pZCBDb21wdXRlUGlwZWxpbmU6OnNldExhYmVsKFN0cmluZyYmKQogewogICAgIC8vIE1U
TENvbXB1dGVQaXBlbGluZVN0YXRlJ3MgbGFiZWxzIGFyZSByZWFkLW9ubHkuCiB9CkBAIC0yMDQs
MTAgKzIwNCwxMCBAQCB2b2lkIHdncHVDb21wdXRlUGlwZWxpbmVSZWxlYXNlKFdHUFVDb21wdXRl
UGlwZWxpbmUgY29tcHV0ZVBpcGVsaW5lKQogCiBXR1BVQmluZEdyb3VwTGF5b3V0IHdncHVDb21w
dXRlUGlwZWxpbmVHZXRCaW5kR3JvdXBMYXlvdXQoV0dQVUNvbXB1dGVQaXBlbGluZSBjb21wdXRl
UGlwZWxpbmUsIHVpbnQzMl90IGdyb3VwSW5kZXgpCiB7Ci0gICAgcmV0dXJuIG5ldyBXR1BVQmlu
ZEdyb3VwTGF5b3V0SW1wbCB7IGNvbXB1dGVQaXBlbGluZS0+Y29tcHV0ZVBpcGVsaW5lLT5nZXRC
aW5kR3JvdXBMYXlvdXQoZ3JvdXBJbmRleCkgfTsKKyAgICByZXR1cm4gbmV3IFdHUFVCaW5kR3Jv
dXBMYXlvdXRJbXBsIHsgV2ViR1BVOjpmcm9tQVBJKGNvbXB1dGVQaXBlbGluZSkuZ2V0QmluZEdy
b3VwTGF5b3V0KGdyb3VwSW5kZXgpIH07CiB9CiAKIHZvaWQgd2dwdUNvbXB1dGVQaXBlbGluZVNl
dExhYmVsKFdHUFVDb21wdXRlUGlwZWxpbmUgY29tcHV0ZVBpcGVsaW5lLCBjb25zdCBjaGFyKiBs
YWJlbCkKIHsKLSAgICBjb21wdXRlUGlwZWxpbmUtPmNvbXB1dGVQaXBlbGluZS0+c2V0TGFiZWwo
bGFiZWwpOworICAgIFdlYkdQVTo6ZnJvbUFQSShjb21wdXRlUGlwZWxpbmUpLnNldExhYmVsKFdl
YkdQVTo6ZnJvbUFQSShsYWJlbCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJH
UFUvRGV2aWNlLmggYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9EZXZpY2UuaAppbmRleCAzNzc4NGM4
ZGYxYzBhZGE2NjQ4MTg5MTRlNjJjM2NkMDMwNWEyMTczLi4wMTNjYWM4NzhiODJmMzIzN2Q1ZWJk
YjQ2YmQyMWVjNjkyMDc1MDAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9EZXZp
Y2UuaAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9EZXZpY2UuaApAQCAtNTMsNyArNTMsNyBA
QCBjbGFzcyBUZXh0dXJlOwogY2xhc3MgRGV2aWNlIDogcHVibGljIFJlZkNvdW50ZWQ8RGV2aWNl
PiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJl
ZlB0cjxEZXZpY2U+IGNyZWF0ZShpZDxNVExEZXZpY2U+LCBjb25zdCBjaGFyKiBkZXZpY2VMYWJl
bCk7CisgICAgc3RhdGljIFJlZlB0cjxEZXZpY2U+IGNyZWF0ZShpZDxNVExEZXZpY2U+LCBTdHJp
bmcmJiBkZXZpY2VMYWJlbCk7CiAKICAgICB+RGV2aWNlKCk7CiAKQEAgLTYyLDEyICs2MiwxMiBA
QCBwdWJsaWM6CiAgICAgUmVmUHRyPEJ1ZmZlcj4gY3JlYXRlQnVmZmVyKGNvbnN0IFdHUFVCdWZm
ZXJEZXNjcmlwdG9yJik7CiAgICAgUmVmUHRyPENvbW1hbmRFbmNvZGVyPiBjcmVhdGVDb21tYW5k
RW5jb2Rlcihjb25zdCBXR1BVQ29tbWFuZEVuY29kZXJEZXNjcmlwdG9yJik7CiAgICAgUmVmUHRy
PENvbXB1dGVQaXBlbGluZT4gY3JlYXRlQ29tcHV0ZVBpcGVsaW5lKGNvbnN0IFdHUFVDb21wdXRl
UGlwZWxpbmVEZXNjcmlwdG9yJik7Ci0gICAgdm9pZCBjcmVhdGVDb21wdXRlUGlwZWxpbmVBc3lu
Yyhjb25zdCBXR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoV0dQVUNyZWF0ZVBpcGVsaW5lQXN5bmNTdGF0dXMsIFJlZlB0cjxDb21wdXRlUGlwZWxp
bmU+JiYsIGNvbnN0IGNoYXIqIG1lc3NhZ2UpPiYmIGNhbGxiYWNrKTsKKyAgICB2b2lkIGNyZWF0
ZUNvbXB1dGVQaXBlbGluZUFzeW5jKGNvbnN0IFdHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9y
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXR1BVQ3JlYXRlUGlwZWxpbmVBc3luY1N0YXR1cywg
UmVmUHRyPENvbXB1dGVQaXBlbGluZT4mJiwgU3RyaW5nJiYgbWVzc2FnZSk+JiYgY2FsbGJhY2sp
OwogICAgIFJlZlB0cjxQaXBlbGluZUxheW91dD4gY3JlYXRlUGlwZWxpbmVMYXlvdXQoY29uc3Qg
V0dQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvciYpOwogICAgIFJlZlB0cjxRdWVyeVNldD4gY3Jl
YXRlUXVlcnlTZXQoY29uc3QgV0dQVVF1ZXJ5U2V0RGVzY3JpcHRvciYpOwogICAgIFJlZlB0cjxS
ZW5kZXJCdW5kbGVFbmNvZGVyPiBjcmVhdGVSZW5kZXJCdW5kbGVFbmNvZGVyKGNvbnN0IFdHUFVS
ZW5kZXJCdW5kbGVFbmNvZGVyRGVzY3JpcHRvciYpOwogICAgIFJlZlB0cjxSZW5kZXJQaXBlbGlu
ZT4gY3JlYXRlUmVuZGVyUGlwZWxpbmUoY29uc3QgV0dQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRv
ciYpOwotICAgIHZvaWQgY3JlYXRlUmVuZGVyUGlwZWxpbmVBc3luYyhjb25zdCBXR1BVUmVuZGVy
UGlwZWxpbmVEZXNjcmlwdG9yJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXR1BVQ3JlYXRlUGlw
ZWxpbmVBc3luY1N0YXR1cywgUmVmUHRyPFJlbmRlclBpcGVsaW5lPiYmLCBjb25zdCBjaGFyKiBt
ZXNzYWdlKT4mJiBjYWxsYmFjayk7CisgICAgdm9pZCBjcmVhdGVSZW5kZXJQaXBlbGluZUFzeW5j
KGNvbnN0IFdHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3ImLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFdHUFVDcmVhdGVQaXBlbGluZUFzeW5jU3RhdHVzLCBSZWZQdHI8UmVuZGVyUGlwZWxpbmU+
JiYsIFN0cmluZyYmIG1lc3NhZ2UpPiYmIGNhbGxiYWNrKTsKICAgICBSZWZQdHI8U2FtcGxlcj4g
Y3JlYXRlU2FtcGxlcihjb25zdCBXR1BVU2FtcGxlckRlc2NyaXB0b3ImKTsKICAgICBSZWZQdHI8
U2hhZGVyTW9kdWxlPiBjcmVhdGVTaGFkZXJNb2R1bGUoY29uc3QgV0dQVVNoYWRlck1vZHVsZURl
c2NyaXB0b3ImKTsKICAgICBSZWZQdHI8U3dhcENoYWluPiBjcmVhdGVTd2FwQ2hhaW4oY29uc3Qg
U3VyZmFjZSYsIGNvbnN0IFdHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yJik7CkBAIC03NywxMSArNzcs
MTEgQEAgcHVibGljOgogICAgIGJvb2wgZ2V0TGltaXRzKFdHUFVTdXBwb3J0ZWRMaW1pdHMmKTsK
ICAgICBRdWV1ZSYgZ2V0UXVldWUoKTsKICAgICBib29sIGhhc0ZlYXR1cmUoV0dQVUZlYXR1cmVO
YW1lKTsKLSAgICBib29sIHBvcEVycm9yU2NvcGUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXR1BV
RXJyb3JUeXBlLCBjb25zdCBjaGFyKik+JiYgY2FsbGJhY2spOworICAgIGJvb2wgcG9wRXJyb3JT
Y29wZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdHUFVFcnJvclR5cGUsIFN0cmluZyYmKT4mJiBj
YWxsYmFjayk7CiAgICAgdm9pZCBwdXNoRXJyb3JTY29wZShXR1BVRXJyb3JGaWx0ZXIpOwotICAg
IHZvaWQgc2V0RGV2aWNlTG9zdENhbGxiYWNrKEZ1bmN0aW9uPHZvaWQoV0dQVURldmljZUxvc3RS
ZWFzb24sIGNvbnN0IGNoYXIqKT4mJik7Ci0gICAgdm9pZCBzZXRVbmNhcHR1cmVkRXJyb3JDYWxs
YmFjayhGdW5jdGlvbjx2b2lkKFdHUFVFcnJvclR5cGUsIGNvbnN0IGNoYXIqKT4mJik7Ci0gICAg
dm9pZCBzZXRMYWJlbChjb25zdCBjaGFyKik7CisgICAgdm9pZCBzZXREZXZpY2VMb3N0Q2FsbGJh
Y2soRnVuY3Rpb248dm9pZChXR1BVRGV2aWNlTG9zdFJlYXNvbiwgU3RyaW5nJiYpPiYmKTsKKyAg
ICB2b2lkIHNldFVuY2FwdHVyZWRFcnJvckNhbGxiYWNrKEZ1bmN0aW9uPHZvaWQoV0dQVUVycm9y
VHlwZSwgU3RyaW5nJiYpPiYmKTsKKyAgICB2b2lkIHNldExhYmVsKFN0cmluZyYmKTsKIAogcHJp
dmF0ZToKICAgICBEZXZpY2UoaWQ8TVRMRGV2aWNlPiwgUmVmPFF1ZXVlPiYmKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0RldmljZS5tbSBiL1NvdXJjZS9XZWJHUFUvV2ViR1BV
L0RldmljZS5tbQppbmRleCBmMmJmYjRhZTYyNDEwOTZiZjcwYTkyMGY4OWFhMjdiNWViNTY5ODBk
Li4xMDlmZGU3NWE4MWZlZDQ3ZTAxZjJkZDJmYzA2ZDAyZTg1MDhjMWE1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViR1BVL1dlYkdQVS9EZXZpY2UubW0KKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUv
RGV2aWNlLm1tCkBAIC0yNiw2ICsyNiw3IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQg
IkRldmljZS5oIgogCisjaW1wb3J0ICJBUElDb252ZXJzaW9ucy5oIgogI2ltcG9ydCAiQmluZEdy
b3VwLmgiCiAjaW1wb3J0ICJCaW5kR3JvdXBMYXlvdXQuaCIKICNpbXBvcnQgIkJ1ZmZlci5oIgpA
QCAtNDUsNyArNDYsNyBAQAogCiBuYW1lc3BhY2UgV2ViR1BVIHsKIAotUmVmUHRyPERldmljZT4g
RGV2aWNlOjpjcmVhdGUoaWQ8TVRMRGV2aWNlPiBkZXZpY2UsIGNvbnN0IGNoYXIqIGRldmljZUxh
YmVsKQorUmVmUHRyPERldmljZT4gRGV2aWNlOjpjcmVhdGUoaWQ8TVRMRGV2aWNlPiBkZXZpY2Us
IFN0cmluZyYmIGRldmljZUxhYmVsKQogewogICAgIGlkPE1UTENvbW1hbmRRdWV1ZT4gY29tbWFu
ZFF1ZXVlID0gW2RldmljZSBuZXdDb21tYW5kUXVldWVdOwogICAgIGlmICghY29tbWFuZFF1ZXVl
KQpAQCAtNTUsOCArNTYsOCBAQCBSZWZQdHI8RGV2aWNlPiBEZXZpY2U6OmNyZWF0ZShpZDxNVExE
ZXZpY2U+IGRldmljZSwgY29uc3QgY2hhciogZGV2aWNlTGFiZWwpCiAgICAgLy8gU2VlIHRoZSBj
b21tZW50IGluIERldmljZTo6c2V0TGFiZWwoKSBhYm91dCB3aHkgd2UncmUgbm90IHNldHRpbmcg
dGhlIGxhYmVsIG9uIHRoZSBNVExEZXZpY2UgaGVyZS4KIAogICAgIGNvbW1hbmRRdWV1ZS5sYWJl
bCA9IEAiRGVmYXVsdCBxdWV1ZSI7Ci0gICAgaWYgKGRldmljZUxhYmVsICYmIGRldmljZUxhYmVs
WzBdICE9ICdcMCcpCi0gICAgICAgIGNvbW1hbmRRdWV1ZS5sYWJlbCA9IFtOU1N0cmluZyBzdHJp
bmdXaXRoRm9ybWF0OkAiRGVmYXVsdCBxdWV1ZSBmb3IgZGV2aWNlICVzIiwgZGV2aWNlTGFiZWxd
OworICAgIGlmICghZGV2aWNlTGFiZWwuaXNFbXB0eSgpKQorICAgICAgICBjb21tYW5kUXVldWUu
bGFiZWwgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIkRlZmF1bHQgcXVldWUgZm9yIGRl
dmljZSAlcyIsIGRldmljZUxhYmVsLnV0ZjgoKS5kYXRhKCldOwogCiAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgRGV2aWNlKGRldmljZSwgV1RGTW92ZShxdWV1ZSkpKTsKIH0KQEAgLTEwMSw3ICsx
MDIsNyBAQCBib29sIERldmljZTo6aGFzRmVhdHVyZShXR1BVRmVhdHVyZU5hbWUpCiAgICAgcmV0
dXJuIGZhbHNlOwogfQogCi1ib29sIERldmljZTo6cG9wRXJyb3JTY29wZShDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFdHUFVFcnJvclR5cGUsIGNvbnN0IGNoYXIqKT4mJiBjYWxsYmFjaykKK2Jvb2wg
RGV2aWNlOjpwb3BFcnJvclNjb3BlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV0dQVUVycm9yVHlw
ZSwgU3RyaW5nJiYpPiYmIGNhbGxiYWNrKQogewogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhp
cy4KICAgICBVTlVTRURfUEFSQU0oY2FsbGJhY2spOwpAQCAtMTE0LDE5ICsxMTUsMTkgQEAgdm9p
ZCBEZXZpY2U6OnB1c2hFcnJvclNjb3BlKFdHUFVFcnJvckZpbHRlciBmaWx0ZXIpCiAgICAgVU5V
U0VEX1BBUkFNKGZpbHRlcik7CiB9CiAKLXZvaWQgRGV2aWNlOjpzZXREZXZpY2VMb3N0Q2FsbGJh
Y2soRnVuY3Rpb248dm9pZChXR1BVRGV2aWNlTG9zdFJlYXNvbiwgY29uc3QgY2hhciopPiYmIGNh
bGxiYWNrKQordm9pZCBEZXZpY2U6OnNldERldmljZUxvc3RDYWxsYmFjayhGdW5jdGlvbjx2b2lk
KFdHUFVEZXZpY2VMb3N0UmVhc29uLCBTdHJpbmcmJik+JiYgY2FsbGJhY2spCiB7CiAgICAgLy8g
RklYTUU6IEltcGxlbWVudCB0aGlzLgogICAgIFVOVVNFRF9QQVJBTShjYWxsYmFjayk7CiB9CiAK
LXZvaWQgRGV2aWNlOjpzZXRVbmNhcHR1cmVkRXJyb3JDYWxsYmFjayhGdW5jdGlvbjx2b2lkKFdH
UFVFcnJvclR5cGUsIGNvbnN0IGNoYXIqKT4mJiBjYWxsYmFjaykKK3ZvaWQgRGV2aWNlOjpzZXRV
bmNhcHR1cmVkRXJyb3JDYWxsYmFjayhGdW5jdGlvbjx2b2lkKFdHUFVFcnJvclR5cGUsIFN0cmlu
ZyYmKT4mJiBjYWxsYmFjaykKIHsKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMuCiAgICAg
VU5VU0VEX1BBUkFNKGNhbGxiYWNrKTsKIH0KIAotdm9pZCBEZXZpY2U6OnNldExhYmVsKGNvbnN0
IGNoYXIqKQordm9pZCBEZXZpY2U6OnNldExhYmVsKFN0cmluZyYmKQogewogICAgIC8vIEJlY2F1
c2UgTVRMRGV2aWNlcyBhcmUgcHJvY2Vzcy1nbG9iYWwsIHdlIGNhbid0IHNldCB0aGUgbGFiZWwg
b24gaXQsIGJlY2F1c2UgMiBjb250ZXh0cycgbGFiZWxzIHdvdWxkIGZpZ2h0IGVhY2ggb3RoZXIu
CiB9CkBAIC0xNDAsMTIzICsxNDEsMTIzIEBAIHZvaWQgd2dwdURldmljZVJlbGVhc2UoV0dQVURl
dmljZSBkZXZpY2UpCiAKIFdHUFVCaW5kR3JvdXAgd2dwdURldmljZUNyZWF0ZUJpbmRHcm91cChX
R1BVRGV2aWNlIGRldmljZSwgY29uc3QgV0dQVUJpbmRHcm91cERlc2NyaXB0b3IqIGRlc2NyaXB0
b3IpCiB7Ci0gICAgYXV0byByZXN1bHQgPSBkZXZpY2UtPmRldmljZS0+Y3JlYXRlQmluZEdyb3Vw
KCpkZXNjcmlwdG9yKTsKKyAgICBhdXRvIHJlc3VsdCA9IFdlYkdQVTo6ZnJvbUFQSShkZXZpY2Up
LmNyZWF0ZUJpbmRHcm91cCgqZGVzY3JpcHRvcik7CiAgICAgcmV0dXJuIHJlc3VsdCA/IG5ldyBX
R1BVQmluZEdyb3VwSW1wbCB7IHJlc3VsdC5yZWxlYXNlTm9uTnVsbCgpIH0gOiBudWxscHRyOwog
fQogCiBXR1BVQmluZEdyb3VwTGF5b3V0IHdncHVEZXZpY2VDcmVhdGVCaW5kR3JvdXBMYXlvdXQo
V0dQVURldmljZSBkZXZpY2UsIGNvbnN0IFdHUFVCaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yKiBk
ZXNjcmlwdG9yKQogewotICAgIGF1dG8gcmVzdWx0ID0gZGV2aWNlLT5kZXZpY2UtPmNyZWF0ZUJp
bmRHcm91cExheW91dCgqZGVzY3JpcHRvcik7CisgICAgYXV0byByZXN1bHQgPSBXZWJHUFU6OmZy
b21BUEkoZGV2aWNlKS5jcmVhdGVCaW5kR3JvdXBMYXlvdXQoKmRlc2NyaXB0b3IpOwogICAgIHJl
dHVybiByZXN1bHQgPyBuZXcgV0dQVUJpbmRHcm91cExheW91dEltcGwgeyByZXN1bHQucmVsZWFz
ZU5vbk51bGwoKSB9IDogbnVsbHB0cjsKIH0KIAogV0dQVUJ1ZmZlciB3Z3B1RGV2aWNlQ3JlYXRl
QnVmZmVyKFdHUFVEZXZpY2UgZGV2aWNlLCBjb25zdCBXR1BVQnVmZmVyRGVzY3JpcHRvciogZGVz
Y3JpcHRvcikKIHsKLSAgICBhdXRvIHJlc3VsdCA9IGRldmljZS0+ZGV2aWNlLT5jcmVhdGVCdWZm
ZXIoKmRlc2NyaXB0b3IpOworICAgIGF1dG8gcmVzdWx0ID0gV2ViR1BVOjpmcm9tQVBJKGRldmlj
ZSkuY3JlYXRlQnVmZmVyKCpkZXNjcmlwdG9yKTsKICAgICByZXR1cm4gcmVzdWx0ID8gbmV3IFdH
UFVCdWZmZXJJbXBsIHsgcmVzdWx0LnJlbGVhc2VOb25OdWxsKCkgfSA6IG51bGxwdHI7CiB9CiAK
IFdHUFVDb21tYW5kRW5jb2RlciB3Z3B1RGV2aWNlQ3JlYXRlQ29tbWFuZEVuY29kZXIoV0dQVURl
dmljZSBkZXZpY2UsIGNvbnN0IFdHUFVDb21tYW5kRW5jb2RlckRlc2NyaXB0b3IqIGRlc2NyaXB0
b3IpCiB7Ci0gICAgYXV0byByZXN1bHQgPSBkZXZpY2UtPmRldmljZS0+Y3JlYXRlQ29tbWFuZEVu
Y29kZXIoKmRlc2NyaXB0b3IpOworICAgIGF1dG8gcmVzdWx0ID0gV2ViR1BVOjpmcm9tQVBJKGRl
dmljZSkuY3JlYXRlQ29tbWFuZEVuY29kZXIoKmRlc2NyaXB0b3IpOwogICAgIHJldHVybiByZXN1
bHQgPyBuZXcgV0dQVUNvbW1hbmRFbmNvZGVySW1wbCB7IHJlc3VsdC5yZWxlYXNlTm9uTnVsbCgp
IH0gOiBudWxscHRyOwogfQogCiBXR1BVQ29tcHV0ZVBpcGVsaW5lIHdncHVEZXZpY2VDcmVhdGVD
b21wdXRlUGlwZWxpbmUoV0dQVURldmljZSBkZXZpY2UsIGNvbnN0IFdHUFVDb21wdXRlUGlwZWxp
bmVEZXNjcmlwdG9yKiBkZXNjcmlwdG9yKQogewotICAgIGF1dG8gcmVzdWx0ID0gZGV2aWNlLT5k
ZXZpY2UtPmNyZWF0ZUNvbXB1dGVQaXBlbGluZSgqZGVzY3JpcHRvcik7CisgICAgYXV0byByZXN1
bHQgPSBXZWJHUFU6OmZyb21BUEkoZGV2aWNlKS5jcmVhdGVDb21wdXRlUGlwZWxpbmUoKmRlc2Ny
aXB0b3IpOwogICAgIHJldHVybiByZXN1bHQgPyBuZXcgV0dQVUNvbXB1dGVQaXBlbGluZUltcGwg
eyByZXN1bHQucmVsZWFzZU5vbk51bGwoKSB9IDogbnVsbHB0cjsKIH0KIAogdm9pZCB3Z3B1RGV2
aWNlQ3JlYXRlQ29tcHV0ZVBpcGVsaW5lQXN5bmMoV0dQVURldmljZSBkZXZpY2UsIGNvbnN0IFdH
UFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yKiBkZXNjcmlwdG9yLCBXR1BVQ3JlYXRlQ29tcHV0
ZVBpcGVsaW5lQXN5bmNDYWxsYmFjayBjYWxsYmFjaywgdm9pZCogdXNlcmRhdGEpCiB7Ci0gICAg
ZGV2aWNlLT5kZXZpY2UtPmNyZWF0ZUNvbXB1dGVQaXBlbGluZUFzeW5jKCpkZXNjcmlwdG9yLCBb
Y2FsbGJhY2ssIHVzZXJkYXRhXSAoV0dQVUNyZWF0ZVBpcGVsaW5lQXN5bmNTdGF0dXMgc3RhdHVz
LCBSZWZQdHI8V2ViR1BVOjpDb21wdXRlUGlwZWxpbmU+JiYgcGlwZWxpbmUsIGNvbnN0IGNoYXIq
IG1lc3NhZ2UpIHsKLSAgICAgICAgY2FsbGJhY2soc3RhdHVzLCBwaXBlbGluZSA/IG5ldyBXR1BV
Q29tcHV0ZVBpcGVsaW5lSW1wbCB7IHBpcGVsaW5lLnJlbGVhc2VOb25OdWxsKCkgfSA6IG51bGxw
dHIsIG1lc3NhZ2UsIHVzZXJkYXRhKTsKKyAgICBXZWJHUFU6OmZyb21BUEkoZGV2aWNlKS5jcmVh
dGVDb21wdXRlUGlwZWxpbmVBc3luYygqZGVzY3JpcHRvciwgW2NhbGxiYWNrLCB1c2VyZGF0YV0g
KFdHUFVDcmVhdGVQaXBlbGluZUFzeW5jU3RhdHVzIHN0YXR1cywgUmVmUHRyPFdlYkdQVTo6Q29t
cHV0ZVBpcGVsaW5lPiYmIHBpcGVsaW5lLCBTdHJpbmcmJiBtZXNzYWdlKSB7CisgICAgICAgIGNh
bGxiYWNrKHN0YXR1cywgcGlwZWxpbmUgPyBuZXcgV0dQVUNvbXB1dGVQaXBlbGluZUltcGwgeyBw
aXBlbGluZS5yZWxlYXNlTm9uTnVsbCgpIH0gOiBudWxscHRyLCBtZXNzYWdlLnV0ZjgoKS5kYXRh
KCksIHVzZXJkYXRhKTsKICAgICB9KTsKIH0KIAogdm9pZCB3Z3B1RGV2aWNlQ3JlYXRlQ29tcHV0
ZVBpcGVsaW5lQXN5bmNXaXRoQmxvY2soV0dQVURldmljZSBkZXZpY2UsIFdHUFVDb21wdXRlUGlw
ZWxpbmVEZXNjcmlwdG9yIGNvbnN0ICogZGVzY3JpcHRvciwgV0dQVUNyZWF0ZUNvbXB1dGVQaXBl
bGluZUFzeW5jQmxvY2tDYWxsYmFjayBjYWxsYmFjaykKIHsKLSAgICBkZXZpY2UtPmRldmljZS0+
Y3JlYXRlQ29tcHV0ZVBpcGVsaW5lQXN5bmMoKmRlc2NyaXB0b3IsIFtjYWxsYmFja10gKFdHUFVD
cmVhdGVQaXBlbGluZUFzeW5jU3RhdHVzIHN0YXR1cywgUmVmUHRyPFdlYkdQVTo6Q29tcHV0ZVBp
cGVsaW5lPiYmIHBpcGVsaW5lLCBjb25zdCBjaGFyKiBtZXNzYWdlKSB7Ci0gICAgICAgIGNhbGxi
YWNrKHN0YXR1cywgcGlwZWxpbmUgPyBuZXcgV0dQVUNvbXB1dGVQaXBlbGluZUltcGwgeyBwaXBl
bGluZS5yZWxlYXNlTm9uTnVsbCgpIH0gOiBudWxscHRyLCBtZXNzYWdlKTsKKyAgICBXZWJHUFU6
OmZyb21BUEkoZGV2aWNlKS5jcmVhdGVDb21wdXRlUGlwZWxpbmVBc3luYygqZGVzY3JpcHRvciwg
W2NhbGxiYWNrXSAoV0dQVUNyZWF0ZVBpcGVsaW5lQXN5bmNTdGF0dXMgc3RhdHVzLCBSZWZQdHI8
V2ViR1BVOjpDb21wdXRlUGlwZWxpbmU+JiYgcGlwZWxpbmUsIFN0cmluZyYmIG1lc3NhZ2UpIHsK
KyAgICAgICAgY2FsbGJhY2soc3RhdHVzLCBwaXBlbGluZSA/IG5ldyBXR1BVQ29tcHV0ZVBpcGVs
aW5lSW1wbCB7IHBpcGVsaW5lLnJlbGVhc2VOb25OdWxsKCkgfSA6IG51bGxwdHIsIG1lc3NhZ2Uu
dXRmOCgpLmRhdGEoKSk7CiAgICAgfSk7CiB9CiAKIFdHUFVQaXBlbGluZUxheW91dCB3Z3B1RGV2
aWNlQ3JlYXRlUGlwZWxpbmVMYXlvdXQoV0dQVURldmljZSBkZXZpY2UsIGNvbnN0IFdHUFVQaXBl
bGluZUxheW91dERlc2NyaXB0b3IqIGRlc2NyaXB0b3IpCiB7Ci0gICAgYXV0byByZXN1bHQgPSBk
ZXZpY2UtPmRldmljZS0+Y3JlYXRlUGlwZWxpbmVMYXlvdXQoKmRlc2NyaXB0b3IpOworICAgIGF1
dG8gcmVzdWx0ID0gV2ViR1BVOjpmcm9tQVBJKGRldmljZSkuY3JlYXRlUGlwZWxpbmVMYXlvdXQo
KmRlc2NyaXB0b3IpOwogICAgIHJldHVybiByZXN1bHQgPyBuZXcgV0dQVVBpcGVsaW5lTGF5b3V0
SW1wbCB7IHJlc3VsdC5yZWxlYXNlTm9uTnVsbCgpIH0gOiBudWxscHRyOwogfQogCiBXR1BVUXVl
cnlTZXQgd2dwdURldmljZUNyZWF0ZVF1ZXJ5U2V0KFdHUFVEZXZpY2UgZGV2aWNlLCBjb25zdCBX
R1BVUXVlcnlTZXREZXNjcmlwdG9yKiBkZXNjcmlwdG9yKQogewotICAgIGF1dG8gcmVzdWx0ID0g
ZGV2aWNlLT5kZXZpY2UtPmNyZWF0ZVF1ZXJ5U2V0KCpkZXNjcmlwdG9yKTsKKyAgICBhdXRvIHJl
c3VsdCA9IFdlYkdQVTo6ZnJvbUFQSShkZXZpY2UpLmNyZWF0ZVF1ZXJ5U2V0KCpkZXNjcmlwdG9y
KTsKICAgICByZXR1cm4gcmVzdWx0ID8gbmV3IFdHUFVRdWVyeVNldEltcGwgeyByZXN1bHQucmVs
ZWFzZU5vbk51bGwoKSB9IDogbnVsbHB0cjsKIH0KIAogV0dQVVJlbmRlckJ1bmRsZUVuY29kZXIg
d2dwdURldmljZUNyZWF0ZVJlbmRlckJ1bmRsZUVuY29kZXIoV0dQVURldmljZSBkZXZpY2UsIGNv
bnN0IFdHUFVSZW5kZXJCdW5kbGVFbmNvZGVyRGVzY3JpcHRvciogZGVzY3JpcHRvcikKIHsKLSAg
ICBhdXRvIHJlc3VsdCA9IGRldmljZS0+ZGV2aWNlLT5jcmVhdGVSZW5kZXJCdW5kbGVFbmNvZGVy
KCpkZXNjcmlwdG9yKTsKKyAgICBhdXRvIHJlc3VsdCA9IFdlYkdQVTo6ZnJvbUFQSShkZXZpY2Up
LmNyZWF0ZVJlbmRlckJ1bmRsZUVuY29kZXIoKmRlc2NyaXB0b3IpOwogICAgIHJldHVybiByZXN1
bHQgPyBuZXcgV0dQVVJlbmRlckJ1bmRsZUVuY29kZXJJbXBsIHsgcmVzdWx0LnJlbGVhc2VOb25O
dWxsKCkgfSA6IG51bGxwdHI7CiB9CiAKIFdHUFVSZW5kZXJQaXBlbGluZSB3Z3B1RGV2aWNlQ3Jl
YXRlUmVuZGVyUGlwZWxpbmUoV0dQVURldmljZSBkZXZpY2UsIGNvbnN0IFdHUFVSZW5kZXJQaXBl
bGluZURlc2NyaXB0b3IqIGRlc2NyaXB0b3IpCiB7Ci0gICAgYXV0byByZXN1bHQgPSBkZXZpY2Ut
PmRldmljZS0+Y3JlYXRlUmVuZGVyUGlwZWxpbmUoKmRlc2NyaXB0b3IpOworICAgIGF1dG8gcmVz
dWx0ID0gV2ViR1BVOjpmcm9tQVBJKGRldmljZSkuY3JlYXRlUmVuZGVyUGlwZWxpbmUoKmRlc2Ny
aXB0b3IpOwogICAgIHJldHVybiByZXN1bHQgPyBuZXcgV0dQVVJlbmRlclBpcGVsaW5lSW1wbCB7
IHJlc3VsdC5yZWxlYXNlTm9uTnVsbCgpIH0gOiBudWxscHRyOwogfQogCiB2b2lkIHdncHVEZXZp
Y2VDcmVhdGVSZW5kZXJQaXBlbGluZUFzeW5jKFdHUFVEZXZpY2UgZGV2aWNlLCBjb25zdCBXR1BV
UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKiBkZXNjcmlwdG9yLCBXR1BVQ3JlYXRlUmVuZGVyUGlw
ZWxpbmVBc3luY0NhbGxiYWNrIGNhbGxiYWNrLCB2b2lkKiB1c2VyZGF0YSkKIHsKLSAgICBkZXZp
Y2UtPmRldmljZS0+Y3JlYXRlUmVuZGVyUGlwZWxpbmVBc3luYygqZGVzY3JpcHRvciwgW2NhbGxi
YWNrLCB1c2VyZGF0YV0gKFdHUFVDcmVhdGVQaXBlbGluZUFzeW5jU3RhdHVzIHN0YXR1cywgUmVm
UHRyPFdlYkdQVTo6UmVuZGVyUGlwZWxpbmU+JiYgcGlwZWxpbmUsIGNvbnN0IGNoYXIqIG1lc3Nh
Z2UpIHsKLSAgICAgICAgY2FsbGJhY2soc3RhdHVzLCBwaXBlbGluZSA/IG5ldyBXR1BVUmVuZGVy
UGlwZWxpbmVJbXBsIHsgcGlwZWxpbmUucmVsZWFzZU5vbk51bGwoKSB9IDogbnVsbHB0ciwgbWVz
c2FnZSwgdXNlcmRhdGEpOworICAgIFdlYkdQVTo6ZnJvbUFQSShkZXZpY2UpLmNyZWF0ZVJlbmRl
clBpcGVsaW5lQXN5bmMoKmRlc2NyaXB0b3IsIFtjYWxsYmFjaywgdXNlcmRhdGFdIChXR1BVQ3Jl
YXRlUGlwZWxpbmVBc3luY1N0YXR1cyBzdGF0dXMsIFJlZlB0cjxXZWJHUFU6OlJlbmRlclBpcGVs
aW5lPiYmIHBpcGVsaW5lLCBTdHJpbmcmJiBtZXNzYWdlKSB7CisgICAgICAgIGNhbGxiYWNrKHN0
YXR1cywgcGlwZWxpbmUgPyBuZXcgV0dQVVJlbmRlclBpcGVsaW5lSW1wbCB7IHBpcGVsaW5lLnJl
bGVhc2VOb25OdWxsKCkgfSA6IG51bGxwdHIsIG1lc3NhZ2UudXRmOCgpLmRhdGEoKSwgdXNlcmRh
dGEpOwogICAgIH0pOwogfQogCiB2b2lkIHdncHVEZXZpY2VDcmVhdGVSZW5kZXJQaXBlbGluZUFz
eW5jV2l0aEJsb2NrKFdHUFVEZXZpY2UgZGV2aWNlLCBXR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlw
dG9yIGNvbnN0ICogZGVzY3JpcHRvciwgV0dQVUNyZWF0ZVJlbmRlclBpcGVsaW5lQXN5bmNCbG9j
a0NhbGxiYWNrIGNhbGxiYWNrKQogewotICAgIGRldmljZS0+ZGV2aWNlLT5jcmVhdGVSZW5kZXJQ
aXBlbGluZUFzeW5jKCpkZXNjcmlwdG9yLCBbY2FsbGJhY2tdIChXR1BVQ3JlYXRlUGlwZWxpbmVB
c3luY1N0YXR1cyBzdGF0dXMsIFJlZlB0cjxXZWJHUFU6OlJlbmRlclBpcGVsaW5lPiYmIHBpcGVs
aW5lLCBjb25zdCBjaGFyKiBtZXNzYWdlKSB7Ci0gICAgICAgIGNhbGxiYWNrKHN0YXR1cywgcGlw
ZWxpbmUgPyBuZXcgV0dQVVJlbmRlclBpcGVsaW5lSW1wbCB7IHBpcGVsaW5lLnJlbGVhc2VOb25O
dWxsKCkgfSA6IG51bGxwdHIsIG1lc3NhZ2UpOworICAgIFdlYkdQVTo6ZnJvbUFQSShkZXZpY2Up
LmNyZWF0ZVJlbmRlclBpcGVsaW5lQXN5bmMoKmRlc2NyaXB0b3IsIFtjYWxsYmFja10gKFdHUFVD
cmVhdGVQaXBlbGluZUFzeW5jU3RhdHVzIHN0YXR1cywgUmVmUHRyPFdlYkdQVTo6UmVuZGVyUGlw
ZWxpbmU+JiYgcGlwZWxpbmUsIFN0cmluZyYmIG1lc3NhZ2UpIHsKKyAgICAgICAgY2FsbGJhY2so
c3RhdHVzLCBwaXBlbGluZSA/IG5ldyBXR1BVUmVuZGVyUGlwZWxpbmVJbXBsIHsgcGlwZWxpbmUu
cmVsZWFzZU5vbk51bGwoKSB9IDogbnVsbHB0ciwgbWVzc2FnZS51dGY4KCkuZGF0YSgpKTsKICAg
ICB9KTsKIH0KIAogV0dQVVNhbXBsZXIgd2dwdURldmljZUNyZWF0ZVNhbXBsZXIoV0dQVURldmlj
ZSBkZXZpY2UsIGNvbnN0IFdHUFVTYW1wbGVyRGVzY3JpcHRvciogZGVzY3JpcHRvcikKIHsKLSAg
ICBhdXRvIHJlc3VsdCA9IGRldmljZS0+ZGV2aWNlLT5jcmVhdGVTYW1wbGVyKCpkZXNjcmlwdG9y
KTsKKyAgICBhdXRvIHJlc3VsdCA9IFdlYkdQVTo6ZnJvbUFQSShkZXZpY2UpLmNyZWF0ZVNhbXBs
ZXIoKmRlc2NyaXB0b3IpOwogICAgIHJldHVybiByZXN1bHQgPyBuZXcgV0dQVVNhbXBsZXJJbXBs
IHsgcmVzdWx0LnJlbGVhc2VOb25OdWxsKCkgfSA6IG51bGxwdHI7CiB9CiAKIFdHUFVTaGFkZXJN
b2R1bGUgd2dwdURldmljZUNyZWF0ZVNoYWRlck1vZHVsZShXR1BVRGV2aWNlIGRldmljZSwgY29u
c3QgV0dQVVNoYWRlck1vZHVsZURlc2NyaXB0b3IqIGRlc2NyaXB0b3IpCiB7Ci0gICAgYXV0byBy
ZXN1bHQgPSBkZXZpY2UtPmRldmljZS0+Y3JlYXRlU2hhZGVyTW9kdWxlKCpkZXNjcmlwdG9yKTsK
KyAgICBhdXRvIHJlc3VsdCA9IFdlYkdQVTo6ZnJvbUFQSShkZXZpY2UpLmNyZWF0ZVNoYWRlck1v
ZHVsZSgqZGVzY3JpcHRvcik7CiAgICAgcmV0dXJuIHJlc3VsdCA/IG5ldyBXR1BVU2hhZGVyTW9k
dWxlSW1wbCB7IHJlc3VsdC5yZWxlYXNlTm9uTnVsbCgpIH0gOiBudWxscHRyOwogfQogCiBXR1BV
U3dhcENoYWluIHdncHVEZXZpY2VDcmVhdGVTd2FwQ2hhaW4oV0dQVURldmljZSBkZXZpY2UsIFdH
UFVTdXJmYWNlIHN1cmZhY2UsIGNvbnN0IFdHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yKiBkZXNjcmlw
dG9yKQogewotICAgIGF1dG8gcmVzdWx0ID0gZGV2aWNlLT5kZXZpY2UtPmNyZWF0ZVN3YXBDaGFp
bihzdXJmYWNlLT5zdXJmYWNlLCAqZGVzY3JpcHRvcik7CisgICAgYXV0byByZXN1bHQgPSBXZWJH
UFU6OmZyb21BUEkoZGV2aWNlKS5jcmVhdGVTd2FwQ2hhaW4oV2ViR1BVOjpmcm9tQVBJKHN1cmZh
Y2UpLCAqZGVzY3JpcHRvcik7CiAgICAgcmV0dXJuIHJlc3VsdCA/IG5ldyBXR1BVU3dhcENoYWlu
SW1wbCB7IHJlc3VsdC5yZWxlYXNlTm9uTnVsbCgpIH0gOiBudWxscHRyOwogfQogCiBXR1BVVGV4
dHVyZSB3Z3B1RGV2aWNlQ3JlYXRlVGV4dHVyZShXR1BVRGV2aWNlIGRldmljZSwgY29uc3QgV0dQ
VVRleHR1cmVEZXNjcmlwdG9yKiBkZXNjcmlwdG9yKQogewotICAgIGF1dG8gcmVzdWx0ID0gZGV2
aWNlLT5kZXZpY2UtPmNyZWF0ZVRleHR1cmUoKmRlc2NyaXB0b3IpOworICAgIGF1dG8gcmVzdWx0
ID0gV2ViR1BVOjpmcm9tQVBJKGRldmljZSkuY3JlYXRlVGV4dHVyZSgqZGVzY3JpcHRvcik7CiAg
ICAgcmV0dXJuIHJlc3VsdCA/IG5ldyBXR1BVVGV4dHVyZUltcGwgeyByZXN1bHQucmVsZWFzZU5v
bk51bGwoKSB9IDogbnVsbHB0cjsKIH0KIAogdm9pZCB3Z3B1RGV2aWNlRGVzdHJveShXR1BVRGV2
aWNlIGRldmljZSkKIHsKLSAgICBkZXZpY2UtPmRldmljZS0+ZGVzdHJveSgpOworICAgIFdlYkdQ
VTo6ZnJvbUFQSShkZXZpY2UpLmRlc3Ryb3koKTsKIH0KIAogc2l6ZV90IHdncHVEZXZpY2VFbnVt
ZXJhdGVGZWF0dXJlcyhXR1BVRGV2aWNlIGRldmljZSwgV0dQVUZlYXR1cmVOYW1lKiBmZWF0dXJl
cykKIHsKLSAgICByZXR1cm4gZGV2aWNlLT5kZXZpY2UtPmVudW1lcmF0ZUZlYXR1cmVzKGZlYXR1
cmVzKTsKKyAgICByZXR1cm4gV2ViR1BVOjpmcm9tQVBJKGRldmljZSkuZW51bWVyYXRlRmVhdHVy
ZXMoZmVhdHVyZXMpOwogfQogCiBib29sIHdncHVEZXZpY2VHZXRMaW1pdHMoV0dQVURldmljZSBk
ZXZpY2UsIFdHUFVTdXBwb3J0ZWRMaW1pdHMqIGxpbWl0cykKIHsKLSAgICByZXR1cm4gZGV2aWNl
LT5kZXZpY2UtPmdldExpbWl0cygqbGltaXRzKTsKKyAgICByZXR1cm4gV2ViR1BVOjpmcm9tQVBJ
KGRldmljZSkuZ2V0TGltaXRzKCpsaW1pdHMpOwogfQogCiBXR1BVUXVldWUgd2dwdURldmljZUdl
dFF1ZXVlKFdHUFVEZXZpY2UgZGV2aWNlKQpAQCAtMjY2LDYxICsyNjcsNjEgQEAgV0dQVVF1ZXVl
IHdncHVEZXZpY2VHZXRRdWV1ZShXR1BVRGV2aWNlIGRldmljZSkKIAogYm9vbCB3Z3B1RGV2aWNl
SGFzRmVhdHVyZShXR1BVRGV2aWNlIGRldmljZSwgV0dQVUZlYXR1cmVOYW1lIGZlYXR1cmUpCiB7
Ci0gICAgcmV0dXJuIGRldmljZS0+ZGV2aWNlLT5oYXNGZWF0dXJlKGZlYXR1cmUpOworICAgIHJl
dHVybiBXZWJHUFU6OmZyb21BUEkoZGV2aWNlKS5oYXNGZWF0dXJlKGZlYXR1cmUpOwogfQogCiBi
b29sIHdncHVEZXZpY2VQb3BFcnJvclNjb3BlKFdHUFVEZXZpY2UgZGV2aWNlLCBXR1BVRXJyb3JD
YWxsYmFjayBjYWxsYmFjaywgdm9pZCogdXNlcmRhdGEpCiB7Ci0gICAgcmV0dXJuIGRldmljZS0+
ZGV2aWNlLT5wb3BFcnJvclNjb3BlKFtjYWxsYmFjaywgdXNlcmRhdGFdIChXR1BVRXJyb3JUeXBl
IHR5cGUsIGNvbnN0IGNoYXIqIG1lc3NhZ2UpIHsKLSAgICAgICAgY2FsbGJhY2sodHlwZSwgbWVz
c2FnZSwgdXNlcmRhdGEpOworICAgIHJldHVybiBXZWJHUFU6OmZyb21BUEkoZGV2aWNlKS5wb3BF
cnJvclNjb3BlKFtjYWxsYmFjaywgdXNlcmRhdGFdIChXR1BVRXJyb3JUeXBlIHR5cGUsIFN0cmlu
ZyYmIG1lc3NhZ2UpIHsKKyAgICAgICAgY2FsbGJhY2sodHlwZSwgbWVzc2FnZS51dGY4KCkuZGF0
YSgpLCB1c2VyZGF0YSk7CiAgICAgfSk7CiB9CiAKIGJvb2wgd2dwdURldmljZVBvcEVycm9yU2Nv
cGVXaXRoQmxvY2soV0dQVURldmljZSBkZXZpY2UsIFdHUFVFcnJvckJsb2NrQ2FsbGJhY2sgY2Fs
bGJhY2spCiB7Ci0gICAgcmV0dXJuIGRldmljZS0+ZGV2aWNlLT5wb3BFcnJvclNjb3BlKFtjYWxs
YmFja10gKFdHUFVFcnJvclR5cGUgdHlwZSwgY29uc3QgY2hhciogbWVzc2FnZSkgewotICAgICAg
ICBjYWxsYmFjayh0eXBlLCBtZXNzYWdlKTsKKyAgICByZXR1cm4gV2ViR1BVOjpmcm9tQVBJKGRl
dmljZSkucG9wRXJyb3JTY29wZShbY2FsbGJhY2tdIChXR1BVRXJyb3JUeXBlIHR5cGUsIFN0cmlu
ZyYmIG1lc3NhZ2UpIHsKKyAgICAgICAgY2FsbGJhY2sodHlwZSwgbWVzc2FnZS51dGY4KCkuZGF0
YSgpKTsKICAgICB9KTsKIH0KIAogdm9pZCB3Z3B1RGV2aWNlUHVzaEVycm9yU2NvcGUoV0dQVURl
dmljZSBkZXZpY2UsIFdHUFVFcnJvckZpbHRlciBmaWx0ZXIpCiB7Ci0gICAgZGV2aWNlLT5kZXZp
Y2UtPnB1c2hFcnJvclNjb3BlKGZpbHRlcik7CisgICAgV2ViR1BVOjpmcm9tQVBJKGRldmljZSku
cHVzaEVycm9yU2NvcGUoZmlsdGVyKTsKIH0KIAogdm9pZCB3Z3B1RGV2aWNlU2V0RGV2aWNlTG9z
dENhbGxiYWNrKFdHUFVEZXZpY2UgZGV2aWNlLCBXR1BVRGV2aWNlTG9zdENhbGxiYWNrIGNhbGxi
YWNrLCB2b2lkKiB1c2VyZGF0YSkKIHsKLSAgICByZXR1cm4gZGV2aWNlLT5kZXZpY2UtPnNldERl
dmljZUxvc3RDYWxsYmFjayhbY2FsbGJhY2ssIHVzZXJkYXRhXSAoV0dQVURldmljZUxvc3RSZWFz
b24gcmVhc29uLCBjb25zdCBjaGFyKiBtZXNzYWdlKSB7CisgICAgcmV0dXJuIFdlYkdQVTo6ZnJv
bUFQSShkZXZpY2UpLnNldERldmljZUxvc3RDYWxsYmFjayhbY2FsbGJhY2ssIHVzZXJkYXRhXSAo
V0dQVURldmljZUxvc3RSZWFzb24gcmVhc29uLCBTdHJpbmcmJiBtZXNzYWdlKSB7CiAgICAgICAg
IGlmIChjYWxsYmFjaykKLSAgICAgICAgICAgIGNhbGxiYWNrKHJlYXNvbiwgbWVzc2FnZSwgdXNl
cmRhdGEpOworICAgICAgICAgICAgY2FsbGJhY2socmVhc29uLCBtZXNzYWdlLnV0ZjgoKS5kYXRh
KCksIHVzZXJkYXRhKTsKICAgICB9KTsKIH0KIAogdm9pZCB3Z3B1RGV2aWNlU2V0RGV2aWNlTG9z
dENhbGxiYWNrV2l0aEJsb2NrKFdHUFVEZXZpY2UgZGV2aWNlLCBXR1BVRGV2aWNlTG9zdEJsb2Nr
Q2FsbGJhY2sgY2FsbGJhY2spCiB7Ci0gICAgcmV0dXJuIGRldmljZS0+ZGV2aWNlLT5zZXREZXZp
Y2VMb3N0Q2FsbGJhY2soW2NhbGxiYWNrXSAoV0dQVURldmljZUxvc3RSZWFzb24gcmVhc29uLCBj
b25zdCBjaGFyKiBtZXNzYWdlKSB7CisgICAgcmV0dXJuIFdlYkdQVTo6ZnJvbUFQSShkZXZpY2Up
LnNldERldmljZUxvc3RDYWxsYmFjayhbY2FsbGJhY2tdIChXR1BVRGV2aWNlTG9zdFJlYXNvbiBy
ZWFzb24sIFN0cmluZyYmIG1lc3NhZ2UpIHsKICAgICAgICAgaWYgKGNhbGxiYWNrKQotICAgICAg
ICAgICAgY2FsbGJhY2socmVhc29uLCBtZXNzYWdlKTsKKyAgICAgICAgICAgIGNhbGxiYWNrKHJl
YXNvbiwgbWVzc2FnZS51dGY4KCkuZGF0YSgpKTsKICAgICB9KTsKIH0KIAogdm9pZCB3Z3B1RGV2
aWNlU2V0VW5jYXB0dXJlZEVycm9yQ2FsbGJhY2soV0dQVURldmljZSBkZXZpY2UsIFdHUFVFcnJv
ckNhbGxiYWNrIGNhbGxiYWNrLCB2b2lkKiB1c2VyZGF0YSkKIHsKLSAgICByZXR1cm4gZGV2aWNl
LT5kZXZpY2UtPnNldFVuY2FwdHVyZWRFcnJvckNhbGxiYWNrKFtjYWxsYmFjaywgdXNlcmRhdGFd
IChXR1BVRXJyb3JUeXBlIHR5cGUsIGNvbnN0IGNoYXIqIG1lc3NhZ2UpIHsKKyAgICByZXR1cm4g
V2ViR1BVOjpmcm9tQVBJKGRldmljZSkuc2V0VW5jYXB0dXJlZEVycm9yQ2FsbGJhY2soW2NhbGxi
YWNrLCB1c2VyZGF0YV0gKFdHUFVFcnJvclR5cGUgdHlwZSwgU3RyaW5nJiYgbWVzc2FnZSkgewog
ICAgICAgICBpZiAoY2FsbGJhY2spCi0gICAgICAgICAgICBjYWxsYmFjayh0eXBlLCBtZXNzYWdl
LCB1c2VyZGF0YSk7CisgICAgICAgICAgICBjYWxsYmFjayh0eXBlLCBtZXNzYWdlLnV0ZjgoKS5k
YXRhKCksIHVzZXJkYXRhKTsKICAgICB9KTsKIH0KIAogdm9pZCB3Z3B1RGV2aWNlU2V0VW5jYXB0
dXJlZEVycm9yQ2FsbGJhY2tXaXRoQmxvY2soV0dQVURldmljZSBkZXZpY2UsIFdHUFVFcnJvckJs
b2NrQ2FsbGJhY2sgY2FsbGJhY2spCiB7Ci0gICAgcmV0dXJuIGRldmljZS0+ZGV2aWNlLT5zZXRV
bmNhcHR1cmVkRXJyb3JDYWxsYmFjayhbY2FsbGJhY2tdIChXR1BVRXJyb3JUeXBlIHR5cGUsIGNv
bnN0IGNoYXIqIG1lc3NhZ2UpIHsKKyAgICByZXR1cm4gV2ViR1BVOjpmcm9tQVBJKGRldmljZSku
c2V0VW5jYXB0dXJlZEVycm9yQ2FsbGJhY2soW2NhbGxiYWNrXSAoV0dQVUVycm9yVHlwZSB0eXBl
LCBTdHJpbmcmJiBtZXNzYWdlKSB7CiAgICAgICAgIGlmIChjYWxsYmFjaykKLSAgICAgICAgICAg
IGNhbGxiYWNrKHR5cGUsIG1lc3NhZ2UpOworICAgICAgICAgICAgY2FsbGJhY2sodHlwZSwgbWVz
c2FnZS51dGY4KCkuZGF0YSgpKTsKICAgICB9KTsKIH0KIAogdm9pZCB3Z3B1RGV2aWNlU2V0TGFi
ZWwoV0dQVURldmljZSBkZXZpY2UsIGNvbnN0IGNoYXIqIGxhYmVsKQogewotICAgIGRldmljZS0+
ZGV2aWNlLT5zZXRMYWJlbChsYWJlbCk7CisgICAgV2ViR1BVOjpmcm9tQVBJKGRldmljZSkuc2V0
TGFiZWwoV2ViR1BVOjpmcm9tQVBJKGxhYmVsKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
R1BVL1dlYkdQVS9JbnN0YW5jZS5oIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvSW5zdGFuY2UuaApp
bmRleCBmZjdkZDQ2MzlkZTUyZWUyZWM3ZjcxMmQwZTUwYWFiOTYxMGQzNzI2Li4yM2Q1M2FkMWMw
MjMyZjhkMTdlZDFhNTBhNTU4Njc0ODcwZDQ1MzYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BV
L1dlYkdQVS9JbnN0YW5jZS5oCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0luc3RhbmNlLmgK
QEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogCiAgICAgUmVmUHRyPFN1cmZhY2U+IGNyZWF0ZVN1
cmZhY2UoY29uc3QgV0dQVVN1cmZhY2VEZXNjcmlwdG9yJik7CiAgICAgdm9pZCBwcm9jZXNzRXZl
bnRzKCk7Ci0gICAgdm9pZCByZXF1ZXN0QWRhcHRlcihjb25zdCBXR1BVUmVxdWVzdEFkYXB0ZXJP
cHRpb25zJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXR1BVUmVxdWVzdEFkYXB0ZXJTdGF0dXMs
IFJlZlB0cjxBZGFwdGVyPiYmLCBjb25zdCBjaGFyKik+JiYgY2FsbGJhY2spOworICAgIHZvaWQg
cmVxdWVzdEFkYXB0ZXIoY29uc3QgV0dQVVJlcXVlc3RBZGFwdGVyT3B0aW9ucyYsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoV0dQVVJlcXVlc3RBZGFwdGVyU3RhdHVzLCBSZWZQdHI8QWRhcHRlcj4m
JiwgU3RyaW5nJiYpPiYmIGNhbGxiYWNrKTsKIAogICAgIC8vIFRoaXMgY2FuIGJlIGNhbGxlZCBv
biBhIGJhY2tncm91bmQgdGhyZWFkLgogICAgIHVzaW5nIFdvcmtJdGVtID0gQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCh2b2lkKT47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9JbnN0
YW5jZS5tbSBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0luc3RhbmNlLm1tCmluZGV4IDYxNDMzZGYz
ZjFkYjlmMWE1MzAzMTY4YWQyMTVhYjViNmEwNzFlZGIuLjA0NzU4YTQxMjdlMGZlMGI5ZjE5OWJm
OGY4ZGI5YTNhNjYzODc1ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0luc3Rh
bmNlLm1tCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0luc3RhbmNlLm1tCkBAIC0yNiw2ICsy
Niw3IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIkluc3RhbmNlLmgiCiAKKyNpbXBv
cnQgIkFQSUNvbnZlcnNpb25zLmgiCiAjaW1wb3J0ICJBZGFwdGVyLmgiCiAjaW1wb3J0ICJTdXJm
YWNlLmgiCiAjaW1wb3J0IDxjc3RyaW5nPgpAQCAtMTI2LDcgKzEyNyw3IEBAIHN0YXRpYyBOU0Fy
cmF5PGlkPE1UTERldmljZT4+ICpzb3J0ZWREZXZpY2VzKE5TQXJyYXk8aWQ8TVRMRGV2aWNlPj4g
KmRldmljZXMsIFdHCiAgICAgfQogfQogCi12b2lkIEluc3RhbmNlOjpyZXF1ZXN0QWRhcHRlcihj
b25zdCBXR1BVUmVxdWVzdEFkYXB0ZXJPcHRpb25zJiBvcHRpb25zLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFdHUFVSZXF1ZXN0QWRhcHRlclN0YXR1cywgUmVmUHRyPEFkYXB0ZXI+JiYsIGNvbnN0
IGNoYXIqKT4mJiBjYWxsYmFjaykKK3ZvaWQgSW5zdGFuY2U6OnJlcXVlc3RBZGFwdGVyKGNvbnN0
IFdHUFVSZXF1ZXN0QWRhcHRlck9wdGlvbnMmIG9wdGlvbnMsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoV0dQVVJlcXVlc3RBZGFwdGVyU3RhdHVzLCBSZWZQdHI8QWRhcHRlcj4mJiwgU3RyaW5nJiYp
PiYmIGNhbGxiYWNrKQogewogI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oTUFDQ0FUQUxZ
U1QpCiAgICAgTlNBcnJheTxpZDxNVExEZXZpY2U+PiAqZGV2aWNlcyA9IE1UTENvcHlBbGxEZXZp
Y2VzKCk7CkBAIC0xNDEsMzEgKzE0MiwzMSBAQCB2b2lkIEluc3RhbmNlOjpyZXF1ZXN0QWRhcHRl
cihjb25zdCBXR1BVUmVxdWVzdEFkYXB0ZXJPcHRpb25zJiBvcHRpb25zLCBDb21wbGV0aQogICAg
IGF1dG8gc29ydGVkRGV2aWNlcyA9IFdlYkdQVTo6c29ydGVkRGV2aWNlcyhkZXZpY2VzLCBvcHRp
b25zLnBvd2VyUHJlZmVyZW5jZSk7CiAKICAgICBpZiAob3B0aW9ucy5uZXh0SW5DaGFpbikgewot
ICAgICAgICBjYWxsYmFjayhXR1BVUmVxdWVzdEFkYXB0ZXJTdGF0dXNfRXJyb3IsIG51bGxwdHIs
ICJVbmtub3duIGRlc2NyaXB0b3IgdHlwZSIpOworICAgICAgICBjYWxsYmFjayhXR1BVUmVxdWVz
dEFkYXB0ZXJTdGF0dXNfRXJyb3IsIG51bGxwdHIsICJVbmtub3duIGRlc2NyaXB0b3IgdHlwZSJf
cyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBpZiAob3B0aW9ucy5mb3JjZUZhbGxi
YWNrQWRhcHRlcikgewotICAgICAgICBjYWxsYmFjayhXR1BVUmVxdWVzdEFkYXB0ZXJTdGF0dXNf
VW5hdmFpbGFibGUsIG51bGxwdHIsICJObyBhZGFwdGVycyBwcmVzZW50Iik7CisgICAgICAgIGNh
bGxiYWNrKFdHUFVSZXF1ZXN0QWRhcHRlclN0YXR1c19VbmF2YWlsYWJsZSwgbnVsbHB0ciwgIk5v
IGFkYXB0ZXJzIHByZXNlbnQiX3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYg
KCFzb3J0ZWREZXZpY2VzKSB7Ci0gICAgICAgIGNhbGxiYWNrKFdHUFVSZXF1ZXN0QWRhcHRlclN0
YXR1c19FcnJvciwgbnVsbHB0ciwgIlVua25vd24gcG93ZXIgcHJlZmVyZW5jZSIpOworICAgICAg
ICBjYWxsYmFjayhXR1BVUmVxdWVzdEFkYXB0ZXJTdGF0dXNfRXJyb3IsIG51bGxwdHIsICJVbmtu
b3duIHBvd2VyIHByZWZlcmVuY2UiX3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAg
aWYgKCFzb3J0ZWREZXZpY2VzLmNvdW50KSB7Ci0gICAgICAgIGNhbGxiYWNrKFdHUFVSZXF1ZXN0
QWRhcHRlclN0YXR1c19VbmF2YWlsYWJsZSwgbnVsbHB0ciwgIk5vIGFkYXB0ZXJzIHByZXNlbnQi
KTsKKyAgICAgICAgY2FsbGJhY2soV0dQVVJlcXVlc3RBZGFwdGVyU3RhdHVzX1VuYXZhaWxhYmxl
LCBudWxscHRyLCAiTm8gYWRhcHRlcnMgcHJlc2VudCJfcyk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKICAgICBpZiAoIXNvcnRlZERldmljZXNbMF0pIHsKLSAgICAgICAgY2FsbGJhY2soV0dQ
VVJlcXVlc3RBZGFwdGVyU3RhdHVzX0Vycm9yLCBudWxscHRyLCAiQWRhcHRlciBpcyBpbnRlcm5h
bGx5IG51bGwiKTsKKyAgICAgICAgY2FsbGJhY2soV0dQVVJlcXVlc3RBZGFwdGVyU3RhdHVzX0Vy
cm9yLCBudWxscHRyLCAiQWRhcHRlciBpcyBpbnRlcm5hbGx5IG51bGwiX3MpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgY2FsbGJhY2soV0dQVVJlcXVlc3RBZGFwdGVyU3RhdHVzX1N1
Y2Nlc3MsIEFkYXB0ZXI6OmNyZWF0ZShzb3J0ZWREZXZpY2VzWzBdKSwgbnVsbHB0cik7CisgICAg
Y2FsbGJhY2soV0dQVVJlcXVlc3RBZGFwdGVyU3RhdHVzX1N1Y2Nlc3MsIEFkYXB0ZXI6OmNyZWF0
ZShzb3J0ZWREZXZpY2VzWzBdKSwgeyB9KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViR1BVCkBA
IC00MzIsMjUgKzQzMywyNSBAQCBXR1BVUHJvYyB3Z3B1R2V0UHJvY0FkZHJlc3MoV0dQVURldmlj
ZSwgY29uc3QgY2hhciogcHJvY05hbWUpCiAKIFdHUFVTdXJmYWNlIHdncHVJbnN0YW5jZUNyZWF0
ZVN1cmZhY2UoV0dQVUluc3RhbmNlIGluc3RhbmNlLCBjb25zdCBXR1BVU3VyZmFjZURlc2NyaXB0
b3IqIGRlc2NyaXB0b3IpCiB7Ci0gICAgYXV0byByZXN1bHQgPSBpbnN0YW5jZS0+aW5zdGFuY2Ut
PmNyZWF0ZVN1cmZhY2UoKmRlc2NyaXB0b3IpOworICAgIGF1dG8gcmVzdWx0ID0gV2ViR1BVOjpm
cm9tQVBJKGluc3RhbmNlKS5jcmVhdGVTdXJmYWNlKCpkZXNjcmlwdG9yKTsKICAgICByZXR1cm4g
cmVzdWx0ID8gbmV3IFdHUFVTdXJmYWNlSW1wbCB7IHJlc3VsdC5yZWxlYXNlTm9uTnVsbCgpIH0g
OiBudWxscHRyOwogfQogCiB2b2lkIHdncHVJbnN0YW5jZVByb2Nlc3NFdmVudHMoV0dQVUluc3Rh
bmNlIGluc3RhbmNlKQogewotICAgIGluc3RhbmNlLT5pbnN0YW5jZS0+cHJvY2Vzc0V2ZW50cygp
OworICAgIFdlYkdQVTo6ZnJvbUFQSShpbnN0YW5jZSkucHJvY2Vzc0V2ZW50cygpOwogfQogCiB2
b2lkIHdncHVJbnN0YW5jZVJlcXVlc3RBZGFwdGVyKFdHUFVJbnN0YW5jZSBpbnN0YW5jZSwgY29u
c3QgV0dQVVJlcXVlc3RBZGFwdGVyT3B0aW9ucyogb3B0aW9ucywgV0dQVVJlcXVlc3RBZGFwdGVy
Q2FsbGJhY2sgY2FsbGJhY2ssIHZvaWQqIHVzZXJkYXRhKQogewotICAgIGluc3RhbmNlLT5pbnN0
YW5jZS0+cmVxdWVzdEFkYXB0ZXIoKm9wdGlvbnMsIFtjYWxsYmFjaywgdXNlcmRhdGFdIChXR1BV
UmVxdWVzdEFkYXB0ZXJTdGF0dXMgc3RhdHVzLCBSZWZQdHI8V2ViR1BVOjpBZGFwdGVyPiYmIGFk
YXB0ZXIsIGNvbnN0IGNoYXIqIG1lc3NhZ2UpIHsKLSAgICAgICAgY2FsbGJhY2soc3RhdHVzLCBh
ZGFwdGVyID8gbmV3IFdHUFVBZGFwdGVySW1wbCB7IGFkYXB0ZXIucmVsZWFzZU5vbk51bGwoKSB9
IDogbnVsbHB0ciwgbWVzc2FnZSwgdXNlcmRhdGEpOworICAgIFdlYkdQVTo6ZnJvbUFQSShpbnN0
YW5jZSkucmVxdWVzdEFkYXB0ZXIoKm9wdGlvbnMsIFtjYWxsYmFjaywgdXNlcmRhdGFdIChXR1BV
UmVxdWVzdEFkYXB0ZXJTdGF0dXMgc3RhdHVzLCBSZWZQdHI8V2ViR1BVOjpBZGFwdGVyPiYmIGFk
YXB0ZXIsIFN0cmluZyYmIG1lc3NhZ2UpIHsKKyAgICAgICAgY2FsbGJhY2soc3RhdHVzLCBhZGFw
dGVyID8gbmV3IFdHUFVBZGFwdGVySW1wbCB7IGFkYXB0ZXIucmVsZWFzZU5vbk51bGwoKSB9IDog
bnVsbHB0ciwgbWVzc2FnZS51dGY4KCkuZGF0YSgpLCB1c2VyZGF0YSk7CiAgICAgfSk7CiB9CiAK
IHZvaWQgd2dwdUluc3RhbmNlUmVxdWVzdEFkYXB0ZXJXaXRoQmxvY2soV0dQVUluc3RhbmNlIGlu
c3RhbmNlLCBXR1BVUmVxdWVzdEFkYXB0ZXJPcHRpb25zIGNvbnN0ICogb3B0aW9ucywgV0dQVVJl
cXVlc3RBZGFwdGVyQmxvY2tDYWxsYmFjayBjYWxsYmFjaykKIHsKLSAgICBpbnN0YW5jZS0+aW5z
dGFuY2UtPnJlcXVlc3RBZGFwdGVyKCpvcHRpb25zLCBbY2FsbGJhY2tdIChXR1BVUmVxdWVzdEFk
YXB0ZXJTdGF0dXMgc3RhdHVzLCBSZWZQdHI8V2ViR1BVOjpBZGFwdGVyPiYmIGFkYXB0ZXIsIGNv
bnN0IGNoYXIqIG1lc3NhZ2UpIHsKLSAgICAgICAgY2FsbGJhY2soc3RhdHVzLCBhZGFwdGVyID8g
bmV3IFdHUFVBZGFwdGVySW1wbCB7IGFkYXB0ZXIucmVsZWFzZU5vbk51bGwoKSB9IDogbnVsbHB0
ciwgbWVzc2FnZSk7CisgICAgV2ViR1BVOjpmcm9tQVBJKGluc3RhbmNlKS5yZXF1ZXN0QWRhcHRl
cigqb3B0aW9ucywgW2NhbGxiYWNrXSAoV0dQVVJlcXVlc3RBZGFwdGVyU3RhdHVzIHN0YXR1cywg
UmVmUHRyPFdlYkdQVTo6QWRhcHRlcj4mJiBhZGFwdGVyLCBTdHJpbmcmJiBtZXNzYWdlKSB7Cisg
ICAgICAgIGNhbGxiYWNrKHN0YXR1cywgYWRhcHRlciA/IG5ldyBXR1BVQWRhcHRlckltcGwgeyBh
ZGFwdGVyLnJlbGVhc2VOb25OdWxsKCkgfSA6IG51bGxwdHIsIG1lc3NhZ2UudXRmOCgpLmRhdGEo
KSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9QaXBlbGlu
ZUxheW91dC5oIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvUGlwZWxpbmVMYXlvdXQuaAppbmRleCA5
ZjliYzJkZDIxMWFiMmQzOGU5YWUyMzU3YWRkZGFlZmYxY2FlYjIwLi40MmQxMjIzYWFjY2IzMTA0
YzdlMWFmMjU3M2MwYjBlZDkxZDc5NGJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQ
VS9QaXBlbGluZUxheW91dC5oCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1BpcGVsaW5lTGF5
b3V0LmgKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogCiAgICAgflBpcGVsaW5lTGF5b3V0KCk7
CiAKLSAgICB2b2lkIHNldExhYmVsKGNvbnN0IGNoYXIqKTsKKyAgICB2b2lkIHNldExhYmVsKFN0
cmluZyYmKTsKIAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBQaXBlbGluZUxheW91dCYpIGNv
bnN0OwogICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBQaXBlbGluZUxheW91dCYpIGNvbnN0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvUGlwZWxpbmVMYXlvdXQubW0gYi9Tb3Vy
Y2UvV2ViR1BVL1dlYkdQVS9QaXBlbGluZUxheW91dC5tbQppbmRleCBhZmU4NDM1YjkzNTdmNzkz
ODI2ZGQ4NDkzOGVjNzEzYzZkODlkMTE1Li5kYTNjNGFmOWQ4MmM4MWRkOTk2NjZiM2VmY2M5MWM3
MGQ4NTZiNDdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9QaXBlbGluZUxheW91
dC5tbQorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9QaXBlbGluZUxheW91dC5tbQpAQCAtMjYs
NiArMjYsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJQaXBlbGluZUxheW91dC5o
IgogCisjaW1wb3J0ICJBUElDb252ZXJzaW9ucy5oIgogI2ltcG9ydCAiQmluZEdyb3VwTGF5b3V0
LmgiCiAjaW1wb3J0ICJEZXZpY2UuaCIKIApAQCAtMzksOCArNDAsOCBAQCBSZWZQdHI8UGlwZWxp
bmVMYXlvdXQ+IERldmljZTo6Y3JlYXRlUGlwZWxpbmVMYXlvdXQoY29uc3QgV0dQVVBpcGVsaW5l
TGF5b3V0RGVzYwogICAgIFZlY3RvcjxSZWY8QmluZEdyb3VwTGF5b3V0Pj4gYmluZEdyb3VwTGF5
b3V0czsKICAgICBiaW5kR3JvdXBMYXlvdXRzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoZGVzY3Jp
cHRvci5iaW5kR3JvdXBMYXlvdXRDb3VudCk7CiAgICAgZm9yICh1aW50MzJfdCBpID0gMDsgaSA8
IGRlc2NyaXB0b3IuYmluZEdyb3VwTGF5b3V0Q291bnQ7ICsraSkgewotICAgICAgICBjb25zdCBh
dXRvKiBiaW5kR3JvdXBMYXlvdXQgPSBkZXNjcmlwdG9yLmJpbmRHcm91cExheW91dHNbaV07Ci0g
ICAgICAgIGJpbmRHcm91cExheW91dHMudW5jaGVja2VkQXBwZW5kKGJpbmRHcm91cExheW91dC0+
YmluZEdyb3VwTGF5b3V0KTsKKyAgICAgICAgYXV0byogYmluZEdyb3VwTGF5b3V0ID0gZGVzY3Jp
cHRvci5iaW5kR3JvdXBMYXlvdXRzW2ldOworICAgICAgICBiaW5kR3JvdXBMYXlvdXRzLnVuY2hl
Y2tlZEFwcGVuZChXZWJHUFU6OmZyb21BUEkoYmluZEdyb3VwTGF5b3V0KSk7CiAgICAgfQogICAg
IHJldHVybiBQaXBlbGluZUxheW91dDo6Y3JlYXRlKFdURk1vdmUoYmluZEdyb3VwTGF5b3V0cykp
OwogfQpAQCAtNTIsNyArNTMsNyBAQCBQaXBlbGluZUxheW91dDo6UGlwZWxpbmVMYXlvdXQoVmVj
dG9yPFJlZjxCaW5kR3JvdXBMYXlvdXQ+PiYmIGJpbmRHcm91cExheW91dHMpCiAKIFBpcGVsaW5l
TGF5b3V0Ojp+UGlwZWxpbmVMYXlvdXQoKSA9IGRlZmF1bHQ7CiAKLXZvaWQgUGlwZWxpbmVMYXlv
dXQ6OnNldExhYmVsKGNvbnN0IGNoYXIqKQordm9pZCBQaXBlbGluZUxheW91dDo6c2V0TGFiZWwo
U3RyaW5nJiYpCiB7CiAgICAgLy8gVGhlcmUgaXMgbm8gTWV0YWwgb2JqZWN0IHRoYXQgcmVwcmVz
ZW50cyBhIHBpcGVsaW5lIGxheW91dC4KIH0KQEAgLTc4LDUgKzc5LDUgQEAgdm9pZCB3Z3B1UGlw
ZWxpbmVMYXlvdXRSZWxlYXNlKFdHUFVQaXBlbGluZUxheW91dCBwaXBlbGluZUxheW91dCkKIAog
dm9pZCB3Z3B1UGlwZWxpbmVMYXlvdXRTZXRMYWJlbChXR1BVUGlwZWxpbmVMYXlvdXQgcGlwZWxp
bmVMYXlvdXQsIGNvbnN0IGNoYXIqIGxhYmVsKQogewotICAgIHBpcGVsaW5lTGF5b3V0LT5waXBl
bGluZUxheW91dC0+c2V0TGFiZWwobGFiZWwpOworICAgIFdlYkdQVTo6ZnJvbUFQSShwaXBlbGlu
ZUxheW91dCkuc2V0TGFiZWwoV2ViR1BVOjpmcm9tQVBJKGxhYmVsKSk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9RdWVyeVNldC5oIGIvU291cmNlL1dlYkdQVS9XZWJHUFUv
UXVlcnlTZXQuaAppbmRleCBhMGU3ODE1MjEyNjNkZDYzNDI3MzZlOTIwNDMxNjAzYzJhYjA3Njg3
Li5jOWFkMGFhY2I1YjdmMjJiZmJmOTQyMzQ5MzQ5M2IyNTI4ZDEyNTYzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViR1BVL1dlYkdQVS9RdWVyeVNldC5oCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BV
L1F1ZXJ5U2V0LmgKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogICAgIH5RdWVyeVNldCgpOwog
CiAgICAgdm9pZCBkZXN0cm95KCk7Ci0gICAgdm9pZCBzZXRMYWJlbChjb25zdCBjaGFyKik7Cisg
ICAgdm9pZCBzZXRMYWJlbChTdHJpbmcmJik7CiAKICAgICBpZDxNVExDb3VudGVyU2FtcGxlQnVm
ZmVyPiBjb3VudGVyU2FtcGxlQnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9jb3VudGVyU2FtcGxl
QnVmZmVyOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1F1ZXJ5U2V0Lm1t
IGIvU291cmNlL1dlYkdQVS9XZWJHUFUvUXVlcnlTZXQubW0KaW5kZXggM2VjMWU5ZjZiZDM2MzU1
M2JjMTkxMGRmMGRlZTI4MTQ2OGQ2ZmMxMi4uZWZjNzliZTMyZTBmNjM2OGI5MzNiNjgzOTMxODg5
MDNjZWNhYzA4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUvUXVlcnlTZXQubW0K
KysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvUXVlcnlTZXQubW0KQEAgLTI2LDYgKzI2LDcgQEAK
ICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiUXVlcnlTZXQuaCIKIAorI2ltcG9ydCAiQVBJ
Q29udmVyc2lvbnMuaCIKICNpbXBvcnQgIkRldmljZS5oIgogCiBuYW1lc3BhY2UgV2ViR1BVIHsK
QEAgLTQ3LDcgKzQ4LDcgQEAgdm9pZCBRdWVyeVNldDo6ZGVzdHJveSgpCiB7CiB9CiAKLXZvaWQg
UXVlcnlTZXQ6OnNldExhYmVsKGNvbnN0IGNoYXIqKQordm9pZCBRdWVyeVNldDo6c2V0TGFiZWwo
U3RyaW5nJiYpCiB7CiAgICAgLy8gTVRMQ291bnRlclNhbXBsZUJ1ZmZlcidzIGxhYmVscyBhcmUg
cmVhZC1vbmx5LgogfQpAQCAtNjEsMTAgKzYyLDEwIEBAIHZvaWQgd2dwdVF1ZXJ5U2V0UmVsZWFz
ZShXR1BVUXVlcnlTZXQgcXVlcnlTZXQpCiAKIHZvaWQgd2dwdVF1ZXJ5U2V0RGVzdHJveShXR1BV
UXVlcnlTZXQgcXVlcnlTZXQpCiB7Ci0gICAgcXVlcnlTZXQtPnF1ZXJ5U2V0LT5kZXN0cm95KCk7
CisgICAgV2ViR1BVOjpmcm9tQVBJKHF1ZXJ5U2V0KS5kZXN0cm95KCk7CiB9CiAKIHZvaWQgd2dw
dVF1ZXJ5U2V0U2V0TGFiZWwoV0dQVVF1ZXJ5U2V0IHF1ZXJ5U2V0LCBjb25zdCBjaGFyKiBsYWJl
bCkKIHsKLSAgICBxdWVyeVNldC0+cXVlcnlTZXQtPnNldExhYmVsKGxhYmVsKTsKKyAgICBXZWJH
UFU6OmZyb21BUEkocXVlcnlTZXQpLnNldExhYmVsKFdlYkdQVTo6ZnJvbUFQSShsYWJlbCkpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvUXVldWUuaCBiL1NvdXJjZS9XZWJH
UFUvV2ViR1BVL1F1ZXVlLmgKaW5kZXggNjk3OTg5NTM3ZjVlZjQ0NjEwMjkzNTZjMGU0NTMwODQ0
YjFlZTMyYi4uNGRjZGU2MjE5NzNjMjdkZGI3OWI5NWMxN2UwMjg5MjhhYWQzMjllYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUvUXVldWUuaAorKysgYi9Tb3VyY2UvV2ViR1BVL1dl
YkdQVS9RdWV1ZS5oCkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHN1Ym1pdChW
ZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxjb25zdCBDb21tYW5kQnVmZmVyPj4mJiBjb21t
YW5kcyk7CiAgICAgdm9pZCB3cml0ZUJ1ZmZlcihjb25zdCBCdWZmZXImLCB1aW50NjRfdCBidWZm
ZXJPZmZzZXQsIGNvbnN0IHZvaWQqIGRhdGEsIHNpemVfdCk7CiAgICAgdm9pZCB3cml0ZVRleHR1
cmUoY29uc3QgV0dQVUltYWdlQ29weVRleHR1cmUmIGRlc3RpbmF0aW9uLCBjb25zdCB2b2lkKiBk
YXRhLCBzaXplX3QgZGF0YVNpemUsIGNvbnN0IFdHUFVUZXh0dXJlRGF0YUxheW91dCYsIGNvbnN0
IFdHUFVFeHRlbnQzRCYgd3JpdGVTaXplKTsKLSAgICB2b2lkIHNldExhYmVsKGNvbnN0IGNoYXIq
KTsKKyAgICB2b2lkIHNldExhYmVsKFN0cmluZyYmKTsKIAogcHJpdmF0ZToKICAgICBRdWV1ZShp
ZDxNVExDb21tYW5kUXVldWU+KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1F1
ZXVlLm1tIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvUXVldWUubW0KaW5kZXggZjdjNmY2ZWI4N2Nm
MjlkYjAwODc0ODNkNGNjNDY2NGMyMjM2ZGY3My4uYjhjZGFiOWZjYTA3YTVlNzljN2U2YzJjYmE4
NzM1YjhmZmZmZjA2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUvUXVldWUubW0K
KysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvUXVldWUubW0KQEAgLTI2LDYgKzI2LDcgQEAKICNp
bXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiUXVldWUuaCIKIAorI2ltcG9ydCAiQVBJQ29udmVy
c2lvbnMuaCIKICNpbXBvcnQgIkJ1ZmZlci5oIgogI2ltcG9ydCAiQ29tbWFuZEJ1ZmZlci5oIgog
CkBAIC02Niw5ICs2Nyw5IEBAIHZvaWQgUXVldWU6OndyaXRlVGV4dHVyZShjb25zdCBXR1BVSW1h
Z2VDb3B5VGV4dHVyZSYgZGVzdGluYXRpb24sIGNvbnN0IHZvaWQqIGRhCiAgICAgVU5VU0VEX1BB
UkFNKHdyaXRlU2l6ZSk7CiB9CiAKLXZvaWQgUXVldWU6OnNldExhYmVsKGNvbnN0IGNoYXIqIGxh
YmVsKQordm9pZCBRdWV1ZTo6c2V0TGFiZWwoU3RyaW5nJiYgbGFiZWwpCiB7Ci0gICAgbV9jb21t
YW5kUXVldWUubGFiZWwgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENTdHJpbmc6bGFiZWwgZW5jb2Rp
bmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddOworICAgIG1fY29tbWFuZFF1ZXVlLmxhYmVsID0gc3Rh
dGljX2Nhc3Q8TlNTdHJpbmcgKj4obGFiZWwpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJHUFUK
QEAgLTgwLDE0ICs4MSwxNCBAQCB2b2lkIHdncHVRdWV1ZVJlbGVhc2UoV0dQVVF1ZXVlIHF1ZXVl
KQogCiB2b2lkIHdncHVRdWV1ZU9uU3VibWl0dGVkV29ya0RvbmUoV0dQVVF1ZXVlIHF1ZXVlLCB1
aW50NjRfdCBzaWduYWxWYWx1ZSwgV0dQVVF1ZXVlV29ya0RvbmVDYWxsYmFjayBjYWxsYmFjaywg
dm9pZCogdXNlcmRhdGEpCiB7Ci0gICAgcXVldWUtPnF1ZXVlLT5vblN1Ym1pdHRlZFdvcmtEb25l
KHNpZ25hbFZhbHVlLCBbY2FsbGJhY2ssIHVzZXJkYXRhXSAoV0dQVVF1ZXVlV29ya0RvbmVTdGF0
dXMgc3RhdHVzKSB7CisgICAgV2ViR1BVOjpmcm9tQVBJKHF1ZXVlKS5vblN1Ym1pdHRlZFdvcmtE
b25lKHNpZ25hbFZhbHVlLCBbY2FsbGJhY2ssIHVzZXJkYXRhXSAoV0dQVVF1ZXVlV29ya0RvbmVT
dGF0dXMgc3RhdHVzKSB7CiAgICAgICAgIGNhbGxiYWNrKHN0YXR1cywgdXNlcmRhdGEpOwogICAg
IH0pOwogfQogCiB2b2lkIHdncHVRdWV1ZU9uU3VibWl0dGVkV29ya0RvbmVXaXRoQmxvY2soV0dQ
VVF1ZXVlIHF1ZXVlLCB1aW50NjRfdCBzaWduYWxWYWx1ZSwgV0dQVVF1ZXVlV29ya0RvbmVCbG9j
a0NhbGxiYWNrIGNhbGxiYWNrKQogewotICAgIHF1ZXVlLT5xdWV1ZS0+b25TdWJtaXR0ZWRXb3Jr
RG9uZShzaWduYWxWYWx1ZSwgW2NhbGxiYWNrXSAoV0dQVVF1ZXVlV29ya0RvbmVTdGF0dXMgc3Rh
dHVzKSB7CisgICAgV2ViR1BVOjpmcm9tQVBJKHF1ZXVlKS5vblN1Ym1pdHRlZFdvcmtEb25lKHNp
Z25hbFZhbHVlLCBbY2FsbGJhY2tdIChXR1BVUXVldWVXb3JrRG9uZVN0YXR1cyBzdGF0dXMpIHsK
ICAgICAgICAgY2FsbGJhY2soc3RhdHVzKTsKICAgICB9KTsKIH0KQEAgLTk2LDIxICs5NywyMSBA
QCB2b2lkIHdncHVRdWV1ZVN1Ym1pdChXR1BVUXVldWUgcXVldWUsIHVpbnQzMl90IGNvbW1hbmRD
b3VudCwgY29uc3QgV0dQVUNvbW1hbmRCdQogewogICAgIFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93
cmFwcGVyPGNvbnN0IFdlYkdQVTo6Q29tbWFuZEJ1ZmZlcj4+IGNvbW1hbmRzVG9Gb3J3YXJkOwog
ICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkgPCBjb21tYW5kQ291bnQ7ICsraSkKLSAgICAgICAg
Y29tbWFuZHNUb0ZvcndhcmQuYXBwZW5kKGNvbW1hbmRzW2ldLT5jb21tYW5kQnVmZmVyKTsKLSAg
ICBxdWV1ZS0+cXVldWUtPnN1Ym1pdChXVEZNb3ZlKGNvbW1hbmRzVG9Gb3J3YXJkKSk7CisgICAg
ICAgIGNvbW1hbmRzVG9Gb3J3YXJkLmFwcGVuZChXZWJHUFU6OmZyb21BUEkoY29tbWFuZHNbaV0p
KTsKKyAgICBXZWJHUFU6OmZyb21BUEkocXVldWUpLnN1Ym1pdChXVEZNb3ZlKGNvbW1hbmRzVG9G
b3J3YXJkKSk7CiB9CiAKIHZvaWQgd2dwdVF1ZXVlV3JpdGVCdWZmZXIoV0dQVVF1ZXVlIHF1ZXVl
LCBXR1BVQnVmZmVyIGJ1ZmZlciwgdWludDY0X3QgYnVmZmVyT2Zmc2V0LCBjb25zdCB2b2lkKiBk
YXRhLCBzaXplX3Qgc2l6ZSkKIHsKLSAgICBxdWV1ZS0+cXVldWUtPndyaXRlQnVmZmVyKGJ1ZmZl
ci0+YnVmZmVyLCBidWZmZXJPZmZzZXQsIGRhdGEsIHNpemUpOworICAgIFdlYkdQVTo6ZnJvbUFQ
SShxdWV1ZSkud3JpdGVCdWZmZXIoV2ViR1BVOjpmcm9tQVBJKGJ1ZmZlciksIGJ1ZmZlck9mZnNl
dCwgZGF0YSwgc2l6ZSk7CiB9CiAKIHZvaWQgd2dwdVF1ZXVlV3JpdGVUZXh0dXJlKFdHUFVRdWV1
ZSBxdWV1ZSwgY29uc3QgV0dQVUltYWdlQ29weVRleHR1cmUqIGRlc3RpbmF0aW9uLCBjb25zdCB2
b2lkKiBkYXRhLCBzaXplX3QgZGF0YVNpemUsIGNvbnN0IFdHUFVUZXh0dXJlRGF0YUxheW91dCog
ZGF0YUxheW91dCwgY29uc3QgV0dQVUV4dGVudDNEKiB3cml0ZVNpemUpCiB7Ci0gICAgcXVldWUt
PnF1ZXVlLT53cml0ZVRleHR1cmUoKmRlc3RpbmF0aW9uLCBkYXRhLCBkYXRhU2l6ZSwgKmRhdGFM
YXlvdXQsICp3cml0ZVNpemUpOworICAgIFdlYkdQVTo6ZnJvbUFQSShxdWV1ZSkud3JpdGVUZXh0
dXJlKCpkZXN0aW5hdGlvbiwgZGF0YSwgZGF0YVNpemUsICpkYXRhTGF5b3V0LCAqd3JpdGVTaXpl
KTsKIH0KIAogdm9pZCB3Z3B1UXVldWVTZXRMYWJlbChXR1BVUXVldWUgcXVldWUsIGNvbnN0IGNo
YXIqIGxhYmVsKQogewotICAgIHF1ZXVlLT5xdWV1ZS0+c2V0TGFiZWwobGFiZWwpOworICAgIFdl
YkdQVTo6ZnJvbUFQSShxdWV1ZSkuc2V0TGFiZWwoV2ViR1BVOjpmcm9tQVBJKGxhYmVsKSk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9SZW5kZXJCdW5kbGUuaCBiL1NvdXJj
ZS9XZWJHUFUvV2ViR1BVL1JlbmRlckJ1bmRsZS5oCmluZGV4IGNiNzQxZjdkNzE1ODQxNGRlNjk2
ZjA5YzBjZTNkMGU5NDZmZGYzMmMuLjhkZmM1MDc0NjE0ZGZhMmQzNjVhYjQwOWY1YzZiNTRkYTNj
MWIwMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1JlbmRlckJ1bmRsZS5oCisr
KyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1JlbmRlckJ1bmRsZS5oCkBAIC00MSw3ICs0MSw3IEBA
IHB1YmxpYzoKIAogICAgIH5SZW5kZXJCdW5kbGUoKTsKIAotICAgIHZvaWQgc2V0TGFiZWwoY29u
c3QgY2hhciopOworICAgIHZvaWQgc2V0TGFiZWwoU3RyaW5nJiYpOwogCiAgICAgaWQ8TVRMSW5k
aXJlY3RDb21tYW5kQnVmZmVyPiBpbmRpcmVjdENvbW1hbmRCdWZmZXIoKSBjb25zdCB7IHJldHVy
biBtX2luZGlyZWN0Q29tbWFuZEJ1ZmZlcjsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BV
L1dlYkdQVS9SZW5kZXJCdW5kbGUubW0gYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9SZW5kZXJCdW5k
bGUubW0KaW5kZXggMzczOGFmN2FhMDU3MmYyNmYzYzNjM2YxZTcwODI5NDVkN2Y3NDMwNS4uOTYy
Njk4NzIyOTEzYjIzYmI4MDFhNjg0NzE3ODljYzMwMzc0NWE0MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkdQVS9XZWJHUFUvUmVuZGVyQnVuZGxlLm1tCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BV
L1JlbmRlckJ1bmRsZS5tbQpAQCAtMjYsNiArMjYsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAj
aW1wb3J0ICJSZW5kZXJCdW5kbGUuaCIKIAorI2ltcG9ydCAiQVBJQ29udmVyc2lvbnMuaCIKIAog
bmFtZXNwYWNlIFdlYkdQVSB7CiAKQEAgLTM2LDkgKzM3LDkgQEAgUmVuZGVyQnVuZGxlOjpSZW5k
ZXJCdW5kbGUoaWQ8TVRMSW5kaXJlY3RDb21tYW5kQnVmZmVyPiBpbmRpcmVjdENvbW1hbmRCdWZm
ZXIpCiAKIFJlbmRlckJ1bmRsZTo6flJlbmRlckJ1bmRsZSgpID0gZGVmYXVsdDsKIAotdm9pZCBS
ZW5kZXJCdW5kbGU6OnNldExhYmVsKGNvbnN0IGNoYXIqIGxhYmVsKQordm9pZCBSZW5kZXJCdW5k
bGU6OnNldExhYmVsKFN0cmluZyYmIGxhYmVsKQogewotICAgIG1faW5kaXJlY3RDb21tYW5kQnVm
ZmVyLmxhYmVsID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDU3RyaW5nOmxhYmVsIGVuY29kaW5nOk5T
VVRGOFN0cmluZ0VuY29kaW5nXTsKKyAgICBtX2luZGlyZWN0Q29tbWFuZEJ1ZmZlci5sYWJlbCA9
IHN0YXRpY19jYXN0PE5TU3RyaW5nICo+KGxhYmVsKTsKIH0KIAogfQpAQCAtNTAsNSArNTEsNSBA
QCB2b2lkIHdncHVSZW5kZXJCdW5kbGVSZWxlYXNlKFdHUFVSZW5kZXJCdW5kbGUgcmVuZGVyQnVu
ZGxlKQogCiB2b2lkIHdncHVSZW5kZXJCdW5kbGVTZXRMYWJlbChXR1BVUmVuZGVyQnVuZGxlIHJl
bmRlckJ1bmRsZSwgY29uc3QgY2hhciogbGFiZWwpCiB7Ci0gICAgcmVuZGVyQnVuZGxlLT5yZW5k
ZXJCdW5kbGUtPnNldExhYmVsKGxhYmVsKTsKKyAgICBXZWJHUFU6OmZyb21BUEkocmVuZGVyQnVu
ZGxlKS5zZXRMYWJlbChXZWJHUFU6OmZyb21BUEkobGFiZWwpKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJHUFUvV2ViR1BVL1JlbmRlckJ1bmRsZUVuY29kZXIuaCBiL1NvdXJjZS9XZWJHUFUv
V2ViR1BVL1JlbmRlckJ1bmRsZUVuY29kZXIuaAppbmRleCBlNmZmODQ4ZjBhN2U5ZjgyMDk4ZjU1
YzA2Yjc3OGI1OTgyODQ5MzI3Li5lMWViMzVlYmU0ZDM0ZWRjYWQ4YjI3N2U1YjZhNjE5NWYwYzgy
YmY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9SZW5kZXJCdW5kbGVFbmNvZGVy
LmgKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvUmVuZGVyQnVuZGxlRW5jb2Rlci5oCkBAIC01
MiwxNCArNTIsMTQgQEAgcHVibGljOgogICAgIHZvaWQgZHJhd0luZGV4ZWRJbmRpcmVjdChjb25z
dCBCdWZmZXImIGluZGlyZWN0QnVmZmVyLCB1aW50NjRfdCBpbmRpcmVjdE9mZnNldCk7CiAgICAg
dm9pZCBkcmF3SW5kaXJlY3QoY29uc3QgQnVmZmVyJiBpbmRpcmVjdEJ1ZmZlciwgdWludDY0X3Qg
aW5kaXJlY3RPZmZzZXQpOwogICAgIFJlZlB0cjxSZW5kZXJCdW5kbGU+IGZpbmlzaChjb25zdCBX
R1BVUmVuZGVyQnVuZGxlRGVzY3JpcHRvciYpOwotICAgIHZvaWQgaW5zZXJ0RGVidWdNYXJrZXIo
Y29uc3QgY2hhciogbWFya2VyTGFiZWwpOworICAgIHZvaWQgaW5zZXJ0RGVidWdNYXJrZXIoU3Ry
aW5nJiYgbWFya2VyTGFiZWwpOwogICAgIHZvaWQgcG9wRGVidWdHcm91cCgpOwotICAgIHZvaWQg
cHVzaERlYnVnR3JvdXAoY29uc3QgY2hhciogZ3JvdXBMYWJlbCk7CisgICAgdm9pZCBwdXNoRGVi
dWdHcm91cChTdHJpbmcmJiBncm91cExhYmVsKTsKICAgICB2b2lkIHNldEJpbmRHcm91cCh1aW50
MzJfdCBncm91cEluZGV4LCBjb25zdCBCaW5kR3JvdXAmLCB1aW50MzJfdCBkeW5hbWljT2Zmc2V0
Q291bnQsIGNvbnN0IHVpbnQzMl90KiBkeW5hbWljT2Zmc2V0cyk7CiAgICAgdm9pZCBzZXRJbmRl
eEJ1ZmZlcihjb25zdCBCdWZmZXImLCBXR1BVSW5kZXhGb3JtYXQsIHVpbnQ2NF90IG9mZnNldCwg
dWludDY0X3Qgc2l6ZSk7CiAgICAgdm9pZCBzZXRQaXBlbGluZShjb25zdCBSZW5kZXJQaXBlbGlu
ZSYpOwogICAgIHZvaWQgc2V0VmVydGV4QnVmZmVyKHVpbnQzMl90IHNsb3QsIGNvbnN0IEJ1ZmZl
ciYsIHVpbnQ2NF90IG9mZnNldCwgdWludDY0X3Qgc2l6ZSk7Ci0gICAgdm9pZCBzZXRMYWJlbChj
b25zdCBjaGFyKik7CisgICAgdm9pZCBzZXRMYWJlbChTdHJpbmcmJik7CiAKIHByaXZhdGU6CiAg
ICAgUmVuZGVyQnVuZGxlRW5jb2RlcihpZDxNVExJbmRpcmVjdENvbW1hbmRCdWZmZXI+KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1JlbmRlckJ1bmRsZUVuY29kZXIubW0gYi9T
b3VyY2UvV2ViR1BVL1dlYkdQVS9SZW5kZXJCdW5kbGVFbmNvZGVyLm1tCmluZGV4IGE0NGNhMGQw
MTJhY2ZlMzFlODViN2RiODhjN2ZkZjhmYjQ0MmEzYjYuLjkyZTYzMDYzZjI3NjFmN2VjNmM2OGY5
MGRkNGJkYWI2OTFlYWQ4NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1JlbmRl
ckJ1bmRsZUVuY29kZXIubW0KKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvUmVuZGVyQnVuZGxl
RW5jb2Rlci5tbQpAQCAtMjYsNiArMjYsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0
ICJSZW5kZXJCdW5kbGVFbmNvZGVyLmgiCiAKKyNpbXBvcnQgIkFQSUNvbnZlcnNpb25zLmgiCiAj
aW1wb3J0ICJCaW5kR3JvdXAuaCIKICNpbXBvcnQgIkJ1ZmZlci5oIgogI2ltcG9ydCAiRGV2aWNl
LmgiCkBAIC04Miw3ICs4Myw3IEBAIFJlZlB0cjxSZW5kZXJCdW5kbGU+IFJlbmRlckJ1bmRsZUVu
Y29kZXI6OmZpbmlzaChjb25zdCBXR1BVUmVuZGVyQnVuZGxlRGVzY3JpcHRvCiAgICAgcmV0dXJu
IFJlbmRlckJ1bmRsZTo6Y3JlYXRlKG5pbCk7CiB9CiAKLXZvaWQgUmVuZGVyQnVuZGxlRW5jb2Rl
cjo6aW5zZXJ0RGVidWdNYXJrZXIoY29uc3QgY2hhciogbWFya2VyTGFiZWwpCit2b2lkIFJlbmRl
ckJ1bmRsZUVuY29kZXI6Omluc2VydERlYnVnTWFya2VyKFN0cmluZyYmIG1hcmtlckxhYmVsKQog
ewogICAgIFVOVVNFRF9QQVJBTShtYXJrZXJMYWJlbCk7CiB9CkBAIC05Miw3ICs5Myw3IEBAIHZv
aWQgUmVuZGVyQnVuZGxlRW5jb2Rlcjo6cG9wRGVidWdHcm91cCgpCiAKIH0KIAotdm9pZCBSZW5k
ZXJCdW5kbGVFbmNvZGVyOjpwdXNoRGVidWdHcm91cChjb25zdCBjaGFyKiBncm91cExhYmVsKQor
dm9pZCBSZW5kZXJCdW5kbGVFbmNvZGVyOjpwdXNoRGVidWdHcm91cChTdHJpbmcmJiBncm91cExh
YmVsKQogewogICAgIFVOVVNFRF9QQVJBTShncm91cExhYmVsKTsKIH0KQEAgLTEyNiw5ICsxMjcs
OSBAQCB2b2lkIFJlbmRlckJ1bmRsZUVuY29kZXI6OnNldFZlcnRleEJ1ZmZlcih1aW50MzJfdCBz
bG90LCBjb25zdCBCdWZmZXImIGJ1ZmZlciwgdQogICAgIFVOVVNFRF9QQVJBTShzaXplKTsKIH0K
IAotdm9pZCBSZW5kZXJCdW5kbGVFbmNvZGVyOjpzZXRMYWJlbChjb25zdCBjaGFyKiBsYWJlbCkK
K3ZvaWQgUmVuZGVyQnVuZGxlRW5jb2Rlcjo6c2V0TGFiZWwoU3RyaW5nJiYgbGFiZWwpCiB7Ci0g
ICAgbV9pbmRpcmVjdENvbW1hbmRCdWZmZXIubGFiZWwgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENT
dHJpbmc6bGFiZWwgZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddOworICAgIG1faW5kaXJl
Y3RDb21tYW5kQnVmZmVyLmxhYmVsID0gc3RhdGljX2Nhc3Q8TlNTdHJpbmcgKj4obGFiZWwpOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBXZWJHUFUKQEAgLTE0MCw2NiArMTQxLDY2IEBAIHZvaWQgd2dw
dVJlbmRlckJ1bmRsZUVuY29kZXJSZWxlYXNlKFdHUFVSZW5kZXJCdW5kbGVFbmNvZGVyIHJlbmRl
ckJ1bmRsZUVuY29kZXIpCiAKIHZvaWQgd2dwdVJlbmRlckJ1bmRsZUVuY29kZXJEcmF3KFdHUFVS
ZW5kZXJCdW5kbGVFbmNvZGVyIHJlbmRlckJ1bmRsZUVuY29kZXIsIHVpbnQzMl90IHZlcnRleENv
dW50LCB1aW50MzJfdCBpbnN0YW5jZUNvdW50LCB1aW50MzJfdCBmaXJzdFZlcnRleCwgdWludDMy
X3QgZmlyc3RJbnN0YW5jZSkKIHsKLSAgICByZW5kZXJCdW5kbGVFbmNvZGVyLT5yZW5kZXJCdW5k
bGVFbmNvZGVyLT5kcmF3KHZlcnRleENvdW50LCBpbnN0YW5jZUNvdW50LCBmaXJzdFZlcnRleCwg
Zmlyc3RJbnN0YW5jZSk7CisgICAgV2ViR1BVOjpmcm9tQVBJKHJlbmRlckJ1bmRsZUVuY29kZXIp
LmRyYXcodmVydGV4Q291bnQsIGluc3RhbmNlQ291bnQsIGZpcnN0VmVydGV4LCBmaXJzdEluc3Rh
bmNlKTsKIH0KIAogdm9pZCB3Z3B1UmVuZGVyQnVuZGxlRW5jb2RlckRyYXdJbmRleGVkKFdHUFVS
ZW5kZXJCdW5kbGVFbmNvZGVyIHJlbmRlckJ1bmRsZUVuY29kZXIsIHVpbnQzMl90IGluZGV4Q291
bnQsIHVpbnQzMl90IGluc3RhbmNlQ291bnQsIHVpbnQzMl90IGZpcnN0SW5kZXgsIGludDMyX3Qg
YmFzZVZlcnRleCwgdWludDMyX3QgZmlyc3RJbnN0YW5jZSkKIHsKLSAgICByZW5kZXJCdW5kbGVF
bmNvZGVyLT5yZW5kZXJCdW5kbGVFbmNvZGVyLT5kcmF3SW5kZXhlZChpbmRleENvdW50LCBpbnN0
YW5jZUNvdW50LCBmaXJzdEluZGV4LCBiYXNlVmVydGV4LCBmaXJzdEluc3RhbmNlKTsKKyAgICBX
ZWJHUFU6OmZyb21BUEkocmVuZGVyQnVuZGxlRW5jb2RlcikuZHJhd0luZGV4ZWQoaW5kZXhDb3Vu
dCwgaW5zdGFuY2VDb3VudCwgZmlyc3RJbmRleCwgYmFzZVZlcnRleCwgZmlyc3RJbnN0YW5jZSk7
CiB9CiAKIHZvaWQgd2dwdVJlbmRlckJ1bmRsZUVuY29kZXJEcmF3SW5kZXhlZEluZGlyZWN0KFdH
UFVSZW5kZXJCdW5kbGVFbmNvZGVyIHJlbmRlckJ1bmRsZUVuY29kZXIsIFdHUFVCdWZmZXIgaW5k
aXJlY3RCdWZmZXIsIHVpbnQ2NF90IGluZGlyZWN0T2Zmc2V0KQogewotICAgIHJlbmRlckJ1bmRs
ZUVuY29kZXItPnJlbmRlckJ1bmRsZUVuY29kZXItPmRyYXdJbmRleGVkSW5kaXJlY3QoaW5kaXJl
Y3RCdWZmZXItPmJ1ZmZlciwgaW5kaXJlY3RPZmZzZXQpOworICAgIFdlYkdQVTo6ZnJvbUFQSShy
ZW5kZXJCdW5kbGVFbmNvZGVyKS5kcmF3SW5kZXhlZEluZGlyZWN0KFdlYkdQVTo6ZnJvbUFQSShp
bmRpcmVjdEJ1ZmZlciksIGluZGlyZWN0T2Zmc2V0KTsKIH0KIAogdm9pZCB3Z3B1UmVuZGVyQnVu
ZGxlRW5jb2RlckRyYXdJbmRpcmVjdChXR1BVUmVuZGVyQnVuZGxlRW5jb2RlciByZW5kZXJCdW5k
bGVFbmNvZGVyLCBXR1BVQnVmZmVyIGluZGlyZWN0QnVmZmVyLCB1aW50NjRfdCBpbmRpcmVjdE9m
ZnNldCkKIHsKLSAgICByZW5kZXJCdW5kbGVFbmNvZGVyLT5yZW5kZXJCdW5kbGVFbmNvZGVyLT5k
cmF3SW5kaXJlY3QoaW5kaXJlY3RCdWZmZXItPmJ1ZmZlciwgaW5kaXJlY3RPZmZzZXQpOworICAg
IFdlYkdQVTo6ZnJvbUFQSShyZW5kZXJCdW5kbGVFbmNvZGVyKS5kcmF3SW5kaXJlY3QoV2ViR1BV
Ojpmcm9tQVBJKGluZGlyZWN0QnVmZmVyKSwgaW5kaXJlY3RPZmZzZXQpOwogfQogCiBXR1BVUmVu
ZGVyQnVuZGxlIHdncHVSZW5kZXJCdW5kbGVFbmNvZGVyRmluaXNoKFdHUFVSZW5kZXJCdW5kbGVF
bmNvZGVyIHJlbmRlckJ1bmRsZUVuY29kZXIsIGNvbnN0IFdHUFVSZW5kZXJCdW5kbGVEZXNjcmlw
dG9yKiBkZXNjcmlwdG9yKQogewotICAgIGF1dG8gcmVzdWx0ID0gcmVuZGVyQnVuZGxlRW5jb2Rl
ci0+cmVuZGVyQnVuZGxlRW5jb2Rlci0+ZmluaXNoKCpkZXNjcmlwdG9yKTsKKyAgICBhdXRvIHJl
c3VsdCA9IFdlYkdQVTo6ZnJvbUFQSShyZW5kZXJCdW5kbGVFbmNvZGVyKS5maW5pc2goKmRlc2Ny
aXB0b3IpOwogICAgIHJldHVybiByZXN1bHQgPyBuZXcgV0dQVVJlbmRlckJ1bmRsZUltcGwgeyBy
ZXN1bHQucmVsZWFzZU5vbk51bGwoKSB9IDogbnVsbHB0cjsKIH0KIAogdm9pZCB3Z3B1UmVuZGVy
QnVuZGxlRW5jb2Rlckluc2VydERlYnVnTWFya2VyKFdHUFVSZW5kZXJCdW5kbGVFbmNvZGVyIHJl
bmRlckJ1bmRsZUVuY29kZXIsIGNvbnN0IGNoYXIqIG1hcmtlckxhYmVsKQogewotICAgIHJlbmRl
ckJ1bmRsZUVuY29kZXItPnJlbmRlckJ1bmRsZUVuY29kZXItPmluc2VydERlYnVnTWFya2VyKG1h
cmtlckxhYmVsKTsKKyAgICBXZWJHUFU6OmZyb21BUEkocmVuZGVyQnVuZGxlRW5jb2RlcikuaW5z
ZXJ0RGVidWdNYXJrZXIoV2ViR1BVOjpmcm9tQVBJKG1hcmtlckxhYmVsKSk7CiB9CiAKIHZvaWQg
d2dwdVJlbmRlckJ1bmRsZUVuY29kZXJQb3BEZWJ1Z0dyb3VwKFdHUFVSZW5kZXJCdW5kbGVFbmNv
ZGVyIHJlbmRlckJ1bmRsZUVuY29kZXIpCiB7Ci0gICAgcmVuZGVyQnVuZGxlRW5jb2Rlci0+cmVu
ZGVyQnVuZGxlRW5jb2Rlci0+cG9wRGVidWdHcm91cCgpOworICAgIFdlYkdQVTo6ZnJvbUFQSShy
ZW5kZXJCdW5kbGVFbmNvZGVyKS5wb3BEZWJ1Z0dyb3VwKCk7CiB9CiAKIHZvaWQgd2dwdVJlbmRl
ckJ1bmRsZUVuY29kZXJQdXNoRGVidWdHcm91cChXR1BVUmVuZGVyQnVuZGxlRW5jb2RlciByZW5k
ZXJCdW5kbGVFbmNvZGVyLCBjb25zdCBjaGFyKiBncm91cExhYmVsKQogewotICAgIHJlbmRlckJ1
bmRsZUVuY29kZXItPnJlbmRlckJ1bmRsZUVuY29kZXItPnB1c2hEZWJ1Z0dyb3VwKGdyb3VwTGFi
ZWwpOworICAgIFdlYkdQVTo6ZnJvbUFQSShyZW5kZXJCdW5kbGVFbmNvZGVyKS5wdXNoRGVidWdH
cm91cChXZWJHUFU6OmZyb21BUEkoZ3JvdXBMYWJlbCkpOwogfQogCiB2b2lkIHdncHVSZW5kZXJC
dW5kbGVFbmNvZGVyU2V0QmluZEdyb3VwKFdHUFVSZW5kZXJCdW5kbGVFbmNvZGVyIHJlbmRlckJ1
bmRsZUVuY29kZXIsIHVpbnQzMl90IGdyb3VwSW5kZXgsIFdHUFVCaW5kR3JvdXAgZ3JvdXAsIHVp
bnQzMl90IGR5bmFtaWNPZmZzZXRDb3VudCwgY29uc3QgdWludDMyX3QqIGR5bmFtaWNPZmZzZXRz
KQogewotICAgIHJlbmRlckJ1bmRsZUVuY29kZXItPnJlbmRlckJ1bmRsZUVuY29kZXItPnNldEJp
bmRHcm91cChncm91cEluZGV4LCBncm91cC0+YmluZEdyb3VwLCBkeW5hbWljT2Zmc2V0Q291bnQs
IGR5bmFtaWNPZmZzZXRzKTsKKyAgICBXZWJHUFU6OmZyb21BUEkocmVuZGVyQnVuZGxlRW5jb2Rl
cikuc2V0QmluZEdyb3VwKGdyb3VwSW5kZXgsIFdlYkdQVTo6ZnJvbUFQSShncm91cCksIGR5bmFt
aWNPZmZzZXRDb3VudCwgZHluYW1pY09mZnNldHMpOwogfQogCiB2b2lkIHdncHVSZW5kZXJCdW5k
bGVFbmNvZGVyU2V0SW5kZXhCdWZmZXIoV0dQVVJlbmRlckJ1bmRsZUVuY29kZXIgcmVuZGVyQnVu
ZGxlRW5jb2RlciwgV0dQVUJ1ZmZlciBidWZmZXIsIFdHUFVJbmRleEZvcm1hdCBmb3JtYXQsIHVp
bnQ2NF90IG9mZnNldCwgdWludDY0X3Qgc2l6ZSkKIHsKLSAgICByZW5kZXJCdW5kbGVFbmNvZGVy
LT5yZW5kZXJCdW5kbGVFbmNvZGVyLT5zZXRJbmRleEJ1ZmZlcihidWZmZXItPmJ1ZmZlciwgZm9y
bWF0LCBvZmZzZXQsIHNpemUpOworICAgIFdlYkdQVTo6ZnJvbUFQSShyZW5kZXJCdW5kbGVFbmNv
ZGVyKS5zZXRJbmRleEJ1ZmZlcihXZWJHUFU6OmZyb21BUEkoYnVmZmVyKSwgZm9ybWF0LCBvZmZz
ZXQsIHNpemUpOwogfQogCiB2b2lkIHdncHVSZW5kZXJCdW5kbGVFbmNvZGVyU2V0UGlwZWxpbmUo
V0dQVVJlbmRlckJ1bmRsZUVuY29kZXIgcmVuZGVyQnVuZGxlRW5jb2RlciwgV0dQVVJlbmRlclBp
cGVsaW5lIHBpcGVsaW5lKQogewotICAgIHJlbmRlckJ1bmRsZUVuY29kZXItPnJlbmRlckJ1bmRs
ZUVuY29kZXItPnNldFBpcGVsaW5lKHBpcGVsaW5lLT5yZW5kZXJQaXBlbGluZSk7CisgICAgV2Vi
R1BVOjpmcm9tQVBJKHJlbmRlckJ1bmRsZUVuY29kZXIpLnNldFBpcGVsaW5lKFdlYkdQVTo6ZnJv
bUFQSShwaXBlbGluZSkpOwogfQogCiB2b2lkIHdncHVSZW5kZXJCdW5kbGVFbmNvZGVyU2V0VmVy
dGV4QnVmZmVyKFdHUFVSZW5kZXJCdW5kbGVFbmNvZGVyIHJlbmRlckJ1bmRsZUVuY29kZXIsIHVp
bnQzMl90IHNsb3QsIFdHUFVCdWZmZXIgYnVmZmVyLCB1aW50NjRfdCBvZmZzZXQsIHVpbnQ2NF90
IHNpemUpCiB7Ci0gICAgcmVuZGVyQnVuZGxlRW5jb2Rlci0+cmVuZGVyQnVuZGxlRW5jb2Rlci0+
c2V0VmVydGV4QnVmZmVyKHNsb3QsIGJ1ZmZlci0+YnVmZmVyLCBvZmZzZXQsIHNpemUpOworICAg
IFdlYkdQVTo6ZnJvbUFQSShyZW5kZXJCdW5kbGVFbmNvZGVyKS5zZXRWZXJ0ZXhCdWZmZXIoc2xv
dCwgV2ViR1BVOjpmcm9tQVBJKGJ1ZmZlciksIG9mZnNldCwgc2l6ZSk7CiB9CiAKIHZvaWQgd2dw
dVJlbmRlckJ1bmRsZUVuY29kZXJTZXRMYWJlbChXR1BVUmVuZGVyQnVuZGxlRW5jb2RlciByZW5k
ZXJCdW5kbGVFbmNvZGVyLCBjb25zdCBjaGFyKiBsYWJlbCkKIHsKLSAgICByZW5kZXJCdW5kbGVF
bmNvZGVyLT5yZW5kZXJCdW5kbGVFbmNvZGVyLT5zZXRMYWJlbChsYWJlbCk7CisgICAgV2ViR1BV
Ojpmcm9tQVBJKHJlbmRlckJ1bmRsZUVuY29kZXIpLnNldExhYmVsKFdlYkdQVTo6ZnJvbUFQSShs
YWJlbCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvUmVuZGVyUGFzc0Vu
Y29kZXIuaCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1JlbmRlclBhc3NFbmNvZGVyLmgKaW5kZXgg
ZTllYTk2YmRiZjUwYzYzMzg1NzljZTdjYzg1Mzg3MzRjOTEzNGViMC4uYjdhNWQ3YTRmZmJkYTRl
NThiNDM1MDI3YzM5YmVkOGI3Nzc1ZmZkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJH
UFUvUmVuZGVyUGFzc0VuY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9SZW5kZXJQ
YXNzRW5jb2Rlci5oCkBAIC01OCw5ICs1OCw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGVuZFBhc3Mo
KTsKICAgICB2b2lkIGVuZFBpcGVsaW5lU3RhdGlzdGljc1F1ZXJ5KCk7CiAgICAgdm9pZCBleGVj
dXRlQnVuZGxlcyhWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxjb25zdCBSZW5kZXJCdW5k
bGU+PiYmIGJ1bmRsZXMpOwotICAgIHZvaWQgaW5zZXJ0RGVidWdNYXJrZXIoY29uc3QgY2hhciog
bWFya2VyTGFiZWwpOworICAgIHZvaWQgaW5zZXJ0RGVidWdNYXJrZXIoU3RyaW5nJiYgbWFya2Vy
TGFiZWwpOwogICAgIHZvaWQgcG9wRGVidWdHcm91cCgpOwotICAgIHZvaWQgcHVzaERlYnVnR3Jv
dXAoY29uc3QgY2hhciogZ3JvdXBMYWJlbCk7CisgICAgdm9pZCBwdXNoRGVidWdHcm91cChTdHJp
bmcmJiBncm91cExhYmVsKTsKICAgICB2b2lkIHNldEJpbmRHcm91cCh1aW50MzJfdCBncm91cElu
ZGV4LCBjb25zdCBCaW5kR3JvdXAmLCB1aW50MzJfdCBkeW5hbWljT2Zmc2V0Q291bnQsIGNvbnN0
IHVpbnQzMl90KiBkeW5hbWljT2Zmc2V0cyk7CiAgICAgdm9pZCBzZXRCbGVuZENvbnN0YW50KGNv
bnN0IFdHUFVDb2xvciYpOwogICAgIHZvaWQgc2V0SW5kZXhCdWZmZXIoY29uc3QgQnVmZmVyJiwg
V0dQVUluZGV4Rm9ybWF0LCB1aW50NjRfdCBvZmZzZXQsIHVpbnQ2NF90IHNpemUpOwpAQCAtNjks
NyArNjksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTdGVuY2lsUmVmZXJlbmNlKHVpbnQzMl90
KTsKICAgICB2b2lkIHNldFZlcnRleEJ1ZmZlcih1aW50MzJfdCBzbG90LCBjb25zdCBCdWZmZXIm
LCB1aW50NjRfdCBvZmZzZXQsIHVpbnQ2NF90IHNpemUpOwogICAgIHZvaWQgc2V0Vmlld3BvcnQo
ZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCwgZmxvYXQgbWluRGVw
dGgsIGZsb2F0IG1heERlcHRoKTsKLSAgICB2b2lkIHNldExhYmVsKGNvbnN0IGNoYXIqKTsKKyAg
ICB2b2lkIHNldExhYmVsKFN0cmluZyYmKTsKIAogcHJpdmF0ZToKICAgICBSZW5kZXJQYXNzRW5j
b2RlcihpZDxNVExSZW5kZXJDb21tYW5kRW5jb2Rlcj4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkdQVS9XZWJHUFUvUmVuZGVyUGFzc0VuY29kZXIubW0gYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9S
ZW5kZXJQYXNzRW5jb2Rlci5tbQppbmRleCA1MGZmYTdmMDk2NWEwNjU3YWJhN2MzZjdkOGFlZTlk
MTU4ZTEyNWExLi5jYTJlMDdmYzIwYWM0Y2YxYmJlZjQ0NmMxMzgxYjJkMTQ4ZjU0Mjk0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9SZW5kZXJQYXNzRW5jb2Rlci5tbQorKysgYi9T
b3VyY2UvV2ViR1BVL1dlYkdQVS9SZW5kZXJQYXNzRW5jb2Rlci5tbQpAQCAtMjYsNiArMjYsNyBA
QAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJSZW5kZXJQYXNzRW5jb2Rlci5oIgogCisj
aW1wb3J0ICJBUElDb252ZXJzaW9ucy5oIgogI2ltcG9ydCAiQmluZEdyb3VwLmgiCiAjaW1wb3J0
ICJCdWZmZXIuaCIKICNpbXBvcnQgIlF1ZXJ5U2V0LmgiCkBAIC0xMDEsNyArMTAyLDcgQEAgdm9p
ZCBSZW5kZXJQYXNzRW5jb2Rlcjo6ZXhlY3V0ZUJ1bmRsZXMoVmVjdG9yPHN0ZDo6cmVmZXJlbmNl
X3dyYXBwZXI8Y29uc3QgUmVuZGUKICAgICBVTlVTRURfUEFSQU0oYnVuZGxlcyk7CiB9CiAKLXZv
aWQgUmVuZGVyUGFzc0VuY29kZXI6Omluc2VydERlYnVnTWFya2VyKGNvbnN0IGNoYXIqIG1hcmtl
ckxhYmVsKQordm9pZCBSZW5kZXJQYXNzRW5jb2Rlcjo6aW5zZXJ0RGVidWdNYXJrZXIoU3RyaW5n
JiYgbWFya2VyTGFiZWwpCiB7CiAgICAgVU5VU0VEX1BBUkFNKG1hcmtlckxhYmVsKTsKIH0KQEAg
LTExMSw3ICsxMTIsNyBAQCB2b2lkIFJlbmRlclBhc3NFbmNvZGVyOjpwb3BEZWJ1Z0dyb3VwKCkK
IAogfQogCi12b2lkIFJlbmRlclBhc3NFbmNvZGVyOjpwdXNoRGVidWdHcm91cChjb25zdCBjaGFy
KiBncm91cExhYmVsKQordm9pZCBSZW5kZXJQYXNzRW5jb2Rlcjo6cHVzaERlYnVnR3JvdXAoU3Ry
aW5nJiYgZ3JvdXBMYWJlbCkKIHsKICAgICBVTlVTRURfUEFSQU0oZ3JvdXBMYWJlbCk7CiB9CkBA
IC0xNzMsOSArMTc0LDkgQEAgdm9pZCBSZW5kZXJQYXNzRW5jb2Rlcjo6c2V0Vmlld3BvcnQoZmxv
YXQgeCwgZmxvYXQgeSwgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCwKICAgICBVTlVTRURfUEFS
QU0obWF4RGVwdGgpOwogfQogCi12b2lkIFJlbmRlclBhc3NFbmNvZGVyOjpzZXRMYWJlbChjb25z
dCBjaGFyKiBsYWJlbCkKK3ZvaWQgUmVuZGVyUGFzc0VuY29kZXI6OnNldExhYmVsKFN0cmluZyYm
IGxhYmVsKQogewotICAgIG1fcmVuZGVyQ29tbWFuZEVuY29kZXIubGFiZWwgPSBbTlNTdHJpbmcg
c3RyaW5nV2l0aENTdHJpbmc6bGFiZWwgZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddOwor
ICAgIG1fcmVuZGVyQ29tbWFuZEVuY29kZXIubGFiZWwgPSBzdGF0aWNfY2FzdDxOU1N0cmluZyAq
PihsYWJlbCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkdQVQpAQCAtMTg3LDExMyArMTg4LDEx
MyBAQCB2b2lkIHdncHVSZW5kZXJQYXNzRW5jb2RlclJlbGVhc2UoV0dQVVJlbmRlclBhc3NFbmNv
ZGVyIHJlbmRlclBhc3NFbmNvZGVyKQogCiB2b2lkIHdncHVSZW5kZXJQYXNzRW5jb2RlckJlZ2lu
T2NjbHVzaW9uUXVlcnkoV0dQVVJlbmRlclBhc3NFbmNvZGVyIHJlbmRlclBhc3NFbmNvZGVyLCB1
aW50MzJfdCBxdWVyeUluZGV4KQogewotICAgIHJlbmRlclBhc3NFbmNvZGVyLT5yZW5kZXJQYXNz
RW5jb2Rlci0+YmVnaW5PY2NsdXNpb25RdWVyeShxdWVyeUluZGV4KTsKKyAgICBXZWJHUFU6OmZy
b21BUEkocmVuZGVyUGFzc0VuY29kZXIpLmJlZ2luT2NjbHVzaW9uUXVlcnkocXVlcnlJbmRleCk7
CiB9CiAKIHZvaWQgd2dwdVJlbmRlclBhc3NFbmNvZGVyQmVnaW5QaXBlbGluZVN0YXRpc3RpY3NR
dWVyeShXR1BVUmVuZGVyUGFzc0VuY29kZXIgcmVuZGVyUGFzc0VuY29kZXIsIFdHUFVRdWVyeVNl
dCBxdWVyeVNldCwgdWludDMyX3QgcXVlcnlJbmRleCkKIHsKLSAgICByZW5kZXJQYXNzRW5jb2Rl
ci0+cmVuZGVyUGFzc0VuY29kZXItPmJlZ2luUGlwZWxpbmVTdGF0aXN0aWNzUXVlcnkocXVlcnlT
ZXQtPnF1ZXJ5U2V0LCBxdWVyeUluZGV4KTsKKyAgICBXZWJHUFU6OmZyb21BUEkocmVuZGVyUGFz
c0VuY29kZXIpLmJlZ2luUGlwZWxpbmVTdGF0aXN0aWNzUXVlcnkoV2ViR1BVOjpmcm9tQVBJKHF1
ZXJ5U2V0KSwgcXVlcnlJbmRleCk7CiB9CiAKIHZvaWQgd2dwdVJlbmRlclBhc3NFbmNvZGVyRHJh
dyhXR1BVUmVuZGVyUGFzc0VuY29kZXIgcmVuZGVyUGFzc0VuY29kZXIsIHVpbnQzMl90IHZlcnRl
eENvdW50LCB1aW50MzJfdCBpbnN0YW5jZUNvdW50LCB1aW50MzJfdCBmaXJzdFZlcnRleCwgdWlu
dDMyX3QgZmlyc3RJbnN0YW5jZSkKIHsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci0+cmVuZGVyUGFz
c0VuY29kZXItPmRyYXcodmVydGV4Q291bnQsIGluc3RhbmNlQ291bnQsIGZpcnN0VmVydGV4LCBm
aXJzdEluc3RhbmNlKTsKKyAgICBXZWJHUFU6OmZyb21BUEkocmVuZGVyUGFzc0VuY29kZXIpLmRy
YXcodmVydGV4Q291bnQsIGluc3RhbmNlQ291bnQsIGZpcnN0VmVydGV4LCBmaXJzdEluc3RhbmNl
KTsKIH0KIAogdm9pZCB3Z3B1UmVuZGVyUGFzc0VuY29kZXJEcmF3SW5kZXhlZChXR1BVUmVuZGVy
UGFzc0VuY29kZXIgcmVuZGVyUGFzc0VuY29kZXIsIHVpbnQzMl90IGluZGV4Q291bnQsIHVpbnQz
Ml90IGluc3RhbmNlQ291bnQsIHVpbnQzMl90IGZpcnN0SW5kZXgsIGludDMyX3QgYmFzZVZlcnRl
eCwgdWludDMyX3QgZmlyc3RJbnN0YW5jZSkKIHsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci0+cmVu
ZGVyUGFzc0VuY29kZXItPmRyYXdJbmRleGVkKGluZGV4Q291bnQsIGluc3RhbmNlQ291bnQsIGZp
cnN0SW5kZXgsIGJhc2VWZXJ0ZXgsIGZpcnN0SW5zdGFuY2UpOworICAgIFdlYkdQVTo6ZnJvbUFQ
SShyZW5kZXJQYXNzRW5jb2RlcikuZHJhd0luZGV4ZWQoaW5kZXhDb3VudCwgaW5zdGFuY2VDb3Vu
dCwgZmlyc3RJbmRleCwgYmFzZVZlcnRleCwgZmlyc3RJbnN0YW5jZSk7CiB9CiAKIHZvaWQgd2dw
dVJlbmRlclBhc3NFbmNvZGVyRHJhd0luZGV4ZWRJbmRpcmVjdChXR1BVUmVuZGVyUGFzc0VuY29k
ZXIgcmVuZGVyUGFzc0VuY29kZXIsIFdHUFVCdWZmZXIgaW5kaXJlY3RCdWZmZXIsIHVpbnQ2NF90
IGluZGlyZWN0T2Zmc2V0KQogewotICAgIHJlbmRlclBhc3NFbmNvZGVyLT5yZW5kZXJQYXNzRW5j
b2Rlci0+ZHJhd0luZGV4ZWRJbmRpcmVjdChpbmRpcmVjdEJ1ZmZlci0+YnVmZmVyLCBpbmRpcmVj
dE9mZnNldCk7CisgICAgV2ViR1BVOjpmcm9tQVBJKHJlbmRlclBhc3NFbmNvZGVyKS5kcmF3SW5k
ZXhlZEluZGlyZWN0KFdlYkdQVTo6ZnJvbUFQSShpbmRpcmVjdEJ1ZmZlciksIGluZGlyZWN0T2Zm
c2V0KTsKIH0KIAogdm9pZCB3Z3B1UmVuZGVyUGFzc0VuY29kZXJEcmF3SW5kaXJlY3QoV0dQVVJl
bmRlclBhc3NFbmNvZGVyIHJlbmRlclBhc3NFbmNvZGVyLCBXR1BVQnVmZmVyIGluZGlyZWN0QnVm
ZmVyLCB1aW50NjRfdCBpbmRpcmVjdE9mZnNldCkKIHsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci0+
cmVuZGVyUGFzc0VuY29kZXItPmRyYXdJbmRpcmVjdChpbmRpcmVjdEJ1ZmZlci0+YnVmZmVyLCBp
bmRpcmVjdE9mZnNldCk7CisgICAgV2ViR1BVOjpmcm9tQVBJKHJlbmRlclBhc3NFbmNvZGVyKS5k
cmF3SW5kaXJlY3QoV2ViR1BVOjpmcm9tQVBJKGluZGlyZWN0QnVmZmVyKSwgaW5kaXJlY3RPZmZz
ZXQpOwogfQogCiB2b2lkIHdncHVSZW5kZXJQYXNzRW5jb2RlckVuZE9jY2x1c2lvblF1ZXJ5KFdH
UFVSZW5kZXJQYXNzRW5jb2RlciByZW5kZXJQYXNzRW5jb2RlcikKIHsKLSAgICByZW5kZXJQYXNz
RW5jb2Rlci0+cmVuZGVyUGFzc0VuY29kZXItPmVuZE9jY2x1c2lvblF1ZXJ5KCk7CisgICAgV2Vi
R1BVOjpmcm9tQVBJKHJlbmRlclBhc3NFbmNvZGVyKS5lbmRPY2NsdXNpb25RdWVyeSgpOwogfQog
CiB2b2lkIHdncHVSZW5kZXJQYXNzRW5jb2RlckVuZFBhc3MoV0dQVVJlbmRlclBhc3NFbmNvZGVy
IHJlbmRlclBhc3NFbmNvZGVyKQogewotICAgIHJlbmRlclBhc3NFbmNvZGVyLT5yZW5kZXJQYXNz
RW5jb2Rlci0+ZW5kUGFzcygpOworICAgIFdlYkdQVTo6ZnJvbUFQSShyZW5kZXJQYXNzRW5jb2Rl
cikuZW5kUGFzcygpOwogfQogCiB2b2lkIHdncHVSZW5kZXJQYXNzRW5jb2RlckVuZFBpcGVsaW5l
U3RhdGlzdGljc1F1ZXJ5KFdHUFVSZW5kZXJQYXNzRW5jb2RlciByZW5kZXJQYXNzRW5jb2RlcikK
IHsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci0+cmVuZGVyUGFzc0VuY29kZXItPmVuZFBpcGVsaW5l
U3RhdGlzdGljc1F1ZXJ5KCk7CisgICAgV2ViR1BVOjpmcm9tQVBJKHJlbmRlclBhc3NFbmNvZGVy
KS5lbmRQaXBlbGluZVN0YXRpc3RpY3NRdWVyeSgpOwogfQogCiB2b2lkIHdncHVSZW5kZXJQYXNz
RW5jb2RlckV4ZWN1dGVCdW5kbGVzKFdHUFVSZW5kZXJQYXNzRW5jb2RlciByZW5kZXJQYXNzRW5j
b2RlciwgdWludDMyX3QgYnVuZGxlc0NvdW50LCBjb25zdCBXR1BVUmVuZGVyQnVuZGxlKiBidW5k
bGVzKQogewogICAgIFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPGNvbnN0IFdlYkdQVTo6
UmVuZGVyQnVuZGxlPj4gYnVuZGxlc1RvRm9yd2FyZDsKICAgICBmb3IgKHVpbnQzMl90IGkgPSAw
OyBpIDwgYnVuZGxlc0NvdW50OyArK2kpCi0gICAgICAgIGJ1bmRsZXNUb0ZvcndhcmQuYXBwZW5k
KGJ1bmRsZXNbaV0tPnJlbmRlckJ1bmRsZSk7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXItPnJlbmRl
clBhc3NFbmNvZGVyLT5leGVjdXRlQnVuZGxlcyhXVEZNb3ZlKGJ1bmRsZXNUb0ZvcndhcmQpKTsK
KyAgICAgICAgYnVuZGxlc1RvRm9yd2FyZC5hcHBlbmQoV2ViR1BVOjpmcm9tQVBJKGJ1bmRsZXNb
aV0pKTsKKyAgICBXZWJHUFU6OmZyb21BUEkocmVuZGVyUGFzc0VuY29kZXIpLmV4ZWN1dGVCdW5k
bGVzKFdURk1vdmUoYnVuZGxlc1RvRm9yd2FyZCkpOwogfQogCiB2b2lkIHdncHVSZW5kZXJQYXNz
RW5jb2Rlckluc2VydERlYnVnTWFya2VyKFdHUFVSZW5kZXJQYXNzRW5jb2RlciByZW5kZXJQYXNz
RW5jb2RlciwgY29uc3QgY2hhciogbWFya2VyTGFiZWwpCiB7Ci0gICAgcmVuZGVyUGFzc0VuY29k
ZXItPnJlbmRlclBhc3NFbmNvZGVyLT5pbnNlcnREZWJ1Z01hcmtlcihtYXJrZXJMYWJlbCk7Cisg
ICAgV2ViR1BVOjpmcm9tQVBJKHJlbmRlclBhc3NFbmNvZGVyKS5pbnNlcnREZWJ1Z01hcmtlcihX
ZWJHUFU6OmZyb21BUEkobWFya2VyTGFiZWwpKTsKIH0KIAogdm9pZCB3Z3B1UmVuZGVyUGFzc0Vu
Y29kZXJQb3BEZWJ1Z0dyb3VwKFdHUFVSZW5kZXJQYXNzRW5jb2RlciByZW5kZXJQYXNzRW5jb2Rl
cikKIHsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci0+cmVuZGVyUGFzc0VuY29kZXItPnBvcERlYnVn
R3JvdXAoKTsKKyAgICBXZWJHUFU6OmZyb21BUEkocmVuZGVyUGFzc0VuY29kZXIpLnBvcERlYnVn
R3JvdXAoKTsKIH0KIAogdm9pZCB3Z3B1UmVuZGVyUGFzc0VuY29kZXJQdXNoRGVidWdHcm91cChX
R1BVUmVuZGVyUGFzc0VuY29kZXIgcmVuZGVyUGFzc0VuY29kZXIsIGNvbnN0IGNoYXIqIGdyb3Vw
TGFiZWwpCiB7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXItPnJlbmRlclBhc3NFbmNvZGVyLT5wdXNo
RGVidWdHcm91cChncm91cExhYmVsKTsKKyAgICBXZWJHUFU6OmZyb21BUEkocmVuZGVyUGFzc0Vu
Y29kZXIpLnB1c2hEZWJ1Z0dyb3VwKFdlYkdQVTo6ZnJvbUFQSShncm91cExhYmVsKSk7CiB9CiAK
IHZvaWQgd2dwdVJlbmRlclBhc3NFbmNvZGVyU2V0QmluZEdyb3VwKFdHUFVSZW5kZXJQYXNzRW5j
b2RlciByZW5kZXJQYXNzRW5jb2RlciwgdWludDMyX3QgZ3JvdXBJbmRleCwgV0dQVUJpbmRHcm91
cCBncm91cCwgdWludDMyX3QgZHluYW1pY09mZnNldENvdW50LCBjb25zdCB1aW50MzJfdCogZHlu
YW1pY09mZnNldHMpCiB7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXItPnJlbmRlclBhc3NFbmNvZGVy
LT5zZXRCaW5kR3JvdXAoZ3JvdXBJbmRleCwgZ3JvdXAtPmJpbmRHcm91cCwgZHluYW1pY09mZnNl
dENvdW50LCBkeW5hbWljT2Zmc2V0cyk7CisgICAgV2ViR1BVOjpmcm9tQVBJKHJlbmRlclBhc3NF
bmNvZGVyKS5zZXRCaW5kR3JvdXAoZ3JvdXBJbmRleCwgV2ViR1BVOjpmcm9tQVBJKGdyb3VwKSwg
ZHluYW1pY09mZnNldENvdW50LCBkeW5hbWljT2Zmc2V0cyk7CiB9CiAKIHZvaWQgd2dwdVJlbmRl
clBhc3NFbmNvZGVyU2V0QmxlbmRDb25zdGFudChXR1BVUmVuZGVyUGFzc0VuY29kZXIgcmVuZGVy
UGFzc0VuY29kZXIsIGNvbnN0IFdHUFVDb2xvciogY29sb3IpCiB7Ci0gICAgcmVuZGVyUGFzc0Vu
Y29kZXItPnJlbmRlclBhc3NFbmNvZGVyLT5zZXRCbGVuZENvbnN0YW50KCpjb2xvcik7CisgICAg
V2ViR1BVOjpmcm9tQVBJKHJlbmRlclBhc3NFbmNvZGVyKS5zZXRCbGVuZENvbnN0YW50KCpjb2xv
cik7CiB9CiAKIHZvaWQgd2dwdVJlbmRlclBhc3NFbmNvZGVyU2V0SW5kZXhCdWZmZXIoV0dQVVJl
bmRlclBhc3NFbmNvZGVyIHJlbmRlclBhc3NFbmNvZGVyLCBXR1BVQnVmZmVyIGJ1ZmZlciwgV0dQ
VUluZGV4Rm9ybWF0IGZvcm1hdCwgdWludDY0X3Qgb2Zmc2V0LCB1aW50NjRfdCBzaXplKQogewot
ICAgIHJlbmRlclBhc3NFbmNvZGVyLT5yZW5kZXJQYXNzRW5jb2Rlci0+c2V0SW5kZXhCdWZmZXIo
YnVmZmVyLT5idWZmZXIsIGZvcm1hdCwgb2Zmc2V0LCBzaXplKTsKKyAgICBXZWJHUFU6OmZyb21B
UEkocmVuZGVyUGFzc0VuY29kZXIpLnNldEluZGV4QnVmZmVyKFdlYkdQVTo6ZnJvbUFQSShidWZm
ZXIpLCBmb3JtYXQsIG9mZnNldCwgc2l6ZSk7CiB9CiAKIHZvaWQgd2dwdVJlbmRlclBhc3NFbmNv
ZGVyU2V0UGlwZWxpbmUoV0dQVVJlbmRlclBhc3NFbmNvZGVyIHJlbmRlclBhc3NFbmNvZGVyLCBX
R1BVUmVuZGVyUGlwZWxpbmUgcGlwZWxpbmUpCiB7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXItPnJl
bmRlclBhc3NFbmNvZGVyLT5zZXRQaXBlbGluZShwaXBlbGluZS0+cmVuZGVyUGlwZWxpbmUpOwor
ICAgIFdlYkdQVTo6ZnJvbUFQSShyZW5kZXJQYXNzRW5jb2Rlcikuc2V0UGlwZWxpbmUoV2ViR1BV
Ojpmcm9tQVBJKHBpcGVsaW5lKSk7CiB9CiAKIHZvaWQgd2dwdVJlbmRlclBhc3NFbmNvZGVyU2V0
U2Npc3NvclJlY3QoV0dQVVJlbmRlclBhc3NFbmNvZGVyIHJlbmRlclBhc3NFbmNvZGVyLCB1aW50
MzJfdCB4LCB1aW50MzJfdCB5LCB1aW50MzJfdCB3aWR0aCwgdWludDMyX3QgaGVpZ2h0KQogewot
ICAgIHJlbmRlclBhc3NFbmNvZGVyLT5yZW5kZXJQYXNzRW5jb2Rlci0+c2V0U2Npc3NvclJlY3Qo
eCwgeSwgd2lkdGgsIGhlaWdodCk7CisgICAgV2ViR1BVOjpmcm9tQVBJKHJlbmRlclBhc3NFbmNv
ZGVyKS5zZXRTY2lzc29yUmVjdCh4LCB5LCB3aWR0aCwgaGVpZ2h0KTsKIH0KIAogdm9pZCB3Z3B1
UmVuZGVyUGFzc0VuY29kZXJTZXRTdGVuY2lsUmVmZXJlbmNlKFdHUFVSZW5kZXJQYXNzRW5jb2Rl
ciByZW5kZXJQYXNzRW5jb2RlciwgdWludDMyX3QgcmVmZXJlbmNlKQogewotICAgIHJlbmRlclBh
c3NFbmNvZGVyLT5yZW5kZXJQYXNzRW5jb2Rlci0+c2V0U3RlbmNpbFJlZmVyZW5jZShyZWZlcmVu
Y2UpOworICAgIFdlYkdQVTo6ZnJvbUFQSShyZW5kZXJQYXNzRW5jb2Rlcikuc2V0U3RlbmNpbFJl
ZmVyZW5jZShyZWZlcmVuY2UpOwogfQogCiB2b2lkIHdncHVSZW5kZXJQYXNzRW5jb2RlclNldFZl
cnRleEJ1ZmZlcihXR1BVUmVuZGVyUGFzc0VuY29kZXIgcmVuZGVyUGFzc0VuY29kZXIsIHVpbnQz
Ml90IHNsb3QsIFdHUFVCdWZmZXIgYnVmZmVyLCB1aW50NjRfdCBvZmZzZXQsIHVpbnQ2NF90IHNp
emUpCiB7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXItPnJlbmRlclBhc3NFbmNvZGVyLT5zZXRWZXJ0
ZXhCdWZmZXIoc2xvdCwgYnVmZmVyLT5idWZmZXIsIG9mZnNldCwgc2l6ZSk7CisgICAgV2ViR1BV
Ojpmcm9tQVBJKHJlbmRlclBhc3NFbmNvZGVyKS5zZXRWZXJ0ZXhCdWZmZXIoc2xvdCwgV2ViR1BV
Ojpmcm9tQVBJKGJ1ZmZlciksIG9mZnNldCwgc2l6ZSk7CiB9CiAKIHZvaWQgd2dwdVJlbmRlclBh
c3NFbmNvZGVyU2V0Vmlld3BvcnQoV0dQVVJlbmRlclBhc3NFbmNvZGVyIHJlbmRlclBhc3NFbmNv
ZGVyLCBmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0LCBmbG9hdCBt
aW5EZXB0aCwgZmxvYXQgbWF4RGVwdGgpCiB7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXItPnJlbmRl
clBhc3NFbmNvZGVyLT5zZXRWaWV3cG9ydCh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBtaW5EZXB0aCwg
bWF4RGVwdGgpOworICAgIFdlYkdQVTo6ZnJvbUFQSShyZW5kZXJQYXNzRW5jb2Rlcikuc2V0Vmll
d3BvcnQoeCwgeSwgd2lkdGgsIGhlaWdodCwgbWluRGVwdGgsIG1heERlcHRoKTsKIH0KIAogdm9p
ZCB3Z3B1UmVuZGVyUGFzc0VuY29kZXJTZXRMYWJlbChXR1BVUmVuZGVyUGFzc0VuY29kZXIgcmVu
ZGVyUGFzc0VuY29kZXIsIGNvbnN0IGNoYXIqIGxhYmVsKQogewotICAgIHJlbmRlclBhc3NFbmNv
ZGVyLT5yZW5kZXJQYXNzRW5jb2Rlci0+c2V0TGFiZWwobGFiZWwpOworICAgIFdlYkdQVTo6ZnJv
bUFQSShyZW5kZXJQYXNzRW5jb2Rlcikuc2V0TGFiZWwoV2ViR1BVOjpmcm9tQVBJKGxhYmVsKSk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9SZW5kZXJQaXBlbGluZS5oIGIv
U291cmNlL1dlYkdQVS9XZWJHUFUvUmVuZGVyUGlwZWxpbmUuaAppbmRleCA4YzI1NmZkNmYwOTNi
NjU5MDhiYjNmNzFiNDVkMjhhYTk4NTYyY2Q0Li5iNjhlZmI4MTFlYjhkNzY5Y2VmNzU4ZDJkYzhk
Y2E0MjdjMGJhOWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9SZW5kZXJQaXBl
bGluZS5oCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1JlbmRlclBpcGVsaW5lLmgKQEAgLTQ0
LDcgKzQ0LDcgQEAgcHVibGljOgogICAgIH5SZW5kZXJQaXBlbGluZSgpOwogCiAgICAgUmVmPEJp
bmRHcm91cExheW91dD4gZ2V0QmluZEdyb3VwTGF5b3V0KHVpbnQzMl90IGdyb3VwSW5kZXgpOwot
ICAgIHZvaWQgc2V0TGFiZWwoY29uc3QgY2hhciopOworICAgIHZvaWQgc2V0TGFiZWwoU3RyaW5n
JiYpOwogCiAgICAgaWQ8TVRMUmVuZGVyUGlwZWxpbmVTdGF0ZT4gcmVuZGVyUGlwZWxpbmVTdGF0
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVyUGlwZWxpbmVTdGF0ZTsgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9SZW5kZXJQaXBlbGluZS5tbSBiL1NvdXJjZS9XZWJHUFUv
V2ViR1BVL1JlbmRlclBpcGVsaW5lLm1tCmluZGV4IDE3NDRiOGRmZmFlYmFiMzBmNjE1ZGFhYmUz
ZDcwNWJmMDI3MjE5NDEuLjdhMTY5YzcxZDc4YjBlMjlhMGM1OTYxNzc1NjU2ZDM5ZmUyOGMyMTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1JlbmRlclBpcGVsaW5lLm1tCisrKyBi
L1NvdXJjZS9XZWJHUFUvV2ViR1BVL1JlbmRlclBpcGVsaW5lLm1tCkBAIC0yNiw2ICsyNiw3IEBA
CiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIlJlbmRlclBpcGVsaW5lLmgiCiAKKyNpbXBv
cnQgIkFQSUNvbnZlcnNpb25zLmgiCiAjaW1wb3J0ICJCaW5kR3JvdXBMYXlvdXQuaCIKICNpbXBv
cnQgIkRldmljZS5oIgogCkBAIC0zNyw3ICszOCw3IEBAIFJlZlB0cjxSZW5kZXJQaXBlbGluZT4g
RGV2aWNlOjpjcmVhdGVSZW5kZXJQaXBlbGluZShjb25zdCBXR1BVUmVuZGVyUGlwZWxpbmVEZXNj
CiAgICAgcmV0dXJuIFJlbmRlclBpcGVsaW5lOjpjcmVhdGUobmlsKTsKIH0KIAotdm9pZCBEZXZp
Y2U6OmNyZWF0ZVJlbmRlclBpcGVsaW5lQXN5bmMoY29uc3QgV0dQVVJlbmRlclBpcGVsaW5lRGVz
Y3JpcHRvciYgZGVzY3JpcHRvciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXR1BVQ3JlYXRlUGlw
ZWxpbmVBc3luY1N0YXR1cywgUmVmUHRyPFJlbmRlclBpcGVsaW5lPiYmLCBjb25zdCBjaGFyKiBt
ZXNzYWdlKT4mJiBjYWxsYmFjaykKK3ZvaWQgRGV2aWNlOjpjcmVhdGVSZW5kZXJQaXBlbGluZUFz
eW5jKGNvbnN0IFdHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoV0dQVUNyZWF0ZVBpcGVsaW5lQXN5bmNTdGF0dXMsIFJlZlB0cjxS
ZW5kZXJQaXBlbGluZT4mJiwgU3RyaW5nJiYgbWVzc2FnZSk+JiYgY2FsbGJhY2spCiB7CiAgICAg
VU5VU0VEX1BBUkFNKGRlc2NyaXB0b3IpOwogICAgIFVOVVNFRF9QQVJBTShjYWxsYmFjayk7CkBA
IC01Niw3ICs1Nyw3IEBAIFJlZjxCaW5kR3JvdXBMYXlvdXQ+IFJlbmRlclBpcGVsaW5lOjpnZXRC
aW5kR3JvdXBMYXlvdXQodWludDMyX3QgZ3JvdXBJbmRleCkKICAgICByZXR1cm4gQmluZEdyb3Vw
TGF5b3V0OjpjcmVhdGUobmlsLCBuaWwsIG5pbCk7CiB9CiAKLXZvaWQgUmVuZGVyUGlwZWxpbmU6
OnNldExhYmVsKGNvbnN0IGNoYXIqKQordm9pZCBSZW5kZXJQaXBlbGluZTo6c2V0TGFiZWwoU3Ry
aW5nJiYpCiB7CiAgICAgLy8gTVRMUmVuZGVyUGlwZWxpbmVTdGF0ZSdzIGxhYmVscyBhcmUgcmVh
ZC1vbmx5LgogfQpAQCAtNzAsMTAgKzcxLDEwIEBAIHZvaWQgd2dwdVJlbmRlclBpcGVsaW5lUmVs
ZWFzZShXR1BVUmVuZGVyUGlwZWxpbmUgcmVuZGVyUGlwZWxpbmUpCiAKIFdHUFVCaW5kR3JvdXBM
YXlvdXQgd2dwdVJlbmRlclBpcGVsaW5lR2V0QmluZEdyb3VwTGF5b3V0KFdHUFVSZW5kZXJQaXBl
bGluZSByZW5kZXJQaXBlbGluZSwgdWludDMyX3QgZ3JvdXBJbmRleCkKIHsKLSAgICByZXR1cm4g
bmV3IFdHUFVCaW5kR3JvdXBMYXlvdXRJbXBsIHsgcmVuZGVyUGlwZWxpbmUtPnJlbmRlclBpcGVs
aW5lLT5nZXRCaW5kR3JvdXBMYXlvdXQoZ3JvdXBJbmRleCkgfTsKKyAgICByZXR1cm4gbmV3IFdH
UFVCaW5kR3JvdXBMYXlvdXRJbXBsIHsgV2ViR1BVOjpmcm9tQVBJKHJlbmRlclBpcGVsaW5lKS5n
ZXRCaW5kR3JvdXBMYXlvdXQoZ3JvdXBJbmRleCkgfTsKIH0KIAogdm9pZCB3Z3B1UmVuZGVyUGlw
ZWxpbmVTZXRMYWJlbChXR1BVUmVuZGVyUGlwZWxpbmUgcmVuZGVyUGlwZWxpbmUsIGNvbnN0IGNo
YXIqIGxhYmVsKQogewotICAgIHJlbmRlclBpcGVsaW5lLT5yZW5kZXJQaXBlbGluZS0+c2V0TGFi
ZWwobGFiZWwpOworICAgIFdlYkdQVTo6ZnJvbUFQSShyZW5kZXJQaXBlbGluZSkuc2V0TGFiZWwo
V2ViR1BVOjpmcm9tQVBJKGxhYmVsKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dl
YkdQVS9TYW1wbGVyLmggYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9TYW1wbGVyLmgKaW5kZXggM2Nk
NWZlZjM0OTFhNTZiODYxODMwYjljY2NjMzI4ZWEwZjA0OTY2OC4uYTI3MDRkZjRlMGM4NzM2YjEx
MTAzNTk3NDJhZmM0MzVmMjJjYTExOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUv
U2FtcGxlci5oCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1NhbXBsZXIuaApAQCAtNDEsNyAr
NDEsNyBAQCBwdWJsaWM6CiAKICAgICB+U2FtcGxlcigpOwogCi0gICAgdm9pZCBzZXRMYWJlbChj
b25zdCBjaGFyKik7CisgICAgdm9pZCBzZXRMYWJlbChTdHJpbmcmJik7CiAKICAgICBpZDxNVExT
YW1wbGVyU3RhdGU+IHNhbXBsZXJTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2FtcGxlclN0YXRl
OyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1NhbXBsZXIubW0gYi9Tb3Vy
Y2UvV2ViR1BVL1dlYkdQVS9TYW1wbGVyLm1tCmluZGV4IDBjY2U3OWNkMTk1YjRjNGQwZjBlMWM4
NGZjMmUxMWM1ZjUyNmNlY2IuLjYwMzg0OThhM2I1M2QwNDgxMTU1NDQ2OTZlZjYxODcwMzRkNzA4
NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1NhbXBsZXIubW0KKysrIGIvU291
cmNlL1dlYkdQVS9XZWJHUFUvU2FtcGxlci5tbQpAQCAtMjYsNiArMjYsNyBAQAogI2ltcG9ydCAi
Y29uZmlnLmgiCiAjaW1wb3J0ICJTYW1wbGVyLmgiCiAKKyNpbXBvcnQgIkFQSUNvbnZlcnNpb25z
LmgiCiAjaW1wb3J0ICJEZXZpY2UuaCIKIAogbmFtZXNwYWNlIFdlYkdQVSB7CkBAIC00MywxMiAr
NDQsMTIgQEAgU2FtcGxlcjo6U2FtcGxlcihpZDxNVExTYW1wbGVyU3RhdGU+IHNhbXBsZXJTdGF0
ZSkKIAogU2FtcGxlcjo6flNhbXBsZXIoKSA9IGRlZmF1bHQ7CiAKLXZvaWQgU2FtcGxlcjo6c2V0
TGFiZWwoY29uc3QgY2hhciopCit2b2lkIFNhbXBsZXI6OnNldExhYmVsKFN0cmluZyYmKQogewog
ICAgIC8vIE1UTFJlbmRlclBpcGVsaW5lU3RhdGUncyBsYWJlbHMgYXJlIHJlYWQtb25seS4KIH0K
IAotfQorfSAvLyBuYW1lc3BhY2UgV2ViR1BVCiAKIHZvaWQgd2dwdVNhbXBsZXJSZWxlYXNlKFdH
UFVTYW1wbGVyIHNhbXBsZXIpCiB7CkBAIC01Nyw1ICs1OCw1IEBAIHZvaWQgd2dwdVNhbXBsZXJS
ZWxlYXNlKFdHUFVTYW1wbGVyIHNhbXBsZXIpCiAKIHZvaWQgd2dwdVNhbXBsZXJTZXRMYWJlbChX
R1BVU2FtcGxlciBzYW1wbGVyLCBjb25zdCBjaGFyKiBsYWJlbCkKIHsKLSAgICBzYW1wbGVyLT5z
YW1wbGVyLT5zZXRMYWJlbChsYWJlbCk7CisgICAgV2ViR1BVOjpmcm9tQVBJKHNhbXBsZXIpLnNl
dExhYmVsKFdlYkdQVTo6ZnJvbUFQSShsYWJlbCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkdQVS9XZWJHUFUvU2hhZGVyTW9kdWxlLmggYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9TaGFkZXJN
b2R1bGUuaAppbmRleCA5M2RjNjkwN2UyZjA2ZTVlZWJhNjJhOWI2MWRkNzU5Y2YwMzMyMjhkLi4y
ZjE5N2Y0ZjA4OTUwZTAyYzZjY2UxOGUyZWFjMjg0NTc0YjlmNDk1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViR1BVL1dlYkdQVS9TaGFkZXJNb2R1bGUuaAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQ
VS9TaGFkZXJNb2R1bGUuaApAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAgICAgflNoYWRlck1v
ZHVsZSgpOwogCiAgICAgdm9pZCBnZXRDb21waWxhdGlvbkluZm8oQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChXR1BVQ29tcGlsYXRpb25JbmZvUmVxdWVzdFN0YXR1cywgY29uc3QgV0dQVUNvbXBpbGF0
aW9uSW5mbyYpPiYmIGNhbGxiYWNrKTsKLSAgICB2b2lkIHNldExhYmVsKGNvbnN0IGNoYXIqKTsK
KyAgICB2b2lkIHNldExhYmVsKFN0cmluZyYmKTsKIAogICAgIHN0YXRpYyBXR1NMOjpQaXBlbGlu
ZUxheW91dCBjb252ZXJ0UGlwZWxpbmVMYXlvdXQoY29uc3QgUGlwZWxpbmVMYXlvdXQmKTsKICAg
ICBzdGF0aWMgaWQ8TVRMTGlicmFyeT4gY3JlYXRlTGlicmFyeShpZDxNVExEZXZpY2U+LCBjb25z
dCBTdHJpbmcmIG1zbCwgTlNTdHJpbmcgKmxhYmVsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJH
UFUvV2ViR1BVL1NoYWRlck1vZHVsZS5tbSBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1NoYWRlck1v
ZHVsZS5tbQppbmRleCA0MWFiYTg4MDgzZmRlNTE2YjlkMTcyMzQyNmY1MDdiNjQ4NGU0YjZmLi45
ZmU5Y2VmY2Y0ODc2OTI5NDc5NmI4ZGJlNjRmMDM0NTNhMmQ2MmEwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViR1BVL1dlYkdQVS9TaGFkZXJNb2R1bGUubW0KKysrIGIvU291cmNlL1dlYkdQVS9XZWJH
UFUvU2hhZGVyTW9kdWxlLm1tCkBAIC0yNiw2ICsyNiw3IEBACiAjaW1wb3J0ICJjb25maWcuaCIK
ICNpbXBvcnQgIlNoYWRlck1vZHVsZS5oIgogCisjaW1wb3J0ICJBUElDb252ZXJzaW9ucy5oIgog
I2ltcG9ydCAiRGV2aWNlLmgiCiAjaW1wb3J0ICJQaXBlbGluZUxheW91dC5oIgogCkBAIC0yMDUs
MTAgKzIwNiwxMCBAQCB2b2lkIFNoYWRlck1vZHVsZTo6Z2V0Q29tcGlsYXRpb25JbmZvKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoV0dQVUNvbXBpbGF0aW9uSW5mbwogICAgIH0pOwogfQogCi12b2lk
IFNoYWRlck1vZHVsZTo6c2V0TGFiZWwoY29uc3QgY2hhciogbGFiZWwpCit2b2lkIFNoYWRlck1v
ZHVsZTo6c2V0TGFiZWwoU3RyaW5nJiYgbGFiZWwpCiB7CiAgICAgaWYgKG1fbGlicmFyeSkKLSAg
ICAgICAgbV9saWJyYXJ5LmxhYmVsID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDU3RyaW5nOmxhYmVs
IGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXTsKKyAgICAgICAgbV9saWJyYXJ5LmxhYmVs
ID0gc3RhdGljX2Nhc3Q8TlNTdHJpbmcgKj4obGFiZWwpOwogfQogCiBXR1NMOjpQaXBlbGluZUxh
eW91dCBTaGFkZXJNb2R1bGU6OmNvbnZlcnRQaXBlbGluZUxheW91dChjb25zdCBQaXBlbGluZUxh
eW91dCYgcGlwZWxpbmVMYXlvdXQpCkBAIC0yNTIsMTkgKzI1MywxOSBAQCB2b2lkIHdncHVTaGFk
ZXJNb2R1bGVSZWxlYXNlKFdHUFVTaGFkZXJNb2R1bGUgc2hhZGVyTW9kdWxlKQogCiB2b2lkIHdn
cHVTaGFkZXJNb2R1bGVHZXRDb21waWxhdGlvbkluZm8oV0dQVVNoYWRlck1vZHVsZSBzaGFkZXJN
b2R1bGUsIFdHUFVDb21waWxhdGlvbkluZm9DYWxsYmFjayBjYWxsYmFjaywgdm9pZCAqIHVzZXJk
YXRhKQogewotICAgIHNoYWRlck1vZHVsZS0+c2hhZGVyTW9kdWxlLT5nZXRDb21waWxhdGlvbklu
Zm8oW2NhbGxiYWNrLCB1c2VyZGF0YV0gKFdHUFVDb21waWxhdGlvbkluZm9SZXF1ZXN0U3RhdHVz
IHN0YXR1cywgY29uc3QgV0dQVUNvbXBpbGF0aW9uSW5mbyYgY29tcGlsYXRpb25JbmZvKSB7Cisg
ICAgV2ViR1BVOjpmcm9tQVBJKHNoYWRlck1vZHVsZSkuZ2V0Q29tcGlsYXRpb25JbmZvKFtjYWxs
YmFjaywgdXNlcmRhdGFdIChXR1BVQ29tcGlsYXRpb25JbmZvUmVxdWVzdFN0YXR1cyBzdGF0dXMs
IGNvbnN0IFdHUFVDb21waWxhdGlvbkluZm8mIGNvbXBpbGF0aW9uSW5mbykgewogICAgICAgICBj
YWxsYmFjayhzdGF0dXMsICZjb21waWxhdGlvbkluZm8sIHVzZXJkYXRhKTsKICAgICB9KTsKIH0K
IAogdm9pZCB3Z3B1U2hhZGVyTW9kdWxlR2V0Q29tcGlsYXRpb25JbmZvV2l0aEJsb2NrKFdHUFVT
aGFkZXJNb2R1bGUgc2hhZGVyTW9kdWxlLCBXR1BVQ29tcGlsYXRpb25JbmZvQmxvY2tDYWxsYmFj
ayBjYWxsYmFjaykKIHsKLSAgICBzaGFkZXJNb2R1bGUtPnNoYWRlck1vZHVsZS0+Z2V0Q29tcGls
YXRpb25JbmZvKFtjYWxsYmFja10gKFdHUFVDb21waWxhdGlvbkluZm9SZXF1ZXN0U3RhdHVzIHN0
YXR1cywgY29uc3QgV0dQVUNvbXBpbGF0aW9uSW5mbyYgY29tcGlsYXRpb25JbmZvKSB7CisgICAg
V2ViR1BVOjpmcm9tQVBJKHNoYWRlck1vZHVsZSkuZ2V0Q29tcGlsYXRpb25JbmZvKFtjYWxsYmFj
a10gKFdHUFVDb21waWxhdGlvbkluZm9SZXF1ZXN0U3RhdHVzIHN0YXR1cywgY29uc3QgV0dQVUNv
bXBpbGF0aW9uSW5mbyYgY29tcGlsYXRpb25JbmZvKSB7CiAgICAgICAgIGNhbGxiYWNrKHN0YXR1
cywgJmNvbXBpbGF0aW9uSW5mbyk7CiAgICAgfSk7CiB9CiAKIHZvaWQgd2dwdVNoYWRlck1vZHVs
ZVNldExhYmVsKFdHUFVTaGFkZXJNb2R1bGUgc2hhZGVyTW9kdWxlLCBjb25zdCBjaGFyKiBsYWJl
bCkKIHsKLSAgICBzaGFkZXJNb2R1bGUtPnNoYWRlck1vZHVsZS0+c2V0TGFiZWwobGFiZWwpOwor
ICAgIFdlYkdQVTo6ZnJvbUFQSShzaGFkZXJNb2R1bGUpLnNldExhYmVsKFdlYkdQVTo6ZnJvbUFQ
SShsYWJlbCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvU3VyZmFjZS5t
bSBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1N1cmZhY2UubW0KaW5kZXggYzEyMTRkOWY3YjE1YTM5
NDZhZWQ3Y2IyNTMxZmE2N2FlYzc4NTUwOS4uNGJhMDYzNTlkYWY0MmQ4OWFkNDE5OWEwY2QyZTc5
NzU5NmFmYjdhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUvU3VyZmFjZS5tbQor
KysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9TdXJmYWNlLm1tCkBAIC0yNiw2ICsyNiw3IEBACiAj
aW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIlN1cmZhY2UuaCIKIAorI2ltcG9ydCAiQVBJQ29u
dmVyc2lvbnMuaCIKICNpbXBvcnQgIkFkYXB0ZXIuaCIKIAogbmFtZXNwYWNlIFdlYkdQVSB7CkBA
IC00OSw1ICs1MCw1IEBAIHZvaWQgd2dwdVN1cmZhY2VSZWxlYXNlKFdHUFVTdXJmYWNlIHN1cmZh
Y2UpCiAKIFdHUFVUZXh0dXJlRm9ybWF0IHdncHVTdXJmYWNlR2V0UHJlZmVycmVkRm9ybWF0KFdH
UFVTdXJmYWNlIHN1cmZhY2UsIFdHUFVBZGFwdGVyIGFkYXB0ZXIpCiB7Ci0gICAgcmV0dXJuIHN1
cmZhY2UtPnN1cmZhY2UtPmdldFByZWZlcnJlZEZvcm1hdChhZGFwdGVyLT5hZGFwdGVyKTsKKyAg
ICByZXR1cm4gV2ViR1BVOjpmcm9tQVBJKHN1cmZhY2UpLmdldFByZWZlcnJlZEZvcm1hdChXZWJH
UFU6OmZyb21BUEkoYWRhcHRlcikpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJH
UFUvU3dhcENoYWluLm1tIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvU3dhcENoYWluLm1tCmluZGV4
IGRlYmQ3ZjVlNDBiNWQ5Zjg5OWMwZTY2YjQ0OTQyMjU4NmNmNTk5NTQuLjc0NTIxMGI5N2M0NjJl
MDZhZDhkZGNiM2QyYTQ3NGFhZWE2YWM4ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2Vi
R1BVL1N3YXBDaGFpbi5tbQorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9Td2FwQ2hhaW4ubW0K
QEAgLTI2LDYgKzI2LDcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiU3dhcENoYWlu
LmgiCiAKKyNpbXBvcnQgIkFQSUNvbnZlcnNpb25zLmgiCiAjaW1wb3J0ICJEZXZpY2UuaCIKICNp
bXBvcnQgIlRleHR1cmVWaWV3LmgiCiAKQEAgLTYwLDEwICs2MSwxMCBAQCB2b2lkIHdncHVTd2Fw
Q2hhaW5SZWxlYXNlKFdHUFVTd2FwQ2hhaW4gc3dhcENoYWluKQogCiBXR1BVVGV4dHVyZVZpZXcg
d2dwdVN3YXBDaGFpbkdldEN1cnJlbnRUZXh0dXJlVmlldyhXR1BVU3dhcENoYWluIHN3YXBDaGFp
bikKIHsKLSAgICByZXR1cm4gbmV3IFdHUFVUZXh0dXJlVmlld0ltcGwgeyBzd2FwQ2hhaW4tPnN3
YXBDaGFpbi0+Z2V0Q3VycmVudFRleHR1cmVWaWV3KCkgfTsKKyAgICByZXR1cm4gbmV3IFdHUFVU
ZXh0dXJlVmlld0ltcGwgeyBXZWJHUFU6OmZyb21BUEkoc3dhcENoYWluKS5nZXRDdXJyZW50VGV4
dHVyZVZpZXcoKSB9OwogfQogCiB2b2lkIHdncHVTd2FwQ2hhaW5QcmVzZW50KFdHUFVTd2FwQ2hh
aW4gc3dhcENoYWluKQogewotICAgIHN3YXBDaGFpbi0+c3dhcENoYWluLT5wcmVzZW50KCk7Cisg
ICAgV2ViR1BVOjpmcm9tQVBJKHN3YXBDaGFpbikucHJlc2VudCgpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkdQVS9XZWJHUFUvVGV4dHVyZS5oIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvVGV4
dHVyZS5oCmluZGV4IDhkNDNlNDc5NmRlNmRiOGY1ZWJkNDA5NDk4ZmUxMzIwMDhiOGM4MzcuLmVk
MzM5Y2YxY2Q0ZTZiNjU3MWEyMTIwMTVkYzBjYjUxMzk3NGUzMmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJHUFUvV2ViR1BVL1RleHR1cmUuaAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9UZXh0
dXJlLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogCiAgICAgUmVmUHRyPFRleHR1cmVWaWV3
PiBjcmVhdGVWaWV3KGNvbnN0IFdHUFVUZXh0dXJlVmlld0Rlc2NyaXB0b3ImKTsKICAgICB2b2lk
IGRlc3Ryb3koKTsKLSAgICB2b2lkIHNldExhYmVsKGNvbnN0IGNoYXIqKTsKKyAgICB2b2lkIHNl
dExhYmVsKFN0cmluZyYmKTsKIAogICAgIGlkPE1UTFRleHR1cmU+IHRleHR1cmUoKSBjb25zdCB7
IHJldHVybiBtX3RleHR1cmU7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUv
VGV4dHVyZS5tbSBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1RleHR1cmUubW0KaW5kZXggMjc4M2I3
YmM3ZWU5ZTVmOWY0YWViYjJhMDg4OTdiNjU5Y2YxZmMyOS4uMTgyNGNkYmJhZTgzMDAwOTNmMTJj
NjBiNzFhOWYwYWI1YjU3M2Y5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUvVGV4
dHVyZS5tbQorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9UZXh0dXJlLm1tCkBAIC0yNiw2ICsy
Niw3IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIlRleHR1cmUuaCIKIAorI2ltcG9y
dCAiQVBJQ29udmVyc2lvbnMuaCIKICNpbXBvcnQgIkRldmljZS5oIgogI2ltcG9ydCAiVGV4dHVy
ZVZpZXcuaCIKIApAQCAtNTQsOSArNTUsOSBAQCB2b2lkIFRleHR1cmU6OmRlc3Ryb3koKQogewog
fQogCi12b2lkIFRleHR1cmU6OnNldExhYmVsKGNvbnN0IGNoYXIqIGxhYmVsKQordm9pZCBUZXh0
dXJlOjpzZXRMYWJlbChTdHJpbmcmJiBsYWJlbCkKIHsKLSAgICBtX3RleHR1cmUubGFiZWwgPSBb
TlNTdHJpbmcgc3RyaW5nV2l0aENTdHJpbmc6bGFiZWwgZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5j
b2RpbmddOworICAgIG1fdGV4dHVyZS5sYWJlbCA9IHN0YXRpY19jYXN0PE5TU3RyaW5nICo+KGxh
YmVsKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViR1BVCkBAIC02OCwxNiArNjksMTYgQEAgdm9p
ZCB3Z3B1VGV4dHVyZVJlbGVhc2UoV0dQVVRleHR1cmUgdGV4dHVyZSkKIAogV0dQVVRleHR1cmVW
aWV3IHdncHVUZXh0dXJlQ3JlYXRlVmlldyhXR1BVVGV4dHVyZSB0ZXh0dXJlLCBjb25zdCBXR1BV
VGV4dHVyZVZpZXdEZXNjcmlwdG9yKiBkZXNjcmlwdG9yKQogewotICAgIGF1dG8gcmVzdWx0ID0g
dGV4dHVyZS0+dGV4dHVyZS0+Y3JlYXRlVmlldygqZGVzY3JpcHRvcik7CisgICAgYXV0byByZXN1
bHQgPSBXZWJHUFU6OmZyb21BUEkodGV4dHVyZSkuY3JlYXRlVmlldygqZGVzY3JpcHRvcik7CiAg
ICAgcmV0dXJuIHJlc3VsdCA/IG5ldyBXR1BVVGV4dHVyZVZpZXdJbXBsIHsgcmVzdWx0LnJlbGVh
c2VOb25OdWxsKCkgfSA6IG51bGxwdHI7CiB9CiAKIHZvaWQgd2dwdVRleHR1cmVEZXN0cm95KFdH
UFVUZXh0dXJlIHRleHR1cmUpCiB7Ci0gICAgdGV4dHVyZS0+dGV4dHVyZS0+ZGVzdHJveSgpOwor
ICAgIFdlYkdQVTo6ZnJvbUFQSSh0ZXh0dXJlKS5kZXN0cm95KCk7CiB9CiAKIHZvaWQgd2dwdVRl
eHR1cmVTZXRMYWJlbChXR1BVVGV4dHVyZSB0ZXh0dXJlLCBjb25zdCBjaGFyKiBsYWJlbCkKIHsK
LSAgICB0ZXh0dXJlLT50ZXh0dXJlLT5zZXRMYWJlbChsYWJlbCk7CisgICAgV2ViR1BVOjpmcm9t
QVBJKHRleHR1cmUpLnNldExhYmVsKFdlYkdQVTo6ZnJvbUFQSShsYWJlbCkpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvVGV4dHVyZVZpZXcuaCBiL1NvdXJjZS9XZWJHUFUv
V2ViR1BVL1RleHR1cmVWaWV3LmgKaW5kZXggY2U5YTQ1MTBiZTg5YjA1ZmNkYzNlZDFiOWQ5MDRl
NjE2MTkzNDU2ZC4uMTkwYjc2N2Y1YWI3ZGRiNWU0NzYxMmJjNDEzNmM4NjE5ZTI2ZTMwOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUvVGV4dHVyZVZpZXcuaAorKysgYi9Tb3VyY2Uv
V2ViR1BVL1dlYkdQVS9UZXh0dXJlVmlldy5oCkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKIAog
ICAgIH5UZXh0dXJlVmlldygpOwogCi0gICAgdm9pZCBzZXRMYWJlbChjb25zdCBjaGFyKik7Cisg
ICAgdm9pZCBzZXRMYWJlbChTdHJpbmcmJik7CiAKICAgICBpZDxNVExUZXh0dXJlPiB0ZXh0dXJl
KCkgY29uc3QgeyByZXR1cm4gbV90ZXh0dXJlOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJH
UFUvV2ViR1BVL1RleHR1cmVWaWV3Lm1tIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvVGV4dHVyZVZp
ZXcubW0KaW5kZXggNTgzYTQwNjhjZTQwNjBkYTgwNDAyY2U1OGIwY2NmMjUyNjdjZDRkZC4uZGFl
ZGJmZWNhODkzMTg5N2E5ZDNkNTdlZTI5YWVkYzk4N2JmMGU5ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkdQVS9XZWJHUFUvVGV4dHVyZVZpZXcubW0KKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUv
VGV4dHVyZVZpZXcubW0KQEAgLTI2LDYgKzI2LDggQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2lt
cG9ydCAiVGV4dHVyZVZpZXcuaCIKIAorI2ltcG9ydCAiQVBJQ29udmVyc2lvbnMuaCIKKwogbmFt
ZXNwYWNlIFdlYkdQVSB7CiAKIFRleHR1cmVWaWV3OjpUZXh0dXJlVmlldyhpZDxNVExUZXh0dXJl
PiB0ZXh0dXJlKQpAQCAtMzUsMTIgKzM3LDEyIEBAIFRleHR1cmVWaWV3OjpUZXh0dXJlVmlldyhp
ZDxNVExUZXh0dXJlPiB0ZXh0dXJlKQogCiBUZXh0dXJlVmlldzo6flRleHR1cmVWaWV3KCkgPSBk
ZWZhdWx0OwogCi12b2lkIFRleHR1cmVWaWV3OjpzZXRMYWJlbChjb25zdCBjaGFyKiBsYWJlbCkK
K3ZvaWQgVGV4dHVyZVZpZXc6OnNldExhYmVsKFN0cmluZyYmIGxhYmVsKQogewotICAgIG1fdGV4
dHVyZS5sYWJlbCA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ1N0cmluZzpsYWJlbCBlbmNvZGluZzpO
U1VURjhTdHJpbmdFbmNvZGluZ107CisgICAgbV90ZXh0dXJlLmxhYmVsID0gc3RhdGljX2Nhc3Q8
TlNTdHJpbmcgKj4obGFiZWwpOwogfQogCi19Cit9IC8vIG5hbWVzcGFjZSBXZWJHUFUKIAogdm9p
ZCB3Z3B1VGV4dHVyZVZpZXdSZWxlYXNlKFdHUFVUZXh0dXJlVmlldyB0ZXh0dXJlVmlldykKIHsK
QEAgLTQ5LDUgKzUxLDUgQEAgdm9pZCB3Z3B1VGV4dHVyZVZpZXdSZWxlYXNlKFdHUFVUZXh0dXJl
VmlldyB0ZXh0dXJlVmlldykKIAogdm9pZCB3Z3B1VGV4dHVyZVZpZXdTZXRMYWJlbChXR1BVVGV4
dHVyZVZpZXcgdGV4dHVyZVZpZXcsIGNvbnN0IGNoYXIqIGxhYmVsKQogewotICAgIHRleHR1cmVW
aWV3LT50ZXh0dXJlVmlldy0+c2V0TGFiZWwobGFiZWwpOworICAgIFdlYkdQVTo6ZnJvbUFQSSh0
ZXh0dXJlVmlldykuc2V0TGFiZWwoV2ViR1BVOjpmcm9tQVBJKGxhYmVsKSk7CiB9Cg==
</data>
<flag name="review"
          id="482566"
          type_id="1"
          status="+"
          setter="kkinnunen"
    />
    <flag name="commit-queue"
          id="482603"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>