<?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>238724</bug_id>
          
          <creation_ts>2022-04-04 00:36:53 -0700</creation_ts>
          <short_desc>[WebGPU] Represent failure by invalidity rather than nullptr</short_desc>
          <delta_ts>2022-04-08 18:46:16 -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>WebGPU</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>
          <dependson>238723</dependson>
          <blocked>238725</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Myles C. Maxfield">mmaxfield</reporter>
          <assigned_to name="Myles C. Maxfield">mmaxfield</assigned_to>
          <cc>dino</cc>
    
    <cc>djg</cc>
    
    <cc>kkinnunen</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1857753</commentid>
    <comment_count>0</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2022-04-04 00:36:53 -0700</bug_when>
    <thetext>.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857756</commentid>
    <comment_count>1</comment_count>
      <attachid>456540</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2022-04-04 00:40:31 -0700</bug_when>
    <thetext>Created attachment 456540
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1859519</commentid>
    <comment_count>2</comment_count>
      <attachid>456991</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2022-04-07 16:59:49 -0700</bug_when>
    <thetext>Created attachment 456991
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1859919</commentid>
    <comment_count>3</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-04-08 15:49:01 -0700</bug_when>
    <thetext>Tools/Scripts/svn-apply failed to apply attachment 456991 to trunk.
Please resolve the conflicts and upload a new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1859957</commentid>
    <comment_count>4</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2022-04-08 18:45:18 -0700</bug_when>
    <thetext>Committed r292670 (?): &lt;https://commits.webkit.org/r292670&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1859958</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-04-08 18:46:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/91512269&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456540</attachid>
            <date>2022-04-04 00:40:31 -0700</date>
            <delta_ts>2022-04-07 16:59:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>49714</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">Y29tbWl0IDEwZTgzNjcyODAwZDkyY2ZjYmE2ODlkZWM4M2ZiN2Q1ZjEwMWQ4NGUKQXV0aG9yOiBN
eWxlcyBDLiBNYXhmaWVsZCA8bW1heGZpZWxkQGFwcGxlLmNvbT4KRGF0ZTogICBNb24gQXByIDQg
MDA6Mzg6NTggMjAyMiAtMDcwMAoKICAgIEludmFsaWQgY3JlYXRpb24KCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViR1BVL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJHUFUvQ2hhbmdlTG9nCmluZGV4IDA0
MDkxZWJjOWY2My4uM2Y2OTE5MTkxNTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViR1BVL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc0IEBACisyMDIy
LTA0LTA0ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAg
ICAgW1dlYkdQVV0gUmVwcmVzZW50IGZhaWx1cmUgYnkgaW52YWxpZGl0eSByYXRoZXIgdGhhbiBu
dWxscHRyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
Mzg3MjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBU
aGlzIGlzIHRoZSBiaWdnZXN0IGJsb2NrZXIgZm9yIHJ1bm5pbmcgdGhlIFdlYkdQVSBjb25mb3Jt
YW5jZSB0ZXN0IHN1aXRlLiBXZWJHUFUgaXMgZGVzaWduZWQKKyAgICAgICAgc3VjaCB0aGF0IGNy
ZWF0aW9uIHJvdXRpbmVzIGRvbid0IHJldHVybiB1bmRlZmluZWQgaWYgdGhlIG9iamVjdCBjb3Vs
ZG4ndCBiZSBjcmVhdGVkOyBpbnN0ZWFkLAorICAgICAgICBpbiAiaW52YWxpZCIgb2JqZWN0IGlz
IHJldHVybmVkLiBOb3cgdGhhdCBvYmplY3RzIGhhdmUgdGhlIG5vdGlvbiBvZiBpbnZhbGlkaXR5
LCB0aGlzIHBhdGNoCisgICAgICAgIG1pZ3JhdGVzIGZyb20gY3JlYXRpb24gZnVuY3Rpb25zIHJl
dHVybmluZyBSZWZQdHIgdG8gY3JlYXRpb24gZnVuY3Rpb25zIHJldHVybmluZyBSZWYuIEFsbAor
ICAgICAgICB0aGUgcGxhY2VzIHdoZXJlIHdlIHByZXZpb3VzbHkgcmV0dXJuZWQgbnVsbHB0ciBu
b3cgcmV0dXJuIGludmFsaWQgb2JqZWN0cy4KKworICAgICAgICAqIFdlYkdQVS9BUElDb252ZXJz
aW9ucy5oOgorICAgICAgICAoV2ViR1BVOjpyZWxlYXNlVG9BUEkpOgorICAgICAgICAqIFdlYkdQ
VS9BZGFwdGVyLmg6CisgICAgICAgICogV2ViR1BVL0FkYXB0ZXIubW06CisgICAgICAgIChXZWJH
UFU6OkFkYXB0ZXI6OnJlcXVlc3REZXZpY2UpOgorICAgICAgICAod2dwdUFkYXB0ZXJSZXF1ZXN0
RGV2aWNlKToKKyAgICAgICAgKHdncHVBZGFwdGVyUmVxdWVzdERldmljZVdpdGhCbG9jayk6Cisg
ICAgICAgICogV2ViR1BVL0JpbmRHcm91cC5tbToKKyAgICAgICAgKFdlYkdQVTo6RGV2aWNlOjpj
cmVhdGVCaW5kR3JvdXApOgorICAgICAgICAqIFdlYkdQVS9CaW5kR3JvdXBMYXlvdXQubW06Cisg
ICAgICAgIChXZWJHUFU6OkRldmljZTo6Y3JlYXRlQmluZEdyb3VwTGF5b3V0KToKKyAgICAgICAg
KiBXZWJHUFUvQnVmZmVyLm1tOgorICAgICAgICAoV2ViR1BVOjpEZXZpY2U6OmNyZWF0ZUJ1ZmZl
cik6CisgICAgICAgICogV2ViR1BVL0NvbW1hbmRFbmNvZGVyLmg6CisgICAgICAgICogV2ViR1BV
L0NvbW1hbmRFbmNvZGVyLm1tOgorICAgICAgICAoV2ViR1BVOjpEZXZpY2U6OmNyZWF0ZUNvbW1h
bmRFbmNvZGVyKToKKyAgICAgICAgKFdlYkdQVTo6Q29tbWFuZEVuY29kZXI6OmJlZ2luQ29tcHV0
ZVBhc3MpOgorICAgICAgICAoV2ViR1BVOjpDb21tYW5kRW5jb2Rlcjo6YmVnaW5SZW5kZXJQYXNz
KToKKyAgICAgICAgKFdlYkdQVTo6Q29tbWFuZEVuY29kZXI6OmZpbmlzaCk6CisgICAgICAgICog
V2ViR1BVL0NvbXB1dGVQaXBlbGluZS5tbToKKyAgICAgICAgKFdlYkdQVTo6RGV2aWNlOjpjcmVh
dGVDb21wdXRlUGlwZWxpbmUpOgorICAgICAgICAoV2ViR1BVOjpEZXZpY2U6OmNyZWF0ZUNvbXB1
dGVQaXBlbGluZUFzeW5jKToKKyAgICAgICAgKiBXZWJHUFUvRGV2aWNlLmg6CisgICAgICAgICog
V2ViR1BVL0RldmljZS5tbToKKyAgICAgICAgKFdlYkdQVTo6RGV2aWNlOjpjcmVhdGUpOgorICAg
ICAgICAod2dwdURldmljZUNyZWF0ZUNvbXB1dGVQaXBlbGluZUFzeW5jKToKKyAgICAgICAgKHdn
cHVEZXZpY2VDcmVhdGVDb21wdXRlUGlwZWxpbmVBc3luY1dpdGhCbG9jayk6CisgICAgICAgICh3
Z3B1RGV2aWNlQ3JlYXRlUmVuZGVyUGlwZWxpbmVBc3luYyk6CisgICAgICAgICh3Z3B1RGV2aWNl
Q3JlYXRlUmVuZGVyUGlwZWxpbmVBc3luY1dpdGhCbG9jayk6CisgICAgICAgICogV2ViR1BVL0lu
c3RhbmNlLmg6CisgICAgICAgICogV2ViR1BVL0luc3RhbmNlLm1tOgorICAgICAgICAoV2ViR1BV
OjpJbnN0YW5jZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkdQVTo6SW5zdGFuY2U6OmNyZWF0ZVN1
cmZhY2UpOgorICAgICAgICAoV2ViR1BVOjpJbnN0YW5jZTo6cmVxdWVzdEFkYXB0ZXIpOgorICAg
ICAgICAod2dwdUluc3RhbmNlUmVxdWVzdEFkYXB0ZXIpOgorICAgICAgICAod2dwdUluc3RhbmNl
UmVxdWVzdEFkYXB0ZXJXaXRoQmxvY2spOgorICAgICAgICAqIFdlYkdQVS9QaXBlbGluZUxheW91
dC5tbToKKyAgICAgICAgKFdlYkdQVTo6RGV2aWNlOjpjcmVhdGVQaXBlbGluZUxheW91dCk6Cisg
ICAgICAgICogV2ViR1BVL1F1ZXJ5U2V0Lm1tOgorICAgICAgICAoV2ViR1BVOjpEZXZpY2U6OmNy
ZWF0ZVF1ZXJ5U2V0KToKKyAgICAgICAgKiBXZWJHUFUvUmVuZGVyQnVuZGxlRW5jb2Rlci5oOgor
ICAgICAgICAqIFdlYkdQVS9SZW5kZXJCdW5kbGVFbmNvZGVyLm1tOgorICAgICAgICAoV2ViR1BV
OjpEZXZpY2U6OmNyZWF0ZVJlbmRlckJ1bmRsZUVuY29kZXIpOgorICAgICAgICAoV2ViR1BVOjpS
ZW5kZXJCdW5kbGVFbmNvZGVyOjpmaW5pc2gpOgorICAgICAgICAqIFdlYkdQVS9SZW5kZXJQaXBl
bGluZS5tbToKKyAgICAgICAgKFdlYkdQVTo6RGV2aWNlOjpjcmVhdGVSZW5kZXJQaXBlbGluZSk6
CisgICAgICAgIChXZWJHUFU6OkRldmljZTo6Y3JlYXRlUmVuZGVyUGlwZWxpbmVBc3luYyk6Cisg
ICAgICAgICogV2ViR1BVL1NhbXBsZXIubW06CisgICAgICAgIChXZWJHUFU6OkRldmljZTo6Y3Jl
YXRlU2FtcGxlcik6CisgICAgICAgICogV2ViR1BVL1NoYWRlck1vZHVsZS5tbToKKyAgICAgICAg
KFdlYkdQVTo6RGV2aWNlOjpjcmVhdGVTaGFkZXJNb2R1bGUpOgorICAgICAgICAqIFdlYkdQVS9T
d2FwQ2hhaW4ubW06CisgICAgICAgIChXZWJHUFU6OkRldmljZTo6Y3JlYXRlU3dhcENoYWluKToK
KyAgICAgICAgKiBXZWJHUFUvVGV4dHVyZS5oOgorICAgICAgICAqIFdlYkdQVS9UZXh0dXJlLm1t
OgorICAgICAgICAoV2ViR1BVOjpEZXZpY2U6OmNyZWF0ZVRleHR1cmUpOgorICAgICAgICAoV2Vi
R1BVOjpUZXh0dXJlOjpjcmVhdGVWaWV3KToKKwogMjAyMi0wNC0wNCAgTXlsZXMgQy4gTWF4Zmll
bGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWJHUFVdIEltcGxlbWVudCBk
ZXN0cm95KCkgbWV0aG9kcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvQVBJQ29u
dmVyc2lvbnMuaCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0FQSUNvbnZlcnNpb25zLmgKaW5kZXgg
MjEzZDA3MTU0MjQwLi4xYmNkODVhYjZiMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2Vi
R1BVL0FQSUNvbnZlcnNpb25zLmgKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQVBJQ29udmVy
c2lvbnMuaApAQCAtMTc1LDkgKzE3NSw5IEBAIGlubGluZSBTdHJpbmcgZnJvbUFQSShjb25zdCBj
aGFyKiBzdHJpbmcpCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotaW5saW5lIFQqIHJlbGVh
c2VUb0FQSShSZWZQdHI8VD4mJiBwb2ludGVyKQoraW5saW5lIFQqIHJlbGVhc2VUb0FQSShSZWY8
VD4mJiBwb2ludGVyKQogewotICAgIHJldHVybiBwb2ludGVyLmxlYWtSZWYoKTsKKyAgICByZXR1
cm4gJnBvaW50ZXIubGVha1JlZigpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJHUFUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0FkYXB0ZXIuaCBiL1NvdXJjZS9XZWJHUFUvV2Vi
R1BVL0FkYXB0ZXIuaAppbmRleCBkMjAzYWNkZmE2ODQuLjk4NjNlNjhlNTlhZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvQWRhcHRlci5oCisrKyBiL1NvdXJjZS9XZWJHUFUvV2Vi
R1BVL0FkYXB0ZXIuaApAQCAtMjksNyArMjksNiBAQAogI2ltcG9ydCA8d3RmL0Zhc3RNYWxsb2Mu
aD4KICNpbXBvcnQgPHd0Zi9SZWYuaD4KICNpbXBvcnQgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW1w
b3J0IDx3dGYvUmVmUHRyLmg+CiAKIHN0cnVjdCBXR1BVQWRhcHRlckltcGwgewogfTsKQEAgLTU4
LDcgKzU3LDcgQEAgcHVibGljOgogICAgIGJvb2wgZ2V0TGltaXRzKFdHUFVTdXBwb3J0ZWRMaW1p
dHMmKTsKICAgICB2b2lkIGdldFByb3BlcnRpZXMoV0dQVUFkYXB0ZXJQcm9wZXJ0aWVzJik7CiAg
ICAgYm9vbCBoYXNGZWF0dXJlKFdHUFVGZWF0dXJlTmFtZSk7Ci0gICAgdm9pZCByZXF1ZXN0RGV2
aWNlKGNvbnN0IFdHUFVEZXZpY2VEZXNjcmlwdG9yJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChX
R1BVUmVxdWVzdERldmljZVN0YXR1cywgUmVmUHRyPERldmljZT4mJiwgU3RyaW5nJiYpPiYmIGNh
bGxiYWNrKTsKKyAgICB2b2lkIHJlcXVlc3REZXZpY2UoY29uc3QgV0dQVURldmljZURlc2NyaXB0
b3ImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdHUFVSZXF1ZXN0RGV2aWNlU3RhdHVzLCBSZWY8
RGV2aWNlPiYmLCBTdHJpbmcmJik+JiYgY2FsbGJhY2spOwogCiAgICAgYm9vbCBpc1ZhbGlkKCkg
Y29uc3QgeyByZXR1cm4gbV9kZXZpY2U7IH0KICAgICB2b2lkIG1ha2VJbnZhbGlkKCkgeyBtX2Rl
dmljZSA9IG5pbDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvQWRhcHRlci5t
bSBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0FkYXB0ZXIubW0KaW5kZXggYzRkOTUwMGYyZjYwLi5i
MjRhODc0NjYyOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0FkYXB0ZXIubW0K
KysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQWRhcHRlci5tbQpAQCAtMTExLDIwICsxMTEsMjAg
QEAgc3RhdGljIGJvb2wgZGV2aWNlTWVldHNSZXF1aXJlZExpbWl0cyhpZDxNVExEZXZpY2U+LCBj
b25zdCBXR1BVUmVxdWlyZWRMaW1pdHMmIHIKICAgICAgICAgJiYgIXJlcXVpcmVkTGltaXRzLmxp
bWl0cy5tYXhDb21wdXRlV29ya2dyb3Vwc1BlckRpbWVuc2lvbjsKIH0KIAotdm9pZCBBZGFwdGVy
OjpyZXF1ZXN0RGV2aWNlKGNvbnN0IFdHUFVEZXZpY2VEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFdHUFVSZXF1ZXN0RGV2aWNlU3RhdHVzLCBSZWZQdHI8RGV2
aWNlPiYmLCBTdHJpbmcmJik+JiYgY2FsbGJhY2spCit2b2lkIEFkYXB0ZXI6OnJlcXVlc3REZXZp
Y2UoY29uc3QgV0dQVURldmljZURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoV0dQVVJlcXVlc3REZXZpY2VTdGF0dXMsIFJlZjxEZXZpY2U+JiYsIFN0cmluZyYm
KT4mJiBjYWxsYmFjaykKIHsKICAgICBpZiAoZGVzY3JpcHRvci5uZXh0SW5DaGFpbikgewotICAg
ICAgICBjYWxsYmFjayhXR1BVUmVxdWVzdERldmljZVN0YXR1c19FcnJvciwgbnVsbHB0ciwgIlVu
a25vd24gZGVzY3JpcHRvciB0eXBlIl9zKTsKKyAgICAgICAgY2FsbGJhY2soV0dQVVJlcXVlc3RE
ZXZpY2VTdGF0dXNfRXJyb3IsIERldmljZTo6Y3JlYXRlSW52YWxpZCgqdGhpcyksICJVbmtub3du
IGRlc2NyaXB0b3IgdHlwZSJfcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBpZiAo
ZGVzY3JpcHRvci5yZXF1aXJlZEZlYXR1cmVzQ291bnQpIHsKLSAgICAgICAgY2FsbGJhY2soV0dQ
VVJlcXVlc3REZXZpY2VTdGF0dXNfRXJyb3IsIG51bGxwdHIsICJEZXZpY2UgZG9lcyBub3Qgc3Vw
cG9ydCByZXF1ZXN0ZWQgZmVhdHVyZXMiX3MpOworICAgICAgICBjYWxsYmFjayhXR1BVUmVxdWVz
dERldmljZVN0YXR1c19FcnJvciwgRGV2aWNlOjpjcmVhdGVJbnZhbGlkKCp0aGlzKSwgIkRldmlj
ZSBkb2VzIG5vdCBzdXBwb3J0IHJlcXVlc3RlZCBmZWF0dXJlcyJfcyk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKICAgICBpZiAoZGVzY3JpcHRvci5yZXF1aXJlZExpbWl0cyAmJiAhZGV2aWNl
TWVldHNSZXF1aXJlZExpbWl0cyhtX2RldmljZSwgKmRlc2NyaXB0b3IucmVxdWlyZWRMaW1pdHMp
KSB7Ci0gICAgICAgIGNhbGxiYWNrKFdHUFVSZXF1ZXN0RGV2aWNlU3RhdHVzX0Vycm9yLCBudWxs
cHRyLCAiRGV2aWNlIGRvZXMgbm90IHN1cHBvcnQgcmVxdWVzdGVkIGxpbWl0cyJfcyk7CisgICAg
ICAgIGNhbGxiYWNrKFdHUFVSZXF1ZXN0RGV2aWNlU3RhdHVzX0Vycm9yLCBEZXZpY2U6OmNyZWF0
ZUludmFsaWQoKnRoaXMpLCAiRGV2aWNlIGRvZXMgbm90IHN1cHBvcnQgcmVxdWVzdGVkIGxpbWl0
cyJfcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTE2MiwxNCArMTYyLDE0IEBAIGJv
b2wgd2dwdUFkYXB0ZXJIYXNGZWF0dXJlKFdHUFVBZGFwdGVyIGFkYXB0ZXIsIFdHUFVGZWF0dXJl
TmFtZSBmZWF0dXJlKQogCiB2b2lkIHdncHVBZGFwdGVyUmVxdWVzdERldmljZShXR1BVQWRhcHRl
ciBhZGFwdGVyLCBjb25zdCBXR1BVRGV2aWNlRGVzY3JpcHRvciogZGVzY3JpcHRvciwgV0dQVVJl
cXVlc3REZXZpY2VDYWxsYmFjayBjYWxsYmFjaywgdm9pZCogdXNlcmRhdGEpCiB7Ci0gICAgV2Vi
R1BVOjpmcm9tQVBJKGFkYXB0ZXIpLnJlcXVlc3REZXZpY2UoKmRlc2NyaXB0b3IsIFtjYWxsYmFj
aywgdXNlcmRhdGFdKFdHUFVSZXF1ZXN0RGV2aWNlU3RhdHVzIHN0YXR1cywgUmVmUHRyPFdlYkdQ
VTo6RGV2aWNlPiYmIGRldmljZSwgU3RyaW5nJiYgbWVzc2FnZSkgeworICAgIFdlYkdQVTo6ZnJv
bUFQSShhZGFwdGVyKS5yZXF1ZXN0RGV2aWNlKCpkZXNjcmlwdG9yLCBbY2FsbGJhY2ssIHVzZXJk
YXRhXShXR1BVUmVxdWVzdERldmljZVN0YXR1cyBzdGF0dXMsIFJlZjxXZWJHUFU6OkRldmljZT4m
JiBkZXZpY2UsIFN0cmluZyYmIG1lc3NhZ2UpIHsKICAgICAgICAgY2FsbGJhY2soc3RhdHVzLCBX
ZWJHUFU6OnJlbGVhc2VUb0FQSShXVEZNb3ZlKGRldmljZSkpLCBtZXNzYWdlLnV0ZjgoKS5kYXRh
KCksIHVzZXJkYXRhKTsKICAgICB9KTsKIH0KIAogdm9pZCB3Z3B1QWRhcHRlclJlcXVlc3REZXZp
Y2VXaXRoQmxvY2soV0dQVUFkYXB0ZXIgYWRhcHRlciwgV0dQVURldmljZURlc2NyaXB0b3IgY29u
c3QgKiBkZXNjcmlwdG9yLCBXR1BVUmVxdWVzdERldmljZUJsb2NrQ2FsbGJhY2sgY2FsbGJhY2sp
CiB7Ci0gICAgV2ViR1BVOjpmcm9tQVBJKGFkYXB0ZXIpLnJlcXVlc3REZXZpY2UoKmRlc2NyaXB0
b3IsIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShXR1BVUmVxdWVzdERldmljZVN0YXR1
cyBzdGF0dXMsIFJlZlB0cjxXZWJHUFU6OkRldmljZT4mJiBkZXZpY2UsIFN0cmluZyYmIG1lc3Nh
Z2UpIHsKKyAgICBXZWJHUFU6OmZyb21BUEkoYWRhcHRlcikucmVxdWVzdERldmljZSgqZGVzY3Jp
cHRvciwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKFdHUFVSZXF1ZXN0RGV2aWNlU3Rh
dHVzIHN0YXR1cywgUmVmPFdlYkdQVTo6RGV2aWNlPiYmIGRldmljZSwgU3RyaW5nJiYgbWVzc2Fn
ZSkgewogICAgICAgICBjYWxsYmFjayhzdGF0dXMsIFdlYkdQVTo6cmVsZWFzZVRvQVBJKFdURk1v
dmUoZGV2aWNlKSksIG1lc3NhZ2UudXRmOCgpLmRhdGEoKSk7CiAgICAgfSk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9CaW5kR3JvdXAubW0gYi9Tb3VyY2UvV2ViR1BVL1dl
YkdQVS9CaW5kR3JvdXAubW0KaW5kZXggZWY0NGRjZTJjMWQ3Li43NThmMzE4MDg1ZjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0JpbmRHcm91cC5tbQorKysgYi9Tb3VyY2UvV2Vi
R1BVL1dlYkdQVS9CaW5kR3JvdXAubW0KQEAgLTUwLDEwICs1MCwxMCBAQCBzdGF0aWMgYm9vbCB0
ZXh0dXJlVmlld0lzUHJlc2VudChjb25zdCBXR1BVQmluZEdyb3VwRW50cnkmIGVudHJ5KQogICAg
IHJldHVybiBlbnRyeS50ZXh0dXJlVmlldzsKIH0KIAotUmVmUHRyPEJpbmRHcm91cD4gRGV2aWNl
OjpjcmVhdGVCaW5kR3JvdXAoY29uc3QgV0dQVUJpbmRHcm91cERlc2NyaXB0b3ImIGRlc2NyaXB0
b3IpCitSZWY8QmluZEdyb3VwPiBEZXZpY2U6OmNyZWF0ZUJpbmRHcm91cChjb25zdCBXR1BVQmlu
ZEdyb3VwRGVzY3JpcHRvciYgZGVzY3JpcHRvcikKIHsKICAgICBpZiAoZGVzY3JpcHRvci5uZXh0
SW5DaGFpbikKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBCaW5kR3Jv
dXA6OmNyZWF0ZUludmFsaWQoKnRoaXMpOwogCiAgICAgY29uc3QgQmluZEdyb3VwTGF5b3V0JiBi
aW5kR3JvdXBMYXlvdXQgPSBXZWJHUFU6OmZyb21BUEkoZGVzY3JpcHRvci5sYXlvdXQpOwogCkBA
IC02Myw3ICs2Myw3IEBAIFJlZlB0cjxCaW5kR3JvdXA+IERldmljZTo6Y3JlYXRlQmluZEdyb3Vw
KGNvbnN0IFdHUFVCaW5kR3JvdXBEZXNjcmlwdG9yJiBkZXNjcmlwCiAgICAgaWQ8TVRMQnVmZmVy
PiBmcmFnbWVudEFyZ3VtZW50QnVmZmVyID0gc2FmZUNyZWF0ZUJ1ZmZlcihiaW5kR3JvdXBMYXlv
dXQuZW5jb2RlZExlbmd0aCgpLCBNVExTdG9yYWdlTW9kZVNoYXJlZCk7CiAgICAgaWQ8TVRMQnVm
ZmVyPiBjb21wdXRlQXJndW1lbnRCdWZmZXIgPSBzYWZlQ3JlYXRlQnVmZmVyKGJpbmRHcm91cExh
eW91dC5lbmNvZGVkTGVuZ3RoKCksIE1UTFN0b3JhZ2VNb2RlU2hhcmVkKTsKICAgICBpZiAoIXZl
cnRleEFyZ3VtZW50QnVmZmVyIHx8ICFmcmFnbWVudEFyZ3VtZW50QnVmZmVyIHx8ICFjb21wdXRl
QXJndW1lbnRCdWZmZXIpCi0gICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4g
QmluZEdyb3VwOjpjcmVhdGVJbnZhbGlkKCp0aGlzKTsKIAogICAgIGF1dG8gbGFiZWwgPSBmcm9t
QVBJKGRlc2NyaXB0b3IubGFiZWwpOwogICAgIHZlcnRleEFyZ3VtZW50QnVmZmVyLmxhYmVsID0g
bGFiZWw7CkBAIC04MSwxMyArODEsMTMgQEAgUmVmUHRyPEJpbmRHcm91cD4gRGV2aWNlOjpjcmVh
dGVCaW5kR3JvdXAoY29uc3QgV0dQVUJpbmRHcm91cERlc2NyaXB0b3ImIGRlc2NyaXAKICAgICAg
ICAgY29uc3QgV0dQVUJpbmRHcm91cEVudHJ5JiBlbnRyeSA9IGRlc2NyaXB0b3IuZW50cmllc1tp
XTsKIAogICAgICAgICBpZiAoZW50cnkubmV4dEluQ2hhaW4pCi0gICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICAgICAgICAgIHJldHVybiBCaW5kR3JvdXA6OmNyZWF0ZUludmFsaWQoKnRo
aXMpOwogCiAgICAgICAgIGJvb2wgYnVmZmVySXNQcmVzZW50ID0gV2ViR1BVOjpidWZmZXJJc1By
ZXNlbnQoZW50cnkpOwogICAgICAgICBib29sIHNhbXBsZXJJc1ByZXNlbnQgPSBXZWJHUFU6OnNh
bXBsZXJJc1ByZXNlbnQoZW50cnkpOwogICAgICAgICBib29sIHRleHR1cmVWaWV3SXNQcmVzZW50
ID0gV2ViR1BVOjp0ZXh0dXJlVmlld0lzUHJlc2VudChlbnRyeSk7CiAgICAgICAgIGlmIChzdGF0
aWNfY2FzdDxpbnQ+KGJ1ZmZlcklzUHJlc2VudCkgKyBzdGF0aWNfY2FzdDxpbnQ+KHNhbXBsZXJJ
c1ByZXNlbnQpICsgc3RhdGljX2Nhc3Q8aW50Pih0ZXh0dXJlVmlld0lzUHJlc2VudCkgIT0gMSkK
LSAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICAgICAgcmV0dXJuIEJpbmRHcm91
cDo6Y3JlYXRlSW52YWxpZCgqdGhpcyk7CiAKICAgICAgICAgaWYgKGJ1ZmZlcklzUHJlc2VudCkg
ewogICAgICAgICAgICAgaWQ8TVRMQnVmZmVyPiBidWZmZXIgPSBXZWJHUFU6OmZyb21BUEkoZW50
cnkuYnVmZmVyKS5idWZmZXIoKTsKQEAgLTEwNyw3ICsxMDcsNyBAQCBSZWZQdHI8QmluZEdyb3Vw
PiBEZXZpY2U6OmNyZWF0ZUJpbmRHcm91cChjb25zdCBXR1BVQmluZEdyb3VwRGVzY3JpcHRvciYg
ZGVzY3JpcAogICAgICAgICAgICAgW2NvbXB1dGVBcmd1bWVudEVuY29kZXIgc2V0VGV4dHVyZTp0
ZXh0dXJlIGF0SW5kZXg6ZW50cnkuYmluZGluZ107CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgICAgICAgICAgcmV0dXJuIEJpbmRHcm91cDo6Y3JlYXRlSW52YWxpZCgqdGhpcyk7CiAgICAg
ICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0JpbmRHcm91
cExheW91dC5tbSBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0JpbmRHcm91cExheW91dC5tbQppbmRl
eCA2NTBmOTRjM2EyMmQuLjBjOTg1NzVmZTU4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9X
ZWJHUFUvQmluZEdyb3VwTGF5b3V0Lm1tCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0JpbmRH
cm91cExheW91dC5tbQpAQCAtMTE1LDIxICsxMTUsMjEgQEAgc3RhdGljIE1UTEFyZ3VtZW50RGVz
Y3JpcHRvciAqY3JlYXRlQXJndW1lbnREZXNjcmlwdG9yKGNvbnN0IFdHUFVTdG9yYWdlVGV4dHVy
ZUIKICAgICByZXR1cm4gZGVzY3JpcHRvcjsKIH0KIAotUmVmUHRyPEJpbmRHcm91cExheW91dD4g
RGV2aWNlOjpjcmVhdGVCaW5kR3JvdXBMYXlvdXQoY29uc3QgV0dQVUJpbmRHcm91cExheW91dERl
c2NyaXB0b3ImIGRlc2NyaXB0b3IpCitSZWY8QmluZEdyb3VwTGF5b3V0PiBEZXZpY2U6OmNyZWF0
ZUJpbmRHcm91cExheW91dChjb25zdCBXR1BVQmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvciYgZGVz
Y3JpcHRvcikKIHsKICAgICBpZiAoZGVzY3JpcHRvci5uZXh0SW5DaGFpbikKLSAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBCaW5kR3JvdXBMYXlvdXQ6OmNyZWF0ZUludmFs
aWQoKnRoaXMpOwogCiAgICAgTlNNdXRhYmxlQXJyYXk8TVRMQXJndW1lbnREZXNjcmlwdG9yICo+
ICp2ZXJ0ZXhBcmd1bWVudHMgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXlXaXRoQ2FwYWNpdHk6ZGVz
Y3JpcHRvci5lbnRyeUNvdW50XTsKICAgICBOU011dGFibGVBcnJheTxNVExBcmd1bWVudERlc2Ny
aXB0b3IgKj4gKmZyYWdtZW50QXJndW1lbnRzID0gW05TTXV0YWJsZUFycmF5IGFycmF5V2l0aENh
cGFjaXR5OmRlc2NyaXB0b3IuZW50cnlDb3VudF07CiAgICAgTlNNdXRhYmxlQXJyYXk8TVRMQXJn
dW1lbnREZXNjcmlwdG9yICo+ICpjb21wdXRlQXJndW1lbnRzID0gW05TTXV0YWJsZUFycmF5IGFy
cmF5V2l0aENhcGFjaXR5OmRlc2NyaXB0b3IuZW50cnlDb3VudF07CiAgICAgaWYgKCF2ZXJ0ZXhB
cmd1bWVudHMgfHwgIWZyYWdtZW50QXJndW1lbnRzIHx8ICFjb21wdXRlQXJndW1lbnRzKQotICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIEJpbmRHcm91cExheW91dDo6Y3Jl
YXRlSW52YWxpZCgqdGhpcyk7CiAKICAgICBmb3IgKHVpbnQzMl90IGkgPSAwOyBpIDwgZGVzY3Jp
cHRvci5lbnRyeUNvdW50OyArK2kpIHsKICAgICAgICAgY29uc3QgV0dQVUJpbmRHcm91cExheW91
dEVudHJ5JiBlbnRyeSA9IGRlc2NyaXB0b3IuZW50cmllc1tpXTsKICAgICAgICAgaWYgKGVudHJ5
Lm5leHRJbkNoYWluKQotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgICAgICBy
ZXR1cm4gQmluZEdyb3VwTGF5b3V0OjpjcmVhdGVJbnZhbGlkKCp0aGlzKTsKIAogICAgICAgICAv
LyBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViLyNkaWN0ZGVmLWdwdWJpbmRncm91cGxh
eW91dGVudHJ5CiAgICAgICAgIC8vICJPbmx5IG9uZSBbb2YgYnVmZmVyLCBzYW1wbGVyLCB0ZXh0
dXJlLCBzdG9yYWdlVGV4dHVyZSwgb3IgZXh0ZXJuYWxUZXh0dXJlXSBtYXkgYmUgZGVmaW5lZCBm
b3IgYW55IGdpdmVuIEdQVUJpbmRHcm91cExheW91dEVudHJ5LiIKQEAgLTE0NywzOCArMTQ3LDM4
IEBAIFJlZlB0cjxCaW5kR3JvdXBMYXlvdXQ+IERldmljZTo6Y3JlYXRlQmluZEdyb3VwTGF5b3V0
KGNvbnN0IFdHUFVCaW5kR3JvdXBMYXlvdXRECiAKICAgICAgICAgaWYgKGlzUHJlc2VudChidWZm
ZXIpKSB7CiAgICAgICAgICAgICBpZiAoaSAhPSB2ZXJ0ZXhBcmd1bWVudHMuY291bnQpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgICAgICAgICAgcmV0dXJuIEJpbmRH
cm91cExheW91dDo6Y3JlYXRlSW52YWxpZCgqdGhpcyk7CiAKICAgICAgICAgICAgIGRlc2NyaXB0
b3IgPSBjcmVhdGVBcmd1bWVudERlc2NyaXB0b3IoYnVmZmVyKTsKICAgICAgICAgICAgIGlmICgh
ZGVzY3JpcHRvcikKLSAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gQmluZEdyb3VwTGF5b3V0OjpjcmVhdGVJbnZhbGlkKCp0aGlzKTsKICAgICAg
ICAgfQogCiAgICAgICAgIGlmIChpc1ByZXNlbnQoc2FtcGxlcikpIHsKICAgICAgICAgICAgIGlm
IChpICE9IHZlcnRleEFyZ3VtZW50cy5jb3VudCkKLSAgICAgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKyAgICAgICAgICAgICAgICByZXR1cm4gQmluZEdyb3VwTGF5b3V0OjpjcmVhdGVJbnZh
bGlkKCp0aGlzKTsKIAogICAgICAgICAgICAgZGVzY3JpcHRvciA9IGNyZWF0ZUFyZ3VtZW50RGVz
Y3JpcHRvcihzYW1wbGVyKTsKICAgICAgICAgICAgIGlmICghZGVzY3JpcHRvcikKLSAgICAgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAgICAgICByZXR1cm4gQmluZEdyb3Vw
TGF5b3V0OjpjcmVhdGVJbnZhbGlkKCp0aGlzKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChp
c1ByZXNlbnQodGV4dHVyZSkpIHsKICAgICAgICAgICAgIGlmIChpICE9IHZlcnRleEFyZ3VtZW50
cy5jb3VudCkKLSAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gQmluZEdyb3VwTGF5b3V0OjpjcmVhdGVJbnZhbGlkKCp0aGlzKTsKIAogICAgICAg
ICAgICAgZGVzY3JpcHRvciA9IGNyZWF0ZUFyZ3VtZW50RGVzY3JpcHRvcih0ZXh0dXJlKTsKICAg
ICAgICAgICAgIGlmICghZGVzY3JpcHRvcikKLSAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICAgICAgICAgICAgICByZXR1cm4gQmluZEdyb3VwTGF5b3V0OjpjcmVhdGVJbnZhbGlk
KCp0aGlzKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChpc1ByZXNlbnQoc3RvcmFnZVRleHR1
cmUpKSB7CiAgICAgICAgICAgICBpZiAoaSAhPSB2ZXJ0ZXhBcmd1bWVudHMuY291bnQpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgICAgICAgICAgcmV0dXJuIEJpbmRH
cm91cExheW91dDo6Y3JlYXRlSW52YWxpZCgqdGhpcyk7CiAKICAgICAgICAgICAgIGRlc2NyaXB0
b3IgPSBjcmVhdGVBcmd1bWVudERlc2NyaXB0b3Ioc3RvcmFnZVRleHR1cmUpOwogICAgICAgICAg
ICAgaWYgKCFkZXNjcmlwdG9yKQotICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAg
ICAgICAgICAgICAgIHJldHVybiBCaW5kR3JvdXBMYXlvdXQ6OmNyZWF0ZUludmFsaWQoKnRoaXMp
OwogICAgICAgICB9CiAKICAgICAgICAgLy8gRklYTUU6IFRoaXMgbmVlZHMgY29vcmRpbmF0aW9u
IHdpdGggdGhlIHNoYWRlciBjb21waWxlci4KQEAgLTE4OCw3ICsxODgsNyBAQCBSZWZQdHI8Qmlu
ZEdyb3VwTGF5b3V0PiBEZXZpY2U6OmNyZWF0ZUJpbmRHcm91cExheW91dChjb25zdCBXR1BVQmlu
ZEdyb3VwTGF5b3V0RAogICAgICAgICBNVExBcmd1bWVudERlc2NyaXB0b3IgKmZyYWdtZW50RGVz
Y3JpcHRvciA9IFtkZXNjcmlwdG9yIGNvcHldOwogICAgICAgICBNVExBcmd1bWVudERlc2NyaXB0
b3IgKmNvbXB1dGVEZXNjcmlwdG9yID0gW2Rlc2NyaXB0b3IgY29weV07CiAgICAgICAgIGlmICgh
ZnJhZ21lbnREZXNjcmlwdG9yIHx8ICFjb21wdXRlRGVzY3JpcHRvcikKLSAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOworICAgICAgICAgICAgcmV0dXJuIEJpbmRHcm91cExheW91dDo6Y3JlYXRl
SW52YWxpZCgqdGhpcyk7CiAKICAgICAgICAgaWYgKCEoZW50cnkudmlzaWJpbGl0eSAmIFdHUFVT
aGFkZXJTdGFnZV9WZXJ0ZXgpKQogICAgICAgICAgICAgdmVydGV4RGVzY3JpcHRvci5hY2Nlc3Mg
PSBNVExBcmd1bWVudEFjY2Vzc1JlYWRPbmx5OwpAQCAtMjA2LDcgKzIwNiw3IEBAIFJlZlB0cjxC
aW5kR3JvdXBMYXlvdXQ+IERldmljZTo6Y3JlYXRlQmluZEdyb3VwTGF5b3V0KGNvbnN0IFdHUFVC
aW5kR3JvdXBMYXlvdXRECiAgICAgaWQ8TVRMQXJndW1lbnRFbmNvZGVyPiBmcmFnbWVudEFyZ3Vt
ZW50RW5jb2RlciA9IFttX2RldmljZSBuZXdBcmd1bWVudEVuY29kZXJXaXRoQXJndW1lbnRzOmZy
YWdtZW50QXJndW1lbnRzXTsKICAgICBpZDxNVExBcmd1bWVudEVuY29kZXI+IGNvbXB1dGVBcmd1
bWVudEVuY29kZXIgPSBbbV9kZXZpY2UgbmV3QXJndW1lbnRFbmNvZGVyV2l0aEFyZ3VtZW50czpj
b21wdXRlQXJndW1lbnRzXTsKICAgICBpZiAoIXZlcnRleEFyZ3VtZW50RW5jb2RlciB8fCAhZnJh
Z21lbnRBcmd1bWVudEVuY29kZXIgfHwgIWNvbXB1dGVBcmd1bWVudEVuY29kZXIpCi0gICAgICAg
IHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gQmluZEdyb3VwTGF5b3V0OjpjcmVhdGVJ
bnZhbGlkKCp0aGlzKTsKIAogICAgIGF1dG8gbGFiZWwgPSBmcm9tQVBJKGRlc2NyaXB0b3IubGFi
ZWwpOwogICAgIHZlcnRleEFyZ3VtZW50RW5jb2Rlci5sYWJlbCA9IGxhYmVsOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvQnVmZmVyLm1tIGIvU291cmNlL1dlYkdQVS9XZWJHUFUv
QnVmZmVyLm1tCmluZGV4IGFkNzE0Y2NhM2EyYS4uNjI1MDkyYmQ4NDlkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViR1BVL1dlYkdQVS9CdWZmZXIubW0KKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUv
QnVmZmVyLm1tCkBAIC0xMDAsMjIgKzEwMCwyMiBAQCBpZDxNVExCdWZmZXI+IERldmljZTo6c2Fm
ZUNyZWF0ZUJ1ZmZlcihOU1VJbnRlZ2VyIGxlbmd0aCwgTVRMU3RvcmFnZU1vZGUgc3RvcmFnZQog
ICAgIHJldHVybiBbbV9kZXZpY2UgbmV3QnVmZmVyV2l0aExlbmd0aDpzdGQ6Om1heChzdGF0aWNf
Y2FzdDxOU1VJbnRlZ2VyPigxKSwgbGVuZ3RoKSBvcHRpb25zOnJlc291cmNlT3B0aW9uc107CiB9
CiAKLVJlZlB0cjxCdWZmZXI+IERldmljZTo6Y3JlYXRlQnVmZmVyKGNvbnN0IFdHUFVCdWZmZXJE
ZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQorUmVmPEJ1ZmZlcj4gRGV2aWNlOjpjcmVhdGVCdWZmZXIo
Y29uc3QgV0dQVUJ1ZmZlckRlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCiB7CiAgICAgaWYgKGRlc2Ny
aXB0b3IubmV4dEluQ2hhaW4pCi0gICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1
cm4gQnVmZmVyOjpjcmVhdGVJbnZhbGlkKCp0aGlzKTsKIAogICAgIC8vIGh0dHBzOi8vZ3B1d2Vi
LmdpdGh1Yi5pby9ncHV3ZWIvI2RvbS1ncHVkZXZpY2UtY3JlYXRlYnVmZmVyCiAKICAgICBpZiAo
IXZhbGlkYXRlQ3JlYXRlQnVmZmVyKCp0aGlzLCBkZXNjcmlwdG9yKSkKLSAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgICAgIHJldHVybiBCdWZmZXI6OmNyZWF0ZUludmFsaWQoKnRoaXMpOwog
CiAgICAgLy8gRklYTUUoUEVSRk9STUFOQ0UpOiBDb25zaWRlciB3cml0ZS1jb21iaW5pbmcgQ1BV
IGNhY2hlIG1vZGUuCiAgICAgLy8gRklYTUUoUEVSRk9STUFOQ0UpOiBDb25zaWRlciBpbXBsZW1l
bnRpbmcgaGF6YXJkIHRyYWNraW5nIG91cnNlbGYuCiAgICAgTVRMU3RvcmFnZU1vZGUgc3RvcmFn
ZU1vZGUgPSBXZWJHUFU6OnN0b3JhZ2VNb2RlKGhhc1VuaWZpZWRNZW1vcnkoKSwgZGVzY3JpcHRv
ci51c2FnZSwgZGVzY3JpcHRvci5tYXBwZWRBdENyZWF0aW9uKTsKICAgICBhdXRvIGJ1ZmZlciA9
IHNhZmVDcmVhdGVCdWZmZXIoc3RhdGljX2Nhc3Q8TlNVSW50ZWdlcj4oZGVzY3JpcHRvci5zaXpl
KSwgc3RvcmFnZU1vZGUpOwogICAgIGlmICghYnVmZmVyKQotICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICAgICAgcmV0dXJuIEJ1ZmZlcjo6Y3JlYXRlSW52YWxpZCgqdGhpcyk7CiAKICAgICBi
dWZmZXIubGFiZWwgPSBmcm9tQVBJKGRlc2NyaXB0b3IubGFiZWwpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViR1BVL1dlYkdQVS9Db21tYW5kRW5jb2Rlci5oIGIvU291cmNlL1dlYkdQVS9XZWJH
UFUvQ29tbWFuZEVuY29kZXIuaAppbmRleCA0MTkyNjQxMTE4MmUuLjBiZGU5ZGM5Y2Y4NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tbWFuZEVuY29kZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViR1BVL1dlYkdQVS9Db21tYW5kRW5jb2Rlci5oCkBAIC0yOSw3ICsyOSw2IEBACiAjaW1w
b3J0ICJPYmplY3RCYXNlLmgiCiAjaW1wb3J0IDx3dGYvRmFzdE1hbGxvYy5oPgogI2ltcG9ydCA8
d3RmL1JlZi5oPgotI2ltcG9ydCA8d3RmL1JlZlB0ci5oPgogCiBzdHJ1Y3QgV0dQVUNvbW1hbmRF
bmNvZGVySW1wbCB7CiB9OwpAQCAtNTgsMTQgKzU3LDE0IEBAIHB1YmxpYzoKIAogICAgIH5Db21t
YW5kRW5jb2RlcigpOwogCi0gICAgUmVmUHRyPENvbXB1dGVQYXNzRW5jb2Rlcj4gYmVnaW5Db21w
dXRlUGFzcyhjb25zdCBXR1BVQ29tcHV0ZVBhc3NEZXNjcmlwdG9yJik7Ci0gICAgUmVmUHRyPFJl
bmRlclBhc3NFbmNvZGVyPiBiZWdpblJlbmRlclBhc3MoY29uc3QgV0dQVVJlbmRlclBhc3NEZXNj
cmlwdG9yJik7CisgICAgUmVmPENvbXB1dGVQYXNzRW5jb2Rlcj4gYmVnaW5Db21wdXRlUGFzcyhj
b25zdCBXR1BVQ29tcHV0ZVBhc3NEZXNjcmlwdG9yJik7CisgICAgUmVmPFJlbmRlclBhc3NFbmNv
ZGVyPiBiZWdpblJlbmRlclBhc3MoY29uc3QgV0dQVVJlbmRlclBhc3NEZXNjcmlwdG9yJik7CiAg
ICAgdm9pZCBjb3B5QnVmZmVyVG9CdWZmZXIoY29uc3QgQnVmZmVyJiBzb3VyY2UsIHVpbnQ2NF90
IHNvdXJjZU9mZnNldCwgY29uc3QgQnVmZmVyJiBkZXN0aW5hdGlvbiwgdWludDY0X3QgZGVzdGlu
YXRpb25PZmZzZXQsIHVpbnQ2NF90IHNpemUpOwogICAgIHZvaWQgY29weUJ1ZmZlclRvVGV4dHVy
ZShjb25zdCBXR1BVSW1hZ2VDb3B5QnVmZmVyJiBzb3VyY2UsIGNvbnN0IFdHUFVJbWFnZUNvcHlU
ZXh0dXJlJiBkZXN0aW5hdGlvbiwgY29uc3QgV0dQVUV4dGVudDNEJiBjb3B5U2l6ZSk7CiAgICAg
dm9pZCBjb3B5VGV4dHVyZVRvQnVmZmVyKGNvbnN0IFdHUFVJbWFnZUNvcHlUZXh0dXJlJiBzb3Vy
Y2UsIGNvbnN0IFdHUFVJbWFnZUNvcHlCdWZmZXImIGRlc3RpbmF0aW9uLCBjb25zdCBXR1BVRXh0
ZW50M0QmIGNvcHlTaXplKTsKICAgICB2b2lkIGNvcHlUZXh0dXJlVG9UZXh0dXJlKGNvbnN0IFdH
UFVJbWFnZUNvcHlUZXh0dXJlJiBzb3VyY2UsIGNvbnN0IFdHUFVJbWFnZUNvcHlUZXh0dXJlJiBk
ZXN0aW5hdGlvbiwgY29uc3QgV0dQVUV4dGVudDNEJiBjb3B5U2l6ZSk7CiAgICAgdm9pZCBjbGVh
ckJ1ZmZlcihjb25zdCBCdWZmZXImLCB1aW50NjRfdCBvZmZzZXQsIHVpbnQ2NF90IHNpemUpOwot
ICAgIFJlZlB0cjxDb21tYW5kQnVmZmVyPiBmaW5pc2goY29uc3QgV0dQVUNvbW1hbmRCdWZmZXJE
ZXNjcmlwdG9yJik7CisgICAgUmVmPENvbW1hbmRCdWZmZXI+IGZpbmlzaChjb25zdCBXR1BVQ29t
bWFuZEJ1ZmZlckRlc2NyaXB0b3ImKTsKICAgICB2b2lkIGluc2VydERlYnVnTWFya2VyKFN0cmlu
ZyYmIG1hcmtlckxhYmVsKTsKICAgICB2b2lkIHBvcERlYnVnR3JvdXAoKTsKICAgICB2b2lkIHB1
c2hEZWJ1Z0dyb3VwKFN0cmluZyYmIGdyb3VwTGFiZWwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkdQVS9XZWJHUFUvQ29tbWFuZEVuY29kZXIubW0gYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9Db21t
YW5kRW5jb2Rlci5tbQppbmRleCBmOGY3MDg4Yjk1ZmEuLmY1MmU1MzM4YzMyMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tbWFuZEVuY29kZXIubW0KKysrIGIvU291cmNlL1dl
YkdQVS9XZWJHUFUvQ29tbWFuZEVuY29kZXIubW0KQEAgLTM3LDEwICszNywxMCBAQAogCiBuYW1l
c3BhY2UgV2ViR1BVIHsKIAotUmVmUHRyPENvbW1hbmRFbmNvZGVyPiBEZXZpY2U6OmNyZWF0ZUNv
bW1hbmRFbmNvZGVyKGNvbnN0IFdHUFVDb21tYW5kRW5jb2RlckRlc2NyaXB0b3ImIGRlc2NyaXB0
b3IpCitSZWY8Q29tbWFuZEVuY29kZXI+IERldmljZTo6Y3JlYXRlQ29tbWFuZEVuY29kZXIoY29u
c3QgV0dQVUNvbW1hbmRFbmNvZGVyRGVzY3JpcHRvciYgZGVzY3JpcHRvcikKIHsKICAgICBpZiAo
ZGVzY3JpcHRvci5uZXh0SW5DaGFpbikKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAg
IHJldHVybiBDb21tYW5kRW5jb2Rlcjo6Y3JlYXRlSW52YWxpZCgqdGhpcyk7CiAKICAgICAvLyBo
dHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViLyNkb20tZ3B1ZGV2aWNlLWNyZWF0ZWNvbW1h
bmRlbmNvZGVyCiAKQEAgLTQ4LDcgKzQ4LDcgQEAgUmVmUHRyPENvbW1hbmRFbmNvZGVyPiBEZXZp
Y2U6OmNyZWF0ZUNvbW1hbmRFbmNvZGVyKGNvbnN0IFdHUFVDb21tYW5kRW5jb2RlckRlc2MKICAg
ICBjb21tYW5kQnVmZmVyRGVzY3JpcHRvci5lcnJvck9wdGlvbnMgPSBNVExDb21tYW5kQnVmZmVy
RXJyb3JPcHRpb25FbmNvZGVyRXhlY3V0aW9uU3RhdHVzOwogICAgIGlkPE1UTENvbW1hbmRCdWZm
ZXI+IGNvbW1hbmRCdWZmZXIgPSBbZ2V0UXVldWUoKS5jb21tYW5kUXVldWUoKSBjb21tYW5kQnVm
ZmVyV2l0aERlc2NyaXB0b3I6Y29tbWFuZEJ1ZmZlckRlc2NyaXB0b3JdOwogICAgIGlmICghY29t
bWFuZEJ1ZmZlcikKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBDb21t
YW5kRW5jb2Rlcjo6Y3JlYXRlSW52YWxpZCgqdGhpcyk7CiAKICAgICBjb21tYW5kQnVmZmVyLmxh
YmVsID0gZnJvbUFQSShkZXNjcmlwdG9yLmxhYmVsKTsKIApAQCAtODUsMTYgKzg1LDE2IEBAIHZv
aWQgQ29tbWFuZEVuY29kZXI6OmZpbmFsaXplQmxpdENvbW1hbmRFbmNvZGVyKCkKICAgICB9CiB9
CiAKLVJlZlB0cjxDb21wdXRlUGFzc0VuY29kZXI+IENvbW1hbmRFbmNvZGVyOjpiZWdpbkNvbXB1
dGVQYXNzKGNvbnN0IFdHUFVDb21wdXRlUGFzc0Rlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCitSZWY8
Q29tcHV0ZVBhc3NFbmNvZGVyPiBDb21tYW5kRW5jb2Rlcjo6YmVnaW5Db21wdXRlUGFzcyhjb25z
dCBXR1BVQ29tcHV0ZVBhc3NEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogewogICAgIFVOVVNFRF9Q
QVJBTShkZXNjcmlwdG9yKTsKLSAgICByZXR1cm4gQ29tcHV0ZVBhc3NFbmNvZGVyOjpjcmVhdGUo
bmlsLCBtX2RldmljZSk7CisgICAgcmV0dXJuIENvbXB1dGVQYXNzRW5jb2Rlcjo6Y3JlYXRlSW52
YWxpZChtX2RldmljZSk7CiB9CiAKLVJlZlB0cjxSZW5kZXJQYXNzRW5jb2Rlcj4gQ29tbWFuZEVu
Y29kZXI6OmJlZ2luUmVuZGVyUGFzcyhjb25zdCBXR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3ImIGRl
c2NyaXB0b3IpCitSZWY8UmVuZGVyUGFzc0VuY29kZXI+IENvbW1hbmRFbmNvZGVyOjpiZWdpblJl
bmRlclBhc3MoY29uc3QgV0dQVVJlbmRlclBhc3NEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogewog
ICAgIFVOVVNFRF9QQVJBTShkZXNjcmlwdG9yKTsKLSAgICByZXR1cm4gUmVuZGVyUGFzc0VuY29k
ZXI6OmNyZWF0ZShuaWwsIG1fZGV2aWNlKTsKKyAgICByZXR1cm4gUmVuZGVyUGFzc0VuY29kZXI6
OmNyZWF0ZUludmFsaWQobV9kZXZpY2UpOwogfQogCiBib29sIENvbW1hbmRFbmNvZGVyOjp2YWxp
ZGF0ZUNvcHlCdWZmZXJUb0J1ZmZlcihjb25zdCBCdWZmZXImIHNvdXJjZSwgdWludDY0X3Qgc291
cmNlT2Zmc2V0LCBjb25zdCBCdWZmZXImIGRlc3RpbmF0aW9uLCB1aW50NjRfdCBkZXN0aW5hdGlv
bk9mZnNldCwgdWludDY0X3Qgc2l6ZSkKQEAgLTczNSwxMCArNzM1LDEwIEBAIGJvb2wgQ29tbWFu
ZEVuY29kZXI6OnZhbGlkYXRlRmluaXNoKCkgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
UmVmUHRyPENvbW1hbmRCdWZmZXI+IENvbW1hbmRFbmNvZGVyOjpmaW5pc2goY29uc3QgV0dQVUNv
bW1hbmRCdWZmZXJEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQorUmVmPENvbW1hbmRCdWZmZXI+IENv
bW1hbmRFbmNvZGVyOjpmaW5pc2goY29uc3QgV0dQVUNvbW1hbmRCdWZmZXJEZXNjcmlwdG9yJiBk
ZXNjcmlwdG9yKQogewogICAgIGlmIChkZXNjcmlwdG9yLm5leHRJbkNoYWluKQotICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIENvbW1hbmRCdWZmZXI6OmNyZWF0ZUludmFs
aWQobV9kZXZpY2UpOwogCiAgICAgLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYi8j
ZG9tLWdwdWNvbW1hbmRlbmNvZGVyLWZpbmlzaAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BV
L1dlYkdQVS9Db21wdXRlUGlwZWxpbmUubW0gYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9Db21wdXRl
UGlwZWxpbmUubW0KaW5kZXggMTEyZWQyNTcwMTRiLi5mNTYzYWYwYjdmZTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbXB1dGVQaXBlbGluZS5tbQorKysgYi9Tb3VyY2UvV2Vi
R1BVL1dlYkdQVS9Db21wdXRlUGlwZWxpbmUubW0KQEAgLTE0MSwxMCArMTQxLDEwIEBAIHN0YXRp
YyBpZDxNVExDb21wdXRlUGlwZWxpbmVTdGF0ZT4gY3JlYXRlQ29tcHV0ZVBpcGVsaW5lU3RhdGUo
aWQ8TVRMRGV2aWNlPiBkZXZpCiAgICAgcmV0dXJuIGNvbXB1dGVQaXBlbGluZVN0YXRlOwogfQog
Ci1SZWZQdHI8Q29tcHV0ZVBpcGVsaW5lPiBEZXZpY2U6OmNyZWF0ZUNvbXB1dGVQaXBlbGluZShj
b25zdCBXR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciYgZGVzY3JpcHRvcikKK1JlZjxDb21w
dXRlUGlwZWxpbmU+IERldmljZTo6Y3JlYXRlQ29tcHV0ZVBpcGVsaW5lKGNvbnN0IFdHUFVDb21w
dXRlUGlwZWxpbmVEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogewogICAgIGlmIChkZXNjcmlwdG9y
Lm5leHRJbkNoYWluIHx8IGRlc2NyaXB0b3IuY29tcHV0ZS5uZXh0SW5DaGFpbikKLSAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBDb21wdXRlUGlwZWxpbmU6OmNyZWF0ZUlu
dmFsaWQoKnRoaXMpOwogCiAgICAgY29uc3QgU2hhZGVyTW9kdWxlJiBzaGFkZXJNb2R1bGUgPSBX
ZWJHUFU6OmZyb21BUEkoZGVzY3JpcHRvci5jb21wdXRlLm1vZHVsZSk7CiAgICAgY29uc3QgUGlw
ZWxpbmVMYXlvdXQmIHBpcGVsaW5lTGF5b3V0ID0gV2ViR1BVOjpmcm9tQVBJKGRlc2NyaXB0b3Iu
bGF5b3V0KTsKQEAgLTE1MiwxMyArMTUyLDEzIEBAIFJlZlB0cjxDb21wdXRlUGlwZWxpbmU+IERl
dmljZTo6Y3JlYXRlQ29tcHV0ZVBpcGVsaW5lKGNvbnN0IFdHUFVDb21wdXRlUGlwZWxpbmVECiAK
ICAgICBhdXRvIGxpYnJhcnlDcmVhdGlvblJlc3VsdCA9IGNyZWF0ZUxpYnJhcnkobV9kZXZpY2Us
IHNoYWRlck1vZHVsZSwgcGlwZWxpbmVMYXlvdXQsIFN0cmluZyB7IGRlc2NyaXB0b3IuY29tcHV0
ZS5lbnRyeVBvaW50IH0sIGxhYmVsKTsKICAgICBpZiAoIWxpYnJhcnlDcmVhdGlvblJlc3VsdCkK
LSAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBDb21wdXRlUGlwZWxpbmU6
OmNyZWF0ZUludmFsaWQoKnRoaXMpOwogCiAgICAgYXV0byBsaWJyYXJ5ID0gbGlicmFyeUNyZWF0
aW9uUmVzdWx0LT5saWJyYXJ5OwogICAgIGNvbnN0IGF1dG8mIGVudHJ5UG9pbnRJbmZvcm1hdGlv
biA9IGxpYnJhcnlDcmVhdGlvblJlc3VsdC0+ZW50cnlQb2ludEluZm9ybWF0aW9uOwogCiAgICAg
aWYgKCFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFdHU0w6OlJlZmxlY3Rpb246OkNvbXB1dGU+KGVu
dHJ5UG9pbnRJbmZvcm1hdGlvbi50eXBlZEVudHJ5UG9pbnQpKQotICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKyAgICAgICAgcmV0dXJuIENvbXB1dGVQaXBlbGluZTo6Y3JlYXRlSW52YWxpZCgqdGhp
cyk7CiAgICAgY29uc3QgYXV0byYgY29tcHV0ZUluZm9ybWF0aW9uID0gc3RkOjpnZXQ8V0dTTDo6
UmVmbGVjdGlvbjo6Q29tcHV0ZT4oZW50cnlQb2ludEluZm9ybWF0aW9uLnR5cGVkRW50cnlQb2lu
dCk7CiAKICAgICBhdXRvIGZ1bmN0aW9uID0gY3JlYXRlRnVuY3Rpb24obGlicmFyeSwgZW50cnlQ
b2ludEluZm9ybWF0aW9uLCBkZXNjcmlwdG9yLmNvbXB1dGUsIGxhYmVsKTsKQEAgLTE2OCw3ICsx
NjgsNyBAQCBSZWZQdHI8Q29tcHV0ZVBpcGVsaW5lPiBEZXZpY2U6OmNyZWF0ZUNvbXB1dGVQaXBl
bGluZShjb25zdCBXR1BVQ29tcHV0ZVBpcGVsaW5lRAogICAgIHJldHVybiBDb21wdXRlUGlwZWxp
bmU6OmNyZWF0ZShjb21wdXRlUGlwZWxpbmVTdGF0ZSwgKnRoaXMpOwogfQogCi12b2lkIERldmlj
ZTo6Y3JlYXRlQ29tcHV0ZVBpcGVsaW5lQXN5bmMoY29uc3QgV0dQVUNvbXB1dGVQaXBlbGluZURl
c2NyaXB0b3ImIGRlc2NyaXB0b3IsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV0dQVUNyZWF0ZVBp
cGVsaW5lQXN5bmNTdGF0dXMsIFJlZlB0cjxDb21wdXRlUGlwZWxpbmU+JiYsIFN0cmluZyYmIG1l
c3NhZ2UpPiYmIGNhbGxiYWNrKQordm9pZCBEZXZpY2U6OmNyZWF0ZUNvbXB1dGVQaXBlbGluZUFz
eW5jKGNvbnN0IFdHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFdHUFVDcmVhdGVQaXBlbGluZUFzeW5jU3RhdHVzLCBSZWY8Q29t
cHV0ZVBpcGVsaW5lPiYmLCBTdHJpbmcmJiBtZXNzYWdlKT4mJiBjYWxsYmFjaykKIHsKICAgICAv
LyBGSVhNRTogSW1wbGVtZW50IHRoaXMKICAgICBVTlVTRURfUEFSQU0oZGVzY3JpcHRvcik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9EZXZpY2UuaCBiL1NvdXJjZS9XZWJHUFUv
V2ViR1BVL0RldmljZS5oCmluZGV4IDE0MDhiOWM0MzYxNC4uNjg3ZjI0M2YyNDQ4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9EZXZpY2UuaAorKysgYi9Tb3VyY2UvV2ViR1BVL1dl
YkdQVS9EZXZpY2UuaApAQCAtMzIsNyArMzIsNiBAQAogI2ltcG9ydCA8d3RmL0Z1bmN0aW9uLmg+
CiAjaW1wb3J0IDx3dGYvUmVmLmg+CiAjaW1wb3J0IDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQu
aD4KLSNpbXBvcnQgPHd0Zi9SZWZQdHIuaD4KICNpbXBvcnQgPHd0Zi9WZWN0b3IuaD4KICNpbXBv
cnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC02MSw3ICs2MCw3IEBAIGNsYXNzIFRleHR1
cmU7CiBjbGFzcyBEZXZpY2UgOiBwdWJsaWMgV0dQVURldmljZUltcGwsIHB1YmxpYyBUaHJlYWRT
YWZlUmVmQ291bnRlZDxEZXZpY2U+IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPERldmljZT4gY3JlYXRlKGlkPE1UTERldmljZT4sIFN0
cmluZyYmIGRldmljZUxhYmVsLCBBZGFwdGVyJik7CisgICAgc3RhdGljIFJlZjxEZXZpY2U+IGNy
ZWF0ZShpZDxNVExEZXZpY2U+LCBTdHJpbmcmJiBkZXZpY2VMYWJlbCwgQWRhcHRlciYpOwogICAg
IHN0YXRpYyBSZWY8RGV2aWNlPiBjcmVhdGVJbnZhbGlkKEFkYXB0ZXImIGFkYXB0ZXIpCiAgICAg
ewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEZXZpY2UoYWRhcHRlcikpOwpAQCAtNjks
MjEgKzY4LDIxIEBAIHB1YmxpYzoKIAogICAgIH5EZXZpY2UoKTsKIAotICAgIFJlZlB0cjxCaW5k
R3JvdXA+IGNyZWF0ZUJpbmRHcm91cChjb25zdCBXR1BVQmluZEdyb3VwRGVzY3JpcHRvciYpOwot
ICAgIFJlZlB0cjxCaW5kR3JvdXBMYXlvdXQ+IGNyZWF0ZUJpbmRHcm91cExheW91dChjb25zdCBX
R1BVQmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvciYpOwotICAgIFJlZlB0cjxCdWZmZXI+IGNyZWF0
ZUJ1ZmZlcihjb25zdCBXR1BVQnVmZmVyRGVzY3JpcHRvciYpOwotICAgIFJlZlB0cjxDb21tYW5k
RW5jb2Rlcj4gY3JlYXRlQ29tbWFuZEVuY29kZXIoY29uc3QgV0dQVUNvbW1hbmRFbmNvZGVyRGVz
Y3JpcHRvciYpOwotICAgIFJlZlB0cjxDb21wdXRlUGlwZWxpbmU+IGNyZWF0ZUNvbXB1dGVQaXBl
bGluZShjb25zdCBXR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciYpOwotICAgIHZvaWQgY3Jl
YXRlQ29tcHV0ZVBpcGVsaW5lQXN5bmMoY29uc3QgV0dQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0
b3ImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdHUFVDcmVhdGVQaXBlbGluZUFzeW5jU3RhdHVz
LCBSZWZQdHI8Q29tcHV0ZVBpcGVsaW5lPiYmLCBTdHJpbmcmJiBtZXNzYWdlKT4mJiBjYWxsYmFj
ayk7Ci0gICAgUmVmUHRyPFBpcGVsaW5lTGF5b3V0PiBjcmVhdGVQaXBlbGluZUxheW91dChjb25z
dCBXR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yJik7Ci0gICAgUmVmUHRyPFF1ZXJ5U2V0PiBj
cmVhdGVRdWVyeVNldChjb25zdCBXR1BVUXVlcnlTZXREZXNjcmlwdG9yJik7Ci0gICAgUmVmUHRy
PFJlbmRlckJ1bmRsZUVuY29kZXI+IGNyZWF0ZVJlbmRlckJ1bmRsZUVuY29kZXIoY29uc3QgV0dQ
VVJlbmRlckJ1bmRsZUVuY29kZXJEZXNjcmlwdG9yJik7Ci0gICAgUmVmUHRyPFJlbmRlclBpcGVs
aW5lPiBjcmVhdGVSZW5kZXJQaXBlbGluZShjb25zdCBXR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlw
dG9yJik7Ci0gICAgdm9pZCBjcmVhdGVSZW5kZXJQaXBlbGluZUFzeW5jKGNvbnN0IFdHUFVSZW5k
ZXJQaXBlbGluZURlc2NyaXB0b3ImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdHUFVDcmVhdGVQ
aXBlbGluZUFzeW5jU3RhdHVzLCBSZWZQdHI8UmVuZGVyUGlwZWxpbmU+JiYsIFN0cmluZyYmIG1l
c3NhZ2UpPiYmIGNhbGxiYWNrKTsKLSAgICBSZWZQdHI8U2FtcGxlcj4gY3JlYXRlU2FtcGxlcihj
b25zdCBXR1BVU2FtcGxlckRlc2NyaXB0b3ImKTsKLSAgICBSZWZQdHI8U2hhZGVyTW9kdWxlPiBj
cmVhdGVTaGFkZXJNb2R1bGUoY29uc3QgV0dQVVNoYWRlck1vZHVsZURlc2NyaXB0b3ImKTsKLSAg
ICBSZWZQdHI8U3dhcENoYWluPiBjcmVhdGVTd2FwQ2hhaW4oY29uc3QgU3VyZmFjZSYsIGNvbnN0
IFdHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yJik7Ci0gICAgUmVmUHRyPFRleHR1cmU+IGNyZWF0ZVRl
eHR1cmUoY29uc3QgV0dQVVRleHR1cmVEZXNjcmlwdG9yJik7CisgICAgUmVmPEJpbmRHcm91cD4g
Y3JlYXRlQmluZEdyb3VwKGNvbnN0IFdHUFVCaW5kR3JvdXBEZXNjcmlwdG9yJik7CisgICAgUmVm
PEJpbmRHcm91cExheW91dD4gY3JlYXRlQmluZEdyb3VwTGF5b3V0KGNvbnN0IFdHUFVCaW5kR3Jv
dXBMYXlvdXREZXNjcmlwdG9yJik7CisgICAgUmVmPEJ1ZmZlcj4gY3JlYXRlQnVmZmVyKGNvbnN0
IFdHUFVCdWZmZXJEZXNjcmlwdG9yJik7CisgICAgUmVmPENvbW1hbmRFbmNvZGVyPiBjcmVhdGVD
b21tYW5kRW5jb2Rlcihjb25zdCBXR1BVQ29tbWFuZEVuY29kZXJEZXNjcmlwdG9yJik7CisgICAg
UmVmPENvbXB1dGVQaXBlbGluZT4gY3JlYXRlQ29tcHV0ZVBpcGVsaW5lKGNvbnN0IFdHUFVDb21w
dXRlUGlwZWxpbmVEZXNjcmlwdG9yJik7CisgICAgdm9pZCBjcmVhdGVDb21wdXRlUGlwZWxpbmVB
c3luYyhjb25zdCBXR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoV0dQVUNyZWF0ZVBpcGVsaW5lQXN5bmNTdGF0dXMsIFJlZjxDb21wdXRlUGlwZWxp
bmU+JiYsIFN0cmluZyYmIG1lc3NhZ2UpPiYmIGNhbGxiYWNrKTsKKyAgICBSZWY8UGlwZWxpbmVM
YXlvdXQ+IGNyZWF0ZVBpcGVsaW5lTGF5b3V0KGNvbnN0IFdHUFVQaXBlbGluZUxheW91dERlc2Ny
aXB0b3ImKTsKKyAgICBSZWY8UXVlcnlTZXQ+IGNyZWF0ZVF1ZXJ5U2V0KGNvbnN0IFdHUFVRdWVy
eVNldERlc2NyaXB0b3ImKTsKKyAgICBSZWY8UmVuZGVyQnVuZGxlRW5jb2Rlcj4gY3JlYXRlUmVu
ZGVyQnVuZGxlRW5jb2Rlcihjb25zdCBXR1BVUmVuZGVyQnVuZGxlRW5jb2RlckRlc2NyaXB0b3Im
KTsKKyAgICBSZWY8UmVuZGVyUGlwZWxpbmU+IGNyZWF0ZVJlbmRlclBpcGVsaW5lKGNvbnN0IFdH
UFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3ImKTsKKyAgICB2b2lkIGNyZWF0ZVJlbmRlclBpcGVs
aW5lQXN5bmMoY29uc3QgV0dQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoV0dQVUNyZWF0ZVBpcGVsaW5lQXN5bmNTdGF0dXMsIFJlZjxSZW5kZXJQaXBl
bGluZT4mJiwgU3RyaW5nJiYgbWVzc2FnZSk+JiYgY2FsbGJhY2spOworICAgIFJlZjxTYW1wbGVy
PiBjcmVhdGVTYW1wbGVyKGNvbnN0IFdHUFVTYW1wbGVyRGVzY3JpcHRvciYpOworICAgIFJlZjxT
aGFkZXJNb2R1bGU+IGNyZWF0ZVNoYWRlck1vZHVsZShjb25zdCBXR1BVU2hhZGVyTW9kdWxlRGVz
Y3JpcHRvciYpOworICAgIFJlZjxTd2FwQ2hhaW4+IGNyZWF0ZVN3YXBDaGFpbihjb25zdCBTdXJm
YWNlJiwgY29uc3QgV0dQVVN3YXBDaGFpbkRlc2NyaXB0b3ImKTsKKyAgICBSZWY8VGV4dHVyZT4g
Y3JlYXRlVGV4dHVyZShjb25zdCBXR1BVVGV4dHVyZURlc2NyaXB0b3ImKTsKICAgICB2b2lkIGRl
c3Ryb3koKTsKICAgICBzaXplX3QgZW51bWVyYXRlRmVhdHVyZXMoV0dQVUZlYXR1cmVOYW1lKiBm
ZWF0dXJlcyk7CiAgICAgYm9vbCBnZXRMaW1pdHMoV0dQVVN1cHBvcnRlZExpbWl0cyYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvRGV2aWNlLm1tIGIvU291cmNlL1dlYkdQVS9X
ZWJHUFUvRGV2aWNlLm1tCmluZGV4IDRiNGM4ZjNiN2NiNC4uZjI4NjdiMzc2NDA0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9EZXZpY2UubW0KKysrIGIvU291cmNlL1dlYkdQVS9X
ZWJHUFUvRGV2aWNlLm1tCkBAIC00NiwxMSArNDYsMTEgQEAKIAogbmFtZXNwYWNlIFdlYkdQVSB7
CiAKLVJlZlB0cjxEZXZpY2U+IERldmljZTo6Y3JlYXRlKGlkPE1UTERldmljZT4gZGV2aWNlLCBT
dHJpbmcmJiBkZXZpY2VMYWJlbCwgQWRhcHRlciYgYWRhcHRlcikKK1JlZjxEZXZpY2U+IERldmlj
ZTo6Y3JlYXRlKGlkPE1UTERldmljZT4gZGV2aWNlLCBTdHJpbmcmJiBkZXZpY2VMYWJlbCwgQWRh
cHRlciYgYWRhcHRlcikKIHsKICAgICBpZDxNVExDb21tYW5kUXVldWU+IGNvbW1hbmRRdWV1ZSA9
IFtkZXZpY2UgbmV3Q29tbWFuZFF1ZXVlXTsKICAgICBpZiAoIWNvbW1hbmRRdWV1ZSkKLSAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBEZXZpY2U6OmNyZWF0ZUludmFsaWQo
YWRhcHRlcik7CiAKICAgICAvLyBTZWUgdGhlIGNvbW1lbnQgaW4gRGV2aWNlOjpzZXRMYWJlbCgp
IGFib3V0IHdoeSB3ZSdyZSBub3Qgc2V0dGluZyB0aGUgbGFiZWwgb24gdGhlIE1UTERldmljZSBo
ZXJlLgogCkBAIC0yNDksMTQgKzI0OSwxNCBAQCBXR1BVQ29tcHV0ZVBpcGVsaW5lIHdncHVEZXZp
Y2VDcmVhdGVDb21wdXRlUGlwZWxpbmUoV0dQVURldmljZSBkZXZpY2UsIGNvbnN0IFdHUAogCiB2
b2lkIHdncHVEZXZpY2VDcmVhdGVDb21wdXRlUGlwZWxpbmVBc3luYyhXR1BVRGV2aWNlIGRldmlj
ZSwgY29uc3QgV0dQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IqIGRlc2NyaXB0b3IsIFdHUFVD
cmVhdGVDb21wdXRlUGlwZWxpbmVBc3luY0NhbGxiYWNrIGNhbGxiYWNrLCB2b2lkKiB1c2VyZGF0
YSkKIHsKLSAgICBXZWJHUFU6OmZyb21BUEkoZGV2aWNlKS5jcmVhdGVDb21wdXRlUGlwZWxpbmVB
c3luYygqZGVzY3JpcHRvciwgW2NhbGxiYWNrLCB1c2VyZGF0YV0oV0dQVUNyZWF0ZVBpcGVsaW5l
QXN5bmNTdGF0dXMgc3RhdHVzLCBSZWZQdHI8V2ViR1BVOjpDb21wdXRlUGlwZWxpbmU+JiYgcGlw
ZWxpbmUsIFN0cmluZyYmIG1lc3NhZ2UpIHsKKyAgICBXZWJHUFU6OmZyb21BUEkoZGV2aWNlKS5j
cmVhdGVDb21wdXRlUGlwZWxpbmVBc3luYygqZGVzY3JpcHRvciwgW2NhbGxiYWNrLCB1c2VyZGF0
YV0oV0dQVUNyZWF0ZVBpcGVsaW5lQXN5bmNTdGF0dXMgc3RhdHVzLCBSZWY8V2ViR1BVOjpDb21w
dXRlUGlwZWxpbmU+JiYgcGlwZWxpbmUsIFN0cmluZyYmIG1lc3NhZ2UpIHsKICAgICAgICAgY2Fs
bGJhY2soc3RhdHVzLCBXZWJHUFU6OnJlbGVhc2VUb0FQSShXVEZNb3ZlKHBpcGVsaW5lKSksIG1l
c3NhZ2UudXRmOCgpLmRhdGEoKSwgdXNlcmRhdGEpOwogICAgIH0pOwogfQogCiB2b2lkIHdncHVE
ZXZpY2VDcmVhdGVDb21wdXRlUGlwZWxpbmVBc3luY1dpdGhCbG9jayhXR1BVRGV2aWNlIGRldmlj
ZSwgV0dQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IgY29uc3QgKiBkZXNjcmlwdG9yLCBXR1BV
Q3JlYXRlQ29tcHV0ZVBpcGVsaW5lQXN5bmNCbG9ja0NhbGxiYWNrIGNhbGxiYWNrKQogewotICAg
IFdlYkdQVTo6ZnJvbUFQSShkZXZpY2UpLmNyZWF0ZUNvbXB1dGVQaXBlbGluZUFzeW5jKCpkZXNj
cmlwdG9yLCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oV0dQVUNyZWF0ZVBpcGVsaW5l
QXN5bmNTdGF0dXMgc3RhdHVzLCBSZWZQdHI8V2ViR1BVOjpDb21wdXRlUGlwZWxpbmU+JiYgcGlw
ZWxpbmUsIFN0cmluZyYmIG1lc3NhZ2UpIHsKKyAgICBXZWJHUFU6OmZyb21BUEkoZGV2aWNlKS5j
cmVhdGVDb21wdXRlUGlwZWxpbmVBc3luYygqZGVzY3JpcHRvciwgW2NhbGxiYWNrID0gV1RGTW92
ZShjYWxsYmFjayldKFdHUFVDcmVhdGVQaXBlbGluZUFzeW5jU3RhdHVzIHN0YXR1cywgUmVmPFdl
YkdQVTo6Q29tcHV0ZVBpcGVsaW5lPiYmIHBpcGVsaW5lLCBTdHJpbmcmJiBtZXNzYWdlKSB7CiAg
ICAgICAgIGNhbGxiYWNrKHN0YXR1cywgV2ViR1BVOjpyZWxlYXNlVG9BUEkoV1RGTW92ZShwaXBl
bGluZSkpLCBtZXNzYWdlLnV0ZjgoKS5kYXRhKCkpOwogICAgIH0pOwogfQpAQCAtMjgzLDE0ICsy
ODMsMTQgQEAgV0dQVVJlbmRlclBpcGVsaW5lIHdncHVEZXZpY2VDcmVhdGVSZW5kZXJQaXBlbGlu
ZShXR1BVRGV2aWNlIGRldmljZSwgY29uc3QgV0dQVVIKIAogdm9pZCB3Z3B1RGV2aWNlQ3JlYXRl
UmVuZGVyUGlwZWxpbmVBc3luYyhXR1BVRGV2aWNlIGRldmljZSwgY29uc3QgV0dQVVJlbmRlclBp
cGVsaW5lRGVzY3JpcHRvciogZGVzY3JpcHRvciwgV0dQVUNyZWF0ZVJlbmRlclBpcGVsaW5lQXN5
bmNDYWxsYmFjayBjYWxsYmFjaywgdm9pZCogdXNlcmRhdGEpCiB7Ci0gICAgV2ViR1BVOjpmcm9t
QVBJKGRldmljZSkuY3JlYXRlUmVuZGVyUGlwZWxpbmVBc3luYygqZGVzY3JpcHRvciwgW2NhbGxi
YWNrLCB1c2VyZGF0YV0oV0dQVUNyZWF0ZVBpcGVsaW5lQXN5bmNTdGF0dXMgc3RhdHVzLCBSZWZQ
dHI8V2ViR1BVOjpSZW5kZXJQaXBlbGluZT4mJiBwaXBlbGluZSwgU3RyaW5nJiYgbWVzc2FnZSkg
eworICAgIFdlYkdQVTo6ZnJvbUFQSShkZXZpY2UpLmNyZWF0ZVJlbmRlclBpcGVsaW5lQXN5bmMo
KmRlc2NyaXB0b3IsIFtjYWxsYmFjaywgdXNlcmRhdGFdKFdHUFVDcmVhdGVQaXBlbGluZUFzeW5j
U3RhdHVzIHN0YXR1cywgUmVmPFdlYkdQVTo6UmVuZGVyUGlwZWxpbmU+JiYgcGlwZWxpbmUsIFN0
cmluZyYmIG1lc3NhZ2UpIHsKICAgICAgICAgY2FsbGJhY2soc3RhdHVzLCBXZWJHUFU6OnJlbGVh
c2VUb0FQSShXVEZNb3ZlKHBpcGVsaW5lKSksIG1lc3NhZ2UudXRmOCgpLmRhdGEoKSwgdXNlcmRh
dGEpOwogICAgIH0pOwogfQogCiB2b2lkIHdncHVEZXZpY2VDcmVhdGVSZW5kZXJQaXBlbGluZUFz
eW5jV2l0aEJsb2NrKFdHUFVEZXZpY2UgZGV2aWNlLCBXR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlw
dG9yIGNvbnN0ICogZGVzY3JpcHRvciwgV0dQVUNyZWF0ZVJlbmRlclBpcGVsaW5lQXN5bmNCbG9j
a0NhbGxiYWNrIGNhbGxiYWNrKQogewotICAgIFdlYkdQVTo6ZnJvbUFQSShkZXZpY2UpLmNyZWF0
ZVJlbmRlclBpcGVsaW5lQXN5bmMoKmRlc2NyaXB0b3IsIFtjYWxsYmFjayA9IFdURk1vdmUoY2Fs
bGJhY2spXShXR1BVQ3JlYXRlUGlwZWxpbmVBc3luY1N0YXR1cyBzdGF0dXMsIFJlZlB0cjxXZWJH
UFU6OlJlbmRlclBpcGVsaW5lPiYmIHBpcGVsaW5lLCBTdHJpbmcmJiBtZXNzYWdlKSB7CisgICAg
V2ViR1BVOjpmcm9tQVBJKGRldmljZSkuY3JlYXRlUmVuZGVyUGlwZWxpbmVBc3luYygqZGVzY3Jp
cHRvciwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKFdHUFVDcmVhdGVQaXBlbGluZUFz
eW5jU3RhdHVzIHN0YXR1cywgUmVmPFdlYkdQVTo6UmVuZGVyUGlwZWxpbmU+JiYgcGlwZWxpbmUs
IFN0cmluZyYmIG1lc3NhZ2UpIHsKICAgICAgICAgY2FsbGJhY2soc3RhdHVzLCBXZWJHUFU6OnJl
bGVhc2VUb0FQSShXVEZNb3ZlKHBpcGVsaW5lKSksIG1lc3NhZ2UudXRmOCgpLmRhdGEoKSk7CiAg
ICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9JbnN0YW5jZS5oIGIv
U291cmNlL1dlYkdQVS9XZWJHUFUvSW5zdGFuY2UuaAppbmRleCBlZjI2NmNlMGQwYjUuLjRjOWM0
ZDg4OTA3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUvSW5zdGFuY2UuaAorKysg
Yi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9JbnN0YW5jZS5oCkBAIC0zMCw3ICszMCw2IEBACiAjaW1w
b3J0IDx3dGYvRmFzdE1hbGxvYy5oPgogI2ltcG9ydCA8d3RmL0xvY2suaD4KICNpbXBvcnQgPHd0
Zi9SZWYuaD4KLSNpbXBvcnQgPHd0Zi9SZWZQdHIuaD4KICNpbXBvcnQgPHd0Zi9UaHJlYWRTYWZl
UmVmQ291bnRlZC5oPgogCiBzdHJ1Y3QgV0dQVUluc3RhbmNlSW1wbCB7CkBAIC00NSw3ICs0NCw3
IEBAIGNsYXNzIFN1cmZhY2U7CiBjbGFzcyBJbnN0YW5jZSA6IHB1YmxpYyBXR1BVSW5zdGFuY2VJ
bXBsLCBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8SW5zdGFuY2U+IHsKICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPEluc3RhbmNlPiBj
cmVhdGUoY29uc3QgV0dQVUluc3RhbmNlRGVzY3JpcHRvciYpOworICAgIHN0YXRpYyBSZWY8SW5z
dGFuY2U+IGNyZWF0ZShjb25zdCBXR1BVSW5zdGFuY2VEZXNjcmlwdG9yJik7CiAgICAgc3RhdGlj
IFJlZjxJbnN0YW5jZT4gY3JlYXRlSW52YWxpZCgpCiAgICAgewogICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBJbnN0YW5jZSgpKTsKQEAgLTUzLDkgKzUyLDkgQEAgcHVibGljOgogCiAgICAg
fkluc3RhbmNlKCk7CiAKLSAgICBSZWZQdHI8U3VyZmFjZT4gY3JlYXRlU3VyZmFjZShjb25zdCBX
R1BVU3VyZmFjZURlc2NyaXB0b3ImKTsKKyAgICBSZWY8U3VyZmFjZT4gY3JlYXRlU3VyZmFjZShj
b25zdCBXR1BVU3VyZmFjZURlc2NyaXB0b3ImKTsKICAgICB2b2lkIHByb2Nlc3NFdmVudHMoKTsK
LSAgICB2b2lkIHJlcXVlc3RBZGFwdGVyKGNvbnN0IFdHUFVSZXF1ZXN0QWRhcHRlck9wdGlvbnMm
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdHUFVSZXF1ZXN0QWRhcHRlclN0YXR1cywgUmVmUHRy
PEFkYXB0ZXI+JiYsIFN0cmluZyYmKT4mJiBjYWxsYmFjayk7CisgICAgdm9pZCByZXF1ZXN0QWRh
cHRlcihjb25zdCBXR1BVUmVxdWVzdEFkYXB0ZXJPcHRpb25zJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChXR1BVUmVxdWVzdEFkYXB0ZXJTdGF0dXMsIFJlZjxBZGFwdGVyPiYmLCBTdHJpbmcmJik+
JiYgY2FsbGJhY2spOwogCiAgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gbV9pc1Zh
bGlkOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0luc3RhbmNlLm1tIGIv
U291cmNlL1dlYkdQVS9XZWJHUFUvSW5zdGFuY2UubW0KaW5kZXggZDQ2NTAzYTljMTViLi45YjI0
Nzk1OWM3ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0luc3RhbmNlLm1tCisr
KyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0luc3RhbmNlLm1tCkBAIC0zNSwxOCArMzUsMTggQEAK
IAogbmFtZXNwYWNlIFdlYkdQVSB7CiAKLVJlZlB0cjxJbnN0YW5jZT4gSW5zdGFuY2U6OmNyZWF0
ZShjb25zdCBXR1BVSW5zdGFuY2VEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQorUmVmPEluc3RhbmNl
PiBJbnN0YW5jZTo6Y3JlYXRlKGNvbnN0IFdHUFVJbnN0YW5jZURlc2NyaXB0b3ImIGRlc2NyaXB0
b3IpCiB7CiAgICAgaWYgKCFkZXNjcmlwdG9yLm5leHRJbkNoYWluKQogICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBJbnN0YW5jZShudWxscHRyKSk7CiAKICAgICBpZiAoZGVzY3JpcHRvci5u
ZXh0SW5DaGFpbi0+c1R5cGUgIT0gc3RhdGljX2Nhc3Q8V0dQVVNUeXBlPihXR1BVU1R5cGVFeHRl
bmRlZF9JbnN0YW5jZUNvY29hRGVzY3JpcHRvcikpCi0gICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgICAgICByZXR1cm4gSW5zdGFuY2U6OmNyZWF0ZUludmFsaWQoKTsKIAogICAgIGNvbnN0IFdH
UFVJbnN0YW5jZUNvY29hRGVzY3JpcHRvciYgY29jb2FEZXNjcmlwdG9yID0gcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBXR1BVSW5zdGFuY2VDb2NvYURlc2NyaXB0b3ImPigqZGVzY3JpcHRvci5uZXh0
SW5DaGFpbik7CiAKICAgICBpZiAoY29jb2FEZXNjcmlwdG9yLmNoYWluLm5leHQpCi0gICAgICAg
IHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gSW5zdGFuY2U6OmNyZWF0ZUludmFsaWQo
KTsKIAogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEluc3RhbmNlKGNvY29hRGVzY3JpcHRvci5z
Y2hlZHVsZVdvcmtCbG9jaykpOwogfQpAQCAtNjQsNyArNjQsNyBAQCBJbnN0YW5jZTo6SW5zdGFu
Y2UoKQogCiBJbnN0YW5jZTo6fkluc3RhbmNlKCkgPSBkZWZhdWx0OwogCi1SZWZQdHI8U3VyZmFj
ZT4gSW5zdGFuY2U6OmNyZWF0ZVN1cmZhY2UoY29uc3QgV0dQVVN1cmZhY2VEZXNjcmlwdG9yJiBk
ZXNjcmlwdG9yKQorUmVmPFN1cmZhY2U+IEluc3RhbmNlOjpjcmVhdGVTdXJmYWNlKGNvbnN0IFdH
UFVTdXJmYWNlRGVzY3JpcHRvciYgZGVzY3JpcHRvcikKIHsKICAgICAvLyBGSVhNRTogSW1wbGVt
ZW50IHRoaXMuCiAgICAgVU5VU0VEX1BBUkFNKGRlc2NyaXB0b3IpOwpAQCAtMTM0LDcgKzEzNCw3
IEBAIHN0YXRpYyBOU0FycmF5PGlkPE1UTERldmljZT4+ICpzb3J0ZWREZXZpY2VzKE5TQXJyYXk8
aWQ8TVRMRGV2aWNlPj4gKmRldmljZXMsIFdHCiAgICAgfQogfQogCi12b2lkIEluc3RhbmNlOjpy
ZXF1ZXN0QWRhcHRlcihjb25zdCBXR1BVUmVxdWVzdEFkYXB0ZXJPcHRpb25zJiBvcHRpb25zLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFdHUFVSZXF1ZXN0QWRhcHRlclN0YXR1cywgUmVmUHRyPEFk
YXB0ZXI+JiYsIFN0cmluZyYmKT4mJiBjYWxsYmFjaykKK3ZvaWQgSW5zdGFuY2U6OnJlcXVlc3RB
ZGFwdGVyKGNvbnN0IFdHUFVSZXF1ZXN0QWRhcHRlck9wdGlvbnMmIG9wdGlvbnMsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoV0dQVVJlcXVlc3RBZGFwdGVyU3RhdHVzLCBSZWY8QWRhcHRlcj4mJiwg
U3RyaW5nJiYpPiYmIGNhbGxiYWNrKQogewogI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0o
TUFDQ0FUQUxZU1QpCiAgICAgTlNBcnJheTxpZDxNVExEZXZpY2U+PiAqZGV2aWNlcyA9IE1UTENv
cHlBbGxEZXZpY2VzKCk7CkBAIC0xNDksMjcgKzE0OSwyNyBAQCB2b2lkIEluc3RhbmNlOjpyZXF1
ZXN0QWRhcHRlcihjb25zdCBXR1BVUmVxdWVzdEFkYXB0ZXJPcHRpb25zJiBvcHRpb25zLCBDb21w
bGV0aQogICAgIGF1dG8gc29ydGVkRGV2aWNlcyA9IFdlYkdQVTo6c29ydGVkRGV2aWNlcyhkZXZp
Y2VzLCBvcHRpb25zLnBvd2VyUHJlZmVyZW5jZSk7CiAKICAgICBpZiAob3B0aW9ucy5uZXh0SW5D
aGFpbikgewotICAgICAgICBjYWxsYmFjayhXR1BVUmVxdWVzdEFkYXB0ZXJTdGF0dXNfRXJyb3Is
IG51bGxwdHIsICJVbmtub3duIGRlc2NyaXB0b3IgdHlwZSJfcyk7CisgICAgICAgIGNhbGxiYWNr
KFdHUFVSZXF1ZXN0QWRhcHRlclN0YXR1c19FcnJvciwgQWRhcHRlcjo6Y3JlYXRlSW52YWxpZCgq
dGhpcyksICJVbmtub3duIGRlc2NyaXB0b3IgdHlwZSJfcyk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKICAgICBpZiAob3B0aW9ucy5mb3JjZUZhbGxiYWNrQWRhcHRlcikgewotICAgICAgICBj
YWxsYmFjayhXR1BVUmVxdWVzdEFkYXB0ZXJTdGF0dXNfVW5hdmFpbGFibGUsIG51bGxwdHIsICJO
byBhZGFwdGVycyBwcmVzZW50Il9zKTsKKyAgICAgICAgY2FsbGJhY2soV0dQVVJlcXVlc3RBZGFw
dGVyU3RhdHVzX1VuYXZhaWxhYmxlLCBBZGFwdGVyOjpjcmVhdGVJbnZhbGlkKCp0aGlzKSwgIk5v
IGFkYXB0ZXJzIHByZXNlbnQiX3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYg
KCFzb3J0ZWREZXZpY2VzKSB7Ci0gICAgICAgIGNhbGxiYWNrKFdHUFVSZXF1ZXN0QWRhcHRlclN0
YXR1c19FcnJvciwgbnVsbHB0ciwgIlVua25vd24gcG93ZXIgcHJlZmVyZW5jZSJfcyk7CisgICAg
ICAgIGNhbGxiYWNrKFdHUFVSZXF1ZXN0QWRhcHRlclN0YXR1c19FcnJvciwgQWRhcHRlcjo6Y3Jl
YXRlSW52YWxpZCgqdGhpcyksICJVbmtub3duIHBvd2VyIHByZWZlcmVuY2UiX3MpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKCFzb3J0ZWREZXZpY2VzLmNvdW50KSB7Ci0gICAg
ICAgIGNhbGxiYWNrKFdHUFVSZXF1ZXN0QWRhcHRlclN0YXR1c19VbmF2YWlsYWJsZSwgbnVsbHB0
ciwgIk5vIGFkYXB0ZXJzIHByZXNlbnQiX3MpOworICAgICAgICBjYWxsYmFjayhXR1BVUmVxdWVz
dEFkYXB0ZXJTdGF0dXNfVW5hdmFpbGFibGUsIEFkYXB0ZXI6OmNyZWF0ZUludmFsaWQoKnRoaXMp
LCAiTm8gYWRhcHRlcnMgcHJlc2VudCJfcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAg
ICBpZiAoIXNvcnRlZERldmljZXNbMF0pIHsKLSAgICAgICAgY2FsbGJhY2soV0dQVVJlcXVlc3RB
ZGFwdGVyU3RhdHVzX0Vycm9yLCBudWxscHRyLCAiQWRhcHRlciBpcyBpbnRlcm5hbGx5IG51bGwi
X3MpOworICAgICAgICBjYWxsYmFjayhXR1BVUmVxdWVzdEFkYXB0ZXJTdGF0dXNfRXJyb3IsIEFk
YXB0ZXI6OmNyZWF0ZUludmFsaWQoKnRoaXMpLCAiQWRhcHRlciBpcyBpbnRlcm5hbGx5IG51bGwi
X3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC00NTEsMTQgKzQ1MSwxNCBAQCB2b2lk
IHdncHVJbnN0YW5jZVByb2Nlc3NFdmVudHMoV0dQVUluc3RhbmNlIGluc3RhbmNlKQogCiB2b2lk
IHdncHVJbnN0YW5jZVJlcXVlc3RBZGFwdGVyKFdHUFVJbnN0YW5jZSBpbnN0YW5jZSwgY29uc3Qg
V0dQVVJlcXVlc3RBZGFwdGVyT3B0aW9ucyogb3B0aW9ucywgV0dQVVJlcXVlc3RBZGFwdGVyQ2Fs
bGJhY2sgY2FsbGJhY2ssIHZvaWQqIHVzZXJkYXRhKQogewotICAgIFdlYkdQVTo6ZnJvbUFQSShp
bnN0YW5jZSkucmVxdWVzdEFkYXB0ZXIoKm9wdGlvbnMsIFtjYWxsYmFjaywgdXNlcmRhdGFdKFdH
UFVSZXF1ZXN0QWRhcHRlclN0YXR1cyBzdGF0dXMsIFJlZlB0cjxXZWJHUFU6OkFkYXB0ZXI+JiYg
YWRhcHRlciwgU3RyaW5nJiYgbWVzc2FnZSkgeworICAgIFdlYkdQVTo6ZnJvbUFQSShpbnN0YW5j
ZSkucmVxdWVzdEFkYXB0ZXIoKm9wdGlvbnMsIFtjYWxsYmFjaywgdXNlcmRhdGFdKFdHUFVSZXF1
ZXN0QWRhcHRlclN0YXR1cyBzdGF0dXMsIFJlZjxXZWJHUFU6OkFkYXB0ZXI+JiYgYWRhcHRlciwg
U3RyaW5nJiYgbWVzc2FnZSkgewogICAgICAgICBjYWxsYmFjayhzdGF0dXMsIFdlYkdQVTo6cmVs
ZWFzZVRvQVBJKFdURk1vdmUoYWRhcHRlcikpLCBtZXNzYWdlLnV0ZjgoKS5kYXRhKCksIHVzZXJk
YXRhKTsKICAgICB9KTsKIH0KIAogdm9pZCB3Z3B1SW5zdGFuY2VSZXF1ZXN0QWRhcHRlcldpdGhC
bG9jayhXR1BVSW5zdGFuY2UgaW5zdGFuY2UsIFdHUFVSZXF1ZXN0QWRhcHRlck9wdGlvbnMgY29u
c3QgKiBvcHRpb25zLCBXR1BVUmVxdWVzdEFkYXB0ZXJCbG9ja0NhbGxiYWNrIGNhbGxiYWNrKQog
ewotICAgIFdlYkdQVTo6ZnJvbUFQSShpbnN0YW5jZSkucmVxdWVzdEFkYXB0ZXIoKm9wdGlvbnMs
IFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShXR1BVUmVxdWVzdEFkYXB0ZXJTdGF0dXMg
c3RhdHVzLCBSZWZQdHI8V2ViR1BVOjpBZGFwdGVyPiYmIGFkYXB0ZXIsIFN0cmluZyYmIG1lc3Nh
Z2UpIHsKKyAgICBXZWJHUFU6OmZyb21BUEkoaW5zdGFuY2UpLnJlcXVlc3RBZGFwdGVyKCpvcHRp
b25zLCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oV0dQVVJlcXVlc3RBZGFwdGVyU3Rh
dHVzIHN0YXR1cywgUmVmPFdlYkdQVTo6QWRhcHRlcj4mJiBhZGFwdGVyLCBTdHJpbmcmJiBtZXNz
YWdlKSB7CiAgICAgICAgIGNhbGxiYWNrKHN0YXR1cywgV2ViR1BVOjpyZWxlYXNlVG9BUEkoV1RG
TW92ZShhZGFwdGVyKSksIG1lc3NhZ2UudXRmOCgpLmRhdGEoKSk7CiAgICAgfSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9QaXBlbGluZUxheW91dC5tbSBiL1NvdXJjZS9X
ZWJHUFUvV2ViR1BVL1BpcGVsaW5lTGF5b3V0Lm1tCmluZGV4IDA5ZjVlNTA0MDZlYS4uNDAwZDEx
OWVhMTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9QaXBlbGluZUxheW91dC5t
bQorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9QaXBlbGluZUxheW91dC5tbQpAQCAtMzIsMTAg
KzMyLDEwIEBACiAKIG5hbWVzcGFjZSBXZWJHUFUgewogCi1SZWZQdHI8UGlwZWxpbmVMYXlvdXQ+
IERldmljZTo6Y3JlYXRlUGlwZWxpbmVMYXlvdXQoY29uc3QgV0dQVVBpcGVsaW5lTGF5b3V0RGVz
Y3JpcHRvciYgZGVzY3JpcHRvcikKK1JlZjxQaXBlbGluZUxheW91dD4gRGV2aWNlOjpjcmVhdGVQ
aXBlbGluZUxheW91dChjb25zdCBXR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yJiBkZXNjcmlw
dG9yKQogewogICAgIGlmIChkZXNjcmlwdG9yLm5leHRJbkNoYWluKQotICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIFBpcGVsaW5lTGF5b3V0OjpjcmVhdGVJbnZhbGlkKCp0
aGlzKTsKIAogICAgIFZlY3RvcjxSZWY8QmluZEdyb3VwTGF5b3V0Pj4gYmluZEdyb3VwTGF5b3V0
czsKICAgICBiaW5kR3JvdXBMYXlvdXRzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoZGVzY3JpcHRv
ci5iaW5kR3JvdXBMYXlvdXRDb3VudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQ
VS9RdWVyeVNldC5tbSBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1F1ZXJ5U2V0Lm1tCmluZGV4IDdl
MWRkYTYyODFlNC4uYWI3YWMwMmUyMzcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQ
VS9RdWVyeVNldC5tbQorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9RdWVyeVNldC5tbQpAQCAt
MzEsMTAgKzMxLDEwIEBACiAKIG5hbWVzcGFjZSBXZWJHUFUgewogCi1SZWZQdHI8UXVlcnlTZXQ+
IERldmljZTo6Y3JlYXRlUXVlcnlTZXQoY29uc3QgV0dQVVF1ZXJ5U2V0RGVzY3JpcHRvciYgZGVz
Y3JpcHRvcikKK1JlZjxRdWVyeVNldD4gRGV2aWNlOjpjcmVhdGVRdWVyeVNldChjb25zdCBXR1BV
UXVlcnlTZXREZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogewogICAgIFVOVVNFRF9QQVJBTShkZXNj
cmlwdG9yKTsKLSAgICByZXR1cm4gUXVlcnlTZXQ6OmNyZWF0ZShuaWwsICp0aGlzKTsKKyAgICBy
ZXR1cm4gUXVlcnlTZXQ6OmNyZWF0ZUludmFsaWQoKnRoaXMpOwogfQogCiBRdWVyeVNldDo6UXVl
cnlTZXQoaWQ8TVRMQ291bnRlclNhbXBsZUJ1ZmZlcj4gY291bnRlclNhbXBsZUJ1ZmZlciwgRGV2
aWNlJiBkZXZpY2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9SZW5kZXJCdW5k
bGVFbmNvZGVyLmggYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9SZW5kZXJCdW5kbGVFbmNvZGVyLmgK
aW5kZXggYTA4ZjBjN2Q2M2QzLi5jOTY4ZTZhN2E2YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJH
UFUvV2ViR1BVL1JlbmRlckJ1bmRsZUVuY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQ
VS9SZW5kZXJCdW5kbGVFbmNvZGVyLmgKQEAgLTI5LDcgKzI5LDYgQEAKICNpbXBvcnQgIk9iamVj
dEJhc2UuaCIKICNpbXBvcnQgPHd0Zi9GYXN0TWFsbG9jLmg+CiAjaW1wb3J0IDx3dGYvUmVmLmg+
Ci0jaW1wb3J0IDx3dGYvUmVmUHRyLmg+CiAKIHN0cnVjdCBXR1BVUmVuZGVyQnVuZGxlRW5jb2Rl
ckltcGwgewogfTsKQEAgLTYxLDcgKzYwLDcgQEAgcHVibGljOgogICAgIHZvaWQgZHJhd0luZGV4
ZWQodWludDMyX3QgaW5kZXhDb3VudCwgdWludDMyX3QgaW5zdGFuY2VDb3VudCwgdWludDMyX3Qg
Zmlyc3RJbmRleCwgaW50MzJfdCBiYXNlVmVydGV4LCB1aW50MzJfdCBmaXJzdEluc3RhbmNlKTsK
ICAgICB2b2lkIGRyYXdJbmRleGVkSW5kaXJlY3QoY29uc3QgQnVmZmVyJiBpbmRpcmVjdEJ1ZmZl
ciwgdWludDY0X3QgaW5kaXJlY3RPZmZzZXQpOwogICAgIHZvaWQgZHJhd0luZGlyZWN0KGNvbnN0
IEJ1ZmZlciYgaW5kaXJlY3RCdWZmZXIsIHVpbnQ2NF90IGluZGlyZWN0T2Zmc2V0KTsKLSAgICBS
ZWZQdHI8UmVuZGVyQnVuZGxlPiBmaW5pc2goY29uc3QgV0dQVVJlbmRlckJ1bmRsZURlc2NyaXB0
b3ImKTsKKyAgICBSZWY8UmVuZGVyQnVuZGxlPiBmaW5pc2goY29uc3QgV0dQVVJlbmRlckJ1bmRs
ZURlc2NyaXB0b3ImKTsKICAgICB2b2lkIGluc2VydERlYnVnTWFya2VyKFN0cmluZyYmIG1hcmtl
ckxhYmVsKTsKICAgICB2b2lkIHBvcERlYnVnR3JvdXAoKTsKICAgICB2b2lkIHB1c2hEZWJ1Z0dy
b3VwKFN0cmluZyYmIGdyb3VwTGFiZWwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJH
UFUvUmVuZGVyQnVuZGxlRW5jb2Rlci5tbSBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1JlbmRlckJ1
bmRsZUVuY29kZXIubW0KaW5kZXggNmJlNDc4ODdkMTEzLi43OWM0OWE2OTNlMmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1JlbmRlckJ1bmRsZUVuY29kZXIubW0KKysrIGIvU291
cmNlL1dlYkdQVS9XZWJHUFUvUmVuZGVyQnVuZGxlRW5jb2Rlci5tbQpAQCAtMzUsMTAgKzM1LDEw
IEBACiAKIG5hbWVzcGFjZSBXZWJHUFUgewogCi1SZWZQdHI8UmVuZGVyQnVuZGxlRW5jb2Rlcj4g
RGV2aWNlOjpjcmVhdGVSZW5kZXJCdW5kbGVFbmNvZGVyKGNvbnN0IFdHUFVSZW5kZXJCdW5kbGVF
bmNvZGVyRGVzY3JpcHRvciYgZGVzY3JpcHRvcikKK1JlZjxSZW5kZXJCdW5kbGVFbmNvZGVyPiBE
ZXZpY2U6OmNyZWF0ZVJlbmRlckJ1bmRsZUVuY29kZXIoY29uc3QgV0dQVVJlbmRlckJ1bmRsZUVu
Y29kZXJEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogewogICAgIFVOVVNFRF9QQVJBTShkZXNjcmlw
dG9yKTsKLSAgICByZXR1cm4gUmVuZGVyQnVuZGxlRW5jb2Rlcjo6Y3JlYXRlKG5pbCwgKnRoaXMp
OworICAgIHJldHVybiBSZW5kZXJCdW5kbGVFbmNvZGVyOjpjcmVhdGVJbnZhbGlkKCp0aGlzKTsK
IH0KIAogUmVuZGVyQnVuZGxlRW5jb2Rlcjo6UmVuZGVyQnVuZGxlRW5jb2RlcihpZDxNVExJbmRp
cmVjdENvbW1hbmRCdWZmZXI+IGluZGlyZWN0Q29tbWFuZEJ1ZmZlciwgRGV2aWNlJiBkZXZpY2Up
CkBAIC04MywxMCArODMsMTAgQEAgdm9pZCBSZW5kZXJCdW5kbGVFbmNvZGVyOjpkcmF3SW5kaXJl
Y3QoY29uc3QgQnVmZmVyJiBpbmRpcmVjdEJ1ZmZlciwgdWludDY0X3QgaW4KICAgICBVTlVTRURf
UEFSQU0oaW5kaXJlY3RPZmZzZXQpOwogfQogCi1SZWZQdHI8UmVuZGVyQnVuZGxlPiBSZW5kZXJC
dW5kbGVFbmNvZGVyOjpmaW5pc2goY29uc3QgV0dQVVJlbmRlckJ1bmRsZURlc2NyaXB0b3ImIGRl
c2NyaXB0b3IpCitSZWY8UmVuZGVyQnVuZGxlPiBSZW5kZXJCdW5kbGVFbmNvZGVyOjpmaW5pc2go
Y29uc3QgV0dQVVJlbmRlckJ1bmRsZURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCiB7CiAgICAgVU5V
U0VEX1BBUkFNKGRlc2NyaXB0b3IpOwotICAgIHJldHVybiBSZW5kZXJCdW5kbGU6OmNyZWF0ZShu
aWwsIG1fZGV2aWNlKTsKKyAgICByZXR1cm4gUmVuZGVyQnVuZGxlOjpjcmVhdGVJbnZhbGlkKG1f
ZGV2aWNlKTsKIH0KIAogdm9pZCBSZW5kZXJCdW5kbGVFbmNvZGVyOjppbnNlcnREZWJ1Z01hcmtl
cihTdHJpbmcmJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1JlbmRlclBpcGVs
aW5lLm1tIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvUmVuZGVyUGlwZWxpbmUubW0KaW5kZXggNjAz
MTY3MGMwZjU2Li4yY2NiMmYzYWI1OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BV
L1JlbmRlclBpcGVsaW5lLm1tCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1JlbmRlclBpcGVs
aW5lLm1tCkBAIC0zMiwxMyArMzIsMTMgQEAKIAogbmFtZXNwYWNlIFdlYkdQVSB7CiAKLVJlZlB0
cjxSZW5kZXJQaXBlbGluZT4gRGV2aWNlOjpjcmVhdGVSZW5kZXJQaXBlbGluZShjb25zdCBXR1BV
UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQorUmVmPFJlbmRlclBpcGVsaW5l
PiBEZXZpY2U6OmNyZWF0ZVJlbmRlclBpcGVsaW5lKGNvbnN0IFdHUFVSZW5kZXJQaXBlbGluZURl
c2NyaXB0b3ImIGRlc2NyaXB0b3IpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGRlc2NyaXB0b3IpOwot
ICAgIHJldHVybiBSZW5kZXJQaXBlbGluZTo6Y3JlYXRlKG5pbCwgKnRoaXMpOworICAgIHJldHVy
biBSZW5kZXJQaXBlbGluZTo6Y3JlYXRlSW52YWxpZCgqdGhpcyk7CiB9CiAKLXZvaWQgRGV2aWNl
OjpjcmVhdGVSZW5kZXJQaXBlbGluZUFzeW5jKGNvbnN0IFdHUFVSZW5kZXJQaXBlbGluZURlc2Ny
aXB0b3ImIGRlc2NyaXB0b3IsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV0dQVUNyZWF0ZVBpcGVs
aW5lQXN5bmNTdGF0dXMsIFJlZlB0cjxSZW5kZXJQaXBlbGluZT4mJiwgU3RyaW5nJiYgbWVzc2Fn
ZSk+JiYgY2FsbGJhY2spCit2b2lkIERldmljZTo6Y3JlYXRlUmVuZGVyUGlwZWxpbmVBc3luYyhj
b25zdCBXR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFdHUFVDcmVhdGVQaXBlbGluZUFzeW5jU3RhdHVzLCBSZWY8UmVuZGVyUGlw
ZWxpbmU+JiYsIFN0cmluZyYmIG1lc3NhZ2UpPiYmIGNhbGxiYWNrKQogewogICAgIFVOVVNFRF9Q
QVJBTShkZXNjcmlwdG9yKTsKICAgICBVTlVTRURfUEFSQU0oY2FsbGJhY2spOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvU2FtcGxlci5tbSBiL1NvdXJjZS9XZWJHUFUvV2ViR1BV
L1NhbXBsZXIubW0KaW5kZXggMjFmYTA3NDM3NWM3Li5jOTM3OTJiMGVmYmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJHUFUvV2ViR1BVL1NhbXBsZXIubW0KKysrIGIvU291cmNlL1dlYkdQVS9XZWJH
UFUvU2FtcGxlci5tbQpAQCAtMTI1LDE3ICsxMjUsMTYgQEAgc3RhdGljIE1UTENvbXBhcmVGdW5j
dGlvbiBjb21wYXJlRnVuY3Rpb24oV0dQVUNvbXBhcmVGdW5jdGlvbiBjb21wYXJlRnVuY3Rpb24p
CiAgICAgfQogfQogCi1SZWZQdHI8U2FtcGxlcj4gRGV2aWNlOjpjcmVhdGVTYW1wbGVyKGNvbnN0
IFdHUFVTYW1wbGVyRGVzY3JpcHRvciYgZGVzY3JpcHRvcikKK1JlZjxTYW1wbGVyPiBEZXZpY2U6
OmNyZWF0ZVNhbXBsZXIoY29uc3QgV0dQVVNhbXBsZXJEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQog
ewogICAgIGlmIChkZXNjcmlwdG9yLm5leHRJbkNoYWluKQotICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICAgICAgcmV0dXJuIFNhbXBsZXI6OmNyZWF0ZUludmFsaWQoKnRoaXMpOwogCiAgICAg
Ly8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYi8jZG9tLWdwdWRldmljZS1jcmVhdGVz
YW1wbGVyCiAKICAgICBpZiAoIXZhbGlkYXRlQ3JlYXRlU2FtcGxlcigqdGhpcywgZGVzY3JpcHRv
cikpIHsKICAgICAgICAgZ2VuZXJhdGVBVmFsaWRhdGlvbkVycm9yKCJWYWxpZGF0aW9uIGZhaWx1
cmUuIl9zKTsKLQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIFNhbXBs
ZXI6OmNyZWF0ZUludmFsaWQoKnRoaXMpOwogICAgIH0KIAogICAgIE1UTFNhbXBsZXJEZXNjcmlw
dG9yICpzYW1wbGVyRGVzY3JpcHRvciA9IFtNVExTYW1wbGVyRGVzY3JpcHRvciBuZXddOwpAQCAt
MTU4LDcgKzE1Nyw3IEBAIFJlZlB0cjxTYW1wbGVyPiBEZXZpY2U6OmNyZWF0ZVNhbXBsZXIoY29u
c3QgV0dQVVNhbXBsZXJEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogCiAgICAgaWQ8TVRMU2FtcGxl
clN0YXRlPiBzYW1wbGVyU3RhdGUgPSBbbV9kZXZpY2UgbmV3U2FtcGxlclN0YXRlV2l0aERlc2Ny
aXB0b3I6c2FtcGxlckRlc2NyaXB0b3JdOwogICAgIGlmICghc2FtcGxlclN0YXRlKQotICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIFNhbXBsZXI6OmNyZWF0ZUludmFsaWQo
KnRoaXMpOwogCiAgICAgcmV0dXJuIFNhbXBsZXI6OmNyZWF0ZShzYW1wbGVyU3RhdGUsIGRlc2Ny
aXB0b3IsICp0aGlzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1NoYWRl
ck1vZHVsZS5tbSBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1NoYWRlck1vZHVsZS5tbQppbmRleCBi
MGYyYTQ3N2VlNzYuLjA1MjkzNjZlNGE2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJH
UFUvU2hhZGVyTW9kdWxlLm1tCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1NoYWRlck1vZHVs
ZS5tbQpAQCAtMTAwLDIwICsxMDAsMjAgQEAgc3RhdGljIFJlZlB0cjxTaGFkZXJNb2R1bGU+IGVh
cmx5Q29tcGlsZVNoYWRlck1vZHVsZShEZXZpY2UmIGRldmljZSwgc3RkOjp2YXJpYW4KICAgICBy
ZXR1cm4gU2hhZGVyTW9kdWxlOjpjcmVhdGUoV1RGTW92ZShjaGVja1Jlc3VsdCksIFdURk1vdmUo
aGludHMpLCBXVEZNb3ZlKHByZXBhcmVSZXN1bHQuZW50cnlQb2ludHMpLCBsaWJyYXJ5LCBkZXZp
Y2UpOwogfQogCi1SZWZQdHI8U2hhZGVyTW9kdWxlPiBEZXZpY2U6OmNyZWF0ZVNoYWRlck1vZHVs
ZShjb25zdCBXR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvciYgZGVzY3JpcHRvcikKK1JlZjxTaGFk
ZXJNb2R1bGU+IERldmljZTo6Y3JlYXRlU2hhZGVyTW9kdWxlKGNvbnN0IFdHUFVTaGFkZXJNb2R1
bGVEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogewogICAgIGlmICghZGVzY3JpcHRvci5uZXh0SW5D
aGFpbikKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBTaGFkZXJNb2R1
bGU6OmNyZWF0ZUludmFsaWQoKnRoaXMpOwogCiAgICAgYXV0byBzaGFkZXJNb2R1bGVQYXJhbWV0
ZXJzID0gZmluZFNoYWRlck1vZHVsZVBhcmFtZXRlcnMoZGVzY3JpcHRvcik7CiAgICAgaWYgKCFz
aGFkZXJNb2R1bGVQYXJhbWV0ZXJzKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAg
cmV0dXJuIFNoYWRlck1vZHVsZTo6Y3JlYXRlSW52YWxpZCgqdGhpcyk7CiAKICAgICBhdXRvIGNo
ZWNrUmVzdWx0ID0gV0dTTDo6c3RhdGljQ2hlY2soU3RyaW5nKHNoYWRlck1vZHVsZVBhcmFtZXRl
cnMtPndnc2wuY29kZSksIHN0ZDo6bnVsbG9wdCk7CiAKICAgICBpZiAoc3RkOjpob2xkc19hbHRl
cm5hdGl2ZTxXR1NMOjpTdWNjZXNzZnVsQ2hlY2s+KGNoZWNrUmVzdWx0KSAmJiBzaGFkZXJNb2R1
bGVQYXJhbWV0ZXJzLT5oaW50cyAmJiBzaGFkZXJNb2R1bGVQYXJhbWV0ZXJzLT5oaW50cy0+aGlu
dHNDb3VudCkgewogICAgICAgICBpZiAoYXV0byByZXN1bHQgPSBlYXJseUNvbXBpbGVTaGFkZXJN
b2R1bGUoKnRoaXMsIFdURk1vdmUoY2hlY2tSZXN1bHQpLCAqc2hhZGVyTW9kdWxlUGFyYW1ldGVy
cy0+aGludHMsIGZyb21BUEkoZGVzY3JpcHRvci5sYWJlbCkpKQotICAgICAgICAgICAgcmV0dXJu
IHJlc3VsdDsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQucmVsZWFzZU5vbk51bGwoKTsKICAg
ICB9CiAKICAgICByZXR1cm4gU2hhZGVyTW9kdWxlOjpjcmVhdGUoV1RGTW92ZShjaGVja1Jlc3Vs
dCksIHsgfSwgeyB9LCBuaWwsICp0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2Vi
R1BVL1N3YXBDaGFpbi5tbSBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1N3YXBDaGFpbi5tbQppbmRl
eCA4MTFhOWE1OGJjNzMuLjhmZjI3ZmIyMjM4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9X
ZWJHUFUvU3dhcENoYWluLm1tCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1N3YXBDaGFpbi5t
bQpAQCAtMzIsNyArMzIsNyBAQAogCiBuYW1lc3BhY2UgV2ViR1BVIHsKIAotUmVmUHRyPFN3YXBD
aGFpbj4gRGV2aWNlOjpjcmVhdGVTd2FwQ2hhaW4oY29uc3QgU3VyZmFjZSYgc3VyZmFjZSwgY29u
c3QgV0dQVVN3YXBDaGFpbkRlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCitSZWY8U3dhcENoYWluPiBE
ZXZpY2U6OmNyZWF0ZVN3YXBDaGFpbihjb25zdCBTdXJmYWNlJiBzdXJmYWNlLCBjb25zdCBXR1BV
U3dhcENoYWluRGVzY3JpcHRvciYgZGVzY3JpcHRvcikKIHsKICAgICBVTlVTRURfUEFSQU0oc3Vy
ZmFjZSk7CiAgICAgVU5VU0VEX1BBUkFNKGRlc2NyaXB0b3IpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkdQVS9XZWJHUFUvVGV4dHVyZS5oIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvVGV4dHVyZS5o
CmluZGV4IGY1MTJmZjdkNmM5Ny4uYmQ1YWZjYzMwM2U3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
R1BVL1dlYkdQVS9UZXh0dXJlLmgKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvVGV4dHVyZS5o
CkBAIC0yOCw3ICsyOCw2IEBACiAjaW1wb3J0ICJPYmplY3RCYXNlLmgiCiAjaW1wb3J0IDx3dGYv
RmFzdE1hbGxvYy5oPgogI2ltcG9ydCA8d3RmL1JlZi5oPgotI2ltcG9ydCA8d3RmL1JlZlB0ci5o
PgogI2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgogCiBzdHJ1Y3QgV0dQVVRleHR1cmVJbXBsIHsKQEAg
LTU0LDcgKzUzLDcgQEAgcHVibGljOgogCiAgICAgflRleHR1cmUoKTsKIAotICAgIFJlZlB0cjxU
ZXh0dXJlVmlldz4gY3JlYXRlVmlldyhjb25zdCBXR1BVVGV4dHVyZVZpZXdEZXNjcmlwdG9yJik7
CisgICAgUmVmPFRleHR1cmVWaWV3PiBjcmVhdGVWaWV3KGNvbnN0IFdHUFVUZXh0dXJlVmlld0Rl
c2NyaXB0b3ImKTsKICAgICB2b2lkIGRlc3Ryb3koKTsKICAgICB2b2lkIHNldExhYmVsKFN0cmlu
ZyYmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvVGV4dHVyZS5tbSBiL1Nv
dXJjZS9XZWJHUFUvV2ViR1BVL1RleHR1cmUubW0KaW5kZXggYjFlMGVhMWQ3YzFmLi4wNTllYmM1
ODMzNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1RleHR1cmUubW0KKysrIGIv
U291cmNlL1dlYkdQVS9XZWJHUFUvVGV4dHVyZS5tbQpAQCAtMTk2NCwxNSArMTk2NCwxNSBAQCBz
dGF0aWMgTVRMU3RvcmFnZU1vZGUgc3RvcmFnZU1vZGUoYm9vbCBkZXZpY2VIYXNVbmlmaWVkTWVt
b3J5KQogI2VuZGlmCiB9CiAKLVJlZlB0cjxUZXh0dXJlPiBEZXZpY2U6OmNyZWF0ZVRleHR1cmUo
Y29uc3QgV0dQVVRleHR1cmVEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQorUmVmPFRleHR1cmU+IERl
dmljZTo6Y3JlYXRlVGV4dHVyZShjb25zdCBXR1BVVGV4dHVyZURlc2NyaXB0b3ImIGRlc2NyaXB0
b3IpCiB7CiAgICAgVmVjdG9yPFdHUFVUZXh0dXJlRm9ybWF0PiB2aWV3Rm9ybWF0czsKICAgICBp
ZiAoZGVzY3JpcHRvci5uZXh0SW5DaGFpbikgewogICAgICAgICBpZiAoZGVzY3JpcHRvci5uZXh0
SW5DaGFpbi0+c1R5cGUgIT0gc3RhdGljX2Nhc3Q8V0dQVVNUeXBlPihXR1BVU1R5cGVFeHRlbmRl
ZF9UZXh0dXJlRGVzY3JpcHRvclZpZXdGb3JtYXRzKSkKLSAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOworICAgICAgICAgICAgcmV0dXJuIFRleHR1cmU6OmNyZWF0ZUludmFsaWQoKnRoaXMpOwog
ICAgICAgICBjb25zdCBhdXRvJiBkZXNjcmlwdG9yVmlld0Zvcm1hdHMgPSByZWludGVycHJldF9j
YXN0PGNvbnN0IFdHUFVUZXh0dXJlRGVzY3JpcHRvclZpZXdGb3JtYXRzJj4oKmRlc2NyaXB0b3Iu
bmV4dEluQ2hhaW4pOwogICAgICAgICBpZiAoZGVzY3JpcHRvci5uZXh0SW5DaGFpbi0+bmV4dCAh
PSBudWxscHRyKQotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgICAgICByZXR1
cm4gVGV4dHVyZTo6Y3JlYXRlSW52YWxpZCgqdGhpcyk7CiAgICAgICAgIHZpZXdGb3JtYXRzLnJl
c2VydmVJbml0aWFsQ2FwYWNpdHkoZGVzY3JpcHRvclZpZXdGb3JtYXRzLnZpZXdGb3JtYXRzQ291
bnQpOwogICAgICAgICAvLyBUaGlzIGNvcHkgaXMgdGVtcG9yYXJ5LCBqdXN0IHVudGlsIFdHUFVU
ZXh0dXJlRGVzY3JpcHRvclZpZXdGb3JtYXRzIGdldHMgZm9sZGVkIGludG8gV0dQVVRleHR1cmVE
ZXNjcmlwdG9yLgogICAgICAgICBmb3IgKHVpbnQzMl90IGkgPSAwOyBpIDwgZGVzY3JpcHRvclZp
ZXdGb3JtYXRzLnZpZXdGb3JtYXRzQ291bnQ7ICsraSkKQEAgLTE5ODMsNyArMTk4Myw3IEBAIFJl
ZlB0cjxUZXh0dXJlPiBEZXZpY2U6OmNyZWF0ZVRleHR1cmUoY29uc3QgV0dQVVRleHR1cmVEZXNj
cmlwdG9yJiBkZXNjcmlwdG9yKQogCiAgICAgaWYgKGZlYXR1cmVSZXF1aXJlbWVudEZvckZvcm1h
dChkZXNjcmlwdG9yLmZvcm1hdCkpIHsKICAgICAgICAgLy8gRklYTUU6ICJidXQgdGhpcy5bW2Rl
dmljZV1dLltbZmVhdHVyZXNdXSBkb2VzIG5vdCBjb250YWluIHRoZSBmZWF0dXJlLCB0aHJvdyBh
IFR5cGVFcnJvci4iCi0gICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gVGV4
dHVyZTo6Y3JlYXRlSW52YWxpZCgqdGhpcyk7CiAgICAgfQogCiAgICAgaWYgKCF2YWxpZGF0ZUNy
ZWF0ZVRleHR1cmUoZGVzY3JpcHRvciwgdmlld0Zvcm1hdHMpKSB7CkBAIC0yMDExLDcgKzIwMTEs
NyBAQCBSZWZQdHI8VGV4dHVyZT4gRGV2aWNlOjpjcmVhdGVUZXh0dXJlKGNvbnN0IFdHUFVUZXh0
dXJlRGVzY3JpcHRvciYgZGVzY3JpcHRvcikKICAgICAgICAgICAgIHRleHR1cmVEZXNjcmlwdG9y
LmFycmF5TGVuZ3RoID0gZGVzY3JpcHRvci5zaXplLmRlcHRoT3JBcnJheUxheWVyczsKICAgICAg
ICAgICAgIGlmIChkZXNjcmlwdG9yLnNhbXBsZUNvdW50ID4gMSkgewogI2lmIFBMQVRGT1JNKFdB
VENIT1MpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgICAgICAgICAg
cmV0dXJuIFRleHR1cmU6OmNyZWF0ZUludmFsaWQoKnRoaXMpOwogI2Vsc2UKICAgICAgICAgICAg
ICAgICB0ZXh0dXJlRGVzY3JpcHRvci50ZXh0dXJlVHlwZSA9IE1UTFRleHR1cmVUeXBlMkRNdWx0
aXNhbXBsZUFycmF5OwogI2VuZGlmCkBAIC0yMDMyLDcgKzIwMzIsNyBAQCBSZWZQdHI8VGV4dHVy
ZT4gRGV2aWNlOjpjcmVhdGVUZXh0dXJlKGNvbnN0IFdHUFVUZXh0dXJlRGVzY3JpcHRvciYgZGVz
Y3JpcHRvcikKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBXR1BVVGV4dHVyZURpbWVuc2lvbl9G
b3JjZTMyOgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgICAgIHJldHVybiBUZXh0dXJlOjpjcmVhdGVJbnZhbGlkKCp0aGlzKTsKICAg
ICB9CiAKICAgICB0ZXh0dXJlRGVzY3JpcHRvci5waXhlbEZvcm1hdCA9IHBpeGVsRm9ybWF0KGRl
c2NyaXB0b3IuZm9ybWF0KTsKQEAgLTIwNDgsNyArMjA0OCw3IEBAIFJlZlB0cjxUZXh0dXJlPiBE
ZXZpY2U6OmNyZWF0ZVRleHR1cmUoY29uc3QgV0dQVVRleHR1cmVEZXNjcmlwdG9yJiBkZXNjcmlw
dG9yKQogCiAgICAgaWQ8TVRMVGV4dHVyZT4gdGV4dHVyZSA9IFttX2RldmljZSBuZXdUZXh0dXJl
V2l0aERlc2NyaXB0b3I6dGV4dHVyZURlc2NyaXB0b3JdOwogICAgIGlmICghdGV4dHVyZSkKLSAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBUZXh0dXJlOjpjcmVhdGVJbnZh
bGlkKCp0aGlzKTsKIAogICAgIHRleHR1cmUubGFiZWwgPSBmcm9tQVBJKGRlc2NyaXB0b3IubGFi
ZWwpOwogCkBAIC0yMjYzLDEwICsyMjYzLDEwIEBAIHN0YXRpYyBXR1BVRXh0ZW50M0QgY29tcHV0
ZVJlbmRlckV4dGVudChjb25zdCBXR1BVRXh0ZW50M0QmIGJhc2VTaXplLCB1aW50MzJfdCBtCiAg
ICAgcmV0dXJuIGV4dGVudDsKIH0KIAotUmVmUHRyPFRleHR1cmVWaWV3PiBUZXh0dXJlOjpjcmVh
dGVWaWV3KGNvbnN0IFdHUFVUZXh0dXJlVmlld0Rlc2NyaXB0b3ImIGlucHV0RGVzY3JpcHRvcikK
K1JlZjxUZXh0dXJlVmlldz4gVGV4dHVyZTo6Y3JlYXRlVmlldyhjb25zdCBXR1BVVGV4dHVyZVZp
ZXdEZXNjcmlwdG9yJiBpbnB1dERlc2NyaXB0b3IpCiB7CiAgICAgaWYgKGlucHV0RGVzY3JpcHRv
ci5uZXh0SW5DaGFpbikKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBU
ZXh0dXJlVmlldzo6Y3JlYXRlSW52YWxpZChtX2RldmljZSk7CiAKICAgICAvLyBodHRwczovL2dw
dXdlYi5naXRodWIuaW8vZ3B1d2ViLyNkb20tZ3B1dGV4dHVyZS1jcmVhdGV2aWV3CiAKQEAgLTIy
OTEsMTggKzIyOTEsMTggQEAgUmVmUHRyPFRleHR1cmVWaWV3PiBUZXh0dXJlOjpjcmVhdGVWaWV3
KGNvbnN0IFdHUFVUZXh0dXJlVmlld0Rlc2NyaXB0b3ImIGlucHV0RGUKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICBjYXNlIFdHUFVUZXh0dXJlQXNwZWN0X0ZvcmNlMzI6CiAgICAgICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAg
ICAgICAgICAgcmV0dXJuIFRleHR1cmVWaWV3OjpjcmVhdGVJbnZhbGlkKG1fZGV2aWNlKTsKICAg
ICAgICAgfQogICAgIH0KICAgICBpZiAoIXBpeGVsRm9ybWF0KQotICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKyAgICAgICAgcmV0dXJuIFRleHR1cmVWaWV3OjpjcmVhdGVJbnZhbGlkKG1fZGV2aWNl
KTsKICAgICBBU1NFUlQoKnBpeGVsRm9ybWF0ICE9IE1UTFBpeGVsRm9ybWF0SW52YWxpZCk7CiAK
ICAgICBNVExUZXh0dXJlVHlwZSB0ZXh0dXJlVHlwZTsKICAgICBzd2l0Y2ggKGRlc2NyaXB0b3Iu
ZGltZW5zaW9uKSB7CiAgICAgY2FzZSBXR1BVVGV4dHVyZVZpZXdEaW1lbnNpb25fVW5kZWZpbmVk
OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgICAgIHJldHVybiBUZXh0dXJlVmlldzo6Y3JlYXRlSW52YWxpZChtX2RldmljZSk7CiAg
ICAgY2FzZSBXR1BVVGV4dHVyZVZpZXdEaW1lbnNpb25fMUQ6CiAgICAgICAgIGlmIChkZXNjcmlw
dG9yLmFycmF5TGF5ZXJDb3VudCA9PSAxKQogICAgICAgICAgICAgdGV4dHVyZVR5cGUgPSBNVExU
ZXh0dXJlVHlwZTFEOwpAQCAtMjMxOCw3ICsyMzE4LDcgQEAgUmVmUHRyPFRleHR1cmVWaWV3PiBU
ZXh0dXJlOjpjcmVhdGVWaWV3KGNvbnN0IFdHUFVUZXh0dXJlVmlld0Rlc2NyaXB0b3ImIGlucHV0
RGUKICAgICBjYXNlIFdHUFVUZXh0dXJlVmlld0RpbWVuc2lvbl8yREFycmF5OgogICAgICAgICBp
ZiAobV9kZXNjcmlwdG9yLnNhbXBsZUNvdW50ID4gMSkgewogI2lmIFBMQVRGT1JNKFdBVENIT1Mp
Ci0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAgIHJldHVybiBUZXh0dXJl
Vmlldzo6Y3JlYXRlSW52YWxpZChtX2RldmljZSk7CiAjZWxzZQogICAgICAgICAgICAgdGV4dHVy
ZVR5cGUgPSBNVExUZXh0dXJlVHlwZTJETXVsdGlzYW1wbGVBcnJheTsKICNlbmRpZgpAQCAtMjMz
Niw3ICsyMzM2LDcgQEAgUmVmUHRyPFRleHR1cmVWaWV3PiBUZXh0dXJlOjpjcmVhdGVWaWV3KGNv
bnN0IFdHUFVUZXh0dXJlVmlld0Rlc2NyaXB0b3ImIGlucHV0RGUKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBXR1BVVGV4dHVyZVZpZXdEaW1lbnNpb25fRm9yY2UzMjoKICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4g
VGV4dHVyZVZpZXc6OmNyZWF0ZUludmFsaWQobV9kZXZpY2UpOwogICAgIH0KIAogICAgIGF1dG8g
bGV2ZWxzID0gTlNNYWtlUmFuZ2UoZGVzY3JpcHRvci5iYXNlTWlwTGV2ZWwsIGRlc2NyaXB0b3Iu
bWlwTGV2ZWxDb3VudCk7CkBAIC0yMzQ1LDcgKzIzNDUsNyBAQCBSZWZQdHI8VGV4dHVyZVZpZXc+
IFRleHR1cmU6OmNyZWF0ZVZpZXcoY29uc3QgV0dQVVRleHR1cmVWaWV3RGVzY3JpcHRvciYgaW5w
dXREZQogCiAgICAgaWQ8TVRMVGV4dHVyZT4gdGV4dHVyZSA9IFttX3RleHR1cmUgbmV3VGV4dHVy
ZVZpZXdXaXRoUGl4ZWxGb3JtYXQ6KnBpeGVsRm9ybWF0IHRleHR1cmVUeXBlOnRleHR1cmVUeXBl
IGxldmVsczpsZXZlbHMgc2xpY2VzOnNsaWNlc107CiAgICAgaWYgKCF0ZXh0dXJlKQotICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIFRleHR1cmVWaWV3OjpjcmVhdGVJbnZh
bGlkKG1fZGV2aWNlKTsKIAogICAgIHRleHR1cmUubGFiZWwgPSBmcm9tQVBJKGRlc2NyaXB0b3Iu
bGFiZWwpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456991</attachid>
            <date>2022-04-07 16:59:49 -0700</date>
            <delta_ts>2022-04-08 15:49:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238724-20220407165948.patch</filename>
            <type>text/plain</type>
            <size>51994</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyNTc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJHUFUvQ2hhbmdlTG9nCmluZGV4IGVkY2MyNjRmODFjMjMzZDQ3
MzlhNmVhNGViNzk5M2ZlYTVlMjNhZGMuLjFjYTViMWY2MzhiM2FhNzJkY2ZmZTlhOGI4YmE1NjZj
NWNlZDJjNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJHUFUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzQgQEAKKzIwMjItMDQtMDcgIE15bGVzIEMu
IE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViR1BVXSBSZXBy
ZXNlbnQgZmFpbHVyZSBieSBpbnZhbGlkaXR5IHJhdGhlciB0aGFuIG51bGxwdHIKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODcyNAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgaXMgdGhlIGJpZ2dl
c3QgYmxvY2tlciBmb3IgcnVubmluZyB0aGUgV2ViR1BVIGNvbmZvcm1hbmNlIHRlc3Qgc3VpdGUu
IFdlYkdQVSBpcyBkZXNpZ25lZAorICAgICAgICBzdWNoIHRoYXQgY3JlYXRpb24gcm91dGluZXMg
ZG9uJ3QgcmV0dXJuIHVuZGVmaW5lZCBpZiB0aGUgb2JqZWN0IGNvdWxkbid0IGJlIGNyZWF0ZWQ7
IGluc3RlYWQsCisgICAgICAgIGluICJpbnZhbGlkIiBvYmplY3QgaXMgcmV0dXJuZWQuIE5vdyB0
aGF0IG9iamVjdHMgaGF2ZSB0aGUgbm90aW9uIG9mIGludmFsaWRpdHksIHRoaXMgcGF0Y2gKKyAg
ICAgICAgbWlncmF0ZXMgZnJvbSBjcmVhdGlvbiBmdW5jdGlvbnMgcmV0dXJuaW5nIFJlZlB0ciB0
byBjcmVhdGlvbiBmdW5jdGlvbnMgcmV0dXJuaW5nIFJlZi4gQWxsCisgICAgICAgIHRoZSBwbGFj
ZXMgd2hlcmUgd2UgcHJldmlvdXNseSByZXR1cm5lZCBudWxscHRyIG5vdyByZXR1cm4gaW52YWxp
ZCBvYmplY3RzLgorCisgICAgICAgICogV2ViR1BVL0FQSUNvbnZlcnNpb25zLmg6CisgICAgICAg
IChXZWJHUFU6OnJlbGVhc2VUb0FQSSk6CisgICAgICAgICogV2ViR1BVL0FkYXB0ZXIuaDoKKyAg
ICAgICAgKiBXZWJHUFUvQWRhcHRlci5tbToKKyAgICAgICAgKFdlYkdQVTo6QWRhcHRlcjo6cmVx
dWVzdERldmljZSk6CisgICAgICAgICh3Z3B1QWRhcHRlclJlcXVlc3REZXZpY2UpOgorICAgICAg
ICAod2dwdUFkYXB0ZXJSZXF1ZXN0RGV2aWNlV2l0aEJsb2NrKToKKyAgICAgICAgKiBXZWJHUFUv
QmluZEdyb3VwLm1tOgorICAgICAgICAoV2ViR1BVOjpEZXZpY2U6OmNyZWF0ZUJpbmRHcm91cCk6
CisgICAgICAgICogV2ViR1BVL0JpbmRHcm91cExheW91dC5tbToKKyAgICAgICAgKFdlYkdQVTo6
RGV2aWNlOjpjcmVhdGVCaW5kR3JvdXBMYXlvdXQpOgorICAgICAgICAqIFdlYkdQVS9CdWZmZXIu
bW06CisgICAgICAgIChXZWJHUFU6OkRldmljZTo6Y3JlYXRlQnVmZmVyKToKKyAgICAgICAgKiBX
ZWJHUFUvQ29tbWFuZEVuY29kZXIuaDoKKyAgICAgICAgKiBXZWJHUFUvQ29tbWFuZEVuY29kZXIu
bW06CisgICAgICAgIChXZWJHUFU6OkRldmljZTo6Y3JlYXRlQ29tbWFuZEVuY29kZXIpOgorICAg
ICAgICAoV2ViR1BVOjpDb21tYW5kRW5jb2Rlcjo6YmVnaW5Db21wdXRlUGFzcyk6CisgICAgICAg
IChXZWJHUFU6OkNvbW1hbmRFbmNvZGVyOjpiZWdpblJlbmRlclBhc3MpOgorICAgICAgICAoV2Vi
R1BVOjpDb21tYW5kRW5jb2Rlcjo6ZmluaXNoKToKKyAgICAgICAgKiBXZWJHUFUvQ29tcHV0ZVBp
cGVsaW5lLm1tOgorICAgICAgICAoV2ViR1BVOjpEZXZpY2U6OmNyZWF0ZUNvbXB1dGVQaXBlbGlu
ZSk6CisgICAgICAgIChXZWJHUFU6OkRldmljZTo6Y3JlYXRlQ29tcHV0ZVBpcGVsaW5lQXN5bmMp
OgorICAgICAgICAqIFdlYkdQVS9EZXZpY2UuaDoKKyAgICAgICAgKiBXZWJHUFUvRGV2aWNlLm1t
OgorICAgICAgICAoV2ViR1BVOjpEZXZpY2U6OmNyZWF0ZSk6CisgICAgICAgICh3Z3B1RGV2aWNl
Q3JlYXRlQ29tcHV0ZVBpcGVsaW5lQXN5bmMpOgorICAgICAgICAod2dwdURldmljZUNyZWF0ZUNv
bXB1dGVQaXBlbGluZUFzeW5jV2l0aEJsb2NrKToKKyAgICAgICAgKHdncHVEZXZpY2VDcmVhdGVS
ZW5kZXJQaXBlbGluZUFzeW5jKToKKyAgICAgICAgKHdncHVEZXZpY2VDcmVhdGVSZW5kZXJQaXBl
bGluZUFzeW5jV2l0aEJsb2NrKToKKyAgICAgICAgKiBXZWJHUFUvSW5zdGFuY2UuaDoKKyAgICAg
ICAgKiBXZWJHUFUvSW5zdGFuY2UubW06CisgICAgICAgIChXZWJHUFU6Okluc3RhbmNlOjpjcmVh
dGUpOgorICAgICAgICAoV2ViR1BVOjpJbnN0YW5jZTo6Y3JlYXRlU3VyZmFjZSk6CisgICAgICAg
IChXZWJHUFU6Okluc3RhbmNlOjpyZXF1ZXN0QWRhcHRlcik6CisgICAgICAgICh3Z3B1SW5zdGFu
Y2VSZXF1ZXN0QWRhcHRlcik6CisgICAgICAgICh3Z3B1SW5zdGFuY2VSZXF1ZXN0QWRhcHRlcldp
dGhCbG9jayk6CisgICAgICAgICogV2ViR1BVL1BpcGVsaW5lTGF5b3V0Lm1tOgorICAgICAgICAo
V2ViR1BVOjpEZXZpY2U6OmNyZWF0ZVBpcGVsaW5lTGF5b3V0KToKKyAgICAgICAgKiBXZWJHUFUv
UXVlcnlTZXQubW06CisgICAgICAgIChXZWJHUFU6OkRldmljZTo6Y3JlYXRlUXVlcnlTZXQpOgor
ICAgICAgICAqIFdlYkdQVS9SZW5kZXJCdW5kbGVFbmNvZGVyLmg6CisgICAgICAgICogV2ViR1BV
L1JlbmRlckJ1bmRsZUVuY29kZXIubW06CisgICAgICAgIChXZWJHUFU6OkRldmljZTo6Y3JlYXRl
UmVuZGVyQnVuZGxlRW5jb2Rlcik6CisgICAgICAgIChXZWJHUFU6OlJlbmRlckJ1bmRsZUVuY29k
ZXI6OmZpbmlzaCk6CisgICAgICAgICogV2ViR1BVL1JlbmRlclBpcGVsaW5lLm1tOgorICAgICAg
ICAoV2ViR1BVOjpEZXZpY2U6OmNyZWF0ZVJlbmRlclBpcGVsaW5lKToKKyAgICAgICAgKFdlYkdQ
VTo6RGV2aWNlOjpjcmVhdGVSZW5kZXJQaXBlbGluZUFzeW5jKToKKyAgICAgICAgKiBXZWJHUFUv
U2FtcGxlci5tbToKKyAgICAgICAgKFdlYkdQVTo6RGV2aWNlOjpjcmVhdGVTYW1wbGVyKToKKyAg
ICAgICAgKiBXZWJHUFUvU2hhZGVyTW9kdWxlLm1tOgorICAgICAgICAoV2ViR1BVOjpEZXZpY2U6
OmNyZWF0ZVNoYWRlck1vZHVsZSk6CisgICAgICAgICogV2ViR1BVL1N3YXBDaGFpbi5tbToKKyAg
ICAgICAgKFdlYkdQVTo6RGV2aWNlOjpjcmVhdGVTd2FwQ2hhaW4pOgorICAgICAgICAqIFdlYkdQ
VS9UZXh0dXJlLmg6CisgICAgICAgICogV2ViR1BVL1RleHR1cmUubW06CisgICAgICAgIChXZWJH
UFU6OkRldmljZTo6Y3JlYXRlVGV4dHVyZSk6CisgICAgICAgIChXZWJHUFU6OlRleHR1cmU6OmNy
ZWF0ZVZpZXcpOgorCiAyMDIyLTA0LTA3ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBh
cHBsZS5jb20+CiAKICAgICAgICAgW1dlYkdQVV0gQWRkIHN1cHBvcnQgZm9yIHRoZSAiaXMgdmFs
aWQgdG8gdXNlIHdpdGgiIG9wZXJhdGlvbiB0byBXZWJHUFUgb2JqZWN0cwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkdQVS9XZWJHUFUvQVBJQ29udmVyc2lvbnMuaCBiL1NvdXJjZS9XZWJHUFUvV2Vi
R1BVL0FQSUNvbnZlcnNpb25zLmgKaW5kZXggZWIxNjhmNTE2ZTRkYzE3MzUyZWY4Njc3M2E3ZmQ3
MzQ0NzYzNzI0ZC4uNWViYTcwNDUyMDFjOWJiNjE2ODJhN2U5NmYyMDUxMWEyM2I0MWJjMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUvQVBJQ29udmVyc2lvbnMuaAorKysgYi9Tb3Vy
Y2UvV2ViR1BVL1dlYkdQVS9BUElDb252ZXJzaW9ucy5oCkBAIC0xNzUsOSArMTc1LDkgQEAgaW5s
aW5lIFN0cmluZyBmcm9tQVBJKGNvbnN0IGNoYXIqIHN0cmluZykKIH0KIAogdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+Ci1pbmxpbmUgVCogcmVsZWFzZVRvQVBJKFJlZlB0cjxUPiYmIHBvaW50ZXIpCitp
bmxpbmUgVCogcmVsZWFzZVRvQVBJKFJlZjxUPiYmIHBvaW50ZXIpCiB7Ci0gICAgcmV0dXJuIHBv
aW50ZXIubGVha1JlZigpOworICAgIHJldHVybiAmcG9pbnRlci5sZWFrUmVmKCk7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkdQVQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvQWRh
cHRlci5oIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQWRhcHRlci5oCmluZGV4IDgxYTJiNGQ0YjE4
OTkyYmJmYzAyZGJhMzJkMmFkYjFhMjE0ZTM4NDcuLjNjZjFhOTViODc5NzE0ZGZiYjllNGRkNjU4
NGNjNjkyNmQ1NjY3MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0FkYXB0ZXIu
aAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9BZGFwdGVyLmgKQEAgLTI5LDcgKzI5LDYgQEAK
ICNpbXBvcnQgPHd0Zi9GYXN0TWFsbG9jLmg+CiAjaW1wb3J0IDx3dGYvUmVmLmg+CiAjaW1wb3J0
IDx3dGYvUmVmQ291bnRlZC5oPgotI2ltcG9ydCA8d3RmL1JlZlB0ci5oPgogCiBzdHJ1Y3QgV0dQ
VUFkYXB0ZXJJbXBsIHsKIH07CkBAIC01OCw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICBib29sIGdl
dExpbWl0cyhXR1BVU3VwcG9ydGVkTGltaXRzJik7CiAgICAgdm9pZCBnZXRQcm9wZXJ0aWVzKFdH
UFVBZGFwdGVyUHJvcGVydGllcyYpOwogICAgIGJvb2wgaGFzRmVhdHVyZShXR1BVRmVhdHVyZU5h
bWUpOwotICAgIHZvaWQgcmVxdWVzdERldmljZShjb25zdCBXR1BVRGV2aWNlRGVzY3JpcHRvciYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV0dQVVJlcXVlc3REZXZpY2VTdGF0dXMsIFJlZlB0cjxE
ZXZpY2U+JiYsIFN0cmluZyYmKT4mJiBjYWxsYmFjayk7CisgICAgdm9pZCByZXF1ZXN0RGV2aWNl
KGNvbnN0IFdHUFVEZXZpY2VEZXNjcmlwdG9yJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXR1BV
UmVxdWVzdERldmljZVN0YXR1cywgUmVmPERldmljZT4mJiwgU3RyaW5nJiYpPiYmIGNhbGxiYWNr
KTsKIAogICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIG1fZGV2aWNlOyB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0FkYXB0ZXIubW0gYi9Tb3VyY2UvV2ViR1BV
L1dlYkdQVS9BZGFwdGVyLm1tCmluZGV4IDgyOTZlZGZlODA0ODQ0NTM3MmE3MzJmZmUxOTczOGNh
NzAxNWY2ODguLjI5MGQ3YTE5YjAxZDlhNDNjNDZkOGIzNjdkMDcxNzU2ZGY1NTIzNDMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0FkYXB0ZXIubW0KKysrIGIvU291cmNlL1dlYkdQ
VS9XZWJHUFUvQWRhcHRlci5tbQpAQCAtMTExLDIwICsxMTEsMjAgQEAgc3RhdGljIGJvb2wgZGV2
aWNlTWVldHNSZXF1aXJlZExpbWl0cyhpZDxNVExEZXZpY2U+LCBjb25zdCBXR1BVUmVxdWlyZWRM
aW1pdHMmIHIKICAgICAgICAgJiYgIXJlcXVpcmVkTGltaXRzLmxpbWl0cy5tYXhDb21wdXRlV29y
a2dyb3Vwc1BlckRpbWVuc2lvbjsKIH0KIAotdm9pZCBBZGFwdGVyOjpyZXF1ZXN0RGV2aWNlKGNv
bnN0IFdHUFVEZXZpY2VEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFdHUFVSZXF1ZXN0RGV2aWNlU3RhdHVzLCBSZWZQdHI8RGV2aWNlPiYmLCBTdHJpbmcmJik+
JiYgY2FsbGJhY2spCit2b2lkIEFkYXB0ZXI6OnJlcXVlc3REZXZpY2UoY29uc3QgV0dQVURldmlj
ZURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV0dQVVJlcXVl
c3REZXZpY2VTdGF0dXMsIFJlZjxEZXZpY2U+JiYsIFN0cmluZyYmKT4mJiBjYWxsYmFjaykKIHsK
ICAgICBpZiAoZGVzY3JpcHRvci5uZXh0SW5DaGFpbikgewotICAgICAgICBjYWxsYmFjayhXR1BV
UmVxdWVzdERldmljZVN0YXR1c19FcnJvciwgbnVsbHB0ciwgIlVua25vd24gZGVzY3JpcHRvciB0
eXBlIl9zKTsKKyAgICAgICAgY2FsbGJhY2soV0dQVVJlcXVlc3REZXZpY2VTdGF0dXNfRXJyb3Is
IERldmljZTo6Y3JlYXRlSW52YWxpZChtX2luc3RhbmNlKSwgIlVua25vd24gZGVzY3JpcHRvciB0
eXBlIl9zKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmIChkZXNjcmlwdG9yLnJl
cXVpcmVkRmVhdHVyZXNDb3VudCkgewotICAgICAgICBjYWxsYmFjayhXR1BVUmVxdWVzdERldmlj
ZVN0YXR1c19FcnJvciwgbnVsbHB0ciwgIkRldmljZSBkb2VzIG5vdCBzdXBwb3J0IHJlcXVlc3Rl
ZCBmZWF0dXJlcyJfcyk7CisgICAgICAgIGNhbGxiYWNrKFdHUFVSZXF1ZXN0RGV2aWNlU3RhdHVz
X0Vycm9yLCBEZXZpY2U6OmNyZWF0ZUludmFsaWQobV9pbnN0YW5jZSksICJEZXZpY2UgZG9lcyBu
b3Qgc3VwcG9ydCByZXF1ZXN0ZWQgZmVhdHVyZXMiX3MpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCiAgICAgaWYgKGRlc2NyaXB0b3IucmVxdWlyZWRMaW1pdHMgJiYgIWRldmljZU1lZXRzUmVx
dWlyZWRMaW1pdHMobV9kZXZpY2UsICpkZXNjcmlwdG9yLnJlcXVpcmVkTGltaXRzKSkgewotICAg
ICAgICBjYWxsYmFjayhXR1BVUmVxdWVzdERldmljZVN0YXR1c19FcnJvciwgbnVsbHB0ciwgIkRl
dmljZSBkb2VzIG5vdCBzdXBwb3J0IHJlcXVlc3RlZCBsaW1pdHMiX3MpOworICAgICAgICBjYWxs
YmFjayhXR1BVUmVxdWVzdERldmljZVN0YXR1c19FcnJvciwgRGV2aWNlOjpjcmVhdGVJbnZhbGlk
KG1faW5zdGFuY2UpLCAiRGV2aWNlIGRvZXMgbm90IHN1cHBvcnQgcmVxdWVzdGVkIGxpbWl0cyJf
cyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTE2MiwxNCArMTYyLDE0IEBAIGJvb2wg
d2dwdUFkYXB0ZXJIYXNGZWF0dXJlKFdHUFVBZGFwdGVyIGFkYXB0ZXIsIFdHUFVGZWF0dXJlTmFt
ZSBmZWF0dXJlKQogCiB2b2lkIHdncHVBZGFwdGVyUmVxdWVzdERldmljZShXR1BVQWRhcHRlciBh
ZGFwdGVyLCBjb25zdCBXR1BVRGV2aWNlRGVzY3JpcHRvciogZGVzY3JpcHRvciwgV0dQVVJlcXVl
c3REZXZpY2VDYWxsYmFjayBjYWxsYmFjaywgdm9pZCogdXNlcmRhdGEpCiB7Ci0gICAgV2ViR1BV
Ojpmcm9tQVBJKGFkYXB0ZXIpLnJlcXVlc3REZXZpY2UoKmRlc2NyaXB0b3IsIFtjYWxsYmFjaywg
dXNlcmRhdGFdKFdHUFVSZXF1ZXN0RGV2aWNlU3RhdHVzIHN0YXR1cywgUmVmUHRyPFdlYkdQVTo6
RGV2aWNlPiYmIGRldmljZSwgU3RyaW5nJiYgbWVzc2FnZSkgeworICAgIFdlYkdQVTo6ZnJvbUFQ
SShhZGFwdGVyKS5yZXF1ZXN0RGV2aWNlKCpkZXNjcmlwdG9yLCBbY2FsbGJhY2ssIHVzZXJkYXRh
XShXR1BVUmVxdWVzdERldmljZVN0YXR1cyBzdGF0dXMsIFJlZjxXZWJHUFU6OkRldmljZT4mJiBk
ZXZpY2UsIFN0cmluZyYmIG1lc3NhZ2UpIHsKICAgICAgICAgY2FsbGJhY2soc3RhdHVzLCBXZWJH
UFU6OnJlbGVhc2VUb0FQSShXVEZNb3ZlKGRldmljZSkpLCBtZXNzYWdlLnV0ZjgoKS5kYXRhKCks
IHVzZXJkYXRhKTsKICAgICB9KTsKIH0KIAogdm9pZCB3Z3B1QWRhcHRlclJlcXVlc3REZXZpY2VX
aXRoQmxvY2soV0dQVUFkYXB0ZXIgYWRhcHRlciwgV0dQVURldmljZURlc2NyaXB0b3IgY29uc3Qg
KiBkZXNjcmlwdG9yLCBXR1BVUmVxdWVzdERldmljZUJsb2NrQ2FsbGJhY2sgY2FsbGJhY2spCiB7
Ci0gICAgV2ViR1BVOjpmcm9tQVBJKGFkYXB0ZXIpLnJlcXVlc3REZXZpY2UoKmRlc2NyaXB0b3Is
IFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShXR1BVUmVxdWVzdERldmljZVN0YXR1cyBz
dGF0dXMsIFJlZlB0cjxXZWJHUFU6OkRldmljZT4mJiBkZXZpY2UsIFN0cmluZyYmIG1lc3NhZ2Up
IHsKKyAgICBXZWJHUFU6OmZyb21BUEkoYWRhcHRlcikucmVxdWVzdERldmljZSgqZGVzY3JpcHRv
ciwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKFdHUFVSZXF1ZXN0RGV2aWNlU3RhdHVz
IHN0YXR1cywgUmVmPFdlYkdQVTo6RGV2aWNlPiYmIGRldmljZSwgU3RyaW5nJiYgbWVzc2FnZSkg
ewogICAgICAgICBjYWxsYmFjayhzdGF0dXMsIFdlYkdQVTo6cmVsZWFzZVRvQVBJKFdURk1vdmUo
ZGV2aWNlKSksIG1lc3NhZ2UudXRmOCgpLmRhdGEoKSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9CaW5kR3JvdXAubW0gYi9Tb3VyY2UvV2ViR1BVL1dlYkdQ
VS9CaW5kR3JvdXAubW0KaW5kZXggZTViYjIxODFjYjZiMzNhNTVlNjA3NjM1MTNhZmUwZDQzZjg3
NzNjYy4uMThiNGU4ZDE4NzQ4ODJjNzZjODI4ODE1ZTUyY2NkM2I3MTRmOWUzOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvQmluZEdyb3VwLm1tCisrKyBiL1NvdXJjZS9XZWJHUFUv
V2ViR1BVL0JpbmRHcm91cC5tbQpAQCAtNTAsMTAgKzUwLDEwIEBAIHN0YXRpYyBib29sIHRleHR1
cmVWaWV3SXNQcmVzZW50KGNvbnN0IFdHUFVCaW5kR3JvdXBFbnRyeSYgZW50cnkpCiAgICAgcmV0
dXJuIGVudHJ5LnRleHR1cmVWaWV3OwogfQogCi1SZWZQdHI8QmluZEdyb3VwPiBEZXZpY2U6OmNy
ZWF0ZUJpbmRHcm91cChjb25zdCBXR1BVQmluZEdyb3VwRGVzY3JpcHRvciYgZGVzY3JpcHRvcikK
K1JlZjxCaW5kR3JvdXA+IERldmljZTo6Y3JlYXRlQmluZEdyb3VwKGNvbnN0IFdHUFVCaW5kR3Jv
dXBEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogewogICAgIGlmIChkZXNjcmlwdG9yLm5leHRJbkNo
YWluKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIEJpbmRHcm91cDo6
Y3JlYXRlSW52YWxpZCgqdGhpcyk7CiAKICAgICBjb25zdCBCaW5kR3JvdXBMYXlvdXQmIGJpbmRH
cm91cExheW91dCA9IFdlYkdQVTo6ZnJvbUFQSShkZXNjcmlwdG9yLmxheW91dCk7CiAKQEAgLTYz
LDcgKzYzLDcgQEAgUmVmUHRyPEJpbmRHcm91cD4gRGV2aWNlOjpjcmVhdGVCaW5kR3JvdXAoY29u
c3QgV0dQVUJpbmRHcm91cERlc2NyaXB0b3ImIGRlc2NyaXAKICAgICBpZDxNVExCdWZmZXI+IGZy
YWdtZW50QXJndW1lbnRCdWZmZXIgPSBzYWZlQ3JlYXRlQnVmZmVyKGJpbmRHcm91cExheW91dC5l
bmNvZGVkTGVuZ3RoKCksIE1UTFN0b3JhZ2VNb2RlU2hhcmVkKTsKICAgICBpZDxNVExCdWZmZXI+
IGNvbXB1dGVBcmd1bWVudEJ1ZmZlciA9IHNhZmVDcmVhdGVCdWZmZXIoYmluZEdyb3VwTGF5b3V0
LmVuY29kZWRMZW5ndGgoKSwgTVRMU3RvcmFnZU1vZGVTaGFyZWQpOwogICAgIGlmICghdmVydGV4
QXJndW1lbnRCdWZmZXIgfHwgIWZyYWdtZW50QXJndW1lbnRCdWZmZXIgfHwgIWNvbXB1dGVBcmd1
bWVudEJ1ZmZlcikKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBCaW5k
R3JvdXA6OmNyZWF0ZUludmFsaWQoKnRoaXMpOwogCiAgICAgYXV0byBsYWJlbCA9IGZyb21BUEko
ZGVzY3JpcHRvci5sYWJlbCk7CiAgICAgdmVydGV4QXJndW1lbnRCdWZmZXIubGFiZWwgPSBsYWJl
bDsKQEAgLTgxLDEzICs4MSwxMyBAQCBSZWZQdHI8QmluZEdyb3VwPiBEZXZpY2U6OmNyZWF0ZUJp
bmRHcm91cChjb25zdCBXR1BVQmluZEdyb3VwRGVzY3JpcHRvciYgZGVzY3JpcAogICAgICAgICBj
b25zdCBXR1BVQmluZEdyb3VwRW50cnkmIGVudHJ5ID0gZGVzY3JpcHRvci5lbnRyaWVzW2ldOwog
CiAgICAgICAgIGlmIChlbnRyeS5uZXh0SW5DaGFpbikKLSAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOworICAgICAgICAgICAgcmV0dXJuIEJpbmRHcm91cDo6Y3JlYXRlSW52YWxpZCgqdGhpcyk7
CiAKICAgICAgICAgYm9vbCBidWZmZXJJc1ByZXNlbnQgPSBXZWJHUFU6OmJ1ZmZlcklzUHJlc2Vu
dChlbnRyeSk7CiAgICAgICAgIGJvb2wgc2FtcGxlcklzUHJlc2VudCA9IFdlYkdQVTo6c2FtcGxl
cklzUHJlc2VudChlbnRyeSk7CiAgICAgICAgIGJvb2wgdGV4dHVyZVZpZXdJc1ByZXNlbnQgPSBX
ZWJHUFU6OnRleHR1cmVWaWV3SXNQcmVzZW50KGVudHJ5KTsKICAgICAgICAgaWYgKHN0YXRpY19j
YXN0PGludD4oYnVmZmVySXNQcmVzZW50KSArIHN0YXRpY19jYXN0PGludD4oc2FtcGxlcklzUHJl
c2VudCkgKyBzdGF0aWNfY2FzdDxpbnQ+KHRleHR1cmVWaWV3SXNQcmVzZW50KSAhPSAxKQotICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgICAgICByZXR1cm4gQmluZEdyb3VwOjpj
cmVhdGVJbnZhbGlkKCp0aGlzKTsKIAogICAgICAgICBpZiAoYnVmZmVySXNQcmVzZW50KSB7CiAg
ICAgICAgICAgICBpZDxNVExCdWZmZXI+IGJ1ZmZlciA9IFdlYkdQVTo6ZnJvbUFQSShlbnRyeS5i
dWZmZXIpLmJ1ZmZlcigpOwpAQCAtMTA3LDcgKzEwNyw3IEBAIFJlZlB0cjxCaW5kR3JvdXA+IERl
dmljZTo6Y3JlYXRlQmluZEdyb3VwKGNvbnN0IFdHUFVCaW5kR3JvdXBEZXNjcmlwdG9yJiBkZXNj
cmlwCiAgICAgICAgICAgICBbY29tcHV0ZUFyZ3VtZW50RW5jb2RlciBzZXRUZXh0dXJlOnRleHR1
cmUgYXRJbmRleDplbnRyeS5iaW5kaW5nXTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
ICAgICAgICByZXR1cm4gQmluZEdyb3VwOjpjcmVhdGVJbnZhbGlkKCp0aGlzKTsKICAgICAgICAg
fQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvQmluZEdyb3VwTGF5
b3V0Lm1tIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQmluZEdyb3VwTGF5b3V0Lm1tCmluZGV4IDA2
YTI4Y2UwNmZkNWMzZjFlMDYxMmY5ZTY1Y2IwZmEyNTBhYWMxYzguLjY3NjgzMGM0YzRhYmZjN2Rj
NjI5ZjYyYmViZTM4OWM0Nzg0NGEyODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BV
L0JpbmRHcm91cExheW91dC5tbQorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9CaW5kR3JvdXBM
YXlvdXQubW0KQEAgLTExNSwyMSArMTE1LDIxIEBAIHN0YXRpYyBNVExBcmd1bWVudERlc2NyaXB0
b3IgKmNyZWF0ZUFyZ3VtZW50RGVzY3JpcHRvcihjb25zdCBXR1BVU3RvcmFnZVRleHR1cmVCCiAg
ICAgcmV0dXJuIGRlc2NyaXB0b3I7CiB9CiAKLVJlZlB0cjxCaW5kR3JvdXBMYXlvdXQ+IERldmlj
ZTo6Y3JlYXRlQmluZEdyb3VwTGF5b3V0KGNvbnN0IFdHUFVCaW5kR3JvdXBMYXlvdXREZXNjcmlw
dG9yJiBkZXNjcmlwdG9yKQorUmVmPEJpbmRHcm91cExheW91dD4gRGV2aWNlOjpjcmVhdGVCaW5k
R3JvdXBMYXlvdXQoY29uc3QgV0dQVUJpbmRHcm91cExheW91dERlc2NyaXB0b3ImIGRlc2NyaXB0
b3IpCiB7CiAgICAgaWYgKGRlc2NyaXB0b3IubmV4dEluQ2hhaW4pCi0gICAgICAgIHJldHVybiBu
dWxscHRyOworICAgICAgICByZXR1cm4gQmluZEdyb3VwTGF5b3V0OjpjcmVhdGVJbnZhbGlkKCp0
aGlzKTsKIAogICAgIE5TTXV0YWJsZUFycmF5PE1UTEFyZ3VtZW50RGVzY3JpcHRvciAqPiAqdmVy
dGV4QXJndW1lbnRzID0gW05TTXV0YWJsZUFycmF5IGFycmF5V2l0aENhcGFjaXR5OmRlc2NyaXB0
b3IuZW50cnlDb3VudF07CiAgICAgTlNNdXRhYmxlQXJyYXk8TVRMQXJndW1lbnREZXNjcmlwdG9y
ICo+ICpmcmFnbWVudEFyZ3VtZW50cyA9IFtOU011dGFibGVBcnJheSBhcnJheVdpdGhDYXBhY2l0
eTpkZXNjcmlwdG9yLmVudHJ5Q291bnRdOwogICAgIE5TTXV0YWJsZUFycmF5PE1UTEFyZ3VtZW50
RGVzY3JpcHRvciAqPiAqY29tcHV0ZUFyZ3VtZW50cyA9IFtOU011dGFibGVBcnJheSBhcnJheVdp
dGhDYXBhY2l0eTpkZXNjcmlwdG9yLmVudHJ5Q291bnRdOwogICAgIGlmICghdmVydGV4QXJndW1l
bnRzIHx8ICFmcmFnbWVudEFyZ3VtZW50cyB8fCAhY29tcHV0ZUFyZ3VtZW50cykKLSAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBCaW5kR3JvdXBMYXlvdXQ6OmNyZWF0ZUlu
dmFsaWQoKnRoaXMpOwogCiAgICAgZm9yICh1aW50MzJfdCBpID0gMDsgaSA8IGRlc2NyaXB0b3Iu
ZW50cnlDb3VudDsgKytpKSB7CiAgICAgICAgIGNvbnN0IFdHUFVCaW5kR3JvdXBMYXlvdXRFbnRy
eSYgZW50cnkgPSBkZXNjcmlwdG9yLmVudHJpZXNbaV07CiAgICAgICAgIGlmIChlbnRyeS5uZXh0
SW5DaGFpbikKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICAgICAgcmV0dXJu
IEJpbmRHcm91cExheW91dDo6Y3JlYXRlSW52YWxpZCgqdGhpcyk7CiAKICAgICAgICAgLy8gaHR0
cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYi8jZGljdGRlZi1ncHViaW5kZ3JvdXBsYXlvdXRl
bnRyeQogICAgICAgICAvLyAiT25seSBvbmUgW29mIGJ1ZmZlciwgc2FtcGxlciwgdGV4dHVyZSwg
c3RvcmFnZVRleHR1cmUsIG9yIGV4dGVybmFsVGV4dHVyZV0gbWF5IGJlIGRlZmluZWQgZm9yIGFu
eSBnaXZlbiBHUFVCaW5kR3JvdXBMYXlvdXRFbnRyeS4iCkBAIC0xNDcsMzggKzE0NywzOCBAQCBS
ZWZQdHI8QmluZEdyb3VwTGF5b3V0PiBEZXZpY2U6OmNyZWF0ZUJpbmRHcm91cExheW91dChjb25z
dCBXR1BVQmluZEdyb3VwTGF5b3V0RAogCiAgICAgICAgIGlmIChpc1ByZXNlbnQoYnVmZmVyKSkg
ewogICAgICAgICAgICAgaWYgKGkgIT0gdmVydGV4QXJndW1lbnRzLmNvdW50KQotICAgICAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICAgICAgICAgIHJldHVybiBCaW5kR3JvdXBM
YXlvdXQ6OmNyZWF0ZUludmFsaWQoKnRoaXMpOwogCiAgICAgICAgICAgICBkZXNjcmlwdG9yID0g
Y3JlYXRlQXJndW1lbnREZXNjcmlwdG9yKGJ1ZmZlcik7CiAgICAgICAgICAgICBpZiAoIWRlc2Ny
aXB0b3IpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgICAgICAgICAg
cmV0dXJuIEJpbmRHcm91cExheW91dDo6Y3JlYXRlSW52YWxpZCgqdGhpcyk7CiAgICAgICAgIH0K
IAogICAgICAgICBpZiAoaXNQcmVzZW50KHNhbXBsZXIpKSB7CiAgICAgICAgICAgICBpZiAoaSAh
PSB2ZXJ0ZXhBcmd1bWVudHMuY291bnQpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgICAgICAgICAgICAgcmV0dXJuIEJpbmRHcm91cExheW91dDo6Y3JlYXRlSW52YWxpZCgq
dGhpcyk7CiAKICAgICAgICAgICAgIGRlc2NyaXB0b3IgPSBjcmVhdGVBcmd1bWVudERlc2NyaXB0
b3Ioc2FtcGxlcik7CiAgICAgICAgICAgICBpZiAoIWRlc2NyaXB0b3IpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgICAgICAgICAgcmV0dXJuIEJpbmRHcm91cExheW91
dDo6Y3JlYXRlSW52YWxpZCgqdGhpcyk7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoaXNQcmVz
ZW50KHRleHR1cmUpKSB7CiAgICAgICAgICAgICBpZiAoaSAhPSB2ZXJ0ZXhBcmd1bWVudHMuY291
bnQpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgICAgICAgICAgcmV0
dXJuIEJpbmRHcm91cExheW91dDo6Y3JlYXRlSW52YWxpZCgqdGhpcyk7CiAKICAgICAgICAgICAg
IGRlc2NyaXB0b3IgPSBjcmVhdGVBcmd1bWVudERlc2NyaXB0b3IodGV4dHVyZSk7CiAgICAgICAg
ICAgICBpZiAoIWRlc2NyaXB0b3IpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIEJpbmRHcm91cExheW91dDo6Y3JlYXRlSW52YWxpZCgqdGhp
cyk7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoaXNQcmVzZW50KHN0b3JhZ2VUZXh0dXJlKSkg
ewogICAgICAgICAgICAgaWYgKGkgIT0gdmVydGV4QXJndW1lbnRzLmNvdW50KQotICAgICAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICAgICAgICAgIHJldHVybiBCaW5kR3JvdXBM
YXlvdXQ6OmNyZWF0ZUludmFsaWQoKnRoaXMpOwogCiAgICAgICAgICAgICBkZXNjcmlwdG9yID0g
Y3JlYXRlQXJndW1lbnREZXNjcmlwdG9yKHN0b3JhZ2VUZXh0dXJlKTsKICAgICAgICAgICAgIGlm
ICghZGVzY3JpcHRvcikKLSAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gQmluZEdyb3VwTGF5b3V0OjpjcmVhdGVJbnZhbGlkKCp0aGlzKTsKICAg
ICAgICAgfQogCiAgICAgICAgIC8vIEZJWE1FOiBUaGlzIG5lZWRzIGNvb3JkaW5hdGlvbiB3aXRo
IHRoZSBzaGFkZXIgY29tcGlsZXIuCkBAIC0xODgsNyArMTg4LDcgQEAgUmVmUHRyPEJpbmRHcm91
cExheW91dD4gRGV2aWNlOjpjcmVhdGVCaW5kR3JvdXBMYXlvdXQoY29uc3QgV0dQVUJpbmRHcm91
cExheW91dEQKICAgICAgICAgTVRMQXJndW1lbnREZXNjcmlwdG9yICpmcmFnbWVudERlc2NyaXB0
b3IgPSBbZGVzY3JpcHRvciBjb3B5XTsKICAgICAgICAgTVRMQXJndW1lbnREZXNjcmlwdG9yICpj
b21wdXRlRGVzY3JpcHRvciA9IFtkZXNjcmlwdG9yIGNvcHldOwogICAgICAgICBpZiAoIWZyYWdt
ZW50RGVzY3JpcHRvciB8fCAhY29tcHV0ZURlc2NyaXB0b3IpCi0gICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICAgICAgICAgIHJldHVybiBCaW5kR3JvdXBMYXlvdXQ6OmNyZWF0ZUludmFs
aWQoKnRoaXMpOwogCiAgICAgICAgIGlmICghKGVudHJ5LnZpc2liaWxpdHkgJiBXR1BVU2hhZGVy
U3RhZ2VfVmVydGV4KSkKICAgICAgICAgICAgIHZlcnRleERlc2NyaXB0b3IuYWNjZXNzID0gTVRM
QXJndW1lbnRBY2Nlc3NSZWFkT25seTsKQEAgLTIwNiw3ICsyMDYsNyBAQCBSZWZQdHI8QmluZEdy
b3VwTGF5b3V0PiBEZXZpY2U6OmNyZWF0ZUJpbmRHcm91cExheW91dChjb25zdCBXR1BVQmluZEdy
b3VwTGF5b3V0RAogICAgIGlkPE1UTEFyZ3VtZW50RW5jb2Rlcj4gZnJhZ21lbnRBcmd1bWVudEVu
Y29kZXIgPSBbbV9kZXZpY2UgbmV3QXJndW1lbnRFbmNvZGVyV2l0aEFyZ3VtZW50czpmcmFnbWVu
dEFyZ3VtZW50c107CiAgICAgaWQ8TVRMQXJndW1lbnRFbmNvZGVyPiBjb21wdXRlQXJndW1lbnRF
bmNvZGVyID0gW21fZGV2aWNlIG5ld0FyZ3VtZW50RW5jb2RlcldpdGhBcmd1bWVudHM6Y29tcHV0
ZUFyZ3VtZW50c107CiAgICAgaWYgKCF2ZXJ0ZXhBcmd1bWVudEVuY29kZXIgfHwgIWZyYWdtZW50
QXJndW1lbnRFbmNvZGVyIHx8ICFjb21wdXRlQXJndW1lbnRFbmNvZGVyKQotICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIEJpbmRHcm91cExheW91dDo6Y3JlYXRlSW52YWxp
ZCgqdGhpcyk7CiAKICAgICBhdXRvIGxhYmVsID0gZnJvbUFQSShkZXNjcmlwdG9yLmxhYmVsKTsK
ICAgICB2ZXJ0ZXhBcmd1bWVudEVuY29kZXIubGFiZWwgPSBsYWJlbDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJHUFUvV2ViR1BVL0J1ZmZlci5tbSBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0J1ZmZl
ci5tbQppbmRleCBlOGUzYWE5OGY3NjIxYmE0YmQ5NTFiMGUxY2Y1MzhjZGY1YzFkYjBkLi43YzQx
ZDQwMGY3Mzk5YmFlMjdjMjFkMWMzY2RiMDhlOGJmY2Y5YWMyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViR1BVL1dlYkdQVS9CdWZmZXIubW0KKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQnVmZmVy
Lm1tCkBAIC05OSwyMiArOTksMjIgQEAgaWQ8TVRMQnVmZmVyPiBEZXZpY2U6OnNhZmVDcmVhdGVC
dWZmZXIoTlNVSW50ZWdlciBsZW5ndGgsIE1UTFN0b3JhZ2VNb2RlIHN0b3JhZ2UKICAgICByZXR1
cm4gW21fZGV2aWNlIG5ld0J1ZmZlcldpdGhMZW5ndGg6c3RkOjptYXgoc3RhdGljX2Nhc3Q8TlNV
SW50ZWdlcj4oMSksIGxlbmd0aCkgb3B0aW9uczpyZXNvdXJjZU9wdGlvbnNdOwogfQogCi1SZWZQ
dHI8QnVmZmVyPiBEZXZpY2U6OmNyZWF0ZUJ1ZmZlcihjb25zdCBXR1BVQnVmZmVyRGVzY3JpcHRv
ciYgZGVzY3JpcHRvcikKK1JlZjxCdWZmZXI+IERldmljZTo6Y3JlYXRlQnVmZmVyKGNvbnN0IFdH
UFVCdWZmZXJEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogewogICAgIGlmIChkZXNjcmlwdG9yLm5l
eHRJbkNoYWluKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIEJ1ZmZl
cjo6Y3JlYXRlSW52YWxpZCgqdGhpcyk7CiAKICAgICAvLyBodHRwczovL2dwdXdlYi5naXRodWIu
aW8vZ3B1d2ViLyNkb20tZ3B1ZGV2aWNlLWNyZWF0ZWJ1ZmZlcgogCiAgICAgaWYgKCF2YWxpZGF0
ZUNyZWF0ZUJ1ZmZlcigqdGhpcywgZGVzY3JpcHRvcikpCi0gICAgICAgIHJldHVybiBudWxscHRy
OworICAgICAgICByZXR1cm4gQnVmZmVyOjpjcmVhdGVJbnZhbGlkKCp0aGlzKTsKIAogICAgIC8v
IEZJWE1FKFBFUkZPUk1BTkNFKTogQ29uc2lkZXIgd3JpdGUtY29tYmluaW5nIENQVSBjYWNoZSBt
b2RlLgogICAgIC8vIEZJWE1FKFBFUkZPUk1BTkNFKTogQ29uc2lkZXIgaW1wbGVtZW50aW5nIGhh
emFyZCB0cmFja2luZyBvdXJzZWxmLgogICAgIE1UTFN0b3JhZ2VNb2RlIHN0b3JhZ2VNb2RlID0g
V2ViR1BVOjpzdG9yYWdlTW9kZShoYXNVbmlmaWVkTWVtb3J5KCksIGRlc2NyaXB0b3IudXNhZ2Us
IGRlc2NyaXB0b3IubWFwcGVkQXRDcmVhdGlvbik7CiAgICAgYXV0byBidWZmZXIgPSBzYWZlQ3Jl
YXRlQnVmZmVyKHN0YXRpY19jYXN0PE5TVUludGVnZXI+KGRlc2NyaXB0b3Iuc2l6ZSksIHN0b3Jh
Z2VNb2RlKTsKICAgICBpZiAoIWJ1ZmZlcikKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
ICAgIHJldHVybiBCdWZmZXI6OmNyZWF0ZUludmFsaWQoKnRoaXMpOwogCiAgICAgYnVmZmVyLmxh
YmVsID0gZnJvbUFQSShkZXNjcmlwdG9yLmxhYmVsKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkdQVS9XZWJHUFUvQ29tbWFuZEVuY29kZXIuaCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbW1h
bmRFbmNvZGVyLmgKaW5kZXggMjhhNGNhMTUzYjk0OTNlMjA2M2IyMmQzMzJlZDVkMTc5M2M1YTRm
Ni4uODAxMTg5OTM4NGQzYTE3MTYzZGE1Y2MyYmIyMTE1NGRlOWU4MWY4NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkdQVS9XZWJHUFUvQ29tbWFuZEVuY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViR1BV
L1dlYkdQVS9Db21tYW5kRW5jb2Rlci5oCkBAIC0yOSw3ICsyOSw2IEBACiAjaW1wb3J0IDx3dGYv
RmFzdE1hbGxvYy5oPgogI2ltcG9ydCA8d3RmL1JlZi5oPgogI2ltcG9ydCA8d3RmL1JlZkNvdW50
ZWQuaD4KLSNpbXBvcnQgPHd0Zi9SZWZQdHIuaD4KIAogc3RydWN0IFdHUFVDb21tYW5kRW5jb2Rl
ckltcGwgewogfTsKQEAgLTU4LDE0ICs1NywxNCBAQCBwdWJsaWM6CiAKICAgICB+Q29tbWFuZEVu
Y29kZXIoKTsKIAotICAgIFJlZlB0cjxDb21wdXRlUGFzc0VuY29kZXI+IGJlZ2luQ29tcHV0ZVBh
c3MoY29uc3QgV0dQVUNvbXB1dGVQYXNzRGVzY3JpcHRvciYpOwotICAgIFJlZlB0cjxSZW5kZXJQ
YXNzRW5jb2Rlcj4gYmVnaW5SZW5kZXJQYXNzKGNvbnN0IFdHUFVSZW5kZXJQYXNzRGVzY3JpcHRv
ciYpOworICAgIFJlZjxDb21wdXRlUGFzc0VuY29kZXI+IGJlZ2luQ29tcHV0ZVBhc3MoY29uc3Qg
V0dQVUNvbXB1dGVQYXNzRGVzY3JpcHRvciYpOworICAgIFJlZjxSZW5kZXJQYXNzRW5jb2Rlcj4g
YmVnaW5SZW5kZXJQYXNzKGNvbnN0IFdHUFVSZW5kZXJQYXNzRGVzY3JpcHRvciYpOwogICAgIHZv
aWQgY29weUJ1ZmZlclRvQnVmZmVyKGNvbnN0IEJ1ZmZlciYgc291cmNlLCB1aW50NjRfdCBzb3Vy
Y2VPZmZzZXQsIGNvbnN0IEJ1ZmZlciYgZGVzdGluYXRpb24sIHVpbnQ2NF90IGRlc3RpbmF0aW9u
T2Zmc2V0LCB1aW50NjRfdCBzaXplKTsKICAgICB2b2lkIGNvcHlCdWZmZXJUb1RleHR1cmUoY29u
c3QgV0dQVUltYWdlQ29weUJ1ZmZlciYgc291cmNlLCBjb25zdCBXR1BVSW1hZ2VDb3B5VGV4dHVy
ZSYgZGVzdGluYXRpb24sIGNvbnN0IFdHUFVFeHRlbnQzRCYgY29weVNpemUpOwogICAgIHZvaWQg
Y29weVRleHR1cmVUb0J1ZmZlcihjb25zdCBXR1BVSW1hZ2VDb3B5VGV4dHVyZSYgc291cmNlLCBj
b25zdCBXR1BVSW1hZ2VDb3B5QnVmZmVyJiBkZXN0aW5hdGlvbiwgY29uc3QgV0dQVUV4dGVudDNE
JiBjb3B5U2l6ZSk7CiAgICAgdm9pZCBjb3B5VGV4dHVyZVRvVGV4dHVyZShjb25zdCBXR1BVSW1h
Z2VDb3B5VGV4dHVyZSYgc291cmNlLCBjb25zdCBXR1BVSW1hZ2VDb3B5VGV4dHVyZSYgZGVzdGlu
YXRpb24sIGNvbnN0IFdHUFVFeHRlbnQzRCYgY29weVNpemUpOwogICAgIHZvaWQgY2xlYXJCdWZm
ZXIoY29uc3QgQnVmZmVyJiwgdWludDY0X3Qgb2Zmc2V0LCB1aW50NjRfdCBzaXplKTsKLSAgICBS
ZWZQdHI8Q29tbWFuZEJ1ZmZlcj4gZmluaXNoKGNvbnN0IFdHUFVDb21tYW5kQnVmZmVyRGVzY3Jp
cHRvciYpOworICAgIFJlZjxDb21tYW5kQnVmZmVyPiBmaW5pc2goY29uc3QgV0dQVUNvbW1hbmRC
dWZmZXJEZXNjcmlwdG9yJik7CiAgICAgdm9pZCBpbnNlcnREZWJ1Z01hcmtlcihTdHJpbmcmJiBt
YXJrZXJMYWJlbCk7CiAgICAgdm9pZCBwb3BEZWJ1Z0dyb3VwKCk7CiAgICAgdm9pZCBwdXNoRGVi
dWdHcm91cChTdHJpbmcmJiBncm91cExhYmVsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUv
V2ViR1BVL0NvbW1hbmRFbmNvZGVyLm1tIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tbWFuZEVu
Y29kZXIubW0KaW5kZXggZTExY2VjNGQ2ZTBhYjY4NzIwZjBlMmRlYjEwNWU3NWU2Mzg3ZTZhYy4u
OGM0NTM5YTY3NzA2MTEyYjQ3OTMxMTMwNjc0MjRjN2YwMzA0ZjBlMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkdQVS9XZWJHUFUvQ29tbWFuZEVuY29kZXIubW0KKysrIGIvU291cmNlL1dlYkdQVS9X
ZWJHUFUvQ29tbWFuZEVuY29kZXIubW0KQEAgLTM3LDEwICszNywxMCBAQAogCiBuYW1lc3BhY2Ug
V2ViR1BVIHsKIAotUmVmUHRyPENvbW1hbmRFbmNvZGVyPiBEZXZpY2U6OmNyZWF0ZUNvbW1hbmRF
bmNvZGVyKGNvbnN0IFdHUFVDb21tYW5kRW5jb2RlckRlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCitS
ZWY8Q29tbWFuZEVuY29kZXI+IERldmljZTo6Y3JlYXRlQ29tbWFuZEVuY29kZXIoY29uc3QgV0dQ
VUNvbW1hbmRFbmNvZGVyRGVzY3JpcHRvciYgZGVzY3JpcHRvcikKIHsKICAgICBpZiAoZGVzY3Jp
cHRvci5uZXh0SW5DaGFpbikKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVy
biBDb21tYW5kRW5jb2Rlcjo6Y3JlYXRlSW52YWxpZCgqdGhpcyk7CiAKICAgICAvLyBodHRwczov
L2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViLyNkb20tZ3B1ZGV2aWNlLWNyZWF0ZWNvbW1hbmRlbmNv
ZGVyCiAKQEAgLTQ4LDcgKzQ4LDcgQEAgUmVmUHRyPENvbW1hbmRFbmNvZGVyPiBEZXZpY2U6OmNy
ZWF0ZUNvbW1hbmRFbmNvZGVyKGNvbnN0IFdHUFVDb21tYW5kRW5jb2RlckRlc2MKICAgICBjb21t
YW5kQnVmZmVyRGVzY3JpcHRvci5lcnJvck9wdGlvbnMgPSBNVExDb21tYW5kQnVmZmVyRXJyb3JP
cHRpb25FbmNvZGVyRXhlY3V0aW9uU3RhdHVzOwogICAgIGlkPE1UTENvbW1hbmRCdWZmZXI+IGNv
bW1hbmRCdWZmZXIgPSBbZ2V0UXVldWUoKS5jb21tYW5kUXVldWUoKSBjb21tYW5kQnVmZmVyV2l0
aERlc2NyaXB0b3I6Y29tbWFuZEJ1ZmZlckRlc2NyaXB0b3JdOwogICAgIGlmICghY29tbWFuZEJ1
ZmZlcikKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBDb21tYW5kRW5j
b2Rlcjo6Y3JlYXRlSW52YWxpZCgqdGhpcyk7CiAKICAgICBjb21tYW5kQnVmZmVyLmxhYmVsID0g
ZnJvbUFQSShkZXNjcmlwdG9yLmxhYmVsKTsKIApAQCAtODUsMTYgKzg1LDE2IEBAIHZvaWQgQ29t
bWFuZEVuY29kZXI6OmZpbmFsaXplQmxpdENvbW1hbmRFbmNvZGVyKCkKICAgICB9CiB9CiAKLVJl
ZlB0cjxDb21wdXRlUGFzc0VuY29kZXI+IENvbW1hbmRFbmNvZGVyOjpiZWdpbkNvbXB1dGVQYXNz
KGNvbnN0IFdHUFVDb21wdXRlUGFzc0Rlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCitSZWY8Q29tcHV0
ZVBhc3NFbmNvZGVyPiBDb21tYW5kRW5jb2Rlcjo6YmVnaW5Db21wdXRlUGFzcyhjb25zdCBXR1BV
Q29tcHV0ZVBhc3NEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogewogICAgIFVOVVNFRF9QQVJBTShk
ZXNjcmlwdG9yKTsKLSAgICByZXR1cm4gQ29tcHV0ZVBhc3NFbmNvZGVyOjpjcmVhdGUobmlsLCBt
X2RldmljZSk7CisgICAgcmV0dXJuIENvbXB1dGVQYXNzRW5jb2Rlcjo6Y3JlYXRlSW52YWxpZCht
X2RldmljZSk7CiB9CiAKLVJlZlB0cjxSZW5kZXJQYXNzRW5jb2Rlcj4gQ29tbWFuZEVuY29kZXI6
OmJlZ2luUmVuZGVyUGFzcyhjb25zdCBXR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3ImIGRlc2NyaXB0
b3IpCitSZWY8UmVuZGVyUGFzc0VuY29kZXI+IENvbW1hbmRFbmNvZGVyOjpiZWdpblJlbmRlclBh
c3MoY29uc3QgV0dQVVJlbmRlclBhc3NEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogewogICAgIFVO
VVNFRF9QQVJBTShkZXNjcmlwdG9yKTsKLSAgICByZXR1cm4gUmVuZGVyUGFzc0VuY29kZXI6OmNy
ZWF0ZShuaWwsIG1fZGV2aWNlKTsKKyAgICByZXR1cm4gUmVuZGVyUGFzc0VuY29kZXI6OmNyZWF0
ZUludmFsaWQobV9kZXZpY2UpOwogfQogCiBzdGF0aWMgYm9vbCB2YWxpZGF0ZUNvcHlCdWZmZXJU
b0J1ZmZlcihjb25zdCBCdWZmZXImIHNvdXJjZSwgdWludDY0X3Qgc291cmNlT2Zmc2V0LCBjb25z
dCBCdWZmZXImIGRlc3RpbmF0aW9uLCB1aW50NjRfdCBkZXN0aW5hdGlvbk9mZnNldCwgdWludDY0
X3Qgc2l6ZSkKQEAgLTczMCwxMCArNzMwLDEwIEBAIGJvb2wgQ29tbWFuZEVuY29kZXI6OnZhbGlk
YXRlRmluaXNoKCkgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotUmVmUHRyPENvbW1hbmRC
dWZmZXI+IENvbW1hbmRFbmNvZGVyOjpmaW5pc2goY29uc3QgV0dQVUNvbW1hbmRCdWZmZXJEZXNj
cmlwdG9yJiBkZXNjcmlwdG9yKQorUmVmPENvbW1hbmRCdWZmZXI+IENvbW1hbmRFbmNvZGVyOjpm
aW5pc2goY29uc3QgV0dQVUNvbW1hbmRCdWZmZXJEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogewog
ICAgIGlmIChkZXNjcmlwdG9yLm5leHRJbkNoYWluKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICAgICAgcmV0dXJuIENvbW1hbmRCdWZmZXI6OmNyZWF0ZUludmFsaWQobV9kZXZpY2UpOwog
CiAgICAgLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYi8jZG9tLWdwdWNvbW1hbmRl
bmNvZGVyLWZpbmlzaAogCkBAIC03NDMsOSArNzQzLDcgQEAgUmVmUHRyPENvbW1hbmRCdWZmZXI+
IENvbW1hbmRFbmNvZGVyOjpmaW5pc2goY29uc3QgV0dQVUNvbW1hbmRCdWZmZXJEZXNjcmlwdG9y
JgogCiAgICAgaWYgKHZhbGlkYXRpb25GYWlsZWQpIHsKICAgICAgICAgbV9kZXZpY2UtPmdlbmVy
YXRlQVZhbGlkYXRpb25FcnJvcigiVmFsaWRhdGlvbiBmYWlsdXJlLiJfcyk7Ci0KLSAgICAgICAg
Ly8gRklYTUU6ICJSZXR1cm4gYSBuZXcgaW52YWxpZCBHUFVDb21tYW5kQnVmZmVyLiIKLSAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBDb21tYW5kQnVmZmVyOjpjcmVhdGVJ
bnZhbGlkKG1fZGV2aWNlKTsKICAgICB9CiAKICAgICBmaW5hbGl6ZUJsaXRDb21tYW5kRW5jb2Rl
cigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tcHV0ZVBpcGVsaW5lLm1t
IGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tcHV0ZVBpcGVsaW5lLm1tCmluZGV4IGE1NWJhNjEw
YTdmODJlMGM4NjE1YzRiZDlkNmY5ZmE0ZjhmZjc1NDguLjRkYThiNjI1ODBhZmJhZjZiMGE5ZGNm
MGU0OTdhNmM4ODFjMDBhMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbXB1
dGVQaXBlbGluZS5tbQorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9Db21wdXRlUGlwZWxpbmUu
bW0KQEAgLTE0MSwxMCArMTQxLDEwIEBAIHN0YXRpYyBpZDxNVExDb21wdXRlUGlwZWxpbmVTdGF0
ZT4gY3JlYXRlQ29tcHV0ZVBpcGVsaW5lU3RhdGUoaWQ8TVRMRGV2aWNlPiBkZXZpCiAgICAgcmV0
dXJuIGNvbXB1dGVQaXBlbGluZVN0YXRlOwogfQogCi1SZWZQdHI8Q29tcHV0ZVBpcGVsaW5lPiBE
ZXZpY2U6OmNyZWF0ZUNvbXB1dGVQaXBlbGluZShjb25zdCBXR1BVQ29tcHV0ZVBpcGVsaW5lRGVz
Y3JpcHRvciYgZGVzY3JpcHRvcikKK1JlZjxDb21wdXRlUGlwZWxpbmU+IERldmljZTo6Y3JlYXRl
Q29tcHV0ZVBpcGVsaW5lKGNvbnN0IFdHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yJiBkZXNj
cmlwdG9yKQogewogICAgIGlmIChkZXNjcmlwdG9yLm5leHRJbkNoYWluIHx8IGRlc2NyaXB0b3Iu
Y29tcHV0ZS5uZXh0SW5DaGFpbikKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJl
dHVybiBDb21wdXRlUGlwZWxpbmU6OmNyZWF0ZUludmFsaWQoKnRoaXMpOwogCiAgICAgY29uc3Qg
U2hhZGVyTW9kdWxlJiBzaGFkZXJNb2R1bGUgPSBXZWJHUFU6OmZyb21BUEkoZGVzY3JpcHRvci5j
b21wdXRlLm1vZHVsZSk7CiAgICAgY29uc3QgUGlwZWxpbmVMYXlvdXQmIHBpcGVsaW5lTGF5b3V0
ID0gV2ViR1BVOjpmcm9tQVBJKGRlc2NyaXB0b3IubGF5b3V0KTsKQEAgLTE1MiwxMyArMTUyLDEz
IEBAIFJlZlB0cjxDb21wdXRlUGlwZWxpbmU+IERldmljZTo6Y3JlYXRlQ29tcHV0ZVBpcGVsaW5l
KGNvbnN0IFdHUFVDb21wdXRlUGlwZWxpbmVECiAKICAgICBhdXRvIGxpYnJhcnlDcmVhdGlvblJl
c3VsdCA9IGNyZWF0ZUxpYnJhcnkobV9kZXZpY2UsIHNoYWRlck1vZHVsZSwgcGlwZWxpbmVMYXlv
dXQsIFN0cmluZzo6ZnJvbUxhdGluMShkZXNjcmlwdG9yLmNvbXB1dGUuZW50cnlQb2ludCksIGxh
YmVsKTsKICAgICBpZiAoIWxpYnJhcnlDcmVhdGlvblJlc3VsdCkKLSAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgICAgIHJldHVybiBDb21wdXRlUGlwZWxpbmU6OmNyZWF0ZUludmFsaWQoKnRo
aXMpOwogCiAgICAgYXV0byBsaWJyYXJ5ID0gbGlicmFyeUNyZWF0aW9uUmVzdWx0LT5saWJyYXJ5
OwogICAgIGNvbnN0IGF1dG8mIGVudHJ5UG9pbnRJbmZvcm1hdGlvbiA9IGxpYnJhcnlDcmVhdGlv
blJlc3VsdC0+ZW50cnlQb2ludEluZm9ybWF0aW9uOwogCiAgICAgaWYgKCFzdGQ6OmhvbGRzX2Fs
dGVybmF0aXZlPFdHU0w6OlJlZmxlY3Rpb246OkNvbXB1dGU+KGVudHJ5UG9pbnRJbmZvcm1hdGlv
bi50eXBlZEVudHJ5UG9pbnQpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0
dXJuIENvbXB1dGVQaXBlbGluZTo6Y3JlYXRlSW52YWxpZCgqdGhpcyk7CiAgICAgY29uc3QgYXV0
byYgY29tcHV0ZUluZm9ybWF0aW9uID0gc3RkOjpnZXQ8V0dTTDo6UmVmbGVjdGlvbjo6Q29tcHV0
ZT4oZW50cnlQb2ludEluZm9ybWF0aW9uLnR5cGVkRW50cnlQb2ludCk7CiAKICAgICBhdXRvIGZ1
bmN0aW9uID0gY3JlYXRlRnVuY3Rpb24obGlicmFyeSwgZW50cnlQb2ludEluZm9ybWF0aW9uLCBk
ZXNjcmlwdG9yLmNvbXB1dGUsIGxhYmVsKTsKQEAgLTE2OCw3ICsxNjgsNyBAQCBSZWZQdHI8Q29t
cHV0ZVBpcGVsaW5lPiBEZXZpY2U6OmNyZWF0ZUNvbXB1dGVQaXBlbGluZShjb25zdCBXR1BVQ29t
cHV0ZVBpcGVsaW5lRAogICAgIHJldHVybiBDb21wdXRlUGlwZWxpbmU6OmNyZWF0ZShjb21wdXRl
UGlwZWxpbmVTdGF0ZSwgKnRoaXMpOwogfQogCi12b2lkIERldmljZTo6Y3JlYXRlQ29tcHV0ZVBp
cGVsaW5lQXN5bmMoY29uc3QgV0dQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3ImIGRlc2NyaXB0
b3IsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV0dQVUNyZWF0ZVBpcGVsaW5lQXN5bmNTdGF0dXMs
IFJlZlB0cjxDb21wdXRlUGlwZWxpbmU+JiYsIFN0cmluZyYmIG1lc3NhZ2UpPiYmIGNhbGxiYWNr
KQordm9pZCBEZXZpY2U6OmNyZWF0ZUNvbXB1dGVQaXBlbGluZUFzeW5jKGNvbnN0IFdHUFVDb21w
dXRlUGlwZWxpbmVEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFdHUFVDcmVhdGVQaXBlbGluZUFzeW5jU3RhdHVzLCBSZWY8Q29tcHV0ZVBpcGVsaW5lPiYmLCBT
dHJpbmcmJiBtZXNzYWdlKT4mJiBjYWxsYmFjaykKIHsKICAgICAvLyBGSVhNRTogSW1wbGVtZW50
IHRoaXMKICAgICBVTlVTRURfUEFSQU0oZGVzY3JpcHRvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViR1BVL1dlYkdQVS9EZXZpY2UuaCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0RldmljZS5oCmlu
ZGV4IGM5YTA3YTNhNmVjMDViODk1ZTc4MWVjZDFjMzU1YzNjOGM3ZmY0YjMuLjg4MDEyZmNkNGJm
OTE2MWQxM2IzNzg2NWUwOWYyNDczNTI5YTNjOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUv
V2ViR1BVL0RldmljZS5oCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0RldmljZS5oCkBAIC0z
MSw3ICszMSw2IEBACiAjaW1wb3J0IDx3dGYvRnVuY3Rpb24uaD4KICNpbXBvcnQgPHd0Zi9SZWYu
aD4KICNpbXBvcnQgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgotI2ltcG9ydCA8d3RmL1Jl
ZlB0ci5oPgogI2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgogI2ltcG9ydCA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CiAKQEAgLTYwLDcgKzU5LDcgQEAgY2xhc3MgVGV4dHVyZTsKIGNsYXNzIERldmljZSA6
IHB1YmxpYyBXR1BVRGV2aWNlSW1wbCwgcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPERldmlj
ZT4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIHN0YXRpYyBS
ZWZQdHI8RGV2aWNlPiBjcmVhdGUoaWQ8TVRMRGV2aWNlPiwgU3RyaW5nJiYgZGV2aWNlTGFiZWws
IEluc3RhbmNlJik7CisgICAgc3RhdGljIFJlZjxEZXZpY2U+IGNyZWF0ZShpZDxNVExEZXZpY2U+
LCBTdHJpbmcmJiBkZXZpY2VMYWJlbCwgSW5zdGFuY2UmKTsKICAgICBzdGF0aWMgUmVmPERldmlj
ZT4gY3JlYXRlSW52YWxpZChJbnN0YW5jZSYgaW5zdGFuY2UpCiAgICAgewogICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBEZXZpY2UoaW5zdGFuY2UpKTsKQEAgLTY4LDIxICs2NywyMSBAQCBw
dWJsaWM6CiAKICAgICB+RGV2aWNlKCk7CiAKLSAgICBSZWZQdHI8QmluZEdyb3VwPiBjcmVhdGVC
aW5kR3JvdXAoY29uc3QgV0dQVUJpbmRHcm91cERlc2NyaXB0b3ImKTsKLSAgICBSZWZQdHI8Qmlu
ZEdyb3VwTGF5b3V0PiBjcmVhdGVCaW5kR3JvdXBMYXlvdXQoY29uc3QgV0dQVUJpbmRHcm91cExh
eW91dERlc2NyaXB0b3ImKTsKLSAgICBSZWZQdHI8QnVmZmVyPiBjcmVhdGVCdWZmZXIoY29uc3Qg
V0dQVUJ1ZmZlckRlc2NyaXB0b3ImKTsKLSAgICBSZWZQdHI8Q29tbWFuZEVuY29kZXI+IGNyZWF0
ZUNvbW1hbmRFbmNvZGVyKGNvbnN0IFdHUFVDb21tYW5kRW5jb2RlckRlc2NyaXB0b3ImKTsKLSAg
ICBSZWZQdHI8Q29tcHV0ZVBpcGVsaW5lPiBjcmVhdGVDb21wdXRlUGlwZWxpbmUoY29uc3QgV0dQ
VUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3ImKTsKLSAgICB2b2lkIGNyZWF0ZUNvbXB1dGVQaXBl
bGluZUFzeW5jKGNvbnN0IFdHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yJiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChXR1BVQ3JlYXRlUGlwZWxpbmVBc3luY1N0YXR1cywgUmVmUHRyPENvbXB1
dGVQaXBlbGluZT4mJiwgU3RyaW5nJiYgbWVzc2FnZSk+JiYgY2FsbGJhY2spOwotICAgIFJlZlB0
cjxQaXBlbGluZUxheW91dD4gY3JlYXRlUGlwZWxpbmVMYXlvdXQoY29uc3QgV0dQVVBpcGVsaW5l
TGF5b3V0RGVzY3JpcHRvciYpOwotICAgIFJlZlB0cjxRdWVyeVNldD4gY3JlYXRlUXVlcnlTZXQo
Y29uc3QgV0dQVVF1ZXJ5U2V0RGVzY3JpcHRvciYpOwotICAgIFJlZlB0cjxSZW5kZXJCdW5kbGVF
bmNvZGVyPiBjcmVhdGVSZW5kZXJCdW5kbGVFbmNvZGVyKGNvbnN0IFdHUFVSZW5kZXJCdW5kbGVF
bmNvZGVyRGVzY3JpcHRvciYpOwotICAgIFJlZlB0cjxSZW5kZXJQaXBlbGluZT4gY3JlYXRlUmVu
ZGVyUGlwZWxpbmUoY29uc3QgV0dQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciYpOwotICAgIHZv
aWQgY3JlYXRlUmVuZGVyUGlwZWxpbmVBc3luYyhjb25zdCBXR1BVUmVuZGVyUGlwZWxpbmVEZXNj
cmlwdG9yJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXR1BVQ3JlYXRlUGlwZWxpbmVBc3luY1N0
YXR1cywgUmVmUHRyPFJlbmRlclBpcGVsaW5lPiYmLCBTdHJpbmcmJiBtZXNzYWdlKT4mJiBjYWxs
YmFjayk7Ci0gICAgUmVmUHRyPFNhbXBsZXI+IGNyZWF0ZVNhbXBsZXIoY29uc3QgV0dQVVNhbXBs
ZXJEZXNjcmlwdG9yJik7Ci0gICAgUmVmUHRyPFNoYWRlck1vZHVsZT4gY3JlYXRlU2hhZGVyTW9k
dWxlKGNvbnN0IFdHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yJik7Ci0gICAgUmVmUHRyPFN3YXBD
aGFpbj4gY3JlYXRlU3dhcENoYWluKGNvbnN0IFN1cmZhY2UmLCBjb25zdCBXR1BVU3dhcENoYWlu
RGVzY3JpcHRvciYpOwotICAgIFJlZlB0cjxUZXh0dXJlPiBjcmVhdGVUZXh0dXJlKGNvbnN0IFdH
UFVUZXh0dXJlRGVzY3JpcHRvciYpOworICAgIFJlZjxCaW5kR3JvdXA+IGNyZWF0ZUJpbmRHcm91
cChjb25zdCBXR1BVQmluZEdyb3VwRGVzY3JpcHRvciYpOworICAgIFJlZjxCaW5kR3JvdXBMYXlv
dXQ+IGNyZWF0ZUJpbmRHcm91cExheW91dChjb25zdCBXR1BVQmluZEdyb3VwTGF5b3V0RGVzY3Jp
cHRvciYpOworICAgIFJlZjxCdWZmZXI+IGNyZWF0ZUJ1ZmZlcihjb25zdCBXR1BVQnVmZmVyRGVz
Y3JpcHRvciYpOworICAgIFJlZjxDb21tYW5kRW5jb2Rlcj4gY3JlYXRlQ29tbWFuZEVuY29kZXIo
Y29uc3QgV0dQVUNvbW1hbmRFbmNvZGVyRGVzY3JpcHRvciYpOworICAgIFJlZjxDb21wdXRlUGlw
ZWxpbmU+IGNyZWF0ZUNvbXB1dGVQaXBlbGluZShjb25zdCBXR1BVQ29tcHV0ZVBpcGVsaW5lRGVz
Y3JpcHRvciYpOworICAgIHZvaWQgY3JlYXRlQ29tcHV0ZVBpcGVsaW5lQXN5bmMoY29uc3QgV0dQ
VUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3ImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdHUFVD
cmVhdGVQaXBlbGluZUFzeW5jU3RhdHVzLCBSZWY8Q29tcHV0ZVBpcGVsaW5lPiYmLCBTdHJpbmcm
JiBtZXNzYWdlKT4mJiBjYWxsYmFjayk7CisgICAgUmVmPFBpcGVsaW5lTGF5b3V0PiBjcmVhdGVQ
aXBlbGluZUxheW91dChjb25zdCBXR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yJik7CisgICAg
UmVmPFF1ZXJ5U2V0PiBjcmVhdGVRdWVyeVNldChjb25zdCBXR1BVUXVlcnlTZXREZXNjcmlwdG9y
Jik7CisgICAgUmVmPFJlbmRlckJ1bmRsZUVuY29kZXI+IGNyZWF0ZVJlbmRlckJ1bmRsZUVuY29k
ZXIoY29uc3QgV0dQVVJlbmRlckJ1bmRsZUVuY29kZXJEZXNjcmlwdG9yJik7CisgICAgUmVmPFJl
bmRlclBpcGVsaW5lPiBjcmVhdGVSZW5kZXJQaXBlbGluZShjb25zdCBXR1BVUmVuZGVyUGlwZWxp
bmVEZXNjcmlwdG9yJik7CisgICAgdm9pZCBjcmVhdGVSZW5kZXJQaXBlbGluZUFzeW5jKGNvbnN0
IFdHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3ImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdH
UFVDcmVhdGVQaXBlbGluZUFzeW5jU3RhdHVzLCBSZWY8UmVuZGVyUGlwZWxpbmU+JiYsIFN0cmlu
ZyYmIG1lc3NhZ2UpPiYmIGNhbGxiYWNrKTsKKyAgICBSZWY8U2FtcGxlcj4gY3JlYXRlU2FtcGxl
cihjb25zdCBXR1BVU2FtcGxlckRlc2NyaXB0b3ImKTsKKyAgICBSZWY8U2hhZGVyTW9kdWxlPiBj
cmVhdGVTaGFkZXJNb2R1bGUoY29uc3QgV0dQVVNoYWRlck1vZHVsZURlc2NyaXB0b3ImKTsKKyAg
ICBSZWY8U3dhcENoYWluPiBjcmVhdGVTd2FwQ2hhaW4oY29uc3QgU3VyZmFjZSYsIGNvbnN0IFdH
UFVTd2FwQ2hhaW5EZXNjcmlwdG9yJik7CisgICAgUmVmPFRleHR1cmU+IGNyZWF0ZVRleHR1cmUo
Y29uc3QgV0dQVVRleHR1cmVEZXNjcmlwdG9yJik7CiAgICAgdm9pZCBkZXN0cm95KCk7CiAgICAg
c2l6ZV90IGVudW1lcmF0ZUZlYXR1cmVzKFdHUFVGZWF0dXJlTmFtZSogZmVhdHVyZXMpOwogICAg
IGJvb2wgZ2V0TGltaXRzKFdHUFVTdXBwb3J0ZWRMaW1pdHMmKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJHUFUvV2ViR1BVL0RldmljZS5tbSBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0RldmljZS5t
bQppbmRleCA1OGU1ZGYxMTAxNjk3YTZjODdjNTZjMDNlMWU3MzNlMmExNDZkMzFiLi4xNmNmM2Fk
N2U1MTZlZWM2MDc1MjJkODRhNTAwNzk4ODU4NTg3NWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
R1BVL1dlYkdQVS9EZXZpY2UubW0KKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvRGV2aWNlLm1t
CkBAIC00NiwxMSArNDYsMTEgQEAKIAogbmFtZXNwYWNlIFdlYkdQVSB7CiAKLVJlZlB0cjxEZXZp
Y2U+IERldmljZTo6Y3JlYXRlKGlkPE1UTERldmljZT4gZGV2aWNlLCBTdHJpbmcmJiBkZXZpY2VM
YWJlbCwgSW5zdGFuY2UmIGluc3RhbmNlKQorUmVmPERldmljZT4gRGV2aWNlOjpjcmVhdGUoaWQ8
TVRMRGV2aWNlPiBkZXZpY2UsIFN0cmluZyYmIGRldmljZUxhYmVsLCBJbnN0YW5jZSYgaW5zdGFu
Y2UpCiB7CiAgICAgaWQ8TVRMQ29tbWFuZFF1ZXVlPiBjb21tYW5kUXVldWUgPSBbZGV2aWNlIG5l
d0NvbW1hbmRRdWV1ZV07CiAgICAgaWYgKCFjb21tYW5kUXVldWUpCi0gICAgICAgIHJldHVybiBu
dWxscHRyOworICAgICAgICByZXR1cm4gRGV2aWNlOjpjcmVhdGVJbnZhbGlkKGluc3RhbmNlKTsK
IAogICAgIC8vIFNlZSB0aGUgY29tbWVudCBpbiBEZXZpY2U6OnNldExhYmVsKCkgYWJvdXQgd2h5
IHdlJ3JlIG5vdCBzZXR0aW5nIHRoZSBsYWJlbCBvbiB0aGUgTVRMRGV2aWNlIGhlcmUuCiAKQEAg
LTIzMSwxNCArMjMxLDE0IEBAIFdHUFVDb21wdXRlUGlwZWxpbmUgd2dwdURldmljZUNyZWF0ZUNv
bXB1dGVQaXBlbGluZShXR1BVRGV2aWNlIGRldmljZSwgY29uc3QgV0dQCiAKIHZvaWQgd2dwdURl
dmljZUNyZWF0ZUNvbXB1dGVQaXBlbGluZUFzeW5jKFdHUFVEZXZpY2UgZGV2aWNlLCBjb25zdCBX
R1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciogZGVzY3JpcHRvciwgV0dQVUNyZWF0ZUNvbXB1
dGVQaXBlbGluZUFzeW5jQ2FsbGJhY2sgY2FsbGJhY2ssIHZvaWQqIHVzZXJkYXRhKQogewotICAg
IFdlYkdQVTo6ZnJvbUFQSShkZXZpY2UpLmNyZWF0ZUNvbXB1dGVQaXBlbGluZUFzeW5jKCpkZXNj
cmlwdG9yLCBbY2FsbGJhY2ssIHVzZXJkYXRhXShXR1BVQ3JlYXRlUGlwZWxpbmVBc3luY1N0YXR1
cyBzdGF0dXMsIFJlZlB0cjxXZWJHUFU6OkNvbXB1dGVQaXBlbGluZT4mJiBwaXBlbGluZSwgU3Ry
aW5nJiYgbWVzc2FnZSkgeworICAgIFdlYkdQVTo6ZnJvbUFQSShkZXZpY2UpLmNyZWF0ZUNvbXB1
dGVQaXBlbGluZUFzeW5jKCpkZXNjcmlwdG9yLCBbY2FsbGJhY2ssIHVzZXJkYXRhXShXR1BVQ3Jl
YXRlUGlwZWxpbmVBc3luY1N0YXR1cyBzdGF0dXMsIFJlZjxXZWJHUFU6OkNvbXB1dGVQaXBlbGlu
ZT4mJiBwaXBlbGluZSwgU3RyaW5nJiYgbWVzc2FnZSkgewogICAgICAgICBjYWxsYmFjayhzdGF0
dXMsIFdlYkdQVTo6cmVsZWFzZVRvQVBJKFdURk1vdmUocGlwZWxpbmUpKSwgbWVzc2FnZS51dGY4
KCkuZGF0YSgpLCB1c2VyZGF0YSk7CiAgICAgfSk7CiB9CiAKIHZvaWQgd2dwdURldmljZUNyZWF0
ZUNvbXB1dGVQaXBlbGluZUFzeW5jV2l0aEJsb2NrKFdHUFVEZXZpY2UgZGV2aWNlLCBXR1BVQ29t
cHV0ZVBpcGVsaW5lRGVzY3JpcHRvciBjb25zdCAqIGRlc2NyaXB0b3IsIFdHUFVDcmVhdGVDb21w
dXRlUGlwZWxpbmVBc3luY0Jsb2NrQ2FsbGJhY2sgY2FsbGJhY2spCiB7Ci0gICAgV2ViR1BVOjpm
cm9tQVBJKGRldmljZSkuY3JlYXRlQ29tcHV0ZVBpcGVsaW5lQXN5bmMoKmRlc2NyaXB0b3IsIFtj
YWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShXR1BVQ3JlYXRlUGlwZWxpbmVBc3luY1N0YXR1
cyBzdGF0dXMsIFJlZlB0cjxXZWJHUFU6OkNvbXB1dGVQaXBlbGluZT4mJiBwaXBlbGluZSwgU3Ry
aW5nJiYgbWVzc2FnZSkgeworICAgIFdlYkdQVTo6ZnJvbUFQSShkZXZpY2UpLmNyZWF0ZUNvbXB1
dGVQaXBlbGluZUFzeW5jKCpkZXNjcmlwdG9yLCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNr
KV0oV0dQVUNyZWF0ZVBpcGVsaW5lQXN5bmNTdGF0dXMgc3RhdHVzLCBSZWY8V2ViR1BVOjpDb21w
dXRlUGlwZWxpbmU+JiYgcGlwZWxpbmUsIFN0cmluZyYmIG1lc3NhZ2UpIHsKICAgICAgICAgY2Fs
bGJhY2soc3RhdHVzLCBXZWJHUFU6OnJlbGVhc2VUb0FQSShXVEZNb3ZlKHBpcGVsaW5lKSksIG1l
c3NhZ2UudXRmOCgpLmRhdGEoKSk7CiAgICAgfSk7CiB9CkBAIC0yNjUsMTQgKzI2NSwxNCBAQCBX
R1BVUmVuZGVyUGlwZWxpbmUgd2dwdURldmljZUNyZWF0ZVJlbmRlclBpcGVsaW5lKFdHUFVEZXZp
Y2UgZGV2aWNlLCBjb25zdCBXR1BVUgogCiB2b2lkIHdncHVEZXZpY2VDcmVhdGVSZW5kZXJQaXBl
bGluZUFzeW5jKFdHUFVEZXZpY2UgZGV2aWNlLCBjb25zdCBXR1BVUmVuZGVyUGlwZWxpbmVEZXNj
cmlwdG9yKiBkZXNjcmlwdG9yLCBXR1BVQ3JlYXRlUmVuZGVyUGlwZWxpbmVBc3luY0NhbGxiYWNr
IGNhbGxiYWNrLCB2b2lkKiB1c2VyZGF0YSkKIHsKLSAgICBXZWJHUFU6OmZyb21BUEkoZGV2aWNl
KS5jcmVhdGVSZW5kZXJQaXBlbGluZUFzeW5jKCpkZXNjcmlwdG9yLCBbY2FsbGJhY2ssIHVzZXJk
YXRhXShXR1BVQ3JlYXRlUGlwZWxpbmVBc3luY1N0YXR1cyBzdGF0dXMsIFJlZlB0cjxXZWJHUFU6
OlJlbmRlclBpcGVsaW5lPiYmIHBpcGVsaW5lLCBTdHJpbmcmJiBtZXNzYWdlKSB7CisgICAgV2Vi
R1BVOjpmcm9tQVBJKGRldmljZSkuY3JlYXRlUmVuZGVyUGlwZWxpbmVBc3luYygqZGVzY3JpcHRv
ciwgW2NhbGxiYWNrLCB1c2VyZGF0YV0oV0dQVUNyZWF0ZVBpcGVsaW5lQXN5bmNTdGF0dXMgc3Rh
dHVzLCBSZWY8V2ViR1BVOjpSZW5kZXJQaXBlbGluZT4mJiBwaXBlbGluZSwgU3RyaW5nJiYgbWVz
c2FnZSkgewogICAgICAgICBjYWxsYmFjayhzdGF0dXMsIFdlYkdQVTo6cmVsZWFzZVRvQVBJKFdU
Rk1vdmUocGlwZWxpbmUpKSwgbWVzc2FnZS51dGY4KCkuZGF0YSgpLCB1c2VyZGF0YSk7CiAgICAg
fSk7CiB9CiAKIHZvaWQgd2dwdURldmljZUNyZWF0ZVJlbmRlclBpcGVsaW5lQXN5bmNXaXRoQmxv
Y2soV0dQVURldmljZSBkZXZpY2UsIFdHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgY29uc3Qg
KiBkZXNjcmlwdG9yLCBXR1BVQ3JlYXRlUmVuZGVyUGlwZWxpbmVBc3luY0Jsb2NrQ2FsbGJhY2sg
Y2FsbGJhY2spCiB7Ci0gICAgV2ViR1BVOjpmcm9tQVBJKGRldmljZSkuY3JlYXRlUmVuZGVyUGlw
ZWxpbmVBc3luYygqZGVzY3JpcHRvciwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKFdH
UFVDcmVhdGVQaXBlbGluZUFzeW5jU3RhdHVzIHN0YXR1cywgUmVmUHRyPFdlYkdQVTo6UmVuZGVy
UGlwZWxpbmU+JiYgcGlwZWxpbmUsIFN0cmluZyYmIG1lc3NhZ2UpIHsKKyAgICBXZWJHUFU6OmZy
b21BUEkoZGV2aWNlKS5jcmVhdGVSZW5kZXJQaXBlbGluZUFzeW5jKCpkZXNjcmlwdG9yLCBbY2Fs
bGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oV0dQVUNyZWF0ZVBpcGVsaW5lQXN5bmNTdGF0dXMg
c3RhdHVzLCBSZWY8V2ViR1BVOjpSZW5kZXJQaXBlbGluZT4mJiBwaXBlbGluZSwgU3RyaW5nJiYg
bWVzc2FnZSkgewogICAgICAgICBjYWxsYmFjayhzdGF0dXMsIFdlYkdQVTo6cmVsZWFzZVRvQVBJ
KFdURk1vdmUocGlwZWxpbmUpKSwgbWVzc2FnZS51dGY4KCkuZGF0YSgpKTsKICAgICB9KTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0luc3RhbmNlLmggYi9Tb3VyY2UvV2Vi
R1BVL1dlYkdQVS9JbnN0YW5jZS5oCmluZGV4IGVmMjY2Y2UwZDBiNTBiZDBkYTE4YjQ5ZjYyMGEy
Y2QwNTc5MWE4ZDYuLjRjOWM0ZDg4OTA3MGRmYThkYzNkMWU1ZjhmYjM4OTI5NzBkOTE5MmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0luc3RhbmNlLmgKKysrIGIvU291cmNlL1dl
YkdQVS9XZWJHUFUvSW5zdGFuY2UuaApAQCAtMzAsNyArMzAsNiBAQAogI2ltcG9ydCA8d3RmL0Zh
c3RNYWxsb2MuaD4KICNpbXBvcnQgPHd0Zi9Mb2NrLmg+CiAjaW1wb3J0IDx3dGYvUmVmLmg+Ci0j
aW1wb3J0IDx3dGYvUmVmUHRyLmg+CiAjaW1wb3J0IDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQu
aD4KIAogc3RydWN0IFdHUFVJbnN0YW5jZUltcGwgewpAQCAtNDUsNyArNDQsNyBAQCBjbGFzcyBT
dXJmYWNlOwogY2xhc3MgSW5zdGFuY2UgOiBwdWJsaWMgV0dQVUluc3RhbmNlSW1wbCwgcHVibGlj
IFRocmVhZFNhZmVSZWZDb3VudGVkPEluc3RhbmNlPiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxJbnN0YW5jZT4gY3JlYXRlKGNvbnN0
IFdHUFVJbnN0YW5jZURlc2NyaXB0b3ImKTsKKyAgICBzdGF0aWMgUmVmPEluc3RhbmNlPiBjcmVh
dGUoY29uc3QgV0dQVUluc3RhbmNlRGVzY3JpcHRvciYpOwogICAgIHN0YXRpYyBSZWY8SW5zdGFu
Y2U+IGNyZWF0ZUludmFsaWQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
SW5zdGFuY2UoKSk7CkBAIC01Myw5ICs1Miw5IEBAIHB1YmxpYzoKIAogICAgIH5JbnN0YW5jZSgp
OwogCi0gICAgUmVmUHRyPFN1cmZhY2U+IGNyZWF0ZVN1cmZhY2UoY29uc3QgV0dQVVN1cmZhY2VE
ZXNjcmlwdG9yJik7CisgICAgUmVmPFN1cmZhY2U+IGNyZWF0ZVN1cmZhY2UoY29uc3QgV0dQVVN1
cmZhY2VEZXNjcmlwdG9yJik7CiAgICAgdm9pZCBwcm9jZXNzRXZlbnRzKCk7Ci0gICAgdm9pZCBy
ZXF1ZXN0QWRhcHRlcihjb25zdCBXR1BVUmVxdWVzdEFkYXB0ZXJPcHRpb25zJiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChXR1BVUmVxdWVzdEFkYXB0ZXJTdGF0dXMsIFJlZlB0cjxBZGFwdGVyPiYm
LCBTdHJpbmcmJik+JiYgY2FsbGJhY2spOworICAgIHZvaWQgcmVxdWVzdEFkYXB0ZXIoY29uc3Qg
V0dQVVJlcXVlc3RBZGFwdGVyT3B0aW9ucyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV0dQVVJl
cXVlc3RBZGFwdGVyU3RhdHVzLCBSZWY8QWRhcHRlcj4mJiwgU3RyaW5nJiYpPiYmIGNhbGxiYWNr
KTsKIAogICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNWYWxpZDsgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9JbnN0YW5jZS5tbSBiL1NvdXJjZS9XZWJH
UFUvV2ViR1BVL0luc3RhbmNlLm1tCmluZGV4IGQ0NjUwM2E5YzE1YjhmOTM5NGVlYTk2MDY1OTBl
ZTdkNjdjYzJlNTIuLjliMjQ3OTU5YzdlOTI3NGRlMzg1ZTkyYzkyZjE2YWVhNzZkYzliMTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0luc3RhbmNlLm1tCisrKyBiL1NvdXJjZS9X
ZWJHUFUvV2ViR1BVL0luc3RhbmNlLm1tCkBAIC0zNSwxOCArMzUsMTggQEAKIAogbmFtZXNwYWNl
IFdlYkdQVSB7CiAKLVJlZlB0cjxJbnN0YW5jZT4gSW5zdGFuY2U6OmNyZWF0ZShjb25zdCBXR1BV
SW5zdGFuY2VEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQorUmVmPEluc3RhbmNlPiBJbnN0YW5jZTo6
Y3JlYXRlKGNvbnN0IFdHUFVJbnN0YW5jZURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCiB7CiAgICAg
aWYgKCFkZXNjcmlwdG9yLm5leHRJbkNoYWluKQogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBJbnN0YW5jZShudWxscHRyKSk7CiAKICAgICBpZiAoZGVzY3JpcHRvci5uZXh0SW5DaGFpbi0+
c1R5cGUgIT0gc3RhdGljX2Nhc3Q8V0dQVVNUeXBlPihXR1BVU1R5cGVFeHRlbmRlZF9JbnN0YW5j
ZUNvY29hRGVzY3JpcHRvcikpCi0gICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1
cm4gSW5zdGFuY2U6OmNyZWF0ZUludmFsaWQoKTsKIAogICAgIGNvbnN0IFdHUFVJbnN0YW5jZUNv
Y29hRGVzY3JpcHRvciYgY29jb2FEZXNjcmlwdG9yID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBX
R1BVSW5zdGFuY2VDb2NvYURlc2NyaXB0b3ImPigqZGVzY3JpcHRvci5uZXh0SW5DaGFpbik7CiAK
ICAgICBpZiAoY29jb2FEZXNjcmlwdG9yLmNoYWluLm5leHQpCi0gICAgICAgIHJldHVybiBudWxs
cHRyOworICAgICAgICByZXR1cm4gSW5zdGFuY2U6OmNyZWF0ZUludmFsaWQoKTsKIAogICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IEluc3RhbmNlKGNvY29hRGVzY3JpcHRvci5zY2hlZHVsZVdvcmtC
bG9jaykpOwogfQpAQCAtNjQsNyArNjQsNyBAQCBJbnN0YW5jZTo6SW5zdGFuY2UoKQogCiBJbnN0
YW5jZTo6fkluc3RhbmNlKCkgPSBkZWZhdWx0OwogCi1SZWZQdHI8U3VyZmFjZT4gSW5zdGFuY2U6
OmNyZWF0ZVN1cmZhY2UoY29uc3QgV0dQVVN1cmZhY2VEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQor
UmVmPFN1cmZhY2U+IEluc3RhbmNlOjpjcmVhdGVTdXJmYWNlKGNvbnN0IFdHUFVTdXJmYWNlRGVz
Y3JpcHRvciYgZGVzY3JpcHRvcikKIHsKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMuCiAg
ICAgVU5VU0VEX1BBUkFNKGRlc2NyaXB0b3IpOwpAQCAtMTM0LDcgKzEzNCw3IEBAIHN0YXRpYyBO
U0FycmF5PGlkPE1UTERldmljZT4+ICpzb3J0ZWREZXZpY2VzKE5TQXJyYXk8aWQ8TVRMRGV2aWNl
Pj4gKmRldmljZXMsIFdHCiAgICAgfQogfQogCi12b2lkIEluc3RhbmNlOjpyZXF1ZXN0QWRhcHRl
cihjb25zdCBXR1BVUmVxdWVzdEFkYXB0ZXJPcHRpb25zJiBvcHRpb25zLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFdHUFVSZXF1ZXN0QWRhcHRlclN0YXR1cywgUmVmUHRyPEFkYXB0ZXI+JiYsIFN0
cmluZyYmKT4mJiBjYWxsYmFjaykKK3ZvaWQgSW5zdGFuY2U6OnJlcXVlc3RBZGFwdGVyKGNvbnN0
IFdHUFVSZXF1ZXN0QWRhcHRlck9wdGlvbnMmIG9wdGlvbnMsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoV0dQVVJlcXVlc3RBZGFwdGVyU3RhdHVzLCBSZWY8QWRhcHRlcj4mJiwgU3RyaW5nJiYpPiYm
IGNhbGxiYWNrKQogewogI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oTUFDQ0FUQUxZU1Qp
CiAgICAgTlNBcnJheTxpZDxNVExEZXZpY2U+PiAqZGV2aWNlcyA9IE1UTENvcHlBbGxEZXZpY2Vz
KCk7CkBAIC0xNDksMjcgKzE0OSwyNyBAQCB2b2lkIEluc3RhbmNlOjpyZXF1ZXN0QWRhcHRlcihj
b25zdCBXR1BVUmVxdWVzdEFkYXB0ZXJPcHRpb25zJiBvcHRpb25zLCBDb21wbGV0aQogICAgIGF1
dG8gc29ydGVkRGV2aWNlcyA9IFdlYkdQVTo6c29ydGVkRGV2aWNlcyhkZXZpY2VzLCBvcHRpb25z
LnBvd2VyUHJlZmVyZW5jZSk7CiAKICAgICBpZiAob3B0aW9ucy5uZXh0SW5DaGFpbikgewotICAg
ICAgICBjYWxsYmFjayhXR1BVUmVxdWVzdEFkYXB0ZXJTdGF0dXNfRXJyb3IsIG51bGxwdHIsICJV
bmtub3duIGRlc2NyaXB0b3IgdHlwZSJfcyk7CisgICAgICAgIGNhbGxiYWNrKFdHUFVSZXF1ZXN0
QWRhcHRlclN0YXR1c19FcnJvciwgQWRhcHRlcjo6Y3JlYXRlSW52YWxpZCgqdGhpcyksICJVbmtu
b3duIGRlc2NyaXB0b3IgdHlwZSJfcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBp
ZiAob3B0aW9ucy5mb3JjZUZhbGxiYWNrQWRhcHRlcikgewotICAgICAgICBjYWxsYmFjayhXR1BV
UmVxdWVzdEFkYXB0ZXJTdGF0dXNfVW5hdmFpbGFibGUsIG51bGxwdHIsICJObyBhZGFwdGVycyBw
cmVzZW50Il9zKTsKKyAgICAgICAgY2FsbGJhY2soV0dQVVJlcXVlc3RBZGFwdGVyU3RhdHVzX1Vu
YXZhaWxhYmxlLCBBZGFwdGVyOjpjcmVhdGVJbnZhbGlkKCp0aGlzKSwgIk5vIGFkYXB0ZXJzIHBy
ZXNlbnQiX3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKCFzb3J0ZWREZXZp
Y2VzKSB7Ci0gICAgICAgIGNhbGxiYWNrKFdHUFVSZXF1ZXN0QWRhcHRlclN0YXR1c19FcnJvciwg
bnVsbHB0ciwgIlVua25vd24gcG93ZXIgcHJlZmVyZW5jZSJfcyk7CisgICAgICAgIGNhbGxiYWNr
KFdHUFVSZXF1ZXN0QWRhcHRlclN0YXR1c19FcnJvciwgQWRhcHRlcjo6Y3JlYXRlSW52YWxpZCgq
dGhpcyksICJVbmtub3duIHBvd2VyIHByZWZlcmVuY2UiX3MpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCiAgICAgaWYgKCFzb3J0ZWREZXZpY2VzLmNvdW50KSB7Ci0gICAgICAgIGNhbGxiYWNr
KFdHUFVSZXF1ZXN0QWRhcHRlclN0YXR1c19VbmF2YWlsYWJsZSwgbnVsbHB0ciwgIk5vIGFkYXB0
ZXJzIHByZXNlbnQiX3MpOworICAgICAgICBjYWxsYmFjayhXR1BVUmVxdWVzdEFkYXB0ZXJTdGF0
dXNfVW5hdmFpbGFibGUsIEFkYXB0ZXI6OmNyZWF0ZUludmFsaWQoKnRoaXMpLCAiTm8gYWRhcHRl
cnMgcHJlc2VudCJfcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBpZiAoIXNvcnRl
ZERldmljZXNbMF0pIHsKLSAgICAgICAgY2FsbGJhY2soV0dQVVJlcXVlc3RBZGFwdGVyU3RhdHVz
X0Vycm9yLCBudWxscHRyLCAiQWRhcHRlciBpcyBpbnRlcm5hbGx5IG51bGwiX3MpOworICAgICAg
ICBjYWxsYmFjayhXR1BVUmVxdWVzdEFkYXB0ZXJTdGF0dXNfRXJyb3IsIEFkYXB0ZXI6OmNyZWF0
ZUludmFsaWQoKnRoaXMpLCAiQWRhcHRlciBpcyBpbnRlcm5hbGx5IG51bGwiX3MpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCkBAIC00NTEsMTQgKzQ1MSwxNCBAQCB2b2lkIHdncHVJbnN0YW5j
ZVByb2Nlc3NFdmVudHMoV0dQVUluc3RhbmNlIGluc3RhbmNlKQogCiB2b2lkIHdncHVJbnN0YW5j
ZVJlcXVlc3RBZGFwdGVyKFdHUFVJbnN0YW5jZSBpbnN0YW5jZSwgY29uc3QgV0dQVVJlcXVlc3RB
ZGFwdGVyT3B0aW9ucyogb3B0aW9ucywgV0dQVVJlcXVlc3RBZGFwdGVyQ2FsbGJhY2sgY2FsbGJh
Y2ssIHZvaWQqIHVzZXJkYXRhKQogewotICAgIFdlYkdQVTo6ZnJvbUFQSShpbnN0YW5jZSkucmVx
dWVzdEFkYXB0ZXIoKm9wdGlvbnMsIFtjYWxsYmFjaywgdXNlcmRhdGFdKFdHUFVSZXF1ZXN0QWRh
cHRlclN0YXR1cyBzdGF0dXMsIFJlZlB0cjxXZWJHUFU6OkFkYXB0ZXI+JiYgYWRhcHRlciwgU3Ry
aW5nJiYgbWVzc2FnZSkgeworICAgIFdlYkdQVTo6ZnJvbUFQSShpbnN0YW5jZSkucmVxdWVzdEFk
YXB0ZXIoKm9wdGlvbnMsIFtjYWxsYmFjaywgdXNlcmRhdGFdKFdHUFVSZXF1ZXN0QWRhcHRlclN0
YXR1cyBzdGF0dXMsIFJlZjxXZWJHUFU6OkFkYXB0ZXI+JiYgYWRhcHRlciwgU3RyaW5nJiYgbWVz
c2FnZSkgewogICAgICAgICBjYWxsYmFjayhzdGF0dXMsIFdlYkdQVTo6cmVsZWFzZVRvQVBJKFdU
Rk1vdmUoYWRhcHRlcikpLCBtZXNzYWdlLnV0ZjgoKS5kYXRhKCksIHVzZXJkYXRhKTsKICAgICB9
KTsKIH0KIAogdm9pZCB3Z3B1SW5zdGFuY2VSZXF1ZXN0QWRhcHRlcldpdGhCbG9jayhXR1BVSW5z
dGFuY2UgaW5zdGFuY2UsIFdHUFVSZXF1ZXN0QWRhcHRlck9wdGlvbnMgY29uc3QgKiBvcHRpb25z
LCBXR1BVUmVxdWVzdEFkYXB0ZXJCbG9ja0NhbGxiYWNrIGNhbGxiYWNrKQogewotICAgIFdlYkdQ
VTo6ZnJvbUFQSShpbnN0YW5jZSkucmVxdWVzdEFkYXB0ZXIoKm9wdGlvbnMsIFtjYWxsYmFjayA9
IFdURk1vdmUoY2FsbGJhY2spXShXR1BVUmVxdWVzdEFkYXB0ZXJTdGF0dXMgc3RhdHVzLCBSZWZQ
dHI8V2ViR1BVOjpBZGFwdGVyPiYmIGFkYXB0ZXIsIFN0cmluZyYmIG1lc3NhZ2UpIHsKKyAgICBX
ZWJHUFU6OmZyb21BUEkoaW5zdGFuY2UpLnJlcXVlc3RBZGFwdGVyKCpvcHRpb25zLCBbY2FsbGJh
Y2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oV0dQVVJlcXVlc3RBZGFwdGVyU3RhdHVzIHN0YXR1cywg
UmVmPFdlYkdQVTo6QWRhcHRlcj4mJiBhZGFwdGVyLCBTdHJpbmcmJiBtZXNzYWdlKSB7CiAgICAg
ICAgIGNhbGxiYWNrKHN0YXR1cywgV2ViR1BVOjpyZWxlYXNlVG9BUEkoV1RGTW92ZShhZGFwdGVy
KSksIG1lc3NhZ2UudXRmOCgpLmRhdGEoKSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViR1BVL1dlYkdQVS9QaXBlbGluZUxheW91dC5tbSBiL1NvdXJjZS9XZWJHUFUvV2ViR1BV
L1BpcGVsaW5lTGF5b3V0Lm1tCmluZGV4IDIxMjA0MTA3YmMzMzQ0NTUwYjliNGE1MWU3ZTEwMjBj
NzQzNGY0N2YuLjA5M2Y1MWI2MGIwMWRmYmUwYzViMzlhN2UyMjU5ODEwNGEzOWRlNjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1BpcGVsaW5lTGF5b3V0Lm1tCisrKyBiL1NvdXJj
ZS9XZWJHUFUvV2ViR1BVL1BpcGVsaW5lTGF5b3V0Lm1tCkBAIC0zMiwxMCArMzIsMTAgQEAKIAog
bmFtZXNwYWNlIFdlYkdQVSB7CiAKLVJlZlB0cjxQaXBlbGluZUxheW91dD4gRGV2aWNlOjpjcmVh
dGVQaXBlbGluZUxheW91dChjb25zdCBXR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yJiBkZXNj
cmlwdG9yKQorUmVmPFBpcGVsaW5lTGF5b3V0PiBEZXZpY2U6OmNyZWF0ZVBpcGVsaW5lTGF5b3V0
KGNvbnN0IFdHUFVQaXBlbGluZUxheW91dERlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCiB7CiAgICAg
aWYgKGRlc2NyaXB0b3IubmV4dEluQ2hhaW4pCi0gICAgICAgIHJldHVybiBudWxscHRyOworICAg
ICAgICByZXR1cm4gUGlwZWxpbmVMYXlvdXQ6OmNyZWF0ZUludmFsaWQoKnRoaXMpOwogCiAgICAg
VmVjdG9yPFJlZjxCaW5kR3JvdXBMYXlvdXQ+PiBiaW5kR3JvdXBMYXlvdXRzOwogICAgIGJpbmRH
cm91cExheW91dHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShkZXNjcmlwdG9yLmJpbmRHcm91cExh
eW91dENvdW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1F1ZXJ5U2V0Lm1t
IGIvU291cmNlL1dlYkdQVS9XZWJHUFUvUXVlcnlTZXQubW0KaW5kZXggZDdlMjRmMzVhZTI0OTVm
YjVlYWFiZDBjYmNjOGExY2M3YWFiOTM3ZS4uM2VmODY5NjZmOGRmZDQ5MDVhYTU2NWFiZDViMDVl
NTM3OWQ4NTEyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUvUXVlcnlTZXQubW0K
KysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvUXVlcnlTZXQubW0KQEAgLTMxLDEwICszMSwxMCBA
QAogCiBuYW1lc3BhY2UgV2ViR1BVIHsKIAotUmVmUHRyPFF1ZXJ5U2V0PiBEZXZpY2U6OmNyZWF0
ZVF1ZXJ5U2V0KGNvbnN0IFdHUFVRdWVyeVNldERlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCitSZWY8
UXVlcnlTZXQ+IERldmljZTo6Y3JlYXRlUXVlcnlTZXQoY29uc3QgV0dQVVF1ZXJ5U2V0RGVzY3Jp
cHRvciYgZGVzY3JpcHRvcikKIHsKICAgICBVTlVTRURfUEFSQU0oZGVzY3JpcHRvcik7Ci0gICAg
cmV0dXJuIFF1ZXJ5U2V0OjpjcmVhdGUobmlsLCAqdGhpcyk7CisgICAgcmV0dXJuIFF1ZXJ5U2V0
OjpjcmVhdGVJbnZhbGlkKCp0aGlzKTsKIH0KIAogUXVlcnlTZXQ6OlF1ZXJ5U2V0KGlkPE1UTENv
dW50ZXJTYW1wbGVCdWZmZXI+IGNvdW50ZXJTYW1wbGVCdWZmZXIsIERldmljZSYgZGV2aWNlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvUmVuZGVyQnVuZGxlRW5jb2Rlci5oIGIv
U291cmNlL1dlYkdQVS9XZWJHUFUvUmVuZGVyQnVuZGxlRW5jb2Rlci5oCmluZGV4IDBiNTkzNDRm
MmI2ZmJhNzcxNzBkNjUxODQ3ZTI5MGRiYjBiN2NiYTEuLjFlNTFmMWEyYmIzMDBkMTIyOTlkMTZk
NmU0OTE0ODQ4MzE2NzNhNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1JlbmRl
ckJ1bmRsZUVuY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9SZW5kZXJCdW5kbGVF
bmNvZGVyLmgKQEAgLTI5LDcgKzI5LDYgQEAKICNpbXBvcnQgPHd0Zi9GYXN0TWFsbG9jLmg+CiAj
aW1wb3J0IDx3dGYvUmVmLmg+CiAjaW1wb3J0IDx3dGYvUmVmQ291bnRlZC5oPgotI2ltcG9ydCA8
d3RmL1JlZlB0ci5oPgogCiBzdHJ1Y3QgV0dQVVJlbmRlckJ1bmRsZUVuY29kZXJJbXBsIHsKIH07
CkBAIC02MSw3ICs2MCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRyYXdJbmRleGVkKHVpbnQzMl90
IGluZGV4Q291bnQsIHVpbnQzMl90IGluc3RhbmNlQ291bnQsIHVpbnQzMl90IGZpcnN0SW5kZXgs
IGludDMyX3QgYmFzZVZlcnRleCwgdWludDMyX3QgZmlyc3RJbnN0YW5jZSk7CiAgICAgdm9pZCBk
cmF3SW5kZXhlZEluZGlyZWN0KGNvbnN0IEJ1ZmZlciYgaW5kaXJlY3RCdWZmZXIsIHVpbnQ2NF90
IGluZGlyZWN0T2Zmc2V0KTsKICAgICB2b2lkIGRyYXdJbmRpcmVjdChjb25zdCBCdWZmZXImIGlu
ZGlyZWN0QnVmZmVyLCB1aW50NjRfdCBpbmRpcmVjdE9mZnNldCk7Ci0gICAgUmVmUHRyPFJlbmRl
ckJ1bmRsZT4gZmluaXNoKGNvbnN0IFdHUFVSZW5kZXJCdW5kbGVEZXNjcmlwdG9yJik7CisgICAg
UmVmPFJlbmRlckJ1bmRsZT4gZmluaXNoKGNvbnN0IFdHUFVSZW5kZXJCdW5kbGVEZXNjcmlwdG9y
Jik7CiAgICAgdm9pZCBpbnNlcnREZWJ1Z01hcmtlcihTdHJpbmcmJiBtYXJrZXJMYWJlbCk7CiAg
ICAgdm9pZCBwb3BEZWJ1Z0dyb3VwKCk7CiAgICAgdm9pZCBwdXNoRGVidWdHcm91cChTdHJpbmcm
JiBncm91cExhYmVsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1JlbmRlckJ1
bmRsZUVuY29kZXIubW0gYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9SZW5kZXJCdW5kbGVFbmNvZGVy
Lm1tCmluZGV4IGJjZjAxODE1NGU3NzMxMmVlZjQyMzRmNzFkNTUwMDRhMjczMmRjZTguLjc0OWMx
ZmM5NjBjNTljNzE0MmE3OWE2MGFjMDU0ZmRjOTIzOTUyM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJHUFUvV2ViR1BVL1JlbmRlckJ1bmRsZUVuY29kZXIubW0KKysrIGIvU291cmNlL1dlYkdQVS9X
ZWJHUFUvUmVuZGVyQnVuZGxlRW5jb2Rlci5tbQpAQCAtMzUsMTAgKzM1LDEwIEBACiAKIG5hbWVz
cGFjZSBXZWJHUFUgewogCi1SZWZQdHI8UmVuZGVyQnVuZGxlRW5jb2Rlcj4gRGV2aWNlOjpjcmVh
dGVSZW5kZXJCdW5kbGVFbmNvZGVyKGNvbnN0IFdHUFVSZW5kZXJCdW5kbGVFbmNvZGVyRGVzY3Jp
cHRvciYgZGVzY3JpcHRvcikKK1JlZjxSZW5kZXJCdW5kbGVFbmNvZGVyPiBEZXZpY2U6OmNyZWF0
ZVJlbmRlckJ1bmRsZUVuY29kZXIoY29uc3QgV0dQVVJlbmRlckJ1bmRsZUVuY29kZXJEZXNjcmlw
dG9yJiBkZXNjcmlwdG9yKQogewogICAgIFVOVVNFRF9QQVJBTShkZXNjcmlwdG9yKTsKLSAgICBy
ZXR1cm4gUmVuZGVyQnVuZGxlRW5jb2Rlcjo6Y3JlYXRlKG5pbCwgKnRoaXMpOworICAgIHJldHVy
biBSZW5kZXJCdW5kbGVFbmNvZGVyOjpjcmVhdGVJbnZhbGlkKCp0aGlzKTsKIH0KIAogUmVuZGVy
QnVuZGxlRW5jb2Rlcjo6UmVuZGVyQnVuZGxlRW5jb2RlcihpZDxNVExJbmRpcmVjdENvbW1hbmRC
dWZmZXI+IGluZGlyZWN0Q29tbWFuZEJ1ZmZlciwgRGV2aWNlJiBkZXZpY2UpCkBAIC04MywxMCAr
ODMsMTAgQEAgdm9pZCBSZW5kZXJCdW5kbGVFbmNvZGVyOjpkcmF3SW5kaXJlY3QoY29uc3QgQnVm
ZmVyJiBpbmRpcmVjdEJ1ZmZlciwgdWludDY0X3QgaW4KICAgICBVTlVTRURfUEFSQU0oaW5kaXJl
Y3RPZmZzZXQpOwogfQogCi1SZWZQdHI8UmVuZGVyQnVuZGxlPiBSZW5kZXJCdW5kbGVFbmNvZGVy
OjpmaW5pc2goY29uc3QgV0dQVVJlbmRlckJ1bmRsZURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCitS
ZWY8UmVuZGVyQnVuZGxlPiBSZW5kZXJCdW5kbGVFbmNvZGVyOjpmaW5pc2goY29uc3QgV0dQVVJl
bmRlckJ1bmRsZURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGRl
c2NyaXB0b3IpOwotICAgIHJldHVybiBSZW5kZXJCdW5kbGU6OmNyZWF0ZShuaWwsIG1fZGV2aWNl
KTsKKyAgICByZXR1cm4gUmVuZGVyQnVuZGxlOjpjcmVhdGVJbnZhbGlkKG1fZGV2aWNlKTsKIH0K
IAogdm9pZCBSZW5kZXJCdW5kbGVFbmNvZGVyOjppbnNlcnREZWJ1Z01hcmtlcihTdHJpbmcmJikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1JlbmRlclBpcGVsaW5lLm1tIGIvU291
cmNlL1dlYkdQVS9XZWJHUFUvUmVuZGVyUGlwZWxpbmUubW0KaW5kZXggN2U3NzcxYWY4NTA0YmU3
ODg3NmY1NDcyMTZlMDFhMmVhMmIwOTIwNC4uMTY1ZTQ3YjI3YzEwMTIxOThhZWU1YWQzODY1NTJl
NjdkM2U1NmQyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUvUmVuZGVyUGlwZWxp
bmUubW0KKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvUmVuZGVyUGlwZWxpbmUubW0KQEAgLTMy
LDEzICszMiwxMyBAQAogCiBuYW1lc3BhY2UgV2ViR1BVIHsKIAotUmVmUHRyPFJlbmRlclBpcGVs
aW5lPiBEZXZpY2U6OmNyZWF0ZVJlbmRlclBpcGVsaW5lKGNvbnN0IFdHUFVSZW5kZXJQaXBlbGlu
ZURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCitSZWY8UmVuZGVyUGlwZWxpbmU+IERldmljZTo6Y3Jl
YXRlUmVuZGVyUGlwZWxpbmUoY29uc3QgV0dQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciYgZGVz
Y3JpcHRvcikKIHsKICAgICBVTlVTRURfUEFSQU0oZGVzY3JpcHRvcik7Ci0gICAgcmV0dXJuIFJl
bmRlclBpcGVsaW5lOjpjcmVhdGUobmlsLCAqdGhpcyk7CisgICAgcmV0dXJuIFJlbmRlclBpcGVs
aW5lOjpjcmVhdGVJbnZhbGlkKCp0aGlzKTsKIH0KIAotdm9pZCBEZXZpY2U6OmNyZWF0ZVJlbmRl
clBpcGVsaW5lQXN5bmMoY29uc3QgV0dQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciYgZGVzY3Jp
cHRvciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXR1BVQ3JlYXRlUGlwZWxpbmVBc3luY1N0YXR1
cywgUmVmUHRyPFJlbmRlclBpcGVsaW5lPiYmLCBTdHJpbmcmJiBtZXNzYWdlKT4mJiBjYWxsYmFj
aykKK3ZvaWQgRGV2aWNlOjpjcmVhdGVSZW5kZXJQaXBlbGluZUFzeW5jKGNvbnN0IFdHUFVSZW5k
ZXJQaXBlbGluZURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
V0dQVUNyZWF0ZVBpcGVsaW5lQXN5bmNTdGF0dXMsIFJlZjxSZW5kZXJQaXBlbGluZT4mJiwgU3Ry
aW5nJiYgbWVzc2FnZSk+JiYgY2FsbGJhY2spCiB7CiAgICAgVU5VU0VEX1BBUkFNKGRlc2NyaXB0
b3IpOwogICAgIFVOVVNFRF9QQVJBTShjYWxsYmFjayk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
R1BVL1dlYkdQVS9TYW1wbGVyLm1tIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvU2FtcGxlci5tbQpp
bmRleCBjYTNiNzUxMzkzNTkxNTc3ZDMzNTdkM2MwZTdiNjAxMGUzYmRiNmY0Li4wZDI3ZWZkZTQ1
YWY1NzZiNDM1NDA3YmIyMjUxMmY5OGM0MjViOTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BV
L1dlYkdQVS9TYW1wbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1NhbXBsZXIubW0K
QEAgLTEyNCwxNyArMTI0LDE2IEBAIHN0YXRpYyBNVExDb21wYXJlRnVuY3Rpb24gY29tcGFyZUZ1
bmN0aW9uKFdHUFVDb21wYXJlRnVuY3Rpb24gY29tcGFyZUZ1bmN0aW9uKQogICAgIH0KIH0KIAot
UmVmUHRyPFNhbXBsZXI+IERldmljZTo6Y3JlYXRlU2FtcGxlcihjb25zdCBXR1BVU2FtcGxlckRl
c2NyaXB0b3ImIGRlc2NyaXB0b3IpCitSZWY8U2FtcGxlcj4gRGV2aWNlOjpjcmVhdGVTYW1wbGVy
KGNvbnN0IFdHUFVTYW1wbGVyRGVzY3JpcHRvciYgZGVzY3JpcHRvcikKIHsKICAgICBpZiAoZGVz
Y3JpcHRvci5uZXh0SW5DaGFpbikKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJl
dHVybiBTYW1wbGVyOjpjcmVhdGVJbnZhbGlkKCp0aGlzKTsKIAogICAgIC8vIGh0dHBzOi8vZ3B1
d2ViLmdpdGh1Yi5pby9ncHV3ZWIvI2RvbS1ncHVkZXZpY2UtY3JlYXRlc2FtcGxlcgogCiAgICAg
aWYgKCF2YWxpZGF0ZUNyZWF0ZVNhbXBsZXIoKnRoaXMsIGRlc2NyaXB0b3IpKSB7CiAgICAgICAg
IGdlbmVyYXRlQVZhbGlkYXRpb25FcnJvcigiVmFsaWRhdGlvbiBmYWlsdXJlLiJfcyk7Ci0KLSAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBTYW1wbGVyOjpjcmVhdGVJbnZh
bGlkKCp0aGlzKTsKICAgICB9CiAKICAgICBNVExTYW1wbGVyRGVzY3JpcHRvciAqc2FtcGxlckRl
c2NyaXB0b3IgPSBbTVRMU2FtcGxlckRlc2NyaXB0b3IgbmV3XTsKQEAgLTE1Nyw3ICsxNTYsNyBA
QCBSZWZQdHI8U2FtcGxlcj4gRGV2aWNlOjpjcmVhdGVTYW1wbGVyKGNvbnN0IFdHUFVTYW1wbGVy
RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKIAogICAgIGlkPE1UTFNhbXBsZXJTdGF0ZT4gc2FtcGxl
clN0YXRlID0gW21fZGV2aWNlIG5ld1NhbXBsZXJTdGF0ZVdpdGhEZXNjcmlwdG9yOnNhbXBsZXJE
ZXNjcmlwdG9yXTsKICAgICBpZiAoIXNhbXBsZXJTdGF0ZSkKLSAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgICAgIHJldHVybiBTYW1wbGVyOjpjcmVhdGVJbnZhbGlkKCp0aGlzKTsKIAogICAg
IHJldHVybiBTYW1wbGVyOjpjcmVhdGUoc2FtcGxlclN0YXRlLCBkZXNjcmlwdG9yLCAqdGhpcyk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9TaGFkZXJNb2R1bGUubW0gYi9T
b3VyY2UvV2ViR1BVL1dlYkdQVS9TaGFkZXJNb2R1bGUubW0KaW5kZXggMTA4OGNiNTk5OWI5ZjQ5
YWVjMDZkOWNlYTQ3NjY0MDdhNDRlOTdkMy4uMWIzNWFmZmUyOWNlNzFlMTc2ZjExNWQyOGIyMDRh
ZTMwNmZmZmZmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUvU2hhZGVyTW9kdWxl
Lm1tCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1NoYWRlck1vZHVsZS5tbQpAQCAtMTAwLDIw
ICsxMDAsMjAgQEAgc3RhdGljIFJlZlB0cjxTaGFkZXJNb2R1bGU+IGVhcmx5Q29tcGlsZVNoYWRl
ck1vZHVsZShEZXZpY2UmIGRldmljZSwgc3RkOjp2YXJpYW4KICAgICByZXR1cm4gU2hhZGVyTW9k
dWxlOjpjcmVhdGUoV1RGTW92ZShjaGVja1Jlc3VsdCksIFdURk1vdmUoaGludHMpLCBXVEZNb3Zl
KHByZXBhcmVSZXN1bHQuZW50cnlQb2ludHMpLCBsaWJyYXJ5LCBkZXZpY2UpOwogfQogCi1SZWZQ
dHI8U2hhZGVyTW9kdWxlPiBEZXZpY2U6OmNyZWF0ZVNoYWRlck1vZHVsZShjb25zdCBXR1BVU2hh
ZGVyTW9kdWxlRGVzY3JpcHRvciYgZGVzY3JpcHRvcikKK1JlZjxTaGFkZXJNb2R1bGU+IERldmlj
ZTo6Y3JlYXRlU2hhZGVyTW9kdWxlKGNvbnN0IFdHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yJiBk
ZXNjcmlwdG9yKQogewogICAgIGlmICghZGVzY3JpcHRvci5uZXh0SW5DaGFpbikKLSAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBTaGFkZXJNb2R1bGU6OmNyZWF0ZUludmFs
aWQoKnRoaXMpOwogCiAgICAgYXV0byBzaGFkZXJNb2R1bGVQYXJhbWV0ZXJzID0gZmluZFNoYWRl
ck1vZHVsZVBhcmFtZXRlcnMoZGVzY3JpcHRvcik7CiAgICAgaWYgKCFzaGFkZXJNb2R1bGVQYXJh
bWV0ZXJzKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIFNoYWRlck1v
ZHVsZTo6Y3JlYXRlSW52YWxpZCgqdGhpcyk7CiAKICAgICBhdXRvIGNoZWNrUmVzdWx0ID0gV0dT
TDo6c3RhdGljQ2hlY2soU3RyaW5nOjpmcm9tTGF0aW4xKHNoYWRlck1vZHVsZVBhcmFtZXRlcnMt
Pndnc2wuY29kZSksIHN0ZDo6bnVsbG9wdCk7CiAKICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5h
dGl2ZTxXR1NMOjpTdWNjZXNzZnVsQ2hlY2s+KGNoZWNrUmVzdWx0KSAmJiBzaGFkZXJNb2R1bGVQ
YXJhbWV0ZXJzLT5oaW50cyAmJiBzaGFkZXJNb2R1bGVQYXJhbWV0ZXJzLT5oaW50cy0+aGludHND
b3VudCkgewogICAgICAgICBpZiAoYXV0byByZXN1bHQgPSBlYXJseUNvbXBpbGVTaGFkZXJNb2R1
bGUoKnRoaXMsIFdURk1vdmUoY2hlY2tSZXN1bHQpLCAqc2hhZGVyTW9kdWxlUGFyYW1ldGVycy0+
aGludHMsIGZyb21BUEkoZGVzY3JpcHRvci5sYWJlbCkpKQotICAgICAgICAgICAgcmV0dXJuIHJl
c3VsdDsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQucmVsZWFzZU5vbk51bGwoKTsKICAgICB9
CiAKICAgICByZXR1cm4gU2hhZGVyTW9kdWxlOjpjcmVhdGUoV1RGTW92ZShjaGVja1Jlc3VsdCks
IHsgfSwgeyB9LCBuaWwsICp0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BV
L1N3YXBDaGFpbi5tbSBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1N3YXBDaGFpbi5tbQppbmRleCA4
MTFhOWE1OGJjNzMwZGMyM2FlMDFhOGMwMzA0MjFhYzRlNjdkMDhkLi44ZmYyN2ZiMjIzODM5YTMx
Yzc2MTE3YWUyYjgyNmM1NjFhZTI3OTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQ
VS9Td2FwQ2hhaW4ubW0KKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvU3dhcENoYWluLm1tCkBA
IC0zMiw3ICszMiw3IEBACiAKIG5hbWVzcGFjZSBXZWJHUFUgewogCi1SZWZQdHI8U3dhcENoYWlu
PiBEZXZpY2U6OmNyZWF0ZVN3YXBDaGFpbihjb25zdCBTdXJmYWNlJiBzdXJmYWNlLCBjb25zdCBX
R1BVU3dhcENoYWluRGVzY3JpcHRvciYgZGVzY3JpcHRvcikKK1JlZjxTd2FwQ2hhaW4+IERldmlj
ZTo6Y3JlYXRlU3dhcENoYWluKGNvbnN0IFN1cmZhY2UmIHN1cmZhY2UsIGNvbnN0IFdHUFVTd2Fw
Q2hhaW5EZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogewogICAgIFVOVVNFRF9QQVJBTShzdXJmYWNl
KTsKICAgICBVTlVTRURfUEFSQU0oZGVzY3JpcHRvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
R1BVL1dlYkdQVS9UZXh0dXJlLmggYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9UZXh0dXJlLmgKaW5k
ZXggNTJhYzYxYWRmMDQ3YjY5MDVkMTNmMDU1MzdiMDNiMTI2NTBlN2NiNy4uMDVkZDk2YjU5NzM0
YjUyOThiYmZkN2U5NGIxNTJlMTQ1MGVjMzg4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9X
ZWJHUFUvVGV4dHVyZS5oCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1RleHR1cmUuaApAQCAt
MjgsNyArMjgsNiBAQAogI2ltcG9ydCA8d3RmL0Zhc3RNYWxsb2MuaD4KICNpbXBvcnQgPHd0Zi9S
ZWYuaD4KICNpbXBvcnQgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW1wb3J0IDx3dGYvUmVmUHRyLmg+
CiAjaW1wb3J0IDx3dGYvVmVjdG9yLmg+CiAKIHN0cnVjdCBXR1BVVGV4dHVyZUltcGwgewpAQCAt
NTQsNyArNTMsNyBAQCBwdWJsaWM6CiAKICAgICB+VGV4dHVyZSgpOwogCi0gICAgUmVmUHRyPFRl
eHR1cmVWaWV3PiBjcmVhdGVWaWV3KGNvbnN0IFdHUFVUZXh0dXJlVmlld0Rlc2NyaXB0b3ImKTsK
KyAgICBSZWY8VGV4dHVyZVZpZXc+IGNyZWF0ZVZpZXcoY29uc3QgV0dQVVRleHR1cmVWaWV3RGVz
Y3JpcHRvciYpOwogICAgIHZvaWQgZGVzdHJveSgpOwogICAgIHZvaWQgc2V0TGFiZWwoU3RyaW5n
JiYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9UZXh0dXJlLm1tIGIvU291
cmNlL1dlYkdQVS9XZWJHUFUvVGV4dHVyZS5tbQppbmRleCBjMTMwNjBjNjBmNmE3MzdjNzU2OWJk
ZGM4ZTg5OTg2MzgyMjgyOTcwLi4yM2Y2ZTg3MzY0ZmM4ZTI5OTBlMmEwZmE5MzdhOWJiNjFmYmVm
OTE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9UZXh0dXJlLm1tCisrKyBiL1Nv
dXJjZS9XZWJHUFUvV2ViR1BVL1RleHR1cmUubW0KQEAgLTE5NjMsMTUgKzE5NjMsMTUgQEAgc3Rh
dGljIE1UTFN0b3JhZ2VNb2RlIHN0b3JhZ2VNb2RlKGJvb2wgZGV2aWNlSGFzVW5pZmllZE1lbW9y
eSkKICNlbmRpZgogfQogCi1SZWZQdHI8VGV4dHVyZT4gRGV2aWNlOjpjcmVhdGVUZXh0dXJlKGNv
bnN0IFdHUFVUZXh0dXJlRGVzY3JpcHRvciYgZGVzY3JpcHRvcikKK1JlZjxUZXh0dXJlPiBEZXZp
Y2U6OmNyZWF0ZVRleHR1cmUoY29uc3QgV0dQVVRleHR1cmVEZXNjcmlwdG9yJiBkZXNjcmlwdG9y
KQogewogICAgIFZlY3RvcjxXR1BVVGV4dHVyZUZvcm1hdD4gdmlld0Zvcm1hdHM7CiAgICAgaWYg
KGRlc2NyaXB0b3IubmV4dEluQ2hhaW4pIHsKICAgICAgICAgaWYgKGRlc2NyaXB0b3IubmV4dElu
Q2hhaW4tPnNUeXBlICE9IHN0YXRpY19jYXN0PFdHUFVTVHlwZT4oV0dQVVNUeXBlRXh0ZW5kZWRf
VGV4dHVyZURlc2NyaXB0b3JWaWV3Rm9ybWF0cykpCi0gICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICAgICAgICAgIHJldHVybiBUZXh0dXJlOjpjcmVhdGVJbnZhbGlkKCp0aGlzKTsKICAg
ICAgICAgY29uc3QgYXV0byYgZGVzY3JpcHRvclZpZXdGb3JtYXRzID0gcmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBXR1BVVGV4dHVyZURlc2NyaXB0b3JWaWV3Rm9ybWF0cyY+KCpkZXNjcmlwdG9yLm5l
eHRJbkNoYWluKTsKICAgICAgICAgaWYgKGRlc2NyaXB0b3IubmV4dEluQ2hhaW4tPm5leHQgIT0g
bnVsbHB0cikKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICAgICAgcmV0dXJu
IFRleHR1cmU6OmNyZWF0ZUludmFsaWQoKnRoaXMpOwogICAgICAgICAvLyBUaGlzIGNvcHkgaXMg
dGVtcG9yYXJ5LCBqdXN0IHVudGlsIFdHUFVUZXh0dXJlRGVzY3JpcHRvclZpZXdGb3JtYXRzIGdl
dHMgZm9sZGVkIGludG8gV0dQVVRleHR1cmVEZXNjcmlwdG9yLgogICAgICAgICB2aWV3Rm9ybWF0
cyA9IFZlY3RvciB7IGRlc2NyaXB0b3JWaWV3Rm9ybWF0cy52aWV3Rm9ybWF0cywgZGVzY3JpcHRv
clZpZXdGb3JtYXRzLnZpZXdGb3JtYXRzQ291bnQgfTsKICAgICB9CkBAIC0xOTgwLDEzICsxOTgw
LDEzIEBAIFJlZlB0cjxUZXh0dXJlPiBEZXZpY2U6OmNyZWF0ZVRleHR1cmUoY29uc3QgV0dQVVRl
eHR1cmVEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogCiAgICAgaWYgKGZlYXR1cmVSZXF1aXJlbWVu
dEZvckZvcm1hdChkZXNjcmlwdG9yLmZvcm1hdCkpIHsKICAgICAgICAgLy8gRklYTUU6ICJidXQg
dGhpcy5bW2RldmljZV1dLltbZmVhdHVyZXNdXSBkb2VzIG5vdCBjb250YWluIHRoZSBmZWF0dXJl
LCB0aHJvdyBhIFR5cGVFcnJvci4iCi0gICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICBy
ZXR1cm4gVGV4dHVyZTo6Y3JlYXRlSW52YWxpZCgqdGhpcyk7CiAgICAgfQogCiAgICAgaWYgKCF2
YWxpZGF0ZUNyZWF0ZVRleHR1cmUoZGVzY3JpcHRvciwgdmlld0Zvcm1hdHMpKSB7CiAgICAgICAg
IGdlbmVyYXRlQVZhbGlkYXRpb25FcnJvcigiVmFsaWRhdGlvbiBmYWlsdXJlLiJfcyk7CiAgICAg
ICAgIC8vIEZJWE1FOiAiUmV0dXJuIGEgbmV3IGludmFsaWQgR1BVVGV4dHVyZS4iCi0gICAgICAg
IHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gVGV4dHVyZTo6Y3JlYXRlSW52YWxpZCgq
dGhpcyk7CiAgICAgfQogCiAgICAgTVRMVGV4dHVyZURlc2NyaXB0b3IgKnRleHR1cmVEZXNjcmlw
dG9yID0gW01UTFRleHR1cmVEZXNjcmlwdG9yIG5ld107CkBAIC0yMDA5LDcgKzIwMDksNyBAQCBS
ZWZQdHI8VGV4dHVyZT4gRGV2aWNlOjpjcmVhdGVUZXh0dXJlKGNvbnN0IFdHUFVUZXh0dXJlRGVz
Y3JpcHRvciYgZGVzY3JpcHRvcikKICAgICAgICAgICAgIHRleHR1cmVEZXNjcmlwdG9yLmFycmF5
TGVuZ3RoID0gZGVzY3JpcHRvci5zaXplLmRlcHRoT3JBcnJheUxheWVyczsKICAgICAgICAgICAg
IGlmIChkZXNjcmlwdG9yLnNhbXBsZUNvdW50ID4gMSkgewogI2lmIFBMQVRGT1JNKFdBVENIT1Mp
IHx8IFBMQVRGT1JNKFRWT1MpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIFRleHR1cmU6OmNyZWF0ZUludmFsaWQoKnRoaXMpOwogI2Vsc2UK
ICAgICAgICAgICAgICAgICB0ZXh0dXJlRGVzY3JpcHRvci50ZXh0dXJlVHlwZSA9IE1UTFRleHR1
cmVUeXBlMkRNdWx0aXNhbXBsZUFycmF5OwogI2VuZGlmCkBAIC0yMDMwLDcgKzIwMzAsNyBAQCBS
ZWZQdHI8VGV4dHVyZT4gRGV2aWNlOjpjcmVhdGVUZXh0dXJlKGNvbnN0IFdHUFVUZXh0dXJlRGVz
Y3JpcHRvciYgZGVzY3JpcHRvcikKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBXR1BVVGV4dHVy
ZURpbWVuc2lvbl9Gb3JjZTMyOgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBUZXh0dXJlOjpjcmVhdGVJbnZhbGlk
KCp0aGlzKTsKICAgICB9CiAKICAgICB0ZXh0dXJlRGVzY3JpcHRvci5waXhlbEZvcm1hdCA9IHBp
eGVsRm9ybWF0KGRlc2NyaXB0b3IuZm9ybWF0KTsKQEAgLTIwNDYsNyArMjA0Niw3IEBAIFJlZlB0
cjxUZXh0dXJlPiBEZXZpY2U6OmNyZWF0ZVRleHR1cmUoY29uc3QgV0dQVVRleHR1cmVEZXNjcmlw
dG9yJiBkZXNjcmlwdG9yKQogCiAgICAgaWQ8TVRMVGV4dHVyZT4gdGV4dHVyZSA9IFttX2Rldmlj
ZSBuZXdUZXh0dXJlV2l0aERlc2NyaXB0b3I6dGV4dHVyZURlc2NyaXB0b3JdOwogICAgIGlmICgh
dGV4dHVyZSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBUZXh0dXJl
OjpjcmVhdGVJbnZhbGlkKCp0aGlzKTsKIAogICAgIHRleHR1cmUubGFiZWwgPSBmcm9tQVBJKGRl
c2NyaXB0b3IubGFiZWwpOwogCkBAIC0yMjUxLDEwICsyMjUxLDEwIEBAIHN0YXRpYyBXR1BVRXh0
ZW50M0QgY29tcHV0ZVJlbmRlckV4dGVudChjb25zdCBXR1BVRXh0ZW50M0QmIGJhc2VTaXplLCB1
aW50MzJfdCBtCiAgICAgcmV0dXJuIGV4dGVudDsKIH0KIAotUmVmUHRyPFRleHR1cmVWaWV3PiBU
ZXh0dXJlOjpjcmVhdGVWaWV3KGNvbnN0IFdHUFVUZXh0dXJlVmlld0Rlc2NyaXB0b3ImIGlucHV0
RGVzY3JpcHRvcikKK1JlZjxUZXh0dXJlVmlldz4gVGV4dHVyZTo6Y3JlYXRlVmlldyhjb25zdCBX
R1BVVGV4dHVyZVZpZXdEZXNjcmlwdG9yJiBpbnB1dERlc2NyaXB0b3IpCiB7CiAgICAgaWYgKGlu
cHV0RGVzY3JpcHRvci5uZXh0SW5DaGFpbikKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
ICAgIHJldHVybiBUZXh0dXJlVmlldzo6Y3JlYXRlSW52YWxpZChtX2RldmljZSk7CiAKICAgICAv
LyBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViLyNkb20tZ3B1dGV4dHVyZS1jcmVhdGV2
aWV3CiAKQEAgLTIyNjQsNyArMjI2NCw3IEBAIFJlZlB0cjxUZXh0dXJlVmlldz4gVGV4dHVyZTo6
Y3JlYXRlVmlldyhjb25zdCBXR1BVVGV4dHVyZVZpZXdEZXNjcmlwdG9yJiBpbnB1dERlCiAgICAg
ICAgIG1fZGV2aWNlLT5nZW5lcmF0ZUFWYWxpZGF0aW9uRXJyb3IoIlZhbGlkYXRpb24gZmFpbHVy
ZS4iX3MpOwogCiAgICAgICAgIC8vIEZJWE1FOiAiUmV0dXJuIGEgbmV3IGludmFsaWQgR1BVVGV4
dHVyZVZpZXcuIgotICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIFRleHR1
cmVWaWV3OjpjcmVhdGVJbnZhbGlkKG1fZGV2aWNlKTsKICAgICB9CiAKICAgICBzdGQ6Om9wdGlv
bmFsPE1UTFBpeGVsRm9ybWF0PiBwaXhlbEZvcm1hdDsKQEAgLTIyODEsMTggKzIyODEsMTggQEAg
UmVmUHRyPFRleHR1cmVWaWV3PiBUZXh0dXJlOjpjcmVhdGVWaWV3KGNvbnN0IFdHUFVUZXh0dXJl
Vmlld0Rlc2NyaXB0b3ImIGlucHV0RGUKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNl
IFdHUFVUZXh0dXJlQXNwZWN0X0ZvcmNlMzI6CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICAgICAgcmV0dXJuIFRl
eHR1cmVWaWV3OjpjcmVhdGVJbnZhbGlkKG1fZGV2aWNlKTsKICAgICAgICAgfQogICAgIH0KICAg
ICBpZiAoIXBpeGVsRm9ybWF0KQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0
dXJuIFRleHR1cmVWaWV3OjpjcmVhdGVJbnZhbGlkKG1fZGV2aWNlKTsKICAgICBBU1NFUlQoKnBp
eGVsRm9ybWF0ICE9IE1UTFBpeGVsRm9ybWF0SW52YWxpZCk7CiAKICAgICBNVExUZXh0dXJlVHlw
ZSB0ZXh0dXJlVHlwZTsKICAgICBzd2l0Y2ggKGRlc2NyaXB0b3IuZGltZW5zaW9uKSB7CiAgICAg
Y2FzZSBXR1BVVGV4dHVyZVZpZXdEaW1lbnNpb25fVW5kZWZpbmVkOgogICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBU
ZXh0dXJlVmlldzo6Y3JlYXRlSW52YWxpZChtX2RldmljZSk7CiAgICAgY2FzZSBXR1BVVGV4dHVy
ZVZpZXdEaW1lbnNpb25fMUQ6CiAgICAgICAgIGlmIChkZXNjcmlwdG9yLmFycmF5TGF5ZXJDb3Vu
dCA9PSAxKQogICAgICAgICAgICAgdGV4dHVyZVR5cGUgPSBNVExUZXh0dXJlVHlwZTFEOwpAQCAt
MjMwOCw3ICsyMzA4LDcgQEAgUmVmUHRyPFRleHR1cmVWaWV3PiBUZXh0dXJlOjpjcmVhdGVWaWV3
KGNvbnN0IFdHUFVUZXh0dXJlVmlld0Rlc2NyaXB0b3ImIGlucHV0RGUKICAgICBjYXNlIFdHUFVU
ZXh0dXJlVmlld0RpbWVuc2lvbl8yREFycmF5OgogICAgICAgICBpZiAobV9kZXNjcmlwdG9yLnNh
bXBsZUNvdW50ID4gMSkgewogI2lmIFBMQVRGT1JNKFdBVENIT1MpIHx8IFBMQVRGT1JNKFRWT1Mp
Ci0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAgIHJldHVybiBUZXh0dXJl
Vmlldzo6Y3JlYXRlSW52YWxpZChtX2RldmljZSk7CiAjZWxzZQogICAgICAgICAgICAgdGV4dHVy
ZVR5cGUgPSBNVExUZXh0dXJlVHlwZTJETXVsdGlzYW1wbGVBcnJheTsKICNlbmRpZgpAQCAtMjMy
Niw3ICsyMzI2LDcgQEAgUmVmUHRyPFRleHR1cmVWaWV3PiBUZXh0dXJlOjpjcmVhdGVWaWV3KGNv
bnN0IFdHUFVUZXh0dXJlVmlld0Rlc2NyaXB0b3ImIGlucHV0RGUKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBXR1BVVGV4dHVyZVZpZXdEaW1lbnNpb25fRm9yY2UzMjoKICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4g
VGV4dHVyZVZpZXc6OmNyZWF0ZUludmFsaWQobV9kZXZpY2UpOwogICAgIH0KIAogICAgIGF1dG8g
bGV2ZWxzID0gTlNNYWtlUmFuZ2UoZGVzY3JpcHRvci5iYXNlTWlwTGV2ZWwsIGRlc2NyaXB0b3Iu
bWlwTGV2ZWxDb3VudCk7CkBAIC0yMzM1LDcgKzIzMzUsNyBAQCBSZWZQdHI8VGV4dHVyZVZpZXc+
IFRleHR1cmU6OmNyZWF0ZVZpZXcoY29uc3QgV0dQVVRleHR1cmVWaWV3RGVzY3JpcHRvciYgaW5w
dXREZQogCiAgICAgaWQ8TVRMVGV4dHVyZT4gdGV4dHVyZSA9IFttX3RleHR1cmUgbmV3VGV4dHVy
ZVZpZXdXaXRoUGl4ZWxGb3JtYXQ6KnBpeGVsRm9ybWF0IHRleHR1cmVUeXBlOnRleHR1cmVUeXBl
IGxldmVsczpsZXZlbHMgc2xpY2VzOnNsaWNlc107CiAgICAgaWYgKCF0ZXh0dXJlKQotICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIFRleHR1cmVWaWV3OjpjcmVhdGVJbnZh
bGlkKG1fZGV2aWNlKTsKIAogICAgIHRleHR1cmUubGFiZWwgPSBmcm9tQVBJKGRlc2NyaXB0b3Iu
bGFiZWwpOwogCg==
</data>
<flag name="review"
          id="485457"
          type_id="1"
          status="+"
          setter="dino"
    />
    <flag name="commit-queue"
          id="485607"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>