<?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>237932</bug_id>
          
          <creation_ts>2022-03-15 16:46:04 -0700</creation_ts>
          <short_desc>[WebGPU] Use block-based WebGPU API instead of function pointer &amp; userdata API</short_desc>
          <delta_ts>2022-03-16 20:03:20 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=237583</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>237925</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Myles C. Maxfield">mmaxfield</reporter>
          <assigned_to name="Myles C. Maxfield">mmaxfield</assigned_to>
          <cc>dino</cc>
    
    <cc>djg</cc>
    
    <cc>ggaren</cc>
    
    <cc>kkinnunen</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1851584</commentid>
    <comment_count>0</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2022-03-15 16:46:04 -0700</bug_when>
    <thetext>[WebGPU] Use block-based WebGPU API instead of function pointer &amp; userdata API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1851585</commentid>
    <comment_count>1</comment_count>
      <attachid>454775</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2022-03-15 16:49:47 -0700</bug_when>
    <thetext>Created attachment 454775
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1851587</commentid>
    <comment_count>2</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2022-03-15 16:50:14 -0700</bug_when>
    <thetext>*** Bug 236935 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1852114</commentid>
    <comment_count>3</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2022-03-16 20:02:21 -0700</bug_when>
    <thetext>Committed r291384 (248515@trunk): &lt;https://commits.webkit.org/248515@trunk&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1852115</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-03-16 20:03:20 -0700</bug_when>
    <thetext>&lt;rdar://problem/90406657&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>454775</attachid>
            <date>2022-03-15 16:49:47 -0700</date>
            <delta_ts>2022-03-16 07:47:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237932-20220315164946.patch</filename>
            <type>text/plain</type>
            <size>42119</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxMzIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Q
QUwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwppbmRleCAwYmI5Zjlj
ZmQ4YmNkOGMyZmVkOThhZjE1YjU2Yjk1NWQ3OTFmMGYyLi43N2IxY2IzMDg3MGFlNGJmMjIxNjIy
Mjk5YjJkYWVlOGRmYjM2YjA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0OSBAQAor
MjAyMi0wMy0xNSAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisg
ICAgICAgIFtXZWJHUFVdIFVzZSBibG9jay1iYXNlZCBXZWJHUFUgQVBJIGluc3RlYWQgb2YgZnVu
Y3Rpb24gcG9pbnRlciAmIHVzZXJkYXRhIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM3OTMyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVGhhbmtzIHRvIHRoZSBtYWdpYyBvZiBtYWtlQmxvY2tQdHIo
KSwgd2UgY2FuIHVzZSBsYW1iZGFzIHRvIHBhc3MgYXN5bmNocm9ub3VzIGNhbGxiYWNrcworICAg
ICAgICB0byBXZWJHUFUgbWV0aG9kcywgaW5zdGVhZCBvZiBoYXZpbmcgdG8gc2F2ZSBjYWxsYmFj
a3MgaW4gYSBxdWV1ZSBtYW51YWxseS4gVGhpcyBpcyBtdWNoCisgICAgICAgIHNhZmVyIGJlY2F1
c2UgQSkgaXQncyBzaWduaWZpY2FudGx5IGxlc3MgY29kZSwgd2hpY2ggbWVhbnMgZmV3ZXIgYnVn
cywgYW5kIEIpIHRoZQorICAgICAgICBjYWxsYmFja3MgYXJlIGFsbG93ZWQgdG8gZmlyZSBvdXQt
b2Ytb3JkZXIgbm93LgorCisgICAgICAgICogcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQ
VUFkYXB0ZXJJbXBsLmNwcDoKKyAgICAgICAgKFBBTDo6V2ViR1BVOjpBZGFwdGVySW1wbDo6cmVx
dWVzdERldmljZSk6CisgICAgICAgIChQQUw6OldlYkdQVTo6cmVxdWVzdERldmljZUNhbGxiYWNr
KTogRGVsZXRlZC4KKyAgICAgICAgKFBBTDo6V2ViR1BVOjpBZGFwdGVySW1wbDo6cmVxdWVzdERl
dmljZUNhbGxiYWNrKTogRGVsZXRlZC4KKyAgICAgICAgKiBwYWwvZ3JhcGhpY3MvV2ViR1BVL0lt
cGwvV2ViR1BVQWRhcHRlckltcGwuaDoKKyAgICAgICAgKiBwYWwvZ3JhcGhpY3MvV2ViR1BVL0lt
cGwvV2ViR1BVQnVmZmVySW1wbC5jcHA6CisgICAgICAgIChQQUw6OldlYkdQVTo6QnVmZmVySW1w
bDo6bWFwQXN5bmMpOgorICAgICAgICAoUEFMOjpXZWJHUFU6Om1hcENhbGxiYWNrKTogRGVsZXRl
ZC4KKyAgICAgICAgKFBBTDo6V2ViR1BVOjpCdWZmZXJJbXBsOjptYXBDYWxsYmFjayk6IERlbGV0
ZWQuCisgICAgICAgICogcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUJ1ZmZlckltcGwu
aDoKKyAgICAgICAgKiBwYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVRGV2aWNlSW1wbC5j
cHA6CisgICAgICAgIChQQUw6OldlYkdQVTo6RGV2aWNlSW1wbDo6Y3JlYXRlQ29tcHV0ZVBpcGVs
aW5lQXN5bmMpOgorICAgICAgICAoUEFMOjpXZWJHUFU6OkRldmljZUltcGw6OmNyZWF0ZVJlbmRl
clBpcGVsaW5lQXN5bmMpOgorICAgICAgICAoUEFMOjpXZWJHUFU6OkRldmljZUltcGw6OnBvcEVy
cm9yU2NvcGUpOgorICAgICAgICAoUEFMOjpXZWJHUFU6OmNyZWF0ZUNvbXB1dGVQaXBlbGluZUFz
eW5jQ2FsbGJhY2spOiBEZWxldGVkLgorICAgICAgICAoUEFMOjpXZWJHUFU6OkRldmljZUltcGw6
OmNyZWF0ZUNvbXB1dGVQaXBlbGluZUFzeW5jQ2FsbGJhY2spOiBEZWxldGVkLgorICAgICAgICAo
UEFMOjpXZWJHUFU6OmNyZWF0ZVJlbmRlclBpcGVsaW5lQXN5bmNDYWxsYmFjayk6IERlbGV0ZWQu
CisgICAgICAgIChQQUw6OldlYkdQVTo6RGV2aWNlSW1wbDo6Y3JlYXRlUmVuZGVyUGlwZWxpbmVB
c3luY0NhbGxiYWNrKTogRGVsZXRlZC4KKyAgICAgICAgKFBBTDo6V2ViR1BVOjpwb3BFcnJvclNj
b3BlQ2FsbGJhY2spOiBEZWxldGVkLgorICAgICAgICAoUEFMOjpXZWJHUFU6OkRldmljZUltcGw6
OnBvcEVycm9yU2NvcGVDYWxsYmFjayk6IERlbGV0ZWQuCisgICAgICAgICogcGFsL2dyYXBoaWNz
L1dlYkdQVS9JbXBsL1dlYkdQVURldmljZUltcGwuaDoKKyAgICAgICAgKiBwYWwvZ3JhcGhpY3Mv
V2ViR1BVL0ltcGwvV2ViR1BVSW1wbC5jcHA6CisgICAgICAgIChQQUw6OldlYkdQVTo6R1BVSW1w
bDo6cmVxdWVzdEFkYXB0ZXIpOgorICAgICAgICAoUEFMOjpXZWJHUFU6OnJlcXVlc3RBZGFwdGVy
Q2FsbGJhY2spOiBEZWxldGVkLgorICAgICAgICAoUEFMOjpXZWJHUFU6OkdQVUltcGw6OnJlcXVl
c3RBZGFwdGVyQ2FsbGJhY2spOiBEZWxldGVkLgorICAgICAgICAqIHBhbC9ncmFwaGljcy9XZWJH
UFUvSW1wbC9XZWJHUFVJbXBsLmg6CisgICAgICAgICogcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBs
L1dlYkdQVVF1ZXVlSW1wbC5jcHA6CisgICAgICAgIChQQUw6OldlYkdQVTo6UXVldWVJbXBsOjpv
blN1Ym1pdHRlZFdvcmtEb25lKToKKyAgICAgICAgKFBBTDo6V2ViR1BVOjpvblN1Ym1pdHRlZFdv
cmtEb25lQ2FsbGJhY2spOiBEZWxldGVkLgorICAgICAgICAoUEFMOjpXZWJHUFU6OlF1ZXVlSW1w
bDo6b25TdWJtaXR0ZWRXb3JrRG9uZUNhbGxiYWNrKTogRGVsZXRlZC4KKyAgICAgICAgKiBwYWwv
Z3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVUXVldWVJbXBsLmg6CisgICAgICAgICogcGFsL2dy
YXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVVNoYWRlck1vZHVsZUltcGwuY3BwOgorICAgICAgICAo
UEFMOjpXZWJHUFU6OlNoYWRlck1vZHVsZUltcGw6OmNvbXBpbGF0aW9uSW5mbyk6CisKIDIwMjIt
MDMtMTUgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbV2ViR1BVXSBNaWdyYXRlIGZyb20gV1RGOjpGdW5jdGlvbiB0byBXVEY6OkNvbXBsZXRpb25I
YW5kbGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJH
UFUvQ2hhbmdlTG9nCmluZGV4IGU0MmQ1MjE1MmNmZTE3MTM5ZTE0ZmYyZWFiMjVhYWUxNTY3Mjdj
ZWMuLjQwMDdkN2MyOWUwZWQwNzY5MjMxMDg0YTNiN2M1MDQ5OWZhOTA1MzUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJHUFUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJHUFUvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMzkgQEAKKzIwMjItMDMtMTUgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxk
QGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViR1BVXSBVc2UgYmxvY2stYmFzZWQgV2ViR1BVIEFQ
SSBpbnN0ZWFkIG9mIGZ1bmN0aW9uIHBvaW50ZXIgJiB1c2VyZGF0YSBBUEkKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNzkzMgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmUgY2FsbGJhY2tzIGluc3Rl
YWQgb2YgY29weWluZyB0aGVtLiBBbHNvLCB1cGRhdGUgYWNjb3JkaW5nIHRvIHRoZSBzdHlsZSBn
dWlkZS4KKworICAgICAgICAqIFdlYkdQVS9BZGFwdGVyLm1tOgorICAgICAgICAod2dwdUFkYXB0
ZXJSZXF1ZXN0RGV2aWNlKToKKyAgICAgICAgKHdncHVBZGFwdGVyUmVxdWVzdERldmljZVdpdGhC
bG9jayk6CisgICAgICAgICogV2ViR1BVL0J1ZmZlci5tbToKKyAgICAgICAgKHdncHVCdWZmZXJN
YXBBc3luYyk6CisgICAgICAgICh3Z3B1QnVmZmVyTWFwQXN5bmNXaXRoQmxvY2spOgorICAgICAg
ICAqIFdlYkdQVS9EZXZpY2UubW06CisgICAgICAgICh3Z3B1RGV2aWNlQ3JlYXRlQ29tcHV0ZVBp
cGVsaW5lQXN5bmMpOgorICAgICAgICAod2dwdURldmljZUNyZWF0ZUNvbXB1dGVQaXBlbGluZUFz
eW5jV2l0aEJsb2NrKToKKyAgICAgICAgKHdncHVEZXZpY2VDcmVhdGVSZW5kZXJQaXBlbGluZUFz
eW5jKToKKyAgICAgICAgKHdncHVEZXZpY2VDcmVhdGVSZW5kZXJQaXBlbGluZUFzeW5jV2l0aEJs
b2NrKToKKyAgICAgICAgKHdncHVEZXZpY2VQb3BFcnJvclNjb3BlKToKKyAgICAgICAgKHdncHVE
ZXZpY2VQb3BFcnJvclNjb3BlV2l0aEJsb2NrKToKKyAgICAgICAgKHdncHVEZXZpY2VTZXREZXZp
Y2VMb3N0Q2FsbGJhY2spOgorICAgICAgICAod2dwdURldmljZVNldERldmljZUxvc3RDYWxsYmFj
a1dpdGhCbG9jayk6CisgICAgICAgICh3Z3B1RGV2aWNlU2V0VW5jYXB0dXJlZEVycm9yQ2FsbGJh
Y2spOgorICAgICAgICAod2dwdURldmljZVNldFVuY2FwdHVyZWRFcnJvckNhbGxiYWNrV2l0aEJs
b2NrKToKKyAgICAgICAgKiBXZWJHUFUvSW5zdGFuY2UubW06CisgICAgICAgICh3Z3B1SW5zdGFu
Y2VSZXF1ZXN0QWRhcHRlcik6CisgICAgICAgICh3Z3B1SW5zdGFuY2VSZXF1ZXN0QWRhcHRlcldp
dGhCbG9jayk6CisgICAgICAgICogV2ViR1BVL1F1ZXVlLm1tOgorICAgICAgICAod2dwdVF1ZXVl
T25TdWJtaXR0ZWRXb3JrRG9uZSk6CisgICAgICAgICh3Z3B1UXVldWVPblN1Ym1pdHRlZFdvcmtE
b25lV2l0aEJsb2NrKToKKyAgICAgICAgKiBXZWJHUFUvU2hhZGVyTW9kdWxlLm1tOgorICAgICAg
ICAod2dwdVNoYWRlck1vZHVsZUdldENvbXBpbGF0aW9uSW5mbyk6CisgICAgICAgICh3Z3B1U2hh
ZGVyTW9kdWxlR2V0Q29tcGlsYXRpb25JbmZvV2l0aEJsb2NrKToKKwogMjAyMi0wMy0xNSAgTXls
ZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWJHUFVd
IE1pZ3JhdGUgZnJvbSBXVEY6OkZ1bmN0aW9uIHRvIFdURjo6Q29tcGxldGlvbkhhbmRsZXIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2Vi
R1BVQWRhcHRlckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJH
UFUvSW1wbC9XZWJHUFVBZGFwdGVySW1wbC5jcHAKaW5kZXggZGY1YTllMjVlMjk5N2I4N2M5YTQ4
MTAyMzZlNDAyMTgzMDhkZDg4YS4uMDM5OTM0ZjI5NGVhYmE2Mzk4ZTZmZGM1MjAzMjIwOTc3ZWRi
ZGViMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUv
SW1wbC9XZWJHUFVBZGFwdGVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9n
cmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVBZGFwdGVySW1wbC5jcHAKQEAgLTMxLDYgKzMxLDcg
QEAKICNpbmNsdWRlICJXZWJHUFVDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5oIgogI2luY2x1ZGUg
IldlYkdQVURldmljZUltcGwuaCIKICNpbmNsdWRlIDxXZWJHUFUvV2ViR1BVRXh0Lmg+CisjaW5j
bHVkZSA8d3RmL0Jsb2NrUHRyLmg+CiAKIG5hbWVzcGFjZSBQQUw6OldlYkdQVSB7CiAKQEAgLTE0
MCwxNiArMTQxLDggQEAgQWRhcHRlckltcGw6On5BZGFwdGVySW1wbCgpCiAgICAgd2dwdUFkYXB0
ZXJSZWxlYXNlKG1fYmFja2luZyk7CiB9CiAKLXZvaWQgcmVxdWVzdERldmljZUNhbGxiYWNrKFdH
UFVSZXF1ZXN0RGV2aWNlU3RhdHVzIHN0YXR1cywgV0dQVURldmljZSBkZXZpY2UsIGNvbnN0IGNo
YXIqIG1lc3NhZ2UsIHZvaWQqIHVzZXJkYXRhKQotewotICAgIGF1dG8gYWRhcHRlciA9IGFkb3B0
UmVmKCpzdGF0aWNfY2FzdDxBZGFwdGVySW1wbCo+KHVzZXJkYXRhKSk7IC8vIGFkb3B0UmVmIGlz
IGJhbGFuY2VkIGJ5IGxlYWtSZWYgaW4gcmVxdWVzdERldmljZSgpIGJlbG93LiBXZSBoYXZlIHRv
IGRvIHRoaXMgYmVjYXVzZSB3ZSdyZSB1c2luZyBhIEMgQVBJIHdpdGggbm8gY29uY2VwdCBvZiBy
ZWZlcmVuY2UgY291bnRpbmcgb3IgYmxvY2tzLgotICAgIGFkYXB0ZXItPnJlcXVlc3REZXZpY2VD
YWxsYmFjayhzdGF0dXMsIGRldmljZSwgbWVzc2FnZSk7Ci19Ci0KIHZvaWQgQWRhcHRlckltcGw6
OnJlcXVlc3REZXZpY2UoY29uc3QgRGV2aWNlRGVzY3JpcHRvciYgZGVzY3JpcHRvciwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChSZWY8RGV2aWNlPiYmKT4mJiBjYWxsYmFjaykKIHsKLSAgICBSZWYg
cHJvdGVjdGVkVGhpcygqdGhpcyk7Ci0KICAgICBhdXRvIGxhYmVsID0gZGVzY3JpcHRvci5sYWJl
bC51dGY4KCk7CiAKICAgICBhdXRvIGZlYXR1cmVzID0gZGVzY3JpcHRvci5yZXF1aXJlZEZlYXR1
cmVzLm1hcChbdGhpc10gKGF1dG8gZmVhdHVyZU5hbWUpIHsKQEAgLTE5NSwxNiArMTg4LDkgQEAg
dm9pZCBBZGFwdGVySW1wbDo6cmVxdWVzdERldmljZShjb25zdCBEZXZpY2VEZXNjcmlwdG9yJiBk
ZXNjcmlwdG9yLCBDb21wbGV0aW9uSGEKICAgICAgICAgJmxpbWl0cywKICAgICB9OwogCi0gICAg
bV9jYWxsYmFja3MuYXBwZW5kKFdURk1vdmUoY2FsbGJhY2spKTsKLQotICAgIHdncHVBZGFwdGVy
UmVxdWVzdERldmljZShtX2JhY2tpbmcsICZiYWNraW5nRGVzY3JpcHRvciwgJldlYkdQVTo6cmVx
dWVzdERldmljZUNhbGxiYWNrLCAmcHJvdGVjdGVkVGhpcy5sZWFrUmVmKCkpOyAvLyBsZWFrUmVm
IGlzIGJhbGFuY2VkIGJ5IGFkb3B0UmVmIGluIHJlcXVlc3REZXZpY2VDYWxsYmFjaygpIGFib3Zl
LiBXZSBoYXZlIHRvIGRvIHRoaXMgYmVjYXVzZSB3ZSdyZSB1c2luZyBhIEMgQVBJIHdpdGggbm8g
Y29uY2VwdCBvZiByZWZlcmVuY2UgY291bnRpbmcgb3IgYmxvY2tzLgotfQotCi12b2lkIEFkYXB0
ZXJJbXBsOjpyZXF1ZXN0RGV2aWNlQ2FsbGJhY2soV0dQVVJlcXVlc3REZXZpY2VTdGF0dXMsIFdH
UFVEZXZpY2UgZGV2aWNlLCBjb25zdCBjaGFyKiBtZXNzYWdlKQotewotICAgIFVOVVNFRF9QQVJB
TShtZXNzYWdlKTsKLSAgICBhdXRvIGNhbGxiYWNrID0gbV9jYWxsYmFja3MudGFrZUZpcnN0KCk7
Ci0gICAgY2FsbGJhY2soRGV2aWNlSW1wbDo6Y3JlYXRlKGRldmljZSwgUmVmIHsgZmVhdHVyZXMo
KSB9LCBSZWYgeyBsaW1pdHMoKSB9LCBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0KSk7CisgICAg
d2dwdUFkYXB0ZXJSZXF1ZXN0RGV2aWNlV2l0aEJsb2NrKG1fYmFja2luZywgJmJhY2tpbmdEZXNj
cmlwdG9yLCBtYWtlQmxvY2tQdHIoW3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBjb252
ZXJ0VG9CYWNraW5nQ29udGV4dCA9IG1fY29udmVydFRvQmFja2luZ0NvbnRleHQuY29weVJlZigp
LCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShXR1BVUmVxdWVzdERldmljZVN0YXR1cywg
V0dQVURldmljZSBkZXZpY2UsIGNvbnN0IGNoYXIqKSBtdXRhYmxlIHsKKyAgICAgICAgY2FsbGJh
Y2soRGV2aWNlSW1wbDo6Y3JlYXRlKGRldmljZSwgUmVmIHsgcHJvdGVjdGVkVGhpcy0+ZmVhdHVy
ZXMoKSB9LCBSZWYgeyBwcm90ZWN0ZWRUaGlzLT5saW1pdHMoKSB9LCBjb252ZXJ0VG9CYWNraW5n
Q29udGV4dCkpOworICAgIH0pLmdldCgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgUEFMOjpXZWJH
UFUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0lt
cGwvV2ViR1BVQWRhcHRlckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3Mv
V2ViR1BVL0ltcGwvV2ViR1BVQWRhcHRlckltcGwuaAppbmRleCA4NDFiMmUxODNiYjUxNDRlOGMw
ZTk3OGViMDVhNzg5MzBlZTgxZGJhLi5jM2U2ZWNhODAwYjAyZTkzNmNiZWQ1ZWE0YTE0NWM2OGY0
NDNlZmY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQ
VS9JbXBsL1dlYkdQVUFkYXB0ZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9n
cmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVBZGFwdGVySW1wbC5oCkBAIC00Nyw3ICs0Nyw2IEBA
IHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgRG93bmNhc3RDb252ZXJ0VG9C
YWNraW5nQ29udGV4dDsKLSAgICBmcmllbmQgdm9pZCByZXF1ZXN0RGV2aWNlQ2FsbGJhY2soV0dQ
VVJlcXVlc3REZXZpY2VTdGF0dXMsIFdHUFVEZXZpY2UsIGNvbnN0IGNoYXIqIG1lc3NhZ2UsIHZv
aWQqIHVzZXJkYXRhKTsKIAogICAgIEFkYXB0ZXJJbXBsKFdHUFVBZGFwdGVyLCBDb252ZXJ0VG9C
YWNraW5nQ29udGV4dCYpOwogCkBAIC01OCwxMSArNTcsOCBAQCBwcml2YXRlOgogCiAgICAgV0dQ
VUFkYXB0ZXIgYmFja2luZygpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2luZzsgfQogCi0gICAgdm9p
ZCByZXF1ZXN0RGV2aWNlQ2FsbGJhY2soV0dQVVJlcXVlc3REZXZpY2VTdGF0dXMsIFdHUFVEZXZp
Y2UsIGNvbnN0IGNoYXIqIG1lc3NhZ2UpOwogICAgIHZvaWQgcmVxdWVzdERldmljZShjb25zdCBE
ZXZpY2VEZXNjcmlwdG9yJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8RGV2aWNlPiYmKT4m
JikgZmluYWw7CiAKLSAgICBEZXF1ZTxDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxEZXZpY2U+
JiYpPj4gbV9jYWxsYmFja3M7Ci0KICAgICBXR1BVQWRhcHRlciBtX2JhY2tpbmcgeyBudWxscHRy
IH07CiAgICAgUmVmPENvbnZlcnRUb0JhY2tpbmdDb250ZXh0PiBtX2NvbnZlcnRUb0JhY2tpbmdD
b250ZXh0OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3Mv
V2ViR1BVL0ltcGwvV2ViR1BVQnVmZmVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFs
L2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUJ1ZmZlckltcGwuY3BwCmluZGV4IDJmOWJhN2E1
Zjg4NWFhZWNmNGZiYzUzNzE5NzQ3NmIzZTE1NzA4ZmEuLjg3MDY3ZDRiNWE5YzBhZDlmMWJhOGNj
MmVhOTE0M2UzN2Q4ZDcyMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3Jh
cGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQnVmZmVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVCdWZmZXJJbXBsLmNwcApAQCAt
MzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAiV2ViR1BVQ29udmVydFRvQmFja2luZ0NvbnRleHQu
aCIKICNpbmNsdWRlIDxXZWJHUFUvV2ViR1BVRXh0Lmg+CisjaW5jbHVkZSA8d3RmL0Jsb2NrUHRy
Lmg+CiAKIG5hbWVzcGFjZSBQQUw6OldlYkdQVSB7CiAKQEAgLTQ0LDMxICs0NSwxNiBAQCBCdWZm
ZXJJbXBsOjp+QnVmZmVySW1wbCgpCiAgICAgd2dwdUJ1ZmZlclJlbGVhc2UobV9iYWNraW5nKTsK
IH0KIAotdm9pZCBtYXBDYWxsYmFjayhXR1BVQnVmZmVyTWFwQXN5bmNTdGF0dXMgc3RhdHVzLCB2
b2lkKiB1c2VyZGF0YSkKLXsKLSAgICBhdXRvIGJ1ZmZlciA9IGFkb3B0UmVmKCpzdGF0aWNfY2Fz
dDxCdWZmZXJJbXBsKj4odXNlcmRhdGEpKTsgLy8gYWRvcHRSZWYgaXMgYmFsYW5jZWQgYnkgbGVh
a1JlZiBpbiBtYXBBc3luYygpIGJlbG93LiBXZSBoYXZlIHRvIGRvIHRoaXMgYmVjYXVzZSB3ZSdy
ZSB1c2luZyBhIEMgQVBJIHdpdGggbm8gY29uY2VwdCBvZiByZWZlcmVuY2UgY291bnRpbmcgb3Ig
YmxvY2tzLgotICAgIGJ1ZmZlci0+bWFwQ2FsbGJhY2soc3RhdHVzKTsKLX0KLQogdm9pZCBCdWZm
ZXJJbXBsOjptYXBBc3luYyhNYXBNb2RlRmxhZ3MgbWFwTW9kZUZsYWdzLCBTaXplNjQgb2Zmc2V0
LCBzdGQ6Om9wdGlvbmFsPFNpemU2ND4gc2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
IGNhbGxiYWNrKQogewotICAgIFJlZiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKLQogICAgIGF1dG8g
YmFja2luZ01hcE1vZGVGbGFncyA9IG1fY29udmVydFRvQmFja2luZ0NvbnRleHQtPmNvbnZlcnRN
YXBNb2RlRmxhZ3NUb0JhY2tpbmcobWFwTW9kZUZsYWdzKTsKIAogICAgIGF1dG8gdXNlZFNpemUg
PSBzaXplLnZhbHVlX29yKFdHUFVfV0hPTEVfTUFQX1NJWkUpOwogCi0gICAgbV9jYWxsYmFja3Mu
YXBwZW5kKFdURk1vdmUoY2FsbGJhY2spKTsKLQogICAgIC8vIEZJWE1FOiBDaGVjayB0aGUgY2Fz
dHMuCi0gICAgd2dwdUJ1ZmZlck1hcEFzeW5jKG1fYmFja2luZywgYmFja2luZ01hcE1vZGVGbGFn
cywgc3RhdGljX2Nhc3Q8c2l6ZV90PihvZmZzZXQpLCBzdGF0aWNfY2FzdDxzaXplX3Q+KHVzZWRT
aXplKSwgJldlYkdQVTo6bWFwQ2FsbGJhY2ssICZwcm90ZWN0ZWRUaGlzLmxlYWtSZWYoKSk7IC8v
IGxlYWtSZWYgaXMgYmFsYW5jZWQgYnkgYWRvcHRSZWYgaW4gbWFwQ2FsbGJhY2soKSBhYm92ZS4g
V2UgaGF2ZSB0byBkbyB0aGlzIGJlY2F1c2Ugd2UncmUgdXNpbmcgYSBDIEFQSSB3aXRoIG5vIGNv
bmNlcHQgb2YgcmVmZXJlbmNlIGNvdW50aW5nIG9yIGJsb2Nrcy4KLX0KLQotdm9pZCBCdWZmZXJJ
bXBsOjptYXBDYWxsYmFjayhXR1BVQnVmZmVyTWFwQXN5bmNTdGF0dXMgc3RhdHVzKQotewotICAg
IFVOVVNFRF9QQVJBTShzdGF0dXMpOwotICAgIGF1dG8gY2FsbGJhY2sgPSBtX2NhbGxiYWNrcy50
YWtlRmlyc3QoKTsKLSAgICBjYWxsYmFjaygpOworICAgIHdncHVCdWZmZXJNYXBBc3luY1dpdGhC
bG9jayhtX2JhY2tpbmcsIGJhY2tpbmdNYXBNb2RlRmxhZ3MsIHN0YXRpY19jYXN0PHNpemVfdD4o
b2Zmc2V0KSwgc3RhdGljX2Nhc3Q8c2l6ZV90Pih1c2VkU2l6ZSksIG1ha2VCbG9ja1B0cihbY2Fs
bGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oV0dQVUJ1ZmZlck1hcEFzeW5jU3RhdHVzKSBtdXRh
YmxlIHsKKyAgICAgICAgY2FsbGJhY2soKTsKKyAgICB9KS5nZXQoKSk7CiB9CiAKIGF1dG8gQnVm
ZmVySW1wbDo6Z2V0TWFwcGVkUmFuZ2UoU2l6ZTY0IG9mZnNldCwgc3RkOjpvcHRpb25hbDxTaXpl
NjQ+IHNpemUpIC0+IE1hcHBlZFJhbmdlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwv
cGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUJ1ZmZlckltcGwuaCBiL1NvdXJjZS9XZWJD
b3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQnVmZmVySW1wbC5oCmluZGV4
IGRmYTllZmIyOWViODc3YzI4MjhiMWQ1NjlhNDE1ZGFkNmY4ZWE2MzAuLmY0OWZjZWYxNTZlNDhk
ZGQwNDc5ODJiYzAxYzAwMjFiOTYyMTMzMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BB
TC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQnVmZmVySW1wbC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQnVmZmVySW1wbC5o
CkBAIC00Nyw3ICs0Nyw2IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3Mg
RG93bmNhc3RDb252ZXJ0VG9CYWNraW5nQ29udGV4dDsKLSAgICBmcmllbmQgdm9pZCBtYXBDYWxs
YmFjayhXR1BVQnVmZmVyTWFwQXN5bmNTdGF0dXMsIHZvaWQqIHVzZXJkYXRhKTsKIAogICAgIEJ1
ZmZlckltcGwoV0dQVUJ1ZmZlciwgQ29udmVydFRvQmFja2luZ0NvbnRleHQmKTsKIApAQCAtNTgs
NyArNTcsNiBAQCBwcml2YXRlOgogCiAgICAgV0dQVUJ1ZmZlciBiYWNraW5nKCkgY29uc3QgeyBy
ZXR1cm4gbV9iYWNraW5nOyB9CiAKLSAgICB2b2lkIG1hcENhbGxiYWNrKFdHUFVCdWZmZXJNYXBB
c3luY1N0YXR1cyk7CiAgICAgdm9pZCBtYXBBc3luYyhNYXBNb2RlRmxhZ3MsIFNpemU2NCBvZmZz
ZXQsIHN0ZDo6b3B0aW9uYWw8U2l6ZTY0PiBzaXplRm9yTWFwLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpIGZpbmFsOwogICAgIE1hcHBlZFJhbmdlIGdldE1hcHBlZFJhbmdlKFNpemU2NCBv
ZmZzZXQsIHN0ZDo6b3B0aW9uYWw8U2l6ZTY0PikgZmluYWw7CiAgICAgdm9pZCB1bm1hcCgpIGZp
bmFsOwpAQCAtNjcsOCArNjUsNiBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBzZXRMYWJlbEludGVy
bmFsKGNvbnN0IFN0cmluZyYpIGZpbmFsOwogCi0gICAgRGVxdWU8Q29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPj4gbV9jYWxsYmFja3M7Ci0KICAgICBXR1BVQnVmZmVyIG1fYmFja2luZyB7IG51bGxw
dHIgfTsKICAgICBSZWY8Q29udmVydFRvQmFja2luZ0NvbnRleHQ+IG1fY29udmVydFRvQmFja2lu
Z0NvbnRleHQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGlj
cy9XZWJHUFUvSW1wbC9XZWJHUFVEZXZpY2VJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVRGV2aWNlSW1wbC5jcHAKaW5kZXggNzY4MTcx
OWYyZWVkODIwMmY4NTFkODE0YzNjYjgxMmMxZjk2NThmZi4uOTY5YTdhMmNhN2I5YmE2MmNhMjVj
ZWFjMjhmM2EzOWRiMzRiMDk5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9n
cmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVEZXZpY2VJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVURldmljZUltcGwuY3BwCkBA
IC01OCw2ICs1OCw3IEBACiAjaW5jbHVkZSAiV2ViR1BVVGV4dHVyZVZpZXdJbXBsLmgiCiAjaW5j
bHVkZSAiV2ViR1BVVmFsaWRhdGlvbkVycm9yLmgiCiAjaW5jbHVkZSA8V2ViR1BVL1dlYkdQVUV4
dC5oPgorI2luY2x1ZGUgPHd0Zi9CbG9ja1B0ci5oPgogCiBuYW1lc3BhY2UgUEFMOjpXZWJHUFUg
ewogCkBAIC01MDksNTQgKzUxMCwyNCBAQCBSZWY8UmVuZGVyUGlwZWxpbmU+IERldmljZUltcGw6
OmNyZWF0ZVJlbmRlclBpcGVsaW5lKGNvbnN0IFJlbmRlclBpcGVsaW5lRGVzY3JpcAogICAgIH0p
OwogfQogCi12b2lkIGNyZWF0ZUNvbXB1dGVQaXBlbGluZUFzeW5jQ2FsbGJhY2soV0dQVUNyZWF0
ZVBpcGVsaW5lQXN5bmNTdGF0dXMgc3RhdHVzLCBXR1BVQ29tcHV0ZVBpcGVsaW5lIHBpcGVsaW5l
LCBjb25zdCBjaGFyKiBtZXNzYWdlLCB2b2lkKiB1c2VyZGF0YSkKLXsKLSAgICBhdXRvIGRldmlj
ZSA9IGFkb3B0UmVmKCpzdGF0aWNfY2FzdDxEZXZpY2VJbXBsKj4odXNlcmRhdGEpKTsgLy8gYWRv
cHRSZWYgaXMgYmFsYW5jZWQgYnkgbGVha1JlZiBpbiBjcmVhdGVDb21wdXRlUGlwZWxpbmVBc3lu
YygpIGJlbG93LiBXZSBoYXZlIHRvIGRvIHRoaXMgYmVjYXVzZSB3ZSdyZSB1c2luZyBhIEMgQVBJ
IHdpdGggbm8gY29uY2VwdCBvZiByZWZlcmVuY2UgY291bnRpbmcgb3IgYmxvY2tzLgotICAgIGRl
dmljZS0+Y3JlYXRlQ29tcHV0ZVBpcGVsaW5lQXN5bmNDYWxsYmFjayhzdGF0dXMsIHBpcGVsaW5l
LCBtZXNzYWdlKTsKLX0KLQogdm9pZCBEZXZpY2VJbXBsOjpjcmVhdGVDb21wdXRlUGlwZWxpbmVB
c3luYyhjb25zdCBDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFJlZjxDb21wdXRlUGlwZWxpbmU+JiYpPiYmIGNhbGxiYWNrKQogewot
ICAgIFJlZiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKLQotICAgIG1fY3JlYXRlQ29tcHV0ZVBpcGVs
aW5lQXN5bmNDYWxsYmFja3MuYXBwZW5kKFdURk1vdmUoY2FsbGJhY2spKTsKLQotICAgIGNvbnZl
cnRUb0JhY2tpbmcoZGVzY3JpcHRvciwgbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dCwgW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpXSAoY29uc3QgV0dQVUNvbXB1
dGVQaXBlbGluZURlc2NyaXB0b3ImIGJhY2tpbmdEZXNjcmlwdG9yKSBtdXRhYmxlIHsKLSAgICAg
ICAgd2dwdURldmljZUNyZWF0ZUNvbXB1dGVQaXBlbGluZUFzeW5jKG1fYmFja2luZywgJmJhY2tp
bmdEZXNjcmlwdG9yLCAmV2ViR1BVOjpjcmVhdGVDb21wdXRlUGlwZWxpbmVBc3luY0NhbGxiYWNr
LCAmcHJvdGVjdGVkVGhpcy5sZWFrUmVmKCkpOyAvLyBsZWFrUmVmIGlzIGJhbGFuY2VkIGJ5IGFk
b3B0UmVmIGluIHJlcXVlc3REZXZpY2VDYWxsYmFjaygpIGFib3ZlLiBXZSBoYXZlIHRvIGRvIHRo
aXMgYmVjYXVzZSB3ZSdyZSB1c2luZyBhIEMgQVBJIHdpdGggbm8gY29uY2VwdCBvZiByZWZlcmVu
Y2UgY291bnRpbmcgb3IgYmxvY2tzLgorICAgIGNvbnZlcnRUb0JhY2tpbmcoZGVzY3JpcHRvciwg
bV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dCwgW3RoaXMsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxs
YmFjayldIChjb25zdCBXR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciYgYmFja2luZ0Rlc2Ny
aXB0b3IpIG11dGFibGUgeworICAgICAgICB3Z3B1RGV2aWNlQ3JlYXRlQ29tcHV0ZVBpcGVsaW5l
QXN5bmNXaXRoQmxvY2sobV9iYWNraW5nLCAmYmFja2luZ0Rlc2NyaXB0b3IsIG1ha2VCbG9ja1B0
cihbY29udmVydFRvQmFja2luZ0NvbnRleHQgPSBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0LmNv
cHlSZWYoKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oV0dQVUNyZWF0ZVBpcGVsaW5l
QXN5bmNTdGF0dXMsIFdHUFVDb21wdXRlUGlwZWxpbmUgcGlwZWxpbmUsIGNvbnN0IGNoYXIqKSBt
dXRhYmxlIHsKKyAgICAgICAgICAgIGNhbGxiYWNrKENvbXB1dGVQaXBlbGluZUltcGw6OmNyZWF0
ZShwaXBlbGluZSwgY29udmVydFRvQmFja2luZ0NvbnRleHQpKTsKKyAgICAgICAgfSkuZ2V0KCkp
OwogICAgIH0pOwogfQogCi12b2lkIERldmljZUltcGw6OmNyZWF0ZUNvbXB1dGVQaXBlbGluZUFz
eW5jQ2FsbGJhY2soV0dQVUNyZWF0ZVBpcGVsaW5lQXN5bmNTdGF0dXMsIFdHUFVDb21wdXRlUGlw
ZWxpbmUgcGlwZWxpbmUsIGNvbnN0IGNoYXIqIG1lc3NhZ2UpCi17Ci0gICAgVU5VU0VEX1BBUkFN
KG1lc3NhZ2UpOwotICAgIGF1dG8gY2FsbGJhY2sgPSBtX2NyZWF0ZUNvbXB1dGVQaXBlbGluZUFz
eW5jQ2FsbGJhY2tzLnRha2VGaXJzdCgpOwotICAgIGNhbGxiYWNrKENvbXB1dGVQaXBlbGluZUlt
cGw6OmNyZWF0ZShwaXBlbGluZSwgbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dCkpOwotfQotCi12
b2lkIGNyZWF0ZVJlbmRlclBpcGVsaW5lQXN5bmNDYWxsYmFjayhXR1BVQ3JlYXRlUGlwZWxpbmVB
c3luY1N0YXR1cyBzdGF0dXMsIFdHUFVSZW5kZXJQaXBlbGluZSBwaXBlbGluZSwgY29uc3QgY2hh
ciogbWVzc2FnZSwgdm9pZCogdXNlcmRhdGEpCi17Ci0gICAgYXV0byBkZXZpY2UgPSBhZG9wdFJl
Zigqc3RhdGljX2Nhc3Q8RGV2aWNlSW1wbCo+KHVzZXJkYXRhKSk7IC8vIGFkb3B0UmVmIGlzIGJh
bGFuY2VkIGJ5IGxlYWtSZWYgaW4gY3JlYXRlUmVuZGVyUGlwZWxpbmVBc3luYygpIGJlbG93LiBX
ZSBoYXZlIHRvIGRvIHRoaXMgYmVjYXVzZSB3ZSdyZSB1c2luZyBhIEMgQVBJIHdpdGggbm8gY29u
Y2VwdCBvZiByZWZlcmVuY2UgY291bnRpbmcgb3IgYmxvY2tzLgotICAgIGRldmljZS0+Y3JlYXRl
UmVuZGVyUGlwZWxpbmVBc3luY0NhbGxiYWNrKHN0YXR1cywgcGlwZWxpbmUsIG1lc3NhZ2UpOwot
fQotCiB2b2lkIERldmljZUltcGw6OmNyZWF0ZVJlbmRlclBpcGVsaW5lQXN5bmMoY29uc3QgUmVu
ZGVyUGlwZWxpbmVEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFJlZjxSZW5kZXJQaXBlbGluZT4mJik+JiYgY2FsbGJhY2spCiB7Ci0gICAgUmVmIHByb3RlY3Rl
ZFRoaXMoKnRoaXMpOwotCi0gICAgbV9jcmVhdGVSZW5kZXJQaXBlbGluZUFzeW5jQ2FsbGJhY2tz
LmFwcGVuZChXVEZNb3ZlKGNhbGxiYWNrKSk7Ci0KLSAgICBjb252ZXJ0VG9CYWNraW5nKGRlc2Ny
aXB0b3IsIG1fY29udmVydFRvQmFja2luZ0NvbnRleHQsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
V1RGTW92ZShwcm90ZWN0ZWRUaGlzKV0gKGNvbnN0IFdHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0
b3ImIGJhY2tpbmdEZXNjcmlwdG9yKSBtdXRhYmxlIHsKLSAgICB3Z3B1RGV2aWNlQ3JlYXRlUmVu
ZGVyUGlwZWxpbmVBc3luYyhtX2JhY2tpbmcsICZiYWNraW5nRGVzY3JpcHRvciwgJldlYkdQVTo6
Y3JlYXRlUmVuZGVyUGlwZWxpbmVBc3luY0NhbGxiYWNrLCAmcHJvdGVjdGVkVGhpcy5sZWFrUmVm
KCkpOyAvLyBsZWFrUmVmIGlzIGJhbGFuY2VkIGJ5IGFkb3B0UmVmIGluIHJlcXVlc3REZXZpY2VD
YWxsYmFjaygpIGFib3ZlLiBXZSBoYXZlIHRvIGRvIHRoaXMgYmVjYXVzZSB3ZSdyZSB1c2luZyBh
IEMgQVBJIHdpdGggbm8gY29uY2VwdCBvZiByZWZlcmVuY2UgY291bnRpbmcgb3IgYmxvY2tzLgor
ICAgIGNvbnZlcnRUb0JhY2tpbmcoZGVzY3JpcHRvciwgbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4
dCwgW3RoaXMsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldIChjb25zdCBXR1BVUmVuZGVy
UGlwZWxpbmVEZXNjcmlwdG9yJiBiYWNraW5nRGVzY3JpcHRvcikgbXV0YWJsZSB7CisgICAgICAg
IHdncHVEZXZpY2VDcmVhdGVSZW5kZXJQaXBlbGluZUFzeW5jV2l0aEJsb2NrKG1fYmFja2luZywg
JmJhY2tpbmdEZXNjcmlwdG9yLCBtYWtlQmxvY2tQdHIoW2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0
ID0gbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dC5jb3B5UmVmKCksIGNhbGxiYWNrID0gV1RGTW92
ZShjYWxsYmFjayldKFdHUFVDcmVhdGVQaXBlbGluZUFzeW5jU3RhdHVzLCBXR1BVUmVuZGVyUGlw
ZWxpbmUgcGlwZWxpbmUsIGNvbnN0IGNoYXIqKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGNhbGxi
YWNrKFJlbmRlclBpcGVsaW5lSW1wbDo6Y3JlYXRlKHBpcGVsaW5lLCBjb252ZXJ0VG9CYWNraW5n
Q29udGV4dCkpOworICAgICAgICB9KS5nZXQoKSk7CiAgICAgfSk7CiB9CiAKLXZvaWQgRGV2aWNl
SW1wbDo6Y3JlYXRlUmVuZGVyUGlwZWxpbmVBc3luY0NhbGxiYWNrKFdHUFVDcmVhdGVQaXBlbGlu
ZUFzeW5jU3RhdHVzLCBXR1BVUmVuZGVyUGlwZWxpbmUgcGlwZWxpbmUsIGNvbnN0IGNoYXIqIG1l
c3NhZ2UpCi17Ci0gICAgVU5VU0VEX1BBUkFNKG1lc3NhZ2UpOwotICAgIGF1dG8gY2FsbGJhY2sg
PSBtX2NyZWF0ZVJlbmRlclBpcGVsaW5lQXN5bmNDYWxsYmFja3MudGFrZUZpcnN0KCk7Ci0gICAg
Y2FsbGJhY2soUmVuZGVyUGlwZWxpbmVJbXBsOjpjcmVhdGUocGlwZWxpbmUsIG1fY29udmVydFRv
QmFja2luZ0NvbnRleHQpKTsKLX0KLQogUmVmPENvbW1hbmRFbmNvZGVyPiBEZXZpY2VJbXBsOjpj
cmVhdGVDb21tYW5kRW5jb2Rlcihjb25zdCBzdGQ6Om9wdGlvbmFsPENvbW1hbmRFbmNvZGVyRGVz
Y3JpcHRvcj4mIGRlc2NyaXB0b3IpCiB7CiAgICAgQ1N0cmluZyBsYWJlbCA9IGRlc2NyaXB0b3Ig
PyBkZXNjcmlwdG9yLT5sYWJlbC51dGY4KCkgOiBDU3RyaW5nKCIiKTsKQEAgLTYxMiw0NCArNTgz
LDMwIEBAIHZvaWQgRGV2aWNlSW1wbDo6cHVzaEVycm9yU2NvcGUoRXJyb3JGaWx0ZXIgZXJyb3JG
aWx0ZXIpCiAgICAgd2dwdURldmljZVB1c2hFcnJvclNjb3BlKG1fYmFja2luZywgbV9jb252ZXJ0
VG9CYWNraW5nQ29udGV4dC0+Y29udmVydFRvQmFja2luZyhlcnJvckZpbHRlcikpOwogfQogCi12
b2lkIHBvcEVycm9yU2NvcGVDYWxsYmFjayhXR1BVRXJyb3JUeXBlIHR5cGUsIGNvbnN0IGNoYXIq
IG1lc3NhZ2UsIHZvaWQqIHVzZXJkYXRhKQotewotICAgIGF1dG8gZGV2aWNlID0gYWRvcHRSZWYo
KnN0YXRpY19jYXN0PERldmljZUltcGwqPih1c2VyZGF0YSkpOyAvLyBhZG9wdFJlZiBpcyBiYWxh
bmNlZCBieSBsZWFrUmVmIGluIHBvcEVycm9yU2NvcGUoKSBiZWxvdy4gV2UgaGF2ZSB0byBkbyB0
aGlzIGJlY2F1c2Ugd2UncmUgdXNpbmcgYSBDIEFQSSB3aXRoIG5vIGNvbmNlcHQgb2YgcmVmZXJl
bmNlIGNvdW50aW5nIG9yIGJsb2Nrcy4KLSAgICBkZXZpY2UtPnBvcEVycm9yU2NvcGVDYWxsYmFj
ayh0eXBlLCBtZXNzYWdlKTsKLX0KLQogdm9pZCBEZXZpY2VJbXBsOjpwb3BFcnJvclNjb3BlKENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxFcnJvcj4mJik+JiYgY2FsbGJhY2sp
CiB7Ci0gICAgUmVmIHByb3RlY3RlZFRoaXMoKnRoaXMpOwotCi0gICAgbV9wb3BFcnJvclNjb3Bl
Q2FsbGJhY2tzLmFwcGVuZChXVEZNb3ZlKGNhbGxiYWNrKSk7Ci0KLSAgICB3Z3B1RGV2aWNlUG9w
RXJyb3JTY29wZShtX2JhY2tpbmcsICZXZWJHUFU6OnBvcEVycm9yU2NvcGVDYWxsYmFjaywgJnBy
b3RlY3RlZFRoaXMubGVha1JlZigpKTsgLy8gbGVha1JlZiBpcyBiYWxhbmNlZCBieSBhZG9wdFJl
ZiBpbiByZXF1ZXN0RGV2aWNlQ2FsbGJhY2soKSBhYm92ZS4gV2UgaGF2ZSB0byBkbyB0aGlzIGJl
Y2F1c2Ugd2UncmUgdXNpbmcgYSBDIEFQSSB3aXRoIG5vIGNvbmNlcHQgb2YgcmVmZXJlbmNlIGNv
dW50aW5nIG9yIGJsb2Nrcy4KLX0KLQotdm9pZCBEZXZpY2VJbXBsOjpwb3BFcnJvclNjb3BlQ2Fs
bGJhY2soV0dQVUVycm9yVHlwZSBlcnJvclR5cGUsIGNvbnN0IGNoYXIqIG1lc3NhZ2UpCi17Ci0g
ICAgc3RkOjpvcHRpb25hbDxFcnJvcj4gZXJyb3I7Ci0gICAgc3dpdGNoIChlcnJvclR5cGUpIHsK
LSAgICBjYXNlIFdHUFVFcnJvclR5cGVfTm9FcnJvcjoKLSAgICBjYXNlIFdHUFVFcnJvclR5cGVf
Rm9yY2UzMjoKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBXR1BVRXJyb3JUeXBlX1ZhbGlkYXRp
b246Ci0gICAgICAgIGVycm9yID0geyB7IFZhbGlkYXRpb25FcnJvcjo6Y3JlYXRlKG1lc3NhZ2Up
IH0gfTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBXR1BVRXJyb3JUeXBlX091dE9mTWVtb3J5
OgotICAgICAgICBlcnJvciA9IHsgeyBPdXRPZk1lbW9yeUVycm9yOjpjcmVhdGUoKSB9IH07Ci0g
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgV0dQVUVycm9yVHlwZV9Vbmtub3duOgotICAgICAgICBl
cnJvciA9IHsgeyBPdXRPZk1lbW9yeUVycm9yOjpjcmVhdGUoKSB9IH07Ci0gICAgICAgIGJyZWFr
OwotICAgIGNhc2UgV0dQVUVycm9yVHlwZV9EZXZpY2VMb3N0OgotICAgICAgICBlcnJvciA9IHsg
eyBPdXRPZk1lbW9yeUVycm9yOjpjcmVhdGUoKSB9IH07Ci0gICAgICAgIGJyZWFrOwotICAgIH0K
KyAgICB3Z3B1RGV2aWNlUG9wRXJyb3JTY29wZVdpdGhCbG9jayhtX2JhY2tpbmcsIG1ha2VCbG9j
a1B0cihbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oV0dQVUVycm9yVHlwZSBlcnJvclR5
cGUsIGNvbnN0IGNoYXIqIG1lc3NhZ2UpIG11dGFibGUgeworICAgICAgICBzdGQ6Om9wdGlvbmFs
PEVycm9yPiBlcnJvcjsKKyAgICAgICAgc3dpdGNoIChlcnJvclR5cGUpIHsKKyAgICAgICAgY2Fz
ZSBXR1BVRXJyb3JUeXBlX05vRXJyb3I6CisgICAgICAgIGNhc2UgV0dQVUVycm9yVHlwZV9Gb3Jj
ZTMyOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgV0dQVUVycm9yVHlwZV9WYWxp
ZGF0aW9uOgorICAgICAgICAgICAgZXJyb3IgPSB7IHsgVmFsaWRhdGlvbkVycm9yOjpjcmVhdGUo
bWVzc2FnZSkgfSB9OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgV0dQVUVycm9y
VHlwZV9PdXRPZk1lbW9yeToKKyAgICAgICAgICAgIGVycm9yID0geyB7IE91dE9mTWVtb3J5RXJy
b3I6OmNyZWF0ZSgpIH0gfTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFdHUFVF
cnJvclR5cGVfVW5rbm93bjoKKyAgICAgICAgICAgIGVycm9yID0geyB7IE91dE9mTWVtb3J5RXJy
b3I6OmNyZWF0ZSgpIH0gfTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFdHUFVF
cnJvclR5cGVfRGV2aWNlTG9zdDoKKyAgICAgICAgICAgIGVycm9yID0geyB7IE91dE9mTWVtb3J5
RXJyb3I6OmNyZWF0ZSgpIH0gfTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAKLSAg
ICBhdXRvIGNhbGxiYWNrID0gbV9wb3BFcnJvclNjb3BlQ2FsbGJhY2tzLnRha2VGaXJzdCgpOwot
ICAgIGNhbGxiYWNrKFdURk1vdmUoZXJyb3IpKTsKKyAgICAgICAgY2FsbGJhY2soV1RGTW92ZShl
cnJvcikpOworICAgIH0pLmdldCgpKTsKIH0KIAogdm9pZCBEZXZpY2VJbXBsOjpzZXRMYWJlbElu
dGVybmFsKGNvbnN0IFN0cmluZyYgbGFiZWwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Q
QUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVURldmljZUltcGwuaCBiL1NvdXJjZS9X
ZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVRGV2aWNlSW1wbC5oCmlu
ZGV4IDIxNDQ5N2MyMzdmZjYwNjVlOGE0ZGU1ZDM1YzdiNTZiNGEwMDc0YmMuLjg5NjM1ZGFlNGYz
YTVmYzhkM2MxMDkwNzdjYTVlNzUwYzBmOWZhMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVRGV2aWNlSW1wbC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVRGV2aWNlSW1w
bC5oCkBAIC00Nyw5ICs0Nyw2IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xh
c3MgRG93bmNhc3RDb252ZXJ0VG9CYWNraW5nQ29udGV4dDsKLSAgICBmcmllbmQgdm9pZCBjcmVh
dGVDb21wdXRlUGlwZWxpbmVBc3luY0NhbGxiYWNrKFdHUFVDcmVhdGVQaXBlbGluZUFzeW5jU3Rh
dHVzLCBXR1BVQ29tcHV0ZVBpcGVsaW5lLCBjb25zdCBjaGFyKiBtZXNzYWdlLCB2b2lkKiB1c2Vy
ZGF0YSk7Ci0gICAgZnJpZW5kIHZvaWQgY3JlYXRlUmVuZGVyUGlwZWxpbmVBc3luY0NhbGxiYWNr
KFdHUFVDcmVhdGVQaXBlbGluZUFzeW5jU3RhdHVzLCBXR1BVUmVuZGVyUGlwZWxpbmUsIGNvbnN0
IGNoYXIqIG1lc3NhZ2UsIHZvaWQqIHVzZXJkYXRhKTsKLSAgICBmcmllbmQgdm9pZCBwb3BFcnJv
clNjb3BlQ2FsbGJhY2soV0dQVUVycm9yVHlwZSwgY29uc3QgY2hhciogbWVzc2FnZSwgdm9pZCog
dXNlcmRhdGEpOwogCiAgICAgRGV2aWNlSW1wbChXR1BVRGV2aWNlLCBSZWY8U3VwcG9ydGVkRmVh
dHVyZXM+JiYsIFJlZjxTdXBwb3J0ZWRMaW1pdHM+JiYsIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0
Jik7CiAKQEAgLTc0LDkgKzcxLDcgQEAgcHJpdmF0ZToKICAgICBSZWY8U2hhZGVyTW9kdWxlPiBj
cmVhdGVTaGFkZXJNb2R1bGUoY29uc3QgU2hhZGVyTW9kdWxlRGVzY3JpcHRvciYpIGZpbmFsOwog
ICAgIFJlZjxDb21wdXRlUGlwZWxpbmU+IGNyZWF0ZUNvbXB1dGVQaXBlbGluZShjb25zdCBDb21w
dXRlUGlwZWxpbmVEZXNjcmlwdG9yJikgZmluYWw7CiAgICAgUmVmPFJlbmRlclBpcGVsaW5lPiBj
cmVhdGVSZW5kZXJQaXBlbGluZShjb25zdCBSZW5kZXJQaXBlbGluZURlc2NyaXB0b3ImKSBmaW5h
bDsKLSAgICB2b2lkIGNyZWF0ZUNvbXB1dGVQaXBlbGluZUFzeW5jQ2FsbGJhY2soV0dQVUNyZWF0
ZVBpcGVsaW5lQXN5bmNTdGF0dXMsIFdHUFVDb21wdXRlUGlwZWxpbmUsIGNvbnN0IGNoYXIqIG1l
c3NhZ2UpOwogICAgIHZvaWQgY3JlYXRlQ29tcHV0ZVBpcGVsaW5lQXN5bmMoY29uc3QgQ29tcHV0
ZVBpcGVsaW5lRGVzY3JpcHRvciYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPENvbXB1dGVQ
aXBlbGluZT4mJik+JiYpIGZpbmFsOwotICAgIHZvaWQgY3JlYXRlUmVuZGVyUGlwZWxpbmVBc3lu
Y0NhbGxiYWNrKFdHUFVDcmVhdGVQaXBlbGluZUFzeW5jU3RhdHVzLCBXR1BVUmVuZGVyUGlwZWxp
bmUsIGNvbnN0IGNoYXIqIG1lc3NhZ2UpOwogICAgIHZvaWQgY3JlYXRlUmVuZGVyUGlwZWxpbmVB
c3luYyhjb25zdCBSZW5kZXJQaXBlbGluZURlc2NyaXB0b3ImLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFJlZjxSZW5kZXJQaXBlbGluZT4mJik+JiYpIGZpbmFsOwogCiAgICAgUmVmPENvbW1hbmRF
bmNvZGVyPiBjcmVhdGVDb21tYW5kRW5jb2Rlcihjb25zdCBzdGQ6Om9wdGlvbmFsPENvbW1hbmRF
bmNvZGVyRGVzY3JpcHRvcj4mKSBmaW5hbDsKQEAgLTg1LDE1ICs4MCwxMCBAQCBwcml2YXRlOgog
ICAgIFJlZjxRdWVyeVNldD4gY3JlYXRlUXVlcnlTZXQoY29uc3QgUXVlcnlTZXREZXNjcmlwdG9y
JikgZmluYWw7CiAKICAgICB2b2lkIHB1c2hFcnJvclNjb3BlKEVycm9yRmlsdGVyKSBmaW5hbDsK
LSAgICB2b2lkIHBvcEVycm9yU2NvcGVDYWxsYmFjayhXR1BVRXJyb3JUeXBlLCBjb25zdCBjaGFy
KiBtZXNzYWdlKTsKICAgICB2b2lkIHBvcEVycm9yU2NvcGUoQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChzdGQ6Om9wdGlvbmFsPEVycm9yPiYmKT4mJikgZmluYWw7CiAKICAgICB2b2lkIHNldExhYmVs
SW50ZXJuYWwoY29uc3QgU3RyaW5nJikgZmluYWw7CiAKLSAgICBEZXF1ZTxDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFJlZjxDb21wdXRlUGlwZWxpbmU+JiYpPj4gbV9jcmVhdGVDb21wdXRlUGlwZWxp
bmVBc3luY0NhbGxiYWNrczsKLSAgICBEZXF1ZTxDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxS
ZW5kZXJQaXBlbGluZT4mJik+PiBtX2NyZWF0ZVJlbmRlclBpcGVsaW5lQXN5bmNDYWxsYmFja3M7
Ci0gICAgRGVxdWU8Q29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPEVycm9yPiYm
KT4+IG1fcG9wRXJyb3JTY29wZUNhbGxiYWNrczsKLQogICAgIFdHUFVEZXZpY2UgbV9iYWNraW5n
IHsgbnVsbHB0ciB9OwogICAgIFJlZjxDb252ZXJ0VG9CYWNraW5nQ29udGV4dD4gbV9jb252ZXJ0
VG9CYWNraW5nQ29udGV4dDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFs
L2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvUEFM
L3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVJbXBsLmNwcAppbmRleCBjMDBkZWM2NjM3
MThjMzRmY2RiNmJiZjE4YTdkYzNhMDdiNzEyMDI0Li5iMGI4MmI3ODBmY2JlOWI5MjUzYmU3ZDk2
NGFiMTgxNWM3ZWYxOTRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBo
aWNzL1dlYkdQVS9JbXBsL1dlYkdQVUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVSW1wbC5jcHAKQEAgLTc2LDE2ICs3Niw4IEBA
IEdQVUltcGw6On5HUFVJbXBsKCkKICAgICB3Z3B1SW5zdGFuY2VSZWxlYXNlKG1fYmFja2luZyk7
CiB9CiAKLXZvaWQgcmVxdWVzdEFkYXB0ZXJDYWxsYmFjayhXR1BVUmVxdWVzdEFkYXB0ZXJTdGF0
dXMgc3RhdHVzLCBXR1BVQWRhcHRlciBhZGFwdGVyLCBjb25zdCBjaGFyKiBtZXNzYWdlLCB2b2lk
KiB1c2VyZGF0YSkKLXsKLSAgICBhdXRvIGdwdSA9IGFkb3B0UmVmKCpzdGF0aWNfY2FzdDxHUFVJ
bXBsKj4odXNlcmRhdGEpKTsgLy8gYWRvcHRSZWYgaXMgYmFsYW5jZWQgYnkgbGVha1JlZiBpbiBy
ZXF1ZXN0QWRhcHRlcigpIGJlbG93LiBXZSBoYXZlIHRvIGRvIHRoaXMgYmVjYXVzZSB3ZSdyZSB1
c2luZyBhIEMgQVBJIHdpdGggbm8gY29uY2VwdCBvZiByZWZlcmVuY2UgY291bnRpbmcgb3IgYmxv
Y2tzLgotICAgIGdwdS0+cmVxdWVzdEFkYXB0ZXJDYWxsYmFjayhzdGF0dXMsIGFkYXB0ZXIsIG1l
c3NhZ2UpOwotfQotCiB2b2lkIEdQVUltcGw6OnJlcXVlc3RBZGFwdGVyKGNvbnN0IFJlcXVlc3RB
ZGFwdGVyT3B0aW9ucyYgb3B0aW9ucywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8QWRh
cHRlcj4mJik+JiYgY2FsbGJhY2spCiB7Ci0gICAgUmVmIHByb3RlY3RlZFRoaXMoKnRoaXMpOwot
CiAgICAgV0dQVVJlcXVlc3RBZGFwdGVyT3B0aW9ucyBiYWNraW5nT3B0aW9ucyB7CiAgICAgICAg
IG51bGxwdHIsCiAgICAgICAgIG51bGxwdHIsCkBAIC05MywxNiArODUsOSBAQCB2b2lkIEdQVUlt
cGw6OnJlcXVlc3RBZGFwdGVyKGNvbnN0IFJlcXVlc3RBZGFwdGVyT3B0aW9ucyYgb3B0aW9ucywg
Q29tcGxldGlvbkhhbgogICAgICAgICBvcHRpb25zLmZvcmNlRmFsbGJhY2tBZGFwdGVyLAogICAg
IH07CiAKLSAgICBtX2NhbGxiYWNrcy5hcHBlbmQoV1RGTW92ZShjYWxsYmFjaykpOwotCi0gICAg
d2dwdUluc3RhbmNlUmVxdWVzdEFkYXB0ZXIobV9iYWNraW5nLCAmYmFja2luZ09wdGlvbnMsICZX
ZWJHUFU6OnJlcXVlc3RBZGFwdGVyQ2FsbGJhY2ssICZwcm90ZWN0ZWRUaGlzLmxlYWtSZWYoKSk7
IC8vIGxlYWtSZWYgaXMgYmFsYW5jZWQgYnkgYWRvcHRSZWYgaW4gcmVxdWVzdEFkYXB0ZXJDYWxs
YmFjaygpIGFib3ZlLiBXZSBoYXZlIHRvIGRvIHRoaXMgYmVjYXVzZSB3ZSdyZSB1c2luZyBhIEMg
QVBJIHdpdGggbm8gY29uY2VwdCBvZiByZWZlcmVuY2UgY291bnRpbmcgb3IgYmxvY2tzLgotfQot
Ci12b2lkIEdQVUltcGw6OnJlcXVlc3RBZGFwdGVyQ2FsbGJhY2soV0dQVVJlcXVlc3RBZGFwdGVy
U3RhdHVzLCBXR1BVQWRhcHRlciBhZGFwdGVyLCBjb25zdCBjaGFyKiBtZXNzYWdlKQotewotICAg
IFVOVVNFRF9QQVJBTShtZXNzYWdlKTsKLSAgICBhdXRvIGNhbGxiYWNrID0gbV9jYWxsYmFja3Mu
dGFrZUZpcnN0KCk7Ci0gICAgY2FsbGJhY2soQWRhcHRlckltcGw6OmNyZWF0ZShhZGFwdGVyLCBt
X2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0KSk7CisgICAgd2dwdUluc3RhbmNlUmVxdWVzdEFkYXB0
ZXJXaXRoQmxvY2sobV9iYWNraW5nLCAmYmFja2luZ09wdGlvbnMsIG1ha2VCbG9ja1B0cihbY29u
dmVydFRvQmFja2luZ0NvbnRleHQgPSBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0LmNvcHlSZWYo
KSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oV0dQVVJlcXVlc3RBZGFwdGVyU3RhdHVz
LCBXR1BVQWRhcHRlciBhZGFwdGVyLCBjb25zdCBjaGFyKikgbXV0YWJsZSB7CisgICAgICAgIGNh
bGxiYWNrKEFkYXB0ZXJJbXBsOjpjcmVhdGUoYWRhcHRlciwgY29udmVydFRvQmFja2luZ0NvbnRl
eHQpKTsKKyAgICB9KS5nZXQoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFBBTDo6V2ViR1BVCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dl
YkdQVUltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwv
V2ViR1BVSW1wbC5oCmluZGV4IGMyZmM3YjFmMDliOGYyZDc4MzQ0MzEwZGNlMTFkOWNjNDgyZmMy
YWUuLmNkMTEyMzExYWNiNjdhMGJmYTYzYjM3YjJiNjRlYjVhOTdhYTIxZDMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVSW1wbC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BV
SW1wbC5oCkBAIC01Myw3ICs1Myw2IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBmcmllbmQg
Y2xhc3MgRG93bmNhc3RDb252ZXJ0VG9CYWNraW5nQ29udGV4dDsKLSAgICBmcmllbmQgdm9pZCBy
ZXF1ZXN0QWRhcHRlckNhbGxiYWNrKFdHUFVSZXF1ZXN0QWRhcHRlclN0YXR1cywgV0dQVUFkYXB0
ZXIsIGNvbnN0IGNoYXIqIG1lc3NhZ2UsIHZvaWQqIHVzZXJkYXRhKTsKIAogICAgIEdQVUltcGwo
V0dQVUluc3RhbmNlLCBDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYpOwogCkBAIC02NCwxMSArNjMs
OCBAQCBwcml2YXRlOgogCiAgICAgV0dQVUluc3RhbmNlIGJhY2tpbmcoKSBjb25zdCB7IHJldHVy
biBtX2JhY2tpbmc7IH0KIAotICAgIHZvaWQgcmVxdWVzdEFkYXB0ZXJDYWxsYmFjayhXR1BVUmVx
dWVzdEFkYXB0ZXJTdGF0dXMsIFdHUFVBZGFwdGVyLCBjb25zdCBjaGFyKiBtZXNzYWdlKTsKICAg
ICB2b2lkIHJlcXVlc3RBZGFwdGVyKGNvbnN0IFJlcXVlc3RBZGFwdGVyT3B0aW9ucyYsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPEFkYXB0ZXI+JiYpPiYmKSBmaW5hbDsKIAotICAgIERl
cXVlPENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPEFkYXB0ZXI+JiYpPj4gbV9jYWxsYmFj
a3M7Ci0KICAgICBXR1BVSW5zdGFuY2UgbV9iYWNraW5nIHsgbnVsbHB0ciB9OwogICAgIFJlZjxD
b252ZXJ0VG9CYWNraW5nQ29udGV4dD4gbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dDsKIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dl
YkdQVVF1ZXVlSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQ
VS9JbXBsL1dlYkdQVVF1ZXVlSW1wbC5jcHAKaW5kZXggNjM0ODk0MTA4YTY1ZjUwZDFmZTUyNmYy
ZGJiNmFmZWU4NWE4MDBjMS4uYjVlODgwY2Y2ZGQyOWNkZGZkNjAwMTJhMmZjNGE1MWVhZDdiZjZm
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1w
bC9XZWJHUFVRdWV1ZUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhp
Y3MvV2ViR1BVL0ltcGwvV2ViR1BVUXVldWVJbXBsLmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2lu
Y2x1ZGUgIldlYkdQVUNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiV2ViR1BV
VGV4dHVyZUltcGwuaCIKICNpbmNsdWRlIDxXZWJHUFUvV2ViR1BVRXh0Lmg+CisjaW5jbHVkZSA8
d3RmL0Jsb2NrUHRyLmg+CiAKIG5hbWVzcGFjZSBQQUw6OldlYkdQVSB7CiAKQEAgLTU2LDI5ICs1
NywxNSBAQCB2b2lkIFF1ZXVlSW1wbDo6c3VibWl0KFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFw
cGVyPENvbW1hbmRCdWZmZXI+PiYmIGNvbW1hbmRCdQogICAgIHdncHVRdWV1ZVN1Ym1pdChtX2Jh
Y2tpbmcsIGJhY2tpbmdDb21tYW5kQnVmZmVycy5zaXplKCksIGJhY2tpbmdDb21tYW5kQnVmZmVy
cy5kYXRhKCkpOwogfQogCi12b2lkIG9uU3VibWl0dGVkV29ya0RvbmVDYWxsYmFjayhXR1BVUXVl
dWVXb3JrRG9uZVN0YXR1cyBzdGF0dXMsIHZvaWQqIHVzZXJkYXRhKQotewotICAgIGF1dG8gcXVl
dWUgPSBhZG9wdFJlZigqc3RhdGljX2Nhc3Q8UXVldWVJbXBsKj4odXNlcmRhdGEpKTsgLy8gYWRv
cHRSZWYgaXMgYmFsYW5jZWQgYnkgbGVha1JlZiBpbiBvblN1Ym1pdHRlZFdvcmtEb25lKCkgYmVs
b3cuIFdlIGhhdmUgdG8gZG8gdGhpcyBiZWNhdXNlIHdlJ3JlIHVzaW5nIGEgQyBBUEkgd2l0aCBu
byBjb25jZXB0IG9mIHJlZmVyZW5jZSBjb3VudGluZyBvciBibG9ja3MuCi0gICAgcXVldWUtPm9u
U3VibWl0dGVkV29ya0RvbmVDYWxsYmFjayhzdGF0dXMpOwotfQotCiB2b2lkIFF1ZXVlSW1wbDo6
b25TdWJtaXR0ZWRXb3JrRG9uZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY2FsbGJhY2sp
CiB7Ci0gICAgUmVmIHByb3RlY3RlZFRoaXMoKnRoaXMpOwotCi0gICAgbV9jYWxsYmFja3MuYXBw
ZW5kKFdURk1vdmUoY2FsbGJhY2spKTsKLQotICAgIHdncHVRdWV1ZU9uU3VibWl0dGVkV29ya0Rv
bmUobV9iYWNraW5nLCBtX3NpZ25hbFZhbHVlLCAmV2ViR1BVOjpvblN1Ym1pdHRlZFdvcmtEb25l
Q2FsbGJhY2ssICZwcm90ZWN0ZWRUaGlzLmxlYWtSZWYoKSk7IC8vIGxlYWtSZWYgaXMgYmFsYW5j
ZWQgYnkgYWRvcHRSZWYgaW4gb25TdWJtaXR0ZWRXb3JrRG9uZUNhbGxiYWNrKCkgYWJvdmUuIFdl
IGhhdmUgdG8gZG8gdGhpcyBiZWNhdXNlIHdlJ3JlIHVzaW5nIGEgQyBBUEkgd2l0aCBubyBjb25j
ZXB0IG9mIHJlZmVyZW5jZSBjb3VudGluZyBvciBibG9ja3MuCisgICAgd2dwdVF1ZXVlT25TdWJt
aXR0ZWRXb3JrRG9uZVdpdGhCbG9jayhtX2JhY2tpbmcsIG1fc2lnbmFsVmFsdWUsIG1ha2VCbG9j
a1B0cihbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oV0dQVVF1ZXVlV29ya0RvbmVTdGF0
dXMpIG11dGFibGUgeworICAgICAgICBjYWxsYmFjaygpOworICAgIH0pLmdldCgpKTsKIAogICAg
ICsrbV9zaWduYWxWYWx1ZTsKIH0KIAotdm9pZCBRdWV1ZUltcGw6Om9uU3VibWl0dGVkV29ya0Rv
bmVDYWxsYmFjayhXR1BVUXVldWVXb3JrRG9uZVN0YXR1cykKLXsKLSAgICBhdXRvIGNhbGxiYWNr
ID0gbV9jYWxsYmFja3MudGFrZUZpcnN0KCk7Ci0gICAgY2FsbGJhY2soKTsKLX0KLQogdm9pZCBR
dWV1ZUltcGw6OndyaXRlQnVmZmVyKAogICAgIGNvbnN0IEJ1ZmZlciYgYnVmZmVyLAogICAgIFNp
emU2NCBidWZmZXJPZmZzZXQsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dy
YXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVVF1ZXVlSW1wbC5oIGIvU291cmNlL1dlYkNvcmUvUEFM
L3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVRdWV1ZUltcGwuaAppbmRleCBlMjc4ZmUz
NDVlYTRiMGVkODUzNThkZDBkZTUyYTZjNDQ2NTVmNzJiLi4yYTU4YjY5YWFhOGM0N2ZiYWQ1N2I3
NDU0OWVlZDIxN2Q3NDM5YjBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dy
YXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVVF1ZXVlSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVUXVldWVJbXBsLmgKQEAgLTQ3LDcg
KzQ3LDYgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBEb3duY2FzdENv
bnZlcnRUb0JhY2tpbmdDb250ZXh0OwotICAgIGZyaWVuZCB2b2lkIG9uU3VibWl0dGVkV29ya0Rv
bmVDYWxsYmFjayhXR1BVUXVldWVXb3JrRG9uZVN0YXR1cywgdm9pZCogdXNlcmRhdGEpOwogCiAg
ICAgUXVldWVJbXBsKFdHUFVRdWV1ZSwgQ29udmVydFRvQmFja2luZ0NvbnRleHQmKTsKIApAQCAt
NjAsNyArNTksNiBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBzdWJtaXQoVmVjdG9yPHN0ZDo6cmVm
ZXJlbmNlX3dyYXBwZXI8Q29tbWFuZEJ1ZmZlcj4+JiYpIGZpbmFsOwogCi0gICAgdm9pZCBvblN1
Ym1pdHRlZFdvcmtEb25lQ2FsbGJhY2soV0dQVVF1ZXVlV29ya0RvbmVTdGF0dXMpOwogICAgIHZv
aWQgb25TdWJtaXR0ZWRXb3JrRG9uZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIGZpbmFs
OwogCiAgICAgdm9pZCB3cml0ZUJ1ZmZlcigKQEAgLTg3LDggKzg1LDYgQEAgcHJpdmF0ZToKIAog
ICAgIHVpbnQ2NF90IG1fc2lnbmFsVmFsdWUgeyAxIH07CiAKLSAgICBEZXF1ZTxDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+PiBtX2NhbGxiYWNrczsKLQogICAgIFdHUFVRdWV1ZSBtX2JhY2tpbmcg
eyBudWxscHRyIH07CiAgICAgUmVmPENvbnZlcnRUb0JhY2tpbmdDb250ZXh0PiBtX2NvbnZlcnRU
b0JhY2tpbmdDb250ZXh0OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwv
Z3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVU2hhZGVyTW9kdWxlSW1wbC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVVNoYWRlck1vZHVsZUlt
cGwuY3BwCmluZGV4IDEzOGY0NmJhMzEwMzhiOTdiZDE5ZmVjYTVjOWQ2YTZhNWEzMWE2NTguLjE2
MjRmZGZlMjg4MTI5NmU3MzZlNDg2YTFjYjE4MzMwYWQ5YmI0NjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVU2hhZGVyTW9kdWxl
SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1w
bC9XZWJHUFVTaGFkZXJNb2R1bGVJbXBsLmNwcApAQCAtNDYsNiArNDYsNyBAQCBTaGFkZXJNb2R1
bGVJbXBsOjp+U2hhZGVyTW9kdWxlSW1wbCgpCiAKIHZvaWQgU2hhZGVyTW9kdWxlSW1wbDo6Y29t
cGlsYXRpb25JbmZvKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPENvbXBpbGF0aW9uSW5mbz4m
Jik+JiYpCiB7CisgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzLgogfQogCiB2b2lkIFNoYWRl
ck1vZHVsZUltcGw6OnNldExhYmVsSW50ZXJuYWwoY29uc3QgU3RyaW5nJiBsYWJlbCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0FkYXB0ZXIubW0gYi9Tb3VyY2UvV2ViR1BVL1dl
YkdQVS9BZGFwdGVyLm1tCmluZGV4IGY5Yjk0ZjcyYTA1OTQ4NjE2MGU1NGFlOGJkZjQ4MWJiYTYx
NjQyNDEuLmYzMWQzNWI3ZGY2NDJmYmE5OWMzMTQwODNiMTM5ZmQxYTVjMWJiNDAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0FkYXB0ZXIubW0KKysrIGIvU291cmNlL1dlYkdQVS9X
ZWJHUFUvQWRhcHRlci5tbQpAQCAtMTUyLDcgKzE1Miw3IEBAIGJvb2wgd2dwdUFkYXB0ZXJIYXNG
ZWF0dXJlKFdHUFVBZGFwdGVyIGFkYXB0ZXIsIFdHUFVGZWF0dXJlTmFtZSBmZWF0dXJlKQogCiB2
b2lkIHdncHVBZGFwdGVyUmVxdWVzdERldmljZShXR1BVQWRhcHRlciBhZGFwdGVyLCBjb25zdCBX
R1BVRGV2aWNlRGVzY3JpcHRvciogZGVzY3JpcHRvciwgV0dQVVJlcXVlc3REZXZpY2VDYWxsYmFj
ayBjYWxsYmFjaywgdm9pZCogdXNlcmRhdGEpCiB7Ci0gICAgYWRhcHRlci0+YWRhcHRlci0+cmVx
dWVzdERldmljZSgqZGVzY3JpcHRvciwgW2NhbGxiYWNrLCB1c2VyZGF0YV0gKFdHUFVSZXF1ZXN0
RGV2aWNlU3RhdHVzIHN0YXR1cywgUmVmUHRyPFdlYkdQVTo6RGV2aWNlPiYmIGRldmljZSwgY29u
c3QgY2hhciogbWVzc2FnZSkgeworICAgIGFkYXB0ZXItPmFkYXB0ZXItPnJlcXVlc3REZXZpY2Uo
KmRlc2NyaXB0b3IsIFtjYWxsYmFjaywgdXNlcmRhdGFdKFdHUFVSZXF1ZXN0RGV2aWNlU3RhdHVz
IHN0YXR1cywgUmVmUHRyPFdlYkdQVTo6RGV2aWNlPiYmIGRldmljZSwgY29uc3QgY2hhciogbWVz
c2FnZSkgewogICAgICAgICBpZiAoZGV2aWNlKSB7CiAgICAgICAgICAgICBhdXRvJiBxdWV1ZSA9
IGRldmljZS0+Z2V0UXVldWUoKTsKICAgICAgICAgICAgIGNhbGxiYWNrKHN0YXR1cywgbmV3IFdH
UFVEZXZpY2VJbXBsIHsgZGV2aWNlLnJlbGVhc2VOb25OdWxsKCksIHsgcXVldWUgfSB9LCBtZXNz
YWdlLCB1c2VyZGF0YSk7CkBAIC0xNjMsNyArMTYzLDcgQEAgdm9pZCB3Z3B1QWRhcHRlclJlcXVl
c3REZXZpY2UoV0dQVUFkYXB0ZXIgYWRhcHRlciwgY29uc3QgV0dQVURldmljZURlc2NyaXB0b3Iq
IGQKIAogdm9pZCB3Z3B1QWRhcHRlclJlcXVlc3REZXZpY2VXaXRoQmxvY2soV0dQVUFkYXB0ZXIg
YWRhcHRlciwgV0dQVURldmljZURlc2NyaXB0b3IgY29uc3QgKiBkZXNjcmlwdG9yLCBXR1BVUmVx
dWVzdERldmljZUJsb2NrQ2FsbGJhY2sgY2FsbGJhY2spCiB7Ci0gICAgYWRhcHRlci0+YWRhcHRl
ci0+cmVxdWVzdERldmljZSgqZGVzY3JpcHRvciwgW2NhbGxiYWNrXSAoV0dQVVJlcXVlc3REZXZp
Y2VTdGF0dXMgc3RhdHVzLCBSZWZQdHI8V2ViR1BVOjpEZXZpY2U+JiYgZGV2aWNlLCBjb25zdCBj
aGFyKiBtZXNzYWdlKSB7CisgICAgYWRhcHRlci0+YWRhcHRlci0+cmVxdWVzdERldmljZSgqZGVz
Y3JpcHRvciwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKFdHUFVSZXF1ZXN0RGV2aWNl
U3RhdHVzIHN0YXR1cywgUmVmUHRyPFdlYkdQVTo6RGV2aWNlPiYmIGRldmljZSwgY29uc3QgY2hh
ciogbWVzc2FnZSkgewogICAgICAgICBpZiAoZGV2aWNlKSB7CiAgICAgICAgICAgICBhdXRvJiBx
dWV1ZSA9IGRldmljZS0+Z2V0UXVldWUoKTsKICAgICAgICAgICAgIGNhbGxiYWNrKHN0YXR1cywg
bmV3IFdHUFVEZXZpY2VJbXBsIHsgZGV2aWNlLnJlbGVhc2VOb25OdWxsKCksIHsgcXVldWUgfSB9
LCBtZXNzYWdlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0J1ZmZlci5tbSBi
L1NvdXJjZS9XZWJHUFUvV2ViR1BVL0J1ZmZlci5tbQppbmRleCBkYWI0MGJmZTBlYTEwNzkxYTVj
MzI3MDM3MDNjNGVhZTFhZDE0N2FkLi44YjEyNDIyZTlhMWY2NzE3NDFmMjdkNWYzMGMxYmFmY2Zl
YWNjMzYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9CdWZmZXIubW0KKysrIGIv
U291cmNlL1dlYkdQVS9XZWJHUFUvQnVmZmVyLm1tCkBAIC0xMDIsMTQgKzEwMiwxNCBAQCB2b2lk
KiB3Z3B1QnVmZmVyR2V0TWFwcGVkUmFuZ2UoV0dQVUJ1ZmZlciBidWZmZXIsIHNpemVfdCBvZmZz
ZXQsIHNpemVfdCBzaXplKQogCiB2b2lkIHdncHVCdWZmZXJNYXBBc3luYyhXR1BVQnVmZmVyIGJ1
ZmZlciwgV0dQVU1hcE1vZGVGbGFncyBtb2RlLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3Qgc2l6ZSwg
V0dQVUJ1ZmZlck1hcENhbGxiYWNrIGNhbGxiYWNrLCB2b2lkKiB1c2VyZGF0YSkKIHsKLSAgICBi
dWZmZXItPmJ1ZmZlci0+bWFwQXN5bmMobW9kZSwgb2Zmc2V0LCBzaXplLCBbY2FsbGJhY2ssIHVz
ZXJkYXRhXSAoV0dQVUJ1ZmZlck1hcEFzeW5jU3RhdHVzIHN0YXR1cykgeworICAgIGJ1ZmZlci0+
YnVmZmVyLT5tYXBBc3luYyhtb2RlLCBvZmZzZXQsIHNpemUsIFtjYWxsYmFjaywgdXNlcmRhdGFd
KFdHUFVCdWZmZXJNYXBBc3luY1N0YXR1cyBzdGF0dXMpIHsKICAgICAgICAgY2FsbGJhY2soc3Rh
dHVzLCB1c2VyZGF0YSk7CiAgICAgfSk7CiB9CiAKIHZvaWQgd2dwdUJ1ZmZlck1hcEFzeW5jV2l0
aEJsb2NrKFdHUFVCdWZmZXIgYnVmZmVyLCBXR1BVTWFwTW9kZUZsYWdzIG1vZGUsIHNpemVfdCBv
ZmZzZXQsIHNpemVfdCBzaXplLCBXR1BVQnVmZmVyTWFwQmxvY2tDYWxsYmFjayBjYWxsYmFjaykK
IHsKLSAgICBidWZmZXItPmJ1ZmZlci0+bWFwQXN5bmMobW9kZSwgb2Zmc2V0LCBzaXplLCBbY2Fs
bGJhY2tdIChXR1BVQnVmZmVyTWFwQXN5bmNTdGF0dXMgc3RhdHVzKSB7CisgICAgYnVmZmVyLT5i
dWZmZXItPm1hcEFzeW5jKG1vZGUsIG9mZnNldCwgc2l6ZSwgW2NhbGxiYWNrID0gV1RGTW92ZShj
YWxsYmFjayldKFdHUFVCdWZmZXJNYXBBc3luY1N0YXR1cyBzdGF0dXMpIHsKICAgICAgICAgY2Fs
bGJhY2soc3RhdHVzKTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2Vi
R1BVL0RldmljZS5tbSBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0RldmljZS5tbQppbmRleCBmMmJm
YjRhZTYyNDEwOTZiZjcwYTkyMGY4OWFhMjdiNWViNTY5ODBkLi5iMzQ4MmFhNzg4ZjU4NWI1NDdl
NjE0M2QyNjI4OTc1YzY0MzIyMDUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9E
ZXZpY2UubW0KKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvRGV2aWNlLm1tCkBAIC0xNzAsMTQg
KzE3MCwxNCBAQCBXR1BVQ29tcHV0ZVBpcGVsaW5lIHdncHVEZXZpY2VDcmVhdGVDb21wdXRlUGlw
ZWxpbmUoV0dQVURldmljZSBkZXZpY2UsIGNvbnN0IFdHUAogCiB2b2lkIHdncHVEZXZpY2VDcmVh
dGVDb21wdXRlUGlwZWxpbmVBc3luYyhXR1BVRGV2aWNlIGRldmljZSwgY29uc3QgV0dQVUNvbXB1
dGVQaXBlbGluZURlc2NyaXB0b3IqIGRlc2NyaXB0b3IsIFdHUFVDcmVhdGVDb21wdXRlUGlwZWxp
bmVBc3luY0NhbGxiYWNrIGNhbGxiYWNrLCB2b2lkKiB1c2VyZGF0YSkKIHsKLSAgICBkZXZpY2Ut
PmRldmljZS0+Y3JlYXRlQ29tcHV0ZVBpcGVsaW5lQXN5bmMoKmRlc2NyaXB0b3IsIFtjYWxsYmFj
aywgdXNlcmRhdGFdIChXR1BVQ3JlYXRlUGlwZWxpbmVBc3luY1N0YXR1cyBzdGF0dXMsIFJlZlB0
cjxXZWJHUFU6OkNvbXB1dGVQaXBlbGluZT4mJiBwaXBlbGluZSwgY29uc3QgY2hhciogbWVzc2Fn
ZSkgeworICAgIGRldmljZS0+ZGV2aWNlLT5jcmVhdGVDb21wdXRlUGlwZWxpbmVBc3luYygqZGVz
Y3JpcHRvciwgW2NhbGxiYWNrLCB1c2VyZGF0YV0oV0dQVUNyZWF0ZVBpcGVsaW5lQXN5bmNTdGF0
dXMgc3RhdHVzLCBSZWZQdHI8V2ViR1BVOjpDb21wdXRlUGlwZWxpbmU+JiYgcGlwZWxpbmUsIGNv
bnN0IGNoYXIqIG1lc3NhZ2UpIHsKICAgICAgICAgY2FsbGJhY2soc3RhdHVzLCBwaXBlbGluZSA/
IG5ldyBXR1BVQ29tcHV0ZVBpcGVsaW5lSW1wbCB7IHBpcGVsaW5lLnJlbGVhc2VOb25OdWxsKCkg
fSA6IG51bGxwdHIsIG1lc3NhZ2UsIHVzZXJkYXRhKTsKICAgICB9KTsKIH0KIAogdm9pZCB3Z3B1
RGV2aWNlQ3JlYXRlQ29tcHV0ZVBpcGVsaW5lQXN5bmNXaXRoQmxvY2soV0dQVURldmljZSBkZXZp
Y2UsIFdHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yIGNvbnN0ICogZGVzY3JpcHRvciwgV0dQ
VUNyZWF0ZUNvbXB1dGVQaXBlbGluZUFzeW5jQmxvY2tDYWxsYmFjayBjYWxsYmFjaykKIHsKLSAg
ICBkZXZpY2UtPmRldmljZS0+Y3JlYXRlQ29tcHV0ZVBpcGVsaW5lQXN5bmMoKmRlc2NyaXB0b3Is
IFtjYWxsYmFja10gKFdHUFVDcmVhdGVQaXBlbGluZUFzeW5jU3RhdHVzIHN0YXR1cywgUmVmUHRy
PFdlYkdQVTo6Q29tcHV0ZVBpcGVsaW5lPiYmIHBpcGVsaW5lLCBjb25zdCBjaGFyKiBtZXNzYWdl
KSB7CisgICAgZGV2aWNlLT5kZXZpY2UtPmNyZWF0ZUNvbXB1dGVQaXBlbGluZUFzeW5jKCpkZXNj
cmlwdG9yLCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oV0dQVUNyZWF0ZVBpcGVsaW5l
QXN5bmNTdGF0dXMgc3RhdHVzLCBSZWZQdHI8V2ViR1BVOjpDb21wdXRlUGlwZWxpbmU+JiYgcGlw
ZWxpbmUsIGNvbnN0IGNoYXIqIG1lc3NhZ2UpIHsKICAgICAgICAgY2FsbGJhY2soc3RhdHVzLCBw
aXBlbGluZSA/IG5ldyBXR1BVQ29tcHV0ZVBpcGVsaW5lSW1wbCB7IHBpcGVsaW5lLnJlbGVhc2VO
b25OdWxsKCkgfSA6IG51bGxwdHIsIG1lc3NhZ2UpOwogICAgIH0pOwogfQpAQCAtMjA4LDE0ICsy
MDgsMTQgQEAgV0dQVVJlbmRlclBpcGVsaW5lIHdncHVEZXZpY2VDcmVhdGVSZW5kZXJQaXBlbGlu
ZShXR1BVRGV2aWNlIGRldmljZSwgY29uc3QgV0dQVVIKIAogdm9pZCB3Z3B1RGV2aWNlQ3JlYXRl
UmVuZGVyUGlwZWxpbmVBc3luYyhXR1BVRGV2aWNlIGRldmljZSwgY29uc3QgV0dQVVJlbmRlclBp
cGVsaW5lRGVzY3JpcHRvciogZGVzY3JpcHRvciwgV0dQVUNyZWF0ZVJlbmRlclBpcGVsaW5lQXN5
bmNDYWxsYmFjayBjYWxsYmFjaywgdm9pZCogdXNlcmRhdGEpCiB7Ci0gICAgZGV2aWNlLT5kZXZp
Y2UtPmNyZWF0ZVJlbmRlclBpcGVsaW5lQXN5bmMoKmRlc2NyaXB0b3IsIFtjYWxsYmFjaywgdXNl
cmRhdGFdIChXR1BVQ3JlYXRlUGlwZWxpbmVBc3luY1N0YXR1cyBzdGF0dXMsIFJlZlB0cjxXZWJH
UFU6OlJlbmRlclBpcGVsaW5lPiYmIHBpcGVsaW5lLCBjb25zdCBjaGFyKiBtZXNzYWdlKSB7Cisg
ICAgZGV2aWNlLT5kZXZpY2UtPmNyZWF0ZVJlbmRlclBpcGVsaW5lQXN5bmMoKmRlc2NyaXB0b3Is
IFtjYWxsYmFjaywgdXNlcmRhdGFdKFdHUFVDcmVhdGVQaXBlbGluZUFzeW5jU3RhdHVzIHN0YXR1
cywgUmVmUHRyPFdlYkdQVTo6UmVuZGVyUGlwZWxpbmU+JiYgcGlwZWxpbmUsIGNvbnN0IGNoYXIq
IG1lc3NhZ2UpIHsKICAgICAgICAgY2FsbGJhY2soc3RhdHVzLCBwaXBlbGluZSA/IG5ldyBXR1BV
UmVuZGVyUGlwZWxpbmVJbXBsIHsgcGlwZWxpbmUucmVsZWFzZU5vbk51bGwoKSB9IDogbnVsbHB0
ciwgbWVzc2FnZSwgdXNlcmRhdGEpOwogICAgIH0pOwogfQogCiB2b2lkIHdncHVEZXZpY2VDcmVh
dGVSZW5kZXJQaXBlbGluZUFzeW5jV2l0aEJsb2NrKFdHUFVEZXZpY2UgZGV2aWNlLCBXR1BVUmVu
ZGVyUGlwZWxpbmVEZXNjcmlwdG9yIGNvbnN0ICogZGVzY3JpcHRvciwgV0dQVUNyZWF0ZVJlbmRl
clBpcGVsaW5lQXN5bmNCbG9ja0NhbGxiYWNrIGNhbGxiYWNrKQogewotICAgIGRldmljZS0+ZGV2
aWNlLT5jcmVhdGVSZW5kZXJQaXBlbGluZUFzeW5jKCpkZXNjcmlwdG9yLCBbY2FsbGJhY2tdIChX
R1BVQ3JlYXRlUGlwZWxpbmVBc3luY1N0YXR1cyBzdGF0dXMsIFJlZlB0cjxXZWJHUFU6OlJlbmRl
clBpcGVsaW5lPiYmIHBpcGVsaW5lLCBjb25zdCBjaGFyKiBtZXNzYWdlKSB7CisgICAgZGV2aWNl
LT5kZXZpY2UtPmNyZWF0ZVJlbmRlclBpcGVsaW5lQXN5bmMoKmRlc2NyaXB0b3IsIFtjYWxsYmFj
ayA9IFdURk1vdmUoY2FsbGJhY2spXShXR1BVQ3JlYXRlUGlwZWxpbmVBc3luY1N0YXR1cyBzdGF0
dXMsIFJlZlB0cjxXZWJHUFU6OlJlbmRlclBpcGVsaW5lPiYmIHBpcGVsaW5lLCBjb25zdCBjaGFy
KiBtZXNzYWdlKSB7CiAgICAgICAgIGNhbGxiYWNrKHN0YXR1cywgcGlwZWxpbmUgPyBuZXcgV0dQ
VVJlbmRlclBpcGVsaW5lSW1wbCB7IHBpcGVsaW5lLnJlbGVhc2VOb25OdWxsKCkgfSA6IG51bGxw
dHIsIG1lc3NhZ2UpOwogICAgIH0pOwogfQpAQCAtMjcxLDE0ICsyNzEsMTQgQEAgYm9vbCB3Z3B1
RGV2aWNlSGFzRmVhdHVyZShXR1BVRGV2aWNlIGRldmljZSwgV0dQVUZlYXR1cmVOYW1lIGZlYXR1
cmUpCiAKIGJvb2wgd2dwdURldmljZVBvcEVycm9yU2NvcGUoV0dQVURldmljZSBkZXZpY2UsIFdH
UFVFcnJvckNhbGxiYWNrIGNhbGxiYWNrLCB2b2lkKiB1c2VyZGF0YSkKIHsKLSAgICByZXR1cm4g
ZGV2aWNlLT5kZXZpY2UtPnBvcEVycm9yU2NvcGUoW2NhbGxiYWNrLCB1c2VyZGF0YV0gKFdHUFVF
cnJvclR5cGUgdHlwZSwgY29uc3QgY2hhciogbWVzc2FnZSkgeworICAgIHJldHVybiBkZXZpY2Ut
PmRldmljZS0+cG9wRXJyb3JTY29wZShbY2FsbGJhY2ssIHVzZXJkYXRhXShXR1BVRXJyb3JUeXBl
IHR5cGUsIGNvbnN0IGNoYXIqIG1lc3NhZ2UpIHsKICAgICAgICAgY2FsbGJhY2sodHlwZSwgbWVz
c2FnZSwgdXNlcmRhdGEpOwogICAgIH0pOwogfQogCiBib29sIHdncHVEZXZpY2VQb3BFcnJvclNj
b3BlV2l0aEJsb2NrKFdHUFVEZXZpY2UgZGV2aWNlLCBXR1BVRXJyb3JCbG9ja0NhbGxiYWNrIGNh
bGxiYWNrKQogewotICAgIHJldHVybiBkZXZpY2UtPmRldmljZS0+cG9wRXJyb3JTY29wZShbY2Fs
bGJhY2tdIChXR1BVRXJyb3JUeXBlIHR5cGUsIGNvbnN0IGNoYXIqIG1lc3NhZ2UpIHsKKyAgICBy
ZXR1cm4gZGV2aWNlLT5kZXZpY2UtPnBvcEVycm9yU2NvcGUoW2NhbGxiYWNrID0gV1RGTW92ZShj
YWxsYmFjayldKFdHUFVFcnJvclR5cGUgdHlwZSwgY29uc3QgY2hhciogbWVzc2FnZSkgewogICAg
ICAgICBjYWxsYmFjayh0eXBlLCBtZXNzYWdlKTsKICAgICB9KTsKIH0KQEAgLTI5MCw3ICsyOTAs
NyBAQCB2b2lkIHdncHVEZXZpY2VQdXNoRXJyb3JTY29wZShXR1BVRGV2aWNlIGRldmljZSwgV0dQ
VUVycm9yRmlsdGVyIGZpbHRlcikKIAogdm9pZCB3Z3B1RGV2aWNlU2V0RGV2aWNlTG9zdENhbGxi
YWNrKFdHUFVEZXZpY2UgZGV2aWNlLCBXR1BVRGV2aWNlTG9zdENhbGxiYWNrIGNhbGxiYWNrLCB2
b2lkKiB1c2VyZGF0YSkKIHsKLSAgICByZXR1cm4gZGV2aWNlLT5kZXZpY2UtPnNldERldmljZUxv
c3RDYWxsYmFjayhbY2FsbGJhY2ssIHVzZXJkYXRhXSAoV0dQVURldmljZUxvc3RSZWFzb24gcmVh
c29uLCBjb25zdCBjaGFyKiBtZXNzYWdlKSB7CisgICAgcmV0dXJuIGRldmljZS0+ZGV2aWNlLT5z
ZXREZXZpY2VMb3N0Q2FsbGJhY2soW2NhbGxiYWNrLCB1c2VyZGF0YV0oV0dQVURldmljZUxvc3RS
ZWFzb24gcmVhc29uLCBjb25zdCBjaGFyKiBtZXNzYWdlKSB7CiAgICAgICAgIGlmIChjYWxsYmFj
aykKICAgICAgICAgICAgIGNhbGxiYWNrKHJlYXNvbiwgbWVzc2FnZSwgdXNlcmRhdGEpOwogICAg
IH0pOwpAQCAtMjk4LDcgKzI5OCw3IEBAIHZvaWQgd2dwdURldmljZVNldERldmljZUxvc3RDYWxs
YmFjayhXR1BVRGV2aWNlIGRldmljZSwgV0dQVURldmljZUxvc3RDYWxsYmFjayBjCiAKIHZvaWQg
d2dwdURldmljZVNldERldmljZUxvc3RDYWxsYmFja1dpdGhCbG9jayhXR1BVRGV2aWNlIGRldmlj
ZSwgV0dQVURldmljZUxvc3RCbG9ja0NhbGxiYWNrIGNhbGxiYWNrKQogewotICAgIHJldHVybiBk
ZXZpY2UtPmRldmljZS0+c2V0RGV2aWNlTG9zdENhbGxiYWNrKFtjYWxsYmFja10gKFdHUFVEZXZp
Y2VMb3N0UmVhc29uIHJlYXNvbiwgY29uc3QgY2hhciogbWVzc2FnZSkgeworICAgIHJldHVybiBk
ZXZpY2UtPmRldmljZS0+c2V0RGV2aWNlTG9zdENhbGxiYWNrKFtjYWxsYmFjayA9IFdURk1vdmUo
Y2FsbGJhY2spXShXR1BVRGV2aWNlTG9zdFJlYXNvbiByZWFzb24sIGNvbnN0IGNoYXIqIG1lc3Nh
Z2UpIHsKICAgICAgICAgaWYgKGNhbGxiYWNrKQogICAgICAgICAgICAgY2FsbGJhY2socmVhc29u
LCBtZXNzYWdlKTsKICAgICB9KTsKQEAgLTMwNiw3ICszMDYsNyBAQCB2b2lkIHdncHVEZXZpY2VT
ZXREZXZpY2VMb3N0Q2FsbGJhY2tXaXRoQmxvY2soV0dQVURldmljZSBkZXZpY2UsIFdHUFVEZXZp
Y2VMb3N0QgogCiB2b2lkIHdncHVEZXZpY2VTZXRVbmNhcHR1cmVkRXJyb3JDYWxsYmFjayhXR1BV
RGV2aWNlIGRldmljZSwgV0dQVUVycm9yQ2FsbGJhY2sgY2FsbGJhY2ssIHZvaWQqIHVzZXJkYXRh
KQogewotICAgIHJldHVybiBkZXZpY2UtPmRldmljZS0+c2V0VW5jYXB0dXJlZEVycm9yQ2FsbGJh
Y2soW2NhbGxiYWNrLCB1c2VyZGF0YV0gKFdHUFVFcnJvclR5cGUgdHlwZSwgY29uc3QgY2hhciog
bWVzc2FnZSkgeworICAgIHJldHVybiBkZXZpY2UtPmRldmljZS0+c2V0VW5jYXB0dXJlZEVycm9y
Q2FsbGJhY2soW2NhbGxiYWNrLCB1c2VyZGF0YV0oV0dQVUVycm9yVHlwZSB0eXBlLCBjb25zdCBj
aGFyKiBtZXNzYWdlKSB7CiAgICAgICAgIGlmIChjYWxsYmFjaykKICAgICAgICAgICAgIGNhbGxi
YWNrKHR5cGUsIG1lc3NhZ2UsIHVzZXJkYXRhKTsKICAgICB9KTsKQEAgLTMxNCw3ICszMTQsNyBA
QCB2b2lkIHdncHVEZXZpY2VTZXRVbmNhcHR1cmVkRXJyb3JDYWxsYmFjayhXR1BVRGV2aWNlIGRl
dmljZSwgV0dQVUVycm9yQ2FsbGJhY2sgYwogCiB2b2lkIHdncHVEZXZpY2VTZXRVbmNhcHR1cmVk
RXJyb3JDYWxsYmFja1dpdGhCbG9jayhXR1BVRGV2aWNlIGRldmljZSwgV0dQVUVycm9yQmxvY2tD
YWxsYmFjayBjYWxsYmFjaykKIHsKLSAgICByZXR1cm4gZGV2aWNlLT5kZXZpY2UtPnNldFVuY2Fw
dHVyZWRFcnJvckNhbGxiYWNrKFtjYWxsYmFja10gKFdHUFVFcnJvclR5cGUgdHlwZSwgY29uc3Qg
Y2hhciogbWVzc2FnZSkgeworICAgIHJldHVybiBkZXZpY2UtPmRldmljZS0+c2V0VW5jYXB0dXJl
ZEVycm9yQ2FsbGJhY2soW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKFdHUFVFcnJvclR5
cGUgdHlwZSwgY29uc3QgY2hhciogbWVzc2FnZSkgewogICAgICAgICBpZiAoY2FsbGJhY2spCiAg
ICAgICAgICAgICBjYWxsYmFjayh0eXBlLCBtZXNzYWdlKTsKICAgICB9KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJHUFUvV2ViR1BVL0luc3RhbmNlLm1tIGIvU291cmNlL1dlYkdQVS9XZWJHUFUv
SW5zdGFuY2UubW0KaW5kZXggNjE0MzNkZjNmMWRiOWYxYTUzMDMxNjhhZDIxNWFiNWI2YTA3MWVk
Yi4uZWYyZTZlYmFmN2Y2NjBjNDBmYzJhYmUyZmZiMTU1YTExNGJiZDZlMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkdQVS9XZWJHUFUvSW5zdGFuY2UubW0KKysrIGIvU291cmNlL1dlYkdQVS9XZWJH
UFUvSW5zdGFuY2UubW0KQEAgLTQ0MywxNCArNDQzLDE0IEBAIHZvaWQgd2dwdUluc3RhbmNlUHJv
Y2Vzc0V2ZW50cyhXR1BVSW5zdGFuY2UgaW5zdGFuY2UpCiAKIHZvaWQgd2dwdUluc3RhbmNlUmVx
dWVzdEFkYXB0ZXIoV0dQVUluc3RhbmNlIGluc3RhbmNlLCBjb25zdCBXR1BVUmVxdWVzdEFkYXB0
ZXJPcHRpb25zKiBvcHRpb25zLCBXR1BVUmVxdWVzdEFkYXB0ZXJDYWxsYmFjayBjYWxsYmFjaywg
dm9pZCogdXNlcmRhdGEpCiB7Ci0gICAgaW5zdGFuY2UtPmluc3RhbmNlLT5yZXF1ZXN0QWRhcHRl
cigqb3B0aW9ucywgW2NhbGxiYWNrLCB1c2VyZGF0YV0gKFdHUFVSZXF1ZXN0QWRhcHRlclN0YXR1
cyBzdGF0dXMsIFJlZlB0cjxXZWJHUFU6OkFkYXB0ZXI+JiYgYWRhcHRlciwgY29uc3QgY2hhciog
bWVzc2FnZSkgeworICAgIGluc3RhbmNlLT5pbnN0YW5jZS0+cmVxdWVzdEFkYXB0ZXIoKm9wdGlv
bnMsIFtjYWxsYmFjaywgdXNlcmRhdGFdKFdHUFVSZXF1ZXN0QWRhcHRlclN0YXR1cyBzdGF0dXMs
IFJlZlB0cjxXZWJHUFU6OkFkYXB0ZXI+JiYgYWRhcHRlciwgY29uc3QgY2hhciogbWVzc2FnZSkg
ewogICAgICAgICBjYWxsYmFjayhzdGF0dXMsIGFkYXB0ZXIgPyBuZXcgV0dQVUFkYXB0ZXJJbXBs
IHsgYWRhcHRlci5yZWxlYXNlTm9uTnVsbCgpIH0gOiBudWxscHRyLCBtZXNzYWdlLCB1c2VyZGF0
YSk7CiAgICAgfSk7CiB9CiAKIHZvaWQgd2dwdUluc3RhbmNlUmVxdWVzdEFkYXB0ZXJXaXRoQmxv
Y2soV0dQVUluc3RhbmNlIGluc3RhbmNlLCBXR1BVUmVxdWVzdEFkYXB0ZXJPcHRpb25zIGNvbnN0
ICogb3B0aW9ucywgV0dQVVJlcXVlc3RBZGFwdGVyQmxvY2tDYWxsYmFjayBjYWxsYmFjaykKIHsK
LSAgICBpbnN0YW5jZS0+aW5zdGFuY2UtPnJlcXVlc3RBZGFwdGVyKCpvcHRpb25zLCBbY2FsbGJh
Y2tdIChXR1BVUmVxdWVzdEFkYXB0ZXJTdGF0dXMgc3RhdHVzLCBSZWZQdHI8V2ViR1BVOjpBZGFw
dGVyPiYmIGFkYXB0ZXIsIGNvbnN0IGNoYXIqIG1lc3NhZ2UpIHsKKyAgICBpbnN0YW5jZS0+aW5z
dGFuY2UtPnJlcXVlc3RBZGFwdGVyKCpvcHRpb25zLCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxi
YWNrKV0oV0dQVVJlcXVlc3RBZGFwdGVyU3RhdHVzIHN0YXR1cywgUmVmUHRyPFdlYkdQVTo6QWRh
cHRlcj4mJiBhZGFwdGVyLCBjb25zdCBjaGFyKiBtZXNzYWdlKSB7CiAgICAgICAgIGNhbGxiYWNr
KHN0YXR1cywgYWRhcHRlciA/IG5ldyBXR1BVQWRhcHRlckltcGwgeyBhZGFwdGVyLnJlbGVhc2VO
b25OdWxsKCkgfSA6IG51bGxwdHIsIG1lc3NhZ2UpOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkdQVS9XZWJHUFUvUXVldWUubW0gYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9RdWV1
ZS5tbQppbmRleCBmN2M2ZjZlYjg3Y2YyOWRiMDA4NzQ4M2Q0Y2M0NjY0YzIyMzZkZjczLi5jM2Vl
MjI3OGI4ZTE5OGE4YzJiOTYyNDQ3MTc4ZDc5ZTc2N2Y3MmRjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViR1BVL1dlYkdQVS9RdWV1ZS5tbQorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9RdWV1ZS5t
bQpAQCAtODAsMTQgKzgwLDE0IEBAIHZvaWQgd2dwdVF1ZXVlUmVsZWFzZShXR1BVUXVldWUgcXVl
dWUpCiAKIHZvaWQgd2dwdVF1ZXVlT25TdWJtaXR0ZWRXb3JrRG9uZShXR1BVUXVldWUgcXVldWUs
IHVpbnQ2NF90IHNpZ25hbFZhbHVlLCBXR1BVUXVldWVXb3JrRG9uZUNhbGxiYWNrIGNhbGxiYWNr
LCB2b2lkKiB1c2VyZGF0YSkKIHsKLSAgICBxdWV1ZS0+cXVldWUtPm9uU3VibWl0dGVkV29ya0Rv
bmUoc2lnbmFsVmFsdWUsIFtjYWxsYmFjaywgdXNlcmRhdGFdIChXR1BVUXVldWVXb3JrRG9uZVN0
YXR1cyBzdGF0dXMpIHsKKyAgICBxdWV1ZS0+cXVldWUtPm9uU3VibWl0dGVkV29ya0RvbmUoc2ln
bmFsVmFsdWUsIFtjYWxsYmFjaywgdXNlcmRhdGFdKFdHUFVRdWV1ZVdvcmtEb25lU3RhdHVzIHN0
YXR1cykgewogICAgICAgICBjYWxsYmFjayhzdGF0dXMsIHVzZXJkYXRhKTsKICAgICB9KTsKIH0K
IAogdm9pZCB3Z3B1UXVldWVPblN1Ym1pdHRlZFdvcmtEb25lV2l0aEJsb2NrKFdHUFVRdWV1ZSBx
dWV1ZSwgdWludDY0X3Qgc2lnbmFsVmFsdWUsIFdHUFVRdWV1ZVdvcmtEb25lQmxvY2tDYWxsYmFj
ayBjYWxsYmFjaykKIHsKLSAgICBxdWV1ZS0+cXVldWUtPm9uU3VibWl0dGVkV29ya0RvbmUoc2ln
bmFsVmFsdWUsIFtjYWxsYmFja10gKFdHUFVRdWV1ZVdvcmtEb25lU3RhdHVzIHN0YXR1cykgewor
ICAgIHF1ZXVlLT5xdWV1ZS0+b25TdWJtaXR0ZWRXb3JrRG9uZShzaWduYWxWYWx1ZSwgW2NhbGxi
YWNrID0gV1RGTW92ZShjYWxsYmFjayldKFdHUFVRdWV1ZVdvcmtEb25lU3RhdHVzIHN0YXR1cykg
ewogICAgICAgICBjYWxsYmFjayhzdGF0dXMpOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkdQVS9XZWJHUFUvU2hhZGVyTW9kdWxlLm1tIGIvU291cmNlL1dlYkdQVS9XZWJHUFUv
U2hhZGVyTW9kdWxlLm1tCmluZGV4IDQxYWJhODgwODNmZGU1MTZiOWQxNzIzNDI2ZjUwN2I2NDg0
ZTRiNmYuLjNkMDY2MDU0ODUyYTE5NjcwZGZlYjExODhkM2JmMzExNGI3Y2IzY2YgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1NoYWRlck1vZHVsZS5tbQorKysgYi9Tb3VyY2UvV2Vi
R1BVL1dlYkdQVS9TaGFkZXJNb2R1bGUubW0KQEAgLTI1MiwxNCArMjUyLDE0IEBAIHZvaWQgd2dw
dVNoYWRlck1vZHVsZVJlbGVhc2UoV0dQVVNoYWRlck1vZHVsZSBzaGFkZXJNb2R1bGUpCiAKIHZv
aWQgd2dwdVNoYWRlck1vZHVsZUdldENvbXBpbGF0aW9uSW5mbyhXR1BVU2hhZGVyTW9kdWxlIHNo
YWRlck1vZHVsZSwgV0dQVUNvbXBpbGF0aW9uSW5mb0NhbGxiYWNrIGNhbGxiYWNrLCB2b2lkICog
dXNlcmRhdGEpCiB7Ci0gICAgc2hhZGVyTW9kdWxlLT5zaGFkZXJNb2R1bGUtPmdldENvbXBpbGF0
aW9uSW5mbyhbY2FsbGJhY2ssIHVzZXJkYXRhXSAoV0dQVUNvbXBpbGF0aW9uSW5mb1JlcXVlc3RT
dGF0dXMgc3RhdHVzLCBjb25zdCBXR1BVQ29tcGlsYXRpb25JbmZvJiBjb21waWxhdGlvbkluZm8p
IHsKKyAgICBzaGFkZXJNb2R1bGUtPnNoYWRlck1vZHVsZS0+Z2V0Q29tcGlsYXRpb25JbmZvKFtj
YWxsYmFjaywgdXNlcmRhdGFdKFdHUFVDb21waWxhdGlvbkluZm9SZXF1ZXN0U3RhdHVzIHN0YXR1
cywgY29uc3QgV0dQVUNvbXBpbGF0aW9uSW5mbyYgY29tcGlsYXRpb25JbmZvKSB7CiAgICAgICAg
IGNhbGxiYWNrKHN0YXR1cywgJmNvbXBpbGF0aW9uSW5mbywgdXNlcmRhdGEpOwogICAgIH0pOwog
fQogCiB2b2lkIHdncHVTaGFkZXJNb2R1bGVHZXRDb21waWxhdGlvbkluZm9XaXRoQmxvY2soV0dQ
VVNoYWRlck1vZHVsZSBzaGFkZXJNb2R1bGUsIFdHUFVDb21waWxhdGlvbkluZm9CbG9ja0NhbGxi
YWNrIGNhbGxiYWNrKQogewotICAgIHNoYWRlck1vZHVsZS0+c2hhZGVyTW9kdWxlLT5nZXRDb21w
aWxhdGlvbkluZm8oW2NhbGxiYWNrXSAoV0dQVUNvbXBpbGF0aW9uSW5mb1JlcXVlc3RTdGF0dXMg
c3RhdHVzLCBjb25zdCBXR1BVQ29tcGlsYXRpb25JbmZvJiBjb21waWxhdGlvbkluZm8pIHsKKyAg
ICBzaGFkZXJNb2R1bGUtPnNoYWRlck1vZHVsZS0+Z2V0Q29tcGlsYXRpb25JbmZvKFtjYWxsYmFj
ayA9IFdURk1vdmUoY2FsbGJhY2spXShXR1BVQ29tcGlsYXRpb25JbmZvUmVxdWVzdFN0YXR1cyBz
dGF0dXMsIGNvbnN0IFdHUFVDb21waWxhdGlvbkluZm8mIGNvbXBpbGF0aW9uSW5mbykgewogICAg
ICAgICBjYWxsYmFjayhzdGF0dXMsICZjb21waWxhdGlvbkluZm8pOwogICAgIH0pOwogfQo=
</data>
<flag name="review"
          id="482527"
          type_id="1"
          status="+"
          setter="kkinnunen"
    />
    <flag name="commit-queue"
          id="482587"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>