<?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>151727</bug_id>
          
          <creation_ts>2015-12-01 16:10:28 -0800</creation_ts>
          <short_desc>[MediaStream] Implement MediaStreamTrack.getSettings()</short_desc>
          <delta_ts>2015-12-02 12:26:22 -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>Media</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Carlson">eric.carlson</reporter>
          <assigned_to name="Eric Carlson">eric.carlson</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1145439</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2015-12-01 16:10:28 -0800</bug_when>
    <thetext>Implement MediaStreamTrack.getSettings()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1145563</commentid>
    <comment_count>1</comment_count>
      <attachid>266442</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2015-12-02 07:28:28 -0800</bug_when>
    <thetext>Created attachment 266442
Patch for the bots.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1145592</commentid>
    <comment_count>2</comment_count>
      <attachid>266447</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2015-12-02 09:54:21 -0800</bug_when>
    <thetext>Created attachment 266447
Updated patch for the bots.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1145595</commentid>
    <comment_count>3</comment_count>
      <attachid>266449</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2015-12-02 10:01:05 -0800</bug_when>
    <thetext>Created attachment 266449
Updated patch for the bots.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1145600</commentid>
    <comment_count>4</comment_count>
      <attachid>266450</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2015-12-02 10:19:44 -0800</bug_when>
    <thetext>Created attachment 266450
Another updated patch for the bots.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1145665</commentid>
    <comment_count>5</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2015-12-02 12:26:22 -0800</bug_when>
    <thetext>Committed r192954: https://trac.webkit.org/r192954</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>266442</attachid>
            <date>2015-12-02 07:28:28 -0800</date>
            <delta_ts>2015-12-02 09:54:21 -0800</delta_ts>
            <desc>Patch for the bots.</desc>
            <filename>track_capabilities_patch_7.txt</filename>
            <type>text/plain</type>
            <size>131970</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5Mjk0MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzOSBAQAorMjAxNS0xMi0wMiAgRXJpYyBD
YXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBbTWVkaWFTdHJlYW1d
IEltcGxlbWVudCBNZWRpYVN0cmVhbVRyYWNrLmdldFNldHRpbmdzKCkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTcyNworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1lZGlhU3RyZWFtVHJhY2suZ2V0U3Rh
dGVzIGhhcyBiZWVuIHJlcGxhY2VkIGJ5IE1lZGlhU3RyZWFtVHJhY2suZ2V0U2V0dGluZ3MuIAor
CisgICAgICAgIFRlc3Q6IGZhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay1nZXRTZXR0
aW5ncy5odG1sCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDogTWVkaWFTb3VyY2VTdGF0ZXMu
KiAtPiBNZWRpYVNvdXJjZVNldHRpbmdzLiouCisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFr
ZTogTm8gbW9yZSBNZWRpYVNvdXJjZVN0YXRlcy5pZGwuCisgICAgICAgICogTW9kdWxlcy9tZWRp
YXN0cmVhbS9DYXBhYmlsaXR5UmFuZ2UuY3BwOiBNZWRpYVNvdXJjZVN0YXRlcy4qIC0+IE1lZGlh
U291cmNlU2V0dGluZ3MuKi4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU291
cmNlU2V0dGluZ3MuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL01lZGlhU291cmNlU3RhdGVzLmNwcC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291
cmNlU2V0dGluZ3M6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZVNldHRp
bmdzOjpNZWRpYVNvdXJjZVNldHRpbmdzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291cmNl
U2V0dGluZ3M6OmZhY2luZ01vZGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTb3VyY2VTdGF0
ZXM6OmNyZWF0ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZVN0YXRl
czo6TWVkaWFTb3VyY2VTdGF0ZXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFT
b3VyY2VTdGF0ZXM6OnNvdXJjZVR5cGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFTb3VyY2VTdGF0ZXM6OmZhY2luZ01vZGUpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMv
bWVkaWFzdHJlYW0vTWVkaWFTb3VyY2VTZXR0aW5ncy5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU291cmNlU3RhdGVzLmguCisKKyAgICAgICAg
TWVkaWFTb3VyY2VTdGF0ZXMuKiByZW5hbWVkIHRvIE1lZGlhU291cmNlU2V0dGluZ3MuKiBhbmQg
dXBkYXRlZCB0byBuZXcgQVBJLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFT
b3VyY2VTdGF0ZXMuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0v
TWVkaWFTb3VyY2VTdGF0ZXMuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3Ry
ZWFtL01lZGlhU291cmNlU3RhdGVzLmlkbDogUmVtb3ZlZC4KKworICAgICAgICAqIE1vZHVsZXMv
bWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFTdHJlYW1DYXBhYmlsaXRpZXM6OnNvdXJjZVR5cGUpOiBSZXR1cm4gYW4gZW1wdHkg
dmVjdG9yIGZvciBub3csIHdpbGwgYmUgZml4ZWQKKyAgICAgICAgICBieSB0aGUgY2hhbmdlcyBm
b3IgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTcyOC4KKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzOjpzb3VyY2VJZCk6IFJlYWx0aW1l
TWVkaWFTb3VyY2VTdGF0ZXMgLT4gTWVkaWFTb3VyY2VTZXR0aW5ncy4KKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzOjpmYWNpbmdNb2RlKTogRGl0dG8uCisKKyAgICAg
ICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFTdHJlYW1UcmFjazo6Z2V0U2V0dGluZ3MpOiBOZXcuCisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjpnZXRDYXBhYmlsaXRpZXMpOiBEb24ndCBtb2RpZnkg
c3RhdGVzLCBqdXN0IHBhc3MgdGhyb3VnaCB3aGF0ZXZlcgorICAgICAgICAgIHByaXZhdGUgdHJh
Y2sgcmV0dXJucy4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtVHJhY2s6OnRyYWNrU2V0
dGluZ3NDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtVHJhY2s6OnN0YXRl
cyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjp0cmFja1N0
YXRlc0NoYW5nZWQpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW1UcmFjay5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJl
YW1UcmFjay5pZGw6IE1lZGlhU291cmNlU3RhdGVzIC0+IE1lZGlhU291cmNlU2V0dGluZ3MuCisK
KyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9Tb3VyY2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1BdWRpb1NvdXJjZTo6c2V0dGluZ3MpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1BdWRpb1NvdXJjZTo6c3RhdGVzKTogRGVsZXRlZC4K
KyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9Tb3VyY2UuaDogTWVk
aWFTb3VyY2VTdGF0ZXMgLT4gTWVkaWFTb3VyY2VTZXR0aW5ncy4KKworICAgICAgICAqIFdlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogTWVkaWFTb3VyY2VTdGF0ZXMuKiAtPiBNZWRp
YVNvdXJjZVNldHRpbmdzLiouCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU01lZGlhU291cmNl
U3RhdGVzQ3VzdG9tLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU01lZGlh
U3RyZWFtVHJhY2tDdXN0b20uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkpTTWVkaWFT
dHJlYW1UcmFjazo6Z2V0U2V0dGluZ3MpOiBNZWRpYVNvdXJjZVNldHRpbmdzIGlzIGEgZ2VuZXJp
YyBkaWN0aW9uYXJ5IHNvIAorICAgICAgICAgIGl0IGhhcyB0byBiZSBnZW5lcmF0ZWQgbWFudWFs
bHkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVByaXZhdGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1Qcml2YXRlOjppbnRyaW5zaWNTaXpl
KTogc3RhdGVzIC0+IHNldHRpbmdzLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1Qcml2
YXRlOjp0cmFja1N0YXRlc0NoYW5nZWQpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL21l
ZGlhc3RyZWFtL01lZGlhU3RyZWFtUHJpdmF0ZS5oOgorCisgICAgICAgICogcGxhdGZvcm0vbWVk
aWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU6OnNldHRpbmdzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhU3RyZWFtVHJhY2tQcml2YXRlOjpzb3VyY2VTZXR0aW5nc0NoYW5nZWQpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU6OnN0YXRlcyk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6c291cmNlU3RhdGVzQ2hhbmdl
ZCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1U
cmFja1ByaXZhdGUuaDoKKworICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1l
TWVkaWFTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZTo6
c2V0dGluZ3NEaWRDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3Vy
Y2U6OnN0YXRlc0RpZENoYW5nZWQpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlh
c3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuaDoKKworICAgICAgICAqIHBsYXRmb3JtL21lZGlh
c3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM6OmZhY2luZ01vZGVzKTogU3RhdGVz
IC0+IFNldHRpbmdzLgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFi
aWxpdGllczo6YWRkRmFjaW5nTW9kZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRp
bWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllczo6c291cmNlVHlwZXMpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllczo6c2V0U291cmNlVHlw
ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJp
bGl0aWVzOjphZGRTb3VyY2VUeXBlKTogRGVsZXRlZC4KKworICAgICAgICAqIHBsYXRmb3JtL21l
ZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaDogU3RhdGVzIC0+IFNldHRpbmdz
LgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VTZXR0
aW5ncy5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L1JlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXMuY3BwLgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRp
bWVNZWRpYVNvdXJjZVNldHRpbmdzOjpmYWNpbmdNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
YWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXM6OmZhY2luZ01vZGUpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlczo6c291cmNlVHlwZSk6IERlbGV0ZWQu
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlU2V0
dGluZ3MuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
UmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlcy5oLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3Ry
ZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXMuY3BwOiBSZW1vdmVkLgorCisgICAgICAgICog
cGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlcy5oOiBSZW1vdmVk
LgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkF1ZGlvQ2FwdHVyZVNvdXJj
ZS5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkF1ZGlvQ2FwdHVyZVNv
dXJjZS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkFWQXVkaW9DYXB0dXJlU291cmNlOjp1cGRhdGVT
dGF0ZXMpOiBEZWxldGVkLgorCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FW
Q2FwdHVyZURldmljZU1hbmFnZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5tbToKKworICAgICAgICAqIHBsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9BVk1lZGlhQ2FwdHVyZVNvdXJjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9BVk1lZGlhQ2FwdHVyZVNvdXJjZS5tbToKKyAgICAgICAgKFdlYkNvcmU6
OkFWTWVkaWFDYXB0dXJlU291cmNlOjpzdGF0ZXMpOiBEZWxldGVkLgorCisgICAgICAgICogcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLmg6CisgICAgICAgICog
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6QVZWaWRlb0NhcHR1cmVTb3VyY2U6OnVwZGF0ZVN0YXRlcyk6IERlbGV0ZWQu
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1lVmlkZW9T
b3VyY2VNYWMubW06CisKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9vcGVud2VicnRj
L1JlYWx0aW1lTWVkaWFTb3VyY2VPd3IuaDoKKworICAgICAgICAqIHBsYXRmb3JtL21vY2svTW9j
a1JlYWx0aW1lQXVkaW9Tb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1l
QXVkaW9Tb3VyY2U6OmluaXRpYWxpemVTdXBwb3J0ZWRDb25zdHJhaW50cyk6CisgICAgICAgIChX
ZWJDb3JlOjpNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZTo6dXBkYXRlU3RhdGVzKTogRGVsZXRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZUF1ZGlvU291cmNlLmg6CisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZU1lZGlhU291cmNlOjpjYXBhYmlsaXRpZXMpOiBNaW5v
ciBjbGVhbnVwLgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2U6OnNl
dHRpbmdzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZU1lZGlhU291cmNlOjpzdXBw
b3J0ZWRDb25zdHJhaW50cyk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVNZWRpYVNv
dXJjZTo6c3RhdGVzKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tSZWFs
dGltZU1lZGlhU291cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVNZWRpYVNv
dXJjZTo6Y29uc3RyYWludHMpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lTWVkaWFT
b3VyY2U6OmN1cnJlbnRTdGF0ZXMpOiBEZWxldGVkLgorCisgICAgICAgICogcGxhdGZvcm0vbW9j
ay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVh
bHRpbWVWaWRlb1NvdXJjZTo6dXBkYXRlU2V0dGluZ3MpOgorICAgICAgICAoV2ViQ29yZTo6TW9j
a1JlYWx0aW1lVmlkZW9Tb3VyY2U6OmluaXRpYWxpemVDYXBhYmlsaXRpZXMpOgorICAgICAgICAo
V2ViQ29yZTo6TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OmluaXRpYWxpemVTdXBwb3J0ZWRDb25z
dHJhaW50cyk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6c2V0
RnJhbWVSYXRlKTogc3RhdGVzIC0+IHNldHRpbmdzLgorICAgICAgICAoV2ViQ29yZTo6TW9ja1Jl
YWx0aW1lVmlkZW9Tb3VyY2U6OnNldFNpemUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Ok1v
Y2tSZWFsdGltZVZpZGVvU291cmNlOjpkcmF3QW5pbWF0aW9uKTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6ZHJhd1RleHQpOiBEaXR0by4KKyAgICAg
ICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZVZpZGVvU291cmNlOjp1cGRhdGVTdGF0ZXMpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OnNldEZhY2lu
Z01vZGUpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlk
ZW9Tb3VyY2UuaDoKKwogMjAxNS0xMi0wMiAgUGVyIEFybmUgVm9sbGFuICA8cGVhdm9Ab3V0bG9v
ay5jb20+CiAKICAgICAgICAgW1dpbkNhaXJvXSBDb21waWxlIGVycm9yLgpJbmRleDogU291cmNl
L1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQJKHJldmlzaW9uIDE5MjkzMCkKKysrIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlz
dHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0yMjgsNyArMjI4LDYgQEAgc2V0KFdlYkNvcmVfTk9O
X1NWR19JRExfRklMRVMKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL0hUTUxNZWRpYUVsZW1lbnRN
ZWRpYVN0cmVhbS5pZGwKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlSW5mby5p
ZGwKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5pZGwKLSAgICBNb2R1bGVz
L21lZGlhc3RyZWFtL01lZGlhU291cmNlU3RhdGVzLmlkbAogICAgIE1vZHVsZXMvbWVkaWFzdHJl
YW0vTWVkaWFTdHJlYW0uaWRsCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNh
cGFiaWxpdGllcy5pZGwKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtRXZlbnQu
aWRsCkBAIC05NTEsNyArOTUwLDcgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIE1vZHVsZXMv
bWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLmNwcAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVk
aWFEZXZpY2VzUmVxdWVzdC5jcHAKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRW5kcG9p
bnRQZWVyQ29ubmVjdGlvbi5jcHAKLSAgICBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU291cmNl
U3RhdGVzLmNwcAorICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTb3VyY2VTZXR0aW5ncy5j
cHAKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmNwcAogICAgIE1vZHVsZXMv
bWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMuY3BwCiAgICAgTW9kdWxlcy9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbUV2ZW50LmNwcApAQCAtMTIwNiw4ICsxMjA1LDggQEAgc2V0KFdl
YkNvcmVfU09VUkNFUwogICAgIGJpbmRpbmdzL2pzL0pTTGF6eUV2ZW50TGlzdGVuZXIuY3BwCiAg
ICAgYmluZGluZ3MvanMvSlNMb2NhdGlvbkN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy9qcy9KU01h
aW5UaHJlYWRFeGVjU3RhdGUuY3BwCi0gICAgYmluZGluZ3MvanMvSlNNZWRpYVNvdXJjZVN0YXRl
c0N1c3RvbS5jcHAKICAgICBiaW5kaW5ncy9qcy9KU01lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzQ3Vz
dG9tLmNwcAorICAgIGJpbmRpbmdzL2pzL0pTTWVkaWFTdHJlYW1UcmFja0N1c3RvbS5jcHAKICAg
ICBiaW5kaW5ncy9qcy9KU01lZGlhVHJhY2tTdXBwb3J0ZWRDb25zdHJhaW50c0N1c3RvbS5jcHAK
ICAgICBiaW5kaW5ncy9qcy9KU01lc3NhZ2VDaGFubmVsQ3VzdG9tLmNwcAogICAgIGJpbmRpbmdz
L2pzL0pTTWVzc2FnZUV2ZW50Q3VzdG9tLmNwcApAQCAtMjMwOCw3ICsyMzA3LDcgQEAgc2V0KFdl
YkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ1Nlc3Npb25EZXNjcmlw
dGlvbkRlc2NyaXB0b3IuY3BwCiAgICAgcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRp
YVNvdXJjZS5jcHAKICAgICBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNl
Q2VudGVyLmNwcAotICAgIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VT
dGF0ZXMuY3BwCisgICAgcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZVNl
dHRpbmdzLmNwcAogCiAgICAgcGxhdGZvcm0vbW9jay9EZXZpY2VNb3Rpb25DbGllbnRNb2NrLmNw
cAogICAgIHBsYXRmb3JtL21vY2svRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrLmNwcApJbmRl
eDogU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCShyZXZpc2lvbiAxOTI5MzApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0xMjIsNyAr
MTIyLDYgQEAgTk9OX1NWR19CSU5ESU5HX0lETFMgPSBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVz
L21lZGlhc3RyZWFtL0NhcGFiaWxpdHlSYW5nZS5pZGwgXAogCSQoV2ViQ29yZSkvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9ET01VUkxNZWRpYVN0cmVhbS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxl
cy9tZWRpYXN0cmVhbS9IVE1MTWVkaWFFbGVtZW50TWVkaWFTdHJlYW0uaWRsIFwKLSAgICAkKFdl
YkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTb3VyY2VTdGF0ZXMuaWRsIFwKICAgICAk
KFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VJbmZvLmlkbCBcCiAgICAg
JChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5pZGwgXAogCSQoV2Vi
Q29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5pZGwgXApJbmRleDogU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9DYXBhYmlsaXR5UmFuZ2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQ2FwYWJpbGl0eVJhbmdl
LmNwcAkocmV2aXNpb24gMTkyOTMwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9DYXBhYmlsaXR5UmFuZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3IEBA
CiAjaW5jbHVkZSAiQ2FwYWJpbGl0eVJhbmdlLmgiCiAKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcu
aCIKLSNpbmNsdWRlICJNZWRpYVNvdXJjZVN0YXRlcy5oIgorI2luY2x1ZGUgIk1lZGlhU291cmNl
U2V0dGluZ3MuaCIKICNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRWYWx1ZS5oPgogI2luY2x1ZGUg
PGludGVycHJldGVyL0NhbGxGcmFtZS5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNDSlNWYWx1ZS5o
PgpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVNvdXJjZVNl
dHRpbmdzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL01lZGlhU291cmNlU2V0dGluZ3MuY3BwCShyZXZpc2lvbiAxOTI5MzApCShmcm9tIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTb3VyY2VTdGF0ZXMuY3BwOjE5Mjkz
MCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTb3VyY2VTZXR0
aW5ncy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lm
IEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJNZWRpYVNvdXJjZVN0YXRlcy5oIgor
CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworUmVmPE1lZGlhU291cmNlU3RhdGVzPiBNZWRpYVNvdXJjZVN0YXRlczo6Y3JlYXRlKGNvbnN0
IFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXMmIHN0YXRlcykKK3sKKyAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBNZWRpYVNvdXJjZVN0YXRlcyhzdGF0ZXMpKTsKK30KKworTWVkaWFTb3VyY2VTdGF0
ZXM6Ok1lZGlhU291cmNlU3RhdGVzKGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXMmIHN0
YXRlcykKKyAgICA6IG1fc291cmNlU3RhdGVzKHN0YXRlcykKK3sKK30KKworY29uc3QgQXRvbWlj
U3RyaW5nJiBNZWRpYVNvdXJjZVN0YXRlczo6c291cmNlVHlwZSgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXM6OnNvdXJjZVR5cGUobV9zb3VyY2VTdGF0ZXMu
c291cmNlVHlwZSgpKTsKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYVNvdXJjZVN0YXRl
czo6ZmFjaW5nTW9kZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFJlYWx0aW1lTWVkaWFTb3VyY2VT
dGF0ZXM6OmZhY2luZ01vZGUobV9zb3VyY2VTdGF0ZXMuZmFjaW5nTW9kZSgpKTsKK30KKworCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9NZWRpYVNvdXJjZVNldHRpbmdzLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU291cmNlU2V0dGluZ3MuY3Bw
CSh3b3JraW5nIGNvcHkpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01l
ZGlhU291cmNlU2V0dGluZ3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI0LDM2ICsyNCwyOSBAQAogICov
CiAKICNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJNZWRpYVNvdXJjZVNldHRpbmdzLmgi
CiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogCi0jaW5jbHVkZSAiTWVkaWFTb3VyY2VTdGF0
ZXMuaCIKLQogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLVJlZjxNZWRpYVNvdXJjZVN0YXRlcz4gTWVkaWFTb3VyY2VTdGF0ZXM6OmNyZWF0
ZShjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzJiBzdGF0ZXMpCitSZWY8TWVkaWFTb3Vy
Y2VTZXR0aW5ncz4gTWVkaWFTb3VyY2VTZXR0aW5nczo6Y3JlYXRlKGNvbnN0IFJlYWx0aW1lTWVk
aWFTb3VyY2VTZXR0aW5ncyYgc2V0dGluZ3MpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
TWVkaWFTb3VyY2VTdGF0ZXMoc3RhdGVzKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWVk
aWFTb3VyY2VTZXR0aW5ncyhzZXR0aW5ncykpOwogfQogCi1NZWRpYVNvdXJjZVN0YXRlczo6TWVk
aWFTb3VyY2VTdGF0ZXMoY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlcyYgc3RhdGVzKQot
ICAgIDogbV9zb3VyY2VTdGF0ZXMoc3RhdGVzKQorTWVkaWFTb3VyY2VTZXR0aW5nczo6TWVkaWFT
b3VyY2VTZXR0aW5ncyhjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmIHNldHRpbmdz
KQorICAgIDogbV9zb3VyY2VTZXR0aW5ncyhzZXR0aW5ncykKIHsKIH0KIAotY29uc3QgQXRvbWlj
U3RyaW5nJiBNZWRpYVNvdXJjZVN0YXRlczo6c291cmNlVHlwZSgpIGNvbnN0Citjb25zdCBBdG9t
aWNTdHJpbmcmIE1lZGlhU291cmNlU2V0dGluZ3M6OmZhY2luZ01vZGUoKSBjb25zdAogewotICAg
IHJldHVybiBSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzOjpzb3VyY2VUeXBlKG1fc291cmNlU3Rh
dGVzLnNvdXJjZVR5cGUoKSk7CisgICAgcmV0dXJuIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5n
czo6ZmFjaW5nTW9kZShtX3NvdXJjZVNldHRpbmdzLmZhY2luZ01vZGUoKSk7CiB9CiAKLWNvbnN0
IEF0b21pY1N0cmluZyYgTWVkaWFTb3VyY2VTdGF0ZXM6OmZhY2luZ01vZGUoKSBjb25zdAotewot
ICAgIHJldHVybiBSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzOjpmYWNpbmdNb2RlKG1fc291cmNl
U3RhdGVzLmZhY2luZ01vZGUoKSk7Ci19Ci0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAj
ZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTb3Vy
Y2VTZXR0aW5ncy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vTWVkaWFTb3VyY2VTZXR0aW5ncy5oCShyZXZpc2lvbiAxOTI5MzApCShmcm9tIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTb3VyY2VTdGF0ZXMuaDoxOTI5MzAp
CisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU291cmNlU2V0dGlu
Z3MuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDYzIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBNZWRpYVNvdXJjZVN0YXRlc19oCisj
ZGVmaW5lIE1lZGlhU291cmNlU3RhdGVzX2gKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisK
KyNpbmNsdWRlICJSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzLmgiCisjaW5jbHVkZSAi
U2NyaXB0V3JhcHBhYmxlLmgiCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE1lZGlhU291
cmNlU3RhdGVzIDogcHVibGljIFJlZkNvdW50ZWQ8TWVkaWFTb3VyY2VTdGF0ZXM+LCBwdWJsaWMg
U2NyaXB0V3JhcHBhYmxlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPE1lZGlhU291cmNlU3Rh
dGVzPiBjcmVhdGUoY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlcyYpOworCisgICAgY29u
c3QgQXRvbWljU3RyaW5nJiBzb3VyY2VUeXBlKCkgY29uc3Q7CisgICAgY29uc3QgQXRvbWljU3Ry
aW5nJiBzb3VyY2VJZCgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlU3RhdGVzLnNvdXJjZUlkKCk7
IH0KKyAgICB1bnNpZ25lZCBsb25nIHdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VTdGF0
ZXMud2lkdGgoKTsgfQorICAgIHVuc2lnbmVkIGxvbmcgaGVpZ2h0KCkgY29uc3QgeyByZXR1cm4g
bV9zb3VyY2VTdGF0ZXMuaGVpZ2h0KCk7IH0KKyAgICBmbG9hdCBmcmFtZVJhdGUoKSBjb25zdCB7
IHJldHVybiBtX3NvdXJjZVN0YXRlcy5mcmFtZVJhdGUoKTsgfQorICAgIGZsb2F0IGFzcGVjdFJh
dGlvKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VTdGF0ZXMuYXNwZWN0UmF0aW8oKTsgfQorICAg
IGNvbnN0IEF0b21pY1N0cmluZyYgZmFjaW5nTW9kZSgpIGNvbnN0OworICAgIHVuc2lnbmVkIGxv
bmcgdm9sdW1lKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VTdGF0ZXMudm9sdW1lKCk7IH0KKyAg
ICAKKyAgICBib29sIGhhc1ZpZGVvU291cmNlKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VTdGF0
ZXMuc291cmNlVHlwZSgpID09IFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXM6OkNhbWVyYTsgfQor
Citwcml2YXRlOgorICAgIGV4cGxpY2l0IE1lZGlhU291cmNlU3RhdGVzKGNvbnN0IFJlYWx0aW1l
TWVkaWFTb3VyY2VTdGF0ZXMmKTsKKworICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXMgbV9z
b3VyY2VTdGF0ZXM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBN
ZWRpYVNvdXJjZVN0YXRlc19oCisKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9NZWRpYVNvdXJjZVNldHRpbmdzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVNvdXJjZVNldHRpbmdzLmgJKHdvcmtp
bmcgY29weSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTb3Vy
Y2VTZXR0aW5ncy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTMtMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDggKzIzLDggQEAKICAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CiAgKi8KIAotI2lmbmRlZiBNZWRpYVNvdXJjZVN0YXRlc19oCi0jZGVmaW5lIE1lZGlhU291cmNl
U3RhdGVzX2gKKyNpZm5kZWYgTWVkaWFTb3VyY2VTZXR0aW5nc19oCisjZGVmaW5lIE1lZGlhU291
cmNlU2V0dGluZ3NfaAogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKIApAQCAtMzUsMjkgKzM1
LDUxIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgTWVkaWFTb3VyY2VTdGF0ZXMg
OiBwdWJsaWMgUmVmQ291bnRlZDxNZWRpYVNvdXJjZVN0YXRlcz4sIHB1YmxpYyBTY3JpcHRXcmFw
cGFibGUgeworY2xhc3MgTWVkaWFTb3VyY2VTZXR0aW5ncyA6IHB1YmxpYyBSZWZDb3VudGVkPE1l
ZGlhU291cmNlU2V0dGluZ3M+LCBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlIHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUmVmPE1lZGlhU291cmNlU3RhdGVzPiBjcmVhdGUoY29uc3QgUmVhbHRpbWVNZWRp
YVNvdXJjZVN0YXRlcyYpOworICAgIHN0YXRpYyBSZWY8TWVkaWFTb3VyY2VTZXR0aW5ncz4gY3Jl
YXRlKGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYpOwogCi0gICAgY29uc3QgQXRv
bWljU3RyaW5nJiBzb3VyY2VUeXBlKCkgY29uc3Q7Ci0gICAgY29uc3QgQXRvbWljU3RyaW5nJiBz
b3VyY2VJZCgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlU3RhdGVzLnNvdXJjZUlkKCk7IH0KLSAg
ICB1bnNpZ25lZCBsb25nIHdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VTdGF0ZXMud2lk
dGgoKTsgfQotICAgIHVuc2lnbmVkIGxvbmcgaGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9zb3Vy
Y2VTdGF0ZXMuaGVpZ2h0KCk7IH0KLSAgICBmbG9hdCBmcmFtZVJhdGUoKSBjb25zdCB7IHJldHVy
biBtX3NvdXJjZVN0YXRlcy5mcmFtZVJhdGUoKTsgfQotICAgIGZsb2F0IGFzcGVjdFJhdGlvKCkg
Y29uc3QgeyByZXR1cm4gbV9zb3VyY2VTdGF0ZXMuYXNwZWN0UmF0aW8oKTsgfQorICAgIGJvb2wg
c3VwcG9ydHNXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlU2V0dGluZ3Muc3VwcG9ydHNX
aWR0aCgpOyB9CisgICAgdW5zaWduZWQgbG9uZyB3aWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fc291
cmNlU2V0dGluZ3Mud2lkdGgoKTsgfQorCisgICAgYm9vbCBzdXBwb3J0c0hlaWdodCgpIGNvbnN0
IHsgcmV0dXJuIG1fc291cmNlU2V0dGluZ3Muc3VwcG9ydHNIZWlnaHQoKTsgfQorICAgIHVuc2ln
bmVkIGxvbmcgaGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VTZXR0aW5ncy5oZWlnaHQo
KTsgfQorCisgICAgYm9vbCBzdXBwb3J0c0FzcGVjdFJhdGlvKCkgY29uc3QgeyByZXR1cm4gbV9z
b3VyY2VTZXR0aW5ncy5zdXBwb3J0c0FzcGVjdFJhdGlvKCk7IH0KKyAgICBmbG9hdCBhc3BlY3RS
YXRpbygpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlU2V0dGluZ3MuYXNwZWN0UmF0aW8oKTsgfQor
CisgICAgYm9vbCBzdXBwb3J0c0ZyYW1lUmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlU2V0
dGluZ3Muc3VwcG9ydHNGcmFtZVJhdGUoKTsgfQorICAgIGZsb2F0IGZyYW1lUmF0ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fc291cmNlU2V0dGluZ3MuZnJhbWVSYXRlKCk7IH0KKworICAgIGJvb2wgc3Vw
cG9ydHNGYWNpbmdNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VTZXR0aW5ncy5zdXBwb3J0
c0ZhY2luZ01vZGUoKTsgfQogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgZmFjaW5nTW9kZSgpIGNv
bnN0OwotICAgIHVuc2lnbmVkIGxvbmcgdm9sdW1lKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VT
dGF0ZXMudm9sdW1lKCk7IH0KLSAgICAKLSAgICBib29sIGhhc1ZpZGVvU291cmNlKCkgY29uc3Qg
eyByZXR1cm4gbV9zb3VyY2VTdGF0ZXMuc291cmNlVHlwZSgpID09IFJlYWx0aW1lTWVkaWFTb3Vy
Y2VTdGF0ZXM6OkNhbWVyYTsgfQorCisgICAgYm9vbCBzdXBwb3J0c1ZvbHVtZSgpIGNvbnN0IHsg
cmV0dXJuIG1fc291cmNlU2V0dGluZ3Muc3VwcG9ydHNWb2x1bWUoKTsgfQorICAgIHVuc2lnbmVk
IGxvbmcgdm9sdW1lKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VTZXR0aW5ncy52b2x1bWUoKTsg
fQorCisgICAgYm9vbCBzdXBwb3J0c1NhbXBsZVJhdGUoKSBjb25zdCB7IHJldHVybiBtX3NvdXJj
ZVNldHRpbmdzLnN1cHBvcnRzU2FtcGxlUmF0ZSgpOyB9CisgICAgdW5zaWduZWQgbG9uZyBzYW1w
bGVSYXRlKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VTZXR0aW5ncy5zYW1wbGVSYXRlKCk7IH0K
KworICAgIGJvb2wgc3VwcG9ydHNTYW1wbGVTaXplKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VT
ZXR0aW5ncy5zdXBwb3J0c1NhbXBsZVNpemUoKTsgfQorICAgIHVuc2lnbmVkIGxvbmcgc2FtcGxl
U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlU2V0dGluZ3Muc2FtcGxlU2l6ZSgpOyB9CisK
KyAgICBib29sIHN1cHBvcnRzRWNob0NhbmNlbGxhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc291
cmNlU2V0dGluZ3Muc3VwcG9ydHNFY2hvQ2FuY2VsbGF0aW9uKCk7IH0KKyAgICBib29sIGVjaG9D
YW5jZWxsYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZVNldHRpbmdzLmVjaG9DYW5jZWxs
YXRpb24oKTsgfQorCisgICAgYm9vbCBzdXBwb3J0c0RldmljZUlkKCkgY29uc3QgeyByZXR1cm4g
bV9zb3VyY2VTZXR0aW5ncy5zdXBwb3J0c0RldmljZUlkKCk7IH0KKyAgICBjb25zdCBBdG9taWNT
dHJpbmcmIGRldmljZUlkKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VTZXR0aW5ncy5kZXZpY2VJ
ZCgpOyB9CisKKyAgICBib29sIHN1cHBvcnRzR3JvdXBJZCgpIGNvbnN0IHsgcmV0dXJuIG1fc291
cmNlU2V0dGluZ3Muc3VwcG9ydHNHcm91cElkKCk7IH0KKyAgICBjb25zdCBBdG9taWNTdHJpbmcm
IGdyb3VwSWQoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZVNldHRpbmdzLmdyb3VwSWQoKTsgfQog
CiBwcml2YXRlOgotICAgIGV4cGxpY2l0IE1lZGlhU291cmNlU3RhdGVzKGNvbnN0IFJlYWx0aW1l
TWVkaWFTb3VyY2VTdGF0ZXMmKTsKKyAgICBleHBsaWNpdCBNZWRpYVNvdXJjZVNldHRpbmdzKGNv
bnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYpOwogCi0gICAgUmVhbHRpbWVNZWRpYVNv
dXJjZVN0YXRlcyBtX3NvdXJjZVN0YXRlczsKKyAgICBSZWFsdGltZU1lZGlhU291cmNlU2V0dGlu
Z3MgbV9zb3VyY2VTZXR0aW5nczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2Vu
ZGlmIC8vIE1lZGlhU291cmNlU3RhdGVzX2gKKyNlbmRpZiAvLyBNZWRpYVNvdXJjZVNldHRpbmdz
X2gKIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01l
ZGlhU291cmNlU3RhdGVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL01lZGlhU291cmNlU3RhdGVzLmNwcAkocmV2aXNpb24gMTkyOTMwKQorKysg
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVNvdXJjZVN0YXRlcy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNTkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0g
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2lmIEVOQUJMRShN
RURJQV9TVFJFQU0pCi0KLSNpbmNsdWRlICJNZWRpYVNvdXJjZVN0YXRlcy5oIgotCi0jaW5jbHVk
ZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotUmVmPE1l
ZGlhU291cmNlU3RhdGVzPiBNZWRpYVNvdXJjZVN0YXRlczo6Y3JlYXRlKGNvbnN0IFJlYWx0aW1l
TWVkaWFTb3VyY2VTdGF0ZXMmIHN0YXRlcykKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBN
ZWRpYVNvdXJjZVN0YXRlcyhzdGF0ZXMpKTsKLX0KLQotTWVkaWFTb3VyY2VTdGF0ZXM6Ok1lZGlh
U291cmNlU3RhdGVzKGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXMmIHN0YXRlcykKLSAg
ICA6IG1fc291cmNlU3RhdGVzKHN0YXRlcykKLXsKLX0KLQotY29uc3QgQXRvbWljU3RyaW5nJiBN
ZWRpYVNvdXJjZVN0YXRlczo6c291cmNlVHlwZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFJlYWx0
aW1lTWVkaWFTb3VyY2VTdGF0ZXM6OnNvdXJjZVR5cGUobV9zb3VyY2VTdGF0ZXMuc291cmNlVHlw
ZSgpKTsKLX0KLQotY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYVNvdXJjZVN0YXRlczo6ZmFjaW5n
TW9kZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXM6OmZh
Y2luZ01vZGUobV9zb3VyY2VTdGF0ZXMuZmFjaW5nTW9kZSgpKTsKLX0KLQotCi19IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCi0KLSNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9NZWRpYVNvdXJjZVN0YXRlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTb3VyY2VTdGF0ZXMuaAkocmV2aXNpb24gMTkyOTMw
KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVNvdXJjZVN0YXRl
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQot
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIE1lZGlhU291cmNlU3RhdGVzX2gKLSNk
ZWZpbmUgTWVkaWFTb3VyY2VTdGF0ZXNfaAotCi0jaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLQot
I2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMuaCIKLSNpbmNsdWRlICJT
Y3JpcHRXcmFwcGFibGUuaCIKLSNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgTWVkaWFTb3Vy
Y2VTdGF0ZXMgOiBwdWJsaWMgUmVmQ291bnRlZDxNZWRpYVNvdXJjZVN0YXRlcz4sIHB1YmxpYyBT
Y3JpcHRXcmFwcGFibGUgewotcHVibGljOgotICAgIHN0YXRpYyBSZWY8TWVkaWFTb3VyY2VTdGF0
ZXM+IGNyZWF0ZShjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzJik7Ci0KLSAgICBjb25z
dCBBdG9taWNTdHJpbmcmIHNvdXJjZVR5cGUoKSBjb25zdDsKLSAgICBjb25zdCBBdG9taWNTdHJp
bmcmIHNvdXJjZUlkKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VTdGF0ZXMuc291cmNlSWQoKTsg
fQotICAgIHVuc2lnbmVkIGxvbmcgd2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZVN0YXRl
cy53aWR0aCgpOyB9Ci0gICAgdW5zaWduZWQgbG9uZyBoZWlnaHQoKSBjb25zdCB7IHJldHVybiBt
X3NvdXJjZVN0YXRlcy5oZWlnaHQoKTsgfQotICAgIGZsb2F0IGZyYW1lUmF0ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fc291cmNlU3RhdGVzLmZyYW1lUmF0ZSgpOyB9Ci0gICAgZmxvYXQgYXNwZWN0UmF0
aW8oKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZVN0YXRlcy5hc3BlY3RSYXRpbygpOyB9Ci0gICAg
Y29uc3QgQXRvbWljU3RyaW5nJiBmYWNpbmdNb2RlKCkgY29uc3Q7Ci0gICAgdW5zaWduZWQgbG9u
ZyB2b2x1bWUoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZVN0YXRlcy52b2x1bWUoKTsgfQotICAg
IAotICAgIGJvb2wgaGFzVmlkZW9Tb3VyY2UoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZVN0YXRl
cy5zb3VyY2VUeXBlKCkgPT0gUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlczo6Q2FtZXJhOyB9Ci0K
LXByaXZhdGU6Ci0gICAgZXhwbGljaXQgTWVkaWFTb3VyY2VTdGF0ZXMoY29uc3QgUmVhbHRpbWVN
ZWRpYVNvdXJjZVN0YXRlcyYpOwotCi0gICAgUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlcyBtX3Nv
dXJjZVN0YXRlczsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIE1l
ZGlhU291cmNlU3RhdGVzX2gKLQotI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL01lZGlhU291cmNlU3RhdGVzLmlkbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU291cmNlU3RhdGVzLmlkbAkocmV2aXNp
b24gMTkyOTMwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVNv
dXJjZVN0YXRlcy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTEsNDQgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
Ci0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi1lbnVtIFNvdXJjZVR5cGVFbnVt
IHsgIm5vbmUiLCAiY2FtZXJhIiwgIm1pY3JvcGhvbmUiIH07Ci1lbnVtIFZpZGVvRmFjaW5nTW9k
ZUVudW0geyAidXNlciIsICJlbnZpcm9ubWVudCIsICJsZWZ0IiwgInJpZ2h0IiB9OwotCi1bCi0g
ICAgQ29uZGl0aW9uYWw9TUVESUFfU1RSRUFNLAotICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFi
bGUsCi0gICAgTm9JbnRlcmZhY2VPYmplY3QsCi1dIGludGVyZmFjZSBNZWRpYVNvdXJjZVN0YXRl
cyB7Ci0gICAgcmVhZG9ubHkgYXR0cmlidXRlIFNvdXJjZVR5cGVFbnVtIHNvdXJjZVR5cGU7Ci0g
ICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBzb3VyY2VJZDsKLQotICAgIFtDdXN0b21H
ZXR0ZXJdIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nPyB3aWR0aDsKLSAgICBbQ3Vz
dG9tR2V0dGVyXSByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZz8gaGVpZ2h0OwotICAg
IFtDdXN0b21HZXR0ZXJdIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnJlc3RyaWN0ZWQgZmxvYXQ/IGZy
YW1lUmF0ZTsKLSAgICBbQ3VzdG9tR2V0dGVyXSByZWFkb25seSBhdHRyaWJ1dGUgdW5yZXN0cmlj
dGVkIGZsb2F0PyBhc3BlY3RSYXRpbzsKLSAgICBbQ3VzdG9tR2V0dGVyXSByZWFkb25seSBhdHRy
aWJ1dGUgVmlkZW9GYWNpbmdNb2RlRW51bT8gZmFjaW5nTW9kZTsKLSAgICBbQ3VzdG9tR2V0dGVy
XSByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZz8gdm9sdW1lOwotfTsKLQpJbmRleDog
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNhcGFiaWxpdGll
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9N
ZWRpYVN0cmVhbUNhcGFiaWxpdGllcy5jcHAJKHJldmlzaW9uIDE5MjkzMCkKKysrIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3IEBACiAjaW5jbHVkZSAiQWxsQXVkaW9DYXBhYmls
aXRpZXMuaCIKICNpbmNsdWRlICJBbGxWaWRlb0NhcGFiaWxpdGllcy5oIgogI2luY2x1ZGUgIkNh
cGFiaWxpdHlSYW5nZS5oIgotI2luY2x1ZGUgIk1lZGlhU291cmNlU3RhdGVzLmgiCisjaW5jbHVk
ZSAiTWVkaWFTb3VyY2VTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2VD
YXBhYmlsaXRpZXMuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTIsMTkgKzUyLDggQEAg
TWVkaWFTdHJlYW1DYXBhYmlsaXRpZXM6Ok1lZGlhU3RyZWFtQ2FwYQogCiBWZWN0b3I8U3RyaW5n
PiBNZWRpYVN0cmVhbUNhcGFiaWxpdGllczo6c291cmNlVHlwZSgpIGNvbnN0CiB7Ci0gICAgQVNT
RVJUKG1fU291cmNlQ2FwYWJpbGl0aWVzLT5oYXNWaWRlb1NvdXJjZSgpKTsKLSAgICAKLSAgICBz
aXplX3QgY291bnQgPSBtX1NvdXJjZUNhcGFiaWxpdGllcy0+c291cmNlVHlwZXMoKS5zaXplKCk7
Ci0gICAgaWYgKCFjb3VudCkKLSAgICAgICAgcmV0dXJuIFZlY3RvcjxTdHJpbmc+KCk7Ci0gICAg
Ci0gICAgVmVjdG9yPFN0cmluZz4gY2FwYWJpbGl0aWVzOwotICAgIGNhcGFiaWxpdGllcy5yZXNl
cnZlQ2FwYWNpdHkoY291bnQpOwotICAgIAotICAgIGZvciAoYXV0byYgdHlwZSA6IG1fU291cmNl
Q2FwYWJpbGl0aWVzLT5zb3VyY2VUeXBlcygpKQotICAgICAgICBjYXBhYmlsaXRpZXMuYXBwZW5k
KFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXM6OnNvdXJjZVR5cGUodHlwZSkpOwotICAgIAotICAg
IHJldHVybiBjYXBhYmlsaXRpZXM7CisgICAgLy8gVGhpcyB3aWxsIGJlIGZpeGVkIGJ5IGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE3MjguCisgICAgcmV0dXJuIFZl
Y3RvcjxTdHJpbmc+KCk7CiB9CiAKIFZlY3RvcjxTdHJpbmc+IE1lZGlhU3RyZWFtQ2FwYWJpbGl0
aWVzOjpzb3VyY2VJZCgpIGNvbnN0CkBAIC05NCw3ICs4Myw3IEBAIFZlY3RvcjxTdHJpbmc+IE1l
ZGlhU3RyZWFtQ2FwYWJpbGl0aWVzOjoKICAgICBjYXBhYmlsaXRpZXMucmVzZXJ2ZUNhcGFjaXR5
KGNvdW50KTsKICAgICAKICAgICBmb3IgKGF1dG8mIG1vZGUgOiBtX1NvdXJjZUNhcGFiaWxpdGll
cy0+ZmFjaW5nTW9kZXMoKSkKLSAgICAgICAgY2FwYWJpbGl0aWVzLmFwcGVuZChSZWFsdGltZU1l
ZGlhU291cmNlU3RhdGVzOjpmYWNpbmdNb2RlKG1vZGUpKTsKKyAgICAgICAgY2FwYWJpbGl0aWVz
LmFwcGVuZChSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OmZhY2luZ01vZGUobW9kZSkpOwog
ICAgIAogICAgIHJldHVybiBjYXBhYmlsaXRpZXM7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5jcHAJKHJl
dmlzaW9uIDE5MjkzMCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW1UcmFjay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDcgQEAKICNpbmNs
dWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZVBsYWNlaG9sZGVy
LmgiCiAjaW5jbHVkZSAiTWVkaWFDb25zdHJhaW50c0ltcGwuaCIKLSNpbmNsdWRlICJNZWRpYVNv
dXJjZVN0YXRlcy5oIgorI2luY2x1ZGUgIk1lZGlhU291cmNlU2V0dGluZ3MuaCIKICNpbmNsdWRl
ICJNZWRpYVN0cmVhbS5oIgogI2luY2x1ZGUgIk1lZGlhU3RyZWFtUHJpdmF0ZS5oIgogI2luY2x1
ZGUgIk1lZGlhVHJhY2tDb25zdHJhaW50cy5oIgpAQCAtMTYyLDIxICsxNjIsMTQgQEAgUmVmUHRy
PE1lZGlhVHJhY2tDb25zdHJhaW50cz4gTWVkaWFTdHJlYQogICAgIHJldHVybiAwOwogfQogCi1S
ZWZQdHI8TWVkaWFTb3VyY2VTdGF0ZXM+IE1lZGlhU3RyZWFtVHJhY2s6OnN0YXRlcygpIGNvbnN0
CitSZWZQdHI8TWVkaWFTb3VyY2VTZXR0aW5ncz4gTWVkaWFTdHJlYW1UcmFjazo6Z2V0U2V0dGlu
Z3MoKSBjb25zdAogewotICAgIHJldHVybiBNZWRpYVNvdXJjZVN0YXRlczo6Y3JlYXRlKG1fcHJp
dmF0ZS0+c3RhdGVzKCkpOworICAgIHJldHVybiBNZWRpYVNvdXJjZVNldHRpbmdzOjpjcmVhdGUo
bV9wcml2YXRlLT5zZXR0aW5ncygpKTsKIH0KIAogUmVmUHRyPE1lZGlhU3RyZWFtQ2FwYWJpbGl0
aWVzPiBNZWRpYVN0cmVhbVRyYWNrOjpnZXRDYXBhYmlsaXRpZXMoKSBjb25zdAogewotICAgIC8v
IFRoZSBzb3VyY2UgbWF5IGJlIHNoYXJlZCBieSBtdWx0aXBsZSB0cmFja3MsIHNvIGl0cyBzdGF0
ZXMgaXMgbm90IG5lY2Vzc2FyaWx5Ci0gICAgLy8gaW4gc3luYyB3aXRoIHRoZSB0cmFjayBzdGF0
ZS4gQSB0cmFjayB0aGF0IGhhcyBlbmRlZCBhbHdheXMgaGFzIGEgc291cmNlCi0gICAgLy8gdHlw
ZSBvZiAibm9uZSIuCi0gICAgUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM+
IHNvdXJjZUNhcGFiaWxpdGllcyA9IG1fcHJpdmF0ZS0+Y2FwYWJpbGl0aWVzKCk7Ci0gICAgaWYg
KGVuZGVkKCkpCi0gICAgICAgIHNvdXJjZUNhcGFiaWxpdGllcy0+c2V0U291cmNlVHlwZShSZWFs
dGltZU1lZGlhU291cmNlU3RhdGVzOjpOb25lKTsKLSAgICAKLSAgICByZXR1cm4gTWVkaWFTdHJl
YW1DYXBhYmlsaXRpZXM6OmNyZWF0ZShzb3VyY2VDYXBhYmlsaXRpZXMucmVsZWFzZSgpKTsKKyAg
ICByZXR1cm4gTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXM6OmNyZWF0ZShtX3ByaXZhdGUtPmNhcGFi
aWxpdGllcygpKTsKIH0KIAogdm9pZCBNZWRpYVN0cmVhbVRyYWNrOjphcHBseUNvbnN0cmFpbnRz
KGNvbnN0IERpY3Rpb25hcnkmIGNvbnN0cmFpbnRzKQpAQCAtMjM4LDcgKzIzMSw3IEBAIHZvaWQg
TWVkaWFTdHJlYW1UcmFjazo6dHJhY2tNdXRlZENoYW5nZWQKICAgICBjb25maWd1cmVUcmFja1Jl
bmRlcmluZygpOwogfQogCi12b2lkIE1lZGlhU3RyZWFtVHJhY2s6OnRyYWNrU3RhdGVzQ2hhbmdl
ZChNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYpCit2b2lkIE1lZGlhU3RyZWFtVHJhY2s6OnRyYWNr
U2V0dGluZ3NDaGFuZ2VkKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJikKIHsKICAgICBjb25maWd1
cmVUcmFja1JlbmRlcmluZygpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmgJKHJldmlzaW9uIDE5MjkzMCkK
KysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5o
CSh3b3JraW5nIGNvcHkpCkBAIC00NSw3ICs0NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNs
YXNzIEF1ZGlvU291cmNlUHJvdmlkZXI7CiBjbGFzcyBEaWN0aW9uYXJ5OwogY2xhc3MgTWVkaWFD
b25zdHJhaW50c0ltcGw7Ci1jbGFzcyBNZWRpYVNvdXJjZVN0YXRlczsKK2NsYXNzIE1lZGlhU291
cmNlU2V0dGluZ3M7CiBjbGFzcyBNZWRpYVN0cmVhbUNhcGFiaWxpdGllczsKIGNsYXNzIE1lZGlh
VHJhY2tDb25zdHJhaW50czsKIApAQCAtNzksNyArNzksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
dG9wUHJvZHVjaW5nRGF0YSgpOwogCiAgICAgUmVmUHRyPE1lZGlhVHJhY2tDb25zdHJhaW50cz4g
Z2V0Q29uc3RyYWludHMoKSBjb25zdDsKLSAgICBSZWZQdHI8TWVkaWFTb3VyY2VTdGF0ZXM+IHN0
YXRlcygpIGNvbnN0OworICAgIFJlZlB0cjxNZWRpYVNvdXJjZVNldHRpbmdzPiBnZXRTZXR0aW5n
cygpIGNvbnN0OwogICAgIFJlZlB0cjxNZWRpYVN0cmVhbUNhcGFiaWxpdGllcz4gZ2V0Q2FwYWJp
bGl0aWVzKCkgY29uc3Q7CiAgICAgdm9pZCBhcHBseUNvbnN0cmFpbnRzKGNvbnN0IERpY3Rpb25h
cnkmKTsKICAgICB2b2lkIGFwcGx5Q29uc3RyYWludHMoY29uc3QgTWVkaWFDb25zdHJhaW50cyYp
OwpAQCAtMTE3LDcgKzExNyw3IEBAIHByaXZhdGU6CiAgICAgLy8gTWVkaWFTdHJlYW1UcmFja1By
aXZhdGU6Ok9ic2VydmVyCiAgICAgdm9pZCB0cmFja0VuZGVkKE1lZGlhU3RyZWFtVHJhY2tQcml2
YXRlJikgb3ZlcnJpZGU7CiAgICAgdm9pZCB0cmFja011dGVkQ2hhbmdlZChNZWRpYVN0cmVhbVRy
YWNrUHJpdmF0ZSYpIG92ZXJyaWRlOwotICAgIHZvaWQgdHJhY2tTdGF0ZXNDaGFuZ2VkKE1lZGlh
U3RyZWFtVHJhY2tQcml2YXRlJikgb3ZlcnJpZGU7CisgICAgdm9pZCB0cmFja1NldHRpbmdzQ2hh
bmdlZChNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgdHJhY2tF
bmFibGVkQ2hhbmdlZChNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYpIG92ZXJyaWRlOwogCiAgICAg
VmVjdG9yPE9ic2VydmVyKj4gbV9vYnNlcnZlcnM7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suaWRsCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5pZGwJKHJldmlz
aW9uIDE5MjkzMCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFT
dHJlYW1UcmFjay5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDcgKzQ3LDcgQEAgZW51bSBNZWRp
YVN0cmVhbVRyYWNrU3RhdGUgeyAibmV3IiwgImxpdgogICAgIFtJbXBsZW1lbnRlZEFzPXN0b3BQ
cm9kdWNpbmdEYXRhXSB2b2lkIHN0b3AoKTsKIAogICAgIE1lZGlhVHJhY2tDb25zdHJhaW50cyBn
ZXRDb25zdHJhaW50cygpOwotICAgIE1lZGlhU291cmNlU3RhdGVzIHN0YXRlcygpOworICAgIFtD
dXN0b21dIE1lZGlhU291cmNlU2V0dGluZ3MgZ2V0U2V0dGluZ3MoKTsKICAgICBNZWRpYVN0cmVh
bUNhcGFiaWxpdGllcyBnZXRDYXBhYmlsaXRpZXMoKTsgLy8gcmV0dXJucyBlaXRoZXIgQWxsVmlk
ZW9DYXBhYmlsaXRpZXMgb3IgQWxsQXVkaW9DYXBhYmlsaXRpZXMKICAgICB2b2lkIGFwcGx5Q29u
c3RyYWludHMoRGljdGlvbmFyeSBjb25zdHJhaW50cyk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJjZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNl
LmNwcAkocmV2aXNpb24gMTkyOTMwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9NZWRpYVN0cmVhbUF1ZGlvU291cmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTIsMTIgKzUy
LDEyIEBAIFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzPiAKICAgICByZXR1
cm4gbnVsbHB0cjsKIH0KIAotY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlcyYgTWVkaWFT
dHJlYW1BdWRpb1NvdXJjZTo6c3RhdGVzKCkKK2NvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0
aW5ncyYgTWVkaWFTdHJlYW1BdWRpb1NvdXJjZTo6c2V0dGluZ3MoKQogewogICAgIC8vIEZJWE1F
OiBpbXBsZW1lbnQgdGhpcy4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTIyNDMwCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gbV9jdXJy
ZW50U3RhdGVzOworICAgIHJldHVybiBtX2N1cnJlbnRTZXR0aW5nczsKIH0KIAogQXVkaW9Tb3Vy
Y2VQcm92aWRlciogTWVkaWFTdHJlYW1BdWRpb1NvdXJjZTo6YXVkaW9Tb3VyY2VQcm92aWRlcigp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9T
b3VyY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01l
ZGlhU3RyZWFtQXVkaW9Tb3VyY2UuaAkocmV2aXNpb24gMTkyOTMwKQorKysgU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogICAgIH5NZWRpYVN0cmVhbUF1ZGlvU291cmNl
KCkgeyB9CiAKICAgICBSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcz4gY2Fw
YWJpbGl0aWVzKCkgb3ZlcnJpZGU7Ci0gICAgY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRl
cyYgc3RhdGVzKCkgb3ZlcnJpZGU7CisgICAgY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRp
bmdzJiBzZXR0aW5ncygpIG92ZXJyaWRlOwogICAgIAogICAgIGNvbnN0IFN0cmluZyYgZGV2aWNl
SWQoKSBjb25zdCB7IHJldHVybiBtX2RldmljZUlkOyB9CiAgICAgdm9pZCBzZXREZXZpY2VJZChj
b25zdCBTdHJpbmcmIGRldmljZUlkKSB7IG1fZGV2aWNlSWQgPSBkZXZpY2VJZDsgfQpAQCAtNjgs
NyArNjgsNyBAQCBwcml2YXRlOgogICAgIFN0cmluZyBtX2RldmljZUlkOwogICAgIExvY2sgbV9h
dWRpb0NvbnN1bWVyc0xvY2s7CiAgICAgVmVjdG9yPFJlZlB0cjxBdWRpb0Rlc3RpbmF0aW9uQ29u
c3VtZXI+PiBtX2F1ZGlvQ29uc3VtZXJzOwotICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXMg
bV9jdXJyZW50U3RhdGVzOworICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyBtX2N1cnJl
bnRTZXR0aW5nczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9u
IDE5MjkzMCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtMzE5LDExICszMTksMTEgQEAKIAkJMDdCREQ2RUMxNDY5
QjRDMjAwOUM5Rjg1IC8qIEpTVHJhY2tFdmVudEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0I1QTMwQTE0Njg3Qjg0MDBBODFFQ0UgLyog
SlNUcmFja0V2ZW50Q3VzdG9tLmNwcCAqLzsgfTsKIAkJMDdDMUMwRTIxQkZCNjAwMTAwQkQyMjU2
IC8qIE1lZGlhVHJhY2tTdXBwb3J0ZWRDb25zdHJhaW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdDMUMwRTAxQkZCNjAwMTAwQkQyMjU2IC8qIE1l
ZGlhVHJhY2tTdXBwb3J0ZWRDb25zdHJhaW50cy5oICovOyB9OwogCQkwN0MxQzBFNTFCRkI2MEVE
MDBCRDIyNTYgLyogUmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBvcnRlZENvbnN0cmFpbnRzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0MxQzBFNDFCRkI2
MEVEMDBCRDIyNTYgLyogUmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBvcnRlZENvbnN0cmFpbnRzLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJMDdDNTlC
NjgxN0Y3ODRCQTAwMEZCQ0JCIC8qIE1lZGlhU291cmNlU3RhdGVzLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3QzU5QjY1MTdGNzg0QkEwMDBGQkNC
QiAvKiBNZWRpYVNvdXJjZVN0YXRlcy5jcHAgKi87IH07Ci0JCTA3QzU5QjY5MTdGNzg0QkEwMDBG
QkNCQiAvKiBNZWRpYVNvdXJjZVN0YXRlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMDdDNTlCNjYxN0Y3ODRCQTAwMEZCQ0JCIC8qIE1lZGlhU291cmNl
U3RhdGVzLmggKi87IH07Ci0JCTA3QzU5QjZFMTdGNzk0RjYwMDBGQkNCQiAvKiBKU01lZGlhU291
cmNlU3RhdGVzQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDA3QzU5QjZEMTdGNzk0RjYwMDBGQkNCQiAvKiBKU01lZGlhU291cmNlU3RhdGVz
Q3VzdG9tLmNwcCAqLzsgfTsKLQkJMDdDNTlCNzExN0Y3OUM3QzAwMEZCQ0JCIC8qIEpTTWVkaWFT
b3VyY2VTdGF0ZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMDdDNTlCNkYxN0Y3OUM3QzAwMEZCQ0JCIC8qIEpTTWVkaWFTb3VyY2VTdGF0ZXMuY3Bw
ICovOyB9OwotCQkwN0M1OUI3MjE3Rjc5QzdDMDAwRkJDQkIgLyogSlNNZWRpYVNvdXJjZVN0YXRl
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdDNTlC
NzAxN0Y3OUM3QzAwMEZCQ0JCIC8qIEpTTWVkaWFTb3VyY2VTdGF0ZXMuaCAqLzsgfTsKKwkJMDdD
NTlCNjgxN0Y3ODRCQTAwMEZCQ0JCIC8qIE1lZGlhU291cmNlU2V0dGluZ3MuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdDNTlCNjUxN0Y3ODRCQTAw
MEZCQ0JCIC8qIE1lZGlhU291cmNlU2V0dGluZ3MuY3BwICovOyB9OworCQkwN0M1OUI2OTE3Rjc4
NEJBMDAwRkJDQkIgLyogTWVkaWFTb3VyY2VTZXR0aW5ncy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdDNTlCNjYxN0Y3ODRCQTAwMEZCQ0JCIC8qIE1l
ZGlhU291cmNlU2V0dGluZ3MuaCAqLzsgfTsKKwkJMDdDNTlCNkUxN0Y3OTRGNjAwMEZCQ0JCIC8q
IEpTTWVkaWFTdHJlYW1UcmFja0N1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwN0M1OUI2RDE3Rjc5NEY2MDAwRkJDQkIgLyogSlNNZWRpYVN0
cmVhbVRyYWNrQ3VzdG9tLmNwcCAqLzsgfTsKKwkJMDdDNTlCNzExN0Y3OUM3QzAwMEZCQ0JCIC8q
IEpTTWVkaWFTb3VyY2VTZXR0aW5ncy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwN0M1OUI2RjE3Rjc5QzdDMDAwRkJDQkIgLyogSlNNZWRpYVNvdXJj
ZVNldHRpbmdzLmNwcCAqLzsgfTsKKwkJMDdDNTlCNzIxN0Y3OUM3QzAwMEZCQ0JCIC8qIEpTTWVk
aWFTb3VyY2VTZXR0aW5ncy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMDdDNTlCNzAxN0Y3OUM3QzAwMEZCQ0JCIC8qIEpTTWVkaWFTb3VyY2VTZXR0aW5n
cy5oICovOyB9OwogCQkwN0M1OUI3NjE3RjdEMERCMDAwRkJDQkIgLyogQ2FwYWJpbGl0eVJhbmdl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0M1OUI3
NDE3RjdEMDlEMDAwRkJDQkIgLyogQ2FwYWJpbGl0eVJhbmdlLmggKi87IH07CiAJCTA3Q0ExMjBF
MTgyRDY3RDgwMEQxMjE5NyAvKiBKU1JUQ1BlZXJDb25uZWN0aW9uQ3VzdG9tLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3Q0ExMjBEMTgyRDY3RDgw
MEQxMjE5NyAvKiBKU1JUQ1BlZXJDb25uZWN0aW9uQ3VzdG9tLmNwcCAqLzsgfTsKIAkJMDdDRTc3
RDUxNjcxMkE2QTAwQzU1QTQ3IC8qIEluYmFuZFRleHRUcmFja1ByaXZhdGVDbGllbnQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3Q0U3N0Q0MTY3MTJB
NkEwMEM1NUE0NyAvKiBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQ2xpZW50LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTE4NTcsOCArMTg1Nyw4IEBA
CiAJCTRBNEY2NTcwMUFBOTk3RjEwMEUzOENERCAvKiBSZWFsdGltZU1lZGlhU291cmNlLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRBNEY2NTZCMUFB
OTk3RjEwMEUzOENERCAvKiBSZWFsdGltZU1lZGlhU291cmNlLmNwcCAqLzsgfTsKIAkJNEE0RjY1
NzExQUE5OTdGMTAwRTM4Q0REIC8qIFJlYWx0aW1lTWVkaWFTb3VyY2UuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRBNEY2NTZDMUFBOTk3RjEwMEUzOENE
RCAvKiBSZWFsdGltZU1lZGlhU291cmNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJNEE0RjY1NzIxQUE5OTdGMTAwRTM4Q0REIC8qIFJlYWx0aW1l
TWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDRBNEY2NTZEMUFBOTk3RjEwMEUzOENERCAvKiBSZWFsdGltZU1lZGlh
U291cmNlQ2FwYWJpbGl0aWVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKLQkJNEE0RjY1NzMxQUE5OTdGMTAwRTM4Q0REIC8qIFJlYWx0aW1lTWVkaWFT
b3VyY2VTdGF0ZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNEE0RjY1NkUxQUE5OTdGMTAwRTM4Q0REIC8qIFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0
ZXMuY3BwICovOyB9OwotCQk0QTRGNjU3NDFBQTk5N0YxMDBFMzhDREQgLyogUmVhbHRpbWVNZWRp
YVNvdXJjZVN0YXRlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNEE0RjY1NkYxQUE5OTdGMTAwRTM4Q0REIC8qIFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0
ZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0
QTRGNjU3MzFBQTk5N0YxMDBFMzhDREQgLyogUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRBNEY2NTZF
MUFBOTk3RjEwMEUzOENERCAvKiBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MuY3BwICovOyB9
OworCQk0QTRGNjU3NDFBQTk5N0YxMDBFMzhDREQgLyogUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRp
bmdzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QTRG
NjU2RjFBQTk5N0YxMDBFMzhDREQgLyogUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNEE1QTJBREIx
NjFFN0UwMDAwNTg4OUREIC8qIFdlYlNvY2tldEV4dGVuc2lvblBhcnNlci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QTVBMkFEOTE2MUU3RTAwMDA1
ODg5REQgLyogV2ViU29ja2V0RXh0ZW5zaW9uUGFyc2VyLmNwcCAqLzsgfTsKIAkJNEE1QTJBREMx
NjFFN0UwMDAwNTg4OUREIC8qIFdlYlNvY2tldEV4dGVuc2lvblBhcnNlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEE1QTJBREExNjFFN0UwMDAwNTg4
OUREIC8qIFdlYlNvY2tldEV4dGVuc2lvblBhcnNlci5oICovOyB9OwogCQk0QTZFOUZDMzEzQzE3
RDFEMDA0NkE3RjggLyogQ1NTRm9udEZlYXR1cmVWYWx1ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QTZFOUZDMTEzQzE3RDFEMDA0NkE3RjggLyog
Q1NTRm9udEZlYXR1cmVWYWx1ZS5jcHAgKi87IH07CkBAIC03NjEzLDEyICs3NjEzLDExIEBACiAJ
CTA3QzFDMEUxMUJGQjYwMDEwMEJEMjI1NiAvKiBNZWRpYVRyYWNrU3VwcG9ydGVkQ29uc3RyYWlu
dHMuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IE1lZGlhVHJhY2tTdXBwb3J0ZWRDb25zdHJh
aW50cy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3QzFDMEU0MUJGQjYwRUQw
MEJEMjI1NiAvKiBSZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBvcnRl
ZENvbnN0cmFpbnRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3QzFDMEU2MUJG
QjkwQTcwMEJEMjI1NiAvKiBKU01lZGlhVHJhY2tTdXBwb3J0ZWRDb25zdHJhaW50c0N1c3RvbS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU01lZGlhVHJhY2tTdXBw
b3J0ZWRDb25zdHJhaW50c0N1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTA3QzU5QjY1MTdGNzg0QkEwMDBGQkNCQiAvKiBNZWRpYVNvdXJjZVN0YXRlcy5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZWRpYVNvdXJjZVN0YXRlcy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTA3QzU5QjY2MTdGNzg0QkEwMDBGQkNCQiAvKiBN
ZWRpYVNvdXJjZVN0YXRlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRp
YVNvdXJjZVN0YXRlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwN0M1OUI2NzE3
Rjc4NEJBMDAwRkJDQkIgLyogTWVkaWFTb3VyY2VTdGF0ZXMuaWRsICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
cGF0aCA9IE1lZGlhU291cmNlU3RhdGVzLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJMDdDNTlCNkQxN0Y3OTRGNjAwMEZCQ0JCIC8qIEpTTWVkaWFTb3VyY2VTdGF0ZXNDdXN0b20u
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNNZWRpYVNvdXJjZVN0
YXRlc0N1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTA3QzU5QjZGMTdG
NzlDN0MwMDBGQkNCQiAvKiBKU01lZGlhU291cmNlU3RhdGVzLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTWVkaWFTb3VyY2VTdGF0ZXMuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQkwN0M1OUI3MDE3Rjc5QzdDMDAwRkJDQkIgLyogSlNNZWRpYVNv
dXJjZVN0YXRlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU01lZGlhU291
cmNlU3RhdGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3QzU5QjY1MTdGNzg0
QkEwMDBGQkNCQiAvKiBNZWRpYVNvdXJjZVNldHRpbmdzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlhU291cmNlU2V0dGluZ3MuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkwN0M1OUI2NjE3Rjc4NEJBMDAwRkJDQkIgLyogTWVkaWFTb3VyY2VT
ZXR0aW5ncy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYVNvdXJjZVNl
dHRpbmdzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3QzU5QjZEMTdGNzk0RjYw
MDBGQkNCQiAvKiBKU01lZGlhU3RyZWFtVHJhY2tDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSlNNZWRpYVN0cmVhbVRyYWNrQ3VzdG9tLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDdDNTlCNkYxN0Y3OUM3QzAwMEZCQ0JCIC8qIEpTTWVk
aWFTb3VyY2VTZXR0aW5ncy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBKU01lZGlhU291cmNlU2V0dGluZ3MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkwN0M1OUI3MDE3Rjc5QzdDMDAwRkJDQkIgLyogSlNNZWRpYVNvdXJjZVNldHRpbmdzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTWVkaWFTb3VyY2VTZXR0aW5ncy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwN0M1OUI3MzE3RjdEMDlEMDAwRkJDQkIgLyog
QWxsVmlkZW9DYXBhYmlsaXRpZXMuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEFsbFZpZGVv
Q2FwYWJpbGl0aWVzLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDdDNTlCNzQx
N0Y3RDA5RDAwMEZCQ0JCIC8qIENhcGFiaWxpdHlSYW5nZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBDYXBhYmlsaXR5UmFuZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMDdDNTlCNzUxN0Y3RDA5RDAwMEZCQ0JCIC8qIENhcGFiaWxpdHlSYW5nZS5pZGwgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBwYXRoID0gQ2FwYWJpbGl0eVJhbmdlLmlkbDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTkyODksOCArOTI4OCw4IEBACiAJCTRBNEY2NTZCMUFBOTk3RjEwMEUz
OENERCAvKiBSZWFsdGltZU1lZGlhU291cmNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFJlYWx0aW1lTWVkaWFTb3VyY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0QTRGNjU2QzFBQTk5N0YxMDBFMzhDREQgLyogUmVhbHRpbWVNZWRpYVNvdXJj
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWFsdGltZU1lZGlhU291cmNl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRBNEY2NTZEMUFBOTk3RjEwMEUzOENE
RCAvKiBSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNEE0RjY1NkUxQUE5OTdGMTAwRTM4Q0REIC8qIFJlYWx0
aW1lTWVkaWFTb3VyY2VTdGF0ZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCTRBNEY2NTZGMUFBOTk3RjEwMEUzOENERCAvKiBSZWFsdGltZU1lZGlhU291cmNl
U3RhdGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlYWx0aW1lTWVkaWFT
b3VyY2VTdGF0ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNEE0RjY1NkUxQUE5
OTdGMTAwRTM4Q0REIC8qIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3Mu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0QTRGNjU2RjFBQTk5N0YxMDBFMzhD
REQgLyogUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0QTVBMkFEOTE2MUU3RTAwMDA1ODg5REQgLyogV2ViU29ja2V0RXh0
ZW5zaW9uUGFyc2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdl
YlNvY2tldEV4dGVuc2lvblBhcnNlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTRBNUEyQURBMTYxRTdFMDAwMDU4ODlERCAvKiBXZWJTb2NrZXRFeHRlbnNpb25QYXJzZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU29ja2V0RXh0ZW5zaW9uUGFyc2Vy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRBNkU5RkMxMTNDMTdEMUQwMDQ2QTdG
OCAvKiBDU1NGb250RmVhdHVyZVZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IENTU0ZvbnRGZWF0dXJlVmFsdWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMTUxNjgsOSArMTUxNjcsOCBAQAogCQkJCTA3Mzk0RUM5MUJBQjJDRDcwMEJFOTlD
RCAvKiBNZWRpYURldmljZXNSZXF1ZXN0LmggKi8sCiAJCQkJNUUxNkEyRTIxQkZBNjRGQjAwMjlB
MjFFIC8qIE1lZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbi5jcHAgKi8sCiAJCQkJNUUxNkEyRTMx
QkZBNjRGQjAwMjlBMjFFIC8qIE1lZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbi5oICovLAotCQkJ
CTA3QzU5QjY1MTdGNzg0QkEwMDBGQkNCQiAvKiBNZWRpYVNvdXJjZVN0YXRlcy5jcHAgKi8sCi0J
CQkJMDdDNTlCNjYxN0Y3ODRCQTAwMEZCQ0JCIC8qIE1lZGlhU291cmNlU3RhdGVzLmggKi8sCi0J
CQkJMDdDNTlCNjcxN0Y3ODRCQTAwMEZCQ0JCIC8qIE1lZGlhU291cmNlU3RhdGVzLmlkbCAqLywK
KwkJCQkwN0M1OUI2NTE3Rjc4NEJBMDAwRkJDQkIgLyogTWVkaWFTb3VyY2VTZXR0aW5ncy5jcHAg
Ki8sCisJCQkJMDdDNTlCNjYxN0Y3ODRCQTAwMEZCQ0JCIC8qIE1lZGlhU291cmNlU2V0dGluZ3Mu
aCAqLywKIAkJCQkwNzIyMUI0QzE3Q0VDMzI3MDA4NDhFNTEgLyogTWVkaWFTdHJlYW0uY3BwICov
LAogCQkJCTA3MjIxQjREMTdDRUMzMjcwMDg0OEU1MSAvKiBNZWRpYVN0cmVhbS5oICovLAogCQkJ
CTA3MjIxQjRFMTdDRUMzMjcwMDg0OEU1MSAvKiBNZWRpYVN0cmVhbS5pZGwgKi8sCkBAIC0xNTI5
NCw4ICsxNTI5Miw4IEBACiAJCQkJNEE0RjY1NkQxQUE5OTdGMTAwRTM4Q0REIC8qIFJlYWx0aW1l
TWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMuaCAqLywKIAkJCQk0QTBGRkE5RjFBQUY1RUEyMDA2Mjgw
M0IgLyogUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAgKi8sCiAJCQkJNEEwRkZBQTAxQUFG
NUVBMjAwNjI4MDNCIC8qIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaCAqLywKLQkJCQk0QTRG
NjU2RTFBQTk5N0YxMDBFMzhDREQgLyogUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlcy5jcHAgKi8s
Ci0JCQkJNEE0RjY1NkYxQUE5OTdGMTAwRTM4Q0REIC8qIFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0
ZXMuaCAqLywKKwkJCQk0QTRGNjU2RTFBQTk5N0YxMDBFMzhDREQgLyogUmVhbHRpbWVNZWRpYVNv
dXJjZVNldHRpbmdzLmNwcCAqLywKKwkJCQk0QTRGNjU2RjFBQTk5N0YxMDBFMzhDREQgLyogUmVh
bHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzLmggKi8sCiAJCQkJMDdBQjk5NkQxOERBM0M3NDAwMTg3
NzFFIC8qIFJUQ0NvbmZpZ3VyYXRpb25Qcml2YXRlLmggKi8sCiAJCQkJMDcyMjFCQTIxN0NGMEFE
NDAwODQ4RTUxIC8qIFJUQ0RhdGFDaGFubmVsSGFuZGxlci5oICovLAogCQkJCTA3MjIxQkEzMTdD
RjBBRDQwMDg0OEU1MSAvKiBSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQuaCAqLywKQEAgLTE1
MzkxLDggKzE1Mzg5LDggQEAKIAkJCQkxNTdDQzI2MjFCN0MxQ0E0MDBEOEQwNzUgLyogSlNNZWRp
YURldmljZUluZm8uaCAqLywKIAkJCQkxNTczOUJCODFCNDIwMTIyMDBEMjU4QzEgLyogSlNNZWRp
YURldmljZXMuY3BwICovLAogCQkJCTE1NzM5QkI5MUI0MjAxMjIwMEQyNThDMSAvKiBKU01lZGlh
RGV2aWNlcy5oICovLAotCQkJCTA3QzU5QjZGMTdGNzlDN0MwMDBGQkNCQiAvKiBKU01lZGlhU291
cmNlU3RhdGVzLmNwcCAqLywKLQkJCQkwN0M1OUI3MDE3Rjc5QzdDMDAwRkJDQkIgLyogSlNNZWRp
YVNvdXJjZVN0YXRlcy5oICovLAorCQkJCTA3QzU5QjZGMTdGNzlDN0MwMDBGQkNCQiAvKiBKU01l
ZGlhU291cmNlU2V0dGluZ3MuY3BwICovLAorCQkJCTA3QzU5QjcwMTdGNzlDN0MwMDBGQkNCQiAv
KiBKU01lZGlhU291cmNlU2V0dGluZ3MuaCAqLywKIAkJCQkwNzI3N0U0MDE3RDAxOENDMDAxNTUz
NEQgLyogSlNNZWRpYVN0cmVhbS5jcHAgKi8sCiAJCQkJMDcyNzdFNDExN0QwMThDQzAwMTU1MzRE
IC8qIEpTTWVkaWFTdHJlYW0uaCAqLywKIAkJCQkwNzI3N0U0MjE3RDAxOENDMDAxNTUzNEQgLyog
SlNNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcCAqLywKQEAgLTIyMTY4LDcgKzIy
MTY2LDcgQEAKIAkJCQlCQ0UxQzQzRjBEOTgzMEY0MDAzQjAyRjIgLyogSlNMb2NhdGlvbkN1c3Rv
bS5jcHAgKi8sCiAJCQkJQUQ3MjZGRTcxNkQ5RjIwNDAwM0E0RTZEIC8qIEpTTWVkaWFMaXN0Q3Vz
dG9tLmggKi8sCiAJCQkJMDc3QjY0MEUxQjhGNTM3NTAwM0U5QUQ1IC8qIEpTTWVkaWFTZXNzaW9u
Q3VzdG9tLmNwcCAqLywKLQkJCQkwN0M1OUI2RDE3Rjc5NEY2MDAwRkJDQkIgLyogSlNNZWRpYVNv
dXJjZVN0YXRlc0N1c3RvbS5jcHAgKi8sCisJCQkJMDdDNTlCNkQxN0Y3OTRGNjAwMEZCQ0JCIC8q
IEpTTWVkaWFTdHJlYW1UcmFja0N1c3RvbS5jcHAgKi8sCiAJCQkJMDcwNTg1MTYxN0ZCNDBFOTAw
NUYyQkNCIC8qIEpTTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXNDdXN0b20uY3BwICovLAogCQkJCUUx
QTVGOTlBMEU3RUFBMjUwMEFGODVFQSAvKiBKU01lc3NhZ2VDaGFubmVsQ3VzdG9tLmNwcCAqLywK
IAkJCQkwN0MxQzBFNjFCRkI5MEE3MDBCRDIyNTYgLyogSlNNZWRpYVRyYWNrU3VwcG9ydGVkQ29u
c3RyYWludHNDdXN0b20uY3BwICovLApAQCAtMjYyOTEsNyArMjYyODksNyBAQAogCQkJCUQzQTk0
QTQ3MTIyREM0MEYwMEEzN0JCQyAvKiBKU01lZGlhUXVlcnlMaXN0LmggaW4gSGVhZGVycyAqLywK
IAkJCQk3QzUzNDNGRDE3Qjc0QjYzMDA0MjMyRjAgLyogSlNNZWRpYVF1ZXJ5TGlzdExpc3RlbmVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDlERTE3NTE3QUFDNzRDMDBFQTM4NkQgLyogSlNNZWRp
YVNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMDdDNTlCNzIxN0Y3OUM3QzAwMEZCQ0JCIC8q
IEpTTWVkaWFTb3VyY2VTdGF0ZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTA3QzU5QjcyMTdGNzlD
N0MwMDBGQkNCQiAvKiBKU01lZGlhU291cmNlU2V0dGluZ3MuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTA3Mjc3RTREMTdEMDE4Q0MwMDE1NTM0RCAvKiBKU01lZGlhU3RyZWFtLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwNzI3N0U0RjE3RDAxOENDMDAxNTUzNEQgLyogSlNNZWRpYVN0cmVhbUF1ZGlvRGVz
dGluYXRpb25Ob2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQlGREJENDgwRDE1OUJDNjg3MDA5M0VC
NEYgLyogSlNNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0y
Njc4MSw3ICsyNjc3OSw3IEBACiAJCQkJQ0RDOEI1QTcxODA0NzRGNzAwMTZFNjg1IC8qIE1lZGlh
U291cmNlUHJpdmF0ZUFWRk9iakMuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEREMxRTdBMThBOTUy
RjMwMDI3QTlENCAvKiBNZWRpYVNvdXJjZVByaXZhdGVDbGllbnQuaCBpbiBIZWFkZXJzICovLAog
CQkJCUNENjFGRTY4MTc5NEFBREIwMDQxMDFFQiAvKiBNZWRpYVNvdXJjZVJlZ2lzdHJ5LmggaW4g
SGVhZGVycyAqLywKLQkJCQkwN0M1OUI2OTE3Rjc4NEJBMDAwRkJDQkIgLyogTWVkaWFTb3VyY2VT
dGF0ZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTA3QzU5QjY5MTdGNzg0QkEwMDBGQkNCQiAvKiBN
ZWRpYVNvdXJjZVNldHRpbmdzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzhFMDkxNTE3RDE0RDFD
MDA0MjBBQTEgLyogTWVkaWFTdHJlYW0uaCBpbiBIZWFkZXJzICovLAogCQkJCTA3OEUwOTRDMTdE
MTcwOTYwMDQyMEFBMSAvKiBNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwNzgzMjI4NTE4MDEzRUQ4MDA5OTlFMEMgLyogTWVkaWFTdHJlYW1BdWRp
b1NvdXJjZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNzEwNSw3ICsyNzEwMyw3IEBACiAJCQkJNEE0
RjY1NzIxQUE5OTdGMTAwRTM4Q0REIC8qIFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTRBMEZGQUEyMUFBRjVFQTIwMDYyODAzQiAvKiBSZWFsdGlt
ZU1lZGlhU291cmNlQ2VudGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0QTBGRkFBNjFBQUY1RUY2
MDA2MjgwM0IgLyogUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYy5oIGluIEhlYWRlcnMgKi8s
Ci0JCQkJNEE0RjY1NzQxQUE5OTdGMTAwRTM4Q0REIC8qIFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0
ZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTRBNEY2NTc0MUFBOTk3RjEwMEUzOENERCAvKiBSZWFs
dGltZU1lZGlhU291cmNlU2V0dGluZ3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3QzFDMEU1MUJG
QjYwRUQwMEJEMjI1NiAvKiBSZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMu
aCBpbiBIZWFkZXJzICovLAogCQkJCUJDNDM2OEU4MEMyMjZFMzIwMDVFRkI1RiAvKiBSZWN0Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlGRDQ1QTk1ODE3NUQ0MTRDMDBDMjFFQzggLyogUmVjdGFuZ2xl
U2hhcGUuaCBpbiBIZWFkZXJzICovLApAQCAtMjk5NzIsOCArMjk5NzAsOCBAQAogCQkJCUM5REFE
QkNCMUIxRDNCOTcwMDFGMTdEOCAvKiBKU01lZGlhU2Vzc2lvbi5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkwNzdCNjQwRjFCOEY1RDZCMDAzRTlBRDUgLyogSlNNZWRpYVNlc3Npb25DdXN0b20uY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQ0Q5REUxNzQxN0FBQzc0QzAwRUEzODZEIC8qIEpTTWVkaWFT
b3VyY2UuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMDdDNTlCNzExN0Y3OUM3QzAwMEZCQ0JCIC8q
IEpTTWVkaWFTb3VyY2VTdGF0ZXMuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMDdDNTlCNkUxN0Y3
OTRGNjAwMEZCQ0JCIC8qIEpTTWVkaWFTb3VyY2VTdGF0ZXNDdXN0b20uY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJMDdDNTlCNzExN0Y3OUM3QzAwMEZCQ0JCIC8qIEpTTWVkaWFTb3VyY2VTZXR0aW5n
cy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwN0M1OUI2RTE3Rjc5NEY2MDAwRkJDQkIgLyogSlNN
ZWRpYVN0cmVhbVRyYWNrQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA3Mjc3RTRDMTdE
MDE4Q0MwMDE1NTM0RCAvKiBKU01lZGlhU3RyZWFtLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA3
Mjc3RTRFMTdEMDE4Q0MwMDE1NTM0RCAvKiBKU01lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5v
ZGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkRCRDQ4MEMxNTlCQzY4NzAwOTNFQjRGIC8qIEpT
TWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zMDQ4Nyw3
ICszMDQ4NSw3IEBACiAJCQkJQ0QzQTQ5NUUxN0E5RDAxQjAwMjc0RTQyIC8qIE1lZGlhU291cmNl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNEQzhCNUE2MTgwNDc0RjcwMDE2RTY4NSAvKiBNZWRp
YVNvdXJjZVByaXZhdGVBVkZPYmpDLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0Q2MUZFNjcxNzk0
QUFEQjAwNDEwMUVCIC8qIE1lZGlhU291cmNlUmVnaXN0cnkuY3BwIGluIFNvdXJjZXMgKi8sCi0J
CQkJMDdDNTlCNjgxN0Y3ODRCQTAwMEZCQ0JCIC8qIE1lZGlhU291cmNlU3RhdGVzLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCTA3QzU5QjY4MTdGNzg0QkEwMDBGQkNCQiAvKiBNZWRpYVNvdXJjZVNl
dHRpbmdzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA3OEUwOEZGMTdEMTRDRUUwMDQyMEFBMSAv
KiBNZWRpYVN0cmVhbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwNzhFMDk0QjE3RDE3MDk2MDA0
MjBBQTEgLyogTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkwNzgzMjI4NDE4MDEzRUQ4MDA5OTlFMEMgLyogTWVkaWFTdHJlYW1BdWRpb1NvdXJj
ZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMwNzE3LDcgKzMwNzE1LDcgQEAKIAkJCQk0QTRGNjU3
MDFBQTk5N0YxMDBFMzhDREQgLyogUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk0QTBGRkFBMTFBQUY1RUEyMDA2MjgwM0IgLyogUmVhbHRpbWVNZWRpYVNvdXJjZUNl
bnRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0QTBGRkFBNTFBQUY1RUY2MDA2MjgwM0IgLyog
UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYy5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk0QTRG
NjU3MzFBQTk5N0YxMDBFMzhDREQgLyogUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlcy5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQk0QTRGNjU3MzFBQTk5N0YxMDBFMzhDREQgLyogUmVhbHRpbWVNZWRp
YVNvdXJjZVNldHRpbmdzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZENDVBOTVBMTc1RDQxNzEw
MEMyMUVDOCAvKiBSZWN0YW5nbGVTaGFwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0FCNDE4
MTEzRTM1NkU4MDBEOEFBRjMgLyogUmVnaW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg1MDMx
QjRCMEE0NEVGQzcwMEY5OTJFMCAvKiBSZWdpc3RlcmVkRXZlbnRMaXN0ZW5lci5jcHAgaW4gU291
cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVkaWFTb3VyY2VT
dGF0ZXNDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTTWVkaWFTb3VyY2VTdGF0ZXNDdXN0b20uY3BwCShyZXZpc2lvbiAxOTI5MzApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lZGlhU291cmNlU3RhdGVzQ3VzdG9tLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMSw5MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaWYgRU5BQkxFKE1FRElB
X1NUUkVBTSkKLQotI2luY2x1ZGUgIkpTTWVkaWFTb3VyY2VTdGF0ZXMuaCIKLQotI2luY2x1ZGUg
IkpTRE9NQmluZGluZy5oIgotCi11c2luZyBuYW1lc3BhY2UgSlNDOwotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLUpTVmFsdWUgSlNNZWRpYVNvdXJjZVN0YXRlczo6d2lkdGgoRXhlY1N0YXRlJikg
Y29uc3QKLXsKLSAgICBpZiAoIXdyYXBwZWQoKS5oYXNWaWRlb1NvdXJjZSgpKQotICAgICAgICBy
ZXR1cm4ganNVbmRlZmluZWQoKTsKLQotICAgIHJldHVybiBqc051bWJlcih3cmFwcGVkKCkud2lk
dGgoKSk7Ci19Ci0KLUpTVmFsdWUgSlNNZWRpYVNvdXJjZVN0YXRlczo6aGVpZ2h0KEV4ZWNTdGF0
ZSYpIGNvbnN0Ci17Ci0gICAgaWYgKCF3cmFwcGVkKCkuaGFzVmlkZW9Tb3VyY2UoKSkKLSAgICAg
ICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0gICAgCi0gICAgcmV0dXJuIGpzTnVtYmVyKHdyYXBw
ZWQoKS5oZWlnaHQoKSk7Ci19Ci0KLUpTVmFsdWUgSlNNZWRpYVNvdXJjZVN0YXRlczo6ZnJhbWVS
YXRlKEV4ZWNTdGF0ZSYpIGNvbnN0Ci17Ci0gICAgaWYgKCF3cmFwcGVkKCkuaGFzVmlkZW9Tb3Vy
Y2UoKSkKLSAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0gICAgCi0gICAgcmV0dXJuIGpz
TnVtYmVyKHdyYXBwZWQoKS5mcmFtZVJhdGUoKSk7Ci19Ci0KLUpTVmFsdWUgSlNNZWRpYVNvdXJj
ZVN0YXRlczo6YXNwZWN0UmF0aW8oRXhlY1N0YXRlJikgY29uc3QKLXsKLSAgICBpZiAoIXdyYXBw
ZWQoKS5oYXNWaWRlb1NvdXJjZSgpKQotICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLSAg
ICAKLSAgICByZXR1cm4ganNOdW1iZXIod3JhcHBlZCgpLmFzcGVjdFJhdGlvKCkpOwotfQotCi1K
U1ZhbHVlIEpTTWVkaWFTb3VyY2VTdGF0ZXM6OmZhY2luZ01vZGUoRXhlY1N0YXRlJiBzdGF0ZSkg
Y29uc3QKLXsKLSAgICBpZiAoIXdyYXBwZWQoKS5oYXNWaWRlb1NvdXJjZSgpKQotICAgICAgICBy
ZXR1cm4ganNVbmRlZmluZWQoKTsKLQotICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbW9kZSA9IHdy
YXBwZWQoKS5mYWNpbmdNb2RlKCk7Ci0gICAgaWYgKG1vZGUuaXNFbXB0eSgpKQotICAgICAgICBy
ZXR1cm4ganNVbmRlZmluZWQoKTsKLSAgICAKLSAgICByZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUo
JnN0YXRlLCB3cmFwcGVkKCkuZmFjaW5nTW9kZSgpKTsKLX0KLQotSlNWYWx1ZSBKU01lZGlhU291
cmNlU3RhdGVzOjp2b2x1bWUoRXhlY1N0YXRlJikgY29uc3QKLXsKLSAgICBpZiAod3JhcHBlZCgp
Lmhhc1ZpZGVvU291cmNlKCkpCi0gICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotICAgIAot
ICAgIHJldHVybiBqc051bWJlcih3cmFwcGVkKCkudm9sdW1lKCkpOwotfQotCi19IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCi0KLSNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNNZWRpYVN0cmVhbVRyYWNrQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU01lZGlhU3RyZWFtVHJhY2tDdXN0b20uY3BwCShyZXZpc2lvbiAwKQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZWRpYVN0cmVhbVRyYWNrQ3VzdG9tLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDgwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpT
TWVkaWFTdHJlYW1UcmFjay5oIgorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1
ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKKyNpbmNsdWRl
ICJNZWRpYVNvdXJjZVNldHRpbmdzLmgiCisjaW5jbHVkZSA8cnVudGltZS9KU09iamVjdC5oPgor
I2luY2x1ZGUgPHJ1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuaD4KKwordXNpbmcgbmFtZXNwYWNl
IEpTQzsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitKU0M6OkpTVmFsdWUgSlNNZWRpYVN0cmVh
bVRyYWNrOjpnZXRTZXR0aW5ncyhFeGVjU3RhdGUmIHN0YXRlKQoreworICAgIEpTVmFsdWUgdGhp
c1ZhbHVlID0gc3RhdGUudGhpc1ZhbHVlKCk7CisgICAgSlNNZWRpYVN0cmVhbVRyYWNrKiBjYXN0
ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU01lZGlhU3RyZWFtVHJhY2sqPih0aGlzVmFsdWUpOwor
ICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjpk
ZWNvZGUodGhyb3dUaGlzVHlwZUVycm9yKHN0YXRlLCAiTWVkaWFTdHJlYW1UcmFjayIsICJnZXRT
ZXR0aW5ncyIpKTsKKworICAgIEpTT2JqZWN0KiBvYmplY3QgPSBjb25zdHJ1Y3RFbXB0eU9iamVj
dCgmc3RhdGUpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CisgICAg
UmVmUHRyPE1lZGlhU291cmNlU2V0dGluZ3M+IHNldHRpbmdzID0gV1RGOjpnZXRQdHIoaW1wbC5n
ZXRTZXR0aW5ncygpKTsKKworICAgIGlmIChzZXR0aW5ncy0+c3VwcG9ydHNXaWR0aCgpKQorICAg
ICAgICBvYmplY3QtPnB1dERpcmVjdChzdGF0ZS52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KCZzdGF0ZSwgIndpZHRoIiksIGpzTnVtYmVyKHNldHRpbmdzLT53aWR0aCgpKSwgRG9udERlbGV0
ZSB8IFJlYWRPbmx5KTsKKyAgICBpZiAoc2V0dGluZ3MtPnN1cHBvcnRzSGVpZ2h0KCkpCisgICAg
ICAgIG9iamVjdC0+cHV0RGlyZWN0KHN0YXRlLnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJpbmco
JnN0YXRlLCAiaGVpZ2h0IiksIGpzTnVtYmVyKHNldHRpbmdzLT5oZWlnaHQoKSksIERvbnREZWxl
dGUgfCBSZWFkT25seSk7CisgICAgaWYgKHNldHRpbmdzLT5zdXBwb3J0c0FzcGVjdFJhdGlvKCkp
CisgICAgICAgIG9iamVjdC0+cHV0RGlyZWN0KHN0YXRlLnZtKCksIElkZW50aWZpZXI6OmZyb21T
dHJpbmcoJnN0YXRlLCAiYXNwZWN0UmF0aW8iKSwganNEb3VibGVOdW1iZXIoc2V0dGluZ3MtPmFz
cGVjdFJhdGlvKCkpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOworICAgIGlmIChzZXR0aW5ncy0+
c3VwcG9ydHNGcmFtZVJhdGUoKSkKKyAgICAgICAgb2JqZWN0LT5wdXREaXJlY3Qoc3RhdGUudm0o
KSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmc3RhdGUsICJmcmFtZVJhdGUiKSwganNEb3VibGVO
dW1iZXIoc2V0dGluZ3MtPmZyYW1lUmF0ZSgpKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKKyAg
ICBpZiAoc2V0dGluZ3MtPnN1cHBvcnRzRmFjaW5nTW9kZSgpKQorICAgICAgICBvYmplY3QtPnB1
dERpcmVjdChzdGF0ZS52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZzdGF0ZSwgImZhY2lu
Z01vZGUiKSwganNTdHJpbmdXaXRoQ2FjaGUoJnN0YXRlLCBzZXR0aW5ncy0+ZmFjaW5nTW9kZSgp
KSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKKyAgICBpZiAoc2V0dGluZ3MtPnN1cHBvcnRzVm9s
dW1lKCkpCisgICAgICAgIG9iamVjdC0+cHV0RGlyZWN0KHN0YXRlLnZtKCksIElkZW50aWZpZXI6
OmZyb21TdHJpbmcoJnN0YXRlLCAidm9sdW1lIiksIGpzRG91YmxlTnVtYmVyKHNldHRpbmdzLT52
b2x1bWUoKSksIERvbnREZWxldGUgfCBSZWFkT25seSk7CisgICAgaWYgKHNldHRpbmdzLT5zdXBw
b3J0c1NhbXBsZVJhdGUoKSkKKyAgICAgICAgb2JqZWN0LT5wdXREaXJlY3Qoc3RhdGUudm0oKSwg
SWRlbnRpZmllcjo6ZnJvbVN0cmluZygmc3RhdGUsICJzYW1wbGVSYXRlIiksIGpzTnVtYmVyKHNl
dHRpbmdzLT5zYW1wbGVSYXRlKCkpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOworICAgIGlmIChz
ZXR0aW5ncy0+c3VwcG9ydHNTYW1wbGVTaXplKCkpCisgICAgICAgIG9iamVjdC0+cHV0RGlyZWN0
KHN0YXRlLnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnN0YXRlLCAic2FtcGxlU2l6ZSIp
LCBqc051bWJlcihzZXR0aW5ncy0+c2FtcGxlU2l6ZSgpKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5
KTsKKyAgICBpZiAoc2V0dGluZ3MtPnN1cHBvcnRzRWNob0NhbmNlbGxhdGlvbigpKQorICAgICAg
ICBvYmplY3QtPnB1dERpcmVjdChzdGF0ZS52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZz
dGF0ZSwgImVjaG9DYW5jZWxsYXRpb24iKSwganNCb29sZWFuKHNldHRpbmdzLT5lY2hvQ2FuY2Vs
bGF0aW9uKCkpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOworICAgIGlmIChzZXR0aW5ncy0+c3Vw
cG9ydHNEZXZpY2VJZCgpKQorICAgICAgICBvYmplY3QtPnB1dERpcmVjdChzdGF0ZS52bSgpLCBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZzdGF0ZSwgImRldmljZUlkIiksIGpzU3RyaW5nV2l0aENh
Y2hlKCZzdGF0ZSwgc2V0dGluZ3MtPmRldmljZUlkKCkpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkp
OworICAgIGlmIChzZXR0aW5ncy0+c3VwcG9ydHNHcm91cElkKCkpCisgICAgICAgIG9iamVjdC0+
cHV0RGlyZWN0KHN0YXRlLnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnN0YXRlLCAiZ3Jv
dXBJZCIpLCBqc1N0cmluZ1dpdGhDYWNoZSgmc3RhdGUsIHNldHRpbmdzLT5ncm91cElkKCkpLCBE
b250RGVsZXRlIHwgUmVhZE9ubHkpOworICAgIAorICAgIHJldHVybiBvYmplY3Q7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVByaXZhdGUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtUHJpdmF0ZS5jcHAJ
KHJldmlzaW9uIDE5MjkzMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L01lZGlhU3RyZWFtUHJpdmF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwNCw5ICsyMDQsOSBA
QCBGbG9hdFNpemUgTWVkaWFTdHJlYW1Qcml2YXRlOjppbnRyaW5zaWNTCiAgICAgRmxvYXRTaXpl
IHNpemU7CiAKICAgICBpZiAobV9hY3RpdmVWaWRlb1RyYWNrKSB7Ci0gICAgICAgIGNvbnN0IFJl
YWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXMmIHN0YXRlcyA9IG1fYWN0aXZlVmlkZW9UcmFjay0+c291
cmNlKCktPnN0YXRlcygpOwotICAgICAgICBzaXplLnNldFdpZHRoKHN0YXRlcy53aWR0aCgpKTsK
LSAgICAgICAgc2l6ZS5zZXRIZWlnaHQoc3RhdGVzLmhlaWdodCgpKTsKKyAgICAgICAgY29uc3Qg
UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJiBzZXR0aW5nID0gbV9hY3RpdmVWaWRlb1RyYWNr
LT5zZXR0aW5ncygpOworICAgICAgICBzaXplLnNldFdpZHRoKHNldHRpbmcud2lkdGgoKSk7Cisg
ICAgICAgIHNpemUuc2V0SGVpZ2h0KHNldHRpbmcuaGVpZ2h0KCkpOwogICAgIH0KIAogICAgIHJl
dHVybiBzaXplOwpAQCAtMjY4LDcgKzI2OCw3IEBAIHZvaWQgTWVkaWFTdHJlYW1Qcml2YXRlOjp0
cmFja011dGVkQ2hhbmcKICAgICB9KTsKIH0KIAotdm9pZCBNZWRpYVN0cmVhbVByaXZhdGU6OnRy
YWNrU3RhdGVzQ2hhbmdlZChNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYpCit2b2lkIE1lZGlhU3Ry
ZWFtUHJpdmF0ZTo6dHJhY2tTZXR0aW5nc0NoYW5nZWQoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUm
KQogewogICAgIGNoYXJhY3RlcmlzdGljc0NoYW5nZWQoKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtUHJpdmF0ZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtUHJpdmF0
ZS5oCShyZXZpc2lvbiAxOTI5MzApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9NZWRpYVN0cmVhbVByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTA0LDcgKzEwNCw3
IEBAIHByaXZhdGU6CiAgICAgLy8gTWVkaWFTdHJlYW1UcmFja1ByaXZhdGU6Ok9ic2VydmVyCiAg
ICAgdm9pZCB0cmFja0VuZGVkKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJikgb3ZlcnJpZGU7CiAg
ICAgdm9pZCB0cmFja011dGVkQ2hhbmdlZChNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYpIG92ZXJy
aWRlOwotICAgIHZvaWQgdHJhY2tTdGF0ZXNDaGFuZ2VkKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRl
Jikgb3ZlcnJpZGU7CisgICAgdm9pZCB0cmFja1NldHRpbmdzQ2hhbmdlZChNZWRpYVN0cmVhbVRy
YWNrUHJpdmF0ZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgdHJhY2tFbmFibGVkQ2hhbmdlZChNZWRp
YVN0cmVhbVRyYWNrUHJpdmF0ZSYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBjaGFyYWN0ZXJpc3Rp
Y3NDaGFuZ2VkKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9N
ZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUuY3BwCShyZXZpc2lv
biAxOTI5MzApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0
cmVhbVRyYWNrUHJpdmF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDggKzMyLDcgQEAKICNp
bmNsdWRlICJBdWRpb1NvdXJjZVByb3ZpZGVyLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0
LmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgotI2luY2x1ZGUgIk1lZGlhU291cmNlU3RhdGVzLmgi
Ci0jaW5jbHVkZSAiTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMuaCIKKyNpbmNsdWRlICJNZWRpYVNv
dXJjZVNldHRpbmdzLmgiCiAjaW5jbHVkZSAiVVVJRC5oIgogI2luY2x1ZGUgPHd0Zi9OZXZlckRl
c3Ryb3llZC5oPgogCkBAIC0xNDksOSArMTQ4LDkgQEAgUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+
IE1lZGlhU3RyZWFtVHJhYwogICAgIHJldHVybiBtX2NvbnN0cmFpbnRzOwogfQogCi1jb25zdCBS
ZWFsdGltZU1lZGlhU291cmNlU3RhdGVzJiBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6c3RhdGVz
KCkgY29uc3QKK2NvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYgTWVkaWFTdHJlYW1U
cmFja1ByaXZhdGU6OnNldHRpbmdzKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9zb3VyY2UtPnN0
YXRlcygpOworICAgIHJldHVybiBtX3NvdXJjZS0+c2V0dGluZ3MoKTsKIH0KIAogUmVmUHRyPFJl
YWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM+IE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjpj
YXBhYmlsaXRpZXMoKSBjb25zdApAQCAtMjAyLDEwICsyMDEsMTAgQEAgdm9pZCBNZWRpYVN0cmVh
bVRyYWNrUHJpdmF0ZTo6c291cmNlTXV0ZQogICAgICAgICBvYnNlcnZlci0+dHJhY2tNdXRlZENo
YW5nZWQoKnRoaXMpOwogfQogCi12b2lkIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjpzb3VyY2VT
dGF0ZXNDaGFuZ2VkKCkKK3ZvaWQgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGU6OnNvdXJjZVNldHRp
bmdzQ2hhbmdlZCgpCiB7CiAgICAgZm9yIChhdXRvJiBvYnNlcnZlciA6IG1fb2JzZXJ2ZXJzKQot
ICAgICAgICBvYnNlcnZlci0+dHJhY2tTdGF0ZXNDaGFuZ2VkKCp0aGlzKTsKKyAgICAgICAgb2Jz
ZXJ2ZXItPnRyYWNrU2V0dGluZ3NDaGFuZ2VkKCp0aGlzKTsKIH0KIAogYm9vbCBNZWRpYVN0cmVh
bVRyYWNrUHJpdmF0ZTo6cHJldmVudFNvdXJjZUZyb21TdG9wcGluZygpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3Ry
ZWFtVHJhY2tQcml2YXRlLmgJKHJldmlzaW9uIDE5MjkzMCkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tQcml2YXRlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBBdWRpb1Nv
dXJjZVByb3ZpZGVyOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0OwotY2xhc3MgTWVkaWFTb3VyY2VT
dGF0ZXM7CitjbGFzcyBNZWRpYVNvdXJjZVNldHRpbmdzOwogY2xhc3MgUmVhbHRpbWVNZWRpYVNv
dXJjZUNhcGFiaWxpdGllczsKIAogY2xhc3MgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUgOiBwdWJs
aWMgUmVmQ291bnRlZDxNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZT4sIHB1YmxpYyBSZWFsdGltZU1l
ZGlhU291cmNlOjpPYnNlcnZlciB7CkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKIAogICAgICAg
ICB2aXJ0dWFsIHZvaWQgdHJhY2tFbmRlZChNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYpID0gMDsK
ICAgICAgICAgdmlydHVhbCB2b2lkIHRyYWNrTXV0ZWRDaGFuZ2VkKE1lZGlhU3RyZWFtVHJhY2tQ
cml2YXRlJikgPSAwOwotICAgICAgICB2aXJ0dWFsIHZvaWQgdHJhY2tTdGF0ZXNDaGFuZ2VkKE1l
ZGlhU3RyZWFtVHJhY2tQcml2YXRlJikgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgdHJhY2tT
ZXR0aW5nc0NoYW5nZWQoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmKSA9IDA7CiAgICAgICAgIHZp
cnR1YWwgdm9pZCB0cmFja0VuYWJsZWRDaGFuZ2VkKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJikg
PSAwOwogICAgIH07CiAgICAgCkBAIC04NSw3ICs4NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGFk
ZE9ic2VydmVyKE9ic2VydmVyJik7CiAgICAgdm9pZCByZW1vdmVPYnNlcnZlcihPYnNlcnZlciYp
OwogCi0gICAgY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlcyYgc3RhdGVzKCkgY29uc3Q7
CisgICAgY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJiBzZXR0aW5ncygpIGNvbnN0
OwogICAgIFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzPiBjYXBhYmlsaXRp
ZXMoKSBjb25zdDsKIAogICAgIFJlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiBjb25zdHJhaW50cygp
IGNvbnN0OwpAQCAtMTAyLDcgKzEwMiw3IEBAIHByaXZhdGU6CiAgICAgLy8gUmVhbHRpbWVNZWRp
YVNvdXJjZU9ic2VydmVyCiAgICAgdm9pZCBzb3VyY2VTdG9wcGVkKCkgb3ZlcnJpZGUgZmluYWw7
CiAgICAgdm9pZCBzb3VyY2VNdXRlZENoYW5nZWQoKSBvdmVycmlkZSBmaW5hbDsKLSAgICB2b2lk
IHNvdXJjZVN0YXRlc0NoYW5nZWQoKSBvdmVycmlkZSBmaW5hbDsKKyAgICB2b2lkIHNvdXJjZVNl
dHRpbmdzQ2hhbmdlZCgpIG92ZXJyaWRlIGZpbmFsOwogICAgIGJvb2wgcHJldmVudFNvdXJjZUZy
b21TdG9wcGluZygpIG92ZXJyaWRlIGZpbmFsOwogCiAgICAgVmVjdG9yPE9ic2VydmVyKj4gbV9v
YnNlcnZlcnM7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFs
dGltZU1lZGlhU291cmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmNwcAkocmV2aXNpb24gMTkyOTMwKQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJj
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk1LDEwICs5NSwxMCBAQCB2b2lkIFJlYWx0aW1lTWVk
aWFTb3VyY2U6OnNldE11dGVkKGJvb2wgCiAgICAgICAgIG9ic2VydmVyLT5zb3VyY2VNdXRlZENo
YW5nZWQoKTsKIH0KIAotdm9pZCBSZWFsdGltZU1lZGlhU291cmNlOjpzdGF0ZXNEaWRDaGFuZ2Vk
KCkKK3ZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZTo6c2V0dGluZ3NEaWRDaGFuZ2VkKCkKIHsKICAg
ICBmb3IgKGF1dG8mIG9ic2VydmVyIDogbV9vYnNlcnZlcnMpCi0gICAgICAgIG9ic2VydmVyLT5z
b3VyY2VTdGF0ZXNDaGFuZ2VkKCk7CisgICAgICAgIG9ic2VydmVyLT5zb3VyY2VTZXR0aW5nc0No
YW5nZWQoKTsKIH0KIAogYm9vbCBSZWFsdGltZU1lZGlhU291cmNlOjpyZWFkb25seSgpIGNvbnN0
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlh
U291cmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5oCShyZXZpc2lvbiAxOTI5MzApCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTUxLDcgKzUxLDcgQEAgY2xhc3MgRmxvYXRSZWN0OwogY2xhc3MgR3JhcGhpY3ND
b250ZXh0OwogY2xhc3MgTWVkaWFDb25zdHJhaW50czsKIGNsYXNzIE1lZGlhU3RyZWFtUHJpdmF0
ZTsKLWNsYXNzIFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXM7CitjbGFzcyBSZWFsdGltZU1lZGlh
U291cmNlU2V0dGluZ3M7CiAKIGNsYXNzIFJlYWx0aW1lTWVkaWFTb3VyY2UgOiBwdWJsaWMgUmVm
Q291bnRlZDxSZWFsdGltZU1lZGlhU291cmNlPiB7CiBwdWJsaWM6CkBAIC02Miw3ICs2Miw3IEBA
IHB1YmxpYzoKICAgICAgICAgLy8gU291cmNlIHN0YXRlIGNoYW5nZXMuCiAgICAgICAgIHZpcnR1
YWwgdm9pZCBzb3VyY2VTdG9wcGVkKCkgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgc291cmNl
TXV0ZWRDaGFuZ2VkKCkgPSAwOwotICAgICAgICB2aXJ0dWFsIHZvaWQgc291cmNlU3RhdGVzQ2hh
bmdlZCgpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIHNvdXJjZVNldHRpbmdzQ2hhbmdlZCgp
ID0gMDsKIAogICAgICAgICAvLyBPYnNlcnZlciBzdGF0ZSBxdWVyaWVzLgogICAgICAgICB2aXJ0
dWFsIGJvb2wgcHJldmVudFNvdXJjZUZyb21TdG9wcGluZygpID0gMDsKQEAgLTg1LDggKzg1LDgg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRGaXRuZXNzU2NvcmUoY29uc3QgdW5zaWdu
ZWQgZml0bmVzc1Njb3JlKSB7IG1fZml0bmVzc1Njb3JlID0gZml0bmVzc1Njb3JlOyB9CiAKICAg
ICB2aXJ0dWFsIFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzPiBjYXBhYmls
aXRpZXMoKSA9IDA7Ci0gICAgdmlydHVhbCBjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU3RhdGVz
JiBzdGF0ZXMoKSA9IDA7Ci0gICAgdm9pZCBzdGF0ZXNEaWRDaGFuZ2VkKCk7CisgICAgdmlydHVh
bCBjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmIHNldHRpbmdzKCkgPSAwOworICAg
IHZvaWQgc2V0dGluZ3NEaWRDaGFuZ2VkKCk7CiAgICAgCiAgICAgYm9vbCBzdG9wcGVkKCkgY29u
c3QgeyByZXR1cm4gbV9zdG9wcGVkOyB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291
cmNlQ2FwYWJpbGl0aWVzLmgJKHJldmlzaW9uIDE5MjkzMCkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMuaAkod29y
a2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNyBAQAogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkK
IAotI2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXMuaCIKKyNpbmNsdWRlICJSZWFs
dGltZU1lZGlhU291cmNlU2V0dGluZ3MuaCIKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgog
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcu
aD4KQEAgLTkwLDIwICs5MCwxMSBAQCBwdWJsaWM6CiAKICAgICB+UmVhbHRpbWVNZWRpYVNvdXJj
ZUNhcGFiaWxpdGllcygpIHsgfQogCi0gICAgY29uc3QgVmVjdG9yPFJlYWx0aW1lTWVkaWFTb3Vy
Y2VTdGF0ZXM6OlNvdXJjZVR5cGU+JiBzb3VyY2VUeXBlcygpIHsgcmV0dXJuIG1fc291cmNlVHlw
ZTsgfQotICAgIHZvaWQgc2V0U291cmNlVHlwZShSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzOjpT
b3VyY2VUeXBlIHNvdXJjZVR5cGUpIHsgbV9zb3VyY2VUeXBlLnJlc2l6ZVRvRml0KDEpOyBhZGRT
b3VyY2VUeXBlKHNvdXJjZVR5cGUpOyB9Ci0gICAgdm9pZCBhZGRTb3VyY2VUeXBlKFJlYWx0aW1l
TWVkaWFTb3VyY2VTdGF0ZXM6OlNvdXJjZVR5cGUgc291cmNlVHlwZSkKLSAgICB7Ci0gICAgICAg
IGlmIChzb3VyY2VUeXBlID09IFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXM6OkNhbWVyYSkKLSAg
ICAgICAgICAgIG1fdmlkZW9Tb3VyY2UgPSB0cnVlOwotICAgICAgICBtX3NvdXJjZVR5cGUuYXBw
ZW5kKHNvdXJjZVR5cGUpOwotICAgIH0KLQogICAgIGNvbnN0IFZlY3RvcjxBdG9taWNTdHJpbmc+
JiBzb3VyY2VJZCgpIHsgcmV0dXJuIG1fc291cmNlSWQ7IH0KICAgICB2b2lkIHNldFNvdXJjZUlk
KGNvbnN0IEF0b21pY1N0cmluZyYgaWQpICB7IG1fc291cmNlSWQucmVzZXJ2ZUNhcGFjaXR5KDEp
OyBtX3NvdXJjZUlkLmluc2VydCgwLCBpZCk7IH0KIAotICAgIGNvbnN0IFZlY3RvcjxSZWFsdGlt
ZU1lZGlhU291cmNlU3RhdGVzOjpWaWRlb0ZhY2luZ01vZGU+JiBmYWNpbmdNb2RlcygpIHsgcmV0
dXJuIG1fZmFjaW5nTW9kZTsgfQotICAgIHZvaWQgYWRkRmFjaW5nTW9kZShSZWFsdGltZU1lZGlh
U291cmNlU3RhdGVzOjpWaWRlb0ZhY2luZ01vZGUgbW9kZSkgeyBtX2ZhY2luZ01vZGUuYXBwZW5k
KG1vZGUpOyB9CisgICAgY29uc3QgVmVjdG9yPFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6
VmlkZW9GYWNpbmdNb2RlPiYgZmFjaW5nTW9kZXMoKSB7IHJldHVybiBtX2ZhY2luZ01vZGU7IH0K
KyAgICB2b2lkIGFkZEZhY2luZ01vZGUoUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpWaWRl
b0ZhY2luZ01vZGUgbW9kZSkgeyBtX2ZhY2luZ01vZGUuYXBwZW5kKG1vZGUpOyB9CiAKICAgICBj
b25zdCBSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0eVJhbmdlJiB3aWR0aCgpIHsgcmV0dXJu
IG1fd2lkdGg7IH0KICAgICB2b2lkIHNldFdpZHRoUmFuZ2UoY29uc3QgUmVhbHRpbWVNZWRpYVNv
dXJjZUNhcGFiaWxpdHlSYW5nZSYgd2lkdGgpIHsgbV93aWR0aCA9IHdpZHRoOyB9CkBAIC0xMzAs
OCArMTIxLDcgQEAgcHJpdmF0ZToKICAgICB9CiAKICAgICBWZWN0b3I8QXRvbWljU3RyaW5nPiBt
X3NvdXJjZUlkOwotICAgIFZlY3RvcjxSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzOjpTb3VyY2VU
eXBlPiBtX3NvdXJjZVR5cGU7Ci0gICAgVmVjdG9yPFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXM6
OlZpZGVvRmFjaW5nTW9kZT4gbV9mYWNpbmdNb2RlOworICAgIFZlY3RvcjxSZWFsdGltZU1lZGlh
U291cmNlU2V0dGluZ3M6OlZpZGVvRmFjaW5nTW9kZT4gbV9mYWNpbmdNb2RlOwogCiAgICAgUmVh
bHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdHlSYW5nZSBtX3dpZHRoOwogICAgIFJlYWx0aW1lTWVk
aWFTb3VyY2VDYXBhYmlsaXR5UmFuZ2UgbV9oZWlnaHQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNv
dXJjZUNlbnRlci5oCShyZXZpc2lvbiAxOTI5MzApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTQ0LDcgKzQ0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgTWVkaWFDb25zdHJh
aW50czsKIGNsYXNzIE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQ7CiBjbGFzcyBNZWRpYVN0cmVh
bVRyYWNrU291cmNlc1JlcXVlc3RDbGllbnQ7Ci1jbGFzcyBSZWFsdGltZU1lZGlhU291cmNlU3Rh
dGVzOworY2xhc3MgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOwogY2xhc3MgUmVhbHRpbWVN
ZWRpYVNvdXJjZVN1cHBvcnRlZENvbnN0cmFpbnRzOwogY2xhc3MgVHJhY2tTb3VyY2VJbmZvOwog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlh
U291cmNlU2V0dGluZ3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncy5jcHAJKHJldmlzaW9uIDE5
MjkzMCkJKGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVN
ZWRpYVNvdXJjZVN0YXRlcy5jcHA6MTkyOTMwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDg1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgorICogICAgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQorICogICAgZGlzdHJpYnV0aW9uLgorICogMy4gTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMK
KyAqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20gdGhpcworICogICAgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFC
TEUoTUVESUFfU1RSRUFNKQorI2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXMuaCIK
KworI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NvbnN0IEF0b21pY1N0cmluZyYgUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlczo6ZmFjaW5n
TW9kZShSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzOjpWaWRlb0ZhY2luZ01vZGUgbW9kZSkKK3sK
KyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiB1c2VyRmFjaW5nKCJ1c2Vy
IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPEF0b21pY1N0cmluZz4gZW52aXJvbm1lbnRGYWNpbmcoImVudmlyb25tZW50Iiwg
QXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPEF0b21pY1N0cmluZz4gbGVmdEZhY2luZygibGVmdCIsIEF0b21pY1N0cmluZzo6Q29u
c3RydWN0RnJvbUxpdGVyYWwpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJp
bmc+IHJpZ2h0RmFjaW5nKCJyaWdodCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVy
YWwpOworICAgIAorICAgIHN3aXRjaCAobW9kZSkgeworICAgIGNhc2UgUmVhbHRpbWVNZWRpYVNv
dXJjZVN0YXRlczo6VXNlcjoKKyAgICAgICAgcmV0dXJuIHVzZXJGYWNpbmc7CisgICAgY2FzZSBS
ZWFsdGltZU1lZGlhU291cmNlU3RhdGVzOjpFbnZpcm9ubWVudDoKKyAgICAgICAgcmV0dXJuIGVu
dmlyb25tZW50RmFjaW5nOworICAgIGNhc2UgUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlczo6TGVm
dDoKKyAgICAgICAgcmV0dXJuIGxlZnRGYWNpbmc7CisgICAgY2FzZSBSZWFsdGltZU1lZGlhU291
cmNlU3RhdGVzOjpSaWdodDoKKyAgICAgICAgcmV0dXJuIHJpZ2h0RmFjaW5nOworICAgIGNhc2Ug
UmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlczo6VW5rbm93bjoKKyAgICAgICAgcmV0dXJuIGVtcHR5
QXRvbTsKKyAgICB9CisgICAgCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJu
IGVtcHR5QXRvbTsKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBSZWFsdGltZU1lZGlhU291cmNl
U3RhdGVzOjpzb3VyY2VUeXBlKFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXM6OlNvdXJjZVR5cGUg
c291cmNlVHlwZSkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBu
b25lKCJub25lIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gY2FtZXJhKCJjYW1lcmEiLCBBdG9taWNT
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
QXRvbWljU3RyaW5nPiBtaWNyb3Bob25lKCJtaWNyb3Bob25lIiwgQXRvbWljU3RyaW5nOjpDb25z
dHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgCisgICAgc3dpdGNoIChzb3VyY2VUeXBlKSB7CisgICAg
Y2FzZSBSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzOjpOb25lOgorICAgICAgICByZXR1cm4gbm9u
ZTsKKyAgICBjYXNlIFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXM6OkNhbWVyYToKKyAgICAgICAg
cmV0dXJuIGNhbWVyYTsKKyAgICBjYXNlIFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXM6Ok1pY3Jv
cGhvbmU6CisgICAgICAgIHJldHVybiBtaWNyb3Bob25lOworICAgIH0KKyAgICAKKyAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZW1wdHlBdG9tOworfQorCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRp
bmdzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9SZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MuY3BwCSh3b3JraW5nIGNvcHkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlU2V0dGlu
Z3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTMtMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTMxLDEzICszMSwxMyBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLSNpbmNsdWRlICJSZWFsdGltZU1lZGlhU291
cmNlU3RhdGVzLmgiCisjaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzLmgiCiAK
ICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1jb25zdCBBdG9taWNTdHJpbmcmIFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXM6OmZhY2luZ01v
ZGUoUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlczo6VmlkZW9GYWNpbmdNb2RlIG1vZGUpCitjb25z
dCBBdG9taWNTdHJpbmcmIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6ZmFjaW5nTW9kZShS
ZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OlZpZGVvRmFjaW5nTW9kZSBtb2RlKQogewogICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IHVzZXJGYWNpbmcoInVzZXIiLCBB
dG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8QXRvbWljU3RyaW5nPiBlbnZpcm9ubWVudEZhY2luZygiZW52aXJvbm1lbnQiLCBBdG9t
aWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKQEAgLTQ1LDE1ICs0NSwxNSBAQCBjb25z
dCBBdG9taWNTdHJpbmcmIFJlYWx0aW1lTWVkaWFTb3VyY2VTCiAgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPEF0b21pY1N0cmluZz4gcmlnaHRGYWNpbmcoInJpZ2h0IiwgQXRvbWljU3RyaW5nOjpD
b25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgCiAgICAgc3dpdGNoIChtb2RlKSB7Ci0gICAgY2Fz
ZSBSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzOjpVc2VyOgorICAgIGNhc2UgUmVhbHRpbWVNZWRp
YVNvdXJjZVNldHRpbmdzOjpVc2VyOgogICAgICAgICByZXR1cm4gdXNlckZhY2luZzsKLSAgICBj
YXNlIFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXM6OkVudmlyb25tZW50OgorICAgIGNhc2UgUmVh
bHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpFbnZpcm9ubWVudDoKICAgICAgICAgcmV0dXJuIGVu
dmlyb25tZW50RmFjaW5nOwotICAgIGNhc2UgUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlczo6TGVm
dDoKKyAgICBjYXNlIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6TGVmdDoKICAgICAgICAg
cmV0dXJuIGxlZnRGYWNpbmc7Ci0gICAgY2FzZSBSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzOjpS
aWdodDoKKyAgICBjYXNlIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6UmlnaHQ6CiAgICAg
ICAgIHJldHVybiByaWdodEZhY2luZzsKLSAgICBjYXNlIFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0
ZXM6OlVua25vd246CisgICAgY2FzZSBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OlVua25v
d246CiAgICAgICAgIHJldHVybiBlbXB0eUF0b207CiAgICAgfQogICAgIApAQCAtNjEsMjUgKzYx
LDYgQEAgY29uc3QgQXRvbWljU3RyaW5nJiBSZWFsdGltZU1lZGlhU291cmNlUwogICAgIHJldHVy
biBlbXB0eUF0b207CiB9CiAKLWNvbnN0IEF0b21pY1N0cmluZyYgUmVhbHRpbWVNZWRpYVNvdXJj
ZVN0YXRlczo6c291cmNlVHlwZShSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzOjpTb3VyY2VUeXBl
IHNvdXJjZVR5cGUpCi17Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4g
bm9uZSgibm9uZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IGNhbWVyYSgiY2FtZXJhIiwgQXRvbWlj
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PEF0b21pY1N0cmluZz4gbWljcm9waG9uZSgibWljcm9waG9uZSIsIEF0b21pY1N0cmluZzo6Q29u
c3RydWN0RnJvbUxpdGVyYWwpOwotICAgIAotICAgIHN3aXRjaCAoc291cmNlVHlwZSkgewotICAg
IGNhc2UgUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlczo6Tm9uZToKLSAgICAgICAgcmV0dXJuIG5v
bmU7Ci0gICAgY2FzZSBSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzOjpDYW1lcmE6Ci0gICAgICAg
IHJldHVybiBjYW1lcmE7Ci0gICAgY2FzZSBSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzOjpNaWNy
b3Bob25lOgotICAgICAgICByZXR1cm4gbWljcm9waG9uZTsKLSAgICB9Ci0gICAgCi0gICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIGVtcHR5QXRvbTsKLX0KLQogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VTZXR0
aW5ncy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L1JlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncy5oCShyZXZpc2lvbiAxOTI5MzApCShmcm9tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VTdGF0
ZXMuaDoxOTI5MzApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFs
dGltZU1lZGlhU291cmNlU2V0dGluZ3MuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDk1IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBS
ZWFsdGltZU1lZGlhU291cmNlU3RhdGVzX2gKKyNkZWZpbmUgUmVhbHRpbWVNZWRpYVNvdXJjZVN0
YXRlc19oCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQXRv
bWljU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUmVhbHRpbWVNZWRp
YVNvdXJjZVN0YXRlcyB7CitwdWJsaWM6CisgICAgZW51bSBTb3VyY2VUeXBlIHsgTm9uZSwgQ2Ft
ZXJhLCBNaWNyb3Bob25lIH07CisgICAgZW51bSBWaWRlb0ZhY2luZ01vZGUgeyBVbmtub3duLCBV
c2VyLCBFbnZpcm9ubWVudCwgTGVmdCwgUmlnaHQgfTsKKworICAgIFJlYWx0aW1lTWVkaWFTb3Vy
Y2VTdGF0ZXMoKQorICAgICAgICA6IG1fc291cmNlVHlwZShOb25lKQorICAgICAgICAsIG1fZmFj
aW5nTW9kZShVbmtub3duKQorICAgICAgICAsIG1fd2lkdGgoMCkKKyAgICAgICAgLCBtX2hlaWdo
dCgwKQorICAgICAgICAsIG1fZnJhbWVSYXRlKDApCisgICAgICAgICwgbV9hc3BlY3RSYXRpbygw
KQorICAgICAgICAsIG1fdm9sdW1lKDApCisgICAgeworICAgIH0KKworICAgIHN0YXRpYyBjb25z
dCBBdG9taWNTdHJpbmcmIHNvdXJjZVR5cGUoUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlczo6U291
cmNlVHlwZSk7CisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgZmFjaW5nTW9kZShSZWFs
dGltZU1lZGlhU291cmNlU3RhdGVzOjpWaWRlb0ZhY2luZ01vZGUpOworCisgICAgU291cmNlVHlw
ZSBzb3VyY2VUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VUeXBlOyB9CisgICAgdm9pZCBz
ZXRTb3VyY2VUeXBlKFNvdXJjZVR5cGUgdHlwZSkgeyBtX3NvdXJjZVR5cGUgPSB0eXBlOyB9CisK
KyAgICBjb25zdCBBdG9taWNTdHJpbmcmIHNvdXJjZUlkKCkgY29uc3QgeyByZXR1cm4gbV9zb3Vy
Y2VJZDsgfQorICAgIHZvaWQgc2V0U291cmNlSWQoY29uc3QgQXRvbWljU3RyaW5nJiBzb3VyY2VJ
ZCkgeyBtX3NvdXJjZUlkID0gc291cmNlSWQ7IH0KKworICAgIFZpZGVvRmFjaW5nTW9kZSBmYWNp
bmdNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9mYWNpbmdNb2RlOyB9CisgICAgdm9pZCBzZXRGYWNp
bmdNb2RlKFZpZGVvRmFjaW5nTW9kZSBmYWNpbmdNb2RlKSB7IG1fZmFjaW5nTW9kZSA9IGZhY2lu
Z01vZGU7IH0KKyAgICAKKyAgICB1bnNpZ25lZCBsb25nIHdpZHRoKCkgY29uc3QgeyByZXR1cm4g
bV93aWR0aDsgfQorICAgIHZvaWQgc2V0V2lkdGgodW5zaWduZWQgbG9uZyB3aWR0aCkgeyBtX3dp
ZHRoID0gd2lkdGg7IH0KKyAgICAKKyAgICB1bnNpZ25lZCBsb25nIGhlaWdodCgpIGNvbnN0IHsg
cmV0dXJuIG1faGVpZ2h0OyB9CisgICAgdm9pZCBzZXRIZWlnaHQodW5zaWduZWQgbG9uZyBoZWln
aHQpIHsgbV9oZWlnaHQgPSBoZWlnaHQ7IH0KKyAgICAKKyAgICBmbG9hdCBmcmFtZVJhdGUoKSBj
b25zdCB7IHJldHVybiBtX2ZyYW1lUmF0ZTsgfQorICAgIHZvaWQgc2V0RnJhbWVSYXRlKGZsb2F0
IGZyYW1lUmF0ZSkgeyBtX2ZyYW1lUmF0ZSA9IGZyYW1lUmF0ZTsgfQorICAgIAorICAgIGZsb2F0
IGFzcGVjdFJhdGlvKCkgY29uc3QgeyByZXR1cm4gbV9hc3BlY3RSYXRpbzsgfQorICAgIHZvaWQg
c2V0QXNwZWN0UmF0aW8oZmxvYXQgYXNwZWN0UmF0aW8pIHsgbV9hc3BlY3RSYXRpbyA9IGFzcGVj
dFJhdGlvOyB9CisgICAgCisgICAgdW5zaWduZWQgbG9uZyB2b2x1bWUoKSBjb25zdCB7IHJldHVy
biBtX3ZvbHVtZTsgfQorICAgIHZvaWQgc2V0Vm9sdW1lKHVuc2lnbmVkIGxvbmcgdm9sdW1lKSB7
IG1fdm9sdW1lID0gdm9sdW1lOyB9CisgICAgCitwcml2YXRlOgorICAgIFNvdXJjZVR5cGUgbV9z
b3VyY2VUeXBlOworICAgIEF0b21pY1N0cmluZyBtX3NvdXJjZUlkOworICAgIFZpZGVvRmFjaW5n
TW9kZSBtX2ZhY2luZ01vZGU7CisgICAgdW5zaWduZWQgbG9uZyBtX3dpZHRoOworICAgIHVuc2ln
bmVkIGxvbmcgbV9oZWlnaHQ7CisgICAgZmxvYXQgbV9mcmFtZVJhdGU7CisgICAgZmxvYXQgbV9h
c3BlY3RSYXRpbzsKKyAgICB1bnNpZ25lZCBsb25nIG1fdm9sdW1lOworfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlc19oCisK
KyNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRp
bWVNZWRpYVNvdXJjZVNldHRpbmdzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzLmgJKHdvcmtpbmcg
Y29weSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVk
aWFTb3VyY2VTZXR0aW5ncy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTMtMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDczICsyMyw5NCBAQAogICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXNfaAotI2Rl
ZmluZSBSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzX2gKKyNpZm5kZWYgUmVhbHRpbWVNZWRpYVNv
dXJjZVNldHRpbmdzX2gKKyNkZWZpbmUgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzX2gKIAog
I2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAKKyNpbmNsdWRlICJSZWFsdGltZU1lZGlhU291cmNl
U3VwcG9ydGVkQ29uc3RyYWludHMuaCIKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBSZWFsdGltZU1lZGlhU291cmNlU3RhdGVz
IHsKK2NsYXNzIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyB7CiBwdWJsaWM6CiAgICAgZW51
bSBTb3VyY2VUeXBlIHsgTm9uZSwgQ2FtZXJhLCBNaWNyb3Bob25lIH07CiAgICAgZW51bSBWaWRl
b0ZhY2luZ01vZGUgeyBVbmtub3duLCBVc2VyLCBFbnZpcm9ubWVudCwgTGVmdCwgUmlnaHQgfTsK
IAotICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXMoKQotICAgICAgICA6IG1fc291cmNlVHlw
ZShOb25lKQotICAgICAgICAsIG1fZmFjaW5nTW9kZShVbmtub3duKQotICAgICAgICAsIG1fd2lk
dGgoMCkKLSAgICAgICAgLCBtX2hlaWdodCgwKQotICAgICAgICAsIG1fZnJhbWVSYXRlKDApCi0g
ICAgICAgICwgbV9hc3BlY3RSYXRpbygwKQotICAgICAgICAsIG1fdm9sdW1lKDApCisgICAgc3Rh
dGljIGNvbnN0IEF0b21pY1N0cmluZyYgZmFjaW5nTW9kZShSZWFsdGltZU1lZGlhU291cmNlU2V0
dGluZ3M6OlZpZGVvRmFjaW5nTW9kZSk7CisKKyAgICBleHBsaWNpdCBSZWFsdGltZU1lZGlhU291
cmNlU2V0dGluZ3MoKQogICAgIHsKICAgICB9CiAKLSAgICBzdGF0aWMgY29uc3QgQXRvbWljU3Ry
aW5nJiBzb3VyY2VUeXBlKFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXM6OlNvdXJjZVR5cGUpOwot
ICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGZhY2luZ01vZGUoUmVhbHRpbWVNZWRpYVNv
dXJjZVN0YXRlczo6VmlkZW9GYWNpbmdNb2RlKTsKLQotICAgIFNvdXJjZVR5cGUgc291cmNlVHlw
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlVHlwZTsgfQotICAgIHZvaWQgc2V0U291cmNlVHlw
ZShTb3VyY2VUeXBlIHR5cGUpIHsgbV9zb3VyY2VUeXBlID0gdHlwZTsgfQotCi0gICAgY29uc3Qg
QXRvbWljU3RyaW5nJiBzb3VyY2VJZCgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlSWQ7IH0KLSAg
ICB2b2lkIHNldFNvdXJjZUlkKGNvbnN0IEF0b21pY1N0cmluZyYgc291cmNlSWQpIHsgbV9zb3Vy
Y2VJZCA9IHNvdXJjZUlkOyB9Ci0KLSAgICBWaWRlb0ZhY2luZ01vZGUgZmFjaW5nTW9kZSgpIGNv
bnN0IHsgcmV0dXJuIG1fZmFjaW5nTW9kZTsgfQotICAgIHZvaWQgc2V0RmFjaW5nTW9kZShWaWRl
b0ZhY2luZ01vZGUgZmFjaW5nTW9kZSkgeyBtX2ZhY2luZ01vZGUgPSBmYWNpbmdNb2RlOyB9Ci0g
ICAgCisgICAgYm9vbCBzdXBwb3J0c1dpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9zdXBwb3J0ZWRD
b25zdHJhaW50cy5zdXBwb3J0c1dpZHRoKCk7IH0KICAgICB1bnNpZ25lZCBsb25nIHdpZHRoKCkg
Y29uc3QgeyByZXR1cm4gbV93aWR0aDsgfQogICAgIHZvaWQgc2V0V2lkdGgodW5zaWduZWQgbG9u
ZyB3aWR0aCkgeyBtX3dpZHRoID0gd2lkdGg7IH0KLSAgICAKKworICAgIGJvb2wgc3VwcG9ydHNI
ZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX3N1cHBvcnRlZENvbnN0cmFpbnRzLnN1cHBvcnRzSGVp
Z2h0KCk7IH0KICAgICB1bnNpZ25lZCBsb25nIGhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1faGVp
Z2h0OyB9CiAgICAgdm9pZCBzZXRIZWlnaHQodW5zaWduZWQgbG9uZyBoZWlnaHQpIHsgbV9oZWln
aHQgPSBoZWlnaHQ7IH0KLSAgICAKLSAgICBmbG9hdCBmcmFtZVJhdGUoKSBjb25zdCB7IHJldHVy
biBtX2ZyYW1lUmF0ZTsgfQotICAgIHZvaWQgc2V0RnJhbWVSYXRlKGZsb2F0IGZyYW1lUmF0ZSkg
eyBtX2ZyYW1lUmF0ZSA9IGZyYW1lUmF0ZTsgfQotICAgIAorCisgICAgYm9vbCBzdXBwb3J0c0Fz
cGVjdFJhdGlvKCkgY29uc3QgeyByZXR1cm4gbV9zdXBwb3J0ZWRDb25zdHJhaW50cy5zdXBwb3J0
c0FzcGVjdFJhdGlvKCk7IH0KICAgICBmbG9hdCBhc3BlY3RSYXRpbygpIGNvbnN0IHsgcmV0dXJu
IG1fYXNwZWN0UmF0aW87IH0KICAgICB2b2lkIHNldEFzcGVjdFJhdGlvKGZsb2F0IGFzcGVjdFJh
dGlvKSB7IG1fYXNwZWN0UmF0aW8gPSBhc3BlY3RSYXRpbzsgfQotICAgIAorCisgICAgYm9vbCBz
dXBwb3J0c0ZyYW1lUmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3VwcG9ydGVkQ29uc3RyYWludHMu
c3VwcG9ydHNGcmFtZVJhdGUoKTsgfQorICAgIGZsb2F0IGZyYW1lUmF0ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fZnJhbWVSYXRlOyB9CisgICAgdm9pZCBzZXRGcmFtZVJhdGUoZmxvYXQgZnJhbWVSYXRl
KSB7IG1fZnJhbWVSYXRlID0gZnJhbWVSYXRlOyB9CisKKyAgICBib29sIHN1cHBvcnRzRmFjaW5n
TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3VwcG9ydGVkQ29uc3RyYWludHMuc3VwcG9ydHNGYWNp
bmdNb2RlKCk7IH0KKyAgICBWaWRlb0ZhY2luZ01vZGUgZmFjaW5nTW9kZSgpIGNvbnN0IHsgcmV0
dXJuIG1fZmFjaW5nTW9kZTsgfQorICAgIHZvaWQgc2V0RmFjaW5nTW9kZShWaWRlb0ZhY2luZ01v
ZGUgZmFjaW5nTW9kZSkgeyBtX2ZhY2luZ01vZGUgPSBmYWNpbmdNb2RlOyB9CisKKyAgICBib29s
IHN1cHBvcnRzVm9sdW1lKCkgY29uc3QgeyByZXR1cm4gbV9zdXBwb3J0ZWRDb25zdHJhaW50cy5z
dXBwb3J0c1ZvbHVtZSgpOyB9CiAgICAgdW5zaWduZWQgbG9uZyB2b2x1bWUoKSBjb25zdCB7IHJl
dHVybiBtX3ZvbHVtZTsgfQogICAgIHZvaWQgc2V0Vm9sdW1lKHVuc2lnbmVkIGxvbmcgdm9sdW1l
KSB7IG1fdm9sdW1lID0gdm9sdW1lOyB9Ci0gICAgCisKKyAgICBib29sIHN1cHBvcnRzU2FtcGxl
UmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3VwcG9ydGVkQ29uc3RyYWludHMuc3VwcG9ydHNTYW1w
bGVSYXRlKCk7IH0KKyAgICB1bnNpZ25lZCBsb25nIHNhbXBsZVJhdGUoKSBjb25zdCB7IHJldHVy
biBtX3NhbXBsZVJhdGU7IH0KKyAgICB2b2lkIHNldFNhbXBsZVJhdGUodW5zaWduZWQgbG9uZyBz
YW1wbGVSYXRlKSB7IG1fc2FtcGxlUmF0ZSA9IHNhbXBsZVJhdGU7IH0KKworICAgIGJvb2wgc3Vw
cG9ydHNTYW1wbGVTaXplKCkgY29uc3QgeyByZXR1cm4gbV9zdXBwb3J0ZWRDb25zdHJhaW50cy5z
dXBwb3J0c1NhbXBsZVNpemUoKTsgfQorICAgIHVuc2lnbmVkIGxvbmcgc2FtcGxlU2l6ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fc2FtcGxlU2l6ZTsgfQorICAgIHZvaWQgc2V0U2FtcGxlU2l6ZSh1bnNp
Z25lZCBsb25nIHNhbXBsZVNpemUpIHsgbV9zYW1wbGVTaXplID0gc2FtcGxlU2l6ZTsgfQorCisg
ICAgYm9vbCBzdXBwb3J0c0VjaG9DYW5jZWxsYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3N1cHBv
cnRlZENvbnN0cmFpbnRzLnN1cHBvcnRzRWNob0NhbmNlbGxhdGlvbigpOyB9CisgICAgYm9vbCBl
Y2hvQ2FuY2VsbGF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9lY2hvQ2FuY2VsbGF0aW9uOyB9Cisg
ICAgdm9pZCBzZXRFY2hvQ2FuY2VsbGF0aW9uKGJvb2wgZWNob0NhbmNlbGxhdGlvbikgeyBtX2Vj
aG9DYW5jZWxsYXRpb24gPSBlY2hvQ2FuY2VsbGF0aW9uOyB9CisKKyAgICBib29sIHN1cHBvcnRz
RGV2aWNlSWQoKSBjb25zdCB7IHJldHVybiBtX3N1cHBvcnRlZENvbnN0cmFpbnRzLnN1cHBvcnRz
RGV2aWNlSWQoKTsgfQorICAgIGNvbnN0IEF0b21pY1N0cmluZyYgZGV2aWNlSWQoKSBjb25zdCB7
IHJldHVybiBtX2RldmljZUlkOyB9CisgICAgdm9pZCBzZXREZXZpY2VJZChjb25zdCBBdG9taWNT
dHJpbmcmIGRldmljZUlkKSB7IG1fZGV2aWNlSWQgPSBkZXZpY2VJZDsgfQorCisgICAgYm9vbCBz
dXBwb3J0c0dyb3VwSWQoKSBjb25zdCB7IHJldHVybiBtX3N1cHBvcnRlZENvbnN0cmFpbnRzLnN1
cHBvcnRzR3JvdXBJZCgpOyB9CisgICAgY29uc3QgQXRvbWljU3RyaW5nJiBncm91cElkKCkgY29u
c3QgeyByZXR1cm4gbV9ncm91cElkOyB9CisgICAgdm9pZCBzZXRHcm91cElkKGNvbnN0IEF0b21p
Y1N0cmluZyYgZ3JvdXBJZCkgeyBtX2dyb3VwSWQgPSBncm91cElkOyB9CisKKyAgICB2b2lkIHNl
dFN1cHBvcnRlZENvbnN0cmFpdHMoY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBvcnRlZENv
bnN0cmFpbnRzJiBzdXBwb3J0ZWRDb25zdHJhaW50cykgeyBtX3N1cHBvcnRlZENvbnN0cmFpbnRz
ID0gc3VwcG9ydGVkQ29uc3RyYWludHM7IH0KKwogcHJpdmF0ZToKLSAgICBTb3VyY2VUeXBlIG1f
c291cmNlVHlwZTsKLSAgICBBdG9taWNTdHJpbmcgbV9zb3VyY2VJZDsKLSAgICBWaWRlb0ZhY2lu
Z01vZGUgbV9mYWNpbmdNb2RlOwotICAgIHVuc2lnbmVkIGxvbmcgbV93aWR0aDsKLSAgICB1bnNp
Z25lZCBsb25nIG1faGVpZ2h0OwotICAgIGZsb2F0IG1fZnJhbWVSYXRlOwotICAgIGZsb2F0IG1f
YXNwZWN0UmF0aW87Ci0gICAgdW5zaWduZWQgbG9uZyBtX3ZvbHVtZTsKKyAgICB1bnNpZ25lZCBs
b25nIG1fd2lkdGggeyAwIH07CisgICAgdW5zaWduZWQgbG9uZyBtX2hlaWdodCB7IDAgfTsKKyAg
ICBmbG9hdCBtX2FzcGVjdFJhdGlvIHsgMCB9OworICAgIGZsb2F0IG1fZnJhbWVSYXRlIHsgMCB9
OworICAgIFZpZGVvRmFjaW5nTW9kZSBtX2ZhY2luZ01vZGUgeyBVbmtub3duIH07CisgICAgdW5z
aWduZWQgbG9uZyBtX3ZvbHVtZSB7IDAgfTsKKyAgICB1bnNpZ25lZCBsb25nIG1fc2FtcGxlUmF0
ZSB7IDAgfTsKKyAgICB1bnNpZ25lZCBsb25nIG1fc2FtcGxlU2l6ZSB7IDAgfTsKKyAgICBib29s
IG1fZWNob0NhbmNlbGxhdGlvbiB7IDAgfTsKKworICAgIEF0b21pY1N0cmluZyBtX2RldmljZUlk
OworICAgIEF0b21pY1N0cmluZyBtX2dyb3VwSWQ7CisKKyAgICBSZWFsdGltZU1lZGlhU291cmNl
U3VwcG9ydGVkQ29uc3RyYWludHMgbV9zdXBwb3J0ZWRDb25zdHJhaW50czsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vIFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXNf
aAorI2VuZGlmIC8vIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nc19oCiAKICNlbmRpZgpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJj
ZVN0YXRlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlcy5jcHAJKHJldmlzaW9uIDE5MjkzMCkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VT
dGF0ZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDg1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiAgICBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiAgICBkaXN0cmli
dXRpb24uCi0gKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycwotICogICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzCi0gKiAgICBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0g
KiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRl
ICJjb25maWcuaCIKLQotI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0jaW5jbHVkZSAiUmVhbHRp
bWVNZWRpYVNvdXJjZVN0YXRlcy5oIgotCi0jaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY29uc3QgQXRvbWljU3RyaW5nJiBSZWFsdGltZU1l
ZGlhU291cmNlU3RhdGVzOjpmYWNpbmdNb2RlKFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXM6OlZp
ZGVvRmFjaW5nTW9kZSBtb2RlKQotewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNT
dHJpbmc+IHVzZXJGYWNpbmcoInVzZXIiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKTsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBlbnZpcm9ubWVu
dEZhY2luZygiZW52aXJvbm1lbnQiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFs
KTsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBsZWZ0RmFjaW5nKCJs
ZWZ0IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gcmlnaHRGYWNpbmcoInJpZ2h0IiwgQXRvbWljU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgCi0gICAgc3dpdGNoIChtb2RlKSB7Ci0g
ICAgY2FzZSBSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzOjpVc2VyOgotICAgICAgICByZXR1cm4g
dXNlckZhY2luZzsKLSAgICBjYXNlIFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXM6OkVudmlyb25t
ZW50OgotICAgICAgICByZXR1cm4gZW52aXJvbm1lbnRGYWNpbmc7Ci0gICAgY2FzZSBSZWFsdGlt
ZU1lZGlhU291cmNlU3RhdGVzOjpMZWZ0OgotICAgICAgICByZXR1cm4gbGVmdEZhY2luZzsKLSAg
ICBjYXNlIFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXM6OlJpZ2h0OgotICAgICAgICByZXR1cm4g
cmlnaHRGYWNpbmc7Ci0gICAgY2FzZSBSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzOjpVbmtub3du
OgotICAgICAgICByZXR1cm4gZW1wdHlBdG9tOwotICAgIH0KLSAgICAKLSAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLSAgICByZXR1cm4gZW1wdHlBdG9tOwotfQotCi1jb25zdCBBdG9taWNTdHJp
bmcmIFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXM6OnNvdXJjZVR5cGUoUmVhbHRpbWVNZWRpYVNv
dXJjZVN0YXRlczo6U291cmNlVHlwZSBzb3VyY2VUeXBlKQotewotICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxBdG9taWNTdHJpbmc+IG5vbmUoIm5vbmUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVj
dEZyb21MaXRlcmFsKTsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBj
YW1lcmEoImNhbWVyYSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IG1pY3JvcGhvbmUoIm1pY3JvcGhv
bmUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICAKLSAgICBzd2l0
Y2ggKHNvdXJjZVR5cGUpIHsKLSAgICBjYXNlIFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXM6Ok5v
bmU6Ci0gICAgICAgIHJldHVybiBub25lOwotICAgIGNhc2UgUmVhbHRpbWVNZWRpYVNvdXJjZVN0
YXRlczo6Q2FtZXJhOgotICAgICAgICByZXR1cm4gY2FtZXJhOwotICAgIGNhc2UgUmVhbHRpbWVN
ZWRpYVNvdXJjZVN0YXRlczo6TWljcm9waG9uZToKLSAgICAgICAgcmV0dXJuIG1pY3JvcGhvbmU7
Ci0gICAgfQotICAgIAotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBlbXB0
eUF0b207Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShN
RURJQV9TVFJFQU0pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9S
ZWFsdGltZU1lZGlhU291cmNlU3RhdGVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlcy5oCShyZXZpc2lv
biAxOTI5MzApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGlt
ZU1lZGlhU291cmNlU3RhdGVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsOTUgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgUmVhbHRp
bWVNZWRpYVNvdXJjZVN0YXRlc19oCi0jZGVmaW5lIFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXNf
aAotCi0jaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLQotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0
cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFJlYWx0aW1lTWVkaWFTb3Vy
Y2VTdGF0ZXMgewotcHVibGljOgotICAgIGVudW0gU291cmNlVHlwZSB7IE5vbmUsIENhbWVyYSwg
TWljcm9waG9uZSB9OwotICAgIGVudW0gVmlkZW9GYWNpbmdNb2RlIHsgVW5rbm93biwgVXNlciwg
RW52aXJvbm1lbnQsIExlZnQsIFJpZ2h0IH07Ci0KLSAgICBSZWFsdGltZU1lZGlhU291cmNlU3Rh
dGVzKCkKLSAgICAgICAgOiBtX3NvdXJjZVR5cGUoTm9uZSkKLSAgICAgICAgLCBtX2ZhY2luZ01v
ZGUoVW5rbm93bikKLSAgICAgICAgLCBtX3dpZHRoKDApCi0gICAgICAgICwgbV9oZWlnaHQoMCkK
LSAgICAgICAgLCBtX2ZyYW1lUmF0ZSgwKQotICAgICAgICAsIG1fYXNwZWN0UmF0aW8oMCkKLSAg
ICAgICAgLCBtX3ZvbHVtZSgwKQotICAgIHsKLSAgICB9Ci0KLSAgICBzdGF0aWMgY29uc3QgQXRv
bWljU3RyaW5nJiBzb3VyY2VUeXBlKFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXM6OlNvdXJjZVR5
cGUpOwotICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGZhY2luZ01vZGUoUmVhbHRpbWVN
ZWRpYVNvdXJjZVN0YXRlczo6VmlkZW9GYWNpbmdNb2RlKTsKLQotICAgIFNvdXJjZVR5cGUgc291
cmNlVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlVHlwZTsgfQotICAgIHZvaWQgc2V0U291
cmNlVHlwZShTb3VyY2VUeXBlIHR5cGUpIHsgbV9zb3VyY2VUeXBlID0gdHlwZTsgfQotCi0gICAg
Y29uc3QgQXRvbWljU3RyaW5nJiBzb3VyY2VJZCgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlSWQ7
IH0KLSAgICB2b2lkIHNldFNvdXJjZUlkKGNvbnN0IEF0b21pY1N0cmluZyYgc291cmNlSWQpIHsg
bV9zb3VyY2VJZCA9IHNvdXJjZUlkOyB9Ci0KLSAgICBWaWRlb0ZhY2luZ01vZGUgZmFjaW5nTW9k
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZmFjaW5nTW9kZTsgfQotICAgIHZvaWQgc2V0RmFjaW5nTW9k
ZShWaWRlb0ZhY2luZ01vZGUgZmFjaW5nTW9kZSkgeyBtX2ZhY2luZ01vZGUgPSBmYWNpbmdNb2Rl
OyB9Ci0gICAgCi0gICAgdW5zaWduZWQgbG9uZyB3aWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fd2lk
dGg7IH0KLSAgICB2b2lkIHNldFdpZHRoKHVuc2lnbmVkIGxvbmcgd2lkdGgpIHsgbV93aWR0aCA9
IHdpZHRoOyB9Ci0gICAgCi0gICAgdW5zaWduZWQgbG9uZyBoZWlnaHQoKSBjb25zdCB7IHJldHVy
biBtX2hlaWdodDsgfQotICAgIHZvaWQgc2V0SGVpZ2h0KHVuc2lnbmVkIGxvbmcgaGVpZ2h0KSB7
IG1faGVpZ2h0ID0gaGVpZ2h0OyB9Ci0gICAgCi0gICAgZmxvYXQgZnJhbWVSYXRlKCkgY29uc3Qg
eyByZXR1cm4gbV9mcmFtZVJhdGU7IH0KLSAgICB2b2lkIHNldEZyYW1lUmF0ZShmbG9hdCBmcmFt
ZVJhdGUpIHsgbV9mcmFtZVJhdGUgPSBmcmFtZVJhdGU7IH0KLSAgICAKLSAgICBmbG9hdCBhc3Bl
Y3RSYXRpbygpIGNvbnN0IHsgcmV0dXJuIG1fYXNwZWN0UmF0aW87IH0KLSAgICB2b2lkIHNldEFz
cGVjdFJhdGlvKGZsb2F0IGFzcGVjdFJhdGlvKSB7IG1fYXNwZWN0UmF0aW8gPSBhc3BlY3RSYXRp
bzsgfQotICAgIAotICAgIHVuc2lnbmVkIGxvbmcgdm9sdW1lKCkgY29uc3QgeyByZXR1cm4gbV92
b2x1bWU7IH0KLSAgICB2b2lkIHNldFZvbHVtZSh1bnNpZ25lZCBsb25nIHZvbHVtZSkgeyBtX3Zv
bHVtZSA9IHZvbHVtZTsgfQotICAgIAotcHJpdmF0ZToKLSAgICBTb3VyY2VUeXBlIG1fc291cmNl
VHlwZTsKLSAgICBBdG9taWNTdHJpbmcgbV9zb3VyY2VJZDsKLSAgICBWaWRlb0ZhY2luZ01vZGUg
bV9mYWNpbmdNb2RlOwotICAgIHVuc2lnbmVkIGxvbmcgbV93aWR0aDsKLSAgICB1bnNpZ25lZCBs
b25nIG1faGVpZ2h0OwotICAgIGZsb2F0IG1fZnJhbWVSYXRlOwotICAgIGZsb2F0IG1fYXNwZWN0
UmF0aW87Ci0gICAgdW5zaWduZWQgbG9uZyBtX3ZvbHVtZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKLQotI2VuZGlmIC8vIFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXNfaAotCi0jZW5k
aWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkF1ZGlv
Q2FwdHVyZVNvdXJjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9BVkF1ZGlvQ2FwdHVyZVNvdXJjZS5oCShyZXZpc2lvbiAxOTI5MzApCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZBdWRpb0NhcHR1cmVT
b3VyY2UuaAkod29ya2luZyBjb3B5KQpAQCAtNTksMTIgKzU5LDEzIEBAIHByaXZhdGU6CiAgICAg
dmlydHVhbCB+QVZBdWRpb0NhcHR1cmVTb3VyY2UoKTsKICAgICAKICAgICB2b2lkIGluaXRpYWxp
emVDYXBhYmlsaXRpZXMoUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcyYpIG92ZXJyaWRl
OworICAgIHZvaWQgaW5pdGlhbGl6ZVN1cHBvcnRlZENvbnN0cmFpbnRzKFJlYWx0aW1lTWVkaWFT
b3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cyYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBjYXB0dXJl
T3V0cHV0RGlkT3V0cHV0U2FtcGxlQnVmZmVyRnJvbUNvbm5lY3Rpb24oQVZDYXB0dXJlT3V0cHV0
KiwgQ01TYW1wbGVCdWZmZXJSZWYsIEFWQ2FwdHVyZUNvbm5lY3Rpb24qKSBvdmVycmlkZTsKICAg
ICAKICAgICB2b2lkIHNldHVwQ2FwdHVyZVNlc3Npb24oKSBvdmVycmlkZTsKICAgICB2b2lkIHNo
dXRkb3duQ2FwdHVyZVNlc3Npb24oKSBvdmVycmlkZTsKLSAgICB2b2lkIHVwZGF0ZVN0YXRlcygp
IG92ZXJyaWRlOworICAgIHZvaWQgdXBkYXRlU2V0dGluZ3MoUmVhbHRpbWVNZWRpYVNvdXJjZVNl
dHRpbmdzJikgb3ZlcnJpZGU7CiAgICAgQXVkaW9Tb3VyY2VQcm92aWRlciogYXVkaW9Tb3VyY2VQ
cm92aWRlcigpIG92ZXJyaWRlOwogCiAgICAgUmV0YWluUHRyPEFWQ2FwdHVyZUNvbm5lY3Rpb24+
IG1fYXVkaW9Db25uZWN0aW9uOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL0FWQXVkaW9DYXB0dXJlU291cmNlLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkF1ZGlvQ2FwdHVyZVNvdXJjZS5tbQko
cmV2aXNpb24gMTkyOTMwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bWFjL0FWQXVkaW9DYXB0dXJlU291cmNlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3
IEBACiAjaW1wb3J0ICJMb2dnaW5nLmgiCiAjaW1wb3J0ICJNZWRpYUNvbnN0cmFpbnRzLmgiCiAj
aW1wb3J0ICJOb3RJbXBsZW1lbnRlZC5oIgotI2ltcG9ydCAiUmVhbHRpbWVNZWRpYVNvdXJjZVN0
YXRlcy5oIgorI2ltcG9ydCAiUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzLmgiCiAjaW1wb3J0
ICJTb2Z0TGlua2luZy5oIgogI2ltcG9ydCAiV2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMu
aCIKICNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVkZvdW5kYXRpb24uaD4KQEAgLTcwLDggKzcwLDYg
QEAgUmVmUHRyPEFWTWVkaWFDYXB0dXJlU291cmNlPiBBVkF1ZGlvQ2FwdAogQVZBdWRpb0NhcHR1
cmVTb3VyY2U6OkFWQXVkaW9DYXB0dXJlU291cmNlKEFWQ2FwdHVyZURldmljZVR5cGUqIGRldmlj
ZSwgY29uc3QgQXRvbWljU3RyaW5nJiBpZCwgUGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiBj
b25zdHJhaW50cykKICAgICA6IEFWTWVkaWFDYXB0dXJlU291cmNlKGRldmljZSwgaWQsIFJlYWx0
aW1lTWVkaWFTb3VyY2U6OkF1ZGlvLCBjb25zdHJhaW50cykKIHsKLSAgICBjdXJyZW50U3RhdGVz
KCktPnNldFNvdXJjZUlkKGlkKTsKLSAgICBjdXJyZW50U3RhdGVzKCktPnNldFNvdXJjZVR5cGUo
UmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlczo6TWljcm9waG9uZSk7CiAgICAgbV9pbnB1dERlc2Ny
aXB0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24+KCk7
CiB9CiAgICAgCkBAIC03OSwxOSArNzcsMjEgQEAgQVZBdWRpb0NhcHR1cmVTb3VyY2U6On5BVkF1
ZGlvQ2FwdHVyZVNvdQogewogfQogCi12b2lkIEFWQXVkaW9DYXB0dXJlU291cmNlOjppbml0aWFs
aXplQ2FwYWJpbGl0aWVzKFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMmY2FwYWJpbGl0
aWVzKQordm9pZCBBVkF1ZGlvQ2FwdHVyZVNvdXJjZTo6aW5pdGlhbGl6ZUNhcGFiaWxpdGllcyhS
ZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzJikKIHsKICAgICAvLyBGSVhNRTogZmluaXNo
IHRoaXMgaW1wbGVtZW50YXRpb24gLSBodHRwczovL3dlYmtpdC5vcmcvYi8xMjI0MzAKLSAgICBj
YXBhYmlsaXRpZXMuYWRkU291cmNlVHlwZShSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzOjpNaWNy
b3Bob25lKTsKIH0KIAotdm9pZCBBVkF1ZGlvQ2FwdHVyZVNvdXJjZTo6dXBkYXRlU3RhdGVzKCkK
K3ZvaWQgQVZBdWRpb0NhcHR1cmVTb3VyY2U6OmluaXRpYWxpemVTdXBwb3J0ZWRDb25zdHJhaW50
cyhSZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMmIHN1cHBvcnRlZENvbnN0
cmFpbnRzKQoreworICAgIHN1cHBvcnRlZENvbnN0cmFpbnRzLnNldFN1cHBvcnRzVm9sdW1lKHRy
dWUpOworfQorCit2b2lkIEFWQXVkaW9DYXB0dXJlU291cmNlOjp1cGRhdGVTZXR0aW5ncyhSZWFs
dGltZU1lZGlhU291cmNlU2V0dGluZ3MmIHNldHRpbmdzKQogewogICAgIC8vIEZJWE1FOiB1c2Ug
W0FWQ2FwdHVyZUF1ZGlvUHJldmlld091dHB1dCB2b2x1bWVdIGZvciB2b2x1bWUKIAotICAgIFJl
YWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXMqIHN0YXRlcyA9IGN1cnJlbnRTdGF0ZXMoKTsKLSAgICBz
dGF0ZXMtPnNldFNvdXJjZUlkKGlkKCkpOwotICAgIHN0YXRlcy0+c2V0U291cmNlVHlwZShSZWFs
dGltZU1lZGlhU291cmNlU3RhdGVzOjpNaWNyb3Bob25lKTsKKyAgICBzZXR0aW5ncy5zZXREZXZp
Y2VJZChpZCgpKTsKIH0KIAogdm9pZCBBVkF1ZGlvQ2FwdHVyZVNvdXJjZTo6YWRkT2JzZXJ2ZXIo
QVZBdWRpb0NhcHR1cmVTb3VyY2U6Ok9ic2VydmVyKiBvYnNlcnZlcikKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FW
Q2FwdHVyZURldmljZU1hbmFnZXIuaAkocmV2aXNpb24gMTkyOTMwKQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQ2FwdHVyZURldmljZU1hbmFnZXIuaAkod29y
a2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkNhcHR1cmVEZXZpY2VNYW5h
Z2VyLmgiCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW1UcmFja1NvdXJjZXNSZXF1ZXN0Q2xpZW50Lmgi
CiAjaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZS5oIgorI2luY2x1ZGUgIlJlYWx0aW1lTWVk
aWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cy5oIgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtNjUsNiArNjYsOCBAQCBw
dWJsaWM6CiAKICAgICB2b2lkIGRldmljZUNvbm5lY3RlZCgpOwogICAgIHZvaWQgZGV2aWNlRGlz
Y29ubmVjdGVkKEFWQ2FwdHVyZURldmljZSopOworICAgIAorICAgIGNvbnN0IFJlYWx0aW1lTWVk
aWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cyYgc3VwcG9ydGVkQ29uc3RyYWludHMoKTsKIAog
cHJvdGVjdGVkOgogICAgIHN0YXRpYyBib29sIGlzQXZhaWxhYmxlKCk7CkBAIC04MCw2ICs4Myw3
IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIHJlZ2lzdGVyRm9yRGV2aWNlTm90aWZpY2F0aW9ucygp
OwogCiAgICAgUmV0YWluUHRyPFdlYkNvcmVBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyT2JzZXJ2ZXI+
IG1fb2JqY09ic2VydmVyOworICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJh
aW50cyBtX3N1cHBvcnRlZENvbnN0cmFpbnRzOwogICAgIFZlY3RvcjxDYXB0dXJlRGV2aWNlSW5m
bz4gbV9kZXZpY2VzOwogfTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL0FWQ2FwdHVyZURldmljZU1hbmFnZXIubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQ2FwdHVyZURldmljZU1hbmFnZXIu
bW0JKHJldmlzaW9uIDE5MjkzMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL21hYy9BVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3
ICszNiw3IEBACiAjaW1wb3J0ICJNZWRpYUNvbnN0cmFpbnRzLmgiCiAjaW1wb3J0ICJSZWFsdGlt
ZU1lZGlhU291cmNlLmgiCiAjaW1wb3J0ICJSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmgiCi0j
aW1wb3J0ICJSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzLmgiCisjaW1wb3J0ICJSZWFsdGltZU1l
ZGlhU291cmNlU2V0dGluZ3MuaCIKICNpbXBvcnQgIlJlYWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0
ZWRDb25zdHJhaW50cy5oIgogI2ltcG9ydCAiU29mdExpbmtpbmcuaCIKICNpbXBvcnQgIlVVSUQu
aCIKQEAgLTM0NCw2ICszNDQsMzEgQEAgYm9vbCBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjppc1N1
cHBvcnRlZAogICAgIHJldHVybiBDYXB0dXJlRGV2aWNlTWFuYWdlcjo6aXNTdXBwb3J0ZWRGcmFt
ZVJhdGUoZnJhbWVSYXRlKTsKIH0KIAorY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBvcnRl
ZENvbnN0cmFpbnRzJiBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzdXBwb3J0ZWRDb25zdHJhaW50
cygpCit7CisgICAgaWYgKG1fc3VwcG9ydGVkQ29uc3RyYWludHMuc3VwcG9ydHNEZXZpY2VJZCgp
KQorICAgICAgICByZXR1cm4gbV9zdXBwb3J0ZWRDb25zdHJhaW50czsKKworICAgIG1fc3VwcG9y
dGVkQ29uc3RyYWludHMuc2V0U3VwcG9ydHNEZXZpY2VJZCh0cnVlKTsKKworICAgIFZlY3RvcjxD
YXB0dXJlRGV2aWNlPiYgZGV2aWNlcyA9IGNhcHR1cmVEZXZpY2VMaXN0KCk7CisKKyAgICBmb3Ig
KGF1dG8mIGNhcHR1cmVEZXZpY2UgOiBkZXZpY2VzKSB7CisgICAgICAgIGlmIChjYXB0dXJlRGV2
aWNlLm1fYXVkaW9Tb3VyY2VJZC5pc0VtcHR5KCkpCisgICAgICAgICAgICBtX3N1cHBvcnRlZENv
bnN0cmFpbnRzLnNldFN1cHBvcnRzVm9sdW1lKHRydWUpOworCisgICAgICAgIGlmIChjYXB0dXJl
RGV2aWNlLm1fdmlkZW9Tb3VyY2VJZC5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIG1fc3VwcG9y
dGVkQ29uc3RyYWludHMuc2V0U3VwcG9ydHNXaWR0aCh0cnVlKTsKKyAgICAgICAgICAgIG1fc3Vw
cG9ydGVkQ29uc3RyYWludHMuc2V0U3VwcG9ydHNIZWlnaHQodHJ1ZSk7CisgICAgICAgICAgICBt
X3N1cHBvcnRlZENvbnN0cmFpbnRzLnNldFN1cHBvcnRzQXNwZWN0UmF0aW8odHJ1ZSk7CisgICAg
ICAgICAgICBtX3N1cHBvcnRlZENvbnN0cmFpbnRzLnNldFN1cHBvcnRzRnJhbWVSYXRlKHRydWUp
OworICAgICAgICAgICAgbV9zdXBwb3J0ZWRDb25zdHJhaW50cy5zZXRTdXBwb3J0c0ZhY2luZ01v
ZGUodHJ1ZSk7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgcmV0dXJuIG1fc3VwcG9ydGVk
Q29uc3RyYWludHM7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogQGltcGxlbWVudGF0
aW9uIFdlYkNvcmVBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyT2JzZXJ2ZXIKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVk1lZGlhQ2FwdHVyZVNvdXJjZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVk1l
ZGlhQ2FwdHVyZVNvdXJjZS5oCShyZXZpc2lvbiAxOTI5MzApCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZNZWRpYUNhcHR1cmVTb3VyY2UuaAkod29ya2luZyBj
b3B5KQpAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgQVZDYXB0dXJlU2Vzc2lv
biAqc2Vzc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fc2Vzc2lvbi5nZXQoKTsgfQogCi0gICAgY29u
c3QgUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlcyYgc3RhdGVzKCkgb3ZlcnJpZGU7CisgICAgY29u
c3QgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJiBzZXR0aW5ncygpIG92ZXJyaWRlOwogCiAg
ICAgdm9pZCBzdGFydFByb2R1Y2luZ0RhdGEoKSBvdmVycmlkZTsKICAgICB2b2lkIHN0b3BQcm9k
dWNpbmdEYXRhKCkgb3ZlcnJpZGU7CkBAIC03MSwxNCArNzEsMTUgQEAgcHJvdGVjdGVkOgogCiAg
ICAgdmlydHVhbCB2b2lkIHNldHVwQ2FwdHVyZVNlc3Npb24oKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIHNodXRkb3duQ2FwdHVyZVNlc3Npb24oKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0
ZVN0YXRlcygpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlU2V0dGluZ3MoUmVhbHRpbWVN
ZWRpYVNvdXJjZVNldHRpbmdzJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsaXplQ2Fw
YWJpbGl0aWVzKFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMmKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIGluaXRpYWxpemVTdXBwb3J0ZWRDb25zdHJhaW50cyhSZWFsdGltZU1lZGlhU291
cmNlU3VwcG9ydGVkQ29uc3RyYWludHMmKSA9IDA7CiAKICAgICBBVkNhcHR1cmVEZXZpY2UgKmRl
dmljZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGV2aWNlLmdldCgpOyB9CiAKLSAgICBSZWFsdGltZU1l
ZGlhU291cmNlU3RhdGVzKiBjdXJyZW50U3RhdGVzKCkgeyByZXR1cm4gJm1fY3VycmVudFN0YXRl
czsgfQogICAgIE1lZGlhQ29uc3RyYWludHMqIGNvbnN0cmFpbnRzKCkgeyByZXR1cm4gbV9jb25z
dHJhaW50cy5nZXQoKTsgfQogCisgICAgUmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBvcnRlZENvbnN0
cmFpbnRzJiBzdXBwb3J0ZWRDb25zdHJhaW50cygpOwogICAgIFJlZlB0cjxSZWFsdGltZU1lZGlh
U291cmNlQ2FwYWJpbGl0aWVzPiBjYXBhYmlsaXRpZXMoKSBvdmVycmlkZTsKIAogICAgIHZvaWQg
c2V0VmlkZW9TYW1wbGVCdWZmZXJEZWxlZ2F0ZShBVkNhcHR1cmVWaWRlb0RhdGFPdXRwdXQqKTsK
QEAgLTkwLDExICs5MSwxMiBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0dXBTZXNzaW9uKCk7CiAg
ICAgdm9pZCByZXNldCgpIG92ZXJyaWRlOwogCisgICAgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRp
bmdzIG1fY3VycmVudFNldHRpbmdzOworICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRD
b25zdHJhaW50cyBtX3N1cHBvcnRlZENvbnN0cmFpbnRzOwogICAgIFdlYWtQdHJGYWN0b3J5PEFW
TWVkaWFDYXB0dXJlU291cmNlPiBtX3dlYWtQdHJGYWN0b3J5OwogICAgIFJldGFpblB0cjxXZWJD
b3JlQVZNZWRpYUNhcHR1cmVTb3VyY2VPYnNlcnZlcj4gbV9vYmpjT2JzZXJ2ZXI7CiAgICAgUmVm
UHRyPE1lZGlhQ29uc3RyYWludHM+IG1fY29uc3RyYWludHM7CiAgICAgUmVmUHRyPFJlYWx0aW1l
TWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM+IG1fY2FwYWJpbGl0aWVzOwotICAgIFJlYWx0aW1lTWVk
aWFTb3VyY2VTdGF0ZXMgbV9jdXJyZW50U3RhdGVzOwogICAgIFJldGFpblB0cjxBVkNhcHR1cmVT
ZXNzaW9uPiBtX3Nlc3Npb247CiAgICAgUmV0YWluUHRyPEFWQ2FwdHVyZURldmljZT4gbV9kZXZp
Y2U7CiAgICAgYm9vbCBtX2lzUnVubmluZyB7IGZhbHNlfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVk1lZGlhQ2FwdHVyZVNvdXJjZS5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZNZWRpYUNh
cHR1cmVTb3VyY2UubW0JKHJldmlzaW9uIDE5MjkzMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9BVk1lZGlhQ2FwdHVyZVNvdXJjZS5tbQkod29ya2luZyBjb3B5
KQpAQCAtMzEsNyArMzEsNyBAQAogI2ltcG9ydCAiQXVkaW9Tb3VyY2VQcm92aWRlci5oIgogI2lt
cG9ydCAiTG9nZ2luZy5oIgogI2ltcG9ydCAiTWVkaWFDb25zdHJhaW50cy5oIgotI2ltcG9ydCAi
UmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlcy5oIgorI2ltcG9ydCAiUmVhbHRpbWVNZWRpYVNvdXJj
ZVNldHRpbmdzLmgiCiAjaW1wb3J0ICJTb2Z0TGlua2luZy5oIgogI2ltcG9ydCAiVVVJRC5oIgog
I2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWRm91bmRhdGlvbi5oPgpAQCAtMTMyLDcgKzEzMiw2IEBA
IEFWTWVkaWFDYXB0dXJlU291cmNlOjpBVk1lZGlhQ2FwdHVyZVNvdXIKIHsKICAgICBzZXROYW1l
KGRldmljZS5sb2NhbGl6ZWROYW1lKTsKICAgICBzZXRQZXJzaXN0ZW50SUQoZGV2aWNlLnVuaXF1
ZUlEKTsKLSAgICBtX2N1cnJlbnRTdGF0ZXMuc2V0U291cmNlVHlwZSh0eXBlID09IFJlYWx0aW1l
TWVkaWFTb3VyY2U6OlZpZGVvID8gUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlczo6Q2FtZXJhIDog
UmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlczo6TWljcm9waG9uZSk7CiB9CiAKIEFWTWVkaWFDYXB0
dXJlU291cmNlOjp+QVZNZWRpYUNhcHR1cmVTb3VyY2UoKQpAQCAtMTY1LDExICsxNjQsMjUgQEAg
dm9pZCBBVk1lZGlhQ2FwdHVyZVNvdXJjZTo6c3RvcFByb2R1Y2luZwogICAgIFttX3Nlc3Npb24u
Z2V0KCkgc3RvcFJ1bm5pbmddOwogfQogCi1jb25zdCBSZWFsdGltZU1lZGlhU291cmNlU3RhdGVz
JiBBVk1lZGlhQ2FwdHVyZVNvdXJjZTo6c3RhdGVzKCkKK2NvbnN0IFJlYWx0aW1lTWVkaWFTb3Vy
Y2VTZXR0aW5ncyYgQVZNZWRpYUNhcHR1cmVTb3VyY2U6OnNldHRpbmdzKCkKIHsKLSAgICBtX2N1
cnJlbnRTdGF0ZXMuc2V0U291cmNlSWQoaWQoKSk7Ci0gICAgdXBkYXRlU3RhdGVzKCk7Ci0gICAg
cmV0dXJuIG1fY3VycmVudFN0YXRlczsKKyAgICBpZiAobV9jdXJyZW50U2V0dGluZ3MuZGV2aWNl
SWQoKS5pc0VtcHR5KCkpCisgICAgICAgIG1fY3VycmVudFNldHRpbmdzLnNldFN1cHBvcnRlZENv
bnN0cmFpdHMoc3VwcG9ydGVkQ29uc3RyYWludHMoKSk7CisKKyAgICBtX2N1cnJlbnRTZXR0aW5n
cy5zZXREZXZpY2VJZChpZCgpKTsKKyAgICB1cGRhdGVTZXR0aW5ncyhtX2N1cnJlbnRTZXR0aW5n
cyk7CisgICAgcmV0dXJuIG1fY3VycmVudFNldHRpbmdzOworfQorCitSZWFsdGltZU1lZGlhU291
cmNlU3VwcG9ydGVkQ29uc3RyYWludHMmIEFWTWVkaWFDYXB0dXJlU291cmNlOjpzdXBwb3J0ZWRD
b25zdHJhaW50cygpCit7CisgICAgaWYgKG1fc3VwcG9ydGVkQ29uc3RyYWludHMuc3VwcG9ydHNE
ZXZpY2VJZCgpKQorICAgICAgICByZXR1cm4gbV9zdXBwb3J0ZWRDb25zdHJhaW50czsKKworICAg
IG1fc3VwcG9ydGVkQ29uc3RyYWludHMuc2V0U3VwcG9ydHNEZXZpY2VJZCh0cnVlKTsKKyAgICBp
bml0aWFsaXplU3VwcG9ydGVkQ29uc3RyYWludHMobV9zdXBwb3J0ZWRDb25zdHJhaW50cyk7CisK
KyAgICByZXR1cm4gbV9zdXBwb3J0ZWRDb25zdHJhaW50czsKIH0KIAogUmVmUHRyPFJlYWx0aW1l
TWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM+IEFWTWVkaWFDYXB0dXJlU291cmNlOjpjYXBhYmlsaXRp
ZXMoKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlk
ZW9DYXB0dXJlU291cmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLmgJKHJldmlzaW9uIDE5MjkzMCkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVy
ZVNvdXJjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSw5ICs1NSwxMCBAQCBwcml2YXRlOgogICAg
IHZvaWQgc2V0dXBDYXB0dXJlU2Vzc2lvbigpIG92ZXJyaWRlOwogICAgIHZvaWQgc2h1dGRvd25D
YXB0dXJlU2Vzc2lvbigpIG92ZXJyaWRlOwogCi0gICAgdm9pZCB1cGRhdGVTdGF0ZXMoKSBvdmVy
cmlkZTsKKyAgICB2b2lkIHVwZGF0ZVNldHRpbmdzKFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5n
cyYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBpbml0aWFsaXplQ2FwYWJpbGl0aWVzKFJlYWx0aW1l
TWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMmKSBvdmVycmlkZTsKKyAgICB2b2lkIGluaXRpYWxpemVT
dXBwb3J0ZWRDb25zdHJhaW50cyhSZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWlu
dHMmKSBvdmVycmlkZTsKIAogICAgIGJvb2wgYXBwbHlDb25zdHJhaW50cyhNZWRpYUNvbnN0cmFp
bnRzKik7CiAgICAgYm9vbCBzZXRGcmFtZVJhdGVDb25zdHJhaW50KGZsb2F0IG1pbkZyYW1lUmF0
ZSwgZmxvYXQgbWF4RnJhbWVSYXRlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2Uu
bW0JKHJldmlzaW9uIDE5MjkzMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMzgsNyAr
MzgsNyBAQAogI2ltcG9ydCAiTm90SW1wbGVtZW50ZWQuaCIKICNpbXBvcnQgIlBsYXRmb3JtTGF5
ZXIuaCIKICNpbXBvcnQgIlJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaCIKLSNpbXBvcnQgIlJl
YWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXMuaCIKKyNpbXBvcnQgIlJlYWx0aW1lTWVkaWFTb3VyY2VT
ZXR0aW5ncy5oIgogI2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWRm91bmRhdGlvbi5oPgogI2ltcG9y
dCA8b2JqYy9ydW50aW1lLmg+CiAKQEAgLTExMSwyOCArMTExLDMzIEBAIEFWVmlkZW9DYXB0dXJl
U291cmNlOjp+QVZWaWRlb0NhcHR1cmVTb3UKIHZvaWQgQVZWaWRlb0NhcHR1cmVTb3VyY2U6Omlu
aXRpYWxpemVDYXBhYmlsaXRpZXMoUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcyYgY2Fw
YWJpbGl0aWVzKQogewogICAgIC8vIEZJWE1FOiBmaW5pc2ggdGhpcyBpbXBsZW1lbnRhdGlvbgot
ICAgIGNhcGFiaWxpdGllcy5zZXRTb3VyY2VJZChjdXJyZW50U3RhdGVzKCktPnNvdXJjZUlkKCkp
OwotICAgIGNhcGFiaWxpdGllcy5hZGRTb3VyY2VUeXBlKFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0
ZXM6OkNhbWVyYSk7CisgICAgY2FwYWJpbGl0aWVzLnNldFNvdXJjZUlkKGlkKCkpOwogfQogCi12
b2lkIEFWVmlkZW9DYXB0dXJlU291cmNlOjp1cGRhdGVTdGF0ZXMoKQordm9pZCBBVlZpZGVvQ2Fw
dHVyZVNvdXJjZTo6aW5pdGlhbGl6ZVN1cHBvcnRlZENvbnN0cmFpbnRzKFJlYWx0aW1lTWVkaWFT
b3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cyYgc3VwcG9ydGVkQ29uc3RyYWludHMpCiB7Ci0gICAg
UmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlcyogc3RhdGVzID0gY3VycmVudFN0YXRlcygpOworICAg
IHN1cHBvcnRlZENvbnN0cmFpbnRzLnNldFN1cHBvcnRzV2lkdGgodHJ1ZSk7CisgICAgc3VwcG9y
dGVkQ29uc3RyYWludHMuc2V0U3VwcG9ydHNIZWlnaHQodHJ1ZSk7CisgICAgc3VwcG9ydGVkQ29u
c3RyYWludHMuc2V0U3VwcG9ydHNBc3BlY3RSYXRpbyh0cnVlKTsKKyAgICBzdXBwb3J0ZWRDb25z
dHJhaW50cy5zZXRTdXBwb3J0c0ZyYW1lUmF0ZSh0cnVlKTsKKyAgICBzdXBwb3J0ZWRDb25zdHJh
aW50cy5zZXRTdXBwb3J0c0ZhY2luZ01vZGUodHJ1ZSk7Cit9CiAKLSAgICBzdGF0ZXMtPnNldFNv
dXJjZUlkKGlkKCkpOwotICAgIHN0YXRlcy0+c2V0U291cmNlVHlwZShSZWFsdGltZU1lZGlhU291
cmNlU3RhdGVzOjpDYW1lcmEpOwordm9pZCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6dXBkYXRlU2V0
dGluZ3MoUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJiBzZXR0aW5ncykKK3sKKyAgICBzZXR0
aW5ncy5zZXREZXZpY2VJZChpZCgpKTsKIAogICAgIGlmIChbZGV2aWNlKCkgcG9zaXRpb25dID09
IEFWQ2FwdHVyZURldmljZVBvc2l0aW9uRnJvbnQpCi0gICAgICAgIHN0YXRlcy0+c2V0RmFjaW5n
TW9kZShSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzOjpVc2VyKTsKKyAgICAgICAgc2V0dGluZ3Mu
c2V0RmFjaW5nTW9kZShSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OlVzZXIpOwogICAgIGVs
c2UgaWYgKFtkZXZpY2UoKSBwb3NpdGlvbl0gPT0gQVZDYXB0dXJlRGV2aWNlUG9zaXRpb25CYWNr
KQotICAgICAgICBzdGF0ZXMtPnNldEZhY2luZ01vZGUoUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRl
czo6RW52aXJvbm1lbnQpOworICAgICAgICBzZXR0aW5ncy5zZXRGYWNpbmdNb2RlKFJlYWx0aW1l
TWVkaWFTb3VyY2VTZXR0aW5nczo6RW52aXJvbm1lbnQpOwogICAgIGVsc2UKLSAgICAgICAgc3Rh
dGVzLT5zZXRGYWNpbmdNb2RlKFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXM6OlVua25vd24pOwor
ICAgICAgICBzZXR0aW5ncy5zZXRGYWNpbmdNb2RlKFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5n
czo6VW5rbm93bik7CiAgICAgCi0gICAgc3RhdGVzLT5zZXRGcmFtZVJhdGUobV9mcmFtZVJhdGUp
OwotICAgIHN0YXRlcy0+c2V0V2lkdGgobV93aWR0aCk7Ci0gICAgc3RhdGVzLT5zZXRIZWlnaHQo
bV9oZWlnaHQpOwotICAgIHN0YXRlcy0+c2V0QXNwZWN0UmF0aW8oc3RhdGljX2Nhc3Q8ZmxvYXQ+
KG1fd2lkdGgpIC8gbV9oZWlnaHQpOworICAgIHNldHRpbmdzLnNldEZyYW1lUmF0ZShtX2ZyYW1l
UmF0ZSk7CisgICAgc2V0dGluZ3Muc2V0V2lkdGgobV93aWR0aCk7CisgICAgc2V0dGluZ3Muc2V0
SGVpZ2h0KG1faGVpZ2h0KTsKKyAgICBzZXR0aW5ncy5zZXRBc3BlY3RSYXRpbyhzdGF0aWNfY2Fz
dDxmbG9hdD4obV93aWR0aCkgLyBtX2hlaWdodCk7CiB9CiAKIGJvb2wgQVZWaWRlb0NhcHR1cmVT
b3VyY2U6OnNldEZyYW1lUmF0ZUNvbnN0cmFpbnQoZmxvYXQgbWluRnJhbWVSYXRlLCBmbG9hdCBt
YXhGcmFtZVJhdGUpCkBAIC0yOTIsNyArMjk3LDcgQEAgdm9pZCBBVlZpZGVvQ2FwdHVyZVNvdXJj
ZTo6cHJvY2Vzc05ld0ZyYQogCiAgICAgdXBkYXRlRnJhbWVyYXRlKHNhbXBsZUJ1ZmZlci5nZXQo
KSk7CiAKLSAgICBib29sIHN0YXRlc0NoYW5nZWQgPSBmYWxzZTsKKyAgICBib29sIHNldHRpbmdz
Q2hhbmdlZCA9IGZhbHNlOwogCiAgICAgbV9idWZmZXIgPSBzYW1wbGVCdWZmZXI7CiAgICAgbV9s
YXN0SW1hZ2UgPSBudWxscHRyOwpAQCAtMzAxLDExICszMDYsMTEgQEAgdm9pZCBBVlZpZGVvQ2Fw
dHVyZVNvdXJjZTo6cHJvY2Vzc05ld0ZyYQogICAgIGlmIChkaW1lbnNpb25zLndpZHRoICE9IG1f
d2lkdGggfHwgZGltZW5zaW9ucy5oZWlnaHQgIT0gbV9oZWlnaHQpIHsKICAgICAgICAgbV93aWR0
aCA9IGRpbWVuc2lvbnMud2lkdGg7CiAgICAgICAgIG1faGVpZ2h0ID0gZGltZW5zaW9ucy5oZWln
aHQ7Ci0gICAgICAgIHN0YXRlc0NoYW5nZWQgPSB0cnVlOworICAgICAgICBzZXR0aW5nc0NoYW5n
ZWQgPSB0cnVlOwogICAgIH0KIAotICAgIGlmIChzdGF0ZXNDaGFuZ2VkKQotICAgICAgICB0aGlz
LT5zdGF0ZXNEaWRDaGFuZ2VkKCk7CisgICAgaWYgKHNldHRpbmdzQ2hhbmdlZCkKKyAgICAgICAg
dGhpcy0+c2V0dGluZ3NEaWRDaGFuZ2VkKCk7CiB9CiAKIHZvaWQgQVZWaWRlb0NhcHR1cmVTb3Vy
Y2U6OmNhcHR1cmVPdXRwdXREaWRPdXRwdXRTYW1wbGVCdWZmZXJGcm9tQ29ubmVjdGlvbihBVkNh
cHR1cmVPdXRwdXRUeXBlKiwgQ01TYW1wbGVCdWZmZXJSZWYgc2FtcGxlQnVmZmVyLCBBVkNhcHR1
cmVDb25uZWN0aW9uVHlwZSopCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWMubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZVZpZGVvU291
cmNlTWFjLm1tCShyZXZpc2lvbiAxOTI5MzApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWMubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTM3LDcgKzM3LDcgQEAKICNpbXBvcnQgIk1lZGlhQ29uc3RyYWludHMuaCIKICNpbXBv
cnQgIk5vdEltcGxlbWVudGVkLmgiCiAjaW1wb3J0ICJQbGF0Zm9ybUxheWVyLmgiCi0jaW1wb3J0
ICJSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzLmgiCisjaW1wb3J0ICJSZWFsdGltZU1lZGlhU291
cmNlU2V0dGluZ3MuaCIKICNpbXBvcnQgPFF1YXJ0ekNvcmUvQ0FMYXllci5oPgogI2ltcG9ydCA8
UXVhcnR6Q29yZS9DQVRyYW5zYWN0aW9uLmg+CiAjaW1wb3J0IDxvYmpjL3J1bnRpbWUuaD4KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL29wZW53ZWJydGMvUmVhbHRp
bWVNZWRpYVNvdXJjZU93ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL29wZW53ZWJydGMvUmVhbHRpbWVNZWRpYVNvdXJjZU93ci5oCShyZXZpc2lv
biAxOTI5MzApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9vcGVud2Vi
cnRjL1JlYWx0aW1lTWVkaWFTb3VyY2VPd3IuaAkod29ya2luZyBjb3B5KQpAQCAtNTksMTMgKzU5
LDEzIEBAIFJlYWx0aW1lTWVkaWFTb3VyY2VPd3IoT3dyTWVkaWFTb3VyY2UqIG0KICAgICB2aXJ0
dWFsIH5SZWFsdGltZU1lZGlhU291cmNlT3dyKCkgeyB9CiAKICAgICB2aXJ0dWFsIFJlZlB0cjxS
ZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzPiBjYXBhYmlsaXRpZXMoKSB7IHJldHVybiBt
X2NhcGFiaWxpdGllczsgfQotICAgIHZpcnR1YWwgY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVN0
YXRlcyYgc3RhdGVzKCkgeyByZXR1cm4gbV9jdXJyZW50U3RhdGVzOyB9CisgICAgdmlydHVhbCBj
b25zdCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmIHNldHRpbmdzKCkgeyByZXR1cm4gbV9j
dXJyZW50U2V0dGluZ3M7IH0KIAogICAgIE93ck1lZGlhU291cmNlKiBtZWRpYVNvdXJjZSgpIGNv
bnN0IHsgcmV0dXJuIG1fbWVkaWFTb3VyY2U7IH0KIAogcHJpdmF0ZToKICAgICBSZWZQdHI8UmVh
bHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcz4gbV9jYXBhYmlsaXRpZXM7Ci0gICAgUmVhbHRp
bWVNZWRpYVNvdXJjZVN0YXRlcyBtX2N1cnJlbnRTdGF0ZXM7CisgICAgUmVhbHRpbWVNZWRpYVNv
dXJjZVNldHRpbmdzIG1fY3VycmVudFNldHRpbmdzOwogICAgIE93ck1lZGlhU291cmNlKiBtX21l
ZGlhU291cmNlOwogfTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2Nr
UmVhbHRpbWVBdWRpb1NvdXJjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZS5jcHAJKHJldmlzaW9uIDE5MjkzMCkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBACiAjaW5jbHVkZSAiTG9nZ2luZy5o
IgogI2luY2x1ZGUgIk1lZGlhQ29uc3RyYWludHMuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRl
ZC5oIgotI2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXMuaCIKKyNpbmNsdWRlICJS
ZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MuaCIKICNpbmNsdWRlICJVVUlELmgiCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKQEAgLTUwLDExICs1MCw5IEBAIE1vY2tSZWFsdGltZUF1ZGlvU291cmNl
OjpNb2NrUmVhbHRpbWVBdWQKIHsKIH0KIAotdm9pZCBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZTo6
dXBkYXRlU3RhdGVzKCkKK3ZvaWQgTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2U6OnVwZGF0ZVNldHRp
bmdzKFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYgc2V0dGluZ3MpCiB7Ci0gICAgUmVhbHRp
bWVNZWRpYVNvdXJjZVN0YXRlcyogc3RhdGVzID0gY3VycmVudFN0YXRlcygpOwotICAgIHN0YXRl
cy0+c2V0U291cmNlVHlwZShSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzOjpNaWNyb3Bob25lKTsK
LSAgICBzdGF0ZXMtPnNldFZvbHVtZSg1MCk7CisgICAgc2V0dGluZ3Muc2V0Vm9sdW1lKDUwKTsK
IH0KIAogdm9pZCBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZTo6aW5pdGlhbGl6ZUNhcGFiaWxpdGll
cyhSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzJiBjYXBhYmlsaXRpZXMpCkBAIC02Miw2
ICs2MCwxMSBAQCB2b2lkIE1vY2tSZWFsdGltZUF1ZGlvU291cmNlOjppbml0aWFsaXplCiAgICAg
Y2FwYWJpbGl0aWVzLnNldFZvbHVtZVJhbmdlKFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXR5
UmFuZ2UoMFVMLCAxMDBVTCwgdHJ1ZSkpOwogfQogCit2b2lkIE1vY2tSZWFsdGltZUF1ZGlvU291
cmNlOjppbml0aWFsaXplU3VwcG9ydGVkQ29uc3RyYWludHMoUmVhbHRpbWVNZWRpYVNvdXJjZVN1
cHBvcnRlZENvbnN0cmFpbnRzJiBzdXBwb3J0ZWRDb25zdHJhaW50cykKK3sKKyAgICBzdXBwb3J0
ZWRDb25zdHJhaW50cy5zZXRTdXBwb3J0c1ZvbHVtZSh0cnVlKTsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZUF1ZGlvU291
cmNlLmgJKHJldmlzaW9uIDE5MjkzMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2sv
TW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UuaAkod29ya2luZyBjb3B5KQpAQCAtNTEsOCArNTEsOSBA
QCBwcm90ZWN0ZWQ6CiAgICAgTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UoKTsKIAogcHJpdmF0ZToK
LSAgICB2b2lkIHVwZGF0ZVN0YXRlcygpIG92ZXJyaWRlOworICAgIHZvaWQgdXBkYXRlU2V0dGlu
Z3MoUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBpbml0
aWFsaXplQ2FwYWJpbGl0aWVzKFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMmKSBvdmVy
cmlkZTsKKyAgICB2b2lkIGluaXRpYWxpemVTdXBwb3J0ZWRDb25zdHJhaW50cyhSZWFsdGltZU1l
ZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMmKSBvdmVycmlkZTsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1Jl
YWx0aW1lTWVkaWFTb3VyY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwCShyZXZpc2lvbiAxOTI5MzApCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNyBAQAogI2luY2x1ZGUgIk1lZGlhQ29uc3Ry
YWludHMuaCIKICNpbmNsdWRlICJNZWRpYVN0cmVhbVRyYWNrU291cmNlc1JlcXVlc3RDbGllbnQu
aCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgotI2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFT
b3VyY2VTdGF0ZXMuaCIKKyNpbmNsdWRlICJSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MuaCIK
ICNpbmNsdWRlIDxtYXRoLmg+CiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5jbHVk
ZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CkBAIC05MiwyMiArOTIsMzkgQEAgTW9ja1JlYWx0aW1l
TWVkaWFTb3VyY2U6Ok1vY2tSZWFsdGltZU1lZAogCiBSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJj
ZUNhcGFiaWxpdGllcz4gTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2U6OmNhcGFiaWxpdGllcygpCiB7
Ci0gICAgaWYgKCFtX2NhcGFiaWxpdGllcykgewotICAgICAgICBtX2NhcGFiaWxpdGllcyA9IFJl
YWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM6OmNyZWF0ZSgpOwotICAgICAgICBtX2NhcGFi
aWxpdGllcy0+c2V0U291cmNlSWQoaWQoKSk7Ci0gICAgICAgIGluaXRpYWxpemVDYXBhYmlsaXRp
ZXMoKm1fY2FwYWJpbGl0aWVzLmdldCgpKTsKLSAgICB9CisgICAgaWYgKG1fY2FwYWJpbGl0aWVz
KQorICAgICAgICByZXR1cm4gbV9jYXBhYmlsaXRpZXM7CisKKyAgICBtX2NhcGFiaWxpdGllcyA9
IFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM6OmNyZWF0ZSgpOworICAgIG1fY2FwYWJp
bGl0aWVzLT5zZXRTb3VyY2VJZChpZCgpKTsKKyAgICBpbml0aWFsaXplQ2FwYWJpbGl0aWVzKCpt
X2NhcGFiaWxpdGllcy5nZXQoKSk7CisKICAgICByZXR1cm4gbV9jYXBhYmlsaXRpZXM7CiB9CiAK
LWNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXMmIE1vY2tSZWFsdGltZU1lZGlhU291cmNl
OjpzdGF0ZXMoKQorY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJiBNb2NrUmVhbHRp
bWVNZWRpYVNvdXJjZTo6c2V0dGluZ3MoKQoreworICAgIGlmIChtX2N1cnJlbnRTZXR0aW5ncy5k
ZXZpY2VJZCgpLmlzRW1wdHkoKSkgeworICAgICAgICBtX2N1cnJlbnRTZXR0aW5ncy5zZXRTdXBw
b3J0ZWRDb25zdHJhaXRzKHN1cHBvcnRlZENvbnN0cmFpbnRzKCkpOworICAgICAgICBtX2N1cnJl
bnRTZXR0aW5ncy5zZXREZXZpY2VJZChpZCgpKTsKKyAgICB9CisKKyAgICB1cGRhdGVTZXR0aW5n
cyhtX2N1cnJlbnRTZXR0aW5ncyk7CisgICAgcmV0dXJuIG1fY3VycmVudFNldHRpbmdzOworfQor
CitSZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMmIE1vY2tSZWFsdGltZU1l
ZGlhU291cmNlOjpzdXBwb3J0ZWRDb25zdHJhaW50cygpCiB7Ci0gICAgbV9jdXJyZW50U3RhdGVz
LnNldFNvdXJjZUlkKGlkKCkpOwotICAgIHVwZGF0ZVN0YXRlcygpOworICAgIGlmIChtX3N1cHBv
cnRlZENvbnN0cmFpbnRzLnN1cHBvcnRzRGV2aWNlSWQoKSkKKyAgICAgICAgcmV0dXJuIG1fc3Vw
cG9ydGVkQ29uc3RyYWludHM7CiAKLSAgICByZXR1cm4gbV9jdXJyZW50U3RhdGVzOworICAgIG1f
c3VwcG9ydGVkQ29uc3RyYWludHMuc2V0U3VwcG9ydHNEZXZpY2VJZCh0cnVlKTsKKyAgICBpbml0
aWFsaXplU3VwcG9ydGVkQ29uc3RyYWludHMobV9zdXBwb3J0ZWRDb25zdHJhaW50cyk7CisKKyAg
ICByZXR1cm4gbV9zdXBwb3J0ZWRDb25zdHJhaW50czsKIH0KIAorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2Uu
aAkocmV2aXNpb24gMTkyOTMwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2Nr
UmVhbHRpbWVNZWRpYVNvdXJjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01NywyMyArNTcsMjUgQEAg
cHVibGljOgogcHJvdGVjdGVkOgogICAgIE1vY2tSZWFsdGltZU1lZGlhU291cmNlKGNvbnN0IFN0
cmluZyYgaWQsIFR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSk7CiAKLSAgICB2aXJ0dWFsIHZvaWQg
dXBkYXRlU3RhdGVzKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTZXR0aW5ncyhSZWFs
dGltZU1lZGlhU291cmNlU2V0dGluZ3MmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGluaXRpYWxp
emVDYXBhYmlsaXRpZXMoUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcyYpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZVN1cHBvcnRlZENvbnN0cmFpbnRzKFJlYWx0aW1lTWVk
aWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cyYpID0gMDsKIAogICAgIHZvaWQgc3RhcnRQcm9k
dWNpbmdEYXRhKCkgb3ZlcnJpZGUgeyBtX2lzUHJvZHVjaW5nRGF0YSA9IHRydWU7IH0KICAgICB2
b2lkIHN0b3BQcm9kdWNpbmdEYXRhKCkgb3ZlcnJpZGUgeyBtX2lzUHJvZHVjaW5nRGF0YSA9IGZh
bHNlOyB9CiAKICAgICBSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcz4gY2Fw
YWJpbGl0aWVzKCkgb3ZlcnJpZGU7Ci0gICAgY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRl
cyYgc3RhdGVzKCkgb3ZlcnJpZGU7CisgICAgY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRp
bmdzJiBzZXR0aW5ncygpIG92ZXJyaWRlOwogCi0gICAgUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRl
cyogY3VycmVudFN0YXRlcygpIHsgcmV0dXJuICZtX2N1cnJlbnRTdGF0ZXM7IH0KLSAgICBNZWRp
YUNvbnN0cmFpbnRzKiBjb25zdHJhaW50cygpIHsgcmV0dXJuIG1fY29uc3RyYWludHMuZ2V0KCk7
IH0KKyAgICBNZWRpYUNvbnN0cmFpbnRzJiBjb25zdHJhaW50cygpIHsgcmV0dXJuICptX2NvbnN0
cmFpbnRzLmdldCgpOyB9CisgICAgUmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBvcnRlZENvbnN0cmFp
bnRzJiBzdXBwb3J0ZWRDb25zdHJhaW50cygpOwogCiBwcml2YXRlOgogCiAgICAgYm9vbCBpc1By
b2R1Y2luZ0RhdGEoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2lzUHJvZHVjaW5nRGF0YTsg
fQogCi0gICAgUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlcyBtX2N1cnJlbnRTdGF0ZXM7CisgICAg
UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzIG1fY3VycmVudFNldHRpbmdzOworICAgIFJlYWx0
aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cyBtX3N1cHBvcnRlZENvbnN0cmFpbnRz
OwogICAgIFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzPiBtX2NhcGFiaWxp
dGllczsKICAgICBSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gbV9jb25zdHJhaW50czsKICAgICBi
b29sIG1faXNQcm9kdWNpbmdEYXRhIHsgZmFsc2UgfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwCShy
ZXZpc2lvbiAxOTI5MzApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFs
dGltZVZpZGVvU291cmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksNyArMzksNyBAQAogI2lu
Y2x1ZGUgIk1lZGlhQ29uc3RyYWludHMuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgog
I2luY2x1ZGUgIlBsYXRmb3JtTGF5ZXIuaCIKLSNpbmNsdWRlICJSZWFsdGltZU1lZGlhU291cmNl
U3RhdGVzLmgiCisjaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzLmgiCiAjaW5j
bHVkZSAiVVVJRC5oIgogI2luY2x1ZGUgPG1hdGguaD4KICNpbmNsdWRlIDx3dGYvQ3VycmVudFRp
bWUuaD4KQEAgLTkwLDM5ICs5MCwzMiBAQCBkb3VibGUgTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6
OmVsYXBzZWRUCiAgICAgcmV0dXJuIG1fZWxhcHNlZFRpbWUgKyAobW9ub3RvbmljYWxseUluY3Jl
YXNpbmdUaW1lKCkgLSBtX3N0YXJ0VGltZSk7CiB9CiAKLXZvaWQgTW9ja1JlYWx0aW1lVmlkZW9T
b3VyY2U6OnVwZGF0ZVN0YXRlcygpCit2b2lkIE1vY2tSZWFsdGltZVZpZGVvU291cmNlOjp1cGRh
dGVTZXR0aW5ncyhSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmIHNldHRpbmdzKQogewotICAg
IFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXMqIHN0YXRlcyA9IGN1cnJlbnRTdGF0ZXMoKTsKLQot
ICAgIHN0YXRlcy0+c2V0U291cmNlVHlwZShSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzOjpDYW1l
cmEpOwotICAgIHN0YXRlcy0+c2V0RmFjaW5nTW9kZShSZWFsdGltZU1lZGlhU291cmNlU3RhdGVz
OjpVc2VyKTsKLSAgICBzdGF0ZXMtPnNldEZyYW1lUmF0ZShtX2ZyYW1lUmF0ZSk7Ci0gICAgc3Rh
dGVzLT5zZXRXaWR0aChtX3NpemUud2lkdGgoKSk7Ci0gICAgc3RhdGVzLT5zZXRIZWlnaHQobV9z
aXplLmhlaWdodCgpKTsKLSAgICBzdGF0ZXMtPnNldEFzcGVjdFJhdGlvKHN0YXRpY19jYXN0PGZs
b2F0PihtX3NpemUud2lkdGgoKSkgLyBtX3NpemUuaGVpZ2h0KCkpOworICAgIHNldHRpbmdzLnNl
dEZhY2luZ01vZGUoUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpVc2VyKTsKKyAgICBzZXR0
aW5ncy5zZXRGcmFtZVJhdGUobV9mcmFtZVJhdGUpOworICAgIHNldHRpbmdzLnNldFdpZHRoKG1f
c2l6ZS53aWR0aCgpKTsKKyAgICBzZXR0aW5ncy5zZXRIZWlnaHQobV9zaXplLmhlaWdodCgpKTsK
KyAgICBzZXR0aW5ncy5zZXRBc3BlY3RSYXRpbyhzdGF0aWNfY2FzdDxmbG9hdD4obV9zaXplLndp
ZHRoKCkpIC8gbV9zaXplLmhlaWdodCgpKTsKIH0KIAogdm9pZCBNb2NrUmVhbHRpbWVWaWRlb1Nv
dXJjZTo6aW5pdGlhbGl6ZUNhcGFiaWxpdGllcyhSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0
aWVzJiBjYXBhYmlsaXRpZXMpCiB7Ci0gICAgY2FwYWJpbGl0aWVzLmFkZFNvdXJjZVR5cGUoUmVh
bHRpbWVNZWRpYVNvdXJjZVN0YXRlczo6Q2FtZXJhKTsKLSAgICBjYXBhYmlsaXRpZXMuYWRkRmFj
aW5nTW9kZShSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzOjpVc2VyKTsKLSAgICBjYXBhYmlsaXRp
ZXMuYWRkRmFjaW5nTW9kZShSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzOjpFbnZpcm9ubWVudCk7
CisgICAgY2FwYWJpbGl0aWVzLmFkZEZhY2luZ01vZGUoUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRp
bmdzOjpVc2VyKTsKKyAgICBjYXBhYmlsaXRpZXMuYWRkRmFjaW5nTW9kZShSZWFsdGltZU1lZGlh
U291cmNlU2V0dGluZ3M6OkVudmlyb25tZW50KTsKICAgICBjYXBhYmlsaXRpZXMuc2V0V2lkdGhS
YW5nZShSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0eVJhbmdlKDMyMFVMLCAxOTIwVUwsIHRy
dWUpKTsKICAgICBjYXBhYmlsaXRpZXMuc2V0SGVpZ2h0UmFuZ2UoUmVhbHRpbWVNZWRpYVNvdXJj
ZUNhcGFiaWxpdHlSYW5nZSgyNDBVTCwgMTA4MFVMLCB0cnVlKSk7CiAgICAgY2FwYWJpbGl0aWVz
LnNldEZyYW1lUmF0ZVJhbmdlKFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXR5UmFuZ2UoMTUu
MGYsIDYwLjBmLCB0cnVlKSk7CiAgICAgY2FwYWJpbGl0aWVzLnNldEFzcGVjdFJhdGlvUmFuZ2Uo
UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdHlSYW5nZSg0IC8gMy4wZiwgMTYgLyA5LjBmLCB0
cnVlKSk7CiB9CiAKLXZvaWQgTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OnNldEZhY2luZ01vZGUo
UmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlczo6VmlkZW9GYWNpbmdNb2RlIG1vZGUpCit2b2lkIE1v
Y2tSZWFsdGltZVZpZGVvU291cmNlOjppbml0aWFsaXplU3VwcG9ydGVkQ29uc3RyYWludHMoUmVh
bHRpbWVNZWRpYVNvdXJjZVN1cHBvcnRlZENvbnN0cmFpbnRzJiBzdXBwb3J0ZWRDb25zdHJhaW50
cykKIHsKLSAgICBSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzKiBzdGF0ZXMgPSBjdXJyZW50U3Rh
dGVzKCk7Ci0KLSAgICBpZiAoc3RhdGVzLT5mYWNpbmdNb2RlKCkgPT0gbW9kZSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgc3RhdGVzLT5zZXRGYWNpbmdNb2RlKG1vZGUpOwotCi0gICAgc3RhdGVz
RGlkQ2hhbmdlZCgpOworICAgIHN1cHBvcnRlZENvbnN0cmFpbnRzLnNldFN1cHBvcnRzV2lkdGgo
dHJ1ZSk7CisgICAgc3VwcG9ydGVkQ29uc3RyYWludHMuc2V0U3VwcG9ydHNIZWlnaHQodHJ1ZSk7
CisgICAgc3VwcG9ydGVkQ29uc3RyYWludHMuc2V0U3VwcG9ydHNBc3BlY3RSYXRpbyh0cnVlKTsK
KyAgICBzdXBwb3J0ZWRDb25zdHJhaW50cy5zZXRTdXBwb3J0c0ZyYW1lUmF0ZSh0cnVlKTsKKyAg
ICBzdXBwb3J0ZWRDb25zdHJhaW50cy5zZXRTdXBwb3J0c0ZhY2luZ01vZGUodHJ1ZSk7CiB9CiAK
IHZvaWQgTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OnNldEZyYW1lUmF0ZShmbG9hdCByYXRlKQpA
QCAtMTM0LDcgKzEyNyw3IEBAIHZvaWQgTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OnNldEZyYW1l
UmEKICAgICBpZiAobV90aW1lci5pc0FjdGl2ZSgpKQogICAgICAgICBtX3RpbWVyLnN0YXJ0UmVw
ZWF0aW5nKHN0ZDo6Y2hyb25vOjptaWxsaXNlY29uZHMobHJvdW5kKDEwMDAgLyBtX2ZyYW1lUmF0
ZSkpKTsKIAotICAgIHN0YXRlc0RpZENoYW5nZWQoKTsKKyAgICBzZXR0aW5nc0RpZENoYW5nZWQo
KTsKIH0KIAogdm9pZCBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6c2V0U2l6ZShjb25zdCBJbnRT
aXplJiBzaXplKQpAQCAtMTY5LDcgKzE2Miw3IEBAIHZvaWQgTW9ja1JlYWx0aW1lVmlkZW9Tb3Vy
Y2U6OnNldFNpemUoY28KICAgICBtX2ltYWdlQnVmZmVyID0gbnVsbHB0cjsKICAgICB1cGRhdGVQ
bGF0Zm9ybUxheWVyKCk7CiAKLSAgICBzdGF0ZXNEaWRDaGFuZ2VkKCk7CisgICAgc2V0dGluZ3NE
aWRDaGFuZ2VkKCk7CiB9CiAKIHZvaWQgTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OmRyYXdBbmlt
YXRpb24oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQpAQCAtMjg0LDIwICsyNzcsMjAgQEAgdm9p
ZCBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6ZHJhd1RleHQoRwogICAgIGNvbnRleHQuZHJhd1Rl
eHQobV9zdGF0c0ZvbnQsIFRleHRSdW4oKFN0cmluZ1ZpZXcoc3RyaW5nKSkpLCBzdGF0c0xvY2F0
aW9uLCAwLCAtMSk7CiAKICAgICBjb25zdCBjaGFyKiBjYW1lcmE7Ci0gICAgc3dpdGNoIChzdGF0
ZXMoKS5mYWNpbmdNb2RlKCkpIHsKLSAgICBjYXNlIFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXM6
OlVzZXI6CisgICAgc3dpdGNoIChzZXR0aW5ncygpLmZhY2luZ01vZGUoKSkgeworICAgIGNhc2Ug
UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpVc2VyOgogICAgICAgICBjYW1lcmEgPSAiVXNl
ciBmYWNpbmciOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFJlYWx0aW1lTWVkaWFTb3VyY2VT
dGF0ZXM6OkVudmlyb25tZW50OgorICAgIGNhc2UgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdz
OjpFbnZpcm9ubWVudDoKICAgICAgICAgY2FtZXJhID0gIkVudmlyb25tZW50IGZhY2luZyI7CiAg
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlczo6TGVmdDoK
KyAgICBjYXNlIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6TGVmdDoKICAgICAgICAgY2Ft
ZXJhID0gIkxlZnQgZmFjaW5nIjsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBSZWFsdGltZU1l
ZGlhU291cmNlU3RhdGVzOjpSaWdodDoKKyAgICBjYXNlIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0
aW5nczo6UmlnaHQ6CiAgICAgICAgIGNhbWVyYSA9ICJSaWdodCBmYWNpbmciOwogICAgICAgICBi
cmVhazsKLSAgICBjYXNlIFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXM6OlVua25vd246CisgICAg
Y2FzZSBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OlVua25vd246CiAgICAgICAgIGNhbWVy
YSA9ICJVbmtub3duIjsKICAgICAgICAgYnJlYWs7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuaAko
cmV2aXNpb24gMTkyOTMwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVh
bHRpbWVWaWRlb1NvdXJjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01Myw3ICs1Myw2IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHNldFNpemUoY29uc3QgSW50U2l6ZSYpOwogICAgIGNvbnN0IEludFNpemUm
IHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KIAotICAgIHZvaWQgc2V0RmFjaW5nTW9k
ZShSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzOjpWaWRlb0ZhY2luZ01vZGUpOwogICAgIHZvaWQg
c2V0RnJhbWVSYXRlKGZsb2F0KTsKIAogcHJvdGVjdGVkOgpAQCAtNjMsOCArNjIsOSBAQCBwcm90
ZWN0ZWQ6CiAgICAgSW1hZ2VCdWZmZXIqIGltYWdlQnVmZmVyKCkgY29uc3Q7CiAKIHByaXZhdGU6
Ci0gICAgdm9pZCB1cGRhdGVTdGF0ZXMoKSBvdmVycmlkZTsKKyAgICB2b2lkIHVwZGF0ZVNldHRp
bmdzKFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYpIG92ZXJyaWRlOwogICAgIHZvaWQgaW5p
dGlhbGl6ZUNhcGFiaWxpdGllcyhSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzJikgb3Zl
cnJpZGU7CisgICAgdm9pZCBpbml0aWFsaXplU3VwcG9ydGVkQ29uc3RyYWludHMoUmVhbHRpbWVN
ZWRpYVNvdXJjZVN1cHBvcnRlZENvbnN0cmFpbnRzJikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHN0
YXJ0UHJvZHVjaW5nRGF0YSgpIG92ZXJyaWRlOwogICAgIHZvaWQgc3RvcFByb2R1Y2luZ0RhdGEo
KSBvdmVycmlkZTsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5MjkzMCkKKysrIExheW91dFRlc3RzL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDE1LTEyLTAyICBFcmlj
IENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtNZWRpYVN0cmVh
bV0gSW1wbGVtZW50IE1lZGlhU3RyZWFtVHJhY2suZ2V0U2V0dGluZ3MoKQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxNzI3CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L21lZGlhc3RyZWFtL01l
ZGlhU3RyZWFtLXZpZGVvLWVsZW1lbnQtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvbWVk
aWFzdHJlYW0vTWVkaWFTdHJlYW0tdmlkZW8tZWxlbWVudC10cmFjay1zdG9wLWV4cGVjdGVkLnR4
dDoKKyAgICAgICAgKiBmYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLXZpZGVvLWVsZW1lbnQt
dHJhY2stc3RvcC5odG1sOgorICAgICAgICAqIGZhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0t
dmlkZW8tZWxlbWVudC5odG1sOgorICAgICAgICAqIGZhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJl
YW1UcmFjay1nZXRTZXR0aW5ncy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
bWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay1nZXRTZXR0aW5ncy5odG1sOiBBZGRlZC4KKwog
MjAxNS0xMi0wMSAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAg
ICAgICAgIFtTVkcgLT4gT1RGIENvbnZlcnRlcl0gRm9yY2UgVW5pdHNQZXJFbSB0byAxMDAwCklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLXZpZGVvLWVsZW1l
bnQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJl
YW0vTWVkaWFTdHJlYW0tdmlkZW8tZWxlbWVudC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE5Mjkz
MCkKKysrIExheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0tdmlkZW8tZWxl
bWVudC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTIxLDggKzIxLDggQEAgRXZlbnQg
J2NhbnBsYXl0aHJvdWdoJwogdmlkZW8ucGF1c2UoKQogCiAqKioqIGNoZWNrIHZpZGVvIGVsZW1l
bnQgKioqKgotUEFTUyB2aWRlby52aWRlb1dpZHRoIGlzIG1lZGlhU3RyZWFtLmdldFZpZGVvVHJh
Y2tzKClbMF0uc3RhdGVzKCkud2lkdGgKLVBBU1MgdmlkZW8udmlkZW9IZWlnaHQgaXMgbWVkaWFT
dHJlYW0uZ2V0VmlkZW9UcmFja3MoKVswXS5zdGF0ZXMoKS5oZWlnaHQKK1BBU1MgdmlkZW8udmlk
ZW9XaWR0aCBpcyBtZWRpYVN0cmVhbS5nZXRWaWRlb1RyYWNrcygpWzBdLmdldFNldHRpbmdzKCku
d2lkdGgKK1BBU1MgdmlkZW8udmlkZW9IZWlnaHQgaXMgbWVkaWFTdHJlYW0uZ2V0VmlkZW9UcmFj
a3MoKVswXS5nZXRTZXR0aW5ncygpLmhlaWdodAogUEFTUyB2aWRlby5zcmMuaW5kZXhPZigiYmxv
YjoiKSBpcyAwCiBQQVNTIHZpZGVvLnNyY09iamVjdCBpcyBtZWRpYVN0cmVhbQogCkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLXZpZGVvLWVsZW1lbnQtdHJh
Y2stc3RvcC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbS12aWRlby1lbGVtZW50LXRyYWNrLXN0b3AtZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiAxOTI5MzApCisrKyBMYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlh
U3RyZWFtLXZpZGVvLWVsZW1lbnQtdHJhY2stc3RvcC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29w
eSkKQEAgLTIyLDggKzIyLDggQEAgdmlkZW8ucGF1c2UoKQogCiAqKioqIGNoZWNrIHN0YXRlcyB3
aXRoIGxpdmUgdmlkZW8gc3RyZWFtIHRyYWNrICoqKioKIFBBU1MgdmlkZW8uZW5kZWQgaXMgZmFs
c2UKLVBBU1MgdmlkZW8udmlkZW9XaWR0aCBpcyBtZWRpYVN0cmVhbS5nZXRWaWRlb1RyYWNrcygp
WzBdLnN0YXRlcygpLndpZHRoCi1QQVNTIHZpZGVvLnZpZGVvSGVpZ2h0IGlzIG1lZGlhU3RyZWFt
LmdldFZpZGVvVHJhY2tzKClbMF0uc3RhdGVzKCkuaGVpZ2h0CitQQVNTIHZpZGVvLnZpZGVvV2lk
dGggaXMgbWVkaWFTdHJlYW0uZ2V0VmlkZW9UcmFja3MoKVswXS5nZXRTZXR0aW5ncygpLndpZHRo
CitQQVNTIHZpZGVvLnZpZGVvSGVpZ2h0IGlzIG1lZGlhU3RyZWFtLmdldFZpZGVvVHJhY2tzKClb
MF0uZ2V0U2V0dGluZ3MoKS5oZWlnaHQKIFBBU1MgdmlkZW8uc3JjLmluZGV4T2YoImJsb2I6Iikg
aXMgMAogUEFTUyB2aWRlby5zcmNPYmplY3QgaXMgbWVkaWFTdHJlYW0KIApAQCAtNDEsOCArNDEs
OCBAQCBtZWRpYVN0cmVhbS5nZXRWaWRlb1RyYWNrcygpWzBdLmVuYWJsZWQgCiAKICoqKiogcmUt
Y2hlY2sgc3RhdGVzIG5vdyB0aGF0IHRoZSB2aWRlbyBzdHJlYW0gaGFzIGJlZW4gZGlzYWJsZWQg
KioqKgogUEFTUyBtZWRpYVN0cmVhbS5nZXRWaWRlb1RyYWNrcygpWzBdLmVuYWJsZWQgaXMgZmFs
c2UKLVBBU1MgdmlkZW8udmlkZW9XaWR0aCBpcyBtZWRpYVN0cmVhbS5nZXRWaWRlb1RyYWNrcygp
WzBdLnN0YXRlcygpLndpZHRoCi1QQVNTIHZpZGVvLnZpZGVvSGVpZ2h0IGlzIG1lZGlhU3RyZWFt
LmdldFZpZGVvVHJhY2tzKClbMF0uc3RhdGVzKCkuaGVpZ2h0CitQQVNTIHZpZGVvLnZpZGVvV2lk
dGggaXMgbWVkaWFTdHJlYW0uZ2V0VmlkZW9UcmFja3MoKVswXS5nZXRTZXR0aW5ncygpLndpZHRo
CitQQVNTIHZpZGVvLnZpZGVvSGVpZ2h0IGlzIG1lZGlhU3RyZWFtLmdldFZpZGVvVHJhY2tzKClb
MF0uZ2V0U2V0dGluZ3MoKS5oZWlnaHQKIAogKioqKiBzdG9wIE1lZGlhU3RyZWFtIHRyYWNrcyAq
KioqCiBtZWRpYVN0cmVhbS5nZXRWaWRlb1RyYWNrcygpWzBdLmVuYWJsZWQgPSB0cnVlCkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLXZpZGVvLWVsZW1lbnQt
dHJhY2stc3RvcC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJl
YW0vTWVkaWFTdHJlYW0tdmlkZW8tZWxlbWVudC10cmFjay1zdG9wLmh0bWwJKHJldmlzaW9uIDE5
MjkzMCkKKysrIExheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0tdmlkZW8t
ZWxlbWVudC10cmFjay1zdG9wLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDggKzQ0LDggQEAK
ICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBkZWJ1ZygiPGJyPioqKiogcmUtY2hlY2sg
c3RhdGVzIG5vdyB0aGF0IHRoZSB2aWRlbyBzdHJlYW0gaGFzIGJlZW4gZGlzYWJsZWQgKioqKiIp
OwogICAgICAgICAgICAgICAgIHNob3VsZEJlKCdtZWRpYVN0cmVhbS5nZXRWaWRlb1RyYWNrcygp
WzBdLmVuYWJsZWQnLCAnZmFsc2UnKTsKLSAgICAgICAgICAgICAgICBzaG91bGRCZSgndmlkZW8u
dmlkZW9XaWR0aCcsICdtZWRpYVN0cmVhbS5nZXRWaWRlb1RyYWNrcygpWzBdLnN0YXRlcygpLndp
ZHRoJyk7Ci0gICAgICAgICAgICAgICAgc2hvdWxkQmUoJ3ZpZGVvLnZpZGVvSGVpZ2h0JywgJ21l
ZGlhU3RyZWFtLmdldFZpZGVvVHJhY2tzKClbMF0uc3RhdGVzKCkuaGVpZ2h0Jyk7CisgICAgICAg
ICAgICAgICAgc2hvdWxkQmUoJ3ZpZGVvLnZpZGVvV2lkdGgnLCAnbWVkaWFTdHJlYW0uZ2V0Vmlk
ZW9UcmFja3MoKVswXS5nZXRTZXR0aW5ncygpLndpZHRoJyk7CisgICAgICAgICAgICAgICAgc2hv
dWxkQmUoJ3ZpZGVvLnZpZGVvSGVpZ2h0JywgJ21lZGlhU3RyZWFtLmdldFZpZGVvVHJhY2tzKClb
MF0uZ2V0U2V0dGluZ3MoKS5oZWlnaHQnKTsKIAogICAgICAgICAgICAgICAgIGRlYnVnKCI8YnI+
KioqKiBzdG9wIE1lZGlhU3RyZWFtIHRyYWNrcyAqKioqIik7CiAgICAgICAgICAgICAgICAgZXZh
bEFuZExvZygnbWVkaWFTdHJlYW0uZ2V0VmlkZW9UcmFja3MoKVswXS5lbmFibGVkID0gdHJ1ZScp
OwpAQCAtNjAsOCArNjAsOCBAQAogCiAgICAgICAgICAgICAgICAgZGVidWcoIjxicj4qKioqIGNo
ZWNrIHN0YXRlcyB3aXRoIGxpdmUgdmlkZW8gc3RyZWFtIHRyYWNrICoqKioiKTsKICAgICAgICAg
ICAgICAgICBzaG91bGRCZSgndmlkZW8uZW5kZWQnLCAnZmFsc2UnKTsKLSAgICAgICAgICAgICAg
ICBzaG91bGRCZSgndmlkZW8udmlkZW9XaWR0aCcsICdtZWRpYVN0cmVhbS5nZXRWaWRlb1RyYWNr
cygpWzBdLnN0YXRlcygpLndpZHRoJyk7Ci0gICAgICAgICAgICAgICAgc2hvdWxkQmUoJ3ZpZGVv
LnZpZGVvSGVpZ2h0JywgJ21lZGlhU3RyZWFtLmdldFZpZGVvVHJhY2tzKClbMF0uc3RhdGVzKCku
aGVpZ2h0Jyk7CisgICAgICAgICAgICAgICAgc2hvdWxkQmUoJ3ZpZGVvLnZpZGVvV2lkdGgnLCAn
bWVkaWFTdHJlYW0uZ2V0VmlkZW9UcmFja3MoKVswXS5nZXRTZXR0aW5ncygpLndpZHRoJyk7Cisg
ICAgICAgICAgICAgICAgc2hvdWxkQmUoJ3ZpZGVvLnZpZGVvSGVpZ2h0JywgJ21lZGlhU3RyZWFt
LmdldFZpZGVvVHJhY2tzKClbMF0uZ2V0U2V0dGluZ3MoKS5oZWlnaHQnKTsKICAgICAgICAgICAg
ICAgICBzaG91bGRCZSgndmlkZW8uc3JjLmluZGV4T2YoImJsb2I6IiknLCAnMCcpOwogICAgICAg
ICAgICAgICAgIHNob3VsZEJlKCd2aWRlby5zcmNPYmplY3QnLCAnbWVkaWFTdHJlYW0nKTsKICAg
ICAgICAgICAgICAgICAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFT
dHJlYW0tdmlkZW8tZWxlbWVudC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
bWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0tdmlkZW8tZWxlbWVudC5odG1sCShyZXZpc2lvbiAxOTI5
MzApCisrKyBMYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLXZpZGVvLWVs
ZW1lbnQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMzAsOSArMzAsNiBAQAogICAgICAgICAgICAg
ZnVuY3Rpb24gZW51bWVyYXRlUHJvcGVydGllcyhvYmplY3QsIHdvcmtGdW5jKQogICAgICAgICAg
ICAgewogICAgICAgICAgICAgICAgIGZvciAodmFyIHByb3BlcnR5IGluIG9iamVjdCkgewotICAg
ICAgICAgICAgICAgICAgICAvLyBXaGVuIGh0dHBzOi8vd2Via2l0Lm9yZy9iLzEyOTM3NSBpcyBm
aXhlZCwgd2UgaGF2ZSB0byByZW1vdmUKLSAgICAgICAgICAgICAgICAgICAgLy8gc3RhdGVzLmhh
c093blByb3BlcnR5KHByb3BlcnR5KSwgYmVjYXVzZSBhbGwgdGhlIGF0dHJpYnV0ZXMKLSAgICAg
ICAgICAgICAgICAgICAgLy8gd2lsbCBiZSBpbiB0aGUgcHJvdG90eXBlIGNoYWluLgogICAgICAg
ICAgICAgICAgICAgICBpZiAoIW9iamVjdC5oYXNPd25Qcm9wZXJ0eShwcm9wZXJ0eSkgJiYgIW9i
amVjdC5fX3Byb3RvX18uaGFzT3duUHJvcGVydHkocHJvcGVydHkpKQogICAgICAgICAgICAgICAg
ICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgIGlmIChvYmplY3RbcHJvcGVy
dHldID09PSB1bmRlZmluZWQpCkBAIC01OSw4ICs1Niw4IEBACiAgICAgICAgICAgICAgICAgZXZh
bEFuZExvZygidmlkZW8ucGF1c2UoKSIpOwogCiAgICAgICAgICAgICAgICAgZGVidWcoIjxicj4q
KioqIGNoZWNrIHZpZGVvIGVsZW1lbnQgKioqKiIpOwotICAgICAgICAgICAgICAgIHNob3VsZEJl
KCd2aWRlby52aWRlb1dpZHRoJywgJ21lZGlhU3RyZWFtLmdldFZpZGVvVHJhY2tzKClbMF0uc3Rh
dGVzKCkud2lkdGgnKTsKLSAgICAgICAgICAgICAgICBzaG91bGRCZSgndmlkZW8udmlkZW9IZWln
aHQnLCAnbWVkaWFTdHJlYW0uZ2V0VmlkZW9UcmFja3MoKVswXS5zdGF0ZXMoKS5oZWlnaHQnKTsK
KyAgICAgICAgICAgICAgICBzaG91bGRCZSgndmlkZW8udmlkZW9XaWR0aCcsICdtZWRpYVN0cmVh
bS5nZXRWaWRlb1RyYWNrcygpWzBdLmdldFNldHRpbmdzKCkud2lkdGgnKTsKKyAgICAgICAgICAg
ICAgICBzaG91bGRCZSgndmlkZW8udmlkZW9IZWlnaHQnLCAnbWVkaWFTdHJlYW0uZ2V0VmlkZW9U
cmFja3MoKVswXS5nZXRTZXR0aW5ncygpLmhlaWdodCcpOwogICAgICAgICAgICAgICAgIHNob3Vs
ZEJlKCd2aWRlby5zcmMuaW5kZXhPZigiYmxvYjoiKScsICcwJyk7CiAgICAgICAgICAgICAgICAg
c2hvdWxkQmUoJ3ZpZGVvLnNyY09iamVjdCcsICdtZWRpYVN0cmVhbScpOwogICAgICAgICAgICAg
ICAgIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNr
LWdldFNldHRpbmdzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2stZ2V0U2V0dGluZ3MtZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRy
YWNrLWdldFNldHRpbmdzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDIx
IEBACitUZXN0cyBNZWRpYVN0cmVhbVRyYWNrLmdldFNldHRpbmdzLgorCitPbiBzdWNjZXNzLCB5
b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVT
VCBDT01QTEVURSIuCisKKwordmlkZW8gdHJhY2s6CisgIHNldHRpbmdzLndpZHRoID0gNjQwCisg
IHNldHRpbmdzLmhlaWdodCA9IDQ4MAorICBzZXR0aW5ncy5hc3BlY3RSYXRpbyA9IDEuMzMKKyAg
c2V0dGluZ3MuZnJhbWVSYXRlID0gMzAKKyAgc2V0dGluZ3MuZmFjaW5nTW9kZSA9IHVzZXIKKyAg
c2V0dGluZ3MuZGV2aWNlSWQgPSA8VVVJRD4KKworYXVkaW8gdHJhY2s6CisgIHNldHRpbmdzLnZv
bHVtZSA9IDUwCisgIHNldHRpbmdzLmRldmljZUlkID0gPFVVSUQ+CisKK1BBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2stZ2V0U2V0dGluZ3MuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2stZ2V0
U2V0dGluZ3MuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJl
YW0vTWVkaWFTdHJlYW1UcmFjay1nZXRTZXR0aW5ncy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsNTEgQEAKKzwhRE9DVFlQRSBIVE1MPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAg
IDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
ICAgICAgICA8c2NyaXB0IHNyYz0iLi9yZXNvdXJjZXMvZ2V0VXNlck1lZGlhLWhlbHBlci5qcyI+
PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgICAgICB2YXIgbWVkaWFTdHJlYW07
CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIGxpbWl0UHJlY2lzaW9uKHZhbHVlLCBwcmVjaXNpb24p
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gIm51
bWJlciIgJiYgdmFsdWUgJSAxICE9IDApCisgICAgICAgICAgICAgICAgICAgIHJldHVybiB2YWx1
ZS50b0ZpeGVkKHByZWNpc2lvbik7CisgICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBnb3RTdHJlYW0oc3RyZWFtKQorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIG1lZGlhU3RyZWFtID0gc3RyZWFtOworICAgICAg
ICAgICAgICAgIG1lZGlhU3RyZWFtLmdldFRyYWNrcygpLmZvckVhY2goZnVuY3Rpb24odHJhY2sp
IHsKKyAgICAgICAgICAgICAgICAgICAgZGVidWcoYCR7dHJhY2sua2luZH0gdHJhY2s6YCk7Cisg
ICAgICAgICAgICAgICAgICAgIHNldHRpbmdzID0gdHJhY2suZ2V0U2V0dGluZ3MoKTsKKyAgICAg
ICAgICAgICAgICAgICAgZm9yICh2YXIgcHJvcGVydHkgaW4gc2V0dGluZ3MpIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChzZXR0aW5ncy5oYXNPd25Qcm9wZXJ0eShwcm9wZXJ0eSkgfHwg
c2V0dGluZ3MuX19wcm90b19fLmhhc093blByb3BlcnR5KHByb3BlcnR5KSkKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAocHJvcGVydHkgPT0gImRldmljZUlkIikKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSAiJmx0O1VVSUQ+IjsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVl
ID0gbGltaXRQcmVjaXNpb24oc2V0dGluZ3NbcHJvcGVydHldLCAyKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBkZWJ1ZyhgICBzZXR0aW5ncy4ke3Byb3BlcnR5fSA9ICR7dmFsdWV9YCk7
CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZGVidWcoIiIpOwor
ICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBzdGFydCgpCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgZGVzY3JpcHRpb24oIlRlc3RzIE1lZGlhU3RyZWFtVHJhY2suZ2V0
U2V0dGluZ3MuIik7CisgICAgICAgICAgICAgICAgZ2V0VXNlck1lZGlhKCJhbGxvdyIsIHthdWRp
bzp0cnVlLCB2aWRlbzp0cnVlfSwgZ290U3RyZWFtKTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworICAgICAgICAgICAgd2luZG93LnN1
Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CisgICAgICAgIDwvc2NyaXB0PgorCisgICAgPC9oZWFk
PgorICAgIDxib2R5IG9ubG9hZD0ic3RhcnQoKSI+CisgICAgICAgIDxwIGlkPSJkZXNjcmlwdGlv
biI+PC9wPgorICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPHNjcmlw
dCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorICAgIDwv
Ym9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>266447</attachid>
            <date>2015-12-02 09:54:21 -0800</date>
            <delta_ts>2015-12-02 09:55:11 -0800</delta_ts>
            <desc>Updated patch for the bots.</desc>
            <filename>track_capabilities_patch_8.txt</filename>
            <type>text/plain</type>
            <size>134312</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5Mjk0MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzOSBAQAorMjAxNS0xMi0wMiAgRXJpYyBD
YXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBbTWVkaWFTdHJlYW1d
IEltcGxlbWVudCBNZWRpYVN0cmVhbVRyYWNrLmdldFNldHRpbmdzKCkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTcyNworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1lZGlhU3RyZWFtVHJhY2suZ2V0U3Rh
dGVzIGhhcyBiZWVuIHJlcGxhY2VkIGJ5IE1lZGlhU3RyZWFtVHJhY2suZ2V0U2V0dGluZ3MuIAor
CisgICAgICAgIFRlc3Q6IGZhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay1nZXRTZXR0
aW5ncy5odG1sCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDogTWVkaWFTb3VyY2VTdGF0ZXMu
KiAtPiBNZWRpYVNvdXJjZVNldHRpbmdzLiouCisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFr
ZTogTm8gbW9yZSBNZWRpYVNvdXJjZVN0YXRlcy5pZGwuCisgICAgICAgICogTW9kdWxlcy9tZWRp
YXN0cmVhbS9DYXBhYmlsaXR5UmFuZ2UuY3BwOiBNZWRpYVNvdXJjZVN0YXRlcy4qIC0+IE1lZGlh
U291cmNlU2V0dGluZ3MuKi4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU291
cmNlU2V0dGluZ3MuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL01lZGlhU291cmNlU3RhdGVzLmNwcC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291
cmNlU2V0dGluZ3M6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZVNldHRp
bmdzOjpNZWRpYVNvdXJjZVNldHRpbmdzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291cmNl
U2V0dGluZ3M6OmZhY2luZ01vZGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTb3VyY2VTdGF0
ZXM6OmNyZWF0ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZVN0YXRl
czo6TWVkaWFTb3VyY2VTdGF0ZXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFT
b3VyY2VTdGF0ZXM6OnNvdXJjZVR5cGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFTb3VyY2VTdGF0ZXM6OmZhY2luZ01vZGUpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMv
bWVkaWFzdHJlYW0vTWVkaWFTb3VyY2VTZXR0aW5ncy5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU291cmNlU3RhdGVzLmguCisKKyAgICAgICAg
TWVkaWFTb3VyY2VTdGF0ZXMuKiByZW5hbWVkIHRvIE1lZGlhU291cmNlU2V0dGluZ3MuKiBhbmQg
dXBkYXRlZCB0byBuZXcgQVBJLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFT
b3VyY2VTdGF0ZXMuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0v
TWVkaWFTb3VyY2VTdGF0ZXMuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3Ry
ZWFtL01lZGlhU291cmNlU3RhdGVzLmlkbDogUmVtb3ZlZC4KKworICAgICAgICAqIE1vZHVsZXMv
bWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFTdHJlYW1DYXBhYmlsaXRpZXM6OnNvdXJjZVR5cGUpOiBSZXR1cm4gYW4gZW1wdHkg
dmVjdG9yIGZvciBub3csIHdpbGwgYmUgZml4ZWQKKyAgICAgICAgICBieSB0aGUgY2hhbmdlcyBm
b3IgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTcyOC4KKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzOjpzb3VyY2VJZCk6IFJlYWx0aW1l
TWVkaWFTb3VyY2VTdGF0ZXMgLT4gTWVkaWFTb3VyY2VTZXR0aW5ncy4KKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzOjpmYWNpbmdNb2RlKTogRGl0dG8uCisKKyAgICAg
ICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFTdHJlYW1UcmFjazo6Z2V0U2V0dGluZ3MpOiBOZXcuCisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjpnZXRDYXBhYmlsaXRpZXMpOiBEb24ndCBtb2RpZnkg
c3RhdGVzLCBqdXN0IHBhc3MgdGhyb3VnaCB3aGF0ZXZlcgorICAgICAgICAgIHByaXZhdGUgdHJh
Y2sgcmV0dXJucy4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtVHJhY2s6OnRyYWNrU2V0
dGluZ3NDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtVHJhY2s6OnN0YXRl
cyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjp0cmFja1N0
YXRlc0NoYW5nZWQpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW1UcmFjay5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJl
YW1UcmFjay5pZGw6IE1lZGlhU291cmNlU3RhdGVzIC0+IE1lZGlhU291cmNlU2V0dGluZ3MuCisK
KyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9Tb3VyY2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1BdWRpb1NvdXJjZTo6c2V0dGluZ3MpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1BdWRpb1NvdXJjZTo6c3RhdGVzKTogRGVsZXRlZC4K
KyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9Tb3VyY2UuaDogTWVk
aWFTb3VyY2VTdGF0ZXMgLT4gTWVkaWFTb3VyY2VTZXR0aW5ncy4KKworICAgICAgICAqIFdlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogTWVkaWFTb3VyY2VTdGF0ZXMuKiAtPiBNZWRp
YVNvdXJjZVNldHRpbmdzLiouCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU01lZGlhU291cmNl
U3RhdGVzQ3VzdG9tLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU01lZGlh
U3RyZWFtVHJhY2tDdXN0b20uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkpTTWVkaWFT
dHJlYW1UcmFjazo6Z2V0U2V0dGluZ3MpOiBNZWRpYVNvdXJjZVNldHRpbmdzIGlzIGEgZ2VuZXJp
YyBkaWN0aW9uYXJ5IHNvIAorICAgICAgICAgIGl0IGhhcyB0byBiZSBnZW5lcmF0ZWQgbWFudWFs
bHkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVByaXZhdGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1Qcml2YXRlOjppbnRyaW5zaWNTaXpl
KTogc3RhdGVzIC0+IHNldHRpbmdzLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1Qcml2
YXRlOjp0cmFja1N0YXRlc0NoYW5nZWQpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL21l
ZGlhc3RyZWFtL01lZGlhU3RyZWFtUHJpdmF0ZS5oOgorCisgICAgICAgICogcGxhdGZvcm0vbWVk
aWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU6OnNldHRpbmdzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhU3RyZWFtVHJhY2tQcml2YXRlOjpzb3VyY2VTZXR0aW5nc0NoYW5nZWQpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU6OnN0YXRlcyk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6c291cmNlU3RhdGVzQ2hhbmdl
ZCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1U
cmFja1ByaXZhdGUuaDoKKworICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1l
TWVkaWFTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZTo6
c2V0dGluZ3NEaWRDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3Vy
Y2U6OnN0YXRlc0RpZENoYW5nZWQpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlh
c3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuaDoKKworICAgICAgICAqIHBsYXRmb3JtL21lZGlh
c3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM6OmZhY2luZ01vZGVzKTogU3RhdGVz
IC0+IFNldHRpbmdzLgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFi
aWxpdGllczo6YWRkRmFjaW5nTW9kZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRp
bWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllczo6c291cmNlVHlwZXMpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllczo6c2V0U291cmNlVHlw
ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJp
bGl0aWVzOjphZGRTb3VyY2VUeXBlKTogRGVsZXRlZC4KKworICAgICAgICAqIHBsYXRmb3JtL21l
ZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaDogU3RhdGVzIC0+IFNldHRpbmdz
LgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VTZXR0
aW5ncy5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L1JlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXMuY3BwLgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRp
bWVNZWRpYVNvdXJjZVNldHRpbmdzOjpmYWNpbmdNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
YWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXM6OmZhY2luZ01vZGUpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlczo6c291cmNlVHlwZSk6IERlbGV0ZWQu
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlU2V0
dGluZ3MuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
UmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlcy5oLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3Ry
ZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXMuY3BwOiBSZW1vdmVkLgorCisgICAgICAgICog
cGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlcy5oOiBSZW1vdmVk
LgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkF1ZGlvQ2FwdHVyZVNvdXJj
ZS5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkF1ZGlvQ2FwdHVyZVNv
dXJjZS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkFWQXVkaW9DYXB0dXJlU291cmNlOjp1cGRhdGVT
dGF0ZXMpOiBEZWxldGVkLgorCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FW
Q2FwdHVyZURldmljZU1hbmFnZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5tbToKKworICAgICAgICAqIHBsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9BVk1lZGlhQ2FwdHVyZVNvdXJjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9BVk1lZGlhQ2FwdHVyZVNvdXJjZS5tbToKKyAgICAgICAgKFdlYkNvcmU6
OkFWTWVkaWFDYXB0dXJlU291cmNlOjpzdGF0ZXMpOiBEZWxldGVkLgorCisgICAgICAgICogcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLmg6CisgICAgICAgICog
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6QVZWaWRlb0NhcHR1cmVTb3VyY2U6OnVwZGF0ZVN0YXRlcyk6IERlbGV0ZWQu
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1lVmlkZW9T
b3VyY2VNYWMubW06CisKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9vcGVud2VicnRj
L1JlYWx0aW1lTWVkaWFTb3VyY2VPd3IuaDoKKworICAgICAgICAqIHBsYXRmb3JtL21vY2svTW9j
a1JlYWx0aW1lQXVkaW9Tb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1l
QXVkaW9Tb3VyY2U6OmluaXRpYWxpemVTdXBwb3J0ZWRDb25zdHJhaW50cyk6CisgICAgICAgIChX
ZWJDb3JlOjpNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZTo6dXBkYXRlU3RhdGVzKTogRGVsZXRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZUF1ZGlvU291cmNlLmg6CisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZU1lZGlhU291cmNlOjpjYXBhYmlsaXRpZXMpOiBNaW5v
ciBjbGVhbnVwLgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2U6OnNl
dHRpbmdzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZU1lZGlhU291cmNlOjpzdXBw
b3J0ZWRDb25zdHJhaW50cyk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVNZWRpYVNv
dXJjZTo6c3RhdGVzKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tSZWFs
dGltZU1lZGlhU291cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVNZWRpYVNv
dXJjZTo6Y29uc3RyYWludHMpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lTWVkaWFT
b3VyY2U6OmN1cnJlbnRTdGF0ZXMpOiBEZWxldGVkLgorCisgICAgICAgICogcGxhdGZvcm0vbW9j
ay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVh
bHRpbWVWaWRlb1NvdXJjZTo6dXBkYXRlU2V0dGluZ3MpOgorICAgICAgICAoV2ViQ29yZTo6TW9j
a1JlYWx0aW1lVmlkZW9Tb3VyY2U6OmluaXRpYWxpemVDYXBhYmlsaXRpZXMpOgorICAgICAgICAo
V2ViQ29yZTo6TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OmluaXRpYWxpemVTdXBwb3J0ZWRDb25z
dHJhaW50cyk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6c2V0
RnJhbWVSYXRlKTogc3RhdGVzIC0+IHNldHRpbmdzLgorICAgICAgICAoV2ViQ29yZTo6TW9ja1Jl
YWx0aW1lVmlkZW9Tb3VyY2U6OnNldFNpemUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Ok1v
Y2tSZWFsdGltZVZpZGVvU291cmNlOjpkcmF3QW5pbWF0aW9uKTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6ZHJhd1RleHQpOiBEaXR0by4KKyAgICAg
ICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZVZpZGVvU291cmNlOjp1cGRhdGVTdGF0ZXMpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OnNldEZhY2lu
Z01vZGUpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlk
ZW9Tb3VyY2UuaDoKKwogMjAxNS0xMi0wMiAgUGVyIEFybmUgVm9sbGFuICA8cGVhdm9Ab3V0bG9v
ay5jb20+CiAKICAgICAgICAgW1dpbkNhaXJvXSBDb21waWxlIGVycm9yLgpJbmRleDogU291cmNl
L1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQJKHJldmlzaW9uIDE5MjkzMCkKKysrIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlz
dHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0yMjgsNyArMjI4LDYgQEAgc2V0KFdlYkNvcmVfTk9O
X1NWR19JRExfRklMRVMKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL0hUTUxNZWRpYUVsZW1lbnRN
ZWRpYVN0cmVhbS5pZGwKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlSW5mby5p
ZGwKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5pZGwKLSAgICBNb2R1bGVz
L21lZGlhc3RyZWFtL01lZGlhU291cmNlU3RhdGVzLmlkbAogICAgIE1vZHVsZXMvbWVkaWFzdHJl
YW0vTWVkaWFTdHJlYW0uaWRsCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNh
cGFiaWxpdGllcy5pZGwKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtRXZlbnQu
aWRsCkBAIC05NTEsNyArOTUwLDcgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIE1vZHVsZXMv
bWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLmNwcAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVk
aWFEZXZpY2VzUmVxdWVzdC5jcHAKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRW5kcG9p
bnRQZWVyQ29ubmVjdGlvbi5jcHAKLSAgICBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU291cmNl
U3RhdGVzLmNwcAorICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTb3VyY2VTZXR0aW5ncy5j
cHAKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmNwcAogICAgIE1vZHVsZXMv
bWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMuY3BwCiAgICAgTW9kdWxlcy9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbUV2ZW50LmNwcApAQCAtMTIwNiw4ICsxMjA1LDggQEAgc2V0KFdl
YkNvcmVfU09VUkNFUwogICAgIGJpbmRpbmdzL2pzL0pTTGF6eUV2ZW50TGlzdGVuZXIuY3BwCiAg
ICAgYmluZGluZ3MvanMvSlNMb2NhdGlvbkN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy9qcy9KU01h
aW5UaHJlYWRFeGVjU3RhdGUuY3BwCi0gICAgYmluZGluZ3MvanMvSlNNZWRpYVNvdXJjZVN0YXRl
c0N1c3RvbS5jcHAKICAgICBiaW5kaW5ncy9qcy9KU01lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzQ3Vz
dG9tLmNwcAorICAgIGJpbmRpbmdzL2pzL0pTTWVkaWFTdHJlYW1UcmFja0N1c3RvbS5jcHAKICAg
ICBiaW5kaW5ncy9qcy9KU01lZGlhVHJhY2tTdXBwb3J0ZWRDb25zdHJhaW50c0N1c3RvbS5jcHAK
ICAgICBiaW5kaW5ncy9qcy9KU01lc3NhZ2VDaGFubmVsQ3VzdG9tLmNwcAogICAgIGJpbmRpbmdz
L2pzL0pTTWVzc2FnZUV2ZW50Q3VzdG9tLmNwcApAQCAtMjMwOCw3ICsyMzA3LDcgQEAgc2V0KFdl
YkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ1Nlc3Npb25EZXNjcmlw
dGlvbkRlc2NyaXB0b3IuY3BwCiAgICAgcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRp
YVNvdXJjZS5jcHAKICAgICBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNl
Q2VudGVyLmNwcAotICAgIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VT
dGF0ZXMuY3BwCisgICAgcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZVNl
dHRpbmdzLmNwcAogCiAgICAgcGxhdGZvcm0vbW9jay9EZXZpY2VNb3Rpb25DbGllbnRNb2NrLmNw
cAogICAgIHBsYXRmb3JtL21vY2svRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrLmNwcApJbmRl
eDogU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCShyZXZpc2lvbiAxOTI5MzApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0xMjIsNyAr
MTIyLDYgQEAgTk9OX1NWR19CSU5ESU5HX0lETFMgPSBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVz
L21lZGlhc3RyZWFtL0NhcGFiaWxpdHlSYW5nZS5pZGwgXAogCSQoV2ViQ29yZSkvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9ET01VUkxNZWRpYVN0cmVhbS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxl
cy9tZWRpYXN0cmVhbS9IVE1MTWVkaWFFbGVtZW50TWVkaWFTdHJlYW0uaWRsIFwKLSAgICAkKFdl
YkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTb3VyY2VTdGF0ZXMuaWRsIFwKICAgICAk
KFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VJbmZvLmlkbCBcCiAgICAg
JChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5pZGwgXAogCSQoV2Vi
Q29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5pZGwgXApJbmRleDogU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9DYXBhYmlsaXR5UmFuZ2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQ2FwYWJpbGl0eVJhbmdl
LmNwcAkocmV2aXNpb24gMTkyOTMwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9DYXBhYmlsaXR5UmFuZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3IEBA
CiAjaW5jbHVkZSAiQ2FwYWJpbGl0eVJhbmdlLmgiCiAKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcu
aCIKLSNpbmNsdWRlICJNZWRpYVNvdXJjZVN0YXRlcy5oIgorI2luY2x1ZGUgIk1lZGlhU291cmNl
U2V0dGluZ3MuaCIKICNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRWYWx1ZS5oPgogI2luY2x1ZGUg
PGludGVycHJldGVyL0NhbGxGcmFtZS5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNDSlNWYWx1ZS5o
PgpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9DYXB0dXJlRGV2aWNl
SW5mby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
Q2FwdHVyZURldmljZUluZm8uaAkocmV2aXNpb24gMTkyOTMwKQorKysgU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9DYXB0dXJlRGV2aWNlSW5mby5oCSh3b3JraW5nIGNvcHkpCkBA
IC00Miw3ICs0Miw3IEBAIHN0cnVjdCBDYXB0dXJlRGV2aWNlSW5mbyB7CiAKICAgICBib29sIG1f
ZW5hYmxlZCB7IGZhbHNlIH07CiAgICAgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSBtX3NvdXJj
ZVR5cGUgeyBSZWFsdGltZU1lZGlhU291cmNlOjpOb25lIH07Ci0gICAgUmVhbHRpbWVNZWRpYVNv
dXJjZVN0YXRlczo6VmlkZW9GYWNpbmdNb2RlIG1fcG9zaXRpb24geyBSZWFsdGltZU1lZGlhU291
cmNlU3RhdGVzOjpVbmtub3duIH07CisgICAgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpW
aWRlb0ZhY2luZ01vZGUgbV9wb3NpdGlvbiB7IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6
VW5rbm93biB9OwogfTsKIAogY2xhc3MgQ2FwdHVyZVNlc3Npb25JbmZvIHsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQ2FwdHVyZURldmljZU1hbmFnZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0NhcHR1cmVEZXZp
Y2VNYW5hZ2VyLmgJKHJldmlzaW9uIDE5MjkzMCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vQ2FwdHVyZURldmljZU1hbmFnZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTQs
NyArNTQsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCBib29sIGlzU3VwcG9ydGVkRnJhbWVS
YXRlKGZsb2F0IGZyYW1lUmF0ZSkgY29uc3Q7CiAKICAgICBib29sIGNhcHR1cmVEZXZpY2VGcm9t
RGV2aWNlSUQoY29uc3QgU3RyaW5nJiBjYXB0dXJlRGV2aWNlSUQsIENhcHR1cmVEZXZpY2VJbmZv
JiBzb3VyY2UpOwotICAgIENhcHR1cmVEZXZpY2VJbmZvKiBiZXN0RGV2aWNlRm9yRmFjaW5nTW9k
ZShSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzOjpWaWRlb0ZhY2luZ01vZGUpOworICAgIENhcHR1
cmVEZXZpY2VJbmZvKiBiZXN0RGV2aWNlRm9yRmFjaW5nTW9kZShSZWFsdGltZU1lZGlhU291cmNl
U2V0dGluZ3M6OlZpZGVvRmFjaW5nTW9kZSk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU291cmNlU2V0
dGluZ3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vTWVkaWFTb3VyY2VTZXR0aW5ncy5jcHAJKHJldmlzaW9uIDE5MjkzMCkJKGZyb20gU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVNvdXJjZVN0YXRlcy5jcHA6MTkyOTMw
KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVNvdXJjZVNldHRp
bmdzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU5IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYg
RU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIk1lZGlhU291cmNlU3RhdGVzLmgiCisK
KyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitSZWY8TWVkaWFTb3VyY2VTdGF0ZXM+IE1lZGlhU291cmNlU3RhdGVzOjpjcmVhdGUoY29uc3Qg
UmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlcyYgc3RhdGVzKQoreworICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IE1lZGlhU291cmNlU3RhdGVzKHN0YXRlcykpOworfQorCitNZWRpYVNvdXJjZVN0YXRl
czo6TWVkaWFTb3VyY2VTdGF0ZXMoY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlcyYgc3Rh
dGVzKQorICAgIDogbV9zb3VyY2VTdGF0ZXMoc3RhdGVzKQoreworfQorCitjb25zdCBBdG9taWNT
dHJpbmcmIE1lZGlhU291cmNlU3RhdGVzOjpzb3VyY2VUeXBlKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlczo6c291cmNlVHlwZShtX3NvdXJjZVN0YXRlcy5z
b3VyY2VUeXBlKCkpOworfQorCitjb25zdCBBdG9taWNTdHJpbmcmIE1lZGlhU291cmNlU3RhdGVz
OjpmYWNpbmdNb2RlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gUmVhbHRpbWVNZWRpYVNvdXJjZVN0
YXRlczo6ZmFjaW5nTW9kZShtX3NvdXJjZVN0YXRlcy5mYWNpbmdNb2RlKCkpOworfQorCisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL01lZGlhU291cmNlU2V0dGluZ3MuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTb3VyY2VTZXR0aW5ncy5jcHAJ
KHdvcmtpbmcgY29weSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVk
aWFTb3VyY2VTZXR0aW5ncy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxMy0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjQsMzYgKzI0LDI5IEBACiAgKi8K
IAogI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk1lZGlhU291cmNlU2V0dGluZ3MuaCIK
IAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAKLSNpbmNsdWRlICJNZWRpYVNvdXJjZVN0YXRl
cy5oIgotCiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotUmVmPE1lZGlhU291cmNlU3RhdGVzPiBNZWRpYVNvdXJjZVN0YXRlczo6Y3JlYXRl
KGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXMmIHN0YXRlcykKK1JlZjxNZWRpYVNvdXJj
ZVNldHRpbmdzPiBNZWRpYVNvdXJjZVNldHRpbmdzOjpjcmVhdGUoY29uc3QgUmVhbHRpbWVNZWRp
YVNvdXJjZVNldHRpbmdzJiBzZXR0aW5ncykKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBN
ZWRpYVNvdXJjZVN0YXRlcyhzdGF0ZXMpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRp
YVNvdXJjZVNldHRpbmdzKHNldHRpbmdzKSk7CiB9CiAKLU1lZGlhU291cmNlU3RhdGVzOjpNZWRp
YVNvdXJjZVN0YXRlcyhjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzJiBzdGF0ZXMpCi0g
ICAgOiBtX3NvdXJjZVN0YXRlcyhzdGF0ZXMpCitNZWRpYVNvdXJjZVNldHRpbmdzOjpNZWRpYVNv
dXJjZVNldHRpbmdzKGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYgc2V0dGluZ3Mp
CisgICAgOiBtX3NvdXJjZVNldHRpbmdzKHNldHRpbmdzKQogewogfQogCi1jb25zdCBBdG9taWNT
dHJpbmcmIE1lZGlhU291cmNlU3RhdGVzOjpzb3VyY2VUeXBlKCkgY29uc3QKK2NvbnN0IEF0b21p
Y1N0cmluZyYgTWVkaWFTb3VyY2VTZXR0aW5nczo6ZmFjaW5nTW9kZSgpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXM6OnNvdXJjZVR5cGUobV9zb3VyY2VTdGF0
ZXMuc291cmNlVHlwZSgpKTsKKyAgICByZXR1cm4gUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdz
OjpmYWNpbmdNb2RlKG1fc291cmNlU2V0dGluZ3MuZmFjaW5nTW9kZSgpKTsKIH0KIAotY29uc3Qg
QXRvbWljU3RyaW5nJiBNZWRpYVNvdXJjZVN0YXRlczo6ZmFjaW5nTW9kZSgpIGNvbnN0Ci17Ci0g
ICAgcmV0dXJuIFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXM6OmZhY2luZ01vZGUobV9zb3VyY2VT
dGF0ZXMuZmFjaW5nTW9kZSgpKTsKLX0KLQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNl
bmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVNvdXJj
ZVNldHRpbmdzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9NZWRpYVNvdXJjZVNldHRpbmdzLmgJKHJldmlzaW9uIDE5MjkzMCkJKGZyb20gU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVNvdXJjZVN0YXRlcy5oOjE5MjkzMCkK
KysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTb3VyY2VTZXR0aW5n
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIE1lZGlhU291cmNlU3RhdGVzX2gKKyNk
ZWZpbmUgTWVkaWFTb3VyY2VTdGF0ZXNfaAorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKwor
I2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMuaCIKKyNpbmNsdWRlICJT
Y3JpcHRXcmFwcGFibGUuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTWVkaWFTb3Vy
Y2VTdGF0ZXMgOiBwdWJsaWMgUmVmQ291bnRlZDxNZWRpYVNvdXJjZVN0YXRlcz4sIHB1YmxpYyBT
Y3JpcHRXcmFwcGFibGUgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8TWVkaWFTb3VyY2VTdGF0
ZXM+IGNyZWF0ZShjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzJik7CisKKyAgICBjb25z
dCBBdG9taWNTdHJpbmcmIHNvdXJjZVR5cGUoKSBjb25zdDsKKyAgICBjb25zdCBBdG9taWNTdHJp
bmcmIHNvdXJjZUlkKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VTdGF0ZXMuc291cmNlSWQoKTsg
fQorICAgIHVuc2lnbmVkIGxvbmcgd2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZVN0YXRl
cy53aWR0aCgpOyB9CisgICAgdW5zaWduZWQgbG9uZyBoZWlnaHQoKSBjb25zdCB7IHJldHVybiBt
X3NvdXJjZVN0YXRlcy5oZWlnaHQoKTsgfQorICAgIGZsb2F0IGZyYW1lUmF0ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fc291cmNlU3RhdGVzLmZyYW1lUmF0ZSgpOyB9CisgICAgZmxvYXQgYXNwZWN0UmF0
aW8oKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZVN0YXRlcy5hc3BlY3RSYXRpbygpOyB9CisgICAg
Y29uc3QgQXRvbWljU3RyaW5nJiBmYWNpbmdNb2RlKCkgY29uc3Q7CisgICAgdW5zaWduZWQgbG9u
ZyB2b2x1bWUoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZVN0YXRlcy52b2x1bWUoKTsgfQorICAg
IAorICAgIGJvb2wgaGFzVmlkZW9Tb3VyY2UoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZVN0YXRl
cy5zb3VyY2VUeXBlKCkgPT0gUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlczo6Q2FtZXJhOyB9CisK
K3ByaXZhdGU6CisgICAgZXhwbGljaXQgTWVkaWFTb3VyY2VTdGF0ZXMoY29uc3QgUmVhbHRpbWVN
ZWRpYVNvdXJjZVN0YXRlcyYpOworCisgICAgUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlcyBtX3Nv
dXJjZVN0YXRlczsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIE1l
ZGlhU291cmNlU3RhdGVzX2gKKworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL01lZGlhU291cmNlU2V0dGluZ3MuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU291cmNlU2V0dGluZ3MuaAkod29ya2lu
ZyBjb3B5KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVNvdXJj
ZVNldHRpbmdzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxMy0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsOCArMjMsOCBAQAogICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
ICAqLwogCi0jaWZuZGVmIE1lZGlhU291cmNlU3RhdGVzX2gKLSNkZWZpbmUgTWVkaWFTb3VyY2VT
dGF0ZXNfaAorI2lmbmRlZiBNZWRpYVNvdXJjZVNldHRpbmdzX2gKKyNkZWZpbmUgTWVkaWFTb3Vy
Y2VTZXR0aW5nc19oCiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogCkBAIC0zNSwyOSArMzUs
NTEgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBNZWRpYVNvdXJjZVN0YXRlcyA6
IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhU291cmNlU3RhdGVzPiwgcHVibGljIFNjcmlwdFdyYXBw
YWJsZSB7CitjbGFzcyBNZWRpYVNvdXJjZVNldHRpbmdzIDogcHVibGljIFJlZkNvdW50ZWQ8TWVk
aWFTb3VyY2VTZXR0aW5ncz4sIHB1YmxpYyBTY3JpcHRXcmFwcGFibGUgewogcHVibGljOgotICAg
IHN0YXRpYyBSZWY8TWVkaWFTb3VyY2VTdGF0ZXM+IGNyZWF0ZShjb25zdCBSZWFsdGltZU1lZGlh
U291cmNlU3RhdGVzJik7CisgICAgc3RhdGljIFJlZjxNZWRpYVNvdXJjZVNldHRpbmdzPiBjcmVh
dGUoY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJik7CiAKLSAgICBjb25zdCBBdG9t
aWNTdHJpbmcmIHNvdXJjZVR5cGUoKSBjb25zdDsKLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIHNv
dXJjZUlkKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VTdGF0ZXMuc291cmNlSWQoKTsgfQotICAg
IHVuc2lnbmVkIGxvbmcgd2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZVN0YXRlcy53aWR0
aCgpOyB9Ci0gICAgdW5zaWduZWQgbG9uZyBoZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX3NvdXJj
ZVN0YXRlcy5oZWlnaHQoKTsgfQotICAgIGZsb2F0IGZyYW1lUmF0ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fc291cmNlU3RhdGVzLmZyYW1lUmF0ZSgpOyB9Ci0gICAgZmxvYXQgYXNwZWN0UmF0aW8oKSBj
b25zdCB7IHJldHVybiBtX3NvdXJjZVN0YXRlcy5hc3BlY3RSYXRpbygpOyB9CisgICAgYm9vbCBz
dXBwb3J0c1dpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VTZXR0aW5ncy5zdXBwb3J0c1dp
ZHRoKCk7IH0KKyAgICB1bnNpZ25lZCBsb25nIHdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9zb3Vy
Y2VTZXR0aW5ncy53aWR0aCgpOyB9CisKKyAgICBib29sIHN1cHBvcnRzSGVpZ2h0KCkgY29uc3Qg
eyByZXR1cm4gbV9zb3VyY2VTZXR0aW5ncy5zdXBwb3J0c0hlaWdodCgpOyB9CisgICAgdW5zaWdu
ZWQgbG9uZyBoZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZVNldHRpbmdzLmhlaWdodCgp
OyB9CisKKyAgICBib29sIHN1cHBvcnRzQXNwZWN0UmF0aW8oKSBjb25zdCB7IHJldHVybiBtX3Nv
dXJjZVNldHRpbmdzLnN1cHBvcnRzQXNwZWN0UmF0aW8oKTsgfQorICAgIGZsb2F0IGFzcGVjdFJh
dGlvKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VTZXR0aW5ncy5hc3BlY3RSYXRpbygpOyB9CisK
KyAgICBib29sIHN1cHBvcnRzRnJhbWVSYXRlKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VTZXR0
aW5ncy5zdXBwb3J0c0ZyYW1lUmF0ZSgpOyB9CisgICAgZmxvYXQgZnJhbWVSYXRlKCkgY29uc3Qg
eyByZXR1cm4gbV9zb3VyY2VTZXR0aW5ncy5mcmFtZVJhdGUoKTsgfQorCisgICAgYm9vbCBzdXBw
b3J0c0ZhY2luZ01vZGUoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZVNldHRpbmdzLnN1cHBvcnRz
RmFjaW5nTW9kZSgpOyB9CiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBmYWNpbmdNb2RlKCkgY29u
c3Q7Ci0gICAgdW5zaWduZWQgbG9uZyB2b2x1bWUoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZVN0
YXRlcy52b2x1bWUoKTsgfQotICAgIAotICAgIGJvb2wgaGFzVmlkZW9Tb3VyY2UoKSBjb25zdCB7
IHJldHVybiBtX3NvdXJjZVN0YXRlcy5zb3VyY2VUeXBlKCkgPT0gUmVhbHRpbWVNZWRpYVNvdXJj
ZVN0YXRlczo6Q2FtZXJhOyB9CisKKyAgICBib29sIHN1cHBvcnRzVm9sdW1lKCkgY29uc3QgeyBy
ZXR1cm4gbV9zb3VyY2VTZXR0aW5ncy5zdXBwb3J0c1ZvbHVtZSgpOyB9CisgICAgdW5zaWduZWQg
bG9uZyB2b2x1bWUoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZVNldHRpbmdzLnZvbHVtZSgpOyB9
CisKKyAgICBib29sIHN1cHBvcnRzU2FtcGxlUmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNl
U2V0dGluZ3Muc3VwcG9ydHNTYW1wbGVSYXRlKCk7IH0KKyAgICB1bnNpZ25lZCBsb25nIHNhbXBs
ZVJhdGUoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZVNldHRpbmdzLnNhbXBsZVJhdGUoKTsgfQor
CisgICAgYm9vbCBzdXBwb3J0c1NhbXBsZVNpemUoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZVNl
dHRpbmdzLnN1cHBvcnRzU2FtcGxlU2l6ZSgpOyB9CisgICAgdW5zaWduZWQgbG9uZyBzYW1wbGVT
aXplKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VTZXR0aW5ncy5zYW1wbGVTaXplKCk7IH0KKwor
ICAgIGJvb2wgc3VwcG9ydHNFY2hvQ2FuY2VsbGF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zb3Vy
Y2VTZXR0aW5ncy5zdXBwb3J0c0VjaG9DYW5jZWxsYXRpb24oKTsgfQorICAgIGJvb2wgZWNob0Nh
bmNlbGxhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlU2V0dGluZ3MuZWNob0NhbmNlbGxh
dGlvbigpOyB9CisKKyAgICBib29sIHN1cHBvcnRzRGV2aWNlSWQoKSBjb25zdCB7IHJldHVybiBt
X3NvdXJjZVNldHRpbmdzLnN1cHBvcnRzRGV2aWNlSWQoKTsgfQorICAgIGNvbnN0IEF0b21pY1N0
cmluZyYgZGV2aWNlSWQoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZVNldHRpbmdzLmRldmljZUlk
KCk7IH0KKworICAgIGJvb2wgc3VwcG9ydHNHcm91cElkKCkgY29uc3QgeyByZXR1cm4gbV9zb3Vy
Y2VTZXR0aW5ncy5zdXBwb3J0c0dyb3VwSWQoKTsgfQorICAgIGNvbnN0IEF0b21pY1N0cmluZyYg
Z3JvdXBJZCgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlU2V0dGluZ3MuZ3JvdXBJZCgpOyB9CiAK
IHByaXZhdGU6Ci0gICAgZXhwbGljaXQgTWVkaWFTb3VyY2VTdGF0ZXMoY29uc3QgUmVhbHRpbWVN
ZWRpYVNvdXJjZVN0YXRlcyYpOworICAgIGV4cGxpY2l0IE1lZGlhU291cmNlU2V0dGluZ3MoY29u
c3QgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJik7CiAKLSAgICBSZWFsdGltZU1lZGlhU291
cmNlU3RhdGVzIG1fc291cmNlU3RhdGVzOworICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5n
cyBtX3NvdXJjZVNldHRpbmdzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5k
aWYgLy8gTWVkaWFTb3VyY2VTdGF0ZXNfaAorI2VuZGlmIC8vIE1lZGlhU291cmNlU2V0dGluZ3Nf
aAogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVk
aWFTb3VyY2VTdGF0ZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vTWVkaWFTb3VyY2VTdGF0ZXMuY3BwCShyZXZpc2lvbiAxOTI5MzApCisrKyBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU291cmNlU3RhdGVzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMSw1OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEz
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaWYgRU5BQkxFKE1F
RElBX1NUUkVBTSkKLQotI2luY2x1ZGUgIk1lZGlhU291cmNlU3RhdGVzLmgiCi0KLSNpbmNsdWRl
IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1SZWY8TWVk
aWFTb3VyY2VTdGF0ZXM+IE1lZGlhU291cmNlU3RhdGVzOjpjcmVhdGUoY29uc3QgUmVhbHRpbWVN
ZWRpYVNvdXJjZVN0YXRlcyYgc3RhdGVzKQotewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1l
ZGlhU291cmNlU3RhdGVzKHN0YXRlcykpOwotfQotCi1NZWRpYVNvdXJjZVN0YXRlczo6TWVkaWFT
b3VyY2VTdGF0ZXMoY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlcyYgc3RhdGVzKQotICAg
IDogbV9zb3VyY2VTdGF0ZXMoc3RhdGVzKQotewotfQotCi1jb25zdCBBdG9taWNTdHJpbmcmIE1l
ZGlhU291cmNlU3RhdGVzOjpzb3VyY2VUeXBlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gUmVhbHRp
bWVNZWRpYVNvdXJjZVN0YXRlczo6c291cmNlVHlwZShtX3NvdXJjZVN0YXRlcy5zb3VyY2VUeXBl
KCkpOwotfQotCi1jb25zdCBBdG9taWNTdHJpbmcmIE1lZGlhU291cmNlU3RhdGVzOjpmYWNpbmdN
b2RlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlczo6ZmFj
aW5nTW9kZShtX3NvdXJjZVN0YXRlcy5mYWNpbmdNb2RlKCkpOwotfQotCi0KLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKLQotI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL01lZGlhU291cmNlU3RhdGVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVNvdXJjZVN0YXRlcy5oCShyZXZpc2lvbiAxOTI5MzAp
CisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU291cmNlU3RhdGVz
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNjMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0g
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgTWVkaWFTb3VyY2VTdGF0ZXNfaAotI2Rl
ZmluZSBNZWRpYVNvdXJjZVN0YXRlc19oCi0KLSNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotCi0j
aW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcy5oIgotI2luY2x1ZGUgIlNj
cmlwdFdyYXBwYWJsZS5oIgotI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0jaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBNZWRpYVNvdXJj
ZVN0YXRlcyA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhU291cmNlU3RhdGVzPiwgcHVibGljIFNj
cmlwdFdyYXBwYWJsZSB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxNZWRpYVNvdXJjZVN0YXRl
cz4gY3JlYXRlKGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXMmKTsKLQotICAgIGNvbnN0
IEF0b21pY1N0cmluZyYgc291cmNlVHlwZSgpIGNvbnN0OwotICAgIGNvbnN0IEF0b21pY1N0cmlu
ZyYgc291cmNlSWQoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZVN0YXRlcy5zb3VyY2VJZCgpOyB9
Ci0gICAgdW5zaWduZWQgbG9uZyB3aWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlU3RhdGVz
LndpZHRoKCk7IH0KLSAgICB1bnNpZ25lZCBsb25nIGhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1f
c291cmNlU3RhdGVzLmhlaWdodCgpOyB9Ci0gICAgZmxvYXQgZnJhbWVSYXRlKCkgY29uc3QgeyBy
ZXR1cm4gbV9zb3VyY2VTdGF0ZXMuZnJhbWVSYXRlKCk7IH0KLSAgICBmbG9hdCBhc3BlY3RSYXRp
bygpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlU3RhdGVzLmFzcGVjdFJhdGlvKCk7IH0KLSAgICBj
b25zdCBBdG9taWNTdHJpbmcmIGZhY2luZ01vZGUoKSBjb25zdDsKLSAgICB1bnNpZ25lZCBsb25n
IHZvbHVtZSgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlU3RhdGVzLnZvbHVtZSgpOyB9Ci0gICAg
Ci0gICAgYm9vbCBoYXNWaWRlb1NvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlU3RhdGVz
LnNvdXJjZVR5cGUoKSA9PSBSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzOjpDYW1lcmE7IH0KLQot
cHJpdmF0ZToKLSAgICBleHBsaWNpdCBNZWRpYVNvdXJjZVN0YXRlcyhjb25zdCBSZWFsdGltZU1l
ZGlhU291cmNlU3RhdGVzJik7Ci0KLSAgICBSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzIG1fc291
cmNlU3RhdGVzOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gTWVk
aWFTb3VyY2VTdGF0ZXNfaAotCi0jZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vTWVkaWFTb3VyY2VTdGF0ZXMuaWRsCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTb3VyY2VTdGF0ZXMuaWRsCShyZXZpc2lv
biAxOTI5MzApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU291
cmNlU3RhdGVzLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMSw0NCArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
LSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLWVudW0gU291cmNlVHlwZUVudW0g
eyAibm9uZSIsICJjYW1lcmEiLCAibWljcm9waG9uZSIgfTsKLWVudW0gVmlkZW9GYWNpbmdNb2Rl
RW51bSB7ICJ1c2VyIiwgImVudmlyb25tZW50IiwgImxlZnQiLCAicmlnaHQiIH07Ci0KLVsKLSAg
ICBDb25kaXRpb25hbD1NRURJQV9TVFJFQU0sCi0gICAgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJs
ZSwKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKLV0gaW50ZXJmYWNlIE1lZGlhU291cmNlU3RhdGVz
IHsKLSAgICByZWFkb25seSBhdHRyaWJ1dGUgU291cmNlVHlwZUVudW0gc291cmNlVHlwZTsKLSAg
ICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHNvdXJjZUlkOwotCi0gICAgW0N1c3RvbUdl
dHRlcl0gcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmc/IHdpZHRoOwotICAgIFtDdXN0
b21HZXR0ZXJdIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nPyBoZWlnaHQ7Ci0gICAg
W0N1c3RvbUdldHRlcl0gcmVhZG9ubHkgYXR0cmlidXRlIHVucmVzdHJpY3RlZCBmbG9hdD8gZnJh
bWVSYXRlOwotICAgIFtDdXN0b21HZXR0ZXJdIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnJlc3RyaWN0
ZWQgZmxvYXQ/IGFzcGVjdFJhdGlvOwotICAgIFtDdXN0b21HZXR0ZXJdIHJlYWRvbmx5IGF0dHJp
YnV0ZSBWaWRlb0ZhY2luZ01vZGVFbnVtPyBmYWNpbmdNb2RlOwotICAgIFtDdXN0b21HZXR0ZXJd
IHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nPyB2b2x1bWU7Ci19OwotCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ2FwYWJpbGl0aWVz
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01l
ZGlhU3RyZWFtQ2FwYWJpbGl0aWVzLmNwcAkocmV2aXNpb24gMTkyOTMwKQorKysgU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNhcGFiaWxpdGllcy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDcgQEAKICNpbmNsdWRlICJBbGxBdWRpb0NhcGFiaWxp
dGllcy5oIgogI2luY2x1ZGUgIkFsbFZpZGVvQ2FwYWJpbGl0aWVzLmgiCiAjaW5jbHVkZSAiQ2Fw
YWJpbGl0eVJhbmdlLmgiCi0jaW5jbHVkZSAiTWVkaWFTb3VyY2VTdGF0ZXMuaCIKKyNpbmNsdWRl
ICJNZWRpYVNvdXJjZVNldHRpbmdzLmgiCiAjaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZUNh
cGFiaWxpdGllcy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01MiwxOSArNTIsOCBAQCBN
ZWRpYVN0cmVhbUNhcGFiaWxpdGllczo6TWVkaWFTdHJlYW1DYXBhCiAKIFZlY3RvcjxTdHJpbmc+
IE1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzOjpzb3VyY2VUeXBlKCkgY29uc3QKIHsKLSAgICBBU1NF
UlQobV9Tb3VyY2VDYXBhYmlsaXRpZXMtPmhhc1ZpZGVvU291cmNlKCkpOwotICAgIAotICAgIHNp
emVfdCBjb3VudCA9IG1fU291cmNlQ2FwYWJpbGl0aWVzLT5zb3VyY2VUeXBlcygpLnNpemUoKTsK
LSAgICBpZiAoIWNvdW50KQotICAgICAgICByZXR1cm4gVmVjdG9yPFN0cmluZz4oKTsKLSAgICAK
LSAgICBWZWN0b3I8U3RyaW5nPiBjYXBhYmlsaXRpZXM7Ci0gICAgY2FwYWJpbGl0aWVzLnJlc2Vy
dmVDYXBhY2l0eShjb3VudCk7Ci0gICAgCi0gICAgZm9yIChhdXRvJiB0eXBlIDogbV9Tb3VyY2VD
YXBhYmlsaXRpZXMtPnNvdXJjZVR5cGVzKCkpCi0gICAgICAgIGNhcGFiaWxpdGllcy5hcHBlbmQo
UmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlczo6c291cmNlVHlwZSh0eXBlKSk7Ci0gICAgCi0gICAg
cmV0dXJuIGNhcGFiaWxpdGllczsKKyAgICAvLyBUaGlzIHdpbGwgYmUgZml4ZWQgYnkgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTcyOC4KKyAgICByZXR1cm4gVmVj
dG9yPFN0cmluZz4oKTsKIH0KIAogVmVjdG9yPFN0cmluZz4gTWVkaWFTdHJlYW1DYXBhYmlsaXRp
ZXM6OnNvdXJjZUlkKCkgY29uc3QKQEAgLTk0LDcgKzgzLDcgQEAgVmVjdG9yPFN0cmluZz4gTWVk
aWFTdHJlYW1DYXBhYmlsaXRpZXM6OgogICAgIGNhcGFiaWxpdGllcy5yZXNlcnZlQ2FwYWNpdHko
Y291bnQpOwogICAgIAogICAgIGZvciAoYXV0byYgbW9kZSA6IG1fU291cmNlQ2FwYWJpbGl0aWVz
LT5mYWNpbmdNb2RlcygpKQotICAgICAgICBjYXBhYmlsaXRpZXMuYXBwZW5kKFJlYWx0aW1lTWVk
aWFTb3VyY2VTdGF0ZXM6OmZhY2luZ01vZGUobW9kZSkpOworICAgICAgICBjYXBhYmlsaXRpZXMu
YXBwZW5kKFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6ZmFjaW5nTW9kZShtb2RlKSk7CiAg
ICAgCiAgICAgcmV0dXJuIGNhcGFiaWxpdGllczsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmNwcAkocmV2
aXNpb24gMTkyOTMwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRp
YVN0cmVhbVRyYWNrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBAQAogI2luY2x1
ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlUGxhY2Vob2xkZXIu
aCIKICNpbmNsdWRlICJNZWRpYUNvbnN0cmFpbnRzSW1wbC5oIgotI2luY2x1ZGUgIk1lZGlhU291
cmNlU3RhdGVzLmgiCisjaW5jbHVkZSAiTWVkaWFTb3VyY2VTZXR0aW5ncy5oIgogI2luY2x1ZGUg
Ik1lZGlhU3RyZWFtLmgiCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW1Qcml2YXRlLmgiCiAjaW5jbHVk
ZSAiTWVkaWFUcmFja0NvbnN0cmFpbnRzLmgiCkBAIC0xNjIsMjEgKzE2MiwxNCBAQCBSZWZQdHI8
TWVkaWFUcmFja0NvbnN0cmFpbnRzPiBNZWRpYVN0cmVhCiAgICAgcmV0dXJuIDA7CiB9CiAKLVJl
ZlB0cjxNZWRpYVNvdXJjZVN0YXRlcz4gTWVkaWFTdHJlYW1UcmFjazo6c3RhdGVzKCkgY29uc3QK
K1JlZlB0cjxNZWRpYVNvdXJjZVNldHRpbmdzPiBNZWRpYVN0cmVhbVRyYWNrOjpnZXRTZXR0aW5n
cygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIE1lZGlhU291cmNlU3RhdGVzOjpjcmVhdGUobV9wcml2
YXRlLT5zdGF0ZXMoKSk7CisgICAgcmV0dXJuIE1lZGlhU291cmNlU2V0dGluZ3M6OmNyZWF0ZSht
X3ByaXZhdGUtPnNldHRpbmdzKCkpOwogfQogCiBSZWZQdHI8TWVkaWFTdHJlYW1DYXBhYmlsaXRp
ZXM+IE1lZGlhU3RyZWFtVHJhY2s6OmdldENhcGFiaWxpdGllcygpIGNvbnN0CiB7Ci0gICAgLy8g
VGhlIHNvdXJjZSBtYXkgYmUgc2hhcmVkIGJ5IG11bHRpcGxlIHRyYWNrcywgc28gaXRzIHN0YXRl
cyBpcyBub3QgbmVjZXNzYXJpbHkKLSAgICAvLyBpbiBzeW5jIHdpdGggdGhlIHRyYWNrIHN0YXRl
LiBBIHRyYWNrIHRoYXQgaGFzIGVuZGVkIGFsd2F5cyBoYXMgYSBzb3VyY2UKLSAgICAvLyB0eXBl
IG9mICJub25lIi4KLSAgICBSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcz4g
c291cmNlQ2FwYWJpbGl0aWVzID0gbV9wcml2YXRlLT5jYXBhYmlsaXRpZXMoKTsKLSAgICBpZiAo
ZW5kZWQoKSkKLSAgICAgICAgc291cmNlQ2FwYWJpbGl0aWVzLT5zZXRTb3VyY2VUeXBlKFJlYWx0
aW1lTWVkaWFTb3VyY2VTdGF0ZXM6Ok5vbmUpOwotICAgIAotICAgIHJldHVybiBNZWRpYVN0cmVh
bUNhcGFiaWxpdGllczo6Y3JlYXRlKHNvdXJjZUNhcGFiaWxpdGllcy5yZWxlYXNlKCkpOworICAg
IHJldHVybiBNZWRpYVN0cmVhbUNhcGFiaWxpdGllczo6Y3JlYXRlKG1fcHJpdmF0ZS0+Y2FwYWJp
bGl0aWVzKCkpOwogfQogCiB2b2lkIE1lZGlhU3RyZWFtVHJhY2s6OmFwcGx5Q29uc3RyYWludHMo
Y29uc3QgRGljdGlvbmFyeSYgY29uc3RyYWludHMpCkBAIC0yMzgsNyArMjMxLDcgQEAgdm9pZCBN
ZWRpYVN0cmVhbVRyYWNrOjp0cmFja011dGVkQ2hhbmdlZAogICAgIGNvbmZpZ3VyZVRyYWNrUmVu
ZGVyaW5nKCk7CiB9CiAKLXZvaWQgTWVkaWFTdHJlYW1UcmFjazo6dHJhY2tTdGF0ZXNDaGFuZ2Vk
KE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJikKK3ZvaWQgTWVkaWFTdHJlYW1UcmFjazo6dHJhY2tT
ZXR0aW5nc0NoYW5nZWQoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmKQogewogICAgIGNvbmZpZ3Vy
ZVRyYWNrUmVuZGVyaW5nKCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL01lZGlhU3RyZWFtVHJhY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suaAkocmV2aXNpb24gMTkyOTMwKQor
KysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQ1LDcgKzQ1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xh
c3MgQXVkaW9Tb3VyY2VQcm92aWRlcjsKIGNsYXNzIERpY3Rpb25hcnk7CiBjbGFzcyBNZWRpYUNv
bnN0cmFpbnRzSW1wbDsKLWNsYXNzIE1lZGlhU291cmNlU3RhdGVzOworY2xhc3MgTWVkaWFTb3Vy
Y2VTZXR0aW5nczsKIGNsYXNzIE1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzOwogY2xhc3MgTWVkaWFU
cmFja0NvbnN0cmFpbnRzOwogCkBAIC03OSw3ICs3OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHN0
b3BQcm9kdWNpbmdEYXRhKCk7CiAKICAgICBSZWZQdHI8TWVkaWFUcmFja0NvbnN0cmFpbnRzPiBn
ZXRDb25zdHJhaW50cygpIGNvbnN0OwotICAgIFJlZlB0cjxNZWRpYVNvdXJjZVN0YXRlcz4gc3Rh
dGVzKCkgY29uc3Q7CisgICAgUmVmUHRyPE1lZGlhU291cmNlU2V0dGluZ3M+IGdldFNldHRpbmdz
KCkgY29uc3Q7CiAgICAgUmVmUHRyPE1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzPiBnZXRDYXBhYmls
aXRpZXMoKSBjb25zdDsKICAgICB2b2lkIGFwcGx5Q29uc3RyYWludHMoY29uc3QgRGljdGlvbmFy
eSYpOwogICAgIHZvaWQgYXBwbHlDb25zdHJhaW50cyhjb25zdCBNZWRpYUNvbnN0cmFpbnRzJik7
CkBAIC0xMTcsNyArMTE3LDcgQEAgcHJpdmF0ZToKICAgICAvLyBNZWRpYVN0cmVhbVRyYWNrUHJp
dmF0ZTo6T2JzZXJ2ZXIKICAgICB2b2lkIHRyYWNrRW5kZWQoTWVkaWFTdHJlYW1UcmFja1ByaXZh
dGUmKSBvdmVycmlkZTsKICAgICB2b2lkIHRyYWNrTXV0ZWRDaGFuZ2VkKE1lZGlhU3RyZWFtVHJh
Y2tQcml2YXRlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB0cmFja1N0YXRlc0NoYW5nZWQoTWVkaWFT
dHJlYW1UcmFja1ByaXZhdGUmKSBvdmVycmlkZTsKKyAgICB2b2lkIHRyYWNrU2V0dGluZ3NDaGFu
Z2VkKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJikgb3ZlcnJpZGU7CiAgICAgdm9pZCB0cmFja0Vu
YWJsZWRDaGFuZ2VkKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJikgb3ZlcnJpZGU7CiAKICAgICBW
ZWN0b3I8T2JzZXJ2ZXIqPiBtX29ic2VydmVyczsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5pZGwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmlkbAkocmV2aXNp
b24gMTkyOTMwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0
cmVhbVRyYWNrLmlkbAkod29ya2luZyBjb3B5KQpAQCAtNDcsNyArNDcsNyBAQCBlbnVtIE1lZGlh
U3RyZWFtVHJhY2tTdGF0ZSB7ICJuZXciLCAibGl2CiAgICAgW0ltcGxlbWVudGVkQXM9c3RvcFBy
b2R1Y2luZ0RhdGFdIHZvaWQgc3RvcCgpOwogCiAgICAgTWVkaWFUcmFja0NvbnN0cmFpbnRzIGdl
dENvbnN0cmFpbnRzKCk7Ci0gICAgTWVkaWFTb3VyY2VTdGF0ZXMgc3RhdGVzKCk7CisgICAgW0N1
c3RvbV0gTWVkaWFTb3VyY2VTZXR0aW5ncyBnZXRTZXR0aW5ncygpOwogICAgIE1lZGlhU3RyZWFt
Q2FwYWJpbGl0aWVzIGdldENhcGFiaWxpdGllcygpOyAvLyByZXR1cm5zIGVpdGhlciBBbGxWaWRl
b0NhcGFiaWxpdGllcyBvciBBbGxBdWRpb0NhcGFiaWxpdGllcwogICAgIHZvaWQgYXBwbHlDb25z
dHJhaW50cyhEaWN0aW9uYXJ5IGNvbnN0cmFpbnRzKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9Tb3VyY2Uu
Y3BwCShyZXZpc2lvbiAxOTI5MzApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L01lZGlhU3RyZWFtQXVkaW9Tb3VyY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MiwxMiArNTIs
MTIgQEAgUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM+IAogICAgIHJldHVy
biBudWxscHRyOwogfQogCi1jb25zdCBSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzJiBNZWRpYVN0
cmVhbUF1ZGlvU291cmNlOjpzdGF0ZXMoKQorY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRp
bmdzJiBNZWRpYVN0cmVhbUF1ZGlvU291cmNlOjpzZXR0aW5ncygpCiB7CiAgICAgLy8gRklYTUU6
IGltcGxlbWVudCB0aGlzLgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMjI0MzAKICAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiBtX2N1cnJl
bnRTdGF0ZXM7CisgICAgcmV0dXJuIG1fY3VycmVudFNldHRpbmdzOwogfQogCiBBdWRpb1NvdXJj
ZVByb3ZpZGVyKiBNZWRpYVN0cmVhbUF1ZGlvU291cmNlOjphdWRpb1NvdXJjZVByb3ZpZGVyKCkK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb1Nv
dXJjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVk
aWFTdHJlYW1BdWRpb1NvdXJjZS5oCShyZXZpc2lvbiAxOTI5MzApCisrKyBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9Tb3VyY2UuaAkod29ya2luZyBjb3B5
KQpAQCAtNDgsNyArNDgsNyBAQCBwdWJsaWM6CiAgICAgfk1lZGlhU3RyZWFtQXVkaW9Tb3VyY2Uo
KSB7IH0KIAogICAgIFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzPiBjYXBh
YmlsaXRpZXMoKSBvdmVycmlkZTsKLSAgICBjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU3RhdGVz
JiBzdGF0ZXMoKSBvdmVycmlkZTsKKyAgICBjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGlu
Z3MmIHNldHRpbmdzKCkgb3ZlcnJpZGU7CiAgICAgCiAgICAgY29uc3QgU3RyaW5nJiBkZXZpY2VJ
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fZGV2aWNlSWQ7IH0KICAgICB2b2lkIHNldERldmljZUlkKGNv
bnN0IFN0cmluZyYgZGV2aWNlSWQpIHsgbV9kZXZpY2VJZCA9IGRldmljZUlkOyB9CkBAIC02OCw3
ICs2OCw3IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fZGV2aWNlSWQ7CiAgICAgTG9jayBtX2F1
ZGlvQ29uc3VtZXJzTG9jazsKICAgICBWZWN0b3I8UmVmUHRyPEF1ZGlvRGVzdGluYXRpb25Db25z
dW1lcj4+IG1fYXVkaW9Db25zdW1lcnM7Ci0gICAgUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlcyBt
X2N1cnJlbnRTdGF0ZXM7CisgICAgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzIG1fY3VycmVu
dFNldHRpbmdzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24g
MTkyOTMwKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zMTksMTEgKzMxOSwxMSBAQAogCQkwN0JERDZFQzE0NjlC
NEMyMDA5QzlGODUgLyogSlNUcmFja0V2ZW50Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3QjVBMzBBMTQ2ODdCODQwMEE4MUVDRSAvKiBK
U1RyYWNrRXZlbnRDdXN0b20uY3BwICovOyB9OwogCQkwN0MxQzBFMjFCRkI2MDAxMDBCRDIyNTYg
LyogTWVkaWFUcmFja1N1cHBvcnRlZENvbnN0cmFpbnRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0MxQzBFMDFCRkI2MDAxMDBCRDIyNTYgLyogTWVk
aWFUcmFja1N1cHBvcnRlZENvbnN0cmFpbnRzLmggKi87IH07CiAJCTA3QzFDMEU1MUJGQjYwRUQw
MEJEMjI1NiAvKiBSZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3QzFDMEU0MUJGQjYw
RUQwMEJEMjI1NiAvKiBSZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQkwN0M1OUI2
ODE3Rjc4NEJBMDAwRkJDQkIgLyogTWVkaWFTb3VyY2VTdGF0ZXMuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdDNTlCNjUxN0Y3ODRCQTAwMEZCQ0JC
IC8qIE1lZGlhU291cmNlU3RhdGVzLmNwcCAqLzsgfTsKLQkJMDdDNTlCNjkxN0Y3ODRCQTAwMEZC
Q0JCIC8qIE1lZGlhU291cmNlU3RhdGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwN0M1OUI2NjE3Rjc4NEJBMDAwRkJDQkIgLyogTWVkaWFTb3VyY2VT
dGF0ZXMuaCAqLzsgfTsKLQkJMDdDNTlCNkUxN0Y3OTRGNjAwMEZCQ0JCIC8qIEpTTWVkaWFTb3Vy
Y2VTdGF0ZXNDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMDdDNTlCNkQxN0Y3OTRGNjAwMEZCQ0JCIC8qIEpTTWVkaWFTb3VyY2VTdGF0ZXND
dXN0b20uY3BwICovOyB9OwotCQkwN0M1OUI3MTE3Rjc5QzdDMDAwRkJDQkIgLyogSlNNZWRpYVNv
dXJjZVN0YXRlcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwN0M1OUI2RjE3Rjc5QzdDMDAwRkJDQkIgLyogSlNNZWRpYVNvdXJjZVN0YXRlcy5jcHAg
Ki87IH07Ci0JCTA3QzU5QjcyMTdGNzlDN0MwMDBGQkNCQiAvKiBKU01lZGlhU291cmNlU3RhdGVz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0M1OUI3
MDE3Rjc5QzdDMDAwRkJDQkIgLyogSlNNZWRpYVNvdXJjZVN0YXRlcy5oICovOyB9OworCQkwN0M1
OUI2ODE3Rjc4NEJBMDAwRkJDQkIgLyogTWVkaWFTb3VyY2VTZXR0aW5ncy5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0M1OUI2NTE3Rjc4NEJBMDAw
RkJDQkIgLyogTWVkaWFTb3VyY2VTZXR0aW5ncy5jcHAgKi87IH07CisJCTA3QzU5QjY5MTdGNzg0
QkEwMDBGQkNCQiAvKiBNZWRpYVNvdXJjZVNldHRpbmdzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0M1OUI2NjE3Rjc4NEJBMDAwRkJDQkIgLyogTWVk
aWFTb3VyY2VTZXR0aW5ncy5oICovOyB9OworCQkwN0M1OUI2RTE3Rjc5NEY2MDAwRkJDQkIgLyog
SlNNZWRpYVN0cmVhbVRyYWNrQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDA3QzU5QjZEMTdGNzk0RjYwMDBGQkNCQiAvKiBKU01lZGlhU3Ry
ZWFtVHJhY2tDdXN0b20uY3BwICovOyB9OworCQkwN0M1OUI3MTE3Rjc5QzdDMDAwRkJDQkIgLyog
SlNNZWRpYVNvdXJjZVNldHRpbmdzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDA3QzU5QjZGMTdGNzlDN0MwMDBGQkNCQiAvKiBKU01lZGlhU291cmNl
U2V0dGluZ3MuY3BwICovOyB9OworCQkwN0M1OUI3MjE3Rjc5QzdDMDAwRkJDQkIgLyogSlNNZWRp
YVNvdXJjZVNldHRpbmdzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwN0M1OUI3MDE3Rjc5QzdDMDAwRkJDQkIgLyogSlNNZWRpYVNvdXJjZVNldHRpbmdz
LmggKi87IH07CiAJCTA3QzU5Qjc2MTdGN0QwREIwMDBGQkNCQiAvKiBDYXBhYmlsaXR5UmFuZ2Uu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3QzU5Qjc0
MTdGN0QwOUQwMDBGQkNCQiAvKiBDYXBhYmlsaXR5UmFuZ2UuaCAqLzsgfTsKIAkJMDdDQTEyMEUx
ODJENjdEODAwRDEyMTk3IC8qIEpTUlRDUGVlckNvbm5lY3Rpb25DdXN0b20uY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdDQTEyMEQxODJENjdEODAw
RDEyMTk3IC8qIEpTUlRDUGVlckNvbm5lY3Rpb25DdXN0b20uY3BwICovOyB9OwogCQkwN0NFNzdE
NTE2NzEyQTZBMDBDNTVBNDcgLyogSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUNsaWVudC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdDRTc3RDQxNjcxMkE2
QTAwQzU1QTQ3IC8qIEluYmFuZFRleHRUcmFja1ByaXZhdGVDbGllbnQuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTg1Nyw4ICsxODU3LDggQEAK
IAkJNEE0RjY1NzAxQUE5OTdGMTAwRTM4Q0REIC8qIFJlYWx0aW1lTWVkaWFTb3VyY2UuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEE0RjY1NkIxQUE5
OTdGMTAwRTM4Q0REIC8qIFJlYWx0aW1lTWVkaWFTb3VyY2UuY3BwICovOyB9OwogCQk0QTRGNjU3
MTFBQTk5N0YxMDBFMzhDREQgLyogUmVhbHRpbWVNZWRpYVNvdXJjZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEE0RjY1NkMxQUE5OTdGMTAwRTM4Q0RE
IC8qIFJlYWx0aW1lTWVkaWFTb3VyY2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk0QTRGNjU3MjFBQTk5N0YxMDBFMzhDREQgLyogUmVhbHRpbWVN
ZWRpYVNvdXJjZUNhcGFiaWxpdGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNEE0RjY1NkQxQUE5OTdGMTAwRTM4Q0REIC8qIFJlYWx0aW1lTWVkaWFT
b3VyY2VDYXBhYmlsaXRpZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwotCQk0QTRGNjU3MzFBQTk5N0YxMDBFMzhDREQgLyogUmVhbHRpbWVNZWRpYVNv
dXJjZVN0YXRlcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0QTRGNjU2RTFBQTk5N0YxMDBFMzhDREQgLyogUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRl
cy5jcHAgKi87IH07Ci0JCTRBNEY2NTc0MUFBOTk3RjEwMEUzOENERCAvKiBSZWFsdGltZU1lZGlh
U291cmNlU3RhdGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0QTRGNjU2RjFBQTk5N0YxMDBFMzhDREQgLyogUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRl
cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTRB
NEY2NTczMUFBOTk3RjEwMEUzOENERCAvKiBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEE0RjY1NkUx
QUE5OTdGMTAwRTM4Q0REIC8qIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncy5jcHAgKi87IH07
CisJCTRBNEY2NTc0MUFBOTk3RjEwMEUzOENERCAvKiBSZWFsdGltZU1lZGlhU291cmNlU2V0dGlu
Z3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRBNEY2
NTZGMUFBOTk3RjEwMEUzOENERCAvKiBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0QTVBMkFEQjE2
MUU3RTAwMDA1ODg5REQgLyogV2ViU29ja2V0RXh0ZW5zaW9uUGFyc2VyLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRBNUEyQUQ5MTYxRTdFMDAwMDU4
ODlERCAvKiBXZWJTb2NrZXRFeHRlbnNpb25QYXJzZXIuY3BwICovOyB9OwogCQk0QTVBMkFEQzE2
MUU3RTAwMDA1ODg5REQgLyogV2ViU29ja2V0RXh0ZW5zaW9uUGFyc2VyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QTVBMkFEQTE2MUU3RTAwMDA1ODg5
REQgLyogV2ViU29ja2V0RXh0ZW5zaW9uUGFyc2VyLmggKi87IH07CiAJCTRBNkU5RkMzMTNDMTdE
MUQwMDQ2QTdGOCAvKiBDU1NGb250RmVhdHVyZVZhbHVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRBNkU5RkMxMTNDMTdEMUQwMDQ2QTdGOCAvKiBD
U1NGb250RmVhdHVyZVZhbHVlLmNwcCAqLzsgfTsKQEAgLTc2MTMsMTIgKzc2MTMsMTEgQEAKIAkJ
MDdDMUMwRTExQkZCNjAwMTAwQkQyMjU2IC8qIE1lZGlhVHJhY2tTdXBwb3J0ZWRDb25zdHJhaW50
cy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gTWVkaWFUcmFja1N1cHBvcnRlZENvbnN0cmFp
bnRzLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDdDMUMwRTQxQkZCNjBFRDAw
QkQyMjU2IC8qIFJlYWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVk
Q29uc3RyYWludHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDdDMUMwRTYxQkZC
OTBBNzAwQkQyMjU2IC8qIEpTTWVkaWFUcmFja1N1cHBvcnRlZENvbnN0cmFpbnRzQ3VzdG9tLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTWVkaWFUcmFja1N1cHBv
cnRlZENvbnN0cmFpbnRzQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
MDdDNTlCNjUxN0Y3ODRCQTAwMEZCQ0JCIC8qIE1lZGlhU291cmNlU3RhdGVzLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlhU291cmNlU3RhdGVzLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMDdDNTlCNjYxN0Y3ODRCQTAwMEZCQ0JCIC8qIE1l
ZGlhU291cmNlU3RhdGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlh
U291cmNlU3RhdGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTA3QzU5QjY3MTdG
Nzg0QkEwMDBGQkNCQiAvKiBNZWRpYVNvdXJjZVN0YXRlcy5pZGwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBw
YXRoID0gTWVkaWFTb3VyY2VTdGF0ZXMuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQkwN0M1OUI2RDE3Rjc5NEY2MDAwRkJDQkIgLyogSlNNZWRpYVNvdXJjZVN0YXRlc0N1c3RvbS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU01lZGlhU291cmNlU3Rh
dGVzQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMDdDNTlCNkYxN0Y3
OUM3QzAwMEZCQ0JCIC8qIEpTTWVkaWFTb3VyY2VTdGF0ZXMuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSlNNZWRpYVNvdXJjZVN0YXRlcy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTA3QzU5QjcwMTdGNzlDN0MwMDBGQkNCQiAvKiBKU01lZGlhU291
cmNlU3RhdGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTWVkaWFTb3Vy
Y2VTdGF0ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDdDNTlCNjUxN0Y3ODRC
QTAwMEZCQ0JCIC8qIE1lZGlhU291cmNlU2V0dGluZ3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFTb3VyY2VTZXR0aW5ncy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTA3QzU5QjY2MTdGNzg0QkEwMDBGQkNCQiAvKiBNZWRpYVNvdXJjZVNl
dHRpbmdzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhU291cmNlU2V0
dGluZ3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDdDNTlCNkQxN0Y3OTRGNjAw
MEZCQ0JCIC8qIEpTTWVkaWFTdHJlYW1UcmFja0N1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBKU01lZGlhU3RyZWFtVHJhY2tDdXN0b20uY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkwN0M1OUI2RjE3Rjc5QzdDMDAwRkJDQkIgLyogSlNNZWRp
YVNvdXJjZVNldHRpbmdzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEpTTWVkaWFTb3VyY2VTZXR0aW5ncy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTA3QzU5QjcwMTdGNzlDN0MwMDBGQkNCQiAvKiBKU01lZGlhU291cmNlU2V0dGluZ3MuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNNZWRpYVNvdXJjZVNldHRpbmdzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3QzU5QjczMTdGN0QwOUQwMDBGQkNCQiAvKiBB
bGxWaWRlb0NhcGFiaWxpdGllcy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQWxsVmlkZW9D
YXBhYmlsaXRpZXMuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwN0M1OUI3NDE3
RjdEMDlEMDAwRkJDQkIgLyogQ2FwYWJpbGl0eVJhbmdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IENhcGFiaWxpdHlSYW5nZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwN0M1OUI3NTE3RjdEMDlEMDAwRkJDQkIgLyogQ2FwYWJpbGl0eVJhbmdlLmlkbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IHBhdGggPSBDYXBhYmlsaXR5UmFuZ2UuaWRsOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtOTI4OSw4ICs5Mjg4LDggQEAKIAkJNEE0RjY1NkIxQUE5OTdGMTAwRTM4
Q0REIC8qIFJlYWx0aW1lTWVkaWFTb3VyY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTRBNEY2NTZDMUFBOTk3RjEwMEUzOENERCAvKiBSZWFsdGltZU1lZGlhU291cmNl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlYWx0aW1lTWVkaWFTb3VyY2Uu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEE0RjY1NkQxQUE5OTdGMTAwRTM4Q0RE
IC8qIFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQk0QTRGNjU2RTFBQTk5N0YxMDBFMzhDREQgLyogUmVhbHRp
bWVNZWRpYVNvdXJjZVN0YXRlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJNEE0RjY1NkYxQUE5OTdGMTAwRTM4Q0REIC8qIFJlYWx0aW1lTWVkaWFTb3VyY2VT
dGF0ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVhbHRpbWVNZWRpYVNv
dXJjZVN0YXRlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0QTRGNjU2RTFBQTk5
N0YxMDBFMzhDREQgLyogUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTRBNEY2NTZGMUFBOTk3RjEwMEUzOENE
RCAvKiBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTRBNUEyQUQ5MTYxRTdFMDAwMDU4ODlERCAvKiBXZWJTb2NrZXRFeHRl
bnNpb25QYXJzZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2Vi
U29ja2V0RXh0ZW5zaW9uUGFyc2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NEE1QTJBREExNjFFN0UwMDAwNTg4OUREIC8qIFdlYlNvY2tldEV4dGVuc2lvblBhcnNlci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTb2NrZXRFeHRlbnNpb25QYXJzZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEE2RTlGQzExM0MxN0QxRDAwNDZBN0Y4
IC8qIENTU0ZvbnRGZWF0dXJlVmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gQ1NTRm9udEZlYXR1cmVWYWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0xNTE2OCw5ICsxNTE2Nyw4IEBACiAJCQkJMDczOTRFQzkxQkFCMkNENzAwQkU5OUNE
IC8qIE1lZGlhRGV2aWNlc1JlcXVlc3QuaCAqLywKIAkJCQk1RTE2QTJFMjFCRkE2NEZCMDAyOUEy
MUUgLyogTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uLmNwcCAqLywKIAkJCQk1RTE2QTJFMzFC
RkE2NEZCMDAyOUEyMUUgLyogTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uLmggKi8sCi0JCQkJ
MDdDNTlCNjUxN0Y3ODRCQTAwMEZCQ0JCIC8qIE1lZGlhU291cmNlU3RhdGVzLmNwcCAqLywKLQkJ
CQkwN0M1OUI2NjE3Rjc4NEJBMDAwRkJDQkIgLyogTWVkaWFTb3VyY2VTdGF0ZXMuaCAqLywKLQkJ
CQkwN0M1OUI2NzE3Rjc4NEJBMDAwRkJDQkIgLyogTWVkaWFTb3VyY2VTdGF0ZXMuaWRsICovLAor
CQkJCTA3QzU5QjY1MTdGNzg0QkEwMDBGQkNCQiAvKiBNZWRpYVNvdXJjZVNldHRpbmdzLmNwcCAq
LywKKwkJCQkwN0M1OUI2NjE3Rjc4NEJBMDAwRkJDQkIgLyogTWVkaWFTb3VyY2VTZXR0aW5ncy5o
ICovLAogCQkJCTA3MjIxQjRDMTdDRUMzMjcwMDg0OEU1MSAvKiBNZWRpYVN0cmVhbS5jcHAgKi8s
CiAJCQkJMDcyMjFCNEQxN0NFQzMyNzAwODQ4RTUxIC8qIE1lZGlhU3RyZWFtLmggKi8sCiAJCQkJ
MDcyMjFCNEUxN0NFQzMyNzAwODQ4RTUxIC8qIE1lZGlhU3RyZWFtLmlkbCAqLywKQEAgLTE1Mjk0
LDggKzE1MjkyLDggQEAKIAkJCQk0QTRGNjU2RDFBQTk5N0YxMDBFMzhDREQgLyogUmVhbHRpbWVN
ZWRpYVNvdXJjZUNhcGFiaWxpdGllcy5oICovLAogCQkJCTRBMEZGQTlGMUFBRjVFQTIwMDYyODAz
QiAvKiBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcCAqLywKIAkJCQk0QTBGRkFBMDFBQUY1
RUEyMDA2MjgwM0IgLyogUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oICovLAotCQkJCTRBNEY2
NTZFMUFBOTk3RjEwMEUzOENERCAvKiBSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzLmNwcCAqLywK
LQkJCQk0QTRGNjU2RjFBQTk5N0YxMDBFMzhDREQgLyogUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRl
cy5oICovLAorCQkJCTRBNEY2NTZFMUFBOTk3RjEwMEUzOENERCAvKiBSZWFsdGltZU1lZGlhU291
cmNlU2V0dGluZ3MuY3BwICovLAorCQkJCTRBNEY2NTZGMUFBOTk3RjEwMEUzOENERCAvKiBSZWFs
dGltZU1lZGlhU291cmNlU2V0dGluZ3MuaCAqLywKIAkJCQkwN0FCOTk2RDE4REEzQzc0MDAxODc3
MUUgLyogUlRDQ29uZmlndXJhdGlvblByaXZhdGUuaCAqLywKIAkJCQkwNzIyMUJBMjE3Q0YwQUQ0
MDA4NDhFNTEgLyogUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmggKi8sCiAJCQkJMDcyMjFCQTMxN0NG
MEFENDAwODQ4RTUxIC8qIFJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudC5oICovLApAQCAtMTUz
OTEsOCArMTUzODksOCBAQAogCQkJCTE1N0NDMjYyMUI3QzFDQTQwMEQ4RDA3NSAvKiBKU01lZGlh
RGV2aWNlSW5mby5oICovLAogCQkJCTE1NzM5QkI4MUI0MjAxMjIwMEQyNThDMSAvKiBKU01lZGlh
RGV2aWNlcy5jcHAgKi8sCiAJCQkJMTU3MzlCQjkxQjQyMDEyMjAwRDI1OEMxIC8qIEpTTWVkaWFE
ZXZpY2VzLmggKi8sCi0JCQkJMDdDNTlCNkYxN0Y3OUM3QzAwMEZCQ0JCIC8qIEpTTWVkaWFTb3Vy
Y2VTdGF0ZXMuY3BwICovLAotCQkJCTA3QzU5QjcwMTdGNzlDN0MwMDBGQkNCQiAvKiBKU01lZGlh
U291cmNlU3RhdGVzLmggKi8sCisJCQkJMDdDNTlCNkYxN0Y3OUM3QzAwMEZCQ0JCIC8qIEpTTWVk
aWFTb3VyY2VTZXR0aW5ncy5jcHAgKi8sCisJCQkJMDdDNTlCNzAxN0Y3OUM3QzAwMEZCQ0JCIC8q
IEpTTWVkaWFTb3VyY2VTZXR0aW5ncy5oICovLAogCQkJCTA3Mjc3RTQwMTdEMDE4Q0MwMDE1NTM0
RCAvKiBKU01lZGlhU3RyZWFtLmNwcCAqLywKIAkJCQkwNzI3N0U0MTE3RDAxOENDMDAxNTUzNEQg
LyogSlNNZWRpYVN0cmVhbS5oICovLAogCQkJCTA3Mjc3RTQyMTdEMDE4Q0MwMDE1NTM0RCAvKiBK
U01lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwICovLApAQCAtMjIxNjgsNyArMjIx
NjYsNyBAQAogCQkJCUJDRTFDNDNGMEQ5ODMwRjQwMDNCMDJGMiAvKiBKU0xvY2F0aW9uQ3VzdG9t
LmNwcCAqLywKIAkJCQlBRDcyNkZFNzE2RDlGMjA0MDAzQTRFNkQgLyogSlNNZWRpYUxpc3RDdXN0
b20uaCAqLywKIAkJCQkwNzdCNjQwRTFCOEY1Mzc1MDAzRTlBRDUgLyogSlNNZWRpYVNlc3Npb25D
dXN0b20uY3BwICovLAotCQkJCTA3QzU5QjZEMTdGNzk0RjYwMDBGQkNCQiAvKiBKU01lZGlhU291
cmNlU3RhdGVzQ3VzdG9tLmNwcCAqLywKKwkJCQkwN0M1OUI2RDE3Rjc5NEY2MDAwRkJDQkIgLyog
SlNNZWRpYVN0cmVhbVRyYWNrQ3VzdG9tLmNwcCAqLywKIAkJCQkwNzA1ODUxNjE3RkI0MEU5MDA1
RjJCQ0IgLyogSlNNZWRpYVN0cmVhbUNhcGFiaWxpdGllc0N1c3RvbS5jcHAgKi8sCiAJCQkJRTFB
NUY5OUEwRTdFQUEyNTAwQUY4NUVBIC8qIEpTTWVzc2FnZUNoYW5uZWxDdXN0b20uY3BwICovLAog
CQkJCTA3QzFDMEU2MUJGQjkwQTcwMEJEMjI1NiAvKiBKU01lZGlhVHJhY2tTdXBwb3J0ZWRDb25z
dHJhaW50c0N1c3RvbS5jcHAgKi8sCkBAIC0yNjI5MSw3ICsyNjI4OSw3IEBACiAJCQkJRDNBOTRB
NDcxMjJEQzQwRjAwQTM3QkJDIC8qIEpTTWVkaWFRdWVyeUxpc3QuaCBpbiBIZWFkZXJzICovLAog
CQkJCTdDNTM0M0ZEMTdCNzRCNjMwMDQyMzJGMCAvKiBKU01lZGlhUXVlcnlMaXN0TGlzdGVuZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCUNEOURFMTc1MTdBQUM3NEMwMEVBMzg2RCAvKiBKU01lZGlh
U291cmNlLmggaW4gSGVhZGVycyAqLywKLQkJCQkwN0M1OUI3MjE3Rjc5QzdDMDAwRkJDQkIgLyog
SlNNZWRpYVNvdXJjZVN0YXRlcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMDdDNTlCNzIxN0Y3OUM3
QzAwMEZCQ0JCIC8qIEpTTWVkaWFTb3VyY2VTZXR0aW5ncy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MDcyNzdFNEQxN0QwMThDQzAwMTU1MzREIC8qIEpTTWVkaWFTdHJlYW0uaCBpbiBIZWFkZXJzICov
LAogCQkJCTA3Mjc3RTRGMTdEMDE4Q0MwMDE1NTM0RCAvKiBKU01lZGlhU3RyZWFtQXVkaW9EZXN0
aW5hdGlvbk5vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEQkQ0ODBEMTU5QkM2ODcwMDkzRUI0
RiAvKiBKU01lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlLmggaW4gSGVhZGVycyAqLywKQEAgLTI2
NzgxLDcgKzI2Nzc5LDcgQEAKIAkJCQlDREM4QjVBNzE4MDQ3NEY3MDAxNkU2ODUgLyogTWVkaWFT
b3VyY2VQcml2YXRlQVZGT2JqQy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0REQzFFN0ExOEE5NTJG
MzAwMjdBOUQ0IC8qIE1lZGlhU291cmNlUHJpdmF0ZUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQ0Q2MUZFNjgxNzk0QUFEQjAwNDEwMUVCIC8qIE1lZGlhU291cmNlUmVnaXN0cnkuaCBpbiBI
ZWFkZXJzICovLAotCQkJCTA3QzU5QjY5MTdGNzg0QkEwMDBGQkNCQiAvKiBNZWRpYVNvdXJjZVN0
YXRlcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMDdDNTlCNjkxN0Y3ODRCQTAwMEZCQ0JCIC8qIE1l
ZGlhU291cmNlU2V0dGluZ3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3OEUwOTE1MTdEMTREMUMw
MDQyMEFBMSAvKiBNZWRpYVN0cmVhbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDc4RTA5NEMxN0Qx
NzA5NjAwNDIwQUExIC8qIE1lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTA3ODMyMjg1MTgwMTNFRDgwMDk5OUUwQyAvKiBNZWRpYVN0cmVhbUF1ZGlv
U291cmNlLmggaW4gSGVhZGVycyAqLywKQEAgLTI3MTA1LDcgKzI3MTAzLDcgQEAKIAkJCQk0QTRG
NjU3MjFBQTk5N0YxMDBFMzhDREQgLyogUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNEEwRkZBQTIxQUFGNUVBMjAwNjI4MDNCIC8qIFJlYWx0aW1l
TWVkaWFTb3VyY2VDZW50ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTRBMEZGQUE2MUFBRjVFRjYw
MDYyODAzQiAvKiBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjLmggaW4gSGVhZGVycyAqLywK
LQkJCQk0QTRGNjU3NDFBQTk5N0YxMDBFMzhDREQgLyogUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRl
cy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNEE0RjY1NzQxQUE5OTdGMTAwRTM4Q0REIC8qIFJlYWx0
aW1lTWVkaWFTb3VyY2VTZXR0aW5ncy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDdDMUMwRTUxQkZC
NjBFRDAwQkQyMjU2IC8qIFJlYWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQkM0MzY4RTgwQzIyNkUzMjAwNUVGQjVGIC8qIFJlY3QuaCBp
biBIZWFkZXJzICovLAogCQkJCUZENDVBOTU4MTc1RDQxNEMwMEMyMUVDOCAvKiBSZWN0YW5nbGVT
aGFwZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yOTk3Miw4ICsyOTk3MCw4IEBACiAJCQkJQzlEQURC
Q0IxQjFEM0I5NzAwMUYxN0Q4IC8qIEpTTWVkaWFTZXNzaW9uLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTA3N0I2NDBGMUI4RjVENkIwMDNFOUFENSAvKiBKU01lZGlhU2Vzc2lvbkN1c3RvbS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlDRDlERTE3NDE3QUFDNzRDMDBFQTM4NkQgLyogSlNNZWRpYVNv
dXJjZS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQkwN0M1OUI3MTE3Rjc5QzdDMDAwRkJDQkIgLyog
SlNNZWRpYVNvdXJjZVN0YXRlcy5jcHAgaW4gU291cmNlcyAqLywKLQkJCQkwN0M1OUI2RTE3Rjc5
NEY2MDAwRkJDQkIgLyogSlNNZWRpYVNvdXJjZVN0YXRlc0N1c3RvbS5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQkwN0M1OUI3MTE3Rjc5QzdDMDAwRkJDQkIgLyogSlNNZWRpYVNvdXJjZVNldHRpbmdz
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTA3QzU5QjZFMTdGNzk0RjYwMDBGQkNCQiAvKiBKU01l
ZGlhU3RyZWFtVHJhY2tDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDcyNzdFNEMxN0Qw
MThDQzAwMTU1MzREIC8qIEpTTWVkaWFTdHJlYW0uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDcy
NzdFNEUxN0QwMThDQzAwMTU1MzREIC8qIEpTTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9k
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGREJENDgwQzE1OUJDNjg3MDA5M0VCNEYgLyogSlNN
ZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMwNDg3LDcg
KzMwNDg1LDcgQEAKIAkJCQlDRDNBNDk1RTE3QTlEMDFCMDAyNzRFNDIgLyogTWVkaWFTb3VyY2Uu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RDOEI1QTYxODA0NzRGNzAwMTZFNjg1IC8qIE1lZGlh
U291cmNlUHJpdmF0ZUFWRk9iakMubW0gaW4gU291cmNlcyAqLywKIAkJCQlDRDYxRkU2NzE3OTRB
QURCMDA0MTAxRUIgLyogTWVkaWFTb3VyY2VSZWdpc3RyeS5jcHAgaW4gU291cmNlcyAqLywKLQkJ
CQkwN0M1OUI2ODE3Rjc4NEJBMDAwRkJDQkIgLyogTWVkaWFTb3VyY2VTdGF0ZXMuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJMDdDNTlCNjgxN0Y3ODRCQTAwMEZCQ0JCIC8qIE1lZGlhU291cmNlU2V0
dGluZ3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDc4RTA4RkYxN0QxNENFRTAwNDIwQUExIC8q
IE1lZGlhU3RyZWFtLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA3OEUwOTRCMTdEMTcwOTYwMDQy
MEFBMSAvKiBNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTA3ODMyMjg0MTgwMTNFRDgwMDk5OUUwQyAvKiBNZWRpYVN0cmVhbUF1ZGlvU291cmNl
LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzA3MTcsNyArMzA3MTUsNyBAQAogCQkJCTRBNEY2NTcw
MUFBOTk3RjEwMEUzOENERCAvKiBSZWFsdGltZU1lZGlhU291cmNlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTRBMEZGQUExMUFBRjVFQTIwMDYyODAzQiAvKiBSZWFsdGltZU1lZGlhU291cmNlQ2Vu
dGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTRBMEZGQUE1MUFBRjVFRjYwMDYyODAzQiAvKiBS
ZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTRBNEY2
NTczMUFBOTk3RjEwMEUzOENERCAvKiBSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCTRBNEY2NTczMUFBOTk3RjEwMEUzOENERCAvKiBSZWFsdGltZU1lZGlh
U291cmNlU2V0dGluZ3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkQ0NUE5NUExNzVENDE3MTAw
QzIxRUM4IC8qIFJlY3RhbmdsZVNoYXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDQUI0MTgx
MTNFMzU2RTgwMEQ4QUFGMyAvKiBSZWdpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODUwMzFC
NEIwQTQ0RUZDNzAwRjk5MkUwIC8qIFJlZ2lzdGVyZWRFdmVudExpc3RlbmVyLmNwcCBpbiBTb3Vy
Y2VzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZWRpYVNvdXJjZVN0
YXRlc0N1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNNZWRpYVNvdXJjZVN0YXRlc0N1c3RvbS5jcHAJKHJldmlzaW9uIDE5MjkzMCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVkaWFTb3VyY2VTdGF0ZXNDdXN0b20uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDkyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpZiBFTkFCTEUoTUVESUFf
U1RSRUFNKQotCi0jaW5jbHVkZSAiSlNNZWRpYVNvdXJjZVN0YXRlcy5oIgotCi0jaW5jbHVkZSAi
SlNET01CaW5kaW5nLmgiCi0KLXVzaW5nIG5hbWVzcGFjZSBKU0M7Ci0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotSlNWYWx1ZSBKU01lZGlhU291cmNlU3RhdGVzOjp3aWR0aChFeGVjU3RhdGUmKSBj
b25zdAotewotICAgIGlmICghd3JhcHBlZCgpLmhhc1ZpZGVvU291cmNlKCkpCi0gICAgICAgIHJl
dHVybiBqc1VuZGVmaW5lZCgpOwotCi0gICAgcmV0dXJuIGpzTnVtYmVyKHdyYXBwZWQoKS53aWR0
aCgpKTsKLX0KLQotSlNWYWx1ZSBKU01lZGlhU291cmNlU3RhdGVzOjpoZWlnaHQoRXhlY1N0YXRl
JikgY29uc3QKLXsKLSAgICBpZiAoIXdyYXBwZWQoKS5oYXNWaWRlb1NvdXJjZSgpKQotICAgICAg
ICByZXR1cm4ganNVbmRlZmluZWQoKTsKLSAgICAKLSAgICByZXR1cm4ganNOdW1iZXIod3JhcHBl
ZCgpLmhlaWdodCgpKTsKLX0KLQotSlNWYWx1ZSBKU01lZGlhU291cmNlU3RhdGVzOjpmcmFtZVJh
dGUoRXhlY1N0YXRlJikgY29uc3QKLXsKLSAgICBpZiAoIXdyYXBwZWQoKS5oYXNWaWRlb1NvdXJj
ZSgpKQotICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLSAgICAKLSAgICByZXR1cm4ganNO
dW1iZXIod3JhcHBlZCgpLmZyYW1lUmF0ZSgpKTsKLX0KLQotSlNWYWx1ZSBKU01lZGlhU291cmNl
U3RhdGVzOjphc3BlY3RSYXRpbyhFeGVjU3RhdGUmKSBjb25zdAotewotICAgIGlmICghd3JhcHBl
ZCgpLmhhc1ZpZGVvU291cmNlKCkpCi0gICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotICAg
IAotICAgIHJldHVybiBqc051bWJlcih3cmFwcGVkKCkuYXNwZWN0UmF0aW8oKSk7Ci19Ci0KLUpT
VmFsdWUgSlNNZWRpYVNvdXJjZVN0YXRlczo6ZmFjaW5nTW9kZShFeGVjU3RhdGUmIHN0YXRlKSBj
b25zdAotewotICAgIGlmICghd3JhcHBlZCgpLmhhc1ZpZGVvU291cmNlKCkpCi0gICAgICAgIHJl
dHVybiBqc1VuZGVmaW5lZCgpOwotCi0gICAgY29uc3QgQXRvbWljU3RyaW5nJiBtb2RlID0gd3Jh
cHBlZCgpLmZhY2luZ01vZGUoKTsKLSAgICBpZiAobW9kZS5pc0VtcHR5KCkpCi0gICAgICAgIHJl
dHVybiBqc1VuZGVmaW5lZCgpOwotICAgIAotICAgIHJldHVybiBqc1N0cmluZ1dpdGhDYWNoZSgm
c3RhdGUsIHdyYXBwZWQoKS5mYWNpbmdNb2RlKCkpOwotfQotCi1KU1ZhbHVlIEpTTWVkaWFTb3Vy
Y2VTdGF0ZXM6OnZvbHVtZShFeGVjU3RhdGUmKSBjb25zdAotewotICAgIGlmICh3cmFwcGVkKCku
aGFzVmlkZW9Tb3VyY2UoKSkKLSAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0gICAgCi0g
ICAgcmV0dXJuIGpzTnVtYmVyKHdyYXBwZWQoKS52b2x1bWUoKSk7Ci19Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKLQotI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U01lZGlhU3RyZWFtVHJhY2tDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTTWVkaWFTdHJlYW1UcmFja0N1c3RvbS5jcHAJKHJldmlzaW9uIDApCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lZGlhU3RyZWFtVHJhY2tDdXN0b20uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsODAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNN
ZWRpYVN0cmVhbVRyYWNrLmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVk
ZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgorI2luY2x1ZGUg
Ik1lZGlhU291cmNlU2V0dGluZ3MuaCIKKyNpbmNsdWRlIDxydW50aW1lL0pTT2JqZWN0Lmg+Cisj
aW5jbHVkZSA8cnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5oPgorCit1c2luZyBuYW1lc3BhY2Ug
SlNDOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0pTQzo6SlNWYWx1ZSBKU01lZGlhU3RyZWFt
VHJhY2s6OmdldFNldHRpbmdzKEV4ZWNTdGF0ZSYgc3RhdGUpCit7CisgICAgSlNWYWx1ZSB0aGlz
VmFsdWUgPSBzdGF0ZS50aGlzVmFsdWUoKTsKKyAgICBKU01lZGlhU3RyZWFtVHJhY2sqIGNhc3Rl
ZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTTWVkaWFTdHJlYW1UcmFjayo+KHRoaXNWYWx1ZSk7Cisg
ICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmRl
Y29kZSh0aHJvd1RoaXNUeXBlRXJyb3Ioc3RhdGUsICJNZWRpYVN0cmVhbVRyYWNrIiwgImdldFNl
dHRpbmdzIikpOworCisgICAgSlNPYmplY3QqIG9iamVjdCA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0
KCZzdGF0ZSk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKKyAgICBS
ZWZQdHI8TWVkaWFTb3VyY2VTZXR0aW5ncz4gc2V0dGluZ3MgPSBXVEY6OmdldFB0cihpbXBsLmdl
dFNldHRpbmdzKCkpOworCisgICAgaWYgKHNldHRpbmdzLT5zdXBwb3J0c1dpZHRoKCkpCisgICAg
ICAgIG9iamVjdC0+cHV0RGlyZWN0KHN0YXRlLnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJpbmco
JnN0YXRlLCAid2lkdGgiKSwganNOdW1iZXIoc2V0dGluZ3MtPndpZHRoKCkpLCBEb250RGVsZXRl
IHwgUmVhZE9ubHkpOworICAgIGlmIChzZXR0aW5ncy0+c3VwcG9ydHNIZWlnaHQoKSkKKyAgICAg
ICAgb2JqZWN0LT5wdXREaXJlY3Qoc3RhdGUudm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygm
c3RhdGUsICJoZWlnaHQiKSwganNOdW1iZXIoc2V0dGluZ3MtPmhlaWdodCgpKSwgRG9udERlbGV0
ZSB8IFJlYWRPbmx5KTsKKyAgICBpZiAoc2V0dGluZ3MtPnN1cHBvcnRzQXNwZWN0UmF0aW8oKSkK
KyAgICAgICAgb2JqZWN0LT5wdXREaXJlY3Qoc3RhdGUudm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0
cmluZygmc3RhdGUsICJhc3BlY3RSYXRpbyIpLCBqc0RvdWJsZU51bWJlcihzZXR0aW5ncy0+YXNw
ZWN0UmF0aW8oKSksIERvbnREZWxldGUgfCBSZWFkT25seSk7CisgICAgaWYgKHNldHRpbmdzLT5z
dXBwb3J0c0ZyYW1lUmF0ZSgpKQorICAgICAgICBvYmplY3QtPnB1dERpcmVjdChzdGF0ZS52bSgp
LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZzdGF0ZSwgImZyYW1lUmF0ZSIpLCBqc0RvdWJsZU51
bWJlcihzZXR0aW5ncy0+ZnJhbWVSYXRlKCkpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOworICAg
IGlmIChzZXR0aW5ncy0+c3VwcG9ydHNGYWNpbmdNb2RlKCkpCisgICAgICAgIG9iamVjdC0+cHV0
RGlyZWN0KHN0YXRlLnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnN0YXRlLCAiZmFjaW5n
TW9kZSIpLCBqc1N0cmluZ1dpdGhDYWNoZSgmc3RhdGUsIHNldHRpbmdzLT5mYWNpbmdNb2RlKCkp
LCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOworICAgIGlmIChzZXR0aW5ncy0+c3VwcG9ydHNWb2x1
bWUoKSkKKyAgICAgICAgb2JqZWN0LT5wdXREaXJlY3Qoc3RhdGUudm0oKSwgSWRlbnRpZmllcjo6
ZnJvbVN0cmluZygmc3RhdGUsICJ2b2x1bWUiKSwganNEb3VibGVOdW1iZXIoc2V0dGluZ3MtPnZv
bHVtZSgpKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKKyAgICBpZiAoc2V0dGluZ3MtPnN1cHBv
cnRzU2FtcGxlUmF0ZSgpKQorICAgICAgICBvYmplY3QtPnB1dERpcmVjdChzdGF0ZS52bSgpLCBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZzdGF0ZSwgInNhbXBsZVJhdGUiKSwganNOdW1iZXIoc2V0
dGluZ3MtPnNhbXBsZVJhdGUoKSksIERvbnREZWxldGUgfCBSZWFkT25seSk7CisgICAgaWYgKHNl
dHRpbmdzLT5zdXBwb3J0c1NhbXBsZVNpemUoKSkKKyAgICAgICAgb2JqZWN0LT5wdXREaXJlY3Qo
c3RhdGUudm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmc3RhdGUsICJzYW1wbGVTaXplIiks
IGpzTnVtYmVyKHNldHRpbmdzLT5zYW1wbGVTaXplKCkpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkp
OworICAgIGlmIChzZXR0aW5ncy0+c3VwcG9ydHNFY2hvQ2FuY2VsbGF0aW9uKCkpCisgICAgICAg
IG9iamVjdC0+cHV0RGlyZWN0KHN0YXRlLnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnN0
YXRlLCAiZWNob0NhbmNlbGxhdGlvbiIpLCBqc0Jvb2xlYW4oc2V0dGluZ3MtPmVjaG9DYW5jZWxs
YXRpb24oKSksIERvbnREZWxldGUgfCBSZWFkT25seSk7CisgICAgaWYgKHNldHRpbmdzLT5zdXBw
b3J0c0RldmljZUlkKCkpCisgICAgICAgIG9iamVjdC0+cHV0RGlyZWN0KHN0YXRlLnZtKCksIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcoJnN0YXRlLCAiZGV2aWNlSWQiKSwganNTdHJpbmdXaXRoQ2Fj
aGUoJnN0YXRlLCBzZXR0aW5ncy0+ZGV2aWNlSWQoKSksIERvbnREZWxldGUgfCBSZWFkT25seSk7
CisgICAgaWYgKHNldHRpbmdzLT5zdXBwb3J0c0dyb3VwSWQoKSkKKyAgICAgICAgb2JqZWN0LT5w
dXREaXJlY3Qoc3RhdGUudm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmc3RhdGUsICJncm91
cElkIiksIGpzU3RyaW5nV2l0aENhY2hlKCZzdGF0ZSwgc2V0dGluZ3MtPmdyb3VwSWQoKSksIERv
bnREZWxldGUgfCBSZWFkT25seSk7CisgICAgCisgICAgcmV0dXJuIG9iamVjdDsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtUHJpdmF0ZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Qcml2YXRlLmNwcAko
cmV2aXNpb24gMTkyOTMwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
TWVkaWFTdHJlYW1Qcml2YXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjA0LDkgKzIwNCw5IEBA
IEZsb2F0U2l6ZSBNZWRpYVN0cmVhbVByaXZhdGU6OmludHJpbnNpY1MKICAgICBGbG9hdFNpemUg
c2l6ZTsKIAogICAgIGlmIChtX2FjdGl2ZVZpZGVvVHJhY2spIHsKLSAgICAgICAgY29uc3QgUmVh
bHRpbWVNZWRpYVNvdXJjZVN0YXRlcyYgc3RhdGVzID0gbV9hY3RpdmVWaWRlb1RyYWNrLT5zb3Vy
Y2UoKS0+c3RhdGVzKCk7Ci0gICAgICAgIHNpemUuc2V0V2lkdGgoc3RhdGVzLndpZHRoKCkpOwot
ICAgICAgICBzaXplLnNldEhlaWdodChzdGF0ZXMuaGVpZ2h0KCkpOworICAgICAgICBjb25zdCBS
ZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmIHNldHRpbmcgPSBtX2FjdGl2ZVZpZGVvVHJhY2st
PnNldHRpbmdzKCk7CisgICAgICAgIHNpemUuc2V0V2lkdGgoc2V0dGluZy53aWR0aCgpKTsKKyAg
ICAgICAgc2l6ZS5zZXRIZWlnaHQoc2V0dGluZy5oZWlnaHQoKSk7CiAgICAgfQogCiAgICAgcmV0
dXJuIHNpemU7CkBAIC0yNjgsNyArMjY4LDcgQEAgdm9pZCBNZWRpYVN0cmVhbVByaXZhdGU6OnRy
YWNrTXV0ZWRDaGFuZwogICAgIH0pOwogfQogCi12b2lkIE1lZGlhU3RyZWFtUHJpdmF0ZTo6dHJh
Y2tTdGF0ZXNDaGFuZ2VkKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJikKK3ZvaWQgTWVkaWFTdHJl
YW1Qcml2YXRlOjp0cmFja1NldHRpbmdzQ2hhbmdlZChNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYp
CiB7CiAgICAgY2hhcmFjdGVyaXN0aWNzQ2hhbmdlZCgpOwogfQpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Qcml2YXRlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Qcml2YXRl
LmgJKHJldmlzaW9uIDE5MjkzMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtUHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQsNyArMTA0LDcg
QEAgcHJpdmF0ZToKICAgICAvLyBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6T2JzZXJ2ZXIKICAg
ICB2b2lkIHRyYWNrRW5kZWQoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmKSBvdmVycmlkZTsKICAg
ICB2b2lkIHRyYWNrTXV0ZWRDaGFuZ2VkKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJikgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCB0cmFja1N0YXRlc0NoYW5nZWQoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUm
KSBvdmVycmlkZTsKKyAgICB2b2lkIHRyYWNrU2V0dGluZ3NDaGFuZ2VkKE1lZGlhU3RyZWFtVHJh
Y2tQcml2YXRlJikgb3ZlcnJpZGU7CiAgICAgdm9pZCB0cmFja0VuYWJsZWRDaGFuZ2VkKE1lZGlh
U3RyZWFtVHJhY2tQcml2YXRlJikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGNoYXJhY3RlcmlzdGlj
c0NoYW5nZWQoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01l
ZGlhU3RyZWFtVHJhY2tQcml2YXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZS5jcHAJKHJldmlzaW9u
IDE5MjkzMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3Ry
ZWFtVHJhY2tQcml2YXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsOCArMzIsNyBAQAogI2lu
Y2x1ZGUgIkF1ZGlvU291cmNlUHJvdmlkZXIuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQu
aCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCi0jaW5jbHVkZSAiTWVkaWFTb3VyY2VTdGF0ZXMuaCIK
LSNpbmNsdWRlICJNZWRpYVN0cmVhbUNhcGFiaWxpdGllcy5oIgorI2luY2x1ZGUgIk1lZGlhU291
cmNlU2V0dGluZ3MuaCIKICNpbmNsdWRlICJVVUlELmgiCiAjaW5jbHVkZSA8d3RmL05ldmVyRGVz
dHJveWVkLmg+CiAKQEAgLTE0OSw5ICsxNDgsOSBAQCBSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4g
TWVkaWFTdHJlYW1UcmFjCiAgICAgcmV0dXJuIG1fY29uc3RyYWludHM7CiB9CiAKLWNvbnN0IFJl
YWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXMmIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjpzdGF0ZXMo
KSBjb25zdAorY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJiBNZWRpYVN0cmVhbVRy
YWNrUHJpdmF0ZTo6c2V0dGluZ3MoKSBjb25zdAogewotICAgIHJldHVybiBtX3NvdXJjZS0+c3Rh
dGVzKCk7CisgICAgcmV0dXJuIG1fc291cmNlLT5zZXR0aW5ncygpOwogfQogCiBSZWZQdHI8UmVh
bHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcz4gTWVkaWFTdHJlYW1UcmFja1ByaXZhdGU6OmNh
cGFiaWxpdGllcygpIGNvbnN0CkBAIC0yMDIsMTAgKzIwMSwxMCBAQCB2b2lkIE1lZGlhU3RyZWFt
VHJhY2tQcml2YXRlOjpzb3VyY2VNdXRlCiAgICAgICAgIG9ic2VydmVyLT50cmFja011dGVkQ2hh
bmdlZCgqdGhpcyk7CiB9CiAKLXZvaWQgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGU6OnNvdXJjZVN0
YXRlc0NoYW5nZWQoKQordm9pZCBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6c291cmNlU2V0dGlu
Z3NDaGFuZ2VkKCkKIHsKICAgICBmb3IgKGF1dG8mIG9ic2VydmVyIDogbV9vYnNlcnZlcnMpCi0g
ICAgICAgIG9ic2VydmVyLT50cmFja1N0YXRlc0NoYW5nZWQoKnRoaXMpOworICAgICAgICBvYnNl
cnZlci0+dHJhY2tTZXR0aW5nc0NoYW5nZWQoKnRoaXMpOwogfQogCiBib29sIE1lZGlhU3RyZWFt
VHJhY2tQcml2YXRlOjpwcmV2ZW50U291cmNlRnJvbVN0b3BwaW5nKCkKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tQcml2YXRlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJl
YW1UcmFja1ByaXZhdGUuaAkocmV2aXNpb24gMTkyOTMwKQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUuaAkod29ya2luZyBjb3B5
KQpAQCAtMzcsNyArMzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEF1ZGlvU291
cmNlUHJvdmlkZXI7CiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7Ci1jbGFzcyBNZWRpYVNvdXJjZVN0
YXRlczsKK2NsYXNzIE1lZGlhU291cmNlU2V0dGluZ3M7CiBjbGFzcyBSZWFsdGltZU1lZGlhU291
cmNlQ2FwYWJpbGl0aWVzOwogCiBjbGFzcyBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSA6IHB1Ymxp
YyBSZWZDb3VudGVkPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPiwgcHVibGljIFJlYWx0aW1lTWVk
aWFTb3VyY2U6Ok9ic2VydmVyIHsKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogCiAgICAgICAg
IHZpcnR1YWwgdm9pZCB0cmFja0VuZGVkKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJikgPSAwOwog
ICAgICAgICB2aXJ0dWFsIHZvaWQgdHJhY2tNdXRlZENoYW5nZWQoTWVkaWFTdHJlYW1UcmFja1By
aXZhdGUmKSA9IDA7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCB0cmFja1N0YXRlc0NoYW5nZWQoTWVk
aWFTdHJlYW1UcmFja1ByaXZhdGUmKSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCB0cmFja1Nl
dHRpbmdzQ2hhbmdlZChNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYpID0gMDsKICAgICAgICAgdmly
dHVhbCB2b2lkIHRyYWNrRW5hYmxlZENoYW5nZWQoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmKSA9
IDA7CiAgICAgfTsKICAgICAKQEAgLTg1LDcgKzg1LDcgQEAgcHVibGljOgogICAgIHZvaWQgYWRk
T2JzZXJ2ZXIoT2JzZXJ2ZXImKTsKICAgICB2b2lkIHJlbW92ZU9ic2VydmVyKE9ic2VydmVyJik7
CiAKLSAgICBjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzJiBzdGF0ZXMoKSBjb25zdDsK
KyAgICBjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmIHNldHRpbmdzKCkgY29uc3Q7
CiAgICAgUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM+IGNhcGFiaWxpdGll
cygpIGNvbnN0OwogCiAgICAgUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+IGNvbnN0cmFpbnRzKCkg
Y29uc3Q7CkBAIC0xMDIsNyArMTAyLDcgQEAgcHJpdmF0ZToKICAgICAvLyBSZWFsdGltZU1lZGlh
U291cmNlT2JzZXJ2ZXIKICAgICB2b2lkIHNvdXJjZVN0b3BwZWQoKSBvdmVycmlkZSBmaW5hbDsK
ICAgICB2b2lkIHNvdXJjZU11dGVkQ2hhbmdlZCgpIG92ZXJyaWRlIGZpbmFsOwotICAgIHZvaWQg
c291cmNlU3RhdGVzQ2hhbmdlZCgpIG92ZXJyaWRlIGZpbmFsOworICAgIHZvaWQgc291cmNlU2V0
dGluZ3NDaGFuZ2VkKCkgb3ZlcnJpZGUgZmluYWw7CiAgICAgYm9vbCBwcmV2ZW50U291cmNlRnJv
bVN0b3BwaW5nKCkgb3ZlcnJpZGUgZmluYWw7CiAKICAgICBWZWN0b3I8T2JzZXJ2ZXIqPiBtX29i
c2VydmVyczsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0
aW1lTWVkaWFTb3VyY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwCShyZXZpc2lvbiAxOTI5MzApCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTUsMTAgKzk1LDEwIEBAIHZvaWQgUmVhbHRpbWVNZWRp
YVNvdXJjZTo6c2V0TXV0ZWQoYm9vbCAKICAgICAgICAgb2JzZXJ2ZXItPnNvdXJjZU11dGVkQ2hh
bmdlZCgpOwogfQogCi12b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OnN0YXRlc0RpZENoYW5nZWQo
KQordm9pZCBSZWFsdGltZU1lZGlhU291cmNlOjpzZXR0aW5nc0RpZENoYW5nZWQoKQogewogICAg
IGZvciAoYXV0byYgb2JzZXJ2ZXIgOiBtX29ic2VydmVycykKLSAgICAgICAgb2JzZXJ2ZXItPnNv
dXJjZVN0YXRlc0NoYW5nZWQoKTsKKyAgICAgICAgb2JzZXJ2ZXItPnNvdXJjZVNldHRpbmdzQ2hh
bmdlZCgpOwogfQogCiBib29sIFJlYWx0aW1lTWVkaWFTb3VyY2U6OnJlYWRvbmx5KCkgY29uc3QK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFT
b3VyY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9SZWFsdGltZU1lZGlhU291cmNlLmgJKHJldmlzaW9uIDE5MjkzMCkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuaAkod29ya2luZyBj
b3B5KQpAQCAtNTEsNyArNTEsNyBAQCBjbGFzcyBGbG9hdFJlY3Q7CiBjbGFzcyBHcmFwaGljc0Nv
bnRleHQ7CiBjbGFzcyBNZWRpYUNvbnN0cmFpbnRzOwogY2xhc3MgTWVkaWFTdHJlYW1Qcml2YXRl
OwotY2xhc3MgUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlczsKK2NsYXNzIFJlYWx0aW1lTWVkaWFT
b3VyY2VTZXR0aW5nczsKIAogY2xhc3MgUmVhbHRpbWVNZWRpYVNvdXJjZSA6IHB1YmxpYyBSZWZD
b3VudGVkPFJlYWx0aW1lTWVkaWFTb3VyY2U+IHsKIHB1YmxpYzoKQEAgLTYyLDcgKzYyLDcgQEAg
cHVibGljOgogICAgICAgICAvLyBTb3VyY2Ugc3RhdGUgY2hhbmdlcy4KICAgICAgICAgdmlydHVh
bCB2b2lkIHNvdXJjZVN0b3BwZWQoKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBzb3VyY2VN
dXRlZENoYW5nZWQoKSA9IDA7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBzb3VyY2VTdGF0ZXNDaGFu
Z2VkKCkgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgc291cmNlU2V0dGluZ3NDaGFuZ2VkKCkg
PSAwOwogCiAgICAgICAgIC8vIE9ic2VydmVyIHN0YXRlIHF1ZXJpZXMuCiAgICAgICAgIHZpcnR1
YWwgYm9vbCBwcmV2ZW50U291cmNlRnJvbVN0b3BwaW5nKCkgPSAwOwpAQCAtODUsOCArODUsOCBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldEZpdG5lc3NTY29yZShjb25zdCB1bnNpZ25l
ZCBmaXRuZXNzU2NvcmUpIHsgbV9maXRuZXNzU2NvcmUgPSBmaXRuZXNzU2NvcmU7IH0KIAogICAg
IHZpcnR1YWwgUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM+IGNhcGFiaWxp
dGllcygpID0gMDsKLSAgICB2aXJ0dWFsIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXMm
IHN0YXRlcygpID0gMDsKLSAgICB2b2lkIHN0YXRlc0RpZENoYW5nZWQoKTsKKyAgICB2aXJ0dWFs
IGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYgc2V0dGluZ3MoKSA9IDA7CisgICAg
dm9pZCBzZXR0aW5nc0RpZENoYW5nZWQoKTsKICAgICAKICAgICBib29sIHN0b3BwZWQoKSBjb25z
dCB7IHJldHVybiBtX3N0b3BwZWQ7IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3Vy
Y2VDYXBhYmlsaXRpZXMuaAkocmV2aXNpb24gMTkyOTMwKQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQog
Ci0jaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlcy5oIgorI2luY2x1ZGUgIlJlYWx0
aW1lTWVkaWFTb3VyY2VTZXR0aW5ncy5oIgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAj
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5o
PgpAQCAtOTAsMjAgKzkwLDExIEBAIHB1YmxpYzoKIAogICAgIH5SZWFsdGltZU1lZGlhU291cmNl
Q2FwYWJpbGl0aWVzKCkgeyB9CiAKLSAgICBjb25zdCBWZWN0b3I8UmVhbHRpbWVNZWRpYVNvdXJj
ZVN0YXRlczo6U291cmNlVHlwZT4mIHNvdXJjZVR5cGVzKCkgeyByZXR1cm4gbV9zb3VyY2VUeXBl
OyB9Ci0gICAgdm9pZCBzZXRTb3VyY2VUeXBlKFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXM6OlNv
dXJjZVR5cGUgc291cmNlVHlwZSkgeyBtX3NvdXJjZVR5cGUucmVzaXplVG9GaXQoMSk7IGFkZFNv
dXJjZVR5cGUoc291cmNlVHlwZSk7IH0KLSAgICB2b2lkIGFkZFNvdXJjZVR5cGUoUmVhbHRpbWVN
ZWRpYVNvdXJjZVN0YXRlczo6U291cmNlVHlwZSBzb3VyY2VUeXBlKQotICAgIHsKLSAgICAgICAg
aWYgKHNvdXJjZVR5cGUgPT0gUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlczo6Q2FtZXJhKQotICAg
ICAgICAgICAgbV92aWRlb1NvdXJjZSA9IHRydWU7Ci0gICAgICAgIG1fc291cmNlVHlwZS5hcHBl
bmQoc291cmNlVHlwZSk7Ci0gICAgfQotCiAgICAgY29uc3QgVmVjdG9yPEF0b21pY1N0cmluZz4m
IHNvdXJjZUlkKCkgeyByZXR1cm4gbV9zb3VyY2VJZDsgfQogICAgIHZvaWQgc2V0U291cmNlSWQo
Y29uc3QgQXRvbWljU3RyaW5nJiBpZCkgIHsgbV9zb3VyY2VJZC5yZXNlcnZlQ2FwYWNpdHkoMSk7
IG1fc291cmNlSWQuaW5zZXJ0KDAsIGlkKTsgfQogCi0gICAgY29uc3QgVmVjdG9yPFJlYWx0aW1l
TWVkaWFTb3VyY2VTdGF0ZXM6OlZpZGVvRmFjaW5nTW9kZT4mIGZhY2luZ01vZGVzKCkgeyByZXR1
cm4gbV9mYWNpbmdNb2RlOyB9Ci0gICAgdm9pZCBhZGRGYWNpbmdNb2RlKFJlYWx0aW1lTWVkaWFT
b3VyY2VTdGF0ZXM6OlZpZGVvRmFjaW5nTW9kZSBtb2RlKSB7IG1fZmFjaW5nTW9kZS5hcHBlbmQo
bW9kZSk7IH0KKyAgICBjb25zdCBWZWN0b3I8UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpW
aWRlb0ZhY2luZ01vZGU+JiBmYWNpbmdNb2RlcygpIHsgcmV0dXJuIG1fZmFjaW5nTW9kZTsgfQor
ICAgIHZvaWQgYWRkRmFjaW5nTW9kZShSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OlZpZGVv
RmFjaW5nTW9kZSBtb2RlKSB7IG1fZmFjaW5nTW9kZS5hcHBlbmQobW9kZSk7IH0KIAogICAgIGNv
bnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXR5UmFuZ2UmIHdpZHRoKCkgeyByZXR1cm4g
bV93aWR0aDsgfQogICAgIHZvaWQgc2V0V2lkdGhSYW5nZShjb25zdCBSZWFsdGltZU1lZGlhU291
cmNlQ2FwYWJpbGl0eVJhbmdlJiB3aWR0aCkgeyBtX3dpZHRoID0gd2lkdGg7IH0KQEAgLTEzMCw4
ICsxMjEsNyBAQCBwcml2YXRlOgogICAgIH0KIAogICAgIFZlY3RvcjxBdG9taWNTdHJpbmc+IG1f
c291cmNlSWQ7Ci0gICAgVmVjdG9yPFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXM6OlNvdXJjZVR5
cGU+IG1fc291cmNlVHlwZTsKLSAgICBWZWN0b3I8UmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlczo6
VmlkZW9GYWNpbmdNb2RlPiBtX2ZhY2luZ01vZGU7CisgICAgVmVjdG9yPFJlYWx0aW1lTWVkaWFT
b3VyY2VTZXR0aW5nczo6VmlkZW9GYWNpbmdNb2RlPiBtX2ZhY2luZ01vZGU7CiAKICAgICBSZWFs
dGltZU1lZGlhU291cmNlQ2FwYWJpbGl0eVJhbmdlIG1fd2lkdGg7CiAgICAgUmVhbHRpbWVNZWRp
YVNvdXJjZUNhcGFiaWxpdHlSYW5nZSBtX2hlaWdodDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291
cmNlQ2VudGVyLmgJKHJldmlzaW9uIDE5MjkzMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtNDQsNyArNDQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBNZWRpYUNvbnN0cmFp
bnRzOwogY2xhc3MgTWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudDsKIGNsYXNzIE1lZGlhU3RyZWFt
VHJhY2tTb3VyY2VzUmVxdWVzdENsaWVudDsKLWNsYXNzIFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0
ZXM7CitjbGFzcyBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M7CiBjbGFzcyBSZWFsdGltZU1l
ZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWludHM7CiBjbGFzcyBUcmFja1NvdXJjZUluZm87CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFT
b3VyY2VTZXR0aW5ncy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzLmNwcAkocmV2aXNpb24gMTky
OTMwKQkoZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1l
ZGlhU291cmNlU3RhdGVzLmNwcDoxOTI5MzApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsODUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCisgKiAgICBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCisgKiAgICBkaXN0cmlidXRpb24uCisgKiAzLiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycwor
ICogICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbSB0aGlzCisgKiAgICBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJM
RShNRURJQV9TVFJFQU0pCisjaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlcy5oIgor
CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworY29uc3QgQXRvbWljU3RyaW5nJiBSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzOjpmYWNpbmdN
b2RlKFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXM6OlZpZGVvRmFjaW5nTW9kZSBtb2RlKQorewor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IHVzZXJGYWNpbmcoInVzZXIi
LCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBlbnZpcm9ubWVudEZhY2luZygiZW52aXJvbm1lbnQiLCBB
dG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8QXRvbWljU3RyaW5nPiBsZWZ0RmFjaW5nKCJsZWZ0IiwgQXRvbWljU3RyaW5nOjpDb25z
dHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmlu
Zz4gcmlnaHRGYWNpbmcoInJpZ2h0IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJh
bCk7CisgICAgCisgICAgc3dpdGNoIChtb2RlKSB7CisgICAgY2FzZSBSZWFsdGltZU1lZGlhU291
cmNlU3RhdGVzOjpVc2VyOgorICAgICAgICByZXR1cm4gdXNlckZhY2luZzsKKyAgICBjYXNlIFJl
YWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXM6OkVudmlyb25tZW50OgorICAgICAgICByZXR1cm4gZW52
aXJvbm1lbnRGYWNpbmc7CisgICAgY2FzZSBSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzOjpMZWZ0
OgorICAgICAgICByZXR1cm4gbGVmdEZhY2luZzsKKyAgICBjYXNlIFJlYWx0aW1lTWVkaWFTb3Vy
Y2VTdGF0ZXM6OlJpZ2h0OgorICAgICAgICByZXR1cm4gcmlnaHRGYWNpbmc7CisgICAgY2FzZSBS
ZWFsdGltZU1lZGlhU291cmNlU3RhdGVzOjpVbmtub3duOgorICAgICAgICByZXR1cm4gZW1wdHlB
dG9tOworICAgIH0KKyAgICAKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4g
ZW1wdHlBdG9tOworfQorCitjb25zdCBBdG9taWNTdHJpbmcmIFJlYWx0aW1lTWVkaWFTb3VyY2VT
dGF0ZXM6OnNvdXJjZVR5cGUoUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlczo6U291cmNlVHlwZSBz
b3VyY2VUeXBlKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IG5v
bmUoIm5vbmUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBjYW1lcmEoImNhbWVyYSIsIEF0b21pY1N0
cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxB
dG9taWNTdHJpbmc+IG1pY3JvcGhvbmUoIm1pY3JvcGhvbmUiLCBBdG9taWNTdHJpbmc6OkNvbnN0
cnVjdEZyb21MaXRlcmFsKTsKKyAgICAKKyAgICBzd2l0Y2ggKHNvdXJjZVR5cGUpIHsKKyAgICBj
YXNlIFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXM6Ok5vbmU6CisgICAgICAgIHJldHVybiBub25l
OworICAgIGNhc2UgUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlczo6Q2FtZXJhOgorICAgICAgICBy
ZXR1cm4gY2FtZXJhOworICAgIGNhc2UgUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlczo6TWljcm9w
aG9uZToKKyAgICAgICAgcmV0dXJuIG1pY3JvcGhvbmU7CisgICAgfQorICAgIAorICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBlbXB0eUF0b207Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlU2V0dGlu
Z3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L1JlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncy5jcHAJKHdvcmtpbmcgY29weSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5n
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxMy0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMzEsMTMgKzMxLDEzIEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotI2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3Vy
Y2VTdGF0ZXMuaCIKKyNpbmNsdWRlICJSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MuaCIKIAog
I2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LWNvbnN0IEF0b21pY1N0cmluZyYgUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlczo6ZmFjaW5nTW9k
ZShSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzOjpWaWRlb0ZhY2luZ01vZGUgbW9kZSkKK2NvbnN0
IEF0b21pY1N0cmluZyYgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpmYWNpbmdNb2RlKFJl
YWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6VmlkZW9GYWNpbmdNb2RlIG1vZGUpCiB7CiAgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gdXNlckZhY2luZygidXNlciIsIEF0
b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxBdG9taWNTdHJpbmc+IGVudmlyb25tZW50RmFjaW5nKCJlbnZpcm9ubWVudCIsIEF0b21p
Y1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwpAQCAtNDUsMTUgKzQ1LDE1IEBAIGNvbnN0
IEF0b21pY1N0cmluZyYgUmVhbHRpbWVNZWRpYVNvdXJjZVMKICAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8QXRvbWljU3RyaW5nPiByaWdodEZhY2luZygicmlnaHQiLCBBdG9taWNTdHJpbmc6OkNv
bnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICAKICAgICBzd2l0Y2ggKG1vZGUpIHsKLSAgICBjYXNl
IFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXM6OlVzZXI6CisgICAgY2FzZSBSZWFsdGltZU1lZGlh
U291cmNlU2V0dGluZ3M6OlVzZXI6CiAgICAgICAgIHJldHVybiB1c2VyRmFjaW5nOwotICAgIGNh
c2UgUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlczo6RW52aXJvbm1lbnQ6CisgICAgY2FzZSBSZWFs
dGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkVudmlyb25tZW50OgogICAgICAgICByZXR1cm4gZW52
aXJvbm1lbnRGYWNpbmc7Ci0gICAgY2FzZSBSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzOjpMZWZ0
OgorICAgIGNhc2UgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpMZWZ0OgogICAgICAgICBy
ZXR1cm4gbGVmdEZhY2luZzsKLSAgICBjYXNlIFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXM6OlJp
Z2h0OgorICAgIGNhc2UgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpSaWdodDoKICAgICAg
ICAgcmV0dXJuIHJpZ2h0RmFjaW5nOwotICAgIGNhc2UgUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRl
czo6VW5rbm93bjoKKyAgICBjYXNlIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6VW5rbm93
bjoKICAgICAgICAgcmV0dXJuIGVtcHR5QXRvbTsKICAgICB9CiAgICAgCkBAIC02MSwyNSArNjEs
NiBAQCBjb25zdCBBdG9taWNTdHJpbmcmIFJlYWx0aW1lTWVkaWFTb3VyY2VTCiAgICAgcmV0dXJu
IGVtcHR5QXRvbTsKIH0KIAotY29uc3QgQXRvbWljU3RyaW5nJiBSZWFsdGltZU1lZGlhU291cmNl
U3RhdGVzOjpzb3VyY2VUeXBlKFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXM6OlNvdXJjZVR5cGUg
c291cmNlVHlwZSkKLXsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBu
b25lKCJub25lIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gY2FtZXJhKCJjYW1lcmEiLCBBdG9taWNT
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
QXRvbWljU3RyaW5nPiBtaWNyb3Bob25lKCJtaWNyb3Bob25lIiwgQXRvbWljU3RyaW5nOjpDb25z
dHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgCi0gICAgc3dpdGNoIChzb3VyY2VUeXBlKSB7Ci0gICAg
Y2FzZSBSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzOjpOb25lOgotICAgICAgICByZXR1cm4gbm9u
ZTsKLSAgICBjYXNlIFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXM6OkNhbWVyYToKLSAgICAgICAg
cmV0dXJuIGNhbWVyYTsKLSAgICBjYXNlIFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXM6Ok1pY3Jv
cGhvbmU6Ci0gICAgICAgIHJldHVybiBtaWNyb3Bob25lOwotICAgIH0KLSAgICAKLSAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gZW1wdHlBdG9tOwotfQotCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRp
bmdzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzLmgJKHJldmlzaW9uIDE5MjkzMCkJKGZyb20gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRl
cy5oOjE5MjkzMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0
aW1lTWVkaWFTb3VyY2VTZXR0aW5ncy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsOTUgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFJl
YWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXNfaAorI2RlZmluZSBSZWFsdGltZU1lZGlhU291cmNlU3Rh
dGVzX2gKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9t
aWNTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBSZWFsdGltZU1lZGlh
U291cmNlU3RhdGVzIHsKK3B1YmxpYzoKKyAgICBlbnVtIFNvdXJjZVR5cGUgeyBOb25lLCBDYW1l
cmEsIE1pY3JvcGhvbmUgfTsKKyAgICBlbnVtIFZpZGVvRmFjaW5nTW9kZSB7IFVua25vd24sIFVz
ZXIsIEVudmlyb25tZW50LCBMZWZ0LCBSaWdodCB9OworCisgICAgUmVhbHRpbWVNZWRpYVNvdXJj
ZVN0YXRlcygpCisgICAgICAgIDogbV9zb3VyY2VUeXBlKE5vbmUpCisgICAgICAgICwgbV9mYWNp
bmdNb2RlKFVua25vd24pCisgICAgICAgICwgbV93aWR0aCgwKQorICAgICAgICAsIG1faGVpZ2h0
KDApCisgICAgICAgICwgbV9mcmFtZVJhdGUoMCkKKyAgICAgICAgLCBtX2FzcGVjdFJhdGlvKDAp
CisgICAgICAgICwgbV92b2x1bWUoMCkKKyAgICB7CisgICAgfQorCisgICAgc3RhdGljIGNvbnN0
IEF0b21pY1N0cmluZyYgc291cmNlVHlwZShSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzOjpTb3Vy
Y2VUeXBlKTsKKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBmYWNpbmdNb2RlKFJlYWx0
aW1lTWVkaWFTb3VyY2VTdGF0ZXM6OlZpZGVvRmFjaW5nTW9kZSk7CisKKyAgICBTb3VyY2VUeXBl
IHNvdXJjZVR5cGUoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZVR5cGU7IH0KKyAgICB2b2lkIHNl
dFNvdXJjZVR5cGUoU291cmNlVHlwZSB0eXBlKSB7IG1fc291cmNlVHlwZSA9IHR5cGU7IH0KKwor
ICAgIGNvbnN0IEF0b21pY1N0cmluZyYgc291cmNlSWQoKSBjb25zdCB7IHJldHVybiBtX3NvdXJj
ZUlkOyB9CisgICAgdm9pZCBzZXRTb3VyY2VJZChjb25zdCBBdG9taWNTdHJpbmcmIHNvdXJjZUlk
KSB7IG1fc291cmNlSWQgPSBzb3VyY2VJZDsgfQorCisgICAgVmlkZW9GYWNpbmdNb2RlIGZhY2lu
Z01vZGUoKSBjb25zdCB7IHJldHVybiBtX2ZhY2luZ01vZGU7IH0KKyAgICB2b2lkIHNldEZhY2lu
Z01vZGUoVmlkZW9GYWNpbmdNb2RlIGZhY2luZ01vZGUpIHsgbV9mYWNpbmdNb2RlID0gZmFjaW5n
TW9kZTsgfQorICAgIAorICAgIHVuc2lnbmVkIGxvbmcgd2lkdGgoKSBjb25zdCB7IHJldHVybiBt
X3dpZHRoOyB9CisgICAgdm9pZCBzZXRXaWR0aCh1bnNpZ25lZCBsb25nIHdpZHRoKSB7IG1fd2lk
dGggPSB3aWR0aDsgfQorICAgIAorICAgIHVuc2lnbmVkIGxvbmcgaGVpZ2h0KCkgY29uc3QgeyBy
ZXR1cm4gbV9oZWlnaHQ7IH0KKyAgICB2b2lkIHNldEhlaWdodCh1bnNpZ25lZCBsb25nIGhlaWdo
dCkgeyBtX2hlaWdodCA9IGhlaWdodDsgfQorICAgIAorICAgIGZsb2F0IGZyYW1lUmF0ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fZnJhbWVSYXRlOyB9CisgICAgdm9pZCBzZXRGcmFtZVJhdGUoZmxvYXQg
ZnJhbWVSYXRlKSB7IG1fZnJhbWVSYXRlID0gZnJhbWVSYXRlOyB9CisgICAgCisgICAgZmxvYXQg
YXNwZWN0UmF0aW8oKSBjb25zdCB7IHJldHVybiBtX2FzcGVjdFJhdGlvOyB9CisgICAgdm9pZCBz
ZXRBc3BlY3RSYXRpbyhmbG9hdCBhc3BlY3RSYXRpbykgeyBtX2FzcGVjdFJhdGlvID0gYXNwZWN0
UmF0aW87IH0KKyAgICAKKyAgICB1bnNpZ25lZCBsb25nIHZvbHVtZSgpIGNvbnN0IHsgcmV0dXJu
IG1fdm9sdW1lOyB9CisgICAgdm9pZCBzZXRWb2x1bWUodW5zaWduZWQgbG9uZyB2b2x1bWUpIHsg
bV92b2x1bWUgPSB2b2x1bWU7IH0KKyAgICAKK3ByaXZhdGU6CisgICAgU291cmNlVHlwZSBtX3Nv
dXJjZVR5cGU7CisgICAgQXRvbWljU3RyaW5nIG1fc291cmNlSWQ7CisgICAgVmlkZW9GYWNpbmdN
b2RlIG1fZmFjaW5nTW9kZTsKKyAgICB1bnNpZ25lZCBsb25nIG1fd2lkdGg7CisgICAgdW5zaWdu
ZWQgbG9uZyBtX2hlaWdodDsKKyAgICBmbG9hdCBtX2ZyYW1lUmF0ZTsKKyAgICBmbG9hdCBtX2Fz
cGVjdFJhdGlvOworICAgIHVuc2lnbmVkIGxvbmcgbV92b2x1bWU7Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzX2gKKwor
I2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGlt
ZU1lZGlhU291cmNlU2V0dGluZ3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MuaAkod29ya2luZyBj
b3B5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRp
YVNvdXJjZVNldHRpbmdzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxMy0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsNzMgKzIzLDk0IEBACiAgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgogICovCiAKLSNpZm5kZWYgUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlc19oCi0jZGVm
aW5lIFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXNfaAorI2lmbmRlZiBSZWFsdGltZU1lZGlhU291
cmNlU2V0dGluZ3NfaAorI2RlZmluZSBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3NfaAogCiAj
aWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKIAorI2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2VT
dXBwb3J0ZWRDb25zdHJhaW50cy5oIgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXMg
eworY2xhc3MgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzIHsKIHB1YmxpYzoKICAgICBlbnVt
IFNvdXJjZVR5cGUgeyBOb25lLCBDYW1lcmEsIE1pY3JvcGhvbmUgfTsKICAgICBlbnVtIFZpZGVv
RmFjaW5nTW9kZSB7IFVua25vd24sIFVzZXIsIEVudmlyb25tZW50LCBMZWZ0LCBSaWdodCB9Owog
Ci0gICAgUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlcygpCi0gICAgICAgIDogbV9zb3VyY2VUeXBl
KE5vbmUpCi0gICAgICAgICwgbV9mYWNpbmdNb2RlKFVua25vd24pCi0gICAgICAgICwgbV93aWR0
aCgwKQotICAgICAgICAsIG1faGVpZ2h0KDApCi0gICAgICAgICwgbV9mcmFtZVJhdGUoMCkKLSAg
ICAgICAgLCBtX2FzcGVjdFJhdGlvKDApCi0gICAgICAgICwgbV92b2x1bWUoMCkKKyAgICBzdGF0
aWMgY29uc3QgQXRvbWljU3RyaW5nJiBmYWNpbmdNb2RlKFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0
aW5nczo6VmlkZW9GYWNpbmdNb2RlKTsKKworICAgIGV4cGxpY2l0IFJlYWx0aW1lTWVkaWFTb3Vy
Y2VTZXR0aW5ncygpCiAgICAgewogICAgIH0KIAotICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJp
bmcmIHNvdXJjZVR5cGUoUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlczo6U291cmNlVHlwZSk7Ci0g
ICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgZmFjaW5nTW9kZShSZWFsdGltZU1lZGlhU291
cmNlU3RhdGVzOjpWaWRlb0ZhY2luZ01vZGUpOwotCi0gICAgU291cmNlVHlwZSBzb3VyY2VUeXBl
KCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VUeXBlOyB9Ci0gICAgdm9pZCBzZXRTb3VyY2VUeXBl
KFNvdXJjZVR5cGUgdHlwZSkgeyBtX3NvdXJjZVR5cGUgPSB0eXBlOyB9Ci0KLSAgICBjb25zdCBB
dG9taWNTdHJpbmcmIHNvdXJjZUlkKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VJZDsgfQotICAg
IHZvaWQgc2V0U291cmNlSWQoY29uc3QgQXRvbWljU3RyaW5nJiBzb3VyY2VJZCkgeyBtX3NvdXJj
ZUlkID0gc291cmNlSWQ7IH0KLQotICAgIFZpZGVvRmFjaW5nTW9kZSBmYWNpbmdNb2RlKCkgY29u
c3QgeyByZXR1cm4gbV9mYWNpbmdNb2RlOyB9Ci0gICAgdm9pZCBzZXRGYWNpbmdNb2RlKFZpZGVv
RmFjaW5nTW9kZSBmYWNpbmdNb2RlKSB7IG1fZmFjaW5nTW9kZSA9IGZhY2luZ01vZGU7IH0KLSAg
ICAKKyAgICBib29sIHN1cHBvcnRzV2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3N1cHBvcnRlZENv
bnN0cmFpbnRzLnN1cHBvcnRzV2lkdGgoKTsgfQogICAgIHVuc2lnbmVkIGxvbmcgd2lkdGgoKSBj
b25zdCB7IHJldHVybiBtX3dpZHRoOyB9CiAgICAgdm9pZCBzZXRXaWR0aCh1bnNpZ25lZCBsb25n
IHdpZHRoKSB7IG1fd2lkdGggPSB3aWR0aDsgfQotICAgIAorCisgICAgYm9vbCBzdXBwb3J0c0hl
aWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fc3VwcG9ydGVkQ29uc3RyYWludHMuc3VwcG9ydHNIZWln
aHQoKTsgfQogICAgIHVuc2lnbmVkIGxvbmcgaGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9oZWln
aHQ7IH0KICAgICB2b2lkIHNldEhlaWdodCh1bnNpZ25lZCBsb25nIGhlaWdodCkgeyBtX2hlaWdo
dCA9IGhlaWdodDsgfQotICAgIAotICAgIGZsb2F0IGZyYW1lUmF0ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fZnJhbWVSYXRlOyB9Ci0gICAgdm9pZCBzZXRGcmFtZVJhdGUoZmxvYXQgZnJhbWVSYXRlKSB7
IG1fZnJhbWVSYXRlID0gZnJhbWVSYXRlOyB9Ci0gICAgCisKKyAgICBib29sIHN1cHBvcnRzQXNw
ZWN0UmF0aW8oKSBjb25zdCB7IHJldHVybiBtX3N1cHBvcnRlZENvbnN0cmFpbnRzLnN1cHBvcnRz
QXNwZWN0UmF0aW8oKTsgfQogICAgIGZsb2F0IGFzcGVjdFJhdGlvKCkgY29uc3QgeyByZXR1cm4g
bV9hc3BlY3RSYXRpbzsgfQogICAgIHZvaWQgc2V0QXNwZWN0UmF0aW8oZmxvYXQgYXNwZWN0UmF0
aW8pIHsgbV9hc3BlY3RSYXRpbyA9IGFzcGVjdFJhdGlvOyB9Ci0gICAgCisKKyAgICBib29sIHN1
cHBvcnRzRnJhbWVSYXRlKCkgY29uc3QgeyByZXR1cm4gbV9zdXBwb3J0ZWRDb25zdHJhaW50cy5z
dXBwb3J0c0ZyYW1lUmF0ZSgpOyB9CisgICAgZmxvYXQgZnJhbWVSYXRlKCkgY29uc3QgeyByZXR1
cm4gbV9mcmFtZVJhdGU7IH0KKyAgICB2b2lkIHNldEZyYW1lUmF0ZShmbG9hdCBmcmFtZVJhdGUp
IHsgbV9mcmFtZVJhdGUgPSBmcmFtZVJhdGU7IH0KKworICAgIGJvb2wgc3VwcG9ydHNGYWNpbmdN
b2RlKCkgY29uc3QgeyByZXR1cm4gbV9zdXBwb3J0ZWRDb25zdHJhaW50cy5zdXBwb3J0c0ZhY2lu
Z01vZGUoKTsgfQorICAgIFZpZGVvRmFjaW5nTW9kZSBmYWNpbmdNb2RlKCkgY29uc3QgeyByZXR1
cm4gbV9mYWNpbmdNb2RlOyB9CisgICAgdm9pZCBzZXRGYWNpbmdNb2RlKFZpZGVvRmFjaW5nTW9k
ZSBmYWNpbmdNb2RlKSB7IG1fZmFjaW5nTW9kZSA9IGZhY2luZ01vZGU7IH0KKworICAgIGJvb2wg
c3VwcG9ydHNWb2x1bWUoKSBjb25zdCB7IHJldHVybiBtX3N1cHBvcnRlZENvbnN0cmFpbnRzLnN1
cHBvcnRzVm9sdW1lKCk7IH0KICAgICB1bnNpZ25lZCBsb25nIHZvbHVtZSgpIGNvbnN0IHsgcmV0
dXJuIG1fdm9sdW1lOyB9CiAgICAgdm9pZCBzZXRWb2x1bWUodW5zaWduZWQgbG9uZyB2b2x1bWUp
IHsgbV92b2x1bWUgPSB2b2x1bWU7IH0KLSAgICAKKworICAgIGJvb2wgc3VwcG9ydHNTYW1wbGVS
YXRlKCkgY29uc3QgeyByZXR1cm4gbV9zdXBwb3J0ZWRDb25zdHJhaW50cy5zdXBwb3J0c1NhbXBs
ZVJhdGUoKTsgfQorICAgIHVuc2lnbmVkIGxvbmcgc2FtcGxlUmF0ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fc2FtcGxlUmF0ZTsgfQorICAgIHZvaWQgc2V0U2FtcGxlUmF0ZSh1bnNpZ25lZCBsb25nIHNh
bXBsZVJhdGUpIHsgbV9zYW1wbGVSYXRlID0gc2FtcGxlUmF0ZTsgfQorCisgICAgYm9vbCBzdXBw
b3J0c1NhbXBsZVNpemUoKSBjb25zdCB7IHJldHVybiBtX3N1cHBvcnRlZENvbnN0cmFpbnRzLnN1
cHBvcnRzU2FtcGxlU2l6ZSgpOyB9CisgICAgdW5zaWduZWQgbG9uZyBzYW1wbGVTaXplKCkgY29u
c3QgeyByZXR1cm4gbV9zYW1wbGVTaXplOyB9CisgICAgdm9pZCBzZXRTYW1wbGVTaXplKHVuc2ln
bmVkIGxvbmcgc2FtcGxlU2l6ZSkgeyBtX3NhbXBsZVNpemUgPSBzYW1wbGVTaXplOyB9CisKKyAg
ICBib29sIHN1cHBvcnRzRWNob0NhbmNlbGxhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc3VwcG9y
dGVkQ29uc3RyYWludHMuc3VwcG9ydHNFY2hvQ2FuY2VsbGF0aW9uKCk7IH0KKyAgICBib29sIGVj
aG9DYW5jZWxsYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2VjaG9DYW5jZWxsYXRpb247IH0KKyAg
ICB2b2lkIHNldEVjaG9DYW5jZWxsYXRpb24oYm9vbCBlY2hvQ2FuY2VsbGF0aW9uKSB7IG1fZWNo
b0NhbmNlbGxhdGlvbiA9IGVjaG9DYW5jZWxsYXRpb247IH0KKworICAgIGJvb2wgc3VwcG9ydHNE
ZXZpY2VJZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3VwcG9ydGVkQ29uc3RyYWludHMuc3VwcG9ydHNE
ZXZpY2VJZCgpOyB9CisgICAgY29uc3QgQXRvbWljU3RyaW5nJiBkZXZpY2VJZCgpIGNvbnN0IHsg
cmV0dXJuIG1fZGV2aWNlSWQ7IH0KKyAgICB2b2lkIHNldERldmljZUlkKGNvbnN0IEF0b21pY1N0
cmluZyYgZGV2aWNlSWQpIHsgbV9kZXZpY2VJZCA9IGRldmljZUlkOyB9CisKKyAgICBib29sIHN1
cHBvcnRzR3JvdXBJZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3VwcG9ydGVkQ29uc3RyYWludHMuc3Vw
cG9ydHNHcm91cElkKCk7IH0KKyAgICBjb25zdCBBdG9taWNTdHJpbmcmIGdyb3VwSWQoKSBjb25z
dCB7IHJldHVybiBtX2dyb3VwSWQ7IH0KKyAgICB2b2lkIHNldEdyb3VwSWQoY29uc3QgQXRvbWlj
U3RyaW5nJiBncm91cElkKSB7IG1fZ3JvdXBJZCA9IGdyb3VwSWQ7IH0KKworICAgIHZvaWQgc2V0
U3VwcG9ydGVkQ29uc3RyYWl0cyhjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29u
c3RyYWludHMmIHN1cHBvcnRlZENvbnN0cmFpbnRzKSB7IG1fc3VwcG9ydGVkQ29uc3RyYWludHMg
PSBzdXBwb3J0ZWRDb25zdHJhaW50czsgfQorCiBwcml2YXRlOgotICAgIFNvdXJjZVR5cGUgbV9z
b3VyY2VUeXBlOwotICAgIEF0b21pY1N0cmluZyBtX3NvdXJjZUlkOwotICAgIFZpZGVvRmFjaW5n
TW9kZSBtX2ZhY2luZ01vZGU7Ci0gICAgdW5zaWduZWQgbG9uZyBtX3dpZHRoOwotICAgIHVuc2ln
bmVkIGxvbmcgbV9oZWlnaHQ7Ci0gICAgZmxvYXQgbV9mcmFtZVJhdGU7Ci0gICAgZmxvYXQgbV9h
c3BlY3RSYXRpbzsKLSAgICB1bnNpZ25lZCBsb25nIG1fdm9sdW1lOworICAgIHVuc2lnbmVkIGxv
bmcgbV93aWR0aCB7IDAgfTsKKyAgICB1bnNpZ25lZCBsb25nIG1faGVpZ2h0IHsgMCB9OworICAg
IGZsb2F0IG1fYXNwZWN0UmF0aW8geyAwIH07CisgICAgZmxvYXQgbV9mcmFtZVJhdGUgeyAwIH07
CisgICAgVmlkZW9GYWNpbmdNb2RlIG1fZmFjaW5nTW9kZSB7IFVua25vd24gfTsKKyAgICB1bnNp
Z25lZCBsb25nIG1fdm9sdW1lIHsgMCB9OworICAgIHVuc2lnbmVkIGxvbmcgbV9zYW1wbGVSYXRl
IHsgMCB9OworICAgIHVuc2lnbmVkIGxvbmcgbV9zYW1wbGVTaXplIHsgMCB9OworICAgIGJvb2wg
bV9lY2hvQ2FuY2VsbGF0aW9uIHsgMCB9OworCisgICAgQXRvbWljU3RyaW5nIG1fZGV2aWNlSWQ7
CisgICAgQXRvbWljU3RyaW5nIG1fZ3JvdXBJZDsKKworICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VT
dXBwb3J0ZWRDb25zdHJhaW50cyBtX3N1cHBvcnRlZENvbnN0cmFpbnRzOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYgLy8gUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlc19o
CisjZW5kaWYgLy8gUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzX2gKIAogI2VuZGlmCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNl
U3RhdGVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9SZWFsdGltZU1lZGlhU291cmNlU3RhdGVzLmNwcAkocmV2aXNpb24gMTkyOTMwKQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZVN0
YXRlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsODUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqICAgIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqICAgIGRpc3RyaWJ1
dGlvbi4KLSAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMgY29udHJpYnV0b3JzCi0gKiAgICBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMKLSAqICAgIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUg
ImNvbmZpZy5oIgotCi0jaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLSNpbmNsdWRlICJSZWFsdGlt
ZU1lZGlhU291cmNlU3RhdGVzLmgiCi0KLSNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4K
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jb25zdCBBdG9taWNTdHJpbmcmIFJlYWx0aW1lTWVk
aWFTb3VyY2VTdGF0ZXM6OmZhY2luZ01vZGUoUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlczo6Vmlk
ZW9GYWNpbmdNb2RlIG1vZGUpCi17Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0
cmluZz4gdXNlckZhY2luZygidXNlciIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVy
YWwpOwotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IGVudmlyb25tZW50
RmFjaW5nKCJlbnZpcm9ubWVudCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwp
OwotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IGxlZnRGYWNpbmcoImxl
ZnQiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiByaWdodEZhY2luZygicmlnaHQiLCBBdG9taWNTdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICAKLSAgICBzd2l0Y2ggKG1vZGUpIHsKLSAg
ICBjYXNlIFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXM6OlVzZXI6Ci0gICAgICAgIHJldHVybiB1
c2VyRmFjaW5nOwotICAgIGNhc2UgUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlczo6RW52aXJvbm1l
bnQ6Ci0gICAgICAgIHJldHVybiBlbnZpcm9ubWVudEZhY2luZzsKLSAgICBjYXNlIFJlYWx0aW1l
TWVkaWFTb3VyY2VTdGF0ZXM6OkxlZnQ6Ci0gICAgICAgIHJldHVybiBsZWZ0RmFjaW5nOwotICAg
IGNhc2UgUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlczo6UmlnaHQ6Ci0gICAgICAgIHJldHVybiBy
aWdodEZhY2luZzsKLSAgICBjYXNlIFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXM6OlVua25vd246
Ci0gICAgICAgIHJldHVybiBlbXB0eUF0b207Ci0gICAgfQotICAgIAotICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotICAgIHJldHVybiBlbXB0eUF0b207Ci19Ci0KLWNvbnN0IEF0b21pY1N0cmlu
ZyYgUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlczo6c291cmNlVHlwZShSZWFsdGltZU1lZGlhU291
cmNlU3RhdGVzOjpTb3VyY2VUeXBlIHNvdXJjZVR5cGUpCi17Ci0gICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPEF0b21pY1N0cmluZz4gbm9uZSgibm9uZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0
RnJvbUxpdGVyYWwpOwotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IGNh
bWVyYSgiY2FtZXJhIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gbWljcm9waG9uZSgibWljcm9waG9u
ZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgIAotICAgIHN3aXRj
aCAoc291cmNlVHlwZSkgewotICAgIGNhc2UgUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlczo6Tm9u
ZToKLSAgICAgICAgcmV0dXJuIG5vbmU7Ci0gICAgY2FzZSBSZWFsdGltZU1lZGlhU291cmNlU3Rh
dGVzOjpDYW1lcmE6Ci0gICAgICAgIHJldHVybiBjYW1lcmE7Ci0gICAgY2FzZSBSZWFsdGltZU1l
ZGlhU291cmNlU3RhdGVzOjpNaWNyb3Bob25lOgotICAgICAgICByZXR1cm4gbWljcm9waG9uZTsK
LSAgICB9Ci0gICAgCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIGVtcHR5
QXRvbTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKE1F
RElBX1NUUkVBTSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1Jl
YWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlU3RhdGVzLmgJKHJldmlzaW9u
IDE5MjkzMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1l
TWVkaWFTb3VyY2VTdGF0ZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw5NSArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBSZWFsdGlt
ZU1lZGlhU291cmNlU3RhdGVzX2gKLSNkZWZpbmUgUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlc19o
Ci0KLSNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotCi0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQu
aD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3Ry
aW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgUmVhbHRpbWVNZWRpYVNvdXJj
ZVN0YXRlcyB7Ci1wdWJsaWM6Ci0gICAgZW51bSBTb3VyY2VUeXBlIHsgTm9uZSwgQ2FtZXJhLCBN
aWNyb3Bob25lIH07Ci0gICAgZW51bSBWaWRlb0ZhY2luZ01vZGUgeyBVbmtub3duLCBVc2VyLCBF
bnZpcm9ubWVudCwgTGVmdCwgUmlnaHQgfTsKLQotICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0
ZXMoKQotICAgICAgICA6IG1fc291cmNlVHlwZShOb25lKQotICAgICAgICAsIG1fZmFjaW5nTW9k
ZShVbmtub3duKQotICAgICAgICAsIG1fd2lkdGgoMCkKLSAgICAgICAgLCBtX2hlaWdodCgwKQot
ICAgICAgICAsIG1fZnJhbWVSYXRlKDApCi0gICAgICAgICwgbV9hc3BlY3RSYXRpbygwKQotICAg
ICAgICAsIG1fdm9sdW1lKDApCi0gICAgewotICAgIH0KLQotICAgIHN0YXRpYyBjb25zdCBBdG9t
aWNTdHJpbmcmIHNvdXJjZVR5cGUoUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlczo6U291cmNlVHlw
ZSk7Ci0gICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgZmFjaW5nTW9kZShSZWFsdGltZU1l
ZGlhU291cmNlU3RhdGVzOjpWaWRlb0ZhY2luZ01vZGUpOwotCi0gICAgU291cmNlVHlwZSBzb3Vy
Y2VUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VUeXBlOyB9Ci0gICAgdm9pZCBzZXRTb3Vy
Y2VUeXBlKFNvdXJjZVR5cGUgdHlwZSkgeyBtX3NvdXJjZVR5cGUgPSB0eXBlOyB9Ci0KLSAgICBj
b25zdCBBdG9taWNTdHJpbmcmIHNvdXJjZUlkKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VJZDsg
fQotICAgIHZvaWQgc2V0U291cmNlSWQoY29uc3QgQXRvbWljU3RyaW5nJiBzb3VyY2VJZCkgeyBt
X3NvdXJjZUlkID0gc291cmNlSWQ7IH0KLQotICAgIFZpZGVvRmFjaW5nTW9kZSBmYWNpbmdNb2Rl
KCkgY29uc3QgeyByZXR1cm4gbV9mYWNpbmdNb2RlOyB9Ci0gICAgdm9pZCBzZXRGYWNpbmdNb2Rl
KFZpZGVvRmFjaW5nTW9kZSBmYWNpbmdNb2RlKSB7IG1fZmFjaW5nTW9kZSA9IGZhY2luZ01vZGU7
IH0KLSAgICAKLSAgICB1bnNpZ25lZCBsb25nIHdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV93aWR0
aDsgfQotICAgIHZvaWQgc2V0V2lkdGgodW5zaWduZWQgbG9uZyB3aWR0aCkgeyBtX3dpZHRoID0g
d2lkdGg7IH0KLSAgICAKLSAgICB1bnNpZ25lZCBsb25nIGhlaWdodCgpIGNvbnN0IHsgcmV0dXJu
IG1faGVpZ2h0OyB9Ci0gICAgdm9pZCBzZXRIZWlnaHQodW5zaWduZWQgbG9uZyBoZWlnaHQpIHsg
bV9oZWlnaHQgPSBoZWlnaHQ7IH0KLSAgICAKLSAgICBmbG9hdCBmcmFtZVJhdGUoKSBjb25zdCB7
IHJldHVybiBtX2ZyYW1lUmF0ZTsgfQotICAgIHZvaWQgc2V0RnJhbWVSYXRlKGZsb2F0IGZyYW1l
UmF0ZSkgeyBtX2ZyYW1lUmF0ZSA9IGZyYW1lUmF0ZTsgfQotICAgIAotICAgIGZsb2F0IGFzcGVj
dFJhdGlvKCkgY29uc3QgeyByZXR1cm4gbV9hc3BlY3RSYXRpbzsgfQotICAgIHZvaWQgc2V0QXNw
ZWN0UmF0aW8oZmxvYXQgYXNwZWN0UmF0aW8pIHsgbV9hc3BlY3RSYXRpbyA9IGFzcGVjdFJhdGlv
OyB9Ci0gICAgCi0gICAgdW5zaWduZWQgbG9uZyB2b2x1bWUoKSBjb25zdCB7IHJldHVybiBtX3Zv
bHVtZTsgfQotICAgIHZvaWQgc2V0Vm9sdW1lKHVuc2lnbmVkIGxvbmcgdm9sdW1lKSB7IG1fdm9s
dW1lID0gdm9sdW1lOyB9Ci0gICAgCi1wcml2YXRlOgotICAgIFNvdXJjZVR5cGUgbV9zb3VyY2VU
eXBlOwotICAgIEF0b21pY1N0cmluZyBtX3NvdXJjZUlkOwotICAgIFZpZGVvRmFjaW5nTW9kZSBt
X2ZhY2luZ01vZGU7Ci0gICAgdW5zaWduZWQgbG9uZyBtX3dpZHRoOwotICAgIHVuc2lnbmVkIGxv
bmcgbV9oZWlnaHQ7Ci0gICAgZmxvYXQgbV9mcmFtZVJhdGU7Ci0gICAgZmxvYXQgbV9hc3BlY3RS
YXRpbzsKLSAgICB1bnNpZ25lZCBsb25nIG1fdm9sdW1lOwotfTsKLQotfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQotCi0jZW5kaWYgLy8gUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlc19oCi0KLSNlbmRp
ZgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQXVkaW9D
YXB0dXJlU291cmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbWFjL0FWQXVkaW9DYXB0dXJlU291cmNlLmgJKHJldmlzaW9uIDE5MjkzMCkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkF1ZGlvQ2FwdHVyZVNv
dXJjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01OSwxMiArNTksMTMgQEAgcHJpdmF0ZToKICAgICB2
aXJ0dWFsIH5BVkF1ZGlvQ2FwdHVyZVNvdXJjZSgpOwogICAgIAogICAgIHZvaWQgaW5pdGlhbGl6
ZUNhcGFiaWxpdGllcyhSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzJikgb3ZlcnJpZGU7
CisgICAgdm9pZCBpbml0aWFsaXplU3VwcG9ydGVkQ29uc3RyYWludHMoUmVhbHRpbWVNZWRpYVNv
dXJjZVN1cHBvcnRlZENvbnN0cmFpbnRzJikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGNhcHR1cmVP
dXRwdXREaWRPdXRwdXRTYW1wbGVCdWZmZXJGcm9tQ29ubmVjdGlvbihBVkNhcHR1cmVPdXRwdXQq
LCBDTVNhbXBsZUJ1ZmZlclJlZiwgQVZDYXB0dXJlQ29ubmVjdGlvbiopIG92ZXJyaWRlOwogICAg
IAogICAgIHZvaWQgc2V0dXBDYXB0dXJlU2Vzc2lvbigpIG92ZXJyaWRlOwogICAgIHZvaWQgc2h1
dGRvd25DYXB0dXJlU2Vzc2lvbigpIG92ZXJyaWRlOwotICAgIHZvaWQgdXBkYXRlU3RhdGVzKCkg
b3ZlcnJpZGU7CisgICAgdm9pZCB1cGRhdGVTZXR0aW5ncyhSZWFsdGltZU1lZGlhU291cmNlU2V0
dGluZ3MmKSBvdmVycmlkZTsKICAgICBBdWRpb1NvdXJjZVByb3ZpZGVyKiBhdWRpb1NvdXJjZVBy
b3ZpZGVyKCkgb3ZlcnJpZGU7CiAKICAgICBSZXRhaW5QdHI8QVZDYXB0dXJlQ29ubmVjdGlvbj4g
bV9hdWRpb0Nvbm5lY3Rpb247CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvQVZBdWRpb0NhcHR1cmVTb3VyY2UubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQXVkaW9DYXB0dXJlU291cmNlLm1tCShy
ZXZpc2lvbiAxOTI5MzApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvQVZBdWRpb0NhcHR1cmVTb3VyY2UubW0JKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcg
QEAKICNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQgIk1lZGlhQ29uc3RyYWludHMuaCIKICNp
bXBvcnQgIk5vdEltcGxlbWVudGVkLmgiCi0jaW1wb3J0ICJSZWFsdGltZU1lZGlhU291cmNlU3Rh
dGVzLmgiCisjaW1wb3J0ICJSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MuaCIKICNpbXBvcnQg
IlNvZnRMaW5raW5nLmgiCiAjaW1wb3J0ICJXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5o
IgogI2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWRm91bmRhdGlvbi5oPgpAQCAtNzAsOCArNzAsNiBA
QCBSZWZQdHI8QVZNZWRpYUNhcHR1cmVTb3VyY2U+IEFWQXVkaW9DYXB0CiBBVkF1ZGlvQ2FwdHVy
ZVNvdXJjZTo6QVZBdWRpb0NhcHR1cmVTb3VyY2UoQVZDYXB0dXJlRGV2aWNlVHlwZSogZGV2aWNl
LCBjb25zdCBBdG9taWNTdHJpbmcmIGlkLCBQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+IGNv
bnN0cmFpbnRzKQogICAgIDogQVZNZWRpYUNhcHR1cmVTb3VyY2UoZGV2aWNlLCBpZCwgUmVhbHRp
bWVNZWRpYVNvdXJjZTo6QXVkaW8sIGNvbnN0cmFpbnRzKQogewotICAgIGN1cnJlbnRTdGF0ZXMo
KS0+c2V0U291cmNlSWQoaWQpOwotICAgIGN1cnJlbnRTdGF0ZXMoKS0+c2V0U291cmNlVHlwZShS
ZWFsdGltZU1lZGlhU291cmNlU3RhdGVzOjpNaWNyb3Bob25lKTsKICAgICBtX2lucHV0RGVzY3Jp
cHRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbj4oKTsK
IH0KICAgICAKQEAgLTc5LDE5ICs3NywyMSBAQCBBVkF1ZGlvQ2FwdHVyZVNvdXJjZTo6fkFWQXVk
aW9DYXB0dXJlU291CiB7CiB9CiAKLXZvaWQgQVZBdWRpb0NhcHR1cmVTb3VyY2U6OmluaXRpYWxp
emVDYXBhYmlsaXRpZXMoUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcyZjYXBhYmlsaXRp
ZXMpCit2b2lkIEFWQXVkaW9DYXB0dXJlU291cmNlOjppbml0aWFsaXplQ2FwYWJpbGl0aWVzKFJl
YWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMmKQogewogICAgIC8vIEZJWE1FOiBmaW5pc2gg
dGhpcyBpbXBsZW1lbnRhdGlvbiAtIGh0dHBzOi8vd2Via2l0Lm9yZy9iLzEyMjQzMAotICAgIGNh
cGFiaWxpdGllcy5hZGRTb3VyY2VUeXBlKFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXM6Ok1pY3Jv
cGhvbmUpOwogfQogCi12b2lkIEFWQXVkaW9DYXB0dXJlU291cmNlOjp1cGRhdGVTdGF0ZXMoKQor
dm9pZCBBVkF1ZGlvQ2FwdHVyZVNvdXJjZTo6aW5pdGlhbGl6ZVN1cHBvcnRlZENvbnN0cmFpbnRz
KFJlYWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cyYgc3VwcG9ydGVkQ29uc3Ry
YWludHMpCit7CisgICAgc3VwcG9ydGVkQ29uc3RyYWludHMuc2V0U3VwcG9ydHNWb2x1bWUodHJ1
ZSk7Cit9CisKK3ZvaWQgQVZBdWRpb0NhcHR1cmVTb3VyY2U6OnVwZGF0ZVNldHRpbmdzKFJlYWx0
aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYgc2V0dGluZ3MpCiB7CiAgICAgLy8gRklYTUU6IHVzZSBb
QVZDYXB0dXJlQXVkaW9QcmV2aWV3T3V0cHV0IHZvbHVtZV0gZm9yIHZvbHVtZQogCi0gICAgUmVh
bHRpbWVNZWRpYVNvdXJjZVN0YXRlcyogc3RhdGVzID0gY3VycmVudFN0YXRlcygpOwotICAgIHN0
YXRlcy0+c2V0U291cmNlSWQoaWQoKSk7Ci0gICAgc3RhdGVzLT5zZXRTb3VyY2VUeXBlKFJlYWx0
aW1lTWVkaWFTb3VyY2VTdGF0ZXM6Ok1pY3JvcGhvbmUpOworICAgIHNldHRpbmdzLnNldERldmlj
ZUlkKGlkKCkpOwogfQogCiB2b2lkIEFWQXVkaW9DYXB0dXJlU291cmNlOjphZGRPYnNlcnZlcihB
VkF1ZGlvQ2FwdHVyZVNvdXJjZTo6T2JzZXJ2ZXIqIG9ic2VydmVyKQpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQ2FwdHVyZURldmljZU1hbmFnZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZD
YXB0dXJlRGV2aWNlTWFuYWdlci5oCShyZXZpc2lvbiAxOTI5MzApCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiQ2FwdHVyZURldmljZU1hbmFn
ZXIuaCIKICNpbmNsdWRlICJNZWRpYVN0cmVhbVRyYWNrU291cmNlc1JlcXVlc3RDbGllbnQuaCIK
ICNpbmNsdWRlICJSZWFsdGltZU1lZGlhU291cmNlLmgiCisjaW5jbHVkZSAiUmVhbHRpbWVNZWRp
YVNvdXJjZVN1cHBvcnRlZENvbnN0cmFpbnRzLmgiCiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC02NSw2ICs2Niw4IEBAIHB1
YmxpYzoKIAogICAgIHZvaWQgZGV2aWNlQ29ubmVjdGVkKCk7CiAgICAgdm9pZCBkZXZpY2VEaXNj
b25uZWN0ZWQoQVZDYXB0dXJlRGV2aWNlKik7CisgICAgCisgICAgY29uc3QgUmVhbHRpbWVNZWRp
YVNvdXJjZVN1cHBvcnRlZENvbnN0cmFpbnRzJiBzdXBwb3J0ZWRDb25zdHJhaW50cygpOwogCiBw
cm90ZWN0ZWQ6CiAgICAgc3RhdGljIGJvb2wgaXNBdmFpbGFibGUoKTsKQEAgLTgwLDYgKzgzLDcg
QEAgcHJvdGVjdGVkOgogICAgIHZvaWQgcmVnaXN0ZXJGb3JEZXZpY2VOb3RpZmljYXRpb25zKCk7
CiAKICAgICBSZXRhaW5QdHI8V2ViQ29yZUFWQ2FwdHVyZURldmljZU1hbmFnZXJPYnNlcnZlcj4g
bV9vYmpjT2JzZXJ2ZXI7CisgICAgUmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBvcnRlZENvbnN0cmFp
bnRzIG1fc3VwcG9ydGVkQ29uc3RyYWludHM7CiAgICAgVmVjdG9yPENhcHR1cmVEZXZpY2VJbmZv
PiBtX2RldmljZXM7CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5t
bQkocmV2aXNpb24gMTkyOTMwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbWFjL0FWQ2FwdHVyZURldmljZU1hbmFnZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTM2LDcg
KzM2LDcgQEAKICNpbXBvcnQgIk1lZGlhQ29uc3RyYWludHMuaCIKICNpbXBvcnQgIlJlYWx0aW1l
TWVkaWFTb3VyY2UuaCIKICNpbXBvcnQgIlJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaCIKLSNp
bXBvcnQgIlJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXMuaCIKKyNpbXBvcnQgIlJlYWx0aW1lTWVk
aWFTb3VyY2VTZXR0aW5ncy5oIgogI2ltcG9ydCAiUmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBvcnRl
ZENvbnN0cmFpbnRzLmgiCiAjaW1wb3J0ICJTb2Z0TGlua2luZy5oIgogI2ltcG9ydCAiVVVJRC5o
IgpAQCAtMTc3LDkgKzE3Nyw5IEBAIHZvaWQgQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6cmVmcmVz
aENhcHQKICAgICAgICAgICAgIGNhcHR1cmVEZXZpY2UubV9ncm91cElEID0gY3JlYXRlQ2Fub25p
Y2FsVVVJRFN0cmluZygpOwogICAgICAgICAgICAgY2FwdHVyZURldmljZS5tX2xvY2FsaXplZE5h
bWUgPSBwbGF0Zm9ybURldmljZS5sb2NhbGl6ZWROYW1lOwogICAgICAgICAgICAgaWYgKFtwbGF0
Zm9ybURldmljZSBwb3NpdGlvbl0gPT0gQVZDYXB0dXJlRGV2aWNlUG9zaXRpb25Gcm9udCkKLSAg
ICAgICAgICAgICAgICBjYXB0dXJlRGV2aWNlLm1fcG9zaXRpb24gPSBSZWFsdGltZU1lZGlhU291
cmNlU3RhdGVzOjpVc2VyOworICAgICAgICAgICAgICAgIGNhcHR1cmVEZXZpY2UubV9wb3NpdGlv
biA9IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6VXNlcjsKICAgICAgICAgICAgIGlmIChb
cGxhdGZvcm1EZXZpY2UgcG9zaXRpb25dID09IEFWQ2FwdHVyZURldmljZVBvc2l0aW9uQmFjaykK
LSAgICAgICAgICAgICAgICBjYXB0dXJlRGV2aWNlLm1fcG9zaXRpb24gPSBSZWFsdGltZU1lZGlh
U291cmNlU3RhdGVzOjpFbnZpcm9ubWVudDsKKyAgICAgICAgICAgICAgICBjYXB0dXJlRGV2aWNl
Lm1fcG9zaXRpb24gPSBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkVudmlyb25tZW50Owog
CiAgICAgICAgICAgICBib29sIGhhc0F1ZGlvID0gW3BsYXRmb3JtRGV2aWNlIGhhc01lZGlhVHlw
ZTpBVk1lZGlhVHlwZUF1ZGlvXSB8fCBbcGxhdGZvcm1EZXZpY2UgaGFzTWVkaWFUeXBlOkFWTWVk
aWFUeXBlTXV4ZWRdOwogICAgICAgICAgICAgYm9vbCBoYXNWaWRlbyA9IFtwbGF0Zm9ybURldmlj
ZSBoYXNNZWRpYVR5cGU6QVZNZWRpYVR5cGVWaWRlb10gfHwgW3BsYXRmb3JtRGV2aWNlIGhhc01l
ZGlhVHlwZTpBVk1lZGlhVHlwZU11eGVkXTsKQEAgLTM0NCw2ICszNDQsMzEgQEAgYm9vbCBBVkNh
cHR1cmVEZXZpY2VNYW5hZ2VyOjppc1N1cHBvcnRlZAogICAgIHJldHVybiBDYXB0dXJlRGV2aWNl
TWFuYWdlcjo6aXNTdXBwb3J0ZWRGcmFtZVJhdGUoZnJhbWVSYXRlKTsKIH0KIAorY29uc3QgUmVh
bHRpbWVNZWRpYVNvdXJjZVN1cHBvcnRlZENvbnN0cmFpbnRzJiBBVkNhcHR1cmVEZXZpY2VNYW5h
Z2VyOjpzdXBwb3J0ZWRDb25zdHJhaW50cygpCit7CisgICAgaWYgKG1fc3VwcG9ydGVkQ29uc3Ry
YWludHMuc3VwcG9ydHNEZXZpY2VJZCgpKQorICAgICAgICByZXR1cm4gbV9zdXBwb3J0ZWRDb25z
dHJhaW50czsKKworICAgIG1fc3VwcG9ydGVkQ29uc3RyYWludHMuc2V0U3VwcG9ydHNEZXZpY2VJ
ZCh0cnVlKTsKKworICAgIFZlY3RvcjxDYXB0dXJlRGV2aWNlSW5mbz4mIGRldmljZXMgPSBjYXB0
dXJlRGV2aWNlTGlzdCgpOworCisgICAgZm9yIChhdXRvJiBjYXB0dXJlRGV2aWNlIDogZGV2aWNl
cykgeworICAgICAgICBpZiAoY2FwdHVyZURldmljZS5tX3NvdXJjZVR5cGUgPT0gUmVhbHRpbWVN
ZWRpYVNvdXJjZTo6QXVkaW8pCisgICAgICAgICAgICBtX3N1cHBvcnRlZENvbnN0cmFpbnRzLnNl
dFN1cHBvcnRzVm9sdW1lKHRydWUpOworCisgICAgICAgIGlmIChjYXB0dXJlRGV2aWNlLm1fc291
cmNlVHlwZSA9PSBSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlbykgeworICAgICAgICAgICAgbV9z
dXBwb3J0ZWRDb25zdHJhaW50cy5zZXRTdXBwb3J0c1dpZHRoKHRydWUpOworICAgICAgICAgICAg
bV9zdXBwb3J0ZWRDb25zdHJhaW50cy5zZXRTdXBwb3J0c0hlaWdodCh0cnVlKTsKKyAgICAgICAg
ICAgIG1fc3VwcG9ydGVkQ29uc3RyYWludHMuc2V0U3VwcG9ydHNBc3BlY3RSYXRpbyh0cnVlKTsK
KyAgICAgICAgICAgIG1fc3VwcG9ydGVkQ29uc3RyYWludHMuc2V0U3VwcG9ydHNGcmFtZVJhdGUo
dHJ1ZSk7CisgICAgICAgICAgICBtX3N1cHBvcnRlZENvbnN0cmFpbnRzLnNldFN1cHBvcnRzRmFj
aW5nTW9kZSh0cnVlKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICByZXR1cm4gbV9zdXBw
b3J0ZWRDb25zdHJhaW50czsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiBAaW1wbGVt
ZW50YXRpb24gV2ViQ29yZUFWQ2FwdHVyZURldmljZU1hbmFnZXJPYnNlcnZlcgpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWTWVkaWFDYXB0dXJlU291cmNl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L0FWTWVkaWFDYXB0dXJlU291cmNlLmgJKHJldmlzaW9uIDE5MjkzMCkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVk1lZGlhQ2FwdHVyZVNvdXJjZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC01Niw3ICs1Niw3IEBAIHB1YmxpYzoKICAgICAKICAgICBBVkNhcHR1cmVT
ZXNzaW9uICpzZXNzaW9uKCkgY29uc3QgeyByZXR1cm4gbV9zZXNzaW9uLmdldCgpOyB9CiAKLSAg
ICBjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzJiBzdGF0ZXMoKSBvdmVycmlkZTsKKyAg
ICBjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmIHNldHRpbmdzKCkgb3ZlcnJpZGU7
CiAKICAgICB2b2lkIHN0YXJ0UHJvZHVjaW5nRGF0YSgpIG92ZXJyaWRlOwogICAgIHZvaWQgc3Rv
cFByb2R1Y2luZ0RhdGEoKSBvdmVycmlkZTsKQEAgLTcxLDE0ICs3MSwxNSBAQCBwcm90ZWN0ZWQ6
CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0dXBDYXB0dXJlU2Vzc2lvbigpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgc2h1dGRvd25DYXB0dXJlU2Vzc2lvbigpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQg
dXBkYXRlU3RhdGVzKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTZXR0aW5ncyhSZWFs
dGltZU1lZGlhU291cmNlU2V0dGluZ3MmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGluaXRpYWxp
emVDYXBhYmlsaXRpZXMoUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcyYpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZVN1cHBvcnRlZENvbnN0cmFpbnRzKFJlYWx0aW1lTWVk
aWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cyYpID0gMDsKIAogICAgIEFWQ2FwdHVyZURldmlj
ZSAqZGV2aWNlKCkgY29uc3QgeyByZXR1cm4gbV9kZXZpY2UuZ2V0KCk7IH0KIAotICAgIFJlYWx0
aW1lTWVkaWFTb3VyY2VTdGF0ZXMqIGN1cnJlbnRTdGF0ZXMoKSB7IHJldHVybiAmbV9jdXJyZW50
U3RhdGVzOyB9CiAgICAgTWVkaWFDb25zdHJhaW50cyogY29uc3RyYWludHMoKSB7IHJldHVybiBt
X2NvbnN0cmFpbnRzLmdldCgpOyB9CiAKKyAgICBSZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVk
Q29uc3RyYWludHMmIHN1cHBvcnRlZENvbnN0cmFpbnRzKCk7CiAgICAgUmVmUHRyPFJlYWx0aW1l
TWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM+IGNhcGFiaWxpdGllcygpIG92ZXJyaWRlOwogCiAgICAg
dm9pZCBzZXRWaWRlb1NhbXBsZUJ1ZmZlckRlbGVnYXRlKEFWQ2FwdHVyZVZpZGVvRGF0YU91dHB1
dCopOwpAQCAtOTAsMTEgKzkxLDEyIEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXR1cFNlc3Npb24o
KTsKICAgICB2b2lkIHJlc2V0KCkgb3ZlcnJpZGU7CiAKKyAgICBSZWFsdGltZU1lZGlhU291cmNl
U2V0dGluZ3MgbV9jdXJyZW50U2V0dGluZ3M7CisgICAgUmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBv
cnRlZENvbnN0cmFpbnRzIG1fc3VwcG9ydGVkQ29uc3RyYWludHM7CiAgICAgV2Vha1B0ckZhY3Rv
cnk8QVZNZWRpYUNhcHR1cmVTb3VyY2U+IG1fd2Vha1B0ckZhY3Rvcnk7CiAgICAgUmV0YWluUHRy
PFdlYkNvcmVBVk1lZGlhQ2FwdHVyZVNvdXJjZU9ic2VydmVyPiBtX29iamNPYnNlcnZlcjsKICAg
ICBSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gbV9jb25zdHJhaW50czsKICAgICBSZWZQdHI8UmVh
bHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcz4gbV9jYXBhYmlsaXRpZXM7Ci0gICAgUmVhbHRp
bWVNZWRpYVNvdXJjZVN0YXRlcyBtX2N1cnJlbnRTdGF0ZXM7CiAgICAgUmV0YWluUHRyPEFWQ2Fw
dHVyZVNlc3Npb24+IG1fc2Vzc2lvbjsKICAgICBSZXRhaW5QdHI8QVZDYXB0dXJlRGV2aWNlPiBt
X2RldmljZTsKICAgICBib29sIG1faXNSdW5uaW5nIHsgZmFsc2V9OwpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWTWVkaWFDYXB0dXJlU291cmNlLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVk1l
ZGlhQ2FwdHVyZVNvdXJjZS5tbQkocmV2aXNpb24gMTkyOTMwKQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWTWVkaWFDYXB0dXJlU291cmNlLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0zMSw3ICszMSw3IEBACiAjaW1wb3J0ICJBdWRpb1NvdXJjZVByb3ZpZGVyLmgi
CiAjaW1wb3J0ICJMb2dnaW5nLmgiCiAjaW1wb3J0ICJNZWRpYUNvbnN0cmFpbnRzLmgiCi0jaW1w
b3J0ICJSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzLmgiCisjaW1wb3J0ICJSZWFsdGltZU1lZGlh
U291cmNlU2V0dGluZ3MuaCIKICNpbXBvcnQgIlNvZnRMaW5raW5nLmgiCiAjaW1wb3J0ICJVVUlE
LmgiCiAjaW1wb3J0IDxBVkZvdW5kYXRpb24vQVZGb3VuZGF0aW9uLmg+CkBAIC0xMzIsNyArMTMy
LDYgQEAgQVZNZWRpYUNhcHR1cmVTb3VyY2U6OkFWTWVkaWFDYXB0dXJlU291cgogewogICAgIHNl
dE5hbWUoZGV2aWNlLmxvY2FsaXplZE5hbWUpOwogICAgIHNldFBlcnNpc3RlbnRJRChkZXZpY2Uu
dW5pcXVlSUQpOwotICAgIG1fY3VycmVudFN0YXRlcy5zZXRTb3VyY2VUeXBlKHR5cGUgPT0gUmVh
bHRpbWVNZWRpYVNvdXJjZTo6VmlkZW8gPyBSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzOjpDYW1l
cmEgOiBSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzOjpNaWNyb3Bob25lKTsKIH0KIAogQVZNZWRp
YUNhcHR1cmVTb3VyY2U6On5BVk1lZGlhQ2FwdHVyZVNvdXJjZSgpCkBAIC0xNjUsMTEgKzE2NCwy
NSBAQCB2b2lkIEFWTWVkaWFDYXB0dXJlU291cmNlOjpzdG9wUHJvZHVjaW5nCiAgICAgW21fc2Vz
c2lvbi5nZXQoKSBzdG9wUnVubmluZ107CiB9CiAKLWNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VT
dGF0ZXMmIEFWTWVkaWFDYXB0dXJlU291cmNlOjpzdGF0ZXMoKQorY29uc3QgUmVhbHRpbWVNZWRp
YVNvdXJjZVNldHRpbmdzJiBBVk1lZGlhQ2FwdHVyZVNvdXJjZTo6c2V0dGluZ3MoKQogewotICAg
IG1fY3VycmVudFN0YXRlcy5zZXRTb3VyY2VJZChpZCgpKTsKLSAgICB1cGRhdGVTdGF0ZXMoKTsK
LSAgICByZXR1cm4gbV9jdXJyZW50U3RhdGVzOworICAgIGlmIChtX2N1cnJlbnRTZXR0aW5ncy5k
ZXZpY2VJZCgpLmlzRW1wdHkoKSkKKyAgICAgICAgbV9jdXJyZW50U2V0dGluZ3Muc2V0U3VwcG9y
dGVkQ29uc3RyYWl0cyhzdXBwb3J0ZWRDb25zdHJhaW50cygpKTsKKworICAgIG1fY3VycmVudFNl
dHRpbmdzLnNldERldmljZUlkKGlkKCkpOworICAgIHVwZGF0ZVNldHRpbmdzKG1fY3VycmVudFNl
dHRpbmdzKTsKKyAgICByZXR1cm4gbV9jdXJyZW50U2V0dGluZ3M7Cit9CisKK1JlYWx0aW1lTWVk
aWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cyYgQVZNZWRpYUNhcHR1cmVTb3VyY2U6OnN1cHBv
cnRlZENvbnN0cmFpbnRzKCkKK3sKKyAgICBpZiAobV9zdXBwb3J0ZWRDb25zdHJhaW50cy5zdXBw
b3J0c0RldmljZUlkKCkpCisgICAgICAgIHJldHVybiBtX3N1cHBvcnRlZENvbnN0cmFpbnRzOwor
CisgICAgbV9zdXBwb3J0ZWRDb25zdHJhaW50cy5zZXRTdXBwb3J0c0RldmljZUlkKHRydWUpOwor
ICAgIGluaXRpYWxpemVTdXBwb3J0ZWRDb25zdHJhaW50cyhtX3N1cHBvcnRlZENvbnN0cmFpbnRz
KTsKKworICAgIHJldHVybiBtX3N1cHBvcnRlZENvbnN0cmFpbnRzOwogfQogCiBSZWZQdHI8UmVh
bHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcz4gQVZNZWRpYUNhcHR1cmVTb3VyY2U6OmNhcGFi
aWxpdGllcygpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMv
QVZWaWRlb0NhcHR1cmVTb3VyY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UuaAkocmV2aXNpb24gMTky
OTMwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9D
YXB0dXJlU291cmNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU1LDkgKzU1LDEwIEBAIHByaXZhdGU6
CiAgICAgdm9pZCBzZXR1cENhcHR1cmVTZXNzaW9uKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzaHV0
ZG93bkNhcHR1cmVTZXNzaW9uKCkgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIHVwZGF0ZVN0YXRlcygp
IG92ZXJyaWRlOworICAgIHZvaWQgdXBkYXRlU2V0dGluZ3MoUmVhbHRpbWVNZWRpYVNvdXJjZVNl
dHRpbmdzJikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGluaXRpYWxpemVDYXBhYmlsaXRpZXMoUmVh
bHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcyYpIG92ZXJyaWRlOworICAgIHZvaWQgaW5pdGlh
bGl6ZVN1cHBvcnRlZENvbnN0cmFpbnRzKFJlYWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25z
dHJhaW50cyYpIG92ZXJyaWRlOwogCiAgICAgYm9vbCBhcHBseUNvbnN0cmFpbnRzKE1lZGlhQ29u
c3RyYWludHMqKTsKICAgICBib29sIHNldEZyYW1lUmF0ZUNvbnN0cmFpbnQoZmxvYXQgbWluRnJh
bWVSYXRlLCBmbG9hdCBtYXhGcmFtZVJhdGUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNv
dXJjZS5tbQkocmV2aXNpb24gMTkyOTMwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0z
OCw3ICszOCw3IEBACiAjaW1wb3J0ICJOb3RJbXBsZW1lbnRlZC5oIgogI2ltcG9ydCAiUGxhdGZv
cm1MYXllci5oIgogI2ltcG9ydCAiUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oIgotI2ltcG9y
dCAiUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlcy5oIgorI2ltcG9ydCAiUmVhbHRpbWVNZWRpYVNv
dXJjZVNldHRpbmdzLmgiCiAjaW1wb3J0IDxBVkZvdW5kYXRpb24vQVZGb3VuZGF0aW9uLmg+CiAj
aW1wb3J0IDxvYmpjL3J1bnRpbWUuaD4KIApAQCAtMTExLDI4ICsxMTEsMzMgQEAgQVZWaWRlb0Nh
cHR1cmVTb3VyY2U6On5BVlZpZGVvQ2FwdHVyZVNvdQogdm9pZCBBVlZpZGVvQ2FwdHVyZVNvdXJj
ZTo6aW5pdGlhbGl6ZUNhcGFiaWxpdGllcyhSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVz
JiBjYXBhYmlsaXRpZXMpCiB7CiAgICAgLy8gRklYTUU6IGZpbmlzaCB0aGlzIGltcGxlbWVudGF0
aW9uCi0gICAgY2FwYWJpbGl0aWVzLnNldFNvdXJjZUlkKGN1cnJlbnRTdGF0ZXMoKS0+c291cmNl
SWQoKSk7Ci0gICAgY2FwYWJpbGl0aWVzLmFkZFNvdXJjZVR5cGUoUmVhbHRpbWVNZWRpYVNvdXJj
ZVN0YXRlczo6Q2FtZXJhKTsKKyAgICBjYXBhYmlsaXRpZXMuc2V0U291cmNlSWQoaWQoKSk7CiB9
CiAKLXZvaWQgQVZWaWRlb0NhcHR1cmVTb3VyY2U6OnVwZGF0ZVN0YXRlcygpCit2b2lkIEFWVmlk
ZW9DYXB0dXJlU291cmNlOjppbml0aWFsaXplU3VwcG9ydGVkQ29uc3RyYWludHMoUmVhbHRpbWVN
ZWRpYVNvdXJjZVN1cHBvcnRlZENvbnN0cmFpbnRzJiBzdXBwb3J0ZWRDb25zdHJhaW50cykKIHsK
LSAgICBSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzKiBzdGF0ZXMgPSBjdXJyZW50U3RhdGVzKCk7
CisgICAgc3VwcG9ydGVkQ29uc3RyYWludHMuc2V0U3VwcG9ydHNXaWR0aCh0cnVlKTsKKyAgICBz
dXBwb3J0ZWRDb25zdHJhaW50cy5zZXRTdXBwb3J0c0hlaWdodCh0cnVlKTsKKyAgICBzdXBwb3J0
ZWRDb25zdHJhaW50cy5zZXRTdXBwb3J0c0FzcGVjdFJhdGlvKHRydWUpOworICAgIHN1cHBvcnRl
ZENvbnN0cmFpbnRzLnNldFN1cHBvcnRzRnJhbWVSYXRlKHRydWUpOworICAgIHN1cHBvcnRlZENv
bnN0cmFpbnRzLnNldFN1cHBvcnRzRmFjaW5nTW9kZSh0cnVlKTsKK30KIAotICAgIHN0YXRlcy0+
c2V0U291cmNlSWQoaWQoKSk7Ci0gICAgc3RhdGVzLT5zZXRTb3VyY2VUeXBlKFJlYWx0aW1lTWVk
aWFTb3VyY2VTdGF0ZXM6OkNhbWVyYSk7Cit2b2lkIEFWVmlkZW9DYXB0dXJlU291cmNlOjp1cGRh
dGVTZXR0aW5ncyhSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmIHNldHRpbmdzKQoreworICAg
IHNldHRpbmdzLnNldERldmljZUlkKGlkKCkpOwogCiAgICAgaWYgKFtkZXZpY2UoKSBwb3NpdGlv
bl0gPT0gQVZDYXB0dXJlRGV2aWNlUG9zaXRpb25Gcm9udCkKLSAgICAgICAgc3RhdGVzLT5zZXRG
YWNpbmdNb2RlKFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXM6OlVzZXIpOworICAgICAgICBzZXR0
aW5ncy5zZXRGYWNpbmdNb2RlKFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6VXNlcik7CiAg
ICAgZWxzZSBpZiAoW2RldmljZSgpIHBvc2l0aW9uXSA9PSBBVkNhcHR1cmVEZXZpY2VQb3NpdGlv
bkJhY2spCi0gICAgICAgIHN0YXRlcy0+c2V0RmFjaW5nTW9kZShSZWFsdGltZU1lZGlhU291cmNl
U3RhdGVzOjpFbnZpcm9ubWVudCk7CisgICAgICAgIHNldHRpbmdzLnNldEZhY2luZ01vZGUoUmVh
bHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpFbnZpcm9ubWVudCk7CiAgICAgZWxzZQotICAgICAg
ICBzdGF0ZXMtPnNldEZhY2luZ01vZGUoUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlczo6VW5rbm93
bik7CisgICAgICAgIHNldHRpbmdzLnNldEZhY2luZ01vZGUoUmVhbHRpbWVNZWRpYVNvdXJjZVNl
dHRpbmdzOjpVbmtub3duKTsKICAgICAKLSAgICBzdGF0ZXMtPnNldEZyYW1lUmF0ZShtX2ZyYW1l
UmF0ZSk7Ci0gICAgc3RhdGVzLT5zZXRXaWR0aChtX3dpZHRoKTsKLSAgICBzdGF0ZXMtPnNldEhl
aWdodChtX2hlaWdodCk7Ci0gICAgc3RhdGVzLT5zZXRBc3BlY3RSYXRpbyhzdGF0aWNfY2FzdDxm
bG9hdD4obV93aWR0aCkgLyBtX2hlaWdodCk7CisgICAgc2V0dGluZ3Muc2V0RnJhbWVSYXRlKG1f
ZnJhbWVSYXRlKTsKKyAgICBzZXR0aW5ncy5zZXRXaWR0aChtX3dpZHRoKTsKKyAgICBzZXR0aW5n
cy5zZXRIZWlnaHQobV9oZWlnaHQpOworICAgIHNldHRpbmdzLnNldEFzcGVjdFJhdGlvKHN0YXRp
Y19jYXN0PGZsb2F0PihtX3dpZHRoKSAvIG1faGVpZ2h0KTsKIH0KIAogYm9vbCBBVlZpZGVvQ2Fw
dHVyZVNvdXJjZTo6c2V0RnJhbWVSYXRlQ29uc3RyYWludChmbG9hdCBtaW5GcmFtZVJhdGUsIGZs
b2F0IG1heEZyYW1lUmF0ZSkKQEAgLTI5Miw3ICsyOTcsNyBAQCB2b2lkIEFWVmlkZW9DYXB0dXJl
U291cmNlOjpwcm9jZXNzTmV3RnJhCiAKICAgICB1cGRhdGVGcmFtZXJhdGUoc2FtcGxlQnVmZmVy
LmdldCgpKTsKIAotICAgIGJvb2wgc3RhdGVzQ2hhbmdlZCA9IGZhbHNlOworICAgIGJvb2wgc2V0
dGluZ3NDaGFuZ2VkID0gZmFsc2U7CiAKICAgICBtX2J1ZmZlciA9IHNhbXBsZUJ1ZmZlcjsKICAg
ICBtX2xhc3RJbWFnZSA9IG51bGxwdHI7CkBAIC0zMDEsMTEgKzMwNiwxMSBAQCB2b2lkIEFWVmlk
ZW9DYXB0dXJlU291cmNlOjpwcm9jZXNzTmV3RnJhCiAgICAgaWYgKGRpbWVuc2lvbnMud2lkdGgg
IT0gbV93aWR0aCB8fCBkaW1lbnNpb25zLmhlaWdodCAhPSBtX2hlaWdodCkgewogICAgICAgICBt
X3dpZHRoID0gZGltZW5zaW9ucy53aWR0aDsKICAgICAgICAgbV9oZWlnaHQgPSBkaW1lbnNpb25z
LmhlaWdodDsKLSAgICAgICAgc3RhdGVzQ2hhbmdlZCA9IHRydWU7CisgICAgICAgIHNldHRpbmdz
Q2hhbmdlZCA9IHRydWU7CiAgICAgfQogCi0gICAgaWYgKHN0YXRlc0NoYW5nZWQpCi0gICAgICAg
IHRoaXMtPnN0YXRlc0RpZENoYW5nZWQoKTsKKyAgICBpZiAoc2V0dGluZ3NDaGFuZ2VkKQorICAg
ICAgICB0aGlzLT5zZXR0aW5nc0RpZENoYW5nZWQoKTsKIH0KIAogdm9pZCBBVlZpZGVvQ2FwdHVy
ZVNvdXJjZTo6Y2FwdHVyZU91dHB1dERpZE91dHB1dFNhbXBsZUJ1ZmZlckZyb21Db25uZWN0aW9u
KEFWQ2FwdHVyZU91dHB1dFR5cGUqLCBDTVNhbXBsZUJ1ZmZlclJlZiBzYW1wbGVCdWZmZXIsIEFW
Q2FwdHVyZUNvbm5lY3Rpb25UeXBlKikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1lVmlk
ZW9Tb3VyY2VNYWMubW0JKHJldmlzaW9uIDE5MjkzMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBAQAogI2ltcG9ydCAiTWVkaWFDb25zdHJhaW50cy5oIgog
I2ltcG9ydCAiTm90SW1wbGVtZW50ZWQuaCIKICNpbXBvcnQgIlBsYXRmb3JtTGF5ZXIuaCIKLSNp
bXBvcnQgIlJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXMuaCIKKyNpbXBvcnQgIlJlYWx0aW1lTWVk
aWFTb3VyY2VTZXR0aW5ncy5oIgogI2ltcG9ydCA8UXVhcnR6Q29yZS9DQUxheWVyLmg+CiAjaW1w
b3J0IDxRdWFydHpDb3JlL0NBVHJhbnNhY3Rpb24uaD4KICNpbXBvcnQgPG9iamMvcnVudGltZS5o
PgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vb3BlbndlYnJ0Yy9S
ZWFsdGltZU1lZGlhU291cmNlT3dyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vb3BlbndlYnJ0Yy9SZWFsdGltZU1lZGlhU291cmNlT3dyLmgJKHJl
dmlzaW9uIDE5MjkzMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL29w
ZW53ZWJydGMvUmVhbHRpbWVNZWRpYVNvdXJjZU93ci5oCSh3b3JraW5nIGNvcHkpCkBAIC01OSwx
MyArNTksMTMgQEAgUmVhbHRpbWVNZWRpYVNvdXJjZU93cihPd3JNZWRpYVNvdXJjZSogbQogICAg
IHZpcnR1YWwgflJlYWx0aW1lTWVkaWFTb3VyY2VPd3IoKSB7IH0KIAogICAgIHZpcnR1YWwgUmVm
UHRyPFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM+IGNhcGFiaWxpdGllcygpIHsgcmV0
dXJuIG1fY2FwYWJpbGl0aWVzOyB9Ci0gICAgdmlydHVhbCBjb25zdCBSZWFsdGltZU1lZGlhU291
cmNlU3RhdGVzJiBzdGF0ZXMoKSB7IHJldHVybiBtX2N1cnJlbnRTdGF0ZXM7IH0KKyAgICB2aXJ0
dWFsIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYgc2V0dGluZ3MoKSB7IHJldHVy
biBtX2N1cnJlbnRTZXR0aW5nczsgfQogCiAgICAgT3dyTWVkaWFTb3VyY2UqIG1lZGlhU291cmNl
KCkgY29uc3QgeyByZXR1cm4gbV9tZWRpYVNvdXJjZTsgfQogCiBwcml2YXRlOgogICAgIFJlZlB0
cjxSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzPiBtX2NhcGFiaWxpdGllczsKLSAgICBS
ZWFsdGltZU1lZGlhU291cmNlU3RhdGVzIG1fY3VycmVudFN0YXRlczsKKyAgICBSZWFsdGltZU1l
ZGlhU291cmNlU2V0dGluZ3MgbV9jdXJyZW50U2V0dGluZ3M7CiAgICAgT3dyTWVkaWFTb3VyY2Uq
IG1fbWVkaWFTb3VyY2U7CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2Nr
L01vY2tSZWFsdGltZUF1ZGlvU291cmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZUF1ZGlvU291cmNlLmNwcAkocmV2aXNpb24gMTky
OTMwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVBdWRpb1Nv
dXJjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDcgQEAKICNpbmNsdWRlICJMb2dn
aW5nLmgiCiAjaW5jbHVkZSAiTWVkaWFDb25zdHJhaW50cy5oIgogI2luY2x1ZGUgIk5vdEltcGxl
bWVudGVkLmgiCi0jaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlcy5oIgorI2luY2x1
ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlVVSUQuaCIKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTAsMTEgKzUwLDkgQEAgTW9ja1JlYWx0aW1lQXVkaW9T
b3VyY2U6Ok1vY2tSZWFsdGltZUF1ZAogewogfQogCi12b2lkIE1vY2tSZWFsdGltZUF1ZGlvU291
cmNlOjp1cGRhdGVTdGF0ZXMoKQordm9pZCBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZTo6dXBkYXRl
U2V0dGluZ3MoUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJiBzZXR0aW5ncykKIHsKLSAgICBS
ZWFsdGltZU1lZGlhU291cmNlU3RhdGVzKiBzdGF0ZXMgPSBjdXJyZW50U3RhdGVzKCk7Ci0gICAg
c3RhdGVzLT5zZXRTb3VyY2VUeXBlKFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXM6Ok1pY3JvcGhv
bmUpOwotICAgIHN0YXRlcy0+c2V0Vm9sdW1lKDUwKTsKKyAgICBzZXR0aW5ncy5zZXRWb2x1bWUo
NTApOwogfQogCiB2b2lkIE1vY2tSZWFsdGltZUF1ZGlvU291cmNlOjppbml0aWFsaXplQ2FwYWJp
bGl0aWVzKFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMmIGNhcGFiaWxpdGllcykKQEAg
LTYyLDYgKzYwLDExIEBAIHZvaWQgTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2U6OmluaXRpYWxpemUK
ICAgICBjYXBhYmlsaXRpZXMuc2V0Vm9sdW1lUmFuZ2UoUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFi
aWxpdHlSYW5nZSgwVUwsIDEwMFVMLCB0cnVlKSk7CiB9CiAKK3ZvaWQgTW9ja1JlYWx0aW1lQXVk
aW9Tb3VyY2U6OmluaXRpYWxpemVTdXBwb3J0ZWRDb25zdHJhaW50cyhSZWFsdGltZU1lZGlhU291
cmNlU3VwcG9ydGVkQ29uc3RyYWludHMmIHN1cHBvcnRlZENvbnN0cmFpbnRzKQoreworICAgIHN1
cHBvcnRlZENvbnN0cmFpbnRzLnNldFN1cHBvcnRzVm9sdW1lKHRydWUpOworfQorCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lQXVk
aW9Tb3VyY2UuaAkocmV2aXNpb24gMTkyOTMwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bW9jay9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSw4ICs1
MSw5IEBAIHByb3RlY3RlZDoKICAgICBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZSgpOwogCiBwcml2
YXRlOgotICAgIHZvaWQgdXBkYXRlU3RhdGVzKCkgb3ZlcnJpZGU7CisgICAgdm9pZCB1cGRhdGVT
ZXR0aW5ncyhSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmKSBvdmVycmlkZTsKICAgICB2b2lk
IGluaXRpYWxpemVDYXBhYmlsaXRpZXMoUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcyYp
IG92ZXJyaWRlOworICAgIHZvaWQgaW5pdGlhbGl6ZVN1cHBvcnRlZENvbnN0cmFpbnRzKFJlYWx0
aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cyYpIG92ZXJyaWRlOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9N
b2NrUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAJKHJldmlzaW9uIDE5Mjkz
MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3Vy
Y2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICszNiw3IEBACiAjaW5jbHVkZSAiTWVkaWFD
b25zdHJhaW50cy5oIgogI2luY2x1ZGUgIk1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVzdENs
aWVudC5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCi0jaW5jbHVkZSAiUmVhbHRpbWVN
ZWRpYVNvdXJjZVN0YXRlcy5oIgorI2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5n
cy5oIgogI2luY2x1ZGUgPG1hdGguaD4KICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KICNp
bmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KQEAgLTkyLDIyICs5MiwzOSBAQCBNb2NrUmVh
bHRpbWVNZWRpYVNvdXJjZTo6TW9ja1JlYWx0aW1lTWVkCiAKIFJlZlB0cjxSZWFsdGltZU1lZGlh
U291cmNlQ2FwYWJpbGl0aWVzPiBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6Y2FwYWJpbGl0aWVz
KCkKIHsKLSAgICBpZiAoIW1fY2FwYWJpbGl0aWVzKSB7Ci0gICAgICAgIG1fY2FwYWJpbGl0aWVz
ID0gUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllczo6Y3JlYXRlKCk7Ci0gICAgICAgIG1f
Y2FwYWJpbGl0aWVzLT5zZXRTb3VyY2VJZChpZCgpKTsKLSAgICAgICAgaW5pdGlhbGl6ZUNhcGFi
aWxpdGllcygqbV9jYXBhYmlsaXRpZXMuZ2V0KCkpOwotICAgIH0KKyAgICBpZiAobV9jYXBhYmls
aXRpZXMpCisgICAgICAgIHJldHVybiBtX2NhcGFiaWxpdGllczsKKworICAgIG1fY2FwYWJpbGl0
aWVzID0gUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllczo6Y3JlYXRlKCk7CisgICAgbV9j
YXBhYmlsaXRpZXMtPnNldFNvdXJjZUlkKGlkKCkpOworICAgIGluaXRpYWxpemVDYXBhYmlsaXRp
ZXMoKm1fY2FwYWJpbGl0aWVzLmdldCgpKTsKKwogICAgIHJldHVybiBtX2NhcGFiaWxpdGllczsK
IH0KIAotY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlcyYgTW9ja1JlYWx0aW1lTWVkaWFT
b3VyY2U6OnN0YXRlcygpCitjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmIE1vY2tS
ZWFsdGltZU1lZGlhU291cmNlOjpzZXR0aW5ncygpCit7CisgICAgaWYgKG1fY3VycmVudFNldHRp
bmdzLmRldmljZUlkKCkuaXNFbXB0eSgpKSB7CisgICAgICAgIG1fY3VycmVudFNldHRpbmdzLnNl
dFN1cHBvcnRlZENvbnN0cmFpdHMoc3VwcG9ydGVkQ29uc3RyYWludHMoKSk7CisgICAgICAgIG1f
Y3VycmVudFNldHRpbmdzLnNldERldmljZUlkKGlkKCkpOworICAgIH0KKworICAgIHVwZGF0ZVNl
dHRpbmdzKG1fY3VycmVudFNldHRpbmdzKTsKKyAgICByZXR1cm4gbV9jdXJyZW50U2V0dGluZ3M7
Cit9CisKK1JlYWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cyYgTW9ja1JlYWx0
aW1lTWVkaWFTb3VyY2U6OnN1cHBvcnRlZENvbnN0cmFpbnRzKCkKIHsKLSAgICBtX2N1cnJlbnRT
dGF0ZXMuc2V0U291cmNlSWQoaWQoKSk7Ci0gICAgdXBkYXRlU3RhdGVzKCk7CisgICAgaWYgKG1f
c3VwcG9ydGVkQ29uc3RyYWludHMuc3VwcG9ydHNEZXZpY2VJZCgpKQorICAgICAgICByZXR1cm4g
bV9zdXBwb3J0ZWRDb25zdHJhaW50czsKIAotICAgIHJldHVybiBtX2N1cnJlbnRTdGF0ZXM7Cisg
ICAgbV9zdXBwb3J0ZWRDb25zdHJhaW50cy5zZXRTdXBwb3J0c0RldmljZUlkKHRydWUpOworICAg
IGluaXRpYWxpemVTdXBwb3J0ZWRDb25zdHJhaW50cyhtX3N1cHBvcnRlZENvbnN0cmFpbnRzKTsK
KworICAgIHJldHVybiBtX3N1cHBvcnRlZENvbnN0cmFpbnRzOwogfQogCisKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNv
dXJjZS5oCShyZXZpc2lvbiAxOTI5MzApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2Nr
L01vY2tSZWFsdGltZU1lZGlhU291cmNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU3LDIzICs1Nywy
NSBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2UoY29u
c3QgU3RyaW5nJiBpZCwgVHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lKTsKIAotICAgIHZpcnR1YWwg
dm9pZCB1cGRhdGVTdGF0ZXMoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVNldHRpbmdz
KFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgaW5p
dGlhbGl6ZUNhcGFiaWxpdGllcyhSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzJikgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsaXplU3VwcG9ydGVkQ29uc3RyYWludHMoUmVhbHRp
bWVNZWRpYVNvdXJjZVN1cHBvcnRlZENvbnN0cmFpbnRzJikgPSAwOwogCiAgICAgdm9pZCBzdGFy
dFByb2R1Y2luZ0RhdGEoKSBvdmVycmlkZSB7IG1faXNQcm9kdWNpbmdEYXRhID0gdHJ1ZTsgfQog
ICAgIHZvaWQgc3RvcFByb2R1Y2luZ0RhdGEoKSBvdmVycmlkZSB7IG1faXNQcm9kdWNpbmdEYXRh
ID0gZmFsc2U7IH0KIAogICAgIFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVz
PiBjYXBhYmlsaXRpZXMoKSBvdmVycmlkZTsKLSAgICBjb25zdCBSZWFsdGltZU1lZGlhU291cmNl
U3RhdGVzJiBzdGF0ZXMoKSBvdmVycmlkZTsKKyAgICBjb25zdCBSZWFsdGltZU1lZGlhU291cmNl
U2V0dGluZ3MmIHNldHRpbmdzKCkgb3ZlcnJpZGU7CiAKLSAgICBSZWFsdGltZU1lZGlhU291cmNl
U3RhdGVzKiBjdXJyZW50U3RhdGVzKCkgeyByZXR1cm4gJm1fY3VycmVudFN0YXRlczsgfQotICAg
IE1lZGlhQ29uc3RyYWludHMqIGNvbnN0cmFpbnRzKCkgeyByZXR1cm4gbV9jb25zdHJhaW50cy5n
ZXQoKTsgfQorICAgIE1lZGlhQ29uc3RyYWludHMmIGNvbnN0cmFpbnRzKCkgeyByZXR1cm4gKm1f
Y29uc3RyYWludHMuZ2V0KCk7IH0KKyAgICBSZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29u
c3RyYWludHMmIHN1cHBvcnRlZENvbnN0cmFpbnRzKCk7CiAKIHByaXZhdGU6CiAKICAgICBib29s
IGlzUHJvZHVjaW5nRGF0YSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1faXNQcm9kdWNpbmdE
YXRhOyB9CiAKLSAgICBSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzIG1fY3VycmVudFN0YXRlczsK
KyAgICBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MgbV9jdXJyZW50U2V0dGluZ3M7CisgICAg
UmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBvcnRlZENvbnN0cmFpbnRzIG1fc3VwcG9ydGVkQ29uc3Ry
YWludHM7CiAgICAgUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM+IG1fY2Fw
YWJpbGl0aWVzOwogICAgIFJlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiBtX2NvbnN0cmFpbnRzOwog
ICAgIGJvb2wgbV9pc1Byb2R1Y2luZ0RhdGEgeyBmYWxzZSB9OwpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5j
cHAJKHJldmlzaW9uIDE5MjkzMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9j
a1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3IEBA
CiAjaW5jbHVkZSAiTWVkaWFDb25zdHJhaW50cy5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVk
LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1MYXllci5oIgotI2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFT
b3VyY2VTdGF0ZXMuaCIKKyNpbmNsdWRlICJSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MuaCIK
ICNpbmNsdWRlICJVVUlELmgiCiAjaW5jbHVkZSA8bWF0aC5oPgogI2luY2x1ZGUgPHd0Zi9DdXJy
ZW50VGltZS5oPgpAQCAtOTAsMzkgKzkwLDMyIEBAIGRvdWJsZSBNb2NrUmVhbHRpbWVWaWRlb1Nv
dXJjZTo6ZWxhcHNlZFQKICAgICByZXR1cm4gbV9lbGFwc2VkVGltZSArIChtb25vdG9uaWNhbGx5
SW5jcmVhc2luZ1RpbWUoKSAtIG1fc3RhcnRUaW1lKTsKIH0KIAotdm9pZCBNb2NrUmVhbHRpbWVW
aWRlb1NvdXJjZTo6dXBkYXRlU3RhdGVzKCkKK3ZvaWQgTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6
OnVwZGF0ZVNldHRpbmdzKFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYgc2V0dGluZ3MpCiB7
Ci0gICAgUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlcyogc3RhdGVzID0gY3VycmVudFN0YXRlcygp
OwotCi0gICAgc3RhdGVzLT5zZXRTb3VyY2VUeXBlKFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXM6
OkNhbWVyYSk7Ci0gICAgc3RhdGVzLT5zZXRGYWNpbmdNb2RlKFJlYWx0aW1lTWVkaWFTb3VyY2VT
dGF0ZXM6OlVzZXIpOwotICAgIHN0YXRlcy0+c2V0RnJhbWVSYXRlKG1fZnJhbWVSYXRlKTsKLSAg
ICBzdGF0ZXMtPnNldFdpZHRoKG1fc2l6ZS53aWR0aCgpKTsKLSAgICBzdGF0ZXMtPnNldEhlaWdo
dChtX3NpemUuaGVpZ2h0KCkpOwotICAgIHN0YXRlcy0+c2V0QXNwZWN0UmF0aW8oc3RhdGljX2Nh
c3Q8ZmxvYXQ+KG1fc2l6ZS53aWR0aCgpKSAvIG1fc2l6ZS5oZWlnaHQoKSk7CisgICAgc2V0dGlu
Z3Muc2V0RmFjaW5nTW9kZShSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OlVzZXIpOworICAg
IHNldHRpbmdzLnNldEZyYW1lUmF0ZShtX2ZyYW1lUmF0ZSk7CisgICAgc2V0dGluZ3Muc2V0V2lk
dGgobV9zaXplLndpZHRoKCkpOworICAgIHNldHRpbmdzLnNldEhlaWdodChtX3NpemUuaGVpZ2h0
KCkpOworICAgIHNldHRpbmdzLnNldEFzcGVjdFJhdGlvKHN0YXRpY19jYXN0PGZsb2F0PihtX3Np
emUud2lkdGgoKSkgLyBtX3NpemUuaGVpZ2h0KCkpOwogfQogCiB2b2lkIE1vY2tSZWFsdGltZVZp
ZGVvU291cmNlOjppbml0aWFsaXplQ2FwYWJpbGl0aWVzKFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBh
YmlsaXRpZXMmIGNhcGFiaWxpdGllcykKIHsKLSAgICBjYXBhYmlsaXRpZXMuYWRkU291cmNlVHlw
ZShSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzOjpDYW1lcmEpOwotICAgIGNhcGFiaWxpdGllcy5h
ZGRGYWNpbmdNb2RlKFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXM6OlVzZXIpOwotICAgIGNhcGFi
aWxpdGllcy5hZGRGYWNpbmdNb2RlKFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXM6OkVudmlyb25t
ZW50KTsKKyAgICBjYXBhYmlsaXRpZXMuYWRkRmFjaW5nTW9kZShSZWFsdGltZU1lZGlhU291cmNl
U2V0dGluZ3M6OlVzZXIpOworICAgIGNhcGFiaWxpdGllcy5hZGRGYWNpbmdNb2RlKFJlYWx0aW1l
TWVkaWFTb3VyY2VTZXR0aW5nczo6RW52aXJvbm1lbnQpOwogICAgIGNhcGFiaWxpdGllcy5zZXRX
aWR0aFJhbmdlKFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXR5UmFuZ2UoMzIwVUwsIDE5MjBV
TCwgdHJ1ZSkpOwogICAgIGNhcGFiaWxpdGllcy5zZXRIZWlnaHRSYW5nZShSZWFsdGltZU1lZGlh
U291cmNlQ2FwYWJpbGl0eVJhbmdlKDI0MFVMLCAxMDgwVUwsIHRydWUpKTsKICAgICBjYXBhYmls
aXRpZXMuc2V0RnJhbWVSYXRlUmFuZ2UoUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdHlSYW5n
ZSgxNS4wZiwgNjAuMGYsIHRydWUpKTsKICAgICBjYXBhYmlsaXRpZXMuc2V0QXNwZWN0UmF0aW9S
YW5nZShSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0eVJhbmdlKDQgLyAzLjBmLCAxNiAvIDku
MGYsIHRydWUpKTsKIH0KIAotdm9pZCBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6c2V0RmFjaW5n
TW9kZShSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzOjpWaWRlb0ZhY2luZ01vZGUgbW9kZSkKK3Zv
aWQgTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OmluaXRpYWxpemVTdXBwb3J0ZWRDb25zdHJhaW50
cyhSZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMmIHN1cHBvcnRlZENvbnN0
cmFpbnRzKQogewotICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXMqIHN0YXRlcyA9IGN1cnJl
bnRTdGF0ZXMoKTsKLQotICAgIGlmIChzdGF0ZXMtPmZhY2luZ01vZGUoKSA9PSBtb2RlKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBzdGF0ZXMtPnNldEZhY2luZ01vZGUobW9kZSk7Ci0KLSAgICBz
dGF0ZXNEaWRDaGFuZ2VkKCk7CisgICAgc3VwcG9ydGVkQ29uc3RyYWludHMuc2V0U3VwcG9ydHNX
aWR0aCh0cnVlKTsKKyAgICBzdXBwb3J0ZWRDb25zdHJhaW50cy5zZXRTdXBwb3J0c0hlaWdodCh0
cnVlKTsKKyAgICBzdXBwb3J0ZWRDb25zdHJhaW50cy5zZXRTdXBwb3J0c0FzcGVjdFJhdGlvKHRy
dWUpOworICAgIHN1cHBvcnRlZENvbnN0cmFpbnRzLnNldFN1cHBvcnRzRnJhbWVSYXRlKHRydWUp
OworICAgIHN1cHBvcnRlZENvbnN0cmFpbnRzLnNldFN1cHBvcnRzRmFjaW5nTW9kZSh0cnVlKTsK
IH0KIAogdm9pZCBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6c2V0RnJhbWVSYXRlKGZsb2F0IHJh
dGUpCkBAIC0xMzQsNyArMTI3LDcgQEAgdm9pZCBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6c2V0
RnJhbWVSYQogICAgIGlmIChtX3RpbWVyLmlzQWN0aXZlKCkpCiAgICAgICAgIG1fdGltZXIuc3Rh
cnRSZXBlYXRpbmcoc3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kcyhscm91bmQoMTAwMCAvIG1fZnJh
bWVSYXRlKSkpOwogCi0gICAgc3RhdGVzRGlkQ2hhbmdlZCgpOworICAgIHNldHRpbmdzRGlkQ2hh
bmdlZCgpOwogfQogCiB2b2lkIE1vY2tSZWFsdGltZVZpZGVvU291cmNlOjpzZXRTaXplKGNvbnN0
IEludFNpemUmIHNpemUpCkBAIC0xNjksNyArMTYyLDcgQEAgdm9pZCBNb2NrUmVhbHRpbWVWaWRl
b1NvdXJjZTo6c2V0U2l6ZShjbwogICAgIG1faW1hZ2VCdWZmZXIgPSBudWxscHRyOwogICAgIHVw
ZGF0ZVBsYXRmb3JtTGF5ZXIoKTsKIAotICAgIHN0YXRlc0RpZENoYW5nZWQoKTsKKyAgICBzZXR0
aW5nc0RpZENoYW5nZWQoKTsKIH0KIAogdm9pZCBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6ZHJh
d0FuaW1hdGlvbihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCkBAIC0yODQsMjAgKzI3NywyMCBA
QCB2b2lkIE1vY2tSZWFsdGltZVZpZGVvU291cmNlOjpkcmF3VGV4dChHCiAgICAgY29udGV4dC5k
cmF3VGV4dChtX3N0YXRzRm9udCwgVGV4dFJ1bigoU3RyaW5nVmlldyhzdHJpbmcpKSksIHN0YXRz
TG9jYXRpb24sIDAsIC0xKTsKIAogICAgIGNvbnN0IGNoYXIqIGNhbWVyYTsKLSAgICBzd2l0Y2gg
KHN0YXRlcygpLmZhY2luZ01vZGUoKSkgewotICAgIGNhc2UgUmVhbHRpbWVNZWRpYVNvdXJjZVN0
YXRlczo6VXNlcjoKKyAgICBzd2l0Y2ggKHNldHRpbmdzKCkuZmFjaW5nTW9kZSgpKSB7CisgICAg
Y2FzZSBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OlVzZXI6CiAgICAgICAgIGNhbWVyYSA9
ICJVc2VyIGZhY2luZyI7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgUmVhbHRpbWVNZWRpYVNv
dXJjZVN0YXRlczo6RW52aXJvbm1lbnQ6CisgICAgY2FzZSBSZWFsdGltZU1lZGlhU291cmNlU2V0
dGluZ3M6OkVudmlyb25tZW50OgogICAgICAgICBjYW1lcmEgPSAiRW52aXJvbm1lbnQgZmFjaW5n
IjsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzOjpM
ZWZ0OgorICAgIGNhc2UgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpMZWZ0OgogICAgICAg
ICBjYW1lcmEgPSAiTGVmdCBmYWNpbmciOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFJlYWx0
aW1lTWVkaWFTb3VyY2VTdGF0ZXM6OlJpZ2h0OgorICAgIGNhc2UgUmVhbHRpbWVNZWRpYVNvdXJj
ZVNldHRpbmdzOjpSaWdodDoKICAgICAgICAgY2FtZXJhID0gIlJpZ2h0IGZhY2luZyI7CiAgICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlczo6VW5rbm93bjoK
KyAgICBjYXNlIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6VW5rbm93bjoKICAgICAgICAg
Y2FtZXJhID0gIlVua25vd24iOwogICAgICAgICBicmVhazsKICAgICB9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJj
ZS5oCShyZXZpc2lvbiAxOTI5MzApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01v
Y2tSZWFsdGltZVZpZGVvU291cmNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTUzLDcgKzUzLDYgQEAg
cHVibGljOgogICAgIHZvaWQgc2V0U2l6ZShjb25zdCBJbnRTaXplJik7CiAgICAgY29uc3QgSW50
U2l6ZSYgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQogCi0gICAgdm9pZCBzZXRGYWNp
bmdNb2RlKFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXM6OlZpZGVvRmFjaW5nTW9kZSk7CiAgICAg
dm9pZCBzZXRGcmFtZVJhdGUoZmxvYXQpOwogCiBwcm90ZWN0ZWQ6CkBAIC02Myw4ICs2Miw5IEBA
IHByb3RlY3RlZDoKICAgICBJbWFnZUJ1ZmZlciogaW1hZ2VCdWZmZXIoKSBjb25zdDsKIAogcHJp
dmF0ZToKLSAgICB2b2lkIHVwZGF0ZVN0YXRlcygpIG92ZXJyaWRlOworICAgIHZvaWQgdXBkYXRl
U2V0dGluZ3MoUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJikgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBpbml0aWFsaXplQ2FwYWJpbGl0aWVzKFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMm
KSBvdmVycmlkZTsKKyAgICB2b2lkIGluaXRpYWxpemVTdXBwb3J0ZWRDb25zdHJhaW50cyhSZWFs
dGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMmKSBvdmVycmlkZTsKIAogICAgIHZv
aWQgc3RhcnRQcm9kdWNpbmdEYXRhKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdG9wUHJvZHVjaW5n
RGF0YSgpIG92ZXJyaWRlOwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTkyOTMwKQorKysgTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTUtMTItMDIg
IEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgW01lZGlh
U3RyZWFtXSBJbXBsZW1lbnQgTWVkaWFTdHJlYW1UcmFjay5nZXRTZXR0aW5ncygpCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE3MjcKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvbWVkaWFzdHJl
YW0vTWVkaWFTdHJlYW0tdmlkZW8tZWxlbWVudC1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFz
dC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS12aWRlby1lbGVtZW50LXRyYWNrLXN0b3AtZXhwZWN0
ZWQudHh0OgorICAgICAgICAqIGZhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0tdmlkZW8tZWxl
bWVudC10cmFjay1zdG9wLmh0bWw6CisgICAgICAgICogZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0
cmVhbS12aWRlby1lbGVtZW50Lmh0bWw6CisgICAgICAgICogZmFzdC9tZWRpYXN0cmVhbS9NZWRp
YVN0cmVhbVRyYWNrLWdldFNldHRpbmdzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLWdldFNldHRpbmdzLmh0bWw6IEFkZGVk
LgorCiAyMDE1LTEyLTAxICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+
CiAKICAgICAgICAgW1NWRyAtPiBPVEYgQ29udmVydGVyXSBGb3JjZSBVbml0c1BlckVtIHRvIDEw
MDAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0tdmlkZW8t
ZWxlbWVudC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbS12aWRlby1lbGVtZW50LWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
MTkyOTMwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS12aWRl
by1lbGVtZW50LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMjEsOCArMjEsOCBAQCBF
dmVudCAnY2FucGxheXRocm91Z2gnCiB2aWRlby5wYXVzZSgpCiAKICoqKiogY2hlY2sgdmlkZW8g
ZWxlbWVudCAqKioqCi1QQVNTIHZpZGVvLnZpZGVvV2lkdGggaXMgbWVkaWFTdHJlYW0uZ2V0Vmlk
ZW9UcmFja3MoKVswXS5zdGF0ZXMoKS53aWR0aAotUEFTUyB2aWRlby52aWRlb0hlaWdodCBpcyBt
ZWRpYVN0cmVhbS5nZXRWaWRlb1RyYWNrcygpWzBdLnN0YXRlcygpLmhlaWdodAorUEFTUyB2aWRl
by52aWRlb1dpZHRoIGlzIG1lZGlhU3RyZWFtLmdldFZpZGVvVHJhY2tzKClbMF0uZ2V0U2V0dGlu
Z3MoKS53aWR0aAorUEFTUyB2aWRlby52aWRlb0hlaWdodCBpcyBtZWRpYVN0cmVhbS5nZXRWaWRl
b1RyYWNrcygpWzBdLmdldFNldHRpbmdzKCkuaGVpZ2h0CiBQQVNTIHZpZGVvLnNyYy5pbmRleE9m
KCJibG9iOiIpIGlzIDAKIFBBU1MgdmlkZW8uc3JjT2JqZWN0IGlzIG1lZGlhU3RyZWFtCiAKSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0tdmlkZW8tZWxlbWVu
dC10cmFjay1zdG9wLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLXZpZGVvLWVsZW1lbnQtdHJhY2stc3RvcC1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDE5MjkzMCkKKysrIExheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0v
TWVkaWFTdHJlYW0tdmlkZW8tZWxlbWVudC10cmFjay1zdG9wLWV4cGVjdGVkLnR4dAkod29ya2lu
ZyBjb3B5KQpAQCAtMjIsOCArMjIsOCBAQCB2aWRlby5wYXVzZSgpCiAKICoqKiogY2hlY2sgc3Rh
dGVzIHdpdGggbGl2ZSB2aWRlbyBzdHJlYW0gdHJhY2sgKioqKgogUEFTUyB2aWRlby5lbmRlZCBp
cyBmYWxzZQotUEFTUyB2aWRlby52aWRlb1dpZHRoIGlzIG1lZGlhU3RyZWFtLmdldFZpZGVvVHJh
Y2tzKClbMF0uc3RhdGVzKCkud2lkdGgKLVBBU1MgdmlkZW8udmlkZW9IZWlnaHQgaXMgbWVkaWFT
dHJlYW0uZ2V0VmlkZW9UcmFja3MoKVswXS5zdGF0ZXMoKS5oZWlnaHQKK1BBU1MgdmlkZW8udmlk
ZW9XaWR0aCBpcyBtZWRpYVN0cmVhbS5nZXRWaWRlb1RyYWNrcygpWzBdLmdldFNldHRpbmdzKCku
d2lkdGgKK1BBU1MgdmlkZW8udmlkZW9IZWlnaHQgaXMgbWVkaWFTdHJlYW0uZ2V0VmlkZW9UcmFj
a3MoKVswXS5nZXRTZXR0aW5ncygpLmhlaWdodAogUEFTUyB2aWRlby5zcmMuaW5kZXhPZigiYmxv
YjoiKSBpcyAwCiBQQVNTIHZpZGVvLnNyY09iamVjdCBpcyBtZWRpYVN0cmVhbQogCkBAIC00MSw4
ICs0MSw4IEBAIG1lZGlhU3RyZWFtLmdldFZpZGVvVHJhY2tzKClbMF0uZW5hYmxlZCAKIAogKioq
KiByZS1jaGVjayBzdGF0ZXMgbm93IHRoYXQgdGhlIHZpZGVvIHN0cmVhbSBoYXMgYmVlbiBkaXNh
YmxlZCAqKioqCiBQQVNTIG1lZGlhU3RyZWFtLmdldFZpZGVvVHJhY2tzKClbMF0uZW5hYmxlZCBp
cyBmYWxzZQotUEFTUyB2aWRlby52aWRlb1dpZHRoIGlzIG1lZGlhU3RyZWFtLmdldFZpZGVvVHJh
Y2tzKClbMF0uc3RhdGVzKCkud2lkdGgKLVBBU1MgdmlkZW8udmlkZW9IZWlnaHQgaXMgbWVkaWFT
dHJlYW0uZ2V0VmlkZW9UcmFja3MoKVswXS5zdGF0ZXMoKS5oZWlnaHQKK1BBU1MgdmlkZW8udmlk
ZW9XaWR0aCBpcyBtZWRpYVN0cmVhbS5nZXRWaWRlb1RyYWNrcygpWzBdLmdldFNldHRpbmdzKCku
d2lkdGgKK1BBU1MgdmlkZW8udmlkZW9IZWlnaHQgaXMgbWVkaWFTdHJlYW0uZ2V0VmlkZW9UcmFj
a3MoKVswXS5nZXRTZXR0aW5ncygpLmhlaWdodAogCiAqKioqIHN0b3AgTWVkaWFTdHJlYW0gdHJh
Y2tzICoqKioKIG1lZGlhU3RyZWFtLmdldFZpZGVvVHJhY2tzKClbMF0uZW5hYmxlZCA9IHRydWUK
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0tdmlkZW8tZWxl
bWVudC10cmFjay1zdG9wLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbS12aWRlby1lbGVtZW50LXRyYWNrLXN0b3AuaHRtbAkocmV2aXNp
b24gMTkyOTMwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS12
aWRlby1lbGVtZW50LXRyYWNrLXN0b3AuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNDQsOCArNDQs
OCBAQAogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIGRlYnVnKCI8YnI+KioqKiByZS1j
aGVjayBzdGF0ZXMgbm93IHRoYXQgdGhlIHZpZGVvIHN0cmVhbSBoYXMgYmVlbiBkaXNhYmxlZCAq
KioqIik7CiAgICAgICAgICAgICAgICAgc2hvdWxkQmUoJ21lZGlhU3RyZWFtLmdldFZpZGVvVHJh
Y2tzKClbMF0uZW5hYmxlZCcsICdmYWxzZScpOwotICAgICAgICAgICAgICAgIHNob3VsZEJlKCd2
aWRlby52aWRlb1dpZHRoJywgJ21lZGlhU3RyZWFtLmdldFZpZGVvVHJhY2tzKClbMF0uc3RhdGVz
KCkud2lkdGgnKTsKLSAgICAgICAgICAgICAgICBzaG91bGRCZSgndmlkZW8udmlkZW9IZWlnaHQn
LCAnbWVkaWFTdHJlYW0uZ2V0VmlkZW9UcmFja3MoKVswXS5zdGF0ZXMoKS5oZWlnaHQnKTsKKyAg
ICAgICAgICAgICAgICBzaG91bGRCZSgndmlkZW8udmlkZW9XaWR0aCcsICdtZWRpYVN0cmVhbS5n
ZXRWaWRlb1RyYWNrcygpWzBdLmdldFNldHRpbmdzKCkud2lkdGgnKTsKKyAgICAgICAgICAgICAg
ICBzaG91bGRCZSgndmlkZW8udmlkZW9IZWlnaHQnLCAnbWVkaWFTdHJlYW0uZ2V0VmlkZW9UcmFj
a3MoKVswXS5nZXRTZXR0aW5ncygpLmhlaWdodCcpOwogCiAgICAgICAgICAgICAgICAgZGVidWco
Ijxicj4qKioqIHN0b3AgTWVkaWFTdHJlYW0gdHJhY2tzICoqKioiKTsKICAgICAgICAgICAgICAg
ICBldmFsQW5kTG9nKCdtZWRpYVN0cmVhbS5nZXRWaWRlb1RyYWNrcygpWzBdLmVuYWJsZWQgPSB0
cnVlJyk7CkBAIC02MCw4ICs2MCw4IEBACiAKICAgICAgICAgICAgICAgICBkZWJ1ZygiPGJyPioq
KiogY2hlY2sgc3RhdGVzIHdpdGggbGl2ZSB2aWRlbyBzdHJlYW0gdHJhY2sgKioqKiIpOwogICAg
ICAgICAgICAgICAgIHNob3VsZEJlKCd2aWRlby5lbmRlZCcsICdmYWxzZScpOwotICAgICAgICAg
ICAgICAgIHNob3VsZEJlKCd2aWRlby52aWRlb1dpZHRoJywgJ21lZGlhU3RyZWFtLmdldFZpZGVv
VHJhY2tzKClbMF0uc3RhdGVzKCkud2lkdGgnKTsKLSAgICAgICAgICAgICAgICBzaG91bGRCZSgn
dmlkZW8udmlkZW9IZWlnaHQnLCAnbWVkaWFTdHJlYW0uZ2V0VmlkZW9UcmFja3MoKVswXS5zdGF0
ZXMoKS5oZWlnaHQnKTsKKyAgICAgICAgICAgICAgICBzaG91bGRCZSgndmlkZW8udmlkZW9XaWR0
aCcsICdtZWRpYVN0cmVhbS5nZXRWaWRlb1RyYWNrcygpWzBdLmdldFNldHRpbmdzKCkud2lkdGgn
KTsKKyAgICAgICAgICAgICAgICBzaG91bGRCZSgndmlkZW8udmlkZW9IZWlnaHQnLCAnbWVkaWFT
dHJlYW0uZ2V0VmlkZW9UcmFja3MoKVswXS5nZXRTZXR0aW5ncygpLmhlaWdodCcpOwogICAgICAg
ICAgICAgICAgIHNob3VsZEJlKCd2aWRlby5zcmMuaW5kZXhPZigiYmxvYjoiKScsICcwJyk7CiAg
ICAgICAgICAgICAgICAgc2hvdWxkQmUoJ3ZpZGVvLnNyY09iamVjdCcsICdtZWRpYVN0cmVhbScp
OwogICAgICAgICAgICAgICAgIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9N
ZWRpYVN0cmVhbS12aWRlby1lbGVtZW50Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS12aWRlby1lbGVtZW50Lmh0bWwJKHJldmlzaW9u
IDE5MjkzMCkKKysrIExheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0tdmlk
ZW8tZWxlbWVudC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw5ICszMCw2IEBACiAgICAgICAg
ICAgICBmdW5jdGlvbiBlbnVtZXJhdGVQcm9wZXJ0aWVzKG9iamVjdCwgd29ya0Z1bmMpCiAgICAg
ICAgICAgICB7CiAgICAgICAgICAgICAgICAgZm9yICh2YXIgcHJvcGVydHkgaW4gb2JqZWN0KSB7
Ci0gICAgICAgICAgICAgICAgICAgIC8vIFdoZW4gaHR0cHM6Ly93ZWJraXQub3JnL2IvMTI5Mzc1
IGlzIGZpeGVkLCB3ZSBoYXZlIHRvIHJlbW92ZQotICAgICAgICAgICAgICAgICAgICAvLyBzdGF0
ZXMuaGFzT3duUHJvcGVydHkocHJvcGVydHkpLCBiZWNhdXNlIGFsbCB0aGUgYXR0cmlidXRlcwot
ICAgICAgICAgICAgICAgICAgICAvLyB3aWxsIGJlIGluIHRoZSBwcm90b3R5cGUgY2hhaW4uCiAg
ICAgICAgICAgICAgICAgICAgIGlmICghb2JqZWN0Lmhhc093blByb3BlcnR5KHByb3BlcnR5KSAm
JiAhb2JqZWN0Ll9fcHJvdG9fXy5oYXNPd25Qcm9wZXJ0eShwcm9wZXJ0eSkpCiAgICAgICAgICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICAgaWYgKG9iamVjdFtw
cm9wZXJ0eV0gPT09IHVuZGVmaW5lZCkKQEAgLTU5LDggKzU2LDggQEAKICAgICAgICAgICAgICAg
ICBldmFsQW5kTG9nKCJ2aWRlby5wYXVzZSgpIik7CiAKICAgICAgICAgICAgICAgICBkZWJ1Zygi
PGJyPioqKiogY2hlY2sgdmlkZW8gZWxlbWVudCAqKioqIik7Ci0gICAgICAgICAgICAgICAgc2hv
dWxkQmUoJ3ZpZGVvLnZpZGVvV2lkdGgnLCAnbWVkaWFTdHJlYW0uZ2V0VmlkZW9UcmFja3MoKVsw
XS5zdGF0ZXMoKS53aWR0aCcpOwotICAgICAgICAgICAgICAgIHNob3VsZEJlKCd2aWRlby52aWRl
b0hlaWdodCcsICdtZWRpYVN0cmVhbS5nZXRWaWRlb1RyYWNrcygpWzBdLnN0YXRlcygpLmhlaWdo
dCcpOworICAgICAgICAgICAgICAgIHNob3VsZEJlKCd2aWRlby52aWRlb1dpZHRoJywgJ21lZGlh
U3RyZWFtLmdldFZpZGVvVHJhY2tzKClbMF0uZ2V0U2V0dGluZ3MoKS53aWR0aCcpOworICAgICAg
ICAgICAgICAgIHNob3VsZEJlKCd2aWRlby52aWRlb0hlaWdodCcsICdtZWRpYVN0cmVhbS5nZXRW
aWRlb1RyYWNrcygpWzBdLmdldFNldHRpbmdzKCkuaGVpZ2h0Jyk7CiAgICAgICAgICAgICAgICAg
c2hvdWxkQmUoJ3ZpZGVvLnNyYy5pbmRleE9mKCJibG9iOiIpJywgJzAnKTsKICAgICAgICAgICAg
ICAgICBzaG91bGRCZSgndmlkZW8uc3JjT2JqZWN0JywgJ21lZGlhU3RyZWFtJyk7CiAgICAgICAg
ICAgICAgICAgCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFt
VHJhY2stZ2V0U2V0dGluZ3MtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay1nZXRTZXR0aW5ncy1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3Ry
ZWFtVHJhY2stZ2V0U2V0dGluZ3MtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsMjEgQEAKK1Rlc3RzIE1lZGlhU3RyZWFtVHJhY2suZ2V0U2V0dGluZ3MuCisKK09uIHN1Y2Nl
c3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5
ICJURVNUIENPTVBMRVRFIi4KKworCit2aWRlbyB0cmFjazoKKyAgc2V0dGluZ3Mud2lkdGggPSA2
NDAKKyAgc2V0dGluZ3MuaGVpZ2h0ID0gNDgwCisgIHNldHRpbmdzLmFzcGVjdFJhdGlvID0gMS4z
MworICBzZXR0aW5ncy5mcmFtZVJhdGUgPSAzMAorICBzZXR0aW5ncy5mYWNpbmdNb2RlID0gdXNl
cgorICBzZXR0aW5ncy5kZXZpY2VJZCA9IDxVVUlEPgorCithdWRpbyB0cmFjazoKKyAgc2V0dGlu
Z3Mudm9sdW1lID0gNTAKKyAgc2V0dGluZ3MuZGV2aWNlSWQgPSA8VVVJRD4KKworUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay1nZXRTZXR0aW5ncy5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFj
ay1nZXRTZXR0aW5ncy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLWdldFNldHRpbmdzLmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSw1MSBAQAorPCFET0NUWVBFIEhUTUw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAg
ICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuL3Jlc291cmNlcy9nZXRVc2VyTWVkaWEtaGVscGVy
LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgICAgIHZhciBtZWRpYVN0
cmVhbTsKKworICAgICAgICAgICAgZnVuY3Rpb24gbGltaXRQcmVjaXNpb24odmFsdWUsIHByZWNp
c2lvbikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09
PSAibnVtYmVyIiAmJiB2YWx1ZSAlIDEgIT0gMCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IHZhbHVlLnRvRml4ZWQocHJlY2lzaW9uKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWU7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIGdvdFN0cmVhbShzdHJlYW0p
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgbWVkaWFTdHJlYW0gPSBzdHJlYW07Cisg
ICAgICAgICAgICAgICAgbWVkaWFTdHJlYW0uZ2V0VHJhY2tzKCkuZm9yRWFjaChmdW5jdGlvbih0
cmFjaykgeworICAgICAgICAgICAgICAgICAgICBkZWJ1ZyhgJHt0cmFjay5raW5kfSB0cmFjazpg
KTsKKyAgICAgICAgICAgICAgICAgICAgc2V0dGluZ3MgPSB0cmFjay5nZXRTZXR0aW5ncygpOwor
ICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBwcm9wZXJ0eSBpbiBzZXR0aW5ncykgeworICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKHNldHRpbmdzLmhhc093blByb3BlcnR5KHByb3BlcnR5
KSB8fCBzZXR0aW5ncy5fX3Byb3RvX18uaGFzT3duUHJvcGVydHkocHJvcGVydHkpKQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChwcm9wZXJ0eSA9PSAiZGV2aWNlSWQiKQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9ICImbHQ7VVVJRD4iOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dmFsdWUgPSBsaW1pdFByZWNpc2lvbihzZXR0aW5nc1twcm9wZXJ0eV0sIDIpOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGRlYnVnKGAgIHNldHRpbmdzLiR7cHJvcGVydHl9ID0gJHt2YWx1
ZX1gKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBkZWJ1Zygi
Iik7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIHN0YXJ0KCkKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbigiVGVzdHMgTWVkaWFTdHJlYW1UcmFj
ay5nZXRTZXR0aW5ncy4iKTsKKyAgICAgICAgICAgICAgICBnZXRVc2VyTWVkaWEoImFsbG93Iiwg
e2F1ZGlvOnRydWUsIHZpZGVvOnRydWV9LCBnb3RTdHJlYW0pOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisgICAgICAgICAgICB3aW5k
b3cuc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKyAgICAgICAgPC9zY3JpcHQ+CisKKyAgICA8
L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJzdGFydCgpIj4KKyAgICAgICAgPHAgaWQ9ImRlc2Ny
aXB0aW9uIj48L3A+CisgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8
c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cisg
ICAgPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>266449</attachid>
            <date>2015-12-02 10:01:05 -0800</date>
            <delta_ts>2015-12-02 10:19:44 -0800</delta_ts>
            <desc>Updated patch for the bots.</desc>
            <filename>track_capabilities_patch_8.txt</filename>
            <type>text/plain</type>
            <size>137060</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5Mjk0MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzOSBAQAorMjAxNS0xMi0wMiAgRXJpYyBD
YXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBbTWVkaWFTdHJlYW1d
IEltcGxlbWVudCBNZWRpYVN0cmVhbVRyYWNrLmdldFNldHRpbmdzKCkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTcyNworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1lZGlhU3RyZWFtVHJhY2suZ2V0U3Rh
dGVzIGhhcyBiZWVuIHJlcGxhY2VkIGJ5IE1lZGlhU3RyZWFtVHJhY2suZ2V0U2V0dGluZ3MuIAor
CisgICAgICAgIFRlc3Q6IGZhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay1nZXRTZXR0
aW5ncy5odG1sCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDogTWVkaWFTb3VyY2VTdGF0ZXMu
KiAtPiBNZWRpYVNvdXJjZVNldHRpbmdzLiouCisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFr
ZTogTm8gbW9yZSBNZWRpYVNvdXJjZVN0YXRlcy5pZGwuCisgICAgICAgICogTW9kdWxlcy9tZWRp
YXN0cmVhbS9DYXBhYmlsaXR5UmFuZ2UuY3BwOiBNZWRpYVNvdXJjZVN0YXRlcy4qIC0+IE1lZGlh
U291cmNlU2V0dGluZ3MuKi4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU291
cmNlU2V0dGluZ3MuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL01lZGlhU291cmNlU3RhdGVzLmNwcC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291
cmNlU2V0dGluZ3M6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZVNldHRp
bmdzOjpNZWRpYVNvdXJjZVNldHRpbmdzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291cmNl
U2V0dGluZ3M6OmZhY2luZ01vZGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTb3VyY2VTdGF0
ZXM6OmNyZWF0ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZVN0YXRl
czo6TWVkaWFTb3VyY2VTdGF0ZXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFT
b3VyY2VTdGF0ZXM6OnNvdXJjZVR5cGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFTb3VyY2VTdGF0ZXM6OmZhY2luZ01vZGUpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMv
bWVkaWFzdHJlYW0vTWVkaWFTb3VyY2VTZXR0aW5ncy5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU291cmNlU3RhdGVzLmguCisKKyAgICAgICAg
TWVkaWFTb3VyY2VTdGF0ZXMuKiByZW5hbWVkIHRvIE1lZGlhU291cmNlU2V0dGluZ3MuKiBhbmQg
dXBkYXRlZCB0byBuZXcgQVBJLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFT
b3VyY2VTdGF0ZXMuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0v
TWVkaWFTb3VyY2VTdGF0ZXMuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3Ry
ZWFtL01lZGlhU291cmNlU3RhdGVzLmlkbDogUmVtb3ZlZC4KKworICAgICAgICAqIE1vZHVsZXMv
bWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFTdHJlYW1DYXBhYmlsaXRpZXM6OnNvdXJjZVR5cGUpOiBSZXR1cm4gYW4gZW1wdHkg
dmVjdG9yIGZvciBub3csIHdpbGwgYmUgZml4ZWQKKyAgICAgICAgICBieSB0aGUgY2hhbmdlcyBm
b3IgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTcyOC4KKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzOjpzb3VyY2VJZCk6IFJlYWx0aW1l
TWVkaWFTb3VyY2VTdGF0ZXMgLT4gTWVkaWFTb3VyY2VTZXR0aW5ncy4KKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzOjpmYWNpbmdNb2RlKTogRGl0dG8uCisKKyAgICAg
ICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFTdHJlYW1UcmFjazo6Z2V0U2V0dGluZ3MpOiBOZXcuCisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjpnZXRDYXBhYmlsaXRpZXMpOiBEb24ndCBtb2RpZnkg
c3RhdGVzLCBqdXN0IHBhc3MgdGhyb3VnaCB3aGF0ZXZlcgorICAgICAgICAgIHByaXZhdGUgdHJh
Y2sgcmV0dXJucy4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtVHJhY2s6OnRyYWNrU2V0
dGluZ3NDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtVHJhY2s6OnN0YXRl
cyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjp0cmFja1N0
YXRlc0NoYW5nZWQpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW1UcmFjay5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJl
YW1UcmFjay5pZGw6IE1lZGlhU291cmNlU3RhdGVzIC0+IE1lZGlhU291cmNlU2V0dGluZ3MuCisK
KyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9Tb3VyY2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1BdWRpb1NvdXJjZTo6c2V0dGluZ3MpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1BdWRpb1NvdXJjZTo6c3RhdGVzKTogRGVsZXRlZC4K
KyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9Tb3VyY2UuaDogTWVk
aWFTb3VyY2VTdGF0ZXMgLT4gTWVkaWFTb3VyY2VTZXR0aW5ncy4KKworICAgICAgICAqIFdlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogTWVkaWFTb3VyY2VTdGF0ZXMuKiAtPiBNZWRp
YVNvdXJjZVNldHRpbmdzLiouCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU01lZGlhU291cmNl
U3RhdGVzQ3VzdG9tLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU01lZGlh
U3RyZWFtVHJhY2tDdXN0b20uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkpTTWVkaWFT
dHJlYW1UcmFjazo6Z2V0U2V0dGluZ3MpOiBNZWRpYVNvdXJjZVNldHRpbmdzIGlzIGEgZ2VuZXJp
YyBkaWN0aW9uYXJ5IHNvIAorICAgICAgICAgIGl0IGhhcyB0byBiZSBnZW5lcmF0ZWQgbWFudWFs
bHkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVByaXZhdGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1Qcml2YXRlOjppbnRyaW5zaWNTaXpl
KTogc3RhdGVzIC0+IHNldHRpbmdzLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1Qcml2
YXRlOjp0cmFja1N0YXRlc0NoYW5nZWQpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL21l
ZGlhc3RyZWFtL01lZGlhU3RyZWFtUHJpdmF0ZS5oOgorCisgICAgICAgICogcGxhdGZvcm0vbWVk
aWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU6OnNldHRpbmdzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhU3RyZWFtVHJhY2tQcml2YXRlOjpzb3VyY2VTZXR0aW5nc0NoYW5nZWQpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU6OnN0YXRlcyk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6c291cmNlU3RhdGVzQ2hhbmdl
ZCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1U
cmFja1ByaXZhdGUuaDoKKworICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1l
TWVkaWFTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZTo6
c2V0dGluZ3NEaWRDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3Vy
Y2U6OnN0YXRlc0RpZENoYW5nZWQpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlh
c3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuaDoKKworICAgICAgICAqIHBsYXRmb3JtL21lZGlh
c3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM6OmZhY2luZ01vZGVzKTogU3RhdGVz
IC0+IFNldHRpbmdzLgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFi
aWxpdGllczo6YWRkRmFjaW5nTW9kZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRp
bWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllczo6c291cmNlVHlwZXMpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllczo6c2V0U291cmNlVHlw
ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJp
bGl0aWVzOjphZGRTb3VyY2VUeXBlKTogRGVsZXRlZC4KKworICAgICAgICAqIHBsYXRmb3JtL21l
ZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaDogU3RhdGVzIC0+IFNldHRpbmdz
LgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VTZXR0
aW5ncy5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L1JlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXMuY3BwLgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRp
bWVNZWRpYVNvdXJjZVNldHRpbmdzOjpmYWNpbmdNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
YWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXM6OmZhY2luZ01vZGUpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlczo6c291cmNlVHlwZSk6IERlbGV0ZWQu
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlU2V0
dGluZ3MuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
UmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlcy5oLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3Ry
ZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXMuY3BwOiBSZW1vdmVkLgorCisgICAgICAgICog
cGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlcy5oOiBSZW1vdmVk
LgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkF1ZGlvQ2FwdHVyZVNvdXJj
ZS5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkF1ZGlvQ2FwdHVyZVNv
dXJjZS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkFWQXVkaW9DYXB0dXJlU291cmNlOjp1cGRhdGVT
dGF0ZXMpOiBEZWxldGVkLgorCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FW
Q2FwdHVyZURldmljZU1hbmFnZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5tbToKKworICAgICAgICAqIHBsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9BVk1lZGlhQ2FwdHVyZVNvdXJjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9BVk1lZGlhQ2FwdHVyZVNvdXJjZS5tbToKKyAgICAgICAgKFdlYkNvcmU6
OkFWTWVkaWFDYXB0dXJlU291cmNlOjpzdGF0ZXMpOiBEZWxldGVkLgorCisgICAgICAgICogcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLmg6CisgICAgICAgICog
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6QVZWaWRlb0NhcHR1cmVTb3VyY2U6OnVwZGF0ZVN0YXRlcyk6IERlbGV0ZWQu
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1lVmlkZW9T
b3VyY2VNYWMubW06CisKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9vcGVud2VicnRj
L1JlYWx0aW1lTWVkaWFTb3VyY2VPd3IuaDoKKworICAgICAgICAqIHBsYXRmb3JtL21vY2svTW9j
a1JlYWx0aW1lQXVkaW9Tb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1l
QXVkaW9Tb3VyY2U6OmluaXRpYWxpemVTdXBwb3J0ZWRDb25zdHJhaW50cyk6CisgICAgICAgIChX
ZWJDb3JlOjpNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZTo6dXBkYXRlU3RhdGVzKTogRGVsZXRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZUF1ZGlvU291cmNlLmg6CisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZU1lZGlhU291cmNlOjpjYXBhYmlsaXRpZXMpOiBNaW5v
ciBjbGVhbnVwLgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2U6OnNl
dHRpbmdzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZU1lZGlhU291cmNlOjpzdXBw
b3J0ZWRDb25zdHJhaW50cyk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVNZWRpYVNv
dXJjZTo6c3RhdGVzKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tSZWFs
dGltZU1lZGlhU291cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVNZWRpYVNv
dXJjZTo6Y29uc3RyYWludHMpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lTWVkaWFT
b3VyY2U6OmN1cnJlbnRTdGF0ZXMpOiBEZWxldGVkLgorCisgICAgICAgICogcGxhdGZvcm0vbW9j
ay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVh
bHRpbWVWaWRlb1NvdXJjZTo6dXBkYXRlU2V0dGluZ3MpOgorICAgICAgICAoV2ViQ29yZTo6TW9j
a1JlYWx0aW1lVmlkZW9Tb3VyY2U6OmluaXRpYWxpemVDYXBhYmlsaXRpZXMpOgorICAgICAgICAo
V2ViQ29yZTo6TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OmluaXRpYWxpemVTdXBwb3J0ZWRDb25z
dHJhaW50cyk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6c2V0
RnJhbWVSYXRlKTogc3RhdGVzIC0+IHNldHRpbmdzLgorICAgICAgICAoV2ViQ29yZTo6TW9ja1Jl
YWx0aW1lVmlkZW9Tb3VyY2U6OnNldFNpemUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Ok1v
Y2tSZWFsdGltZVZpZGVvU291cmNlOjpkcmF3QW5pbWF0aW9uKTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6ZHJhd1RleHQpOiBEaXR0by4KKyAgICAg
ICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZVZpZGVvU291cmNlOjp1cGRhdGVTdGF0ZXMpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OnNldEZhY2lu
Z01vZGUpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlk
ZW9Tb3VyY2UuaDoKKwogMjAxNS0xMi0wMiAgUGVyIEFybmUgVm9sbGFuICA8cGVhdm9Ab3V0bG9v
ay5jb20+CiAKICAgICAgICAgW1dpbkNhaXJvXSBDb21waWxlIGVycm9yLgpJbmRleDogU291cmNl
L1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQJKHJldmlzaW9uIDE5MjkzMCkKKysrIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlz
dHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0yMjgsNyArMjI4LDYgQEAgc2V0KFdlYkNvcmVfTk9O
X1NWR19JRExfRklMRVMKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL0hUTUxNZWRpYUVsZW1lbnRN
ZWRpYVN0cmVhbS5pZGwKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlSW5mby5p
ZGwKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5pZGwKLSAgICBNb2R1bGVz
L21lZGlhc3RyZWFtL01lZGlhU291cmNlU3RhdGVzLmlkbAogICAgIE1vZHVsZXMvbWVkaWFzdHJl
YW0vTWVkaWFTdHJlYW0uaWRsCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNh
cGFiaWxpdGllcy5pZGwKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtRXZlbnQu
aWRsCkBAIC05NTEsNyArOTUwLDcgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIE1vZHVsZXMv
bWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLmNwcAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVk
aWFEZXZpY2VzUmVxdWVzdC5jcHAKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRW5kcG9p
bnRQZWVyQ29ubmVjdGlvbi5jcHAKLSAgICBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU291cmNl
U3RhdGVzLmNwcAorICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTb3VyY2VTZXR0aW5ncy5j
cHAKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmNwcAogICAgIE1vZHVsZXMv
bWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMuY3BwCiAgICAgTW9kdWxlcy9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbUV2ZW50LmNwcApAQCAtMTIwNiw4ICsxMjA1LDggQEAgc2V0KFdl
YkNvcmVfU09VUkNFUwogICAgIGJpbmRpbmdzL2pzL0pTTGF6eUV2ZW50TGlzdGVuZXIuY3BwCiAg
ICAgYmluZGluZ3MvanMvSlNMb2NhdGlvbkN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy9qcy9KU01h
aW5UaHJlYWRFeGVjU3RhdGUuY3BwCi0gICAgYmluZGluZ3MvanMvSlNNZWRpYVNvdXJjZVN0YXRl
c0N1c3RvbS5jcHAKICAgICBiaW5kaW5ncy9qcy9KU01lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzQ3Vz
dG9tLmNwcAorICAgIGJpbmRpbmdzL2pzL0pTTWVkaWFTdHJlYW1UcmFja0N1c3RvbS5jcHAKICAg
ICBiaW5kaW5ncy9qcy9KU01lZGlhVHJhY2tTdXBwb3J0ZWRDb25zdHJhaW50c0N1c3RvbS5jcHAK
ICAgICBiaW5kaW5ncy9qcy9KU01lc3NhZ2VDaGFubmVsQ3VzdG9tLmNwcAogICAgIGJpbmRpbmdz
L2pzL0pTTWVzc2FnZUV2ZW50Q3VzdG9tLmNwcApAQCAtMjMwOCw3ICsyMzA3LDcgQEAgc2V0KFdl
YkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ1Nlc3Npb25EZXNjcmlw
dGlvbkRlc2NyaXB0b3IuY3BwCiAgICAgcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRp
YVNvdXJjZS5jcHAKICAgICBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNl
Q2VudGVyLmNwcAotICAgIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VT
dGF0ZXMuY3BwCisgICAgcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZVNl
dHRpbmdzLmNwcAogCiAgICAgcGxhdGZvcm0vbW9jay9EZXZpY2VNb3Rpb25DbGllbnRNb2NrLmNw
cAogICAgIHBsYXRmb3JtL21vY2svRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrLmNwcApJbmRl
eDogU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCShyZXZpc2lvbiAxOTI5MzApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0xMjIsNyAr
MTIyLDYgQEAgTk9OX1NWR19CSU5ESU5HX0lETFMgPSBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVz
L21lZGlhc3RyZWFtL0NhcGFiaWxpdHlSYW5nZS5pZGwgXAogCSQoV2ViQ29yZSkvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9ET01VUkxNZWRpYVN0cmVhbS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxl
cy9tZWRpYXN0cmVhbS9IVE1MTWVkaWFFbGVtZW50TWVkaWFTdHJlYW0uaWRsIFwKLSAgICAkKFdl
YkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTb3VyY2VTdGF0ZXMuaWRsIFwKICAgICAk
KFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VJbmZvLmlkbCBcCiAgICAg
JChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5pZGwgXAogCSQoV2Vi
Q29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5pZGwgXApJbmRleDogU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9DYXBhYmlsaXR5UmFuZ2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQ2FwYWJpbGl0eVJhbmdl
LmNwcAkocmV2aXNpb24gMTkyOTMwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9DYXBhYmlsaXR5UmFuZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3IEBA
CiAjaW5jbHVkZSAiQ2FwYWJpbGl0eVJhbmdlLmgiCiAKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcu
aCIKLSNpbmNsdWRlICJNZWRpYVNvdXJjZVN0YXRlcy5oIgorI2luY2x1ZGUgIk1lZGlhU291cmNl
U2V0dGluZ3MuaCIKICNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRWYWx1ZS5oPgogI2luY2x1ZGUg
PGludGVycHJldGVyL0NhbGxGcmFtZS5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNDSlNWYWx1ZS5o
PgpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9DYXB0dXJlRGV2aWNl
SW5mby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
Q2FwdHVyZURldmljZUluZm8uaAkocmV2aXNpb24gMTkyOTMwKQorKysgU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9DYXB0dXJlRGV2aWNlSW5mby5oCSh3b3JraW5nIGNvcHkpCkBA
IC00Miw3ICs0Miw3IEBAIHN0cnVjdCBDYXB0dXJlRGV2aWNlSW5mbyB7CiAKICAgICBib29sIG1f
ZW5hYmxlZCB7IGZhbHNlIH07CiAgICAgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSBtX3NvdXJj
ZVR5cGUgeyBSZWFsdGltZU1lZGlhU291cmNlOjpOb25lIH07Ci0gICAgUmVhbHRpbWVNZWRpYVNv
dXJjZVN0YXRlczo6VmlkZW9GYWNpbmdNb2RlIG1fcG9zaXRpb24geyBSZWFsdGltZU1lZGlhU291
cmNlU3RhdGVzOjpVbmtub3duIH07CisgICAgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpW
aWRlb0ZhY2luZ01vZGUgbV9wb3NpdGlvbiB7IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6
VW5rbm93biB9OwogfTsKIAogY2xhc3MgQ2FwdHVyZVNlc3Npb25JbmZvIHsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQ2FwdHVyZURldmljZU1hbmFnZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQ2FwdHVyZURl
dmljZU1hbmFnZXIuY3BwCShyZXZpc2lvbiAxOTI5MzApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzIsNyArMzIsNyBAQAogI2ltcG9ydCAiTWVkaWFDb25zdHJhaW50cy5oIgogI2ltcG9ydCAi
UmVhbHRpbWVNZWRpYVNvdXJjZS5oIgogI2ltcG9ydCAiUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRl
ci5oIgotI2ltcG9ydCAiUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlcy5oIgorI2ltcG9ydCAiUmVh
bHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzLmgiCiAjaW1wb3J0ICJVVUlELmgiCiAjaW1wb3J0IDx3
dGYvTWFpblRocmVhZC5oPgogI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CkBAIC0xMjUs
OSArMTI1LDkgQEAgUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+IENhcHR1cmVEZXZpYwogICAg
IHJldHVybiBudWxscHRyOwogfQogCi1DYXB0dXJlRGV2aWNlSW5mbyogQ2FwdHVyZURldmljZU1h
bmFnZXI6OmJlc3REZXZpY2VGb3JGYWNpbmdNb2RlKFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXM6
OlZpZGVvRmFjaW5nTW9kZSBmYWNpbmdNb2RlKQorQ2FwdHVyZURldmljZUluZm8qIENhcHR1cmVE
ZXZpY2VNYW5hZ2VyOjpiZXN0RGV2aWNlRm9yRmFjaW5nTW9kZShSZWFsdGltZU1lZGlhU291cmNl
U2V0dGluZ3M6OlZpZGVvRmFjaW5nTW9kZSBmYWNpbmdNb2RlKQogewotICAgIGlmIChmYWNpbmdN
b2RlID09IFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXM6OlVua25vd24pCisgICAgaWYgKGZhY2lu
Z01vZGUgPT0gUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpVbmtub3duKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIAogICAgIGZvciAoYXV0byYgZGV2aWNlIDogY2FwdHVyZURldmljZUxp
c3QoKSkgewpAQCAtMTM3LDIxICsxMzcsMjEgQEAgQ2FwdHVyZURldmljZUluZm8qIENhcHR1cmVE
ZXZpY2VNYW5hZ2VyOgogICAgIHJldHVybiBudWxscHRyOwogfQogCi1zdGF0aWMgaW5saW5lIFJl
YWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXM6OlZpZGVvRmFjaW5nTW9kZSBmYWNpbmdNb2RlRnJvbVN0
cmluZyhjb25zdCBTdHJpbmcmIGZhY2luZ01vZGVTdHJpbmcpCitzdGF0aWMgaW5saW5lIFJlYWx0
aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6VmlkZW9GYWNpbmdNb2RlIGZhY2luZ01vZGVGcm9tU3Ry
aW5nKGNvbnN0IFN0cmluZyYgZmFjaW5nTW9kZVN0cmluZykKIHsKICAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiB1c2VyRmFjaW5nTW9kZVN0cmluZygidXNlciIsIEF0b21p
Y1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxBdG9taWNTdHJpbmc+IGVudmlyb25tZW50RmFjaW5nTW9kZVN0cmluZygiZW52aXJvbm1lbnQi
LCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBsZWZ0RmFjaW5nTW9kZVN0cmluZygibGVmdCIsIEF0b21p
Y1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxBdG9taWNTdHJpbmc+IHJpZ2h0RmFjaW5nTW9kZVN0cmluZygicmlnaHQiLCBBdG9taWNTdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICBpZiAoZmFjaW5nTW9kZVN0cmluZyA9PSB1
c2VyRmFjaW5nTW9kZVN0cmluZykKLSAgICAgICAgcmV0dXJuIFJlYWx0aW1lTWVkaWFTb3VyY2VT
dGF0ZXM6OlVzZXI7CisgICAgICAgIHJldHVybiBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6
OlVzZXI7CiAgICAgaWYgKGZhY2luZ01vZGVTdHJpbmcgPT0gZW52aXJvbm1lbnRGYWNpbmdNb2Rl
U3RyaW5nKQotICAgICAgICByZXR1cm4gUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlczo6RW52aXJv
bm1lbnQ7CisgICAgICAgIHJldHVybiBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkVudmly
b25tZW50OwogICAgIGlmIChmYWNpbmdNb2RlU3RyaW5nID09IGxlZnRGYWNpbmdNb2RlU3RyaW5n
KQotICAgICAgICByZXR1cm4gUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlczo6TGVmdDsKKyAgICAg
ICAgcmV0dXJuIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6TGVmdDsKICAgICBpZiAoZmFj
aW5nTW9kZVN0cmluZyA9PSByaWdodEZhY2luZ01vZGVTdHJpbmcpCi0gICAgICAgIHJldHVybiBS
ZWFsdGltZU1lZGlhU291cmNlU3RhdGVzOjpSaWdodDsKLSAgICByZXR1cm4gUmVhbHRpbWVNZWRp
YVNvdXJjZVN0YXRlczo6VW5rbm93bjsKKyAgICAgICAgcmV0dXJuIFJlYWx0aW1lTWVkaWFTb3Vy
Y2VTZXR0aW5nczo6UmlnaHQ7CisgICAgcmV0dXJuIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5n
czo6VW5rbm93bjsKIH0KIAogYm9vbCBDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2Vzc2lvblN1cHBv
cnRzQ29uc3RyYWludChjb25zdCBDYXB0dXJlU2Vzc2lvbkluZm8qLCBSZWFsdGltZU1lZGlhU291
cmNlOjpUeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQ2FwdHVyZURldmljZU1h
bmFnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmgJKHJldmlzaW9uIDE5MjkzMCkKKysrIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQ2FwdHVyZURldmljZU1hbmFnZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtNTQsNyArNTQsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCBib29sIGlzU3Vw
cG9ydGVkRnJhbWVSYXRlKGZsb2F0IGZyYW1lUmF0ZSkgY29uc3Q7CiAKICAgICBib29sIGNhcHR1
cmVEZXZpY2VGcm9tRGV2aWNlSUQoY29uc3QgU3RyaW5nJiBjYXB0dXJlRGV2aWNlSUQsIENhcHR1
cmVEZXZpY2VJbmZvJiBzb3VyY2UpOwotICAgIENhcHR1cmVEZXZpY2VJbmZvKiBiZXN0RGV2aWNl
Rm9yRmFjaW5nTW9kZShSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzOjpWaWRlb0ZhY2luZ01vZGUp
OworICAgIENhcHR1cmVEZXZpY2VJbmZvKiBiZXN0RGV2aWNlRm9yRmFjaW5nTW9kZShSZWFsdGlt
ZU1lZGlhU291cmNlU2V0dGluZ3M6OlZpZGVvRmFjaW5nTW9kZSk7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01l
ZGlhU291cmNlU2V0dGluZ3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vTWVkaWFTb3VyY2VTZXR0aW5ncy5jcHAJKHJldmlzaW9uIDE5MjkzMCkJ
KGZyb20gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVNvdXJjZVN0YXRl
cy5jcHA6MTkyOTMwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRp
YVNvdXJjZVNldHRpbmdzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU5IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIk1lZGlhU291cmNl
U3RhdGVzLmgiCisKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitSZWY8TWVkaWFTb3VyY2VTdGF0ZXM+IE1lZGlhU291cmNlU3RhdGVzOjpj
cmVhdGUoY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlcyYgc3RhdGVzKQoreworICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IE1lZGlhU291cmNlU3RhdGVzKHN0YXRlcykpOworfQorCitNZWRp
YVNvdXJjZVN0YXRlczo6TWVkaWFTb3VyY2VTdGF0ZXMoY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJj
ZVN0YXRlcyYgc3RhdGVzKQorICAgIDogbV9zb3VyY2VTdGF0ZXMoc3RhdGVzKQoreworfQorCitj
b25zdCBBdG9taWNTdHJpbmcmIE1lZGlhU291cmNlU3RhdGVzOjpzb3VyY2VUeXBlKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlczo6c291cmNlVHlwZShtX3Nv
dXJjZVN0YXRlcy5zb3VyY2VUeXBlKCkpOworfQorCitjb25zdCBBdG9taWNTdHJpbmcmIE1lZGlh
U291cmNlU3RhdGVzOjpmYWNpbmdNb2RlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gUmVhbHRpbWVN
ZWRpYVNvdXJjZVN0YXRlczo6ZmFjaW5nTW9kZShtX3NvdXJjZVN0YXRlcy5mYWNpbmdNb2RlKCkp
OworfQorCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU291cmNlU2V0dGluZ3MuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTb3VyY2VT
ZXR0aW5ncy5jcHAJKHdvcmtpbmcgY29weSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vTWVkaWFTb3VyY2VTZXR0aW5ncy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjQsMzYgKzI0
LDI5IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk1lZGlhU291cmNl
U2V0dGluZ3MuaCIKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAKLSNpbmNsdWRlICJNZWRp
YVNvdXJjZVN0YXRlcy5oIgotCiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmPE1lZGlhU291cmNlU3RhdGVzPiBNZWRpYVNvdXJjZVN0
YXRlczo6Y3JlYXRlKGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXMmIHN0YXRlcykKK1Jl
ZjxNZWRpYVNvdXJjZVNldHRpbmdzPiBNZWRpYVNvdXJjZVNldHRpbmdzOjpjcmVhdGUoY29uc3Qg
UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJiBzZXR0aW5ncykKIHsKLSAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBNZWRpYVNvdXJjZVN0YXRlcyhzdGF0ZXMpKTsKKyAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBNZWRpYVNvdXJjZVNldHRpbmdzKHNldHRpbmdzKSk7CiB9CiAKLU1lZGlhU291cmNl
U3RhdGVzOjpNZWRpYVNvdXJjZVN0YXRlcyhjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU3RhdGVz
JiBzdGF0ZXMpCi0gICAgOiBtX3NvdXJjZVN0YXRlcyhzdGF0ZXMpCitNZWRpYVNvdXJjZVNldHRp
bmdzOjpNZWRpYVNvdXJjZVNldHRpbmdzKGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5n
cyYgc2V0dGluZ3MpCisgICAgOiBtX3NvdXJjZVNldHRpbmdzKHNldHRpbmdzKQogewogfQogCi1j
b25zdCBBdG9taWNTdHJpbmcmIE1lZGlhU291cmNlU3RhdGVzOjpzb3VyY2VUeXBlKCkgY29uc3QK
K2NvbnN0IEF0b21pY1N0cmluZyYgTWVkaWFTb3VyY2VTZXR0aW5nczo6ZmFjaW5nTW9kZSgpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXM6OnNvdXJjZVR5cGUo
bV9zb3VyY2VTdGF0ZXMuc291cmNlVHlwZSgpKTsKKyAgICByZXR1cm4gUmVhbHRpbWVNZWRpYVNv
dXJjZVNldHRpbmdzOjpmYWNpbmdNb2RlKG1fc291cmNlU2V0dGluZ3MuZmFjaW5nTW9kZSgpKTsK
IH0KIAotY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYVNvdXJjZVN0YXRlczo6ZmFjaW5nTW9kZSgp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXM6OmZhY2luZ01v
ZGUobV9zb3VyY2VTdGF0ZXMuZmFjaW5nTW9kZSgpKTsKLX0KLQotCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9NZWRpYVNvdXJjZVNldHRpbmdzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9NZWRpYVNvdXJjZVNldHRpbmdzLmgJKHJldmlzaW9uIDE5MjkzMCkJ
KGZyb20gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVNvdXJjZVN0YXRl
cy5oOjE5MjkzMCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFT
b3VyY2VTZXR0aW5ncy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjMgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIE1lZGlhU291cmNl
U3RhdGVzX2gKKyNkZWZpbmUgTWVkaWFTb3VyY2VTdGF0ZXNfaAorCisjaWYgRU5BQkxFKE1FRElB
X1NUUkVBTSkKKworI2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMuaCIK
KyNpbmNsdWRlICJTY3JpcHRXcmFwcGFibGUuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgor
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xh
c3MgTWVkaWFTb3VyY2VTdGF0ZXMgOiBwdWJsaWMgUmVmQ291bnRlZDxNZWRpYVNvdXJjZVN0YXRl
cz4sIHB1YmxpYyBTY3JpcHRXcmFwcGFibGUgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8TWVk
aWFTb3VyY2VTdGF0ZXM+IGNyZWF0ZShjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzJik7
CisKKyAgICBjb25zdCBBdG9taWNTdHJpbmcmIHNvdXJjZVR5cGUoKSBjb25zdDsKKyAgICBjb25z
dCBBdG9taWNTdHJpbmcmIHNvdXJjZUlkKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VTdGF0ZXMu
c291cmNlSWQoKTsgfQorICAgIHVuc2lnbmVkIGxvbmcgd2lkdGgoKSBjb25zdCB7IHJldHVybiBt
X3NvdXJjZVN0YXRlcy53aWR0aCgpOyB9CisgICAgdW5zaWduZWQgbG9uZyBoZWlnaHQoKSBjb25z
dCB7IHJldHVybiBtX3NvdXJjZVN0YXRlcy5oZWlnaHQoKTsgfQorICAgIGZsb2F0IGZyYW1lUmF0
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlU3RhdGVzLmZyYW1lUmF0ZSgpOyB9CisgICAgZmxv
YXQgYXNwZWN0UmF0aW8oKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZVN0YXRlcy5hc3BlY3RSYXRp
bygpOyB9CisgICAgY29uc3QgQXRvbWljU3RyaW5nJiBmYWNpbmdNb2RlKCkgY29uc3Q7CisgICAg
dW5zaWduZWQgbG9uZyB2b2x1bWUoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZVN0YXRlcy52b2x1
bWUoKTsgfQorICAgIAorICAgIGJvb2wgaGFzVmlkZW9Tb3VyY2UoKSBjb25zdCB7IHJldHVybiBt
X3NvdXJjZVN0YXRlcy5zb3VyY2VUeXBlKCkgPT0gUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlczo6
Q2FtZXJhOyB9CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgTWVkaWFTb3VyY2VTdGF0ZXMoY29u
c3QgUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlcyYpOworCisgICAgUmVhbHRpbWVNZWRpYVNvdXJj
ZVN0YXRlcyBtX3NvdXJjZVN0YXRlczsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmIC8vIE1lZGlhU291cmNlU3RhdGVzX2gKKworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU291cmNlU2V0dGluZ3MuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU291cmNlU2V0dGlu
Z3MuaAkod29ya2luZyBjb3B5KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9NZWRpYVNvdXJjZVNldHRpbmdzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsOCArMjMsOCBAQAogICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIE1lZGlhU291cmNlU3RhdGVzX2gKLSNkZWZpbmUg
TWVkaWFTb3VyY2VTdGF0ZXNfaAorI2lmbmRlZiBNZWRpYVNvdXJjZVNldHRpbmdzX2gKKyNkZWZp
bmUgTWVkaWFTb3VyY2VTZXR0aW5nc19oCiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogCkBA
IC0zNSwyOSArMzUsNTEgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBNZWRpYVNv
dXJjZVN0YXRlcyA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhU291cmNlU3RhdGVzPiwgcHVibGlj
IFNjcmlwdFdyYXBwYWJsZSB7CitjbGFzcyBNZWRpYVNvdXJjZVNldHRpbmdzIDogcHVibGljIFJl
ZkNvdW50ZWQ8TWVkaWFTb3VyY2VTZXR0aW5ncz4sIHB1YmxpYyBTY3JpcHRXcmFwcGFibGUgewog
cHVibGljOgotICAgIHN0YXRpYyBSZWY8TWVkaWFTb3VyY2VTdGF0ZXM+IGNyZWF0ZShjb25zdCBS
ZWFsdGltZU1lZGlhU291cmNlU3RhdGVzJik7CisgICAgc3RhdGljIFJlZjxNZWRpYVNvdXJjZVNl
dHRpbmdzPiBjcmVhdGUoY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJik7CiAKLSAg
ICBjb25zdCBBdG9taWNTdHJpbmcmIHNvdXJjZVR5cGUoKSBjb25zdDsKLSAgICBjb25zdCBBdG9t
aWNTdHJpbmcmIHNvdXJjZUlkKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VTdGF0ZXMuc291cmNl
SWQoKTsgfQotICAgIHVuc2lnbmVkIGxvbmcgd2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3NvdXJj
ZVN0YXRlcy53aWR0aCgpOyB9Ci0gICAgdW5zaWduZWQgbG9uZyBoZWlnaHQoKSBjb25zdCB7IHJl
dHVybiBtX3NvdXJjZVN0YXRlcy5oZWlnaHQoKTsgfQotICAgIGZsb2F0IGZyYW1lUmF0ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fc291cmNlU3RhdGVzLmZyYW1lUmF0ZSgpOyB9Ci0gICAgZmxvYXQgYXNw
ZWN0UmF0aW8oKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZVN0YXRlcy5hc3BlY3RSYXRpbygpOyB9
CisgICAgYm9vbCBzdXBwb3J0c1dpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VTZXR0aW5n
cy5zdXBwb3J0c1dpZHRoKCk7IH0KKyAgICB1bnNpZ25lZCBsb25nIHdpZHRoKCkgY29uc3QgeyBy
ZXR1cm4gbV9zb3VyY2VTZXR0aW5ncy53aWR0aCgpOyB9CisKKyAgICBib29sIHN1cHBvcnRzSGVp
Z2h0KCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VTZXR0aW5ncy5zdXBwb3J0c0hlaWdodCgpOyB9
CisgICAgdW5zaWduZWQgbG9uZyBoZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZVNldHRp
bmdzLmhlaWdodCgpOyB9CisKKyAgICBib29sIHN1cHBvcnRzQXNwZWN0UmF0aW8oKSBjb25zdCB7
IHJldHVybiBtX3NvdXJjZVNldHRpbmdzLnN1cHBvcnRzQXNwZWN0UmF0aW8oKTsgfQorICAgIGZs
b2F0IGFzcGVjdFJhdGlvKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VTZXR0aW5ncy5hc3BlY3RS
YXRpbygpOyB9CisKKyAgICBib29sIHN1cHBvcnRzRnJhbWVSYXRlKCkgY29uc3QgeyByZXR1cm4g
bV9zb3VyY2VTZXR0aW5ncy5zdXBwb3J0c0ZyYW1lUmF0ZSgpOyB9CisgICAgZmxvYXQgZnJhbWVS
YXRlKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VTZXR0aW5ncy5mcmFtZVJhdGUoKTsgfQorCisg
ICAgYm9vbCBzdXBwb3J0c0ZhY2luZ01vZGUoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZVNldHRp
bmdzLnN1cHBvcnRzRmFjaW5nTW9kZSgpOyB9CiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBmYWNp
bmdNb2RlKCkgY29uc3Q7Ci0gICAgdW5zaWduZWQgbG9uZyB2b2x1bWUoKSBjb25zdCB7IHJldHVy
biBtX3NvdXJjZVN0YXRlcy52b2x1bWUoKTsgfQotICAgIAotICAgIGJvb2wgaGFzVmlkZW9Tb3Vy
Y2UoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZVN0YXRlcy5zb3VyY2VUeXBlKCkgPT0gUmVhbHRp
bWVNZWRpYVNvdXJjZVN0YXRlczo6Q2FtZXJhOyB9CisKKyAgICBib29sIHN1cHBvcnRzVm9sdW1l
KCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VTZXR0aW5ncy5zdXBwb3J0c1ZvbHVtZSgpOyB9Cisg
ICAgdW5zaWduZWQgbG9uZyB2b2x1bWUoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZVNldHRpbmdz
LnZvbHVtZSgpOyB9CisKKyAgICBib29sIHN1cHBvcnRzU2FtcGxlUmF0ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fc291cmNlU2V0dGluZ3Muc3VwcG9ydHNTYW1wbGVSYXRlKCk7IH0KKyAgICB1bnNpZ25l
ZCBsb25nIHNhbXBsZVJhdGUoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZVNldHRpbmdzLnNhbXBs
ZVJhdGUoKTsgfQorCisgICAgYm9vbCBzdXBwb3J0c1NhbXBsZVNpemUoKSBjb25zdCB7IHJldHVy
biBtX3NvdXJjZVNldHRpbmdzLnN1cHBvcnRzU2FtcGxlU2l6ZSgpOyB9CisgICAgdW5zaWduZWQg
bG9uZyBzYW1wbGVTaXplKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VTZXR0aW5ncy5zYW1wbGVT
aXplKCk7IH0KKworICAgIGJvb2wgc3VwcG9ydHNFY2hvQ2FuY2VsbGF0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV9zb3VyY2VTZXR0aW5ncy5zdXBwb3J0c0VjaG9DYW5jZWxsYXRpb24oKTsgfQorICAg
IGJvb2wgZWNob0NhbmNlbGxhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlU2V0dGluZ3Mu
ZWNob0NhbmNlbGxhdGlvbigpOyB9CisKKyAgICBib29sIHN1cHBvcnRzRGV2aWNlSWQoKSBjb25z
dCB7IHJldHVybiBtX3NvdXJjZVNldHRpbmdzLnN1cHBvcnRzRGV2aWNlSWQoKTsgfQorICAgIGNv
bnN0IEF0b21pY1N0cmluZyYgZGV2aWNlSWQoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZVNldHRp
bmdzLmRldmljZUlkKCk7IH0KKworICAgIGJvb2wgc3VwcG9ydHNHcm91cElkKCkgY29uc3QgeyBy
ZXR1cm4gbV9zb3VyY2VTZXR0aW5ncy5zdXBwb3J0c0dyb3VwSWQoKTsgfQorICAgIGNvbnN0IEF0
b21pY1N0cmluZyYgZ3JvdXBJZCgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlU2V0dGluZ3MuZ3Jv
dXBJZCgpOyB9CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgTWVkaWFTb3VyY2VTdGF0ZXMoY29u
c3QgUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlcyYpOworICAgIGV4cGxpY2l0IE1lZGlhU291cmNl
U2V0dGluZ3MoY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJik7CiAKLSAgICBSZWFs
dGltZU1lZGlhU291cmNlU3RhdGVzIG1fc291cmNlU3RhdGVzOworICAgIFJlYWx0aW1lTWVkaWFT
b3VyY2VTZXR0aW5ncyBtX3NvdXJjZVNldHRpbmdzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCi0jZW5kaWYgLy8gTWVkaWFTb3VyY2VTdGF0ZXNfaAorI2VuZGlmIC8vIE1lZGlhU291
cmNlU2V0dGluZ3NfaAogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vTWVkaWFTb3VyY2VTdGF0ZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTb3VyY2VTdGF0ZXMuY3BwCShyZXZpc2lvbiAx
OTI5MzApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU291cmNl
U3RhdGVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1OSArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0j
aWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLQotI2luY2x1ZGUgIk1lZGlhU291cmNlU3RhdGVzLmgi
Ci0KLSNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi1SZWY8TWVkaWFTb3VyY2VTdGF0ZXM+IE1lZGlhU291cmNlU3RhdGVzOjpjcmVhdGUoY29u
c3QgUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlcyYgc3RhdGVzKQotewotICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IE1lZGlhU291cmNlU3RhdGVzKHN0YXRlcykpOwotfQotCi1NZWRpYVNvdXJjZVN0
YXRlczo6TWVkaWFTb3VyY2VTdGF0ZXMoY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlcyYg
c3RhdGVzKQotICAgIDogbV9zb3VyY2VTdGF0ZXMoc3RhdGVzKQotewotfQotCi1jb25zdCBBdG9t
aWNTdHJpbmcmIE1lZGlhU291cmNlU3RhdGVzOjpzb3VyY2VUeXBlKCkgY29uc3QKLXsKLSAgICBy
ZXR1cm4gUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlczo6c291cmNlVHlwZShtX3NvdXJjZVN0YXRl
cy5zb3VyY2VUeXBlKCkpOwotfQotCi1jb25zdCBBdG9taWNTdHJpbmcmIE1lZGlhU291cmNlU3Rh
dGVzOjpmYWNpbmdNb2RlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gUmVhbHRpbWVNZWRpYVNvdXJj
ZVN0YXRlczo6ZmFjaW5nTW9kZShtX3NvdXJjZVN0YXRlcy5mYWNpbmdNb2RlKCkpOwotfQotCi0K
LX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU291cmNlU3RhdGVzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVNvdXJjZVN0YXRlcy5oCShyZXZp
c2lvbiAxOTI5MzApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlh
U291cmNlU3RhdGVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNjMgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
Ci0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgTWVkaWFTb3VyY2VT
dGF0ZXNfaAotI2RlZmluZSBNZWRpYVNvdXJjZVN0YXRlc19oCi0KLSNpZiBFTkFCTEUoTUVESUFf
U1RSRUFNKQotCi0jaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcy5oIgot
I2luY2x1ZGUgIlNjcmlwdFdyYXBwYWJsZS5oIgotI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0j
aW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFz
cyBNZWRpYVNvdXJjZVN0YXRlcyA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhU291cmNlU3RhdGVz
PiwgcHVibGljIFNjcmlwdFdyYXBwYWJsZSB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxNZWRp
YVNvdXJjZVN0YXRlcz4gY3JlYXRlKGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXMmKTsK
LQotICAgIGNvbnN0IEF0b21pY1N0cmluZyYgc291cmNlVHlwZSgpIGNvbnN0OwotICAgIGNvbnN0
IEF0b21pY1N0cmluZyYgc291cmNlSWQoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZVN0YXRlcy5z
b3VyY2VJZCgpOyB9Ci0gICAgdW5zaWduZWQgbG9uZyB3aWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1f
c291cmNlU3RhdGVzLndpZHRoKCk7IH0KLSAgICB1bnNpZ25lZCBsb25nIGhlaWdodCgpIGNvbnN0
IHsgcmV0dXJuIG1fc291cmNlU3RhdGVzLmhlaWdodCgpOyB9Ci0gICAgZmxvYXQgZnJhbWVSYXRl
KCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VTdGF0ZXMuZnJhbWVSYXRlKCk7IH0KLSAgICBmbG9h
dCBhc3BlY3RSYXRpbygpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlU3RhdGVzLmFzcGVjdFJhdGlv
KCk7IH0KLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIGZhY2luZ01vZGUoKSBjb25zdDsKLSAgICB1
bnNpZ25lZCBsb25nIHZvbHVtZSgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlU3RhdGVzLnZvbHVt
ZSgpOyB9Ci0gICAgCi0gICAgYm9vbCBoYXNWaWRlb1NvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1f
c291cmNlU3RhdGVzLnNvdXJjZVR5cGUoKSA9PSBSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzOjpD
YW1lcmE7IH0KLQotcHJpdmF0ZToKLSAgICBleHBsaWNpdCBNZWRpYVNvdXJjZVN0YXRlcyhjb25z
dCBSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzJik7Ci0KLSAgICBSZWFsdGltZU1lZGlhU291cmNl
U3RhdGVzIG1fc291cmNlU3RhdGVzOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0j
ZW5kaWYgLy8gTWVkaWFTb3VyY2VTdGF0ZXNfaAotCi0jZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTb3VyY2VTdGF0ZXMuaWRsCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTb3VyY2VTdGF0ZXMu
aWRsCShyZXZpc2lvbiAxOTI5MzApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL01lZGlhU291cmNlU3RhdGVzLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMSw0NCArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQot
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLWVudW0gU291
cmNlVHlwZUVudW0geyAibm9uZSIsICJjYW1lcmEiLCAibWljcm9waG9uZSIgfTsKLWVudW0gVmlk
ZW9GYWNpbmdNb2RlRW51bSB7ICJ1c2VyIiwgImVudmlyb25tZW50IiwgImxlZnQiLCAicmlnaHQi
IH07Ci0KLVsKLSAgICBDb25kaXRpb25hbD1NRURJQV9TVFJFQU0sCi0gICAgSW1wbGVtZW50YXRp
b25MYWNrc1ZUYWJsZSwKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKLV0gaW50ZXJmYWNlIE1lZGlh
U291cmNlU3RhdGVzIHsKLSAgICByZWFkb25seSBhdHRyaWJ1dGUgU291cmNlVHlwZUVudW0gc291
cmNlVHlwZTsKLSAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHNvdXJjZUlkOwotCi0g
ICAgW0N1c3RvbUdldHRlcl0gcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmc/IHdpZHRo
OwotICAgIFtDdXN0b21HZXR0ZXJdIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nPyBo
ZWlnaHQ7Ci0gICAgW0N1c3RvbUdldHRlcl0gcmVhZG9ubHkgYXR0cmlidXRlIHVucmVzdHJpY3Rl
ZCBmbG9hdD8gZnJhbWVSYXRlOwotICAgIFtDdXN0b21HZXR0ZXJdIHJlYWRvbmx5IGF0dHJpYnV0
ZSB1bnJlc3RyaWN0ZWQgZmxvYXQ/IGFzcGVjdFJhdGlvOwotICAgIFtDdXN0b21HZXR0ZXJdIHJl
YWRvbmx5IGF0dHJpYnV0ZSBWaWRlb0ZhY2luZ01vZGVFbnVtPyBmYWNpbmdNb2RlOwotICAgIFtD
dXN0b21HZXR0ZXJdIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nPyB2b2x1bWU7Ci19
OwotCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFt
Q2FwYWJpbGl0aWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL01lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzLmNwcAkocmV2aXNpb24gMTkyOTMwKQor
KysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNhcGFiaWxp
dGllcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDcgQEAKICNpbmNsdWRlICJBbGxB
dWRpb0NhcGFiaWxpdGllcy5oIgogI2luY2x1ZGUgIkFsbFZpZGVvQ2FwYWJpbGl0aWVzLmgiCiAj
aW5jbHVkZSAiQ2FwYWJpbGl0eVJhbmdlLmgiCi0jaW5jbHVkZSAiTWVkaWFTb3VyY2VTdGF0ZXMu
aCIKKyNpbmNsdWRlICJNZWRpYVNvdXJjZVNldHRpbmdzLmgiCiAjaW5jbHVkZSAiUmVhbHRpbWVN
ZWRpYVNvdXJjZUNhcGFiaWxpdGllcy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01Miwx
OSArNTIsOCBAQCBNZWRpYVN0cmVhbUNhcGFiaWxpdGllczo6TWVkaWFTdHJlYW1DYXBhCiAKIFZl
Y3RvcjxTdHJpbmc+IE1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzOjpzb3VyY2VUeXBlKCkgY29uc3QK
IHsKLSAgICBBU1NFUlQobV9Tb3VyY2VDYXBhYmlsaXRpZXMtPmhhc1ZpZGVvU291cmNlKCkpOwot
ICAgIAotICAgIHNpemVfdCBjb3VudCA9IG1fU291cmNlQ2FwYWJpbGl0aWVzLT5zb3VyY2VUeXBl
cygpLnNpemUoKTsKLSAgICBpZiAoIWNvdW50KQotICAgICAgICByZXR1cm4gVmVjdG9yPFN0cmlu
Zz4oKTsKLSAgICAKLSAgICBWZWN0b3I8U3RyaW5nPiBjYXBhYmlsaXRpZXM7Ci0gICAgY2FwYWJp
bGl0aWVzLnJlc2VydmVDYXBhY2l0eShjb3VudCk7Ci0gICAgCi0gICAgZm9yIChhdXRvJiB0eXBl
IDogbV9Tb3VyY2VDYXBhYmlsaXRpZXMtPnNvdXJjZVR5cGVzKCkpCi0gICAgICAgIGNhcGFiaWxp
dGllcy5hcHBlbmQoUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlczo6c291cmNlVHlwZSh0eXBlKSk7
Ci0gICAgCi0gICAgcmV0dXJuIGNhcGFiaWxpdGllczsKKyAgICAvLyBUaGlzIHdpbGwgYmUgZml4
ZWQgYnkgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTcyOC4KKyAg
ICByZXR1cm4gVmVjdG9yPFN0cmluZz4oKTsKIH0KIAogVmVjdG9yPFN0cmluZz4gTWVkaWFTdHJl
YW1DYXBhYmlsaXRpZXM6OnNvdXJjZUlkKCkgY29uc3QKQEAgLTk0LDcgKzgzLDcgQEAgVmVjdG9y
PFN0cmluZz4gTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXM6OgogICAgIGNhcGFiaWxpdGllcy5yZXNl
cnZlQ2FwYWNpdHkoY291bnQpOwogICAgIAogICAgIGZvciAoYXV0byYgbW9kZSA6IG1fU291cmNl
Q2FwYWJpbGl0aWVzLT5mYWNpbmdNb2RlcygpKQotICAgICAgICBjYXBhYmlsaXRpZXMuYXBwZW5k
KFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXM6OmZhY2luZ01vZGUobW9kZSkpOworICAgICAgICBj
YXBhYmlsaXRpZXMuYXBwZW5kKFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6ZmFjaW5nTW9k
ZShtb2RlKSk7CiAgICAgCiAgICAgcmV0dXJuIGNhcGFiaWxpdGllczsKIH0KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRy
YWNrLmNwcAkocmV2aXNpb24gMTkyOTMwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcs
NyBAQAogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2Rl
UGxhY2Vob2xkZXIuaCIKICNpbmNsdWRlICJNZWRpYUNvbnN0cmFpbnRzSW1wbC5oIgotI2luY2x1
ZGUgIk1lZGlhU291cmNlU3RhdGVzLmgiCisjaW5jbHVkZSAiTWVkaWFTb3VyY2VTZXR0aW5ncy5o
IgogI2luY2x1ZGUgIk1lZGlhU3RyZWFtLmgiCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW1Qcml2YXRl
LmgiCiAjaW5jbHVkZSAiTWVkaWFUcmFja0NvbnN0cmFpbnRzLmgiCkBAIC0xNjIsMjEgKzE2Miwx
NCBAQCBSZWZQdHI8TWVkaWFUcmFja0NvbnN0cmFpbnRzPiBNZWRpYVN0cmVhCiAgICAgcmV0dXJu
IDA7CiB9CiAKLVJlZlB0cjxNZWRpYVNvdXJjZVN0YXRlcz4gTWVkaWFTdHJlYW1UcmFjazo6c3Rh
dGVzKCkgY29uc3QKK1JlZlB0cjxNZWRpYVNvdXJjZVNldHRpbmdzPiBNZWRpYVN0cmVhbVRyYWNr
OjpnZXRTZXR0aW5ncygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIE1lZGlhU291cmNlU3RhdGVzOjpj
cmVhdGUobV9wcml2YXRlLT5zdGF0ZXMoKSk7CisgICAgcmV0dXJuIE1lZGlhU291cmNlU2V0dGlu
Z3M6OmNyZWF0ZShtX3ByaXZhdGUtPnNldHRpbmdzKCkpOwogfQogCiBSZWZQdHI8TWVkaWFTdHJl
YW1DYXBhYmlsaXRpZXM+IE1lZGlhU3RyZWFtVHJhY2s6OmdldENhcGFiaWxpdGllcygpIGNvbnN0
CiB7Ci0gICAgLy8gVGhlIHNvdXJjZSBtYXkgYmUgc2hhcmVkIGJ5IG11bHRpcGxlIHRyYWNrcywg
c28gaXRzIHN0YXRlcyBpcyBub3QgbmVjZXNzYXJpbHkKLSAgICAvLyBpbiBzeW5jIHdpdGggdGhl
IHRyYWNrIHN0YXRlLiBBIHRyYWNrIHRoYXQgaGFzIGVuZGVkIGFsd2F5cyBoYXMgYSBzb3VyY2UK
LSAgICAvLyB0eXBlIG9mICJub25lIi4KLSAgICBSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZUNh
cGFiaWxpdGllcz4gc291cmNlQ2FwYWJpbGl0aWVzID0gbV9wcml2YXRlLT5jYXBhYmlsaXRpZXMo
KTsKLSAgICBpZiAoZW5kZWQoKSkKLSAgICAgICAgc291cmNlQ2FwYWJpbGl0aWVzLT5zZXRTb3Vy
Y2VUeXBlKFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXM6Ok5vbmUpOwotICAgIAotICAgIHJldHVy
biBNZWRpYVN0cmVhbUNhcGFiaWxpdGllczo6Y3JlYXRlKHNvdXJjZUNhcGFiaWxpdGllcy5yZWxl
YXNlKCkpOworICAgIHJldHVybiBNZWRpYVN0cmVhbUNhcGFiaWxpdGllczo6Y3JlYXRlKG1fcHJp
dmF0ZS0+Y2FwYWJpbGl0aWVzKCkpOwogfQogCiB2b2lkIE1lZGlhU3RyZWFtVHJhY2s6OmFwcGx5
Q29uc3RyYWludHMoY29uc3QgRGljdGlvbmFyeSYgY29uc3RyYWludHMpCkBAIC0yMzgsNyArMjMx
LDcgQEAgdm9pZCBNZWRpYVN0cmVhbVRyYWNrOjp0cmFja011dGVkQ2hhbmdlZAogICAgIGNvbmZp
Z3VyZVRyYWNrUmVuZGVyaW5nKCk7CiB9CiAKLXZvaWQgTWVkaWFTdHJlYW1UcmFjazo6dHJhY2tT
dGF0ZXNDaGFuZ2VkKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJikKK3ZvaWQgTWVkaWFTdHJlYW1U
cmFjazo6dHJhY2tTZXR0aW5nc0NoYW5nZWQoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmKQogewog
ICAgIGNvbmZpZ3VyZVRyYWNrUmVuZGVyaW5nKCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suaAkocmV2aXNp
b24gMTkyOTMwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0
cmVhbVRyYWNrLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDcgKzQ1LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogY2xhc3MgQXVkaW9Tb3VyY2VQcm92aWRlcjsKIGNsYXNzIERpY3Rpb25hcnk7CiBj
bGFzcyBNZWRpYUNvbnN0cmFpbnRzSW1wbDsKLWNsYXNzIE1lZGlhU291cmNlU3RhdGVzOworY2xh
c3MgTWVkaWFTb3VyY2VTZXR0aW5nczsKIGNsYXNzIE1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzOwog
Y2xhc3MgTWVkaWFUcmFja0NvbnN0cmFpbnRzOwogCkBAIC03OSw3ICs3OSw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHN0b3BQcm9kdWNpbmdEYXRhKCk7CiAKICAgICBSZWZQdHI8TWVkaWFUcmFja0Nv
bnN0cmFpbnRzPiBnZXRDb25zdHJhaW50cygpIGNvbnN0OwotICAgIFJlZlB0cjxNZWRpYVNvdXJj
ZVN0YXRlcz4gc3RhdGVzKCkgY29uc3Q7CisgICAgUmVmUHRyPE1lZGlhU291cmNlU2V0dGluZ3M+
IGdldFNldHRpbmdzKCkgY29uc3Q7CiAgICAgUmVmUHRyPE1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVz
PiBnZXRDYXBhYmlsaXRpZXMoKSBjb25zdDsKICAgICB2b2lkIGFwcGx5Q29uc3RyYWludHMoY29u
c3QgRGljdGlvbmFyeSYpOwogICAgIHZvaWQgYXBwbHlDb25zdHJhaW50cyhjb25zdCBNZWRpYUNv
bnN0cmFpbnRzJik7CkBAIC0xMTcsNyArMTE3LDcgQEAgcHJpdmF0ZToKICAgICAvLyBNZWRpYVN0
cmVhbVRyYWNrUHJpdmF0ZTo6T2JzZXJ2ZXIKICAgICB2b2lkIHRyYWNrRW5kZWQoTWVkaWFTdHJl
YW1UcmFja1ByaXZhdGUmKSBvdmVycmlkZTsKICAgICB2b2lkIHRyYWNrTXV0ZWRDaGFuZ2VkKE1l
ZGlhU3RyZWFtVHJhY2tQcml2YXRlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB0cmFja1N0YXRlc0No
YW5nZWQoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmKSBvdmVycmlkZTsKKyAgICB2b2lkIHRyYWNr
U2V0dGluZ3NDaGFuZ2VkKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJikgb3ZlcnJpZGU7CiAgICAg
dm9pZCB0cmFja0VuYWJsZWRDaGFuZ2VkKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJikgb3ZlcnJp
ZGU7CiAKICAgICBWZWN0b3I8T2JzZXJ2ZXIqPiBtX29ic2VydmVyczsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5pZGwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNr
LmlkbAkocmV2aXNpb24gMTkyOTMwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmlkbAkod29ya2luZyBjb3B5KQpAQCAtNDcsNyArNDcsNyBA
QCBlbnVtIE1lZGlhU3RyZWFtVHJhY2tTdGF0ZSB7ICJuZXciLCAibGl2CiAgICAgW0ltcGxlbWVu
dGVkQXM9c3RvcFByb2R1Y2luZ0RhdGFdIHZvaWQgc3RvcCgpOwogCiAgICAgTWVkaWFUcmFja0Nv
bnN0cmFpbnRzIGdldENvbnN0cmFpbnRzKCk7Ci0gICAgTWVkaWFTb3VyY2VTdGF0ZXMgc3RhdGVz
KCk7CisgICAgW0N1c3RvbV0gTWVkaWFTb3VyY2VTZXR0aW5ncyBnZXRTZXR0aW5ncygpOwogICAg
IE1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzIGdldENhcGFiaWxpdGllcygpOyAvLyByZXR1cm5zIGVp
dGhlciBBbGxWaWRlb0NhcGFiaWxpdGllcyBvciBBbGxBdWRpb0NhcGFiaWxpdGllcwogICAgIHZv
aWQgYXBwbHlDb25zdHJhaW50cyhEaWN0aW9uYXJ5IGNvbnN0cmFpbnRzKTsKIApJbmRleDogU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFt
QXVkaW9Tb3VyY2UuY3BwCShyZXZpc2lvbiAxOTI5MzApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9Tb3VyY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC01MiwxMiArNTIsMTIgQEAgUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM+
IAogICAgIHJldHVybiBudWxscHRyOwogfQogCi1jb25zdCBSZWFsdGltZU1lZGlhU291cmNlU3Rh
dGVzJiBNZWRpYVN0cmVhbUF1ZGlvU291cmNlOjpzdGF0ZXMoKQorY29uc3QgUmVhbHRpbWVNZWRp
YVNvdXJjZVNldHRpbmdzJiBNZWRpYVN0cmVhbUF1ZGlvU291cmNlOjpzZXR0aW5ncygpCiB7CiAg
ICAgLy8gRklYTUU6IGltcGxlbWVudCB0aGlzLgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMjI0MzAKICAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJl
dHVybiBtX2N1cnJlbnRTdGF0ZXM7CisgICAgcmV0dXJuIG1fY3VycmVudFNldHRpbmdzOwogfQog
CiBBdWRpb1NvdXJjZVByb3ZpZGVyKiBNZWRpYVN0cmVhbUF1ZGlvU291cmNlOjphdWRpb1NvdXJj
ZVByb3ZpZGVyKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFT
dHJlYW1BdWRpb1NvdXJjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJjZS5oCShyZXZpc2lvbiAxOTI5MzApCisrKyBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9Tb3VyY2UuaAko
d29ya2luZyBjb3B5KQpAQCAtNDgsNyArNDgsNyBAQCBwdWJsaWM6CiAgICAgfk1lZGlhU3RyZWFt
QXVkaW9Tb3VyY2UoKSB7IH0KIAogICAgIFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJp
bGl0aWVzPiBjYXBhYmlsaXRpZXMoKSBvdmVycmlkZTsKLSAgICBjb25zdCBSZWFsdGltZU1lZGlh
U291cmNlU3RhdGVzJiBzdGF0ZXMoKSBvdmVycmlkZTsKKyAgICBjb25zdCBSZWFsdGltZU1lZGlh
U291cmNlU2V0dGluZ3MmIHNldHRpbmdzKCkgb3ZlcnJpZGU7CiAgICAgCiAgICAgY29uc3QgU3Ry
aW5nJiBkZXZpY2VJZCgpIGNvbnN0IHsgcmV0dXJuIG1fZGV2aWNlSWQ7IH0KICAgICB2b2lkIHNl
dERldmljZUlkKGNvbnN0IFN0cmluZyYgZGV2aWNlSWQpIHsgbV9kZXZpY2VJZCA9IGRldmljZUlk
OyB9CkBAIC02OCw3ICs2OCw3IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fZGV2aWNlSWQ7CiAg
ICAgTG9jayBtX2F1ZGlvQ29uc3VtZXJzTG9jazsKICAgICBWZWN0b3I8UmVmUHRyPEF1ZGlvRGVz
dGluYXRpb25Db25zdW1lcj4+IG1fYXVkaW9Db25zdW1lcnM7Ci0gICAgUmVhbHRpbWVNZWRpYVNv
dXJjZVN0YXRlcyBtX2N1cnJlbnRTdGF0ZXM7CisgICAgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRp
bmdzIG1fY3VycmVudFNldHRpbmdzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRl
eDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkocmV2aXNpb24gMTkyOTMwKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zMTksMTEgKzMxOSwxMSBAQAogCQkw
N0JERDZFQzE0NjlCNEMyMDA5QzlGODUgLyogSlNUcmFja0V2ZW50Q3VzdG9tLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3QjVBMzBBMTQ2ODdCODQw
MEE4MUVDRSAvKiBKU1RyYWNrRXZlbnRDdXN0b20uY3BwICovOyB9OwogCQkwN0MxQzBFMjFCRkI2
MDAxMDBCRDIyNTYgLyogTWVkaWFUcmFja1N1cHBvcnRlZENvbnN0cmFpbnRzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0MxQzBFMDFCRkI2MDAxMDBC
RDIyNTYgLyogTWVkaWFUcmFja1N1cHBvcnRlZENvbnN0cmFpbnRzLmggKi87IH07CiAJCTA3QzFD
MEU1MUJGQjYwRUQwMEJEMjI1NiAvKiBSZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3Ry
YWludHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3
QzFDMEU0MUJGQjYwRUQwMEJEMjI1NiAvKiBSZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29u
c3RyYWludHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwotCQkwN0M1OUI2ODE3Rjc4NEJBMDAwRkJDQkIgLyogTWVkaWFTb3VyY2VTdGF0ZXMuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdDNTlCNjUxN0Y3
ODRCQTAwMEZCQ0JCIC8qIE1lZGlhU291cmNlU3RhdGVzLmNwcCAqLzsgfTsKLQkJMDdDNTlCNjkx
N0Y3ODRCQTAwMEZCQ0JCIC8qIE1lZGlhU291cmNlU3RhdGVzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0M1OUI2NjE3Rjc4NEJBMDAwRkJDQkIgLyog
TWVkaWFTb3VyY2VTdGF0ZXMuaCAqLzsgfTsKLQkJMDdDNTlCNkUxN0Y3OTRGNjAwMEZCQ0JCIC8q
IEpTTWVkaWFTb3VyY2VTdGF0ZXNDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMDdDNTlCNkQxN0Y3OTRGNjAwMEZCQ0JCIC8qIEpTTWVkaWFT
b3VyY2VTdGF0ZXNDdXN0b20uY3BwICovOyB9OwotCQkwN0M1OUI3MTE3Rjc5QzdDMDAwRkJDQkIg
LyogSlNNZWRpYVNvdXJjZVN0YXRlcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwN0M1OUI2RjE3Rjc5QzdDMDAwRkJDQkIgLyogSlNNZWRpYVNvdXJj
ZVN0YXRlcy5jcHAgKi87IH07Ci0JCTA3QzU5QjcyMTdGNzlDN0MwMDBGQkNCQiAvKiBKU01lZGlh
U291cmNlU3RhdGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwN0M1OUI3MDE3Rjc5QzdDMDAwRkJDQkIgLyogSlNNZWRpYVNvdXJjZVN0YXRlcy5oICov
OyB9OworCQkwN0M1OUI2ODE3Rjc4NEJBMDAwRkJDQkIgLyogTWVkaWFTb3VyY2VTZXR0aW5ncy5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0M1OUI2
NTE3Rjc4NEJBMDAwRkJDQkIgLyogTWVkaWFTb3VyY2VTZXR0aW5ncy5jcHAgKi87IH07CisJCTA3
QzU5QjY5MTdGNzg0QkEwMDBGQkNCQiAvKiBNZWRpYVNvdXJjZVNldHRpbmdzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0M1OUI2NjE3Rjc4NEJBMDAw
RkJDQkIgLyogTWVkaWFTb3VyY2VTZXR0aW5ncy5oICovOyB9OworCQkwN0M1OUI2RTE3Rjc5NEY2
MDAwRkJDQkIgLyogSlNNZWRpYVN0cmVhbVRyYWNrQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3QzU5QjZEMTdGNzk0RjYwMDBGQkNCQiAv
KiBKU01lZGlhU3RyZWFtVHJhY2tDdXN0b20uY3BwICovOyB9OworCQkwN0M1OUI3MTE3Rjc5QzdD
MDAwRkJDQkIgLyogSlNNZWRpYVNvdXJjZVNldHRpbmdzLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3QzU5QjZGMTdGNzlDN0MwMDBGQkNCQiAvKiBK
U01lZGlhU291cmNlU2V0dGluZ3MuY3BwICovOyB9OworCQkwN0M1OUI3MjE3Rjc5QzdDMDAwRkJD
QkIgLyogSlNNZWRpYVNvdXJjZVNldHRpbmdzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwN0M1OUI3MDE3Rjc5QzdDMDAwRkJDQkIgLyogSlNNZWRpYVNv
dXJjZVNldHRpbmdzLmggKi87IH07CiAJCTA3QzU5Qjc2MTdGN0QwREIwMDBGQkNCQiAvKiBDYXBh
YmlsaXR5UmFuZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDA3QzU5Qjc0MTdGN0QwOUQwMDBGQkNCQiAvKiBDYXBhYmlsaXR5UmFuZ2UuaCAqLzsgfTsK
IAkJMDdDQTEyMEUxODJENjdEODAwRDEyMTk3IC8qIEpTUlRDUGVlckNvbm5lY3Rpb25DdXN0b20u
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdDQTEy
MEQxODJENjdEODAwRDEyMTk3IC8qIEpTUlRDUGVlckNvbm5lY3Rpb25DdXN0b20uY3BwICovOyB9
OwogCQkwN0NFNzdENTE2NzEyQTZBMDBDNTVBNDcgLyogSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUNs
aWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdD
RTc3RDQxNjcxMkE2QTAwQzU1QTQ3IC8qIEluYmFuZFRleHRUcmFja1ByaXZhdGVDbGllbnQuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTg1Nyw4
ICsxODU3LDggQEAKIAkJNEE0RjY1NzAxQUE5OTdGMTAwRTM4Q0REIC8qIFJlYWx0aW1lTWVkaWFT
b3VyY2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NEE0RjY1NkIxQUE5OTdGMTAwRTM4Q0REIC8qIFJlYWx0aW1lTWVkaWFTb3VyY2UuY3BwICovOyB9
OwogCQk0QTRGNjU3MTFBQTk5N0YxMDBFMzhDREQgLyogUmVhbHRpbWVNZWRpYVNvdXJjZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEE0RjY1NkMxQUE5
OTdGMTAwRTM4Q0REIC8qIFJlYWx0aW1lTWVkaWFTb3VyY2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0QTRGNjU3MjFBQTk5N0YxMDBFMzhDREQg
LyogUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEE0RjY1NkQxQUE5OTdGMTAwRTM4Q0REIC8qIFJl
YWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk0QTRGNjU3MzFBQTk5N0YxMDBFMzhDREQgLyogUmVh
bHRpbWVNZWRpYVNvdXJjZVN0YXRlcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0QTRGNjU2RTFBQTk5N0YxMDBFMzhDREQgLyogUmVhbHRpbWVNZWRp
YVNvdXJjZVN0YXRlcy5jcHAgKi87IH07Ci0JCTRBNEY2NTc0MUFBOTk3RjEwMEUzOENERCAvKiBS
ZWFsdGltZU1lZGlhU291cmNlU3RhdGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0QTRGNjU2RjFBQTk5N0YxMDBFMzhDREQgLyogUmVhbHRpbWVNZWRp
YVNvdXJjZVN0YXRlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCTRBNEY2NTczMUFBOTk3RjEwMEUzOENERCAvKiBSZWFsdGltZU1lZGlhU291cmNl
U2V0dGluZ3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNEE0RjY1NkUxQUE5OTdGMTAwRTM4Q0REIC8qIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5n
cy5jcHAgKi87IH07CisJCTRBNEY2NTc0MUFBOTk3RjEwMEUzOENERCAvKiBSZWFsdGltZU1lZGlh
U291cmNlU2V0dGluZ3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDRBNEY2NTZGMUFBOTk3RjEwMEUzOENERCAvKiBSZWFsdGltZU1lZGlhU291cmNlU2V0
dGluZ3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk0QTVBMkFEQjE2MUU3RTAwMDA1ODg5REQgLyogV2ViU29ja2V0RXh0ZW5zaW9uUGFyc2VyLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRBNUEyQUQ5
MTYxRTdFMDAwMDU4ODlERCAvKiBXZWJTb2NrZXRFeHRlbnNpb25QYXJzZXIuY3BwICovOyB9Owog
CQk0QTVBMkFEQzE2MUU3RTAwMDA1ODg5REQgLyogV2ViU29ja2V0RXh0ZW5zaW9uUGFyc2VyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QTVBMkFEQTE2
MUU3RTAwMDA1ODg5REQgLyogV2ViU29ja2V0RXh0ZW5zaW9uUGFyc2VyLmggKi87IH07CiAJCTRB
NkU5RkMzMTNDMTdEMUQwMDQ2QTdGOCAvKiBDU1NGb250RmVhdHVyZVZhbHVlLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRBNkU5RkMxMTNDMTdEMUQw
MDQ2QTdGOCAvKiBDU1NGb250RmVhdHVyZVZhbHVlLmNwcCAqLzsgfTsKQEAgLTc2MTMsMTIgKzc2
MTMsMTEgQEAKIAkJMDdDMUMwRTExQkZCNjAwMTAwQkQyMjU2IC8qIE1lZGlhVHJhY2tTdXBwb3J0
ZWRDb25zdHJhaW50cy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gTWVkaWFUcmFja1N1cHBv
cnRlZENvbnN0cmFpbnRzLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDdDMUMw
RTQxQkZCNjBFRDAwQkQyMjU2IC8qIFJlYWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJh
aW50cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWFsdGltZU1lZGlhU291
cmNlU3VwcG9ydGVkQ29uc3RyYWludHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MDdDMUMwRTYxQkZCOTBBNzAwQkQyMjU2IC8qIEpTTWVkaWFUcmFja1N1cHBvcnRlZENvbnN0cmFp
bnRzQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTWVk
aWFUcmFja1N1cHBvcnRlZENvbnN0cmFpbnRzQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJMDdDNTlCNjUxN0Y3ODRCQTAwMEZCQ0JCIC8qIE1lZGlhU291cmNlU3RhdGVz
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlhU291cmNlU3Rh
dGVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMDdDNTlCNjYxN0Y3ODRCQTAw
MEZCQ0JCIC8qIE1lZGlhU291cmNlU3RhdGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IE1lZGlhU291cmNlU3RhdGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTA3QzU5QjY3MTdGNzg0QkEwMDBGQkNCQiAvKiBNZWRpYVNvdXJjZVN0YXRlcy5pZGwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gTWVkaWFTb3VyY2VTdGF0ZXMuaWRsOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQkwN0M1OUI2RDE3Rjc5NEY2MDAwRkJDQkIgLyogSlNNZWRpYVNvdXJjZVN0
YXRlc0N1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU01l
ZGlhU291cmNlU3RhdGVzQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
MDdDNTlCNkYxN0Y3OUM3QzAwMEZCQ0JCIC8qIEpTTWVkaWFTb3VyY2VTdGF0ZXMuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNNZWRpYVNvdXJjZVN0YXRlcy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTA3QzU5QjcwMTdGNzlDN0MwMDBGQkNCQiAv
KiBKU01lZGlhU291cmNlU3RhdGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEpTTWVkaWFTb3VyY2VTdGF0ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDdD
NTlCNjUxN0Y3ODRCQTAwMEZCQ0JCIC8qIE1lZGlhU291cmNlU2V0dGluZ3MuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFTb3VyY2VTZXR0aW5ncy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3QzU5QjY2MTdGNzg0QkEwMDBGQkNCQiAvKiBN
ZWRpYVNvdXJjZVNldHRpbmdzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1l
ZGlhU291cmNlU2V0dGluZ3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDdDNTlC
NkQxN0Y3OTRGNjAwMEZCQ0JCIC8qIEpTTWVkaWFTdHJlYW1UcmFja0N1c3RvbS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU01lZGlhU3RyZWFtVHJhY2tDdXN0b20u
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwN0M1OUI2RjE3Rjc5QzdDMDAwRkJD
QkIgLyogSlNNZWRpYVNvdXJjZVNldHRpbmdzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEpTTWVkaWFTb3VyY2VTZXR0aW5ncy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTA3QzU5QjcwMTdGNzlDN0MwMDBGQkNCQiAvKiBKU01lZGlhU291cmNlU2V0
dGluZ3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNNZWRpYVNvdXJjZVNl
dHRpbmdzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3QzU5QjczMTdGN0QwOUQw
MDBGQkNCQiAvKiBBbGxWaWRlb0NhcGFiaWxpdGllcy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRo
ID0gQWxsVmlkZW9DYXBhYmlsaXRpZXMuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwN0M1OUI3NDE3RjdEMDlEMDAwRkJDQkIgLyogQ2FwYWJpbGl0eVJhbmdlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhcGFiaWxpdHlSYW5nZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwN0M1OUI3NTE3RjdEMDlEMDAwRkJDQkIgLyogQ2FwYWJpbGl0eVJh
bmdlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBDYXBhYmlsaXR5UmFuZ2UuaWRsOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTI4OSw4ICs5Mjg4LDggQEAKIAkJNEE0RjY1NkIx
QUE5OTdGMTAwRTM4Q0REIC8qIFJlYWx0aW1lTWVkaWFTb3VyY2UuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRBNEY2NTZDMUFBOTk3RjEwMEUzOENERCAvKiBSZWFsdGlt
ZU1lZGlhU291cmNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlYWx0aW1l
TWVkaWFTb3VyY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEE0RjY1NkQxQUE5
OTdGMTAwRTM4Q0REIC8qIFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGll
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0QTRGNjU2RTFBQTk5N0YxMDBFMzhD
REQgLyogUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNEE0RjY1NkYxQUE5OTdGMTAwRTM4Q0REIC8qIFJlYWx0aW1l
TWVkaWFTb3VyY2VTdGF0ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVh
bHRpbWVNZWRpYVNvdXJjZVN0YXRlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0
QTRGNjU2RTFBQTk5N0YxMDBFMzhDREQgLyogUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlYWx0aW1lTWVkaWFTb3Vy
Y2VTZXR0aW5ncy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTRBNEY2NTZGMUFB
OTk3RjEwMEUzOENERCAvKiBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRBNUEyQUQ5MTYxRTdFMDAwMDU4ODlERCAvKiBX
ZWJTb2NrZXRFeHRlbnNpb25QYXJzZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gV2ViU29ja2V0RXh0ZW5zaW9uUGFyc2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNEE1QTJBREExNjFFN0UwMDAwNTg4OUREIC8qIFdlYlNvY2tldEV4dGVuc2lv
blBhcnNlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTb2NrZXRFeHRl
bnNpb25QYXJzZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEE2RTlGQzExM0Mx
N0QxRDAwNDZBN0Y4IC8qIENTU0ZvbnRGZWF0dXJlVmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gQ1NTRm9udEZlYXR1cmVWYWx1ZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0xNTE2OCw5ICsxNTE2Nyw4IEBACiAJCQkJMDczOTRFQzkxQkFC
MkNENzAwQkU5OUNEIC8qIE1lZGlhRGV2aWNlc1JlcXVlc3QuaCAqLywKIAkJCQk1RTE2QTJFMjFC
RkE2NEZCMDAyOUEyMUUgLyogTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uLmNwcCAqLywKIAkJ
CQk1RTE2QTJFMzFCRkE2NEZCMDAyOUEyMUUgLyogTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9u
LmggKi8sCi0JCQkJMDdDNTlCNjUxN0Y3ODRCQTAwMEZCQ0JCIC8qIE1lZGlhU291cmNlU3RhdGVz
LmNwcCAqLywKLQkJCQkwN0M1OUI2NjE3Rjc4NEJBMDAwRkJDQkIgLyogTWVkaWFTb3VyY2VTdGF0
ZXMuaCAqLywKLQkJCQkwN0M1OUI2NzE3Rjc4NEJBMDAwRkJDQkIgLyogTWVkaWFTb3VyY2VTdGF0
ZXMuaWRsICovLAorCQkJCTA3QzU5QjY1MTdGNzg0QkEwMDBGQkNCQiAvKiBNZWRpYVNvdXJjZVNl
dHRpbmdzLmNwcCAqLywKKwkJCQkwN0M1OUI2NjE3Rjc4NEJBMDAwRkJDQkIgLyogTWVkaWFTb3Vy
Y2VTZXR0aW5ncy5oICovLAogCQkJCTA3MjIxQjRDMTdDRUMzMjcwMDg0OEU1MSAvKiBNZWRpYVN0
cmVhbS5jcHAgKi8sCiAJCQkJMDcyMjFCNEQxN0NFQzMyNzAwODQ4RTUxIC8qIE1lZGlhU3RyZWFt
LmggKi8sCiAJCQkJMDcyMjFCNEUxN0NFQzMyNzAwODQ4RTUxIC8qIE1lZGlhU3RyZWFtLmlkbCAq
LywKQEAgLTE1Mjk0LDggKzE1MjkyLDggQEAKIAkJCQk0QTRGNjU2RDFBQTk5N0YxMDBFMzhDREQg
LyogUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcy5oICovLAogCQkJCTRBMEZGQTlGMUFB
RjVFQTIwMDYyODAzQiAvKiBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcCAqLywKIAkJCQk0
QTBGRkFBMDFBQUY1RUEyMDA2MjgwM0IgLyogUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oICov
LAotCQkJCTRBNEY2NTZFMUFBOTk3RjEwMEUzOENERCAvKiBSZWFsdGltZU1lZGlhU291cmNlU3Rh
dGVzLmNwcCAqLywKLQkJCQk0QTRGNjU2RjFBQTk5N0YxMDBFMzhDREQgLyogUmVhbHRpbWVNZWRp
YVNvdXJjZVN0YXRlcy5oICovLAorCQkJCTRBNEY2NTZFMUFBOTk3RjEwMEUzOENERCAvKiBSZWFs
dGltZU1lZGlhU291cmNlU2V0dGluZ3MuY3BwICovLAorCQkJCTRBNEY2NTZGMUFBOTk3RjEwMEUz
OENERCAvKiBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MuaCAqLywKIAkJCQkwN0FCOTk2RDE4
REEzQzc0MDAxODc3MUUgLyogUlRDQ29uZmlndXJhdGlvblByaXZhdGUuaCAqLywKIAkJCQkwNzIy
MUJBMjE3Q0YwQUQ0MDA4NDhFNTEgLyogUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmggKi8sCiAJCQkJ
MDcyMjFCQTMxN0NGMEFENDAwODQ4RTUxIC8qIFJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudC5o
ICovLApAQCAtMTUzOTEsOCArMTUzODksOCBAQAogCQkJCTE1N0NDMjYyMUI3QzFDQTQwMEQ4RDA3
NSAvKiBKU01lZGlhRGV2aWNlSW5mby5oICovLAogCQkJCTE1NzM5QkI4MUI0MjAxMjIwMEQyNThD
MSAvKiBKU01lZGlhRGV2aWNlcy5jcHAgKi8sCiAJCQkJMTU3MzlCQjkxQjQyMDEyMjAwRDI1OEMx
IC8qIEpTTWVkaWFEZXZpY2VzLmggKi8sCi0JCQkJMDdDNTlCNkYxN0Y3OUM3QzAwMEZCQ0JCIC8q
IEpTTWVkaWFTb3VyY2VTdGF0ZXMuY3BwICovLAotCQkJCTA3QzU5QjcwMTdGNzlDN0MwMDBGQkNC
QiAvKiBKU01lZGlhU291cmNlU3RhdGVzLmggKi8sCisJCQkJMDdDNTlCNkYxN0Y3OUM3QzAwMEZC
Q0JCIC8qIEpTTWVkaWFTb3VyY2VTZXR0aW5ncy5jcHAgKi8sCisJCQkJMDdDNTlCNzAxN0Y3OUM3
QzAwMEZCQ0JCIC8qIEpTTWVkaWFTb3VyY2VTZXR0aW5ncy5oICovLAogCQkJCTA3Mjc3RTQwMTdE
MDE4Q0MwMDE1NTM0RCAvKiBKU01lZGlhU3RyZWFtLmNwcCAqLywKIAkJCQkwNzI3N0U0MTE3RDAx
OENDMDAxNTUzNEQgLyogSlNNZWRpYVN0cmVhbS5oICovLAogCQkJCTA3Mjc3RTQyMTdEMDE4Q0Mw
MDE1NTM0RCAvKiBKU01lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwICovLApAQCAt
MjIxNjgsNyArMjIxNjYsNyBAQAogCQkJCUJDRTFDNDNGMEQ5ODMwRjQwMDNCMDJGMiAvKiBKU0xv
Y2F0aW9uQ3VzdG9tLmNwcCAqLywKIAkJCQlBRDcyNkZFNzE2RDlGMjA0MDAzQTRFNkQgLyogSlNN
ZWRpYUxpc3RDdXN0b20uaCAqLywKIAkJCQkwNzdCNjQwRTFCOEY1Mzc1MDAzRTlBRDUgLyogSlNN
ZWRpYVNlc3Npb25DdXN0b20uY3BwICovLAotCQkJCTA3QzU5QjZEMTdGNzk0RjYwMDBGQkNCQiAv
KiBKU01lZGlhU291cmNlU3RhdGVzQ3VzdG9tLmNwcCAqLywKKwkJCQkwN0M1OUI2RDE3Rjc5NEY2
MDAwRkJDQkIgLyogSlNNZWRpYVN0cmVhbVRyYWNrQ3VzdG9tLmNwcCAqLywKIAkJCQkwNzA1ODUx
NjE3RkI0MEU5MDA1RjJCQ0IgLyogSlNNZWRpYVN0cmVhbUNhcGFiaWxpdGllc0N1c3RvbS5jcHAg
Ki8sCiAJCQkJRTFBNUY5OUEwRTdFQUEyNTAwQUY4NUVBIC8qIEpTTWVzc2FnZUNoYW5uZWxDdXN0
b20uY3BwICovLAogCQkJCTA3QzFDMEU2MUJGQjkwQTcwMEJEMjI1NiAvKiBKU01lZGlhVHJhY2tT
dXBwb3J0ZWRDb25zdHJhaW50c0N1c3RvbS5jcHAgKi8sCkBAIC0yNjI5MSw3ICsyNjI4OSw3IEBA
CiAJCQkJRDNBOTRBNDcxMjJEQzQwRjAwQTM3QkJDIC8qIEpTTWVkaWFRdWVyeUxpc3QuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTdDNTM0M0ZEMTdCNzRCNjMwMDQyMzJGMCAvKiBKU01lZGlhUXVlcnlM
aXN0TGlzdGVuZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEOURFMTc1MTdBQUM3NEMwMEVBMzg2
RCAvKiBKU01lZGlhU291cmNlLmggaW4gSGVhZGVycyAqLywKLQkJCQkwN0M1OUI3MjE3Rjc5QzdD
MDAwRkJDQkIgLyogSlNNZWRpYVNvdXJjZVN0YXRlcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMDdD
NTlCNzIxN0Y3OUM3QzAwMEZCQ0JCIC8qIEpTTWVkaWFTb3VyY2VTZXR0aW5ncy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMDcyNzdFNEQxN0QwMThDQzAwMTU1MzREIC8qIEpTTWVkaWFTdHJlYW0uaCBp
biBIZWFkZXJzICovLAogCQkJCTA3Mjc3RTRGMTdEMDE4Q0MwMDE1NTM0RCAvKiBKU01lZGlhU3Ry
ZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEQkQ0ODBEMTU5
QkM2ODcwMDkzRUI0RiAvKiBKU01lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlLmggaW4gSGVhZGVy
cyAqLywKQEAgLTI2NzgxLDcgKzI2Nzc5LDcgQEAKIAkJCQlDREM4QjVBNzE4MDQ3NEY3MDAxNkU2
ODUgLyogTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RE
QzFFN0ExOEE5NTJGMzAwMjdBOUQ0IC8qIE1lZGlhU291cmNlUHJpdmF0ZUNsaWVudC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQ0Q2MUZFNjgxNzk0QUFEQjAwNDEwMUVCIC8qIE1lZGlhU291cmNlUmVn
aXN0cnkuaCBpbiBIZWFkZXJzICovLAotCQkJCTA3QzU5QjY5MTdGNzg0QkEwMDBGQkNCQiAvKiBN
ZWRpYVNvdXJjZVN0YXRlcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMDdDNTlCNjkxN0Y3ODRCQTAw
MEZCQ0JCIC8qIE1lZGlhU291cmNlU2V0dGluZ3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3OEUw
OTE1MTdEMTREMUMwMDQyMEFBMSAvKiBNZWRpYVN0cmVhbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MDc4RTA5NEMxN0QxNzA5NjAwNDIwQUExIC8qIE1lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5v
ZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3ODMyMjg1MTgwMTNFRDgwMDk5OUUwQyAvKiBNZWRp
YVN0cmVhbUF1ZGlvU291cmNlLmggaW4gSGVhZGVycyAqLywKQEAgLTI3MTA1LDcgKzI3MTAzLDcg
QEAKIAkJCQk0QTRGNjU3MjFBQTk5N0YxMDBFMzhDREQgLyogUmVhbHRpbWVNZWRpYVNvdXJjZUNh
cGFiaWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNEEwRkZBQTIxQUFGNUVBMjAwNjI4MDNC
IC8qIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTRBMEZG
QUE2MUFBRjVFRjYwMDYyODAzQiAvKiBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjLmggaW4g
SGVhZGVycyAqLywKLQkJCQk0QTRGNjU3NDFBQTk5N0YxMDBFMzhDREQgLyogUmVhbHRpbWVNZWRp
YVNvdXJjZVN0YXRlcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNEE0RjY1NzQxQUE5OTdGMTAwRTM4
Q0REIC8qIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MDdDMUMwRTUxQkZCNjBFRDAwQkQyMjU2IC8qIFJlYWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRD
b25zdHJhaW50cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM0MzY4RTgwQzIyNkUzMjAwNUVGQjVG
IC8qIFJlY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUZENDVBOTU4MTc1RDQxNEMwMEMyMUVDOCAv
KiBSZWN0YW5nbGVTaGFwZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yOTk3Miw4ICsyOTk3MCw4IEBA
CiAJCQkJQzlEQURCQ0IxQjFEM0I5NzAwMUYxN0Q4IC8qIEpTTWVkaWFTZXNzaW9uLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTA3N0I2NDBGMUI4RjVENkIwMDNFOUFENSAvKiBKU01lZGlhU2Vzc2lv
bkN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDRDlERTE3NDE3QUFDNzRDMDBFQTM4NkQg
LyogSlNNZWRpYVNvdXJjZS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQkwN0M1OUI3MTE3Rjc5QzdD
MDAwRkJDQkIgLyogSlNNZWRpYVNvdXJjZVN0YXRlcy5jcHAgaW4gU291cmNlcyAqLywKLQkJCQkw
N0M1OUI2RTE3Rjc5NEY2MDAwRkJDQkIgLyogSlNNZWRpYVNvdXJjZVN0YXRlc0N1c3RvbS5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQkwN0M1OUI3MTE3Rjc5QzdDMDAwRkJDQkIgLyogSlNNZWRpYVNv
dXJjZVNldHRpbmdzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTA3QzU5QjZFMTdGNzk0RjYwMDBG
QkNCQiAvKiBKU01lZGlhU3RyZWFtVHJhY2tDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MDcyNzdFNEMxN0QwMThDQzAwMTU1MzREIC8qIEpTTWVkaWFTdHJlYW0uY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMDcyNzdFNEUxN0QwMThDQzAwMTU1MzREIC8qIEpTTWVkaWFTdHJlYW1BdWRpb0Rl
c3RpbmF0aW9uTm9kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGREJENDgwQzE1OUJDNjg3MDA5
M0VCNEYgLyogSlNNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZS5jcHAgaW4gU291cmNlcyAqLywK
QEAgLTMwNDg3LDcgKzMwNDg1LDcgQEAKIAkJCQlDRDNBNDk1RTE3QTlEMDFCMDAyNzRFNDIgLyog
TWVkaWFTb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RDOEI1QTYxODA0NzRGNzAwMTZF
Njg1IC8qIE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMubW0gaW4gU291cmNlcyAqLywKIAkJCQlD
RDYxRkU2NzE3OTRBQURCMDA0MTAxRUIgLyogTWVkaWFTb3VyY2VSZWdpc3RyeS5jcHAgaW4gU291
cmNlcyAqLywKLQkJCQkwN0M1OUI2ODE3Rjc4NEJBMDAwRkJDQkIgLyogTWVkaWFTb3VyY2VTdGF0
ZXMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMDdDNTlCNjgxN0Y3ODRCQTAwMEZCQ0JCIC8qIE1l
ZGlhU291cmNlU2V0dGluZ3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDc4RTA4RkYxN0QxNENF
RTAwNDIwQUExIC8qIE1lZGlhU3RyZWFtLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA3OEUwOTRC
MTdEMTcwOTYwMDQyMEFBMSAvKiBNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTA3ODMyMjg0MTgwMTNFRDgwMDk5OUUwQyAvKiBNZWRpYVN0cmVh
bUF1ZGlvU291cmNlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzA3MTcsNyArMzA3MTUsNyBAQAog
CQkJCTRBNEY2NTcwMUFBOTk3RjEwMEUzOENERCAvKiBSZWFsdGltZU1lZGlhU291cmNlLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTRBMEZGQUExMUFBRjVFQTIwMDYyODAzQiAvKiBSZWFsdGltZU1l
ZGlhU291cmNlQ2VudGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTRBMEZGQUE1MUFBRjVFRjYw
MDYyODAzQiAvKiBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjLmNwcCBpbiBTb3VyY2VzICov
LAotCQkJCTRBNEY2NTczMUFBOTk3RjEwMEUzOENERCAvKiBSZWFsdGltZU1lZGlhU291cmNlU3Rh
dGVzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTRBNEY2NTczMUFBOTk3RjEwMEUzOENERCAvKiBS
ZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkQ0NUE5
NUExNzVENDE3MTAwQzIxRUM4IC8qIFJlY3RhbmdsZVNoYXBlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUJDQUI0MTgxMTNFMzU2RTgwMEQ4QUFGMyAvKiBSZWdpb24uY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJODUwMzFCNEIwQTQ0RUZDNzAwRjk5MkUwIC8qIFJlZ2lzdGVyZWRFdmVudExpc3RlbmVy
LmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNN
ZWRpYVNvdXJjZVN0YXRlc0N1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNNZWRpYVNvdXJjZVN0YXRlc0N1c3RvbS5jcHAJKHJldmlzaW9uIDE5Mjkz
MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVkaWFTb3VyY2VTdGF0ZXNDdXN0
b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDkyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpZiBF
TkFCTEUoTUVESUFfU1RSRUFNKQotCi0jaW5jbHVkZSAiSlNNZWRpYVNvdXJjZVN0YXRlcy5oIgot
Ci0jaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCi0KLXVzaW5nIG5hbWVzcGFjZSBKU0M7Ci0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQotSlNWYWx1ZSBKU01lZGlhU291cmNlU3RhdGVzOjp3aWR0aChF
eGVjU3RhdGUmKSBjb25zdAotewotICAgIGlmICghd3JhcHBlZCgpLmhhc1ZpZGVvU291cmNlKCkp
Ci0gICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotCi0gICAgcmV0dXJuIGpzTnVtYmVyKHdy
YXBwZWQoKS53aWR0aCgpKTsKLX0KLQotSlNWYWx1ZSBKU01lZGlhU291cmNlU3RhdGVzOjpoZWln
aHQoRXhlY1N0YXRlJikgY29uc3QKLXsKLSAgICBpZiAoIXdyYXBwZWQoKS5oYXNWaWRlb1NvdXJj
ZSgpKQotICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLSAgICAKLSAgICByZXR1cm4ganNO
dW1iZXIod3JhcHBlZCgpLmhlaWdodCgpKTsKLX0KLQotSlNWYWx1ZSBKU01lZGlhU291cmNlU3Rh
dGVzOjpmcmFtZVJhdGUoRXhlY1N0YXRlJikgY29uc3QKLXsKLSAgICBpZiAoIXdyYXBwZWQoKS5o
YXNWaWRlb1NvdXJjZSgpKQotICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLSAgICAKLSAg
ICByZXR1cm4ganNOdW1iZXIod3JhcHBlZCgpLmZyYW1lUmF0ZSgpKTsKLX0KLQotSlNWYWx1ZSBK
U01lZGlhU291cmNlU3RhdGVzOjphc3BlY3RSYXRpbyhFeGVjU3RhdGUmKSBjb25zdAotewotICAg
IGlmICghd3JhcHBlZCgpLmhhc1ZpZGVvU291cmNlKCkpCi0gICAgICAgIHJldHVybiBqc1VuZGVm
aW5lZCgpOwotICAgIAotICAgIHJldHVybiBqc051bWJlcih3cmFwcGVkKCkuYXNwZWN0UmF0aW8o
KSk7Ci19Ci0KLUpTVmFsdWUgSlNNZWRpYVNvdXJjZVN0YXRlczo6ZmFjaW5nTW9kZShFeGVjU3Rh
dGUmIHN0YXRlKSBjb25zdAotewotICAgIGlmICghd3JhcHBlZCgpLmhhc1ZpZGVvU291cmNlKCkp
Ci0gICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotCi0gICAgY29uc3QgQXRvbWljU3RyaW5n
JiBtb2RlID0gd3JhcHBlZCgpLmZhY2luZ01vZGUoKTsKLSAgICBpZiAobW9kZS5pc0VtcHR5KCkp
Ci0gICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotICAgIAotICAgIHJldHVybiBqc1N0cmlu
Z1dpdGhDYWNoZSgmc3RhdGUsIHdyYXBwZWQoKS5mYWNpbmdNb2RlKCkpOwotfQotCi1KU1ZhbHVl
IEpTTWVkaWFTb3VyY2VTdGF0ZXM6OnZvbHVtZShFeGVjU3RhdGUmKSBjb25zdAotewotICAgIGlm
ICh3cmFwcGVkKCkuaGFzVmlkZW9Tb3VyY2UoKSkKLSAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVk
KCk7Ci0gICAgCi0gICAgcmV0dXJuIGpzTnVtYmVyKHdyYXBwZWQoKS52b2x1bWUoKSk7Ci19Ci0K
LX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU01lZGlhU3RyZWFtVHJhY2tDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVkaWFTdHJlYW1UcmFja0N1c3RvbS5jcHAJKHJl
dmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lZGlhU3RyZWFtVHJh
Y2tDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsODAgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiSlNNZWRpYVN0cmVhbVRyYWNrLmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFN
KQorCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgIkpTRE9NQmluZGluZy5o
IgorI2luY2x1ZGUgIk1lZGlhU291cmNlU2V0dGluZ3MuaCIKKyNpbmNsdWRlIDxydW50aW1lL0pT
T2JqZWN0Lmg+CisjaW5jbHVkZSA8cnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5oPgorCit1c2lu
ZyBuYW1lc3BhY2UgSlNDOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0pTQzo6SlNWYWx1ZSBK
U01lZGlhU3RyZWFtVHJhY2s6OmdldFNldHRpbmdzKEV4ZWNTdGF0ZSYgc3RhdGUpCit7CisgICAg
SlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS50aGlzVmFsdWUoKTsKKyAgICBKU01lZGlhU3RyZWFt
VHJhY2sqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTTWVkaWFTdHJlYW1UcmFjayo+KHRo
aXNWYWx1ZSk7CisgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKKyAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmRlY29kZSh0aHJvd1RoaXNUeXBlRXJyb3Ioc3RhdGUsICJNZWRpYVN0cmVhbVRy
YWNrIiwgImdldFNldHRpbmdzIikpOworCisgICAgSlNPYmplY3QqIG9iamVjdCA9IGNvbnN0cnVj
dEVtcHR5T2JqZWN0KCZzdGF0ZSk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBw
ZWQoKTsKKyAgICBSZWZQdHI8TWVkaWFTb3VyY2VTZXR0aW5ncz4gc2V0dGluZ3MgPSBXVEY6Omdl
dFB0cihpbXBsLmdldFNldHRpbmdzKCkpOworCisgICAgaWYgKHNldHRpbmdzLT5zdXBwb3J0c1dp
ZHRoKCkpCisgICAgICAgIG9iamVjdC0+cHV0RGlyZWN0KHN0YXRlLnZtKCksIElkZW50aWZpZXI6
OmZyb21TdHJpbmcoJnN0YXRlLCAid2lkdGgiKSwganNOdW1iZXIoc2V0dGluZ3MtPndpZHRoKCkp
LCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOworICAgIGlmIChzZXR0aW5ncy0+c3VwcG9ydHNIZWln
aHQoKSkKKyAgICAgICAgb2JqZWN0LT5wdXREaXJlY3Qoc3RhdGUudm0oKSwgSWRlbnRpZmllcjo6
ZnJvbVN0cmluZygmc3RhdGUsICJoZWlnaHQiKSwganNOdW1iZXIoc2V0dGluZ3MtPmhlaWdodCgp
KSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKKyAgICBpZiAoc2V0dGluZ3MtPnN1cHBvcnRzQXNw
ZWN0UmF0aW8oKSkKKyAgICAgICAgb2JqZWN0LT5wdXREaXJlY3Qoc3RhdGUudm0oKSwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZygmc3RhdGUsICJhc3BlY3RSYXRpbyIpLCBqc0RvdWJsZU51bWJlcihz
ZXR0aW5ncy0+YXNwZWN0UmF0aW8oKSksIERvbnREZWxldGUgfCBSZWFkT25seSk7CisgICAgaWYg
KHNldHRpbmdzLT5zdXBwb3J0c0ZyYW1lUmF0ZSgpKQorICAgICAgICBvYmplY3QtPnB1dERpcmVj
dChzdGF0ZS52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZzdGF0ZSwgImZyYW1lUmF0ZSIp
LCBqc0RvdWJsZU51bWJlcihzZXR0aW5ncy0+ZnJhbWVSYXRlKCkpLCBEb250RGVsZXRlIHwgUmVh
ZE9ubHkpOworICAgIGlmIChzZXR0aW5ncy0+c3VwcG9ydHNGYWNpbmdNb2RlKCkpCisgICAgICAg
IG9iamVjdC0+cHV0RGlyZWN0KHN0YXRlLnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnN0
YXRlLCAiZmFjaW5nTW9kZSIpLCBqc1N0cmluZ1dpdGhDYWNoZSgmc3RhdGUsIHNldHRpbmdzLT5m
YWNpbmdNb2RlKCkpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOworICAgIGlmIChzZXR0aW5ncy0+
c3VwcG9ydHNWb2x1bWUoKSkKKyAgICAgICAgb2JqZWN0LT5wdXREaXJlY3Qoc3RhdGUudm0oKSwg
SWRlbnRpZmllcjo6ZnJvbVN0cmluZygmc3RhdGUsICJ2b2x1bWUiKSwganNEb3VibGVOdW1iZXIo
c2V0dGluZ3MtPnZvbHVtZSgpKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKKyAgICBpZiAoc2V0
dGluZ3MtPnN1cHBvcnRzU2FtcGxlUmF0ZSgpKQorICAgICAgICBvYmplY3QtPnB1dERpcmVjdChz
dGF0ZS52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZzdGF0ZSwgInNhbXBsZVJhdGUiKSwg
anNOdW1iZXIoc2V0dGluZ3MtPnNhbXBsZVJhdGUoKSksIERvbnREZWxldGUgfCBSZWFkT25seSk7
CisgICAgaWYgKHNldHRpbmdzLT5zdXBwb3J0c1NhbXBsZVNpemUoKSkKKyAgICAgICAgb2JqZWN0
LT5wdXREaXJlY3Qoc3RhdGUudm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmc3RhdGUsICJz
YW1wbGVTaXplIiksIGpzTnVtYmVyKHNldHRpbmdzLT5zYW1wbGVTaXplKCkpLCBEb250RGVsZXRl
IHwgUmVhZE9ubHkpOworICAgIGlmIChzZXR0aW5ncy0+c3VwcG9ydHNFY2hvQ2FuY2VsbGF0aW9u
KCkpCisgICAgICAgIG9iamVjdC0+cHV0RGlyZWN0KHN0YXRlLnZtKCksIElkZW50aWZpZXI6OmZy
b21TdHJpbmcoJnN0YXRlLCAiZWNob0NhbmNlbGxhdGlvbiIpLCBqc0Jvb2xlYW4oc2V0dGluZ3Mt
PmVjaG9DYW5jZWxsYXRpb24oKSksIERvbnREZWxldGUgfCBSZWFkT25seSk7CisgICAgaWYgKHNl
dHRpbmdzLT5zdXBwb3J0c0RldmljZUlkKCkpCisgICAgICAgIG9iamVjdC0+cHV0RGlyZWN0KHN0
YXRlLnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnN0YXRlLCAiZGV2aWNlSWQiKSwganNT
dHJpbmdXaXRoQ2FjaGUoJnN0YXRlLCBzZXR0aW5ncy0+ZGV2aWNlSWQoKSksIERvbnREZWxldGUg
fCBSZWFkT25seSk7CisgICAgaWYgKHNldHRpbmdzLT5zdXBwb3J0c0dyb3VwSWQoKSkKKyAgICAg
ICAgb2JqZWN0LT5wdXREaXJlY3Qoc3RhdGUudm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygm
c3RhdGUsICJncm91cElkIiksIGpzU3RyaW5nV2l0aENhY2hlKCZzdGF0ZSwgc2V0dGluZ3MtPmdy
b3VwSWQoKSksIERvbnREZWxldGUgfCBSZWFkT25seSk7CisgICAgCisgICAgcmV0dXJuIG9iamVj
dDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtUHJpdmF0ZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Q
cml2YXRlLmNwcAkocmV2aXNpb24gMTkyOTMwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Qcml2YXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjA0
LDkgKzIwNCw5IEBAIEZsb2F0U2l6ZSBNZWRpYVN0cmVhbVByaXZhdGU6OmludHJpbnNpY1MKICAg
ICBGbG9hdFNpemUgc2l6ZTsKIAogICAgIGlmIChtX2FjdGl2ZVZpZGVvVHJhY2spIHsKLSAgICAg
ICAgY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlcyYgc3RhdGVzID0gbV9hY3RpdmVWaWRl
b1RyYWNrLT5zb3VyY2UoKS0+c3RhdGVzKCk7Ci0gICAgICAgIHNpemUuc2V0V2lkdGgoc3RhdGVz
LndpZHRoKCkpOwotICAgICAgICBzaXplLnNldEhlaWdodChzdGF0ZXMuaGVpZ2h0KCkpOworICAg
ICAgICBjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmIHNldHRpbmcgPSBtX2FjdGl2
ZVZpZGVvVHJhY2stPnNldHRpbmdzKCk7CisgICAgICAgIHNpemUuc2V0V2lkdGgoc2V0dGluZy53
aWR0aCgpKTsKKyAgICAgICAgc2l6ZS5zZXRIZWlnaHQoc2V0dGluZy5oZWlnaHQoKSk7CiAgICAg
fQogCiAgICAgcmV0dXJuIHNpemU7CkBAIC0yNjgsNyArMjY4LDcgQEAgdm9pZCBNZWRpYVN0cmVh
bVByaXZhdGU6OnRyYWNrTXV0ZWRDaGFuZwogICAgIH0pOwogfQogCi12b2lkIE1lZGlhU3RyZWFt
UHJpdmF0ZTo6dHJhY2tTdGF0ZXNDaGFuZ2VkKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJikKK3Zv
aWQgTWVkaWFTdHJlYW1Qcml2YXRlOjp0cmFja1NldHRpbmdzQ2hhbmdlZChNZWRpYVN0cmVhbVRy
YWNrUHJpdmF0ZSYpCiB7CiAgICAgY2hhcmFjdGVyaXN0aWNzQ2hhbmdlZCgpOwogfQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Qcml2YXRlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFT
dHJlYW1Qcml2YXRlLmgJKHJldmlzaW9uIDE5MjkzMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtUHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
MDQsNyArMTA0LDcgQEAgcHJpdmF0ZToKICAgICAvLyBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6
T2JzZXJ2ZXIKICAgICB2b2lkIHRyYWNrRW5kZWQoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmKSBv
dmVycmlkZTsKICAgICB2b2lkIHRyYWNrTXV0ZWRDaGFuZ2VkKE1lZGlhU3RyZWFtVHJhY2tQcml2
YXRlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB0cmFja1N0YXRlc0NoYW5nZWQoTWVkaWFTdHJlYW1U
cmFja1ByaXZhdGUmKSBvdmVycmlkZTsKKyAgICB2b2lkIHRyYWNrU2V0dGluZ3NDaGFuZ2VkKE1l
ZGlhU3RyZWFtVHJhY2tQcml2YXRlJikgb3ZlcnJpZGU7CiAgICAgdm9pZCB0cmFja0VuYWJsZWRD
aGFuZ2VkKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGNo
YXJhY3RlcmlzdGljc0NoYW5nZWQoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tQcml2YXRlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZS5j
cHAJKHJldmlzaW9uIDE5MjkzMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtVHJhY2tQcml2YXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsOCAr
MzIsNyBAQAogI2luY2x1ZGUgIkF1ZGlvU291cmNlUHJvdmlkZXIuaCIKICNpbmNsdWRlICJHcmFw
aGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCi0jaW5jbHVkZSAiTWVkaWFTb3Vy
Y2VTdGF0ZXMuaCIKLSNpbmNsdWRlICJNZWRpYVN0cmVhbUNhcGFiaWxpdGllcy5oIgorI2luY2x1
ZGUgIk1lZGlhU291cmNlU2V0dGluZ3MuaCIKICNpbmNsdWRlICJVVUlELmgiCiAjaW5jbHVkZSA8
d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKQEAgLTE0OSw5ICsxNDgsOSBAQCBSZWZQdHI8TWVkaWFD
b25zdHJhaW50cz4gTWVkaWFTdHJlYW1UcmFjCiAgICAgcmV0dXJuIG1fY29uc3RyYWludHM7CiB9
CiAKLWNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXMmIE1lZGlhU3RyZWFtVHJhY2tQcml2
YXRlOjpzdGF0ZXMoKSBjb25zdAorY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJiBN
ZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6c2V0dGluZ3MoKSBjb25zdAogewotICAgIHJldHVybiBt
X3NvdXJjZS0+c3RhdGVzKCk7CisgICAgcmV0dXJuIG1fc291cmNlLT5zZXR0aW5ncygpOwogfQog
CiBSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcz4gTWVkaWFTdHJlYW1UcmFj
a1ByaXZhdGU6OmNhcGFiaWxpdGllcygpIGNvbnN0CkBAIC0yMDIsMTAgKzIwMSwxMCBAQCB2b2lk
IE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjpzb3VyY2VNdXRlCiAgICAgICAgIG9ic2VydmVyLT50
cmFja011dGVkQ2hhbmdlZCgqdGhpcyk7CiB9CiAKLXZvaWQgTWVkaWFTdHJlYW1UcmFja1ByaXZh
dGU6OnNvdXJjZVN0YXRlc0NoYW5nZWQoKQordm9pZCBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6
c291cmNlU2V0dGluZ3NDaGFuZ2VkKCkKIHsKICAgICBmb3IgKGF1dG8mIG9ic2VydmVyIDogbV9v
YnNlcnZlcnMpCi0gICAgICAgIG9ic2VydmVyLT50cmFja1N0YXRlc0NoYW5nZWQoKnRoaXMpOwor
ICAgICAgICBvYnNlcnZlci0+dHJhY2tTZXR0aW5nc0NoYW5nZWQoKnRoaXMpOwogfQogCiBib29s
IE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjpwcmV2ZW50U291cmNlRnJvbVN0b3BwaW5nKCkKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tQ
cml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUuaAkocmV2aXNpb24gMTkyOTMwKQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUuaAko
d29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIEF1ZGlvU291cmNlUHJvdmlkZXI7CiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7Ci1jbGFzcyBN
ZWRpYVNvdXJjZVN0YXRlczsKK2NsYXNzIE1lZGlhU291cmNlU2V0dGluZ3M7CiBjbGFzcyBSZWFs
dGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzOwogCiBjbGFzcyBNZWRpYVN0cmVhbVRyYWNrUHJp
dmF0ZSA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPiwgcHVibGlj
IFJlYWx0aW1lTWVkaWFTb3VyY2U6Ok9ic2VydmVyIHsKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGlj
OgogCiAgICAgICAgIHZpcnR1YWwgdm9pZCB0cmFja0VuZGVkKE1lZGlhU3RyZWFtVHJhY2tQcml2
YXRlJikgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgdHJhY2tNdXRlZENoYW5nZWQoTWVkaWFT
dHJlYW1UcmFja1ByaXZhdGUmKSA9IDA7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCB0cmFja1N0YXRl
c0NoYW5nZWQoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmKSA9IDA7CisgICAgICAgIHZpcnR1YWwg
dm9pZCB0cmFja1NldHRpbmdzQ2hhbmdlZChNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYpID0gMDsK
ICAgICAgICAgdmlydHVhbCB2b2lkIHRyYWNrRW5hYmxlZENoYW5nZWQoTWVkaWFTdHJlYW1UcmFj
a1ByaXZhdGUmKSA9IDA7CiAgICAgfTsKICAgICAKQEAgLTg1LDcgKzg1LDcgQEAgcHVibGljOgog
ICAgIHZvaWQgYWRkT2JzZXJ2ZXIoT2JzZXJ2ZXImKTsKICAgICB2b2lkIHJlbW92ZU9ic2VydmVy
KE9ic2VydmVyJik7CiAKLSAgICBjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzJiBzdGF0
ZXMoKSBjb25zdDsKKyAgICBjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmIHNldHRp
bmdzKCkgY29uc3Q7CiAgICAgUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM+
IGNhcGFiaWxpdGllcygpIGNvbnN0OwogCiAgICAgUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+IGNv
bnN0cmFpbnRzKCkgY29uc3Q7CkBAIC0xMDIsNyArMTAyLDcgQEAgcHJpdmF0ZToKICAgICAvLyBS
ZWFsdGltZU1lZGlhU291cmNlT2JzZXJ2ZXIKICAgICB2b2lkIHNvdXJjZVN0b3BwZWQoKSBvdmVy
cmlkZSBmaW5hbDsKICAgICB2b2lkIHNvdXJjZU11dGVkQ2hhbmdlZCgpIG92ZXJyaWRlIGZpbmFs
OwotICAgIHZvaWQgc291cmNlU3RhdGVzQ2hhbmdlZCgpIG92ZXJyaWRlIGZpbmFsOworICAgIHZv
aWQgc291cmNlU2V0dGluZ3NDaGFuZ2VkKCkgb3ZlcnJpZGUgZmluYWw7CiAgICAgYm9vbCBwcmV2
ZW50U291cmNlRnJvbVN0b3BwaW5nKCkgb3ZlcnJpZGUgZmluYWw7CiAKICAgICBWZWN0b3I8T2Jz
ZXJ2ZXIqPiBtX29ic2VydmVyczsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwCShyZXZpc2lv
biAxOTI5MzApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGlt
ZU1lZGlhU291cmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTUsMTAgKzk1LDEwIEBAIHZvaWQg
UmVhbHRpbWVNZWRpYVNvdXJjZTo6c2V0TXV0ZWQoYm9vbCAKICAgICAgICAgb2JzZXJ2ZXItPnNv
dXJjZU11dGVkQ2hhbmdlZCgpOwogfQogCi12b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OnN0YXRl
c0RpZENoYW5nZWQoKQordm9pZCBSZWFsdGltZU1lZGlhU291cmNlOjpzZXR0aW5nc0RpZENoYW5n
ZWQoKQogewogICAgIGZvciAoYXV0byYgb2JzZXJ2ZXIgOiBtX29ic2VydmVycykKLSAgICAgICAg
b2JzZXJ2ZXItPnNvdXJjZVN0YXRlc0NoYW5nZWQoKTsKKyAgICAgICAgb2JzZXJ2ZXItPnNvdXJj
ZVNldHRpbmdzQ2hhbmdlZCgpOwogfQogCiBib29sIFJlYWx0aW1lTWVkaWFTb3VyY2U6OnJlYWRv
bmx5KCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1Jl
YWx0aW1lTWVkaWFTb3VyY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmgJKHJldmlzaW9uIDE5MjkzMCkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2Uu
aAkod29ya2luZyBjb3B5KQpAQCAtNTEsNyArNTEsNyBAQCBjbGFzcyBGbG9hdFJlY3Q7CiBjbGFz
cyBHcmFwaGljc0NvbnRleHQ7CiBjbGFzcyBNZWRpYUNvbnN0cmFpbnRzOwogY2xhc3MgTWVkaWFT
dHJlYW1Qcml2YXRlOwotY2xhc3MgUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlczsKK2NsYXNzIFJl
YWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczsKIAogY2xhc3MgUmVhbHRpbWVNZWRpYVNvdXJjZSA6
IHB1YmxpYyBSZWZDb3VudGVkPFJlYWx0aW1lTWVkaWFTb3VyY2U+IHsKIHB1YmxpYzoKQEAgLTYy
LDcgKzYyLDcgQEAgcHVibGljOgogICAgICAgICAvLyBTb3VyY2Ugc3RhdGUgY2hhbmdlcy4KICAg
ICAgICAgdmlydHVhbCB2b2lkIHNvdXJjZVN0b3BwZWQoKSA9IDA7CiAgICAgICAgIHZpcnR1YWwg
dm9pZCBzb3VyY2VNdXRlZENoYW5nZWQoKSA9IDA7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBzb3Vy
Y2VTdGF0ZXNDaGFuZ2VkKCkgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgc291cmNlU2V0dGlu
Z3NDaGFuZ2VkKCkgPSAwOwogCiAgICAgICAgIC8vIE9ic2VydmVyIHN0YXRlIHF1ZXJpZXMuCiAg
ICAgICAgIHZpcnR1YWwgYm9vbCBwcmV2ZW50U291cmNlRnJvbVN0b3BwaW5nKCkgPSAwOwpAQCAt
ODUsOCArODUsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldEZpdG5lc3NTY29yZShj
b25zdCB1bnNpZ25lZCBmaXRuZXNzU2NvcmUpIHsgbV9maXRuZXNzU2NvcmUgPSBmaXRuZXNzU2Nv
cmU7IH0KIAogICAgIHZpcnR1YWwgUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRp
ZXM+IGNhcGFiaWxpdGllcygpID0gMDsKLSAgICB2aXJ0dWFsIGNvbnN0IFJlYWx0aW1lTWVkaWFT
b3VyY2VTdGF0ZXMmIHN0YXRlcygpID0gMDsKLSAgICB2b2lkIHN0YXRlc0RpZENoYW5nZWQoKTsK
KyAgICB2aXJ0dWFsIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYgc2V0dGluZ3Mo
KSA9IDA7CisgICAgdm9pZCBzZXR0aW5nc0RpZENoYW5nZWQoKTsKICAgICAKICAgICBib29sIHN0
b3BwZWQoKSBjb25zdCB7IHJldHVybiBtX3N0b3BwZWQ7IH0KIApJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0
aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMuaAkocmV2aXNpb24gMTkyOTMwKQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxp
dGllcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoTUVE
SUFfU1RSRUFNKQogCi0jaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlcy5oIgorI2lu
Y2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncy5oIgogI2luY2x1ZGUgPHd0Zi9SZWZD
b3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0
b21pY1N0cmluZy5oPgpAQCAtOTAsMjAgKzkwLDExIEBAIHB1YmxpYzoKIAogICAgIH5SZWFsdGlt
ZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzKCkgeyB9CiAKLSAgICBjb25zdCBWZWN0b3I8UmVhbHRp
bWVNZWRpYVNvdXJjZVN0YXRlczo6U291cmNlVHlwZT4mIHNvdXJjZVR5cGVzKCkgeyByZXR1cm4g
bV9zb3VyY2VUeXBlOyB9Ci0gICAgdm9pZCBzZXRTb3VyY2VUeXBlKFJlYWx0aW1lTWVkaWFTb3Vy
Y2VTdGF0ZXM6OlNvdXJjZVR5cGUgc291cmNlVHlwZSkgeyBtX3NvdXJjZVR5cGUucmVzaXplVG9G
aXQoMSk7IGFkZFNvdXJjZVR5cGUoc291cmNlVHlwZSk7IH0KLSAgICB2b2lkIGFkZFNvdXJjZVR5
cGUoUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlczo6U291cmNlVHlwZSBzb3VyY2VUeXBlKQotICAg
IHsKLSAgICAgICAgaWYgKHNvdXJjZVR5cGUgPT0gUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlczo6
Q2FtZXJhKQotICAgICAgICAgICAgbV92aWRlb1NvdXJjZSA9IHRydWU7Ci0gICAgICAgIG1fc291
cmNlVHlwZS5hcHBlbmQoc291cmNlVHlwZSk7Ci0gICAgfQotCiAgICAgY29uc3QgVmVjdG9yPEF0
b21pY1N0cmluZz4mIHNvdXJjZUlkKCkgeyByZXR1cm4gbV9zb3VyY2VJZDsgfQogICAgIHZvaWQg
c2V0U291cmNlSWQoY29uc3QgQXRvbWljU3RyaW5nJiBpZCkgIHsgbV9zb3VyY2VJZC5yZXNlcnZl
Q2FwYWNpdHkoMSk7IG1fc291cmNlSWQuaW5zZXJ0KDAsIGlkKTsgfQogCi0gICAgY29uc3QgVmVj
dG9yPFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXM6OlZpZGVvRmFjaW5nTW9kZT4mIGZhY2luZ01v
ZGVzKCkgeyByZXR1cm4gbV9mYWNpbmdNb2RlOyB9Ci0gICAgdm9pZCBhZGRGYWNpbmdNb2RlKFJl
YWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXM6OlZpZGVvRmFjaW5nTW9kZSBtb2RlKSB7IG1fZmFjaW5n
TW9kZS5hcHBlbmQobW9kZSk7IH0KKyAgICBjb25zdCBWZWN0b3I8UmVhbHRpbWVNZWRpYVNvdXJj
ZVNldHRpbmdzOjpWaWRlb0ZhY2luZ01vZGU+JiBmYWNpbmdNb2RlcygpIHsgcmV0dXJuIG1fZmFj
aW5nTW9kZTsgfQorICAgIHZvaWQgYWRkRmFjaW5nTW9kZShSZWFsdGltZU1lZGlhU291cmNlU2V0
dGluZ3M6OlZpZGVvRmFjaW5nTW9kZSBtb2RlKSB7IG1fZmFjaW5nTW9kZS5hcHBlbmQobW9kZSk7
IH0KIAogICAgIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXR5UmFuZ2UmIHdpZHRo
KCkgeyByZXR1cm4gbV93aWR0aDsgfQogICAgIHZvaWQgc2V0V2lkdGhSYW5nZShjb25zdCBSZWFs
dGltZU1lZGlhU291cmNlQ2FwYWJpbGl0eVJhbmdlJiB3aWR0aCkgeyBtX3dpZHRoID0gd2lkdGg7
IH0KQEAgLTEzMCw4ICsxMjEsNyBAQCBwcml2YXRlOgogICAgIH0KIAogICAgIFZlY3RvcjxBdG9t
aWNTdHJpbmc+IG1fc291cmNlSWQ7Ci0gICAgVmVjdG9yPFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0
ZXM6OlNvdXJjZVR5cGU+IG1fc291cmNlVHlwZTsKLSAgICBWZWN0b3I8UmVhbHRpbWVNZWRpYVNv
dXJjZVN0YXRlczo6VmlkZW9GYWNpbmdNb2RlPiBtX2ZhY2luZ01vZGU7CisgICAgVmVjdG9yPFJl
YWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6VmlkZW9GYWNpbmdNb2RlPiBtX2ZhY2luZ01vZGU7
CiAKICAgICBSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0eVJhbmdlIG1fd2lkdGg7CiAgICAg
UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdHlSYW5nZSBtX2hlaWdodDsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFs
dGltZU1lZGlhU291cmNlQ2VudGVyLmgJKHJldmlzaW9uIDE5MjkzMCkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaAkod29y
a2luZyBjb3B5KQpAQCAtNDQsNyArNDQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBN
ZWRpYUNvbnN0cmFpbnRzOwogY2xhc3MgTWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudDsKIGNsYXNz
IE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVzdENsaWVudDsKLWNsYXNzIFJlYWx0aW1lTWVk
aWFTb3VyY2VTdGF0ZXM7CitjbGFzcyBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M7CiBjbGFz
cyBSZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWludHM7CiBjbGFzcyBUcmFja1Nv
dXJjZUluZm87CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1Jl
YWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzLmNwcAko
cmV2aXNpb24gMTkyOTMwKQkoZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9SZWFsdGltZU1lZGlhU291cmNlU3RhdGVzLmNwcDoxOTI5MzApCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsODUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCisgKiAgICBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiAgICBkaXN0cmlidXRpb24uCisgKiAz
LiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzIGNv
bnRyaWJ1dG9ycworICogICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbSB0aGlzCisgKiAgICBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisjaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJj
ZVN0YXRlcy5oIgorCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworY29uc3QgQXRvbWljU3RyaW5nJiBSZWFsdGltZU1lZGlhU291cmNlU3Rh
dGVzOjpmYWNpbmdNb2RlKFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXM6OlZpZGVvRmFjaW5nTW9k
ZSBtb2RlKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IHVzZXJG
YWNpbmcoInVzZXIiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBlbnZpcm9ubWVudEZhY2luZygiZW52
aXJvbm1lbnQiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBsZWZ0RmFjaW5nKCJsZWZ0IiwgQXRvbWlj
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PEF0b21pY1N0cmluZz4gcmlnaHRGYWNpbmcoInJpZ2h0IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCk7CisgICAgCisgICAgc3dpdGNoIChtb2RlKSB7CisgICAgY2FzZSBSZWFs
dGltZU1lZGlhU291cmNlU3RhdGVzOjpVc2VyOgorICAgICAgICByZXR1cm4gdXNlckZhY2luZzsK
KyAgICBjYXNlIFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXM6OkVudmlyb25tZW50OgorICAgICAg
ICByZXR1cm4gZW52aXJvbm1lbnRGYWNpbmc7CisgICAgY2FzZSBSZWFsdGltZU1lZGlhU291cmNl
U3RhdGVzOjpMZWZ0OgorICAgICAgICByZXR1cm4gbGVmdEZhY2luZzsKKyAgICBjYXNlIFJlYWx0
aW1lTWVkaWFTb3VyY2VTdGF0ZXM6OlJpZ2h0OgorICAgICAgICByZXR1cm4gcmlnaHRGYWNpbmc7
CisgICAgY2FzZSBSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzOjpVbmtub3duOgorICAgICAgICBy
ZXR1cm4gZW1wdHlBdG9tOworICAgIH0KKyAgICAKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICByZXR1cm4gZW1wdHlBdG9tOworfQorCitjb25zdCBBdG9taWNTdHJpbmcmIFJlYWx0aW1l
TWVkaWFTb3VyY2VTdGF0ZXM6OnNvdXJjZVR5cGUoUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlczo6
U291cmNlVHlwZSBzb3VyY2VUeXBlKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9t
aWNTdHJpbmc+IG5vbmUoIm5vbmUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFs
KTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBjYW1lcmEoImNhbWVy
YSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IG1pY3JvcGhvbmUoIm1pY3JvcGhvbmUiLCBBdG9taWNT
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICAKKyAgICBzd2l0Y2ggKHNvdXJjZVR5
cGUpIHsKKyAgICBjYXNlIFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXM6Ok5vbmU6CisgICAgICAg
IHJldHVybiBub25lOworICAgIGNhc2UgUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlczo6Q2FtZXJh
OgorICAgICAgICByZXR1cm4gY2FtZXJhOworICAgIGNhc2UgUmVhbHRpbWVNZWRpYVNvdXJjZVN0
YXRlczo6TWljcm9waG9uZToKKyAgICAgICAgcmV0dXJuIG1pY3JvcGhvbmU7CisgICAgfQorICAg
IAorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBlbXB0eUF0b207Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0p
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlh
U291cmNlU2V0dGluZ3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncy5jcHAJKHdvcmtpbmcgY29w
eSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFT
b3VyY2VTZXR0aW5ncy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxMy0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzEsMTMgKzMxLDEzIEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotI2luY2x1ZGUgIlJlYWx0
aW1lTWVkaWFTb3VyY2VTdGF0ZXMuaCIKKyNpbmNsdWRlICJSZWFsdGltZU1lZGlhU291cmNlU2V0
dGluZ3MuaCIKIAogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLWNvbnN0IEF0b21pY1N0cmluZyYgUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRl
czo6ZmFjaW5nTW9kZShSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzOjpWaWRlb0ZhY2luZ01vZGUg
bW9kZSkKK2NvbnN0IEF0b21pY1N0cmluZyYgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpm
YWNpbmdNb2RlKFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6VmlkZW9GYWNpbmdNb2RlIG1v
ZGUpCiB7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gdXNlckZhY2lu
ZygidXNlciIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IGVudmlyb25tZW50RmFjaW5nKCJlbnZpcm9u
bWVudCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwpAQCAtNDUsMTUgKzQ1
LDE1IEBAIGNvbnN0IEF0b21pY1N0cmluZyYgUmVhbHRpbWVNZWRpYVNvdXJjZVMKICAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiByaWdodEZhY2luZygicmlnaHQiLCBBdG9t
aWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICAKICAgICBzd2l0Y2ggKG1vZGUp
IHsKLSAgICBjYXNlIFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXM6OlVzZXI6CisgICAgY2FzZSBS
ZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OlVzZXI6CiAgICAgICAgIHJldHVybiB1c2VyRmFj
aW5nOwotICAgIGNhc2UgUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlczo6RW52aXJvbm1lbnQ6Cisg
ICAgY2FzZSBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkVudmlyb25tZW50OgogICAgICAg
ICByZXR1cm4gZW52aXJvbm1lbnRGYWNpbmc7Ci0gICAgY2FzZSBSZWFsdGltZU1lZGlhU291cmNl
U3RhdGVzOjpMZWZ0OgorICAgIGNhc2UgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpMZWZ0
OgogICAgICAgICByZXR1cm4gbGVmdEZhY2luZzsKLSAgICBjYXNlIFJlYWx0aW1lTWVkaWFTb3Vy
Y2VTdGF0ZXM6OlJpZ2h0OgorICAgIGNhc2UgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpS
aWdodDoKICAgICAgICAgcmV0dXJuIHJpZ2h0RmFjaW5nOwotICAgIGNhc2UgUmVhbHRpbWVNZWRp
YVNvdXJjZVN0YXRlczo6VW5rbm93bjoKKyAgICBjYXNlIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0
aW5nczo6VW5rbm93bjoKICAgICAgICAgcmV0dXJuIGVtcHR5QXRvbTsKICAgICB9CiAgICAgCkBA
IC02MSwyNSArNjEsNiBAQCBjb25zdCBBdG9taWNTdHJpbmcmIFJlYWx0aW1lTWVkaWFTb3VyY2VT
CiAgICAgcmV0dXJuIGVtcHR5QXRvbTsKIH0KIAotY29uc3QgQXRvbWljU3RyaW5nJiBSZWFsdGlt
ZU1lZGlhU291cmNlU3RhdGVzOjpzb3VyY2VUeXBlKFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXM6
OlNvdXJjZVR5cGUgc291cmNlVHlwZSkKLXsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRv
bWljU3RyaW5nPiBub25lKCJub25lIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJh
bCk7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gY2FtZXJhKCJjYW1l
cmEiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBtaWNyb3Bob25lKCJtaWNyb3Bob25lIiwgQXRvbWlj
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgCi0gICAgc3dpdGNoIChzb3VyY2VU
eXBlKSB7Ci0gICAgY2FzZSBSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzOjpOb25lOgotICAgICAg
ICByZXR1cm4gbm9uZTsKLSAgICBjYXNlIFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXM6OkNhbWVy
YToKLSAgICAgICAgcmV0dXJuIGNhbWVyYTsKLSAgICBjYXNlIFJlYWx0aW1lTWVkaWFTb3VyY2VT
dGF0ZXM6Ok1pY3JvcGhvbmU6Ci0gICAgICAgIHJldHVybiBtaWNyb3Bob25lOwotICAgIH0KLSAg
ICAKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gZW1wdHlBdG9tOwotfQot
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFN
KQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRp
YVNvdXJjZVNldHRpbmdzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzLmgJKHJldmlzaW9uIDE5Mjkz
MCkJKGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRp
YVNvdXJjZVN0YXRlcy5oOjE5MjkzMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncy5oCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsOTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXNfaAorI2RlZmluZSBSZWFsdGltZU1l
ZGlhU291cmNlU3RhdGVzX2gKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3
dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBS
ZWFsdGltZU1lZGlhU291cmNlU3RhdGVzIHsKK3B1YmxpYzoKKyAgICBlbnVtIFNvdXJjZVR5cGUg
eyBOb25lLCBDYW1lcmEsIE1pY3JvcGhvbmUgfTsKKyAgICBlbnVtIFZpZGVvRmFjaW5nTW9kZSB7
IFVua25vd24sIFVzZXIsIEVudmlyb25tZW50LCBMZWZ0LCBSaWdodCB9OworCisgICAgUmVhbHRp
bWVNZWRpYVNvdXJjZVN0YXRlcygpCisgICAgICAgIDogbV9zb3VyY2VUeXBlKE5vbmUpCisgICAg
ICAgICwgbV9mYWNpbmdNb2RlKFVua25vd24pCisgICAgICAgICwgbV93aWR0aCgwKQorICAgICAg
ICAsIG1faGVpZ2h0KDApCisgICAgICAgICwgbV9mcmFtZVJhdGUoMCkKKyAgICAgICAgLCBtX2Fz
cGVjdFJhdGlvKDApCisgICAgICAgICwgbV92b2x1bWUoMCkKKyAgICB7CisgICAgfQorCisgICAg
c3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgc291cmNlVHlwZShSZWFsdGltZU1lZGlhU291cmNl
U3RhdGVzOjpTb3VyY2VUeXBlKTsKKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBmYWNp
bmdNb2RlKFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXM6OlZpZGVvRmFjaW5nTW9kZSk7CisKKyAg
ICBTb3VyY2VUeXBlIHNvdXJjZVR5cGUoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZVR5cGU7IH0K
KyAgICB2b2lkIHNldFNvdXJjZVR5cGUoU291cmNlVHlwZSB0eXBlKSB7IG1fc291cmNlVHlwZSA9
IHR5cGU7IH0KKworICAgIGNvbnN0IEF0b21pY1N0cmluZyYgc291cmNlSWQoKSBjb25zdCB7IHJl
dHVybiBtX3NvdXJjZUlkOyB9CisgICAgdm9pZCBzZXRTb3VyY2VJZChjb25zdCBBdG9taWNTdHJp
bmcmIHNvdXJjZUlkKSB7IG1fc291cmNlSWQgPSBzb3VyY2VJZDsgfQorCisgICAgVmlkZW9GYWNp
bmdNb2RlIGZhY2luZ01vZGUoKSBjb25zdCB7IHJldHVybiBtX2ZhY2luZ01vZGU7IH0KKyAgICB2
b2lkIHNldEZhY2luZ01vZGUoVmlkZW9GYWNpbmdNb2RlIGZhY2luZ01vZGUpIHsgbV9mYWNpbmdN
b2RlID0gZmFjaW5nTW9kZTsgfQorICAgIAorICAgIHVuc2lnbmVkIGxvbmcgd2lkdGgoKSBjb25z
dCB7IHJldHVybiBtX3dpZHRoOyB9CisgICAgdm9pZCBzZXRXaWR0aCh1bnNpZ25lZCBsb25nIHdp
ZHRoKSB7IG1fd2lkdGggPSB3aWR0aDsgfQorICAgIAorICAgIHVuc2lnbmVkIGxvbmcgaGVpZ2h0
KCkgY29uc3QgeyByZXR1cm4gbV9oZWlnaHQ7IH0KKyAgICB2b2lkIHNldEhlaWdodCh1bnNpZ25l
ZCBsb25nIGhlaWdodCkgeyBtX2hlaWdodCA9IGhlaWdodDsgfQorICAgIAorICAgIGZsb2F0IGZy
YW1lUmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVSYXRlOyB9CisgICAgdm9pZCBzZXRGcmFt
ZVJhdGUoZmxvYXQgZnJhbWVSYXRlKSB7IG1fZnJhbWVSYXRlID0gZnJhbWVSYXRlOyB9CisgICAg
CisgICAgZmxvYXQgYXNwZWN0UmF0aW8oKSBjb25zdCB7IHJldHVybiBtX2FzcGVjdFJhdGlvOyB9
CisgICAgdm9pZCBzZXRBc3BlY3RSYXRpbyhmbG9hdCBhc3BlY3RSYXRpbykgeyBtX2FzcGVjdFJh
dGlvID0gYXNwZWN0UmF0aW87IH0KKyAgICAKKyAgICB1bnNpZ25lZCBsb25nIHZvbHVtZSgpIGNv
bnN0IHsgcmV0dXJuIG1fdm9sdW1lOyB9CisgICAgdm9pZCBzZXRWb2x1bWUodW5zaWduZWQgbG9u
ZyB2b2x1bWUpIHsgbV92b2x1bWUgPSB2b2x1bWU7IH0KKyAgICAKK3ByaXZhdGU6CisgICAgU291
cmNlVHlwZSBtX3NvdXJjZVR5cGU7CisgICAgQXRvbWljU3RyaW5nIG1fc291cmNlSWQ7CisgICAg
VmlkZW9GYWNpbmdNb2RlIG1fZmFjaW5nTW9kZTsKKyAgICB1bnNpZ25lZCBsb25nIG1fd2lkdGg7
CisgICAgdW5zaWduZWQgbG9uZyBtX2hlaWdodDsKKyAgICBmbG9hdCBtX2ZyYW1lUmF0ZTsKKyAg
ICBmbG9hdCBtX2FzcGVjdFJhdGlvOworICAgIHVuc2lnbmVkIGxvbmcgbV92b2x1bWU7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBSZWFsdGltZU1lZGlhU291cmNl
U3RhdGVzX2gKKworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9SZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3Mu
aAkod29ya2luZyBjb3B5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsNzMgKzIzLDk0
IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgUmVhbHRpbWVNZWRpYVNvdXJjZVN0
YXRlc19oCi0jZGVmaW5lIFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXNfaAorI2lmbmRlZiBSZWFs
dGltZU1lZGlhU291cmNlU2V0dGluZ3NfaAorI2RlZmluZSBSZWFsdGltZU1lZGlhU291cmNlU2V0
dGluZ3NfaAogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKIAorI2luY2x1ZGUgIlJlYWx0aW1l
TWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cy5oIgogI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21p
Y1N0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFJlYWx0aW1lTWVkaWFT
b3VyY2VTdGF0ZXMgeworY2xhc3MgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzIHsKIHB1Ymxp
YzoKICAgICBlbnVtIFNvdXJjZVR5cGUgeyBOb25lLCBDYW1lcmEsIE1pY3JvcGhvbmUgfTsKICAg
ICBlbnVtIFZpZGVvRmFjaW5nTW9kZSB7IFVua25vd24sIFVzZXIsIEVudmlyb25tZW50LCBMZWZ0
LCBSaWdodCB9OwogCi0gICAgUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlcygpCi0gICAgICAgIDog
bV9zb3VyY2VUeXBlKE5vbmUpCi0gICAgICAgICwgbV9mYWNpbmdNb2RlKFVua25vd24pCi0gICAg
ICAgICwgbV93aWR0aCgwKQotICAgICAgICAsIG1faGVpZ2h0KDApCi0gICAgICAgICwgbV9mcmFt
ZVJhdGUoMCkKLSAgICAgICAgLCBtX2FzcGVjdFJhdGlvKDApCi0gICAgICAgICwgbV92b2x1bWUo
MCkKKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBmYWNpbmdNb2RlKFJlYWx0aW1lTWVk
aWFTb3VyY2VTZXR0aW5nczo6VmlkZW9GYWNpbmdNb2RlKTsKKworICAgIGV4cGxpY2l0IFJlYWx0
aW1lTWVkaWFTb3VyY2VTZXR0aW5ncygpCiAgICAgewogICAgIH0KIAotICAgIHN0YXRpYyBjb25z
dCBBdG9taWNTdHJpbmcmIHNvdXJjZVR5cGUoUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlczo6U291
cmNlVHlwZSk7Ci0gICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgZmFjaW5nTW9kZShSZWFs
dGltZU1lZGlhU291cmNlU3RhdGVzOjpWaWRlb0ZhY2luZ01vZGUpOwotCi0gICAgU291cmNlVHlw
ZSBzb3VyY2VUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VUeXBlOyB9Ci0gICAgdm9pZCBz
ZXRTb3VyY2VUeXBlKFNvdXJjZVR5cGUgdHlwZSkgeyBtX3NvdXJjZVR5cGUgPSB0eXBlOyB9Ci0K
LSAgICBjb25zdCBBdG9taWNTdHJpbmcmIHNvdXJjZUlkKCkgY29uc3QgeyByZXR1cm4gbV9zb3Vy
Y2VJZDsgfQotICAgIHZvaWQgc2V0U291cmNlSWQoY29uc3QgQXRvbWljU3RyaW5nJiBzb3VyY2VJ
ZCkgeyBtX3NvdXJjZUlkID0gc291cmNlSWQ7IH0KLQotICAgIFZpZGVvRmFjaW5nTW9kZSBmYWNp
bmdNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9mYWNpbmdNb2RlOyB9Ci0gICAgdm9pZCBzZXRGYWNp
bmdNb2RlKFZpZGVvRmFjaW5nTW9kZSBmYWNpbmdNb2RlKSB7IG1fZmFjaW5nTW9kZSA9IGZhY2lu
Z01vZGU7IH0KLSAgICAKKyAgICBib29sIHN1cHBvcnRzV2lkdGgoKSBjb25zdCB7IHJldHVybiBt
X3N1cHBvcnRlZENvbnN0cmFpbnRzLnN1cHBvcnRzV2lkdGgoKTsgfQogICAgIHVuc2lnbmVkIGxv
bmcgd2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3dpZHRoOyB9CiAgICAgdm9pZCBzZXRXaWR0aCh1
bnNpZ25lZCBsb25nIHdpZHRoKSB7IG1fd2lkdGggPSB3aWR0aDsgfQotICAgIAorCisgICAgYm9v
bCBzdXBwb3J0c0hlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fc3VwcG9ydGVkQ29uc3RyYWludHMu
c3VwcG9ydHNIZWlnaHQoKTsgfQogICAgIHVuc2lnbmVkIGxvbmcgaGVpZ2h0KCkgY29uc3QgeyBy
ZXR1cm4gbV9oZWlnaHQ7IH0KICAgICB2b2lkIHNldEhlaWdodCh1bnNpZ25lZCBsb25nIGhlaWdo
dCkgeyBtX2hlaWdodCA9IGhlaWdodDsgfQotICAgIAotICAgIGZsb2F0IGZyYW1lUmF0ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fZnJhbWVSYXRlOyB9Ci0gICAgdm9pZCBzZXRGcmFtZVJhdGUoZmxvYXQg
ZnJhbWVSYXRlKSB7IG1fZnJhbWVSYXRlID0gZnJhbWVSYXRlOyB9Ci0gICAgCisKKyAgICBib29s
IHN1cHBvcnRzQXNwZWN0UmF0aW8oKSBjb25zdCB7IHJldHVybiBtX3N1cHBvcnRlZENvbnN0cmFp
bnRzLnN1cHBvcnRzQXNwZWN0UmF0aW8oKTsgfQogICAgIGZsb2F0IGFzcGVjdFJhdGlvKCkgY29u
c3QgeyByZXR1cm4gbV9hc3BlY3RSYXRpbzsgfQogICAgIHZvaWQgc2V0QXNwZWN0UmF0aW8oZmxv
YXQgYXNwZWN0UmF0aW8pIHsgbV9hc3BlY3RSYXRpbyA9IGFzcGVjdFJhdGlvOyB9Ci0gICAgCisK
KyAgICBib29sIHN1cHBvcnRzRnJhbWVSYXRlKCkgY29uc3QgeyByZXR1cm4gbV9zdXBwb3J0ZWRD
b25zdHJhaW50cy5zdXBwb3J0c0ZyYW1lUmF0ZSgpOyB9CisgICAgZmxvYXQgZnJhbWVSYXRlKCkg
Y29uc3QgeyByZXR1cm4gbV9mcmFtZVJhdGU7IH0KKyAgICB2b2lkIHNldEZyYW1lUmF0ZShmbG9h
dCBmcmFtZVJhdGUpIHsgbV9mcmFtZVJhdGUgPSBmcmFtZVJhdGU7IH0KKworICAgIGJvb2wgc3Vw
cG9ydHNGYWNpbmdNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9zdXBwb3J0ZWRDb25zdHJhaW50cy5z
dXBwb3J0c0ZhY2luZ01vZGUoKTsgfQorICAgIFZpZGVvRmFjaW5nTW9kZSBmYWNpbmdNb2RlKCkg
Y29uc3QgeyByZXR1cm4gbV9mYWNpbmdNb2RlOyB9CisgICAgdm9pZCBzZXRGYWNpbmdNb2RlKFZp
ZGVvRmFjaW5nTW9kZSBmYWNpbmdNb2RlKSB7IG1fZmFjaW5nTW9kZSA9IGZhY2luZ01vZGU7IH0K
KworICAgIGJvb2wgc3VwcG9ydHNWb2x1bWUoKSBjb25zdCB7IHJldHVybiBtX3N1cHBvcnRlZENv
bnN0cmFpbnRzLnN1cHBvcnRzVm9sdW1lKCk7IH0KICAgICB1bnNpZ25lZCBsb25nIHZvbHVtZSgp
IGNvbnN0IHsgcmV0dXJuIG1fdm9sdW1lOyB9CiAgICAgdm9pZCBzZXRWb2x1bWUodW5zaWduZWQg
bG9uZyB2b2x1bWUpIHsgbV92b2x1bWUgPSB2b2x1bWU7IH0KLSAgICAKKworICAgIGJvb2wgc3Vw
cG9ydHNTYW1wbGVSYXRlKCkgY29uc3QgeyByZXR1cm4gbV9zdXBwb3J0ZWRDb25zdHJhaW50cy5z
dXBwb3J0c1NhbXBsZVJhdGUoKTsgfQorICAgIHVuc2lnbmVkIGxvbmcgc2FtcGxlUmF0ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fc2FtcGxlUmF0ZTsgfQorICAgIHZvaWQgc2V0U2FtcGxlUmF0ZSh1bnNp
Z25lZCBsb25nIHNhbXBsZVJhdGUpIHsgbV9zYW1wbGVSYXRlID0gc2FtcGxlUmF0ZTsgfQorCisg
ICAgYm9vbCBzdXBwb3J0c1NhbXBsZVNpemUoKSBjb25zdCB7IHJldHVybiBtX3N1cHBvcnRlZENv
bnN0cmFpbnRzLnN1cHBvcnRzU2FtcGxlU2l6ZSgpOyB9CisgICAgdW5zaWduZWQgbG9uZyBzYW1w
bGVTaXplKCkgY29uc3QgeyByZXR1cm4gbV9zYW1wbGVTaXplOyB9CisgICAgdm9pZCBzZXRTYW1w
bGVTaXplKHVuc2lnbmVkIGxvbmcgc2FtcGxlU2l6ZSkgeyBtX3NhbXBsZVNpemUgPSBzYW1wbGVT
aXplOyB9CisKKyAgICBib29sIHN1cHBvcnRzRWNob0NhbmNlbGxhdGlvbigpIGNvbnN0IHsgcmV0
dXJuIG1fc3VwcG9ydGVkQ29uc3RyYWludHMuc3VwcG9ydHNFY2hvQ2FuY2VsbGF0aW9uKCk7IH0K
KyAgICBib29sIGVjaG9DYW5jZWxsYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2VjaG9DYW5jZWxs
YXRpb247IH0KKyAgICB2b2lkIHNldEVjaG9DYW5jZWxsYXRpb24oYm9vbCBlY2hvQ2FuY2VsbGF0
aW9uKSB7IG1fZWNob0NhbmNlbGxhdGlvbiA9IGVjaG9DYW5jZWxsYXRpb247IH0KKworICAgIGJv
b2wgc3VwcG9ydHNEZXZpY2VJZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3VwcG9ydGVkQ29uc3RyYWlu
dHMuc3VwcG9ydHNEZXZpY2VJZCgpOyB9CisgICAgY29uc3QgQXRvbWljU3RyaW5nJiBkZXZpY2VJ
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fZGV2aWNlSWQ7IH0KKyAgICB2b2lkIHNldERldmljZUlkKGNv
bnN0IEF0b21pY1N0cmluZyYgZGV2aWNlSWQpIHsgbV9kZXZpY2VJZCA9IGRldmljZUlkOyB9CisK
KyAgICBib29sIHN1cHBvcnRzR3JvdXBJZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3VwcG9ydGVkQ29u
c3RyYWludHMuc3VwcG9ydHNHcm91cElkKCk7IH0KKyAgICBjb25zdCBBdG9taWNTdHJpbmcmIGdy
b3VwSWQoKSBjb25zdCB7IHJldHVybiBtX2dyb3VwSWQ7IH0KKyAgICB2b2lkIHNldEdyb3VwSWQo
Y29uc3QgQXRvbWljU3RyaW5nJiBncm91cElkKSB7IG1fZ3JvdXBJZCA9IGdyb3VwSWQ7IH0KKwor
ICAgIHZvaWQgc2V0U3VwcG9ydGVkQ29uc3RyYWl0cyhjb25zdCBSZWFsdGltZU1lZGlhU291cmNl
U3VwcG9ydGVkQ29uc3RyYWludHMmIHN1cHBvcnRlZENvbnN0cmFpbnRzKSB7IG1fc3VwcG9ydGVk
Q29uc3RyYWludHMgPSBzdXBwb3J0ZWRDb25zdHJhaW50czsgfQorCiBwcml2YXRlOgotICAgIFNv
dXJjZVR5cGUgbV9zb3VyY2VUeXBlOwotICAgIEF0b21pY1N0cmluZyBtX3NvdXJjZUlkOwotICAg
IFZpZGVvRmFjaW5nTW9kZSBtX2ZhY2luZ01vZGU7Ci0gICAgdW5zaWduZWQgbG9uZyBtX3dpZHRo
OwotICAgIHVuc2lnbmVkIGxvbmcgbV9oZWlnaHQ7Ci0gICAgZmxvYXQgbV9mcmFtZVJhdGU7Ci0g
ICAgZmxvYXQgbV9hc3BlY3RSYXRpbzsKLSAgICB1bnNpZ25lZCBsb25nIG1fdm9sdW1lOworICAg
IHVuc2lnbmVkIGxvbmcgbV93aWR0aCB7IDAgfTsKKyAgICB1bnNpZ25lZCBsb25nIG1faGVpZ2h0
IHsgMCB9OworICAgIGZsb2F0IG1fYXNwZWN0UmF0aW8geyAwIH07CisgICAgZmxvYXQgbV9mcmFt
ZVJhdGUgeyAwIH07CisgICAgVmlkZW9GYWNpbmdNb2RlIG1fZmFjaW5nTW9kZSB7IFVua25vd24g
fTsKKyAgICB1bnNpZ25lZCBsb25nIG1fdm9sdW1lIHsgMCB9OworICAgIHVuc2lnbmVkIGxvbmcg
bV9zYW1wbGVSYXRlIHsgMCB9OworICAgIHVuc2lnbmVkIGxvbmcgbV9zYW1wbGVTaXplIHsgMCB9
OworICAgIGJvb2wgbV9lY2hvQ2FuY2VsbGF0aW9uIHsgMCB9OworCisgICAgQXRvbWljU3RyaW5n
IG1fZGV2aWNlSWQ7CisgICAgQXRvbWljU3RyaW5nIG1fZ3JvdXBJZDsKKworICAgIFJlYWx0aW1l
TWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cyBtX3N1cHBvcnRlZENvbnN0cmFpbnRzOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYgLy8gUmVhbHRpbWVNZWRpYVNv
dXJjZVN0YXRlc19oCisjZW5kaWYgLy8gUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzX2gKIAog
I2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGlt
ZU1lZGlhU291cmNlU3RhdGVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlU3RhdGVzLmNwcAkocmV2aXNpb24g
MTkyOTMwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVN
ZWRpYVNvdXJjZVN0YXRlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsODUgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqICAgIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAq
ICAgIGRpc3RyaWJ1dGlvbi4KLSAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzCi0gKiAgICBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMKLSAqICAgIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0g
KiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLSNpbmNs
dWRlICJSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzLmgiCi0KLSNpbmNsdWRlIDx3dGYvTmV2ZXJE
ZXN0cm95ZWQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jb25zdCBBdG9taWNTdHJpbmcm
IFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXM6OmZhY2luZ01vZGUoUmVhbHRpbWVNZWRpYVNvdXJj
ZVN0YXRlczo6VmlkZW9GYWNpbmdNb2RlIG1vZGUpCi17Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPEF0b21pY1N0cmluZz4gdXNlckZhY2luZygidXNlciIsIEF0b21pY1N0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpOwotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+
IGVudmlyb25tZW50RmFjaW5nKCJlbnZpcm9ubWVudCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0
RnJvbUxpdGVyYWwpOwotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IGxl
ZnRGYWNpbmcoImxlZnQiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiByaWdodEZhY2luZygicmlnaHQi
LCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICAKLSAgICBzd2l0Y2gg
KG1vZGUpIHsKLSAgICBjYXNlIFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXM6OlVzZXI6Ci0gICAg
ICAgIHJldHVybiB1c2VyRmFjaW5nOwotICAgIGNhc2UgUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRl
czo6RW52aXJvbm1lbnQ6Ci0gICAgICAgIHJldHVybiBlbnZpcm9ubWVudEZhY2luZzsKLSAgICBj
YXNlIFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXM6OkxlZnQ6Ci0gICAgICAgIHJldHVybiBsZWZ0
RmFjaW5nOwotICAgIGNhc2UgUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlczo6UmlnaHQ6Ci0gICAg
ICAgIHJldHVybiByaWdodEZhY2luZzsKLSAgICBjYXNlIFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0
ZXM6OlVua25vd246Ci0gICAgICAgIHJldHVybiBlbXB0eUF0b207Ci0gICAgfQotICAgIAotICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBlbXB0eUF0b207Ci19Ci0KLWNvbnN0
IEF0b21pY1N0cmluZyYgUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlczo6c291cmNlVHlwZShSZWFs
dGltZU1lZGlhU291cmNlU3RhdGVzOjpTb3VyY2VUeXBlIHNvdXJjZVR5cGUpCi17Ci0gICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gbm9uZSgibm9uZSIsIEF0b21pY1N0cmlu
Zzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9t
aWNTdHJpbmc+IGNhbWVyYSgiY2FtZXJhIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0
ZXJhbCk7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gbWljcm9waG9u
ZSgibWljcm9waG9uZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAg
IAotICAgIHN3aXRjaCAoc291cmNlVHlwZSkgewotICAgIGNhc2UgUmVhbHRpbWVNZWRpYVNvdXJj
ZVN0YXRlczo6Tm9uZToKLSAgICAgICAgcmV0dXJuIG5vbmU7Ci0gICAgY2FzZSBSZWFsdGltZU1l
ZGlhU291cmNlU3RhdGVzOjpDYW1lcmE6Ci0gICAgICAgIHJldHVybiBjYW1lcmE7Ci0gICAgY2Fz
ZSBSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzOjpNaWNyb3Bob25lOgotICAgICAgICByZXR1cm4g
bWljcm9waG9uZTsKLSAgICB9Ci0gICAgCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAg
cmV0dXJuIGVtcHR5QXRvbTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYg
Ly8gRU5BQkxFKE1FRElBX1NUUkVBTSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlU3RhdGVz
LmgJKHJldmlzaW9uIDE5MjkzMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw5NSAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
Ci0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lm
bmRlZiBSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzX2gKLSNkZWZpbmUgUmVhbHRpbWVNZWRpYVNv
dXJjZVN0YXRlc19oCi0KLSNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotCi0jaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0jaW5jbHVkZSA8d3RmL3Rl
eHQvQXRvbWljU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgUmVhbHRp
bWVNZWRpYVNvdXJjZVN0YXRlcyB7Ci1wdWJsaWM6Ci0gICAgZW51bSBTb3VyY2VUeXBlIHsgTm9u
ZSwgQ2FtZXJhLCBNaWNyb3Bob25lIH07Ci0gICAgZW51bSBWaWRlb0ZhY2luZ01vZGUgeyBVbmtu
b3duLCBVc2VyLCBFbnZpcm9ubWVudCwgTGVmdCwgUmlnaHQgfTsKLQotICAgIFJlYWx0aW1lTWVk
aWFTb3VyY2VTdGF0ZXMoKQotICAgICAgICA6IG1fc291cmNlVHlwZShOb25lKQotICAgICAgICAs
IG1fZmFjaW5nTW9kZShVbmtub3duKQotICAgICAgICAsIG1fd2lkdGgoMCkKLSAgICAgICAgLCBt
X2hlaWdodCgwKQotICAgICAgICAsIG1fZnJhbWVSYXRlKDApCi0gICAgICAgICwgbV9hc3BlY3RS
YXRpbygwKQotICAgICAgICAsIG1fdm9sdW1lKDApCi0gICAgewotICAgIH0KLQotICAgIHN0YXRp
YyBjb25zdCBBdG9taWNTdHJpbmcmIHNvdXJjZVR5cGUoUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRl
czo6U291cmNlVHlwZSk7Ci0gICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgZmFjaW5nTW9k
ZShSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzOjpWaWRlb0ZhY2luZ01vZGUpOwotCi0gICAgU291
cmNlVHlwZSBzb3VyY2VUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VUeXBlOyB9Ci0gICAg
dm9pZCBzZXRTb3VyY2VUeXBlKFNvdXJjZVR5cGUgdHlwZSkgeyBtX3NvdXJjZVR5cGUgPSB0eXBl
OyB9Ci0KLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIHNvdXJjZUlkKCkgY29uc3QgeyByZXR1cm4g
bV9zb3VyY2VJZDsgfQotICAgIHZvaWQgc2V0U291cmNlSWQoY29uc3QgQXRvbWljU3RyaW5nJiBz
b3VyY2VJZCkgeyBtX3NvdXJjZUlkID0gc291cmNlSWQ7IH0KLQotICAgIFZpZGVvRmFjaW5nTW9k
ZSBmYWNpbmdNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9mYWNpbmdNb2RlOyB9Ci0gICAgdm9pZCBz
ZXRGYWNpbmdNb2RlKFZpZGVvRmFjaW5nTW9kZSBmYWNpbmdNb2RlKSB7IG1fZmFjaW5nTW9kZSA9
IGZhY2luZ01vZGU7IH0KLSAgICAKLSAgICB1bnNpZ25lZCBsb25nIHdpZHRoKCkgY29uc3QgeyBy
ZXR1cm4gbV93aWR0aDsgfQotICAgIHZvaWQgc2V0V2lkdGgodW5zaWduZWQgbG9uZyB3aWR0aCkg
eyBtX3dpZHRoID0gd2lkdGg7IH0KLSAgICAKLSAgICB1bnNpZ25lZCBsb25nIGhlaWdodCgpIGNv
bnN0IHsgcmV0dXJuIG1faGVpZ2h0OyB9Ci0gICAgdm9pZCBzZXRIZWlnaHQodW5zaWduZWQgbG9u
ZyBoZWlnaHQpIHsgbV9oZWlnaHQgPSBoZWlnaHQ7IH0KLSAgICAKLSAgICBmbG9hdCBmcmFtZVJh
dGUoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1lUmF0ZTsgfQotICAgIHZvaWQgc2V0RnJhbWVSYXRl
KGZsb2F0IGZyYW1lUmF0ZSkgeyBtX2ZyYW1lUmF0ZSA9IGZyYW1lUmF0ZTsgfQotICAgIAotICAg
IGZsb2F0IGFzcGVjdFJhdGlvKCkgY29uc3QgeyByZXR1cm4gbV9hc3BlY3RSYXRpbzsgfQotICAg
IHZvaWQgc2V0QXNwZWN0UmF0aW8oZmxvYXQgYXNwZWN0UmF0aW8pIHsgbV9hc3BlY3RSYXRpbyA9
IGFzcGVjdFJhdGlvOyB9Ci0gICAgCi0gICAgdW5zaWduZWQgbG9uZyB2b2x1bWUoKSBjb25zdCB7
IHJldHVybiBtX3ZvbHVtZTsgfQotICAgIHZvaWQgc2V0Vm9sdW1lKHVuc2lnbmVkIGxvbmcgdm9s
dW1lKSB7IG1fdm9sdW1lID0gdm9sdW1lOyB9Ci0gICAgCi1wcml2YXRlOgotICAgIFNvdXJjZVR5
cGUgbV9zb3VyY2VUeXBlOwotICAgIEF0b21pY1N0cmluZyBtX3NvdXJjZUlkOwotICAgIFZpZGVv
RmFjaW5nTW9kZSBtX2ZhY2luZ01vZGU7Ci0gICAgdW5zaWduZWQgbG9uZyBtX3dpZHRoOwotICAg
IHVuc2lnbmVkIGxvbmcgbV9oZWlnaHQ7Ci0gICAgZmxvYXQgbV9mcmFtZVJhdGU7Ci0gICAgZmxv
YXQgbV9hc3BlY3RSYXRpbzsKLSAgICB1bnNpZ25lZCBsb25nIG1fdm9sdW1lOwotfTsKLQotfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRl
c19oCi0KLSNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bWFjL0FWQXVkaW9DYXB0dXJlU291cmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQXVkaW9DYXB0dXJlU291cmNlLmgJKHJldmlzaW9u
IDE5MjkzMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkF1
ZGlvQ2FwdHVyZVNvdXJjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01OSwxMiArNTksMTMgQEAgcHJp
dmF0ZToKICAgICB2aXJ0dWFsIH5BVkF1ZGlvQ2FwdHVyZVNvdXJjZSgpOwogICAgIAogICAgIHZv
aWQgaW5pdGlhbGl6ZUNhcGFiaWxpdGllcyhSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVz
Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBpbml0aWFsaXplU3VwcG9ydGVkQ29uc3RyYWludHMoUmVh
bHRpbWVNZWRpYVNvdXJjZVN1cHBvcnRlZENvbnN0cmFpbnRzJikgb3ZlcnJpZGU7CiAKICAgICB2
b2lkIGNhcHR1cmVPdXRwdXREaWRPdXRwdXRTYW1wbGVCdWZmZXJGcm9tQ29ubmVjdGlvbihBVkNh
cHR1cmVPdXRwdXQqLCBDTVNhbXBsZUJ1ZmZlclJlZiwgQVZDYXB0dXJlQ29ubmVjdGlvbiopIG92
ZXJyaWRlOwogICAgIAogICAgIHZvaWQgc2V0dXBDYXB0dXJlU2Vzc2lvbigpIG92ZXJyaWRlOwog
ICAgIHZvaWQgc2h1dGRvd25DYXB0dXJlU2Vzc2lvbigpIG92ZXJyaWRlOwotICAgIHZvaWQgdXBk
YXRlU3RhdGVzKCkgb3ZlcnJpZGU7CisgICAgdm9pZCB1cGRhdGVTZXR0aW5ncyhSZWFsdGltZU1l
ZGlhU291cmNlU2V0dGluZ3MmKSBvdmVycmlkZTsKICAgICBBdWRpb1NvdXJjZVByb3ZpZGVyKiBh
dWRpb1NvdXJjZVByb3ZpZGVyKCkgb3ZlcnJpZGU7CiAKICAgICBSZXRhaW5QdHI8QVZDYXB0dXJl
Q29ubmVjdGlvbj4gbV9hdWRpb0Nvbm5lY3Rpb247CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZBdWRpb0NhcHR1cmVTb3VyY2UubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQXVkaW9DYXB0dXJl
U291cmNlLm1tCShyZXZpc2lvbiAxOTI5MzApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvQVZBdWRpb0NhcHR1cmVTb3VyY2UubW0JKHdvcmtpbmcgY29weSkKQEAg
LTMxLDcgKzMxLDcgQEAKICNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQgIk1lZGlhQ29uc3Ry
YWludHMuaCIKICNpbXBvcnQgIk5vdEltcGxlbWVudGVkLmgiCi0jaW1wb3J0ICJSZWFsdGltZU1l
ZGlhU291cmNlU3RhdGVzLmgiCisjaW1wb3J0ICJSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3Mu
aCIKICNpbXBvcnQgIlNvZnRMaW5raW5nLmgiCiAjaW1wb3J0ICJXZWJBdWRpb1NvdXJjZVByb3Zp
ZGVyQVZGT2JqQy5oIgogI2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWRm91bmRhdGlvbi5oPgpAQCAt
NzAsOCArNzAsNiBAQCBSZWZQdHI8QVZNZWRpYUNhcHR1cmVTb3VyY2U+IEFWQXVkaW9DYXB0CiBB
VkF1ZGlvQ2FwdHVyZVNvdXJjZTo6QVZBdWRpb0NhcHR1cmVTb3VyY2UoQVZDYXB0dXJlRGV2aWNl
VHlwZSogZGV2aWNlLCBjb25zdCBBdG9taWNTdHJpbmcmIGlkLCBQYXNzUmVmUHRyPE1lZGlhQ29u
c3RyYWludHM+IGNvbnN0cmFpbnRzKQogICAgIDogQVZNZWRpYUNhcHR1cmVTb3VyY2UoZGV2aWNl
LCBpZCwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6QXVkaW8sIGNvbnN0cmFpbnRzKQogewotICAgIGN1
cnJlbnRTdGF0ZXMoKS0+c2V0U291cmNlSWQoaWQpOwotICAgIGN1cnJlbnRTdGF0ZXMoKS0+c2V0
U291cmNlVHlwZShSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzOjpNaWNyb3Bob25lKTsKICAgICBt
X2lucHV0RGVzY3JpcHRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvU3RyZWFtQmFzaWNEZXNj
cmlwdGlvbj4oKTsKIH0KICAgICAKQEAgLTc5LDE5ICs3NywyMSBAQCBBVkF1ZGlvQ2FwdHVyZVNv
dXJjZTo6fkFWQXVkaW9DYXB0dXJlU291CiB7CiB9CiAKLXZvaWQgQVZBdWRpb0NhcHR1cmVTb3Vy
Y2U6OmluaXRpYWxpemVDYXBhYmlsaXRpZXMoUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGll
cyZjYXBhYmlsaXRpZXMpCit2b2lkIEFWQXVkaW9DYXB0dXJlU291cmNlOjppbml0aWFsaXplQ2Fw
YWJpbGl0aWVzKFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMmKQogewogICAgIC8vIEZJ
WE1FOiBmaW5pc2ggdGhpcyBpbXBsZW1lbnRhdGlvbiAtIGh0dHBzOi8vd2Via2l0Lm9yZy9iLzEy
MjQzMAotICAgIGNhcGFiaWxpdGllcy5hZGRTb3VyY2VUeXBlKFJlYWx0aW1lTWVkaWFTb3VyY2VT
dGF0ZXM6Ok1pY3JvcGhvbmUpOwogfQogCi12b2lkIEFWQXVkaW9DYXB0dXJlU291cmNlOjp1cGRh
dGVTdGF0ZXMoKQordm9pZCBBVkF1ZGlvQ2FwdHVyZVNvdXJjZTo6aW5pdGlhbGl6ZVN1cHBvcnRl
ZENvbnN0cmFpbnRzKFJlYWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cyYgc3Vw
cG9ydGVkQ29uc3RyYWludHMpCit7CisgICAgc3VwcG9ydGVkQ29uc3RyYWludHMuc2V0U3VwcG9y
dHNWb2x1bWUodHJ1ZSk7Cit9CisKK3ZvaWQgQVZBdWRpb0NhcHR1cmVTb3VyY2U6OnVwZGF0ZVNl
dHRpbmdzKFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYgc2V0dGluZ3MpCiB7CiAgICAgLy8g
RklYTUU6IHVzZSBbQVZDYXB0dXJlQXVkaW9QcmV2aWV3T3V0cHV0IHZvbHVtZV0gZm9yIHZvbHVt
ZQogCi0gICAgUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlcyogc3RhdGVzID0gY3VycmVudFN0YXRl
cygpOwotICAgIHN0YXRlcy0+c2V0U291cmNlSWQoaWQoKSk7Ci0gICAgc3RhdGVzLT5zZXRTb3Vy
Y2VUeXBlKFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXM6Ok1pY3JvcGhvbmUpOworICAgIHNldHRp
bmdzLnNldERldmljZUlkKGlkKCkpOwogfQogCiB2b2lkIEFWQXVkaW9DYXB0dXJlU291cmNlOjph
ZGRPYnNlcnZlcihBVkF1ZGlvQ2FwdHVyZVNvdXJjZTo6T2JzZXJ2ZXIqIG9ic2VydmVyKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQ2FwdHVyZURldmlj
ZU1hbmFnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5oCShyZXZpc2lvbiAxOTI5MzApCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNlTWFu
YWdlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiQ2FwdHVy
ZURldmljZU1hbmFnZXIuaCIKICNpbmNsdWRlICJNZWRpYVN0cmVhbVRyYWNrU291cmNlc1JlcXVl
c3RDbGllbnQuaCIKICNpbmNsdWRlICJSZWFsdGltZU1lZGlhU291cmNlLmgiCisjaW5jbHVkZSAi
UmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBvcnRlZENvbnN0cmFpbnRzLmgiCiAjaW5jbHVkZSA8d3Rm
L1JldGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC02NSw2
ICs2Niw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZGV2aWNlQ29ubmVjdGVkKCk7CiAgICAgdm9p
ZCBkZXZpY2VEaXNjb25uZWN0ZWQoQVZDYXB0dXJlRGV2aWNlKik7CisgICAgCisgICAgY29uc3Qg
UmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBvcnRlZENvbnN0cmFpbnRzJiBzdXBwb3J0ZWRDb25zdHJh
aW50cygpOwogCiBwcm90ZWN0ZWQ6CiAgICAgc3RhdGljIGJvb2wgaXNBdmFpbGFibGUoKTsKQEAg
LTgwLDYgKzgzLDcgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgcmVnaXN0ZXJGb3JEZXZpY2VOb3Rp
ZmljYXRpb25zKCk7CiAKICAgICBSZXRhaW5QdHI8V2ViQ29yZUFWQ2FwdHVyZURldmljZU1hbmFn
ZXJPYnNlcnZlcj4gbV9vYmpjT2JzZXJ2ZXI7CisgICAgUmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBv
cnRlZENvbnN0cmFpbnRzIG1fc3VwcG9ydGVkQ29uc3RyYWludHM7CiAgICAgVmVjdG9yPENhcHR1
cmVEZXZpY2VJbmZvPiBtX2RldmljZXM7CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2
aWNlTWFuYWdlci5tbQkocmV2aXNpb24gMTkyOTMwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL0FWQ2FwdHVyZURldmljZU1hbmFnZXIubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTM2LDcgKzM2LDcgQEAKICNpbXBvcnQgIk1lZGlhQ29uc3RyYWludHMuaCIKICNpbXBv
cnQgIlJlYWx0aW1lTWVkaWFTb3VyY2UuaCIKICNpbXBvcnQgIlJlYWx0aW1lTWVkaWFTb3VyY2VD
ZW50ZXIuaCIKLSNpbXBvcnQgIlJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXMuaCIKKyNpbXBvcnQg
IlJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncy5oIgogI2ltcG9ydCAiUmVhbHRpbWVNZWRpYVNv
dXJjZVN1cHBvcnRlZENvbnN0cmFpbnRzLmgiCiAjaW1wb3J0ICJTb2Z0TGlua2luZy5oIgogI2lt
cG9ydCAiVVVJRC5oIgpAQCAtMTc3LDkgKzE3Nyw5IEBAIHZvaWQgQVZDYXB0dXJlRGV2aWNlTWFu
YWdlcjo6cmVmcmVzaENhcHQKICAgICAgICAgICAgIGNhcHR1cmVEZXZpY2UubV9ncm91cElEID0g
Y3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpOwogICAgICAgICAgICAgY2FwdHVyZURldmljZS5t
X2xvY2FsaXplZE5hbWUgPSBwbGF0Zm9ybURldmljZS5sb2NhbGl6ZWROYW1lOwogICAgICAgICAg
ICAgaWYgKFtwbGF0Zm9ybURldmljZSBwb3NpdGlvbl0gPT0gQVZDYXB0dXJlRGV2aWNlUG9zaXRp
b25Gcm9udCkKLSAgICAgICAgICAgICAgICBjYXB0dXJlRGV2aWNlLm1fcG9zaXRpb24gPSBSZWFs
dGltZU1lZGlhU291cmNlU3RhdGVzOjpVc2VyOworICAgICAgICAgICAgICAgIGNhcHR1cmVEZXZp
Y2UubV9wb3NpdGlvbiA9IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6VXNlcjsKICAgICAg
ICAgICAgIGlmIChbcGxhdGZvcm1EZXZpY2UgcG9zaXRpb25dID09IEFWQ2FwdHVyZURldmljZVBv
c2l0aW9uQmFjaykKLSAgICAgICAgICAgICAgICBjYXB0dXJlRGV2aWNlLm1fcG9zaXRpb24gPSBS
ZWFsdGltZU1lZGlhU291cmNlU3RhdGVzOjpFbnZpcm9ubWVudDsKKyAgICAgICAgICAgICAgICBj
YXB0dXJlRGV2aWNlLm1fcG9zaXRpb24gPSBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkVu
dmlyb25tZW50OwogCiAgICAgICAgICAgICBib29sIGhhc0F1ZGlvID0gW3BsYXRmb3JtRGV2aWNl
IGhhc01lZGlhVHlwZTpBVk1lZGlhVHlwZUF1ZGlvXSB8fCBbcGxhdGZvcm1EZXZpY2UgaGFzTWVk
aWFUeXBlOkFWTWVkaWFUeXBlTXV4ZWRdOwogICAgICAgICAgICAgYm9vbCBoYXNWaWRlbyA9IFtw
bGF0Zm9ybURldmljZSBoYXNNZWRpYVR5cGU6QVZNZWRpYVR5cGVWaWRlb10gfHwgW3BsYXRmb3Jt
RGV2aWNlIGhhc01lZGlhVHlwZTpBVk1lZGlhVHlwZU11eGVkXTsKQEAgLTM0NCw2ICszNDQsMzEg
QEAgYm9vbCBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjppc1N1cHBvcnRlZAogICAgIHJldHVybiBD
YXB0dXJlRGV2aWNlTWFuYWdlcjo6aXNTdXBwb3J0ZWRGcmFtZVJhdGUoZnJhbWVSYXRlKTsKIH0K
IAorY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBvcnRlZENvbnN0cmFpbnRzJiBBVkNhcHR1
cmVEZXZpY2VNYW5hZ2VyOjpzdXBwb3J0ZWRDb25zdHJhaW50cygpCit7CisgICAgaWYgKG1fc3Vw
cG9ydGVkQ29uc3RyYWludHMuc3VwcG9ydHNEZXZpY2VJZCgpKQorICAgICAgICByZXR1cm4gbV9z
dXBwb3J0ZWRDb25zdHJhaW50czsKKworICAgIG1fc3VwcG9ydGVkQ29uc3RyYWludHMuc2V0U3Vw
cG9ydHNEZXZpY2VJZCh0cnVlKTsKKworICAgIFZlY3RvcjxDYXB0dXJlRGV2aWNlSW5mbz4mIGRl
dmljZXMgPSBjYXB0dXJlRGV2aWNlTGlzdCgpOworCisgICAgZm9yIChhdXRvJiBjYXB0dXJlRGV2
aWNlIDogZGV2aWNlcykgeworICAgICAgICBpZiAoY2FwdHVyZURldmljZS5tX3NvdXJjZVR5cGUg
PT0gUmVhbHRpbWVNZWRpYVNvdXJjZTo6QXVkaW8pCisgICAgICAgICAgICBtX3N1cHBvcnRlZENv
bnN0cmFpbnRzLnNldFN1cHBvcnRzVm9sdW1lKHRydWUpOworCisgICAgICAgIGlmIChjYXB0dXJl
RGV2aWNlLm1fc291cmNlVHlwZSA9PSBSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlbykgeworICAg
ICAgICAgICAgbV9zdXBwb3J0ZWRDb25zdHJhaW50cy5zZXRTdXBwb3J0c1dpZHRoKHRydWUpOwor
ICAgICAgICAgICAgbV9zdXBwb3J0ZWRDb25zdHJhaW50cy5zZXRTdXBwb3J0c0hlaWdodCh0cnVl
KTsKKyAgICAgICAgICAgIG1fc3VwcG9ydGVkQ29uc3RyYWludHMuc2V0U3VwcG9ydHNBc3BlY3RS
YXRpbyh0cnVlKTsKKyAgICAgICAgICAgIG1fc3VwcG9ydGVkQ29uc3RyYWludHMuc2V0U3VwcG9y
dHNGcmFtZVJhdGUodHJ1ZSk7CisgICAgICAgICAgICBtX3N1cHBvcnRlZENvbnN0cmFpbnRzLnNl
dFN1cHBvcnRzRmFjaW5nTW9kZSh0cnVlKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBy
ZXR1cm4gbV9zdXBwb3J0ZWRDb25zdHJhaW50czsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQogCiBAaW1wbGVtZW50YXRpb24gV2ViQ29yZUFWQ2FwdHVyZURldmljZU1hbmFnZXJPYnNlcnZl
cgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWTWVkaWFD
YXB0dXJlU291cmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbWFjL0FWTWVkaWFDYXB0dXJlU291cmNlLmgJKHJldmlzaW9uIDE5MjkzMCkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVk1lZGlhQ2FwdHVyZVNv
dXJjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01Niw3ICs1Niw3IEBAIHB1YmxpYzoKICAgICAKICAg
ICBBVkNhcHR1cmVTZXNzaW9uICpzZXNzaW9uKCkgY29uc3QgeyByZXR1cm4gbV9zZXNzaW9uLmdl
dCgpOyB9CiAKLSAgICBjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzJiBzdGF0ZXMoKSBv
dmVycmlkZTsKKyAgICBjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmIHNldHRpbmdz
KCkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHN0YXJ0UHJvZHVjaW5nRGF0YSgpIG92ZXJyaWRlOwog
ICAgIHZvaWQgc3RvcFByb2R1Y2luZ0RhdGEoKSBvdmVycmlkZTsKQEAgLTcxLDE0ICs3MSwxNSBA
QCBwcm90ZWN0ZWQ6CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0dXBDYXB0dXJlU2Vzc2lvbigpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgc2h1dGRvd25DYXB0dXJlU2Vzc2lvbigpID0gMDsKLSAgICB2
aXJ0dWFsIHZvaWQgdXBkYXRlU3RhdGVzKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVT
ZXR0aW5ncyhSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIGluaXRpYWxpemVDYXBhYmlsaXRpZXMoUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGll
cyYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZVN1cHBvcnRlZENvbnN0cmFpbnRz
KFJlYWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cyYpID0gMDsKIAogICAgIEFW
Q2FwdHVyZURldmljZSAqZGV2aWNlKCkgY29uc3QgeyByZXR1cm4gbV9kZXZpY2UuZ2V0KCk7IH0K
IAotICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXMqIGN1cnJlbnRTdGF0ZXMoKSB7IHJldHVy
biAmbV9jdXJyZW50U3RhdGVzOyB9CiAgICAgTWVkaWFDb25zdHJhaW50cyogY29uc3RyYWludHMo
KSB7IHJldHVybiBtX2NvbnN0cmFpbnRzLmdldCgpOyB9CiAKKyAgICBSZWFsdGltZU1lZGlhU291
cmNlU3VwcG9ydGVkQ29uc3RyYWludHMmIHN1cHBvcnRlZENvbnN0cmFpbnRzKCk7CiAgICAgUmVm
UHRyPFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM+IGNhcGFiaWxpdGllcygpIG92ZXJy
aWRlOwogCiAgICAgdm9pZCBzZXRWaWRlb1NhbXBsZUJ1ZmZlckRlbGVnYXRlKEFWQ2FwdHVyZVZp
ZGVvRGF0YU91dHB1dCopOwpAQCAtOTAsMTEgKzkxLDEyIEBAIHByaXZhdGU6CiAgICAgdm9pZCBz
ZXR1cFNlc3Npb24oKTsKICAgICB2b2lkIHJlc2V0KCkgb3ZlcnJpZGU7CiAKKyAgICBSZWFsdGlt
ZU1lZGlhU291cmNlU2V0dGluZ3MgbV9jdXJyZW50U2V0dGluZ3M7CisgICAgUmVhbHRpbWVNZWRp
YVNvdXJjZVN1cHBvcnRlZENvbnN0cmFpbnRzIG1fc3VwcG9ydGVkQ29uc3RyYWludHM7CiAgICAg
V2Vha1B0ckZhY3Rvcnk8QVZNZWRpYUNhcHR1cmVTb3VyY2U+IG1fd2Vha1B0ckZhY3Rvcnk7CiAg
ICAgUmV0YWluUHRyPFdlYkNvcmVBVk1lZGlhQ2FwdHVyZVNvdXJjZU9ic2VydmVyPiBtX29iamNP
YnNlcnZlcjsKICAgICBSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gbV9jb25zdHJhaW50czsKICAg
ICBSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcz4gbV9jYXBhYmlsaXRpZXM7
Ci0gICAgUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlcyBtX2N1cnJlbnRTdGF0ZXM7CiAgICAgUmV0
YWluUHRyPEFWQ2FwdHVyZVNlc3Npb24+IG1fc2Vzc2lvbjsKICAgICBSZXRhaW5QdHI8QVZDYXB0
dXJlRGV2aWNlPiBtX2RldmljZTsKICAgICBib29sIG1faXNSdW5uaW5nIHsgZmFsc2V9OwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWTWVkaWFDYXB0dXJl
U291cmNlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL21hYy9BVk1lZGlhQ2FwdHVyZVNvdXJjZS5tbQkocmV2aXNpb24gMTkyOTMwKQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWTWVkaWFDYXB0dXJlU291cmNl
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3IEBACiAjaW1wb3J0ICJBdWRpb1NvdXJj
ZVByb3ZpZGVyLmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCiAjaW1wb3J0ICJNZWRpYUNvbnN0cmFp
bnRzLmgiCi0jaW1wb3J0ICJSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzLmgiCisjaW1wb3J0ICJS
ZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MuaCIKICNpbXBvcnQgIlNvZnRMaW5raW5nLmgiCiAj
aW1wb3J0ICJVVUlELmgiCiAjaW1wb3J0IDxBVkZvdW5kYXRpb24vQVZGb3VuZGF0aW9uLmg+CkBA
IC0xMzIsNyArMTMyLDYgQEAgQVZNZWRpYUNhcHR1cmVTb3VyY2U6OkFWTWVkaWFDYXB0dXJlU291
cgogewogICAgIHNldE5hbWUoZGV2aWNlLmxvY2FsaXplZE5hbWUpOwogICAgIHNldFBlcnNpc3Rl
bnRJRChkZXZpY2UudW5pcXVlSUQpOwotICAgIG1fY3VycmVudFN0YXRlcy5zZXRTb3VyY2VUeXBl
KHR5cGUgPT0gUmVhbHRpbWVNZWRpYVNvdXJjZTo6VmlkZW8gPyBSZWFsdGltZU1lZGlhU291cmNl
U3RhdGVzOjpDYW1lcmEgOiBSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzOjpNaWNyb3Bob25lKTsK
IH0KIAogQVZNZWRpYUNhcHR1cmVTb3VyY2U6On5BVk1lZGlhQ2FwdHVyZVNvdXJjZSgpCkBAIC0x
NjUsMTEgKzE2NCwyNSBAQCB2b2lkIEFWTWVkaWFDYXB0dXJlU291cmNlOjpzdG9wUHJvZHVjaW5n
CiAgICAgW21fc2Vzc2lvbi5nZXQoKSBzdG9wUnVubmluZ107CiB9CiAKLWNvbnN0IFJlYWx0aW1l
TWVkaWFTb3VyY2VTdGF0ZXMmIEFWTWVkaWFDYXB0dXJlU291cmNlOjpzdGF0ZXMoKQorY29uc3Qg
UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJiBBVk1lZGlhQ2FwdHVyZVNvdXJjZTo6c2V0dGlu
Z3MoKQogewotICAgIG1fY3VycmVudFN0YXRlcy5zZXRTb3VyY2VJZChpZCgpKTsKLSAgICB1cGRh
dGVTdGF0ZXMoKTsKLSAgICByZXR1cm4gbV9jdXJyZW50U3RhdGVzOworICAgIGlmIChtX2N1cnJl
bnRTZXR0aW5ncy5kZXZpY2VJZCgpLmlzRW1wdHkoKSkKKyAgICAgICAgbV9jdXJyZW50U2V0dGlu
Z3Muc2V0U3VwcG9ydGVkQ29uc3RyYWl0cyhzdXBwb3J0ZWRDb25zdHJhaW50cygpKTsKKworICAg
IG1fY3VycmVudFNldHRpbmdzLnNldERldmljZUlkKGlkKCkpOworICAgIHVwZGF0ZVNldHRpbmdz
KG1fY3VycmVudFNldHRpbmdzKTsKKyAgICByZXR1cm4gbV9jdXJyZW50U2V0dGluZ3M7Cit9CisK
K1JlYWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cyYgQVZNZWRpYUNhcHR1cmVT
b3VyY2U6OnN1cHBvcnRlZENvbnN0cmFpbnRzKCkKK3sKKyAgICBpZiAobV9zdXBwb3J0ZWRDb25z
dHJhaW50cy5zdXBwb3J0c0RldmljZUlkKCkpCisgICAgICAgIHJldHVybiBtX3N1cHBvcnRlZENv
bnN0cmFpbnRzOworCisgICAgbV9zdXBwb3J0ZWRDb25zdHJhaW50cy5zZXRTdXBwb3J0c0Rldmlj
ZUlkKHRydWUpOworICAgIGluaXRpYWxpemVTdXBwb3J0ZWRDb25zdHJhaW50cyhtX3N1cHBvcnRl
ZENvbnN0cmFpbnRzKTsKKworICAgIHJldHVybiBtX3N1cHBvcnRlZENvbnN0cmFpbnRzOwogfQog
CiBSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcz4gQVZNZWRpYUNhcHR1cmVT
b3VyY2U6OmNhcGFiaWxpdGllcygpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UuaAko
cmV2aXNpb24gMTkyOTMwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU1LDkgKzU1LDEw
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXR1cENhcHR1cmVTZXNzaW9uKCkgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBzaHV0ZG93bkNhcHR1cmVTZXNzaW9uKCkgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIHVw
ZGF0ZVN0YXRlcygpIG92ZXJyaWRlOworICAgIHZvaWQgdXBkYXRlU2V0dGluZ3MoUmVhbHRpbWVN
ZWRpYVNvdXJjZVNldHRpbmdzJikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGluaXRpYWxpemVDYXBh
YmlsaXRpZXMoUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcyYpIG92ZXJyaWRlOworICAg
IHZvaWQgaW5pdGlhbGl6ZVN1cHBvcnRlZENvbnN0cmFpbnRzKFJlYWx0aW1lTWVkaWFTb3VyY2VT
dXBwb3J0ZWRDb25zdHJhaW50cyYpIG92ZXJyaWRlOwogCiAgICAgYm9vbCBhcHBseUNvbnN0cmFp
bnRzKE1lZGlhQ29uc3RyYWludHMqKTsKICAgICBib29sIHNldEZyYW1lUmF0ZUNvbnN0cmFpbnQo
ZmxvYXQgbWluRnJhbWVSYXRlLCBmbG9hdCBtYXhGcmFtZVJhdGUpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZp
ZGVvQ2FwdHVyZVNvdXJjZS5tbQkocmV2aXNpb24gMTkyOTMwKQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0zOCw3ICszOCw3IEBACiAjaW1wb3J0ICJOb3RJbXBsZW1lbnRlZC5oIgogI2lt
cG9ydCAiUGxhdGZvcm1MYXllci5oIgogI2ltcG9ydCAiUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRl
ci5oIgotI2ltcG9ydCAiUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlcy5oIgorI2ltcG9ydCAiUmVh
bHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzLmgiCiAjaW1wb3J0IDxBVkZvdW5kYXRpb24vQVZGb3Vu
ZGF0aW9uLmg+CiAjaW1wb3J0IDxvYmpjL3J1bnRpbWUuaD4KIApAQCAtMTExLDI4ICsxMTEsMzMg
QEAgQVZWaWRlb0NhcHR1cmVTb3VyY2U6On5BVlZpZGVvQ2FwdHVyZVNvdQogdm9pZCBBVlZpZGVv
Q2FwdHVyZVNvdXJjZTo6aW5pdGlhbGl6ZUNhcGFiaWxpdGllcyhSZWFsdGltZU1lZGlhU291cmNl
Q2FwYWJpbGl0aWVzJiBjYXBhYmlsaXRpZXMpCiB7CiAgICAgLy8gRklYTUU6IGZpbmlzaCB0aGlz
IGltcGxlbWVudGF0aW9uCi0gICAgY2FwYWJpbGl0aWVzLnNldFNvdXJjZUlkKGN1cnJlbnRTdGF0
ZXMoKS0+c291cmNlSWQoKSk7Ci0gICAgY2FwYWJpbGl0aWVzLmFkZFNvdXJjZVR5cGUoUmVhbHRp
bWVNZWRpYVNvdXJjZVN0YXRlczo6Q2FtZXJhKTsKKyAgICBjYXBhYmlsaXRpZXMuc2V0U291cmNl
SWQoaWQoKSk7CiB9CiAKLXZvaWQgQVZWaWRlb0NhcHR1cmVTb3VyY2U6OnVwZGF0ZVN0YXRlcygp
Cit2b2lkIEFWVmlkZW9DYXB0dXJlU291cmNlOjppbml0aWFsaXplU3VwcG9ydGVkQ29uc3RyYWlu
dHMoUmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBvcnRlZENvbnN0cmFpbnRzJiBzdXBwb3J0ZWRDb25z
dHJhaW50cykKIHsKLSAgICBSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzKiBzdGF0ZXMgPSBjdXJy
ZW50U3RhdGVzKCk7CisgICAgc3VwcG9ydGVkQ29uc3RyYWludHMuc2V0U3VwcG9ydHNXaWR0aCh0
cnVlKTsKKyAgICBzdXBwb3J0ZWRDb25zdHJhaW50cy5zZXRTdXBwb3J0c0hlaWdodCh0cnVlKTsK
KyAgICBzdXBwb3J0ZWRDb25zdHJhaW50cy5zZXRTdXBwb3J0c0FzcGVjdFJhdGlvKHRydWUpOwor
ICAgIHN1cHBvcnRlZENvbnN0cmFpbnRzLnNldFN1cHBvcnRzRnJhbWVSYXRlKHRydWUpOworICAg
IHN1cHBvcnRlZENvbnN0cmFpbnRzLnNldFN1cHBvcnRzRmFjaW5nTW9kZSh0cnVlKTsKK30KIAot
ICAgIHN0YXRlcy0+c2V0U291cmNlSWQoaWQoKSk7Ci0gICAgc3RhdGVzLT5zZXRTb3VyY2VUeXBl
KFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXM6OkNhbWVyYSk7Cit2b2lkIEFWVmlkZW9DYXB0dXJl
U291cmNlOjp1cGRhdGVTZXR0aW5ncyhSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmIHNldHRp
bmdzKQoreworICAgIHNldHRpbmdzLnNldERldmljZUlkKGlkKCkpOwogCiAgICAgaWYgKFtkZXZp
Y2UoKSBwb3NpdGlvbl0gPT0gQVZDYXB0dXJlRGV2aWNlUG9zaXRpb25Gcm9udCkKLSAgICAgICAg
c3RhdGVzLT5zZXRGYWNpbmdNb2RlKFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXM6OlVzZXIpOwor
ICAgICAgICBzZXR0aW5ncy5zZXRGYWNpbmdNb2RlKFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5n
czo6VXNlcik7CiAgICAgZWxzZSBpZiAoW2RldmljZSgpIHBvc2l0aW9uXSA9PSBBVkNhcHR1cmVE
ZXZpY2VQb3NpdGlvbkJhY2spCi0gICAgICAgIHN0YXRlcy0+c2V0RmFjaW5nTW9kZShSZWFsdGlt
ZU1lZGlhU291cmNlU3RhdGVzOjpFbnZpcm9ubWVudCk7CisgICAgICAgIHNldHRpbmdzLnNldEZh
Y2luZ01vZGUoUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpFbnZpcm9ubWVudCk7CiAgICAg
ZWxzZQotICAgICAgICBzdGF0ZXMtPnNldEZhY2luZ01vZGUoUmVhbHRpbWVNZWRpYVNvdXJjZVN0
YXRlczo6VW5rbm93bik7CisgICAgICAgIHNldHRpbmdzLnNldEZhY2luZ01vZGUoUmVhbHRpbWVN
ZWRpYVNvdXJjZVNldHRpbmdzOjpVbmtub3duKTsKICAgICAKLSAgICBzdGF0ZXMtPnNldEZyYW1l
UmF0ZShtX2ZyYW1lUmF0ZSk7Ci0gICAgc3RhdGVzLT5zZXRXaWR0aChtX3dpZHRoKTsKLSAgICBz
dGF0ZXMtPnNldEhlaWdodChtX2hlaWdodCk7Ci0gICAgc3RhdGVzLT5zZXRBc3BlY3RSYXRpbyhz
dGF0aWNfY2FzdDxmbG9hdD4obV93aWR0aCkgLyBtX2hlaWdodCk7CisgICAgc2V0dGluZ3Muc2V0
RnJhbWVSYXRlKG1fZnJhbWVSYXRlKTsKKyAgICBzZXR0aW5ncy5zZXRXaWR0aChtX3dpZHRoKTsK
KyAgICBzZXR0aW5ncy5zZXRIZWlnaHQobV9oZWlnaHQpOworICAgIHNldHRpbmdzLnNldEFzcGVj
dFJhdGlvKHN0YXRpY19jYXN0PGZsb2F0PihtX3dpZHRoKSAvIG1faGVpZ2h0KTsKIH0KIAogYm9v
bCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6c2V0RnJhbWVSYXRlQ29uc3RyYWludChmbG9hdCBtaW5G
cmFtZVJhdGUsIGZsb2F0IG1heEZyYW1lUmF0ZSkKQEAgLTI5Miw3ICsyOTcsNyBAQCB2b2lkIEFW
VmlkZW9DYXB0dXJlU291cmNlOjpwcm9jZXNzTmV3RnJhCiAKICAgICB1cGRhdGVGcmFtZXJhdGUo
c2FtcGxlQnVmZmVyLmdldCgpKTsKIAotICAgIGJvb2wgc3RhdGVzQ2hhbmdlZCA9IGZhbHNlOwor
ICAgIGJvb2wgc2V0dGluZ3NDaGFuZ2VkID0gZmFsc2U7CiAKICAgICBtX2J1ZmZlciA9IHNhbXBs
ZUJ1ZmZlcjsKICAgICBtX2xhc3RJbWFnZSA9IG51bGxwdHI7CkBAIC0zMDEsMTEgKzMwNiwxMSBA
QCB2b2lkIEFWVmlkZW9DYXB0dXJlU291cmNlOjpwcm9jZXNzTmV3RnJhCiAgICAgaWYgKGRpbWVu
c2lvbnMud2lkdGggIT0gbV93aWR0aCB8fCBkaW1lbnNpb25zLmhlaWdodCAhPSBtX2hlaWdodCkg
ewogICAgICAgICBtX3dpZHRoID0gZGltZW5zaW9ucy53aWR0aDsKICAgICAgICAgbV9oZWlnaHQg
PSBkaW1lbnNpb25zLmhlaWdodDsKLSAgICAgICAgc3RhdGVzQ2hhbmdlZCA9IHRydWU7CisgICAg
ICAgIHNldHRpbmdzQ2hhbmdlZCA9IHRydWU7CiAgICAgfQogCi0gICAgaWYgKHN0YXRlc0NoYW5n
ZWQpCi0gICAgICAgIHRoaXMtPnN0YXRlc0RpZENoYW5nZWQoKTsKKyAgICBpZiAoc2V0dGluZ3ND
aGFuZ2VkKQorICAgICAgICB0aGlzLT5zZXR0aW5nc0RpZENoYW5nZWQoKTsKIH0KIAogdm9pZCBB
VlZpZGVvQ2FwdHVyZVNvdXJjZTo6Y2FwdHVyZU91dHB1dERpZE91dHB1dFNhbXBsZUJ1ZmZlckZy
b21Db25uZWN0aW9uKEFWQ2FwdHVyZU91dHB1dFR5cGUqLCBDTVNhbXBsZUJ1ZmZlclJlZiBzYW1w
bGVCdWZmZXIsIEFWQ2FwdHVyZUNvbm5lY3Rpb25UeXBlKikKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9j
a1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWMubW0JKHJldmlzaW9uIDE5MjkzMCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1h
Yy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBAQAogI2ltcG9ydCAiTWVkaWFDb25z
dHJhaW50cy5oIgogI2ltcG9ydCAiTm90SW1wbGVtZW50ZWQuaCIKICNpbXBvcnQgIlBsYXRmb3Jt
TGF5ZXIuaCIKLSNpbXBvcnQgIlJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXMuaCIKKyNpbXBvcnQg
IlJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncy5oIgogI2ltcG9ydCA8UXVhcnR6Q29yZS9DQUxh
eWVyLmg+CiAjaW1wb3J0IDxRdWFydHpDb3JlL0NBVHJhbnNhY3Rpb24uaD4KICNpbXBvcnQgPG9i
amMvcnVudGltZS5oPgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
b3BlbndlYnJ0Yy9SZWFsdGltZU1lZGlhU291cmNlT3dyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vb3BlbndlYnJ0Yy9SZWFsdGltZU1lZGlhU291
cmNlT3dyLmgJKHJldmlzaW9uIDE5MjkzMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL29wZW53ZWJydGMvUmVhbHRpbWVNZWRpYVNvdXJjZU93ci5oCSh3b3JraW5nIGNv
cHkpCkBAIC01OSwxMyArNTksMTMgQEAgUmVhbHRpbWVNZWRpYVNvdXJjZU93cihPd3JNZWRpYVNv
dXJjZSogbQogICAgIHZpcnR1YWwgflJlYWx0aW1lTWVkaWFTb3VyY2VPd3IoKSB7IH0KIAogICAg
IHZpcnR1YWwgUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM+IGNhcGFiaWxp
dGllcygpIHsgcmV0dXJuIG1fY2FwYWJpbGl0aWVzOyB9Ci0gICAgdmlydHVhbCBjb25zdCBSZWFs
dGltZU1lZGlhU291cmNlU3RhdGVzJiBzdGF0ZXMoKSB7IHJldHVybiBtX2N1cnJlbnRTdGF0ZXM7
IH0KKyAgICB2aXJ0dWFsIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYgc2V0dGlu
Z3MoKSB7IHJldHVybiBtX2N1cnJlbnRTZXR0aW5nczsgfQogCiAgICAgT3dyTWVkaWFTb3VyY2Uq
IG1lZGlhU291cmNlKCkgY29uc3QgeyByZXR1cm4gbV9tZWRpYVNvdXJjZTsgfQogCiBwcml2YXRl
OgogICAgIFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzPiBtX2NhcGFiaWxp
dGllczsKLSAgICBSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzIG1fY3VycmVudFN0YXRlczsKKyAg
ICBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MgbV9jdXJyZW50U2V0dGluZ3M7CiAgICAgT3dy
TWVkaWFTb3VyY2UqIG1fbWVkaWFTb3VyY2U7CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZUF1ZGlvU291cmNlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZUF1ZGlvU291cmNlLmNwcAko
cmV2aXNpb24gMTkyOTMwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVh
bHRpbWVBdWRpb1NvdXJjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDcgQEAKICNp
bmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTWVkaWFDb25zdHJhaW50cy5oIgogI2luY2x1
ZGUgIk5vdEltcGxlbWVudGVkLmgiCi0jaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRl
cy5oIgorI2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncy5oIgogI2luY2x1ZGUg
IlVVSUQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTAsMTEgKzUwLDkgQEAgTW9ja1Jl
YWx0aW1lQXVkaW9Tb3VyY2U6Ok1vY2tSZWFsdGltZUF1ZAogewogfQogCi12b2lkIE1vY2tSZWFs
dGltZUF1ZGlvU291cmNlOjp1cGRhdGVTdGF0ZXMoKQordm9pZCBNb2NrUmVhbHRpbWVBdWRpb1Nv
dXJjZTo6dXBkYXRlU2V0dGluZ3MoUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJiBzZXR0aW5n
cykKIHsKLSAgICBSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzKiBzdGF0ZXMgPSBjdXJyZW50U3Rh
dGVzKCk7Ci0gICAgc3RhdGVzLT5zZXRTb3VyY2VUeXBlKFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0
ZXM6Ok1pY3JvcGhvbmUpOwotICAgIHN0YXRlcy0+c2V0Vm9sdW1lKDUwKTsKKyAgICBzZXR0aW5n
cy5zZXRWb2x1bWUoNTApOwogfQogCiB2b2lkIE1vY2tSZWFsdGltZUF1ZGlvU291cmNlOjppbml0
aWFsaXplQ2FwYWJpbGl0aWVzKFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMmIGNhcGFi
aWxpdGllcykKQEAgLTYyLDYgKzYwLDExIEBAIHZvaWQgTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2U6
OmluaXRpYWxpemUKICAgICBjYXBhYmlsaXRpZXMuc2V0Vm9sdW1lUmFuZ2UoUmVhbHRpbWVNZWRp
YVNvdXJjZUNhcGFiaWxpdHlSYW5nZSgwVUwsIDEwMFVMLCB0cnVlKSk7CiB9CiAKK3ZvaWQgTW9j
a1JlYWx0aW1lQXVkaW9Tb3VyY2U6OmluaXRpYWxpemVTdXBwb3J0ZWRDb25zdHJhaW50cyhSZWFs
dGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMmIHN1cHBvcnRlZENvbnN0cmFpbnRz
KQoreworICAgIHN1cHBvcnRlZENvbnN0cmFpbnRzLnNldFN1cHBvcnRzVm9sdW1lKHRydWUpOwor
fQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RS
RUFNKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVBdWRp
b1NvdXJjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9j
a1JlYWx0aW1lQXVkaW9Tb3VyY2UuaAkocmV2aXNpb24gMTkyOTMwKQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC01MSw4ICs1MSw5IEBAIHByb3RlY3RlZDoKICAgICBNb2NrUmVhbHRpbWVBdWRpb1NvdXJj
ZSgpOwogCiBwcml2YXRlOgotICAgIHZvaWQgdXBkYXRlU3RhdGVzKCkgb3ZlcnJpZGU7CisgICAg
dm9pZCB1cGRhdGVTZXR0aW5ncyhSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmKSBvdmVycmlk
ZTsKICAgICB2b2lkIGluaXRpYWxpemVDYXBhYmlsaXRpZXMoUmVhbHRpbWVNZWRpYVNvdXJjZUNh
cGFiaWxpdGllcyYpIG92ZXJyaWRlOworICAgIHZvaWQgaW5pdGlhbGl6ZVN1cHBvcnRlZENvbnN0
cmFpbnRzKFJlYWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cyYpIG92ZXJyaWRl
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAJKHJl
dmlzaW9uIDE5MjkzMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0
aW1lTWVkaWFTb3VyY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICszNiw3IEBACiAjaW5j
bHVkZSAiTWVkaWFDb25zdHJhaW50cy5oIgogI2luY2x1ZGUgIk1lZGlhU3RyZWFtVHJhY2tTb3Vy
Y2VzUmVxdWVzdENsaWVudC5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCi0jaW5jbHVk
ZSAiUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlcy5oIgorI2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFT
b3VyY2VTZXR0aW5ncy5oIgogI2luY2x1ZGUgPG1hdGguaD4KICNpbmNsdWRlIDx3dGYvQ3VycmVu
dFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KQEAgLTkyLDIyICs5Miwz
OSBAQCBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6TW9ja1JlYWx0aW1lTWVkCiAKIFJlZlB0cjxS
ZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzPiBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6
Y2FwYWJpbGl0aWVzKCkKIHsKLSAgICBpZiAoIW1fY2FwYWJpbGl0aWVzKSB7Ci0gICAgICAgIG1f
Y2FwYWJpbGl0aWVzID0gUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllczo6Y3JlYXRlKCk7
Ci0gICAgICAgIG1fY2FwYWJpbGl0aWVzLT5zZXRTb3VyY2VJZChpZCgpKTsKLSAgICAgICAgaW5p
dGlhbGl6ZUNhcGFiaWxpdGllcygqbV9jYXBhYmlsaXRpZXMuZ2V0KCkpOwotICAgIH0KKyAgICBp
ZiAobV9jYXBhYmlsaXRpZXMpCisgICAgICAgIHJldHVybiBtX2NhcGFiaWxpdGllczsKKworICAg
IG1fY2FwYWJpbGl0aWVzID0gUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllczo6Y3JlYXRl
KCk7CisgICAgbV9jYXBhYmlsaXRpZXMtPnNldFNvdXJjZUlkKGlkKCkpOworICAgIGluaXRpYWxp
emVDYXBhYmlsaXRpZXMoKm1fY2FwYWJpbGl0aWVzLmdldCgpKTsKKwogICAgIHJldHVybiBtX2Nh
cGFiaWxpdGllczsKIH0KIAotY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlcyYgTW9ja1Jl
YWx0aW1lTWVkaWFTb3VyY2U6OnN0YXRlcygpCitjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU2V0
dGluZ3MmIE1vY2tSZWFsdGltZU1lZGlhU291cmNlOjpzZXR0aW5ncygpCit7CisgICAgaWYgKG1f
Y3VycmVudFNldHRpbmdzLmRldmljZUlkKCkuaXNFbXB0eSgpKSB7CisgICAgICAgIG1fY3VycmVu
dFNldHRpbmdzLnNldFN1cHBvcnRlZENvbnN0cmFpdHMoc3VwcG9ydGVkQ29uc3RyYWludHMoKSk7
CisgICAgICAgIG1fY3VycmVudFNldHRpbmdzLnNldERldmljZUlkKGlkKCkpOworICAgIH0KKwor
ICAgIHVwZGF0ZVNldHRpbmdzKG1fY3VycmVudFNldHRpbmdzKTsKKyAgICByZXR1cm4gbV9jdXJy
ZW50U2V0dGluZ3M7Cit9CisKK1JlYWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50
cyYgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2U6OnN1cHBvcnRlZENvbnN0cmFpbnRzKCkKIHsKLSAg
ICBtX2N1cnJlbnRTdGF0ZXMuc2V0U291cmNlSWQoaWQoKSk7Ci0gICAgdXBkYXRlU3RhdGVzKCk7
CisgICAgaWYgKG1fc3VwcG9ydGVkQ29uc3RyYWludHMuc3VwcG9ydHNEZXZpY2VJZCgpKQorICAg
ICAgICByZXR1cm4gbV9zdXBwb3J0ZWRDb25zdHJhaW50czsKIAotICAgIHJldHVybiBtX2N1cnJl
bnRTdGF0ZXM7CisgICAgbV9zdXBwb3J0ZWRDb25zdHJhaW50cy5zZXRTdXBwb3J0c0RldmljZUlk
KHRydWUpOworICAgIGluaXRpYWxpemVTdXBwb3J0ZWRDb25zdHJhaW50cyhtX3N1cHBvcnRlZENv
bnN0cmFpbnRzKTsKKworICAgIHJldHVybiBtX3N1cHBvcnRlZENvbnN0cmFpbnRzOwogfQogCisK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0p
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291
cmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVh
bHRpbWVNZWRpYVNvdXJjZS5oCShyZXZpc2lvbiAxOTI5MzApCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTU3LDIzICs1NywyNSBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgTW9ja1JlYWx0aW1lTWVk
aWFTb3VyY2UoY29uc3QgU3RyaW5nJiBpZCwgVHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lKTsKIAot
ICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTdGF0ZXMoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVw
ZGF0ZVNldHRpbmdzKFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgaW5pdGlhbGl6ZUNhcGFiaWxpdGllcyhSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJp
bGl0aWVzJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsaXplU3VwcG9ydGVkQ29uc3Ry
YWludHMoUmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBvcnRlZENvbnN0cmFpbnRzJikgPSAwOwogCiAg
ICAgdm9pZCBzdGFydFByb2R1Y2luZ0RhdGEoKSBvdmVycmlkZSB7IG1faXNQcm9kdWNpbmdEYXRh
ID0gdHJ1ZTsgfQogICAgIHZvaWQgc3RvcFByb2R1Y2luZ0RhdGEoKSBvdmVycmlkZSB7IG1faXNQ
cm9kdWNpbmdEYXRhID0gZmFsc2U7IH0KIAogICAgIFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNl
Q2FwYWJpbGl0aWVzPiBjYXBhYmlsaXRpZXMoKSBvdmVycmlkZTsKLSAgICBjb25zdCBSZWFsdGlt
ZU1lZGlhU291cmNlU3RhdGVzJiBzdGF0ZXMoKSBvdmVycmlkZTsKKyAgICBjb25zdCBSZWFsdGlt
ZU1lZGlhU291cmNlU2V0dGluZ3MmIHNldHRpbmdzKCkgb3ZlcnJpZGU7CiAKLSAgICBSZWFsdGlt
ZU1lZGlhU291cmNlU3RhdGVzKiBjdXJyZW50U3RhdGVzKCkgeyByZXR1cm4gJm1fY3VycmVudFN0
YXRlczsgfQotICAgIE1lZGlhQ29uc3RyYWludHMqIGNvbnN0cmFpbnRzKCkgeyByZXR1cm4gbV9j
b25zdHJhaW50cy5nZXQoKTsgfQorICAgIE1lZGlhQ29uc3RyYWludHMmIGNvbnN0cmFpbnRzKCkg
eyByZXR1cm4gKm1fY29uc3RyYWludHMuZ2V0KCk7IH0KKyAgICBSZWFsdGltZU1lZGlhU291cmNl
U3VwcG9ydGVkQ29uc3RyYWludHMmIHN1cHBvcnRlZENvbnN0cmFpbnRzKCk7CiAKIHByaXZhdGU6
CiAKICAgICBib29sIGlzUHJvZHVjaW5nRGF0YSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1f
aXNQcm9kdWNpbmdEYXRhOyB9CiAKLSAgICBSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzIG1fY3Vy
cmVudFN0YXRlczsKKyAgICBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MgbV9jdXJyZW50U2V0
dGluZ3M7CisgICAgUmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBvcnRlZENvbnN0cmFpbnRzIG1fc3Vw
cG9ydGVkQ29uc3RyYWludHM7CiAgICAgUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmls
aXRpZXM+IG1fY2FwYWJpbGl0aWVzOwogICAgIFJlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiBtX2Nv
bnN0cmFpbnRzOwogICAgIGJvb2wgbV9pc1Byb2R1Y2luZ0RhdGEgeyBmYWxzZSB9OwpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVW
aWRlb1NvdXJjZS5jcHAJKHJldmlzaW9uIDE5MjkzMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
OSw3ICszOSw3IEBACiAjaW5jbHVkZSAiTWVkaWFDb25zdHJhaW50cy5oIgogI2luY2x1ZGUgIk5v
dEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1MYXllci5oIgotI2luY2x1ZGUgIlJl
YWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXMuaCIKKyNpbmNsdWRlICJSZWFsdGltZU1lZGlhU291cmNl
U2V0dGluZ3MuaCIKICNpbmNsdWRlICJVVUlELmgiCiAjaW5jbHVkZSA8bWF0aC5oPgogI2luY2x1
ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgpAQCAtOTAsMzkgKzkwLDMyIEBAIGRvdWJsZSBNb2NrUmVh
bHRpbWVWaWRlb1NvdXJjZTo6ZWxhcHNlZFQKICAgICByZXR1cm4gbV9lbGFwc2VkVGltZSArICht
b25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKSAtIG1fc3RhcnRUaW1lKTsKIH0KIAotdm9pZCBN
b2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6dXBkYXRlU3RhdGVzKCkKK3ZvaWQgTW9ja1JlYWx0aW1l
VmlkZW9Tb3VyY2U6OnVwZGF0ZVNldHRpbmdzKFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYg
c2V0dGluZ3MpCiB7Ci0gICAgUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlcyogc3RhdGVzID0gY3Vy
cmVudFN0YXRlcygpOwotCi0gICAgc3RhdGVzLT5zZXRTb3VyY2VUeXBlKFJlYWx0aW1lTWVkaWFT
b3VyY2VTdGF0ZXM6OkNhbWVyYSk7Ci0gICAgc3RhdGVzLT5zZXRGYWNpbmdNb2RlKFJlYWx0aW1l
TWVkaWFTb3VyY2VTdGF0ZXM6OlVzZXIpOwotICAgIHN0YXRlcy0+c2V0RnJhbWVSYXRlKG1fZnJh
bWVSYXRlKTsKLSAgICBzdGF0ZXMtPnNldFdpZHRoKG1fc2l6ZS53aWR0aCgpKTsKLSAgICBzdGF0
ZXMtPnNldEhlaWdodChtX3NpemUuaGVpZ2h0KCkpOwotICAgIHN0YXRlcy0+c2V0QXNwZWN0UmF0
aW8oc3RhdGljX2Nhc3Q8ZmxvYXQ+KG1fc2l6ZS53aWR0aCgpKSAvIG1fc2l6ZS5oZWlnaHQoKSk7
CisgICAgc2V0dGluZ3Muc2V0RmFjaW5nTW9kZShSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6
OlVzZXIpOworICAgIHNldHRpbmdzLnNldEZyYW1lUmF0ZShtX2ZyYW1lUmF0ZSk7CisgICAgc2V0
dGluZ3Muc2V0V2lkdGgobV9zaXplLndpZHRoKCkpOworICAgIHNldHRpbmdzLnNldEhlaWdodCht
X3NpemUuaGVpZ2h0KCkpOworICAgIHNldHRpbmdzLnNldEFzcGVjdFJhdGlvKHN0YXRpY19jYXN0
PGZsb2F0PihtX3NpemUud2lkdGgoKSkgLyBtX3NpemUuaGVpZ2h0KCkpOwogfQogCiB2b2lkIE1v
Y2tSZWFsdGltZVZpZGVvU291cmNlOjppbml0aWFsaXplQ2FwYWJpbGl0aWVzKFJlYWx0aW1lTWVk
aWFTb3VyY2VDYXBhYmlsaXRpZXMmIGNhcGFiaWxpdGllcykKIHsKLSAgICBjYXBhYmlsaXRpZXMu
YWRkU291cmNlVHlwZShSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzOjpDYW1lcmEpOwotICAgIGNh
cGFiaWxpdGllcy5hZGRGYWNpbmdNb2RlKFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXM6OlVzZXIp
OwotICAgIGNhcGFiaWxpdGllcy5hZGRGYWNpbmdNb2RlKFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0
ZXM6OkVudmlyb25tZW50KTsKKyAgICBjYXBhYmlsaXRpZXMuYWRkRmFjaW5nTW9kZShSZWFsdGlt
ZU1lZGlhU291cmNlU2V0dGluZ3M6OlVzZXIpOworICAgIGNhcGFiaWxpdGllcy5hZGRGYWNpbmdN
b2RlKFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RW52aXJvbm1lbnQpOwogICAgIGNhcGFi
aWxpdGllcy5zZXRXaWR0aFJhbmdlKFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXR5UmFuZ2Uo
MzIwVUwsIDE5MjBVTCwgdHJ1ZSkpOwogICAgIGNhcGFiaWxpdGllcy5zZXRIZWlnaHRSYW5nZShS
ZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0eVJhbmdlKDI0MFVMLCAxMDgwVUwsIHRydWUpKTsK
ICAgICBjYXBhYmlsaXRpZXMuc2V0RnJhbWVSYXRlUmFuZ2UoUmVhbHRpbWVNZWRpYVNvdXJjZUNh
cGFiaWxpdHlSYW5nZSgxNS4wZiwgNjAuMGYsIHRydWUpKTsKICAgICBjYXBhYmlsaXRpZXMuc2V0
QXNwZWN0UmF0aW9SYW5nZShSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0eVJhbmdlKDQgLyAz
LjBmLCAxNiAvIDkuMGYsIHRydWUpKTsKIH0KIAotdm9pZCBNb2NrUmVhbHRpbWVWaWRlb1NvdXJj
ZTo6c2V0RmFjaW5nTW9kZShSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzOjpWaWRlb0ZhY2luZ01v
ZGUgbW9kZSkKK3ZvaWQgTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OmluaXRpYWxpemVTdXBwb3J0
ZWRDb25zdHJhaW50cyhSZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMmIHN1
cHBvcnRlZENvbnN0cmFpbnRzKQogewotICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXMqIHN0
YXRlcyA9IGN1cnJlbnRTdGF0ZXMoKTsKLQotICAgIGlmIChzdGF0ZXMtPmZhY2luZ01vZGUoKSA9
PSBtb2RlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBzdGF0ZXMtPnNldEZhY2luZ01vZGUobW9k
ZSk7Ci0KLSAgICBzdGF0ZXNEaWRDaGFuZ2VkKCk7CisgICAgc3VwcG9ydGVkQ29uc3RyYWludHMu
c2V0U3VwcG9ydHNXaWR0aCh0cnVlKTsKKyAgICBzdXBwb3J0ZWRDb25zdHJhaW50cy5zZXRTdXBw
b3J0c0hlaWdodCh0cnVlKTsKKyAgICBzdXBwb3J0ZWRDb25zdHJhaW50cy5zZXRTdXBwb3J0c0Fz
cGVjdFJhdGlvKHRydWUpOworICAgIHN1cHBvcnRlZENvbnN0cmFpbnRzLnNldFN1cHBvcnRzRnJh
bWVSYXRlKHRydWUpOworICAgIHN1cHBvcnRlZENvbnN0cmFpbnRzLnNldFN1cHBvcnRzRmFjaW5n
TW9kZSh0cnVlKTsKIH0KIAogdm9pZCBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6c2V0RnJhbWVS
YXRlKGZsb2F0IHJhdGUpCkBAIC0xMzQsNyArMTI3LDcgQEAgdm9pZCBNb2NrUmVhbHRpbWVWaWRl
b1NvdXJjZTo6c2V0RnJhbWVSYQogICAgIGlmIChtX3RpbWVyLmlzQWN0aXZlKCkpCiAgICAgICAg
IG1fdGltZXIuc3RhcnRSZXBlYXRpbmcoc3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kcyhscm91bmQo
MTAwMCAvIG1fZnJhbWVSYXRlKSkpOwogCi0gICAgc3RhdGVzRGlkQ2hhbmdlZCgpOworICAgIHNl
dHRpbmdzRGlkQ2hhbmdlZCgpOwogfQogCiB2b2lkIE1vY2tSZWFsdGltZVZpZGVvU291cmNlOjpz
ZXRTaXplKGNvbnN0IEludFNpemUmIHNpemUpCkBAIC0xNjksNyArMTYyLDcgQEAgdm9pZCBNb2Nr
UmVhbHRpbWVWaWRlb1NvdXJjZTo6c2V0U2l6ZShjbwogICAgIG1faW1hZ2VCdWZmZXIgPSBudWxs
cHRyOwogICAgIHVwZGF0ZVBsYXRmb3JtTGF5ZXIoKTsKIAotICAgIHN0YXRlc0RpZENoYW5nZWQo
KTsKKyAgICBzZXR0aW5nc0RpZENoYW5nZWQoKTsKIH0KIAogdm9pZCBNb2NrUmVhbHRpbWVWaWRl
b1NvdXJjZTo6ZHJhd0FuaW1hdGlvbihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCkBAIC0yODQs
MjAgKzI3NywyMCBAQCB2b2lkIE1vY2tSZWFsdGltZVZpZGVvU291cmNlOjpkcmF3VGV4dChHCiAg
ICAgY29udGV4dC5kcmF3VGV4dChtX3N0YXRzRm9udCwgVGV4dFJ1bigoU3RyaW5nVmlldyhzdHJp
bmcpKSksIHN0YXRzTG9jYXRpb24sIDAsIC0xKTsKIAogICAgIGNvbnN0IGNoYXIqIGNhbWVyYTsK
LSAgICBzd2l0Y2ggKHN0YXRlcygpLmZhY2luZ01vZGUoKSkgewotICAgIGNhc2UgUmVhbHRpbWVN
ZWRpYVNvdXJjZVN0YXRlczo6VXNlcjoKKyAgICBzd2l0Y2ggKHNldHRpbmdzKCkuZmFjaW5nTW9k
ZSgpKSB7CisgICAgY2FzZSBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OlVzZXI6CiAgICAg
ICAgIGNhbWVyYSA9ICJVc2VyIGZhY2luZyI7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgUmVh
bHRpbWVNZWRpYVNvdXJjZVN0YXRlczo6RW52aXJvbm1lbnQ6CisgICAgY2FzZSBSZWFsdGltZU1l
ZGlhU291cmNlU2V0dGluZ3M6OkVudmlyb25tZW50OgogICAgICAgICBjYW1lcmEgPSAiRW52aXJv
bm1lbnQgZmFjaW5nIjsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBSZWFsdGltZU1lZGlhU291
cmNlU3RhdGVzOjpMZWZ0OgorICAgIGNhc2UgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpM
ZWZ0OgogICAgICAgICBjYW1lcmEgPSAiTGVmdCBmYWNpbmciOwogICAgICAgICBicmVhazsKLSAg
ICBjYXNlIFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXM6OlJpZ2h0OgorICAgIGNhc2UgUmVhbHRp
bWVNZWRpYVNvdXJjZVNldHRpbmdzOjpSaWdodDoKICAgICAgICAgY2FtZXJhID0gIlJpZ2h0IGZh
Y2luZyI7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRl
czo6VW5rbm93bjoKKyAgICBjYXNlIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6VW5rbm93
bjoKICAgICAgICAgY2FtZXJhID0gIlVua25vd24iOwogICAgICAgICBicmVhazsKICAgICB9Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRp
bWVWaWRlb1NvdXJjZS5oCShyZXZpc2lvbiAxOTI5MzApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTUz
LDcgKzUzLDYgQEAgcHVibGljOgogICAgIHZvaWQgc2V0U2l6ZShjb25zdCBJbnRTaXplJik7CiAg
ICAgY29uc3QgSW50U2l6ZSYgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQogCi0gICAg
dm9pZCBzZXRGYWNpbmdNb2RlKFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXM6OlZpZGVvRmFjaW5n
TW9kZSk7CiAgICAgdm9pZCBzZXRGcmFtZVJhdGUoZmxvYXQpOwogCiBwcm90ZWN0ZWQ6CkBAIC02
Myw4ICs2Miw5IEBAIHByb3RlY3RlZDoKICAgICBJbWFnZUJ1ZmZlciogaW1hZ2VCdWZmZXIoKSBj
b25zdDsKIAogcHJpdmF0ZToKLSAgICB2b2lkIHVwZGF0ZVN0YXRlcygpIG92ZXJyaWRlOworICAg
IHZvaWQgdXBkYXRlU2V0dGluZ3MoUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJikgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBpbml0aWFsaXplQ2FwYWJpbGl0aWVzKFJlYWx0aW1lTWVkaWFTb3VyY2VD
YXBhYmlsaXRpZXMmKSBvdmVycmlkZTsKKyAgICB2b2lkIGluaXRpYWxpemVTdXBwb3J0ZWRDb25z
dHJhaW50cyhSZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMmKSBvdmVycmlk
ZTsKIAogICAgIHZvaWQgc3RhcnRQcm9kdWNpbmdEYXRhKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBz
dG9wUHJvZHVjaW5nRGF0YSgpIG92ZXJyaWRlOwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTkyOTMwKQor
KysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAK
KzIwMTUtMTItMDIgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CisKKyAg
ICAgICAgW01lZGlhU3RyZWFtXSBJbXBsZW1lbnQgTWVkaWFTdHJlYW1UcmFjay5nZXRTZXR0aW5n
cygpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE3
MjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZh
c3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0tdmlkZW8tZWxlbWVudC1leHBlY3RlZC50eHQ6Cisg
ICAgICAgICogZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS12aWRlby1lbGVtZW50LXRyYWNr
LXN0b3AtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJl
YW0tdmlkZW8tZWxlbWVudC10cmFjay1zdG9wLmh0bWw6CisgICAgICAgICogZmFzdC9tZWRpYXN0
cmVhbS9NZWRpYVN0cmVhbS12aWRlby1lbGVtZW50Lmh0bWw6CisgICAgICAgICogZmFzdC9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLWdldFNldHRpbmdzLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLWdldFNldHRpbmdz
Lmh0bWw6IEFkZGVkLgorCiAyMDE1LTEyLTAxICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVs
ZEBhcHBsZS5jb20+CiAKICAgICAgICAgW1NWRyAtPiBPVEYgQ29udmVydGVyXSBGb3JjZSBVbml0
c1BlckVtIHRvIDEwMDAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFT
dHJlYW0tdmlkZW8tZWxlbWVudC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS12aWRlby1lbGVtZW50LWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMTkyOTMwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRp
YVN0cmVhbS12aWRlby1lbGVtZW50LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMjEs
OCArMjEsOCBAQCBFdmVudCAnY2FucGxheXRocm91Z2gnCiB2aWRlby5wYXVzZSgpCiAKICoqKiog
Y2hlY2sgdmlkZW8gZWxlbWVudCAqKioqCi1QQVNTIHZpZGVvLnZpZGVvV2lkdGggaXMgbWVkaWFT
dHJlYW0uZ2V0VmlkZW9UcmFja3MoKVswXS5zdGF0ZXMoKS53aWR0aAotUEFTUyB2aWRlby52aWRl
b0hlaWdodCBpcyBtZWRpYVN0cmVhbS5nZXRWaWRlb1RyYWNrcygpWzBdLnN0YXRlcygpLmhlaWdo
dAorUEFTUyB2aWRlby52aWRlb1dpZHRoIGlzIG1lZGlhU3RyZWFtLmdldFZpZGVvVHJhY2tzKClb
MF0uZ2V0U2V0dGluZ3MoKS53aWR0aAorUEFTUyB2aWRlby52aWRlb0hlaWdodCBpcyBtZWRpYVN0
cmVhbS5nZXRWaWRlb1RyYWNrcygpWzBdLmdldFNldHRpbmdzKCkuaGVpZ2h0CiBQQVNTIHZpZGVv
LnNyYy5pbmRleE9mKCJibG9iOiIpIGlzIDAKIFBBU1MgdmlkZW8uc3JjT2JqZWN0IGlzIG1lZGlh
U3RyZWFtCiAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0t
dmlkZW8tZWxlbWVudC10cmFjay1zdG9wLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLXZpZGVvLWVsZW1lbnQtdHJhY2st
c3RvcC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE5MjkzMCkKKysrIExheW91dFRlc3RzL2Zhc3Qv
bWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0tdmlkZW8tZWxlbWVudC10cmFjay1zdG9wLWV4cGVjdGVk
LnR4dAkod29ya2luZyBjb3B5KQpAQCAtMjIsOCArMjIsOCBAQCB2aWRlby5wYXVzZSgpCiAKICoq
KiogY2hlY2sgc3RhdGVzIHdpdGggbGl2ZSB2aWRlbyBzdHJlYW0gdHJhY2sgKioqKgogUEFTUyB2
aWRlby5lbmRlZCBpcyBmYWxzZQotUEFTUyB2aWRlby52aWRlb1dpZHRoIGlzIG1lZGlhU3RyZWFt
LmdldFZpZGVvVHJhY2tzKClbMF0uc3RhdGVzKCkud2lkdGgKLVBBU1MgdmlkZW8udmlkZW9IZWln
aHQgaXMgbWVkaWFTdHJlYW0uZ2V0VmlkZW9UcmFja3MoKVswXS5zdGF0ZXMoKS5oZWlnaHQKK1BB
U1MgdmlkZW8udmlkZW9XaWR0aCBpcyBtZWRpYVN0cmVhbS5nZXRWaWRlb1RyYWNrcygpWzBdLmdl
dFNldHRpbmdzKCkud2lkdGgKK1BBU1MgdmlkZW8udmlkZW9IZWlnaHQgaXMgbWVkaWFTdHJlYW0u
Z2V0VmlkZW9UcmFja3MoKVswXS5nZXRTZXR0aW5ncygpLmhlaWdodAogUEFTUyB2aWRlby5zcmMu
aW5kZXhPZigiYmxvYjoiKSBpcyAwCiBQQVNTIHZpZGVvLnNyY09iamVjdCBpcyBtZWRpYVN0cmVh
bQogCkBAIC00MSw4ICs0MSw4IEBAIG1lZGlhU3RyZWFtLmdldFZpZGVvVHJhY2tzKClbMF0uZW5h
YmxlZCAKIAogKioqKiByZS1jaGVjayBzdGF0ZXMgbm93IHRoYXQgdGhlIHZpZGVvIHN0cmVhbSBo
YXMgYmVlbiBkaXNhYmxlZCAqKioqCiBQQVNTIG1lZGlhU3RyZWFtLmdldFZpZGVvVHJhY2tzKClb
MF0uZW5hYmxlZCBpcyBmYWxzZQotUEFTUyB2aWRlby52aWRlb1dpZHRoIGlzIG1lZGlhU3RyZWFt
LmdldFZpZGVvVHJhY2tzKClbMF0uc3RhdGVzKCkud2lkdGgKLVBBU1MgdmlkZW8udmlkZW9IZWln
aHQgaXMgbWVkaWFTdHJlYW0uZ2V0VmlkZW9UcmFja3MoKVswXS5zdGF0ZXMoKS5oZWlnaHQKK1BB
U1MgdmlkZW8udmlkZW9XaWR0aCBpcyBtZWRpYVN0cmVhbS5nZXRWaWRlb1RyYWNrcygpWzBdLmdl
dFNldHRpbmdzKCkud2lkdGgKK1BBU1MgdmlkZW8udmlkZW9IZWlnaHQgaXMgbWVkaWFTdHJlYW0u
Z2V0VmlkZW9UcmFja3MoKVswXS5nZXRTZXR0aW5ncygpLmhlaWdodAogCiAqKioqIHN0b3AgTWVk
aWFTdHJlYW0gdHJhY2tzICoqKioKIG1lZGlhU3RyZWFtLmdldFZpZGVvVHJhY2tzKClbMF0uZW5h
YmxlZCA9IHRydWUKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJl
YW0tdmlkZW8tZWxlbWVudC10cmFjay1zdG9wLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS12aWRlby1lbGVtZW50LXRyYWNrLXN0b3Au
aHRtbAkocmV2aXNpb24gMTkyOTMwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9N
ZWRpYVN0cmVhbS12aWRlby1lbGVtZW50LXRyYWNrLXN0b3AuaHRtbAkod29ya2luZyBjb3B5KQpA
QCAtNDQsOCArNDQsOCBAQAogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIGRlYnVnKCI8
YnI+KioqKiByZS1jaGVjayBzdGF0ZXMgbm93IHRoYXQgdGhlIHZpZGVvIHN0cmVhbSBoYXMgYmVl
biBkaXNhYmxlZCAqKioqIik7CiAgICAgICAgICAgICAgICAgc2hvdWxkQmUoJ21lZGlhU3RyZWFt
LmdldFZpZGVvVHJhY2tzKClbMF0uZW5hYmxlZCcsICdmYWxzZScpOwotICAgICAgICAgICAgICAg
IHNob3VsZEJlKCd2aWRlby52aWRlb1dpZHRoJywgJ21lZGlhU3RyZWFtLmdldFZpZGVvVHJhY2tz
KClbMF0uc3RhdGVzKCkud2lkdGgnKTsKLSAgICAgICAgICAgICAgICBzaG91bGRCZSgndmlkZW8u
dmlkZW9IZWlnaHQnLCAnbWVkaWFTdHJlYW0uZ2V0VmlkZW9UcmFja3MoKVswXS5zdGF0ZXMoKS5o
ZWlnaHQnKTsKKyAgICAgICAgICAgICAgICBzaG91bGRCZSgndmlkZW8udmlkZW9XaWR0aCcsICdt
ZWRpYVN0cmVhbS5nZXRWaWRlb1RyYWNrcygpWzBdLmdldFNldHRpbmdzKCkud2lkdGgnKTsKKyAg
ICAgICAgICAgICAgICBzaG91bGRCZSgndmlkZW8udmlkZW9IZWlnaHQnLCAnbWVkaWFTdHJlYW0u
Z2V0VmlkZW9UcmFja3MoKVswXS5nZXRTZXR0aW5ncygpLmhlaWdodCcpOwogCiAgICAgICAgICAg
ICAgICAgZGVidWcoIjxicj4qKioqIHN0b3AgTWVkaWFTdHJlYW0gdHJhY2tzICoqKioiKTsKICAg
ICAgICAgICAgICAgICBldmFsQW5kTG9nKCdtZWRpYVN0cmVhbS5nZXRWaWRlb1RyYWNrcygpWzBd
LmVuYWJsZWQgPSB0cnVlJyk7CkBAIC02MCw4ICs2MCw4IEBACiAKICAgICAgICAgICAgICAgICBk
ZWJ1ZygiPGJyPioqKiogY2hlY2sgc3RhdGVzIHdpdGggbGl2ZSB2aWRlbyBzdHJlYW0gdHJhY2sg
KioqKiIpOwogICAgICAgICAgICAgICAgIHNob3VsZEJlKCd2aWRlby5lbmRlZCcsICdmYWxzZScp
OwotICAgICAgICAgICAgICAgIHNob3VsZEJlKCd2aWRlby52aWRlb1dpZHRoJywgJ21lZGlhU3Ry
ZWFtLmdldFZpZGVvVHJhY2tzKClbMF0uc3RhdGVzKCkud2lkdGgnKTsKLSAgICAgICAgICAgICAg
ICBzaG91bGRCZSgndmlkZW8udmlkZW9IZWlnaHQnLCAnbWVkaWFTdHJlYW0uZ2V0VmlkZW9UcmFj
a3MoKVswXS5zdGF0ZXMoKS5oZWlnaHQnKTsKKyAgICAgICAgICAgICAgICBzaG91bGRCZSgndmlk
ZW8udmlkZW9XaWR0aCcsICdtZWRpYVN0cmVhbS5nZXRWaWRlb1RyYWNrcygpWzBdLmdldFNldHRp
bmdzKCkud2lkdGgnKTsKKyAgICAgICAgICAgICAgICBzaG91bGRCZSgndmlkZW8udmlkZW9IZWln
aHQnLCAnbWVkaWFTdHJlYW0uZ2V0VmlkZW9UcmFja3MoKVswXS5nZXRTZXR0aW5ncygpLmhlaWdo
dCcpOwogICAgICAgICAgICAgICAgIHNob3VsZEJlKCd2aWRlby5zcmMuaW5kZXhPZigiYmxvYjoi
KScsICcwJyk7CiAgICAgICAgICAgICAgICAgc2hvdWxkQmUoJ3ZpZGVvLnNyY09iamVjdCcsICdt
ZWRpYVN0cmVhbScpOwogICAgICAgICAgICAgICAgIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9t
ZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS12aWRlby1lbGVtZW50Lmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS12aWRlby1lbGVtZW50Lmh0
bWwJKHJldmlzaW9uIDE5MjkzMCkKKysrIExheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW0tdmlkZW8tZWxlbWVudC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw5ICszMCw2
IEBACiAgICAgICAgICAgICBmdW5jdGlvbiBlbnVtZXJhdGVQcm9wZXJ0aWVzKG9iamVjdCwgd29y
a0Z1bmMpCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgZm9yICh2YXIgcHJvcGVydHkg
aW4gb2JqZWN0KSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIFdoZW4gaHR0cHM6Ly93ZWJraXQu
b3JnL2IvMTI5Mzc1IGlzIGZpeGVkLCB3ZSBoYXZlIHRvIHJlbW92ZQotICAgICAgICAgICAgICAg
ICAgICAvLyBzdGF0ZXMuaGFzT3duUHJvcGVydHkocHJvcGVydHkpLCBiZWNhdXNlIGFsbCB0aGUg
YXR0cmlidXRlcwotICAgICAgICAgICAgICAgICAgICAvLyB3aWxsIGJlIGluIHRoZSBwcm90b3R5
cGUgY2hhaW4uCiAgICAgICAgICAgICAgICAgICAgIGlmICghb2JqZWN0Lmhhc093blByb3BlcnR5
KHByb3BlcnR5KSAmJiAhb2JqZWN0Ll9fcHJvdG9fXy5oYXNPd25Qcm9wZXJ0eShwcm9wZXJ0eSkp
CiAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICAg
aWYgKG9iamVjdFtwcm9wZXJ0eV0gPT09IHVuZGVmaW5lZCkKQEAgLTU5LDggKzU2LDggQEAKICAg
ICAgICAgICAgICAgICBldmFsQW5kTG9nKCJ2aWRlby5wYXVzZSgpIik7CiAKICAgICAgICAgICAg
ICAgICBkZWJ1ZygiPGJyPioqKiogY2hlY2sgdmlkZW8gZWxlbWVudCAqKioqIik7Ci0gICAgICAg
ICAgICAgICAgc2hvdWxkQmUoJ3ZpZGVvLnZpZGVvV2lkdGgnLCAnbWVkaWFTdHJlYW0uZ2V0Vmlk
ZW9UcmFja3MoKVswXS5zdGF0ZXMoKS53aWR0aCcpOwotICAgICAgICAgICAgICAgIHNob3VsZEJl
KCd2aWRlby52aWRlb0hlaWdodCcsICdtZWRpYVN0cmVhbS5nZXRWaWRlb1RyYWNrcygpWzBdLnN0
YXRlcygpLmhlaWdodCcpOworICAgICAgICAgICAgICAgIHNob3VsZEJlKCd2aWRlby52aWRlb1dp
ZHRoJywgJ21lZGlhU3RyZWFtLmdldFZpZGVvVHJhY2tzKClbMF0uZ2V0U2V0dGluZ3MoKS53aWR0
aCcpOworICAgICAgICAgICAgICAgIHNob3VsZEJlKCd2aWRlby52aWRlb0hlaWdodCcsICdtZWRp
YVN0cmVhbS5nZXRWaWRlb1RyYWNrcygpWzBdLmdldFNldHRpbmdzKCkuaGVpZ2h0Jyk7CiAgICAg
ICAgICAgICAgICAgc2hvdWxkQmUoJ3ZpZGVvLnNyYy5pbmRleE9mKCJibG9iOiIpJywgJzAnKTsK
ICAgICAgICAgICAgICAgICBzaG91bGRCZSgndmlkZW8uc3JjT2JqZWN0JywgJ21lZGlhU3RyZWFt
Jyk7CiAgICAgICAgICAgICAgICAgCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFt
L01lZGlhU3RyZWFtVHJhY2stZ2V0U2V0dGluZ3MtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay1nZXRTZXR0aW5n
cy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtVHJhY2stZ2V0U2V0dGluZ3MtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsMjEgQEAKK1Rlc3RzIE1lZGlhU3RyZWFtVHJhY2suZ2V0U2V0dGluZ3Mu
CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCit2aWRlbyB0cmFjazoKKyAgc2V0dGlu
Z3Mud2lkdGggPSA2NDAKKyAgc2V0dGluZ3MuaGVpZ2h0ID0gNDgwCisgIHNldHRpbmdzLmFzcGVj
dFJhdGlvID0gMS4zMworICBzZXR0aW5ncy5mcmFtZVJhdGUgPSAzMAorICBzZXR0aW5ncy5mYWNp
bmdNb2RlID0gdXNlcgorICBzZXR0aW5ncy5kZXZpY2VJZCA9IDxVVUlEPgorCithdWRpbyB0cmFj
azoKKyAgc2V0dGluZ3Mudm9sdW1lID0gNTAKKyAgc2V0dGluZ3MuZGV2aWNlSWQgPSA8VVVJRD4K
KworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay1nZXRTZXR0
aW5ncy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW1UcmFjay1nZXRTZXR0aW5ncy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLWdldFNldHRpbmdzLmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSw1MSBAQAorPCFET0NUWVBFIEhUTUw+Cis8aHRtbD4KKyAg
ICA8aGVhZD4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuL3Jlc291cmNlcy9nZXRVc2Vy
TWVkaWEtaGVscGVyLmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgICAg
IHZhciBtZWRpYVN0cmVhbTsKKworICAgICAgICAgICAgZnVuY3Rpb24gbGltaXRQcmVjaXNpb24o
dmFsdWUsIHByZWNpc2lvbikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZiAodHlw
ZW9mIHZhbHVlID09PSAibnVtYmVyIiAmJiB2YWx1ZSAlIDEgIT0gMCkKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIHZhbHVlLnRvRml4ZWQocHJlY2lzaW9uKTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gdmFsdWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIGdvdFN0
cmVhbShzdHJlYW0pCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgbWVkaWFTdHJlYW0g
PSBzdHJlYW07CisgICAgICAgICAgICAgICAgbWVkaWFTdHJlYW0uZ2V0VHJhY2tzKCkuZm9yRWFj
aChmdW5jdGlvbih0cmFjaykgeworICAgICAgICAgICAgICAgICAgICBkZWJ1ZyhgJHt0cmFjay5r
aW5kfSB0cmFjazpgKTsKKyAgICAgICAgICAgICAgICAgICAgc2V0dGluZ3MgPSB0cmFjay5nZXRT
ZXR0aW5ncygpOworICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBwcm9wZXJ0eSBpbiBzZXR0
aW5ncykgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNldHRpbmdzLmhhc093blByb3Bl
cnR5KHByb3BlcnR5KSB8fCBzZXR0aW5ncy5fX3Byb3RvX18uaGFzT3duUHJvcGVydHkocHJvcGVy
dHkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwcm9wZXJ0eSA9PSAiZGV2aWNl
SWQiKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9ICImbHQ7VVVJRD4i
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdmFsdWUgPSBsaW1pdFByZWNpc2lvbihzZXR0aW5nc1twcm9wZXJ0eV0sIDIp
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlYnVnKGAgIHNldHRpbmdzLiR7cHJvcGVy
dHl9ID0gJHt2YWx1ZX1gKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
ICAgICBkZWJ1ZygiIik7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgZmlu
aXNoSlNUZXN0KCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIHN0YXJ0
KCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbigiVGVzdHMgTWVk
aWFTdHJlYW1UcmFjay5nZXRTZXR0aW5ncy4iKTsKKyAgICAgICAgICAgICAgICBnZXRVc2VyTWVk
aWEoImFsbG93Iiwge2F1ZGlvOnRydWUsIHZpZGVvOnRydWV9LCBnb3RTdHJlYW0pOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisgICAg
ICAgICAgICB3aW5kb3cuc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKyAgICAgICAgPC9zY3Jp
cHQ+CisKKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJzdGFydCgpIj4KKyAgICAgICAg
PHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+CisgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2
PgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+
PC9zY3JpcHQ+CisgICAgPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>266450</attachid>
            <date>2015-12-02 10:19:44 -0800</date>
            <delta_ts>2015-12-02 12:03:40 -0800</delta_ts>
            <desc>Another updated patch for the bots.</desc>
            <filename>track_capabilities_patch_9.txt</filename>
            <type>text/plain</type>
            <size>136058</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5Mjk0MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzOSBAQAorMjAxNS0xMi0wMiAgRXJpYyBD
YXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBbTWVkaWFTdHJlYW1d
IEltcGxlbWVudCBNZWRpYVN0cmVhbVRyYWNrLmdldFNldHRpbmdzKCkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTcyNworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1lZGlhU3RyZWFtVHJhY2suZ2V0U3Rh
dGVzIGhhcyBiZWVuIHJlcGxhY2VkIGJ5IE1lZGlhU3RyZWFtVHJhY2suZ2V0U2V0dGluZ3MuIAor
CisgICAgICAgIFRlc3Q6IGZhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay1nZXRTZXR0
aW5ncy5odG1sCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDogTWVkaWFTb3VyY2VTdGF0ZXMu
KiAtPiBNZWRpYVNvdXJjZVNldHRpbmdzLiouCisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFr
ZTogTm8gbW9yZSBNZWRpYVNvdXJjZVN0YXRlcy5pZGwuCisgICAgICAgICogTW9kdWxlcy9tZWRp
YXN0cmVhbS9DYXBhYmlsaXR5UmFuZ2UuY3BwOiBNZWRpYVNvdXJjZVN0YXRlcy4qIC0+IE1lZGlh
U291cmNlU2V0dGluZ3MuKi4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU291
cmNlU2V0dGluZ3MuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL01lZGlhU291cmNlU3RhdGVzLmNwcC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291
cmNlU2V0dGluZ3M6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZVNldHRp
bmdzOjpNZWRpYVNvdXJjZVNldHRpbmdzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291cmNl
U2V0dGluZ3M6OmZhY2luZ01vZGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTb3VyY2VTdGF0
ZXM6OmNyZWF0ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZVN0YXRl
czo6TWVkaWFTb3VyY2VTdGF0ZXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFT
b3VyY2VTdGF0ZXM6OnNvdXJjZVR5cGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFTb3VyY2VTdGF0ZXM6OmZhY2luZ01vZGUpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMv
bWVkaWFzdHJlYW0vTWVkaWFTb3VyY2VTZXR0aW5ncy5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU291cmNlU3RhdGVzLmguCisKKyAgICAgICAg
TWVkaWFTb3VyY2VTdGF0ZXMuKiByZW5hbWVkIHRvIE1lZGlhU291cmNlU2V0dGluZ3MuKiBhbmQg
dXBkYXRlZCB0byBuZXcgQVBJLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFT
b3VyY2VTdGF0ZXMuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0v
TWVkaWFTb3VyY2VTdGF0ZXMuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3Ry
ZWFtL01lZGlhU291cmNlU3RhdGVzLmlkbDogUmVtb3ZlZC4KKworICAgICAgICAqIE1vZHVsZXMv
bWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFTdHJlYW1DYXBhYmlsaXRpZXM6OnNvdXJjZVR5cGUpOiBSZXR1cm4gYW4gZW1wdHkg
dmVjdG9yIGZvciBub3csIHdpbGwgYmUgZml4ZWQKKyAgICAgICAgICBieSB0aGUgY2hhbmdlcyBm
b3IgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTcyOC4KKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzOjpzb3VyY2VJZCk6IFJlYWx0aW1l
TWVkaWFTb3VyY2VTdGF0ZXMgLT4gTWVkaWFTb3VyY2VTZXR0aW5ncy4KKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzOjpmYWNpbmdNb2RlKTogRGl0dG8uCisKKyAgICAg
ICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFTdHJlYW1UcmFjazo6Z2V0U2V0dGluZ3MpOiBOZXcuCisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjpnZXRDYXBhYmlsaXRpZXMpOiBEb24ndCBtb2RpZnkg
c3RhdGVzLCBqdXN0IHBhc3MgdGhyb3VnaCB3aGF0ZXZlcgorICAgICAgICAgIHByaXZhdGUgdHJh
Y2sgcmV0dXJucy4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtVHJhY2s6OnRyYWNrU2V0
dGluZ3NDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtVHJhY2s6OnN0YXRl
cyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjp0cmFja1N0
YXRlc0NoYW5nZWQpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW1UcmFjay5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJl
YW1UcmFjay5pZGw6IE1lZGlhU291cmNlU3RhdGVzIC0+IE1lZGlhU291cmNlU2V0dGluZ3MuCisK
KyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9Tb3VyY2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1BdWRpb1NvdXJjZTo6c2V0dGluZ3MpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1BdWRpb1NvdXJjZTo6c3RhdGVzKTogRGVsZXRlZC4K
KyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9Tb3VyY2UuaDogTWVk
aWFTb3VyY2VTdGF0ZXMgLT4gTWVkaWFTb3VyY2VTZXR0aW5ncy4KKworICAgICAgICAqIFdlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogTWVkaWFTb3VyY2VTdGF0ZXMuKiAtPiBNZWRp
YVNvdXJjZVNldHRpbmdzLiouCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU01lZGlhU291cmNl
U3RhdGVzQ3VzdG9tLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU01lZGlh
U3RyZWFtVHJhY2tDdXN0b20uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkpTTWVkaWFT
dHJlYW1UcmFjazo6Z2V0U2V0dGluZ3MpOiBNZWRpYVNvdXJjZVNldHRpbmdzIGlzIGEgZ2VuZXJp
YyBkaWN0aW9uYXJ5IHNvIAorICAgICAgICAgIGl0IGhhcyB0byBiZSBnZW5lcmF0ZWQgbWFudWFs
bHkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVByaXZhdGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1Qcml2YXRlOjppbnRyaW5zaWNTaXpl
KTogc3RhdGVzIC0+IHNldHRpbmdzLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1Qcml2
YXRlOjp0cmFja1N0YXRlc0NoYW5nZWQpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL21l
ZGlhc3RyZWFtL01lZGlhU3RyZWFtUHJpdmF0ZS5oOgorCisgICAgICAgICogcGxhdGZvcm0vbWVk
aWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU6OnNldHRpbmdzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhU3RyZWFtVHJhY2tQcml2YXRlOjpzb3VyY2VTZXR0aW5nc0NoYW5nZWQpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU6OnN0YXRlcyk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6c291cmNlU3RhdGVzQ2hhbmdl
ZCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1U
cmFja1ByaXZhdGUuaDoKKworICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1l
TWVkaWFTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZTo6
c2V0dGluZ3NEaWRDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3Vy
Y2U6OnN0YXRlc0RpZENoYW5nZWQpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlh
c3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuaDoKKworICAgICAgICAqIHBsYXRmb3JtL21lZGlh
c3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM6OmZhY2luZ01vZGVzKTogU3RhdGVz
IC0+IFNldHRpbmdzLgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFi
aWxpdGllczo6YWRkRmFjaW5nTW9kZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRp
bWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllczo6c291cmNlVHlwZXMpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllczo6c2V0U291cmNlVHlw
ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJp
bGl0aWVzOjphZGRTb3VyY2VUeXBlKTogRGVsZXRlZC4KKworICAgICAgICAqIHBsYXRmb3JtL21l
ZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaDogU3RhdGVzIC0+IFNldHRpbmdz
LgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VTZXR0
aW5ncy5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L1JlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXMuY3BwLgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRp
bWVNZWRpYVNvdXJjZVNldHRpbmdzOjpmYWNpbmdNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
YWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXM6OmZhY2luZ01vZGUpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlczo6c291cmNlVHlwZSk6IERlbGV0ZWQu
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlU2V0
dGluZ3MuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
UmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlcy5oLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3Ry
ZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXMuY3BwOiBSZW1vdmVkLgorCisgICAgICAgICog
cGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlcy5oOiBSZW1vdmVk
LgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkF1ZGlvQ2FwdHVyZVNvdXJj
ZS5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkF1ZGlvQ2FwdHVyZVNv
dXJjZS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkFWQXVkaW9DYXB0dXJlU291cmNlOjp1cGRhdGVT
dGF0ZXMpOiBEZWxldGVkLgorCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FW
Q2FwdHVyZURldmljZU1hbmFnZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5tbToKKworICAgICAgICAqIHBsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9BVk1lZGlhQ2FwdHVyZVNvdXJjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9BVk1lZGlhQ2FwdHVyZVNvdXJjZS5tbToKKyAgICAgICAgKFdlYkNvcmU6
OkFWTWVkaWFDYXB0dXJlU291cmNlOjpzdGF0ZXMpOiBEZWxldGVkLgorCisgICAgICAgICogcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLmg6CisgICAgICAgICog
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6QVZWaWRlb0NhcHR1cmVTb3VyY2U6OnVwZGF0ZVN0YXRlcyk6IERlbGV0ZWQu
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1lVmlkZW9T
b3VyY2VNYWMubW06CisKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9vcGVud2VicnRj
L1JlYWx0aW1lTWVkaWFTb3VyY2VPd3IuaDoKKworICAgICAgICAqIHBsYXRmb3JtL21vY2svTW9j
a1JlYWx0aW1lQXVkaW9Tb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1l
QXVkaW9Tb3VyY2U6OmluaXRpYWxpemVTdXBwb3J0ZWRDb25zdHJhaW50cyk6CisgICAgICAgIChX
ZWJDb3JlOjpNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZTo6dXBkYXRlU3RhdGVzKTogRGVsZXRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZUF1ZGlvU291cmNlLmg6CisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZU1lZGlhU291cmNlOjpjYXBhYmlsaXRpZXMpOiBNaW5v
ciBjbGVhbnVwLgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2U6OnNl
dHRpbmdzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZU1lZGlhU291cmNlOjpzdXBw
b3J0ZWRDb25zdHJhaW50cyk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVNZWRpYVNv
dXJjZTo6c3RhdGVzKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tSZWFs
dGltZU1lZGlhU291cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVNZWRpYVNv
dXJjZTo6Y29uc3RyYWludHMpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lTWVkaWFT
b3VyY2U6OmN1cnJlbnRTdGF0ZXMpOiBEZWxldGVkLgorCisgICAgICAgICogcGxhdGZvcm0vbW9j
ay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVh
bHRpbWVWaWRlb1NvdXJjZTo6dXBkYXRlU2V0dGluZ3MpOgorICAgICAgICAoV2ViQ29yZTo6TW9j
a1JlYWx0aW1lVmlkZW9Tb3VyY2U6OmluaXRpYWxpemVDYXBhYmlsaXRpZXMpOgorICAgICAgICAo
V2ViQ29yZTo6TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OmluaXRpYWxpemVTdXBwb3J0ZWRDb25z
dHJhaW50cyk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6c2V0
RnJhbWVSYXRlKTogc3RhdGVzIC0+IHNldHRpbmdzLgorICAgICAgICAoV2ViQ29yZTo6TW9ja1Jl
YWx0aW1lVmlkZW9Tb3VyY2U6OnNldFNpemUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Ok1v
Y2tSZWFsdGltZVZpZGVvU291cmNlOjpkcmF3QW5pbWF0aW9uKTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6ZHJhd1RleHQpOiBEaXR0by4KKyAgICAg
ICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZVZpZGVvU291cmNlOjp1cGRhdGVTdGF0ZXMpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OnNldEZhY2lu
Z01vZGUpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlk
ZW9Tb3VyY2UuaDoKKwogMjAxNS0xMi0wMiAgUGVyIEFybmUgVm9sbGFuICA8cGVhdm9Ab3V0bG9v
ay5jb20+CiAKICAgICAgICAgW1dpbkNhaXJvXSBDb21waWxlIGVycm9yLgpJbmRleDogU291cmNl
L1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQJKHJldmlzaW9uIDE5MjkzMCkKKysrIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlz
dHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0yMjgsNyArMjI4LDYgQEAgc2V0KFdlYkNvcmVfTk9O
X1NWR19JRExfRklMRVMKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL0hUTUxNZWRpYUVsZW1lbnRN
ZWRpYVN0cmVhbS5pZGwKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlSW5mby5p
ZGwKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5pZGwKLSAgICBNb2R1bGVz
L21lZGlhc3RyZWFtL01lZGlhU291cmNlU3RhdGVzLmlkbAogICAgIE1vZHVsZXMvbWVkaWFzdHJl
YW0vTWVkaWFTdHJlYW0uaWRsCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNh
cGFiaWxpdGllcy5pZGwKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtRXZlbnQu
aWRsCkBAIC05NTEsNyArOTUwLDcgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIE1vZHVsZXMv
bWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLmNwcAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVk
aWFEZXZpY2VzUmVxdWVzdC5jcHAKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRW5kcG9p
bnRQZWVyQ29ubmVjdGlvbi5jcHAKLSAgICBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU291cmNl
U3RhdGVzLmNwcAorICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTb3VyY2VTZXR0aW5ncy5j
cHAKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmNwcAogICAgIE1vZHVsZXMv
bWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMuY3BwCiAgICAgTW9kdWxlcy9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbUV2ZW50LmNwcApAQCAtMTIwNiw4ICsxMjA1LDggQEAgc2V0KFdl
YkNvcmVfU09VUkNFUwogICAgIGJpbmRpbmdzL2pzL0pTTGF6eUV2ZW50TGlzdGVuZXIuY3BwCiAg
ICAgYmluZGluZ3MvanMvSlNMb2NhdGlvbkN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy9qcy9KU01h
aW5UaHJlYWRFeGVjU3RhdGUuY3BwCi0gICAgYmluZGluZ3MvanMvSlNNZWRpYVNvdXJjZVN0YXRl
c0N1c3RvbS5jcHAKICAgICBiaW5kaW5ncy9qcy9KU01lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzQ3Vz
dG9tLmNwcAorICAgIGJpbmRpbmdzL2pzL0pTTWVkaWFTdHJlYW1UcmFja0N1c3RvbS5jcHAKICAg
ICBiaW5kaW5ncy9qcy9KU01lZGlhVHJhY2tTdXBwb3J0ZWRDb25zdHJhaW50c0N1c3RvbS5jcHAK
ICAgICBiaW5kaW5ncy9qcy9KU01lc3NhZ2VDaGFubmVsQ3VzdG9tLmNwcAogICAgIGJpbmRpbmdz
L2pzL0pTTWVzc2FnZUV2ZW50Q3VzdG9tLmNwcApAQCAtMjMwOCw3ICsyMzA3LDcgQEAgc2V0KFdl
YkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ1Nlc3Npb25EZXNjcmlw
dGlvbkRlc2NyaXB0b3IuY3BwCiAgICAgcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRp
YVNvdXJjZS5jcHAKICAgICBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNl
Q2VudGVyLmNwcAotICAgIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VT
dGF0ZXMuY3BwCisgICAgcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZVNl
dHRpbmdzLmNwcAogCiAgICAgcGxhdGZvcm0vbW9jay9EZXZpY2VNb3Rpb25DbGllbnRNb2NrLmNw
cAogICAgIHBsYXRmb3JtL21vY2svRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrLmNwcApJbmRl
eDogU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCShyZXZpc2lvbiAxOTI5MzApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0xMjIsNyAr
MTIyLDYgQEAgTk9OX1NWR19CSU5ESU5HX0lETFMgPSBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVz
L21lZGlhc3RyZWFtL0NhcGFiaWxpdHlSYW5nZS5pZGwgXAogCSQoV2ViQ29yZSkvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9ET01VUkxNZWRpYVN0cmVhbS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxl
cy9tZWRpYXN0cmVhbS9IVE1MTWVkaWFFbGVtZW50TWVkaWFTdHJlYW0uaWRsIFwKLSAgICAkKFdl
YkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTb3VyY2VTdGF0ZXMuaWRsIFwKICAgICAk
KFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VJbmZvLmlkbCBcCiAgICAg
JChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5pZGwgXAogCSQoV2Vi
Q29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5pZGwgXApJbmRleDogU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9DYXBhYmlsaXR5UmFuZ2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQ2FwYWJpbGl0eVJhbmdl
LmNwcAkocmV2aXNpb24gMTkyOTMwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9DYXBhYmlsaXR5UmFuZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3IEBA
CiAjaW5jbHVkZSAiQ2FwYWJpbGl0eVJhbmdlLmgiCiAKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcu
aCIKLSNpbmNsdWRlICJNZWRpYVNvdXJjZVN0YXRlcy5oIgorI2luY2x1ZGUgIk1lZGlhU291cmNl
U2V0dGluZ3MuaCIKICNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRWYWx1ZS5oPgogI2luY2x1ZGUg
PGludGVycHJldGVyL0NhbGxGcmFtZS5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNDSlNWYWx1ZS5o
PgpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9DYXB0dXJlRGV2aWNl
SW5mby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
Q2FwdHVyZURldmljZUluZm8uaAkocmV2aXNpb24gMTkyOTMwKQorKysgU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9DYXB0dXJlRGV2aWNlSW5mby5oCSh3b3JraW5nIGNvcHkpCkBA
IC00Miw3ICs0Miw3IEBAIHN0cnVjdCBDYXB0dXJlRGV2aWNlSW5mbyB7CiAKICAgICBib29sIG1f
ZW5hYmxlZCB7IGZhbHNlIH07CiAgICAgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSBtX3NvdXJj
ZVR5cGUgeyBSZWFsdGltZU1lZGlhU291cmNlOjpOb25lIH07Ci0gICAgUmVhbHRpbWVNZWRpYVNv
dXJjZVN0YXRlczo6VmlkZW9GYWNpbmdNb2RlIG1fcG9zaXRpb24geyBSZWFsdGltZU1lZGlhU291
cmNlU3RhdGVzOjpVbmtub3duIH07CisgICAgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpW
aWRlb0ZhY2luZ01vZGUgbV9wb3NpdGlvbiB7IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6
VW5rbm93biB9OwogfTsKIAogY2xhc3MgQ2FwdHVyZVNlc3Npb25JbmZvIHsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQ2FwdHVyZURldmljZU1hbmFnZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQ2FwdHVyZURl
dmljZU1hbmFnZXIuY3BwCShyZXZpc2lvbiAxOTI5MzApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzIsNyArMzIsNyBAQAogI2ltcG9ydCAiTWVkaWFDb25zdHJhaW50cy5oIgogI2ltcG9ydCAi
UmVhbHRpbWVNZWRpYVNvdXJjZS5oIgogI2ltcG9ydCAiUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRl
ci5oIgotI2ltcG9ydCAiUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlcy5oIgorI2ltcG9ydCAiUmVh
bHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzLmgiCiAjaW1wb3J0ICJVVUlELmgiCiAjaW1wb3J0IDx3
dGYvTWFpblRocmVhZC5oPgogI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CkBAIC0xMjUs
OSArMTI1LDkgQEAgUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+IENhcHR1cmVEZXZpYwogICAg
IHJldHVybiBudWxscHRyOwogfQogCi1DYXB0dXJlRGV2aWNlSW5mbyogQ2FwdHVyZURldmljZU1h
bmFnZXI6OmJlc3REZXZpY2VGb3JGYWNpbmdNb2RlKFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXM6
OlZpZGVvRmFjaW5nTW9kZSBmYWNpbmdNb2RlKQorQ2FwdHVyZURldmljZUluZm8qIENhcHR1cmVE
ZXZpY2VNYW5hZ2VyOjpiZXN0RGV2aWNlRm9yRmFjaW5nTW9kZShSZWFsdGltZU1lZGlhU291cmNl
U2V0dGluZ3M6OlZpZGVvRmFjaW5nTW9kZSBmYWNpbmdNb2RlKQogewotICAgIGlmIChmYWNpbmdN
b2RlID09IFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXM6OlVua25vd24pCisgICAgaWYgKGZhY2lu
Z01vZGUgPT0gUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpVbmtub3duKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIAogICAgIGZvciAoYXV0byYgZGV2aWNlIDogY2FwdHVyZURldmljZUxp
c3QoKSkgewpAQCAtMTM3LDIxICsxMzcsMjEgQEAgQ2FwdHVyZURldmljZUluZm8qIENhcHR1cmVE
ZXZpY2VNYW5hZ2VyOgogICAgIHJldHVybiBudWxscHRyOwogfQogCi1zdGF0aWMgaW5saW5lIFJl
YWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXM6OlZpZGVvRmFjaW5nTW9kZSBmYWNpbmdNb2RlRnJvbVN0
cmluZyhjb25zdCBTdHJpbmcmIGZhY2luZ01vZGVTdHJpbmcpCitzdGF0aWMgaW5saW5lIFJlYWx0
aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6VmlkZW9GYWNpbmdNb2RlIGZhY2luZ01vZGVGcm9tU3Ry
aW5nKGNvbnN0IFN0cmluZyYgZmFjaW5nTW9kZVN0cmluZykKIHsKICAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiB1c2VyRmFjaW5nTW9kZVN0cmluZygidXNlciIsIEF0b21p
Y1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxBdG9taWNTdHJpbmc+IGVudmlyb25tZW50RmFjaW5nTW9kZVN0cmluZygiZW52aXJvbm1lbnQi
LCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBsZWZ0RmFjaW5nTW9kZVN0cmluZygibGVmdCIsIEF0b21p
Y1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxBdG9taWNTdHJpbmc+IHJpZ2h0RmFjaW5nTW9kZVN0cmluZygicmlnaHQiLCBBdG9taWNTdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICBpZiAoZmFjaW5nTW9kZVN0cmluZyA9PSB1
c2VyRmFjaW5nTW9kZVN0cmluZykKLSAgICAgICAgcmV0dXJuIFJlYWx0aW1lTWVkaWFTb3VyY2VT
dGF0ZXM6OlVzZXI7CisgICAgICAgIHJldHVybiBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6
OlVzZXI7CiAgICAgaWYgKGZhY2luZ01vZGVTdHJpbmcgPT0gZW52aXJvbm1lbnRGYWNpbmdNb2Rl
U3RyaW5nKQotICAgICAgICByZXR1cm4gUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlczo6RW52aXJv
bm1lbnQ7CisgICAgICAgIHJldHVybiBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkVudmly
b25tZW50OwogICAgIGlmIChmYWNpbmdNb2RlU3RyaW5nID09IGxlZnRGYWNpbmdNb2RlU3RyaW5n
KQotICAgICAgICByZXR1cm4gUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlczo6TGVmdDsKKyAgICAg
ICAgcmV0dXJuIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6TGVmdDsKICAgICBpZiAoZmFj
aW5nTW9kZVN0cmluZyA9PSByaWdodEZhY2luZ01vZGVTdHJpbmcpCi0gICAgICAgIHJldHVybiBS
ZWFsdGltZU1lZGlhU291cmNlU3RhdGVzOjpSaWdodDsKLSAgICByZXR1cm4gUmVhbHRpbWVNZWRp
YVNvdXJjZVN0YXRlczo6VW5rbm93bjsKKyAgICAgICAgcmV0dXJuIFJlYWx0aW1lTWVkaWFTb3Vy
Y2VTZXR0aW5nczo6UmlnaHQ7CisgICAgcmV0dXJuIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5n
czo6VW5rbm93bjsKIH0KIAogYm9vbCBDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2Vzc2lvblN1cHBv
cnRzQ29uc3RyYWludChjb25zdCBDYXB0dXJlU2Vzc2lvbkluZm8qLCBSZWFsdGltZU1lZGlhU291
cmNlOjpUeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQ2FwdHVyZURldmljZU1h
bmFnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmgJKHJldmlzaW9uIDE5MjkzMCkKKysrIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQ2FwdHVyZURldmljZU1hbmFnZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtNTQsNyArNTQsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCBib29sIGlzU3Vw
cG9ydGVkRnJhbWVSYXRlKGZsb2F0IGZyYW1lUmF0ZSkgY29uc3Q7CiAKICAgICBib29sIGNhcHR1
cmVEZXZpY2VGcm9tRGV2aWNlSUQoY29uc3QgU3RyaW5nJiBjYXB0dXJlRGV2aWNlSUQsIENhcHR1
cmVEZXZpY2VJbmZvJiBzb3VyY2UpOwotICAgIENhcHR1cmVEZXZpY2VJbmZvKiBiZXN0RGV2aWNl
Rm9yRmFjaW5nTW9kZShSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzOjpWaWRlb0ZhY2luZ01vZGUp
OworICAgIENhcHR1cmVEZXZpY2VJbmZvKiBiZXN0RGV2aWNlRm9yRmFjaW5nTW9kZShSZWFsdGlt
ZU1lZGlhU291cmNlU2V0dGluZ3M6OlZpZGVvRmFjaW5nTW9kZSk7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01l
ZGlhU291cmNlU2V0dGluZ3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vTWVkaWFTb3VyY2VTZXR0aW5ncy5jcHAJKHJldmlzaW9uIDE5MjkzMCkJ
KGZyb20gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVNvdXJjZVN0YXRl
cy5jcHA6MTkyOTMwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRp
YVNvdXJjZVNldHRpbmdzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU5IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIk1lZGlhU291cmNl
U3RhdGVzLmgiCisKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitSZWY8TWVkaWFTb3VyY2VTdGF0ZXM+IE1lZGlhU291cmNlU3RhdGVzOjpj
cmVhdGUoY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlcyYgc3RhdGVzKQoreworICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IE1lZGlhU291cmNlU3RhdGVzKHN0YXRlcykpOworfQorCitNZWRp
YVNvdXJjZVN0YXRlczo6TWVkaWFTb3VyY2VTdGF0ZXMoY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJj
ZVN0YXRlcyYgc3RhdGVzKQorICAgIDogbV9zb3VyY2VTdGF0ZXMoc3RhdGVzKQoreworfQorCitj
b25zdCBBdG9taWNTdHJpbmcmIE1lZGlhU291cmNlU3RhdGVzOjpzb3VyY2VUeXBlKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlczo6c291cmNlVHlwZShtX3Nv
dXJjZVN0YXRlcy5zb3VyY2VUeXBlKCkpOworfQorCitjb25zdCBBdG9taWNTdHJpbmcmIE1lZGlh
U291cmNlU3RhdGVzOjpmYWNpbmdNb2RlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gUmVhbHRpbWVN
ZWRpYVNvdXJjZVN0YXRlczo6ZmFjaW5nTW9kZShtX3NvdXJjZVN0YXRlcy5mYWNpbmdNb2RlKCkp
OworfQorCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU291cmNlU2V0dGluZ3MuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTb3VyY2VT
ZXR0aW5ncy5jcHAJKHdvcmtpbmcgY29weSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vTWVkaWFTb3VyY2VTZXR0aW5ncy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjQsMzYgKzI0
LDI5IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk1lZGlhU291cmNl
U2V0dGluZ3MuaCIKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAKLSNpbmNsdWRlICJNZWRp
YVNvdXJjZVN0YXRlcy5oIgotCiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmPE1lZGlhU291cmNlU3RhdGVzPiBNZWRpYVNvdXJjZVN0
YXRlczo6Y3JlYXRlKGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXMmIHN0YXRlcykKK1Jl
ZjxNZWRpYVNvdXJjZVNldHRpbmdzPiBNZWRpYVNvdXJjZVNldHRpbmdzOjpjcmVhdGUoY29uc3Qg
UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJiBzZXR0aW5ncykKIHsKLSAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBNZWRpYVNvdXJjZVN0YXRlcyhzdGF0ZXMpKTsKKyAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBNZWRpYVNvdXJjZVNldHRpbmdzKHNldHRpbmdzKSk7CiB9CiAKLU1lZGlhU291cmNl
U3RhdGVzOjpNZWRpYVNvdXJjZVN0YXRlcyhjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU3RhdGVz
JiBzdGF0ZXMpCi0gICAgOiBtX3NvdXJjZVN0YXRlcyhzdGF0ZXMpCitNZWRpYVNvdXJjZVNldHRp
bmdzOjpNZWRpYVNvdXJjZVNldHRpbmdzKGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5n
cyYgc2V0dGluZ3MpCisgICAgOiBtX3NvdXJjZVNldHRpbmdzKHNldHRpbmdzKQogewogfQogCi1j
b25zdCBBdG9taWNTdHJpbmcmIE1lZGlhU291cmNlU3RhdGVzOjpzb3VyY2VUeXBlKCkgY29uc3QK
K2NvbnN0IEF0b21pY1N0cmluZyYgTWVkaWFTb3VyY2VTZXR0aW5nczo6ZmFjaW5nTW9kZSgpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXM6OnNvdXJjZVR5cGUo
bV9zb3VyY2VTdGF0ZXMuc291cmNlVHlwZSgpKTsKKyAgICByZXR1cm4gUmVhbHRpbWVNZWRpYVNv
dXJjZVNldHRpbmdzOjpmYWNpbmdNb2RlKG1fc291cmNlU2V0dGluZ3MuZmFjaW5nTW9kZSgpKTsK
IH0KIAotY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYVNvdXJjZVN0YXRlczo6ZmFjaW5nTW9kZSgp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXM6OmZhY2luZ01v
ZGUobV9zb3VyY2VTdGF0ZXMuZmFjaW5nTW9kZSgpKTsKLX0KLQotCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9NZWRpYVNvdXJjZVNldHRpbmdzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9NZWRpYVNvdXJjZVNldHRpbmdzLmgJKHJldmlzaW9uIDE5MjkzMCkJ
KGZyb20gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVNvdXJjZVN0YXRl
cy5oOjE5MjkzMCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFT
b3VyY2VTZXR0aW5ncy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjMgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIE1lZGlhU291cmNl
U3RhdGVzX2gKKyNkZWZpbmUgTWVkaWFTb3VyY2VTdGF0ZXNfaAorCisjaWYgRU5BQkxFKE1FRElB
X1NUUkVBTSkKKworI2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMuaCIK
KyNpbmNsdWRlICJTY3JpcHRXcmFwcGFibGUuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgor
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xh
c3MgTWVkaWFTb3VyY2VTdGF0ZXMgOiBwdWJsaWMgUmVmQ291bnRlZDxNZWRpYVNvdXJjZVN0YXRl
cz4sIHB1YmxpYyBTY3JpcHRXcmFwcGFibGUgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8TWVk
aWFTb3VyY2VTdGF0ZXM+IGNyZWF0ZShjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzJik7
CisKKyAgICBjb25zdCBBdG9taWNTdHJpbmcmIHNvdXJjZVR5cGUoKSBjb25zdDsKKyAgICBjb25z
dCBBdG9taWNTdHJpbmcmIHNvdXJjZUlkKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VTdGF0ZXMu
c291cmNlSWQoKTsgfQorICAgIHVuc2lnbmVkIGxvbmcgd2lkdGgoKSBjb25zdCB7IHJldHVybiBt
X3NvdXJjZVN0YXRlcy53aWR0aCgpOyB9CisgICAgdW5zaWduZWQgbG9uZyBoZWlnaHQoKSBjb25z
dCB7IHJldHVybiBtX3NvdXJjZVN0YXRlcy5oZWlnaHQoKTsgfQorICAgIGZsb2F0IGZyYW1lUmF0
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlU3RhdGVzLmZyYW1lUmF0ZSgpOyB9CisgICAgZmxv
YXQgYXNwZWN0UmF0aW8oKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZVN0YXRlcy5hc3BlY3RSYXRp
bygpOyB9CisgICAgY29uc3QgQXRvbWljU3RyaW5nJiBmYWNpbmdNb2RlKCkgY29uc3Q7CisgICAg
dW5zaWduZWQgbG9uZyB2b2x1bWUoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZVN0YXRlcy52b2x1
bWUoKTsgfQorICAgIAorICAgIGJvb2wgaGFzVmlkZW9Tb3VyY2UoKSBjb25zdCB7IHJldHVybiBt
X3NvdXJjZVN0YXRlcy5zb3VyY2VUeXBlKCkgPT0gUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlczo6
Q2FtZXJhOyB9CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgTWVkaWFTb3VyY2VTdGF0ZXMoY29u
c3QgUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlcyYpOworCisgICAgUmVhbHRpbWVNZWRpYVNvdXJj
ZVN0YXRlcyBtX3NvdXJjZVN0YXRlczsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmIC8vIE1lZGlhU291cmNlU3RhdGVzX2gKKworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU291cmNlU2V0dGluZ3MuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU291cmNlU2V0dGlu
Z3MuaAkod29ya2luZyBjb3B5KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9NZWRpYVNvdXJjZVNldHRpbmdzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsOCArMjMsOCBAQAogICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIE1lZGlhU291cmNlU3RhdGVzX2gKLSNkZWZpbmUg
TWVkaWFTb3VyY2VTdGF0ZXNfaAorI2lmbmRlZiBNZWRpYVNvdXJjZVNldHRpbmdzX2gKKyNkZWZp
bmUgTWVkaWFTb3VyY2VTZXR0aW5nc19oCiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogCkBA
IC0zNSwyOSArMzUsNTEgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBNZWRpYVNv
dXJjZVN0YXRlcyA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhU291cmNlU3RhdGVzPiwgcHVibGlj
IFNjcmlwdFdyYXBwYWJsZSB7CitjbGFzcyBNZWRpYVNvdXJjZVNldHRpbmdzIDogcHVibGljIFJl
ZkNvdW50ZWQ8TWVkaWFTb3VyY2VTZXR0aW5ncz4sIHB1YmxpYyBTY3JpcHRXcmFwcGFibGUgewog
cHVibGljOgotICAgIHN0YXRpYyBSZWY8TWVkaWFTb3VyY2VTdGF0ZXM+IGNyZWF0ZShjb25zdCBS
ZWFsdGltZU1lZGlhU291cmNlU3RhdGVzJik7CisgICAgc3RhdGljIFJlZjxNZWRpYVNvdXJjZVNl
dHRpbmdzPiBjcmVhdGUoY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJik7CiAKLSAg
ICBjb25zdCBBdG9taWNTdHJpbmcmIHNvdXJjZVR5cGUoKSBjb25zdDsKLSAgICBjb25zdCBBdG9t
aWNTdHJpbmcmIHNvdXJjZUlkKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VTdGF0ZXMuc291cmNl
SWQoKTsgfQotICAgIHVuc2lnbmVkIGxvbmcgd2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3NvdXJj
ZVN0YXRlcy53aWR0aCgpOyB9Ci0gICAgdW5zaWduZWQgbG9uZyBoZWlnaHQoKSBjb25zdCB7IHJl
dHVybiBtX3NvdXJjZVN0YXRlcy5oZWlnaHQoKTsgfQotICAgIGZsb2F0IGZyYW1lUmF0ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fc291cmNlU3RhdGVzLmZyYW1lUmF0ZSgpOyB9Ci0gICAgZmxvYXQgYXNw
ZWN0UmF0aW8oKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZVN0YXRlcy5hc3BlY3RSYXRpbygpOyB9
CisgICAgYm9vbCBzdXBwb3J0c1dpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VTZXR0aW5n
cy5zdXBwb3J0c1dpZHRoKCk7IH0KKyAgICB1bnNpZ25lZCBsb25nIHdpZHRoKCkgY29uc3QgeyBy
ZXR1cm4gbV9zb3VyY2VTZXR0aW5ncy53aWR0aCgpOyB9CisKKyAgICBib29sIHN1cHBvcnRzSGVp
Z2h0KCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VTZXR0aW5ncy5zdXBwb3J0c0hlaWdodCgpOyB9
CisgICAgdW5zaWduZWQgbG9uZyBoZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZVNldHRp
bmdzLmhlaWdodCgpOyB9CisKKyAgICBib29sIHN1cHBvcnRzQXNwZWN0UmF0aW8oKSBjb25zdCB7
IHJldHVybiBtX3NvdXJjZVNldHRpbmdzLnN1cHBvcnRzQXNwZWN0UmF0aW8oKTsgfQorICAgIGZs
b2F0IGFzcGVjdFJhdGlvKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VTZXR0aW5ncy5hc3BlY3RS
YXRpbygpOyB9CisKKyAgICBib29sIHN1cHBvcnRzRnJhbWVSYXRlKCkgY29uc3QgeyByZXR1cm4g
bV9zb3VyY2VTZXR0aW5ncy5zdXBwb3J0c0ZyYW1lUmF0ZSgpOyB9CisgICAgZmxvYXQgZnJhbWVS
YXRlKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VTZXR0aW5ncy5mcmFtZVJhdGUoKTsgfQorCisg
ICAgYm9vbCBzdXBwb3J0c0ZhY2luZ01vZGUoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZVNldHRp
bmdzLnN1cHBvcnRzRmFjaW5nTW9kZSgpOyB9CiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBmYWNp
bmdNb2RlKCkgY29uc3Q7Ci0gICAgdW5zaWduZWQgbG9uZyB2b2x1bWUoKSBjb25zdCB7IHJldHVy
biBtX3NvdXJjZVN0YXRlcy52b2x1bWUoKTsgfQotICAgIAotICAgIGJvb2wgaGFzVmlkZW9Tb3Vy
Y2UoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZVN0YXRlcy5zb3VyY2VUeXBlKCkgPT0gUmVhbHRp
bWVNZWRpYVNvdXJjZVN0YXRlczo6Q2FtZXJhOyB9CisKKyAgICBib29sIHN1cHBvcnRzVm9sdW1l
KCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VTZXR0aW5ncy5zdXBwb3J0c1ZvbHVtZSgpOyB9Cisg
ICAgdW5zaWduZWQgbG9uZyB2b2x1bWUoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZVNldHRpbmdz
LnZvbHVtZSgpOyB9CisKKyAgICBib29sIHN1cHBvcnRzU2FtcGxlUmF0ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fc291cmNlU2V0dGluZ3Muc3VwcG9ydHNTYW1wbGVSYXRlKCk7IH0KKyAgICB1bnNpZ25l
ZCBsb25nIHNhbXBsZVJhdGUoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZVNldHRpbmdzLnNhbXBs
ZVJhdGUoKTsgfQorCisgICAgYm9vbCBzdXBwb3J0c1NhbXBsZVNpemUoKSBjb25zdCB7IHJldHVy
biBtX3NvdXJjZVNldHRpbmdzLnN1cHBvcnRzU2FtcGxlU2l6ZSgpOyB9CisgICAgdW5zaWduZWQg
bG9uZyBzYW1wbGVTaXplKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VTZXR0aW5ncy5zYW1wbGVT
aXplKCk7IH0KKworICAgIGJvb2wgc3VwcG9ydHNFY2hvQ2FuY2VsbGF0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV9zb3VyY2VTZXR0aW5ncy5zdXBwb3J0c0VjaG9DYW5jZWxsYXRpb24oKTsgfQorICAg
IGJvb2wgZWNob0NhbmNlbGxhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlU2V0dGluZ3Mu
ZWNob0NhbmNlbGxhdGlvbigpOyB9CisKKyAgICBib29sIHN1cHBvcnRzRGV2aWNlSWQoKSBjb25z
dCB7IHJldHVybiBtX3NvdXJjZVNldHRpbmdzLnN1cHBvcnRzRGV2aWNlSWQoKTsgfQorICAgIGNv
bnN0IEF0b21pY1N0cmluZyYgZGV2aWNlSWQoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZVNldHRp
bmdzLmRldmljZUlkKCk7IH0KKworICAgIGJvb2wgc3VwcG9ydHNHcm91cElkKCkgY29uc3QgeyBy
ZXR1cm4gbV9zb3VyY2VTZXR0aW5ncy5zdXBwb3J0c0dyb3VwSWQoKTsgfQorICAgIGNvbnN0IEF0
b21pY1N0cmluZyYgZ3JvdXBJZCgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlU2V0dGluZ3MuZ3Jv
dXBJZCgpOyB9CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgTWVkaWFTb3VyY2VTdGF0ZXMoY29u
c3QgUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlcyYpOworICAgIGV4cGxpY2l0IE1lZGlhU291cmNl
U2V0dGluZ3MoY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJik7CiAKLSAgICBSZWFs
dGltZU1lZGlhU291cmNlU3RhdGVzIG1fc291cmNlU3RhdGVzOworICAgIFJlYWx0aW1lTWVkaWFT
b3VyY2VTZXR0aW5ncyBtX3NvdXJjZVNldHRpbmdzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCi0jZW5kaWYgLy8gTWVkaWFTb3VyY2VTdGF0ZXNfaAorI2VuZGlmIC8vIE1lZGlhU291
cmNlU2V0dGluZ3NfaAogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vTWVkaWFTb3VyY2VTdGF0ZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTb3VyY2VTdGF0ZXMuY3BwCShyZXZpc2lvbiAx
OTI5MzApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU291cmNl
U3RhdGVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1OSArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0j
aWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLQotI2luY2x1ZGUgIk1lZGlhU291cmNlU3RhdGVzLmgi
Ci0KLSNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi1SZWY8TWVkaWFTb3VyY2VTdGF0ZXM+IE1lZGlhU291cmNlU3RhdGVzOjpjcmVhdGUoY29u
c3QgUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlcyYgc3RhdGVzKQotewotICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IE1lZGlhU291cmNlU3RhdGVzKHN0YXRlcykpOwotfQotCi1NZWRpYVNvdXJjZVN0
YXRlczo6TWVkaWFTb3VyY2VTdGF0ZXMoY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlcyYg
c3RhdGVzKQotICAgIDogbV9zb3VyY2VTdGF0ZXMoc3RhdGVzKQotewotfQotCi1jb25zdCBBdG9t
aWNTdHJpbmcmIE1lZGlhU291cmNlU3RhdGVzOjpzb3VyY2VUeXBlKCkgY29uc3QKLXsKLSAgICBy
ZXR1cm4gUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlczo6c291cmNlVHlwZShtX3NvdXJjZVN0YXRl
cy5zb3VyY2VUeXBlKCkpOwotfQotCi1jb25zdCBBdG9taWNTdHJpbmcmIE1lZGlhU291cmNlU3Rh
dGVzOjpmYWNpbmdNb2RlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gUmVhbHRpbWVNZWRpYVNvdXJj
ZVN0YXRlczo6ZmFjaW5nTW9kZShtX3NvdXJjZVN0YXRlcy5mYWNpbmdNb2RlKCkpOwotfQotCi0K
LX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU291cmNlU3RhdGVzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVNvdXJjZVN0YXRlcy5oCShyZXZp
c2lvbiAxOTI5MzApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlh
U291cmNlU3RhdGVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNjMgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
Ci0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgTWVkaWFTb3VyY2VT
dGF0ZXNfaAotI2RlZmluZSBNZWRpYVNvdXJjZVN0YXRlc19oCi0KLSNpZiBFTkFCTEUoTUVESUFf
U1RSRUFNKQotCi0jaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcy5oIgot
I2luY2x1ZGUgIlNjcmlwdFdyYXBwYWJsZS5oIgotI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0j
aW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFz
cyBNZWRpYVNvdXJjZVN0YXRlcyA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhU291cmNlU3RhdGVz
PiwgcHVibGljIFNjcmlwdFdyYXBwYWJsZSB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxNZWRp
YVNvdXJjZVN0YXRlcz4gY3JlYXRlKGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXMmKTsK
LQotICAgIGNvbnN0IEF0b21pY1N0cmluZyYgc291cmNlVHlwZSgpIGNvbnN0OwotICAgIGNvbnN0
IEF0b21pY1N0cmluZyYgc291cmNlSWQoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZVN0YXRlcy5z
b3VyY2VJZCgpOyB9Ci0gICAgdW5zaWduZWQgbG9uZyB3aWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1f
c291cmNlU3RhdGVzLndpZHRoKCk7IH0KLSAgICB1bnNpZ25lZCBsb25nIGhlaWdodCgpIGNvbnN0
IHsgcmV0dXJuIG1fc291cmNlU3RhdGVzLmhlaWdodCgpOyB9Ci0gICAgZmxvYXQgZnJhbWVSYXRl
KCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VTdGF0ZXMuZnJhbWVSYXRlKCk7IH0KLSAgICBmbG9h
dCBhc3BlY3RSYXRpbygpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlU3RhdGVzLmFzcGVjdFJhdGlv
KCk7IH0KLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIGZhY2luZ01vZGUoKSBjb25zdDsKLSAgICB1
bnNpZ25lZCBsb25nIHZvbHVtZSgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlU3RhdGVzLnZvbHVt
ZSgpOyB9Ci0gICAgCi0gICAgYm9vbCBoYXNWaWRlb1NvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1f
c291cmNlU3RhdGVzLnNvdXJjZVR5cGUoKSA9PSBSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzOjpD
YW1lcmE7IH0KLQotcHJpdmF0ZToKLSAgICBleHBsaWNpdCBNZWRpYVNvdXJjZVN0YXRlcyhjb25z
dCBSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzJik7Ci0KLSAgICBSZWFsdGltZU1lZGlhU291cmNl
U3RhdGVzIG1fc291cmNlU3RhdGVzOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0j
ZW5kaWYgLy8gTWVkaWFTb3VyY2VTdGF0ZXNfaAotCi0jZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTb3VyY2VTdGF0ZXMuaWRsCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTb3VyY2VTdGF0ZXMu
aWRsCShyZXZpc2lvbiAxOTI5MzApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL01lZGlhU291cmNlU3RhdGVzLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMSw0NCArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQot
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLWVudW0gU291
cmNlVHlwZUVudW0geyAibm9uZSIsICJjYW1lcmEiLCAibWljcm9waG9uZSIgfTsKLWVudW0gVmlk
ZW9GYWNpbmdNb2RlRW51bSB7ICJ1c2VyIiwgImVudmlyb25tZW50IiwgImxlZnQiLCAicmlnaHQi
IH07Ci0KLVsKLSAgICBDb25kaXRpb25hbD1NRURJQV9TVFJFQU0sCi0gICAgSW1wbGVtZW50YXRp
b25MYWNrc1ZUYWJsZSwKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKLV0gaW50ZXJmYWNlIE1lZGlh
U291cmNlU3RhdGVzIHsKLSAgICByZWFkb25seSBhdHRyaWJ1dGUgU291cmNlVHlwZUVudW0gc291
cmNlVHlwZTsKLSAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHNvdXJjZUlkOwotCi0g
ICAgW0N1c3RvbUdldHRlcl0gcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmc/IHdpZHRo
OwotICAgIFtDdXN0b21HZXR0ZXJdIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nPyBo
ZWlnaHQ7Ci0gICAgW0N1c3RvbUdldHRlcl0gcmVhZG9ubHkgYXR0cmlidXRlIHVucmVzdHJpY3Rl
ZCBmbG9hdD8gZnJhbWVSYXRlOwotICAgIFtDdXN0b21HZXR0ZXJdIHJlYWRvbmx5IGF0dHJpYnV0
ZSB1bnJlc3RyaWN0ZWQgZmxvYXQ/IGFzcGVjdFJhdGlvOwotICAgIFtDdXN0b21HZXR0ZXJdIHJl
YWRvbmx5IGF0dHJpYnV0ZSBWaWRlb0ZhY2luZ01vZGVFbnVtPyBmYWNpbmdNb2RlOwotICAgIFtD
dXN0b21HZXR0ZXJdIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nPyB2b2x1bWU7Ci19
OwotCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFt
Q2FwYWJpbGl0aWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL01lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzLmNwcAkocmV2aXNpb24gMTkyOTMwKQor
KysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNhcGFiaWxp
dGllcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDcgQEAKICNpbmNsdWRlICJBbGxB
dWRpb0NhcGFiaWxpdGllcy5oIgogI2luY2x1ZGUgIkFsbFZpZGVvQ2FwYWJpbGl0aWVzLmgiCiAj
aW5jbHVkZSAiQ2FwYWJpbGl0eVJhbmdlLmgiCi0jaW5jbHVkZSAiTWVkaWFTb3VyY2VTdGF0ZXMu
aCIKKyNpbmNsdWRlICJNZWRpYVNvdXJjZVNldHRpbmdzLmgiCiAjaW5jbHVkZSAiUmVhbHRpbWVN
ZWRpYVNvdXJjZUNhcGFiaWxpdGllcy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01Miwx
OSArNTIsOCBAQCBNZWRpYVN0cmVhbUNhcGFiaWxpdGllczo6TWVkaWFTdHJlYW1DYXBhCiAKIFZl
Y3RvcjxTdHJpbmc+IE1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzOjpzb3VyY2VUeXBlKCkgY29uc3QK
IHsKLSAgICBBU1NFUlQobV9Tb3VyY2VDYXBhYmlsaXRpZXMtPmhhc1ZpZGVvU291cmNlKCkpOwot
ICAgIAotICAgIHNpemVfdCBjb3VudCA9IG1fU291cmNlQ2FwYWJpbGl0aWVzLT5zb3VyY2VUeXBl
cygpLnNpemUoKTsKLSAgICBpZiAoIWNvdW50KQotICAgICAgICByZXR1cm4gVmVjdG9yPFN0cmlu
Zz4oKTsKLSAgICAKLSAgICBWZWN0b3I8U3RyaW5nPiBjYXBhYmlsaXRpZXM7Ci0gICAgY2FwYWJp
bGl0aWVzLnJlc2VydmVDYXBhY2l0eShjb3VudCk7Ci0gICAgCi0gICAgZm9yIChhdXRvJiB0eXBl
IDogbV9Tb3VyY2VDYXBhYmlsaXRpZXMtPnNvdXJjZVR5cGVzKCkpCi0gICAgICAgIGNhcGFiaWxp
dGllcy5hcHBlbmQoUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlczo6c291cmNlVHlwZSh0eXBlKSk7
Ci0gICAgCi0gICAgcmV0dXJuIGNhcGFiaWxpdGllczsKKyAgICAvLyBUaGlzIHdpbGwgYmUgZml4
ZWQgYnkgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTcyOC4KKyAg
ICByZXR1cm4gVmVjdG9yPFN0cmluZz4oKTsKIH0KIAogVmVjdG9yPFN0cmluZz4gTWVkaWFTdHJl
YW1DYXBhYmlsaXRpZXM6OnNvdXJjZUlkKCkgY29uc3QKQEAgLTk0LDcgKzgzLDcgQEAgVmVjdG9y
PFN0cmluZz4gTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXM6OgogICAgIGNhcGFiaWxpdGllcy5yZXNl
cnZlQ2FwYWNpdHkoY291bnQpOwogICAgIAogICAgIGZvciAoYXV0byYgbW9kZSA6IG1fU291cmNl
Q2FwYWJpbGl0aWVzLT5mYWNpbmdNb2RlcygpKQotICAgICAgICBjYXBhYmlsaXRpZXMuYXBwZW5k
KFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXM6OmZhY2luZ01vZGUobW9kZSkpOworICAgICAgICBj
YXBhYmlsaXRpZXMuYXBwZW5kKFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6ZmFjaW5nTW9k
ZShtb2RlKSk7CiAgICAgCiAgICAgcmV0dXJuIGNhcGFiaWxpdGllczsKIH0KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRy
YWNrLmNwcAkocmV2aXNpb24gMTkyOTMwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcs
NyBAQAogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2Rl
UGxhY2Vob2xkZXIuaCIKICNpbmNsdWRlICJNZWRpYUNvbnN0cmFpbnRzSW1wbC5oIgotI2luY2x1
ZGUgIk1lZGlhU291cmNlU3RhdGVzLmgiCisjaW5jbHVkZSAiTWVkaWFTb3VyY2VTZXR0aW5ncy5o
IgogI2luY2x1ZGUgIk1lZGlhU3RyZWFtLmgiCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW1Qcml2YXRl
LmgiCiAjaW5jbHVkZSAiTWVkaWFUcmFja0NvbnN0cmFpbnRzLmgiCkBAIC0xNjIsMjEgKzE2Miwx
NCBAQCBSZWZQdHI8TWVkaWFUcmFja0NvbnN0cmFpbnRzPiBNZWRpYVN0cmVhCiAgICAgcmV0dXJu
IDA7CiB9CiAKLVJlZlB0cjxNZWRpYVNvdXJjZVN0YXRlcz4gTWVkaWFTdHJlYW1UcmFjazo6c3Rh
dGVzKCkgY29uc3QKK1JlZlB0cjxNZWRpYVNvdXJjZVNldHRpbmdzPiBNZWRpYVN0cmVhbVRyYWNr
OjpnZXRTZXR0aW5ncygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIE1lZGlhU291cmNlU3RhdGVzOjpj
cmVhdGUobV9wcml2YXRlLT5zdGF0ZXMoKSk7CisgICAgcmV0dXJuIE1lZGlhU291cmNlU2V0dGlu
Z3M6OmNyZWF0ZShtX3ByaXZhdGUtPnNldHRpbmdzKCkpOwogfQogCiBSZWZQdHI8TWVkaWFTdHJl
YW1DYXBhYmlsaXRpZXM+IE1lZGlhU3RyZWFtVHJhY2s6OmdldENhcGFiaWxpdGllcygpIGNvbnN0
CiB7Ci0gICAgLy8gVGhlIHNvdXJjZSBtYXkgYmUgc2hhcmVkIGJ5IG11bHRpcGxlIHRyYWNrcywg
c28gaXRzIHN0YXRlcyBpcyBub3QgbmVjZXNzYXJpbHkKLSAgICAvLyBpbiBzeW5jIHdpdGggdGhl
IHRyYWNrIHN0YXRlLiBBIHRyYWNrIHRoYXQgaGFzIGVuZGVkIGFsd2F5cyBoYXMgYSBzb3VyY2UK
LSAgICAvLyB0eXBlIG9mICJub25lIi4KLSAgICBSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZUNh
cGFiaWxpdGllcz4gc291cmNlQ2FwYWJpbGl0aWVzID0gbV9wcml2YXRlLT5jYXBhYmlsaXRpZXMo
KTsKLSAgICBpZiAoZW5kZWQoKSkKLSAgICAgICAgc291cmNlQ2FwYWJpbGl0aWVzLT5zZXRTb3Vy
Y2VUeXBlKFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXM6Ok5vbmUpOwotICAgIAotICAgIHJldHVy
biBNZWRpYVN0cmVhbUNhcGFiaWxpdGllczo6Y3JlYXRlKHNvdXJjZUNhcGFiaWxpdGllcy5yZWxl
YXNlKCkpOworICAgIHJldHVybiBNZWRpYVN0cmVhbUNhcGFiaWxpdGllczo6Y3JlYXRlKG1fcHJp
dmF0ZS0+Y2FwYWJpbGl0aWVzKCkpOwogfQogCiB2b2lkIE1lZGlhU3RyZWFtVHJhY2s6OmFwcGx5
Q29uc3RyYWludHMoY29uc3QgRGljdGlvbmFyeSYgY29uc3RyYWludHMpCkBAIC0yMzgsNyArMjMx
LDcgQEAgdm9pZCBNZWRpYVN0cmVhbVRyYWNrOjp0cmFja011dGVkQ2hhbmdlZAogICAgIGNvbmZp
Z3VyZVRyYWNrUmVuZGVyaW5nKCk7CiB9CiAKLXZvaWQgTWVkaWFTdHJlYW1UcmFjazo6dHJhY2tT
dGF0ZXNDaGFuZ2VkKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJikKK3ZvaWQgTWVkaWFTdHJlYW1U
cmFjazo6dHJhY2tTZXR0aW5nc0NoYW5nZWQoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmKQogewog
ICAgIGNvbmZpZ3VyZVRyYWNrUmVuZGVyaW5nKCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suaAkocmV2aXNp
b24gMTkyOTMwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0
cmVhbVRyYWNrLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDcgKzQ1LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogY2xhc3MgQXVkaW9Tb3VyY2VQcm92aWRlcjsKIGNsYXNzIERpY3Rpb25hcnk7CiBj
bGFzcyBNZWRpYUNvbnN0cmFpbnRzSW1wbDsKLWNsYXNzIE1lZGlhU291cmNlU3RhdGVzOworY2xh
c3MgTWVkaWFTb3VyY2VTZXR0aW5nczsKIGNsYXNzIE1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzOwog
Y2xhc3MgTWVkaWFUcmFja0NvbnN0cmFpbnRzOwogCkBAIC03OSw3ICs3OSw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHN0b3BQcm9kdWNpbmdEYXRhKCk7CiAKICAgICBSZWZQdHI8TWVkaWFUcmFja0Nv
bnN0cmFpbnRzPiBnZXRDb25zdHJhaW50cygpIGNvbnN0OwotICAgIFJlZlB0cjxNZWRpYVNvdXJj
ZVN0YXRlcz4gc3RhdGVzKCkgY29uc3Q7CisgICAgUmVmUHRyPE1lZGlhU291cmNlU2V0dGluZ3M+
IGdldFNldHRpbmdzKCkgY29uc3Q7CiAgICAgUmVmUHRyPE1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVz
PiBnZXRDYXBhYmlsaXRpZXMoKSBjb25zdDsKICAgICB2b2lkIGFwcGx5Q29uc3RyYWludHMoY29u
c3QgRGljdGlvbmFyeSYpOwogICAgIHZvaWQgYXBwbHlDb25zdHJhaW50cyhjb25zdCBNZWRpYUNv
bnN0cmFpbnRzJik7CkBAIC0xMTcsNyArMTE3LDcgQEAgcHJpdmF0ZToKICAgICAvLyBNZWRpYVN0
cmVhbVRyYWNrUHJpdmF0ZTo6T2JzZXJ2ZXIKICAgICB2b2lkIHRyYWNrRW5kZWQoTWVkaWFTdHJl
YW1UcmFja1ByaXZhdGUmKSBvdmVycmlkZTsKICAgICB2b2lkIHRyYWNrTXV0ZWRDaGFuZ2VkKE1l
ZGlhU3RyZWFtVHJhY2tQcml2YXRlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB0cmFja1N0YXRlc0No
YW5nZWQoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmKSBvdmVycmlkZTsKKyAgICB2b2lkIHRyYWNr
U2V0dGluZ3NDaGFuZ2VkKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJikgb3ZlcnJpZGU7CiAgICAg
dm9pZCB0cmFja0VuYWJsZWRDaGFuZ2VkKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJikgb3ZlcnJp
ZGU7CiAKICAgICBWZWN0b3I8T2JzZXJ2ZXIqPiBtX29ic2VydmVyczsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5pZGwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNr
LmlkbAkocmV2aXNpb24gMTkyOTMwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmlkbAkod29ya2luZyBjb3B5KQpAQCAtNDcsNyArNDcsNyBA
QCBlbnVtIE1lZGlhU3RyZWFtVHJhY2tTdGF0ZSB7ICJuZXciLCAibGl2CiAgICAgW0ltcGxlbWVu
dGVkQXM9c3RvcFByb2R1Y2luZ0RhdGFdIHZvaWQgc3RvcCgpOwogCiAgICAgTWVkaWFUcmFja0Nv
bnN0cmFpbnRzIGdldENvbnN0cmFpbnRzKCk7Ci0gICAgTWVkaWFTb3VyY2VTdGF0ZXMgc3RhdGVz
KCk7CisgICAgW0N1c3RvbV0gTWVkaWFTb3VyY2VTZXR0aW5ncyBnZXRTZXR0aW5ncygpOwogICAg
IE1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzIGdldENhcGFiaWxpdGllcygpOyAvLyByZXR1cm5zIGVp
dGhlciBBbGxWaWRlb0NhcGFiaWxpdGllcyBvciBBbGxBdWRpb0NhcGFiaWxpdGllcwogICAgIHZv
aWQgYXBwbHlDb25zdHJhaW50cyhEaWN0aW9uYXJ5IGNvbnN0cmFpbnRzKTsKIApJbmRleDogU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFt
QXVkaW9Tb3VyY2UuY3BwCShyZXZpc2lvbiAxOTI5MzApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9Tb3VyY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC01MiwxMiArNTIsMTIgQEAgUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM+
IAogICAgIHJldHVybiBudWxscHRyOwogfQogCi1jb25zdCBSZWFsdGltZU1lZGlhU291cmNlU3Rh
dGVzJiBNZWRpYVN0cmVhbUF1ZGlvU291cmNlOjpzdGF0ZXMoKQorY29uc3QgUmVhbHRpbWVNZWRp
YVNvdXJjZVNldHRpbmdzJiBNZWRpYVN0cmVhbUF1ZGlvU291cmNlOjpzZXR0aW5ncygpCiB7CiAg
ICAgLy8gRklYTUU6IGltcGxlbWVudCB0aGlzLgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMjI0MzAKICAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJl
dHVybiBtX2N1cnJlbnRTdGF0ZXM7CisgICAgcmV0dXJuIG1fY3VycmVudFNldHRpbmdzOwogfQog
CiBBdWRpb1NvdXJjZVByb3ZpZGVyKiBNZWRpYVN0cmVhbUF1ZGlvU291cmNlOjphdWRpb1NvdXJj
ZVByb3ZpZGVyKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFT
dHJlYW1BdWRpb1NvdXJjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJjZS5oCShyZXZpc2lvbiAxOTI5MzApCisrKyBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9Tb3VyY2UuaAko
d29ya2luZyBjb3B5KQpAQCAtNDgsNyArNDgsNyBAQCBwdWJsaWM6CiAgICAgfk1lZGlhU3RyZWFt
QXVkaW9Tb3VyY2UoKSB7IH0KIAogICAgIFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJp
bGl0aWVzPiBjYXBhYmlsaXRpZXMoKSBvdmVycmlkZTsKLSAgICBjb25zdCBSZWFsdGltZU1lZGlh
U291cmNlU3RhdGVzJiBzdGF0ZXMoKSBvdmVycmlkZTsKKyAgICBjb25zdCBSZWFsdGltZU1lZGlh
U291cmNlU2V0dGluZ3MmIHNldHRpbmdzKCkgb3ZlcnJpZGU7CiAgICAgCiAgICAgY29uc3QgU3Ry
aW5nJiBkZXZpY2VJZCgpIGNvbnN0IHsgcmV0dXJuIG1fZGV2aWNlSWQ7IH0KICAgICB2b2lkIHNl
dERldmljZUlkKGNvbnN0IFN0cmluZyYgZGV2aWNlSWQpIHsgbV9kZXZpY2VJZCA9IGRldmljZUlk
OyB9CkBAIC02OCw3ICs2OCw3IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fZGV2aWNlSWQ7CiAg
ICAgTG9jayBtX2F1ZGlvQ29uc3VtZXJzTG9jazsKICAgICBWZWN0b3I8UmVmUHRyPEF1ZGlvRGVz
dGluYXRpb25Db25zdW1lcj4+IG1fYXVkaW9Db25zdW1lcnM7Ci0gICAgUmVhbHRpbWVNZWRpYVNv
dXJjZVN0YXRlcyBtX2N1cnJlbnRTdGF0ZXM7CisgICAgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRp
bmdzIG1fY3VycmVudFNldHRpbmdzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRl
eDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkocmV2aXNpb24gMTkyOTMwKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zMTksMTEgKzMxOSw5IEBACiAJCTA3
QkRENkVDMTQ2OUI0QzIwMDlDOUY4NSAvKiBKU1RyYWNrRXZlbnRDdXN0b20uY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdCNUEzMEExNDY4N0I4NDAw
QTgxRUNFIC8qIEpTVHJhY2tFdmVudEN1c3RvbS5jcHAgKi87IH07CiAJCTA3QzFDMEUyMUJGQjYw
MDEwMEJEMjI1NiAvKiBNZWRpYVRyYWNrU3VwcG9ydGVkQ29uc3RyYWludHMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3QzFDMEUwMUJGQjYwMDEwMEJE
MjI1NiAvKiBNZWRpYVRyYWNrU3VwcG9ydGVkQ29uc3RyYWludHMuaCAqLzsgfTsKIAkJMDdDMUMw
RTUxQkZCNjBFRDAwQkQyMjU2IC8qIFJlYWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJh
aW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdD
MUMwRTQxQkZCNjBFRDAwQkQyMjU2IC8qIFJlYWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25z
dHJhaW50cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
Ci0JCTA3QzU5QjY4MTdGNzg0QkEwMDBGQkNCQiAvKiBNZWRpYVNvdXJjZVN0YXRlcy5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0M1OUI2NTE3Rjc4
NEJBMDAwRkJDQkIgLyogTWVkaWFTb3VyY2VTdGF0ZXMuY3BwICovOyB9OwotCQkwN0M1OUI2OTE3
Rjc4NEJBMDAwRkJDQkIgLyogTWVkaWFTb3VyY2VTdGF0ZXMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3QzU5QjY2MTdGNzg0QkEwMDBGQkNCQiAvKiBN
ZWRpYVNvdXJjZVN0YXRlcy5oICovOyB9OwotCQkwN0M1OUI2RTE3Rjc5NEY2MDAwRkJDQkIgLyog
SlNNZWRpYVNvdXJjZVN0YXRlc0N1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwN0M1OUI2RDE3Rjc5NEY2MDAwRkJDQkIgLyogSlNNZWRpYVNv
dXJjZVN0YXRlc0N1c3RvbS5jcHAgKi87IH07Ci0JCTA3QzU5QjcxMTdGNzlDN0MwMDBGQkNCQiAv
KiBKU01lZGlhU291cmNlU3RhdGVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDA3QzU5QjZGMTdGNzlDN0MwMDBGQkNCQiAvKiBKU01lZGlhU291cmNl
U3RhdGVzLmNwcCAqLzsgfTsKLQkJMDdDNTlCNzIxN0Y3OUM3QzAwMEZCQ0JCIC8qIEpTTWVkaWFT
b3VyY2VTdGF0ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDA3QzU5QjcwMTdGNzlDN0MwMDBGQkNCQiAvKiBKU01lZGlhU291cmNlU3RhdGVzLmggKi87
IH07CisJCTA3QzU5QjY4MTdGNzg0QkEwMDBGQkNCQiAvKiBNZWRpYVNvdXJjZVNldHRpbmdzLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3QzU5QjY1
MTdGNzg0QkEwMDBGQkNCQiAvKiBNZWRpYVNvdXJjZVNldHRpbmdzLmNwcCAqLzsgfTsKKwkJMDdD
NTlCNjkxN0Y3ODRCQTAwMEZCQ0JCIC8qIE1lZGlhU291cmNlU2V0dGluZ3MuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3QzU5QjY2MTdGNzg0QkEwMDBG
QkNCQiAvKiBNZWRpYVNvdXJjZVNldHRpbmdzLmggKi87IH07CisJCTA3QzU5QjZFMTdGNzk0RjYw
MDBGQkNCQiAvKiBKU01lZGlhU3RyZWFtVHJhY2tDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdDNTlCNkQxN0Y3OTRGNjAwMEZCQ0JCIC8q
IEpTTWVkaWFTdHJlYW1UcmFja0N1c3RvbS5jcHAgKi87IH07CiAJCTA3QzU5Qjc2MTdGN0QwREIw
MDBGQkNCQiAvKiBDYXBhYmlsaXR5UmFuZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDA3QzU5Qjc0MTdGN0QwOUQwMDBGQkNCQiAvKiBDYXBhYmlsaXR5
UmFuZ2UuaCAqLzsgfTsKIAkJMDdDQTEyMEUxODJENjdEODAwRDEyMTk3IC8qIEpTUlRDUGVlckNv
bm5lY3Rpb25DdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMDdDQTEyMEQxODJENjdEODAwRDEyMTk3IC8qIEpTUlRDUGVlckNvbm5lY3Rpb25D
dXN0b20uY3BwICovOyB9OwogCQkwN0NFNzdENTE2NzEyQTZBMDBDNTVBNDcgLyogSW5iYW5kVGV4
dFRyYWNrUHJpdmF0ZUNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMDdDRTc3RDQxNjcxMkE2QTAwQzU1QTQ3IC8qIEluYmFuZFRleHRUcmFja1By
aXZhdGVDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwpAQCAtMTg1Nyw4ICsxODU1LDggQEAKIAkJNEE0RjY1NzAxQUE5OTdGMTAwRTM4Q0REIC8q
IFJlYWx0aW1lTWVkaWFTb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNEE0RjY1NkIxQUE5OTdGMTAwRTM4Q0REIC8qIFJlYWx0aW1lTWVkaWFT
b3VyY2UuY3BwICovOyB9OwogCQk0QTRGNjU3MTFBQTk5N0YxMDBFMzhDREQgLyogUmVhbHRpbWVN
ZWRpYVNvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNEE0RjY1NkMxQUE5OTdGMTAwRTM4Q0REIC8qIFJlYWx0aW1lTWVkaWFTb3VyY2UuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0QTRGNjU3MjFB
QTk5N0YxMDBFMzhDREQgLyogUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEE0RjY1NkQxQUE5OTdG
MTAwRTM4Q0REIC8qIFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk0QTRGNjU3MzFBQTk5N0Yx
MDBFMzhDREQgLyogUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlcy5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QTRGNjU2RTFBQTk5N0YxMDBFMzhDREQg
LyogUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlcy5jcHAgKi87IH07Ci0JCTRBNEY2NTc0MUFBOTk3
RjEwMEUzOENERCAvKiBSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QTRGNjU2RjFBQTk5N0YxMDBFMzhDREQg
LyogUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCTRBNEY2NTczMUFBOTk3RjEwMEUzOENERCAvKiBSZWFs
dGltZU1lZGlhU291cmNlU2V0dGluZ3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNEE0RjY1NkUxQUE5OTdGMTAwRTM4Q0REIC8qIFJlYWx0aW1lTWVk
aWFTb3VyY2VTZXR0aW5ncy5jcHAgKi87IH07CisJCTRBNEY2NTc0MUFBOTk3RjEwMEUzOENERCAv
KiBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRBNEY2NTZGMUFBOTk3RjEwMEUzOENERCAvKiBSZWFsdGlt
ZU1lZGlhU291cmNlU2V0dGluZ3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk0QTVBMkFEQjE2MUU3RTAwMDA1ODg5REQgLyogV2ViU29ja2V0RXh0
ZW5zaW9uUGFyc2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDRBNUEyQUQ5MTYxRTdFMDAwMDU4ODlERCAvKiBXZWJTb2NrZXRFeHRlbnNpb25QYXJz
ZXIuY3BwICovOyB9OwogCQk0QTVBMkFEQzE2MUU3RTAwMDA1ODg5REQgLyogV2ViU29ja2V0RXh0
ZW5zaW9uUGFyc2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0QTVBMkFEQTE2MUU3RTAwMDA1ODg5REQgLyogV2ViU29ja2V0RXh0ZW5zaW9uUGFyc2Vy
LmggKi87IH07CiAJCTRBNkU5RkMzMTNDMTdEMUQwMDQ2QTdGOCAvKiBDU1NGb250RmVhdHVyZVZh
bHVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRB
NkU5RkMxMTNDMTdEMUQwMDQ2QTdGOCAvKiBDU1NGb250RmVhdHVyZVZhbHVlLmNwcCAqLzsgfTsK
QEAgLTc2MTMsMTIgKzc2MTEsOSBAQAogCQkwN0MxQzBFMTFCRkI2MDAxMDBCRDIyNTYgLyogTWVk
aWFUcmFja1N1cHBvcnRlZENvbnN0cmFpbnRzLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBN
ZWRpYVRyYWNrU3VwcG9ydGVkQ29uc3RyYWludHMuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwN0MxQzBFNDFCRkI2MEVEMDBCRDIyNTYgLyogUmVhbHRpbWVNZWRpYVNvdXJjZVN1
cHBvcnRlZENvbnN0cmFpbnRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJl
YWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwN0MxQzBFNjFCRkI5MEE3MDBCRDIyNTYgLyogSlNNZWRpYVRyYWNrU3Vw
cG9ydGVkQ29uc3RyYWludHNDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSlNNZWRpYVRyYWNrU3VwcG9ydGVkQ29uc3RyYWludHNDdXN0b20uY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwN0M1OUI2NTE3Rjc4NEJBMDAwRkJDQkIgLyogTWVk
aWFTb3VyY2VTdGF0ZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
TWVkaWFTb3VyY2VTdGF0ZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwN0M1
OUI2NjE3Rjc4NEJBMDAwRkJDQkIgLyogTWVkaWFTb3VyY2VTdGF0ZXMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFTb3VyY2VTdGF0ZXMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJMDdDNTlCNjcxN0Y3ODRCQTAwMEZCQ0JCIC8qIE1lZGlhU291cmNlU3Rh
dGVzLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBNZWRpYVNvdXJjZVN0YXRlcy5pZGw7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTA3QzU5QjZEMTdGNzk0RjYwMDBGQkNCQiAvKiBK
U01lZGlhU291cmNlU3RhdGVzQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTTWVkaWFTb3VyY2VTdGF0ZXNDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQkwN0M1OUI2RjE3Rjc5QzdDMDAwRkJDQkIgLyogSlNNZWRpYVNvdXJjZVN0
YXRlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU01lZGlhU291
cmNlU3RhdGVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMDdDNTlCNzAxN0Y3
OUM3QzAwMEZCQ0JCIC8qIEpTTWVkaWFTb3VyY2VTdGF0ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSlNNZWRpYVNvdXJjZVN0YXRlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkwN0M1OUI2NTE3Rjc4NEJBMDAwRkJDQkIgLyogTWVkaWFTb3VyY2VTZXR0aW5n
cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZWRpYVNvdXJjZVNl
dHRpbmdzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDdDNTlCNjYxN0Y3ODRC
QTAwMEZCQ0JCIC8qIE1lZGlhU291cmNlU2V0dGluZ3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gTWVkaWFTb3VyY2VTZXR0aW5ncy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkwN0M1OUI2RDE3Rjc5NEY2MDAwRkJDQkIgLyogSlNNZWRpYVN0cmVhbVRyYWNrQ3Vz
dG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTWVkaWFTdHJl
YW1UcmFja0N1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3QzU5Qjcz
MTdGN0QwOUQwMDBGQkNCQiAvKiBBbGxWaWRlb0NhcGFiaWxpdGllcy5pZGwgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0OyBwYXRoID0gQWxsVmlkZW9DYXBhYmlsaXRpZXMuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwN0M1OUI3NDE3RjdEMDlEMDAwRkJDQkIgLyogQ2FwYWJpbGl0eVJhbmdlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhcGFiaWxpdHlSYW5nZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwN0M1OUI3NTE3RjdEMDlEMDAwRkJDQkIgLyogQ2Fw
YWJpbGl0eVJhbmdlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBDYXBhYmlsaXR5UmFuZ2Uu
aWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTI4OSw4ICs5Mjg0LDggQEAKIAkJ
NEE0RjY1NkIxQUE5OTdGMTAwRTM4Q0REIC8qIFJlYWx0aW1lTWVkaWFTb3VyY2UuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRBNEY2NTZDMUFBOTk3RjEwMEUzOENERCAv
KiBSZWFsdGltZU1lZGlhU291cmNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFJlYWx0aW1lTWVkaWFTb3VyY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEE0
RjY1NkQxQUE5OTdGMTAwRTM4Q0REIC8qIFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVhbHRpbWVNZWRpYVNvdXJjZUNh
cGFiaWxpdGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0QTRGNjU2RTFBQTk5
N0YxMDBFMzhDREQgLyogUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlcy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNEE0RjY1NkYxQUE5OTdGMTAwRTM4Q0REIC8q
IFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk0QTRGNjU2RTFBQTk5N0YxMDBFMzhDREQgLyogUmVhbHRpbWVNZWRpYVNvdXJjZVNl
dHRpbmdzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlYWx0aW1l
TWVkaWFTb3VyY2VTZXR0aW5ncy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTRB
NEY2NTZGMUFBOTk3RjEwMEUzOENERCAvKiBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRp
bmdzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRBNUEyQUQ5MTYxRTdFMDAwMDU4
ODlERCAvKiBXZWJTb2NrZXRFeHRlbnNpb25QYXJzZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gV2ViU29ja2V0RXh0ZW5zaW9uUGFyc2VyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEE1QTJBREExNjFFN0UwMDAwNTg4OUREIC8qIFdlYlNvY2tl
dEV4dGVuc2lvblBhcnNlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJT
b2NrZXRFeHRlbnNpb25QYXJzZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEE2
RTlGQzExM0MxN0QxRDAwNDZBN0Y4IC8qIENTU0ZvbnRGZWF0dXJlVmFsdWUuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ1NTRm9udEZlYXR1cmVWYWx1ZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNTE2OCw5ICsxNTE2Myw4IEBACiAJCQkJMDcz
OTRFQzkxQkFCMkNENzAwQkU5OUNEIC8qIE1lZGlhRGV2aWNlc1JlcXVlc3QuaCAqLywKIAkJCQk1
RTE2QTJFMjFCRkE2NEZCMDAyOUEyMUUgLyogTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uLmNw
cCAqLywKIAkJCQk1RTE2QTJFMzFCRkE2NEZCMDAyOUEyMUUgLyogTWVkaWFFbmRwb2ludFBlZXJD
b25uZWN0aW9uLmggKi8sCi0JCQkJMDdDNTlCNjUxN0Y3ODRCQTAwMEZCQ0JCIC8qIE1lZGlhU291
cmNlU3RhdGVzLmNwcCAqLywKLQkJCQkwN0M1OUI2NjE3Rjc4NEJBMDAwRkJDQkIgLyogTWVkaWFT
b3VyY2VTdGF0ZXMuaCAqLywKLQkJCQkwN0M1OUI2NzE3Rjc4NEJBMDAwRkJDQkIgLyogTWVkaWFT
b3VyY2VTdGF0ZXMuaWRsICovLAorCQkJCTA3QzU5QjY1MTdGNzg0QkEwMDBGQkNCQiAvKiBNZWRp
YVNvdXJjZVNldHRpbmdzLmNwcCAqLywKKwkJCQkwN0M1OUI2NjE3Rjc4NEJBMDAwRkJDQkIgLyog
TWVkaWFTb3VyY2VTZXR0aW5ncy5oICovLAogCQkJCTA3MjIxQjRDMTdDRUMzMjcwMDg0OEU1MSAv
KiBNZWRpYVN0cmVhbS5jcHAgKi8sCiAJCQkJMDcyMjFCNEQxN0NFQzMyNzAwODQ4RTUxIC8qIE1l
ZGlhU3RyZWFtLmggKi8sCiAJCQkJMDcyMjFCNEUxN0NFQzMyNzAwODQ4RTUxIC8qIE1lZGlhU3Ry
ZWFtLmlkbCAqLywKQEAgLTE1Mjk0LDggKzE1Mjg4LDggQEAKIAkJCQk0QTRGNjU2RDFBQTk5N0Yx
MDBFMzhDREQgLyogUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcy5oICovLAogCQkJCTRB
MEZGQTlGMUFBRjVFQTIwMDYyODAzQiAvKiBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcCAq
LywKIAkJCQk0QTBGRkFBMDFBQUY1RUEyMDA2MjgwM0IgLyogUmVhbHRpbWVNZWRpYVNvdXJjZUNl
bnRlci5oICovLAotCQkJCTRBNEY2NTZFMUFBOTk3RjEwMEUzOENERCAvKiBSZWFsdGltZU1lZGlh
U291cmNlU3RhdGVzLmNwcCAqLywKLQkJCQk0QTRGNjU2RjFBQTk5N0YxMDBFMzhDREQgLyogUmVh
bHRpbWVNZWRpYVNvdXJjZVN0YXRlcy5oICovLAorCQkJCTRBNEY2NTZFMUFBOTk3RjEwMEUzOENE
RCAvKiBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MuY3BwICovLAorCQkJCTRBNEY2NTZGMUFB
OTk3RjEwMEUzOENERCAvKiBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MuaCAqLywKIAkJCQkw
N0FCOTk2RDE4REEzQzc0MDAxODc3MUUgLyogUlRDQ29uZmlndXJhdGlvblByaXZhdGUuaCAqLywK
IAkJCQkwNzIyMUJBMjE3Q0YwQUQ0MDA4NDhFNTEgLyogUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmgg
Ki8sCiAJCQkJMDcyMjFCQTMxN0NGMEFENDAwODQ4RTUxIC8qIFJUQ0RhdGFDaGFubmVsSGFuZGxl
ckNsaWVudC5oICovLApAQCAtMTUzOTEsOCArMTUzODUsNiBAQAogCQkJCTE1N0NDMjYyMUI3QzFD
QTQwMEQ4RDA3NSAvKiBKU01lZGlhRGV2aWNlSW5mby5oICovLAogCQkJCTE1NzM5QkI4MUI0MjAx
MjIwMEQyNThDMSAvKiBKU01lZGlhRGV2aWNlcy5jcHAgKi8sCiAJCQkJMTU3MzlCQjkxQjQyMDEy
MjAwRDI1OEMxIC8qIEpTTWVkaWFEZXZpY2VzLmggKi8sCi0JCQkJMDdDNTlCNkYxN0Y3OUM3QzAw
MEZCQ0JCIC8qIEpTTWVkaWFTb3VyY2VTdGF0ZXMuY3BwICovLAotCQkJCTA3QzU5QjcwMTdGNzlD
N0MwMDBGQkNCQiAvKiBKU01lZGlhU291cmNlU3RhdGVzLmggKi8sCiAJCQkJMDcyNzdFNDAxN0Qw
MThDQzAwMTU1MzREIC8qIEpTTWVkaWFTdHJlYW0uY3BwICovLAogCQkJCTA3Mjc3RTQxMTdEMDE4
Q0MwMDE1NTM0RCAvKiBKU01lZGlhU3RyZWFtLmggKi8sCiAJCQkJMDcyNzdFNDIxN0QwMThDQzAw
MTU1MzREIC8qIEpTTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAgKi8sCkBAIC0y
MjE2OCw3ICsyMjE2MCw3IEBACiAJCQkJQkNFMUM0M0YwRDk4MzBGNDAwM0IwMkYyIC8qIEpTTG9j
YXRpb25DdXN0b20uY3BwICovLAogCQkJCUFENzI2RkU3MTZEOUYyMDQwMDNBNEU2RCAvKiBKU01l
ZGlhTGlzdEN1c3RvbS5oICovLAogCQkJCTA3N0I2NDBFMUI4RjUzNzUwMDNFOUFENSAvKiBKU01l
ZGlhU2Vzc2lvbkN1c3RvbS5jcHAgKi8sCi0JCQkJMDdDNTlCNkQxN0Y3OTRGNjAwMEZCQ0JCIC8q
IEpTTWVkaWFTb3VyY2VTdGF0ZXNDdXN0b20uY3BwICovLAorCQkJCTA3QzU5QjZEMTdGNzk0RjYw
MDBGQkNCQiAvKiBKU01lZGlhU3RyZWFtVHJhY2tDdXN0b20uY3BwICovLAogCQkJCTA3MDU4NTE2
MTdGQjQwRTkwMDVGMkJDQiAvKiBKU01lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzQ3VzdG9tLmNwcCAq
LywKIAkJCQlFMUE1Rjk5QTBFN0VBQTI1MDBBRjg1RUEgLyogSlNNZXNzYWdlQ2hhbm5lbEN1c3Rv
bS5jcHAgKi8sCiAJCQkJMDdDMUMwRTYxQkZCOTBBNzAwQkQyMjU2IC8qIEpTTWVkaWFUcmFja1N1
cHBvcnRlZENvbnN0cmFpbnRzQ3VzdG9tLmNwcCAqLywKQEAgLTI2MjkxLDcgKzI2MjgzLDYgQEAK
IAkJCQlEM0E5NEE0NzEyMkRDNDBGMDBBMzdCQkMgLyogSlNNZWRpYVF1ZXJ5TGlzdC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJN0M1MzQzRkQxN0I3NEI2MzAwNDIzMkYwIC8qIEpTTWVkaWFRdWVyeUxp
c3RMaXN0ZW5lci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0Q5REUxNzUxN0FBQzc0QzAwRUEzODZE
IC8qIEpTTWVkaWFTb3VyY2UuaCBpbiBIZWFkZXJzICovLAotCQkJCTA3QzU5QjcyMTdGNzlDN0Mw
MDBGQkNCQiAvKiBKU01lZGlhU291cmNlU3RhdGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzI3
N0U0RDE3RDAxOENDMDAxNTUzNEQgLyogSlNNZWRpYVN0cmVhbS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMDcyNzdFNEYxN0QwMThDQzAwMTU1MzREIC8qIEpTTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0
aW9uTm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkRCRDQ4MEQxNTlCQzY4NzAwOTNFQjRGIC8q
IEpTTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUuaCBpbiBIZWFkZXJzICovLApAQCAtMjY3ODEs
NyArMjY3NzIsNyBAQAogCQkJCUNEQzhCNUE3MTgwNDc0RjcwMDE2RTY4NSAvKiBNZWRpYVNvdXJj
ZVByaXZhdGVBVkZPYmpDLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRERDMUU3QTE4QTk1MkYzMDAy
N0E5RDQgLyogTWVkaWFTb3VyY2VQcml2YXRlQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlD
RDYxRkU2ODE3OTRBQURCMDA0MTAxRUIgLyogTWVkaWFTb3VyY2VSZWdpc3RyeS5oIGluIEhlYWRl
cnMgKi8sCi0JCQkJMDdDNTlCNjkxN0Y3ODRCQTAwMEZCQ0JCIC8qIE1lZGlhU291cmNlU3RhdGVz
LmggaW4gSGVhZGVycyAqLywKKwkJCQkwN0M1OUI2OTE3Rjc4NEJBMDAwRkJDQkIgLyogTWVkaWFT
b3VyY2VTZXR0aW5ncy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDc4RTA5MTUxN0QxNEQxQzAwNDIw
QUExIC8qIE1lZGlhU3RyZWFtLmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzhFMDk0QzE3RDE3MDk2
MDA0MjBBQTEgLyogTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMDc4MzIyODUxODAxM0VEODAwOTk5RTBDIC8qIE1lZGlhU3RyZWFtQXVkaW9Tb3Vy
Y2UuaCBpbiBIZWFkZXJzICovLApAQCAtMjcxMDUsNyArMjcwOTYsNyBAQAogCQkJCTRBNEY2NTcy
MUFBOTk3RjEwMEUzOENERCAvKiBSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzLmggaW4g
SGVhZGVycyAqLywKIAkJCQk0QTBGRkFBMjFBQUY1RUEyMDA2MjgwM0IgLyogUmVhbHRpbWVNZWRp
YVNvdXJjZUNlbnRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNEEwRkZBQTYxQUFGNUVGNjAwNjI4
MDNCIC8qIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMuaCBpbiBIZWFkZXJzICovLAotCQkJ
CTRBNEY2NTc0MUFBOTk3RjEwMEUzOENERCAvKiBSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzLmgg
aW4gSGVhZGVycyAqLywKKwkJCQk0QTRGNjU3NDFBQTk5N0YxMDBFMzhDREQgLyogUmVhbHRpbWVN
ZWRpYVNvdXJjZVNldHRpbmdzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwN0MxQzBFNTFCRkI2MEVE
MDBCRDIyNTYgLyogUmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBvcnRlZENvbnN0cmFpbnRzLmggaW4g
SGVhZGVycyAqLywKIAkJCQlCQzQzNjhFODBDMjI2RTMyMDA1RUZCNUYgLyogUmVjdC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRkQ0NUE5NTgxNzVENDE0QzAwQzIxRUM4IC8qIFJlY3RhbmdsZVNoYXBl
LmggaW4gSGVhZGVycyAqLywKQEAgLTI5OTcyLDggKzI5OTYzLDcgQEAKIAkJCQlDOURBREJDQjFC
MUQzQjk3MDAxRjE3RDggLyogSlNNZWRpYVNlc3Npb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MDc3QjY0MEYxQjhGNUQ2QjAwM0U5QUQ1IC8qIEpTTWVkaWFTZXNzaW9uQ3VzdG9tLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUNEOURFMTc0MTdBQUM3NEMwMEVBMzg2RCAvKiBKU01lZGlhU291cmNl
LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTA3QzU5QjcxMTdGNzlDN0MwMDBGQkNCQiAvKiBKU01l
ZGlhU291cmNlU3RhdGVzLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTA3QzU5QjZFMTdGNzk0RjYw
MDBGQkNCQiAvKiBKU01lZGlhU291cmNlU3RhdGVzQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCTA3QzU5QjZFMTdGNzk0RjYwMDBGQkNCQiAvKiBKU01lZGlhU3RyZWFtVHJhY2tDdXN0b20u
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDcyNzdFNEMxN0QwMThDQzAwMTU1MzREIC8qIEpTTWVk
aWFTdHJlYW0uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDcyNzdFNEUxN0QwMThDQzAwMTU1MzRE
IC8qIEpTTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlGREJENDgwQzE1OUJDNjg3MDA5M0VCNEYgLyogSlNNZWRpYVN0cmVhbUF1ZGlvU291cmNl
Tm9kZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMwNDg3LDcgKzMwNDc3LDcgQEAKIAkJCQlDRDNB
NDk1RTE3QTlEMDFCMDAyNzRFNDIgLyogTWVkaWFTb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQ0RDOEI1QTYxODA0NzRGNzAwMTZFNjg1IC8qIE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMu
bW0gaW4gU291cmNlcyAqLywKIAkJCQlDRDYxRkU2NzE3OTRBQURCMDA0MTAxRUIgLyogTWVkaWFT
b3VyY2VSZWdpc3RyeS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQkwN0M1OUI2ODE3Rjc4NEJBMDAw
RkJDQkIgLyogTWVkaWFTb3VyY2VTdGF0ZXMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMDdDNTlC
NjgxN0Y3ODRCQTAwMEZCQ0JCIC8qIE1lZGlhU291cmNlU2V0dGluZ3MuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMDc4RTA4RkYxN0QxNENFRTAwNDIwQUExIC8qIE1lZGlhU3RyZWFtLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTA3OEUwOTRCMTdEMTcwOTYwMDQyMEFBMSAvKiBNZWRpYVN0cmVhbUF1
ZGlvRGVzdGluYXRpb25Ob2RlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA3ODMyMjg0MTgwMTNF
RDgwMDk5OUUwQyAvKiBNZWRpYVN0cmVhbUF1ZGlvU291cmNlLmNwcCBpbiBTb3VyY2VzICovLApA
QCAtMzA3MTcsNyArMzA3MDcsNyBAQAogCQkJCTRBNEY2NTcwMUFBOTk3RjEwMEUzOENERCAvKiBS
ZWFsdGltZU1lZGlhU291cmNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTRBMEZGQUExMUFBRjVF
QTIwMDYyODAzQiAvKiBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTRBMEZGQUE1MUFBRjVFRjYwMDYyODAzQiAvKiBSZWFsdGltZU1lZGlhU291cmNlQ2Vu
dGVyTWFjLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTRBNEY2NTczMUFBOTk3RjEwMEUzOENERCAv
KiBSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTRBNEY2
NTczMUFBOTk3RjEwMEUzOENERCAvKiBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJRkQ0NUE5NUExNzVENDE3MTAwQzIxRUM4IC8qIFJlY3RhbmdsZVNo
YXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDQUI0MTgxMTNFMzU2RTgwMEQ4QUFGMyAvKiBS
ZWdpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODUwMzFCNEIwQTQ0RUZDNzAwRjk5MkUwIC8q
IFJlZ2lzdGVyZWRFdmVudExpc3RlbmVyLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZWRpYVNvdXJjZVN0YXRlc0N1c3RvbS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZWRpYVNvdXJjZVN0YXRlc0N1
c3RvbS5jcHAJKHJldmlzaW9uIDE5MjkzMCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTTWVkaWFTb3VyY2VTdGF0ZXNDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDkyICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
LSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5j
bHVkZSAiY29uZmlnLmgiCi0KLSNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotCi0jaW5jbHVkZSAi
SlNNZWRpYVNvdXJjZVN0YXRlcy5oIgotCi0jaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCi0KLXVz
aW5nIG5hbWVzcGFjZSBKU0M7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotSlNWYWx1ZSBKU01l
ZGlhU291cmNlU3RhdGVzOjp3aWR0aChFeGVjU3RhdGUmKSBjb25zdAotewotICAgIGlmICghd3Jh
cHBlZCgpLmhhc1ZpZGVvU291cmNlKCkpCi0gICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwot
Ci0gICAgcmV0dXJuIGpzTnVtYmVyKHdyYXBwZWQoKS53aWR0aCgpKTsKLX0KLQotSlNWYWx1ZSBK
U01lZGlhU291cmNlU3RhdGVzOjpoZWlnaHQoRXhlY1N0YXRlJikgY29uc3QKLXsKLSAgICBpZiAo
IXdyYXBwZWQoKS5oYXNWaWRlb1NvdXJjZSgpKQotICAgICAgICByZXR1cm4ganNVbmRlZmluZWQo
KTsKLSAgICAKLSAgICByZXR1cm4ganNOdW1iZXIod3JhcHBlZCgpLmhlaWdodCgpKTsKLX0KLQot
SlNWYWx1ZSBKU01lZGlhU291cmNlU3RhdGVzOjpmcmFtZVJhdGUoRXhlY1N0YXRlJikgY29uc3QK
LXsKLSAgICBpZiAoIXdyYXBwZWQoKS5oYXNWaWRlb1NvdXJjZSgpKQotICAgICAgICByZXR1cm4g
anNVbmRlZmluZWQoKTsKLSAgICAKLSAgICByZXR1cm4ganNOdW1iZXIod3JhcHBlZCgpLmZyYW1l
UmF0ZSgpKTsKLX0KLQotSlNWYWx1ZSBKU01lZGlhU291cmNlU3RhdGVzOjphc3BlY3RSYXRpbyhF
eGVjU3RhdGUmKSBjb25zdAotewotICAgIGlmICghd3JhcHBlZCgpLmhhc1ZpZGVvU291cmNlKCkp
Ci0gICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotICAgIAotICAgIHJldHVybiBqc051bWJl
cih3cmFwcGVkKCkuYXNwZWN0UmF0aW8oKSk7Ci19Ci0KLUpTVmFsdWUgSlNNZWRpYVNvdXJjZVN0
YXRlczo6ZmFjaW5nTW9kZShFeGVjU3RhdGUmIHN0YXRlKSBjb25zdAotewotICAgIGlmICghd3Jh
cHBlZCgpLmhhc1ZpZGVvU291cmNlKCkpCi0gICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwot
Ci0gICAgY29uc3QgQXRvbWljU3RyaW5nJiBtb2RlID0gd3JhcHBlZCgpLmZhY2luZ01vZGUoKTsK
LSAgICBpZiAobW9kZS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwot
ICAgIAotICAgIHJldHVybiBqc1N0cmluZ1dpdGhDYWNoZSgmc3RhdGUsIHdyYXBwZWQoKS5mYWNp
bmdNb2RlKCkpOwotfQotCi1KU1ZhbHVlIEpTTWVkaWFTb3VyY2VTdGF0ZXM6OnZvbHVtZShFeGVj
U3RhdGUmKSBjb25zdAotewotICAgIGlmICh3cmFwcGVkKCkuaGFzVmlkZW9Tb3VyY2UoKSkKLSAg
ICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0gICAgCi0gICAgcmV0dXJuIGpzTnVtYmVyKHdy
YXBwZWQoKS52b2x1bWUoKSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlm
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lZGlhU3RyZWFtVHJhY2tDdXN0
b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVkaWFT
dHJlYW1UcmFja0N1c3RvbS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU01lZGlhU3RyZWFtVHJhY2tDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsODAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNNZWRpYVN0cmVhbVRyYWNrLmgiCisK
KyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgor
I2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgorI2luY2x1ZGUgIk1lZGlhU291cmNlU2V0dGluZ3Mu
aCIKKyNpbmNsdWRlIDxydW50aW1lL0pTT2JqZWN0Lmg+CisjaW5jbHVkZSA8cnVudGltZS9PYmpl
Y3RDb25zdHJ1Y3Rvci5oPgorCit1c2luZyBuYW1lc3BhY2UgSlNDOworCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK0pTQzo6SlNWYWx1ZSBKU01lZGlhU3RyZWFtVHJhY2s6OmdldFNldHRpbmdzKEV4
ZWNTdGF0ZSYgc3RhdGUpCit7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS50aGlzVmFs
dWUoKTsKKyAgICBKU01lZGlhU3RyZWFtVHJhY2sqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0
PEpTTWVkaWFTdHJlYW1UcmFjayo+KHRoaXNWYWx1ZSk7CisgICAgaWYgKFVOTElLRUxZKCFjYXN0
ZWRUaGlzKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmRlY29kZSh0aHJvd1RoaXNUeXBlRXJy
b3Ioc3RhdGUsICJNZWRpYVN0cmVhbVRyYWNrIiwgImdldFNldHRpbmdzIikpOworCisgICAgSlNP
YmplY3QqIG9iamVjdCA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KCZzdGF0ZSk7CisgICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKKyAgICBSZWZQdHI8TWVkaWFTb3VyY2VTZXR0
aW5ncz4gc2V0dGluZ3MgPSBXVEY6OmdldFB0cihpbXBsLmdldFNldHRpbmdzKCkpOworCisgICAg
aWYgKHNldHRpbmdzLT5zdXBwb3J0c1dpZHRoKCkpCisgICAgICAgIG9iamVjdC0+cHV0RGlyZWN0
KHN0YXRlLnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnN0YXRlLCAid2lkdGgiKSwganNO
dW1iZXIoc2V0dGluZ3MtPndpZHRoKCkpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOworICAgIGlm
IChzZXR0aW5ncy0+c3VwcG9ydHNIZWlnaHQoKSkKKyAgICAgICAgb2JqZWN0LT5wdXREaXJlY3Qo
c3RhdGUudm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmc3RhdGUsICJoZWlnaHQiKSwganNO
dW1iZXIoc2V0dGluZ3MtPmhlaWdodCgpKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKKyAgICBp
ZiAoc2V0dGluZ3MtPnN1cHBvcnRzQXNwZWN0UmF0aW8oKSkKKyAgICAgICAgb2JqZWN0LT5wdXRE
aXJlY3Qoc3RhdGUudm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmc3RhdGUsICJhc3BlY3RS
YXRpbyIpLCBqc0RvdWJsZU51bWJlcihzZXR0aW5ncy0+YXNwZWN0UmF0aW8oKSksIERvbnREZWxl
dGUgfCBSZWFkT25seSk7CisgICAgaWYgKHNldHRpbmdzLT5zdXBwb3J0c0ZyYW1lUmF0ZSgpKQor
ICAgICAgICBvYmplY3QtPnB1dERpcmVjdChzdGF0ZS52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKCZzdGF0ZSwgImZyYW1lUmF0ZSIpLCBqc0RvdWJsZU51bWJlcihzZXR0aW5ncy0+ZnJhbWVS
YXRlKCkpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOworICAgIGlmIChzZXR0aW5ncy0+c3VwcG9y
dHNGYWNpbmdNb2RlKCkpCisgICAgICAgIG9iamVjdC0+cHV0RGlyZWN0KHN0YXRlLnZtKCksIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcoJnN0YXRlLCAiZmFjaW5nTW9kZSIpLCBqc1N0cmluZ1dpdGhD
YWNoZSgmc3RhdGUsIHNldHRpbmdzLT5mYWNpbmdNb2RlKCkpLCBEb250RGVsZXRlIHwgUmVhZE9u
bHkpOworICAgIGlmIChzZXR0aW5ncy0+c3VwcG9ydHNWb2x1bWUoKSkKKyAgICAgICAgb2JqZWN0
LT5wdXREaXJlY3Qoc3RhdGUudm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmc3RhdGUsICJ2
b2x1bWUiKSwganNEb3VibGVOdW1iZXIoc2V0dGluZ3MtPnZvbHVtZSgpKSwgRG9udERlbGV0ZSB8
IFJlYWRPbmx5KTsKKyAgICBpZiAoc2V0dGluZ3MtPnN1cHBvcnRzU2FtcGxlUmF0ZSgpKQorICAg
ICAgICBvYmplY3QtPnB1dERpcmVjdChzdGF0ZS52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KCZzdGF0ZSwgInNhbXBsZVJhdGUiKSwganNOdW1iZXIoc2V0dGluZ3MtPnNhbXBsZVJhdGUoKSks
IERvbnREZWxldGUgfCBSZWFkT25seSk7CisgICAgaWYgKHNldHRpbmdzLT5zdXBwb3J0c1NhbXBs
ZVNpemUoKSkKKyAgICAgICAgb2JqZWN0LT5wdXREaXJlY3Qoc3RhdGUudm0oKSwgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZygmc3RhdGUsICJzYW1wbGVTaXplIiksIGpzTnVtYmVyKHNldHRpbmdzLT5z
YW1wbGVTaXplKCkpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOworICAgIGlmIChzZXR0aW5ncy0+
c3VwcG9ydHNFY2hvQ2FuY2VsbGF0aW9uKCkpCisgICAgICAgIG9iamVjdC0+cHV0RGlyZWN0KHN0
YXRlLnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnN0YXRlLCAiZWNob0NhbmNlbGxhdGlv
biIpLCBqc0Jvb2xlYW4oc2V0dGluZ3MtPmVjaG9DYW5jZWxsYXRpb24oKSksIERvbnREZWxldGUg
fCBSZWFkT25seSk7CisgICAgaWYgKHNldHRpbmdzLT5zdXBwb3J0c0RldmljZUlkKCkpCisgICAg
ICAgIG9iamVjdC0+cHV0RGlyZWN0KHN0YXRlLnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJpbmco
JnN0YXRlLCAiZGV2aWNlSWQiKSwganNTdHJpbmdXaXRoQ2FjaGUoJnN0YXRlLCBzZXR0aW5ncy0+
ZGV2aWNlSWQoKSksIERvbnREZWxldGUgfCBSZWFkT25seSk7CisgICAgaWYgKHNldHRpbmdzLT5z
dXBwb3J0c0dyb3VwSWQoKSkKKyAgICAgICAgb2JqZWN0LT5wdXREaXJlY3Qoc3RhdGUudm0oKSwg
SWRlbnRpZmllcjo6ZnJvbVN0cmluZygmc3RhdGUsICJncm91cElkIiksIGpzU3RyaW5nV2l0aENh
Y2hlKCZzdGF0ZSwgc2V0dGluZ3MtPmdyb3VwSWQoKSksIERvbnREZWxldGUgfCBSZWFkT25seSk7
CisgICAgCisgICAgcmV0dXJuIG9iamVjdDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlh
U3RyZWFtUHJpdmF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Qcml2YXRlLmNwcAkocmV2aXNpb24gMTkyOTMwKQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Qcml2YXRlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjA0LDkgKzIwNCw5IEBAIEZsb2F0U2l6ZSBNZWRpYVN0cmVh
bVByaXZhdGU6OmludHJpbnNpY1MKICAgICBGbG9hdFNpemUgc2l6ZTsKIAogICAgIGlmIChtX2Fj
dGl2ZVZpZGVvVHJhY2spIHsKLSAgICAgICAgY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRl
cyYgc3RhdGVzID0gbV9hY3RpdmVWaWRlb1RyYWNrLT5zb3VyY2UoKS0+c3RhdGVzKCk7Ci0gICAg
ICAgIHNpemUuc2V0V2lkdGgoc3RhdGVzLndpZHRoKCkpOwotICAgICAgICBzaXplLnNldEhlaWdo
dChzdGF0ZXMuaGVpZ2h0KCkpOworICAgICAgICBjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU2V0
dGluZ3MmIHNldHRpbmcgPSBtX2FjdGl2ZVZpZGVvVHJhY2stPnNldHRpbmdzKCk7CisgICAgICAg
IHNpemUuc2V0V2lkdGgoc2V0dGluZy53aWR0aCgpKTsKKyAgICAgICAgc2l6ZS5zZXRIZWlnaHQo
c2V0dGluZy5oZWlnaHQoKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIHNpemU7CkBAIC0yNjgsNyAr
MjY4LDcgQEAgdm9pZCBNZWRpYVN0cmVhbVByaXZhdGU6OnRyYWNrTXV0ZWRDaGFuZwogICAgIH0p
OwogfQogCi12b2lkIE1lZGlhU3RyZWFtUHJpdmF0ZTo6dHJhY2tTdGF0ZXNDaGFuZ2VkKE1lZGlh
U3RyZWFtVHJhY2tQcml2YXRlJikKK3ZvaWQgTWVkaWFTdHJlYW1Qcml2YXRlOjp0cmFja1NldHRp
bmdzQ2hhbmdlZChNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYpCiB7CiAgICAgY2hhcmFjdGVyaXN0
aWNzQ2hhbmdlZCgpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vTWVkaWFTdHJlYW1Qcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Qcml2YXRlLmgJKHJldmlzaW9uIDE5MjkzMCkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtUHJpdmF0
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQsNyArMTA0LDcgQEAgcHJpdmF0ZToKICAgICAvLyBN
ZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6T2JzZXJ2ZXIKICAgICB2b2lkIHRyYWNrRW5kZWQoTWVk
aWFTdHJlYW1UcmFja1ByaXZhdGUmKSBvdmVycmlkZTsKICAgICB2b2lkIHRyYWNrTXV0ZWRDaGFu
Z2VkKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB0cmFja1N0
YXRlc0NoYW5nZWQoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmKSBvdmVycmlkZTsKKyAgICB2b2lk
IHRyYWNrU2V0dGluZ3NDaGFuZ2VkKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJikgb3ZlcnJpZGU7
CiAgICAgdm9pZCB0cmFja0VuYWJsZWRDaGFuZ2VkKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJikg
b3ZlcnJpZGU7CiAKICAgICB2b2lkIGNoYXJhY3RlcmlzdGljc0NoYW5nZWQoKTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tQcml2YXRl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9N
ZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZS5jcHAJKHJldmlzaW9uIDE5MjkzMCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tQcml2YXRlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzIsOCArMzIsNyBAQAogI2luY2x1ZGUgIkF1ZGlvU291cmNlUHJv
dmlkZXIuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJJbnRSZWN0
LmgiCi0jaW5jbHVkZSAiTWVkaWFTb3VyY2VTdGF0ZXMuaCIKLSNpbmNsdWRlICJNZWRpYVN0cmVh
bUNhcGFiaWxpdGllcy5oIgorI2luY2x1ZGUgIk1lZGlhU291cmNlU2V0dGluZ3MuaCIKICNpbmNs
dWRlICJVVUlELmgiCiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKQEAgLTE0OSw5
ICsxNDgsOSBAQCBSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gTWVkaWFTdHJlYW1UcmFjCiAgICAg
cmV0dXJuIG1fY29uc3RyYWludHM7CiB9CiAKLWNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0
ZXMmIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjpzdGF0ZXMoKSBjb25zdAorY29uc3QgUmVhbHRp
bWVNZWRpYVNvdXJjZVNldHRpbmdzJiBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6c2V0dGluZ3Mo
KSBjb25zdAogewotICAgIHJldHVybiBtX3NvdXJjZS0+c3RhdGVzKCk7CisgICAgcmV0dXJuIG1f
c291cmNlLT5zZXR0aW5ncygpOwogfQogCiBSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFi
aWxpdGllcz4gTWVkaWFTdHJlYW1UcmFja1ByaXZhdGU6OmNhcGFiaWxpdGllcygpIGNvbnN0CkBA
IC0yMDIsMTAgKzIwMSwxMCBAQCB2b2lkIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjpzb3VyY2VN
dXRlCiAgICAgICAgIG9ic2VydmVyLT50cmFja011dGVkQ2hhbmdlZCgqdGhpcyk7CiB9CiAKLXZv
aWQgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGU6OnNvdXJjZVN0YXRlc0NoYW5nZWQoKQordm9pZCBN
ZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6c291cmNlU2V0dGluZ3NDaGFuZ2VkKCkKIHsKICAgICBm
b3IgKGF1dG8mIG9ic2VydmVyIDogbV9vYnNlcnZlcnMpCi0gICAgICAgIG9ic2VydmVyLT50cmFj
a1N0YXRlc0NoYW5nZWQoKnRoaXMpOworICAgICAgICBvYnNlcnZlci0+dHJhY2tTZXR0aW5nc0No
YW5nZWQoKnRoaXMpOwogfQogCiBib29sIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjpwcmV2ZW50
U291cmNlRnJvbVN0b3BwaW5nKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL01lZGlhU3RyZWFtVHJhY2tQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUuaAkocmV2
aXNpb24gMTkyOTMwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW1UcmFja1ByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEF1ZGlvU291cmNlUHJvdmlkZXI7CiBjbGFzcyBH
cmFwaGljc0NvbnRleHQ7Ci1jbGFzcyBNZWRpYVNvdXJjZVN0YXRlczsKK2NsYXNzIE1lZGlhU291
cmNlU2V0dGluZ3M7CiBjbGFzcyBSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzOwogCiBj
bGFzcyBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhU3Ry
ZWFtVHJhY2tQcml2YXRlPiwgcHVibGljIFJlYWx0aW1lTWVkaWFTb3VyY2U6Ok9ic2VydmVyIHsK
QEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogCiAgICAgICAgIHZpcnR1YWwgdm9pZCB0cmFja0Vu
ZGVkKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJikgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQg
dHJhY2tNdXRlZENoYW5nZWQoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmKSA9IDA7Ci0gICAgICAg
IHZpcnR1YWwgdm9pZCB0cmFja1N0YXRlc0NoYW5nZWQoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUm
KSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCB0cmFja1NldHRpbmdzQ2hhbmdlZChNZWRpYVN0
cmVhbVRyYWNrUHJpdmF0ZSYpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIHRyYWNrRW5hYmxl
ZENoYW5nZWQoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmKSA9IDA7CiAgICAgfTsKICAgICAKQEAg
LTg1LDcgKzg1LDcgQEAgcHVibGljOgogICAgIHZvaWQgYWRkT2JzZXJ2ZXIoT2JzZXJ2ZXImKTsK
ICAgICB2b2lkIHJlbW92ZU9ic2VydmVyKE9ic2VydmVyJik7CiAKLSAgICBjb25zdCBSZWFsdGlt
ZU1lZGlhU291cmNlU3RhdGVzJiBzdGF0ZXMoKSBjb25zdDsKKyAgICBjb25zdCBSZWFsdGltZU1l
ZGlhU291cmNlU2V0dGluZ3MmIHNldHRpbmdzKCkgY29uc3Q7CiAgICAgUmVmUHRyPFJlYWx0aW1l
TWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM+IGNhcGFiaWxpdGllcygpIGNvbnN0OwogCiAgICAgUmVm
UHRyPE1lZGlhQ29uc3RyYWludHM+IGNvbnN0cmFpbnRzKCkgY29uc3Q7CkBAIC0xMDIsNyArMTAy
LDcgQEAgcHJpdmF0ZToKICAgICAvLyBSZWFsdGltZU1lZGlhU291cmNlT2JzZXJ2ZXIKICAgICB2
b2lkIHNvdXJjZVN0b3BwZWQoKSBvdmVycmlkZSBmaW5hbDsKICAgICB2b2lkIHNvdXJjZU11dGVk
Q2hhbmdlZCgpIG92ZXJyaWRlIGZpbmFsOwotICAgIHZvaWQgc291cmNlU3RhdGVzQ2hhbmdlZCgp
IG92ZXJyaWRlIGZpbmFsOworICAgIHZvaWQgc291cmNlU2V0dGluZ3NDaGFuZ2VkKCkgb3ZlcnJp
ZGUgZmluYWw7CiAgICAgYm9vbCBwcmV2ZW50U291cmNlRnJvbVN0b3BwaW5nKCkgb3ZlcnJpZGUg
ZmluYWw7CiAKICAgICBWZWN0b3I8T2JzZXJ2ZXIqPiBtX29ic2VydmVyczsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1l
TWVkaWFTb3VyY2UuY3BwCShyZXZpc2lvbiAxOTI5MzApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtOTUsMTAgKzk1LDEwIEBAIHZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZTo6c2V0TXV0ZWQoYm9v
bCAKICAgICAgICAgb2JzZXJ2ZXItPnNvdXJjZU11dGVkQ2hhbmdlZCgpOwogfQogCi12b2lkIFJl
YWx0aW1lTWVkaWFTb3VyY2U6OnN0YXRlc0RpZENoYW5nZWQoKQordm9pZCBSZWFsdGltZU1lZGlh
U291cmNlOjpzZXR0aW5nc0RpZENoYW5nZWQoKQogewogICAgIGZvciAoYXV0byYgb2JzZXJ2ZXIg
OiBtX29ic2VydmVycykKLSAgICAgICAgb2JzZXJ2ZXItPnNvdXJjZVN0YXRlc0NoYW5nZWQoKTsK
KyAgICAgICAgb2JzZXJ2ZXItPnNvdXJjZVNldHRpbmdzQ2hhbmdlZCgpOwogfQogCiBib29sIFJl
YWx0aW1lTWVkaWFTb3VyY2U6OnJlYWRvbmx5KCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNl
LmgJKHJldmlzaW9uIDE5MjkzMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuaAkod29ya2luZyBjb3B5KQpAQCAtNTEsNyArNTEsNyBA
QCBjbGFzcyBGbG9hdFJlY3Q7CiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CiBjbGFzcyBNZWRpYUNv
bnN0cmFpbnRzOwogY2xhc3MgTWVkaWFTdHJlYW1Qcml2YXRlOwotY2xhc3MgUmVhbHRpbWVNZWRp
YVNvdXJjZVN0YXRlczsKK2NsYXNzIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczsKIAogY2xh
c3MgUmVhbHRpbWVNZWRpYVNvdXJjZSA6IHB1YmxpYyBSZWZDb3VudGVkPFJlYWx0aW1lTWVkaWFT
b3VyY2U+IHsKIHB1YmxpYzoKQEAgLTYyLDcgKzYyLDcgQEAgcHVibGljOgogICAgICAgICAvLyBT
b3VyY2Ugc3RhdGUgY2hhbmdlcy4KICAgICAgICAgdmlydHVhbCB2b2lkIHNvdXJjZVN0b3BwZWQo
KSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBzb3VyY2VNdXRlZENoYW5nZWQoKSA9IDA7Ci0g
ICAgICAgIHZpcnR1YWwgdm9pZCBzb3VyY2VTdGF0ZXNDaGFuZ2VkKCkgPSAwOworICAgICAgICB2
aXJ0dWFsIHZvaWQgc291cmNlU2V0dGluZ3NDaGFuZ2VkKCkgPSAwOwogCiAgICAgICAgIC8vIE9i
c2VydmVyIHN0YXRlIHF1ZXJpZXMuCiAgICAgICAgIHZpcnR1YWwgYm9vbCBwcmV2ZW50U291cmNl
RnJvbVN0b3BwaW5nKCkgPSAwOwpAQCAtODUsOCArODUsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIHNldEZpdG5lc3NTY29yZShjb25zdCB1bnNpZ25lZCBmaXRuZXNzU2NvcmUpIHsgbV9m
aXRuZXNzU2NvcmUgPSBmaXRuZXNzU2NvcmU7IH0KIAogICAgIHZpcnR1YWwgUmVmUHRyPFJlYWx0
aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM+IGNhcGFiaWxpdGllcygpID0gMDsKLSAgICB2aXJ0
dWFsIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXMmIHN0YXRlcygpID0gMDsKLSAgICB2
b2lkIHN0YXRlc0RpZENoYW5nZWQoKTsKKyAgICB2aXJ0dWFsIGNvbnN0IFJlYWx0aW1lTWVkaWFT
b3VyY2VTZXR0aW5ncyYgc2V0dGluZ3MoKSA9IDA7CisgICAgdm9pZCBzZXR0aW5nc0RpZENoYW5n
ZWQoKTsKICAgICAKICAgICBib29sIHN0b3BwZWQoKSBjb25zdCB7IHJldHVybiBtX3N0b3BwZWQ7
IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVN
ZWRpYVNvdXJjZUNhcGFiaWxpdGllcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMuaAkocmV2
aXNpb24gMTkyOTMwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVh
bHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsy
OCw3IEBACiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogCi0jaW5jbHVkZSAiUmVhbHRpbWVN
ZWRpYVNvdXJjZVN0YXRlcy5oIgorI2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5n
cy5oIgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgpAQCAtOTAsMjAgKzkwLDExIEBA
IHB1YmxpYzoKIAogICAgIH5SZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzKCkgeyB9CiAK
LSAgICBjb25zdCBWZWN0b3I8UmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlczo6U291cmNlVHlwZT4m
IHNvdXJjZVR5cGVzKCkgeyByZXR1cm4gbV9zb3VyY2VUeXBlOyB9Ci0gICAgdm9pZCBzZXRTb3Vy
Y2VUeXBlKFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXM6OlNvdXJjZVR5cGUgc291cmNlVHlwZSkg
eyBtX3NvdXJjZVR5cGUucmVzaXplVG9GaXQoMSk7IGFkZFNvdXJjZVR5cGUoc291cmNlVHlwZSk7
IH0KLSAgICB2b2lkIGFkZFNvdXJjZVR5cGUoUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlczo6U291
cmNlVHlwZSBzb3VyY2VUeXBlKQotICAgIHsKLSAgICAgICAgaWYgKHNvdXJjZVR5cGUgPT0gUmVh
bHRpbWVNZWRpYVNvdXJjZVN0YXRlczo6Q2FtZXJhKQotICAgICAgICAgICAgbV92aWRlb1NvdXJj
ZSA9IHRydWU7Ci0gICAgICAgIG1fc291cmNlVHlwZS5hcHBlbmQoc291cmNlVHlwZSk7Ci0gICAg
fQotCiAgICAgY29uc3QgVmVjdG9yPEF0b21pY1N0cmluZz4mIHNvdXJjZUlkKCkgeyByZXR1cm4g
bV9zb3VyY2VJZDsgfQogICAgIHZvaWQgc2V0U291cmNlSWQoY29uc3QgQXRvbWljU3RyaW5nJiBp
ZCkgIHsgbV9zb3VyY2VJZC5yZXNlcnZlQ2FwYWNpdHkoMSk7IG1fc291cmNlSWQuaW5zZXJ0KDAs
IGlkKTsgfQogCi0gICAgY29uc3QgVmVjdG9yPFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXM6OlZp
ZGVvRmFjaW5nTW9kZT4mIGZhY2luZ01vZGVzKCkgeyByZXR1cm4gbV9mYWNpbmdNb2RlOyB9Ci0g
ICAgdm9pZCBhZGRGYWNpbmdNb2RlKFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXM6OlZpZGVvRmFj
aW5nTW9kZSBtb2RlKSB7IG1fZmFjaW5nTW9kZS5hcHBlbmQobW9kZSk7IH0KKyAgICBjb25zdCBW
ZWN0b3I8UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpWaWRlb0ZhY2luZ01vZGU+JiBmYWNp
bmdNb2RlcygpIHsgcmV0dXJuIG1fZmFjaW5nTW9kZTsgfQorICAgIHZvaWQgYWRkRmFjaW5nTW9k
ZShSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OlZpZGVvRmFjaW5nTW9kZSBtb2RlKSB7IG1f
ZmFjaW5nTW9kZS5hcHBlbmQobW9kZSk7IH0KIAogICAgIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3Vy
Y2VDYXBhYmlsaXR5UmFuZ2UmIHdpZHRoKCkgeyByZXR1cm4gbV93aWR0aDsgfQogICAgIHZvaWQg
c2V0V2lkdGhSYW5nZShjb25zdCBSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0eVJhbmdlJiB3
aWR0aCkgeyBtX3dpZHRoID0gd2lkdGg7IH0KQEAgLTEzMCw4ICsxMjEsNyBAQCBwcml2YXRlOgog
ICAgIH0KIAogICAgIFZlY3RvcjxBdG9taWNTdHJpbmc+IG1fc291cmNlSWQ7Ci0gICAgVmVjdG9y
PFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXM6OlNvdXJjZVR5cGU+IG1fc291cmNlVHlwZTsKLSAg
ICBWZWN0b3I8UmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlczo6VmlkZW9GYWNpbmdNb2RlPiBtX2Zh
Y2luZ01vZGU7CisgICAgVmVjdG9yPFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6VmlkZW9G
YWNpbmdNb2RlPiBtX2ZhY2luZ01vZGU7CiAKICAgICBSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJp
bGl0eVJhbmdlIG1fd2lkdGg7CiAgICAgUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdHlSYW5n
ZSBtX2hlaWdodDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1Jl
YWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmgJKHJldmlzaW9u
IDE5MjkzMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1l
TWVkaWFTb3VyY2VDZW50ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDQsNyArNDQsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBNZWRpYUNvbnN0cmFpbnRzOwogY2xhc3MgTWVkaWFTdHJl
YW1DcmVhdGlvbkNsaWVudDsKIGNsYXNzIE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVzdENs
aWVudDsKLWNsYXNzIFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXM7CitjbGFzcyBSZWFsdGltZU1l
ZGlhU291cmNlU2V0dGluZ3M7CiBjbGFzcyBSZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29u
c3RyYWludHM7CiBjbGFzcyBUcmFja1NvdXJjZUluZm87CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVN
ZWRpYVNvdXJjZVNldHRpbmdzLmNwcAkocmV2aXNpb24gMTkyOTMwKQkoZnJvbSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlU3RhdGVzLmNwcDox
OTI5MzApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1l
ZGlhU291cmNlU2V0dGluZ3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsODUgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiAgICBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisg
KiAgICBkaXN0cmlidXRpb24uCisgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycworICogICAgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzCisgKiAgICBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAor
ICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisjaW5j
bHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlcy5oIgorCisjaW5jbHVkZSA8d3RmL05ldmVy
RGVzdHJveWVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY29uc3QgQXRvbWljU3RyaW5n
JiBSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzOjpmYWNpbmdNb2RlKFJlYWx0aW1lTWVkaWFTb3Vy
Y2VTdGF0ZXM6OlZpZGVvRmFjaW5nTW9kZSBtb2RlKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxBdG9taWNTdHJpbmc+IHVzZXJGYWNpbmcoInVzZXIiLCBBdG9taWNTdHJpbmc6OkNvbnN0
cnVjdEZyb21MaXRlcmFsKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5n
PiBlbnZpcm9ubWVudEZhY2luZygiZW52aXJvbm1lbnQiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVj
dEZyb21MaXRlcmFsKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBs
ZWZ0RmFjaW5nKCJsZWZ0IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gcmlnaHRGYWNpbmcoInJpZ2h0
IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgCisgICAgc3dpdGNo
IChtb2RlKSB7CisgICAgY2FzZSBSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzOjpVc2VyOgorICAg
ICAgICByZXR1cm4gdXNlckZhY2luZzsKKyAgICBjYXNlIFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0
ZXM6OkVudmlyb25tZW50OgorICAgICAgICByZXR1cm4gZW52aXJvbm1lbnRGYWNpbmc7CisgICAg
Y2FzZSBSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzOjpMZWZ0OgorICAgICAgICByZXR1cm4gbGVm
dEZhY2luZzsKKyAgICBjYXNlIFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXM6OlJpZ2h0OgorICAg
ICAgICByZXR1cm4gcmlnaHRGYWNpbmc7CisgICAgY2FzZSBSZWFsdGltZU1lZGlhU291cmNlU3Rh
dGVzOjpVbmtub3duOgorICAgICAgICByZXR1cm4gZW1wdHlBdG9tOworICAgIH0KKyAgICAKKyAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZW1wdHlBdG9tOworfQorCitjb25z
dCBBdG9taWNTdHJpbmcmIFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXM6OnNvdXJjZVR5cGUoUmVh
bHRpbWVNZWRpYVNvdXJjZVN0YXRlczo6U291cmNlVHlwZSBzb3VyY2VUeXBlKQoreworICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IG5vbmUoIm5vbmUiLCBBdG9taWNTdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRv
bWljU3RyaW5nPiBjYW1lcmEoImNhbWVyYSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IG1pY3JvcGhv
bmUoIm1pY3JvcGhvbmUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAg
ICAKKyAgICBzd2l0Y2ggKHNvdXJjZVR5cGUpIHsKKyAgICBjYXNlIFJlYWx0aW1lTWVkaWFTb3Vy
Y2VTdGF0ZXM6Ok5vbmU6CisgICAgICAgIHJldHVybiBub25lOworICAgIGNhc2UgUmVhbHRpbWVN
ZWRpYVNvdXJjZVN0YXRlczo6Q2FtZXJhOgorICAgICAgICByZXR1cm4gY2FtZXJhOworICAgIGNh
c2UgUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlczo6TWljcm9waG9uZToKKyAgICAgICAgcmV0dXJu
IG1pY3JvcGhvbmU7CisgICAgfQorICAgIAorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
IHJldHVybiBlbXB0eUF0b207Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
IC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VT
ZXR0aW5ncy5jcHAJKHdvcmtpbmcgY29weSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE1IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MzEsMTMgKzMxLDEzIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKICNpZiBFTkFCTEUoTUVESUFf
U1RSRUFNKQotI2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXMuaCIKKyNpbmNsdWRl
ICJSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MuaCIKIAogI2luY2x1ZGUgPHd0Zi9OZXZlckRl
c3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNvbnN0IEF0b21pY1N0cmluZyYg
UmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlczo6ZmFjaW5nTW9kZShSZWFsdGltZU1lZGlhU291cmNl
U3RhdGVzOjpWaWRlb0ZhY2luZ01vZGUgbW9kZSkKK2NvbnN0IEF0b21pY1N0cmluZyYgUmVhbHRp
bWVNZWRpYVNvdXJjZVNldHRpbmdzOjpmYWNpbmdNb2RlKFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0
aW5nczo6VmlkZW9GYWNpbmdNb2RlIG1vZGUpCiB7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PEF0b21pY1N0cmluZz4gdXNlckZhY2luZygidXNlciIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0
RnJvbUxpdGVyYWwpOwogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IGVu
dmlyb25tZW50RmFjaW5nKCJlbnZpcm9ubWVudCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJv
bUxpdGVyYWwpOwpAQCAtNDUsMTUgKzQ1LDE1IEBAIGNvbnN0IEF0b21pY1N0cmluZyYgUmVhbHRp
bWVNZWRpYVNvdXJjZVMKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBy
aWdodEZhY2luZygicmlnaHQiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsK
ICAgICAKICAgICBzd2l0Y2ggKG1vZGUpIHsKLSAgICBjYXNlIFJlYWx0aW1lTWVkaWFTb3VyY2VT
dGF0ZXM6OlVzZXI6CisgICAgY2FzZSBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OlVzZXI6
CiAgICAgICAgIHJldHVybiB1c2VyRmFjaW5nOwotICAgIGNhc2UgUmVhbHRpbWVNZWRpYVNvdXJj
ZVN0YXRlczo6RW52aXJvbm1lbnQ6CisgICAgY2FzZSBSZWFsdGltZU1lZGlhU291cmNlU2V0dGlu
Z3M6OkVudmlyb25tZW50OgogICAgICAgICByZXR1cm4gZW52aXJvbm1lbnRGYWNpbmc7Ci0gICAg
Y2FzZSBSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzOjpMZWZ0OgorICAgIGNhc2UgUmVhbHRpbWVN
ZWRpYVNvdXJjZVNldHRpbmdzOjpMZWZ0OgogICAgICAgICByZXR1cm4gbGVmdEZhY2luZzsKLSAg
ICBjYXNlIFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXM6OlJpZ2h0OgorICAgIGNhc2UgUmVhbHRp
bWVNZWRpYVNvdXJjZVNldHRpbmdzOjpSaWdodDoKICAgICAgICAgcmV0dXJuIHJpZ2h0RmFjaW5n
OwotICAgIGNhc2UgUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlczo6VW5rbm93bjoKKyAgICBjYXNl
IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6VW5rbm93bjoKICAgICAgICAgcmV0dXJuIGVt
cHR5QXRvbTsKICAgICB9CiAgICAgCkBAIC02MSwyNSArNjEsNiBAQCBjb25zdCBBdG9taWNTdHJp
bmcmIFJlYWx0aW1lTWVkaWFTb3VyY2VTCiAgICAgcmV0dXJuIGVtcHR5QXRvbTsKIH0KIAotY29u
c3QgQXRvbWljU3RyaW5nJiBSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzOjpzb3VyY2VUeXBlKFJl
YWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXM6OlNvdXJjZVR5cGUgc291cmNlVHlwZSkKLXsKLSAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBub25lKCJub25lIiwgQXRvbWljU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0
b21pY1N0cmluZz4gY2FtZXJhKCJjYW1lcmEiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21M
aXRlcmFsKTsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBtaWNyb3Bo
b25lKCJtaWNyb3Bob25lIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0g
ICAgCi0gICAgc3dpdGNoIChzb3VyY2VUeXBlKSB7Ci0gICAgY2FzZSBSZWFsdGltZU1lZGlhU291
cmNlU3RhdGVzOjpOb25lOgotICAgICAgICByZXR1cm4gbm9uZTsKLSAgICBjYXNlIFJlYWx0aW1l
TWVkaWFTb3VyY2VTdGF0ZXM6OkNhbWVyYToKLSAgICAgICAgcmV0dXJuIGNhbWVyYTsKLSAgICBj
YXNlIFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXM6Ok1pY3JvcGhvbmU6Ci0gICAgICAgIHJldHVy
biBtaWNyb3Bob25lOwotICAgIH0KLSAgICAKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAg
ICByZXR1cm4gZW1wdHlBdG9tOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRp
ZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZVNl
dHRpbmdzLmgJKHJldmlzaW9uIDE5MjkzMCkJKGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlcy5oOjE5MjkzMCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5n
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsOTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0
ZXNfaAorI2RlZmluZSBSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzX2gKKworI2lmIEVOQUJMRShN
RURJQV9TVFJFQU0pCisKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitjbGFzcyBSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzIHsKK3B1Ymxp
YzoKKyAgICBlbnVtIFNvdXJjZVR5cGUgeyBOb25lLCBDYW1lcmEsIE1pY3JvcGhvbmUgfTsKKyAg
ICBlbnVtIFZpZGVvRmFjaW5nTW9kZSB7IFVua25vd24sIFVzZXIsIEVudmlyb25tZW50LCBMZWZ0
LCBSaWdodCB9OworCisgICAgUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlcygpCisgICAgICAgIDog
bV9zb3VyY2VUeXBlKE5vbmUpCisgICAgICAgICwgbV9mYWNpbmdNb2RlKFVua25vd24pCisgICAg
ICAgICwgbV93aWR0aCgwKQorICAgICAgICAsIG1faGVpZ2h0KDApCisgICAgICAgICwgbV9mcmFt
ZVJhdGUoMCkKKyAgICAgICAgLCBtX2FzcGVjdFJhdGlvKDApCisgICAgICAgICwgbV92b2x1bWUo
MCkKKyAgICB7CisgICAgfQorCisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgc291cmNl
VHlwZShSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzOjpTb3VyY2VUeXBlKTsKKyAgICBzdGF0aWMg
Y29uc3QgQXRvbWljU3RyaW5nJiBmYWNpbmdNb2RlKFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXM6
OlZpZGVvRmFjaW5nTW9kZSk7CisKKyAgICBTb3VyY2VUeXBlIHNvdXJjZVR5cGUoKSBjb25zdCB7
IHJldHVybiBtX3NvdXJjZVR5cGU7IH0KKyAgICB2b2lkIHNldFNvdXJjZVR5cGUoU291cmNlVHlw
ZSB0eXBlKSB7IG1fc291cmNlVHlwZSA9IHR5cGU7IH0KKworICAgIGNvbnN0IEF0b21pY1N0cmlu
ZyYgc291cmNlSWQoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZUlkOyB9CisgICAgdm9pZCBzZXRT
b3VyY2VJZChjb25zdCBBdG9taWNTdHJpbmcmIHNvdXJjZUlkKSB7IG1fc291cmNlSWQgPSBzb3Vy
Y2VJZDsgfQorCisgICAgVmlkZW9GYWNpbmdNb2RlIGZhY2luZ01vZGUoKSBjb25zdCB7IHJldHVy
biBtX2ZhY2luZ01vZGU7IH0KKyAgICB2b2lkIHNldEZhY2luZ01vZGUoVmlkZW9GYWNpbmdNb2Rl
IGZhY2luZ01vZGUpIHsgbV9mYWNpbmdNb2RlID0gZmFjaW5nTW9kZTsgfQorICAgIAorICAgIHVu
c2lnbmVkIGxvbmcgd2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3dpZHRoOyB9CisgICAgdm9pZCBz
ZXRXaWR0aCh1bnNpZ25lZCBsb25nIHdpZHRoKSB7IG1fd2lkdGggPSB3aWR0aDsgfQorICAgIAor
ICAgIHVuc2lnbmVkIGxvbmcgaGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9oZWlnaHQ7IH0KKyAg
ICB2b2lkIHNldEhlaWdodCh1bnNpZ25lZCBsb25nIGhlaWdodCkgeyBtX2hlaWdodCA9IGhlaWdo
dDsgfQorICAgIAorICAgIGZsb2F0IGZyYW1lUmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVS
YXRlOyB9CisgICAgdm9pZCBzZXRGcmFtZVJhdGUoZmxvYXQgZnJhbWVSYXRlKSB7IG1fZnJhbWVS
YXRlID0gZnJhbWVSYXRlOyB9CisgICAgCisgICAgZmxvYXQgYXNwZWN0UmF0aW8oKSBjb25zdCB7
IHJldHVybiBtX2FzcGVjdFJhdGlvOyB9CisgICAgdm9pZCBzZXRBc3BlY3RSYXRpbyhmbG9hdCBh
c3BlY3RSYXRpbykgeyBtX2FzcGVjdFJhdGlvID0gYXNwZWN0UmF0aW87IH0KKyAgICAKKyAgICB1
bnNpZ25lZCBsb25nIHZvbHVtZSgpIGNvbnN0IHsgcmV0dXJuIG1fdm9sdW1lOyB9CisgICAgdm9p
ZCBzZXRWb2x1bWUodW5zaWduZWQgbG9uZyB2b2x1bWUpIHsgbV92b2x1bWUgPSB2b2x1bWU7IH0K
KyAgICAKK3ByaXZhdGU6CisgICAgU291cmNlVHlwZSBtX3NvdXJjZVR5cGU7CisgICAgQXRvbWlj
U3RyaW5nIG1fc291cmNlSWQ7CisgICAgVmlkZW9GYWNpbmdNb2RlIG1fZmFjaW5nTW9kZTsKKyAg
ICB1bnNpZ25lZCBsb25nIG1fd2lkdGg7CisgICAgdW5zaWduZWQgbG9uZyBtX2hlaWdodDsKKyAg
ICBmbG9hdCBtX2ZyYW1lUmF0ZTsKKyAgICBmbG9hdCBtX2FzcGVjdFJhdGlvOworICAgIHVuc2ln
bmVkIGxvbmcgbV92b2x1bWU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRp
ZiAvLyBSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzX2gKKworI2VuZGlmCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3Mu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFs
dGltZU1lZGlhU291cmNlU2V0dGluZ3MuaAkod29ya2luZyBjb3B5KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE1
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMjMsNzMgKzIzLDk0IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5k
ZWYgUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlc19oCi0jZGVmaW5lIFJlYWx0aW1lTWVkaWFTb3Vy
Y2VTdGF0ZXNfaAorI2lmbmRlZiBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3NfaAorI2RlZmlu
ZSBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3NfaAogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVB
TSkKIAorI2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cy5o
IgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLWNsYXNzIFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXMgeworY2xhc3MgUmVhbHRpbWVNZWRp
YVNvdXJjZVNldHRpbmdzIHsKIHB1YmxpYzoKICAgICBlbnVtIFNvdXJjZVR5cGUgeyBOb25lLCBD
YW1lcmEsIE1pY3JvcGhvbmUgfTsKICAgICBlbnVtIFZpZGVvRmFjaW5nTW9kZSB7IFVua25vd24s
IFVzZXIsIEVudmlyb25tZW50LCBMZWZ0LCBSaWdodCB9OwogCi0gICAgUmVhbHRpbWVNZWRpYVNv
dXJjZVN0YXRlcygpCi0gICAgICAgIDogbV9zb3VyY2VUeXBlKE5vbmUpCi0gICAgICAgICwgbV9m
YWNpbmdNb2RlKFVua25vd24pCi0gICAgICAgICwgbV93aWR0aCgwKQotICAgICAgICAsIG1faGVp
Z2h0KDApCi0gICAgICAgICwgbV9mcmFtZVJhdGUoMCkKLSAgICAgICAgLCBtX2FzcGVjdFJhdGlv
KDApCi0gICAgICAgICwgbV92b2x1bWUoMCkKKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5n
JiBmYWNpbmdNb2RlKFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6VmlkZW9GYWNpbmdNb2Rl
KTsKKworICAgIGV4cGxpY2l0IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncygpCiAgICAgewog
ICAgIH0KIAotICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHNvdXJjZVR5cGUoUmVhbHRp
bWVNZWRpYVNvdXJjZVN0YXRlczo6U291cmNlVHlwZSk7Ci0gICAgc3RhdGljIGNvbnN0IEF0b21p
Y1N0cmluZyYgZmFjaW5nTW9kZShSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzOjpWaWRlb0ZhY2lu
Z01vZGUpOwotCi0gICAgU291cmNlVHlwZSBzb3VyY2VUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9z
b3VyY2VUeXBlOyB9Ci0gICAgdm9pZCBzZXRTb3VyY2VUeXBlKFNvdXJjZVR5cGUgdHlwZSkgeyBt
X3NvdXJjZVR5cGUgPSB0eXBlOyB9Ci0KLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIHNvdXJjZUlk
KCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VJZDsgfQotICAgIHZvaWQgc2V0U291cmNlSWQoY29u
c3QgQXRvbWljU3RyaW5nJiBzb3VyY2VJZCkgeyBtX3NvdXJjZUlkID0gc291cmNlSWQ7IH0KLQot
ICAgIFZpZGVvRmFjaW5nTW9kZSBmYWNpbmdNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9mYWNpbmdN
b2RlOyB9Ci0gICAgdm9pZCBzZXRGYWNpbmdNb2RlKFZpZGVvRmFjaW5nTW9kZSBmYWNpbmdNb2Rl
KSB7IG1fZmFjaW5nTW9kZSA9IGZhY2luZ01vZGU7IH0KLSAgICAKKyAgICBib29sIHN1cHBvcnRz
V2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3N1cHBvcnRlZENvbnN0cmFpbnRzLnN1cHBvcnRzV2lk
dGgoKTsgfQogICAgIHVuc2lnbmVkIGxvbmcgd2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3dpZHRo
OyB9CiAgICAgdm9pZCBzZXRXaWR0aCh1bnNpZ25lZCBsb25nIHdpZHRoKSB7IG1fd2lkdGggPSB3
aWR0aDsgfQotICAgIAorCisgICAgYm9vbCBzdXBwb3J0c0hlaWdodCgpIGNvbnN0IHsgcmV0dXJu
IG1fc3VwcG9ydGVkQ29uc3RyYWludHMuc3VwcG9ydHNIZWlnaHQoKTsgfQogICAgIHVuc2lnbmVk
IGxvbmcgaGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9oZWlnaHQ7IH0KICAgICB2b2lkIHNldEhl
aWdodCh1bnNpZ25lZCBsb25nIGhlaWdodCkgeyBtX2hlaWdodCA9IGhlaWdodDsgfQotICAgIAot
ICAgIGZsb2F0IGZyYW1lUmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVSYXRlOyB9Ci0gICAg
dm9pZCBzZXRGcmFtZVJhdGUoZmxvYXQgZnJhbWVSYXRlKSB7IG1fZnJhbWVSYXRlID0gZnJhbWVS
YXRlOyB9Ci0gICAgCisKKyAgICBib29sIHN1cHBvcnRzQXNwZWN0UmF0aW8oKSBjb25zdCB7IHJl
dHVybiBtX3N1cHBvcnRlZENvbnN0cmFpbnRzLnN1cHBvcnRzQXNwZWN0UmF0aW8oKTsgfQogICAg
IGZsb2F0IGFzcGVjdFJhdGlvKCkgY29uc3QgeyByZXR1cm4gbV9hc3BlY3RSYXRpbzsgfQogICAg
IHZvaWQgc2V0QXNwZWN0UmF0aW8oZmxvYXQgYXNwZWN0UmF0aW8pIHsgbV9hc3BlY3RSYXRpbyA9
IGFzcGVjdFJhdGlvOyB9Ci0gICAgCisKKyAgICBib29sIHN1cHBvcnRzRnJhbWVSYXRlKCkgY29u
c3QgeyByZXR1cm4gbV9zdXBwb3J0ZWRDb25zdHJhaW50cy5zdXBwb3J0c0ZyYW1lUmF0ZSgpOyB9
CisgICAgZmxvYXQgZnJhbWVSYXRlKCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZVJhdGU7IH0KKyAg
ICB2b2lkIHNldEZyYW1lUmF0ZShmbG9hdCBmcmFtZVJhdGUpIHsgbV9mcmFtZVJhdGUgPSBmcmFt
ZVJhdGU7IH0KKworICAgIGJvb2wgc3VwcG9ydHNGYWNpbmdNb2RlKCkgY29uc3QgeyByZXR1cm4g
bV9zdXBwb3J0ZWRDb25zdHJhaW50cy5zdXBwb3J0c0ZhY2luZ01vZGUoKTsgfQorICAgIFZpZGVv
RmFjaW5nTW9kZSBmYWNpbmdNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9mYWNpbmdNb2RlOyB9Cisg
ICAgdm9pZCBzZXRGYWNpbmdNb2RlKFZpZGVvRmFjaW5nTW9kZSBmYWNpbmdNb2RlKSB7IG1fZmFj
aW5nTW9kZSA9IGZhY2luZ01vZGU7IH0KKworICAgIGJvb2wgc3VwcG9ydHNWb2x1bWUoKSBjb25z
dCB7IHJldHVybiBtX3N1cHBvcnRlZENvbnN0cmFpbnRzLnN1cHBvcnRzVm9sdW1lKCk7IH0KICAg
ICB1bnNpZ25lZCBsb25nIHZvbHVtZSgpIGNvbnN0IHsgcmV0dXJuIG1fdm9sdW1lOyB9CiAgICAg
dm9pZCBzZXRWb2x1bWUodW5zaWduZWQgbG9uZyB2b2x1bWUpIHsgbV92b2x1bWUgPSB2b2x1bWU7
IH0KLSAgICAKKworICAgIGJvb2wgc3VwcG9ydHNTYW1wbGVSYXRlKCkgY29uc3QgeyByZXR1cm4g
bV9zdXBwb3J0ZWRDb25zdHJhaW50cy5zdXBwb3J0c1NhbXBsZVJhdGUoKTsgfQorICAgIHVuc2ln
bmVkIGxvbmcgc2FtcGxlUmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2FtcGxlUmF0ZTsgfQorICAg
IHZvaWQgc2V0U2FtcGxlUmF0ZSh1bnNpZ25lZCBsb25nIHNhbXBsZVJhdGUpIHsgbV9zYW1wbGVS
YXRlID0gc2FtcGxlUmF0ZTsgfQorCisgICAgYm9vbCBzdXBwb3J0c1NhbXBsZVNpemUoKSBjb25z
dCB7IHJldHVybiBtX3N1cHBvcnRlZENvbnN0cmFpbnRzLnN1cHBvcnRzU2FtcGxlU2l6ZSgpOyB9
CisgICAgdW5zaWduZWQgbG9uZyBzYW1wbGVTaXplKCkgY29uc3QgeyByZXR1cm4gbV9zYW1wbGVT
aXplOyB9CisgICAgdm9pZCBzZXRTYW1wbGVTaXplKHVuc2lnbmVkIGxvbmcgc2FtcGxlU2l6ZSkg
eyBtX3NhbXBsZVNpemUgPSBzYW1wbGVTaXplOyB9CisKKyAgICBib29sIHN1cHBvcnRzRWNob0Nh
bmNlbGxhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc3VwcG9ydGVkQ29uc3RyYWludHMuc3VwcG9y
dHNFY2hvQ2FuY2VsbGF0aW9uKCk7IH0KKyAgICBib29sIGVjaG9DYW5jZWxsYXRpb24oKSBjb25z
dCB7IHJldHVybiBtX2VjaG9DYW5jZWxsYXRpb247IH0KKyAgICB2b2lkIHNldEVjaG9DYW5jZWxs
YXRpb24oYm9vbCBlY2hvQ2FuY2VsbGF0aW9uKSB7IG1fZWNob0NhbmNlbGxhdGlvbiA9IGVjaG9D
YW5jZWxsYXRpb247IH0KKworICAgIGJvb2wgc3VwcG9ydHNEZXZpY2VJZCgpIGNvbnN0IHsgcmV0
dXJuIG1fc3VwcG9ydGVkQ29uc3RyYWludHMuc3VwcG9ydHNEZXZpY2VJZCgpOyB9CisgICAgY29u
c3QgQXRvbWljU3RyaW5nJiBkZXZpY2VJZCgpIGNvbnN0IHsgcmV0dXJuIG1fZGV2aWNlSWQ7IH0K
KyAgICB2b2lkIHNldERldmljZUlkKGNvbnN0IEF0b21pY1N0cmluZyYgZGV2aWNlSWQpIHsgbV9k
ZXZpY2VJZCA9IGRldmljZUlkOyB9CisKKyAgICBib29sIHN1cHBvcnRzR3JvdXBJZCgpIGNvbnN0
IHsgcmV0dXJuIG1fc3VwcG9ydGVkQ29uc3RyYWludHMuc3VwcG9ydHNHcm91cElkKCk7IH0KKyAg
ICBjb25zdCBBdG9taWNTdHJpbmcmIGdyb3VwSWQoKSBjb25zdCB7IHJldHVybiBtX2dyb3VwSWQ7
IH0KKyAgICB2b2lkIHNldEdyb3VwSWQoY29uc3QgQXRvbWljU3RyaW5nJiBncm91cElkKSB7IG1f
Z3JvdXBJZCA9IGdyb3VwSWQ7IH0KKworICAgIHZvaWQgc2V0U3VwcG9ydGVkQ29uc3RyYWl0cyhj
b25zdCBSZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMmIHN1cHBvcnRlZENv
bnN0cmFpbnRzKSB7IG1fc3VwcG9ydGVkQ29uc3RyYWludHMgPSBzdXBwb3J0ZWRDb25zdHJhaW50
czsgfQorCiBwcml2YXRlOgotICAgIFNvdXJjZVR5cGUgbV9zb3VyY2VUeXBlOwotICAgIEF0b21p
Y1N0cmluZyBtX3NvdXJjZUlkOwotICAgIFZpZGVvRmFjaW5nTW9kZSBtX2ZhY2luZ01vZGU7Ci0g
ICAgdW5zaWduZWQgbG9uZyBtX3dpZHRoOwotICAgIHVuc2lnbmVkIGxvbmcgbV9oZWlnaHQ7Ci0g
ICAgZmxvYXQgbV9mcmFtZVJhdGU7Ci0gICAgZmxvYXQgbV9hc3BlY3RSYXRpbzsKLSAgICB1bnNp
Z25lZCBsb25nIG1fdm9sdW1lOworICAgIHVuc2lnbmVkIGxvbmcgbV93aWR0aCB7IDAgfTsKKyAg
ICB1bnNpZ25lZCBsb25nIG1faGVpZ2h0IHsgMCB9OworICAgIGZsb2F0IG1fYXNwZWN0UmF0aW8g
eyAwIH07CisgICAgZmxvYXQgbV9mcmFtZVJhdGUgeyAwIH07CisgICAgVmlkZW9GYWNpbmdNb2Rl
IG1fZmFjaW5nTW9kZSB7IFVua25vd24gfTsKKyAgICB1bnNpZ25lZCBsb25nIG1fdm9sdW1lIHsg
MCB9OworICAgIHVuc2lnbmVkIGxvbmcgbV9zYW1wbGVSYXRlIHsgMCB9OworICAgIHVuc2lnbmVk
IGxvbmcgbV9zYW1wbGVTaXplIHsgMCB9OworICAgIGJvb2wgbV9lY2hvQ2FuY2VsbGF0aW9uIHsg
MCB9OworCisgICAgQXRvbWljU3RyaW5nIG1fZGV2aWNlSWQ7CisgICAgQXRvbWljU3RyaW5nIG1f
Z3JvdXBJZDsKKworICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cyBt
X3N1cHBvcnRlZENvbnN0cmFpbnRzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0j
ZW5kaWYgLy8gUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlc19oCisjZW5kaWYgLy8gUmVhbHRpbWVN
ZWRpYVNvdXJjZVNldHRpbmdzX2gKIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlU3RhdGVzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291
cmNlU3RhdGVzLmNwcAkocmV2aXNpb24gMTkyOTMwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlcy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEsODUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKLSAqICAgIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqICAgIGRpc3RyaWJ1dGlvbi4KLSAqIDMuIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3Jz
Ci0gKiAgICBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tIHRoaXMKLSAqICAgIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaWYgRU5B
QkxFKE1FRElBX1NUUkVBTSkKLSNpbmNsdWRlICJSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzLmgi
Ci0KLSNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi1jb25zdCBBdG9taWNTdHJpbmcmIFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXM6OmZhY2lu
Z01vZGUoUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlczo6VmlkZW9GYWNpbmdNb2RlIG1vZGUpCi17
Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gdXNlckZhY2luZygidXNl
ciIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IGVudmlyb25tZW50RmFjaW5nKCJlbnZpcm9ubWVudCIs
IEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxBdG9taWNTdHJpbmc+IGxlZnRGYWNpbmcoImxlZnQiLCBBdG9taWNTdHJpbmc6OkNv
bnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3Ry
aW5nPiByaWdodEZhY2luZygicmlnaHQiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKTsKLSAgICAKLSAgICBzd2l0Y2ggKG1vZGUpIHsKLSAgICBjYXNlIFJlYWx0aW1lTWVkaWFT
b3VyY2VTdGF0ZXM6OlVzZXI6Ci0gICAgICAgIHJldHVybiB1c2VyRmFjaW5nOwotICAgIGNhc2Ug
UmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlczo6RW52aXJvbm1lbnQ6Ci0gICAgICAgIHJldHVybiBl
bnZpcm9ubWVudEZhY2luZzsKLSAgICBjYXNlIFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXM6Okxl
ZnQ6Ci0gICAgICAgIHJldHVybiBsZWZ0RmFjaW5nOwotICAgIGNhc2UgUmVhbHRpbWVNZWRpYVNv
dXJjZVN0YXRlczo6UmlnaHQ6Ci0gICAgICAgIHJldHVybiByaWdodEZhY2luZzsKLSAgICBjYXNl
IFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXM6OlVua25vd246Ci0gICAgICAgIHJldHVybiBlbXB0
eUF0b207Ci0gICAgfQotICAgIAotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVy
biBlbXB0eUF0b207Ci19Ci0KLWNvbnN0IEF0b21pY1N0cmluZyYgUmVhbHRpbWVNZWRpYVNvdXJj
ZVN0YXRlczo6c291cmNlVHlwZShSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzOjpTb3VyY2VUeXBl
IHNvdXJjZVR5cGUpCi17Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4g
bm9uZSgibm9uZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IGNhbWVyYSgiY2FtZXJhIiwgQXRvbWlj
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PEF0b21pY1N0cmluZz4gbWljcm9waG9uZSgibWljcm9waG9uZSIsIEF0b21pY1N0cmluZzo6Q29u
c3RydWN0RnJvbUxpdGVyYWwpOwotICAgIAotICAgIHN3aXRjaCAoc291cmNlVHlwZSkgewotICAg
IGNhc2UgUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlczo6Tm9uZToKLSAgICAgICAgcmV0dXJuIG5v
bmU7Ci0gICAgY2FzZSBSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzOjpDYW1lcmE6Ci0gICAgICAg
IHJldHVybiBjYW1lcmE7Ci0gICAgY2FzZSBSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzOjpNaWNy
b3Bob25lOgotICAgICAgICByZXR1cm4gbWljcm9waG9uZTsKLSAgICB9Ci0gICAgCi0gICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIGVtcHR5QXRvbTsKLX0KLQotfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VTdGF0
ZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9S
ZWFsdGltZU1lZGlhU291cmNlU3RhdGVzLmgJKHJldmlzaW9uIDE5MjkzMCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXMuaAko
d29ya2luZyBjb3B5KQpAQCAtMSw5NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEz
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzX2gK
LSNkZWZpbmUgUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlc19oCi0KLSNpZiBFTkFCTEUoTUVESUFf
U1RSRUFNKQotCi0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQotY2xhc3MgUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlcyB7Ci1wdWJsaWM6Ci0g
ICAgZW51bSBTb3VyY2VUeXBlIHsgTm9uZSwgQ2FtZXJhLCBNaWNyb3Bob25lIH07Ci0gICAgZW51
bSBWaWRlb0ZhY2luZ01vZGUgeyBVbmtub3duLCBVc2VyLCBFbnZpcm9ubWVudCwgTGVmdCwgUmln
aHQgfTsKLQotICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXMoKQotICAgICAgICA6IG1fc291
cmNlVHlwZShOb25lKQotICAgICAgICAsIG1fZmFjaW5nTW9kZShVbmtub3duKQotICAgICAgICAs
IG1fd2lkdGgoMCkKLSAgICAgICAgLCBtX2hlaWdodCgwKQotICAgICAgICAsIG1fZnJhbWVSYXRl
KDApCi0gICAgICAgICwgbV9hc3BlY3RSYXRpbygwKQotICAgICAgICAsIG1fdm9sdW1lKDApCi0g
ICAgewotICAgIH0KLQotICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHNvdXJjZVR5cGUo
UmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlczo6U291cmNlVHlwZSk7Ci0gICAgc3RhdGljIGNvbnN0
IEF0b21pY1N0cmluZyYgZmFjaW5nTW9kZShSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzOjpWaWRl
b0ZhY2luZ01vZGUpOwotCi0gICAgU291cmNlVHlwZSBzb3VyY2VUeXBlKCkgY29uc3QgeyByZXR1
cm4gbV9zb3VyY2VUeXBlOyB9Ci0gICAgdm9pZCBzZXRTb3VyY2VUeXBlKFNvdXJjZVR5cGUgdHlw
ZSkgeyBtX3NvdXJjZVR5cGUgPSB0eXBlOyB9Ci0KLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIHNv
dXJjZUlkKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VJZDsgfQotICAgIHZvaWQgc2V0U291cmNl
SWQoY29uc3QgQXRvbWljU3RyaW5nJiBzb3VyY2VJZCkgeyBtX3NvdXJjZUlkID0gc291cmNlSWQ7
IH0KLQotICAgIFZpZGVvRmFjaW5nTW9kZSBmYWNpbmdNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9m
YWNpbmdNb2RlOyB9Ci0gICAgdm9pZCBzZXRGYWNpbmdNb2RlKFZpZGVvRmFjaW5nTW9kZSBmYWNp
bmdNb2RlKSB7IG1fZmFjaW5nTW9kZSA9IGZhY2luZ01vZGU7IH0KLSAgICAKLSAgICB1bnNpZ25l
ZCBsb25nIHdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV93aWR0aDsgfQotICAgIHZvaWQgc2V0V2lk
dGgodW5zaWduZWQgbG9uZyB3aWR0aCkgeyBtX3dpZHRoID0gd2lkdGg7IH0KLSAgICAKLSAgICB1
bnNpZ25lZCBsb25nIGhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1faGVpZ2h0OyB9Ci0gICAgdm9p
ZCBzZXRIZWlnaHQodW5zaWduZWQgbG9uZyBoZWlnaHQpIHsgbV9oZWlnaHQgPSBoZWlnaHQ7IH0K
LSAgICAKLSAgICBmbG9hdCBmcmFtZVJhdGUoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1lUmF0ZTsg
fQotICAgIHZvaWQgc2V0RnJhbWVSYXRlKGZsb2F0IGZyYW1lUmF0ZSkgeyBtX2ZyYW1lUmF0ZSA9
IGZyYW1lUmF0ZTsgfQotICAgIAotICAgIGZsb2F0IGFzcGVjdFJhdGlvKCkgY29uc3QgeyByZXR1
cm4gbV9hc3BlY3RSYXRpbzsgfQotICAgIHZvaWQgc2V0QXNwZWN0UmF0aW8oZmxvYXQgYXNwZWN0
UmF0aW8pIHsgbV9hc3BlY3RSYXRpbyA9IGFzcGVjdFJhdGlvOyB9Ci0gICAgCi0gICAgdW5zaWdu
ZWQgbG9uZyB2b2x1bWUoKSBjb25zdCB7IHJldHVybiBtX3ZvbHVtZTsgfQotICAgIHZvaWQgc2V0
Vm9sdW1lKHVuc2lnbmVkIGxvbmcgdm9sdW1lKSB7IG1fdm9sdW1lID0gdm9sdW1lOyB9Ci0gICAg
Ci1wcml2YXRlOgotICAgIFNvdXJjZVR5cGUgbV9zb3VyY2VUeXBlOwotICAgIEF0b21pY1N0cmlu
ZyBtX3NvdXJjZUlkOwotICAgIFZpZGVvRmFjaW5nTW9kZSBtX2ZhY2luZ01vZGU7Ci0gICAgdW5z
aWduZWQgbG9uZyBtX3dpZHRoOwotICAgIHVuc2lnbmVkIGxvbmcgbV9oZWlnaHQ7Ci0gICAgZmxv
YXQgbV9mcmFtZVJhdGU7Ci0gICAgZmxvYXQgbV9hc3BlY3RSYXRpbzsKLSAgICB1bnNpZ25lZCBs
b25nIG1fdm9sdW1lOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8g
UmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlc19oCi0KLSNlbmRpZgpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQXVkaW9DYXB0dXJlU291cmNlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQXVkaW9D
YXB0dXJlU291cmNlLmgJKHJldmlzaW9uIDE5MjkzMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9BVkF1ZGlvQ2FwdHVyZVNvdXJjZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC01OSwxMiArNTksMTMgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIH5BVkF1ZGlvQ2FwdHVy
ZVNvdXJjZSgpOwogICAgIAogICAgIHZvaWQgaW5pdGlhbGl6ZUNhcGFiaWxpdGllcyhSZWFsdGlt
ZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzJikgb3ZlcnJpZGU7CisgICAgdm9pZCBpbml0aWFsaXpl
U3VwcG9ydGVkQ29uc3RyYWludHMoUmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBvcnRlZENvbnN0cmFp
bnRzJikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGNhcHR1cmVPdXRwdXREaWRPdXRwdXRTYW1wbGVC
dWZmZXJGcm9tQ29ubmVjdGlvbihBVkNhcHR1cmVPdXRwdXQqLCBDTVNhbXBsZUJ1ZmZlclJlZiwg
QVZDYXB0dXJlQ29ubmVjdGlvbiopIG92ZXJyaWRlOwogICAgIAogICAgIHZvaWQgc2V0dXBDYXB0
dXJlU2Vzc2lvbigpIG92ZXJyaWRlOwogICAgIHZvaWQgc2h1dGRvd25DYXB0dXJlU2Vzc2lvbigp
IG92ZXJyaWRlOwotICAgIHZvaWQgdXBkYXRlU3RhdGVzKCkgb3ZlcnJpZGU7CisgICAgdm9pZCB1
cGRhdGVTZXR0aW5ncyhSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmKSBvdmVycmlkZTsKICAg
ICBBdWRpb1NvdXJjZVByb3ZpZGVyKiBhdWRpb1NvdXJjZVByb3ZpZGVyKCkgb3ZlcnJpZGU7CiAK
ICAgICBSZXRhaW5QdHI8QVZDYXB0dXJlQ29ubmVjdGlvbj4gbV9hdWRpb0Nvbm5lY3Rpb247Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZBdWRpb0NhcHR1
cmVTb3VyY2UubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL0FWQXVkaW9DYXB0dXJlU291cmNlLm1tCShyZXZpc2lvbiAxOTI5MzApCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZBdWRpb0NhcHR1cmVTb3Vy
Y2UubW0JKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAKICNpbXBvcnQgIkxvZ2dpbmcu
aCIKICNpbXBvcnQgIk1lZGlhQ29uc3RyYWludHMuaCIKICNpbXBvcnQgIk5vdEltcGxlbWVudGVk
LmgiCi0jaW1wb3J0ICJSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzLmgiCisjaW1wb3J0ICJSZWFs
dGltZU1lZGlhU291cmNlU2V0dGluZ3MuaCIKICNpbXBvcnQgIlNvZnRMaW5raW5nLmgiCiAjaW1w
b3J0ICJXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5oIgogI2ltcG9ydCA8QVZGb3VuZGF0
aW9uL0FWRm91bmRhdGlvbi5oPgpAQCAtNzAsOCArNzAsNiBAQCBSZWZQdHI8QVZNZWRpYUNhcHR1
cmVTb3VyY2U+IEFWQXVkaW9DYXB0CiBBVkF1ZGlvQ2FwdHVyZVNvdXJjZTo6QVZBdWRpb0NhcHR1
cmVTb3VyY2UoQVZDYXB0dXJlRGV2aWNlVHlwZSogZGV2aWNlLCBjb25zdCBBdG9taWNTdHJpbmcm
IGlkLCBQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+IGNvbnN0cmFpbnRzKQogICAgIDogQVZN
ZWRpYUNhcHR1cmVTb3VyY2UoZGV2aWNlLCBpZCwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6QXVkaW8s
IGNvbnN0cmFpbnRzKQogewotICAgIGN1cnJlbnRTdGF0ZXMoKS0+c2V0U291cmNlSWQoaWQpOwot
ICAgIGN1cnJlbnRTdGF0ZXMoKS0+c2V0U291cmNlVHlwZShSZWFsdGltZU1lZGlhU291cmNlU3Rh
dGVzOjpNaWNyb3Bob25lKTsKICAgICBtX2lucHV0RGVzY3JpcHRpb24gPSBzdGQ6Om1ha2VfdW5p
cXVlPEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbj4oKTsKIH0KICAgICAKQEAgLTc5LDE5ICs3
NywyMSBAQCBBVkF1ZGlvQ2FwdHVyZVNvdXJjZTo6fkFWQXVkaW9DYXB0dXJlU291CiB7CiB9CiAK
LXZvaWQgQVZBdWRpb0NhcHR1cmVTb3VyY2U6OmluaXRpYWxpemVDYXBhYmlsaXRpZXMoUmVhbHRp
bWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcyZjYXBhYmlsaXRpZXMpCit2b2lkIEFWQXVkaW9DYXB0
dXJlU291cmNlOjppbml0aWFsaXplQ2FwYWJpbGl0aWVzKFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBh
YmlsaXRpZXMmKQogewogICAgIC8vIEZJWE1FOiBmaW5pc2ggdGhpcyBpbXBsZW1lbnRhdGlvbiAt
IGh0dHBzOi8vd2Via2l0Lm9yZy9iLzEyMjQzMAotICAgIGNhcGFiaWxpdGllcy5hZGRTb3VyY2VU
eXBlKFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXM6Ok1pY3JvcGhvbmUpOwogfQogCi12b2lkIEFW
QXVkaW9DYXB0dXJlU291cmNlOjp1cGRhdGVTdGF0ZXMoKQordm9pZCBBVkF1ZGlvQ2FwdHVyZVNv
dXJjZTo6aW5pdGlhbGl6ZVN1cHBvcnRlZENvbnN0cmFpbnRzKFJlYWx0aW1lTWVkaWFTb3VyY2VT
dXBwb3J0ZWRDb25zdHJhaW50cyYgc3VwcG9ydGVkQ29uc3RyYWludHMpCit7CisgICAgc3VwcG9y
dGVkQ29uc3RyYWludHMuc2V0U3VwcG9ydHNWb2x1bWUodHJ1ZSk7Cit9CisKK3ZvaWQgQVZBdWRp
b0NhcHR1cmVTb3VyY2U6OnVwZGF0ZVNldHRpbmdzKFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5n
cyYgc2V0dGluZ3MpCiB7CiAgICAgLy8gRklYTUU6IHVzZSBbQVZDYXB0dXJlQXVkaW9QcmV2aWV3
T3V0cHV0IHZvbHVtZV0gZm9yIHZvbHVtZQogCi0gICAgUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRl
cyogc3RhdGVzID0gY3VycmVudFN0YXRlcygpOwotICAgIHN0YXRlcy0+c2V0U291cmNlSWQoaWQo
KSk7Ci0gICAgc3RhdGVzLT5zZXRTb3VyY2VUeXBlKFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXM6
Ok1pY3JvcGhvbmUpOworICAgIHNldHRpbmdzLnNldERldmljZUlkKGlkKCkpOwogfQogCiB2b2lk
IEFWQXVkaW9DYXB0dXJlU291cmNlOjphZGRPYnNlcnZlcihBVkF1ZGlvQ2FwdHVyZVNvdXJjZTo6
T2JzZXJ2ZXIqIG9ic2VydmVyKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL0FWQ2FwdHVyZURldmljZU1hbmFnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5o
CShyZXZpc2lvbiAxOTI5MzApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9tYWMvQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICsz
MSw3IEBACiAjaW5jbHVkZSAiQ2FwdHVyZURldmljZU1hbmFnZXIuaCIKICNpbmNsdWRlICJNZWRp
YVN0cmVhbVRyYWNrU291cmNlc1JlcXVlc3RDbGllbnQuaCIKICNpbmNsdWRlICJSZWFsdGltZU1l
ZGlhU291cmNlLmgiCisjaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBvcnRlZENvbnN0
cmFpbnRzLmgiCiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgogCkBAIC02NSw2ICs2Niw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZGV2
aWNlQ29ubmVjdGVkKCk7CiAgICAgdm9pZCBkZXZpY2VEaXNjb25uZWN0ZWQoQVZDYXB0dXJlRGV2
aWNlKik7CisgICAgCisgICAgY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBvcnRlZENvbnN0
cmFpbnRzJiBzdXBwb3J0ZWRDb25zdHJhaW50cygpOwogCiBwcm90ZWN0ZWQ6CiAgICAgc3RhdGlj
IGJvb2wgaXNBdmFpbGFibGUoKTsKQEAgLTgwLDYgKzgzLDcgQEAgcHJvdGVjdGVkOgogICAgIHZv
aWQgcmVnaXN0ZXJGb3JEZXZpY2VOb3RpZmljYXRpb25zKCk7CiAKICAgICBSZXRhaW5QdHI8V2Vi
Q29yZUFWQ2FwdHVyZURldmljZU1hbmFnZXJPYnNlcnZlcj4gbV9vYmpjT2JzZXJ2ZXI7CisgICAg
UmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBvcnRlZENvbnN0cmFpbnRzIG1fc3VwcG9ydGVkQ29uc3Ry
YWludHM7CiAgICAgVmVjdG9yPENhcHR1cmVEZXZpY2VJbmZvPiBtX2RldmljZXM7CiB9OwogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2
aWNlTWFuYWdlci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5tbQkocmV2aXNpb24gMTkyOTMwKQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQ2FwdHVyZURldmlj
ZU1hbmFnZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAKICNpbXBvcnQgIk1l
ZGlhQ29uc3RyYWludHMuaCIKICNpbXBvcnQgIlJlYWx0aW1lTWVkaWFTb3VyY2UuaCIKICNpbXBv
cnQgIlJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaCIKLSNpbXBvcnQgIlJlYWx0aW1lTWVkaWFT
b3VyY2VTdGF0ZXMuaCIKKyNpbXBvcnQgIlJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncy5oIgog
I2ltcG9ydCAiUmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBvcnRlZENvbnN0cmFpbnRzLmgiCiAjaW1w
b3J0ICJTb2Z0TGlua2luZy5oIgogI2ltcG9ydCAiVVVJRC5oIgpAQCAtMTc3LDkgKzE3Nyw5IEBA
IHZvaWQgQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6cmVmcmVzaENhcHQKICAgICAgICAgICAgIGNh
cHR1cmVEZXZpY2UubV9ncm91cElEID0gY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpOwogICAg
ICAgICAgICAgY2FwdHVyZURldmljZS5tX2xvY2FsaXplZE5hbWUgPSBwbGF0Zm9ybURldmljZS5s
b2NhbGl6ZWROYW1lOwogICAgICAgICAgICAgaWYgKFtwbGF0Zm9ybURldmljZSBwb3NpdGlvbl0g
PT0gQVZDYXB0dXJlRGV2aWNlUG9zaXRpb25Gcm9udCkKLSAgICAgICAgICAgICAgICBjYXB0dXJl
RGV2aWNlLm1fcG9zaXRpb24gPSBSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzOjpVc2VyOworICAg
ICAgICAgICAgICAgIGNhcHR1cmVEZXZpY2UubV9wb3NpdGlvbiA9IFJlYWx0aW1lTWVkaWFTb3Vy
Y2VTZXR0aW5nczo6VXNlcjsKICAgICAgICAgICAgIGlmIChbcGxhdGZvcm1EZXZpY2UgcG9zaXRp
b25dID09IEFWQ2FwdHVyZURldmljZVBvc2l0aW9uQmFjaykKLSAgICAgICAgICAgICAgICBjYXB0
dXJlRGV2aWNlLm1fcG9zaXRpb24gPSBSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzOjpFbnZpcm9u
bWVudDsKKyAgICAgICAgICAgICAgICBjYXB0dXJlRGV2aWNlLm1fcG9zaXRpb24gPSBSZWFsdGlt
ZU1lZGlhU291cmNlU2V0dGluZ3M6OkVudmlyb25tZW50OwogCiAgICAgICAgICAgICBib29sIGhh
c0F1ZGlvID0gW3BsYXRmb3JtRGV2aWNlIGhhc01lZGlhVHlwZTpBVk1lZGlhVHlwZUF1ZGlvXSB8
fCBbcGxhdGZvcm1EZXZpY2UgaGFzTWVkaWFUeXBlOkFWTWVkaWFUeXBlTXV4ZWRdOwogICAgICAg
ICAgICAgYm9vbCBoYXNWaWRlbyA9IFtwbGF0Zm9ybURldmljZSBoYXNNZWRpYVR5cGU6QVZNZWRp
YVR5cGVWaWRlb10gfHwgW3BsYXRmb3JtRGV2aWNlIGhhc01lZGlhVHlwZTpBVk1lZGlhVHlwZU11
eGVkXTsKQEAgLTM0NCw2ICszNDQsMzEgQEAgYm9vbCBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpp
c1N1cHBvcnRlZAogICAgIHJldHVybiBDYXB0dXJlRGV2aWNlTWFuYWdlcjo6aXNTdXBwb3J0ZWRG
cmFtZVJhdGUoZnJhbWVSYXRlKTsKIH0KIAorY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBv
cnRlZENvbnN0cmFpbnRzJiBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzdXBwb3J0ZWRDb25zdHJh
aW50cygpCit7CisgICAgaWYgKG1fc3VwcG9ydGVkQ29uc3RyYWludHMuc3VwcG9ydHNEZXZpY2VJ
ZCgpKQorICAgICAgICByZXR1cm4gbV9zdXBwb3J0ZWRDb25zdHJhaW50czsKKworICAgIG1fc3Vw
cG9ydGVkQ29uc3RyYWludHMuc2V0U3VwcG9ydHNEZXZpY2VJZCh0cnVlKTsKKworICAgIFZlY3Rv
cjxDYXB0dXJlRGV2aWNlSW5mbz4mIGRldmljZXMgPSBjYXB0dXJlRGV2aWNlTGlzdCgpOworCisg
ICAgZm9yIChhdXRvJiBjYXB0dXJlRGV2aWNlIDogZGV2aWNlcykgeworICAgICAgICBpZiAoY2Fw
dHVyZURldmljZS5tX3NvdXJjZVR5cGUgPT0gUmVhbHRpbWVNZWRpYVNvdXJjZTo6QXVkaW8pCisg
ICAgICAgICAgICBtX3N1cHBvcnRlZENvbnN0cmFpbnRzLnNldFN1cHBvcnRzVm9sdW1lKHRydWUp
OworCisgICAgICAgIGlmIChjYXB0dXJlRGV2aWNlLm1fc291cmNlVHlwZSA9PSBSZWFsdGltZU1l
ZGlhU291cmNlOjpWaWRlbykgeworICAgICAgICAgICAgbV9zdXBwb3J0ZWRDb25zdHJhaW50cy5z
ZXRTdXBwb3J0c1dpZHRoKHRydWUpOworICAgICAgICAgICAgbV9zdXBwb3J0ZWRDb25zdHJhaW50
cy5zZXRTdXBwb3J0c0hlaWdodCh0cnVlKTsKKyAgICAgICAgICAgIG1fc3VwcG9ydGVkQ29uc3Ry
YWludHMuc2V0U3VwcG9ydHNBc3BlY3RSYXRpbyh0cnVlKTsKKyAgICAgICAgICAgIG1fc3VwcG9y
dGVkQ29uc3RyYWludHMuc2V0U3VwcG9ydHNGcmFtZVJhdGUodHJ1ZSk7CisgICAgICAgICAgICBt
X3N1cHBvcnRlZENvbnN0cmFpbnRzLnNldFN1cHBvcnRzRmFjaW5nTW9kZSh0cnVlKTsKKyAgICAg
ICAgfQorICAgIH0KKyAgICAKKyAgICByZXR1cm4gbV9zdXBwb3J0ZWRDb25zdHJhaW50czsKK30K
KwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiBAaW1wbGVtZW50YXRpb24gV2ViQ29yZUFWQ2Fw
dHVyZURldmljZU1hbmFnZXJPYnNlcnZlcgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL0FWTWVkaWFDYXB0dXJlU291cmNlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWTWVkaWFDYXB0dXJlU291cmNl
LmgJKHJldmlzaW9uIDE5MjkzMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL21hYy9BVk1lZGlhQ2FwdHVyZVNvdXJjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01Niw3ICs1
Niw3IEBAIHB1YmxpYzoKICAgICAKICAgICBBVkNhcHR1cmVTZXNzaW9uICpzZXNzaW9uKCkgY29u
c3QgeyByZXR1cm4gbV9zZXNzaW9uLmdldCgpOyB9CiAKLSAgICBjb25zdCBSZWFsdGltZU1lZGlh
U291cmNlU3RhdGVzJiBzdGF0ZXMoKSBvdmVycmlkZTsKKyAgICBjb25zdCBSZWFsdGltZU1lZGlh
U291cmNlU2V0dGluZ3MmIHNldHRpbmdzKCkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHN0YXJ0UHJv
ZHVjaW5nRGF0YSgpIG92ZXJyaWRlOwogICAgIHZvaWQgc3RvcFByb2R1Y2luZ0RhdGEoKSBvdmVy
cmlkZTsKQEAgLTcxLDE0ICs3MSwxNSBAQCBwcm90ZWN0ZWQ6CiAKICAgICB2aXJ0dWFsIHZvaWQg
c2V0dXBDYXB0dXJlU2Vzc2lvbigpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2h1dGRvd25DYXB0
dXJlU2Vzc2lvbigpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlU3RhdGVzKCkgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTZXR0aW5ncyhSZWFsdGltZU1lZGlhU291cmNlU2V0dGlu
Z3MmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGluaXRpYWxpemVDYXBhYmlsaXRpZXMoUmVhbHRp
bWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcyYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgaW5pdGlh
bGl6ZVN1cHBvcnRlZENvbnN0cmFpbnRzKFJlYWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25z
dHJhaW50cyYpID0gMDsKIAogICAgIEFWQ2FwdHVyZURldmljZSAqZGV2aWNlKCkgY29uc3QgeyBy
ZXR1cm4gbV9kZXZpY2UuZ2V0KCk7IH0KIAotICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXMq
IGN1cnJlbnRTdGF0ZXMoKSB7IHJldHVybiAmbV9jdXJyZW50U3RhdGVzOyB9CiAgICAgTWVkaWFD
b25zdHJhaW50cyogY29uc3RyYWludHMoKSB7IHJldHVybiBtX2NvbnN0cmFpbnRzLmdldCgpOyB9
CiAKKyAgICBSZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMmIHN1cHBvcnRl
ZENvbnN0cmFpbnRzKCk7CiAgICAgUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRp
ZXM+IGNhcGFiaWxpdGllcygpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBzZXRWaWRlb1NhbXBsZUJ1
ZmZlckRlbGVnYXRlKEFWQ2FwdHVyZVZpZGVvRGF0YU91dHB1dCopOwpAQCAtOTAsMTEgKzkxLDEy
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXR1cFNlc3Npb24oKTsKICAgICB2b2lkIHJlc2V0KCkg
b3ZlcnJpZGU7CiAKKyAgICBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MgbV9jdXJyZW50U2V0
dGluZ3M7CisgICAgUmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBvcnRlZENvbnN0cmFpbnRzIG1fc3Vw
cG9ydGVkQ29uc3RyYWludHM7CiAgICAgV2Vha1B0ckZhY3Rvcnk8QVZNZWRpYUNhcHR1cmVTb3Vy
Y2U+IG1fd2Vha1B0ckZhY3Rvcnk7CiAgICAgUmV0YWluUHRyPFdlYkNvcmVBVk1lZGlhQ2FwdHVy
ZVNvdXJjZU9ic2VydmVyPiBtX29iamNPYnNlcnZlcjsKICAgICBSZWZQdHI8TWVkaWFDb25zdHJh
aW50cz4gbV9jb25zdHJhaW50czsKICAgICBSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFi
aWxpdGllcz4gbV9jYXBhYmlsaXRpZXM7Ci0gICAgUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlcyBt
X2N1cnJlbnRTdGF0ZXM7CiAgICAgUmV0YWluUHRyPEFWQ2FwdHVyZVNlc3Npb24+IG1fc2Vzc2lv
bjsKICAgICBSZXRhaW5QdHI8QVZDYXB0dXJlRGV2aWNlPiBtX2RldmljZTsKICAgICBib29sIG1f
aXNSdW5uaW5nIHsgZmFsc2V9OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL0FWTWVkaWFDYXB0dXJlU291cmNlLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVk1lZGlhQ2FwdHVyZVNvdXJjZS5tbQko
cmV2aXNpb24gMTkyOTMwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bWFjL0FWTWVkaWFDYXB0dXJlU291cmNlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3
IEBACiAjaW1wb3J0ICJBdWRpb1NvdXJjZVByb3ZpZGVyLmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgi
CiAjaW1wb3J0ICJNZWRpYUNvbnN0cmFpbnRzLmgiCi0jaW1wb3J0ICJSZWFsdGltZU1lZGlhU291
cmNlU3RhdGVzLmgiCisjaW1wb3J0ICJSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MuaCIKICNp
bXBvcnQgIlNvZnRMaW5raW5nLmgiCiAjaW1wb3J0ICJVVUlELmgiCiAjaW1wb3J0IDxBVkZvdW5k
YXRpb24vQVZGb3VuZGF0aW9uLmg+CkBAIC0xMzIsNyArMTMyLDYgQEAgQVZNZWRpYUNhcHR1cmVT
b3VyY2U6OkFWTWVkaWFDYXB0dXJlU291cgogewogICAgIHNldE5hbWUoZGV2aWNlLmxvY2FsaXpl
ZE5hbWUpOwogICAgIHNldFBlcnNpc3RlbnRJRChkZXZpY2UudW5pcXVlSUQpOwotICAgIG1fY3Vy
cmVudFN0YXRlcy5zZXRTb3VyY2VUeXBlKHR5cGUgPT0gUmVhbHRpbWVNZWRpYVNvdXJjZTo6Vmlk
ZW8gPyBSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzOjpDYW1lcmEgOiBSZWFsdGltZU1lZGlhU291
cmNlU3RhdGVzOjpNaWNyb3Bob25lKTsKIH0KIAogQVZNZWRpYUNhcHR1cmVTb3VyY2U6On5BVk1l
ZGlhQ2FwdHVyZVNvdXJjZSgpCkBAIC0xNjUsMTEgKzE2NCwyNSBAQCB2b2lkIEFWTWVkaWFDYXB0
dXJlU291cmNlOjpzdG9wUHJvZHVjaW5nCiAgICAgW21fc2Vzc2lvbi5nZXQoKSBzdG9wUnVubmlu
Z107CiB9CiAKLWNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXMmIEFWTWVkaWFDYXB0dXJl
U291cmNlOjpzdGF0ZXMoKQorY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJiBBVk1l
ZGlhQ2FwdHVyZVNvdXJjZTo6c2V0dGluZ3MoKQogewotICAgIG1fY3VycmVudFN0YXRlcy5zZXRT
b3VyY2VJZChpZCgpKTsKLSAgICB1cGRhdGVTdGF0ZXMoKTsKLSAgICByZXR1cm4gbV9jdXJyZW50
U3RhdGVzOworICAgIGlmIChtX2N1cnJlbnRTZXR0aW5ncy5kZXZpY2VJZCgpLmlzRW1wdHkoKSkK
KyAgICAgICAgbV9jdXJyZW50U2V0dGluZ3Muc2V0U3VwcG9ydGVkQ29uc3RyYWl0cyhzdXBwb3J0
ZWRDb25zdHJhaW50cygpKTsKKworICAgIG1fY3VycmVudFNldHRpbmdzLnNldERldmljZUlkKGlk
KCkpOworICAgIHVwZGF0ZVNldHRpbmdzKG1fY3VycmVudFNldHRpbmdzKTsKKyAgICByZXR1cm4g
bV9jdXJyZW50U2V0dGluZ3M7Cit9CisKK1JlYWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25z
dHJhaW50cyYgQVZNZWRpYUNhcHR1cmVTb3VyY2U6OnN1cHBvcnRlZENvbnN0cmFpbnRzKCkKK3sK
KyAgICBpZiAobV9zdXBwb3J0ZWRDb25zdHJhaW50cy5zdXBwb3J0c0RldmljZUlkKCkpCisgICAg
ICAgIHJldHVybiBtX3N1cHBvcnRlZENvbnN0cmFpbnRzOworCisgICAgbV9zdXBwb3J0ZWRDb25z
dHJhaW50cy5zZXRTdXBwb3J0c0RldmljZUlkKHRydWUpOworICAgIGluaXRpYWxpemVTdXBwb3J0
ZWRDb25zdHJhaW50cyhtX3N1cHBvcnRlZENvbnN0cmFpbnRzKTsKKworICAgIHJldHVybiBtX3N1
cHBvcnRlZENvbnN0cmFpbnRzOwogfQogCiBSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFi
aWxpdGllcz4gQVZNZWRpYUNhcHR1cmVTb3VyY2U6OmNhcGFiaWxpdGllcygpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2Uu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMv
QVZWaWRlb0NhcHR1cmVTb3VyY2UuaAkocmV2aXNpb24gMTkyOTMwKQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTU1LDkgKzU1LDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXR1cENhcHR1
cmVTZXNzaW9uKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzaHV0ZG93bkNhcHR1cmVTZXNzaW9uKCkg
b3ZlcnJpZGU7CiAKLSAgICB2b2lkIHVwZGF0ZVN0YXRlcygpIG92ZXJyaWRlOworICAgIHZvaWQg
dXBkYXRlU2V0dGluZ3MoUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJikgb3ZlcnJpZGU7CiAK
ICAgICB2b2lkIGluaXRpYWxpemVDYXBhYmlsaXRpZXMoUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFi
aWxpdGllcyYpIG92ZXJyaWRlOworICAgIHZvaWQgaW5pdGlhbGl6ZVN1cHBvcnRlZENvbnN0cmFp
bnRzKFJlYWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cyYpIG92ZXJyaWRlOwog
CiAgICAgYm9vbCBhcHBseUNvbnN0cmFpbnRzKE1lZGlhQ29uc3RyYWludHMqKTsKICAgICBib29s
IHNldEZyYW1lUmF0ZUNvbnN0cmFpbnQoZmxvYXQgbWluRnJhbWVSYXRlLCBmbG9hdCBtYXhGcmFt
ZVJhdGUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FW
VmlkZW9DYXB0dXJlU291cmNlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5tbQkocmV2aXNpb24gMTky
OTMwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9D
YXB0dXJlU291cmNlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw3IEBACiAjaW1wb3J0
ICJOb3RJbXBsZW1lbnRlZC5oIgogI2ltcG9ydCAiUGxhdGZvcm1MYXllci5oIgogI2ltcG9ydCAi
UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oIgotI2ltcG9ydCAiUmVhbHRpbWVNZWRpYVNvdXJj
ZVN0YXRlcy5oIgorI2ltcG9ydCAiUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzLmgiCiAjaW1w
b3J0IDxBVkZvdW5kYXRpb24vQVZGb3VuZGF0aW9uLmg+CiAjaW1wb3J0IDxvYmpjL3J1bnRpbWUu
aD4KIApAQCAtMTExLDI4ICsxMTEsMzMgQEAgQVZWaWRlb0NhcHR1cmVTb3VyY2U6On5BVlZpZGVv
Q2FwdHVyZVNvdQogdm9pZCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6aW5pdGlhbGl6ZUNhcGFiaWxp
dGllcyhSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzJiBjYXBhYmlsaXRpZXMpCiB7CiAg
ICAgLy8gRklYTUU6IGZpbmlzaCB0aGlzIGltcGxlbWVudGF0aW9uCi0gICAgY2FwYWJpbGl0aWVz
LnNldFNvdXJjZUlkKGN1cnJlbnRTdGF0ZXMoKS0+c291cmNlSWQoKSk7Ci0gICAgY2FwYWJpbGl0
aWVzLmFkZFNvdXJjZVR5cGUoUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlczo6Q2FtZXJhKTsKKyAg
ICBjYXBhYmlsaXRpZXMuc2V0U291cmNlSWQoaWQoKSk7CiB9CiAKLXZvaWQgQVZWaWRlb0NhcHR1
cmVTb3VyY2U6OnVwZGF0ZVN0YXRlcygpCit2b2lkIEFWVmlkZW9DYXB0dXJlU291cmNlOjppbml0
aWFsaXplU3VwcG9ydGVkQ29uc3RyYWludHMoUmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBvcnRlZENv
bnN0cmFpbnRzJiBzdXBwb3J0ZWRDb25zdHJhaW50cykKIHsKLSAgICBSZWFsdGltZU1lZGlhU291
cmNlU3RhdGVzKiBzdGF0ZXMgPSBjdXJyZW50U3RhdGVzKCk7CisgICAgc3VwcG9ydGVkQ29uc3Ry
YWludHMuc2V0U3VwcG9ydHNXaWR0aCh0cnVlKTsKKyAgICBzdXBwb3J0ZWRDb25zdHJhaW50cy5z
ZXRTdXBwb3J0c0hlaWdodCh0cnVlKTsKKyAgICBzdXBwb3J0ZWRDb25zdHJhaW50cy5zZXRTdXBw
b3J0c0FzcGVjdFJhdGlvKHRydWUpOworICAgIHN1cHBvcnRlZENvbnN0cmFpbnRzLnNldFN1cHBv
cnRzRnJhbWVSYXRlKHRydWUpOworICAgIHN1cHBvcnRlZENvbnN0cmFpbnRzLnNldFN1cHBvcnRz
RmFjaW5nTW9kZSh0cnVlKTsKK30KIAotICAgIHN0YXRlcy0+c2V0U291cmNlSWQoaWQoKSk7Ci0g
ICAgc3RhdGVzLT5zZXRTb3VyY2VUeXBlKFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXM6OkNhbWVy
YSk7Cit2b2lkIEFWVmlkZW9DYXB0dXJlU291cmNlOjp1cGRhdGVTZXR0aW5ncyhSZWFsdGltZU1l
ZGlhU291cmNlU2V0dGluZ3MmIHNldHRpbmdzKQoreworICAgIHNldHRpbmdzLnNldERldmljZUlk
KGlkKCkpOwogCiAgICAgaWYgKFtkZXZpY2UoKSBwb3NpdGlvbl0gPT0gQVZDYXB0dXJlRGV2aWNl
UG9zaXRpb25Gcm9udCkKLSAgICAgICAgc3RhdGVzLT5zZXRGYWNpbmdNb2RlKFJlYWx0aW1lTWVk
aWFTb3VyY2VTdGF0ZXM6OlVzZXIpOworICAgICAgICBzZXR0aW5ncy5zZXRGYWNpbmdNb2RlKFJl
YWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6VXNlcik7CiAgICAgZWxzZSBpZiAoW2RldmljZSgp
IHBvc2l0aW9uXSA9PSBBVkNhcHR1cmVEZXZpY2VQb3NpdGlvbkJhY2spCi0gICAgICAgIHN0YXRl
cy0+c2V0RmFjaW5nTW9kZShSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzOjpFbnZpcm9ubWVudCk7
CisgICAgICAgIHNldHRpbmdzLnNldEZhY2luZ01vZGUoUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRp
bmdzOjpFbnZpcm9ubWVudCk7CiAgICAgZWxzZQotICAgICAgICBzdGF0ZXMtPnNldEZhY2luZ01v
ZGUoUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlczo6VW5rbm93bik7CisgICAgICAgIHNldHRpbmdz
LnNldEZhY2luZ01vZGUoUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpVbmtub3duKTsKICAg
ICAKLSAgICBzdGF0ZXMtPnNldEZyYW1lUmF0ZShtX2ZyYW1lUmF0ZSk7Ci0gICAgc3RhdGVzLT5z
ZXRXaWR0aChtX3dpZHRoKTsKLSAgICBzdGF0ZXMtPnNldEhlaWdodChtX2hlaWdodCk7Ci0gICAg
c3RhdGVzLT5zZXRBc3BlY3RSYXRpbyhzdGF0aWNfY2FzdDxmbG9hdD4obV93aWR0aCkgLyBtX2hl
aWdodCk7CisgICAgc2V0dGluZ3Muc2V0RnJhbWVSYXRlKG1fZnJhbWVSYXRlKTsKKyAgICBzZXR0
aW5ncy5zZXRXaWR0aChtX3dpZHRoKTsKKyAgICBzZXR0aW5ncy5zZXRIZWlnaHQobV9oZWlnaHQp
OworICAgIHNldHRpbmdzLnNldEFzcGVjdFJhdGlvKHN0YXRpY19jYXN0PGZsb2F0PihtX3dpZHRo
KSAvIG1faGVpZ2h0KTsKIH0KIAogYm9vbCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6c2V0RnJhbWVS
YXRlQ29uc3RyYWludChmbG9hdCBtaW5GcmFtZVJhdGUsIGZsb2F0IG1heEZyYW1lUmF0ZSkKQEAg
LTI5Miw3ICsyOTcsNyBAQCB2b2lkIEFWVmlkZW9DYXB0dXJlU291cmNlOjpwcm9jZXNzTmV3RnJh
CiAKICAgICB1cGRhdGVGcmFtZXJhdGUoc2FtcGxlQnVmZmVyLmdldCgpKTsKIAotICAgIGJvb2wg
c3RhdGVzQ2hhbmdlZCA9IGZhbHNlOworICAgIGJvb2wgc2V0dGluZ3NDaGFuZ2VkID0gZmFsc2U7
CiAKICAgICBtX2J1ZmZlciA9IHNhbXBsZUJ1ZmZlcjsKICAgICBtX2xhc3RJbWFnZSA9IG51bGxw
dHI7CkBAIC0zMDEsMTEgKzMwNiwxMSBAQCB2b2lkIEFWVmlkZW9DYXB0dXJlU291cmNlOjpwcm9j
ZXNzTmV3RnJhCiAgICAgaWYgKGRpbWVuc2lvbnMud2lkdGggIT0gbV93aWR0aCB8fCBkaW1lbnNp
b25zLmhlaWdodCAhPSBtX2hlaWdodCkgewogICAgICAgICBtX3dpZHRoID0gZGltZW5zaW9ucy53
aWR0aDsKICAgICAgICAgbV9oZWlnaHQgPSBkaW1lbnNpb25zLmhlaWdodDsKLSAgICAgICAgc3Rh
dGVzQ2hhbmdlZCA9IHRydWU7CisgICAgICAgIHNldHRpbmdzQ2hhbmdlZCA9IHRydWU7CiAgICAg
fQogCi0gICAgaWYgKHN0YXRlc0NoYW5nZWQpCi0gICAgICAgIHRoaXMtPnN0YXRlc0RpZENoYW5n
ZWQoKTsKKyAgICBpZiAoc2V0dGluZ3NDaGFuZ2VkKQorICAgICAgICB0aGlzLT5zZXR0aW5nc0Rp
ZENoYW5nZWQoKTsKIH0KIAogdm9pZCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6Y2FwdHVyZU91dHB1
dERpZE91dHB1dFNhbXBsZUJ1ZmZlckZyb21Db25uZWN0aW9uKEFWQ2FwdHVyZU91dHB1dFR5cGUq
LCBDTVNhbXBsZUJ1ZmZlclJlZiBzYW1wbGVCdWZmZXIsIEFWQ2FwdHVyZUNvbm5lY3Rpb25UeXBl
KikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVh
bHRpbWVWaWRlb1NvdXJjZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWMubW0JKHJldmlz
aW9uIDE5MjkzMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9N
b2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcs
NyBAQAogI2ltcG9ydCAiTWVkaWFDb25zdHJhaW50cy5oIgogI2ltcG9ydCAiTm90SW1wbGVtZW50
ZWQuaCIKICNpbXBvcnQgIlBsYXRmb3JtTGF5ZXIuaCIKLSNpbXBvcnQgIlJlYWx0aW1lTWVkaWFT
b3VyY2VTdGF0ZXMuaCIKKyNpbXBvcnQgIlJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncy5oIgog
I2ltcG9ydCA8UXVhcnR6Q29yZS9DQUxheWVyLmg+CiAjaW1wb3J0IDxRdWFydHpDb3JlL0NBVHJh
bnNhY3Rpb24uaD4KICNpbXBvcnQgPG9iamMvcnVudGltZS5oPgpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vb3BlbndlYnJ0Yy9SZWFsdGltZU1lZGlhU291cmNlT3dy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vb3Bl
bndlYnJ0Yy9SZWFsdGltZU1lZGlhU291cmNlT3dyLmgJKHJldmlzaW9uIDE5MjkzMCkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL29wZW53ZWJydGMvUmVhbHRpbWVNZWRp
YVNvdXJjZU93ci5oCSh3b3JraW5nIGNvcHkpCkBAIC01OSwxMyArNTksMTMgQEAgUmVhbHRpbWVN
ZWRpYVNvdXJjZU93cihPd3JNZWRpYVNvdXJjZSogbQogICAgIHZpcnR1YWwgflJlYWx0aW1lTWVk
aWFTb3VyY2VPd3IoKSB7IH0KIAogICAgIHZpcnR1YWwgUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3Vy
Y2VDYXBhYmlsaXRpZXM+IGNhcGFiaWxpdGllcygpIHsgcmV0dXJuIG1fY2FwYWJpbGl0aWVzOyB9
Ci0gICAgdmlydHVhbCBjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzJiBzdGF0ZXMoKSB7
IHJldHVybiBtX2N1cnJlbnRTdGF0ZXM7IH0KKyAgICB2aXJ0dWFsIGNvbnN0IFJlYWx0aW1lTWVk
aWFTb3VyY2VTZXR0aW5ncyYgc2V0dGluZ3MoKSB7IHJldHVybiBtX2N1cnJlbnRTZXR0aW5nczsg
fQogCiAgICAgT3dyTWVkaWFTb3VyY2UqIG1lZGlhU291cmNlKCkgY29uc3QgeyByZXR1cm4gbV9t
ZWRpYVNvdXJjZTsgfQogCiBwcml2YXRlOgogICAgIFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNl
Q2FwYWJpbGl0aWVzPiBtX2NhcGFiaWxpdGllczsKLSAgICBSZWFsdGltZU1lZGlhU291cmNlU3Rh
dGVzIG1fY3VycmVudFN0YXRlczsKKyAgICBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MgbV9j
dXJyZW50U2V0dGluZ3M7CiAgICAgT3dyTWVkaWFTb3VyY2UqIG1fbWVkaWFTb3VyY2U7CiB9Owog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZUF1ZGlvU291
cmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tS
ZWFsdGltZUF1ZGlvU291cmNlLmNwcAkocmV2aXNpb24gMTkyOTMwKQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM1LDcgKzM1LDcgQEAKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTWVk
aWFDb25zdHJhaW50cy5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCi0jaW5jbHVkZSAi
UmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlcy5oIgorI2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3Vy
Y2VTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlVVSUQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpA
QCAtNTAsMTEgKzUwLDkgQEAgTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2U6Ok1vY2tSZWFsdGltZUF1
ZAogewogfQogCi12b2lkIE1vY2tSZWFsdGltZUF1ZGlvU291cmNlOjp1cGRhdGVTdGF0ZXMoKQor
dm9pZCBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZTo6dXBkYXRlU2V0dGluZ3MoUmVhbHRpbWVNZWRp
YVNvdXJjZVNldHRpbmdzJiBzZXR0aW5ncykKIHsKLSAgICBSZWFsdGltZU1lZGlhU291cmNlU3Rh
dGVzKiBzdGF0ZXMgPSBjdXJyZW50U3RhdGVzKCk7Ci0gICAgc3RhdGVzLT5zZXRTb3VyY2VUeXBl
KFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXM6Ok1pY3JvcGhvbmUpOwotICAgIHN0YXRlcy0+c2V0
Vm9sdW1lKDUwKTsKKyAgICBzZXR0aW5ncy5zZXRWb2x1bWUoNTApOwogfQogCiB2b2lkIE1vY2tS
ZWFsdGltZUF1ZGlvU291cmNlOjppbml0aWFsaXplQ2FwYWJpbGl0aWVzKFJlYWx0aW1lTWVkaWFT
b3VyY2VDYXBhYmlsaXRpZXMmIGNhcGFiaWxpdGllcykKQEAgLTYyLDYgKzYwLDExIEBAIHZvaWQg
TW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2U6OmluaXRpYWxpemUKICAgICBjYXBhYmlsaXRpZXMuc2V0
Vm9sdW1lUmFuZ2UoUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdHlSYW5nZSgwVUwsIDEwMFVM
LCB0cnVlKSk7CiB9CiAKK3ZvaWQgTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2U6OmluaXRpYWxpemVT
dXBwb3J0ZWRDb25zdHJhaW50cyhSZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWlu
dHMmIHN1cHBvcnRlZENvbnN0cmFpbnRzKQoreworICAgIHN1cHBvcnRlZENvbnN0cmFpbnRzLnNl
dFN1cHBvcnRzVm9sdW1lKHRydWUpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNl
bmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbW9jay9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UuaAkocmV2aXNpb24g
MTkyOTMwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVBdWRp
b1NvdXJjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSw4ICs1MSw5IEBAIHByb3RlY3RlZDoKICAg
ICBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZSgpOwogCiBwcml2YXRlOgotICAgIHZvaWQgdXBkYXRl
U3RhdGVzKCkgb3ZlcnJpZGU7CisgICAgdm9pZCB1cGRhdGVTZXR0aW5ncyhSZWFsdGltZU1lZGlh
U291cmNlU2V0dGluZ3MmKSBvdmVycmlkZTsKICAgICB2b2lkIGluaXRpYWxpemVDYXBhYmlsaXRp
ZXMoUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcyYpIG92ZXJyaWRlOworICAgIHZvaWQg
aW5pdGlhbGl6ZVN1cHBvcnRlZENvbnN0cmFpbnRzKFJlYWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0
ZWRDb25zdHJhaW50cyYpIG92ZXJyaWRlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJj
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVh
bHRpbWVNZWRpYVNvdXJjZS5jcHAJKHJldmlzaW9uIDE5MjkzMCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zNiw3ICszNiw3IEBACiAjaW5jbHVkZSAiTWVkaWFDb25zdHJhaW50cy5oIgogI2luY2x1
ZGUgIk1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVzdENsaWVudC5oIgogI2luY2x1ZGUgIk5v
dEltcGxlbWVudGVkLmgiCi0jaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlcy5oIgor
I2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncy5oIgogI2luY2x1ZGUgPG1hdGgu
aD4KICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0
cm95ZWQuaD4KQEAgLTkyLDIyICs5MiwzOSBAQCBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6TW9j
a1JlYWx0aW1lTWVkCiAKIFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzPiBN
b2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6Y2FwYWJpbGl0aWVzKCkKIHsKLSAgICBpZiAoIW1fY2Fw
YWJpbGl0aWVzKSB7Ci0gICAgICAgIG1fY2FwYWJpbGl0aWVzID0gUmVhbHRpbWVNZWRpYVNvdXJj
ZUNhcGFiaWxpdGllczo6Y3JlYXRlKCk7Ci0gICAgICAgIG1fY2FwYWJpbGl0aWVzLT5zZXRTb3Vy
Y2VJZChpZCgpKTsKLSAgICAgICAgaW5pdGlhbGl6ZUNhcGFiaWxpdGllcygqbV9jYXBhYmlsaXRp
ZXMuZ2V0KCkpOwotICAgIH0KKyAgICBpZiAobV9jYXBhYmlsaXRpZXMpCisgICAgICAgIHJldHVy
biBtX2NhcGFiaWxpdGllczsKKworICAgIG1fY2FwYWJpbGl0aWVzID0gUmVhbHRpbWVNZWRpYVNv
dXJjZUNhcGFiaWxpdGllczo6Y3JlYXRlKCk7CisgICAgbV9jYXBhYmlsaXRpZXMtPnNldFNvdXJj
ZUlkKGlkKCkpOworICAgIGluaXRpYWxpemVDYXBhYmlsaXRpZXMoKm1fY2FwYWJpbGl0aWVzLmdl
dCgpKTsKKwogICAgIHJldHVybiBtX2NhcGFiaWxpdGllczsKIH0KIAotY29uc3QgUmVhbHRpbWVN
ZWRpYVNvdXJjZVN0YXRlcyYgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2U6OnN0YXRlcygpCitjb25z
dCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmIE1vY2tSZWFsdGltZU1lZGlhU291cmNlOjpz
ZXR0aW5ncygpCit7CisgICAgaWYgKG1fY3VycmVudFNldHRpbmdzLmRldmljZUlkKCkuaXNFbXB0
eSgpKSB7CisgICAgICAgIG1fY3VycmVudFNldHRpbmdzLnNldFN1cHBvcnRlZENvbnN0cmFpdHMo
c3VwcG9ydGVkQ29uc3RyYWludHMoKSk7CisgICAgICAgIG1fY3VycmVudFNldHRpbmdzLnNldERl
dmljZUlkKGlkKCkpOworICAgIH0KKworICAgIHVwZGF0ZVNldHRpbmdzKG1fY3VycmVudFNldHRp
bmdzKTsKKyAgICByZXR1cm4gbV9jdXJyZW50U2V0dGluZ3M7Cit9CisKK1JlYWx0aW1lTWVkaWFT
b3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cyYgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2U6OnN1cHBv
cnRlZENvbnN0cmFpbnRzKCkKIHsKLSAgICBtX2N1cnJlbnRTdGF0ZXMuc2V0U291cmNlSWQoaWQo
KSk7Ci0gICAgdXBkYXRlU3RhdGVzKCk7CisgICAgaWYgKG1fc3VwcG9ydGVkQ29uc3RyYWludHMu
c3VwcG9ydHNEZXZpY2VJZCgpKQorICAgICAgICByZXR1cm4gbV9zdXBwb3J0ZWRDb25zdHJhaW50
czsKIAotICAgIHJldHVybiBtX2N1cnJlbnRTdGF0ZXM7CisgICAgbV9zdXBwb3J0ZWRDb25zdHJh
aW50cy5zZXRTdXBwb3J0c0RldmljZUlkKHRydWUpOworICAgIGluaXRpYWxpemVTdXBwb3J0ZWRD
b25zdHJhaW50cyhtX3N1cHBvcnRlZENvbnN0cmFpbnRzKTsKKworICAgIHJldHVybiBtX3N1cHBv
cnRlZENvbnN0cmFpbnRzOwogfQogCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlm
IC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
b2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZS5oCShyZXZpc2lvbiAxOTI5
MzApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291
cmNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU3LDIzICs1NywyNSBAQCBwdWJsaWM6CiBwcm90ZWN0
ZWQ6CiAgICAgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2UoY29uc3QgU3RyaW5nJiBpZCwgVHlwZSwg
Y29uc3QgU3RyaW5nJiBuYW1lKTsKIAotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTdGF0ZXMoKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVNldHRpbmdzKFJlYWx0aW1lTWVkaWFTb3VyY2VT
ZXR0aW5ncyYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZUNhcGFiaWxpdGllcyhS
ZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBp
bml0aWFsaXplU3VwcG9ydGVkQ29uc3RyYWludHMoUmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBvcnRl
ZENvbnN0cmFpbnRzJikgPSAwOwogCiAgICAgdm9pZCBzdGFydFByb2R1Y2luZ0RhdGEoKSBvdmVy
cmlkZSB7IG1faXNQcm9kdWNpbmdEYXRhID0gdHJ1ZTsgfQogICAgIHZvaWQgc3RvcFByb2R1Y2lu
Z0RhdGEoKSBvdmVycmlkZSB7IG1faXNQcm9kdWNpbmdEYXRhID0gZmFsc2U7IH0KIAogICAgIFJl
ZlB0cjxSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzPiBjYXBhYmlsaXRpZXMoKSBvdmVy
cmlkZTsKLSAgICBjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzJiBzdGF0ZXMoKSBvdmVy
cmlkZTsKKyAgICBjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmIHNldHRpbmdzKCkg
b3ZlcnJpZGU7CiAKLSAgICBSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzKiBjdXJyZW50U3RhdGVz
KCkgeyByZXR1cm4gJm1fY3VycmVudFN0YXRlczsgfQotICAgIE1lZGlhQ29uc3RyYWludHMqIGNv
bnN0cmFpbnRzKCkgeyByZXR1cm4gbV9jb25zdHJhaW50cy5nZXQoKTsgfQorICAgIE1lZGlhQ29u
c3RyYWludHMmIGNvbnN0cmFpbnRzKCkgeyByZXR1cm4gKm1fY29uc3RyYWludHMuZ2V0KCk7IH0K
KyAgICBSZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMmIHN1cHBvcnRlZENv
bnN0cmFpbnRzKCk7CiAKIHByaXZhdGU6CiAKICAgICBib29sIGlzUHJvZHVjaW5nRGF0YSgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1faXNQcm9kdWNpbmdEYXRhOyB9CiAKLSAgICBSZWFsdGlt
ZU1lZGlhU291cmNlU3RhdGVzIG1fY3VycmVudFN0YXRlczsKKyAgICBSZWFsdGltZU1lZGlhU291
cmNlU2V0dGluZ3MgbV9jdXJyZW50U2V0dGluZ3M7CisgICAgUmVhbHRpbWVNZWRpYVNvdXJjZVN1
cHBvcnRlZENvbnN0cmFpbnRzIG1fc3VwcG9ydGVkQ29uc3RyYWludHM7CiAgICAgUmVmUHRyPFJl
YWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM+IG1fY2FwYWJpbGl0aWVzOwogICAgIFJlZlB0
cjxNZWRpYUNvbnN0cmFpbnRzPiBtX2NvbnN0cmFpbnRzOwogICAgIGJvb2wgbV9pc1Byb2R1Y2lu
Z0RhdGEgeyBmYWxzZSB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2Nr
UmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAJKHJldmlzaW9uIDE5MjkzMCkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3IEBACiAjaW5jbHVkZSAiTWVkaWFDb25z
dHJhaW50cy5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiUGxhdGZv
cm1MYXllci5oIgotI2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXMuaCIKKyNpbmNs
dWRlICJSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MuaCIKICNpbmNsdWRlICJVVUlELmgiCiAj
aW5jbHVkZSA8bWF0aC5oPgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgpAQCAtOTAsMzkg
KzkwLDMyIEBAIGRvdWJsZSBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6ZWxhcHNlZFQKICAgICBy
ZXR1cm4gbV9lbGFwc2VkVGltZSArIChtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKSAtIG1f
c3RhcnRUaW1lKTsKIH0KIAotdm9pZCBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6dXBkYXRlU3Rh
dGVzKCkKK3ZvaWQgTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OnVwZGF0ZVNldHRpbmdzKFJlYWx0
aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYgc2V0dGluZ3MpCiB7Ci0gICAgUmVhbHRpbWVNZWRpYVNv
dXJjZVN0YXRlcyogc3RhdGVzID0gY3VycmVudFN0YXRlcygpOwotCi0gICAgc3RhdGVzLT5zZXRT
b3VyY2VUeXBlKFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXM6OkNhbWVyYSk7Ci0gICAgc3RhdGVz
LT5zZXRGYWNpbmdNb2RlKFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXM6OlVzZXIpOwotICAgIHN0
YXRlcy0+c2V0RnJhbWVSYXRlKG1fZnJhbWVSYXRlKTsKLSAgICBzdGF0ZXMtPnNldFdpZHRoKG1f
c2l6ZS53aWR0aCgpKTsKLSAgICBzdGF0ZXMtPnNldEhlaWdodChtX3NpemUuaGVpZ2h0KCkpOwot
ICAgIHN0YXRlcy0+c2V0QXNwZWN0UmF0aW8oc3RhdGljX2Nhc3Q8ZmxvYXQ+KG1fc2l6ZS53aWR0
aCgpKSAvIG1fc2l6ZS5oZWlnaHQoKSk7CisgICAgc2V0dGluZ3Muc2V0RmFjaW5nTW9kZShSZWFs
dGltZU1lZGlhU291cmNlU2V0dGluZ3M6OlVzZXIpOworICAgIHNldHRpbmdzLnNldEZyYW1lUmF0
ZShtX2ZyYW1lUmF0ZSk7CisgICAgc2V0dGluZ3Muc2V0V2lkdGgobV9zaXplLndpZHRoKCkpOwor
ICAgIHNldHRpbmdzLnNldEhlaWdodChtX3NpemUuaGVpZ2h0KCkpOworICAgIHNldHRpbmdzLnNl
dEFzcGVjdFJhdGlvKHN0YXRpY19jYXN0PGZsb2F0PihtX3NpemUud2lkdGgoKSkgLyBtX3NpemUu
aGVpZ2h0KCkpOwogfQogCiB2b2lkIE1vY2tSZWFsdGltZVZpZGVvU291cmNlOjppbml0aWFsaXpl
Q2FwYWJpbGl0aWVzKFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMmIGNhcGFiaWxpdGll
cykKIHsKLSAgICBjYXBhYmlsaXRpZXMuYWRkU291cmNlVHlwZShSZWFsdGltZU1lZGlhU291cmNl
U3RhdGVzOjpDYW1lcmEpOwotICAgIGNhcGFiaWxpdGllcy5hZGRGYWNpbmdNb2RlKFJlYWx0aW1l
TWVkaWFTb3VyY2VTdGF0ZXM6OlVzZXIpOwotICAgIGNhcGFiaWxpdGllcy5hZGRGYWNpbmdNb2Rl
KFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXM6OkVudmlyb25tZW50KTsKKyAgICBjYXBhYmlsaXRp
ZXMuYWRkRmFjaW5nTW9kZShSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OlVzZXIpOworICAg
IGNhcGFiaWxpdGllcy5hZGRGYWNpbmdNb2RlKFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6
RW52aXJvbm1lbnQpOwogICAgIGNhcGFiaWxpdGllcy5zZXRXaWR0aFJhbmdlKFJlYWx0aW1lTWVk
aWFTb3VyY2VDYXBhYmlsaXR5UmFuZ2UoMzIwVUwsIDE5MjBVTCwgdHJ1ZSkpOwogICAgIGNhcGFi
aWxpdGllcy5zZXRIZWlnaHRSYW5nZShSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0eVJhbmdl
KDI0MFVMLCAxMDgwVUwsIHRydWUpKTsKICAgICBjYXBhYmlsaXRpZXMuc2V0RnJhbWVSYXRlUmFu
Z2UoUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdHlSYW5nZSgxNS4wZiwgNjAuMGYsIHRydWUp
KTsKICAgICBjYXBhYmlsaXRpZXMuc2V0QXNwZWN0UmF0aW9SYW5nZShSZWFsdGltZU1lZGlhU291
cmNlQ2FwYWJpbGl0eVJhbmdlKDQgLyAzLjBmLCAxNiAvIDkuMGYsIHRydWUpKTsKIH0KIAotdm9p
ZCBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6c2V0RmFjaW5nTW9kZShSZWFsdGltZU1lZGlhU291
cmNlU3RhdGVzOjpWaWRlb0ZhY2luZ01vZGUgbW9kZSkKK3ZvaWQgTW9ja1JlYWx0aW1lVmlkZW9T
b3VyY2U6OmluaXRpYWxpemVTdXBwb3J0ZWRDb25zdHJhaW50cyhSZWFsdGltZU1lZGlhU291cmNl
U3VwcG9ydGVkQ29uc3RyYWludHMmIHN1cHBvcnRlZENvbnN0cmFpbnRzKQogewotICAgIFJlYWx0
aW1lTWVkaWFTb3VyY2VTdGF0ZXMqIHN0YXRlcyA9IGN1cnJlbnRTdGF0ZXMoKTsKLQotICAgIGlm
IChzdGF0ZXMtPmZhY2luZ01vZGUoKSA9PSBtb2RlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBz
dGF0ZXMtPnNldEZhY2luZ01vZGUobW9kZSk7Ci0KLSAgICBzdGF0ZXNEaWRDaGFuZ2VkKCk7Cisg
ICAgc3VwcG9ydGVkQ29uc3RyYWludHMuc2V0U3VwcG9ydHNXaWR0aCh0cnVlKTsKKyAgICBzdXBw
b3J0ZWRDb25zdHJhaW50cy5zZXRTdXBwb3J0c0hlaWdodCh0cnVlKTsKKyAgICBzdXBwb3J0ZWRD
b25zdHJhaW50cy5zZXRTdXBwb3J0c0FzcGVjdFJhdGlvKHRydWUpOworICAgIHN1cHBvcnRlZENv
bnN0cmFpbnRzLnNldFN1cHBvcnRzRnJhbWVSYXRlKHRydWUpOworICAgIHN1cHBvcnRlZENvbnN0
cmFpbnRzLnNldFN1cHBvcnRzRmFjaW5nTW9kZSh0cnVlKTsKIH0KIAogdm9pZCBNb2NrUmVhbHRp
bWVWaWRlb1NvdXJjZTo6c2V0RnJhbWVSYXRlKGZsb2F0IHJhdGUpCkBAIC0xMzQsNyArMTI3LDcg
QEAgdm9pZCBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6c2V0RnJhbWVSYQogICAgIGlmIChtX3Rp
bWVyLmlzQWN0aXZlKCkpCiAgICAgICAgIG1fdGltZXIuc3RhcnRSZXBlYXRpbmcoc3RkOjpjaHJv
bm86Om1pbGxpc2Vjb25kcyhscm91bmQoMTAwMCAvIG1fZnJhbWVSYXRlKSkpOwogCi0gICAgc3Rh
dGVzRGlkQ2hhbmdlZCgpOworICAgIHNldHRpbmdzRGlkQ2hhbmdlZCgpOwogfQogCiB2b2lkIE1v
Y2tSZWFsdGltZVZpZGVvU291cmNlOjpzZXRTaXplKGNvbnN0IEludFNpemUmIHNpemUpCkBAIC0x
NjksNyArMTYyLDcgQEAgdm9pZCBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6c2V0U2l6ZShjbwog
ICAgIG1faW1hZ2VCdWZmZXIgPSBudWxscHRyOwogICAgIHVwZGF0ZVBsYXRmb3JtTGF5ZXIoKTsK
IAotICAgIHN0YXRlc0RpZENoYW5nZWQoKTsKKyAgICBzZXR0aW5nc0RpZENoYW5nZWQoKTsKIH0K
IAogdm9pZCBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6ZHJhd0FuaW1hdGlvbihHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQpCkBAIC0yODQsMjAgKzI3NywyMCBAQCB2b2lkIE1vY2tSZWFsdGltZVZp
ZGVvU291cmNlOjpkcmF3VGV4dChHCiAgICAgY29udGV4dC5kcmF3VGV4dChtX3N0YXRzRm9udCwg
VGV4dFJ1bigoU3RyaW5nVmlldyhzdHJpbmcpKSksIHN0YXRzTG9jYXRpb24sIDAsIC0xKTsKIAog
ICAgIGNvbnN0IGNoYXIqIGNhbWVyYTsKLSAgICBzd2l0Y2ggKHN0YXRlcygpLmZhY2luZ01vZGUo
KSkgewotICAgIGNhc2UgUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlczo6VXNlcjoKKyAgICBzd2l0
Y2ggKHNldHRpbmdzKCkuZmFjaW5nTW9kZSgpKSB7CisgICAgY2FzZSBSZWFsdGltZU1lZGlhU291
cmNlU2V0dGluZ3M6OlVzZXI6CiAgICAgICAgIGNhbWVyYSA9ICJVc2VyIGZhY2luZyI7CiAgICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlczo6RW52aXJvbm1l
bnQ6CisgICAgY2FzZSBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkVudmlyb25tZW50Ogog
ICAgICAgICBjYW1lcmEgPSAiRW52aXJvbm1lbnQgZmFjaW5nIjsKICAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzOjpMZWZ0OgorICAgIGNhc2UgUmVhbHRp
bWVNZWRpYVNvdXJjZVNldHRpbmdzOjpMZWZ0OgogICAgICAgICBjYW1lcmEgPSAiTGVmdCBmYWNp
bmciOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXM6
OlJpZ2h0OgorICAgIGNhc2UgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpSaWdodDoKICAg
ICAgICAgY2FtZXJhID0gIlJpZ2h0IGZhY2luZyI7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
UmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlczo6VW5rbm93bjoKKyAgICBjYXNlIFJlYWx0aW1lTWVk
aWFTb3VyY2VTZXR0aW5nczo6VW5rbm93bjoKICAgICAgICAgY2FtZXJhID0gIlVua25vd24iOwog
ICAgICAgICBicmVhazsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2Nr
L01vY2tSZWFsdGltZVZpZGVvU291cmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5oCShyZXZpc2lvbiAxOTI5MzAp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTUzLDcgKzUzLDYgQEAgcHVibGljOgogICAgIHZvaWQgc2V0
U2l6ZShjb25zdCBJbnRTaXplJik7CiAgICAgY29uc3QgSW50U2l6ZSYgc2l6ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fc2l6ZTsgfQogCi0gICAgdm9pZCBzZXRGYWNpbmdNb2RlKFJlYWx0aW1lTWVkaWFT
b3VyY2VTdGF0ZXM6OlZpZGVvRmFjaW5nTW9kZSk7CiAgICAgdm9pZCBzZXRGcmFtZVJhdGUoZmxv
YXQpOwogCiBwcm90ZWN0ZWQ6CkBAIC02Myw4ICs2Miw5IEBAIHByb3RlY3RlZDoKICAgICBJbWFn
ZUJ1ZmZlciogaW1hZ2VCdWZmZXIoKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICB2b2lkIHVwZGF0
ZVN0YXRlcygpIG92ZXJyaWRlOworICAgIHZvaWQgdXBkYXRlU2V0dGluZ3MoUmVhbHRpbWVNZWRp
YVNvdXJjZVNldHRpbmdzJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBpbml0aWFsaXplQ2FwYWJpbGl0
aWVzKFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMmKSBvdmVycmlkZTsKKyAgICB2b2lk
IGluaXRpYWxpemVTdXBwb3J0ZWRDb25zdHJhaW50cyhSZWFsdGltZU1lZGlhU291cmNlU3VwcG9y
dGVkQ29uc3RyYWludHMmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgc3RhcnRQcm9kdWNpbmdEYXRh
KCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdG9wUHJvZHVjaW5nRGF0YSgpIG92ZXJyaWRlOwpJbmRl
eDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5n
ZUxvZwkocmV2aXNpb24gMTkyOTMwKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTUtMTItMDIgIEVyaWMgQ2FybHNvbiAgPGVyaWMu
Y2FybHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgW01lZGlhU3RyZWFtXSBJbXBsZW1lbnQgTWVk
aWFTdHJlYW1UcmFjay5nZXRTZXR0aW5ncygpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE3MjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0tdmlkZW8t
ZWxlbWVudC1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0
cmVhbS12aWRlby1lbGVtZW50LXRyYWNrLXN0b3AtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZh
c3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0tdmlkZW8tZWxlbWVudC10cmFjay1zdG9wLmh0bWw6
CisgICAgICAgICogZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS12aWRlby1lbGVtZW50Lmh0
bWw6CisgICAgICAgICogZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLWdldFNldHRp
bmdzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9tZWRpYXN0cmVhbS9NZWRp
YVN0cmVhbVRyYWNrLWdldFNldHRpbmdzLmh0bWw6IEFkZGVkLgorCiAyMDE1LTEyLTAxICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgW1NWRyAtPiBP
VEYgQ29udmVydGVyXSBGb3JjZSBVbml0c1BlckVtIHRvIDEwMDAKSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0tdmlkZW8tZWxlbWVudC1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS12
aWRlby1lbGVtZW50LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTkyOTMwKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS12aWRlby1lbGVtZW50LWV4cGVjdGVkLnR4
dAkod29ya2luZyBjb3B5KQpAQCAtMjEsOCArMjEsOCBAQCBFdmVudCAnY2FucGxheXRocm91Z2gn
CiB2aWRlby5wYXVzZSgpCiAKICoqKiogY2hlY2sgdmlkZW8gZWxlbWVudCAqKioqCi1QQVNTIHZp
ZGVvLnZpZGVvV2lkdGggaXMgbWVkaWFTdHJlYW0uZ2V0VmlkZW9UcmFja3MoKVswXS5zdGF0ZXMo
KS53aWR0aAotUEFTUyB2aWRlby52aWRlb0hlaWdodCBpcyBtZWRpYVN0cmVhbS5nZXRWaWRlb1Ry
YWNrcygpWzBdLnN0YXRlcygpLmhlaWdodAorUEFTUyB2aWRlby52aWRlb1dpZHRoIGlzIG1lZGlh
U3RyZWFtLmdldFZpZGVvVHJhY2tzKClbMF0uZ2V0U2V0dGluZ3MoKS53aWR0aAorUEFTUyB2aWRl
by52aWRlb0hlaWdodCBpcyBtZWRpYVN0cmVhbS5nZXRWaWRlb1RyYWNrcygpWzBdLmdldFNldHRp
bmdzKCkuaGVpZ2h0CiBQQVNTIHZpZGVvLnNyYy5pbmRleE9mKCJibG9iOiIpIGlzIDAKIFBBU1Mg
dmlkZW8uc3JjT2JqZWN0IGlzIG1lZGlhU3RyZWFtCiAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
bWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0tdmlkZW8tZWxlbWVudC10cmFjay1zdG9wLWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3Ry
ZWFtLXZpZGVvLWVsZW1lbnQtdHJhY2stc3RvcC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE5Mjkz
MCkKKysrIExheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0tdmlkZW8tZWxl
bWVudC10cmFjay1zdG9wLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMjIsOCArMjIs
OCBAQCB2aWRlby5wYXVzZSgpCiAKICoqKiogY2hlY2sgc3RhdGVzIHdpdGggbGl2ZSB2aWRlbyBz
dHJlYW0gdHJhY2sgKioqKgogUEFTUyB2aWRlby5lbmRlZCBpcyBmYWxzZQotUEFTUyB2aWRlby52
aWRlb1dpZHRoIGlzIG1lZGlhU3RyZWFtLmdldFZpZGVvVHJhY2tzKClbMF0uc3RhdGVzKCkud2lk
dGgKLVBBU1MgdmlkZW8udmlkZW9IZWlnaHQgaXMgbWVkaWFTdHJlYW0uZ2V0VmlkZW9UcmFja3Mo
KVswXS5zdGF0ZXMoKS5oZWlnaHQKK1BBU1MgdmlkZW8udmlkZW9XaWR0aCBpcyBtZWRpYVN0cmVh
bS5nZXRWaWRlb1RyYWNrcygpWzBdLmdldFNldHRpbmdzKCkud2lkdGgKK1BBU1MgdmlkZW8udmlk
ZW9IZWlnaHQgaXMgbWVkaWFTdHJlYW0uZ2V0VmlkZW9UcmFja3MoKVswXS5nZXRTZXR0aW5ncygp
LmhlaWdodAogUEFTUyB2aWRlby5zcmMuaW5kZXhPZigiYmxvYjoiKSBpcyAwCiBQQVNTIHZpZGVv
LnNyY09iamVjdCBpcyBtZWRpYVN0cmVhbQogCkBAIC00MSw4ICs0MSw4IEBAIG1lZGlhU3RyZWFt
LmdldFZpZGVvVHJhY2tzKClbMF0uZW5hYmxlZCAKIAogKioqKiByZS1jaGVjayBzdGF0ZXMgbm93
IHRoYXQgdGhlIHZpZGVvIHN0cmVhbSBoYXMgYmVlbiBkaXNhYmxlZCAqKioqCiBQQVNTIG1lZGlh
U3RyZWFtLmdldFZpZGVvVHJhY2tzKClbMF0uZW5hYmxlZCBpcyBmYWxzZQotUEFTUyB2aWRlby52
aWRlb1dpZHRoIGlzIG1lZGlhU3RyZWFtLmdldFZpZGVvVHJhY2tzKClbMF0uc3RhdGVzKCkud2lk
dGgKLVBBU1MgdmlkZW8udmlkZW9IZWlnaHQgaXMgbWVkaWFTdHJlYW0uZ2V0VmlkZW9UcmFja3Mo
KVswXS5zdGF0ZXMoKS5oZWlnaHQKK1BBU1MgdmlkZW8udmlkZW9XaWR0aCBpcyBtZWRpYVN0cmVh
bS5nZXRWaWRlb1RyYWNrcygpWzBdLmdldFNldHRpbmdzKCkud2lkdGgKK1BBU1MgdmlkZW8udmlk
ZW9IZWlnaHQgaXMgbWVkaWFTdHJlYW0uZ2V0VmlkZW9UcmFja3MoKVswXS5nZXRTZXR0aW5ncygp
LmhlaWdodAogCiAqKioqIHN0b3AgTWVkaWFTdHJlYW0gdHJhY2tzICoqKioKIG1lZGlhU3RyZWFt
LmdldFZpZGVvVHJhY2tzKClbMF0uZW5hYmxlZCA9IHRydWUKSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0tdmlkZW8tZWxlbWVudC10cmFjay1zdG9wLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS12
aWRlby1lbGVtZW50LXRyYWNrLXN0b3AuaHRtbAkocmV2aXNpb24gMTkyOTMwKQorKysgTGF5b3V0
VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS12aWRlby1lbGVtZW50LXRyYWNrLXN0
b3AuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNDQsOCArNDQsOCBAQAogICAgICAgICAgICAgewog
ICAgICAgICAgICAgICAgIGRlYnVnKCI8YnI+KioqKiByZS1jaGVjayBzdGF0ZXMgbm93IHRoYXQg
dGhlIHZpZGVvIHN0cmVhbSBoYXMgYmVlbiBkaXNhYmxlZCAqKioqIik7CiAgICAgICAgICAgICAg
ICAgc2hvdWxkQmUoJ21lZGlhU3RyZWFtLmdldFZpZGVvVHJhY2tzKClbMF0uZW5hYmxlZCcsICdm
YWxzZScpOwotICAgICAgICAgICAgICAgIHNob3VsZEJlKCd2aWRlby52aWRlb1dpZHRoJywgJ21l
ZGlhU3RyZWFtLmdldFZpZGVvVHJhY2tzKClbMF0uc3RhdGVzKCkud2lkdGgnKTsKLSAgICAgICAg
ICAgICAgICBzaG91bGRCZSgndmlkZW8udmlkZW9IZWlnaHQnLCAnbWVkaWFTdHJlYW0uZ2V0Vmlk
ZW9UcmFja3MoKVswXS5zdGF0ZXMoKS5oZWlnaHQnKTsKKyAgICAgICAgICAgICAgICBzaG91bGRC
ZSgndmlkZW8udmlkZW9XaWR0aCcsICdtZWRpYVN0cmVhbS5nZXRWaWRlb1RyYWNrcygpWzBdLmdl
dFNldHRpbmdzKCkud2lkdGgnKTsKKyAgICAgICAgICAgICAgICBzaG91bGRCZSgndmlkZW8udmlk
ZW9IZWlnaHQnLCAnbWVkaWFTdHJlYW0uZ2V0VmlkZW9UcmFja3MoKVswXS5nZXRTZXR0aW5ncygp
LmhlaWdodCcpOwogCiAgICAgICAgICAgICAgICAgZGVidWcoIjxicj4qKioqIHN0b3AgTWVkaWFT
dHJlYW0gdHJhY2tzICoqKioiKTsKICAgICAgICAgICAgICAgICBldmFsQW5kTG9nKCdtZWRpYVN0
cmVhbS5nZXRWaWRlb1RyYWNrcygpWzBdLmVuYWJsZWQgPSB0cnVlJyk7CkBAIC02MCw4ICs2MCw4
IEBACiAKICAgICAgICAgICAgICAgICBkZWJ1ZygiPGJyPioqKiogY2hlY2sgc3RhdGVzIHdpdGgg
bGl2ZSB2aWRlbyBzdHJlYW0gdHJhY2sgKioqKiIpOwogICAgICAgICAgICAgICAgIHNob3VsZEJl
KCd2aWRlby5lbmRlZCcsICdmYWxzZScpOwotICAgICAgICAgICAgICAgIHNob3VsZEJlKCd2aWRl
by52aWRlb1dpZHRoJywgJ21lZGlhU3RyZWFtLmdldFZpZGVvVHJhY2tzKClbMF0uc3RhdGVzKCku
d2lkdGgnKTsKLSAgICAgICAgICAgICAgICBzaG91bGRCZSgndmlkZW8udmlkZW9IZWlnaHQnLCAn
bWVkaWFTdHJlYW0uZ2V0VmlkZW9UcmFja3MoKVswXS5zdGF0ZXMoKS5oZWlnaHQnKTsKKyAgICAg
ICAgICAgICAgICBzaG91bGRCZSgndmlkZW8udmlkZW9XaWR0aCcsICdtZWRpYVN0cmVhbS5nZXRW
aWRlb1RyYWNrcygpWzBdLmdldFNldHRpbmdzKCkud2lkdGgnKTsKKyAgICAgICAgICAgICAgICBz
aG91bGRCZSgndmlkZW8udmlkZW9IZWlnaHQnLCAnbWVkaWFTdHJlYW0uZ2V0VmlkZW9UcmFja3Mo
KVswXS5nZXRTZXR0aW5ncygpLmhlaWdodCcpOwogICAgICAgICAgICAgICAgIHNob3VsZEJlKCd2
aWRlby5zcmMuaW5kZXhPZigiYmxvYjoiKScsICcwJyk7CiAgICAgICAgICAgICAgICAgc2hvdWxk
QmUoJ3ZpZGVvLnNyY09iamVjdCcsICdtZWRpYVN0cmVhbScpOwogICAgICAgICAgICAgICAgIApJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS12aWRlby1lbGVt
ZW50Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRp
YVN0cmVhbS12aWRlby1lbGVtZW50Lmh0bWwJKHJldmlzaW9uIDE5MjkzMCkKKysrIExheW91dFRl
c3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0tdmlkZW8tZWxlbWVudC5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMCw5ICszMCw2IEBACiAgICAgICAgICAgICBmdW5jdGlvbiBlbnVtZXJh
dGVQcm9wZXJ0aWVzKG9iamVjdCwgd29ya0Z1bmMpCiAgICAgICAgICAgICB7CiAgICAgICAgICAg
ICAgICAgZm9yICh2YXIgcHJvcGVydHkgaW4gb2JqZWN0KSB7Ci0gICAgICAgICAgICAgICAgICAg
IC8vIFdoZW4gaHR0cHM6Ly93ZWJraXQub3JnL2IvMTI5Mzc1IGlzIGZpeGVkLCB3ZSBoYXZlIHRv
IHJlbW92ZQotICAgICAgICAgICAgICAgICAgICAvLyBzdGF0ZXMuaGFzT3duUHJvcGVydHkocHJv
cGVydHkpLCBiZWNhdXNlIGFsbCB0aGUgYXR0cmlidXRlcwotICAgICAgICAgICAgICAgICAgICAv
LyB3aWxsIGJlIGluIHRoZSBwcm90b3R5cGUgY2hhaW4uCiAgICAgICAgICAgICAgICAgICAgIGlm
ICghb2JqZWN0Lmhhc093blByb3BlcnR5KHByb3BlcnR5KSAmJiAhb2JqZWN0Ll9fcHJvdG9fXy5o
YXNPd25Qcm9wZXJ0eShwcm9wZXJ0eSkpCiAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51
ZTsKICAgICAgICAgICAgICAgICAgICAgaWYgKG9iamVjdFtwcm9wZXJ0eV0gPT09IHVuZGVmaW5l
ZCkKQEAgLTU5LDggKzU2LDggQEAKICAgICAgICAgICAgICAgICBldmFsQW5kTG9nKCJ2aWRlby5w
YXVzZSgpIik7CiAKICAgICAgICAgICAgICAgICBkZWJ1ZygiPGJyPioqKiogY2hlY2sgdmlkZW8g
ZWxlbWVudCAqKioqIik7Ci0gICAgICAgICAgICAgICAgc2hvdWxkQmUoJ3ZpZGVvLnZpZGVvV2lk
dGgnLCAnbWVkaWFTdHJlYW0uZ2V0VmlkZW9UcmFja3MoKVswXS5zdGF0ZXMoKS53aWR0aCcpOwot
ICAgICAgICAgICAgICAgIHNob3VsZEJlKCd2aWRlby52aWRlb0hlaWdodCcsICdtZWRpYVN0cmVh
bS5nZXRWaWRlb1RyYWNrcygpWzBdLnN0YXRlcygpLmhlaWdodCcpOworICAgICAgICAgICAgICAg
IHNob3VsZEJlKCd2aWRlby52aWRlb1dpZHRoJywgJ21lZGlhU3RyZWFtLmdldFZpZGVvVHJhY2tz
KClbMF0uZ2V0U2V0dGluZ3MoKS53aWR0aCcpOworICAgICAgICAgICAgICAgIHNob3VsZEJlKCd2
aWRlby52aWRlb0hlaWdodCcsICdtZWRpYVN0cmVhbS5nZXRWaWRlb1RyYWNrcygpWzBdLmdldFNl
dHRpbmdzKCkuaGVpZ2h0Jyk7CiAgICAgICAgICAgICAgICAgc2hvdWxkQmUoJ3ZpZGVvLnNyYy5p
bmRleE9mKCJibG9iOiIpJywgJzAnKTsKICAgICAgICAgICAgICAgICBzaG91bGRCZSgndmlkZW8u
c3JjT2JqZWN0JywgJ21lZGlhU3RyZWFtJyk7CiAgICAgICAgICAgICAgICAgCkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2stZ2V0U2V0dGluZ3MtZXhw
ZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW1UcmFjay1nZXRTZXR0aW5ncy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2stZ2V0U2V0dGluZ3Mt
ZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjEgQEAKK1Rlc3RzIE1lZGlh
U3RyZWFtVHJhY2suZ2V0U2V0dGluZ3MuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNl
cmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKwor
Cit2aWRlbyB0cmFjazoKKyAgc2V0dGluZ3Mud2lkdGggPSA2NDAKKyAgc2V0dGluZ3MuaGVpZ2h0
ID0gNDgwCisgIHNldHRpbmdzLmFzcGVjdFJhdGlvID0gMS4zMworICBzZXR0aW5ncy5mcmFtZVJh
dGUgPSAzMAorICBzZXR0aW5ncy5mYWNpbmdNb2RlID0gdXNlcgorICBzZXR0aW5ncy5kZXZpY2VJ
ZCA9IDxVVUlEPgorCithdWRpbyB0cmFjazoKKyAgc2V0dGluZ3Mudm9sdW1lID0gNTAKKyAgc2V0
dGluZ3MuZGV2aWNlSWQgPSA8VVVJRD4KKworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1
ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0v
TWVkaWFTdHJlYW1UcmFjay1nZXRTZXR0aW5ncy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay1nZXRTZXR0aW5ncy5odG1sCShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRy
YWNrLWdldFNldHRpbmdzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MSBAQAorPCFE
T0NUWVBFIEhUTUw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQg
c3JjPSIuL3Jlc291cmNlcy9nZXRVc2VyTWVkaWEtaGVscGVyLmpzIj48L3NjcmlwdD4KKyAgICAg
ICAgPHNjcmlwdD4KKyAgICAgICAgICAgIHZhciBtZWRpYVN0cmVhbTsKKworICAgICAgICAgICAg
ZnVuY3Rpb24gbGltaXRQcmVjaXNpb24odmFsdWUsIHByZWNpc2lvbikKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAibnVtYmVyIiAmJiB2YWx1ZSAl
IDEgIT0gMCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlLnRvRml4ZWQocHJlY2lz
aW9uKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIGZ1bmN0aW9uIGdvdFN0cmVhbShzdHJlYW0pCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgbWVkaWFTdHJlYW0gPSBzdHJlYW07CisgICAgICAgICAgICAgICAgbWVkaWFT
dHJlYW0uZ2V0VHJhY2tzKCkuZm9yRWFjaChmdW5jdGlvbih0cmFjaykgeworICAgICAgICAgICAg
ICAgICAgICBkZWJ1ZyhgJHt0cmFjay5raW5kfSB0cmFjazpgKTsKKyAgICAgICAgICAgICAgICAg
ICAgc2V0dGluZ3MgPSB0cmFjay5nZXRTZXR0aW5ncygpOworICAgICAgICAgICAgICAgICAgICBm
b3IgKHZhciBwcm9wZXJ0eSBpbiBzZXR0aW5ncykgeworICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKHNldHRpbmdzLmhhc093blByb3BlcnR5KHByb3BlcnR5KSB8fCBzZXR0aW5ncy5fX3Byb3Rv
X18uaGFzT3duUHJvcGVydHkocHJvcGVydHkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChwcm9wZXJ0eSA9PSAiZGV2aWNlSWQiKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB2YWx1ZSA9ICImbHQ7VVVJRD4iOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBsaW1pdFByZWNpc2lv
bihzZXR0aW5nc1twcm9wZXJ0eV0sIDIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRl
YnVnKGAgIHNldHRpbmdzLiR7cHJvcGVydHl9ID0gJHt2YWx1ZX1gKTsKKyAgICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgICAgICBkZWJ1ZygiIik7CisgICAgICAgICAgICAgICAg
fSk7CisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIGZ1bmN0aW9uIHN0YXJ0KCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICBkZXNjcmlwdGlvbigiVGVzdHMgTWVkaWFTdHJlYW1UcmFjay5nZXRTZXR0aW5ncy4iKTsKKyAg
ICAgICAgICAgICAgICBnZXRVc2VyTWVkaWEoImFsbG93Iiwge2F1ZGlvOnRydWUsIHZpZGVvOnRy
dWV9LCBnb3RTdHJlYW0pOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB3aW5kb3cuanNU
ZXN0SXNBc3luYyA9IHRydWU7CisgICAgICAgICAgICB3aW5kb3cuc3VjY2Vzc2Z1bGx5UGFyc2Vk
ID0gdHJ1ZTsKKyAgICAgICAgPC9zY3JpcHQ+CisKKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25s
b2FkPSJzdGFydCgpIj4KKyAgICAgICAgPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+CisgICAgICAg
IDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CisgICAgPC9ib2R5PgorPC9odG1sPgo=
</data>
<flag name="review"
          id="291465"
          type_id="1"
          status="+"
          setter="jer.noble"
    />
          </attachment>
      

    </bug>

</bugzilla>