<?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>233547</bug_id>
          
          <creation_ts>2021-11-28 22:51:55 -0800</creation_ts>
          <short_desc>[WebGPU] Make WebGPU.framework&apos;s classes reference counted</short_desc>
          <delta_ts>2021-11-29 10:39:35 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Myles C. Maxfield">mmaxfield</reporter>
          <assigned_to name="Myles C. Maxfield">mmaxfield</assigned_to>
          <cc>dino</cc>
    
    <cc>rmorisset</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1818128</commentid>
    <comment_count>0</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-11-28 22:51:55 -0800</bug_when>
    <thetext>[WebGPU] Make WebGPU.framework&apos;s classes reference counted</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1818129</commentid>
    <comment_count>1</comment_count>
      <attachid>445252</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-11-28 23:01:54 -0800</bug_when>
    <thetext>Created attachment 445252
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1818300</commentid>
    <comment_count>2</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-11-29 10:38:31 -0800</bug_when>
    <thetext>Committed r286225 (244606@main): &lt;https://commits.webkit.org/244606@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 445252.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1818303</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-11-29 10:39:35 -0800</bug_when>
    <thetext>&lt;rdar://problem/85824450&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445252</attachid>
            <date>2021-11-28 23:01:54 -0800</date>
            <delta_ts>2021-11-29 10:38:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233547-20211128230153.patch</filename>
            <type>text/plain</type>
            <size>99242</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MTk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJHUFUvQ2hhbmdlTG9nCmluZGV4IDgxNjAxODM1MWQzZjhjNTRl
NDg3MWI1YjBlMzk1YzllZDFkOTJhYWYuLjMxNGZmZDhiMGJlN2IxNDU5NDY3YTdlZjA0ZTA4YWU4
YTU5ZjIxYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJHUFUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYzIEBACisyMDIxLTExLTI4ICBNeWxlcyBD
LiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkdQVV0gTWFr
ZSBXZWJHUFUuZnJhbWV3b3JrJ3MgY2xhc3NlcyByZWZlcmVuY2UgY291bnRlZAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNTQ3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBpcyBhIGZhaXJseSBt
ZWNoYW5pY2FsIGNoYW5nZSBvZiByZXBsYWNpbmcgY29uc3RydWN0b3JzIHdpdGggY2FsbHMgdG8g
Y3JlYXRlKCksIGFuZAorICAgICAgICBjaGFuZ2luZyBpbnN0YW5jZXMgdG8gUmVmPC4uLj4sIGFu
ZCB1c2luZyAtPiBpbnN0ZWFkIG9mIC4KKworICAgICAgICBUaGVyZSdzIG9uZSBzb21ld2hhdCBp
bnRlcmVzdGluZyBkZXNpZ24gY2hvaWNlIGhlcmUuIFRoZSBoZWFkZXIgaGFzIHRoaW5ncyBsaWtl
OgorCisgICAgICAgIHR5cGVkZWYgc3RydWN0IFdHUFVBZGFwdGVySW1wbCogV0dQVUFkYXB0ZXI7
CisKKyAgICAgICAgQnV0IHdlJ3JlIHVzaW5nIEMrKyBzbyB3ZSB3YW50IHRvIGhhdmUgc29tZXRo
aW5nIGxpa2UKKworICAgICAgICBuYW1lc3BhY2UgV2ViR1BVIHsKKyAgICAgICAgY2xhc3MgQWRh
cHRlciA6IHB1YmxpYyBSZWZDb3VudGVkPEFkYXB0ZXI+IHsKKyAgICAgICAgICAgIC4uLgorICAg
ICAgICB9OworICAgICAgICB9CisKKyAgICAgICAgU28gd2UgbmVlZCB0byBoYXZlIHNvbWUgd2F5
IG9mIGNvbm5lY3RpbmcgdGhlc2UgdHdvIHRoaW5ncy4gVGhpcyBwYXRjaCBvcHRzIHRvIGRvIHRo
aXMgbGlrZSBzbzoKKworICAgICAgICBzdHJ1Y3QgV0dQVUFkYXB0ZXJJbXBsIHsKKyAgICAgICAg
ICAgIFJlZjxBZGFwdGVyPiBhZGFwdGVyOworICAgICAgICB9OworCisgICAgICAgIFRoaXMgaXNu
J3QgcGVyZmVjdCwgYmVjYXVzZSBpdCBtZWFucyB0aGF0IGFsbCBtZXRob2QgY2FsbHMgcmVxdWly
ZSBhIGRvdWJsZSBkZXJlZmVyZW5jZTogb25lIHRvCisgICAgICAgIGRlcmVmZXJlbmNlIHRoZSBX
R1BVQWRhcHRlciB0byBnZXQgdGhlIFdHUFVBZGFwdGVySW1wbCwgYW5kIG9uZSB0byBkZXJlZmVy
ZW5jZSB0aGUgUmVmPEFkYXB0ZXI+CisgICAgICAgIHRvIGdldCB0aGUgQWRhcHRlci4gVGhpcyBp
cyB0aGUgbW9zdCBlbGVnYW50IHNvbHV0aW9uIGZvciBub3csIGJlY2F1c2UgaXQgZG9lc24ndCBy
ZXF1aXJlIGFueQorICAgICAgICByZWludGVycHJldF9jYXN0PD4oKSdpbmcuIFRoaXMgcGF0Y2gg
Y2hvb3NlcyB0aGlzIGVsZWdhbnQgc29sdXRpb24sIGJlY2F1c2UgcHJlbWF0dXJlIG9wdGltaXph
dGlvbgorICAgICAgICBpcyB0aGUgcm9vdCBvZiBhbGwgZXZpbC4KKworICAgICAgICAqIFdlYkdQ
VS9BZGFwdGVyLmg6CisgICAgICAgIChXZWJHUFU6OkFkYXB0ZXI6OmNyZWF0ZSk6CisgICAgICAg
ICogV2ViR1BVL0FkYXB0ZXIubW06CisgICAgICAgIChXZWJHUFU6OkFkYXB0ZXI6OnJlcXVlc3RE
ZXZpY2UpOgorICAgICAgICAod2dwdUFkYXB0ZXJHZXRMaW1pdHMpOgorICAgICAgICAod2dwdUFk
YXB0ZXJHZXRQcm9wZXJ0aWVzKToKKyAgICAgICAgKHdncHVBZGFwdGVySGFzRmVhdHVyZSk6Cisg
ICAgICAgICh3Z3B1QWRhcHRlckdldEZlYXR1cmVBdEluZGV4KToKKyAgICAgICAgKHdncHVBZGFw
dGVyUmVxdWVzdERldmljZSk6CisgICAgICAgICogV2ViR1BVL0JpbmRHcm91cC5oOgorICAgICAg
ICAoV2ViR1BVOjpCaW5kR3JvdXA6OmNyZWF0ZSk6CisgICAgICAgICogV2ViR1BVL0JpbmRHcm91
cC5tbToKKyAgICAgICAgKHdncHVCaW5kR3JvdXBTZXRMYWJlbCk6CisgICAgICAgICogV2ViR1BV
L0JpbmRHcm91cExheW91dC5oOgorICAgICAgICAoV2ViR1BVOjpCaW5kR3JvdXBMYXlvdXQ6OmNy
ZWF0ZSk6CisgICAgICAgICogV2ViR1BVL0JpbmRHcm91cExheW91dC5tbToKKyAgICAgICAgKHdn
cHVCaW5kR3JvdXBMYXlvdXRTZXRMYWJlbCk6CisgICAgICAgICogV2ViR1BVL0J1ZmZlci5oOgor
ICAgICAgICAoV2ViR1BVOjpCdWZmZXI6OmNyZWF0ZSk6CisgICAgICAgICogV2ViR1BVL0J1ZmZl
ci5tbToKKyAgICAgICAgKFdlYkdQVTo6QnVmZmVyOjptYXBBc3luYyk6CisgICAgICAgICh3Z3B1
QnVmZmVyRGVzdHJveSk6CisgICAgICAgICh3Z3B1QnVmZmVyR2V0Q29uc3RNYXBwZWRSYW5nZSk6
CisgICAgICAgICh3Z3B1QnVmZmVyR2V0TWFwcGVkUmFuZ2UpOgorICAgICAgICAod2dwdUJ1ZmZl
ck1hcEFzeW5jKToKKyAgICAgICAgKHdncHVCdWZmZXJVbm1hcCk6CisgICAgICAgICh3Z3B1QnVm
ZmVyU2V0TGFiZWwpOgorICAgICAgICAqIFdlYkdQVS9Db21tYW5kQnVmZmVyLmg6CisgICAgICAg
IChXZWJHUFU6OkNvbW1hbmRCdWZmZXI6OmNyZWF0ZSk6CisgICAgICAgICogV2ViR1BVL0NvbW1h
bmRCdWZmZXIubW06CisgICAgICAgICh3Z3B1Q29tbWFuZEJ1ZmZlclNldExhYmVsKToKKyAgICAg
ICAgKiBXZWJHUFUvQ29tbWFuZEVuY29kZXIuaDoKKyAgICAgICAgKFdlYkdQVTo6Q29tbWFuZEVu
Y29kZXI6OmNyZWF0ZSk6CisgICAgICAgICogV2ViR1BVL0NvbW1hbmRFbmNvZGVyLm1tOgorICAg
ICAgICAoV2ViR1BVOjpDb21tYW5kRW5jb2Rlcjo6YmVnaW5Db21wdXRlUGFzcyk6CisgICAgICAg
IChXZWJHUFU6OkNvbW1hbmRFbmNvZGVyOjpiZWdpblJlbmRlclBhc3MpOgorICAgICAgICAoV2Vi
R1BVOjpDb21tYW5kRW5jb2Rlcjo6ZmluaXNoKToKKyAgICAgICAgKHdncHVDb21tYW5kRW5jb2Rl
ckJlZ2luQ29tcHV0ZVBhc3MpOgorICAgICAgICAod2dwdUNvbW1hbmRFbmNvZGVyQmVnaW5SZW5k
ZXJQYXNzKToKKyAgICAgICAgKHdncHVDb21tYW5kRW5jb2RlckNvcHlCdWZmZXJUb0J1ZmZlcik6
CisgICAgICAgICh3Z3B1Q29tbWFuZEVuY29kZXJDb3B5QnVmZmVyVG9UZXh0dXJlKToKKyAgICAg
ICAgKHdncHVDb21tYW5kRW5jb2RlckNvcHlUZXh0dXJlVG9CdWZmZXIpOgorICAgICAgICAod2dw
dUNvbW1hbmRFbmNvZGVyQ29weVRleHR1cmVUb1RleHR1cmUpOgorICAgICAgICAod2dwdUNvbW1h
bmRFbmNvZGVyRmlsbEJ1ZmZlcik6CisgICAgICAgICh3Z3B1Q29tbWFuZEVuY29kZXJGaW5pc2gp
OgorICAgICAgICAod2dwdUNvbW1hbmRFbmNvZGVySW5zZXJ0RGVidWdNYXJrZXIpOgorICAgICAg
ICAod2dwdUNvbW1hbmRFbmNvZGVyUG9wRGVidWdHcm91cCk6CisgICAgICAgICh3Z3B1Q29tbWFu
ZEVuY29kZXJQdXNoRGVidWdHcm91cCk6CisgICAgICAgICh3Z3B1Q29tbWFuZEVuY29kZXJSZXNv
bHZlUXVlcnlTZXQpOgorICAgICAgICAod2dwdUNvbW1hbmRFbmNvZGVyV3JpdGVUaW1lc3RhbXAp
OgorICAgICAgICAod2dwdUNvbW1hbmRFbmNvZGVyU2V0TGFiZWwpOgorICAgICAgICAqIFdlYkdQ
VS9Db21wdXRlUGFzc0VuY29kZXIuaDoKKyAgICAgICAgKFdlYkdQVTo6Q29tcHV0ZVBhc3NFbmNv
ZGVyOjpjcmVhdGUpOgorICAgICAgICAqIFdlYkdQVS9Db21wdXRlUGFzc0VuY29kZXIubW06Cisg
ICAgICAgICh3Z3B1Q29tcHV0ZVBhc3NFbmNvZGVyQmVnaW5QaXBlbGluZVN0YXRpc3RpY3NRdWVy
eSk6CisgICAgICAgICh3Z3B1Q29tcHV0ZVBhc3NFbmNvZGVyRGlzcGF0Y2gpOgorICAgICAgICAo
d2dwdUNvbXB1dGVQYXNzRW5jb2RlckRpc3BhdGNoSW5kaXJlY3QpOgorICAgICAgICAod2dwdUNv
bXB1dGVQYXNzRW5jb2RlckVuZFBhc3MpOgorICAgICAgICAod2dwdUNvbXB1dGVQYXNzRW5jb2Rl
ckVuZFBpcGVsaW5lU3RhdGlzdGljc1F1ZXJ5KToKKyAgICAgICAgKHdncHVDb21wdXRlUGFzc0Vu
Y29kZXJJbnNlcnREZWJ1Z01hcmtlcik6CisgICAgICAgICh3Z3B1Q29tcHV0ZVBhc3NFbmNvZGVy
UG9wRGVidWdHcm91cCk6CisgICAgICAgICh3Z3B1Q29tcHV0ZVBhc3NFbmNvZGVyUHVzaERlYnVn
R3JvdXApOgorICAgICAgICAod2dwdUNvbXB1dGVQYXNzRW5jb2RlclNldEJpbmRHcm91cCk6Cisg
ICAgICAgICh3Z3B1Q29tcHV0ZVBhc3NFbmNvZGVyU2V0UGlwZWxpbmUpOgorICAgICAgICAod2dw
dUNvbXB1dGVQYXNzRW5jb2RlcldyaXRlVGltZXN0YW1wKToKKyAgICAgICAgKHdncHVDb21wdXRl
UGFzc0VuY29kZXJTZXRMYWJlbCk6CisgICAgICAgICogV2ViR1BVL0NvbXB1dGVQaXBlbGluZS5o
OgorICAgICAgICAoV2ViR1BVOjpDb21wdXRlUGlwZWxpbmU6OmNyZWF0ZSk6CisgICAgICAgICog
V2ViR1BVL0NvbXB1dGVQaXBlbGluZS5tbToKKyAgICAgICAgKFdlYkdQVTo6Q29tcHV0ZVBpcGVs
aW5lOjpnZXRCaW5kR3JvdXBMYXlvdXQpOgorICAgICAgICAod2dwdUNvbXB1dGVQaXBlbGluZUdl
dEJpbmRHcm91cExheW91dCk6CisgICAgICAgICh3Z3B1Q29tcHV0ZVBpcGVsaW5lU2V0TGFiZWwp
OgorICAgICAgICAqIFdlYkdQVS9EZXZpY2UuaDoKKyAgICAgICAgKFdlYkdQVTo6RGV2aWNlOjpj
cmVhdGUpOgorICAgICAgICAqIFdlYkdQVS9EZXZpY2UubW06CisgICAgICAgIChXZWJHUFU6OkRl
dmljZTo6Y3JlYXRlQmluZEdyb3VwKToKKyAgICAgICAgKFdlYkdQVTo6RGV2aWNlOjpjcmVhdGVC
aW5kR3JvdXBMYXlvdXQpOgorICAgICAgICAoV2ViR1BVOjpEZXZpY2U6OmNyZWF0ZUJ1ZmZlcik6
CisgICAgICAgIChXZWJHUFU6OkRldmljZTo6Y3JlYXRlQ29tbWFuZEVuY29kZXIpOgorICAgICAg
ICAoV2ViR1BVOjpEZXZpY2U6OmNyZWF0ZUNvbXB1dGVQaXBlbGluZSk6CisgICAgICAgIChXZWJH
UFU6OkRldmljZTo6Y3JlYXRlQ29tcHV0ZVBpcGVsaW5lQXN5bmMpOgorICAgICAgICAoV2ViR1BV
OjpEZXZpY2U6OmNyZWF0ZVBpcGVsaW5lTGF5b3V0KToKKyAgICAgICAgKFdlYkdQVTo6RGV2aWNl
OjpjcmVhdGVRdWVyeVNldCk6CisgICAgICAgIChXZWJHUFU6OkRldmljZTo6Y3JlYXRlUmVuZGVy
QnVuZGxlRW5jb2Rlcik6CisgICAgICAgIChXZWJHUFU6OkRldmljZTo6Y3JlYXRlUmVuZGVyUGlw
ZWxpbmUpOgorICAgICAgICAoV2ViR1BVOjpEZXZpY2U6OmNyZWF0ZVJlbmRlclBpcGVsaW5lQXN5
bmMpOgorICAgICAgICAoV2ViR1BVOjpEZXZpY2U6OmNyZWF0ZVNhbXBsZXIpOgorICAgICAgICAo
V2ViR1BVOjpEZXZpY2U6OmNyZWF0ZVNoYWRlck1vZHVsZSk6CisgICAgICAgIChXZWJHUFU6OkRl
dmljZTo6Y3JlYXRlU3dhcENoYWluKToKKyAgICAgICAgKFdlYkdQVTo6RGV2aWNlOjpjcmVhdGVU
ZXh0dXJlKToKKyAgICAgICAgKFdlYkdQVTo6RGV2aWNlOjpnZXRRdWV1ZSk6CisgICAgICAgIChX
ZWJHUFU6OkRldmljZTo6cG9wRXJyb3JTY29wZSk6CisgICAgICAgIChXZWJHUFU6OkRldmljZTo6
c2V0RGV2aWNlTG9zdENhbGxiYWNrKToKKyAgICAgICAgKFdlYkdQVTo6RGV2aWNlOjpzZXRVbmNh
cHR1cmVkRXJyb3JDYWxsYmFjayk6CisgICAgICAgICh3Z3B1RGV2aWNlQ3JlYXRlQmluZEdyb3Vw
KToKKyAgICAgICAgKHdncHVEZXZpY2VDcmVhdGVCaW5kR3JvdXBMYXlvdXQpOgorICAgICAgICAo
d2dwdURldmljZUNyZWF0ZUJ1ZmZlcik6CisgICAgICAgICh3Z3B1RGV2aWNlQ3JlYXRlQ29tbWFu
ZEVuY29kZXIpOgorICAgICAgICAod2dwdURldmljZUNyZWF0ZUNvbXB1dGVQaXBlbGluZSk6Cisg
ICAgICAgICh3Z3B1RGV2aWNlQ3JlYXRlQ29tcHV0ZVBpcGVsaW5lQXN5bmMpOgorICAgICAgICAo
d2dwdURldmljZUNyZWF0ZVBpcGVsaW5lTGF5b3V0KToKKyAgICAgICAgKHdncHVEZXZpY2VDcmVh
dGVRdWVyeVNldCk6CisgICAgICAgICh3Z3B1RGV2aWNlQ3JlYXRlUmVuZGVyQnVuZGxlRW5jb2Rl
cik6CisgICAgICAgICh3Z3B1RGV2aWNlQ3JlYXRlUmVuZGVyUGlwZWxpbmUpOgorICAgICAgICAo
d2dwdURldmljZUNyZWF0ZVJlbmRlclBpcGVsaW5lQXN5bmMpOgorICAgICAgICAod2dwdURldmlj
ZUNyZWF0ZVNhbXBsZXIpOgorICAgICAgICAod2dwdURldmljZUNyZWF0ZVNoYWRlck1vZHVsZSk6
CisgICAgICAgICh3Z3B1RGV2aWNlQ3JlYXRlU3dhcENoYWluKToKKyAgICAgICAgKHdncHVEZXZp
Y2VDcmVhdGVUZXh0dXJlKToKKyAgICAgICAgKHdncHVEZXZpY2VEZXN0cm95KToKKyAgICAgICAg
KHdncHVEZXZpY2VHZXRMaW1pdHMpOgorICAgICAgICAod2dwdURldmljZUdldFF1ZXVlKToKKyAg
ICAgICAgKHdncHVEZXZpY2VQb3BFcnJvclNjb3BlKToKKyAgICAgICAgKHdncHVEZXZpY2VQdXNo
RXJyb3JTY29wZSk6CisgICAgICAgICh3Z3B1RGV2aWNlU2V0RGV2aWNlTG9zdENhbGxiYWNrKToK
KyAgICAgICAgKHdncHVEZXZpY2VTZXRVbmNhcHR1cmVkRXJyb3JDYWxsYmFjayk6CisgICAgICAg
ICh3Z3B1RGV2aWNlU2V0TGFiZWwpOgorICAgICAgICAqIFdlYkdQVS9JbnN0YW5jZS5oOgorICAg
ICAgICAoV2ViR1BVOjpJbnN0YW5jZTo6Y3JlYXRlKToKKyAgICAgICAgKiBXZWJHUFUvSW5zdGFu
Y2UubW06CisgICAgICAgIChXZWJHUFU6Okluc3RhbmNlOjpjcmVhdGVTdXJmYWNlKToKKyAgICAg
ICAgKFdlYkdQVTo6SW5zdGFuY2U6OnJlcXVlc3RBZGFwdGVyKToKKyAgICAgICAgKHdncHVJbnN0
YW5jZUNyZWF0ZVN1cmZhY2UpOgorICAgICAgICAod2dwdUluc3RhbmNlUHJvY2Vzc0V2ZW50cyk6
CisgICAgICAgICh3Z3B1SW5zdGFuY2VSZXF1ZXN0QWRhcHRlcik6CisgICAgICAgICogV2ViR1BV
L1BpcGVsaW5lTGF5b3V0Lmg6CisgICAgICAgIChXZWJHUFU6OlBpcGVsaW5lTGF5b3V0OjpjcmVh
dGUpOgorICAgICAgICAqIFdlYkdQVS9QaXBlbGluZUxheW91dC5tbToKKyAgICAgICAgKHdncHVQ
aXBlbGluZUxheW91dFNldExhYmVsKToKKyAgICAgICAgKiBXZWJHUFUvUXVlcnlTZXQuaDoKKyAg
ICAgICAgKFdlYkdQVTo6UXVlcnlTZXQ6OmNyZWF0ZSk6CisgICAgICAgICogV2ViR1BVL1F1ZXJ5
U2V0Lm1tOgorICAgICAgICAod2dwdVF1ZXJ5U2V0RGVzdHJveSk6CisgICAgICAgICh3Z3B1UXVl
cnlTZXRTZXRMYWJlbCk6CisgICAgICAgICogV2ViR1BVL1F1ZXVlLmg6CisgICAgICAgIChXZWJH
UFU6OlF1ZXVlOjpjcmVhdGUpOgorICAgICAgICAqIFdlYkdQVS9RdWV1ZS5tbToKKyAgICAgICAg
KFdlYkdQVTo6UXVldWU6Om9uU3VibWl0dGVkV29ya0RvbmUpOgorICAgICAgICAod2dwdVF1ZXVl
T25TdWJtaXR0ZWRXb3JrRG9uZSk6CisgICAgICAgICh3Z3B1UXVldWVTdWJtaXQpOgorICAgICAg
ICAod2dwdVF1ZXVlV3JpdGVCdWZmZXIpOgorICAgICAgICAod2dwdVF1ZXVlV3JpdGVUZXh0dXJl
KToKKyAgICAgICAgKHdncHVRdWV1ZVNldExhYmVsKToKKyAgICAgICAgKiBXZWJHUFUvUmVuZGVy
QnVuZGxlLmg6CisgICAgICAgIChXZWJHUFU6OlJlbmRlckJ1bmRsZTo6Y3JlYXRlKToKKyAgICAg
ICAgKiBXZWJHUFUvUmVuZGVyQnVuZGxlLm1tOgorICAgICAgICAod2dwdVJlbmRlckJ1bmRsZVNl
dExhYmVsKToKKyAgICAgICAgKiBXZWJHUFUvUmVuZGVyQnVuZGxlRW5jb2Rlci5oOgorICAgICAg
ICAoV2ViR1BVOjpSZW5kZXJCdW5kbGVFbmNvZGVyOjpjcmVhdGUpOgorICAgICAgICAqIFdlYkdQ
VS9SZW5kZXJCdW5kbGVFbmNvZGVyLm1tOgorICAgICAgICAoV2ViR1BVOjpSZW5kZXJCdW5kbGVF
bmNvZGVyOjpmaW5pc2gpOgorICAgICAgICAod2dwdVJlbmRlckJ1bmRsZUVuY29kZXJEcmF3KToK
KyAgICAgICAgKHdncHVSZW5kZXJCdW5kbGVFbmNvZGVyRHJhd0luZGV4ZWQpOgorICAgICAgICAo
d2dwdVJlbmRlckJ1bmRsZUVuY29kZXJEcmF3SW5kZXhlZEluZGlyZWN0KToKKyAgICAgICAgKHdn
cHVSZW5kZXJCdW5kbGVFbmNvZGVyRHJhd0luZGlyZWN0KToKKyAgICAgICAgKHdncHVSZW5kZXJC
dW5kbGVFbmNvZGVyRmluaXNoKToKKyAgICAgICAgKHdncHVSZW5kZXJCdW5kbGVFbmNvZGVySW5z
ZXJ0RGVidWdNYXJrZXIpOgorICAgICAgICAod2dwdVJlbmRlckJ1bmRsZUVuY29kZXJQb3BEZWJ1
Z0dyb3VwKToKKyAgICAgICAgKHdncHVSZW5kZXJCdW5kbGVFbmNvZGVyUHVzaERlYnVnR3JvdXAp
OgorICAgICAgICAod2dwdVJlbmRlckJ1bmRsZUVuY29kZXJTZXRCaW5kR3JvdXApOgorICAgICAg
ICAod2dwdVJlbmRlckJ1bmRsZUVuY29kZXJTZXRJbmRleEJ1ZmZlcik6CisgICAgICAgICh3Z3B1
UmVuZGVyQnVuZGxlRW5jb2RlclNldFBpcGVsaW5lKToKKyAgICAgICAgKHdncHVSZW5kZXJCdW5k
bGVFbmNvZGVyU2V0VmVydGV4QnVmZmVyKToKKyAgICAgICAgKHdncHVSZW5kZXJCdW5kbGVFbmNv
ZGVyU2V0TGFiZWwpOgorICAgICAgICAqIFdlYkdQVS9SZW5kZXJQYXNzRW5jb2Rlci5oOgorICAg
ICAgICAoV2ViR1BVOjpSZW5kZXJQYXNzRW5jb2Rlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBXZWJH
UFUvUmVuZGVyUGFzc0VuY29kZXIubW06CisgICAgICAgICh3Z3B1UmVuZGVyUGFzc0VuY29kZXJC
ZWdpbk9jY2x1c2lvblF1ZXJ5KToKKyAgICAgICAgKHdncHVSZW5kZXJQYXNzRW5jb2RlckJlZ2lu
UGlwZWxpbmVTdGF0aXN0aWNzUXVlcnkpOgorICAgICAgICAod2dwdVJlbmRlclBhc3NFbmNvZGVy
RHJhdyk6CisgICAgICAgICh3Z3B1UmVuZGVyUGFzc0VuY29kZXJEcmF3SW5kZXhlZCk6CisgICAg
ICAgICh3Z3B1UmVuZGVyUGFzc0VuY29kZXJEcmF3SW5kZXhlZEluZGlyZWN0KToKKyAgICAgICAg
KHdncHVSZW5kZXJQYXNzRW5jb2RlckRyYXdJbmRpcmVjdCk6CisgICAgICAgICh3Z3B1UmVuZGVy
UGFzc0VuY29kZXJFbmRPY2NsdXNpb25RdWVyeSk6CisgICAgICAgICh3Z3B1UmVuZGVyUGFzc0Vu
Y29kZXJFbmRQYXNzKToKKyAgICAgICAgKHdncHVSZW5kZXJQYXNzRW5jb2RlckVuZFBpcGVsaW5l
U3RhdGlzdGljc1F1ZXJ5KToKKyAgICAgICAgKHdncHVSZW5kZXJQYXNzRW5jb2RlckV4ZWN1dGVC
dW5kbGVzKToKKyAgICAgICAgKHdncHVSZW5kZXJQYXNzRW5jb2Rlckluc2VydERlYnVnTWFya2Vy
KToKKyAgICAgICAgKHdncHVSZW5kZXJQYXNzRW5jb2RlclBvcERlYnVnR3JvdXApOgorICAgICAg
ICAod2dwdVJlbmRlclBhc3NFbmNvZGVyUHVzaERlYnVnR3JvdXApOgorICAgICAgICAod2dwdVJl
bmRlclBhc3NFbmNvZGVyU2V0QmluZEdyb3VwKToKKyAgICAgICAgKHdncHVSZW5kZXJQYXNzRW5j
b2RlclNldEJsZW5kQ29uc3RhbnQpOgorICAgICAgICAod2dwdVJlbmRlclBhc3NFbmNvZGVyU2V0
SW5kZXhCdWZmZXIpOgorICAgICAgICAod2dwdVJlbmRlclBhc3NFbmNvZGVyU2V0UGlwZWxpbmUp
OgorICAgICAgICAod2dwdVJlbmRlclBhc3NFbmNvZGVyU2V0U2Npc3NvclJlY3QpOgorICAgICAg
ICAod2dwdVJlbmRlclBhc3NFbmNvZGVyU2V0U3RlbmNpbFJlZmVyZW5jZSk6CisgICAgICAgICh3
Z3B1UmVuZGVyUGFzc0VuY29kZXJTZXRWZXJ0ZXhCdWZmZXIpOgorICAgICAgICAod2dwdVJlbmRl
clBhc3NFbmNvZGVyU2V0Vmlld3BvcnQpOgorICAgICAgICAod2dwdVJlbmRlclBhc3NFbmNvZGVy
V3JpdGVUaW1lc3RhbXApOgorICAgICAgICAod2dwdVJlbmRlclBhc3NFbmNvZGVyU2V0TGFiZWwp
OgorICAgICAgICAqIFdlYkdQVS9SZW5kZXJQaXBlbGluZS5oOgorICAgICAgICAoV2ViR1BVOjpS
ZW5kZXJQaXBlbGluZTo6Y3JlYXRlKToKKyAgICAgICAgKiBXZWJHUFUvUmVuZGVyUGlwZWxpbmUu
bW06CisgICAgICAgIChXZWJHUFU6OlJlbmRlclBpcGVsaW5lOjpnZXRCaW5kR3JvdXBMYXlvdXQp
OgorICAgICAgICAod2dwdVJlbmRlclBpcGVsaW5lR2V0QmluZEdyb3VwTGF5b3V0KToKKyAgICAg
ICAgKHdncHVSZW5kZXJQaXBlbGluZVNldExhYmVsKToKKyAgICAgICAgKiBXZWJHUFUvU2FtcGxl
ci5oOgorICAgICAgICAoV2ViR1BVOjpTYW1wbGVyOjpjcmVhdGUpOgorICAgICAgICAqIFdlYkdQ
VS9TYW1wbGVyLm1tOgorICAgICAgICAod2dwdVNhbXBsZXJTZXRMYWJlbCk6CisgICAgICAgICog
V2ViR1BVL1NoYWRlck1vZHVsZS5oOgorICAgICAgICAoV2ViR1BVOjpTaGFkZXJNb2R1bGU6OmNy
ZWF0ZSk6CisgICAgICAgICogV2ViR1BVL1NoYWRlck1vZHVsZS5tbToKKyAgICAgICAgKHdncHVT
aGFkZXJNb2R1bGVTZXRMYWJlbCk6CisgICAgICAgICogV2ViR1BVL1N1cmZhY2UuaDoKKyAgICAg
ICAgKFdlYkdQVTo6U3VyZmFjZTo6Y3JlYXRlKToKKyAgICAgICAgKiBXZWJHUFUvU3VyZmFjZS5t
bToKKyAgICAgICAgKHdncHVTdXJmYWNlR2V0UHJlZmVycmVkRm9ybWF0KToKKyAgICAgICAgKiBX
ZWJHUFUvU3dhcENoYWluLmg6CisgICAgICAgIChXZWJHUFU6OlN3YXBDaGFpbjo6Y3JlYXRlKToK
KyAgICAgICAgKiBXZWJHUFUvU3dhcENoYWluLm1tOgorICAgICAgICAoV2ViR1BVOjpTd2FwQ2hh
aW46OmdldEN1cnJlbnRUZXh0dXJlVmlldyk6CisgICAgICAgICh3Z3B1U3dhcENoYWluR2V0Q3Vy
cmVudFRleHR1cmVWaWV3KToKKyAgICAgICAgKHdncHVTd2FwQ2hhaW5QcmVzZW50KToKKyAgICAg
ICAgKiBXZWJHUFUvVGV4dHVyZS5oOgorICAgICAgICAoV2ViR1BVOjpUZXh0dXJlOjpjcmVhdGUp
OgorICAgICAgICAqIFdlYkdQVS9UZXh0dXJlLm1tOgorICAgICAgICAoV2ViR1BVOjpUZXh0dXJl
OjpjcmVhdGVWaWV3KToKKyAgICAgICAgKHdncHVUZXh0dXJlQ3JlYXRlVmlldyk6CisgICAgICAg
ICh3Z3B1VGV4dHVyZURlc3Ryb3kpOgorICAgICAgICAod2dwdVRleHR1cmVTZXRMYWJlbCk6Cisg
ICAgICAgICogV2ViR1BVL1RleHR1cmVWaWV3Lmg6CisgICAgICAgIChXZWJHUFU6OlRleHR1cmVW
aWV3OjpjcmVhdGUpOgorICAgICAgICAqIFdlYkdQVS9UZXh0dXJlVmlldy5tbToKKyAgICAgICAg
KHdncHVUZXh0dXJlVmlld1NldExhYmVsKToKKwogMjAyMS0xMS0xNiAgTXlsZXMgQy4gTWF4Zmll
bGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWJHUFVdIEFkZCBXR1NMVW5p
dFRlc3RzIFhDVGVzdCB0YXJnZXQgZm9yIFdlYkdQVQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQ
VS9XZWJHUFUvQWRhcHRlci5oIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQWRhcHRlci5oCmluZGV4
IDY4ZmRlZjFjZjhlMzg5OTdjZjI0ZGMzOWZmNzEyM2QzN2QxOGI5ZjIuLmU3ZDQzNDk4ODZlNjc5
MWM1YzViZDgzNzMzNGJjNTUyYjFiZGVkMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2Vi
R1BVL0FkYXB0ZXIuaAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9BZGFwdGVyLmgKQEAgLTI2
LDIzICsyNiwzNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbXBvcnQgIldlYkdQVS5oIgotI2ltcG9y
dCA8ZnVuY3Rpb25hbD4KKyNpbXBvcnQgPHd0Zi9GYXN0TWFsbG9jLmg+CisjaW1wb3J0IDx3dGYv
RnVuY3Rpb24uaD4KKyNpbXBvcnQgPHd0Zi9SZWYuaD4KKyNpbXBvcnQgPHd0Zi9SZWZDb3VudGVk
Lmg+CiAKIG5hbWVzcGFjZSBXZWJHUFUgewogCiBjbGFzcyBEZXZpY2U7CiAKLWNsYXNzIEFkYXB0
ZXIgeworY2xhc3MgQWRhcHRlciA6IHB1YmxpYyBSZWZDb3VudGVkPEFkYXB0ZXI+IHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKKyAgICBzdGF0aWMgUmVmPEFkYXB0ZXI+
IGNyZWF0ZSgpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBZGFwdGVyKCkp
OworICAgIH0KKworICAgIH5BZGFwdGVyKCk7CisKICAgICBib29sIGdldExpbWl0cyhXR1BVU3Vw
cG9ydGVkTGltaXRzKik7CiAgICAgdm9pZCBnZXRQcm9wZXJ0aWVzKFdHUFVBZGFwdGVyUHJvcGVy
dGllcyopOwogICAgIGJvb2wgaGFzRmVhdHVyZShXR1BVRmVhdHVyZU5hbWUpOwogICAgIFdHUFVG
ZWF0dXJlTmFtZSBnZXRGZWF0dXJlQXRJbmRleChzaXplX3QpOwotICAgIHZvaWQgcmVxdWVzdERl
dmljZShjb25zdCBXR1BVRGV2aWNlRGVzY3JpcHRvciosIHN0ZDo6ZnVuY3Rpb248dm9pZChXR1BV
UmVxdWVzdERldmljZVN0YXR1cywgRGV2aWNlJiYsIGNvbnN0IGNoYXIqKT4mJiBjYWxsYmFjayk7
CisgICAgdm9pZCByZXF1ZXN0RGV2aWNlKGNvbnN0IFdHUFVEZXZpY2VEZXNjcmlwdG9yKiwgV1RG
OjpGdW5jdGlvbjx2b2lkKFdHUFVSZXF1ZXN0RGV2aWNlU3RhdHVzLCBSZWY8RGV2aWNlPiYmLCBj
b25zdCBjaGFyKik+JiYgY2FsbGJhY2spOworCitwcml2YXRlOgorICAgIEFkYXB0ZXIoKTsKIH07
CiAKLX0KK30gLy8gbmFtZXNwYWNlIFdlYkdQVQogCiBzdHJ1Y3QgV0dQVUFkYXB0ZXJJbXBsIHsK
LSAgICBXZWJHUFU6OkFkYXB0ZXIgYWRhcHRlcjsKKyAgICBSZWY8V2ViR1BVOjpBZGFwdGVyPiBh
ZGFwdGVyOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0FkYXB0ZXIubW0g
Yi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9BZGFwdGVyLm1tCmluZGV4IGZkODBkOGQxZGE0ZDVkYTVh
MjQzOTFjN2YxZjE0YjlmYjg5ODRlMDEuLjQwNmMzM2JmN2M3MjFhYzc5ZmUyNzJmYTdmODc3NDQy
M2EzMDg3MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0FkYXB0ZXIubW0KKysr
IGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQWRhcHRlci5tbQpAQCAtMzIsNiArMzIsMTAgQEAKIAog
bmFtZXNwYWNlIFdlYkdQVSB7CiAKK0FkYXB0ZXI6OkFkYXB0ZXIoKSA9IGRlZmF1bHQ7CisKK0Fk
YXB0ZXI6On5BZGFwdGVyKCkgPSBkZWZhdWx0OworCiBib29sIEFkYXB0ZXI6OmdldExpbWl0cyhX
R1BVU3VwcG9ydGVkTGltaXRzKiBsaW1pdHMpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGxpbWl0cyk7
CkBAIC01NSw3ICs1OSw3IEBAIFdHUFVGZWF0dXJlTmFtZSBBZGFwdGVyOjpnZXRGZWF0dXJlQXRJ
bmRleChzaXplX3QgaW5kZXgpCiAgICAgcmV0dXJuIFdHUFVGZWF0dXJlTmFtZV9VbmRlZmluZWQ7
CiB9CiAKLXZvaWQgQWRhcHRlcjo6cmVxdWVzdERldmljZShjb25zdCBXR1BVRGV2aWNlRGVzY3Jp
cHRvciogZGVzY3JpcHRvciwgc3RkOjpmdW5jdGlvbjx2b2lkKFdHUFVSZXF1ZXN0RGV2aWNlU3Rh
dHVzLCBEZXZpY2UmJiwgY29uc3QgY2hhciopPiYmIGNhbGxiYWNrKQordm9pZCBBZGFwdGVyOjpy
ZXF1ZXN0RGV2aWNlKGNvbnN0IFdHUFVEZXZpY2VEZXNjcmlwdG9yKiBkZXNjcmlwdG9yLCBXVEY6
OkZ1bmN0aW9uPHZvaWQoV0dQVVJlcXVlc3REZXZpY2VTdGF0dXMsIFJlZjxEZXZpY2U+JiYsIGNv
bnN0IGNoYXIqKT4mJiBjYWxsYmFjaykKIHsKICAgICBVTlVTRURfUEFSQU0oZGVzY3JpcHRvcik7
CiAgICAgVU5VU0VEX1BBUkFNKGNhbGxiYWNrKTsKQEAgLTcwLDI3ICs3NCwyNyBAQCB2b2lkIHdn
cHVBZGFwdGVyUmVsZWFzZShXR1BVQWRhcHRlciBhZGFwdGVyKQogCiBib29sIHdncHVBZGFwdGVy
R2V0TGltaXRzKFdHUFVBZGFwdGVyIGFkYXB0ZXIsIFdHUFVTdXBwb3J0ZWRMaW1pdHMqIGxpbWl0
cykKIHsKLSAgICByZXR1cm4gYWRhcHRlci0+YWRhcHRlci5nZXRMaW1pdHMobGltaXRzKTsKKyAg
ICByZXR1cm4gYWRhcHRlci0+YWRhcHRlci0+Z2V0TGltaXRzKGxpbWl0cyk7CiB9CiAKIHZvaWQg
d2dwdUFkYXB0ZXJHZXRQcm9wZXJ0aWVzKFdHUFVBZGFwdGVyIGFkYXB0ZXIsIFdHUFVBZGFwdGVy
UHJvcGVydGllcyogcHJvcGVydGllcykKIHsKLSAgICBhZGFwdGVyLT5hZGFwdGVyLmdldFByb3Bl
cnRpZXMocHJvcGVydGllcyk7CisgICAgYWRhcHRlci0+YWRhcHRlci0+Z2V0UHJvcGVydGllcyhw
cm9wZXJ0aWVzKTsKIH0KIAogYm9vbCB3Z3B1QWRhcHRlckhhc0ZlYXR1cmUoV0dQVUFkYXB0ZXIg
YWRhcHRlciwgV0dQVUZlYXR1cmVOYW1lIGZlYXR1cmUpCiB7Ci0gICAgcmV0dXJuIGFkYXB0ZXIt
PmFkYXB0ZXIuaGFzRmVhdHVyZShmZWF0dXJlKTsKKyAgICByZXR1cm4gYWRhcHRlci0+YWRhcHRl
ci0+aGFzRmVhdHVyZShmZWF0dXJlKTsKIH0KIAogV0dQVUZlYXR1cmVOYW1lIHdncHVBZGFwdGVy
R2V0RmVhdHVyZUF0SW5kZXgoV0dQVUFkYXB0ZXIgYWRhcHRlciwgc2l6ZV90IGluZGV4KQogewot
ICAgIHJldHVybiBhZGFwdGVyLT5hZGFwdGVyLmdldEZlYXR1cmVBdEluZGV4KGluZGV4KTsKKyAg
ICByZXR1cm4gYWRhcHRlci0+YWRhcHRlci0+Z2V0RmVhdHVyZUF0SW5kZXgoaW5kZXgpOwogfQog
CiB2b2lkIHdncHVBZGFwdGVyUmVxdWVzdERldmljZShXR1BVQWRhcHRlciBhZGFwdGVyLCBjb25z
dCBXR1BVRGV2aWNlRGVzY3JpcHRvciogZGVzY3JpcHRvciwgV0dQVVJlcXVlc3REZXZpY2VDYWxs
YmFjayBjYWxsYmFjaywgdm9pZCogdXNlcmRhdGEpCiB7Ci0gICAgYWRhcHRlci0+YWRhcHRlci5y
ZXF1ZXN0RGV2aWNlKGRlc2NyaXB0b3IsIFtjYWxsYmFjaywgdXNlcmRhdGFdIChXR1BVUmVxdWVz
dERldmljZVN0YXR1cyBzdGF0dXMsIFdlYkdQVTo6RGV2aWNlJiYgZGV2aWNlLCBjb25zdCBjaGFy
KiBtZXNzYWdlKSB7CisgICAgYWRhcHRlci0+YWRhcHRlci0+cmVxdWVzdERldmljZShkZXNjcmlw
dG9yLCBbY2FsbGJhY2ssIHVzZXJkYXRhXSAoV0dQVVJlcXVlc3REZXZpY2VTdGF0dXMgc3RhdHVz
LCBSZWY8V2ViR1BVOjpEZXZpY2U+JiYgZGV2aWNlLCBjb25zdCBjaGFyKiBtZXNzYWdlKSB7CiAg
ICAgICAgIGNhbGxiYWNrKHN0YXR1cywgbmV3IFdHUFVEZXZpY2VJbXBsIHsgV1RGTW92ZShkZXZp
Y2UpIH0sIG1lc3NhZ2UsIHVzZXJkYXRhKTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJHUFUvV2ViR1BVL0JpbmRHcm91cC5oIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQmluZEdy
b3VwLmgKaW5kZXggYmM4MmIzOTk1Y2I5NmQyZThhY2M2ZGMxMDNmM2ZmNWFkMmMzMWVhNi4uMjI2
NzEyMjEzYjQ3OTFlYzY1NjNlNjhkNmUxOWU1Y2FiYmM2YzQzYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkdQVS9XZWJHUFUvQmluZEdyb3VwLmgKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQmlu
ZEdyb3VwLmgKQEAgLTI2LDE2ICsyNiwzMCBAQAogI3ByYWdtYSBvbmNlCiAKICNpbXBvcnQgIldl
YkdQVS5oIgorI2ltcG9ydCA8d3RmL0Zhc3RNYWxsb2MuaD4KKyNpbXBvcnQgPHd0Zi9SZWYuaD4K
KyNpbXBvcnQgPHd0Zi9SZWZDb3VudGVkLmg+CiAKIG5hbWVzcGFjZSBXZWJHUFUgewogCi1jbGFz
cyBCaW5kR3JvdXAgeworY2xhc3MgQmluZEdyb3VwIDogcHVibGljIFJlZkNvdW50ZWQ8QmluZEdy
b3VwPiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CisgICAgc3RhdGlj
IFJlZjxCaW5kR3JvdXA+IGNyZWF0ZSgpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBCaW5kR3JvdXAoKSk7CisgICAgfQorCisgICAgfkJpbmRHcm91cCgpOworCiAgICAgdm9p
ZCBzZXRMYWJlbChjb25zdCBjaGFyKik7CisKK3ByaXZhdGU6CisgICAgQmluZEdyb3VwKCk7CiB9
OwogCi19Cit9IC8vIG5hbWVzcGFjZSBXZWJHUFUKIAogc3RydWN0IFdHUFVCaW5kR3JvdXBJbXBs
IHsKLSAgICBXZWJHUFU6OkJpbmRHcm91cCBiaW5kR3JvdXA7CisgICAgUmVmPFdlYkdQVTo6Qmlu
ZEdyb3VwPiBiaW5kR3JvdXA7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUv
QmluZEdyb3VwLm1tIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQmluZEdyb3VwLm1tCmluZGV4IDA4
ZDIxMzI0YTU2YTRiODIwYmRlODgxMTJiNDZmYjJkMDcxZTEwNDYuLmMyYjc0NGRlYzZlM2RiMWUx
MGE4NWY5NzU0MzExMWEzOTFlMWU1ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BV
L0JpbmRHcm91cC5tbQorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9CaW5kR3JvdXAubW0KQEAg
LTMwLDYgKzMwLDEwIEBACiAKIG5hbWVzcGFjZSBXZWJHUFUgewogCitCaW5kR3JvdXA6OkJpbmRH
cm91cCgpID0gZGVmYXVsdDsKKworQmluZEdyb3VwOjp+QmluZEdyb3VwKCkgPSBkZWZhdWx0Owor
CiB2b2lkIEJpbmRHcm91cDo6c2V0TGFiZWwoY29uc3QgY2hhciogbGFiZWwpCiB7CiAgICAgVU5V
U0VEX1BBUkFNKGxhYmVsKTsKQEAgLTQ0LDUgKzQ4LDUgQEAgdm9pZCB3Z3B1QmluZEdyb3VwUmVs
ZWFzZShXR1BVQmluZEdyb3VwIGJpbmRHcm91cCkKIAogdm9pZCB3Z3B1QmluZEdyb3VwU2V0TGFi
ZWwoV0dQVUJpbmRHcm91cCBiaW5kR3JvdXAsIGNvbnN0IGNoYXIqIGxhYmVsKQogewotICAgIGJp
bmRHcm91cC0+YmluZEdyb3VwLnNldExhYmVsKGxhYmVsKTsKKyAgICBiaW5kR3JvdXAtPmJpbmRH
cm91cC0+c2V0TGFiZWwobGFiZWwpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJH
UFUvQmluZEdyb3VwTGF5b3V0LmggYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9CaW5kR3JvdXBMYXlv
dXQuaAppbmRleCAxNDkwYjNhZDg1YjY2MGJlMTc2MTMyNDIyNmNmMzQ1MjUwNzMxMjYyLi5jNDQw
MjRlNDc4MzhlYjRmNjJlOGNkNjA5ZGYzZDRmZTc3YmJjNGRiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViR1BVL1dlYkdQVS9CaW5kR3JvdXBMYXlvdXQuaAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQ
VS9CaW5kR3JvdXBMYXlvdXQuaApAQCAtMjYsMTYgKzI2LDMwIEBACiAjcHJhZ21hIG9uY2UKIAog
I2ltcG9ydCAiV2ViR1BVLmgiCisjaW1wb3J0IDx3dGYvRmFzdE1hbGxvYy5oPgorI2ltcG9ydCA8
d3RmL1JlZi5oPgorI2ltcG9ydCA8d3RmL1JlZkNvdW50ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkdQ
VSB7CiAKLWNsYXNzIEJpbmRHcm91cExheW91dCB7CitjbGFzcyBCaW5kR3JvdXBMYXlvdXQgOiBw
dWJsaWMgUmVmQ291bnRlZDxCaW5kR3JvdXBMYXlvdXQ+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKKyAgICBzdGF0aWMgUmVmPEJpbmRHcm91cExheW91dD4gY3JlYXRl
KCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEJpbmRHcm91cExheW91dCgp
KTsKKyAgICB9CisKKyAgICB+QmluZEdyb3VwTGF5b3V0KCk7CisKICAgICB2b2lkIHNldExhYmVs
KGNvbnN0IGNoYXIqKTsKKworcHJpdmF0ZToKKyAgICBCaW5kR3JvdXBMYXlvdXQoKTsKIH07CiAK
LX0KK30gLy8gbmFtZXNwYWNlIFdlYkdQVQogCiBzdHJ1Y3QgV0dQVUJpbmRHcm91cExheW91dElt
cGwgewotICAgIFdlYkdQVTo6QmluZEdyb3VwTGF5b3V0IGJpbmRHcm91cExheW91dDsKKyAgICBS
ZWY8V2ViR1BVOjpCaW5kR3JvdXBMYXlvdXQ+IGJpbmRHcm91cExheW91dDsKIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9CaW5kR3JvdXBMYXlvdXQubW0gYi9Tb3VyY2UvV2Vi
R1BVL1dlYkdQVS9CaW5kR3JvdXBMYXlvdXQubW0KaW5kZXggMjhmMGZhNWE1OTc2ZGJmZDY1MTY4
MDRkMjE3MjZlMTQzMjQ1NTcyNC4uYjM3MzQ4OGFmODUxMzk1ZjExYTA4NjNjYjM4NTRlMGU1M2I1
NDNjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUvQmluZEdyb3VwTGF5b3V0Lm1t
CisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0JpbmRHcm91cExheW91dC5tbQpAQCAtMzAsNiAr
MzAsMTAgQEAKIAogbmFtZXNwYWNlIFdlYkdQVSB7CiAKK0JpbmRHcm91cExheW91dDo6QmluZEdy
b3VwTGF5b3V0KCkgPSBkZWZhdWx0OworCitCaW5kR3JvdXBMYXlvdXQ6On5CaW5kR3JvdXBMYXlv
dXQoKSA9IGRlZmF1bHQ7CisKIHZvaWQgQmluZEdyb3VwTGF5b3V0OjpzZXRMYWJlbChjb25zdCBj
aGFyKiBsYWJlbCkKIHsKICAgICBVTlVTRURfUEFSQU0obGFiZWwpOwpAQCAtNDQsNSArNDgsNSBA
QCB2b2lkIHdncHVCaW5kR3JvdXBMYXlvdXRSZWxlYXNlKFdHUFVCaW5kR3JvdXBMYXlvdXQgYmlu
ZEdyb3VwTGF5b3V0KQogCiB2b2lkIHdncHVCaW5kR3JvdXBMYXlvdXRTZXRMYWJlbChXR1BVQmlu
ZEdyb3VwTGF5b3V0IGJpbmRHcm91cExheW91dCwgY29uc3QgY2hhciogbGFiZWwpCiB7Ci0gICAg
YmluZEdyb3VwTGF5b3V0LT5iaW5kR3JvdXBMYXlvdXQuc2V0TGFiZWwobGFiZWwpOworICAgIGJp
bmRHcm91cExheW91dC0+YmluZEdyb3VwTGF5b3V0LT5zZXRMYWJlbChsYWJlbCk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9CdWZmZXIuaCBiL1NvdXJjZS9XZWJHUFUvV2Vi
R1BVL0J1ZmZlci5oCmluZGV4IDRjMWIyZTRkZmNhYmJlZDFkZWQ3NTBjZDkzM2E4ZDVhMTM5ZTg4
ODguLmMzNGI3Y2MwN2UwZWMxMGQwZjg3MTc2NDIyMjc2YzM3Y2MxMzU0NzMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJHUFUvV2ViR1BVL0J1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BV
L0J1ZmZlci5oCkBAIC0yNiwyMiArMjYsMzYgQEAKICNwcmFnbWEgb25jZQogCiAjaW1wb3J0ICJX
ZWJHUFUuaCIKLSNpbXBvcnQgPGZ1bmN0aW9uYWw+CisjaW1wb3J0IDx3dGYvRmFzdE1hbGxvYy5o
PgorI2ltcG9ydCA8d3RmL0Z1bmN0aW9uLmg+CisjaW1wb3J0IDx3dGYvUmVmLmg+CisjaW1wb3J0
IDx3dGYvUmVmQ291bnRlZC5oPgogCiBuYW1lc3BhY2UgV2ViR1BVIHsKIAotY2xhc3MgQnVmZmVy
IHsKK2NsYXNzIEJ1ZmZlciA6IHB1YmxpYyBSZWZDb3VudGVkPEJ1ZmZlcj4geworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgorICAgIHN0YXRpYyBSZWY8QnVmZmVyPiBjcmVh
dGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQnVmZmVyKCkpOworICAg
IH0KKworICAgIH5CdWZmZXIoKTsKKwogICAgIHZvaWQgZGVzdHJveSgpOwogICAgIGNvbnN0IHZv
aWQqIGdldENvbnN0TWFwcGVkUmFuZ2Uoc2l6ZV90IG9mZnNldCwgc2l6ZV90KTsKICAgICB2b2lk
KiBnZXRNYXBwZWRSYW5nZShzaXplX3Qgb2Zmc2V0LCBzaXplX3QpOwotICAgIHZvaWQgbWFwQXN5
bmMoV0dQVU1hcE1vZGVGbGFncywgc2l6ZV90IG9mZnNldCwgc2l6ZV90LCBzdGQ6OmZ1bmN0aW9u
PHZvaWQoV0dQVUJ1ZmZlck1hcEFzeW5jU3RhdHVzKT4mJiBjYWxsYmFjayk7CisgICAgdm9pZCBt
YXBBc3luYyhXR1BVTWFwTW9kZUZsYWdzLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3QsIFdURjo6RnVu
Y3Rpb248dm9pZChXR1BVQnVmZmVyTWFwQXN5bmNTdGF0dXMpPiYmIGNhbGxiYWNrKTsKICAgICB2
b2lkIHVubWFwKCk7CiAgICAgdm9pZCBzZXRMYWJlbChjb25zdCBjaGFyKik7CisKK3ByaXZhdGU6
CisgICAgQnVmZmVyKCk7CiB9OwogCi19Cit9IC8vIG5hbWVzcGFjZSBXZWJHUFUKIAogc3RydWN0
IFdHUFVCdWZmZXJJbXBsIHsKLSAgICBXZWJHUFU6OkJ1ZmZlciBidWZmZXI7CisgICAgUmVmPFdl
YkdQVTo6QnVmZmVyPiBidWZmZXI7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJH
UFUvQnVmZmVyLm1tIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQnVmZmVyLm1tCmluZGV4IDg4Y2I4
Mjk4MWY4NWJlZTljOTc0ODRmMjk3NDk0NzBiYzgxMzYwODUuLjlmNjM5N2E5MzA5YWU2MDAwMWYw
Y2VkODNiNGIwZGQ4NDBmYjc3NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0J1
ZmZlci5tbQorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9CdWZmZXIubW0KQEAgLTMwLDYgKzMw
LDEwIEBACiAKIG5hbWVzcGFjZSBXZWJHUFUgewogCitCdWZmZXI6OkJ1ZmZlcigpID0gZGVmYXVs
dDsKKworQnVmZmVyOjp+QnVmZmVyKCkgPSBkZWZhdWx0OworCiB2b2lkIEJ1ZmZlcjo6ZGVzdHJv
eSgpCiB7CiB9CkBAIC00OCw3ICs1Miw3IEBAIHZvaWQqIEJ1ZmZlcjo6Z2V0TWFwcGVkUmFuZ2Uo
c2l6ZV90IG9mZnNldCwgc2l6ZV90IHNpemUpCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLXZv
aWQgQnVmZmVyOjptYXBBc3luYyhXR1BVTWFwTW9kZUZsYWdzIG1vZGUsIHNpemVfdCBvZmZzZXQs
IHNpemVfdCBzaXplLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoV0dQVUJ1ZmZlck1hcEFzeW5jU3RhdHVz
KT4mJiBjYWxsYmFjaykKK3ZvaWQgQnVmZmVyOjptYXBBc3luYyhXR1BVTWFwTW9kZUZsYWdzIG1v
ZGUsIHNpemVfdCBvZmZzZXQsIHNpemVfdCBzaXplLCBXVEY6OkZ1bmN0aW9uPHZvaWQoV0dQVUJ1
ZmZlck1hcEFzeW5jU3RhdHVzKT4mJiBjYWxsYmFjaykKIHsKICAgICBVTlVTRURfUEFSQU0obW9k
ZSk7CiAgICAgVU5VU0VEX1BBUkFNKG9mZnNldCk7CkBAIC03NCwzMiArNzgsMzIgQEAgdm9pZCB3
Z3B1QnVmZmVyUmVsZWFzZShXR1BVQnVmZmVyIGJ1ZmZlcikKIAogdm9pZCB3Z3B1QnVmZmVyRGVz
dHJveShXR1BVQnVmZmVyIGJ1ZmZlcikKIHsKLSAgICBidWZmZXItPmJ1ZmZlci5kZXN0cm95KCk7
CisgICAgYnVmZmVyLT5idWZmZXItPmRlc3Ryb3koKTsKIH0KIAogY29uc3Qgdm9pZCogd2dwdUJ1
ZmZlckdldENvbnN0TWFwcGVkUmFuZ2UoV0dQVUJ1ZmZlciBidWZmZXIsIHNpemVfdCBvZmZzZXQs
IHNpemVfdCBzaXplKQogewotICAgIHJldHVybiBidWZmZXItPmJ1ZmZlci5nZXRDb25zdE1hcHBl
ZFJhbmdlKG9mZnNldCwgc2l6ZSk7CisgICAgcmV0dXJuIGJ1ZmZlci0+YnVmZmVyLT5nZXRDb25z
dE1hcHBlZFJhbmdlKG9mZnNldCwgc2l6ZSk7CiB9CiAKIHZvaWQqIHdncHVCdWZmZXJHZXRNYXBw
ZWRSYW5nZShXR1BVQnVmZmVyIGJ1ZmZlciwgc2l6ZV90IG9mZnNldCwgc2l6ZV90IHNpemUpCiB7
Ci0gICAgcmV0dXJuIGJ1ZmZlci0+YnVmZmVyLmdldE1hcHBlZFJhbmdlKG9mZnNldCwgc2l6ZSk7
CisgICAgcmV0dXJuIGJ1ZmZlci0+YnVmZmVyLT5nZXRNYXBwZWRSYW5nZShvZmZzZXQsIHNpemUp
OwogfQogCiB2b2lkIHdncHVCdWZmZXJNYXBBc3luYyhXR1BVQnVmZmVyIGJ1ZmZlciwgV0dQVU1h
cE1vZGVGbGFncyBtb2RlLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3Qgc2l6ZSwgV0dQVUJ1ZmZlck1h
cENhbGxiYWNrIGNhbGxiYWNrLCB2b2lkKiB1c2VyZGF0YSkKIHsKLSAgICBidWZmZXItPmJ1ZmZl
ci5tYXBBc3luYyhtb2RlLCBvZmZzZXQsIHNpemUsIFtjYWxsYmFjaywgdXNlcmRhdGFdIChXR1BV
QnVmZmVyTWFwQXN5bmNTdGF0dXMgc3RhdHVzKSB7CisgICAgYnVmZmVyLT5idWZmZXItPm1hcEFz
eW5jKG1vZGUsIG9mZnNldCwgc2l6ZSwgW2NhbGxiYWNrLCB1c2VyZGF0YV0gKFdHUFVCdWZmZXJN
YXBBc3luY1N0YXR1cyBzdGF0dXMpIHsKICAgICAgICAgY2FsbGJhY2soc3RhdHVzLCB1c2VyZGF0
YSk7CiAgICAgfSk7CiB9CiAKIHZvaWQgd2dwdUJ1ZmZlclVubWFwKFdHUFVCdWZmZXIgYnVmZmVy
KQogewotICAgIGJ1ZmZlci0+YnVmZmVyLnVubWFwKCk7CisgICAgYnVmZmVyLT5idWZmZXItPnVu
bWFwKCk7CiB9CiAKIHZvaWQgd2dwdUJ1ZmZlclNldExhYmVsKFdHUFVCdWZmZXIgYnVmZmVyLCBj
b25zdCBjaGFyKiBsYWJlbCkKIHsKLSAgICBidWZmZXItPmJ1ZmZlci5zZXRMYWJlbChsYWJlbCk7
CisgICAgYnVmZmVyLT5idWZmZXItPnNldExhYmVsKGxhYmVsKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJHUFUvV2ViR1BVL0NvbW1hbmRCdWZmZXIuaCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BV
L0NvbW1hbmRCdWZmZXIuaAppbmRleCBiODVkYTdlMmExMGZlNWFhY2RmODJjYjIxMTJhYjg0NTlj
MTg3ZGRjLi42ZjhmNDY2ZmNjMDdkN2ZjODliZGJiZmQ2MmIyOTM0ZDQ1OWNjYzJiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9Db21tYW5kQnVmZmVyLmgKKysrIGIvU291cmNlL1dl
YkdQVS9XZWJHUFUvQ29tbWFuZEJ1ZmZlci5oCkBAIC0yNiwxNiArMjYsMzAgQEAKICNwcmFnbWEg
b25jZQogCiAjaW1wb3J0ICJXZWJHUFUuaCIKKyNpbXBvcnQgPHd0Zi9GYXN0TWFsbG9jLmg+Cisj
aW1wb3J0IDx3dGYvUmVmLmg+CisjaW1wb3J0IDx3dGYvUmVmQ291bnRlZC5oPgogCiBuYW1lc3Bh
Y2UgV2ViR1BVIHsKIAotY2xhc3MgQ29tbWFuZEJ1ZmZlciB7CitjbGFzcyBDb21tYW5kQnVmZmVy
IDogcHVibGljIFJlZkNvdW50ZWQ8Q29tbWFuZEJ1ZmZlcj4geworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgorICAgIHN0YXRpYyBSZWY8Q29tbWFuZEJ1ZmZlcj4gY3JlYXRl
KCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENvbW1hbmRCdWZmZXIoKSk7
CisgICAgfQorCisgICAgfkNvbW1hbmRCdWZmZXIoKTsKKwogICAgIHZvaWQgc2V0TGFiZWwoY29u
c3QgY2hhciopOworCitwcml2YXRlOgorICAgIENvbW1hbmRCdWZmZXIoKTsKIH07CiAKLX0KK30g
Ly8gbmFtZXNwYWNlIFdlYkdQVQogCiBzdHJ1Y3QgV0dQVUNvbW1hbmRCdWZmZXJJbXBsIHsKLSAg
ICBXZWJHUFU6OkNvbW1hbmRCdWZmZXIgY29tbWFuZEJ1ZmZlcjsKKyAgICBSZWY8V2ViR1BVOjpD
b21tYW5kQnVmZmVyPiBjb21tYW5kQnVmZmVyOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJH
UFUvV2ViR1BVL0NvbW1hbmRCdWZmZXIubW0gYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9Db21tYW5k
QnVmZmVyLm1tCmluZGV4IDY3NDRkNjE5MjkyNzRjZTQ2M2IxNjYwYTliMTNhODU1MzZhMDllM2Mu
LjhiOTdjMGU2Njc4ZWY2MWVmNTQ3YjI3MjJiNGY2YzRlNjkzNjk2YTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJHUFUvV2ViR1BVL0NvbW1hbmRCdWZmZXIubW0KKysrIGIvU291cmNlL1dlYkdQVS9X
ZWJHUFUvQ29tbWFuZEJ1ZmZlci5tbQpAQCAtMzAsNiArMzAsMTAgQEAKIAogbmFtZXNwYWNlIFdl
YkdQVSB7CiAKK0NvbW1hbmRCdWZmZXI6OkNvbW1hbmRCdWZmZXIoKSA9IGRlZmF1bHQ7CisKK0Nv
bW1hbmRCdWZmZXI6On5Db21tYW5kQnVmZmVyKCkgPSBkZWZhdWx0OworCiB2b2lkIENvbW1hbmRC
dWZmZXI6OnNldExhYmVsKGNvbnN0IGNoYXIqIGxhYmVsKQogewogICAgIFVOVVNFRF9QQVJBTShs
YWJlbCk7CkBAIC00NCw1ICs0OCw1IEBAIHZvaWQgd2dwdUNvbW1hbmRCdWZmZXJSZWxlYXNlKFdH
UFVDb21tYW5kQnVmZmVyIGNvbW1hbmRCdWZmZXIpCiAKIHZvaWQgd2dwdUNvbW1hbmRCdWZmZXJT
ZXRMYWJlbChXR1BVQ29tbWFuZEJ1ZmZlciBjb21tYW5kQnVmZmVyLCBjb25zdCBjaGFyKiBsYWJl
bCkKIHsKLSAgICBjb21tYW5kQnVmZmVyLT5jb21tYW5kQnVmZmVyLnNldExhYmVsKGxhYmVsKTsK
KyAgICBjb21tYW5kQnVmZmVyLT5jb21tYW5kQnVmZmVyLT5zZXRMYWJlbChsYWJlbCk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9Db21tYW5kRW5jb2Rlci5oIGIvU291cmNl
L1dlYkdQVS9XZWJHUFUvQ29tbWFuZEVuY29kZXIuaAppbmRleCAyM2E2ODdjYzMxYTFhMDhhMTc5
NWVmNzAzNjFmMjg3NDc4YmVmNjQxLi41OWNiNDMxMmQzNWJhOTQzMzhiOGNlNGJmN2QwNGU1Mzlm
Mjk5Zjc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9Db21tYW5kRW5jb2Rlci5o
CisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbW1hbmRFbmNvZGVyLmgKQEAgLTI2LDYgKzI2
LDkgQEAKICNwcmFnbWEgb25jZQogCiAjaW1wb3J0ICJXZWJHUFUuaCIKKyNpbXBvcnQgPHd0Zi9G
YXN0TWFsbG9jLmg+CisjaW1wb3J0IDx3dGYvUmVmLmg+CisjaW1wb3J0IDx3dGYvUmVmQ291bnRl
ZC5oPgogCiBuYW1lc3BhY2UgV2ViR1BVIHsKIApAQCAtMzUsMjYgKzM4LDM3IEBAIGNsYXNzIENv
bXB1dGVQYXNzRW5jb2RlcjsKIGNsYXNzIFF1ZXJ5U2V0OwogY2xhc3MgUmVuZGVyUGFzc0VuY29k
ZXI7CiAKLWNsYXNzIENvbW1hbmRFbmNvZGVyIHsKK2NsYXNzIENvbW1hbmRFbmNvZGVyIDogcHVi
bGljIFJlZkNvdW50ZWQ8Q29tbWFuZEVuY29kZXI+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKLSAgICBDb21wdXRlUGFzc0VuY29kZXIgYmVnaW5Db21wdXRlUGFzcyhj
b25zdCBXR1BVQ29tcHV0ZVBhc3NEZXNjcmlwdG9yKik7Ci0gICAgUmVuZGVyUGFzc0VuY29kZXIg
YmVnaW5SZW5kZXJQYXNzKGNvbnN0IFdHUFVSZW5kZXJQYXNzRGVzY3JpcHRvciopOworICAgIHN0
YXRpYyBSZWY8Q29tbWFuZEVuY29kZXI+IGNyZWF0ZSgpCisgICAgeworICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBDb21tYW5kRW5jb2RlcigpKTsKKyAgICB9CisKKyAgICB+Q29tbWFuZEVu
Y29kZXIoKTsKKworICAgIFJlZjxDb21wdXRlUGFzc0VuY29kZXI+IGJlZ2luQ29tcHV0ZVBhc3Mo
Y29uc3QgV0dQVUNvbXB1dGVQYXNzRGVzY3JpcHRvciopOworICAgIFJlZjxSZW5kZXJQYXNzRW5j
b2Rlcj4gYmVnaW5SZW5kZXJQYXNzKGNvbnN0IFdHUFVSZW5kZXJQYXNzRGVzY3JpcHRvciopOwog
ICAgIHZvaWQgY29weUJ1ZmZlclRvQnVmZmVyKGNvbnN0IEJ1ZmZlciYgc291cmNlLCB1aW50NjRf
dCBzb3VyY2VPZmZzZXQsIGNvbnN0IEJ1ZmZlciYgZGVzdGluYXRpb24sIHVpbnQ2NF90IGRlc3Rp
bmF0aW9uT2Zmc2V0LCB1aW50NjRfdCBzaXplKTsKICAgICB2b2lkIGNvcHlCdWZmZXJUb1RleHR1
cmUoY29uc3QgV0dQVUltYWdlQ29weUJ1ZmZlciogc291cmNlLCBjb25zdCBXR1BVSW1hZ2VDb3B5
VGV4dHVyZSogZGVzdGluYXRpb24sIGNvbnN0IFdHUFVFeHRlbnQzRCogY29weVNpemUpOwogICAg
IHZvaWQgY29weVRleHR1cmVUb0J1ZmZlcihjb25zdCBXR1BVSW1hZ2VDb3B5VGV4dHVyZSogc291
cmNlLCBjb25zdCBXR1BVSW1hZ2VDb3B5QnVmZmVyKiBkZXN0aW5hdGlvbiwgY29uc3QgV0dQVUV4
dGVudDNEKiBjb3B5U2l6ZSk7CiAgICAgdm9pZCBjb3B5VGV4dHVyZVRvVGV4dHVyZShjb25zdCBX
R1BVSW1hZ2VDb3B5VGV4dHVyZSogc291cmNlLCBjb25zdCBXR1BVSW1hZ2VDb3B5VGV4dHVyZSog
ZGVzdGluYXRpb24sIGNvbnN0IFdHUFVFeHRlbnQzRCogY29weVNpemUpOwogICAgIHZvaWQgZmls
bEJ1ZmZlcihjb25zdCBCdWZmZXImIGRlc3RpbmF0aW9uLCB1aW50NjRfdCBkZXN0aW5hdGlvbk9m
ZnNldCwgdWludDY0X3Qgc2l6ZSk7Ci0gICAgQ29tbWFuZEJ1ZmZlciBmaW5pc2goY29uc3QgV0dQ
VUNvbW1hbmRCdWZmZXJEZXNjcmlwdG9yKik7CisgICAgUmVmPENvbW1hbmRCdWZmZXI+IGZpbmlz
aChjb25zdCBXR1BVQ29tbWFuZEJ1ZmZlckRlc2NyaXB0b3IqKTsKICAgICB2b2lkIGluc2VydERl
YnVnTWFya2VyKGNvbnN0IGNoYXIqIG1hcmtlckxhYmVsKTsKICAgICB2b2lkIHBvcERlYnVnR3Jv
dXAoKTsKICAgICB2b2lkIHB1c2hEZWJ1Z0dyb3VwKGNvbnN0IGNoYXIqIGdyb3VwTGFiZWwpOwog
ICAgIHZvaWQgcmVzb2x2ZVF1ZXJ5U2V0KGNvbnN0IFF1ZXJ5U2V0JiwgdWludDMyX3QgZmlyc3RR
dWVyeSwgdWludDMyX3QgcXVlcnlDb3VudCwgY29uc3QgQnVmZmVyJiBkZXN0aW5hdGlvbiwgdWlu
dDY0X3QgZGVzdGluYXRpb25PZmZzZXQpOwogICAgIHZvaWQgd3JpdGVUaW1lc3RhbXAoY29uc3Qg
UXVlcnlTZXQmLCB1aW50MzJfdCBxdWVyeUluZGV4KTsKICAgICB2b2lkIHNldExhYmVsKGNvbnN0
IGNoYXIqKTsKKworcHJpdmF0ZToKKyAgICBDb21tYW5kRW5jb2RlcigpOwogfTsKIAotfQorfSAv
LyBuYW1lc3BhY2UgV2ViR1BVCiAKIHN0cnVjdCBXR1BVQ29tbWFuZEVuY29kZXJJbXBsIHsKLSAg
ICBXZWJHUFU6OkNvbW1hbmRFbmNvZGVyIGNvbW1hbmRFbmNvZGVyOworICAgIFJlZjxXZWJHUFU6
OkNvbW1hbmRFbmNvZGVyPiBjb21tYW5kRW5jb2RlcjsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViR1BVL1dlYkdQVS9Db21tYW5kRW5jb2Rlci5tbSBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0Nv
bW1hbmRFbmNvZGVyLm1tCmluZGV4IDc1MjEyODIzNjRjNjcxNTllMDI3MGUxYjg0YmViMmYzYjI4
NGYzMzIuLjhkMzhlMTc5YTQ0Mzk3YmZmODM2MGVmNDE0YzhmNzJmMDE1YmRhZmYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbW1hbmRFbmNvZGVyLm1tCisrKyBiL1NvdXJjZS9X
ZWJHUFUvV2ViR1BVL0NvbW1hbmRFbmNvZGVyLm1tCkBAIC0zNSwxNiArMzUsMjAgQEAKIAogbmFt
ZXNwYWNlIFdlYkdQVSB7CiAKLUNvbXB1dGVQYXNzRW5jb2RlciBDb21tYW5kRW5jb2Rlcjo6YmVn
aW5Db21wdXRlUGFzcyhjb25zdCBXR1BVQ29tcHV0ZVBhc3NEZXNjcmlwdG9yKiBkZXNjcmlwdG9y
KQorQ29tbWFuZEVuY29kZXI6OkNvbW1hbmRFbmNvZGVyKCkgPSBkZWZhdWx0OworCitDb21tYW5k
RW5jb2Rlcjo6fkNvbW1hbmRFbmNvZGVyKCkgPSBkZWZhdWx0OworCitSZWY8Q29tcHV0ZVBhc3NF
bmNvZGVyPiBDb21tYW5kRW5jb2Rlcjo6YmVnaW5Db21wdXRlUGFzcyhjb25zdCBXR1BVQ29tcHV0
ZVBhc3NEZXNjcmlwdG9yKiBkZXNjcmlwdG9yKQogewogICAgIFVOVVNFRF9QQVJBTShkZXNjcmlw
dG9yKTsKLSAgICByZXR1cm4geyB9OworICAgIHJldHVybiBDb21wdXRlUGFzc0VuY29kZXI6OmNy
ZWF0ZSgpOwogfQogCi1SZW5kZXJQYXNzRW5jb2RlciBDb21tYW5kRW5jb2Rlcjo6YmVnaW5SZW5k
ZXJQYXNzKGNvbnN0IFdHUFVSZW5kZXJQYXNzRGVzY3JpcHRvciogZGVzY3JpcHRvcikKK1JlZjxS
ZW5kZXJQYXNzRW5jb2Rlcj4gQ29tbWFuZEVuY29kZXI6OmJlZ2luUmVuZGVyUGFzcyhjb25zdCBX
R1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IqIGRlc2NyaXB0b3IpCiB7CiAgICAgVU5VU0VEX1BBUkFN
KGRlc2NyaXB0b3IpOwotICAgIHJldHVybiB7IH07CisgICAgcmV0dXJuIFJlbmRlclBhc3NFbmNv
ZGVyOjpjcmVhdGUoKTsKIH0KIAogdm9pZCBDb21tYW5kRW5jb2Rlcjo6Y29weUJ1ZmZlclRvQnVm
ZmVyKGNvbnN0IEJ1ZmZlciYgc291cmNlLCB1aW50NjRfdCBzb3VyY2VPZmZzZXQsIGNvbnN0IEJ1
ZmZlciYgZGVzdGluYXRpb24sIHVpbnQ2NF90IGRlc3RpbmF0aW9uT2Zmc2V0LCB1aW50NjRfdCBz
aXplKQpAQCAtODQsMTAgKzg4LDEwIEBAIHZvaWQgQ29tbWFuZEVuY29kZXI6OmZpbGxCdWZmZXIo
Y29uc3QgQnVmZmVyJiBkZXN0aW5hdGlvbiwgdWludDY0X3QgZGVzdGluYXRpb25PCiAgICAgVU5V
U0VEX1BBUkFNKHNpemUpOwogfQogCi1Db21tYW5kQnVmZmVyIENvbW1hbmRFbmNvZGVyOjpmaW5p
c2goY29uc3QgV0dQVUNvbW1hbmRCdWZmZXJEZXNjcmlwdG9yKiBkZXNjcmlwdG9yKQorUmVmPENv
bW1hbmRCdWZmZXI+IENvbW1hbmRFbmNvZGVyOjpmaW5pc2goY29uc3QgV0dQVUNvbW1hbmRCdWZm
ZXJEZXNjcmlwdG9yKiBkZXNjcmlwdG9yKQogewogICAgIFVOVVNFRF9QQVJBTShkZXNjcmlwdG9y
KTsKLSAgICByZXR1cm4geyB9OworICAgIHJldHVybiBDb21tYW5kQnVmZmVyOjpjcmVhdGUoKTsK
IH0KIAogdm9pZCBDb21tYW5kRW5jb2Rlcjo6aW5zZXJ0RGVidWdNYXJrZXIoY29uc3QgY2hhciog
bWFya2VyTGFiZWwpCkBAIC0xMzMsNzEgKzEzNyw3MSBAQCB2b2lkIHdncHVDb21tYW5kRW5jb2Rl
clJlbGVhc2UoV0dQVUNvbW1hbmRFbmNvZGVyIGNvbW1hbmRFbmNvZGVyKQogCiBXR1BVQ29tcHV0
ZVBhc3NFbmNvZGVyIHdncHVDb21tYW5kRW5jb2RlckJlZ2luQ29tcHV0ZVBhc3MoV0dQVUNvbW1h
bmRFbmNvZGVyIGNvbW1hbmRFbmNvZGVyLCBjb25zdCBXR1BVQ29tcHV0ZVBhc3NEZXNjcmlwdG9y
KiBkZXNjcmlwdG9yKQogewotICAgIHJldHVybiBuZXcgV0dQVUNvbXB1dGVQYXNzRW5jb2Rlcklt
cGwgeyBjb21tYW5kRW5jb2Rlci0+Y29tbWFuZEVuY29kZXIuYmVnaW5Db21wdXRlUGFzcyhkZXNj
cmlwdG9yKSB9OworICAgIHJldHVybiBuZXcgV0dQVUNvbXB1dGVQYXNzRW5jb2RlckltcGwgeyBj
b21tYW5kRW5jb2Rlci0+Y29tbWFuZEVuY29kZXItPmJlZ2luQ29tcHV0ZVBhc3MoZGVzY3JpcHRv
cikgfTsKIH0KIAogV0dQVVJlbmRlclBhc3NFbmNvZGVyIHdncHVDb21tYW5kRW5jb2RlckJlZ2lu
UmVuZGVyUGFzcyhXR1BVQ29tbWFuZEVuY29kZXIgY29tbWFuZEVuY29kZXIsIGNvbnN0IFdHUFVS
ZW5kZXJQYXNzRGVzY3JpcHRvciogZGVzY3JpcHRvcikKIHsKLSAgICByZXR1cm4gbmV3IFdHUFVS
ZW5kZXJQYXNzRW5jb2RlckltcGwgeyBjb21tYW5kRW5jb2Rlci0+Y29tbWFuZEVuY29kZXIuYmVn
aW5SZW5kZXJQYXNzKGRlc2NyaXB0b3IpIH07CisgICAgcmV0dXJuIG5ldyBXR1BVUmVuZGVyUGFz
c0VuY29kZXJJbXBsIHsgY29tbWFuZEVuY29kZXItPmNvbW1hbmRFbmNvZGVyLT5iZWdpblJlbmRl
clBhc3MoZGVzY3JpcHRvcikgfTsKIH0KIAogdm9pZCB3Z3B1Q29tbWFuZEVuY29kZXJDb3B5QnVm
ZmVyVG9CdWZmZXIoV0dQVUNvbW1hbmRFbmNvZGVyIGNvbW1hbmRFbmNvZGVyLCBXR1BVQnVmZmVy
IHNvdXJjZSwgdWludDY0X3Qgc291cmNlT2Zmc2V0LCBXR1BVQnVmZmVyIGRlc3RpbmF0aW9uLCB1
aW50NjRfdCBkZXN0aW5hdGlvbk9mZnNldCwgdWludDY0X3Qgc2l6ZSkKIHsKLSAgICBjb21tYW5k
RW5jb2Rlci0+Y29tbWFuZEVuY29kZXIuY29weUJ1ZmZlclRvQnVmZmVyKHNvdXJjZS0+YnVmZmVy
LCBzb3VyY2VPZmZzZXQsIGRlc3RpbmF0aW9uLT5idWZmZXIsIGRlc3RpbmF0aW9uT2Zmc2V0LCBz
aXplKTsKKyAgICBjb21tYW5kRW5jb2Rlci0+Y29tbWFuZEVuY29kZXItPmNvcHlCdWZmZXJUb0J1
ZmZlcihzb3VyY2UtPmJ1ZmZlciwgc291cmNlT2Zmc2V0LCBkZXN0aW5hdGlvbi0+YnVmZmVyLCBk
ZXN0aW5hdGlvbk9mZnNldCwgc2l6ZSk7CiB9CiAKIHZvaWQgd2dwdUNvbW1hbmRFbmNvZGVyQ29w
eUJ1ZmZlclRvVGV4dHVyZShXR1BVQ29tbWFuZEVuY29kZXIgY29tbWFuZEVuY29kZXIsIGNvbnN0
IFdHUFVJbWFnZUNvcHlCdWZmZXIqIHNvdXJjZSwgY29uc3QgV0dQVUltYWdlQ29weVRleHR1cmUq
IGRlc3RpbmF0aW9uLCBjb25zdCBXR1BVRXh0ZW50M0QqIGNvcHlTaXplKQogewotICAgIGNvbW1h
bmRFbmNvZGVyLT5jb21tYW5kRW5jb2Rlci5jb3B5QnVmZmVyVG9UZXh0dXJlKHNvdXJjZSwgZGVz
dGluYXRpb24sIGNvcHlTaXplKTsKKyAgICBjb21tYW5kRW5jb2Rlci0+Y29tbWFuZEVuY29kZXIt
PmNvcHlCdWZmZXJUb1RleHR1cmUoc291cmNlLCBkZXN0aW5hdGlvbiwgY29weVNpemUpOwogfQog
CiB2b2lkIHdncHVDb21tYW5kRW5jb2RlckNvcHlUZXh0dXJlVG9CdWZmZXIoV0dQVUNvbW1hbmRF
bmNvZGVyIGNvbW1hbmRFbmNvZGVyLCBjb25zdCBXR1BVSW1hZ2VDb3B5VGV4dHVyZSogc291cmNl
LCBjb25zdCBXR1BVSW1hZ2VDb3B5QnVmZmVyKiBkZXN0aW5hdGlvbiwgY29uc3QgV0dQVUV4dGVu
dDNEKiBjb3B5U2l6ZSkKIHsKLSAgICBjb21tYW5kRW5jb2Rlci0+Y29tbWFuZEVuY29kZXIuY29w
eVRleHR1cmVUb0J1ZmZlcihzb3VyY2UsIGRlc3RpbmF0aW9uLCBjb3B5U2l6ZSk7CisgICAgY29t
bWFuZEVuY29kZXItPmNvbW1hbmRFbmNvZGVyLT5jb3B5VGV4dHVyZVRvQnVmZmVyKHNvdXJjZSwg
ZGVzdGluYXRpb24sIGNvcHlTaXplKTsKIH0KIAogdm9pZCB3Z3B1Q29tbWFuZEVuY29kZXJDb3B5
VGV4dHVyZVRvVGV4dHVyZShXR1BVQ29tbWFuZEVuY29kZXIgY29tbWFuZEVuY29kZXIsIGNvbnN0
IFdHUFVJbWFnZUNvcHlUZXh0dXJlKiBzb3VyY2UsIGNvbnN0IFdHUFVJbWFnZUNvcHlUZXh0dXJl
KiBkZXN0aW5hdGlvbiwgY29uc3QgV0dQVUV4dGVudDNEKiBjb3B5U2l6ZSkKIHsKLSAgICBjb21t
YW5kRW5jb2Rlci0+Y29tbWFuZEVuY29kZXIuY29weVRleHR1cmVUb1RleHR1cmUoc291cmNlLCBk
ZXN0aW5hdGlvbiwgY29weVNpemUpOworICAgIGNvbW1hbmRFbmNvZGVyLT5jb21tYW5kRW5jb2Rl
ci0+Y29weVRleHR1cmVUb1RleHR1cmUoc291cmNlLCBkZXN0aW5hdGlvbiwgY29weVNpemUpOwog
fQogCiB2b2lkIHdncHVDb21tYW5kRW5jb2RlckZpbGxCdWZmZXIoV0dQVUNvbW1hbmRFbmNvZGVy
IGNvbW1hbmRFbmNvZGVyLCBXR1BVQnVmZmVyIGRlc3RpbmF0aW9uLCB1aW50NjRfdCBkZXN0aW5h
dGlvbk9mZnNldCwgdWludDY0X3Qgc2l6ZSkKIHsKLSAgICBjb21tYW5kRW5jb2Rlci0+Y29tbWFu
ZEVuY29kZXIuZmlsbEJ1ZmZlcihkZXN0aW5hdGlvbi0+YnVmZmVyLCBkZXN0aW5hdGlvbk9mZnNl
dCwgc2l6ZSk7CisgICAgY29tbWFuZEVuY29kZXItPmNvbW1hbmRFbmNvZGVyLT5maWxsQnVmZmVy
KGRlc3RpbmF0aW9uLT5idWZmZXIsIGRlc3RpbmF0aW9uT2Zmc2V0LCBzaXplKTsKIH0KIAogV0dQ
VUNvbW1hbmRCdWZmZXIgd2dwdUNvbW1hbmRFbmNvZGVyRmluaXNoKFdHUFVDb21tYW5kRW5jb2Rl
ciBjb21tYW5kRW5jb2RlciwgY29uc3QgV0dQVUNvbW1hbmRCdWZmZXJEZXNjcmlwdG9yKiBkZXNj
cmlwdG9yKQogewotICAgIHJldHVybiBuZXcgV0dQVUNvbW1hbmRCdWZmZXJJbXBsIHsgY29tbWFu
ZEVuY29kZXItPmNvbW1hbmRFbmNvZGVyLmZpbmlzaChkZXNjcmlwdG9yKSB9OworICAgIHJldHVy
biBuZXcgV0dQVUNvbW1hbmRCdWZmZXJJbXBsIHsgY29tbWFuZEVuY29kZXItPmNvbW1hbmRFbmNv
ZGVyLT5maW5pc2goZGVzY3JpcHRvcikgfTsKIH0KIAogdm9pZCB3Z3B1Q29tbWFuZEVuY29kZXJJ
bnNlcnREZWJ1Z01hcmtlcihXR1BVQ29tbWFuZEVuY29kZXIgY29tbWFuZEVuY29kZXIsIGNvbnN0
IGNoYXIqIG1hcmtlckxhYmVsKQogewotICAgIGNvbW1hbmRFbmNvZGVyLT5jb21tYW5kRW5jb2Rl
ci5pbnNlcnREZWJ1Z01hcmtlcihtYXJrZXJMYWJlbCk7CisgICAgY29tbWFuZEVuY29kZXItPmNv
bW1hbmRFbmNvZGVyLT5pbnNlcnREZWJ1Z01hcmtlcihtYXJrZXJMYWJlbCk7CiB9CiAKIHZvaWQg
d2dwdUNvbW1hbmRFbmNvZGVyUG9wRGVidWdHcm91cChXR1BVQ29tbWFuZEVuY29kZXIgY29tbWFu
ZEVuY29kZXIpCiB7Ci0gICAgY29tbWFuZEVuY29kZXItPmNvbW1hbmRFbmNvZGVyLnBvcERlYnVn
R3JvdXAoKTsKKyAgICBjb21tYW5kRW5jb2Rlci0+Y29tbWFuZEVuY29kZXItPnBvcERlYnVnR3Jv
dXAoKTsKIH0KIAogdm9pZCB3Z3B1Q29tbWFuZEVuY29kZXJQdXNoRGVidWdHcm91cChXR1BVQ29t
bWFuZEVuY29kZXIgY29tbWFuZEVuY29kZXIsIGNvbnN0IGNoYXIqIGdyb3VwTGFiZWwpCiB7Ci0g
ICAgY29tbWFuZEVuY29kZXItPmNvbW1hbmRFbmNvZGVyLnB1c2hEZWJ1Z0dyb3VwKGdyb3VwTGFi
ZWwpOworICAgIGNvbW1hbmRFbmNvZGVyLT5jb21tYW5kRW5jb2Rlci0+cHVzaERlYnVnR3JvdXAo
Z3JvdXBMYWJlbCk7CiB9CiAKIHZvaWQgd2dwdUNvbW1hbmRFbmNvZGVyUmVzb2x2ZVF1ZXJ5U2V0
KFdHUFVDb21tYW5kRW5jb2RlciBjb21tYW5kRW5jb2RlciwgV0dQVVF1ZXJ5U2V0IHF1ZXJ5U2V0
LCB1aW50MzJfdCBmaXJzdFF1ZXJ5LCB1aW50MzJfdCBxdWVyeUNvdW50LCBXR1BVQnVmZmVyIGRl
c3RpbmF0aW9uLCB1aW50NjRfdCBkZXN0aW5hdGlvbk9mZnNldCkKIHsKLSAgICBjb21tYW5kRW5j
b2Rlci0+Y29tbWFuZEVuY29kZXIucmVzb2x2ZVF1ZXJ5U2V0KHF1ZXJ5U2V0LT5xdWVyeVNldCwg
Zmlyc3RRdWVyeSwgcXVlcnlDb3VudCwgZGVzdGluYXRpb24tPmJ1ZmZlciwgZGVzdGluYXRpb25P
ZmZzZXQpOworICAgIGNvbW1hbmRFbmNvZGVyLT5jb21tYW5kRW5jb2Rlci0+cmVzb2x2ZVF1ZXJ5
U2V0KHF1ZXJ5U2V0LT5xdWVyeVNldCwgZmlyc3RRdWVyeSwgcXVlcnlDb3VudCwgZGVzdGluYXRp
b24tPmJ1ZmZlciwgZGVzdGluYXRpb25PZmZzZXQpOwogfQogCiB2b2lkIHdncHVDb21tYW5kRW5j
b2RlcldyaXRlVGltZXN0YW1wKFdHUFVDb21tYW5kRW5jb2RlciBjb21tYW5kRW5jb2RlciwgV0dQ
VVF1ZXJ5U2V0IHF1ZXJ5U2V0LCB1aW50MzJfdCBxdWVyeUluZGV4KQogewotICAgIGNvbW1hbmRF
bmNvZGVyLT5jb21tYW5kRW5jb2Rlci53cml0ZVRpbWVzdGFtcChxdWVyeVNldC0+cXVlcnlTZXQs
IHF1ZXJ5SW5kZXgpOworICAgIGNvbW1hbmRFbmNvZGVyLT5jb21tYW5kRW5jb2Rlci0+d3JpdGVU
aW1lc3RhbXAocXVlcnlTZXQtPnF1ZXJ5U2V0LCBxdWVyeUluZGV4KTsKIH0KIAogdm9pZCB3Z3B1
Q29tbWFuZEVuY29kZXJTZXRMYWJlbChXR1BVQ29tbWFuZEVuY29kZXIgY29tbWFuZEVuY29kZXIs
IGNvbnN0IGNoYXIqIGxhYmVsKQogewotICAgIGNvbW1hbmRFbmNvZGVyLT5jb21tYW5kRW5jb2Rl
ci5zZXRMYWJlbChsYWJlbCk7CisgICAgY29tbWFuZEVuY29kZXItPmNvbW1hbmRFbmNvZGVyLT5z
ZXRMYWJlbChsYWJlbCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0Nv
bXB1dGVQYXNzRW5jb2Rlci5oIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tcHV0ZVBhc3NFbmNv
ZGVyLmgKaW5kZXggODI4NTMxNDYxMDI5MDhhMjhhYTI3ODEyNjY1NDE1Y2E5MmE0YWE4Mi4uMGM2
NGFkOTYxY2I3NjNiYjBiZWQwNjk4Y2MyZmVmZDBiZDliZjgxZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkdQVS9XZWJHUFUvQ29tcHV0ZVBhc3NFbmNvZGVyLmgKKysrIGIvU291cmNlL1dlYkdQVS9X
ZWJHUFUvQ29tcHV0ZVBhc3NFbmNvZGVyLmgKQEAgLTI2LDYgKzI2LDkgQEAKICNwcmFnbWEgb25j
ZQogCiAjaW1wb3J0ICJXZWJHUFUuaCIKKyNpbXBvcnQgPHd0Zi9GYXN0TWFsbG9jLmg+CisjaW1w
b3J0IDx3dGYvUmVmLmg+CisjaW1wb3J0IDx3dGYvUmVmQ291bnRlZC5oPgogCiBuYW1lc3BhY2Ug
V2ViR1BVIHsKIApAQCAtMzQsOCArMzcsMTYgQEAgY2xhc3MgQnVmZmVyOwogY2xhc3MgQ29tcHV0
ZVBpcGVsaW5lOwogY2xhc3MgUXVlcnlTZXQ7CiAKLWNsYXNzIENvbXB1dGVQYXNzRW5jb2RlciB7
CitjbGFzcyBDb21wdXRlUGFzc0VuY29kZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxDb21wdXRlUGFz
c0VuY29kZXI+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKKyAgICBz
dGF0aWMgUmVmPENvbXB1dGVQYXNzRW5jb2Rlcj4gY3JlYXRlKCkKKyAgICB7CisgICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IENvbXB1dGVQYXNzRW5jb2RlcigpKTsKKyAgICB9CisKKyAgICB+
Q29tcHV0ZVBhc3NFbmNvZGVyKCk7CisKICAgICB2b2lkIGJlZ2luUGlwZWxpbmVTdGF0aXN0aWNz
UXVlcnkoY29uc3QgUXVlcnlTZXQmLCB1aW50MzJfdCBxdWVyeUluZGV4KTsKICAgICB2b2lkIGRp
c3BhdGNoKHVpbnQzMl90IHgsIHVpbnQzMl90IHksIHVpbnQzMl90IHopOwogICAgIHZvaWQgZGlz
cGF0Y2hJbmRpcmVjdChjb25zdCBCdWZmZXImIGluZGlyZWN0QnVmZmVyLCB1aW50NjRfdCBpbmRp
cmVjdE9mZnNldCk7CkBAIC00OCwxMCArNTksMTMgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UGlw
ZWxpbmUoY29uc3QgQ29tcHV0ZVBpcGVsaW5lJik7CiAgICAgdm9pZCB3cml0ZVRpbWVzdGFtcChj
b25zdCBRdWVyeVNldCYsIHVpbnQzMl90IHF1ZXJ5SW5kZXgpOwogICAgIHZvaWQgc2V0TGFiZWwo
Y29uc3QgY2hhciopOworCitwcml2YXRlOgorICAgIENvbXB1dGVQYXNzRW5jb2RlcigpOwogfTsK
IAotfQorfSAvLyBuYW1lc3BhY2UgV2ViR1BVCiAKIHN0cnVjdCBXR1BVQ29tcHV0ZVBhc3NFbmNv
ZGVySW1wbCB7Ci0gICAgV2ViR1BVOjpDb21wdXRlUGFzc0VuY29kZXIgY29tcHV0ZVBhc3NFbmNv
ZGVyOworICAgIFJlZjxXZWJHUFU6OkNvbXB1dGVQYXNzRW5jb2Rlcj4gY29tcHV0ZVBhc3NFbmNv
ZGVyOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbXB1dGVQYXNzRW5j
b2Rlci5tbSBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbXB1dGVQYXNzRW5jb2Rlci5tbQppbmRl
eCA5N2YzYzQ4NDBlNzQyMmU1N2QwNGNiOTgzZjM2NWMzNmZkYzE1NGJmLi5jMTFkNTRlZDM0NDE1
NmUzZjU1Y2VlYTMxYTc3MzM4ODAyMzBlZTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dl
YkdQVS9Db21wdXRlUGFzc0VuY29kZXIubW0KKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29t
cHV0ZVBhc3NFbmNvZGVyLm1tCkBAIC0zNCw2ICszNCwxMCBAQAogCiBuYW1lc3BhY2UgV2ViR1BV
IHsKIAorQ29tcHV0ZVBhc3NFbmNvZGVyOjpDb21wdXRlUGFzc0VuY29kZXIoKSA9IGRlZmF1bHQ7
CisKK0NvbXB1dGVQYXNzRW5jb2Rlcjo6fkNvbXB1dGVQYXNzRW5jb2RlcigpID0gZGVmYXVsdDsK
Kwogdm9pZCBDb21wdXRlUGFzc0VuY29kZXI6OmJlZ2luUGlwZWxpbmVTdGF0aXN0aWNzUXVlcnko
Y29uc3QgUXVlcnlTZXQmIHF1ZXJ5U2V0LCB1aW50MzJfdCBxdWVyeUluZGV4KQogewogICAgIFVO
VVNFRF9QQVJBTShxdWVyeVNldCk7CkBAIC0xMDgsNjAgKzExMiw2MCBAQCB2b2lkIHdncHVDb21w
dXRlUGFzc0VuY29kZXJSZWxlYXNlKFdHUFVDb21wdXRlUGFzc0VuY29kZXIgY29tcHV0ZVBhc3NF
bmNvZGVyKQogCiB2b2lkIHdncHVDb21wdXRlUGFzc0VuY29kZXJCZWdpblBpcGVsaW5lU3RhdGlz
dGljc1F1ZXJ5KFdHUFVDb21wdXRlUGFzc0VuY29kZXIgY29tcHV0ZVBhc3NFbmNvZGVyLCBXR1BV
UXVlcnlTZXQgcXVlcnlTZXQsIHVpbnQzMl90IHF1ZXJ5SW5kZXgpCiB7Ci0gICAgY29tcHV0ZVBh
c3NFbmNvZGVyLT5jb21wdXRlUGFzc0VuY29kZXIuYmVnaW5QaXBlbGluZVN0YXRpc3RpY3NRdWVy
eShxdWVyeVNldC0+cXVlcnlTZXQsIHF1ZXJ5SW5kZXgpOworICAgIGNvbXB1dGVQYXNzRW5jb2Rl
ci0+Y29tcHV0ZVBhc3NFbmNvZGVyLT5iZWdpblBpcGVsaW5lU3RhdGlzdGljc1F1ZXJ5KHF1ZXJ5
U2V0LT5xdWVyeVNldCwgcXVlcnlJbmRleCk7CiB9CiAKIHZvaWQgd2dwdUNvbXB1dGVQYXNzRW5j
b2RlckRpc3BhdGNoKFdHUFVDb21wdXRlUGFzc0VuY29kZXIgY29tcHV0ZVBhc3NFbmNvZGVyLCB1
aW50MzJfdCB4LCB1aW50MzJfdCB5LCB1aW50MzJfdCB6KQogewotICAgIGNvbXB1dGVQYXNzRW5j
b2Rlci0+Y29tcHV0ZVBhc3NFbmNvZGVyLmRpc3BhdGNoKHgsIHksIHopOworICAgIGNvbXB1dGVQ
YXNzRW5jb2Rlci0+Y29tcHV0ZVBhc3NFbmNvZGVyLT5kaXNwYXRjaCh4LCB5LCB6KTsKIH0KIAog
dm9pZCB3Z3B1Q29tcHV0ZVBhc3NFbmNvZGVyRGlzcGF0Y2hJbmRpcmVjdChXR1BVQ29tcHV0ZVBh
c3NFbmNvZGVyIGNvbXB1dGVQYXNzRW5jb2RlciwgV0dQVUJ1ZmZlciBpbmRpcmVjdEJ1ZmZlciwg
dWludDY0X3QgaW5kaXJlY3RPZmZzZXQpCiB7Ci0gICAgY29tcHV0ZVBhc3NFbmNvZGVyLT5jb21w
dXRlUGFzc0VuY29kZXIuZGlzcGF0Y2hJbmRpcmVjdChpbmRpcmVjdEJ1ZmZlci0+YnVmZmVyLCBp
bmRpcmVjdE9mZnNldCk7CisgICAgY29tcHV0ZVBhc3NFbmNvZGVyLT5jb21wdXRlUGFzc0VuY29k
ZXItPmRpc3BhdGNoSW5kaXJlY3QoaW5kaXJlY3RCdWZmZXItPmJ1ZmZlciwgaW5kaXJlY3RPZmZz
ZXQpOwogfQogCiB2b2lkIHdncHVDb21wdXRlUGFzc0VuY29kZXJFbmRQYXNzKFdHUFVDb21wdXRl
UGFzc0VuY29kZXIgY29tcHV0ZVBhc3NFbmNvZGVyKQogewotICAgIGNvbXB1dGVQYXNzRW5jb2Rl
ci0+Y29tcHV0ZVBhc3NFbmNvZGVyLmVuZFBhc3MoKTsKKyAgICBjb21wdXRlUGFzc0VuY29kZXIt
PmNvbXB1dGVQYXNzRW5jb2Rlci0+ZW5kUGFzcygpOwogfQogCiB2b2lkIHdncHVDb21wdXRlUGFz
c0VuY29kZXJFbmRQaXBlbGluZVN0YXRpc3RpY3NRdWVyeShXR1BVQ29tcHV0ZVBhc3NFbmNvZGVy
IGNvbXB1dGVQYXNzRW5jb2RlcikKIHsKLSAgICBjb21wdXRlUGFzc0VuY29kZXItPmNvbXB1dGVQ
YXNzRW5jb2Rlci5lbmRQaXBlbGluZVN0YXRpc3RpY3NRdWVyeSgpOworICAgIGNvbXB1dGVQYXNz
RW5jb2Rlci0+Y29tcHV0ZVBhc3NFbmNvZGVyLT5lbmRQaXBlbGluZVN0YXRpc3RpY3NRdWVyeSgp
OwogfQogCiB2b2lkIHdncHVDb21wdXRlUGFzc0VuY29kZXJJbnNlcnREZWJ1Z01hcmtlcihXR1BV
Q29tcHV0ZVBhc3NFbmNvZGVyIGNvbXB1dGVQYXNzRW5jb2RlciwgY29uc3QgY2hhciogbWFya2Vy
TGFiZWwpCiB7Ci0gICAgY29tcHV0ZVBhc3NFbmNvZGVyLT5jb21wdXRlUGFzc0VuY29kZXIuaW5z
ZXJ0RGVidWdNYXJrZXIobWFya2VyTGFiZWwpOworICAgIGNvbXB1dGVQYXNzRW5jb2Rlci0+Y29t
cHV0ZVBhc3NFbmNvZGVyLT5pbnNlcnREZWJ1Z01hcmtlcihtYXJrZXJMYWJlbCk7CiB9CiAKIHZv
aWQgd2dwdUNvbXB1dGVQYXNzRW5jb2RlclBvcERlYnVnR3JvdXAoV0dQVUNvbXB1dGVQYXNzRW5j
b2RlciBjb21wdXRlUGFzc0VuY29kZXIpCiB7Ci0gICAgY29tcHV0ZVBhc3NFbmNvZGVyLT5jb21w
dXRlUGFzc0VuY29kZXIucG9wRGVidWdHcm91cCgpOworICAgIGNvbXB1dGVQYXNzRW5jb2Rlci0+
Y29tcHV0ZVBhc3NFbmNvZGVyLT5wb3BEZWJ1Z0dyb3VwKCk7CiB9CiAKIHZvaWQgd2dwdUNvbXB1
dGVQYXNzRW5jb2RlclB1c2hEZWJ1Z0dyb3VwKFdHUFVDb21wdXRlUGFzc0VuY29kZXIgY29tcHV0
ZVBhc3NFbmNvZGVyLCBjb25zdCBjaGFyKiBncm91cExhYmVsKQogewotICAgIGNvbXB1dGVQYXNz
RW5jb2Rlci0+Y29tcHV0ZVBhc3NFbmNvZGVyLnB1c2hEZWJ1Z0dyb3VwKGdyb3VwTGFiZWwpOwor
ICAgIGNvbXB1dGVQYXNzRW5jb2Rlci0+Y29tcHV0ZVBhc3NFbmNvZGVyLT5wdXNoRGVidWdHcm91
cChncm91cExhYmVsKTsKIH0KIAogdm9pZCB3Z3B1Q29tcHV0ZVBhc3NFbmNvZGVyU2V0QmluZEdy
b3VwKFdHUFVDb21wdXRlUGFzc0VuY29kZXIgY29tcHV0ZVBhc3NFbmNvZGVyLCB1aW50MzJfdCBn
cm91cEluZGV4LCBXR1BVQmluZEdyb3VwIGdyb3VwLCB1aW50MzJfdCBkeW5hbWljT2Zmc2V0Q291
bnQsIGNvbnN0IHVpbnQzMl90KiBkeW5hbWljT2Zmc2V0cykKIHsKLSAgICBjb21wdXRlUGFzc0Vu
Y29kZXItPmNvbXB1dGVQYXNzRW5jb2Rlci5zZXRCaW5kR3JvdXAoZ3JvdXBJbmRleCwgZ3JvdXAt
PmJpbmRHcm91cCwgZHluYW1pY09mZnNldENvdW50LCBkeW5hbWljT2Zmc2V0cyk7CisgICAgY29t
cHV0ZVBhc3NFbmNvZGVyLT5jb21wdXRlUGFzc0VuY29kZXItPnNldEJpbmRHcm91cChncm91cElu
ZGV4LCBncm91cC0+YmluZEdyb3VwLCBkeW5hbWljT2Zmc2V0Q291bnQsIGR5bmFtaWNPZmZzZXRz
KTsKIH0KIAogdm9pZCB3Z3B1Q29tcHV0ZVBhc3NFbmNvZGVyU2V0UGlwZWxpbmUoV0dQVUNvbXB1
dGVQYXNzRW5jb2RlciBjb21wdXRlUGFzc0VuY29kZXIsIFdHUFVDb21wdXRlUGlwZWxpbmUgcGlw
ZWxpbmUpCiB7Ci0gICAgY29tcHV0ZVBhc3NFbmNvZGVyLT5jb21wdXRlUGFzc0VuY29kZXIuc2V0
UGlwZWxpbmUocGlwZWxpbmUtPmNvbXB1dGVQaXBlbGluZSk7CisgICAgY29tcHV0ZVBhc3NFbmNv
ZGVyLT5jb21wdXRlUGFzc0VuY29kZXItPnNldFBpcGVsaW5lKHBpcGVsaW5lLT5jb21wdXRlUGlw
ZWxpbmUpOwogfQogCiB2b2lkIHdncHVDb21wdXRlUGFzc0VuY29kZXJXcml0ZVRpbWVzdGFtcChX
R1BVQ29tcHV0ZVBhc3NFbmNvZGVyIGNvbXB1dGVQYXNzRW5jb2RlciwgV0dQVVF1ZXJ5U2V0IHF1
ZXJ5U2V0LCB1aW50MzJfdCBxdWVyeUluZGV4KQogewotICAgIGNvbXB1dGVQYXNzRW5jb2Rlci0+
Y29tcHV0ZVBhc3NFbmNvZGVyLndyaXRlVGltZXN0YW1wKHF1ZXJ5U2V0LT5xdWVyeVNldCwgcXVl
cnlJbmRleCk7CisgICAgY29tcHV0ZVBhc3NFbmNvZGVyLT5jb21wdXRlUGFzc0VuY29kZXItPndy
aXRlVGltZXN0YW1wKHF1ZXJ5U2V0LT5xdWVyeVNldCwgcXVlcnlJbmRleCk7CiB9CiAKIHZvaWQg
d2dwdUNvbXB1dGVQYXNzRW5jb2RlclNldExhYmVsKFdHUFVDb21wdXRlUGFzc0VuY29kZXIgY29t
cHV0ZVBhc3NFbmNvZGVyLCBjb25zdCBjaGFyKiBsYWJlbCkKIHsKLSAgICBjb21wdXRlUGFzc0Vu
Y29kZXItPmNvbXB1dGVQYXNzRW5jb2Rlci5zZXRMYWJlbChsYWJlbCk7CisgICAgY29tcHV0ZVBh
c3NFbmNvZGVyLT5jb21wdXRlUGFzc0VuY29kZXItPnNldExhYmVsKGxhYmVsKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbXB1dGVQaXBlbGluZS5oIGIvU291cmNlL1dl
YkdQVS9XZWJHUFUvQ29tcHV0ZVBpcGVsaW5lLmgKaW5kZXggNzcyYmI0YzM1YmYxYTlhZGQyNTUx
ZDI0MjdiYTc2YTQwMzIxODYzNy4uZDU5YjFiMzk5ODJkOGI2YTg3ZGMxMzQ5Mzg3ODY5NTE5YjMz
MWFmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tcHV0ZVBpcGVsaW5lLmgK
KysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tcHV0ZVBpcGVsaW5lLmgKQEAgLTI2LDE5ICsy
NiwzMyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbXBvcnQgIldlYkdQVS5oIgorI2ltcG9ydCA8d3Rm
L0Zhc3RNYWxsb2MuaD4KKyNpbXBvcnQgPHd0Zi9SZWYuaD4KKyNpbXBvcnQgPHd0Zi9SZWZDb3Vu
dGVkLmg+CiAKIG5hbWVzcGFjZSBXZWJHUFUgewogCiBjbGFzcyBCaW5kR3JvdXBMYXlvdXQ7CiAK
LWNsYXNzIENvbXB1dGVQaXBlbGluZSB7CitjbGFzcyBDb21wdXRlUGlwZWxpbmUgOiBwdWJsaWMg
UmVmQ291bnRlZDxDb21wdXRlUGlwZWxpbmU+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKLSAgICBCaW5kR3JvdXBMYXlvdXQgZ2V0QmluZEdyb3VwTGF5b3V0KHVpbnQz
Ml90IGdyb3VwSW5kZXgpOworICAgIHN0YXRpYyBSZWY8Q29tcHV0ZVBpcGVsaW5lPiBjcmVhdGUo
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ29tcHV0ZVBpcGVsaW5lKCkp
OworICAgIH0KKworICAgIH5Db21wdXRlUGlwZWxpbmUoKTsKKworICAgIFJlZjxCaW5kR3JvdXBM
YXlvdXQ+IGdldEJpbmRHcm91cExheW91dCh1aW50MzJfdCBncm91cEluZGV4KTsKICAgICB2b2lk
IHNldExhYmVsKGNvbnN0IGNoYXIqKTsKKworcHJpdmF0ZToKKyAgICBDb21wdXRlUGlwZWxpbmUo
KTsKIH07CiAKLX0KK30gLy8gbmFtZXNwYWNlIFdlYkdQVQogCiBzdHJ1Y3QgV0dQVUNvbXB1dGVQ
aXBlbGluZUltcGwgewotICAgIFdlYkdQVTo6Q29tcHV0ZVBpcGVsaW5lIGNvbXB1dGVQaXBlbGlu
ZTsKKyAgICBSZWY8V2ViR1BVOjpDb21wdXRlUGlwZWxpbmU+IGNvbXB1dGVQaXBlbGluZTsKIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9Db21wdXRlUGlwZWxpbmUubW0gYi9T
b3VyY2UvV2ViR1BVL1dlYkdQVS9Db21wdXRlUGlwZWxpbmUubW0KaW5kZXggMzcxYmM3MjZmMmQw
MjJkOWFkZGIxNzg0MmYwZDBkODcyODVkNTY3ZC4uOTZkOWQ1ZjQ1NmYxZjc4OTA1Y2Y5ZDU5NzA4
ZWRkZmYzMjhmZjEyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tcHV0ZVBp
cGVsaW5lLm1tCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbXB1dGVQaXBlbGluZS5tbQpA
QCAtMzIsMTAgKzMyLDE0IEBACiAKIG5hbWVzcGFjZSBXZWJHUFUgewogCi1CaW5kR3JvdXBMYXlv
dXQgQ29tcHV0ZVBpcGVsaW5lOjpnZXRCaW5kR3JvdXBMYXlvdXQodWludDMyX3QgZ3JvdXBJbmRl
eCkKK0NvbXB1dGVQaXBlbGluZTo6Q29tcHV0ZVBpcGVsaW5lKCkgPSBkZWZhdWx0OworCitDb21w
dXRlUGlwZWxpbmU6On5Db21wdXRlUGlwZWxpbmUoKSA9IGRlZmF1bHQ7CisKK1JlZjxCaW5kR3Jv
dXBMYXlvdXQ+IENvbXB1dGVQaXBlbGluZTo6Z2V0QmluZEdyb3VwTGF5b3V0KHVpbnQzMl90IGdy
b3VwSW5kZXgpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGdyb3VwSW5kZXgpOwotICAgIHJldHVybiB7
IH07CisgICAgcmV0dXJuIEJpbmRHcm91cExheW91dDo6Y3JlYXRlKCk7CiB9CiAKIHZvaWQgQ29t
cHV0ZVBpcGVsaW5lOjpzZXRMYWJlbChjb25zdCBjaGFyKiBsYWJlbCkKQEAgLTUyLDExICs1Niwx
MSBAQCB2b2lkIHdncHVDb21wdXRlUGlwZWxpbmVSZWxlYXNlKFdHUFVDb21wdXRlUGlwZWxpbmUg
Y29tcHV0ZVBpcGVsaW5lKQogCiBXR1BVQmluZEdyb3VwTGF5b3V0IHdncHVDb21wdXRlUGlwZWxp
bmVHZXRCaW5kR3JvdXBMYXlvdXQoV0dQVUNvbXB1dGVQaXBlbGluZSBjb21wdXRlUGlwZWxpbmUs
IHVpbnQzMl90IGdyb3VwSW5kZXgpCiB7Ci0gICAgcmV0dXJuIG5ldyBXR1BVQmluZEdyb3VwTGF5
b3V0SW1wbCB7IGNvbXB1dGVQaXBlbGluZS0+Y29tcHV0ZVBpcGVsaW5lLmdldEJpbmRHcm91cExh
eW91dChncm91cEluZGV4KSB9OworICAgIHJldHVybiBuZXcgV0dQVUJpbmRHcm91cExheW91dElt
cGwgeyBjb21wdXRlUGlwZWxpbmUtPmNvbXB1dGVQaXBlbGluZS0+Z2V0QmluZEdyb3VwTGF5b3V0
KGdyb3VwSW5kZXgpIH07CiB9CiAKIHZvaWQgd2dwdUNvbXB1dGVQaXBlbGluZVNldExhYmVsKFdH
UFVDb21wdXRlUGlwZWxpbmUgY29tcHV0ZVBpcGVsaW5lLCBjb25zdCBjaGFyKiBsYWJlbCkKIHsK
LSAgICBjb21wdXRlUGlwZWxpbmUtPmNvbXB1dGVQaXBlbGluZS5zZXRMYWJlbChsYWJlbCk7Cisg
ICAgY29tcHV0ZVBpcGVsaW5lLT5jb21wdXRlUGlwZWxpbmUtPnNldExhYmVsKGxhYmVsKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvRGV2aWNlLmggYi9Tb3VyY2UvV2Vi
R1BVL1dlYkdQVS9EZXZpY2UuaAppbmRleCBmZjQyYjAwNTM4OTZhMzRlMDcxZTNiYzUwNmUwMjky
ZWRlZTViMTg0Li4yODg3YWZlYWU1YmQ3NDIwNmRjMjY1MjA3NmQ5NDk4MGYyNjIwYTk2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9EZXZpY2UuaAorKysgYi9Tb3VyY2UvV2ViR1BV
L1dlYkdQVS9EZXZpY2UuaApAQCAtMjYsNyArMjYsMTAgQEAKICNwcmFnbWEgb25jZQogCiAjaW1w
b3J0ICJXZWJHUFUuaCIKLSNpbXBvcnQgPGZ1bmN0aW9uYWw+CisjaW1wb3J0IDx3dGYvRmFzdE1h
bGxvYy5oPgorI2ltcG9ydCA8d3RmL0Z1bmN0aW9uLmg+CisjaW1wb3J0IDx3dGYvUmVmLmg+Cisj
aW1wb3J0IDx3dGYvUmVmQ291bnRlZC5oPgogCiBuYW1lc3BhY2UgV2ViR1BVIHsKIApAQCAtNDYs
MzUgKzQ5LDQ2IEBAIGNsYXNzIFN3YXBDaGFpbjsKIGNsYXNzIFRleHR1cmU7CiBjbGFzcyBRdWV1
ZTsKIAotY2xhc3MgRGV2aWNlIHsKK2NsYXNzIERldmljZSA6IHB1YmxpYyBSZWZDb3VudGVkPERl
dmljZT4geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIEJpbmRH
cm91cCBjcmVhdGVCaW5kR3JvdXAoY29uc3QgV0dQVUJpbmRHcm91cERlc2NyaXB0b3IqKTsKLSAg
ICBCaW5kR3JvdXBMYXlvdXQgY3JlYXRlQmluZEdyb3VwTGF5b3V0KGNvbnN0IFdHUFVCaW5kR3Jv
dXBMYXlvdXREZXNjcmlwdG9yKik7Ci0gICAgQnVmZmVyIGNyZWF0ZUJ1ZmZlcihjb25zdCBXR1BV
QnVmZmVyRGVzY3JpcHRvciopOwotICAgIENvbW1hbmRFbmNvZGVyIGNyZWF0ZUNvbW1hbmRFbmNv
ZGVyKGNvbnN0IFdHUFVDb21tYW5kRW5jb2RlckRlc2NyaXB0b3IqKTsKLSAgICBDb21wdXRlUGlw
ZWxpbmUgY3JlYXRlQ29tcHV0ZVBpcGVsaW5lKGNvbnN0IFdHUFVDb21wdXRlUGlwZWxpbmVEZXNj
cmlwdG9yKik7Ci0gICAgdm9pZCBjcmVhdGVDb21wdXRlUGlwZWxpbmVBc3luYyhjb25zdCBXR1BV
Q29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciosIHN0ZDo6ZnVuY3Rpb248dm9pZChXR1BVQ3JlYXRl
UGlwZWxpbmVBc3luY1N0YXR1cywgQ29tcHV0ZVBpcGVsaW5lJiYsIGNvbnN0IGNoYXIqIG1lc3Nh
Z2UpPiYmIGNhbGxiYWNrKTsKLSAgICBQaXBlbGluZUxheW91dCBjcmVhdGVQaXBlbGluZUxheW91
dChjb25zdCBXR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yKik7Ci0gICAgUXVlcnlTZXQgY3Jl
YXRlUXVlcnlTZXQoY29uc3QgV0dQVVF1ZXJ5U2V0RGVzY3JpcHRvciopOwotICAgIFJlbmRlckJ1
bmRsZUVuY29kZXIgY3JlYXRlUmVuZGVyQnVuZGxlRW5jb2Rlcihjb25zdCBXR1BVUmVuZGVyQnVu
ZGxlRW5jb2RlckRlc2NyaXB0b3IqKTsKLSAgICBSZW5kZXJQaXBlbGluZSBjcmVhdGVSZW5kZXJQ
aXBlbGluZShjb25zdCBXR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKik7Ci0gICAgdm9pZCBj
cmVhdGVSZW5kZXJQaXBlbGluZUFzeW5jKGNvbnN0IFdHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0
b3IqLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoV0dQVUNyZWF0ZVBpcGVsaW5lQXN5bmNTdGF0dXMsIFJl
bmRlclBpcGVsaW5lJiYsIGNvbnN0IGNoYXIqIG1lc3NhZ2UpPiYmIGNhbGxiYWNrKTsKLSAgICBT
YW1wbGVyIGNyZWF0ZVNhbXBsZXIoY29uc3QgV0dQVVNhbXBsZXJEZXNjcmlwdG9yKik7Ci0gICAg
U2hhZGVyTW9kdWxlIGNyZWF0ZVNoYWRlck1vZHVsZShjb25zdCBXR1BVU2hhZGVyTW9kdWxlRGVz
Y3JpcHRvciopOwotICAgIFN3YXBDaGFpbiBjcmVhdGVTd2FwQ2hhaW4oY29uc3QgU3VyZmFjZSYs
IGNvbnN0IFdHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yKik7Ci0gICAgVGV4dHVyZSBjcmVhdGVUZXh0
dXJlKGNvbnN0IFdHUFVUZXh0dXJlRGVzY3JpcHRvciopOworICAgIHN0YXRpYyBSZWY8RGV2aWNl
PiBjcmVhdGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGV2aWNlKCkp
OworICAgIH0KKworICAgIH5EZXZpY2UoKTsKKworICAgIFJlZjxCaW5kR3JvdXA+IGNyZWF0ZUJp
bmRHcm91cChjb25zdCBXR1BVQmluZEdyb3VwRGVzY3JpcHRvciopOworICAgIFJlZjxCaW5kR3Jv
dXBMYXlvdXQ+IGNyZWF0ZUJpbmRHcm91cExheW91dChjb25zdCBXR1BVQmluZEdyb3VwTGF5b3V0
RGVzY3JpcHRvciopOworICAgIFJlZjxCdWZmZXI+IGNyZWF0ZUJ1ZmZlcihjb25zdCBXR1BVQnVm
ZmVyRGVzY3JpcHRvciopOworICAgIFJlZjxDb21tYW5kRW5jb2Rlcj4gY3JlYXRlQ29tbWFuZEVu
Y29kZXIoY29uc3QgV0dQVUNvbW1hbmRFbmNvZGVyRGVzY3JpcHRvciopOworICAgIFJlZjxDb21w
dXRlUGlwZWxpbmU+IGNyZWF0ZUNvbXB1dGVQaXBlbGluZShjb25zdCBXR1BVQ29tcHV0ZVBpcGVs
aW5lRGVzY3JpcHRvciopOworICAgIHZvaWQgY3JlYXRlQ29tcHV0ZVBpcGVsaW5lQXN5bmMoY29u
c3QgV0dQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IqLCBXVEY6OkZ1bmN0aW9uPHZvaWQoV0dQ
VUNyZWF0ZVBpcGVsaW5lQXN5bmNTdGF0dXMsIFJlZjxDb21wdXRlUGlwZWxpbmU+JiYsIGNvbnN0
IGNoYXIqIG1lc3NhZ2UpPiYmIGNhbGxiYWNrKTsKKyAgICBSZWY8UGlwZWxpbmVMYXlvdXQ+IGNy
ZWF0ZVBpcGVsaW5lTGF5b3V0KGNvbnN0IFdHUFVQaXBlbGluZUxheW91dERlc2NyaXB0b3IqKTsK
KyAgICBSZWY8UXVlcnlTZXQ+IGNyZWF0ZVF1ZXJ5U2V0KGNvbnN0IFdHUFVRdWVyeVNldERlc2Ny
aXB0b3IqKTsKKyAgICBSZWY8UmVuZGVyQnVuZGxlRW5jb2Rlcj4gY3JlYXRlUmVuZGVyQnVuZGxl
RW5jb2Rlcihjb25zdCBXR1BVUmVuZGVyQnVuZGxlRW5jb2RlckRlc2NyaXB0b3IqKTsKKyAgICBS
ZWY8UmVuZGVyUGlwZWxpbmU+IGNyZWF0ZVJlbmRlclBpcGVsaW5lKGNvbnN0IFdHUFVSZW5kZXJQ
aXBlbGluZURlc2NyaXB0b3IqKTsKKyAgICB2b2lkIGNyZWF0ZVJlbmRlclBpcGVsaW5lQXN5bmMo
Y29uc3QgV0dQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciosIFdURjo6RnVuY3Rpb248dm9pZChX
R1BVQ3JlYXRlUGlwZWxpbmVBc3luY1N0YXR1cywgUmVmPFJlbmRlclBpcGVsaW5lPiYmLCBjb25z
dCBjaGFyKiBtZXNzYWdlKT4mJiBjYWxsYmFjayk7CisgICAgUmVmPFNhbXBsZXI+IGNyZWF0ZVNh
bXBsZXIoY29uc3QgV0dQVVNhbXBsZXJEZXNjcmlwdG9yKik7CisgICAgUmVmPFNoYWRlck1vZHVs
ZT4gY3JlYXRlU2hhZGVyTW9kdWxlKGNvbnN0IFdHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yKik7
CisgICAgUmVmPFN3YXBDaGFpbj4gY3JlYXRlU3dhcENoYWluKGNvbnN0IFN1cmZhY2UmLCBjb25z
dCBXR1BVU3dhcENoYWluRGVzY3JpcHRvciopOworICAgIFJlZjxUZXh0dXJlPiBjcmVhdGVUZXh0
dXJlKGNvbnN0IFdHUFVUZXh0dXJlRGVzY3JpcHRvciopOwogICAgIHZvaWQgZGVzdHJveSgpOwog
ICAgIGJvb2wgZ2V0TGltaXRzKFdHUFVTdXBwb3J0ZWRMaW1pdHMqKTsKLSAgICBRdWV1ZSBnZXRR
dWV1ZSgpOwotICAgIGJvb2wgcG9wRXJyb3JTY29wZShzdGQ6OmZ1bmN0aW9uPHZvaWQoV0dQVUVy
cm9yVHlwZSwgY29uc3QgY2hhciopPiYmIGNhbGxiYWNrKTsKKyAgICBSZWY8UXVldWU+IGdldFF1
ZXVlKCk7CisgICAgYm9vbCBwb3BFcnJvclNjb3BlKFdURjo6RnVuY3Rpb248dm9pZChXR1BVRXJy
b3JUeXBlLCBjb25zdCBjaGFyKik+JiYgY2FsbGJhY2spOwogICAgIHZvaWQgcHVzaEVycm9yU2Nv
cGUoV0dQVUVycm9yRmlsdGVyKTsKLSAgICB2b2lkIHNldERldmljZUxvc3RDYWxsYmFjayhzdGQ6
OmZ1bmN0aW9uPHZvaWQoV0dQVURldmljZUxvc3RSZWFzb24sIGNvbnN0IGNoYXIqKT4mJik7Ci0g
ICAgdm9pZCBzZXRVbmNhcHR1cmVkRXJyb3JDYWxsYmFjayhzdGQ6OmZ1bmN0aW9uPHZvaWQoV0dQ
VUVycm9yVHlwZSwgY29uc3QgY2hhciopPiYmKTsKKyAgICB2b2lkIHNldERldmljZUxvc3RDYWxs
YmFjayhXVEY6OkZ1bmN0aW9uPHZvaWQoV0dQVURldmljZUxvc3RSZWFzb24sIGNvbnN0IGNoYXIq
KT4mJik7CisgICAgdm9pZCBzZXRVbmNhcHR1cmVkRXJyb3JDYWxsYmFjayhXVEY6OkZ1bmN0aW9u
PHZvaWQoV0dQVUVycm9yVHlwZSwgY29uc3QgY2hhciopPiYmKTsKICAgICB2b2lkIHNldExhYmVs
KGNvbnN0IGNoYXIqKTsKKworcHJpdmF0ZToKKyAgICBEZXZpY2UoKTsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkdQVQogCiBzdHJ1Y3QgV0dQVURldmljZUltcGwgewotICAgIFdlYkdQVTo6RGV2
aWNlIGRldmljZTsKKyAgICBSZWY8V2ViR1BVOjpEZXZpY2U+IGRldmljZTsKIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9EZXZpY2UubW0gYi9Tb3VyY2UvV2ViR1BVL1dlYkdQ
VS9EZXZpY2UubW0KaW5kZXggNGVhY2NhNDY1NThkZWJjMmJmMmIxYTc1ZmNlMzkzMDk5MzhlNzA1
Mi4uZjFhODU0ZmRiMmE5NTY0MjQ5ZjViMGRkNTM1ZWNhNDhlNTFmYTU4NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkdQVS9XZWJHUFUvRGV2aWNlLm1tCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BV
L0RldmljZS5tbQpAQCAtNDYsOTUgKzQ2LDk5IEBACiAKIG5hbWVzcGFjZSBXZWJHUFUgewogCi1C
aW5kR3JvdXAgRGV2aWNlOjpjcmVhdGVCaW5kR3JvdXAoY29uc3QgV0dQVUJpbmRHcm91cERlc2Ny
aXB0b3IqIGRlc2NyaXB0b3IpCitEZXZpY2U6OkRldmljZSgpID0gZGVmYXVsdDsKKworRGV2aWNl
Ojp+RGV2aWNlKCkgPSBkZWZhdWx0OworCitSZWY8QmluZEdyb3VwPiBEZXZpY2U6OmNyZWF0ZUJp
bmRHcm91cChjb25zdCBXR1BVQmluZEdyb3VwRGVzY3JpcHRvciogZGVzY3JpcHRvcikKIHsKICAg
ICBVTlVTRURfUEFSQU0oZGVzY3JpcHRvcik7Ci0gICAgcmV0dXJuIHsgfTsKKyAgICByZXR1cm4g
QmluZEdyb3VwOjpjcmVhdGUoKTsKIH0KIAotQmluZEdyb3VwTGF5b3V0IERldmljZTo6Y3JlYXRl
QmluZEdyb3VwTGF5b3V0KGNvbnN0IFdHUFVCaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yKiBkZXNj
cmlwdG9yKQorUmVmPEJpbmRHcm91cExheW91dD4gRGV2aWNlOjpjcmVhdGVCaW5kR3JvdXBMYXlv
dXQoY29uc3QgV0dQVUJpbmRHcm91cExheW91dERlc2NyaXB0b3IqIGRlc2NyaXB0b3IpCiB7CiAg
ICAgVU5VU0VEX1BBUkFNKGRlc2NyaXB0b3IpOwotICAgIHJldHVybiB7IH07CisgICAgcmV0dXJu
IEJpbmRHcm91cExheW91dDo6Y3JlYXRlKCk7CiB9CiAKLUJ1ZmZlciBEZXZpY2U6OmNyZWF0ZUJ1
ZmZlcihjb25zdCBXR1BVQnVmZmVyRGVzY3JpcHRvciogZGVzY3JpcHRvcikKK1JlZjxCdWZmZXI+
IERldmljZTo6Y3JlYXRlQnVmZmVyKGNvbnN0IFdHUFVCdWZmZXJEZXNjcmlwdG9yKiBkZXNjcmlw
dG9yKQogewogICAgIFVOVVNFRF9QQVJBTShkZXNjcmlwdG9yKTsKLSAgICByZXR1cm4geyB9Owor
ICAgIHJldHVybiBCdWZmZXI6OmNyZWF0ZSgpOwogfQogCi1Db21tYW5kRW5jb2RlciBEZXZpY2U6
OmNyZWF0ZUNvbW1hbmRFbmNvZGVyKGNvbnN0IFdHUFVDb21tYW5kRW5jb2RlckRlc2NyaXB0b3Iq
IGRlc2NyaXB0b3IpCitSZWY8Q29tbWFuZEVuY29kZXI+IERldmljZTo6Y3JlYXRlQ29tbWFuZEVu
Y29kZXIoY29uc3QgV0dQVUNvbW1hbmRFbmNvZGVyRGVzY3JpcHRvciogZGVzY3JpcHRvcikKIHsK
ICAgICBVTlVTRURfUEFSQU0oZGVzY3JpcHRvcik7Ci0gICAgcmV0dXJuIHsgfTsKKyAgICByZXR1
cm4gQ29tbWFuZEVuY29kZXI6OmNyZWF0ZSgpOwogfQogCi1Db21wdXRlUGlwZWxpbmUgRGV2aWNl
OjpjcmVhdGVDb21wdXRlUGlwZWxpbmUoY29uc3QgV0dQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0
b3IqIGRlc2NyaXB0b3IpCitSZWY8Q29tcHV0ZVBpcGVsaW5lPiBEZXZpY2U6OmNyZWF0ZUNvbXB1
dGVQaXBlbGluZShjb25zdCBXR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciogZGVzY3JpcHRv
cikKIHsKICAgICBVTlVTRURfUEFSQU0oZGVzY3JpcHRvcik7Ci0gICAgcmV0dXJuIHsgfTsKKyAg
ICByZXR1cm4gQ29tcHV0ZVBpcGVsaW5lOjpjcmVhdGUoKTsKIH0KIAotdm9pZCBEZXZpY2U6OmNy
ZWF0ZUNvbXB1dGVQaXBlbGluZUFzeW5jKGNvbnN0IFdHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlw
dG9yKiBkZXNjcmlwdG9yLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoV0dQVUNyZWF0ZVBpcGVsaW5lQXN5
bmNTdGF0dXMsIENvbXB1dGVQaXBlbGluZSYmLCBjb25zdCBjaGFyKiBtZXNzYWdlKT4mJiBjYWxs
YmFjaykKK3ZvaWQgRGV2aWNlOjpjcmVhdGVDb21wdXRlUGlwZWxpbmVBc3luYyhjb25zdCBXR1BV
Q29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciogZGVzY3JpcHRvciwgV1RGOjpGdW5jdGlvbjx2b2lk
KFdHUFVDcmVhdGVQaXBlbGluZUFzeW5jU3RhdHVzLCBSZWY8Q29tcHV0ZVBpcGVsaW5lPiYmLCBj
b25zdCBjaGFyKiBtZXNzYWdlKT4mJiBjYWxsYmFjaykKIHsKICAgICBVTlVTRURfUEFSQU0oZGVz
Y3JpcHRvcik7CiAgICAgVU5VU0VEX1BBUkFNKGNhbGxiYWNrKTsKIH0KIAotUGlwZWxpbmVMYXlv
dXQgRGV2aWNlOjpjcmVhdGVQaXBlbGluZUxheW91dChjb25zdCBXR1BVUGlwZWxpbmVMYXlvdXRE
ZXNjcmlwdG9yKiBkZXNjcmlwdG9yKQorUmVmPFBpcGVsaW5lTGF5b3V0PiBEZXZpY2U6OmNyZWF0
ZVBpcGVsaW5lTGF5b3V0KGNvbnN0IFdHUFVQaXBlbGluZUxheW91dERlc2NyaXB0b3IqIGRlc2Ny
aXB0b3IpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGRlc2NyaXB0b3IpOwotICAgIHJldHVybiB7IH07
CisgICAgcmV0dXJuIFBpcGVsaW5lTGF5b3V0OjpjcmVhdGUoKTsKIH0KIAotUXVlcnlTZXQgRGV2
aWNlOjpjcmVhdGVRdWVyeVNldChjb25zdCBXR1BVUXVlcnlTZXREZXNjcmlwdG9yKiBkZXNjcmlw
dG9yKQorUmVmPFF1ZXJ5U2V0PiBEZXZpY2U6OmNyZWF0ZVF1ZXJ5U2V0KGNvbnN0IFdHUFVRdWVy
eVNldERlc2NyaXB0b3IqIGRlc2NyaXB0b3IpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGRlc2NyaXB0
b3IpOwotICAgIHJldHVybiB7IH07CisgICAgcmV0dXJuIFF1ZXJ5U2V0OjpjcmVhdGUoKTsKIH0K
IAotUmVuZGVyQnVuZGxlRW5jb2RlciBEZXZpY2U6OmNyZWF0ZVJlbmRlckJ1bmRsZUVuY29kZXIo
Y29uc3QgV0dQVVJlbmRlckJ1bmRsZUVuY29kZXJEZXNjcmlwdG9yKiBkZXNjcmlwdG9yKQorUmVm
PFJlbmRlckJ1bmRsZUVuY29kZXI+IERldmljZTo6Y3JlYXRlUmVuZGVyQnVuZGxlRW5jb2Rlcihj
b25zdCBXR1BVUmVuZGVyQnVuZGxlRW5jb2RlckRlc2NyaXB0b3IqIGRlc2NyaXB0b3IpCiB7CiAg
ICAgVU5VU0VEX1BBUkFNKGRlc2NyaXB0b3IpOwotICAgIHJldHVybiB7IH07CisgICAgcmV0dXJu
IFJlbmRlckJ1bmRsZUVuY29kZXI6OmNyZWF0ZSgpOwogfQogCi1SZW5kZXJQaXBlbGluZSBEZXZp
Y2U6OmNyZWF0ZVJlbmRlclBpcGVsaW5lKGNvbnN0IFdHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0
b3IqIGRlc2NyaXB0b3IpCitSZWY8UmVuZGVyUGlwZWxpbmU+IERldmljZTo6Y3JlYXRlUmVuZGVy
UGlwZWxpbmUoY29uc3QgV0dQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciogZGVzY3JpcHRvcikK
IHsKICAgICBVTlVTRURfUEFSQU0oZGVzY3JpcHRvcik7Ci0gICAgcmV0dXJuIHsgfTsKKyAgICBy
ZXR1cm4gUmVuZGVyUGlwZWxpbmU6OmNyZWF0ZSgpOwogfQogCi12b2lkIERldmljZTo6Y3JlYXRl
UmVuZGVyUGlwZWxpbmVBc3luYyhjb25zdCBXR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKiBk
ZXNjcmlwdG9yLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoV0dQVUNyZWF0ZVBpcGVsaW5lQXN5bmNTdGF0
dXMsIFJlbmRlclBpcGVsaW5lJiYsIGNvbnN0IGNoYXIqIG1lc3NhZ2UpPiYmIGNhbGxiYWNrKQor
dm9pZCBEZXZpY2U6OmNyZWF0ZVJlbmRlclBpcGVsaW5lQXN5bmMoY29uc3QgV0dQVVJlbmRlclBp
cGVsaW5lRGVzY3JpcHRvciogZGVzY3JpcHRvciwgV1RGOjpGdW5jdGlvbjx2b2lkKFdHUFVDcmVh
dGVQaXBlbGluZUFzeW5jU3RhdHVzLCBSZWY8UmVuZGVyUGlwZWxpbmU+JiYsIGNvbnN0IGNoYXIq
IG1lc3NhZ2UpPiYmIGNhbGxiYWNrKQogewogICAgIFVOVVNFRF9QQVJBTShkZXNjcmlwdG9yKTsK
ICAgICBVTlVTRURfUEFSQU0oY2FsbGJhY2spOwogfQogCi1TYW1wbGVyIERldmljZTo6Y3JlYXRl
U2FtcGxlcihjb25zdCBXR1BVU2FtcGxlckRlc2NyaXB0b3IqIGRlc2NyaXB0b3IpCitSZWY8U2Ft
cGxlcj4gRGV2aWNlOjpjcmVhdGVTYW1wbGVyKGNvbnN0IFdHUFVTYW1wbGVyRGVzY3JpcHRvciog
ZGVzY3JpcHRvcikKIHsKICAgICBVTlVTRURfUEFSQU0oZGVzY3JpcHRvcik7Ci0gICAgcmV0dXJu
IHsgfTsKKyAgICByZXR1cm4gU2FtcGxlcjo6Y3JlYXRlKCk7CiB9CiAKLVNoYWRlck1vZHVsZSBE
ZXZpY2U6OmNyZWF0ZVNoYWRlck1vZHVsZShjb25zdCBXR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRv
ciogZGVzY3JpcHRvcikKK1JlZjxTaGFkZXJNb2R1bGU+IERldmljZTo6Y3JlYXRlU2hhZGVyTW9k
dWxlKGNvbnN0IFdHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yKiBkZXNjcmlwdG9yKQogewogICAg
IFVOVVNFRF9QQVJBTShkZXNjcmlwdG9yKTsKLSAgICByZXR1cm4geyB9OworICAgIHJldHVybiBT
aGFkZXJNb2R1bGU6OmNyZWF0ZSgpOwogfQogCi1Td2FwQ2hhaW4gRGV2aWNlOjpjcmVhdGVTd2Fw
Q2hhaW4oY29uc3QgU3VyZmFjZSYgc3VyZmFjZSwgY29uc3QgV0dQVVN3YXBDaGFpbkRlc2NyaXB0
b3IqIGRlc2NyaXB0b3IpCitSZWY8U3dhcENoYWluPiBEZXZpY2U6OmNyZWF0ZVN3YXBDaGFpbihj
b25zdCBTdXJmYWNlJiBzdXJmYWNlLCBjb25zdCBXR1BVU3dhcENoYWluRGVzY3JpcHRvciogZGVz
Y3JpcHRvcikKIHsKICAgICBVTlVTRURfUEFSQU0oc3VyZmFjZSk7CiAgICAgVU5VU0VEX1BBUkFN
KGRlc2NyaXB0b3IpOwotICAgIHJldHVybiB7IH07CisgICAgcmV0dXJuIFN3YXBDaGFpbjo6Y3Jl
YXRlKCk7CiB9CiAKLVRleHR1cmUgRGV2aWNlOjpjcmVhdGVUZXh0dXJlKGNvbnN0IFdHUFVUZXh0
dXJlRGVzY3JpcHRvciogZGVzY3JpcHRvcikKK1JlZjxUZXh0dXJlPiBEZXZpY2U6OmNyZWF0ZVRl
eHR1cmUoY29uc3QgV0dQVVRleHR1cmVEZXNjcmlwdG9yKiBkZXNjcmlwdG9yKQogewogICAgIFVO
VVNFRF9QQVJBTShkZXNjcmlwdG9yKTsKLSAgICByZXR1cm4geyB9OworICAgIHJldHVybiBUZXh0
dXJlOjpjcmVhdGUoKTsKIH0KIAogdm9pZCBEZXZpY2U6OmRlc3Ryb3koKQpAQCAtMTQ3LDEyICsx
NTEsMTIgQEAgYm9vbCBEZXZpY2U6OmdldExpbWl0cyhXR1BVU3VwcG9ydGVkTGltaXRzKiBsaW1p
dHMpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1RdWV1ZSBEZXZpY2U6OmdldFF1ZXVlKCkKK1Jl
ZjxRdWV1ZT4gRGV2aWNlOjpnZXRRdWV1ZSgpCiB7Ci0gICAgcmV0dXJuIHsgfTsKKyAgICByZXR1
cm4gUXVldWU6OmNyZWF0ZSgpOwogfQogCi1ib29sIERldmljZTo6cG9wRXJyb3JTY29wZShzdGQ6
OmZ1bmN0aW9uPHZvaWQoV0dQVUVycm9yVHlwZSwgY29uc3QgY2hhciopPiYmIGNhbGxiYWNrKQor
Ym9vbCBEZXZpY2U6OnBvcEVycm9yU2NvcGUoV1RGOjpGdW5jdGlvbjx2b2lkKFdHUFVFcnJvclR5
cGUsIGNvbnN0IGNoYXIqKT4mJiBjYWxsYmFjaykKIHsKICAgICBVTlVTRURfUEFSQU0oY2FsbGJh
Y2spOwogICAgIHJldHVybiBmYWxzZTsKQEAgLTE2MywxMiArMTY3LDEyIEBAIHZvaWQgRGV2aWNl
OjpwdXNoRXJyb3JTY29wZShXR1BVRXJyb3JGaWx0ZXIgZmlsdGVyKQogICAgIFVOVVNFRF9QQVJB
TShmaWx0ZXIpOwogfQogCi12b2lkIERldmljZTo6c2V0RGV2aWNlTG9zdENhbGxiYWNrKHN0ZDo6
ZnVuY3Rpb248dm9pZChXR1BVRGV2aWNlTG9zdFJlYXNvbiwgY29uc3QgY2hhciopPiYmIGNhbGxi
YWNrKQordm9pZCBEZXZpY2U6OnNldERldmljZUxvc3RDYWxsYmFjayhXVEY6OkZ1bmN0aW9uPHZv
aWQoV0dQVURldmljZUxvc3RSZWFzb24sIGNvbnN0IGNoYXIqKT4mJiBjYWxsYmFjaykKIHsKICAg
ICBVTlVTRURfUEFSQU0oY2FsbGJhY2spOwogfQogCi12b2lkIERldmljZTo6c2V0VW5jYXB0dXJl
ZEVycm9yQ2FsbGJhY2soc3RkOjpmdW5jdGlvbjx2b2lkKFdHUFVFcnJvclR5cGUsIGNvbnN0IGNo
YXIqKT4mJiBjYWxsYmFjaykKK3ZvaWQgRGV2aWNlOjpzZXRVbmNhcHR1cmVkRXJyb3JDYWxsYmFj
ayhXVEY6OkZ1bmN0aW9uPHZvaWQoV0dQVUVycm9yVHlwZSwgY29uc3QgY2hhciopPiYmIGNhbGxi
YWNrKQogewogICAgIFVOVVNFRF9QQVJBTShjYWxsYmFjayk7CiB9CkBAIC0xODcsMTEzICsxOTEs
MTEzIEBAIHZvaWQgd2dwdURldmljZVJlbGVhc2UoV0dQVURldmljZSBkZXZpY2UpCiAKIFdHUFVC
aW5kR3JvdXAgd2dwdURldmljZUNyZWF0ZUJpbmRHcm91cChXR1BVRGV2aWNlIGRldmljZSwgY29u
c3QgV0dQVUJpbmRHcm91cERlc2NyaXB0b3IqIGRlc2NyaXB0b3IpCiB7Ci0gICAgcmV0dXJuIG5l
dyBXR1BVQmluZEdyb3VwSW1wbCB7IGRldmljZS0+ZGV2aWNlLmNyZWF0ZUJpbmRHcm91cChkZXNj
cmlwdG9yKSB9OworICAgIHJldHVybiBuZXcgV0dQVUJpbmRHcm91cEltcGwgeyBkZXZpY2UtPmRl
dmljZS0+Y3JlYXRlQmluZEdyb3VwKGRlc2NyaXB0b3IpIH07CiB9CiAKIFdHUFVCaW5kR3JvdXBM
YXlvdXQgd2dwdURldmljZUNyZWF0ZUJpbmRHcm91cExheW91dChXR1BVRGV2aWNlIGRldmljZSwg
Y29uc3QgV0dQVUJpbmRHcm91cExheW91dERlc2NyaXB0b3IqIGRlc2NyaXB0b3IpCiB7Ci0gICAg
cmV0dXJuIG5ldyBXR1BVQmluZEdyb3VwTGF5b3V0SW1wbCB7IGRldmljZS0+ZGV2aWNlLmNyZWF0
ZUJpbmRHcm91cExheW91dChkZXNjcmlwdG9yKSB9OworICAgIHJldHVybiBuZXcgV0dQVUJpbmRH
cm91cExheW91dEltcGwgeyBkZXZpY2UtPmRldmljZS0+Y3JlYXRlQmluZEdyb3VwTGF5b3V0KGRl
c2NyaXB0b3IpIH07CiB9CiAKIFdHUFVCdWZmZXIgd2dwdURldmljZUNyZWF0ZUJ1ZmZlcihXR1BV
RGV2aWNlIGRldmljZSwgY29uc3QgV0dQVUJ1ZmZlckRlc2NyaXB0b3IqIGRlc2NyaXB0b3IpCiB7
Ci0gICAgcmV0dXJuIG5ldyBXR1BVQnVmZmVySW1wbCB7IGRldmljZS0+ZGV2aWNlLmNyZWF0ZUJ1
ZmZlcihkZXNjcmlwdG9yKSB9OworICAgIHJldHVybiBuZXcgV0dQVUJ1ZmZlckltcGwgeyBkZXZp
Y2UtPmRldmljZS0+Y3JlYXRlQnVmZmVyKGRlc2NyaXB0b3IpIH07CiB9CiAKIFdHUFVDb21tYW5k
RW5jb2RlciB3Z3B1RGV2aWNlQ3JlYXRlQ29tbWFuZEVuY29kZXIoV0dQVURldmljZSBkZXZpY2Us
IGNvbnN0IFdHUFVDb21tYW5kRW5jb2RlckRlc2NyaXB0b3IqIGRlc2NyaXB0b3IpCiB7Ci0gICAg
cmV0dXJuIG5ldyBXR1BVQ29tbWFuZEVuY29kZXJJbXBsIHsgZGV2aWNlLT5kZXZpY2UuY3JlYXRl
Q29tbWFuZEVuY29kZXIoZGVzY3JpcHRvcikgfTsKKyAgICByZXR1cm4gbmV3IFdHUFVDb21tYW5k
RW5jb2RlckltcGwgeyBkZXZpY2UtPmRldmljZS0+Y3JlYXRlQ29tbWFuZEVuY29kZXIoZGVzY3Jp
cHRvcikgfTsKIH0KIAogV0dQVUNvbXB1dGVQaXBlbGluZSB3Z3B1RGV2aWNlQ3JlYXRlQ29tcHV0
ZVBpcGVsaW5lKFdHUFVEZXZpY2UgZGV2aWNlLCBjb25zdCBXR1BVQ29tcHV0ZVBpcGVsaW5lRGVz
Y3JpcHRvciogZGVzY3JpcHRvcikKIHsKLSAgICByZXR1cm4gbmV3IFdHUFVDb21wdXRlUGlwZWxp
bmVJbXBsIHsgZGV2aWNlLT5kZXZpY2UuY3JlYXRlQ29tcHV0ZVBpcGVsaW5lKGRlc2NyaXB0b3Ip
IH07CisgICAgcmV0dXJuIG5ldyBXR1BVQ29tcHV0ZVBpcGVsaW5lSW1wbCB7IGRldmljZS0+ZGV2
aWNlLT5jcmVhdGVDb21wdXRlUGlwZWxpbmUoZGVzY3JpcHRvcikgfTsKIH0KIAogdm9pZCB3Z3B1
RGV2aWNlQ3JlYXRlQ29tcHV0ZVBpcGVsaW5lQXN5bmMoV0dQVURldmljZSBkZXZpY2UsIGNvbnN0
IFdHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yKiBkZXNjcmlwdG9yLCBXR1BVQ3JlYXRlQ29t
cHV0ZVBpcGVsaW5lQXN5bmNDYWxsYmFjayBjYWxsYmFjaywgdm9pZCogdXNlcmRhdGEpCiB7Ci0g
ICAgZGV2aWNlLT5kZXZpY2UuY3JlYXRlQ29tcHV0ZVBpcGVsaW5lQXN5bmMoZGVzY3JpcHRvciwg
W2NhbGxiYWNrLCB1c2VyZGF0YV0gKFdHUFVDcmVhdGVQaXBlbGluZUFzeW5jU3RhdHVzIHN0YXR1
cywgV2ViR1BVOjpDb21wdXRlUGlwZWxpbmUmJiBwaXBlbGluZSwgY29uc3QgY2hhciogbWVzc2Fn
ZSkgeworICAgIGRldmljZS0+ZGV2aWNlLT5jcmVhdGVDb21wdXRlUGlwZWxpbmVBc3luYyhkZXNj
cmlwdG9yLCBbY2FsbGJhY2ssIHVzZXJkYXRhXSAoV0dQVUNyZWF0ZVBpcGVsaW5lQXN5bmNTdGF0
dXMgc3RhdHVzLCBSZWY8V2ViR1BVOjpDb21wdXRlUGlwZWxpbmU+JiYgcGlwZWxpbmUsIGNvbnN0
IGNoYXIqIG1lc3NhZ2UpIHsKICAgICAgICAgY2FsbGJhY2soc3RhdHVzLCBuZXcgV0dQVUNvbXB1
dGVQaXBlbGluZUltcGwgeyBXVEZNb3ZlKHBpcGVsaW5lKSB9LCBtZXNzYWdlLCB1c2VyZGF0YSk7
CiAgICAgfSk7CiB9CiAKIFdHUFVQaXBlbGluZUxheW91dCB3Z3B1RGV2aWNlQ3JlYXRlUGlwZWxp
bmVMYXlvdXQoV0dQVURldmljZSBkZXZpY2UsIGNvbnN0IFdHUFVQaXBlbGluZUxheW91dERlc2Ny
aXB0b3IqIGRlc2NyaXB0b3IpCiB7Ci0gICAgcmV0dXJuIG5ldyBXR1BVUGlwZWxpbmVMYXlvdXRJ
bXBsIHsgZGV2aWNlLT5kZXZpY2UuY3JlYXRlUGlwZWxpbmVMYXlvdXQoZGVzY3JpcHRvcikgfTsK
KyAgICByZXR1cm4gbmV3IFdHUFVQaXBlbGluZUxheW91dEltcGwgeyBkZXZpY2UtPmRldmljZS0+
Y3JlYXRlUGlwZWxpbmVMYXlvdXQoZGVzY3JpcHRvcikgfTsKIH0KIAogV0dQVVF1ZXJ5U2V0IHdn
cHVEZXZpY2VDcmVhdGVRdWVyeVNldChXR1BVRGV2aWNlIGRldmljZSwgY29uc3QgV0dQVVF1ZXJ5
U2V0RGVzY3JpcHRvciogZGVzY3JpcHRvcikKIHsKLSAgICByZXR1cm4gbmV3IFdHUFVRdWVyeVNl
dEltcGwgeyBkZXZpY2UtPmRldmljZS5jcmVhdGVRdWVyeVNldChkZXNjcmlwdG9yKSB9OworICAg
IHJldHVybiBuZXcgV0dQVVF1ZXJ5U2V0SW1wbCB7IGRldmljZS0+ZGV2aWNlLT5jcmVhdGVRdWVy
eVNldChkZXNjcmlwdG9yKSB9OwogfQogCiBXR1BVUmVuZGVyQnVuZGxlRW5jb2RlciB3Z3B1RGV2
aWNlQ3JlYXRlUmVuZGVyQnVuZGxlRW5jb2RlcihXR1BVRGV2aWNlIGRldmljZSwgY29uc3QgV0dQ
VVJlbmRlckJ1bmRsZUVuY29kZXJEZXNjcmlwdG9yKiBkZXNjcmlwdG9yKQogewotICAgIHJldHVy
biBuZXcgV0dQVVJlbmRlckJ1bmRsZUVuY29kZXJJbXBsIHsgZGV2aWNlLT5kZXZpY2UuY3JlYXRl
UmVuZGVyQnVuZGxlRW5jb2RlcihkZXNjcmlwdG9yKSB9OworICAgIHJldHVybiBuZXcgV0dQVVJl
bmRlckJ1bmRsZUVuY29kZXJJbXBsIHsgZGV2aWNlLT5kZXZpY2UtPmNyZWF0ZVJlbmRlckJ1bmRs
ZUVuY29kZXIoZGVzY3JpcHRvcikgfTsKIH0KIAogV0dQVVJlbmRlclBpcGVsaW5lIHdncHVEZXZp
Y2VDcmVhdGVSZW5kZXJQaXBlbGluZShXR1BVRGV2aWNlIGRldmljZSwgY29uc3QgV0dQVVJlbmRl
clBpcGVsaW5lRGVzY3JpcHRvciogZGVzY3JpcHRvcikKIHsKLSAgICByZXR1cm4gbmV3IFdHUFVS
ZW5kZXJQaXBlbGluZUltcGwgeyBkZXZpY2UtPmRldmljZS5jcmVhdGVSZW5kZXJQaXBlbGluZShk
ZXNjcmlwdG9yKSB9OworICAgIHJldHVybiBuZXcgV0dQVVJlbmRlclBpcGVsaW5lSW1wbCB7IGRl
dmljZS0+ZGV2aWNlLT5jcmVhdGVSZW5kZXJQaXBlbGluZShkZXNjcmlwdG9yKSB9OwogfQogCiB2
b2lkIHdncHVEZXZpY2VDcmVhdGVSZW5kZXJQaXBlbGluZUFzeW5jKFdHUFVEZXZpY2UgZGV2aWNl
LCBjb25zdCBXR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKiBkZXNjcmlwdG9yLCBXR1BVQ3Jl
YXRlUmVuZGVyUGlwZWxpbmVBc3luY0NhbGxiYWNrIGNhbGxiYWNrLCB2b2lkKiB1c2VyZGF0YSkK
IHsKLSAgICBkZXZpY2UtPmRldmljZS5jcmVhdGVSZW5kZXJQaXBlbGluZUFzeW5jKGRlc2NyaXB0
b3IsIFtjYWxsYmFjaywgdXNlcmRhdGFdIChXR1BVQ3JlYXRlUGlwZWxpbmVBc3luY1N0YXR1cyBz
dGF0dXMsIFdlYkdQVTo6UmVuZGVyUGlwZWxpbmUmJiBwaXBlbGluZSwgY29uc3QgY2hhciogbWVz
c2FnZSkgeworICAgIGRldmljZS0+ZGV2aWNlLT5jcmVhdGVSZW5kZXJQaXBlbGluZUFzeW5jKGRl
c2NyaXB0b3IsIFtjYWxsYmFjaywgdXNlcmRhdGFdIChXR1BVQ3JlYXRlUGlwZWxpbmVBc3luY1N0
YXR1cyBzdGF0dXMsIFJlZjxXZWJHUFU6OlJlbmRlclBpcGVsaW5lPiYmIHBpcGVsaW5lLCBjb25z
dCBjaGFyKiBtZXNzYWdlKSB7CiAgICAgICAgIGNhbGxiYWNrKHN0YXR1cywgbmV3IFdHUFVSZW5k
ZXJQaXBlbGluZUltcGwgeyBXVEZNb3ZlKHBpcGVsaW5lKSB9LCBtZXNzYWdlLCB1c2VyZGF0YSk7
CiAgICAgfSk7CiB9CiAKIFdHUFVTYW1wbGVyIHdncHVEZXZpY2VDcmVhdGVTYW1wbGVyKFdHUFVE
ZXZpY2UgZGV2aWNlLCBjb25zdCBXR1BVU2FtcGxlckRlc2NyaXB0b3IqIGRlc2NyaXB0b3IpCiB7
Ci0gICAgcmV0dXJuIG5ldyBXR1BVU2FtcGxlckltcGwgeyBkZXZpY2UtPmRldmljZS5jcmVhdGVT
YW1wbGVyKGRlc2NyaXB0b3IpIH07CisgICAgcmV0dXJuIG5ldyBXR1BVU2FtcGxlckltcGwgeyBk
ZXZpY2UtPmRldmljZS0+Y3JlYXRlU2FtcGxlcihkZXNjcmlwdG9yKSB9OwogfQogCiBXR1BVU2hh
ZGVyTW9kdWxlIHdncHVEZXZpY2VDcmVhdGVTaGFkZXJNb2R1bGUoV0dQVURldmljZSBkZXZpY2Us
IGNvbnN0IFdHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yKiBkZXNjcmlwdG9yKQogewotICAgIHJl
dHVybiBuZXcgV0dQVVNoYWRlck1vZHVsZUltcGwgeyBkZXZpY2UtPmRldmljZS5jcmVhdGVTaGFk
ZXJNb2R1bGUoZGVzY3JpcHRvcikgfTsKKyAgICByZXR1cm4gbmV3IFdHUFVTaGFkZXJNb2R1bGVJ
bXBsIHsgZGV2aWNlLT5kZXZpY2UtPmNyZWF0ZVNoYWRlck1vZHVsZShkZXNjcmlwdG9yKSB9Owog
fQogCiBXR1BVU3dhcENoYWluIHdncHVEZXZpY2VDcmVhdGVTd2FwQ2hhaW4oV0dQVURldmljZSBk
ZXZpY2UsIFdHUFVTdXJmYWNlIHN1cmZhY2UsIGNvbnN0IFdHUFVTd2FwQ2hhaW5EZXNjcmlwdG9y
KiBkZXNjcmlwdG9yKQogewotICAgIHJldHVybiBuZXcgV0dQVVN3YXBDaGFpbkltcGwgeyBkZXZp
Y2UtPmRldmljZS5jcmVhdGVTd2FwQ2hhaW4oc3VyZmFjZS0+c3VyZmFjZSwgZGVzY3JpcHRvcikg
fTsKKyAgICByZXR1cm4gbmV3IFdHUFVTd2FwQ2hhaW5JbXBsIHsgZGV2aWNlLT5kZXZpY2UtPmNy
ZWF0ZVN3YXBDaGFpbihzdXJmYWNlLT5zdXJmYWNlLCBkZXNjcmlwdG9yKSB9OwogfQogCiBXR1BV
VGV4dHVyZSB3Z3B1RGV2aWNlQ3JlYXRlVGV4dHVyZShXR1BVRGV2aWNlIGRldmljZSwgY29uc3Qg
V0dQVVRleHR1cmVEZXNjcmlwdG9yKiBkZXNjcmlwdG9yKQogewotICAgIHJldHVybiBuZXcgV0dQ
VVRleHR1cmVJbXBsIHsgZGV2aWNlLT5kZXZpY2UuY3JlYXRlVGV4dHVyZShkZXNjcmlwdG9yKSB9
OworICAgIHJldHVybiBuZXcgV0dQVVRleHR1cmVJbXBsIHsgZGV2aWNlLT5kZXZpY2UtPmNyZWF0
ZVRleHR1cmUoZGVzY3JpcHRvcikgfTsKIH0KIAogdm9pZCB3Z3B1RGV2aWNlRGVzdHJveShXR1BV
RGV2aWNlIGRldmljZSkKIHsKLSAgICBkZXZpY2UtPmRldmljZS5kZXN0cm95KCk7CisgICAgZGV2
aWNlLT5kZXZpY2UtPmRlc3Ryb3koKTsKIH0KIAogYm9vbCB3Z3B1RGV2aWNlR2V0TGltaXRzKFdH
UFVEZXZpY2UgZGV2aWNlLCBXR1BVU3VwcG9ydGVkTGltaXRzKiBsaW1pdHMpCiB7Ci0gICAgcmV0
dXJuIGRldmljZS0+ZGV2aWNlLmdldExpbWl0cyhsaW1pdHMpOworICAgIHJldHVybiBkZXZpY2Ut
PmRldmljZS0+Z2V0TGltaXRzKGxpbWl0cyk7CiB9CiAKIFdHUFVRdWV1ZSB3Z3B1RGV2aWNlR2V0
UXVldWUoV0dQVURldmljZSBkZXZpY2UpCiB7Ci0gICAgcmV0dXJuIG5ldyBXR1BVUXVldWVJbXBs
IHsgZGV2aWNlLT5kZXZpY2UuZ2V0UXVldWUoKSB9OworICAgIHJldHVybiBuZXcgV0dQVVF1ZXVl
SW1wbCB7IGRldmljZS0+ZGV2aWNlLT5nZXRRdWV1ZSgpIH07CiB9CiAKIGJvb2wgd2dwdURldmlj
ZVBvcEVycm9yU2NvcGUoV0dQVURldmljZSBkZXZpY2UsIFdHUFVFcnJvckNhbGxiYWNrIGNhbGxi
YWNrLCB2b2lkKiB1c2VyZGF0YSkKIHsKLSAgICByZXR1cm4gZGV2aWNlLT5kZXZpY2UucG9wRXJy
b3JTY29wZShbY2FsbGJhY2ssIHVzZXJkYXRhXSAoV0dQVUVycm9yVHlwZSB0eXBlLCBjb25zdCBj
aGFyKiBtZXNzYWdlKSB7CisgICAgcmV0dXJuIGRldmljZS0+ZGV2aWNlLT5wb3BFcnJvclNjb3Bl
KFtjYWxsYmFjaywgdXNlcmRhdGFdIChXR1BVRXJyb3JUeXBlIHR5cGUsIGNvbnN0IGNoYXIqIG1l
c3NhZ2UpIHsKICAgICAgICAgY2FsbGJhY2sodHlwZSwgbWVzc2FnZSwgdXNlcmRhdGEpOwogICAg
IH0pOwogfQogCiB2b2lkIHdncHVEZXZpY2VQdXNoRXJyb3JTY29wZShXR1BVRGV2aWNlIGRldmlj
ZSwgV0dQVUVycm9yRmlsdGVyIGZpbHRlcikKIHsKLSAgICBkZXZpY2UtPmRldmljZS5wdXNoRXJy
b3JTY29wZShmaWx0ZXIpOworICAgIGRldmljZS0+ZGV2aWNlLT5wdXNoRXJyb3JTY29wZShmaWx0
ZXIpOwogfQogCiB2b2lkIHdncHVEZXZpY2VTZXREZXZpY2VMb3N0Q2FsbGJhY2soV0dQVURldmlj
ZSBkZXZpY2UsIFdHUFVEZXZpY2VMb3N0Q2FsbGJhY2sgY2FsbGJhY2ssIHZvaWQqIHVzZXJkYXRh
KQogewotICAgIHJldHVybiBkZXZpY2UtPmRldmljZS5zZXREZXZpY2VMb3N0Q2FsbGJhY2soW2Nh
bGxiYWNrLCB1c2VyZGF0YV0gKFdHUFVEZXZpY2VMb3N0UmVhc29uIHJlYXNvbiwgY29uc3QgY2hh
ciogbWVzc2FnZSkgeworICAgIHJldHVybiBkZXZpY2UtPmRldmljZS0+c2V0RGV2aWNlTG9zdENh
bGxiYWNrKFtjYWxsYmFjaywgdXNlcmRhdGFdIChXR1BVRGV2aWNlTG9zdFJlYXNvbiByZWFzb24s
IGNvbnN0IGNoYXIqIG1lc3NhZ2UpIHsKICAgICAgICAgaWYgKGNhbGxiYWNrKQogICAgICAgICAg
ICAgY2FsbGJhY2socmVhc29uLCBtZXNzYWdlLCB1c2VyZGF0YSk7CiAgICAgfSk7CkBAIC0zMDEs
NyArMzA1LDcgQEAgdm9pZCB3Z3B1RGV2aWNlU2V0RGV2aWNlTG9zdENhbGxiYWNrKFdHUFVEZXZp
Y2UgZGV2aWNlLCBXR1BVRGV2aWNlTG9zdENhbGxiYWNrIGMKIAogdm9pZCB3Z3B1RGV2aWNlU2V0
VW5jYXB0dXJlZEVycm9yQ2FsbGJhY2soV0dQVURldmljZSBkZXZpY2UsIFdHUFVFcnJvckNhbGxi
YWNrIGNhbGxiYWNrLCB2b2lkKiB1c2VyZGF0YSkKIHsKLSAgICByZXR1cm4gZGV2aWNlLT5kZXZp
Y2Uuc2V0VW5jYXB0dXJlZEVycm9yQ2FsbGJhY2soW2NhbGxiYWNrLCB1c2VyZGF0YV0gKFdHUFVF
cnJvclR5cGUgdHlwZSwgY29uc3QgY2hhciogbWVzc2FnZSkgeworICAgIHJldHVybiBkZXZpY2Ut
PmRldmljZS0+c2V0VW5jYXB0dXJlZEVycm9yQ2FsbGJhY2soW2NhbGxiYWNrLCB1c2VyZGF0YV0g
KFdHUFVFcnJvclR5cGUgdHlwZSwgY29uc3QgY2hhciogbWVzc2FnZSkgewogICAgICAgICBpZiAo
Y2FsbGJhY2spCiAgICAgICAgICAgICBjYWxsYmFjayh0eXBlLCBtZXNzYWdlLCB1c2VyZGF0YSk7
CiAgICAgfSk7CkBAIC0zMDksNSArMzEzLDUgQEAgdm9pZCB3Z3B1RGV2aWNlU2V0VW5jYXB0dXJl
ZEVycm9yQ2FsbGJhY2soV0dQVURldmljZSBkZXZpY2UsIFdHUFVFcnJvckNhbGxiYWNrIGMKIAog
dm9pZCB3Z3B1RGV2aWNlU2V0TGFiZWwoV0dQVURldmljZSBkZXZpY2UsIGNvbnN0IGNoYXIqIGxh
YmVsKQogewotICAgIGRldmljZS0+ZGV2aWNlLnNldExhYmVsKGxhYmVsKTsKKyAgICBkZXZpY2Ut
PmRldmljZS0+c2V0TGFiZWwobGFiZWwpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9X
ZWJHUFUvSW5zdGFuY2UuaCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0luc3RhbmNlLmgKaW5kZXgg
ZjM1NDQ3ZDA0OTk1YzkxN2Y0ZDVkNzM0OWVhMWE5MDc0MjVkMGEyMi4uNWMxZDcyMmJhZTZmYWUw
MTQ0YTg3YjRmZDY2MzU3NDIxZGI1MTE0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJH
UFUvSW5zdGFuY2UuaAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9JbnN0YW5jZS5oCkBAIC0y
NiwyMiArMjYsMzYgQEAKICNwcmFnbWEgb25jZQogCiAjaW1wb3J0ICJXZWJHUFUuaCIKLSNpbXBv
cnQgPGZ1bmN0aW9uYWw+CisjaW1wb3J0IDx3dGYvRmFzdE1hbGxvYy5oPgorI2ltcG9ydCA8d3Rm
L0Z1bmN0aW9uLmg+CisjaW1wb3J0IDx3dGYvUmVmLmg+CisjaW1wb3J0IDx3dGYvUmVmQ291bnRl
ZC5oPgogCiBuYW1lc3BhY2UgV2ViR1BVIHsKIAogY2xhc3MgQWRhcHRlcjsKIGNsYXNzIFN1cmZh
Y2U7CiAKLWNsYXNzIEluc3RhbmNlIHsKK2NsYXNzIEluc3RhbmNlIDogcHVibGljIFJlZkNvdW50
ZWQ8SW5zdGFuY2U+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAg
ICBTdXJmYWNlIGNyZWF0ZVN1cmZhY2UoY29uc3QgV0dQVVN1cmZhY2VEZXNjcmlwdG9yKik7Cisg
ICAgc3RhdGljIFJlZjxJbnN0YW5jZT4gY3JlYXRlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IEluc3RhbmNlKCkpOworICAgIH0KKworICAgIH5JbnN0YW5jZSgpOworCisg
ICAgUmVmPFN1cmZhY2U+IGNyZWF0ZVN1cmZhY2UoY29uc3QgV0dQVVN1cmZhY2VEZXNjcmlwdG9y
Kik7CiAgICAgdm9pZCBwcm9jZXNzRXZlbnRzKCk7Ci0gICAgdm9pZCByZXF1ZXN0QWRhcHRlcihj
b25zdCBXR1BVUmVxdWVzdEFkYXB0ZXJPcHRpb25zKiwgc3RkOjpmdW5jdGlvbjx2b2lkKFdHUFVS
ZXF1ZXN0QWRhcHRlclN0YXR1cywgQWRhcHRlciYmLCBjb25zdCBjaGFyKik+JiYgY2FsbGJhY2sp
OworICAgIHZvaWQgcmVxdWVzdEFkYXB0ZXIoY29uc3QgV0dQVVJlcXVlc3RBZGFwdGVyT3B0aW9u
cyosIFdURjo6RnVuY3Rpb248dm9pZChXR1BVUmVxdWVzdEFkYXB0ZXJTdGF0dXMsIFJlZjxBZGFw
dGVyPiYmLCBjb25zdCBjaGFyKik+JiYgY2FsbGJhY2spOworCitwcml2YXRlOgorICAgIEluc3Rh
bmNlKCk7CiB9OwogCi19Cit9IC8vIG5hbWVzcGFjZSBXZWJHUFUKIAogc3RydWN0IFdHUFVJbnN0
YW5jZUltcGwgewotICAgIFdlYkdQVTo6SW5zdGFuY2UgaW5zdGFuY2U7CisgICAgUmVmPFdlYkdQ
VTo6SW5zdGFuY2U+IGluc3RhbmNlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2Vi
R1BVL0luc3RhbmNlLm1tIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvSW5zdGFuY2UubW0KaW5kZXgg
NGM4NmM2ZTI0ZjM4ZDUwZDcxMWJmNzY4MmQxYzQ3ZGYwYjA5ZjQxZC4uOTM3N2Y4NTEwNTM2ODcx
OTkyYmE0ZGM0YjI0OTNmNTcyMzIxYWQzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJH
UFUvSW5zdGFuY2UubW0KKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvSW5zdGFuY2UubW0KQEAg
LTM0LDE3ICszNCwyMSBAQAogCiBuYW1lc3BhY2UgV2ViR1BVIHsKIAotU3VyZmFjZSBJbnN0YW5j
ZTo6Y3JlYXRlU3VyZmFjZShjb25zdCBXR1BVU3VyZmFjZURlc2NyaXB0b3IqIGRlc2NyaXB0b3Ip
CitJbnN0YW5jZTo6SW5zdGFuY2UoKSA9IGRlZmF1bHQ7CisKK0luc3RhbmNlOjp+SW5zdGFuY2Uo
KSA9IGRlZmF1bHQ7CisKK1JlZjxTdXJmYWNlPiBJbnN0YW5jZTo6Y3JlYXRlU3VyZmFjZShjb25z
dCBXR1BVU3VyZmFjZURlc2NyaXB0b3IqIGRlc2NyaXB0b3IpCiB7CiAgICAgVU5VU0VEX1BBUkFN
KGRlc2NyaXB0b3IpOwotICAgIHJldHVybiB7IH07CisgICAgcmV0dXJuIFN1cmZhY2U6OmNyZWF0
ZSgpOwogfQogCiB2b2lkIEluc3RhbmNlOjpwcm9jZXNzRXZlbnRzKCkKIHsKIH0KIAotdm9pZCBJ
bnN0YW5jZTo6cmVxdWVzdEFkYXB0ZXIoY29uc3QgV0dQVVJlcXVlc3RBZGFwdGVyT3B0aW9ucyog
b3B0aW9ucywgc3RkOjpmdW5jdGlvbjx2b2lkKFdHUFVSZXF1ZXN0QWRhcHRlclN0YXR1cywgQWRh
cHRlciYmLCBjb25zdCBjaGFyKik+JiYgY2FsbGJhY2spCit2b2lkIEluc3RhbmNlOjpyZXF1ZXN0
QWRhcHRlcihjb25zdCBXR1BVUmVxdWVzdEFkYXB0ZXJPcHRpb25zKiBvcHRpb25zLCBXVEY6OkZ1
bmN0aW9uPHZvaWQoV0dQVVJlcXVlc3RBZGFwdGVyU3RhdHVzLCBSZWY8QWRhcHRlcj4mJiwgY29u
c3QgY2hhciopPiYmIGNhbGxiYWNrKQogewogICAgIFVOVVNFRF9QQVJBTShvcHRpb25zKTsKICAg
ICBVTlVTRURfUEFSQU0oY2FsbGJhY2spOwpAQCAtMzcwLDE3ICszNzQsMTcgQEAgV0dQVVByb2Mg
d2dwdUdldFByb2NBZGRyZXNzKFdHUFVEZXZpY2UgZGV2aWNlLCBjb25zdCBjaGFyKiBwcm9jTmFt
ZSkKIAogV0dQVVN1cmZhY2Ugd2dwdUluc3RhbmNlQ3JlYXRlU3VyZmFjZShXR1BVSW5zdGFuY2Ug
aW5zdGFuY2UsIGNvbnN0IFdHUFVTdXJmYWNlRGVzY3JpcHRvciogZGVzY3JpcHRvcikKIHsKLSAg
ICByZXR1cm4gbmV3IFdHUFVTdXJmYWNlSW1wbCB7IGluc3RhbmNlLT5pbnN0YW5jZS5jcmVhdGVT
dXJmYWNlKGRlc2NyaXB0b3IpIH07CisgICAgcmV0dXJuIG5ldyBXR1BVU3VyZmFjZUltcGwgeyBp
bnN0YW5jZS0+aW5zdGFuY2UtPmNyZWF0ZVN1cmZhY2UoZGVzY3JpcHRvcikgfTsKIH0KIAogdm9p
ZCB3Z3B1SW5zdGFuY2VQcm9jZXNzRXZlbnRzKFdHUFVJbnN0YW5jZSBpbnN0YW5jZSkKIHsKLSAg
ICBpbnN0YW5jZS0+aW5zdGFuY2UucHJvY2Vzc0V2ZW50cygpOworICAgIGluc3RhbmNlLT5pbnN0
YW5jZS0+cHJvY2Vzc0V2ZW50cygpOwogfQogCiB2b2lkIHdncHVJbnN0YW5jZVJlcXVlc3RBZGFw
dGVyKFdHUFVJbnN0YW5jZSBpbnN0YW5jZSwgY29uc3QgV0dQVVJlcXVlc3RBZGFwdGVyT3B0aW9u
cyogb3B0aW9ucywgV0dQVVJlcXVlc3RBZGFwdGVyQ2FsbGJhY2sgY2FsbGJhY2ssIHZvaWQqIHVz
ZXJkYXRhKQogewotICAgIHJldHVybiBpbnN0YW5jZS0+aW5zdGFuY2UucmVxdWVzdEFkYXB0ZXIo
b3B0aW9ucywgW2NhbGxiYWNrLCB1c2VyZGF0YV0gKFdHUFVSZXF1ZXN0QWRhcHRlclN0YXR1cyBz
dGF0dXMsIFdlYkdQVTo6QWRhcHRlciYmIGFkYXB0ZXIsIGNvbnN0IGNoYXIqIG1lc3NhZ2UpIHsK
KyAgICByZXR1cm4gaW5zdGFuY2UtPmluc3RhbmNlLT5yZXF1ZXN0QWRhcHRlcihvcHRpb25zLCBb
Y2FsbGJhY2ssIHVzZXJkYXRhXSAoV0dQVVJlcXVlc3RBZGFwdGVyU3RhdHVzIHN0YXR1cywgUmVm
PFdlYkdQVTo6QWRhcHRlcj4mJiBhZGFwdGVyLCBjb25zdCBjaGFyKiBtZXNzYWdlKSB7CiAgICAg
ICAgIGNhbGxiYWNrKHN0YXR1cywgbmV3IFdHUFVBZGFwdGVySW1wbCB7IFdURk1vdmUoYWRhcHRl
cikgfSwgbWVzc2FnZSwgdXNlcmRhdGEpOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkdQVS9XZWJHUFUvUGlwZWxpbmVMYXlvdXQuaCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1Bp
cGVsaW5lTGF5b3V0LmgKaW5kZXggNWYxOTA4N2Q4ZDA3OWI5OGQwMTJiYjg0ZjdjYzMxMzZkMTk3
ZTA2MS4uMWY0MDNlNTQzNjRjYjExYzcyYTNhYzY3YmJiYzQ1MWI3MmQzNGQzNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvUGlwZWxpbmVMYXlvdXQuaAorKysgYi9Tb3VyY2UvV2Vi
R1BVL1dlYkdQVS9QaXBlbGluZUxheW91dC5oCkBAIC0yNiwxNiArMjYsMzAgQEAKICNwcmFnbWEg
b25jZQogCiAjaW1wb3J0ICJXZWJHUFUuaCIKKyNpbXBvcnQgPHd0Zi9GYXN0TWFsbG9jLmg+Cisj
aW1wb3J0IDx3dGYvUmVmLmg+CisjaW1wb3J0IDx3dGYvUmVmQ291bnRlZC5oPgogCiBuYW1lc3Bh
Y2UgV2ViR1BVIHsKIAotY2xhc3MgUGlwZWxpbmVMYXlvdXQgeworY2xhc3MgUGlwZWxpbmVMYXlv
dXQgOiBwdWJsaWMgUmVmQ291bnRlZDxQaXBlbGluZUxheW91dD4geworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgorICAgIHN0YXRpYyBSZWY8UGlwZWxpbmVMYXlvdXQ+IGNy
ZWF0ZSgpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQaXBlbGluZUxheW91
dCgpKTsKKyAgICB9CisKKyAgICB+UGlwZWxpbmVMYXlvdXQoKTsKKwogICAgIHZvaWQgc2V0TGFi
ZWwoY29uc3QgY2hhciopOworCitwcml2YXRlOgorICAgIFBpcGVsaW5lTGF5b3V0KCk7CiB9Owog
Ci19Cit9IC8vIG5hbWVzcGFjZSBXZWJHUFUKIAogc3RydWN0IFdHUFVQaXBlbGluZUxheW91dElt
cGwgewotICAgIFdlYkdQVTo6UGlwZWxpbmVMYXlvdXQgcGlwZWxpbmVMYXlvdXQ7CisgICAgUmVm
PFdlYkdQVTo6UGlwZWxpbmVMYXlvdXQ+IHBpcGVsaW5lTGF5b3V0OwogfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJHUFUvV2ViR1BVL1BpcGVsaW5lTGF5b3V0Lm1tIGIvU291cmNlL1dlYkdQVS9X
ZWJHUFUvUGlwZWxpbmVMYXlvdXQubW0KaW5kZXggODc0OGYzYTVhYjlmYzBhYTY1MGE0Mzg2ZTc3
MjBhOGYyYWI3YjA1Yy4uZTdhMzc1NTM5YmI1ZjVjOWJmNzVlNjdlYWYwNjQwNjhjYTM2YTkwNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUvUGlwZWxpbmVMYXlvdXQubW0KKysrIGIv
U291cmNlL1dlYkdQVS9XZWJHUFUvUGlwZWxpbmVMYXlvdXQubW0KQEAgLTMwLDYgKzMwLDEwIEBA
CiAKIG5hbWVzcGFjZSBXZWJHUFUgewogCitQaXBlbGluZUxheW91dDo6UGlwZWxpbmVMYXlvdXQo
KSA9IGRlZmF1bHQ7CisKK1BpcGVsaW5lTGF5b3V0Ojp+UGlwZWxpbmVMYXlvdXQoKSA9IGRlZmF1
bHQ7CisKIHZvaWQgUGlwZWxpbmVMYXlvdXQ6OnNldExhYmVsKGNvbnN0IGNoYXIqIGxhYmVsKQog
ewogICAgIFVOVVNFRF9QQVJBTShsYWJlbCk7CkBAIC00NCw1ICs0OCw1IEBAIHZvaWQgd2dwdVBp
cGVsaW5lTGF5b3V0UmVsZWFzZShXR1BVUGlwZWxpbmVMYXlvdXQgcGlwZWxpbmVMYXlvdXQpCiAK
IHZvaWQgd2dwdVBpcGVsaW5lTGF5b3V0U2V0TGFiZWwoV0dQVVBpcGVsaW5lTGF5b3V0IHBpcGVs
aW5lTGF5b3V0LCBjb25zdCBjaGFyKiBsYWJlbCkKIHsKLSAgICBwaXBlbGluZUxheW91dC0+cGlw
ZWxpbmVMYXlvdXQuc2V0TGFiZWwobGFiZWwpOworICAgIHBpcGVsaW5lTGF5b3V0LT5waXBlbGlu
ZUxheW91dC0+c2V0TGFiZWwobGFiZWwpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9X
ZWJHUFUvUXVlcnlTZXQuaCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1F1ZXJ5U2V0LmgKaW5kZXgg
NjRkMGU0YjVjNzJkZDlmMjFjMGYwN2IzMTE2ZGQzZWQ5ZGQwMGRhYS4uZmFjZTI1MTg2MjZmMmY2
NjA3ZWUxY2U4N2I4ODA2Njc3OGJkNzE4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJH
UFUvUXVlcnlTZXQuaAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9RdWVyeVNldC5oCkBAIC0y
NiwxNyArMjYsMzEgQEAKICNwcmFnbWEgb25jZQogCiAjaW1wb3J0ICJXZWJHUFUuaCIKKyNpbXBv
cnQgPHd0Zi9GYXN0TWFsbG9jLmg+CisjaW1wb3J0IDx3dGYvUmVmLmg+CisjaW1wb3J0IDx3dGYv
UmVmQ291bnRlZC5oPgogCiBuYW1lc3BhY2UgV2ViR1BVIHsKIAotY2xhc3MgUXVlcnlTZXQgewor
Y2xhc3MgUXVlcnlTZXQgOiBwdWJsaWMgUmVmQ291bnRlZDxRdWVyeVNldD4geworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgorICAgIHN0YXRpYyBSZWY8UXVlcnlTZXQ+IGNy
ZWF0ZSgpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBRdWVyeVNldCgpKTsK
KyAgICB9CisKKyAgICB+UXVlcnlTZXQoKTsKKwogICAgIHZvaWQgZGVzdHJveSgpOwogICAgIHZv
aWQgc2V0TGFiZWwoY29uc3QgY2hhciopOworCitwcml2YXRlOgorICAgIFF1ZXJ5U2V0KCk7CiB9
OwogCi19Cit9IC8vIG5hbWVzcGFjZSBXZWJHUFUKIAogc3RydWN0IFdHUFVRdWVyeVNldEltcGwg
ewotICAgIFdlYkdQVTo6UXVlcnlTZXQgcXVlcnlTZXQ7CisgICAgUmVmPFdlYkdQVTo6UXVlcnlT
ZXQ+IHF1ZXJ5U2V0OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1F1ZXJ5
U2V0Lm1tIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvUXVlcnlTZXQubW0KaW5kZXggMTRjMTNiYjA0
ZWM4NDhkNjY0ZmMwMzY2ODg3Zjc4N2ZlODgwMjVlMC4uNTc4NDIxMmM3M2MwNDgxNjM2MWQyZDZh
OTFhZmEyMzNkYjE4ZTZhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUvUXVlcnlT
ZXQubW0KKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvUXVlcnlTZXQubW0KQEAgLTMwLDYgKzMw
LDEwIEBACiAKIG5hbWVzcGFjZSBXZWJHUFUgewogCitRdWVyeVNldDo6UXVlcnlTZXQoKSA9IGRl
ZmF1bHQ7CisKK1F1ZXJ5U2V0Ojp+UXVlcnlTZXQoKSA9IGRlZmF1bHQ7CisKIHZvaWQgUXVlcnlT
ZXQ6OmRlc3Ryb3koKQogewogfQpAQCAtNDgsMTAgKzUyLDEwIEBAIHZvaWQgd2dwdVF1ZXJ5U2V0
UmVsZWFzZShXR1BVUXVlcnlTZXQgcXVlcnlTZXQpCiAKIHZvaWQgd2dwdVF1ZXJ5U2V0RGVzdHJv
eShXR1BVUXVlcnlTZXQgcXVlcnlTZXQpCiB7Ci0gICAgcXVlcnlTZXQtPnF1ZXJ5U2V0LmRlc3Ry
b3koKTsKKyAgICBxdWVyeVNldC0+cXVlcnlTZXQtPmRlc3Ryb3koKTsKIH0KIAogdm9pZCB3Z3B1
UXVlcnlTZXRTZXRMYWJlbChXR1BVUXVlcnlTZXQgcXVlcnlTZXQsIGNvbnN0IGNoYXIqIGxhYmVs
KQogewotICAgIHF1ZXJ5U2V0LT5xdWVyeVNldC5zZXRMYWJlbChsYWJlbCk7CisgICAgcXVlcnlT
ZXQtPnF1ZXJ5U2V0LT5zZXRMYWJlbChsYWJlbCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
R1BVL1dlYkdQVS9RdWV1ZS5oIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvUXVldWUuaAppbmRleCA2
MmE0NjMyY2VjODE2ZDcwZTZiZjc3ODJkNzg1ZWRlZjNiYzhhODlhLi5mNzZlNjkxYTM2ZWRhZDlj
N2FiZmI5ZmY2NTgwMDQzYTU0Yjg5MGM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQ
VS9RdWV1ZS5oCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1F1ZXVlLmgKQEAgLTI2LDcgKzI2
LDEwIEBACiAjcHJhZ21hIG9uY2UKIAogI2ltcG9ydCAiV2ViR1BVLmgiCi0jaW1wb3J0IDxmdW5j
dGlvbmFsPgorI2ltcG9ydCA8d3RmL0Zhc3RNYWxsb2MuaD4KKyNpbXBvcnQgPHd0Zi9GdW5jdGlv
bi5oPgorI2ltcG9ydCA8d3RmL1JlZi5oPgorI2ltcG9ydCA8d3RmL1JlZkNvdW50ZWQuaD4KICNp
bXBvcnQgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkdQVSB7CkBAIC0zNCwxNyArMzcs
MjggQEAgbmFtZXNwYWNlIFdlYkdQVSB7CiBjbGFzcyBCdWZmZXI7CiBjbGFzcyBDb21tYW5kQnVm
ZmVyOwogCi1jbGFzcyBRdWV1ZSB7CitjbGFzcyBRdWV1ZSA6IHB1YmxpYyBSZWZDb3VudGVkPFF1
ZXVlPiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgdm9pZCBv
blN1Ym1pdHRlZFdvcmtEb25lKHVpbnQ2NF90IHNpZ25hbFZhbHVlLCBzdGQ6OmZ1bmN0aW9uPHZv
aWQoV0dQVVF1ZXVlV29ya0RvbmVTdGF0dXMpPiYmIGNhbGxiYWNrKTsKKyAgICBzdGF0aWMgUmVm
PFF1ZXVlPiBjcmVhdGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUXVl
dWUoKSk7CisgICAgfQorCisgICAgflF1ZXVlKCk7CisKKyAgICB2b2lkIG9uU3VibWl0dGVkV29y
a0RvbmUodWludDY0X3Qgc2lnbmFsVmFsdWUsIFdURjo6RnVuY3Rpb248dm9pZChXR1BVUXVldWVX
b3JrRG9uZVN0YXR1cyk+JiYgY2FsbGJhY2spOwogICAgIHZvaWQgc3VibWl0KFZlY3RvcjxzdGQ6
OnJlZmVyZW5jZV93cmFwcGVyPGNvbnN0IENvbW1hbmRCdWZmZXI+PiYmIGNvbW1hbmRzKTsKICAg
ICB2b2lkIHdyaXRlQnVmZmVyKGNvbnN0IEJ1ZmZlciYsIHVpbnQ2NF90IGJ1ZmZlck9mZnNldCwg
Y29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90KTsKICAgICB2b2lkIHdyaXRlVGV4dHVyZShjb25zdCBX
R1BVSW1hZ2VDb3B5VGV4dHVyZSogZGVzdGluYXRpb24sIGNvbnN0IHZvaWQqIGRhdGEsIHNpemVf
dCBkYXRhU2l6ZSwgY29uc3QgV0dQVVRleHR1cmVEYXRhTGF5b3V0KiwgY29uc3QgV0dQVUV4dGVu
dDNEKiB3cml0ZVNpemUpOwogICAgIHZvaWQgc2V0TGFiZWwoY29uc3QgY2hhciopOworCitwcml2
YXRlOgorICAgIFF1ZXVlKCk7CiB9OwogCi19Cit9IC8vIG5hbWVzcGFjZSBXZWJHUFUKIAogc3Ry
dWN0IFdHUFVRdWV1ZUltcGwgewotICAgIFdlYkdQVTo6UXVldWUgcXVldWU7CisgICAgUmVmPFdl
YkdQVTo6UXVldWU+IHF1ZXVlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BV
L1F1ZXVlLm1tIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvUXVldWUubW0KaW5kZXggYzIyYjZjNzc0
NDcxYjg3ZTBjMzZkZmUzNmYxMWE5YTlkNWY5MmM2Mi4uYWU0YzJjYzQ3NzVkNGMzZmI0ZGZjMWRk
MTNkM2Q5N2FiOGRiYzNkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUvUXVldWUu
bW0KKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvUXVldWUubW0KQEAgLTMyLDcgKzMyLDExIEBA
CiAKIG5hbWVzcGFjZSBXZWJHUFUgewogCi12b2lkIFF1ZXVlOjpvblN1Ym1pdHRlZFdvcmtEb25l
KHVpbnQ2NF90IHNpZ25hbFZhbHVlLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoV0dQVVF1ZXVlV29ya0Rv
bmVTdGF0dXMpPiYmIGNhbGxiYWNrKQorUXVldWU6OlF1ZXVlKCkgPSBkZWZhdWx0OworCitRdWV1
ZTo6flF1ZXVlKCkgPSBkZWZhdWx0OworCit2b2lkIFF1ZXVlOjpvblN1Ym1pdHRlZFdvcmtEb25l
KHVpbnQ2NF90IHNpZ25hbFZhbHVlLCBXVEY6OkZ1bmN0aW9uPHZvaWQoV0dQVVF1ZXVlV29ya0Rv
bmVTdGF0dXMpPiYmIGNhbGxiYWNrKQogewogICAgIFVOVVNFRF9QQVJBTShzaWduYWxWYWx1ZSk7
CiAgICAgVU5VU0VEX1BBUkFNKGNhbGxiYWNrKTsKQEAgLTc0LDcgKzc4LDcgQEAgdm9pZCB3Z3B1
UXVldWVSZWxlYXNlKFdHUFVRdWV1ZSBxdWV1ZSkKIAogdm9pZCB3Z3B1UXVldWVPblN1Ym1pdHRl
ZFdvcmtEb25lKFdHUFVRdWV1ZSBxdWV1ZSwgdWludDY0X3Qgc2lnbmFsVmFsdWUsIFdHUFVRdWV1
ZVdvcmtEb25lQ2FsbGJhY2sgY2FsbGJhY2ssIHZvaWQqIHVzZXJkYXRhKQogewotICAgIHF1ZXVl
LT5xdWV1ZS5vblN1Ym1pdHRlZFdvcmtEb25lKHNpZ25hbFZhbHVlLCBbY2FsbGJhY2ssIHVzZXJk
YXRhXSAoV0dQVVF1ZXVlV29ya0RvbmVTdGF0dXMgc3RhdHVzKSB7CisgICAgcXVldWUtPnF1ZXVl
LT5vblN1Ym1pdHRlZFdvcmtEb25lKHNpZ25hbFZhbHVlLCBbY2FsbGJhY2ssIHVzZXJkYXRhXSAo
V0dQVVF1ZXVlV29ya0RvbmVTdGF0dXMgc3RhdHVzKSB7CiAgICAgICAgIGNhbGxiYWNrKHN0YXR1
cywgdXNlcmRhdGEpOwogICAgIH0pOwogfQpAQCAtODQsMjEgKzg4LDIxIEBAIHZvaWQgd2dwdVF1
ZXVlU3VibWl0KFdHUFVRdWV1ZSBxdWV1ZSwgdWludDMyX3QgY29tbWFuZENvdW50LCBjb25zdCBX
R1BVQ29tbWFuZEJ1CiAgICAgVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8Y29uc3QgV2Vi
R1BVOjpDb21tYW5kQnVmZmVyPj4gY29tbWFuZHNUb0ZvcndhcmQ7CiAgICAgZm9yICh1aW50MzJf
dCBpID0gMDsgaSA8IGNvbW1hbmRDb3VudDsgKytpKQogICAgICAgICBjb21tYW5kc1RvRm9yd2Fy
ZC5hcHBlbmQoY29tbWFuZHNbaV0tPmNvbW1hbmRCdWZmZXIpOwotICAgIHF1ZXVlLT5xdWV1ZS5z
dWJtaXQoV1RGTW92ZShjb21tYW5kc1RvRm9yd2FyZCkpOworICAgIHF1ZXVlLT5xdWV1ZS0+c3Vi
bWl0KFdURk1vdmUoY29tbWFuZHNUb0ZvcndhcmQpKTsKIH0KIAogdm9pZCB3Z3B1UXVldWVXcml0
ZUJ1ZmZlcihXR1BVUXVldWUgcXVldWUsIFdHUFVCdWZmZXIgYnVmZmVyLCB1aW50NjRfdCBidWZm
ZXJPZmZzZXQsIGNvbnN0IHZvaWQqIGRhdGEsIHNpemVfdCBzaXplKQogewotICAgIHF1ZXVlLT5x
dWV1ZS53cml0ZUJ1ZmZlcihidWZmZXItPmJ1ZmZlciwgYnVmZmVyT2Zmc2V0LCBkYXRhLCBzaXpl
KTsKKyAgICBxdWV1ZS0+cXVldWUtPndyaXRlQnVmZmVyKGJ1ZmZlci0+YnVmZmVyLCBidWZmZXJP
ZmZzZXQsIGRhdGEsIHNpemUpOwogfQogCiB2b2lkIHdncHVRdWV1ZVdyaXRlVGV4dHVyZShXR1BV
UXVldWUgcXVldWUsIGNvbnN0IFdHUFVJbWFnZUNvcHlUZXh0dXJlKiBkZXN0aW5hdGlvbiwgY29u
c3Qgdm9pZCogZGF0YSwgc2l6ZV90IGRhdGFTaXplLCBjb25zdCBXR1BVVGV4dHVyZURhdGFMYXlv
dXQqIGRhdGFMYXlvdXQsIGNvbnN0IFdHUFVFeHRlbnQzRCogd3JpdGVTaXplKQogewotICAgIHF1
ZXVlLT5xdWV1ZS53cml0ZVRleHR1cmUoZGVzdGluYXRpb24sIGRhdGEsIGRhdGFTaXplLCBkYXRh
TGF5b3V0LCB3cml0ZVNpemUpOworICAgIHF1ZXVlLT5xdWV1ZS0+d3JpdGVUZXh0dXJlKGRlc3Rp
bmF0aW9uLCBkYXRhLCBkYXRhU2l6ZSwgZGF0YUxheW91dCwgd3JpdGVTaXplKTsKIH0KIAogdm9p
ZCB3Z3B1UXVldWVTZXRMYWJlbChXR1BVUXVldWUgcXVldWUsIGNvbnN0IGNoYXIqIGxhYmVsKQog
ewotICAgIHF1ZXVlLT5xdWV1ZS5zZXRMYWJlbChsYWJlbCk7CisgICAgcXVldWUtPnF1ZXVlLT5z
ZXRMYWJlbChsYWJlbCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1Jl
bmRlckJ1bmRsZS5oIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvUmVuZGVyQnVuZGxlLmgKaW5kZXgg
M2VjNDQzZTc2MzcxMjM5MDA3Nzg0NTYwZDcwODUzNjI5YWVlMGI4OC4uMmMwYmFjNmFjNGEzMDNm
ODY0NzE1NGZhM2RiMzU5NjFjOTc5ZTRlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJH
UFUvUmVuZGVyQnVuZGxlLmgKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvUmVuZGVyQnVuZGxl
LmgKQEAgLTI2LDE2ICsyNiwzMCBAQAogI3ByYWdtYSBvbmNlCiAKICNpbXBvcnQgIldlYkdQVS5o
IgorI2ltcG9ydCA8d3RmL0Zhc3RNYWxsb2MuaD4KKyNpbXBvcnQgPHd0Zi9SZWYuaD4KKyNpbXBv
cnQgPHd0Zi9SZWZDb3VudGVkLmg+CiAKIG5hbWVzcGFjZSBXZWJHUFUgewogCi1jbGFzcyBSZW5k
ZXJCdW5kbGUgeworY2xhc3MgUmVuZGVyQnVuZGxlIDogcHVibGljIFJlZkNvdW50ZWQ8UmVuZGVy
QnVuZGxlPiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CisgICAgc3Rh
dGljIFJlZjxSZW5kZXJCdW5kbGU+IGNyZWF0ZSgpCisgICAgeworICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBSZW5kZXJCdW5kbGUoKSk7CisgICAgfQorCisgICAgflJlbmRlckJ1bmRsZSgp
OworCiAgICAgdm9pZCBzZXRMYWJlbChjb25zdCBjaGFyKik7CisKK3ByaXZhdGU6CisgICAgUmVu
ZGVyQnVuZGxlKCk7CiB9OwogCi19Cit9IC8vIG5hbWVzcGFjZSBXZWJHUFUKIAogc3RydWN0IFdH
UFVSZW5kZXJCdW5kbGVJbXBsIHsKLSAgICBXZWJHUFU6OlJlbmRlckJ1bmRsZSByZW5kZXJCdW5k
bGU7CisgICAgUmVmPFdlYkdQVTo6UmVuZGVyQnVuZGxlPiByZW5kZXJCdW5kbGU7CiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvUmVuZGVyQnVuZGxlLm1tIGIvU291cmNlL1dl
YkdQVS9XZWJHUFUvUmVuZGVyQnVuZGxlLm1tCmluZGV4IGE2NmU5NjE1YWVkMWE5ZTU4MWFmNWVk
OWJiZTM4OTgzYmZjMjIzOTIuLjY3NTdiNDk3NTllMTc0YWJhMDVmNzBmMzc5MWY1M2U5MzZkODg1
OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1JlbmRlckJ1bmRsZS5tbQorKysg
Yi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9SZW5kZXJCdW5kbGUubW0KQEAgLTMwLDYgKzMwLDEwIEBA
CiAKIG5hbWVzcGFjZSBXZWJHUFUgewogCitSZW5kZXJCdW5kbGU6OlJlbmRlckJ1bmRsZSgpID0g
ZGVmYXVsdDsKKworUmVuZGVyQnVuZGxlOjp+UmVuZGVyQnVuZGxlKCkgPSBkZWZhdWx0OworCiB2
b2lkIFJlbmRlckJ1bmRsZTo6c2V0TGFiZWwoY29uc3QgY2hhciogbGFiZWwpCiB7CiAgICAgVU5V
U0VEX1BBUkFNKGxhYmVsKTsKQEAgLTQ0LDUgKzQ4LDUgQEAgdm9pZCB3Z3B1UmVuZGVyQnVuZGxl
UmVsZWFzZShXR1BVUmVuZGVyQnVuZGxlIHJlbmRlckJ1bmRsZSkKIAogdm9pZCB3Z3B1UmVuZGVy
QnVuZGxlU2V0TGFiZWwoV0dQVVJlbmRlckJ1bmRsZSByZW5kZXJCdW5kbGUsIGNvbnN0IGNoYXIq
IGxhYmVsKQogewotICAgIHJlbmRlckJ1bmRsZS0+cmVuZGVyQnVuZGxlLnNldExhYmVsKGxhYmVs
KTsKKyAgICByZW5kZXJCdW5kbGUtPnJlbmRlckJ1bmRsZS0+c2V0TGFiZWwobGFiZWwpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvUmVuZGVyQnVuZGxlRW5jb2Rlci5oIGIv
U291cmNlL1dlYkdQVS9XZWJHUFUvUmVuZGVyQnVuZGxlRW5jb2Rlci5oCmluZGV4IGNkNzM2MmY1
Mjk3M2ZmOTlhNTIzMDljZWE5ZjIwYTg4YTBlOGRhNzIuLjJjZDQ5OWMwMDA2M2MwMTA3OWQyMmE4
Y2MwMGJkYjAwYzk2NjgyMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1JlbmRl
ckJ1bmRsZUVuY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9SZW5kZXJCdW5kbGVF
bmNvZGVyLmgKQEAgLTI2LDYgKzI2LDkgQEAKICNwcmFnbWEgb25jZQogCiAjaW1wb3J0ICJXZWJH
UFUuaCIKKyNpbXBvcnQgPHd0Zi9GYXN0TWFsbG9jLmg+CisjaW1wb3J0IDx3dGYvUmVmLmg+Cisj
aW1wb3J0IDx3dGYvUmVmQ291bnRlZC5oPgogCiBuYW1lc3BhY2UgV2ViR1BVIHsKIApAQCAtMzQs
MTMgKzM3LDIxIEBAIGNsYXNzIEJ1ZmZlcjsKIGNsYXNzIFJlbmRlckJ1bmRsZTsKIGNsYXNzIFJl
bmRlclBpcGVsaW5lOwogCi1jbGFzcyBSZW5kZXJCdW5kbGVFbmNvZGVyIHsKK2NsYXNzIFJlbmRl
ckJ1bmRsZUVuY29kZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxSZW5kZXJCdW5kbGVFbmNvZGVyPiB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CisgICAgc3RhdGljIFJlZjxS
ZW5kZXJCdW5kbGVFbmNvZGVyPiBjcmVhdGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgUmVuZGVyQnVuZGxlRW5jb2RlcigpKTsKKyAgICB9CisKKyAgICB+UmVuZGVyQnVu
ZGxlRW5jb2RlcigpOworCiAgICAgdm9pZCBkcmF3KHVpbnQzMl90IHZlcnRleENvdW50LCB1aW50
MzJfdCBpbnN0YW5jZUNvdW50LCB1aW50MzJfdCBmaXJzdFZlcnRleCwgdWludDMyX3QgZmlyc3RJ
bnN0YW5jZSk7CiAgICAgdm9pZCBkcmF3SW5kZXhlZCh1aW50MzJfdCBpbmRleENvdW50LCB1aW50
MzJfdCBpbnN0YW5jZUNvdW50LCB1aW50MzJfdCBmaXJzdEluZGV4LCBpbnQzMl90IGJhc2VWZXJ0
ZXgsIHVpbnQzMl90IGZpcnN0SW5zdGFuY2UpOwogICAgIHZvaWQgZHJhd0luZGV4ZWRJbmRpcmVj
dChjb25zdCBCdWZmZXImIGluZGlyZWN0QnVmZmVyLCB1aW50NjRfdCBpbmRpcmVjdE9mZnNldCk7
CiAgICAgdm9pZCBkcmF3SW5kaXJlY3QoY29uc3QgQnVmZmVyJiBpbmRpcmVjdEJ1ZmZlciwgdWlu
dDY0X3QgaW5kaXJlY3RPZmZzZXQpOwotICAgIFJlbmRlckJ1bmRsZSBmaW5pc2goY29uc3QgV0dQ
VVJlbmRlckJ1bmRsZURlc2NyaXB0b3IqKTsKKyAgICBSZWY8UmVuZGVyQnVuZGxlPiBmaW5pc2go
Y29uc3QgV0dQVVJlbmRlckJ1bmRsZURlc2NyaXB0b3IqKTsKICAgICB2b2lkIGluc2VydERlYnVn
TWFya2VyKGNvbnN0IGNoYXIqIG1hcmtlckxhYmVsKTsKICAgICB2b2lkIHBvcERlYnVnR3JvdXAo
KTsKICAgICB2b2lkIHB1c2hEZWJ1Z0dyb3VwKGNvbnN0IGNoYXIqIGdyb3VwTGFiZWwpOwpAQCAt
NDksMTAgKzYwLDEzIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFBpcGVsaW5lKGNvbnN0IFJlbmRl
clBpcGVsaW5lJik7CiAgICAgdm9pZCBzZXRWZXJ0ZXhCdWZmZXIodWludDMyX3Qgc2xvdCwgY29u
c3QgQnVmZmVyJiwgdWludDY0X3Qgb2Zmc2V0LCB1aW50NjRfdCBzaXplKTsKICAgICB2b2lkIHNl
dExhYmVsKGNvbnN0IGNoYXIqKTsKKworcHJpdmF0ZToKKyAgICBSZW5kZXJCdW5kbGVFbmNvZGVy
KCk7CiB9OwogCi19Cit9IC8vIG5hbWVzcGFjZSBXZWJHUFUKIAogc3RydWN0IFdHUFVSZW5kZXJC
dW5kbGVFbmNvZGVySW1wbCB7Ci0gICAgV2ViR1BVOjpSZW5kZXJCdW5kbGVFbmNvZGVyIHJlbmRl
ckJ1bmRsZUVuY29kZXI7CisgICAgUmVmPFdlYkdQVTo6UmVuZGVyQnVuZGxlRW5jb2Rlcj4gcmVu
ZGVyQnVuZGxlRW5jb2RlcjsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9S
ZW5kZXJCdW5kbGVFbmNvZGVyLm1tIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvUmVuZGVyQnVuZGxl
RW5jb2Rlci5tbQppbmRleCBiODdhN2M4MmYxMTJmYzZjY2Y5OWVjN2ZhNTA1NDBkNWRmM2Y1MjE5
Li45YmJlMTU1MWQzYTlkZjM4ZWJmMjIxZDIyNTU4ZDYyM2Q3MGYyOTc4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViR1BVL1dlYkdQVS9SZW5kZXJCdW5kbGVFbmNvZGVyLm1tCisrKyBiL1NvdXJjZS9X
ZWJHUFUvV2ViR1BVL1JlbmRlckJ1bmRsZUVuY29kZXIubW0KQEAgLTMzLDYgKzMzLDExIEBACiAj
aW1wb3J0ICJXZWJHUFVFeHQuaCIKIAogbmFtZXNwYWNlIFdlYkdQVSB7CisKK1JlbmRlckJ1bmRs
ZUVuY29kZXI6OlJlbmRlckJ1bmRsZUVuY29kZXIoKSA9IGRlZmF1bHQ7CisKK1JlbmRlckJ1bmRs
ZUVuY29kZXI6On5SZW5kZXJCdW5kbGVFbmNvZGVyKCkgPSBkZWZhdWx0OworCiB2b2lkIFJlbmRl
ckJ1bmRsZUVuY29kZXI6OmRyYXcodWludDMyX3QgdmVydGV4Q291bnQsIHVpbnQzMl90IGluc3Rh
bmNlQ291bnQsIHVpbnQzMl90IGZpcnN0VmVydGV4LCB1aW50MzJfdCBmaXJzdEluc3RhbmNlKQog
ewogICAgIFVOVVNFRF9QQVJBTSh2ZXJ0ZXhDb3VudCk7CkBAIC02MiwxMCArNjcsMTAgQEAgdm9p
ZCBSZW5kZXJCdW5kbGVFbmNvZGVyOjpkcmF3SW5kaXJlY3QoY29uc3QgQnVmZmVyJiBpbmRpcmVj
dEJ1ZmZlciwgdWludDY0X3QgaW4KICAgICBVTlVTRURfUEFSQU0oaW5kaXJlY3RPZmZzZXQpOwog
fQogCi1SZW5kZXJCdW5kbGUgUmVuZGVyQnVuZGxlRW5jb2Rlcjo6ZmluaXNoKGNvbnN0IFdHUFVS
ZW5kZXJCdW5kbGVEZXNjcmlwdG9yKiBkZXNjcmlwdG9yKQorUmVmPFJlbmRlckJ1bmRsZT4gUmVu
ZGVyQnVuZGxlRW5jb2Rlcjo6ZmluaXNoKGNvbnN0IFdHUFVSZW5kZXJCdW5kbGVEZXNjcmlwdG9y
KiBkZXNjcmlwdG9yKQogewogICAgIFVOVVNFRF9QQVJBTShkZXNjcmlwdG9yKTsKLSAgICByZXR1
cm4geyB9OworICAgIHJldHVybiBSZW5kZXJCdW5kbGU6OmNyZWF0ZSgpOwogfQogCiB2b2lkIFJl
bmRlckJ1bmRsZUVuY29kZXI6Omluc2VydERlYnVnTWFya2VyKGNvbnN0IGNoYXIqIG1hcmtlckxh
YmVsKQpAQCAtMTI2LDY1ICsxMzEsNjUgQEAgdm9pZCB3Z3B1UmVuZGVyQnVuZGxlRW5jb2RlclJl
bGVhc2UoV0dQVVJlbmRlckJ1bmRsZUVuY29kZXIgcmVuZGVyQnVuZGxlRW5jb2RlcikKIAogdm9p
ZCB3Z3B1UmVuZGVyQnVuZGxlRW5jb2RlckRyYXcoV0dQVVJlbmRlckJ1bmRsZUVuY29kZXIgcmVu
ZGVyQnVuZGxlRW5jb2RlciwgdWludDMyX3QgdmVydGV4Q291bnQsIHVpbnQzMl90IGluc3RhbmNl
Q291bnQsIHVpbnQzMl90IGZpcnN0VmVydGV4LCB1aW50MzJfdCBmaXJzdEluc3RhbmNlKQogewot
ICAgIHJlbmRlckJ1bmRsZUVuY29kZXItPnJlbmRlckJ1bmRsZUVuY29kZXIuZHJhdyh2ZXJ0ZXhD
b3VudCwgaW5zdGFuY2VDb3VudCwgZmlyc3RWZXJ0ZXgsIGZpcnN0SW5zdGFuY2UpOworICAgIHJl
bmRlckJ1bmRsZUVuY29kZXItPnJlbmRlckJ1bmRsZUVuY29kZXItPmRyYXcodmVydGV4Q291bnQs
IGluc3RhbmNlQ291bnQsIGZpcnN0VmVydGV4LCBmaXJzdEluc3RhbmNlKTsKIH0KIAogdm9pZCB3
Z3B1UmVuZGVyQnVuZGxlRW5jb2RlckRyYXdJbmRleGVkKFdHUFVSZW5kZXJCdW5kbGVFbmNvZGVy
IHJlbmRlckJ1bmRsZUVuY29kZXIsIHVpbnQzMl90IGluZGV4Q291bnQsIHVpbnQzMl90IGluc3Rh
bmNlQ291bnQsIHVpbnQzMl90IGZpcnN0SW5kZXgsIGludDMyX3QgYmFzZVZlcnRleCwgdWludDMy
X3QgZmlyc3RJbnN0YW5jZSkKIHsKLSAgICByZW5kZXJCdW5kbGVFbmNvZGVyLT5yZW5kZXJCdW5k
bGVFbmNvZGVyLmRyYXdJbmRleGVkKGluZGV4Q291bnQsIGluc3RhbmNlQ291bnQsIGZpcnN0SW5k
ZXgsIGJhc2VWZXJ0ZXgsIGZpcnN0SW5zdGFuY2UpOworICAgIHJlbmRlckJ1bmRsZUVuY29kZXIt
PnJlbmRlckJ1bmRsZUVuY29kZXItPmRyYXdJbmRleGVkKGluZGV4Q291bnQsIGluc3RhbmNlQ291
bnQsIGZpcnN0SW5kZXgsIGJhc2VWZXJ0ZXgsIGZpcnN0SW5zdGFuY2UpOwogfQogCiB2b2lkIHdn
cHVSZW5kZXJCdW5kbGVFbmNvZGVyRHJhd0luZGV4ZWRJbmRpcmVjdChXR1BVUmVuZGVyQnVuZGxl
RW5jb2RlciByZW5kZXJCdW5kbGVFbmNvZGVyLCBXR1BVQnVmZmVyIGluZGlyZWN0QnVmZmVyLCB1
aW50NjRfdCBpbmRpcmVjdE9mZnNldCkKIHsKLSAgICByZW5kZXJCdW5kbGVFbmNvZGVyLT5yZW5k
ZXJCdW5kbGVFbmNvZGVyLmRyYXdJbmRleGVkSW5kaXJlY3QoaW5kaXJlY3RCdWZmZXItPmJ1ZmZl
ciwgaW5kaXJlY3RPZmZzZXQpOworICAgIHJlbmRlckJ1bmRsZUVuY29kZXItPnJlbmRlckJ1bmRs
ZUVuY29kZXItPmRyYXdJbmRleGVkSW5kaXJlY3QoaW5kaXJlY3RCdWZmZXItPmJ1ZmZlciwgaW5k
aXJlY3RPZmZzZXQpOwogfQogCiB2b2lkIHdncHVSZW5kZXJCdW5kbGVFbmNvZGVyRHJhd0luZGly
ZWN0KFdHUFVSZW5kZXJCdW5kbGVFbmNvZGVyIHJlbmRlckJ1bmRsZUVuY29kZXIsIFdHUFVCdWZm
ZXIgaW5kaXJlY3RCdWZmZXIsIHVpbnQ2NF90IGluZGlyZWN0T2Zmc2V0KQogewotICAgIHJlbmRl
ckJ1bmRsZUVuY29kZXItPnJlbmRlckJ1bmRsZUVuY29kZXIuZHJhd0luZGlyZWN0KGluZGlyZWN0
QnVmZmVyLT5idWZmZXIsIGluZGlyZWN0T2Zmc2V0KTsKKyAgICByZW5kZXJCdW5kbGVFbmNvZGVy
LT5yZW5kZXJCdW5kbGVFbmNvZGVyLT5kcmF3SW5kaXJlY3QoaW5kaXJlY3RCdWZmZXItPmJ1ZmZl
ciwgaW5kaXJlY3RPZmZzZXQpOwogfQogCiBXR1BVUmVuZGVyQnVuZGxlIHdncHVSZW5kZXJCdW5k
bGVFbmNvZGVyRmluaXNoKFdHUFVSZW5kZXJCdW5kbGVFbmNvZGVyIHJlbmRlckJ1bmRsZUVuY29k
ZXIsIGNvbnN0IFdHUFVSZW5kZXJCdW5kbGVEZXNjcmlwdG9yKiBkZXNjcmlwdG9yKQogewotICAg
IHJldHVybiBuZXcgV0dQVVJlbmRlckJ1bmRsZUltcGwgeyByZW5kZXJCdW5kbGVFbmNvZGVyLT5y
ZW5kZXJCdW5kbGVFbmNvZGVyLmZpbmlzaChkZXNjcmlwdG9yKSB9OworICAgIHJldHVybiBuZXcg
V0dQVVJlbmRlckJ1bmRsZUltcGwgeyByZW5kZXJCdW5kbGVFbmNvZGVyLT5yZW5kZXJCdW5kbGVF
bmNvZGVyLT5maW5pc2goZGVzY3JpcHRvcikgfTsKIH0KIAogdm9pZCB3Z3B1UmVuZGVyQnVuZGxl
RW5jb2Rlckluc2VydERlYnVnTWFya2VyKFdHUFVSZW5kZXJCdW5kbGVFbmNvZGVyIHJlbmRlckJ1
bmRsZUVuY29kZXIsIGNvbnN0IGNoYXIqIG1hcmtlckxhYmVsKQogewotICAgIHJlbmRlckJ1bmRs
ZUVuY29kZXItPnJlbmRlckJ1bmRsZUVuY29kZXIuaW5zZXJ0RGVidWdNYXJrZXIobWFya2VyTGFi
ZWwpOworICAgIHJlbmRlckJ1bmRsZUVuY29kZXItPnJlbmRlckJ1bmRsZUVuY29kZXItPmluc2Vy
dERlYnVnTWFya2VyKG1hcmtlckxhYmVsKTsKIH0KIAogdm9pZCB3Z3B1UmVuZGVyQnVuZGxlRW5j
b2RlclBvcERlYnVnR3JvdXAoV0dQVVJlbmRlckJ1bmRsZUVuY29kZXIgcmVuZGVyQnVuZGxlRW5j
b2RlcikKIHsKLSAgICByZW5kZXJCdW5kbGVFbmNvZGVyLT5yZW5kZXJCdW5kbGVFbmNvZGVyLnBv
cERlYnVnR3JvdXAoKTsKKyAgICByZW5kZXJCdW5kbGVFbmNvZGVyLT5yZW5kZXJCdW5kbGVFbmNv
ZGVyLT5wb3BEZWJ1Z0dyb3VwKCk7CiB9CiAKIHZvaWQgd2dwdVJlbmRlckJ1bmRsZUVuY29kZXJQ
dXNoRGVidWdHcm91cChXR1BVUmVuZGVyQnVuZGxlRW5jb2RlciByZW5kZXJCdW5kbGVFbmNvZGVy
LCBjb25zdCBjaGFyKiBncm91cExhYmVsKQogewotICAgIHJlbmRlckJ1bmRsZUVuY29kZXItPnJl
bmRlckJ1bmRsZUVuY29kZXIucHVzaERlYnVnR3JvdXAoZ3JvdXBMYWJlbCk7CisgICAgcmVuZGVy
QnVuZGxlRW5jb2Rlci0+cmVuZGVyQnVuZGxlRW5jb2Rlci0+cHVzaERlYnVnR3JvdXAoZ3JvdXBM
YWJlbCk7CiB9CiAKIHZvaWQgd2dwdVJlbmRlckJ1bmRsZUVuY29kZXJTZXRCaW5kR3JvdXAoV0dQ
VVJlbmRlckJ1bmRsZUVuY29kZXIgcmVuZGVyQnVuZGxlRW5jb2RlciwgdWludDMyX3QgZ3JvdXBJ
bmRleCwgV0dQVUJpbmRHcm91cCBncm91cCwgdWludDMyX3QgZHluYW1pY09mZnNldENvdW50LCBj
b25zdCB1aW50MzJfdCogZHluYW1pY09mZnNldHMpCiB7Ci0gICAgcmVuZGVyQnVuZGxlRW5jb2Rl
ci0+cmVuZGVyQnVuZGxlRW5jb2Rlci5zZXRCaW5kR3JvdXAoZ3JvdXBJbmRleCwgZ3JvdXAtPmJp
bmRHcm91cCwgZHluYW1pY09mZnNldENvdW50LCBkeW5hbWljT2Zmc2V0cyk7CisgICAgcmVuZGVy
QnVuZGxlRW5jb2Rlci0+cmVuZGVyQnVuZGxlRW5jb2Rlci0+c2V0QmluZEdyb3VwKGdyb3VwSW5k
ZXgsIGdyb3VwLT5iaW5kR3JvdXAsIGR5bmFtaWNPZmZzZXRDb3VudCwgZHluYW1pY09mZnNldHMp
OwogfQogCiB2b2lkIHdncHVSZW5kZXJCdW5kbGVFbmNvZGVyU2V0SW5kZXhCdWZmZXIoV0dQVVJl
bmRlckJ1bmRsZUVuY29kZXIgcmVuZGVyQnVuZGxlRW5jb2RlciwgV0dQVUJ1ZmZlciBidWZmZXIs
IFdHUFVJbmRleEZvcm1hdCBmb3JtYXQsIHVpbnQ2NF90IG9mZnNldCwgdWludDY0X3Qgc2l6ZSkK
IHsKLSAgICByZW5kZXJCdW5kbGVFbmNvZGVyLT5yZW5kZXJCdW5kbGVFbmNvZGVyLnNldEluZGV4
QnVmZmVyKGJ1ZmZlci0+YnVmZmVyLCBmb3JtYXQsIG9mZnNldCwgc2l6ZSk7CisgICAgcmVuZGVy
QnVuZGxlRW5jb2Rlci0+cmVuZGVyQnVuZGxlRW5jb2Rlci0+c2V0SW5kZXhCdWZmZXIoYnVmZmVy
LT5idWZmZXIsIGZvcm1hdCwgb2Zmc2V0LCBzaXplKTsKIH0KIAogdm9pZCB3Z3B1UmVuZGVyQnVu
ZGxlRW5jb2RlclNldFBpcGVsaW5lKFdHUFVSZW5kZXJCdW5kbGVFbmNvZGVyIHJlbmRlckJ1bmRs
ZUVuY29kZXIsIFdHUFVSZW5kZXJQaXBlbGluZSBwaXBlbGluZSkKIHsKLSAgICByZW5kZXJCdW5k
bGVFbmNvZGVyLT5yZW5kZXJCdW5kbGVFbmNvZGVyLnNldFBpcGVsaW5lKHBpcGVsaW5lLT5yZW5k
ZXJQaXBlbGluZSk7CisgICAgcmVuZGVyQnVuZGxlRW5jb2Rlci0+cmVuZGVyQnVuZGxlRW5jb2Rl
ci0+c2V0UGlwZWxpbmUocGlwZWxpbmUtPnJlbmRlclBpcGVsaW5lKTsKIH0KIAogdm9pZCB3Z3B1
UmVuZGVyQnVuZGxlRW5jb2RlclNldFZlcnRleEJ1ZmZlcihXR1BVUmVuZGVyQnVuZGxlRW5jb2Rl
ciByZW5kZXJCdW5kbGVFbmNvZGVyLCB1aW50MzJfdCBzbG90LCBXR1BVQnVmZmVyIGJ1ZmZlciwg
dWludDY0X3Qgb2Zmc2V0LCB1aW50NjRfdCBzaXplKQogewotICAgIHJlbmRlckJ1bmRsZUVuY29k
ZXItPnJlbmRlckJ1bmRsZUVuY29kZXIuc2V0VmVydGV4QnVmZmVyKHNsb3QsIGJ1ZmZlci0+YnVm
ZmVyLCBvZmZzZXQsIHNpemUpOworICAgIHJlbmRlckJ1bmRsZUVuY29kZXItPnJlbmRlckJ1bmRs
ZUVuY29kZXItPnNldFZlcnRleEJ1ZmZlcihzbG90LCBidWZmZXItPmJ1ZmZlciwgb2Zmc2V0LCBz
aXplKTsKIH0KIAogdm9pZCB3Z3B1UmVuZGVyQnVuZGxlRW5jb2RlclNldExhYmVsKFdHUFVSZW5k
ZXJCdW5kbGVFbmNvZGVyIHJlbmRlckJ1bmRsZUVuY29kZXIsIGNvbnN0IGNoYXIqIGxhYmVsKQog
ewotICAgIHJlbmRlckJ1bmRsZUVuY29kZXItPnJlbmRlckJ1bmRsZUVuY29kZXIuc2V0TGFiZWwo
bGFiZWwpOworICAgIHJlbmRlckJ1bmRsZUVuY29kZXItPnJlbmRlckJ1bmRsZUVuY29kZXItPnNl
dExhYmVsKGxhYmVsKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1JlbmRl
clBhc3NFbmNvZGVyLmggYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9SZW5kZXJQYXNzRW5jb2Rlci5o
CmluZGV4IDgzOGMxMjdjYTk3NzA1MDQwOTljODE0ZTA0NWJjYWVhYjUyMmVmN2MuLjZiNWJjYTM4
ZjBhNWNkODFjY2FjZTJmMTFjY2I5NTk2NjliOWI0ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJH
UFUvV2ViR1BVL1JlbmRlclBhc3NFbmNvZGVyLmgKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUv
UmVuZGVyUGFzc0VuY29kZXIuaApAQCAtMjYsNyArMjYsMTAgQEAKICNwcmFnbWEgb25jZQogCiAj
aW1wb3J0ICJXZWJHUFUuaCIKLSNpbXBvcnQgPGZ1bmN0aW9uYWw+CisjaW1wb3J0IDx3dGYvRmFz
dE1hbGxvYy5oPgorI2ltcG9ydCA8d3RmL0Z1bmN0aW9uLmg+CisjaW1wb3J0IDx3dGYvUmVmLmg+
CisjaW1wb3J0IDx3dGYvUmVmQ291bnRlZC5oPgogI2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgogCiBu
YW1lc3BhY2UgV2ViR1BVIHsKQEAgLTM3LDggKzQwLDE2IEBAIGNsYXNzIFF1ZXJ5U2V0OwogY2xh
c3MgUmVuZGVyQnVuZGxlOwogY2xhc3MgUmVuZGVyUGlwZWxpbmU7CiAKLWNsYXNzIFJlbmRlclBh
c3NFbmNvZGVyIHsKK2NsYXNzIFJlbmRlclBhc3NFbmNvZGVyIDogcHVibGljIFJlZkNvdW50ZWQ8
UmVuZGVyUGFzc0VuY29kZXI+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKKyAgICBzdGF0aWMgUmVmPFJlbmRlclBhc3NFbmNvZGVyPiBjcmVhdGUoKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVuZGVyUGFzc0VuY29kZXIoKSk7CisgICAgfQor
CisgICAgflJlbmRlclBhc3NFbmNvZGVyKCk7CisKICAgICB2b2lkIGJlZ2luT2NjbHVzaW9uUXVl
cnkodWludDMyX3QgcXVlcnlJbmRleCk7CiAgICAgdm9pZCBiZWdpblBpcGVsaW5lU3RhdGlzdGlj
c1F1ZXJ5KGNvbnN0IFF1ZXJ5U2V0JiwgdWludDMyX3QgcXVlcnlJbmRleCk7CiAgICAgdm9pZCBk
cmF3KHVpbnQzMl90IHZlcnRleENvdW50LCB1aW50MzJfdCBpbnN0YW5jZUNvdW50LCB1aW50MzJf
dCBmaXJzdFZlcnRleCwgdWludDMyX3QgZmlyc3RJbnN0YW5jZSk7CkBAIC02MiwxMCArNzMsMTMg
QEAgcHVibGljOgogICAgIHZvaWQgc2V0Vmlld3BvcnQoZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQg
d2lkdGgsIGZsb2F0IGhlaWdodCwgZmxvYXQgbWluRGVwdGgsIGZsb2F0IG1heERlcHRoKTsKICAg
ICB2b2lkIHdyaXRlVGltZXN0YW1wKGNvbnN0IFF1ZXJ5U2V0JiwgdWludDMyX3QgcXVlcnlJbmRl
eCk7CiAgICAgdm9pZCBzZXRMYWJlbChjb25zdCBjaGFyKik7CisKK3ByaXZhdGU6CisgICAgUmVu
ZGVyUGFzc0VuY29kZXIoKTsKIH07CiAKLX0KK30gLy8gbmFtZXNwYWNlIFdlYkdQVQogCiBzdHJ1
Y3QgV0dQVVJlbmRlclBhc3NFbmNvZGVySW1wbCB7Ci0gICAgV2ViR1BVOjpSZW5kZXJQYXNzRW5j
b2RlciByZW5kZXJQYXNzRW5jb2RlcjsKKyAgICBSZWY8V2ViR1BVOjpSZW5kZXJQYXNzRW5jb2Rl
cj4gcmVuZGVyUGFzc0VuY29kZXI7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJH
UFUvUmVuZGVyUGFzc0VuY29kZXIubW0gYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9SZW5kZXJQYXNz
RW5jb2Rlci5tbQppbmRleCA2MzlkOTE4NTE1OGEwZDkyNjAxZTk5MGRkNDRlMTllYjczYmM3YzNk
Li5iM2MzOTNlNzAxM2Q5MWQyZWQxYzlkZTkyMTJjNzQyOGJlZmNlY2M1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViR1BVL1dlYkdQVS9SZW5kZXJQYXNzRW5jb2Rlci5tbQorKysgYi9Tb3VyY2UvV2Vi
R1BVL1dlYkdQVS9SZW5kZXJQYXNzRW5jb2Rlci5tbQpAQCAtMzUsNiArMzUsMTAgQEAKIAogbmFt
ZXNwYWNlIFdlYkdQVSB7CiAKK1JlbmRlclBhc3NFbmNvZGVyOjpSZW5kZXJQYXNzRW5jb2Rlcigp
ID0gZGVmYXVsdDsKKworUmVuZGVyUGFzc0VuY29kZXI6On5SZW5kZXJQYXNzRW5jb2RlcigpID0g
ZGVmYXVsdDsKKwogdm9pZCBSZW5kZXJQYXNzRW5jb2Rlcjo6YmVnaW5PY2NsdXNpb25RdWVyeSh1
aW50MzJfdCBxdWVyeUluZGV4KQogewogICAgIFVOVVNFRF9QQVJBTShxdWVyeUluZGV4KTsKQEAg
LTE4Nyw0NyArMTkxLDQ3IEBAIHZvaWQgd2dwdVJlbmRlclBhc3NFbmNvZGVyUmVsZWFzZShXR1BV
UmVuZGVyUGFzc0VuY29kZXIgcmVuZGVyUGFzc0VuY29kZXIpCiAKIHZvaWQgd2dwdVJlbmRlclBh
c3NFbmNvZGVyQmVnaW5PY2NsdXNpb25RdWVyeShXR1BVUmVuZGVyUGFzc0VuY29kZXIgcmVuZGVy
UGFzc0VuY29kZXIsIHVpbnQzMl90IHF1ZXJ5SW5kZXgpCiB7Ci0gICAgcmVuZGVyUGFzc0VuY29k
ZXItPnJlbmRlclBhc3NFbmNvZGVyLmJlZ2luT2NjbHVzaW9uUXVlcnkocXVlcnlJbmRleCk7Cisg
ICAgcmVuZGVyUGFzc0VuY29kZXItPnJlbmRlclBhc3NFbmNvZGVyLT5iZWdpbk9jY2x1c2lvblF1
ZXJ5KHF1ZXJ5SW5kZXgpOwogfQogCiB2b2lkIHdncHVSZW5kZXJQYXNzRW5jb2RlckJlZ2luUGlw
ZWxpbmVTdGF0aXN0aWNzUXVlcnkoV0dQVVJlbmRlclBhc3NFbmNvZGVyIHJlbmRlclBhc3NFbmNv
ZGVyLCBXR1BVUXVlcnlTZXQgcXVlcnlTZXQsIHVpbnQzMl90IHF1ZXJ5SW5kZXgpCiB7Ci0gICAg
cmVuZGVyUGFzc0VuY29kZXItPnJlbmRlclBhc3NFbmNvZGVyLmJlZ2luUGlwZWxpbmVTdGF0aXN0
aWNzUXVlcnkocXVlcnlTZXQtPnF1ZXJ5U2V0LCBxdWVyeUluZGV4KTsKKyAgICByZW5kZXJQYXNz
RW5jb2Rlci0+cmVuZGVyUGFzc0VuY29kZXItPmJlZ2luUGlwZWxpbmVTdGF0aXN0aWNzUXVlcnko
cXVlcnlTZXQtPnF1ZXJ5U2V0LCBxdWVyeUluZGV4KTsKIH0KIAogdm9pZCB3Z3B1UmVuZGVyUGFz
c0VuY29kZXJEcmF3KFdHUFVSZW5kZXJQYXNzRW5jb2RlciByZW5kZXJQYXNzRW5jb2RlciwgdWlu
dDMyX3QgdmVydGV4Q291bnQsIHVpbnQzMl90IGluc3RhbmNlQ291bnQsIHVpbnQzMl90IGZpcnN0
VmVydGV4LCB1aW50MzJfdCBmaXJzdEluc3RhbmNlKQogewotICAgIHJlbmRlclBhc3NFbmNvZGVy
LT5yZW5kZXJQYXNzRW5jb2Rlci5kcmF3KHZlcnRleENvdW50LCBpbnN0YW5jZUNvdW50LCBmaXJz
dFZlcnRleCwgZmlyc3RJbnN0YW5jZSk7CisgICAgcmVuZGVyUGFzc0VuY29kZXItPnJlbmRlclBh
c3NFbmNvZGVyLT5kcmF3KHZlcnRleENvdW50LCBpbnN0YW5jZUNvdW50LCBmaXJzdFZlcnRleCwg
Zmlyc3RJbnN0YW5jZSk7CiB9CiAKIHZvaWQgd2dwdVJlbmRlclBhc3NFbmNvZGVyRHJhd0luZGV4
ZWQoV0dQVVJlbmRlclBhc3NFbmNvZGVyIHJlbmRlclBhc3NFbmNvZGVyLCB1aW50MzJfdCBpbmRl
eENvdW50LCB1aW50MzJfdCBpbnN0YW5jZUNvdW50LCB1aW50MzJfdCBmaXJzdEluZGV4LCBpbnQz
Ml90IGJhc2VWZXJ0ZXgsIHVpbnQzMl90IGZpcnN0SW5zdGFuY2UpCiB7Ci0gICAgcmVuZGVyUGFz
c0VuY29kZXItPnJlbmRlclBhc3NFbmNvZGVyLmRyYXdJbmRleGVkKGluZGV4Q291bnQsIGluc3Rh
bmNlQ291bnQsIGZpcnN0SW5kZXgsIGJhc2VWZXJ0ZXgsIGZpcnN0SW5zdGFuY2UpOworICAgIHJl
bmRlclBhc3NFbmNvZGVyLT5yZW5kZXJQYXNzRW5jb2Rlci0+ZHJhd0luZGV4ZWQoaW5kZXhDb3Vu
dCwgaW5zdGFuY2VDb3VudCwgZmlyc3RJbmRleCwgYmFzZVZlcnRleCwgZmlyc3RJbnN0YW5jZSk7
CiB9CiAKIHZvaWQgd2dwdVJlbmRlclBhc3NFbmNvZGVyRHJhd0luZGV4ZWRJbmRpcmVjdChXR1BV
UmVuZGVyUGFzc0VuY29kZXIgcmVuZGVyUGFzc0VuY29kZXIsIFdHUFVCdWZmZXIgaW5kaXJlY3RC
dWZmZXIsIHVpbnQ2NF90IGluZGlyZWN0T2Zmc2V0KQogewotICAgIHJlbmRlclBhc3NFbmNvZGVy
LT5yZW5kZXJQYXNzRW5jb2Rlci5kcmF3SW5kZXhlZEluZGlyZWN0KGluZGlyZWN0QnVmZmVyLT5i
dWZmZXIsIGluZGlyZWN0T2Zmc2V0KTsKKyAgICByZW5kZXJQYXNzRW5jb2Rlci0+cmVuZGVyUGFz
c0VuY29kZXItPmRyYXdJbmRleGVkSW5kaXJlY3QoaW5kaXJlY3RCdWZmZXItPmJ1ZmZlciwgaW5k
aXJlY3RPZmZzZXQpOwogfQogCiB2b2lkIHdncHVSZW5kZXJQYXNzRW5jb2RlckRyYXdJbmRpcmVj
dChXR1BVUmVuZGVyUGFzc0VuY29kZXIgcmVuZGVyUGFzc0VuY29kZXIsIFdHUFVCdWZmZXIgaW5k
aXJlY3RCdWZmZXIsIHVpbnQ2NF90IGluZGlyZWN0T2Zmc2V0KQogewotICAgIHJlbmRlclBhc3NF
bmNvZGVyLT5yZW5kZXJQYXNzRW5jb2Rlci5kcmF3SW5kaXJlY3QoaW5kaXJlY3RCdWZmZXItPmJ1
ZmZlciwgaW5kaXJlY3RPZmZzZXQpOworICAgIHJlbmRlclBhc3NFbmNvZGVyLT5yZW5kZXJQYXNz
RW5jb2Rlci0+ZHJhd0luZGlyZWN0KGluZGlyZWN0QnVmZmVyLT5idWZmZXIsIGluZGlyZWN0T2Zm
c2V0KTsKIH0KIAogdm9pZCB3Z3B1UmVuZGVyUGFzc0VuY29kZXJFbmRPY2NsdXNpb25RdWVyeShX
R1BVUmVuZGVyUGFzc0VuY29kZXIgcmVuZGVyUGFzc0VuY29kZXIpCiB7Ci0gICAgcmVuZGVyUGFz
c0VuY29kZXItPnJlbmRlclBhc3NFbmNvZGVyLmVuZE9jY2x1c2lvblF1ZXJ5KCk7CisgICAgcmVu
ZGVyUGFzc0VuY29kZXItPnJlbmRlclBhc3NFbmNvZGVyLT5lbmRPY2NsdXNpb25RdWVyeSgpOwog
fQogCiB2b2lkIHdncHVSZW5kZXJQYXNzRW5jb2RlckVuZFBhc3MoV0dQVVJlbmRlclBhc3NFbmNv
ZGVyIHJlbmRlclBhc3NFbmNvZGVyKQogewotICAgIHJlbmRlclBhc3NFbmNvZGVyLT5yZW5kZXJQ
YXNzRW5jb2Rlci5lbmRQYXNzKCk7CisgICAgcmVuZGVyUGFzc0VuY29kZXItPnJlbmRlclBhc3NF
bmNvZGVyLT5lbmRQYXNzKCk7CiB9CiAKIHZvaWQgd2dwdVJlbmRlclBhc3NFbmNvZGVyRW5kUGlw
ZWxpbmVTdGF0aXN0aWNzUXVlcnkoV0dQVVJlbmRlclBhc3NFbmNvZGVyIHJlbmRlclBhc3NFbmNv
ZGVyKQogewotICAgIHJlbmRlclBhc3NFbmNvZGVyLT5yZW5kZXJQYXNzRW5jb2Rlci5lbmRQaXBl
bGluZVN0YXRpc3RpY3NRdWVyeSgpOworICAgIHJlbmRlclBhc3NFbmNvZGVyLT5yZW5kZXJQYXNz
RW5jb2Rlci0+ZW5kUGlwZWxpbmVTdGF0aXN0aWNzUXVlcnkoKTsKIH0KIAogdm9pZCB3Z3B1UmVu
ZGVyUGFzc0VuY29kZXJFeGVjdXRlQnVuZGxlcyhXR1BVUmVuZGVyUGFzc0VuY29kZXIgcmVuZGVy
UGFzc0VuY29kZXIsIHVpbnQzMl90IGJ1bmRsZXNDb3VudCwgY29uc3QgV0dQVVJlbmRlckJ1bmRs
ZSogYnVuZGxlcykKQEAgLTIzNSw3MCArMjM5LDcwIEBAIHZvaWQgd2dwdVJlbmRlclBhc3NFbmNv
ZGVyRXhlY3V0ZUJ1bmRsZXMoV0dQVVJlbmRlclBhc3NFbmNvZGVyIHJlbmRlclBhc3NFbmNvZGVy
CiAgICAgVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8Y29uc3QgV2ViR1BVOjpSZW5kZXJC
dW5kbGU+PiBidW5kbGVzVG9Gb3J3YXJkOwogICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkgPCBi
dW5kbGVzQ291bnQ7ICsraSkKICAgICAgICAgYnVuZGxlc1RvRm9yd2FyZC5hcHBlbmQoYnVuZGxl
c1tpXS0+cmVuZGVyQnVuZGxlKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci0+cmVuZGVyUGFzc0Vu
Y29kZXIuZXhlY3V0ZUJ1bmRsZXMoV1RGTW92ZShidW5kbGVzVG9Gb3J3YXJkKSk7CisgICAgcmVu
ZGVyUGFzc0VuY29kZXItPnJlbmRlclBhc3NFbmNvZGVyLT5leGVjdXRlQnVuZGxlcyhXVEZNb3Zl
KGJ1bmRsZXNUb0ZvcndhcmQpKTsKIH0KIAogdm9pZCB3Z3B1UmVuZGVyUGFzc0VuY29kZXJJbnNl
cnREZWJ1Z01hcmtlcihXR1BVUmVuZGVyUGFzc0VuY29kZXIgcmVuZGVyUGFzc0VuY29kZXIsIGNv
bnN0IGNoYXIqIG1hcmtlckxhYmVsKQogewotICAgIHJlbmRlclBhc3NFbmNvZGVyLT5yZW5kZXJQ
YXNzRW5jb2Rlci5pbnNlcnREZWJ1Z01hcmtlcihtYXJrZXJMYWJlbCk7CisgICAgcmVuZGVyUGFz
c0VuY29kZXItPnJlbmRlclBhc3NFbmNvZGVyLT5pbnNlcnREZWJ1Z01hcmtlcihtYXJrZXJMYWJl
bCk7CiB9CiAKIHZvaWQgd2dwdVJlbmRlclBhc3NFbmNvZGVyUG9wRGVidWdHcm91cChXR1BVUmVu
ZGVyUGFzc0VuY29kZXIgcmVuZGVyUGFzc0VuY29kZXIpCiB7Ci0gICAgcmVuZGVyUGFzc0VuY29k
ZXItPnJlbmRlclBhc3NFbmNvZGVyLnBvcERlYnVnR3JvdXAoKTsKKyAgICByZW5kZXJQYXNzRW5j
b2Rlci0+cmVuZGVyUGFzc0VuY29kZXItPnBvcERlYnVnR3JvdXAoKTsKIH0KIAogdm9pZCB3Z3B1
UmVuZGVyUGFzc0VuY29kZXJQdXNoRGVidWdHcm91cChXR1BVUmVuZGVyUGFzc0VuY29kZXIgcmVu
ZGVyUGFzc0VuY29kZXIsIGNvbnN0IGNoYXIqIGdyb3VwTGFiZWwpCiB7Ci0gICAgcmVuZGVyUGFz
c0VuY29kZXItPnJlbmRlclBhc3NFbmNvZGVyLnB1c2hEZWJ1Z0dyb3VwKGdyb3VwTGFiZWwpOwor
ICAgIHJlbmRlclBhc3NFbmNvZGVyLT5yZW5kZXJQYXNzRW5jb2Rlci0+cHVzaERlYnVnR3JvdXAo
Z3JvdXBMYWJlbCk7CiB9CiAKIHZvaWQgd2dwdVJlbmRlclBhc3NFbmNvZGVyU2V0QmluZEdyb3Vw
KFdHUFVSZW5kZXJQYXNzRW5jb2RlciByZW5kZXJQYXNzRW5jb2RlciwgdWludDMyX3QgZ3JvdXBJ
bmRleCwgV0dQVUJpbmRHcm91cCBncm91cCwgdWludDMyX3QgZHluYW1pY09mZnNldENvdW50LCBj
b25zdCB1aW50MzJfdCogZHluYW1pY09mZnNldHMpCiB7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIt
PnJlbmRlclBhc3NFbmNvZGVyLnNldEJpbmRHcm91cChncm91cEluZGV4LCBncm91cC0+YmluZEdy
b3VwLCBkeW5hbWljT2Zmc2V0Q291bnQsIGR5bmFtaWNPZmZzZXRzKTsKKyAgICByZW5kZXJQYXNz
RW5jb2Rlci0+cmVuZGVyUGFzc0VuY29kZXItPnNldEJpbmRHcm91cChncm91cEluZGV4LCBncm91
cC0+YmluZEdyb3VwLCBkeW5hbWljT2Zmc2V0Q291bnQsIGR5bmFtaWNPZmZzZXRzKTsKIH0KIAog
dm9pZCB3Z3B1UmVuZGVyUGFzc0VuY29kZXJTZXRCbGVuZENvbnN0YW50KFdHUFVSZW5kZXJQYXNz
RW5jb2RlciByZW5kZXJQYXNzRW5jb2RlciwgY29uc3QgV0dQVUNvbG9yKiBjb2xvcikKIHsKLSAg
ICByZW5kZXJQYXNzRW5jb2Rlci0+cmVuZGVyUGFzc0VuY29kZXIuc2V0QmxlbmRDb25zdGFudChj
b2xvcik7CisgICAgcmVuZGVyUGFzc0VuY29kZXItPnJlbmRlclBhc3NFbmNvZGVyLT5zZXRCbGVu
ZENvbnN0YW50KGNvbG9yKTsKIH0KIAogdm9pZCB3Z3B1UmVuZGVyUGFzc0VuY29kZXJTZXRJbmRl
eEJ1ZmZlcihXR1BVUmVuZGVyUGFzc0VuY29kZXIgcmVuZGVyUGFzc0VuY29kZXIsIFdHUFVCdWZm
ZXIgYnVmZmVyLCBXR1BVSW5kZXhGb3JtYXQgZm9ybWF0LCB1aW50NjRfdCBvZmZzZXQsIHVpbnQ2
NF90IHNpemUpCiB7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXItPnJlbmRlclBhc3NFbmNvZGVyLnNl
dEluZGV4QnVmZmVyKGJ1ZmZlci0+YnVmZmVyLCBmb3JtYXQsIG9mZnNldCwgc2l6ZSk7CisgICAg
cmVuZGVyUGFzc0VuY29kZXItPnJlbmRlclBhc3NFbmNvZGVyLT5zZXRJbmRleEJ1ZmZlcihidWZm
ZXItPmJ1ZmZlciwgZm9ybWF0LCBvZmZzZXQsIHNpemUpOwogfQogCiB2b2lkIHdncHVSZW5kZXJQ
YXNzRW5jb2RlclNldFBpcGVsaW5lKFdHUFVSZW5kZXJQYXNzRW5jb2RlciByZW5kZXJQYXNzRW5j
b2RlciwgV0dQVVJlbmRlclBpcGVsaW5lIHBpcGVsaW5lKQogewotICAgIHJlbmRlclBhc3NFbmNv
ZGVyLT5yZW5kZXJQYXNzRW5jb2Rlci5zZXRQaXBlbGluZShwaXBlbGluZS0+cmVuZGVyUGlwZWxp
bmUpOworICAgIHJlbmRlclBhc3NFbmNvZGVyLT5yZW5kZXJQYXNzRW5jb2Rlci0+c2V0UGlwZWxp
bmUocGlwZWxpbmUtPnJlbmRlclBpcGVsaW5lKTsKIH0KIAogdm9pZCB3Z3B1UmVuZGVyUGFzc0Vu
Y29kZXJTZXRTY2lzc29yUmVjdChXR1BVUmVuZGVyUGFzc0VuY29kZXIgcmVuZGVyUGFzc0VuY29k
ZXIsIHVpbnQzMl90IHgsIHVpbnQzMl90IHksIHVpbnQzMl90IHdpZHRoLCB1aW50MzJfdCBoZWln
aHQpCiB7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXItPnJlbmRlclBhc3NFbmNvZGVyLnNldFNjaXNz
b3JSZWN0KHgsIHksIHdpZHRoLCBoZWlnaHQpOworICAgIHJlbmRlclBhc3NFbmNvZGVyLT5yZW5k
ZXJQYXNzRW5jb2Rlci0+c2V0U2Npc3NvclJlY3QoeCwgeSwgd2lkdGgsIGhlaWdodCk7CiB9CiAK
IHZvaWQgd2dwdVJlbmRlclBhc3NFbmNvZGVyU2V0U3RlbmNpbFJlZmVyZW5jZShXR1BVUmVuZGVy
UGFzc0VuY29kZXIgcmVuZGVyUGFzc0VuY29kZXIsIHVpbnQzMl90IHJlZmVyZW5jZSkKIHsKLSAg
ICByZW5kZXJQYXNzRW5jb2Rlci0+cmVuZGVyUGFzc0VuY29kZXIuc2V0U3RlbmNpbFJlZmVyZW5j
ZShyZWZlcmVuY2UpOworICAgIHJlbmRlclBhc3NFbmNvZGVyLT5yZW5kZXJQYXNzRW5jb2Rlci0+
c2V0U3RlbmNpbFJlZmVyZW5jZShyZWZlcmVuY2UpOwogfQogCiB2b2lkIHdncHVSZW5kZXJQYXNz
RW5jb2RlclNldFZlcnRleEJ1ZmZlcihXR1BVUmVuZGVyUGFzc0VuY29kZXIgcmVuZGVyUGFzc0Vu
Y29kZXIsIHVpbnQzMl90IHNsb3QsIFdHUFVCdWZmZXIgYnVmZmVyLCB1aW50NjRfdCBvZmZzZXQs
IHVpbnQ2NF90IHNpemUpCiB7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXItPnJlbmRlclBhc3NFbmNv
ZGVyLnNldFZlcnRleEJ1ZmZlcihzbG90LCBidWZmZXItPmJ1ZmZlciwgb2Zmc2V0LCBzaXplKTsK
KyAgICByZW5kZXJQYXNzRW5jb2Rlci0+cmVuZGVyUGFzc0VuY29kZXItPnNldFZlcnRleEJ1ZmZl
cihzbG90LCBidWZmZXItPmJ1ZmZlciwgb2Zmc2V0LCBzaXplKTsKIH0KIAogdm9pZCB3Z3B1UmVu
ZGVyUGFzc0VuY29kZXJTZXRWaWV3cG9ydChXR1BVUmVuZGVyUGFzc0VuY29kZXIgcmVuZGVyUGFz
c0VuY29kZXIsIGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQsIGZs
b2F0IG1pbkRlcHRoLCBmbG9hdCBtYXhEZXB0aCkKIHsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci0+
cmVuZGVyUGFzc0VuY29kZXIuc2V0Vmlld3BvcnQoeCwgeSwgd2lkdGgsIGhlaWdodCwgbWluRGVw
dGgsIG1heERlcHRoKTsKKyAgICByZW5kZXJQYXNzRW5jb2Rlci0+cmVuZGVyUGFzc0VuY29kZXIt
PnNldFZpZXdwb3J0KHgsIHksIHdpZHRoLCBoZWlnaHQsIG1pbkRlcHRoLCBtYXhEZXB0aCk7CiB9
CiAKIHZvaWQgd2dwdVJlbmRlclBhc3NFbmNvZGVyV3JpdGVUaW1lc3RhbXAoV0dQVVJlbmRlclBh
c3NFbmNvZGVyIHJlbmRlclBhc3NFbmNvZGVyLCBXR1BVUXVlcnlTZXQgcXVlcnlTZXQsIHVpbnQz
Ml90IHF1ZXJ5SW5kZXgpCiB7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXItPnJlbmRlclBhc3NFbmNv
ZGVyLndyaXRlVGltZXN0YW1wKHF1ZXJ5U2V0LT5xdWVyeVNldCwgcXVlcnlJbmRleCk7CisgICAg
cmVuZGVyUGFzc0VuY29kZXItPnJlbmRlclBhc3NFbmNvZGVyLT53cml0ZVRpbWVzdGFtcChxdWVy
eVNldC0+cXVlcnlTZXQsIHF1ZXJ5SW5kZXgpOwogfQogCiB2b2lkIHdncHVSZW5kZXJQYXNzRW5j
b2RlclNldExhYmVsKFdHUFVSZW5kZXJQYXNzRW5jb2RlciByZW5kZXJQYXNzRW5jb2RlciwgY29u
c3QgY2hhciogbGFiZWwpCiB7Ci0gICAgcmVuZGVyUGFzc0VuY29kZXItPnJlbmRlclBhc3NFbmNv
ZGVyLnNldExhYmVsKGxhYmVsKTsKKyAgICByZW5kZXJQYXNzRW5jb2Rlci0+cmVuZGVyUGFzc0Vu
Y29kZXItPnNldExhYmVsKGxhYmVsKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2Vi
R1BVL1JlbmRlclBpcGVsaW5lLmggYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9SZW5kZXJQaXBlbGlu
ZS5oCmluZGV4IGNlNjFkYWM0MDgzZWQ1ZDBiMzI1NTE4MmRhNzRkNWQ0YmE5MGM5ZDIuLmNkYWM5
MDFhNmMzYjFmMGJhNTdhMDJlMGE1MGQxYTY2YTk1YzRiZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJHUFUvV2ViR1BVL1JlbmRlclBpcGVsaW5lLmgKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUv
UmVuZGVyUGlwZWxpbmUuaApAQCAtMjYsMTkgKzI2LDMzIEBACiAjcHJhZ21hIG9uY2UKIAogI2lt
cG9ydCAiV2ViR1BVLmgiCisjaW1wb3J0IDx3dGYvRmFzdE1hbGxvYy5oPgorI2ltcG9ydCA8d3Rm
L1JlZi5oPgorI2ltcG9ydCA8d3RmL1JlZkNvdW50ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkdQVSB7
CiAKIGNsYXNzIEJpbmRHcm91cExheW91dDsKIAotY2xhc3MgUmVuZGVyUGlwZWxpbmUgeworY2xh
c3MgUmVuZGVyUGlwZWxpbmUgOiBwdWJsaWMgUmVmQ291bnRlZDxSZW5kZXJQaXBlbGluZT4gewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIEJpbmRHcm91cExheW91
dCBnZXRCaW5kR3JvdXBMYXlvdXQodWludDMyX3QgZ3JvdXBJbmRleCk7CisgICAgc3RhdGljIFJl
ZjxSZW5kZXJQaXBlbGluZT4gY3JlYXRlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFJlbmRlclBpcGVsaW5lKCkpOworICAgIH0KKworICAgIH5SZW5kZXJQaXBlbGluZSgp
OworCisgICAgUmVmPEJpbmRHcm91cExheW91dD4gZ2V0QmluZEdyb3VwTGF5b3V0KHVpbnQzMl90
IGdyb3VwSW5kZXgpOwogICAgIHZvaWQgc2V0TGFiZWwoY29uc3QgY2hhciopOworCitwcml2YXRl
OgorICAgIFJlbmRlclBpcGVsaW5lKCk7CiB9OwogCi19Cit9IC8vIG5hbWVzcGFjZSBXZWJHUFUK
IAogc3RydWN0IFdHUFVSZW5kZXJQaXBlbGluZUltcGwgewotICAgIFdlYkdQVTo6UmVuZGVyUGlw
ZWxpbmUgcmVuZGVyUGlwZWxpbmU7CisgICAgUmVmPFdlYkdQVTo6UmVuZGVyUGlwZWxpbmU+IHJl
bmRlclBpcGVsaW5lOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1JlbmRl
clBpcGVsaW5lLm1tIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvUmVuZGVyUGlwZWxpbmUubW0KaW5k
ZXggMjc5OTU5Yjg5NDI5ZWM4YjM4MDE4ZDliOGU2Y2U4YWU5OWUyOGE3ZC4uZTM2NTAzYWFhMmE2
NmVkNjg1ZDc5NTdmNDA3YzkzNGZjMmZjODE4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9X
ZWJHUFUvUmVuZGVyUGlwZWxpbmUubW0KKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvUmVuZGVy
UGlwZWxpbmUubW0KQEAgLTMxLDEwICszMSwxNCBAQAogCiBuYW1lc3BhY2UgV2ViR1BVIHsKIAot
QmluZEdyb3VwTGF5b3V0IFJlbmRlclBpcGVsaW5lOjpnZXRCaW5kR3JvdXBMYXlvdXQodWludDMy
X3QgZ3JvdXBJbmRleCkKK1JlbmRlclBpcGVsaW5lOjpSZW5kZXJQaXBlbGluZSgpID0gZGVmYXVs
dDsKKworUmVuZGVyUGlwZWxpbmU6On5SZW5kZXJQaXBlbGluZSgpID0gZGVmYXVsdDsKKworUmVm
PEJpbmRHcm91cExheW91dD4gUmVuZGVyUGlwZWxpbmU6OmdldEJpbmRHcm91cExheW91dCh1aW50
MzJfdCBncm91cEluZGV4KQogewogICAgIFVOVVNFRF9QQVJBTShncm91cEluZGV4KTsKLSAgICBy
ZXR1cm4geyB9OworICAgIHJldHVybiBCaW5kR3JvdXBMYXlvdXQ6OmNyZWF0ZSgpOwogfQogCiB2
b2lkIFJlbmRlclBpcGVsaW5lOjpzZXRMYWJlbChjb25zdCBjaGFyKiBsYWJlbCkKQEAgLTUxLDEx
ICs1NSwxMSBAQCB2b2lkIHdncHVSZW5kZXJQaXBlbGluZVJlbGVhc2UoV0dQVVJlbmRlclBpcGVs
aW5lIHJlbmRlclBpcGVsaW5lKQogCiBXR1BVQmluZEdyb3VwTGF5b3V0IHdncHVSZW5kZXJQaXBl
bGluZUdldEJpbmRHcm91cExheW91dChXR1BVUmVuZGVyUGlwZWxpbmUgcmVuZGVyUGlwZWxpbmUs
IHVpbnQzMl90IGdyb3VwSW5kZXgpCiB7Ci0gICAgcmV0dXJuIG5ldyBXR1BVQmluZEdyb3VwTGF5
b3V0SW1wbCB7IHJlbmRlclBpcGVsaW5lLT5yZW5kZXJQaXBlbGluZS5nZXRCaW5kR3JvdXBMYXlv
dXQoZ3JvdXBJbmRleCkgfTsKKyAgICByZXR1cm4gbmV3IFdHUFVCaW5kR3JvdXBMYXlvdXRJbXBs
IHsgcmVuZGVyUGlwZWxpbmUtPnJlbmRlclBpcGVsaW5lLT5nZXRCaW5kR3JvdXBMYXlvdXQoZ3Jv
dXBJbmRleCkgfTsKIH0KIAogdm9pZCB3Z3B1UmVuZGVyUGlwZWxpbmVTZXRMYWJlbChXR1BVUmVu
ZGVyUGlwZWxpbmUgcmVuZGVyUGlwZWxpbmUsIGNvbnN0IGNoYXIqIGxhYmVsKQogewotICAgIHJl
bmRlclBpcGVsaW5lLT5yZW5kZXJQaXBlbGluZS5zZXRMYWJlbChsYWJlbCk7CisgICAgcmVuZGVy
UGlwZWxpbmUtPnJlbmRlclBpcGVsaW5lLT5zZXRMYWJlbChsYWJlbCk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1NhbXBsZXIuaCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BV
L1NhbXBsZXIuaAppbmRleCBkY2FjZTlmNTVlMTI5MzAyYzM4MGIxYjY0MzM2NWFiMDZmYTUyMDc1
Li4xYjczNjVkZThiODE2ZWQ0NThlYjkwY2VhMmFlODY0YjdhZmY4MDYyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViR1BVL1dlYkdQVS9TYW1wbGVyLmgKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUv
U2FtcGxlci5oCkBAIC0yNiwxNiArMjYsMzAgQEAKICNwcmFnbWEgb25jZQogCiAjaW1wb3J0ICJX
ZWJHUFUuaCIKKyNpbXBvcnQgPHd0Zi9GYXN0TWFsbG9jLmg+CisjaW1wb3J0IDx3dGYvUmVmLmg+
CisjaW1wb3J0IDx3dGYvUmVmQ291bnRlZC5oPgogCiBuYW1lc3BhY2UgV2ViR1BVIHsKIAotY2xh
c3MgU2FtcGxlciB7CitjbGFzcyBTYW1wbGVyIDogcHVibGljIFJlZkNvdW50ZWQ8U2FtcGxlcj4g
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgorICAgIHN0YXRpYyBSZWY8
U2FtcGxlcj4gY3JlYXRlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNh
bXBsZXIoKSk7CisgICAgfQorCisgICAgflNhbXBsZXIoKTsKKwogICAgIHZvaWQgc2V0TGFiZWwo
Y29uc3QgY2hhciopOworCitwcml2YXRlOgorICAgIFNhbXBsZXIoKTsKIH07CiAKLX0KK30gLy8g
bmFtZXNwYWNlIFdlYkdQVQogCiBzdHJ1Y3QgV0dQVVNhbXBsZXJJbXBsIHsKLSAgICBXZWJHUFU6
OlNhbXBsZXIgc2FtcGxlcjsKKyAgICBSZWY8V2ViR1BVOjpTYW1wbGVyPiBzYW1wbGVyOwogfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1NhbXBsZXIubW0gYi9Tb3VyY2UvV2Vi
R1BVL1dlYkdQVS9TYW1wbGVyLm1tCmluZGV4IGIyNjExZjFhMWVmY2M5MzRmYWVmMjFiYmY3NTFi
MmU1NTQwNTllNzcuLjZhMTZhMjIyNjY2ZGRhM2Y1N2NjM2QxOWQzNjA1MDkyMjU3MDc3NzcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1NhbXBsZXIubW0KKysrIGIvU291cmNlL1dl
YkdQVS9XZWJHUFUvU2FtcGxlci5tbQpAQCAtMzAsNiArMzAsMTAgQEAKIAogbmFtZXNwYWNlIFdl
YkdQVSB7CiAKK1NhbXBsZXI6OlNhbXBsZXIoKSA9IGRlZmF1bHQ7CisKK1NhbXBsZXI6On5TYW1w
bGVyKCkgPSBkZWZhdWx0OworCiB2b2lkIFNhbXBsZXI6OnNldExhYmVsKGNvbnN0IGNoYXIqIGxh
YmVsKQogewogICAgIFVOVVNFRF9QQVJBTShsYWJlbCk7CkBAIC00NCw1ICs0OCw1IEBAIHZvaWQg
d2dwdVNhbXBsZXJSZWxlYXNlKFdHUFVTYW1wbGVyIHNhbXBsZXIpCiAKIHZvaWQgd2dwdVNhbXBs
ZXJTZXRMYWJlbChXR1BVU2FtcGxlciBzYW1wbGVyLCBjb25zdCBjaGFyKiBsYWJlbCkKIHsKLSAg
ICBzYW1wbGVyLT5zYW1wbGVyLnNldExhYmVsKGxhYmVsKTsKKyAgICBzYW1wbGVyLT5zYW1wbGVy
LT5zZXRMYWJlbChsYWJlbCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9T
aGFkZXJNb2R1bGUuaCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1NoYWRlck1vZHVsZS5oCmluZGV4
IDRjMDkyZmJiOTEyOWEwMzgwNWY3MDQzMTYwMDExMjdmM2MyMjk2YWEuLmNjZDk1ZTA1MzAzMDc1
MmFhZjdiNWY3NmE5ZWZiNDQzZWRjNTU4M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2Vi
R1BVL1NoYWRlck1vZHVsZS5oCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1NoYWRlck1vZHVs
ZS5oCkBAIC0yNiwxNiArMjYsMzAgQEAKICNwcmFnbWEgb25jZQogCiAjaW1wb3J0ICJXZWJHUFUu
aCIKKyNpbXBvcnQgPHd0Zi9GYXN0TWFsbG9jLmg+CisjaW1wb3J0IDx3dGYvUmVmLmg+CisjaW1w
b3J0IDx3dGYvUmVmQ291bnRlZC5oPgogCiBuYW1lc3BhY2UgV2ViR1BVIHsKIAotY2xhc3MgU2hh
ZGVyTW9kdWxlIHsKK2NsYXNzIFNoYWRlck1vZHVsZSA6IHB1YmxpYyBSZWZDb3VudGVkPFNoYWRl
ck1vZHVsZT4geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgorICAgIHN0
YXRpYyBSZWY8U2hhZGVyTW9kdWxlPiBjcmVhdGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgU2hhZGVyTW9kdWxlKCkpOworICAgIH0KKworICAgIH5TaGFkZXJNb2R1bGUo
KTsKKwogICAgIHZvaWQgc2V0TGFiZWwoY29uc3QgY2hhciopOworCitwcml2YXRlOgorICAgIFNo
YWRlck1vZHVsZSgpOwogfTsKIAotfQorfSAvLyBuYW1lc3BhY2UgV2ViR1BVCiAKIHN0cnVjdCBX
R1BVU2hhZGVyTW9kdWxlSW1wbCB7Ci0gICAgV2ViR1BVOjpTaGFkZXJNb2R1bGUgc2hhZGVyTW9k
dWxlOworICAgIFJlZjxXZWJHUFU6OlNoYWRlck1vZHVsZT4gc2hhZGVyTW9kdWxlOwogfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1NoYWRlck1vZHVsZS5tbSBiL1NvdXJjZS9X
ZWJHUFUvV2ViR1BVL1NoYWRlck1vZHVsZS5tbQppbmRleCA1OTNiNjE4NTI2MjgyNDA0YzdhNWIz
OTRiNzEwYThiZTFkZGRhYTI0Li45NTRkY2YxNDZjMjMwZjEyNmQwYmM4NTYyZDFhODY1M2NhNGQy
MmNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9TaGFkZXJNb2R1bGUubW0KKysr
IGIvU291cmNlL1dlYkdQVS9XZWJHUFUvU2hhZGVyTW9kdWxlLm1tCkBAIC0zMCw2ICszMCwxMCBA
QAogCiBuYW1lc3BhY2UgV2ViR1BVIHsKIAorU2hhZGVyTW9kdWxlOjpTaGFkZXJNb2R1bGUoKSA9
IGRlZmF1bHQ7CisKK1NoYWRlck1vZHVsZTo6flNoYWRlck1vZHVsZSgpID0gZGVmYXVsdDsKKwog
dm9pZCBTaGFkZXJNb2R1bGU6OnNldExhYmVsKGNvbnN0IGNoYXIqIGxhYmVsKQogewogICAgIFVO
VVNFRF9QQVJBTShsYWJlbCk7CkBAIC00NCw2ICs0OCw2IEBAIHZvaWQgd2dwdVNoYWRlck1vZHVs
ZVJlbGVhc2UoV0dQVVNoYWRlck1vZHVsZSBzaGFkZXJNb2R1bGUpCiAKIHZvaWQgd2dwdVNoYWRl
ck1vZHVsZVNldExhYmVsKFdHUFVTaGFkZXJNb2R1bGUgc2hhZGVyTW9kdWxlLCBjb25zdCBjaGFy
KiBsYWJlbCkKIHsKLSAgICBzaGFkZXJNb2R1bGUtPnNoYWRlck1vZHVsZS5zZXRMYWJlbChsYWJl
bCk7CisgICAgc2hhZGVyTW9kdWxlLT5zaGFkZXJNb2R1bGUtPnNldExhYmVsKGxhYmVsKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvU3VyZmFjZS5oIGIvU291cmNlL1dl
YkdQVS9XZWJHUFUvU3VyZmFjZS5oCmluZGV4IGVhZTVmYzI1NjBjY2FmZTUwNDIxODZiN2E2OTE0
ZWE1OTRhMjkyMTkuLmM1OWY4YThiZTc4NDU5MDkzN2E1NGY1YTIyMGYzM2VkYTA4MzBmY2YgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1N1cmZhY2UuaAorKysgYi9Tb3VyY2UvV2Vi
R1BVL1dlYkdQVS9TdXJmYWNlLmgKQEAgLTI2LDE4ICsyNiwzMiBAQAogI3ByYWdtYSBvbmNlCiAK
ICNpbXBvcnQgIldlYkdQVS5oIgorI2ltcG9ydCA8d3RmL0Zhc3RNYWxsb2MuaD4KKyNpbXBvcnQg
PHd0Zi9SZWYuaD4KKyNpbXBvcnQgPHd0Zi9SZWZDb3VudGVkLmg+CiAKIG5hbWVzcGFjZSBXZWJH
UFUgewogCiBjbGFzcyBBZGFwdGVyOwogCi1jbGFzcyBTdXJmYWNlIHsKK2NsYXNzIFN1cmZhY2Ug
OiBwdWJsaWMgUmVmQ291bnRlZDxTdXJmYWNlPiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6CisgICAgc3RhdGljIFJlZjxTdXJmYWNlPiBjcmVhdGUoKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3VyZmFjZSgpKTsKKyAgICB9CisKKyAgICB+U3Vy
ZmFjZSgpOworCiAgICAgV0dQVVRleHR1cmVGb3JtYXQgZ2V0UHJlZmVycmVkRm9ybWF0KGNvbnN0
IEFkYXB0ZXImKTsKKworcHJpdmF0ZToKKyAgICBTdXJmYWNlKCk7CiB9OwogCi19Cit9IC8vIG5h
bWVzcGFjZSBXZWJHUFUKIAogc3RydWN0IFdHUFVTdXJmYWNlSW1wbCB7Ci0gICAgV2ViR1BVOjpT
dXJmYWNlIHN1cmZhY2U7CisgICAgUmVmPFdlYkdQVTo6U3VyZmFjZT4gc3VyZmFjZTsKIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9TdXJmYWNlLm1tIGIvU291cmNlL1dlYkdQ
VS9XZWJHUFUvU3VyZmFjZS5tbQppbmRleCBmZDY0ZDIzODdkOGMzYjhmOGMxNTlkMTBkMzQyYWMw
NGRlZTRhNTk5Li41OWY5Y2Y2MDBlOGJiMjA3YmEyZjM0OTUyM2NjNjk4YmZkNzAzMzFhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9TdXJmYWNlLm1tCisrKyBiL1NvdXJjZS9XZWJH
UFUvV2ViR1BVL1N1cmZhY2UubW0KQEAgLTMxLDYgKzMxLDEwIEBACiAKIG5hbWVzcGFjZSBXZWJH
UFUgewogCitTdXJmYWNlOjpTdXJmYWNlKCkgPSBkZWZhdWx0OworCitTdXJmYWNlOjp+U3VyZmFj
ZSgpID0gZGVmYXVsdDsKKwogV0dQVVRleHR1cmVGb3JtYXQgU3VyZmFjZTo6Z2V0UHJlZmVycmVk
Rm9ybWF0KGNvbnN0IEFkYXB0ZXImIGFkYXB0ZXIpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGFkYXB0
ZXIpOwpAQCAtNDYsNiArNTAsNiBAQCB2b2lkIHdncHVTdXJmYWNlUmVsZWFzZShXR1BVU3VyZmFj
ZSBzdXJmYWNlKQogCiBXR1BVVGV4dHVyZUZvcm1hdCB3Z3B1U3VyZmFjZUdldFByZWZlcnJlZEZv
cm1hdChXR1BVU3VyZmFjZSBzdXJmYWNlLCBXR1BVQWRhcHRlciBhZGFwdGVyKQogewotICAgIHJl
dHVybiBzdXJmYWNlLT5zdXJmYWNlLmdldFByZWZlcnJlZEZvcm1hdChhZGFwdGVyLT5hZGFwdGVy
KTsKKyAgICByZXR1cm4gc3VyZmFjZS0+c3VyZmFjZS0+Z2V0UHJlZmVycmVkRm9ybWF0KGFkYXB0
ZXItPmFkYXB0ZXIpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9Td2Fw
Q2hhaW4uaCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1N3YXBDaGFpbi5oCmluZGV4IDg3ZDkwMzE3
YTMxMzk2MjI3N2ZmMjg4YTU0ZGQ1YzI5N2UxM2MyNTIuLjhkODNkYTA1YjljY2I3YjBlOTQ3ZmQ1
NzI2MWI2M2NkYmJhOTBiNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1N3YXBD
aGFpbi5oCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1N3YXBDaGFpbi5oCkBAIC0yNiwxOSAr
MjYsMzMgQEAKICNwcmFnbWEgb25jZQogCiAjaW1wb3J0ICJXZWJHUFUuaCIKKyNpbXBvcnQgPHd0
Zi9GYXN0TWFsbG9jLmg+CisjaW1wb3J0IDx3dGYvUmVmLmg+CisjaW1wb3J0IDx3dGYvUmVmQ291
bnRlZC5oPgogCiBuYW1lc3BhY2UgV2ViR1BVIHsKIAogY2xhc3MgVGV4dHVyZVZpZXc7CiAKLWNs
YXNzIFN3YXBDaGFpbiB7CitjbGFzcyBTd2FwQ2hhaW4gOiBwdWJsaWMgUmVmQ291bnRlZDxTd2Fw
Q2hhaW4+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBUZXh0
dXJlVmlldyBnZXRDdXJyZW50VGV4dHVyZVZpZXcoKTsKKyAgICBzdGF0aWMgUmVmPFN3YXBDaGFp
bj4gY3JlYXRlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN3YXBDaGFp
bigpKTsKKyAgICB9CisKKyAgICB+U3dhcENoYWluKCk7CisKKyAgICBSZWY8VGV4dHVyZVZpZXc+
IGdldEN1cnJlbnRUZXh0dXJlVmlldygpOwogICAgIHZvaWQgcHJlc2VudCgpOworCitwcml2YXRl
OgorICAgIFN3YXBDaGFpbigpOwogfTsKIAotfQorfSAvLyBuYW1lc3BhY2UgV2ViR1BVCiAKIHN0
cnVjdCBXR1BVU3dhcENoYWluSW1wbCB7Ci0gICAgV2ViR1BVOjpTd2FwQ2hhaW4gc3dhcENoYWlu
OworICAgIFJlZjxXZWJHUFU6OlN3YXBDaGFpbj4gc3dhcENoYWluOwogfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJHUFUvV2ViR1BVL1N3YXBDaGFpbi5tbSBiL1NvdXJjZS9XZWJHUFUvV2ViR1BV
L1N3YXBDaGFpbi5tbQppbmRleCAxOThiM2ViOGFlOWJiMzgzNjI1NGYxNDRiZmViN2Q0NTU1MGQw
YTFjLi45ZmNmOGQ1YTkyZWE5MjRmMWUzZDU5Y2ZmZGNlYzY3MGJhOGEwYTUxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9Td2FwQ2hhaW4ubW0KKysrIGIvU291cmNlL1dlYkdQVS9X
ZWJHUFUvU3dhcENoYWluLm1tCkBAIC0zMSw5ICszMSwxMyBAQAogCiBuYW1lc3BhY2UgV2ViR1BV
IHsKIAotVGV4dHVyZVZpZXcgU3dhcENoYWluOjpnZXRDdXJyZW50VGV4dHVyZVZpZXcoKQorU3dh
cENoYWluOjpTd2FwQ2hhaW4oKSA9IGRlZmF1bHQ7CisKK1N3YXBDaGFpbjo6flN3YXBDaGFpbigp
ID0gZGVmYXVsdDsKKworUmVmPFRleHR1cmVWaWV3PiBTd2FwQ2hhaW46OmdldEN1cnJlbnRUZXh0
dXJlVmlldygpCiB7Ci0gICAgcmV0dXJuIHsgfTsKKyAgICByZXR1cm4gVGV4dHVyZVZpZXc6OmNy
ZWF0ZSgpOwogfQogCiB2b2lkIFN3YXBDaGFpbjo6cHJlc2VudCgpCkBAIC00OSwxMSArNTMsMTEg
QEAgdm9pZCB3Z3B1U3dhcENoYWluUmVsZWFzZShXR1BVU3dhcENoYWluIHN3YXBDaGFpbikKIAog
V0dQVVRleHR1cmVWaWV3IHdncHVTd2FwQ2hhaW5HZXRDdXJyZW50VGV4dHVyZVZpZXcoV0dQVVN3
YXBDaGFpbiBzd2FwQ2hhaW4pCiB7Ci0gICAgcmV0dXJuIG5ldyBXR1BVVGV4dHVyZVZpZXdJbXBs
IHsgc3dhcENoYWluLT5zd2FwQ2hhaW4uZ2V0Q3VycmVudFRleHR1cmVWaWV3KCkgfTsKKyAgICBy
ZXR1cm4gbmV3IFdHUFVUZXh0dXJlVmlld0ltcGwgeyBzd2FwQ2hhaW4tPnN3YXBDaGFpbi0+Z2V0
Q3VycmVudFRleHR1cmVWaWV3KCkgfTsKIH0KIAogdm9pZCB3Z3B1U3dhcENoYWluUHJlc2VudChX
R1BVU3dhcENoYWluIHN3YXBDaGFpbikKIHsKLSAgICBzd2FwQ2hhaW4tPnN3YXBDaGFpbi5wcmVz
ZW50KCk7CisgICAgc3dhcENoYWluLT5zd2FwQ2hhaW4tPnByZXNlbnQoKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvVGV4dHVyZS5oIGIvU291cmNlL1dlYkdQVS9XZWJH
UFUvVGV4dHVyZS5oCmluZGV4IGE0MzI3ZTNlZjU3YjVhYTBlNDQ1MDAzNGJhZjUxNDM2ZmJhMzlj
YmIuLmEyMmI4MjM3NzUxYTAxOGY3M2Y1ZDNlZWE2ZGVmY2RhMjE2NTBiNjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJHUFUvV2ViR1BVL1RleHR1cmUuaAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQ
VS9UZXh0dXJlLmgKQEAgLTI2LDIwICsyNiwzNCBAQAogI3ByYWdtYSBvbmNlCiAKICNpbXBvcnQg
IldlYkdQVS5oIgorI2ltcG9ydCA8d3RmL0Zhc3RNYWxsb2MuaD4KKyNpbXBvcnQgPHd0Zi9SZWYu
aD4KKyNpbXBvcnQgPHd0Zi9SZWZDb3VudGVkLmg+CiAKIG5hbWVzcGFjZSBXZWJHUFUgewogCiBj
bGFzcyBUZXh0dXJlVmlldzsKIAotY2xhc3MgVGV4dHVyZSB7CitjbGFzcyBUZXh0dXJlIDogcHVi
bGljIFJlZkNvdW50ZWQ8VGV4dHVyZT4geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgotICAgIFRleHR1cmVWaWV3IGNyZWF0ZVZpZXcoY29uc3QgV0dQVVRleHR1cmVWaWV3
RGVzY3JpcHRvciopOworICAgIHN0YXRpYyBSZWY8VGV4dHVyZT4gY3JlYXRlKCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFRleHR1cmUoKSk7CisgICAgfQorCisgICAgflRl
eHR1cmUoKTsKKworICAgIFJlZjxUZXh0dXJlVmlldz4gY3JlYXRlVmlldyhjb25zdCBXR1BVVGV4
dHVyZVZpZXdEZXNjcmlwdG9yKik7CiAgICAgdm9pZCBkZXN0cm95KCk7CiAgICAgdm9pZCBzZXRM
YWJlbChjb25zdCBjaGFyKik7CisKK3ByaXZhdGU6CisgICAgVGV4dHVyZSgpOwogfTsKIAotfQor
fSAvLyBuYW1lc3BhY2UgV2ViR1BVCiAKIHN0cnVjdCBXR1BVVGV4dHVyZUltcGwgewotICAgIFdl
YkdQVTo6VGV4dHVyZSB0ZXh0dXJlOworICAgIFJlZjxXZWJHUFU6OlRleHR1cmU+IHRleHR1cmU7
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvVGV4dHVyZS5tbSBiL1NvdXJj
ZS9XZWJHUFUvV2ViR1BVL1RleHR1cmUubW0KaW5kZXggYjBkNWY2ZTk3NDA2MTA3MzBiZTNkMjgw
NGNlNzllYThhM2IxOGM3Mi4uMjQ1NzMxNmE1Y2RjNzMzOGI0NDNhYTQzZDg3ZjRmNWEyZDFhZmMy
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUvVGV4dHVyZS5tbQorKysgYi9Tb3Vy
Y2UvV2ViR1BVL1dlYkdQVS9UZXh0dXJlLm1tCkBAIC0zMSwxMCArMzEsMTQgQEAKIAogbmFtZXNw
YWNlIFdlYkdQVSB7CiAKLVRleHR1cmVWaWV3IFRleHR1cmU6OmNyZWF0ZVZpZXcoY29uc3QgV0dQ
VVRleHR1cmVWaWV3RGVzY3JpcHRvciogZGVzY3JpcHRvcikKK1RleHR1cmU6OlRleHR1cmUoKSA9
IGRlZmF1bHQ7CisKK1RleHR1cmU6On5UZXh0dXJlKCkgPSBkZWZhdWx0OworCitSZWY8VGV4dHVy
ZVZpZXc+IFRleHR1cmU6OmNyZWF0ZVZpZXcoY29uc3QgV0dQVVRleHR1cmVWaWV3RGVzY3JpcHRv
ciogZGVzY3JpcHRvcikKIHsKICAgICBVTlVTRURfUEFSQU0oZGVzY3JpcHRvcik7Ci0gICAgcmV0
dXJuIHsgfTsKKyAgICByZXR1cm4gVGV4dHVyZVZpZXc6OmNyZWF0ZSgpOwogfQogCiB2b2lkIFRl
eHR1cmU6OmRlc3Ryb3koKQpAQCAtNTUsMTUgKzU5LDE1IEBAIHZvaWQgd2dwdVRleHR1cmVSZWxl
YXNlKFdHUFVUZXh0dXJlIHRleHR1cmUpCiAKIFdHUFVUZXh0dXJlVmlldyB3Z3B1VGV4dHVyZUNy
ZWF0ZVZpZXcoV0dQVVRleHR1cmUgdGV4dHVyZSwgY29uc3QgV0dQVVRleHR1cmVWaWV3RGVzY3Jp
cHRvciogZGVzY3JpcHRvcikKIHsKLSAgICByZXR1cm4gbmV3IFdHUFVUZXh0dXJlVmlld0ltcGwg
eyB0ZXh0dXJlLT50ZXh0dXJlLmNyZWF0ZVZpZXcoZGVzY3JpcHRvcikgfTsKKyAgICByZXR1cm4g
bmV3IFdHUFVUZXh0dXJlVmlld0ltcGwgeyB0ZXh0dXJlLT50ZXh0dXJlLT5jcmVhdGVWaWV3KGRl
c2NyaXB0b3IpIH07CiB9CiAKIHZvaWQgd2dwdVRleHR1cmVEZXN0cm95KFdHUFVUZXh0dXJlIHRl
eHR1cmUpCiB7Ci0gICAgdGV4dHVyZS0+dGV4dHVyZS5kZXN0cm95KCk7CisgICAgdGV4dHVyZS0+
dGV4dHVyZS0+ZGVzdHJveSgpOwogfQogCiB2b2lkIHdncHVUZXh0dXJlU2V0TGFiZWwoV0dQVVRl
eHR1cmUgdGV4dHVyZSwgY29uc3QgY2hhciogbGFiZWwpCiB7Ci0gICAgdGV4dHVyZS0+dGV4dHVy
ZS5zZXRMYWJlbChsYWJlbCk7CisgICAgdGV4dHVyZS0+dGV4dHVyZS0+c2V0TGFiZWwobGFiZWwp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvVGV4dHVyZVZpZXcuaCBiL1Nv
dXJjZS9XZWJHUFUvV2ViR1BVL1RleHR1cmVWaWV3LmgKaW5kZXggMzA3NTgzMGNiYjFiOWRkYjQ5
NDAzNTcxY2Q2OGZjYmI1Y2YyMTE0Ni4uYjljNjJkOWZiOTlmNjIxM2U2NjJmZTc1MWM0NDBiZTlk
YmFjNmI4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUvVGV4dHVyZVZpZXcuaAor
KysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9UZXh0dXJlVmlldy5oCkBAIC0yNiwxNiArMjYsMzAg
QEAKICNwcmFnbWEgb25jZQogCiAjaW1wb3J0ICJXZWJHUFUuaCIKKyNpbXBvcnQgPHd0Zi9GYXN0
TWFsbG9jLmg+CisjaW1wb3J0IDx3dGYvUmVmLmg+CisjaW1wb3J0IDx3dGYvUmVmQ291bnRlZC5o
PgogCiBuYW1lc3BhY2UgV2ViR1BVIHsKIAotY2xhc3MgVGV4dHVyZVZpZXcgeworY2xhc3MgVGV4
dHVyZVZpZXcgOiBwdWJsaWMgUmVmQ291bnRlZDxUZXh0dXJlVmlldz4geworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgorICAgIHN0YXRpYyBSZWY8VGV4dHVyZVZpZXc+IGNy
ZWF0ZSgpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUZXh0dXJlVmlldygp
KTsKKyAgICB9CisKKyAgICB+VGV4dHVyZVZpZXcoKTsKKwogICAgIHZvaWQgc2V0TGFiZWwoY29u
c3QgY2hhciopOworCitwcml2YXRlOgorICAgIFRleHR1cmVWaWV3KCk7CiB9OwogCi19Cit9IC8v
IG5hbWVzcGFjZSBXZWJHUFUKIAogc3RydWN0IFdHUFVUZXh0dXJlVmlld0ltcGwgewotICAgIFdl
YkdQVTo6VGV4dHVyZVZpZXcgdGV4dHVyZVZpZXc7CisgICAgUmVmPFdlYkdQVTo6VGV4dHVyZVZp
ZXc+IHRleHR1cmVWaWV3OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1Rl
eHR1cmVWaWV3Lm1tIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvVGV4dHVyZVZpZXcubW0KaW5kZXgg
NTkwOWMwYjZjYzc4YmExNjEzM2RhMTMwYmNmYjBlYjAwOWY5MjE4My4uY2I3YmMxZmRhYjVkOWNk
NGVjMWY5Mjg4ZjcxOGJhNDhlNmJmYzIwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJH
UFUvVGV4dHVyZVZpZXcubW0KKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvVGV4dHVyZVZpZXcu
bW0KQEAgLTMwLDYgKzMwLDEwIEBACiAKIG5hbWVzcGFjZSBXZWJHUFUgewogCitUZXh0dXJlVmll
dzo6VGV4dHVyZVZpZXcoKSA9IGRlZmF1bHQ7CisKK1RleHR1cmVWaWV3Ojp+VGV4dHVyZVZpZXco
KSA9IGRlZmF1bHQ7CisKIHZvaWQgVGV4dHVyZVZpZXc6OnNldExhYmVsKGNvbnN0IGNoYXIqIGxh
YmVsKQogewogICAgIFVOVVNFRF9QQVJBTShsYWJlbCk7CkBAIC00NCw1ICs0OCw1IEBAIHZvaWQg
d2dwdVRleHR1cmVWaWV3UmVsZWFzZShXR1BVVGV4dHVyZVZpZXcgdGV4dHVyZVZpZXcpCiAKIHZv
aWQgd2dwdVRleHR1cmVWaWV3U2V0TGFiZWwoV0dQVVRleHR1cmVWaWV3IHRleHR1cmVWaWV3LCBj
b25zdCBjaGFyKiBsYWJlbCkKIHsKLSAgICB0ZXh0dXJlVmlldy0+dGV4dHVyZVZpZXcuc2V0TGFi
ZWwobGFiZWwpOworICAgIHRleHR1cmVWaWV3LT50ZXh0dXJlVmlldy0+c2V0TGFiZWwobGFiZWwp
OwogfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>