<?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>225968</bug_id>
          
          <creation_ts>2021-05-19 08:22:57 -0700</creation_ts>
          <short_desc>[macOS] Pull ServicesOverlayController::Highlight out into a separate helper class</short_desc>
          <delta_ts>2021-05-19 13:31:16 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Platform</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>aestes</cc>
    
    <cc>beidson</cc>
    
    <cc>hi</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1761535</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-05-19 08:22:57 -0700</bug_when>
    <thetext>..so that we can use it from within ImageOverlayController in a future patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1761585</commentid>
    <comment_count>1</comment_count>
      <attachid>429063</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-05-19 10:17:20 -0700</bug_when>
    <thetext>Created attachment 429063
For EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1761594</commentid>
    <comment_count>2</comment_count>
      <attachid>429065</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-05-19 10:35:25 -0700</bug_when>
    <thetext>Created attachment 429065
Fix non-internal macOS build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1761673</commentid>
    <comment_count>3</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-05-19 13:30:37 -0700</bug_when>
    <thetext>Committed r277747 (237917@main): &lt;https://commits.webkit.org/237917@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 429065.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1761674</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-05-19 13:31:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/78221745&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429063</attachid>
            <date>2021-05-19 10:17:20 -0700</date>
            <delta_ts>2021-05-19 10:48:49 -0700</delta_ts>
            <desc>For EWS</desc>
            <filename>bug-225968-20210519101719.patch</filename>
            <type>text/plain</type>
            <size>50564</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3NzIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTIwM2RmNjc1OTJlMjlj
MjVmOTNlMDMzOWE3YjdhYjRmZmM1ZjUzMS4uMWE5ZDQxZTdiZmY4YWYzMTNhZjZhNGM2M2NjZmFh
OGYwMTcyOTMyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk1IEBACisyMDIxLTA1LTE5ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFttYWNPU10gUHVs
bCBTZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyOjpIaWdobGlnaHQgb3V0IGludG8gYSBzZXBhcmF0
ZSBoZWxwZXIgY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIyNTk2OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFJlZmFjdG9yIHNvbWUgY29kZSBmb3IgcGFpbnRpbmcgZGF0YSBkZXRlY3RvciBoaWdo
bGlnaHRzIChgRERIaWdobGlnaHRSZWZgKSwgYnkgcHVsbGluZyB3aGF0IGlzIGN1cnJlbnRseQor
ICAgICAgICBgU2VydmljZXNPdmVybGF5Q29udHJvbGxlcjo6SGlnaGxpZ2h0YCBvdXQgaW50byBh
IHNlcGFyYXRlIGhlbHBlciBjbGFzcy4gSW4gYSBmdXR1cmUgcGF0Y2gsIEkgcGxhbiBvbiB1c2lu
ZyB0aGlzCisgICAgICAgIGZ1bmN0aW9uYWxpdHkgZm9yIHRoZSBpbWFnZSBvdmVybGF5IGNvbnRy
b2xsZXIgdG8gc3VwcG9ydCByZW5kZXJpbmcgZGF0YSBkZXRlY3RvciBoaWdobGlnaHRzIHRoZXJl
LgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWxzbyBtYWtlcyBzb21lIG1pbm9yIGFkanVzdG1lbnRz
OgorCisgICAgICAgIC0gICBNYWtlIGBEYXRhRGV0ZWN0b3JIaWdobGlnaHRgIGNhcGFibGUgb2Yg
YmVpbmcgc3RvcmVkIGluIGEgYFdlYWtQdHJgLCBhbmQgaGF2ZSBgU2VydmljZXNPdmVybGF5Q29u
dHJvbGxlcmAKKyAgICAgICAgICAgIGhvbGQgb24gdG8gYSBgV2Vha0hhc2hTZXQ8RGF0YURldGVj
dG9ySGlnaGxpZ2h0PmAgaW5zdGVhZCBvZiBhIGhhc2ggc2V0IG9mIHJhdyBwb2ludGVycy4gVGhp
cyBhZGRpdGlvbmFsbHkKKyAgICAgICAgICAgIG1ha2VzIGl0IHVubmVjZXNzYXJ5IHRvIGFkZCBt
ZXRob2RzIGZvciBgRGF0YURldGVjdG9ySGlnaGxpZ2h0YCB0byBub3RpZnkgYFNlcnZpY2VzT3Zl
cmxheUNvbnRyb2xsZXJgIHVwb24KKyAgICAgICAgICAgIGNyZWF0aW9uIG9yIGRlc3RydWN0aW9u
LCBzaW5jZSB3ZSBjYW4gc2ltcGx5IGFkZCB0aGUgbmV3bHkgY3JlYXRlZCBoaWdobGlnaHQgdG8g
dGhlIHdlYWsgc2V0IGFmdGVyIGNyZWF0aW5nCisgICAgICAgICAgICBpdCwgYW5kIHNpbmNlIGl0
J3MgYSBgV2Vha1B0cmAsIGl0IHdpbGwgZ2V0IGNsZWFuZWQgdXAgdXBvbiBkZXN0cnVjdGlvbi4K
KworICAgICAgICAtICAgTWFrZSBEYXRhRGV0ZWN0b3JIaWdobGlnaHQ6OlR5cGUgYW4gZW51bSBj
bGFzcywgYW5kIG1ha2UgYG1fZGlydHlIaWdobGlnaHRUeXBlc2AgYW4gYE9wdGlvblNldGAgaW5z
dGVhZCBvZgorICAgICAgICAgICAgYSByYXcgYml0bWFzay4KKworICAgICAgICAtICAgVXNlIGBh
dXRvYCBpbiBhIGZldyBwbGFjZXMgd2hlcmUgdGhlIHR5cGUgaXMgYXBwYXJlbnQgKGUuZy4gaW4g
c29tZSBwbGFjZXMgd2hlcmUgd2UgdXNlIGBhZG9wdENGYCkuCisKKyAgICAgICAgLSAgIE1ha2Ug
YGhpZ2hsaWdodEZhZGVBbmltYXRpb25EdXJhdGlvbmAgYSBgV1RGOjpTZWNvbmRzYCBpbnN0ZWFk
IG9mIGEgcmF3IGZsb2F0aW5nIHBvaW50IHZhbHVlLgorCisgICAgICAgIC0gICBBZGQgYSBGSVhN
RSBpbiBgRGF0YURldGVjdG9ySGlnaGxpZ2h0OjpwYWludENvbnRlbnRzYCBhYm91dCB0aGUgbmVl
ZCB0byByZWZhY3RvciB0aGlzIHBhaW50aW5nIGxvZ2ljIHNvIHRoYXQKKyAgICAgICAgICAgIGl0
IGRvZXMgKm5vdCogdXNlIHRoZSBwbGF0Zm9ybSBgQ0dDb250ZXh0UmVmYCBkaXJlY3RseS4KKwor
ICAgICAgICBObyBjaGFuZ2UgaW4gYmVoYXZpb3IuCisKKyAgICAgICAgKiBTb3VyY2VzQ29jb2Eu
dHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBwYWdlL21hYy9TZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyLmg6CisgICAgICAgIChXZWJD
b3JlOjpTZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyOjphY3RpdmVIaWdobGlnaHQgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6U2VydmljZXNPdmVybGF5Q29udHJvbGxlcjo6SGlnaGxpZ2h0Ojpk
ZEhpZ2hsaWdodCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlc092
ZXJsYXlDb250cm9sbGVyOjpIaWdobGlnaHQ6OnJhbmdlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlNlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXI6OkhpZ2hsaWdodDo6bGF5ZXIg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZXNPdmVybGF5Q29udHJv
bGxlcjo6SGlnaGxpZ2h0Ojp0eXBlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwYWdlL21h
Yy9TZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2Vydmlj
ZXNPdmVybGF5Q29udHJvbGxlcjo6flNlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6U2VydmljZXNPdmVybGF5Q29udHJvbGxlcjo6c2VsZWN0aW9uUmVjdHNEaWRD
aGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZXNPdmVybGF5Q29udHJvbGxlcjo6c2Vs
ZWN0ZWRUZWxlcGhvbmVOdW1iZXJSYW5nZXNDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNl
cnZpY2VzT3ZlcmxheUNvbnRyb2xsZXI6OmludmFsaWRhdGVIaWdobGlnaHRzT2ZUeXBlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXI6OmJ1aWxkUG90ZW50aWFs
SGlnaGxpZ2h0c0lmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VzT3ZlcmxheUNv
bnRyb2xsZXI6Om1vdXNlSXNPdmVySGlnaGxpZ2h0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlNlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXI6OnJlbWFpbmluZ1RpbWVVbnRpbEhpZ2hsaWdodFNo
b3VsZEJlU2hvd24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZXNPdmVybGF5Q29u
dHJvbGxlcjo6cmVtb3ZlQWxsUG90ZW50aWFsSGlnaGxpZ2h0c09mVHlwZSk6CisgICAgICAgIChX
ZWJDb3JlOjpTZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyOjpidWlsZFBob25lTnVtYmVySGlnaGxp
Z2h0cyk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyOjpidWls
ZFNlbGVjdGlvbkhpZ2hsaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlc092ZXJsYXlD
b250cm9sbGVyOjpyZXBsYWNlSGlnaGxpZ2h0c09mVHlwZVByZXNlcnZpbmdFcXVpdmFsZW50SGln
aGxpZ2h0cyk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyOjpm
aW5kVGVsZXBob25lTnVtYmVySGlnaGxpZ2h0Q29udGFpbmluZ1NlbGVjdGlvbkhpZ2hsaWdodCk6
CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyOjpkZXRlcm1pbmVB
Y3RpdmVIaWdobGlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZXNPdmVybGF5Q29udHJv
bGxlcjo6bW91c2VFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlc092ZXJsYXlDb250
cm9sbGVyOjpkaWRTY3JvbGxGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlc092ZXJs
YXlDb250cm9sbGVyOjpoYW5kbGVDbGljayk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlc092
ZXJsYXlDb250cm9sbGVyOjpzaG91bGRSZW1vdmVIaWdobGlnaHRMYXllckFmdGVyRmFkaW5nT3V0
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXI6Okhp
Z2hsaWdodDo6Y3JlYXRlRm9yU2VsZWN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OlNlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXI6OkhpZ2hsaWdodDo6Y3JlYXRlRm9yVGVsZXBob25l
TnVtYmVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VzT3ZlcmxheUNvbnRy
b2xsZXI6OkhpZ2hsaWdodDo6SGlnaGxpZ2h0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OlNlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXI6OkhpZ2hsaWdodDo6fkhpZ2hsaWdodCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyOjpIaWdobGln
aHQ6OnNldERESGlnaGxpZ2h0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2Vz
T3ZlcmxheUNvbnRyb2xsZXI6OkhpZ2hsaWdodDo6aW52YWxpZGF0ZSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpTZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyOjpIaWdobGlnaHQ6Om5vdGlm
eUZsdXNoUmVxdWlyZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZXNPdmVy
bGF5Q29udHJvbGxlcjo6SGlnaGxpZ2h0OjpwYWludENvbnRlbnRzKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlNlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXI6OkhpZ2hsaWdodDo6ZGV2aWNl
U2NhbGVGYWN0b3IgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZXNP
dmVybGF5Q29udHJvbGxlcjo6SGlnaGxpZ2h0OjpmYWRlSW4pOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6U2VydmljZXNPdmVybGF5Q29udHJvbGxlcjo6SGlnaGxpZ2h0OjpmYWRlT3V0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXI6Okhp
Z2hsaWdodDo6ZGlkRmluaXNoRmFkZU91dEFuaW1hdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpTZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyOjpoaWdobGlnaHRzQXJlRXF1aXZhbGVu
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlc092ZXJsYXlDb250cm9sbGVy
OjpkaWRDcmVhdGVIaWdobGlnaHQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2Vydmlj
ZXNPdmVybGF5Q29udHJvbGxlcjo6d2lsbERlc3Ryb3lIaWdobGlnaHQpOiBEZWxldGVkLgorICAg
ICAgICAqIHBsYXRmb3JtL21hYy9EYXRhRGV0ZWN0b3JIaWdobGlnaHQuaDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjpEYXRhRGV0ZWN0b3JIaWdobGlnaHRDbGllbnQ6OnNob3VsZFJlbW92ZUhp
Z2hsaWdodExheWVyQWZ0ZXJGYWRpbmdPdXQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGF0
YURldGVjdG9ySGlnaGxpZ2h0OjpoaWdobGlnaHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
RGF0YURldGVjdG9ySGlnaGxpZ2h0OjpyYW5nZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpE
YXRhRGV0ZWN0b3JIaWdobGlnaHQ6OmxheWVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRh
dGFEZXRlY3RvckhpZ2hsaWdodDo6dHlwZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vbWFj
L0RhdGFEZXRlY3RvckhpZ2hsaWdodC5tbTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpEYXRh
RGV0ZWN0b3JIaWdobGlnaHQ6OmNyZWF0ZUZvclNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpEYXRhRGV0ZWN0b3JIaWdobGlnaHQ6OmNyZWF0ZUZvclRlbGVwaG9uZU51bWJlcik6CisgICAg
ICAgIChXZWJDb3JlOjpEYXRhRGV0ZWN0b3JIaWdobGlnaHQ6OkRhdGFEZXRlY3RvckhpZ2hsaWdo
dCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhRGV0ZWN0b3JIaWdobGlnaHQ6OnNldEhpZ2hsaWdo
dCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhRGV0ZWN0b3JIaWdobGlnaHQ6OmludmFsaWRhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6RGF0YURldGVjdG9ySGlnaGxpZ2h0Ojpub3RpZnlGbHVzaFJl
cXVpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFEZXRlY3RvckhpZ2hsaWdodDo6cGFpbnRD
b250ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhRGV0ZWN0b3JIaWdobGlnaHQ6OmRldmlj
ZVNjYWxlRmFjdG9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFEZXRlY3RvckhpZ2hs
aWdodDo6ZmFkZUluKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFEZXRlY3RvckhpZ2hsaWdodDo6
ZmFkZU91dCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhRGV0ZWN0b3JIaWdobGlnaHQ6OmRpZEZp
bmlzaEZhZGVPdXRBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6YXJlRXF1aXZhbGVudCk6
CisKIDIwMjEtMDUtMTkgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAK
ICAgICAgICAgW0dQVSBQcm9jZXNzXSBBZGQgbW9yZSBib3VuZHMgY2hlY2tpbmcgYW5kIGlucHV0
IHZhbGlkYXRpb24gaW4gRGlzcGxheUxpc3RJdGVyYXRvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQK
aW5kZXggOTJjYjJjNDk4NThiM2Y4MmQxYjZmNWQxYjgzOWMzMDU4MjJjMDAxNC4uNzYzYzFjN2U4
MmVhZjE4YWExMjA0OGU0ZTU3YWFlYTQ0M2EwODlhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0
CkBAIC00ODAsNiArNDgwLDcgQEAgcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkUnVuLmNw
cAogcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkU3lzdGVtSW50ZXJmYWNlLmNwcAogcGxh
dGZvcm0vbWFjL0Jsb2NrbGlzdFVwZGF0ZXIubW0KIHBsYXRmb3JtL21hYy9DdXJzb3JNYWMubW0g
QG5vLXVuaWZ5CitwbGF0Zm9ybS9tYWMvRGF0YURldGVjdG9ySGlnaGxpZ2h0Lm1tCiBwbGF0Zm9y
bS9tYWMvSElERGV2aWNlLmNwcAogcGxhdGZvcm0vbWFjL0hJREVsZW1lbnQuY3BwCiBwbGF0Zm9y
bS9tYWMvS2V5RXZlbnRNYWMubW0gQG5vLXVuaWZ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZjAyZGZlZGNjNDI3OTU4Y2E2YTVm
ODE2NjFhM2VkZmUyOTkxNmZkMi4uYjcxZjAwOGFkZDVkYjc4YzBlNjU0MTNiMTAzMmNmZTQ4M2Fi
N2VhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtNTM1NCw2ICs1MzU0LDcgQEAKIAkJRjQ4RDJBN0UyMTU3MTgyNjAwQzY3NTJC
IC8qIEZvbnRBdHRyaWJ1dGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGNDhEMkE3MTIxNTZEQzBBMDBDNjc1MkIgLyogRm9udEF0dHJpYnV0ZXMuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGNDhEMkFB
NTIxNTk3NDBEMDBDNjc1MkIgLyogQ29sb3JDb2NvYS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ4RDJBQTMyMTU5NzQwRDAwQzY3NTJCIC8qIENvbG9y
Q29jb2EuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlGNDk3ODY4ODFGRjQ1RkE1MDBFMDYwQUIgLyogUGFzdGVib2FyZEl0ZW1JbmZvLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDk3ODY4NzFGRjQ1RkE1
MDBFMDYwQUIgLyogUGFzdGVib2FyZEl0ZW1JbmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRjRCMkE5MDkyNjUwMzBCQTAwOUU3Mjg2IC8qIERh
dGFEZXRlY3RvckhpZ2hsaWdodC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRjRCMkE5MDYyNjUwMkJBMDAwOUU3Mjg2IC8qIERhdGFEZXRlY3RvckhpZ2hs
aWdodC5oICovOyB9OwogCQlGNEI0MjJDNDIyMEMwNTY4MDA5RTFFN0QgLyogRE9NUGFzdGVBY2Nl
c3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0QjQy
MkMyMjIwQzAwMDAwMDlFMUU3RCAvKiBET01QYXN0ZUFjY2Vzcy5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUY0QkZCOTg1MUUxRERGOUIwMDg2MkMy
NCAvKiBEdW1wRWRpdGluZ0hpc3RvcnkuanMgaW4gQ29weSBTY3JpcHRzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0ODM4OTgzMUUxRERGMkIwMDc2QjdFQSAvKiBEdW1wRWRp
dGluZ0hpc3RvcnkuanMgKi87IH07CiAJCUY0QkZCOTg2MUUxRERGOUIwMDg2MkMyNCAvKiBFZGl0
aW5nSGlzdG9yeVV0aWwuanMgaW4gQ29weSBTY3JpcHRzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEY0ODM4OTg0MUUxRERGMkIwMDc2QjdFQSAvKiBFZGl0aW5nSGlzdG9yeVV0
aWwuanMgKi87IH07CkBAIC0xNjgzMCw2ICsxNjgzMSw4IEBACiAJCUY0OEQyQUE0MjE1OTc0MEQw
MEM2NzUyQiAvKiBDb2xvckNvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQ29sb3JDb2Nv
YS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQ5Nzg2ODcxRkY0NUZBNTAwRTA2
MEFCIC8qIFBhc3RlYm9hcmRJdGVtSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYXN0ZWJvYXJkSXRl
bUluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQ5RTk4RTQyMURFRTZDMTAw
OUFFNTVFIC8qIEVkaXRBY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRWRpdEFjdGlvbi5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY0QjJBOTA2MjY1MDJCQTAwMDlFNzI4
NiAvKiBEYXRhRGV0ZWN0b3JIaWdobGlnaHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGF0YURldGVjdG9y
SGlnaGxpZ2h0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY0QjJBOTA4MjY1MDJC
QzAwMDlFNzI4NiAvKiBEYXRhRGV0ZWN0b3JIaWdobGlnaHQubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBEYXRhRGV0ZWN0b3JIaWdobGlnaHQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUY0QjQyMkMyMjIwQzAwMDAwMDlFMUU3RCAvKiBET01QYXN0ZUFjY2Vzcy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBET01QYXN0ZUFjY2Vzcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlG
NEM1RjIwNTI0NzlFN0VFMDBFOUI0RjUgLyogQ2xpcGJvYXJkSW1hZ2VSZWFkZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQ2xpcGJvYXJkSW1hZ2VSZWFkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRjRDNUYyMDgyNDc5RTlDODAwRTlCNEY1IC8qIENsaXBib2FyZEltYWdlUmVhZGVyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENsaXBib2FyZEltYWdlUmVhZGVyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIyMTcwLDYgKzIyMTczLDggQEAKIAkJCQkxQUZGQzQ0RDFE
NUU3RUM3MDAyNjdBNjYgLyogQmxvY2tsaXN0VXBkYXRlci5oICovLAogCQkJCTFBRkZDNDRFMUQ1
RTdFQzcwMDI2N0E2NiAvKiBCbG9ja2xpc3RVcGRhdGVyLm1tICovLAogCQkJCUY1ODc4NEYwMDJE
RTM3NTkwMUVBNDEyMiAvKiBDdXJzb3JNYWMubW0gKi8sCisJCQkJRjRCMkE5MDYyNjUwMkJBMDAw
OUU3Mjg2IC8qIERhdGFEZXRlY3RvckhpZ2hsaWdodC5oICovLAorCQkJCUY0QjJBOTA4MjY1MDJC
QzAwMDlFNzI4NiAvKiBEYXRhRGV0ZWN0b3JIaWdobGlnaHQubW0gKi8sCiAJCQkJRTFCQTY2RjAx
NzQyQkQ4NjAwQzIwMjUxIC8qIER5bmFtaWNMaW5rZXJJbnRlcnBvc2luZy5oICovLAogCQkJCTUx
MEE5MUU1MjRDRkNDMTgwMEJGRDg5QyAvKiBISUREZXZpY2UuY3BwICovLAogCQkJCTUxMEE5MUUy
MjRDRkNDMTgwMEJGRDg5QyAvKiBISUREZXZpY2UuaCAqLywKQEAgLTMyMTYyLDYgKzMyMTY3LDcg
QEAKIAkJCQk5N0JDNkEzMjE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VUcmFja2VyLmggaW4g
SGVhZGVycyAqLywKIAkJCQlCRTIzNDgwRDE4QTk4NzE0MDBFNEI2RTggLyogRGF0YUN1ZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQzUyMjdERjExQzNDNkRGMTAwRjVFRDU0IC8qIERhdGFEZXRlY3Rp
b24uaCBpbiBIZWFkZXJzICovLAorCQkJCUY0QjJBOTA5MjY1MDMwQkEwMDlFNzI4NiAvKiBEYXRh
RGV0ZWN0b3JIaWdobGlnaHQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNEE1MzM1MjU2MDVBNTYw
MDI4QzU5MiAvKiBEYXRhRGV0ZWN0b3JUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNThCNDVC
QTIwQUQwN0REMDA5OTEwMjUgLyogRGF0YUxpc3RCdXR0b25FbGVtZW50LmggaW4gSGVhZGVycyAq
LywKIAkJCQlFNTE3NjcwMzIwQjg4QzE0MDBENDExNjcgLyogRGF0YUxpc3RTdWdnZXN0aW9uSW5m
b3JtYXRpb24uaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9tYWMvU2VydmljZXNPdmVybGF5Q29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9t
YWMvU2VydmljZXNPdmVybGF5Q29udHJvbGxlci5oCmluZGV4IGY1MDgyZmRmNWNkMTFhMDQxNDRm
OTAwNTI3ZTdlZmY1NWY1NTZhMzMuLjk0YjExMTkzMjRmYWQyMmRmMjM0NDVmYTU2YTA5Y2RjM2Yz
YWViZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1NlcnZpY2VzT3Zlcmxh
eUNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9TZXJ2aWNlc092ZXJs
YXlDb250cm9sbGVyLmgKQEAgLTI3LDEzICsyNywxMyBAQAogCiAjaWYgKEVOQUJMRShTRVJWSUNF
X0NPTlRST0xTKSB8fCBFTkFCTEUoVEVMRVBIT05FX05VTUJFUl9ERVRFQ1RJT04pKSAmJiBQTEFU
Rk9STShNQUMpCiAKKyNpbmNsdWRlICJEYXRhRGV0ZWN0b3JIaWdobGlnaHQuaCIKICNpbmNsdWRl
ICJHcmFwaGljc0xheWVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiUGFnZU92ZXJsYXkuaCIKLSNpbmNs
dWRlICJSYW5nZS5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSA8d3RmL01vbm90b25p
Y1RpbWUuaD4KLQotdHlwZWRlZiBzdHJ1Y3QgX19EREhpZ2hsaWdodCAqRERIaWdobGlnaHRSZWY7
CisjaW5jbHVkZSA8d3RmL09wdGlvblNldC5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrSGFzaFNldC5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCkBAIC00Miw3ICs0Miw3IEBAIGNsYXNzIFBh
Z2U7CiAKIHN0cnVjdCBHYXBSZWN0czsKIAotY2xhc3MgU2VydmljZXNPdmVybGF5Q29udHJvbGxl
ciA6IHByaXZhdGUgUGFnZU92ZXJsYXk6OkNsaWVudCB7CitjbGFzcyBTZXJ2aWNlc092ZXJsYXlD
b250cm9sbGVyIDogcHJpdmF0ZSBEYXRhRGV0ZWN0b3JIaWdobGlnaHRDbGllbnQsIHByaXZhdGUg
UGFnZU92ZXJsYXk6OkNsaWVudCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6CiAgICAgZXhwbGljaXQgU2VydmljZXNPdmVybGF5Q29udHJvbGxlcihQYWdlJik7CkBAIC01
Miw0OCArNTIsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZWxlY3Rpb25SZWN0c0RpZENoYW5nZShj
b25zdCBWZWN0b3I8TGF5b3V0UmVjdD4mLCBjb25zdCBWZWN0b3I8R2FwUmVjdHM+JiwgYm9vbCBp
c1RleHRPbmx5KTsKIAogcHJpdmF0ZToKLSAgICBjbGFzcyBIaWdobGlnaHQgOiBwdWJsaWMgUmVm
Q291bnRlZDxIaWdobGlnaHQ+LCBwcml2YXRlIEdyYXBoaWNzTGF5ZXJDbGllbnQgewotICAgICAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShIaWdobGlnaHQpOwotICAgIHB1YmxpYzoKLSAgICAgICAg
c3RhdGljIFJlZjxIaWdobGlnaHQ+IGNyZWF0ZUZvclNlbGVjdGlvbihTZXJ2aWNlc092ZXJsYXlD
b250cm9sbGVyJiwgUmV0YWluUHRyPERESGlnaGxpZ2h0UmVmPiYmLCBTaW1wbGVSYW5nZSYmKTsK
LSAgICAgICAgc3RhdGljIFJlZjxIaWdobGlnaHQ+IGNyZWF0ZUZvclRlbGVwaG9uZU51bWJlcihT
ZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyJiwgUmV0YWluUHRyPERESGlnaGxpZ2h0UmVmPiYmLCBT
aW1wbGVSYW5nZSYmKTsKLSAgICAgICAgfkhpZ2hsaWdodCgpOwotCi0gICAgICAgIHZvaWQgaW52
YWxpZGF0ZSgpOwotCi0gICAgICAgIERESGlnaGxpZ2h0UmVmIGRkSGlnaGxpZ2h0KCkgY29uc3Qg
eyByZXR1cm4gbV9kZEhpZ2hsaWdodC5nZXQoKTsgfQotICAgICAgICBjb25zdCBTaW1wbGVSYW5n
ZSYgcmFuZ2UoKSBjb25zdCB7IHJldHVybiBtX3JhbmdlOyB9Ci0gICAgICAgIEdyYXBoaWNzTGF5
ZXImIGxheWVyKCkgY29uc3QgeyByZXR1cm4gbV9ncmFwaGljc0xheWVyLmdldCgpOyB9Ci0KLSAg
ICAgICAgZW51bSB7Ci0gICAgICAgICAgICBUZWxlcGhvbmVOdW1iZXJUeXBlID0gMSA8PCAwLAot
ICAgICAgICAgICAgU2VsZWN0aW9uVHlwZSA9IDEgPDwgMSwKLSAgICAgICAgfTsKLSAgICAgICAg
dHlwZWRlZiB1aW50OF90IFR5cGU7Ci0gICAgICAgIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJu
IG1fdHlwZTsgfQotCi0gICAgICAgIHZvaWQgZmFkZUluKCk7Ci0gICAgICAgIHZvaWQgZmFkZU91
dCgpOwotCi0gICAgICAgIHZvaWQgc2V0RERIaWdobGlnaHQoRERIaWdobGlnaHRSZWYpOwotCi0g
ICAgcHJpdmF0ZToKLSAgICAgICAgSGlnaGxpZ2h0KFNlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXIm
LCBUeXBlLCBSZXRhaW5QdHI8RERIaWdobGlnaHRSZWY+JiYsIFNpbXBsZVJhbmdlJiYpOwotCi0g
ICAgICAgIC8vIEdyYXBoaWNzTGF5ZXJDbGllbnQKLSAgICAgICAgdm9pZCBub3RpZnlGbHVzaFJl
cXVpcmVkKGNvbnN0IEdyYXBoaWNzTGF5ZXIqKSBvdmVycmlkZTsKLSAgICAgICAgdm9pZCBwYWlu
dENvbnRlbnRzKGNvbnN0IEdyYXBoaWNzTGF5ZXIqLCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBG
bG9hdFJlY3QmIGluQ2xpcCwgR3JhcGhpY3NMYXllclBhaW50QmVoYXZpb3IpIG92ZXJyaWRlOwot
ICAgICAgICBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcigpIGNvbnN0IG92ZXJyaWRlOwotCi0gICAg
ICAgIHZvaWQgZGlkRmluaXNoRmFkZU91dEFuaW1hdGlvbigpOwotCi0gICAgICAgIFNlcnZpY2Vz
T3ZlcmxheUNvbnRyb2xsZXIqIG1fY29udHJvbGxlcjsKLSAgICAgICAgUmV0YWluUHRyPERESGln
aGxpZ2h0UmVmPiBtX2RkSGlnaGxpZ2h0OwotICAgICAgICBTaW1wbGVSYW5nZSBtX3JhbmdlOwot
ICAgICAgICBSZWY8R3JhcGhpY3NMYXllcj4gbV9ncmFwaGljc0xheWVyOwotICAgICAgICBUeXBl
IG1fdHlwZTsKLSAgICB9OwotCiAgICAgLy8gUGFnZU92ZXJsYXk6OkNsaWVudAogICAgIHZvaWQg
d2lsbE1vdmVUb1BhZ2UoUGFnZU92ZXJsYXkmLCBQYWdlKikgb3ZlcnJpZGU7CiAgICAgdm9pZCBk
aWRNb3ZlVG9QYWdlKFBhZ2VPdmVybGF5JiwgUGFnZSopIG92ZXJyaWRlOwpAQCAtMTAyLDYyICs2
MCw1NCBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkU2Nyb2xsRnJhbWUoUGFnZU92ZXJsYXkmLCBG
cmFtZSYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBjcmVhdGVPdmVybGF5SWZOZWVkZWQoKTsKLSAg
ICB2b2lkIGhhbmRsZUNsaWNrKGNvbnN0IEludFBvaW50JiwgSGlnaGxpZ2h0Jik7CisgICAgdm9p
ZCBoYW5kbGVDbGljayhjb25zdCBJbnRQb2ludCYsIERhdGFEZXRlY3RvckhpZ2hsaWdodCYpOwog
Ci0gICAgdm9pZCBkcmF3SGlnaGxpZ2h0KEhpZ2hsaWdodCYsIEdyYXBoaWNzQ29udGV4dCYpOwor
ICAgIHZvaWQgZHJhd0hpZ2hsaWdodChEYXRhRGV0ZWN0b3JIaWdobGlnaHQmLCBHcmFwaGljc0Nv
bnRleHQmKTsKIAotICAgIHZvaWQgaW52YWxpZGF0ZUhpZ2hsaWdodHNPZlR5cGUoSGlnaGxpZ2h0
OjpUeXBlKTsKKyAgICB2b2lkIGludmFsaWRhdGVIaWdobGlnaHRzT2ZUeXBlKERhdGFEZXRlY3Rv
ckhpZ2hsaWdodDo6VHlwZSk7CiAgICAgdm9pZCBidWlsZFBvdGVudGlhbEhpZ2hsaWdodHNJZk5l
ZWRlZCgpOwogCi0gICAgdm9pZCByZXBsYWNlSGlnaGxpZ2h0c09mVHlwZVByZXNlcnZpbmdFcXVp
dmFsZW50SGlnaGxpZ2h0cyhIYXNoU2V0PFJlZlB0cjxIaWdobGlnaHQ+PiYsIEhpZ2hsaWdodDo6
VHlwZSk7Ci0gICAgdm9pZCByZW1vdmVBbGxQb3RlbnRpYWxIaWdobGlnaHRzT2ZUeXBlKEhpZ2hs
aWdodDo6VHlwZSk7CisgICAgdm9pZCByZXBsYWNlSGlnaGxpZ2h0c09mVHlwZVByZXNlcnZpbmdF
cXVpdmFsZW50SGlnaGxpZ2h0cyhIYXNoU2V0PFJlZlB0cjxEYXRhRGV0ZWN0b3JIaWdobGlnaHQ+
PiYsIERhdGFEZXRlY3RvckhpZ2hsaWdodDo6VHlwZSk7CisgICAgdm9pZCByZW1vdmVBbGxQb3Rl
bnRpYWxIaWdobGlnaHRzT2ZUeXBlKERhdGFEZXRlY3RvckhpZ2hsaWdodDo6VHlwZSk7CiAgICAg
dm9pZCBidWlsZFBob25lTnVtYmVySGlnaGxpZ2h0cygpOwogICAgIHZvaWQgYnVpbGRTZWxlY3Rp
b25IaWdobGlnaHQoKTsKIAogICAgIHZvaWQgZGV0ZXJtaW5lQWN0aXZlSGlnaGxpZ2h0KGJvb2wm
IG1vdXNlSXNPdmVyQnV0dG9uKTsKICAgICB2b2lkIGNsZWFyQWN0aXZlSGlnaGxpZ2h0KCk7Ci0g
ICAgSGlnaGxpZ2h0KiBhY3RpdmVIaWdobGlnaHQoKSBjb25zdCB7IHJldHVybiBtX2FjdGl2ZUhp
Z2hsaWdodC5nZXQoKTsgfQorICAgIERhdGFEZXRlY3RvckhpZ2hsaWdodCogYWN0aXZlSGlnaGxp
Z2h0KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9hY3RpdmVIaWdobGlnaHQuZ2V0KCk7IH0KIAot
ICAgIEhpZ2hsaWdodCogZmluZFRlbGVwaG9uZU51bWJlckhpZ2hsaWdodENvbnRhaW5pbmdTZWxl
Y3Rpb25IaWdobGlnaHQoSGlnaGxpZ2h0Jik7CisgICAgRGF0YURldGVjdG9ySGlnaGxpZ2h0KiBm
aW5kVGVsZXBob25lTnVtYmVySGlnaGxpZ2h0Q29udGFpbmluZ1NlbGVjdGlvbkhpZ2hsaWdodChE
YXRhRGV0ZWN0b3JIaWdobGlnaHQmKTsKIAogICAgIGJvb2wgaGFzUmVsZXZhbnRTZWxlY3Rpb25T
ZXJ2aWNlcygpOwogCi0gICAgYm9vbCBtb3VzZUlzT3ZlckhpZ2hsaWdodChIaWdobGlnaHQmLCBi
b29sJiBtb3VzZUlzT3ZlckJ1dHRvbikgY29uc3Q7Ci0gICAgU2Vjb25kcyByZW1haW5pbmdUaW1l
VW50aWxIaWdobGlnaHRTaG91bGRCZVNob3duKEhpZ2hsaWdodCopIGNvbnN0OworICAgIGJvb2wg
bW91c2VJc092ZXJIaWdobGlnaHQoRGF0YURldGVjdG9ySGlnaGxpZ2h0JiwgYm9vbCYgbW91c2VJ
c092ZXJCdXR0b24pIGNvbnN0OworICAgIFNlY29uZHMgcmVtYWluaW5nVGltZVVudGlsSGlnaGxp
Z2h0U2hvdWxkQmVTaG93bihEYXRhRGV0ZWN0b3JIaWdobGlnaHQqKSBjb25zdDsKICAgICB2b2lk
IGRldGVybWluZUFjdGl2ZUhpZ2hsaWdodFRpbWVyRmlyZWQoKTsKIAotICAgIHN0YXRpYyBib29s
IGhpZ2hsaWdodHNBcmVFcXVpdmFsZW50KGNvbnN0IEhpZ2hsaWdodCosIGNvbnN0IEhpZ2hsaWdo
dCopOwotCiAgICAgVmVjdG9yPFNpbXBsZVJhbmdlPiB0ZWxlcGhvbmVOdW1iZXJSYW5nZXNGb3JG
b2N1c2VkRnJhbWUoKTsKIAotICAgIHZvaWQgZGlkQ3JlYXRlSGlnaGxpZ2h0KEhpZ2hsaWdodCop
OwotICAgIHZvaWQgd2lsbERlc3Ryb3lIaWdobGlnaHQoSGlnaGxpZ2h0Kik7Ci0gICAgdm9pZCBk
aWRGaW5pc2hGYWRpbmdPdXRIaWdobGlnaHQoSGlnaGxpZ2h0Kik7Ci0KICAgICBGcmFtZSYgbWFp
bkZyYW1lKCkgY29uc3Q7CiAgICAgUGFnZSYgcGFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZTsg
fQogCiAgICAgUGFnZSYgbV9wYWdlOwogICAgIFBhZ2VPdmVybGF5KiBtX3NlcnZpY2VzT3Zlcmxh
eSB7IG51bGxwdHIgfTsKIAotICAgIFJlZlB0cjxIaWdobGlnaHQ+IG1fYWN0aXZlSGlnaGxpZ2h0
OwotICAgIFJlZlB0cjxIaWdobGlnaHQ+IG1fbmV4dEFjdGl2ZUhpZ2hsaWdodDsKLSAgICBIYXNo
U2V0PFJlZlB0cjxIaWdobGlnaHQ+PiBtX3BvdGVudGlhbEhpZ2hsaWdodHM7Ci0gICAgSGFzaFNl
dDxSZWZQdHI8SGlnaGxpZ2h0Pj4gbV9hbmltYXRpbmdIaWdobGlnaHRzOwotCi0gICAgSGFzaFNl
dDxIaWdobGlnaHQqPiBtX2hpZ2hsaWdodHM7CisgICAgUmVmUHRyPERhdGFEZXRlY3RvckhpZ2hs
aWdodD4gbV9hY3RpdmVIaWdobGlnaHQ7CisgICAgUmVmUHRyPERhdGFEZXRlY3RvckhpZ2hsaWdo
dD4gbV9uZXh0QWN0aXZlSGlnaGxpZ2h0OworICAgIEhhc2hTZXQ8UmVmUHRyPERhdGFEZXRlY3Rv
ckhpZ2hsaWdodD4+IG1fcG90ZW50aWFsSGlnaGxpZ2h0czsKKyAgICBIYXNoU2V0PFJlZlB0cjxE
YXRhRGV0ZWN0b3JIaWdobGlnaHQ+PiBtX2FuaW1hdGluZ0hpZ2hsaWdodHM7CisgICAgV2Vha0hh
c2hTZXQ8RGF0YURldGVjdG9ySGlnaGxpZ2h0PiBtX2hpZ2hsaWdodHM7CiAKLSAgICAvLyBGSVhN
RTogVGhlc2Ugc2hvdWxkIG1vdmUgb250byBIaWdobGlnaHQuCiAgICAgVmVjdG9yPExheW91dFJl
Y3Q+IG1fY3VycmVudFNlbGVjdGlvblJlY3RzOwogICAgIGJvb2wgbV9pc1RleHRPbmx5IHsgZmFs
c2UgfTsKIAotICAgIEhpZ2hsaWdodDo6VHlwZSBtX2RpcnR5SGlnaGxpZ2h0VHlwZXMgeyAwIH07
CisgICAgT3B0aW9uU2V0PERhdGFEZXRlY3RvckhpZ2hsaWdodDo6VHlwZT4gbV9kaXJ0eUhpZ2hs
aWdodFR5cGVzOwogCiAgICAgTW9ub3RvbmljVGltZSBtX2xhc3RTZWxlY3Rpb25DaGFuZ2VUaW1l
OwogICAgIE1vbm90b25pY1RpbWUgbV9uZXh0QWN0aXZlSGlnaGxpZ2h0Q2hhbmdlVGltZTsKICAg
ICBNb25vdG9uaWNUaW1lIG1fbGFzdE1vdXNlVXBUaW1lOwogCi0gICAgUmVmUHRyPEhpZ2hsaWdo
dD4gbV9jdXJyZW50TW91c2VEb3duT25CdXR0b25IaWdobGlnaHQ7CisgICAgUmVmUHRyPERhdGFE
ZXRlY3RvckhpZ2hsaWdodD4gbV9jdXJyZW50TW91c2VEb3duT25CdXR0b25IaWdobGlnaHQ7CiAg
ICAgSW50UG9pbnQgbV9tb3VzZVBvc2l0aW9uOwogCiAgICAgVGltZXIgbV9kZXRlcm1pbmVBY3Rp
dmVIaWdobGlnaHRUaW1lcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1Nl
cnZpY2VzT3ZlcmxheUNvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9TZXJ2
aWNlc092ZXJsYXlDb250cm9sbGVyLm1tCmluZGV4IDc0ZDkxOGViM2Y5YjY2ZDA3NWIwMzNkNGUz
MTg1ODBlNGYzYTg2MTAuLjBhMTQ1N2Q3YzA2OGE3NTA1MzZlYzliMDU4YTlmYjg4NjMxZTcyMGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1NlcnZpY2VzT3ZlcmxheUNvbnRy
b2xsZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvU2VydmljZXNPdmVybGF5Q29u
dHJvbGxlci5tbQpAQCAtNDUsMTUxICs0NSwxMyBAQAogI2ltcG9ydCAiTG9nZ2luZy5oIgogI2lt
cG9ydCAiUGFnZS5oIgogI2ltcG9ydCAiUGFnZU92ZXJsYXlDb250cm9sbGVyLmgiCi0jaW1wb3J0
ICJQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2EuaCIKICNpbXBvcnQgIlNldHRpbmdzLmgiCiAjaW1w
b3J0IDxRdWFydHpDb3JlL1F1YXJ0ekNvcmUuaD4KICNpbXBvcnQgPHBhbC9zcGkvbWFjL0RhdGFE
ZXRlY3RvcnNTUEkuaD4KICNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgogCi1jb25zdCBmbG9h
dCBoaWdobGlnaHRGYWRlQW5pbWF0aW9uRHVyYXRpb24gPSAwLjM7Ci0KIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotUmVmPFNlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXI6OkhpZ2hsaWdodD4gU2Vydmlj
ZXNPdmVybGF5Q29udHJvbGxlcjo6SGlnaGxpZ2h0OjpjcmVhdGVGb3JTZWxlY3Rpb24oU2Vydmlj
ZXNPdmVybGF5Q29udHJvbGxlciYgY29udHJvbGxlciwgUmV0YWluUHRyPERESGlnaGxpZ2h0UmVm
PiYmIGRkSGlnaGxpZ2h0LCBTaW1wbGVSYW5nZSYmIHJhbmdlKQotewotICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IEhpZ2hsaWdodChjb250cm9sbGVyLCBIaWdobGlnaHQ6OlNlbGVjdGlvblR5cGUs
IFdURk1vdmUoZGRIaWdobGlnaHQpLCBXVEZNb3ZlKHJhbmdlKSkpOwotfQotCi1SZWY8U2Vydmlj
ZXNPdmVybGF5Q29udHJvbGxlcjo6SGlnaGxpZ2h0PiBTZXJ2aWNlc092ZXJsYXlDb250cm9sbGVy
OjpIaWdobGlnaHQ6OmNyZWF0ZUZvclRlbGVwaG9uZU51bWJlcihTZXJ2aWNlc092ZXJsYXlDb250
cm9sbGVyJiBjb250cm9sbGVyLCBSZXRhaW5QdHI8RERIaWdobGlnaHRSZWY+JiYgZGRIaWdobGln
aHQsIFNpbXBsZVJhbmdlJiYgcmFuZ2UpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSGln
aGxpZ2h0KGNvbnRyb2xsZXIsIEhpZ2hsaWdodDo6VGVsZXBob25lTnVtYmVyVHlwZSwgV1RGTW92
ZShkZEhpZ2hsaWdodCksIFdURk1vdmUocmFuZ2UpKSk7Ci19Ci0KLVNlcnZpY2VzT3ZlcmxheUNv
bnRyb2xsZXI6OkhpZ2hsaWdodDo6SGlnaGxpZ2h0KFNlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXIm
IGNvbnRyb2xsZXIsIFR5cGUgdHlwZSwgUmV0YWluUHRyPERESGlnaGxpZ2h0UmVmPiYmIGRkSGln
aGxpZ2h0LCBTaW1wbGVSYW5nZSYmIHJhbmdlKQotICAgIDogbV9jb250cm9sbGVyKCZjb250cm9s
bGVyKQotICAgICwgbV9yYW5nZShXVEZNb3ZlKHJhbmdlKSkKLSAgICAsIG1fZ3JhcGhpY3NMYXll
cihHcmFwaGljc0xheWVyOjpjcmVhdGUoY29udHJvbGxlci5wYWdlKCkuY2hyb21lKCkuY2xpZW50
KCkuZ3JhcGhpY3NMYXllckZhY3RvcnkoKSwgKnRoaXMpKQotICAgICwgbV90eXBlKHR5cGUpCi17
Ci0gICAgQVNTRVJUKGRkSGlnaGxpZ2h0KTsKLQotICAgIG1fZ3JhcGhpY3NMYXllci0+c2V0RHJh
d3NDb250ZW50KHRydWUpOwotCi0gICAgc2V0RERIaWdobGlnaHQoZGRIaWdobGlnaHQuZ2V0KCkp
OwotCi0gICAgLy8gU2V0IGRpcmVjdGx5IG9uIHRoZSBQbGF0Zm9ybUNBTGF5ZXIgc28gdGhhdCB3
aGVuIHdlIGxlYXZlIHRoZSAnZnJvbScgdmFsdWUgaW1wbGljaXQKLSAgICAvLyBpbiBvdXIgYW5p
bWF0aW9ucywgd2UgZ2V0IHRoZSByaWdodCBpbml0aWFsIHZhbHVlIHJlZ2FyZGxlc3Mgb2YgZmx1
c2ggdGltaW5nLgotICAgIGRvd25jYXN0PEdyYXBoaWNzTGF5ZXJDQT4obGF5ZXIoKSkucGxhdGZv
cm1DQUxheWVyKCktPnNldE9wYWNpdHkoMCk7Ci0KLSAgICBjb250cm9sbGVyLmRpZENyZWF0ZUhp
Z2hsaWdodCh0aGlzKTsKLX0KLQotU2VydmljZXNPdmVybGF5Q29udHJvbGxlcjo6SGlnaGxpZ2h0
Ojp+SGlnaGxpZ2h0KCkKLXsKLSAgICBpZiAobV9jb250cm9sbGVyKQotICAgICAgICBtX2NvbnRy
b2xsZXItPndpbGxEZXN0cm95SGlnaGxpZ2h0KHRoaXMpOwotfQotCi12b2lkIFNlcnZpY2VzT3Zl
cmxheUNvbnRyb2xsZXI6OkhpZ2hsaWdodDo6c2V0RERIaWdobGlnaHQoRERIaWdobGlnaHRSZWYg
aGlnaGxpZ2h0KQotewotICAgIGlmICghRGF0YURldGVjdG9yc0xpYnJhcnkoKSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgaWYgKCFtX2NvbnRyb2xsZXIpCi0gICAgICAgIHJldHVybjsKLQotICAg
IG1fZGRIaWdobGlnaHQgPSBoaWdobGlnaHQ7Ci0KLSAgICBpZiAoIW1fZGRIaWdobGlnaHQpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIENHUmVjdCBoaWdobGlnaHRCb3VuZGluZ1JlY3QgPSBEREhp
Z2hsaWdodEdldEJvdW5kaW5nUmVjdChtX2RkSGlnaGxpZ2h0LmdldCgpKTsKLSAgICBtX2dyYXBo
aWNzTGF5ZXItPnNldFBvc2l0aW9uKEZsb2F0UG9pbnQoaGlnaGxpZ2h0Qm91bmRpbmdSZWN0Lm9y
aWdpbikpOwotICAgIG1fZ3JhcGhpY3NMYXllci0+c2V0U2l6ZShGbG9hdFNpemUoaGlnaGxpZ2h0
Qm91bmRpbmdSZWN0LnNpemUpKTsKLQotICAgIG1fZ3JhcGhpY3NMYXllci0+c2V0TmVlZHNEaXNw
bGF5KCk7Ci19Ci0KLXZvaWQgU2VydmljZXNPdmVybGF5Q29udHJvbGxlcjo6SGlnaGxpZ2h0Ojpp
bnZhbGlkYXRlKCkKLXsKLSAgICBsYXllcigpLnJlbW92ZUZyb21QYXJlbnQoKTsKLSAgICBtX2Nv
bnRyb2xsZXIgPSBudWxscHRyOwotfQotCi12b2lkIFNlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXI6
OkhpZ2hsaWdodDo6bm90aWZ5Rmx1c2hSZXF1aXJlZChjb25zdCBHcmFwaGljc0xheWVyKikKLXsK
LSAgICBpZiAoIW1fY29udHJvbGxlcikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9jb250cm9s
bGVyLT5wYWdlKCkuc2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoUmVuZGVyaW5nVXBkYXRlU3RlcDo6
TGF5ZXJGbHVzaCk7Ci19Ci0KLXZvaWQgU2VydmljZXNPdmVybGF5Q29udHJvbGxlcjo6SGlnaGxp
Z2h0OjpwYWludENvbnRlbnRzKGNvbnN0IEdyYXBoaWNzTGF5ZXIqLCBHcmFwaGljc0NvbnRleHQm
IGdyYXBoaWNzQ29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiwgR3JhcGhpY3NMYXllclBhaW50QmVo
YXZpb3IpCi17Ci0gICAgaWYgKCFEYXRhRGV0ZWN0b3JzTGlicmFyeSgpKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBDR0NvbnRleHRSZWYgY2dDb250ZXh0ID0gZ3JhcGhpY3NDb250ZXh0LnBsYXRm
b3JtQ29udGV4dCgpOwotCi0gICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4K
LSAgICBDR0xheWVyUmVmIGhpZ2hsaWdodExheWVyID0gRERIaWdobGlnaHRHZXRMYXllcldpdGhD
b250ZXh0KGRkSGlnaGxpZ2h0KCksIGNnQ29udGV4dCk7Ci0gICAgQUxMT1dfREVQUkVDQVRFRF9E
RUNMQVJBVElPTlNfRU5ECi0gICAgQ0dSZWN0IGhpZ2hsaWdodEJvdW5kaW5nUmVjdCA9IERESGln
aGxpZ2h0R2V0Qm91bmRpbmdSZWN0KGRkSGlnaGxpZ2h0KCkpOwotICAgIGhpZ2hsaWdodEJvdW5k
aW5nUmVjdC5vcmlnaW4gPSBDR1BvaW50WmVybzsKLQotICAgIENHQ29udGV4dERyYXdMYXllcklu
UmVjdChjZ0NvbnRleHQsIGhpZ2hsaWdodEJvdW5kaW5nUmVjdCwgaGlnaGxpZ2h0TGF5ZXIpOwot
fQotCi1mbG9hdCBTZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyOjpIaWdobGlnaHQ6OmRldmljZVNj
YWxlRmFjdG9yKCkgY29uc3QKLXsKLSAgICBpZiAoIW1fY29udHJvbGxlcikKLSAgICAgICAgcmV0
dXJuIDE7Ci0KLSAgICByZXR1cm4gbV9jb250cm9sbGVyLT5wYWdlKCkuZGV2aWNlU2NhbGVGYWN0
b3IoKTsKLX0KLQotdm9pZCBTZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyOjpIaWdobGlnaHQ6OmZh
ZGVJbigpCi17Ci0gICAgUmV0YWluUHRyPENBQmFzaWNBbmltYXRpb24+IGFuaW1hdGlvbiA9IFtD
QUJhc2ljQW5pbWF0aW9uIGFuaW1hdGlvbldpdGhLZXlQYXRoOkAib3BhY2l0eSJdOwotICAgIFth
bmltYXRpb24gc2V0RHVyYXRpb246aGlnaGxpZ2h0RmFkZUFuaW1hdGlvbkR1cmF0aW9uXTsKLSAg
ICBbYW5pbWF0aW9uIHNldEZpbGxNb2RlOmtDQUZpbGxNb2RlRm9yd2FyZHNdOwotICAgIFthbmlt
YXRpb24gc2V0UmVtb3ZlZE9uQ29tcGxldGlvbjpmYWxzZV07Ci0gICAgW2FuaW1hdGlvbiBzZXRU
b1ZhbHVlOkAxXTsKLQotICAgIGF1dG8gcGxhdGZvcm1BbmltYXRpb24gPSBQbGF0Zm9ybUNBQW5p
bWF0aW9uQ29jb2E6OmNyZWF0ZShhbmltYXRpb24uZ2V0KCkpOwotICAgIGRvd25jYXN0PEdyYXBo
aWNzTGF5ZXJDQT4obGF5ZXIoKSkucGxhdGZvcm1DQUxheWVyKCktPmFkZEFuaW1hdGlvbkZvcktl
eSgiRmFkZUhpZ2hsaWdodEluIiwgcGxhdGZvcm1BbmltYXRpb24uZ2V0KCkpOwotfQotCi12b2lk
IFNlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXI6OkhpZ2hsaWdodDo6ZmFkZU91dCgpCi17Ci0gICAg
UmV0YWluUHRyPENBQmFzaWNBbmltYXRpb24+IGFuaW1hdGlvbiA9IFtDQUJhc2ljQW5pbWF0aW9u
IGFuaW1hdGlvbldpdGhLZXlQYXRoOkAib3BhY2l0eSJdOwotICAgIFthbmltYXRpb24gc2V0RHVy
YXRpb246aGlnaGxpZ2h0RmFkZUFuaW1hdGlvbkR1cmF0aW9uXTsKLSAgICBbYW5pbWF0aW9uIHNl
dEZpbGxNb2RlOmtDQUZpbGxNb2RlRm9yd2FyZHNdOwotICAgIFthbmltYXRpb24gc2V0UmVtb3Zl
ZE9uQ29tcGxldGlvbjpmYWxzZV07Ci0gICAgW2FuaW1hdGlvbiBzZXRUb1ZhbHVlOkAwXTsKLQot
ICAgIFJlZlB0cjxIaWdobGlnaHQ+IHJldGFpbmVkU2VsZiA9IHRoaXM7Ci0gICAgW0NBVHJhbnNh
Y3Rpb24gYmVnaW5dOwotICAgIFtDQVRyYW5zYWN0aW9uIHNldENvbXBsZXRpb25CbG9jazpbcmV0
YWluZWRTZWxmXSAoKSB7Ci0gICAgICAgIHJldGFpbmVkU2VsZi0+ZGlkRmluaXNoRmFkZU91dEFu
aW1hdGlvbigpOwotICAgIH1dOwotCi0gICAgYXV0byBwbGF0Zm9ybUFuaW1hdGlvbiA9IFBsYXRm
b3JtQ0FBbmltYXRpb25Db2NvYTo6Y3JlYXRlKGFuaW1hdGlvbi5nZXQoKSk7Ci0gICAgZG93bmNh
c3Q8R3JhcGhpY3NMYXllckNBPihsYXllcigpKS5wbGF0Zm9ybUNBTGF5ZXIoKS0+YWRkQW5pbWF0
aW9uRm9yS2V5KCJGYWRlSGlnaGxpZ2h0T3V0IiwgcGxhdGZvcm1BbmltYXRpb24uZ2V0KCkpOwot
ICAgIFtDQVRyYW5zYWN0aW9uIGNvbW1pdF07Ci19Ci0KLXZvaWQgU2VydmljZXNPdmVybGF5Q29u
dHJvbGxlcjo6SGlnaGxpZ2h0OjpkaWRGaW5pc2hGYWRlT3V0QW5pbWF0aW9uKCkKLXsKLSAgICBp
ZiAoIW1fY29udHJvbGxlcikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKG1fY29udHJvbGxl
ci0+YWN0aXZlSGlnaGxpZ2h0KCkgPT0gdGhpcykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbGF5
ZXIoKS5yZW1vdmVGcm9tUGFyZW50KCk7Ci19Ci0KIFNlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXI6
OlNlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXIoUGFnZSYgcGFnZSkKICAgICA6IG1fcGFnZShwYWdl
KQogICAgICwgbV9kZXRlcm1pbmVBY3RpdmVIaWdobGlnaHRUaW1lcigqdGhpcywgJlNlcnZpY2Vz
T3ZlcmxheUNvbnRyb2xsZXI6OmRldGVybWluZUFjdGl2ZUhpZ2hsaWdodFRpbWVyRmlyZWQpCkBA
IC0yMDAsNyArNjIsNyBAQCBTZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyOjpTZXJ2aWNlc092ZXJs
YXlDb250cm9sbGVyKFBhZ2UmIHBhZ2UpCiBTZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyOjp+U2Vy
dmljZXNPdmVybGF5Q29udHJvbGxlcigpCiB7CiAgICAgZm9yIChhdXRvJiBoaWdobGlnaHQgOiBt
X2hpZ2hsaWdodHMpCi0gICAgICAgIGhpZ2hsaWdodC0+aW52YWxpZGF0ZSgpOworICAgICAgICBo
aWdobGlnaHQuaW52YWxpZGF0ZSgpOwogfQogCiB2b2lkIFNlcnZpY2VzT3ZlcmxheUNvbnRyb2xs
ZXI6OndpbGxNb3ZlVG9QYWdlKFBhZ2VPdmVybGF5JiwgUGFnZSogcGFnZSkKQEAgLTM1OCwzNiAr
MjIwLDM2IEBAIHZvaWQgU2VydmljZXNPdmVybGF5Q29udHJvbGxlcjo6c2VsZWN0aW9uUmVjdHNE
aWRDaGFuZ2UoY29uc3QgVmVjdG9yPExheW91dFJlY3Q+CiAgICAgbV9jdXJyZW50U2VsZWN0aW9u
UmVjdHMucmV2ZXJzZSgpOwogCiAgICAgTE9HKFNlcnZpY2VzLCAiU2VydmljZXNPdmVybGF5Q29u
dHJvbGxlciAtIFNlbGVjdGlvbiByZWN0cyBjaGFuZ2VkIC0gTm93IGhhdmUgJWx1XG4iLCByZWN0
cy5zaXplKCkpOwotICAgIGludmFsaWRhdGVIaWdobGlnaHRzT2ZUeXBlKEhpZ2hsaWdodDo6U2Vs
ZWN0aW9uVHlwZSk7CisgICAgaW52YWxpZGF0ZUhpZ2hsaWdodHNPZlR5cGUoRGF0YURldGVjdG9y
SGlnaGxpZ2h0OjpUeXBlOjpTZWxlY3Rpb24pOwogfQogCiB2b2lkIFNlcnZpY2VzT3ZlcmxheUNv
bnRyb2xsZXI6OnNlbGVjdGVkVGVsZXBob25lTnVtYmVyUmFuZ2VzQ2hhbmdlZCgpCiB7CiAgICAg
TE9HKFNlcnZpY2VzLCAiU2VydmljZXNPdmVybGF5Q29udHJvbGxlciAtIFRlbGVwaG9uZSBudW1i
ZXIgcmFuZ2VzIGNoYW5nZWRcbiIpOwotICAgIGludmFsaWRhdGVIaWdobGlnaHRzT2ZUeXBlKEhp
Z2hsaWdodDo6VGVsZXBob25lTnVtYmVyVHlwZSk7CisgICAgaW52YWxpZGF0ZUhpZ2hsaWdodHNP
ZlR5cGUoRGF0YURldGVjdG9ySGlnaGxpZ2h0OjpUeXBlOjpUZWxlcGhvbmVOdW1iZXIpOwogfQog
Ci12b2lkIFNlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXI6OmludmFsaWRhdGVIaWdobGlnaHRzT2ZU
eXBlKEhpZ2hsaWdodDo6VHlwZSB0eXBlKQordm9pZCBTZXJ2aWNlc092ZXJsYXlDb250cm9sbGVy
OjppbnZhbGlkYXRlSGlnaGxpZ2h0c09mVHlwZShEYXRhRGV0ZWN0b3JIaWdobGlnaHQ6OlR5cGUg
dHlwZSkKIHsKICAgICBpZiAoIW1fcGFnZS5zZXR0aW5ncygpLnNlcnZpY2VDb250cm9sc0VuYWJs
ZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9kaXJ0eUhpZ2hsaWdodFR5cGVzIHw9IHR5
cGU7CisgICAgbV9kaXJ0eUhpZ2hsaWdodFR5cGVzLmFkZCh0eXBlKTsKICAgICBtX2J1aWxkSGln
aGxpZ2h0c1RpbWVyLnN0YXJ0T25lU2hvdCgwX3MpOwogfQogCiB2b2lkIFNlcnZpY2VzT3Zlcmxh
eUNvbnRyb2xsZXI6OmJ1aWxkUG90ZW50aWFsSGlnaGxpZ2h0c0lmTmVlZGVkKCkKIHsKLSAgICBp
ZiAoIW1fZGlydHlIaWdobGlnaHRUeXBlcykKKyAgICBpZiAobV9kaXJ0eUhpZ2hsaWdodFR5cGVz
LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKG1fZGlydHlIaWdobGlnaHRU
eXBlcyAmIEhpZ2hsaWdodDo6VGVsZXBob25lTnVtYmVyVHlwZSkKKyAgICBpZiAobV9kaXJ0eUhp
Z2hsaWdodFR5cGVzLmNvbnRhaW5zKERhdGFEZXRlY3RvckhpZ2hsaWdodDo6VHlwZTo6VGVsZXBo
b25lTnVtYmVyKSkKICAgICAgICAgYnVpbGRQaG9uZU51bWJlckhpZ2hsaWdodHMoKTsKIAotICAg
IGlmIChtX2RpcnR5SGlnaGxpZ2h0VHlwZXMgJiBIaWdobGlnaHQ6OlNlbGVjdGlvblR5cGUpCisg
ICAgaWYgKG1fZGlydHlIaWdobGlnaHRUeXBlcy5jb250YWlucyhEYXRhRGV0ZWN0b3JIaWdobGln
aHQ6OlR5cGU6OlNlbGVjdGlvbikpCiAgICAgICAgIGJ1aWxkU2VsZWN0aW9uSGlnaGxpZ2h0KCk7
CiAKLSAgICBtX2RpcnR5SGlnaGxpZ2h0VHlwZXMgPSAwOworICAgIG1fZGlydHlIaWdobGlnaHRU
eXBlcyA9IHsgfTsKIAogICAgIGlmIChtX3BvdGVudGlhbEhpZ2hsaWdodHMuaXNFbXB0eSgpKSB7
CiAgICAgICAgIGlmIChtX3NlcnZpY2VzT3ZlcmxheSkKQEAgLTQwNCwxOCArMjY2LDE4IEBAIHZv
aWQgU2VydmljZXNPdmVybGF5Q29udHJvbGxlcjo6YnVpbGRQb3RlbnRpYWxIaWdobGlnaHRzSWZO
ZWVkZWQoKQogICAgIGRldGVybWluZUFjdGl2ZUhpZ2hsaWdodChtb3VzZUlzT3ZlckJ1dHRvbik7
CiB9CiAKLWJvb2wgU2VydmljZXNPdmVybGF5Q29udHJvbGxlcjo6bW91c2VJc092ZXJIaWdobGln
aHQoSGlnaGxpZ2h0JiBoaWdobGlnaHQsIGJvb2wmIG1vdXNlSXNPdmVyQnV0dG9uKSBjb25zdAor
Ym9vbCBTZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyOjptb3VzZUlzT3ZlckhpZ2hsaWdodChEYXRh
RGV0ZWN0b3JIaWdobGlnaHQmIGhpZ2hsaWdodCwgYm9vbCYgbW91c2VJc092ZXJCdXR0b24pIGNv
bnN0CiB7CiAgICAgaWYgKCFEYXRhRGV0ZWN0b3JzTGlicmFyeSgpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKICAgICBCb29sZWFuIG9uQnV0dG9uOwotICAgIGJvb2wgaG92ZXJlZCA9IERESGln
aGxpZ2h0UG9pbnRJc09uSGlnaGxpZ2h0KGhpZ2hsaWdodC5kZEhpZ2hsaWdodCgpLCAoQ0dQb2lu
dCltX21vdXNlUG9zaXRpb24sICZvbkJ1dHRvbik7CisgICAgYm9vbCBob3ZlcmVkID0gRERIaWdo
bGlnaHRQb2ludElzT25IaWdobGlnaHQoaGlnaGxpZ2h0LmhpZ2hsaWdodCgpLCAoQ0dQb2ludClt
X21vdXNlUG9zaXRpb24sICZvbkJ1dHRvbik7CiAgICAgbW91c2VJc092ZXJCdXR0b24gPSBvbkJ1
dHRvbjsKICAgICByZXR1cm4gaG92ZXJlZDsKIH0KIAotU2Vjb25kcyBTZXJ2aWNlc092ZXJsYXlD
b250cm9sbGVyOjpyZW1haW5pbmdUaW1lVW50aWxIaWdobGlnaHRTaG91bGRCZVNob3duKEhpZ2hs
aWdodCogaGlnaGxpZ2h0KSBjb25zdAorU2Vjb25kcyBTZXJ2aWNlc092ZXJsYXlDb250cm9sbGVy
OjpyZW1haW5pbmdUaW1lVW50aWxIaWdobGlnaHRTaG91bGRCZVNob3duKERhdGFEZXRlY3Rvckhp
Z2hsaWdodCogaGlnaGxpZ2h0KSBjb25zdAogewogICAgIGlmICghaGlnaGxpZ2h0KQogICAgICAg
ICByZXR1cm4gMF9zOwpAQCAtNDI5LDcgKzI5MSw3IEBAIFNlY29uZHMgU2VydmljZXNPdmVybGF5
Q29udHJvbGxlcjo6cmVtYWluaW5nVGltZVVudGlsSGlnaGxpZ2h0U2hvdWxkQmVTaG93bihIaWdo
CiAgICAgLy8gSGlnaGxpZ2h0IGh5c3RlcmVzaXMgaXMgb25seSBmb3Igc2VsZWN0aW9uIHNlcnZp
Y2VzLCBiZWNhdXNlIHRlbGVwaG9uZSBudW1iZXIgaGlnaGxpZ2h0cyBhcmUgYWxyZWFkeSBtdWNo
IG1vcmUgc3RhYmxlCiAgICAgLy8gYnkgdmlydHVlIG9mIGJlaW5nIGV4cGFuZGVkIHRvIGluY2x1
ZGUgdGhlIGVudGlyZSB0ZWxlcGhvbmUgbnVtYmVyLiBIb3dldmVyLCB3ZSB3aWxsIHN0aWxsIGF2
b2lkIGhpZ2hsaWdodGluZwogICAgIC8vIHRlbGVwaG9uZSBudW1iZXJzIHdoaWxlIHRoZSBtb3Vz
ZSBpcyBkb3duLgotICAgIGlmIChoaWdobGlnaHQtPnR5cGUoKSA9PSBIaWdobGlnaHQ6OlRlbGVw
aG9uZU51bWJlclR5cGUpCisgICAgaWYgKGhpZ2hsaWdodC0+dHlwZSgpID09IERhdGFEZXRlY3Rv
ckhpZ2hsaWdodDo6VHlwZTo6VGVsZXBob25lTnVtYmVyKQogICAgICAgICByZXR1cm4gbW91c2VQ
cmVzc2VkID8gbWluaW11bVRpbWVVbnRpbEhpZ2hsaWdodFNob3VsZEJlU2hvd24gOiAwX3M7CiAK
ICAgICBNb25vdG9uaWNUaW1lIG5vdyA9IE1vbm90b25pY1RpbWU6Om5vdygpOwpAQCAtNDYwLDkg
KzMyMiw5IEBAIHZvaWQgU2VydmljZXNPdmVybGF5Q29udHJvbGxlcjo6Y2xlYXJBY3RpdmVIaWdo
bGlnaHQoKQogICAgIG1fYWN0aXZlSGlnaGxpZ2h0ID0gbnVsbHB0cjsKIH0KIAotdm9pZCBTZXJ2
aWNlc092ZXJsYXlDb250cm9sbGVyOjpyZW1vdmVBbGxQb3RlbnRpYWxIaWdobGlnaHRzT2ZUeXBl
KEhpZ2hsaWdodDo6VHlwZSB0eXBlKQordm9pZCBTZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyOjpy
ZW1vdmVBbGxQb3RlbnRpYWxIaWdobGlnaHRzT2ZUeXBlKERhdGFEZXRlY3RvckhpZ2hsaWdodDo6
VHlwZSB0eXBlKQogewotICAgIFZlY3RvcjxSZWZQdHI8SGlnaGxpZ2h0Pj4gaGlnaGxpZ2h0c1Rv
UmVtb3ZlOworICAgIFZlY3RvcjxSZWZQdHI8RGF0YURldGVjdG9ySGlnaGxpZ2h0Pj4gaGlnaGxp
Z2h0c1RvUmVtb3ZlOwogICAgIGZvciAoYXV0byYgaGlnaGxpZ2h0IDogbV9wb3RlbnRpYWxIaWdo
bGlnaHRzKSB7CiAgICAgICAgIGlmIChoaWdobGlnaHQtPnR5cGUoKSA9PSB0eXBlKQogICAgICAg
ICAgICAgaGlnaGxpZ2h0c1RvUmVtb3ZlLmFwcGVuZChoaWdobGlnaHQpOwpAQCAtNDc5LDE0ICsz
NDEsMTQgQEAgdm9pZCBTZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyOjpidWlsZFBob25lTnVtYmVy
SGlnaGxpZ2h0cygpCiAgICAgICAgIHBob25lTnVtYmVyUmFuZ2VzLmFwcGVuZFZlY3RvcihmcmFt
ZS0+ZWRpdG9yKCkuZGV0ZWN0ZWRUZWxlcGhvbmVOdW1iZXJSYW5nZXMoKSk7CiAKICAgICBpZiAo
cGhvbmVOdW1iZXJSYW5nZXMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIHJlbW92ZUFsbFBvdGVudGlh
bEhpZ2hsaWdodHNPZlR5cGUoSGlnaGxpZ2h0OjpUZWxlcGhvbmVOdW1iZXJUeXBlKTsKKyAgICAg
ICAgcmVtb3ZlQWxsUG90ZW50aWFsSGlnaGxpZ2h0c09mVHlwZShEYXRhRGV0ZWN0b3JIaWdobGln
aHQ6OlR5cGU6OlRlbGVwaG9uZU51bWJlcik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAg
ICBpZiAoIURhdGFEZXRlY3RvcnNMaWJyYXJ5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIEhh
c2hTZXQ8UmVmUHRyPEhpZ2hsaWdodD4+IG5ld1BvdGVudGlhbEhpZ2hsaWdodHM7CisgICAgSGFz
aFNldDxSZWZQdHI8RGF0YURldGVjdG9ySGlnaGxpZ2h0Pj4gbmV3UG90ZW50aWFsSGlnaGxpZ2h0
czsKIAogICAgIEZyYW1lVmlldyYgbWFpbkZyYW1lVmlldyA9ICptYWluRnJhbWUoKS52aWV3KCk7
CiAKQEAgLTUxMCwyMyArMzcyLDI1IEBAIHZvaWQgU2VydmljZXNPdmVybGF5Q29udHJvbGxlcjo6
YnVpbGRQaG9uZU51bWJlckhpZ2hsaWdodHMoKQogI2Vsc2UKICAgICAgICAgYXV0byBkZEhpZ2hs
aWdodCA9IGFkb3B0Q0YoRERIaWdobGlnaHRDcmVhdGVXaXRoUmVjdHNJblZpc2libGVSZWN0V2l0
aFN0eWxlQW5kRGlyZWN0aW9uKG51bGxwdHIsICZjZ1JlY3QsIDEsIG1haW5GcmFtZVZpZXcudmlz
aWJsZUNvbnRlbnRSZWN0KCksIERESGlnaGxpZ2h0U3R5bGVCdWJibGVTdGFuZGFyZCB8IERESGln
aGxpZ2h0U3R5bGVTdGFuZGFyZEljb25BcnJvdywgWUVTLCBOU1dyaXRpbmdEaXJlY3Rpb25OYXR1
cmFsLCBOTywgWUVTKSk7CiAjZW5kaWYKLSAgICAgICAgbmV3UG90ZW50aWFsSGlnaGxpZ2h0cy5h
ZGQoSGlnaGxpZ2h0OjpjcmVhdGVGb3JUZWxlcGhvbmVOdW1iZXIoKnRoaXMsIFdURk1vdmUoZGRI
aWdobGlnaHQpLCBXVEZNb3ZlKHJhbmdlKSkpOworICAgICAgICBhdXRvIGhpZ2hsaWdodCA9IERh
dGFEZXRlY3RvckhpZ2hsaWdodDo6Y3JlYXRlRm9yVGVsZXBob25lTnVtYmVyKG1fcGFnZSwgKnRo
aXMsIFdURk1vdmUoZGRIaWdobGlnaHQpLCBXVEZNb3ZlKHJhbmdlKSk7CisgICAgICAgIG1faGln
aGxpZ2h0cy5hZGQoaGlnaGxpZ2h0LmdldCgpKTsKKyAgICAgICAgbmV3UG90ZW50aWFsSGlnaGxp
Z2h0cy5hZGQoV1RGTW92ZShoaWdobGlnaHQpKTsKICAgICB9CiAKLSAgICByZXBsYWNlSGlnaGxp
Z2h0c09mVHlwZVByZXNlcnZpbmdFcXVpdmFsZW50SGlnaGxpZ2h0cyhuZXdQb3RlbnRpYWxIaWdo
bGlnaHRzLCBIaWdobGlnaHQ6OlRlbGVwaG9uZU51bWJlclR5cGUpOworICAgIHJlcGxhY2VIaWdo
bGlnaHRzT2ZUeXBlUHJlc2VydmluZ0VxdWl2YWxlbnRIaWdobGlnaHRzKG5ld1BvdGVudGlhbEhp
Z2hsaWdodHMsIERhdGFEZXRlY3RvckhpZ2hsaWdodDo6VHlwZTo6VGVsZXBob25lTnVtYmVyKTsK
IH0KIAogdm9pZCBTZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyOjpidWlsZFNlbGVjdGlvbkhpZ2hs
aWdodCgpCiB7CiAgICAgaWYgKG1fY3VycmVudFNlbGVjdGlvblJlY3RzLmlzRW1wdHkoKSkgewot
ICAgICAgICByZW1vdmVBbGxQb3RlbnRpYWxIaWdobGlnaHRzT2ZUeXBlKEhpZ2hsaWdodDo6U2Vs
ZWN0aW9uVHlwZSk7CisgICAgICAgIHJlbW92ZUFsbFBvdGVudGlhbEhpZ2hsaWdodHNPZlR5cGUo
RGF0YURldGVjdG9ySGlnaGxpZ2h0OjpUeXBlOjpTZWxlY3Rpb24pOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCiAgICAgaWYgKCFEYXRhRGV0ZWN0b3JzTGlicmFyeSgpKQogICAgICAgICByZXR1
cm47CiAKLSAgICBIYXNoU2V0PFJlZlB0cjxIaWdobGlnaHQ+PiBuZXdQb3RlbnRpYWxIaWdobGln
aHRzOworICAgIEhhc2hTZXQ8UmVmUHRyPERhdGFEZXRlY3RvckhpZ2hsaWdodD4+IG5ld1BvdGVu
dGlhbEhpZ2hsaWdodHM7CiAKICAgICBWZWN0b3I8Q0dSZWN0PiBjZ1JlY3RzOwogICAgIGNnUmVj
dHMucmVzZXJ2ZUNhcGFjaXR5KG1fY3VycmVudFNlbGVjdGlvblJlY3RzLnNpemUoKSk7CkBAIC01
NTMsMjYgKzQxNywyOCBAQCB2b2lkIFNlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXI6OmJ1aWxkU2Vs
ZWN0aW9uSGlnaGxpZ2h0KCkKICNlbHNlCiAgICAgICAgICAgICBhdXRvIGRkSGlnaGxpZ2h0ID0g
YWRvcHRDRihEREhpZ2hsaWdodENyZWF0ZVdpdGhSZWN0c0luVmlzaWJsZVJlY3RXaXRoU3R5bGVB
bmREaXJlY3Rpb24obnVsbHB0ciwgY2dSZWN0cy5iZWdpbigpLCBjZ1JlY3RzLnNpemUoKSwgdmlz
aWJsZVJlY3QsIERESGlnaGxpZ2h0U3R5bGVCdWJibGVOb25lIHwgRERIaWdobGlnaHRTdHlsZVN0
YW5kYXJkSWNvbkFycm93IHwgRERIaWdobGlnaHRTdHlsZUJ1dHRvblNob3dBbHdheXMsIFlFUywg
TlNXcml0aW5nRGlyZWN0aW9uTmF0dXJhbCwgTk8sIFlFUykpOwogI2VuZGlmCi0gICAgICAgICAg
ICBuZXdQb3RlbnRpYWxIaWdobGlnaHRzLmFkZChIaWdobGlnaHQ6OmNyZWF0ZUZvclNlbGVjdGlv
bigqdGhpcywgV1RGTW92ZShkZEhpZ2hsaWdodCksIFdURk1vdmUoKnNlbGVjdGlvblJhbmdlKSkp
OworICAgICAgICAgICAgYXV0byBoaWdobGlnaHQgPSBEYXRhRGV0ZWN0b3JIaWdobGlnaHQ6OmNy
ZWF0ZUZvclNlbGVjdGlvbihtX3BhZ2UsICp0aGlzLCBXVEZNb3ZlKGRkSGlnaGxpZ2h0KSwgV1RG
TW92ZSgqc2VsZWN0aW9uUmFuZ2UpKTsKKyAgICAgICAgICAgIG1faGlnaGxpZ2h0cy5hZGQoaGln
aGxpZ2h0LmdldCgpKTsKKyAgICAgICAgICAgIG5ld1BvdGVudGlhbEhpZ2hsaWdodHMuYWRkKFdU
Rk1vdmUoaGlnaGxpZ2h0KSk7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICByZXBsYWNlSGlnaGxp
Z2h0c09mVHlwZVByZXNlcnZpbmdFcXVpdmFsZW50SGlnaGxpZ2h0cyhuZXdQb3RlbnRpYWxIaWdo
bGlnaHRzLCBIaWdobGlnaHQ6OlNlbGVjdGlvblR5cGUpOworICAgIHJlcGxhY2VIaWdobGlnaHRz
T2ZUeXBlUHJlc2VydmluZ0VxdWl2YWxlbnRIaWdobGlnaHRzKG5ld1BvdGVudGlhbEhpZ2hsaWdo
dHMsIERhdGFEZXRlY3RvckhpZ2hsaWdodDo6VHlwZTo6U2VsZWN0aW9uKTsKIH0KIAotdm9pZCBT
ZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyOjpyZXBsYWNlSGlnaGxpZ2h0c09mVHlwZVByZXNlcnZp
bmdFcXVpdmFsZW50SGlnaGxpZ2h0cyhIYXNoU2V0PFJlZlB0cjxIaWdobGlnaHQ+PiYgbmV3UG90
ZW50aWFsSGlnaGxpZ2h0cywgSGlnaGxpZ2h0OjpUeXBlIHR5cGUpCit2b2lkIFNlcnZpY2VzT3Zl
cmxheUNvbnRyb2xsZXI6OnJlcGxhY2VIaWdobGlnaHRzT2ZUeXBlUHJlc2VydmluZ0VxdWl2YWxl
bnRIaWdobGlnaHRzKEhhc2hTZXQ8UmVmUHRyPERhdGFEZXRlY3RvckhpZ2hsaWdodD4+JiBuZXdQ
b3RlbnRpYWxIaWdobGlnaHRzLCBEYXRhRGV0ZWN0b3JIaWdobGlnaHQ6OlR5cGUgdHlwZSkKIHsK
ICAgICAvLyBJZiBhbnkgb2xkIEhpZ2hsaWdodHMgYXJlIGVxdWl2YWxlbnQgKGJ5IFJhbmdlKSB0
byBhIG5ldyBIaWdobGlnaHQsIHJldXNlIHRoZSBvbGQKICAgICAvLyBvbmUgc28gdGhhdCBhbnkg
bWV0YWRhdGEgaXMgcmV0YWluZWQuCi0gICAgSGFzaFNldDxSZWZQdHI8SGlnaGxpZ2h0Pj4gcmV1
c2VkUG90ZW50aWFsSGlnaGxpZ2h0czsKKyAgICBIYXNoU2V0PFJlZlB0cjxEYXRhRGV0ZWN0b3JI
aWdobGlnaHQ+PiByZXVzZWRQb3RlbnRpYWxIaWdobGlnaHRzOwogCiAgICAgZm9yIChhdXRvJiBv
bGRIaWdobGlnaHQgOiBtX3BvdGVudGlhbEhpZ2hsaWdodHMpIHsKICAgICAgICAgaWYgKG9sZEhp
Z2hsaWdodC0+dHlwZSgpICE9IHR5cGUpCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAg
ICBmb3IgKGF1dG8mIG5ld0hpZ2hsaWdodCA6IG5ld1BvdGVudGlhbEhpZ2hsaWdodHMpIHsKLSAg
ICAgICAgICAgIGlmIChoaWdobGlnaHRzQXJlRXF1aXZhbGVudChvbGRIaWdobGlnaHQuZ2V0KCks
IG5ld0hpZ2hsaWdodC5nZXQoKSkpIHsKLSAgICAgICAgICAgICAgICBvbGRIaWdobGlnaHQtPnNl
dERESGlnaGxpZ2h0KG5ld0hpZ2hsaWdodC0+ZGRIaWdobGlnaHQoKSk7CisgICAgICAgICAgICBp
ZiAoYXJlRXF1aXZhbGVudChvbGRIaWdobGlnaHQuZ2V0KCksIG5ld0hpZ2hsaWdodC5nZXQoKSkp
IHsKKyAgICAgICAgICAgICAgICBvbGRIaWdobGlnaHQtPnNldEhpZ2hsaWdodChuZXdIaWdobGln
aHQtPmhpZ2hsaWdodCgpKTsKIAogICAgICAgICAgICAgICAgIHJldXNlZFBvdGVudGlhbEhpZ2hs
aWdodHMuYWRkKG9sZEhpZ2hsaWdodCk7CiAgICAgICAgICAgICAgICAgbmV3UG90ZW50aWFsSGln
aGxpZ2h0cy5yZW1vdmUobmV3SGlnaGxpZ2h0KTsKQEAgLTYxMSwxOCArNDc3LDkgQEAgVmVjdG9y
PFNpbXBsZVJhbmdlPiBTZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyOjp0ZWxlcGhvbmVOdW1iZXJS
YW5nZXNGb3JGb2N1c2VkRnIKICAgICByZXR1cm4gbV9wYWdlLmZvY3VzQ29udHJvbGxlcigpLmZv
Y3VzZWRPck1haW5GcmFtZSgpLmVkaXRvcigpLmRldGVjdGVkVGVsZXBob25lTnVtYmVyUmFuZ2Vz
KCk7CiB9CiAKLWJvb2wgU2VydmljZXNPdmVybGF5Q29udHJvbGxlcjo6aGlnaGxpZ2h0c0FyZUVx
dWl2YWxlbnQoY29uc3QgSGlnaGxpZ2h0KiBhLCBjb25zdCBIaWdobGlnaHQqIGIpCi17Ci0gICAg
aWYgKGEgPT0gYikKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgaWYgKCFhIHx8ICFiKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIGEtPnR5cGUoKSA9PSBiLT50eXBlKCkgJiYg
YS0+cmFuZ2UoKSA9PSBiLT5yYW5nZSgpOwotfQotCi1TZXJ2aWNlc092ZXJsYXlDb250cm9sbGVy
OjpIaWdobGlnaHQqIFNlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXI6OmZpbmRUZWxlcGhvbmVOdW1i
ZXJIaWdobGlnaHRDb250YWluaW5nU2VsZWN0aW9uSGlnaGxpZ2h0KEhpZ2hsaWdodCYgc2VsZWN0
aW9uSGlnaGxpZ2h0KQorRGF0YURldGVjdG9ySGlnaGxpZ2h0KiBTZXJ2aWNlc092ZXJsYXlDb250
cm9sbGVyOjpmaW5kVGVsZXBob25lTnVtYmVySGlnaGxpZ2h0Q29udGFpbmluZ1NlbGVjdGlvbkhp
Z2hsaWdodChEYXRhRGV0ZWN0b3JIaWdobGlnaHQmIHNlbGVjdGlvbkhpZ2hsaWdodCkKIHsKLSAg
ICBpZiAoc2VsZWN0aW9uSGlnaGxpZ2h0LnR5cGUoKSAhPSBIaWdobGlnaHQ6OlNlbGVjdGlvblR5
cGUpCisgICAgaWYgKHNlbGVjdGlvbkhpZ2hsaWdodC50eXBlKCkgIT0gRGF0YURldGVjdG9ySGln
aGxpZ2h0OjpUeXBlOjpTZWxlY3Rpb24pCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAg
YXV0byBzZWxlY3Rpb25SYW5nZSA9IG1fcGFnZS5zZWxlY3Rpb24oKS50b05vcm1hbGl6ZWRSYW5n
ZSgpOwpAQCAtNjMwLDcgKzQ4Nyw3IEBAIFNlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXI6OkhpZ2hs
aWdodCogU2VydmljZXNPdmVybGF5Q29udHJvbGxlcjo6ZmluZFRlbGVwaG9uZU51CiAgICAgICAg
IHJldHVybiBudWxscHRyOwogCiAgICAgZm9yIChhdXRvJiBoaWdobGlnaHQgOiBtX3BvdGVudGlh
bEhpZ2hsaWdodHMpIHsKLSAgICAgICAgaWYgKGhpZ2hsaWdodC0+dHlwZSgpID09IEhpZ2hsaWdo
dDo6VGVsZXBob25lTnVtYmVyVHlwZSAmJiBjb250YWluczxDb21wb3NlZFRyZWU+KGhpZ2hsaWdo
dC0+cmFuZ2UoKSwgKnNlbGVjdGlvblJhbmdlKSkKKyAgICAgICAgaWYgKGhpZ2hsaWdodC0+dHlw
ZSgpID09IERhdGFEZXRlY3RvckhpZ2hsaWdodDo6VHlwZTo6VGVsZXBob25lTnVtYmVyICYmIGNv
bnRhaW5zPENvbXBvc2VkVHJlZT4oaGlnaGxpZ2h0LT5yYW5nZSgpLCAqc2VsZWN0aW9uUmFuZ2Up
KQogICAgICAgICAgICAgcmV0dXJuIGhpZ2hsaWdodC5nZXQoKTsKICAgICB9CiAKQEAgLTY0Mywx
MyArNTAwLDEzIEBAIHZvaWQgU2VydmljZXNPdmVybGF5Q29udHJvbGxlcjo6ZGV0ZXJtaW5lQWN0
aXZlSGlnaGxpZ2h0KGJvb2wmIG1vdXNlSXNPdmVyQWN0aXZlCiAKICAgICBtb3VzZUlzT3ZlckFj
dGl2ZUhpZ2hsaWdodEJ1dHRvbiA9IGZhbHNlOwogCi0gICAgUmVmUHRyPEhpZ2hsaWdodD4gbmV3
QWN0aXZlSGlnaGxpZ2h0OworICAgIFJlZlB0cjxEYXRhRGV0ZWN0b3JIaWdobGlnaHQ+IG5ld0Fj
dGl2ZUhpZ2hsaWdodDsKIAogICAgIGZvciAoYXV0byYgaGlnaGxpZ2h0IDogbV9wb3RlbnRpYWxI
aWdobGlnaHRzKSB7Ci0gICAgICAgIGlmIChoaWdobGlnaHQtPnR5cGUoKSA9PSBIaWdobGlnaHQ6
OlNlbGVjdGlvblR5cGUpIHsKKyAgICAgICAgaWYgKGhpZ2hsaWdodC0+dHlwZSgpID09IERhdGFE
ZXRlY3RvckhpZ2hsaWdodDo6VHlwZTo6U2VsZWN0aW9uKSB7CiAgICAgICAgICAgICAvLyBJZiB3
ZSd2ZSBhbHJlYWR5IGZvdW5kIGEgbmV3IGFjdGl2ZSBoaWdobGlnaHQsIGFuZCBpdCdzCiAgICAg
ICAgICAgICAvLyBhIHRlbGVwaG9uZSBudW1iZXIgaGlnaGxpZ2h0LCBwcmVmZXIgdGhhdCBvdmVy
IHRoaXMgc2VsZWN0aW9uIGhpZ2hsaWdodC4KLSAgICAgICAgICAgIGlmIChuZXdBY3RpdmVIaWdo
bGlnaHQgJiYgbmV3QWN0aXZlSGlnaGxpZ2h0LT50eXBlKCkgPT0gSGlnaGxpZ2h0OjpUZWxlcGhv
bmVOdW1iZXJUeXBlKQorICAgICAgICAgICAgaWYgKG5ld0FjdGl2ZUhpZ2hsaWdodCAmJiBuZXdB
Y3RpdmVIaWdobGlnaHQtPnR5cGUoKSA9PSBEYXRhRGV0ZWN0b3JIaWdobGlnaHQ6OlR5cGU6OlRl
bGVwaG9uZU51bWJlcikKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAgICAg
Ly8gSWYgdGhpcyBoaWdobGlnaHQgaGFzIG5vIGNvbXBhdGlibGUgc2VydmljZXMsIGl0IGNhbid0
IGJlIGFjdGl2ZS4KQEAgLTY2OCw4ICs1MjUsOCBAQCB2b2lkIFNlcnZpY2VzT3ZlcmxheUNvbnRy
b2xsZXI6OmRldGVybWluZUFjdGl2ZUhpZ2hsaWdodChib29sJiBtb3VzZUlzT3ZlckFjdGl2ZQog
CiAgICAgLy8gSWYgb3VyIG5ldyBhY3RpdmUgaGlnaGxpZ2h0IGlzIGEgc2VsZWN0aW9uIGhpZ2hs
aWdodCB0aGF0IGlzIGNvbXBsZXRlbHkgY29udGFpbmVkCiAgICAgLy8gYnkgb25lIG9mIHRoZSBw
aG9uZSBudW1iZXIgaGlnaGxpZ2h0cywgd2UnbGwgbWFrZSB0aGUgcGhvbmUgbnVtYmVyIGhpZ2hs
aWdodCBhY3RpdmUgZXZlbiBpZiBpdCdzIG5vdCBob3ZlcmVkLgotICAgIGlmIChuZXdBY3RpdmVI
aWdobGlnaHQgJiYgbmV3QWN0aXZlSGlnaGxpZ2h0LT50eXBlKCkgPT0gSGlnaGxpZ2h0OjpTZWxl
Y3Rpb25UeXBlKSB7Ci0gICAgICAgIGlmIChIaWdobGlnaHQqIGNvbnRhaW5lZFRlbGVwaG9uZU51
bWJlckhpZ2hsaWdodCA9IGZpbmRUZWxlcGhvbmVOdW1iZXJIaWdobGlnaHRDb250YWluaW5nU2Vs
ZWN0aW9uSGlnaGxpZ2h0KCpuZXdBY3RpdmVIaWdobGlnaHQpKSB7CisgICAgaWYgKG5ld0FjdGl2
ZUhpZ2hsaWdodCAmJiBuZXdBY3RpdmVIaWdobGlnaHQtPnR5cGUoKSA9PSBEYXRhRGV0ZWN0b3JI
aWdobGlnaHQ6OlR5cGU6OlNlbGVjdGlvbikgeworICAgICAgICBpZiAoRGF0YURldGVjdG9ySGln
aGxpZ2h0KiBjb250YWluZWRUZWxlcGhvbmVOdW1iZXJIaWdobGlnaHQgPSBmaW5kVGVsZXBob25l
TnVtYmVySGlnaGxpZ2h0Q29udGFpbmluZ1NlbGVjdGlvbkhpZ2hsaWdodCgqbmV3QWN0aXZlSGln
aGxpZ2h0KSkgewogICAgICAgICAgICAgbmV3QWN0aXZlSGlnaGxpZ2h0ID0gY29udGFpbmVkVGVs
ZXBob25lTnVtYmVySGlnaGxpZ2h0OwogCiAgICAgICAgICAgICAvLyBXZSB3aWxsIGFsd2F5cyBp
bml0aWFsbHkgY2hvb3NlIHRoZSB0ZWxlcGhvbmUgbnVtYmVyIGhpZ2hsaWdodCBvdmVyIHRoZSBz
ZWxlY3Rpb24gaGlnaGxpZ2h0IGlmIHRoZQpAQCAtNjc4LDcgKzUzNSw3IEBAIHZvaWQgU2Vydmlj
ZXNPdmVybGF5Q29udHJvbGxlcjo6ZGV0ZXJtaW5lQWN0aXZlSGlnaGxpZ2h0KGJvb2wmIG1vdXNl
SXNPdmVyQWN0aXZlCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAoIXRoaXMtPmhpZ2hsaWdo
dHNBcmVFcXVpdmFsZW50KG1fYWN0aXZlSGlnaGxpZ2h0LmdldCgpLCBuZXdBY3RpdmVIaWdobGln
aHQuZ2V0KCkpKSB7CisgICAgaWYgKCFhcmVFcXVpdmFsZW50KG1fYWN0aXZlSGlnaGxpZ2h0Lmdl
dCgpLCBuZXdBY3RpdmVIaWdobGlnaHQuZ2V0KCkpKSB7CiAgICAgICAgIC8vIFdoZW4gdHJhbnNp
dGlvbmluZyB0byBhIG5ldyBoaWdobGlnaHQsIHdlIG1pZ2h0IGVuZCB1cCBpbiBkZXRlcm1pbmVB
Y3RpdmVIaWdobGlnaHQgbXVsdGlwbGUgdGltZXMKICAgICAgICAgLy8gYmVmb3JlIHRoZSBuZXcg
aGlnaGxpZ2h0IGFjdHVhbGx5IGJlY29tZXMgYWN0aXZlLiBLZWVwIHRyYWNrIG9mIHRoZSBsYXN0
IG5leHQtYnV0LW5vdC15ZXQtYWN0aXZlCiAgICAgICAgIC8vIGhpZ2hsaWdodCwgYW5kIG9ubHkg
cmVzZXQgdGhlIGFjdGl2ZSBoaWdobGlnaHQgaHlzdGVyZXNpcyB3aGVuIHRoYXQgY2hhbmdlcy4K
QEAgLTcyNSw3ICs1ODIsNyBAQCBib29sIFNlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXI6Om1vdXNl
RXZlbnQoUGFnZU92ZXJsYXkmLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbgogCiAgICAgLy8gSWYg
dGhlIG1vdXNlIGxpZnRlZCB3aGlsZSBzdGlsbCBvdmVyIHRoZSBoaWdobGlnaHQgYnV0dG9uIHRo
YXQgaXQgd2VudCBkb3duIG9uLCB0aGVuIHRoYXQgaXMgYSBjbGljay4KICAgICBpZiAoZXZlbnQu
dHlwZSgpID09IFBsYXRmb3JtRXZlbnQ6Ok1vdXNlUmVsZWFzZWQpIHsKLSAgICAgICAgUmVmUHRy
PEhpZ2hsaWdodD4gbW91c2VEb3duSGlnaGxpZ2h0ID0gbV9jdXJyZW50TW91c2VEb3duT25CdXR0
b25IaWdobGlnaHQ7CisgICAgICAgIGF1dG8gbW91c2VEb3duSGlnaGxpZ2h0ID0gbV9jdXJyZW50
TW91c2VEb3duT25CdXR0b25IaWdobGlnaHQuY29weVJlZigpOwogICAgICAgICBtX2N1cnJlbnRN
b3VzZURvd25PbkJ1dHRvbkhpZ2hsaWdodCA9IG51bGxwdHI7CiAKICAgICAgICAgbV9sYXN0TW91
c2VVcFRpbWUgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKQEAgLTc2NSwxNSArNjIyLDE1IEBAIHZv
aWQgU2VydmljZXNPdmVybGF5Q29udHJvbGxlcjo6ZGlkU2Nyb2xsRnJhbWUoUGFnZU92ZXJsYXkm
LCBGcmFtZSYgZnJhbWUpCiAgICAgaWYgKGZyYW1lLmlzTWFpbkZyYW1lKCkpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIGludmFsaWRhdGVIaWdobGlnaHRzT2ZUeXBlKEhpZ2hsaWdodDo6VGVsZXBo
b25lTnVtYmVyVHlwZSk7Ci0gICAgaW52YWxpZGF0ZUhpZ2hsaWdodHNPZlR5cGUoSGlnaGxpZ2h0
OjpTZWxlY3Rpb25UeXBlKTsKKyAgICBpbnZhbGlkYXRlSGlnaGxpZ2h0c09mVHlwZShEYXRhRGV0
ZWN0b3JIaWdobGlnaHQ6OlR5cGU6OlRlbGVwaG9uZU51bWJlcik7CisgICAgaW52YWxpZGF0ZUhp
Z2hsaWdodHNPZlR5cGUoRGF0YURldGVjdG9ySGlnaGxpZ2h0OjpUeXBlOjpTZWxlY3Rpb24pOwog
ICAgIGJ1aWxkUG90ZW50aWFsSGlnaGxpZ2h0c0lmTmVlZGVkKCk7CiAKICAgICBib29sIG1vdXNl
SXNPdmVyQWN0aXZlSGlnaGxpZ2h0QnV0dG9uOwogICAgIGRldGVybWluZUFjdGl2ZUhpZ2hsaWdo
dChtb3VzZUlzT3ZlckFjdGl2ZUhpZ2hsaWdodEJ1dHRvbik7CiB9CiAKLXZvaWQgU2VydmljZXNP
dmVybGF5Q29udHJvbGxlcjo6aGFuZGxlQ2xpY2soY29uc3QgSW50UG9pbnQmIGNsaWNrUG9pbnQs
IEhpZ2hsaWdodCYgaGlnaGxpZ2h0KQordm9pZCBTZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyOjpo
YW5kbGVDbGljayhjb25zdCBJbnRQb2ludCYgY2xpY2tQb2ludCwgRGF0YURldGVjdG9ySGlnaGxp
Z2h0JiBoaWdobGlnaHQpCiB7CiAgICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBtYWluRnJhbWUo
KS52aWV3KCk7CiAgICAgaWYgKCFmcmFtZVZpZXcpCkBAIC03ODEsNyArNjM4LDcgQEAgdm9pZCBT
ZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyOjpoYW5kbGVDbGljayhjb25zdCBJbnRQb2ludCYgY2xp
Y2tQb2ludCwgSGlnaGxpZ2gKIAogICAgIEludFBvaW50IHdpbmRvd1BvaW50ID0gZnJhbWVWaWV3
LT5jb250ZW50c1RvV2luZG93KGNsaWNrUG9pbnQpOwogCi0gICAgaWYgKGhpZ2hsaWdodC50eXBl
KCkgPT0gSGlnaGxpZ2h0OjpTZWxlY3Rpb25UeXBlKSB7CisgICAgaWYgKGhpZ2hsaWdodC50eXBl
KCkgPT0gRGF0YURldGVjdG9ySGlnaGxpZ2h0OjpUeXBlOjpTZWxlY3Rpb24pIHsKICAgICAgICAg
YXV0byB0ZWxlcGhvbmVOdW1iZXJSYW5nZXMgPSB0ZWxlcGhvbmVOdW1iZXJSYW5nZXNGb3JGb2N1
c2VkRnJhbWUoKTsKICAgICAgICAgVmVjdG9yPFN0cmluZz4gc2VsZWN0ZWRUZWxlcGhvbmVOdW1i
ZXJzOwogICAgICAgICBzZWxlY3RlZFRlbGVwaG9uZU51bWJlcnMucmVzZXJ2ZUNhcGFjaXR5KHRl
bGVwaG9uZU51bWJlclJhbmdlcy5zaXplKCkpOwpAQCAtNzg5LDcgKzY0Niw3IEBAIHZvaWQgU2Vy
dmljZXNPdmVybGF5Q29udHJvbGxlcjo6aGFuZGxlQ2xpY2soY29uc3QgSW50UG9pbnQmIGNsaWNr
UG9pbnQsIEhpZ2hsaWdoCiAgICAgICAgICAgICBzZWxlY3RlZFRlbGVwaG9uZU51bWJlcnMuYXBw
ZW5kKHBsYWluVGV4dChyYW5nZSkpOwogCiAgICAgICAgIG1fcGFnZS5jaHJvbWUoKS5jbGllbnQo
KS5oYW5kbGVTZWxlY3Rpb25TZXJ2aWNlQ2xpY2sobV9wYWdlLmZvY3VzQ29udHJvbGxlcigpLmZv
Y3VzZWRPck1haW5GcmFtZSgpLnNlbGVjdGlvbigpLCBzZWxlY3RlZFRlbGVwaG9uZU51bWJlcnMs
IHdpbmRvd1BvaW50KTsKLSAgICB9IGVsc2UgaWYgKGhpZ2hsaWdodC50eXBlKCkgPT0gSGlnaGxp
Z2h0OjpUZWxlcGhvbmVOdW1iZXJUeXBlKQorICAgIH0gZWxzZSBpZiAoaGlnaGxpZ2h0LnR5cGUo
KSA9PSBEYXRhRGV0ZWN0b3JIaWdobGlnaHQ6OlR5cGU6OlRlbGVwaG9uZU51bWJlcikKICAgICAg
ICAgbV9wYWdlLmNocm9tZSgpLmNsaWVudCgpLmhhbmRsZVRlbGVwaG9uZU51bWJlckNsaWNrKHBs
YWluVGV4dChoaWdobGlnaHQucmFuZ2UoKSksIHdpbmRvd1BvaW50KTsKIH0KIApAQCAtNzk4LDE4
ICs2NTUsNiBAQCBGcmFtZSYgU2VydmljZXNPdmVybGF5Q29udHJvbGxlcjo6bWFpbkZyYW1lKCkg
Y29uc3QKICAgICByZXR1cm4gbV9wYWdlLm1haW5GcmFtZSgpOwogfQogCi12b2lkIFNlcnZpY2Vz
T3ZlcmxheUNvbnRyb2xsZXI6OmRpZENyZWF0ZUhpZ2hsaWdodChIaWdobGlnaHQqIGhpZ2hsaWdo
dCkKLXsKLSAgICBBU1NFUlQoIW1faGlnaGxpZ2h0cy5jb250YWlucyhoaWdobGlnaHQpKTsKLSAg
ICBtX2hpZ2hsaWdodHMuYWRkKGhpZ2hsaWdodCk7Ci19Ci0KLXZvaWQgU2VydmljZXNPdmVybGF5
Q29udHJvbGxlcjo6d2lsbERlc3Ryb3lIaWdobGlnaHQoSGlnaGxpZ2h0KiBoaWdobGlnaHQpCi17
Ci0gICAgQVNTRVJUKG1faGlnaGxpZ2h0cy5jb250YWlucyhoaWdobGlnaHQpKTsKLSAgICBtX2hp
Z2hsaWdodHMucmVtb3ZlKGhpZ2hsaWdodCk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYktpdAog
CiAjZW5kaWYgLy8gKEVOQUJMRShTRVJWSUNFX0NPTlRST0xTKSB8fCBFTkFCTEUoVEVMRVBIT05F
X05VTUJFUl9ERVRFQ1RJT04pKSAmJiBQTEFURk9STShNQUMpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvRGF0YURldGVjdG9ySGlnaGxpZ2h0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvRGF0YURldGVjdG9ySGlnaGxpZ2h0LmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTM0
NzY3YjZlYTRhMzA0NDlhM2E0MzBjOWI4YTFkMDkzNDY1NWRhZgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EYXRhRGV0ZWN0b3JIaWdobGlnaHQuaApAQCAt
MCwwICsxLDEwMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKERB
VEFfREVURUNUSU9OKSAmJiBQTEFURk9STShNQUMpCisKKyNpbXBvcnQgIkdyYXBoaWNzTGF5ZXJD
bGllbnQuaCIKKyNpbXBvcnQgIlNpbXBsZVJhbmdlLmgiCisjaW1wb3J0IDx3dGYvUmVmQ291bnRl
ZC5oPgorI2ltcG9ydCA8d3RmL1JlZlB0ci5oPgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgor
I2ltcG9ydCA8d3RmL1dlYWtQdHIuaD4KKwordHlwZWRlZiBzdHJ1Y3QgX19EREhpZ2hsaWdodCAq
RERIaWdobGlnaHRSZWY7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRGF0YURldGVj
dG9ySGlnaGxpZ2h0OworY2xhc3MgRmxvYXRSZWN0OworY2xhc3MgR3JhcGhpY3NDb250ZXh0Owor
Y2xhc3MgR3JhcGhpY3NMYXllcjsKK2NsYXNzIFBhZ2U7CisKK2NsYXNzIERhdGFEZXRlY3Rvckhp
Z2hsaWdodENsaWVudCA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxEYXRhRGV0ZWN0b3JIaWdobGln
aHRDbGllbnQ+IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5EYXRhRGV0ZWN0b3JIaWdobGlnaHRD
bGllbnQoKSA9IGRlZmF1bHQ7CisKKyAgICB2aXJ0dWFsIERhdGFEZXRlY3RvckhpZ2hsaWdodCog
YWN0aXZlSGlnaGxpZ2h0KCkgY29uc3QgPSAwOworfTsKKworY2xhc3MgRGF0YURldGVjdG9ySGln
aGxpZ2h0IDogcHVibGljIFJlZkNvdW50ZWQ8RGF0YURldGVjdG9ySGlnaGxpZ2h0PiwgcHJpdmF0
ZSBHcmFwaGljc0xheWVyQ2xpZW50LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8RGF0YURldGVjdG9y
SGlnaGxpZ2h0PiB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRGF0YURldGVjdG9ySGlnaGxp
Z2h0KTsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPERhdGFEZXRlY3RvckhpZ2hsaWdodD4gY3Jl
YXRlRm9yU2VsZWN0aW9uKFBhZ2UmLCBEYXRhRGV0ZWN0b3JIaWdobGlnaHRDbGllbnQmLCBSZXRh
aW5QdHI8RERIaWdobGlnaHRSZWY+JiYsIFNpbXBsZVJhbmdlJiYpOworICAgIHN0YXRpYyBSZWY8
RGF0YURldGVjdG9ySGlnaGxpZ2h0PiBjcmVhdGVGb3JUZWxlcGhvbmVOdW1iZXIoUGFnZSYsIERh
dGFEZXRlY3RvckhpZ2hsaWdodENsaWVudCYsIFJldGFpblB0cjxEREhpZ2hsaWdodFJlZj4mJiwg
U2ltcGxlUmFuZ2UmJik7CisKKyAgICB+RGF0YURldGVjdG9ySGlnaGxpZ2h0KCkgPSBkZWZhdWx0
OworCisgICAgdm9pZCBpbnZhbGlkYXRlKCk7CisKKyAgICBEREhpZ2hsaWdodFJlZiBoaWdobGln
aHQoKSBjb25zdCB7IHJldHVybiBtX2hpZ2hsaWdodC5nZXQoKTsgfQorICAgIGNvbnN0IFNpbXBs
ZVJhbmdlJiByYW5nZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmFuZ2U7IH0KKyAgICBHcmFwaGljc0xh
eWVyJiBsYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fZ3JhcGhpY3NMYXllci5nZXQoKTsgfQorCisg
ICAgZW51bSBjbGFzcyBUeXBlIDogdWludDhfdCB7CisgICAgICAgIE5vbmUgPSAwLAorICAgICAg
ICBUZWxlcGhvbmVOdW1iZXIgPSAxIDw8IDAsCisgICAgICAgIFNlbGVjdGlvbiA9IDEgPDwgMSwK
KyAgICB9OworCisgICAgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CisKKyAg
ICB2b2lkIGZhZGVJbigpOworICAgIHZvaWQgZmFkZU91dCgpOworCisgICAgdm9pZCBzZXRIaWdo
bGlnaHQoRERIaWdobGlnaHRSZWYpOworCitwcml2YXRlOgorICAgIERhdGFEZXRlY3RvckhpZ2hs
aWdodChQYWdlJiwgRGF0YURldGVjdG9ySGlnaGxpZ2h0Q2xpZW50JiwgVHlwZSwgUmV0YWluUHRy
PERESGlnaGxpZ2h0UmVmPiYmLCBTaW1wbGVSYW5nZSYmKTsKKworICAgIC8vIEdyYXBoaWNzTGF5
ZXJDbGllbnQKKyAgICB2b2lkIG5vdGlmeUZsdXNoUmVxdWlyZWQoY29uc3QgR3JhcGhpY3NMYXll
ciopIG92ZXJyaWRlOworICAgIHZvaWQgcGFpbnRDb250ZW50cyhjb25zdCBHcmFwaGljc0xheWVy
KiwgR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBpbkNsaXAsIEdyYXBoaWNzTGF5
ZXJQYWludEJlaGF2aW9yKSBvdmVycmlkZTsKKyAgICBmbG9hdCBkZXZpY2VTY2FsZUZhY3Rvcigp
IGNvbnN0IG92ZXJyaWRlOworCisgICAgdm9pZCBkaWRGaW5pc2hGYWRlT3V0QW5pbWF0aW9uKCk7
CisKKyAgICBXZWFrUHRyPERhdGFEZXRlY3RvckhpZ2hsaWdodENsaWVudD4gbV9jbGllbnQ7Cisg
ICAgV2Vha1B0cjxQYWdlPiBtX3BhZ2U7CisgICAgUmV0YWluUHRyPERESGlnaGxpZ2h0UmVmPiBt
X2hpZ2hsaWdodDsKKyAgICBTaW1wbGVSYW5nZSBtX3JhbmdlOworICAgIFJlZjxHcmFwaGljc0xh
eWVyPiBtX2dyYXBoaWNzTGF5ZXI7CisgICAgVHlwZSBtX3R5cGUgeyBUeXBlOjpOb25lIH07Cit9
OworCitib29sIGFyZUVxdWl2YWxlbnQoY29uc3QgRGF0YURldGVjdG9ySGlnaGxpZ2h0KiwgY29u
c3QgRGF0YURldGVjdG9ySGlnaGxpZ2h0Kik7CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmIC8vIEVOQUJMRShEQVRBX0RFVEVDVElPTikgJiYgUExBVEZPUk0oTUFDKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RhdGFEZXRlY3RvckhpZ2hsaWdodC5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EYXRhRGV0ZWN0b3JIaWdobGlnaHQubW0K
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNjYzYTI3OTU3ODczMWMyYjA3MWZiYmZjN2Y0MzM1MGI0MzliMmRkNgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EYXRhRGV0ZWN0b3JI
aWdobGlnaHQubW0KQEAgLTAsMCArMSwxOTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25m
aWcuaCIKKyNpbXBvcnQgIkRhdGFEZXRlY3RvckhpZ2hsaWdodC5oIgorCisjaWYgRU5BQkxFKERB
VEFfREVURUNUSU9OKSAmJiBQTEFURk9STShNQUMpCisKKyNpbXBvcnQgIkNocm9tZS5oIgorI2lt
cG9ydCAiQ2hyb21lQ2xpZW50LmgiCisjaW1wb3J0ICJGbG9hdFJlY3QuaCIKKyNpbXBvcnQgIkdy
YXBoaWNzQ29udGV4dC5oIgorI2ltcG9ydCAiR3JhcGhpY3NMYXllci5oIgorI2ltcG9ydCAiR3Jh
cGhpY3NMYXllckNBLmgiCisjaW1wb3J0ICJHcmFwaGljc0xheWVyRmFjdG9yeS5oIgorI2ltcG9y
dCAiUGFnZS5oIgorI2ltcG9ydCAiUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hLmgiCisjaW1wb3J0
ICJQbGF0Zm9ybUNBTGF5ZXIuaCIKKyNpbXBvcnQgPHBhbC9zcGkvbWFjL0RhdGFEZXRlY3RvcnNT
UEkuaD4KKyNpbXBvcnQgPHd0Zi9TZWNvbmRzLmg+CisjaW1wb3J0IDx3dGYvU29mdExpbmtpbmcu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjb25zdGV4cHIgU2Vjb25kcyBoaWdobGlnaHRG
YWRlQW5pbWF0aW9uRHVyYXRpb24gPSAzMDBfbXM7CisKK1JlZjxEYXRhRGV0ZWN0b3JIaWdobGln
aHQ+IERhdGFEZXRlY3RvckhpZ2hsaWdodDo6Y3JlYXRlRm9yU2VsZWN0aW9uKFBhZ2UmIHBhZ2Us
IERhdGFEZXRlY3RvckhpZ2hsaWdodENsaWVudCYgY2xpZW50LCBSZXRhaW5QdHI8RERIaWdobGln
aHRSZWY+JiYgZGRIaWdobGlnaHQsIFNpbXBsZVJhbmdlJiYgcmFuZ2UpCit7CisgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgRGF0YURldGVjdG9ySGlnaGxpZ2h0KHBhZ2UsIGNsaWVudCwgRGF0YURl
dGVjdG9ySGlnaGxpZ2h0OjpUeXBlOjpTZWxlY3Rpb24sIFdURk1vdmUoZGRIaWdobGlnaHQpLCBX
VEZNb3ZlKHJhbmdlKSkpOworfQorCitSZWY8RGF0YURldGVjdG9ySGlnaGxpZ2h0PiBEYXRhRGV0
ZWN0b3JIaWdobGlnaHQ6OmNyZWF0ZUZvclRlbGVwaG9uZU51bWJlcihQYWdlJiBwYWdlLCBEYXRh
RGV0ZWN0b3JIaWdobGlnaHRDbGllbnQmIGNsaWVudCwgUmV0YWluUHRyPERESGlnaGxpZ2h0UmVm
PiYmIGRkSGlnaGxpZ2h0LCBTaW1wbGVSYW5nZSYmIHJhbmdlKQoreworICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IERhdGFEZXRlY3RvckhpZ2hsaWdodChwYWdlLCBjbGllbnQsIERhdGFEZXRlY3Rv
ckhpZ2hsaWdodDo6VHlwZTo6VGVsZXBob25lTnVtYmVyLCBXVEZNb3ZlKGRkSGlnaGxpZ2h0KSwg
V1RGTW92ZShyYW5nZSkpKTsKK30KKworRGF0YURldGVjdG9ySGlnaGxpZ2h0OjpEYXRhRGV0ZWN0
b3JIaWdobGlnaHQoUGFnZSYgcGFnZSwgRGF0YURldGVjdG9ySGlnaGxpZ2h0Q2xpZW50JiBjbGll
bnQsIFR5cGUgdHlwZSwgUmV0YWluUHRyPERESGlnaGxpZ2h0UmVmPiYmIGRkSGlnaGxpZ2h0LCBT
aW1wbGVSYW5nZSYmIHJhbmdlKQorICAgIDogbV9jbGllbnQobWFrZVdlYWtQdHIoY2xpZW50KSkK
KyAgICAsIG1fcGFnZShtYWtlV2Vha1B0cihwYWdlKSkKKyAgICAsIG1fcmFuZ2UoV1RGTW92ZShy
YW5nZSkpCisgICAgLCBtX2dyYXBoaWNzTGF5ZXIoR3JhcGhpY3NMYXllcjo6Y3JlYXRlKHBhZ2Uu
Y2hyb21lKCkuY2xpZW50KCkuZ3JhcGhpY3NMYXllckZhY3RvcnkoKSwgKnRoaXMpKQorICAgICwg
bV90eXBlKHR5cGUpCit7CisgICAgQVNTRVJUKGRkSGlnaGxpZ2h0KTsKKworICAgIG1fZ3JhcGhp
Y3NMYXllci0+c2V0RHJhd3NDb250ZW50KHRydWUpOworCisgICAgc2V0SGlnaGxpZ2h0KGRkSGln
aGxpZ2h0LmdldCgpKTsKKworICAgIC8vIFNldCBkaXJlY3RseSBvbiB0aGUgUGxhdGZvcm1DQUxh
eWVyIHNvIHRoYXQgd2hlbiB3ZSBsZWF2ZSB0aGUgJ2Zyb20nIHZhbHVlIGltcGxpY2l0CisgICAg
Ly8gaW4gb3VyIGFuaW1hdGlvbnMsIHdlIGdldCB0aGUgcmlnaHQgaW5pdGlhbCB2YWx1ZSByZWdh
cmRsZXNzIG9mIGZsdXNoIHRpbWluZy4KKyAgICBkb3duY2FzdDxHcmFwaGljc0xheWVyQ0E+KGxh
eWVyKCkpLnBsYXRmb3JtQ0FMYXllcigpLT5zZXRPcGFjaXR5KDApOworfQorCit2b2lkIERhdGFE
ZXRlY3RvckhpZ2hsaWdodDo6c2V0SGlnaGxpZ2h0KERESGlnaGxpZ2h0UmVmIGhpZ2hsaWdodCkK
K3sKKyAgICBpZiAoIURhdGFEZXRlY3RvcnNMaWJyYXJ5KCkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIGlmICghbV9jbGllbnQpCisgICAgICAgIHJldHVybjsKKworICAgIG1faGlnaGxpZ2h0ID0g
aGlnaGxpZ2h0OworCisgICAgaWYgKCFtX2hpZ2hsaWdodCkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgQ0dSZWN0IGhpZ2hsaWdodEJvdW5kaW5nUmVjdCA9IERESGlnaGxpZ2h0R2V0Qm91bmRpbmdS
ZWN0KG1faGlnaGxpZ2h0LmdldCgpKTsKKyAgICBtX2dyYXBoaWNzTGF5ZXItPnNldFBvc2l0aW9u
KEZsb2F0UG9pbnQoaGlnaGxpZ2h0Qm91bmRpbmdSZWN0Lm9yaWdpbikpOworICAgIG1fZ3JhcGhp
Y3NMYXllci0+c2V0U2l6ZShGbG9hdFNpemUoaGlnaGxpZ2h0Qm91bmRpbmdSZWN0LnNpemUpKTsK
KworICAgIG1fZ3JhcGhpY3NMYXllci0+c2V0TmVlZHNEaXNwbGF5KCk7Cit9CisKK3ZvaWQgRGF0
YURldGVjdG9ySGlnaGxpZ2h0OjppbnZhbGlkYXRlKCkKK3sKKyAgICBsYXllcigpLnJlbW92ZUZy
b21QYXJlbnQoKTsKKyAgICBtX2NsaWVudCA9IG51bGxwdHI7CisgICAgbV9wYWdlID0gbnVsbHB0
cjsKK30KKwordm9pZCBEYXRhRGV0ZWN0b3JIaWdobGlnaHQ6Om5vdGlmeUZsdXNoUmVxdWlyZWQo
Y29uc3QgR3JhcGhpY3NMYXllciopCit7CisgICAgaWYgKCFtX3BhZ2UpCisgICAgICAgIHJldHVy
bjsKKworICAgIG1fcGFnZS0+c2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoUmVuZGVyaW5nVXBkYXRl
U3RlcDo6TGF5ZXJGbHVzaCk7Cit9CisKK3ZvaWQgRGF0YURldGVjdG9ySGlnaGxpZ2h0OjpwYWlu
dENvbnRlbnRzKGNvbnN0IEdyYXBoaWNzTGF5ZXIqLCBHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNz
Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiwgR3JhcGhpY3NMYXllclBhaW50QmVoYXZpb3IpCit7
CisgICAgaWYgKCFEYXRhRGV0ZWN0b3JzTGlicmFyeSgpKQorICAgICAgICByZXR1cm47CisKKyAg
ICAvLyBGSVhNRTogVGhpcyBuZWVkcyB0byBiZSBtb3ZlZCBpbnRvIEdyYXBoaWNzQ29udGV4dCBh
cyBhIERpc3BsYXlMaXN0LWNvbXBhdGlibGUgZHJhd2luZyBjb21tYW5kLgorICAgIGlmICghZ3Jh
cGhpY3NDb250ZXh0Lmhhc1BsYXRmb3JtQ29udGV4dCgpKSB7CisgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQ0dDb250ZXh0UmVmIGNn
Q29udGV4dCA9IGdyYXBoaWNzQ29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKTsKKworICAgIEFMTE9X
X0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCisgICAgQ0dMYXllclJlZiBoaWdobGlnaHRM
YXllciA9IERESGlnaGxpZ2h0R2V0TGF5ZXJXaXRoQ29udGV4dChoaWdobGlnaHQoKSwgY2dDb250
ZXh0KTsKKyAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKKyAgICBDR1JlY3Qg
aGlnaGxpZ2h0Qm91bmRpbmdSZWN0ID0gRERIaWdobGlnaHRHZXRCb3VuZGluZ1JlY3QoaGlnaGxp
Z2h0KCkpOworICAgIGhpZ2hsaWdodEJvdW5kaW5nUmVjdC5vcmlnaW4gPSBDR1BvaW50WmVybzsK
KworICAgIENHQ29udGV4dERyYXdMYXllckluUmVjdChjZ0NvbnRleHQsIGhpZ2hsaWdodEJvdW5k
aW5nUmVjdCwgaGlnaGxpZ2h0TGF5ZXIpOworfQorCitmbG9hdCBEYXRhRGV0ZWN0b3JIaWdobGln
aHQ6OmRldmljZVNjYWxlRmFjdG9yKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fcGFnZSkKKyAgICAg
ICAgcmV0dXJuIDE7CisKKyAgICByZXR1cm4gbV9wYWdlLT5kZXZpY2VTY2FsZUZhY3RvcigpOwor
fQorCit2b2lkIERhdGFEZXRlY3RvckhpZ2hsaWdodDo6ZmFkZUluKCkKK3sKKyAgICBSZXRhaW5Q
dHI8Q0FCYXNpY0FuaW1hdGlvbj4gYW5pbWF0aW9uID0gW0NBQmFzaWNBbmltYXRpb24gYW5pbWF0
aW9uV2l0aEtleVBhdGg6QCJvcGFjaXR5Il07CisgICAgW2FuaW1hdGlvbiBzZXREdXJhdGlvbjpo
aWdobGlnaHRGYWRlQW5pbWF0aW9uRHVyYXRpb24uc2Vjb25kcygpXTsKKyAgICBbYW5pbWF0aW9u
IHNldEZpbGxNb2RlOmtDQUZpbGxNb2RlRm9yd2FyZHNdOworICAgIFthbmltYXRpb24gc2V0UmVt
b3ZlZE9uQ29tcGxldGlvbjpmYWxzZV07CisgICAgW2FuaW1hdGlvbiBzZXRUb1ZhbHVlOkAxXTsK
KworICAgIGF1dG8gcGxhdGZvcm1BbmltYXRpb24gPSBQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2E6
OmNyZWF0ZShhbmltYXRpb24uZ2V0KCkpOworICAgIGRvd25jYXN0PEdyYXBoaWNzTGF5ZXJDQT4o
bGF5ZXIoKSkucGxhdGZvcm1DQUxheWVyKCktPmFkZEFuaW1hdGlvbkZvcktleSgiRmFkZUhpZ2hs
aWdodEluIiwgcGxhdGZvcm1BbmltYXRpb24uZ2V0KCkpOworfQorCit2b2lkIERhdGFEZXRlY3Rv
ckhpZ2hsaWdodDo6ZmFkZU91dCgpCit7CisgICAgUmV0YWluUHRyPENBQmFzaWNBbmltYXRpb24+
IGFuaW1hdGlvbiA9IFtDQUJhc2ljQW5pbWF0aW9uIGFuaW1hdGlvbldpdGhLZXlQYXRoOkAib3Bh
Y2l0eSJdOworICAgIFthbmltYXRpb24gc2V0RHVyYXRpb246aGlnaGxpZ2h0RmFkZUFuaW1hdGlv
bkR1cmF0aW9uLnNlY29uZHMoKV07CisgICAgW2FuaW1hdGlvbiBzZXRGaWxsTW9kZTprQ0FGaWxs
TW9kZUZvcndhcmRzXTsKKyAgICBbYW5pbWF0aW9uIHNldFJlbW92ZWRPbkNvbXBsZXRpb246ZmFs
c2VdOworICAgIFthbmltYXRpb24gc2V0VG9WYWx1ZTpAMF07CisKKyAgICBbQ0FUcmFuc2FjdGlv
biBiZWdpbl07CisgICAgW0NBVHJhbnNhY3Rpb24gc2V0Q29tcGxldGlvbkJsb2NrOltwcm90ZWN0
ZWRTZWxmID0gbWFrZVJlZigqdGhpcyldKCkgbXV0YWJsZSB7CisgICAgICAgIHByb3RlY3RlZFNl
bGYtPmRpZEZpbmlzaEZhZGVPdXRBbmltYXRpb24oKTsKKyAgICB9XTsKKworICAgIGF1dG8gcGxh
dGZvcm1BbmltYXRpb24gPSBQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2E6OmNyZWF0ZShhbmltYXRp
b24uZ2V0KCkpOworICAgIGRvd25jYXN0PEdyYXBoaWNzTGF5ZXJDQT4obGF5ZXIoKSkucGxhdGZv
cm1DQUxheWVyKCktPmFkZEFuaW1hdGlvbkZvcktleSgiRmFkZUhpZ2hsaWdodE91dCIsIHBsYXRm
b3JtQW5pbWF0aW9uLmdldCgpKTsKKyAgICBbQ0FUcmFuc2FjdGlvbiBjb21taXRdOworfQorCit2
b2lkIERhdGFEZXRlY3RvckhpZ2hsaWdodDo6ZGlkRmluaXNoRmFkZU91dEFuaW1hdGlvbigpCit7
CisgICAgaWYgKCFtX2NsaWVudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG1fY2xpZW50
LT5hY3RpdmVIaWdobGlnaHQoKSA9PSB0aGlzKQorICAgICAgICByZXR1cm47CisKKyAgICBsYXll
cigpLnJlbW92ZUZyb21QYXJlbnQoKTsKK30KKworYm9vbCBhcmVFcXVpdmFsZW50KGNvbnN0IERh
dGFEZXRlY3RvckhpZ2hsaWdodCogYSwgY29uc3QgRGF0YURldGVjdG9ySGlnaGxpZ2h0KiBiKQor
eworICAgIGlmIChhID09IGIpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgaWYgKCFhIHx8
ICFiKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gYS0+dHlwZSgpID09IGIt
PnR5cGUoKSAmJiBhLT5yYW5nZSgpID09IGItPnJhbmdlKCk7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShEQVRBX0RFVEVDVElPTikgJiYgUExBVEZPUk0o
TUFDKQo=
</data>
<flag name="commit-queue"
          id="450147"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429065</attachid>
            <date>2021-05-19 10:35:25 -0700</date>
            <delta_ts>2021-05-19 13:30:37 -0700</delta_ts>
            <desc>Fix non-internal macOS build</desc>
            <filename>bug-225968-20210519103525.patch</filename>
            <type>text/plain</type>
            <size>50599</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3NzIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTIwM2RmNjc1OTJlMjlj
MjVmOTNlMDMzOWE3YjdhYjRmZmM1ZjUzMS4uMWE5ZDQxZTdiZmY4YWYzMTNhZjZhNGM2M2NjZmFh
OGYwMTcyOTMyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk1IEBACisyMDIxLTA1LTE5ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFttYWNPU10gUHVs
bCBTZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyOjpIaWdobGlnaHQgb3V0IGludG8gYSBzZXBhcmF0
ZSBoZWxwZXIgY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIyNTk2OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFJlZmFjdG9yIHNvbWUgY29kZSBmb3IgcGFpbnRpbmcgZGF0YSBkZXRlY3RvciBoaWdo
bGlnaHRzIChgRERIaWdobGlnaHRSZWZgKSwgYnkgcHVsbGluZyB3aGF0IGlzIGN1cnJlbnRseQor
ICAgICAgICBgU2VydmljZXNPdmVybGF5Q29udHJvbGxlcjo6SGlnaGxpZ2h0YCBvdXQgaW50byBh
IHNlcGFyYXRlIGhlbHBlciBjbGFzcy4gSW4gYSBmdXR1cmUgcGF0Y2gsIEkgcGxhbiBvbiB1c2lu
ZyB0aGlzCisgICAgICAgIGZ1bmN0aW9uYWxpdHkgZm9yIHRoZSBpbWFnZSBvdmVybGF5IGNvbnRy
b2xsZXIgdG8gc3VwcG9ydCByZW5kZXJpbmcgZGF0YSBkZXRlY3RvciBoaWdobGlnaHRzIHRoZXJl
LgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWxzbyBtYWtlcyBzb21lIG1pbm9yIGFkanVzdG1lbnRz
OgorCisgICAgICAgIC0gICBNYWtlIGBEYXRhRGV0ZWN0b3JIaWdobGlnaHRgIGNhcGFibGUgb2Yg
YmVpbmcgc3RvcmVkIGluIGEgYFdlYWtQdHJgLCBhbmQgaGF2ZSBgU2VydmljZXNPdmVybGF5Q29u
dHJvbGxlcmAKKyAgICAgICAgICAgIGhvbGQgb24gdG8gYSBgV2Vha0hhc2hTZXQ8RGF0YURldGVj
dG9ySGlnaGxpZ2h0PmAgaW5zdGVhZCBvZiBhIGhhc2ggc2V0IG9mIHJhdyBwb2ludGVycy4gVGhp
cyBhZGRpdGlvbmFsbHkKKyAgICAgICAgICAgIG1ha2VzIGl0IHVubmVjZXNzYXJ5IHRvIGFkZCBt
ZXRob2RzIGZvciBgRGF0YURldGVjdG9ySGlnaGxpZ2h0YCB0byBub3RpZnkgYFNlcnZpY2VzT3Zl
cmxheUNvbnRyb2xsZXJgIHVwb24KKyAgICAgICAgICAgIGNyZWF0aW9uIG9yIGRlc3RydWN0aW9u
LCBzaW5jZSB3ZSBjYW4gc2ltcGx5IGFkZCB0aGUgbmV3bHkgY3JlYXRlZCBoaWdobGlnaHQgdG8g
dGhlIHdlYWsgc2V0IGFmdGVyIGNyZWF0aW5nCisgICAgICAgICAgICBpdCwgYW5kIHNpbmNlIGl0
J3MgYSBgV2Vha1B0cmAsIGl0IHdpbGwgZ2V0IGNsZWFuZWQgdXAgdXBvbiBkZXN0cnVjdGlvbi4K
KworICAgICAgICAtICAgTWFrZSBEYXRhRGV0ZWN0b3JIaWdobGlnaHQ6OlR5cGUgYW4gZW51bSBj
bGFzcywgYW5kIG1ha2UgYG1fZGlydHlIaWdobGlnaHRUeXBlc2AgYW4gYE9wdGlvblNldGAgaW5z
dGVhZCBvZgorICAgICAgICAgICAgYSByYXcgYml0bWFzay4KKworICAgICAgICAtICAgVXNlIGBh
dXRvYCBpbiBhIGZldyBwbGFjZXMgd2hlcmUgdGhlIHR5cGUgaXMgYXBwYXJlbnQgKGUuZy4gaW4g
c29tZSBwbGFjZXMgd2hlcmUgd2UgdXNlIGBhZG9wdENGYCkuCisKKyAgICAgICAgLSAgIE1ha2Ug
YGhpZ2hsaWdodEZhZGVBbmltYXRpb25EdXJhdGlvbmAgYSBgV1RGOjpTZWNvbmRzYCBpbnN0ZWFk
IG9mIGEgcmF3IGZsb2F0aW5nIHBvaW50IHZhbHVlLgorCisgICAgICAgIC0gICBBZGQgYSBGSVhN
RSBpbiBgRGF0YURldGVjdG9ySGlnaGxpZ2h0OjpwYWludENvbnRlbnRzYCBhYm91dCB0aGUgbmVl
ZCB0byByZWZhY3RvciB0aGlzIHBhaW50aW5nIGxvZ2ljIHNvIHRoYXQKKyAgICAgICAgICAgIGl0
IGRvZXMgKm5vdCogdXNlIHRoZSBwbGF0Zm9ybSBgQ0dDb250ZXh0UmVmYCBkaXJlY3RseS4KKwor
ICAgICAgICBObyBjaGFuZ2UgaW4gYmVoYXZpb3IuCisKKyAgICAgICAgKiBTb3VyY2VzQ29jb2Eu
dHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBwYWdlL21hYy9TZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyLmg6CisgICAgICAgIChXZWJD
b3JlOjpTZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyOjphY3RpdmVIaWdobGlnaHQgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6U2VydmljZXNPdmVybGF5Q29udHJvbGxlcjo6SGlnaGxpZ2h0Ojpk
ZEhpZ2hsaWdodCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlc092
ZXJsYXlDb250cm9sbGVyOjpIaWdobGlnaHQ6OnJhbmdlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlNlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXI6OkhpZ2hsaWdodDo6bGF5ZXIg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZXNPdmVybGF5Q29udHJv
bGxlcjo6SGlnaGxpZ2h0Ojp0eXBlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwYWdlL21h
Yy9TZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2Vydmlj
ZXNPdmVybGF5Q29udHJvbGxlcjo6flNlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6U2VydmljZXNPdmVybGF5Q29udHJvbGxlcjo6c2VsZWN0aW9uUmVjdHNEaWRD
aGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZXNPdmVybGF5Q29udHJvbGxlcjo6c2Vs
ZWN0ZWRUZWxlcGhvbmVOdW1iZXJSYW5nZXNDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNl
cnZpY2VzT3ZlcmxheUNvbnRyb2xsZXI6OmludmFsaWRhdGVIaWdobGlnaHRzT2ZUeXBlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXI6OmJ1aWxkUG90ZW50aWFs
SGlnaGxpZ2h0c0lmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VzT3ZlcmxheUNv
bnRyb2xsZXI6Om1vdXNlSXNPdmVySGlnaGxpZ2h0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlNlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXI6OnJlbWFpbmluZ1RpbWVVbnRpbEhpZ2hsaWdodFNo
b3VsZEJlU2hvd24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZXNPdmVybGF5Q29u
dHJvbGxlcjo6cmVtb3ZlQWxsUG90ZW50aWFsSGlnaGxpZ2h0c09mVHlwZSk6CisgICAgICAgIChX
ZWJDb3JlOjpTZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyOjpidWlsZFBob25lTnVtYmVySGlnaGxp
Z2h0cyk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyOjpidWls
ZFNlbGVjdGlvbkhpZ2hsaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlc092ZXJsYXlD
b250cm9sbGVyOjpyZXBsYWNlSGlnaGxpZ2h0c09mVHlwZVByZXNlcnZpbmdFcXVpdmFsZW50SGln
aGxpZ2h0cyk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyOjpm
aW5kVGVsZXBob25lTnVtYmVySGlnaGxpZ2h0Q29udGFpbmluZ1NlbGVjdGlvbkhpZ2hsaWdodCk6
CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyOjpkZXRlcm1pbmVB
Y3RpdmVIaWdobGlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZXNPdmVybGF5Q29udHJv
bGxlcjo6bW91c2VFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlc092ZXJsYXlDb250
cm9sbGVyOjpkaWRTY3JvbGxGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlc092ZXJs
YXlDb250cm9sbGVyOjpoYW5kbGVDbGljayk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlc092
ZXJsYXlDb250cm9sbGVyOjpzaG91bGRSZW1vdmVIaWdobGlnaHRMYXllckFmdGVyRmFkaW5nT3V0
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXI6Okhp
Z2hsaWdodDo6Y3JlYXRlRm9yU2VsZWN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OlNlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXI6OkhpZ2hsaWdodDo6Y3JlYXRlRm9yVGVsZXBob25l
TnVtYmVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VzT3ZlcmxheUNvbnRy
b2xsZXI6OkhpZ2hsaWdodDo6SGlnaGxpZ2h0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OlNlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXI6OkhpZ2hsaWdodDo6fkhpZ2hsaWdodCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyOjpIaWdobGln
aHQ6OnNldERESGlnaGxpZ2h0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2Vz
T3ZlcmxheUNvbnRyb2xsZXI6OkhpZ2hsaWdodDo6aW52YWxpZGF0ZSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpTZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyOjpIaWdobGlnaHQ6Om5vdGlm
eUZsdXNoUmVxdWlyZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZXNPdmVy
bGF5Q29udHJvbGxlcjo6SGlnaGxpZ2h0OjpwYWludENvbnRlbnRzKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlNlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXI6OkhpZ2hsaWdodDo6ZGV2aWNl
U2NhbGVGYWN0b3IgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZXNP
dmVybGF5Q29udHJvbGxlcjo6SGlnaGxpZ2h0OjpmYWRlSW4pOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6U2VydmljZXNPdmVybGF5Q29udHJvbGxlcjo6SGlnaGxpZ2h0OjpmYWRlT3V0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXI6Okhp
Z2hsaWdodDo6ZGlkRmluaXNoRmFkZU91dEFuaW1hdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpTZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyOjpoaWdobGlnaHRzQXJlRXF1aXZhbGVu
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlc092ZXJsYXlDb250cm9sbGVy
OjpkaWRDcmVhdGVIaWdobGlnaHQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2Vydmlj
ZXNPdmVybGF5Q29udHJvbGxlcjo6d2lsbERlc3Ryb3lIaWdobGlnaHQpOiBEZWxldGVkLgorICAg
ICAgICAqIHBsYXRmb3JtL21hYy9EYXRhRGV0ZWN0b3JIaWdobGlnaHQuaDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjpEYXRhRGV0ZWN0b3JIaWdobGlnaHRDbGllbnQ6OnNob3VsZFJlbW92ZUhp
Z2hsaWdodExheWVyQWZ0ZXJGYWRpbmdPdXQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGF0
YURldGVjdG9ySGlnaGxpZ2h0OjpoaWdobGlnaHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
RGF0YURldGVjdG9ySGlnaGxpZ2h0OjpyYW5nZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpE
YXRhRGV0ZWN0b3JIaWdobGlnaHQ6OmxheWVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRh
dGFEZXRlY3RvckhpZ2hsaWdodDo6dHlwZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vbWFj
L0RhdGFEZXRlY3RvckhpZ2hsaWdodC5tbTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpEYXRh
RGV0ZWN0b3JIaWdobGlnaHQ6OmNyZWF0ZUZvclNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpEYXRhRGV0ZWN0b3JIaWdobGlnaHQ6OmNyZWF0ZUZvclRlbGVwaG9uZU51bWJlcik6CisgICAg
ICAgIChXZWJDb3JlOjpEYXRhRGV0ZWN0b3JIaWdobGlnaHQ6OkRhdGFEZXRlY3RvckhpZ2hsaWdo
dCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhRGV0ZWN0b3JIaWdobGlnaHQ6OnNldEhpZ2hsaWdo
dCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhRGV0ZWN0b3JIaWdobGlnaHQ6OmludmFsaWRhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6RGF0YURldGVjdG9ySGlnaGxpZ2h0Ojpub3RpZnlGbHVzaFJl
cXVpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFEZXRlY3RvckhpZ2hsaWdodDo6cGFpbnRD
b250ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhRGV0ZWN0b3JIaWdobGlnaHQ6OmRldmlj
ZVNjYWxlRmFjdG9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFEZXRlY3RvckhpZ2hs
aWdodDo6ZmFkZUluKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFEZXRlY3RvckhpZ2hsaWdodDo6
ZmFkZU91dCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhRGV0ZWN0b3JIaWdobGlnaHQ6OmRpZEZp
bmlzaEZhZGVPdXRBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6YXJlRXF1aXZhbGVudCk6
CisKIDIwMjEtMDUtMTkgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAK
ICAgICAgICAgW0dQVSBQcm9jZXNzXSBBZGQgbW9yZSBib3VuZHMgY2hlY2tpbmcgYW5kIGlucHV0
IHZhbGlkYXRpb24gaW4gRGlzcGxheUxpc3RJdGVyYXRvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQK
aW5kZXggOTJjYjJjNDk4NThiM2Y4MmQxYjZmNWQxYjgzOWMzMDU4MjJjMDAxNC4uNzYzYzFjN2U4
MmVhZjE4YWExMjA0OGU0ZTU3YWFlYTQ0M2EwODlhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0
CkBAIC00ODAsNiArNDgwLDcgQEAgcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkUnVuLmNw
cAogcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkU3lzdGVtSW50ZXJmYWNlLmNwcAogcGxh
dGZvcm0vbWFjL0Jsb2NrbGlzdFVwZGF0ZXIubW0KIHBsYXRmb3JtL21hYy9DdXJzb3JNYWMubW0g
QG5vLXVuaWZ5CitwbGF0Zm9ybS9tYWMvRGF0YURldGVjdG9ySGlnaGxpZ2h0Lm1tCiBwbGF0Zm9y
bS9tYWMvSElERGV2aWNlLmNwcAogcGxhdGZvcm0vbWFjL0hJREVsZW1lbnQuY3BwCiBwbGF0Zm9y
bS9tYWMvS2V5RXZlbnRNYWMubW0gQG5vLXVuaWZ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZjAyZGZlZGNjNDI3OTU4Y2E2YTVm
ODE2NjFhM2VkZmUyOTkxNmZkMi4uYjcxZjAwOGFkZDVkYjc4YzBlNjU0MTNiMTAzMmNmZTQ4M2Fi
N2VhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtNTM1NCw2ICs1MzU0LDcgQEAKIAkJRjQ4RDJBN0UyMTU3MTgyNjAwQzY3NTJC
IC8qIEZvbnRBdHRyaWJ1dGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGNDhEMkE3MTIxNTZEQzBBMDBDNjc1MkIgLyogRm9udEF0dHJpYnV0ZXMuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGNDhEMkFB
NTIxNTk3NDBEMDBDNjc1MkIgLyogQ29sb3JDb2NvYS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ4RDJBQTMyMTU5NzQwRDAwQzY3NTJCIC8qIENvbG9y
Q29jb2EuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlGNDk3ODY4ODFGRjQ1RkE1MDBFMDYwQUIgLyogUGFzdGVib2FyZEl0ZW1JbmZvLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDk3ODY4NzFGRjQ1RkE1
MDBFMDYwQUIgLyogUGFzdGVib2FyZEl0ZW1JbmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRjRCMkE5MDkyNjUwMzBCQTAwOUU3Mjg2IC8qIERh
dGFEZXRlY3RvckhpZ2hsaWdodC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRjRCMkE5MDYyNjUwMkJBMDAwOUU3Mjg2IC8qIERhdGFEZXRlY3RvckhpZ2hs
aWdodC5oICovOyB9OwogCQlGNEI0MjJDNDIyMEMwNTY4MDA5RTFFN0QgLyogRE9NUGFzdGVBY2Nl
c3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0QjQy
MkMyMjIwQzAwMDAwMDlFMUU3RCAvKiBET01QYXN0ZUFjY2Vzcy5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUY0QkZCOTg1MUUxRERGOUIwMDg2MkMy
NCAvKiBEdW1wRWRpdGluZ0hpc3RvcnkuanMgaW4gQ29weSBTY3JpcHRzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0ODM4OTgzMUUxRERGMkIwMDc2QjdFQSAvKiBEdW1wRWRp
dGluZ0hpc3RvcnkuanMgKi87IH07CiAJCUY0QkZCOTg2MUUxRERGOUIwMDg2MkMyNCAvKiBFZGl0
aW5nSGlzdG9yeVV0aWwuanMgaW4gQ29weSBTY3JpcHRzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEY0ODM4OTg0MUUxRERGMkIwMDc2QjdFQSAvKiBFZGl0aW5nSGlzdG9yeVV0
aWwuanMgKi87IH07CkBAIC0xNjgzMCw2ICsxNjgzMSw4IEBACiAJCUY0OEQyQUE0MjE1OTc0MEQw
MEM2NzUyQiAvKiBDb2xvckNvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQ29sb3JDb2Nv
YS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQ5Nzg2ODcxRkY0NUZBNTAwRTA2
MEFCIC8qIFBhc3RlYm9hcmRJdGVtSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYXN0ZWJvYXJkSXRl
bUluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQ5RTk4RTQyMURFRTZDMTAw
OUFFNTVFIC8qIEVkaXRBY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRWRpdEFjdGlvbi5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY0QjJBOTA2MjY1MDJCQTAwMDlFNzI4
NiAvKiBEYXRhRGV0ZWN0b3JIaWdobGlnaHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGF0YURldGVjdG9y
SGlnaGxpZ2h0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY0QjJBOTA4MjY1MDJC
QzAwMDlFNzI4NiAvKiBEYXRhRGV0ZWN0b3JIaWdobGlnaHQubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBEYXRhRGV0ZWN0b3JIaWdobGlnaHQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUY0QjQyMkMyMjIwQzAwMDAwMDlFMUU3RCAvKiBET01QYXN0ZUFjY2Vzcy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBET01QYXN0ZUFjY2Vzcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlG
NEM1RjIwNTI0NzlFN0VFMDBFOUI0RjUgLyogQ2xpcGJvYXJkSW1hZ2VSZWFkZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQ2xpcGJvYXJkSW1hZ2VSZWFkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRjRDNUYyMDgyNDc5RTlDODAwRTlCNEY1IC8qIENsaXBib2FyZEltYWdlUmVhZGVyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENsaXBib2FyZEltYWdlUmVhZGVyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIyMTcwLDYgKzIyMTczLDggQEAKIAkJCQkxQUZGQzQ0RDFE
NUU3RUM3MDAyNjdBNjYgLyogQmxvY2tsaXN0VXBkYXRlci5oICovLAogCQkJCTFBRkZDNDRFMUQ1
RTdFQzcwMDI2N0E2NiAvKiBCbG9ja2xpc3RVcGRhdGVyLm1tICovLAogCQkJCUY1ODc4NEYwMDJE
RTM3NTkwMUVBNDEyMiAvKiBDdXJzb3JNYWMubW0gKi8sCisJCQkJRjRCMkE5MDYyNjUwMkJBMDAw
OUU3Mjg2IC8qIERhdGFEZXRlY3RvckhpZ2hsaWdodC5oICovLAorCQkJCUY0QjJBOTA4MjY1MDJC
QzAwMDlFNzI4NiAvKiBEYXRhRGV0ZWN0b3JIaWdobGlnaHQubW0gKi8sCiAJCQkJRTFCQTY2RjAx
NzQyQkQ4NjAwQzIwMjUxIC8qIER5bmFtaWNMaW5rZXJJbnRlcnBvc2luZy5oICovLAogCQkJCTUx
MEE5MUU1MjRDRkNDMTgwMEJGRDg5QyAvKiBISUREZXZpY2UuY3BwICovLAogCQkJCTUxMEE5MUUy
MjRDRkNDMTgwMEJGRDg5QyAvKiBISUREZXZpY2UuaCAqLywKQEAgLTMyMTYyLDYgKzMyMTY3LDcg
QEAKIAkJCQk5N0JDNkEzMjE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VUcmFja2VyLmggaW4g
SGVhZGVycyAqLywKIAkJCQlCRTIzNDgwRDE4QTk4NzE0MDBFNEI2RTggLyogRGF0YUN1ZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQzUyMjdERjExQzNDNkRGMTAwRjVFRDU0IC8qIERhdGFEZXRlY3Rp
b24uaCBpbiBIZWFkZXJzICovLAorCQkJCUY0QjJBOTA5MjY1MDMwQkEwMDlFNzI4NiAvKiBEYXRh
RGV0ZWN0b3JIaWdobGlnaHQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNEE1MzM1MjU2MDVBNTYw
MDI4QzU5MiAvKiBEYXRhRGV0ZWN0b3JUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNThCNDVC
QTIwQUQwN0REMDA5OTEwMjUgLyogRGF0YUxpc3RCdXR0b25FbGVtZW50LmggaW4gSGVhZGVycyAq
LywKIAkJCQlFNTE3NjcwMzIwQjg4QzE0MDBENDExNjcgLyogRGF0YUxpc3RTdWdnZXN0aW9uSW5m
b3JtYXRpb24uaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9tYWMvU2VydmljZXNPdmVybGF5Q29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9t
YWMvU2VydmljZXNPdmVybGF5Q29udHJvbGxlci5oCmluZGV4IGY1MDgyZmRmNWNkMTFhMDQxNDRm
OTAwNTI3ZTdlZmY1NWY1NTZhMzMuLjk0YjExMTkzMjRmYWQyMmRmMjM0NDVmYTU2YTA5Y2RjM2Yz
YWViZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1NlcnZpY2VzT3Zlcmxh
eUNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9TZXJ2aWNlc092ZXJs
YXlDb250cm9sbGVyLmgKQEAgLTI3LDEzICsyNywxMyBAQAogCiAjaWYgKEVOQUJMRShTRVJWSUNF
X0NPTlRST0xTKSB8fCBFTkFCTEUoVEVMRVBIT05FX05VTUJFUl9ERVRFQ1RJT04pKSAmJiBQTEFU
Rk9STShNQUMpCiAKKyNpbmNsdWRlICJEYXRhRGV0ZWN0b3JIaWdobGlnaHQuaCIKICNpbmNsdWRl
ICJHcmFwaGljc0xheWVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiUGFnZU92ZXJsYXkuaCIKLSNpbmNs
dWRlICJSYW5nZS5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSA8d3RmL01vbm90b25p
Y1RpbWUuaD4KLQotdHlwZWRlZiBzdHJ1Y3QgX19EREhpZ2hsaWdodCAqRERIaWdobGlnaHRSZWY7
CisjaW5jbHVkZSA8d3RmL09wdGlvblNldC5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrSGFzaFNldC5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCkBAIC00Miw3ICs0Miw3IEBAIGNsYXNzIFBh
Z2U7CiAKIHN0cnVjdCBHYXBSZWN0czsKIAotY2xhc3MgU2VydmljZXNPdmVybGF5Q29udHJvbGxl
ciA6IHByaXZhdGUgUGFnZU92ZXJsYXk6OkNsaWVudCB7CitjbGFzcyBTZXJ2aWNlc092ZXJsYXlD
b250cm9sbGVyIDogcHJpdmF0ZSBEYXRhRGV0ZWN0b3JIaWdobGlnaHRDbGllbnQsIHByaXZhdGUg
UGFnZU92ZXJsYXk6OkNsaWVudCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6CiAgICAgZXhwbGljaXQgU2VydmljZXNPdmVybGF5Q29udHJvbGxlcihQYWdlJik7CkBAIC01
Miw0OCArNTIsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZWxlY3Rpb25SZWN0c0RpZENoYW5nZShj
b25zdCBWZWN0b3I8TGF5b3V0UmVjdD4mLCBjb25zdCBWZWN0b3I8R2FwUmVjdHM+JiwgYm9vbCBp
c1RleHRPbmx5KTsKIAogcHJpdmF0ZToKLSAgICBjbGFzcyBIaWdobGlnaHQgOiBwdWJsaWMgUmVm
Q291bnRlZDxIaWdobGlnaHQ+LCBwcml2YXRlIEdyYXBoaWNzTGF5ZXJDbGllbnQgewotICAgICAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShIaWdobGlnaHQpOwotICAgIHB1YmxpYzoKLSAgICAgICAg
c3RhdGljIFJlZjxIaWdobGlnaHQ+IGNyZWF0ZUZvclNlbGVjdGlvbihTZXJ2aWNlc092ZXJsYXlD
b250cm9sbGVyJiwgUmV0YWluUHRyPERESGlnaGxpZ2h0UmVmPiYmLCBTaW1wbGVSYW5nZSYmKTsK
LSAgICAgICAgc3RhdGljIFJlZjxIaWdobGlnaHQ+IGNyZWF0ZUZvclRlbGVwaG9uZU51bWJlcihT
ZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyJiwgUmV0YWluUHRyPERESGlnaGxpZ2h0UmVmPiYmLCBT
aW1wbGVSYW5nZSYmKTsKLSAgICAgICAgfkhpZ2hsaWdodCgpOwotCi0gICAgICAgIHZvaWQgaW52
YWxpZGF0ZSgpOwotCi0gICAgICAgIERESGlnaGxpZ2h0UmVmIGRkSGlnaGxpZ2h0KCkgY29uc3Qg
eyByZXR1cm4gbV9kZEhpZ2hsaWdodC5nZXQoKTsgfQotICAgICAgICBjb25zdCBTaW1wbGVSYW5n
ZSYgcmFuZ2UoKSBjb25zdCB7IHJldHVybiBtX3JhbmdlOyB9Ci0gICAgICAgIEdyYXBoaWNzTGF5
ZXImIGxheWVyKCkgY29uc3QgeyByZXR1cm4gbV9ncmFwaGljc0xheWVyLmdldCgpOyB9Ci0KLSAg
ICAgICAgZW51bSB7Ci0gICAgICAgICAgICBUZWxlcGhvbmVOdW1iZXJUeXBlID0gMSA8PCAwLAot
ICAgICAgICAgICAgU2VsZWN0aW9uVHlwZSA9IDEgPDwgMSwKLSAgICAgICAgfTsKLSAgICAgICAg
dHlwZWRlZiB1aW50OF90IFR5cGU7Ci0gICAgICAgIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJu
IG1fdHlwZTsgfQotCi0gICAgICAgIHZvaWQgZmFkZUluKCk7Ci0gICAgICAgIHZvaWQgZmFkZU91
dCgpOwotCi0gICAgICAgIHZvaWQgc2V0RERIaWdobGlnaHQoRERIaWdobGlnaHRSZWYpOwotCi0g
ICAgcHJpdmF0ZToKLSAgICAgICAgSGlnaGxpZ2h0KFNlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXIm
LCBUeXBlLCBSZXRhaW5QdHI8RERIaWdobGlnaHRSZWY+JiYsIFNpbXBsZVJhbmdlJiYpOwotCi0g
ICAgICAgIC8vIEdyYXBoaWNzTGF5ZXJDbGllbnQKLSAgICAgICAgdm9pZCBub3RpZnlGbHVzaFJl
cXVpcmVkKGNvbnN0IEdyYXBoaWNzTGF5ZXIqKSBvdmVycmlkZTsKLSAgICAgICAgdm9pZCBwYWlu
dENvbnRlbnRzKGNvbnN0IEdyYXBoaWNzTGF5ZXIqLCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBG
bG9hdFJlY3QmIGluQ2xpcCwgR3JhcGhpY3NMYXllclBhaW50QmVoYXZpb3IpIG92ZXJyaWRlOwot
ICAgICAgICBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcigpIGNvbnN0IG92ZXJyaWRlOwotCi0gICAg
ICAgIHZvaWQgZGlkRmluaXNoRmFkZU91dEFuaW1hdGlvbigpOwotCi0gICAgICAgIFNlcnZpY2Vz
T3ZlcmxheUNvbnRyb2xsZXIqIG1fY29udHJvbGxlcjsKLSAgICAgICAgUmV0YWluUHRyPERESGln
aGxpZ2h0UmVmPiBtX2RkSGlnaGxpZ2h0OwotICAgICAgICBTaW1wbGVSYW5nZSBtX3JhbmdlOwot
ICAgICAgICBSZWY8R3JhcGhpY3NMYXllcj4gbV9ncmFwaGljc0xheWVyOwotICAgICAgICBUeXBl
IG1fdHlwZTsKLSAgICB9OwotCiAgICAgLy8gUGFnZU92ZXJsYXk6OkNsaWVudAogICAgIHZvaWQg
d2lsbE1vdmVUb1BhZ2UoUGFnZU92ZXJsYXkmLCBQYWdlKikgb3ZlcnJpZGU7CiAgICAgdm9pZCBk
aWRNb3ZlVG9QYWdlKFBhZ2VPdmVybGF5JiwgUGFnZSopIG92ZXJyaWRlOwpAQCAtMTAyLDYyICs2
MCw1NCBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkU2Nyb2xsRnJhbWUoUGFnZU92ZXJsYXkmLCBG
cmFtZSYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBjcmVhdGVPdmVybGF5SWZOZWVkZWQoKTsKLSAg
ICB2b2lkIGhhbmRsZUNsaWNrKGNvbnN0IEludFBvaW50JiwgSGlnaGxpZ2h0Jik7CisgICAgdm9p
ZCBoYW5kbGVDbGljayhjb25zdCBJbnRQb2ludCYsIERhdGFEZXRlY3RvckhpZ2hsaWdodCYpOwog
Ci0gICAgdm9pZCBkcmF3SGlnaGxpZ2h0KEhpZ2hsaWdodCYsIEdyYXBoaWNzQ29udGV4dCYpOwor
ICAgIHZvaWQgZHJhd0hpZ2hsaWdodChEYXRhRGV0ZWN0b3JIaWdobGlnaHQmLCBHcmFwaGljc0Nv
bnRleHQmKTsKIAotICAgIHZvaWQgaW52YWxpZGF0ZUhpZ2hsaWdodHNPZlR5cGUoSGlnaGxpZ2h0
OjpUeXBlKTsKKyAgICB2b2lkIGludmFsaWRhdGVIaWdobGlnaHRzT2ZUeXBlKERhdGFEZXRlY3Rv
ckhpZ2hsaWdodDo6VHlwZSk7CiAgICAgdm9pZCBidWlsZFBvdGVudGlhbEhpZ2hsaWdodHNJZk5l
ZWRlZCgpOwogCi0gICAgdm9pZCByZXBsYWNlSGlnaGxpZ2h0c09mVHlwZVByZXNlcnZpbmdFcXVp
dmFsZW50SGlnaGxpZ2h0cyhIYXNoU2V0PFJlZlB0cjxIaWdobGlnaHQ+PiYsIEhpZ2hsaWdodDo6
VHlwZSk7Ci0gICAgdm9pZCByZW1vdmVBbGxQb3RlbnRpYWxIaWdobGlnaHRzT2ZUeXBlKEhpZ2hs
aWdodDo6VHlwZSk7CisgICAgdm9pZCByZXBsYWNlSGlnaGxpZ2h0c09mVHlwZVByZXNlcnZpbmdF
cXVpdmFsZW50SGlnaGxpZ2h0cyhIYXNoU2V0PFJlZlB0cjxEYXRhRGV0ZWN0b3JIaWdobGlnaHQ+
PiYsIERhdGFEZXRlY3RvckhpZ2hsaWdodDo6VHlwZSk7CisgICAgdm9pZCByZW1vdmVBbGxQb3Rl
bnRpYWxIaWdobGlnaHRzT2ZUeXBlKERhdGFEZXRlY3RvckhpZ2hsaWdodDo6VHlwZSk7CiAgICAg
dm9pZCBidWlsZFBob25lTnVtYmVySGlnaGxpZ2h0cygpOwogICAgIHZvaWQgYnVpbGRTZWxlY3Rp
b25IaWdobGlnaHQoKTsKIAogICAgIHZvaWQgZGV0ZXJtaW5lQWN0aXZlSGlnaGxpZ2h0KGJvb2wm
IG1vdXNlSXNPdmVyQnV0dG9uKTsKICAgICB2b2lkIGNsZWFyQWN0aXZlSGlnaGxpZ2h0KCk7Ci0g
ICAgSGlnaGxpZ2h0KiBhY3RpdmVIaWdobGlnaHQoKSBjb25zdCB7IHJldHVybiBtX2FjdGl2ZUhp
Z2hsaWdodC5nZXQoKTsgfQorICAgIERhdGFEZXRlY3RvckhpZ2hsaWdodCogYWN0aXZlSGlnaGxp
Z2h0KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9hY3RpdmVIaWdobGlnaHQuZ2V0KCk7IH0KIAot
ICAgIEhpZ2hsaWdodCogZmluZFRlbGVwaG9uZU51bWJlckhpZ2hsaWdodENvbnRhaW5pbmdTZWxl
Y3Rpb25IaWdobGlnaHQoSGlnaGxpZ2h0Jik7CisgICAgRGF0YURldGVjdG9ySGlnaGxpZ2h0KiBm
aW5kVGVsZXBob25lTnVtYmVySGlnaGxpZ2h0Q29udGFpbmluZ1NlbGVjdGlvbkhpZ2hsaWdodChE
YXRhRGV0ZWN0b3JIaWdobGlnaHQmKTsKIAogICAgIGJvb2wgaGFzUmVsZXZhbnRTZWxlY3Rpb25T
ZXJ2aWNlcygpOwogCi0gICAgYm9vbCBtb3VzZUlzT3ZlckhpZ2hsaWdodChIaWdobGlnaHQmLCBi
b29sJiBtb3VzZUlzT3ZlckJ1dHRvbikgY29uc3Q7Ci0gICAgU2Vjb25kcyByZW1haW5pbmdUaW1l
VW50aWxIaWdobGlnaHRTaG91bGRCZVNob3duKEhpZ2hsaWdodCopIGNvbnN0OworICAgIGJvb2wg
bW91c2VJc092ZXJIaWdobGlnaHQoRGF0YURldGVjdG9ySGlnaGxpZ2h0JiwgYm9vbCYgbW91c2VJ
c092ZXJCdXR0b24pIGNvbnN0OworICAgIFNlY29uZHMgcmVtYWluaW5nVGltZVVudGlsSGlnaGxp
Z2h0U2hvdWxkQmVTaG93bihEYXRhRGV0ZWN0b3JIaWdobGlnaHQqKSBjb25zdDsKICAgICB2b2lk
IGRldGVybWluZUFjdGl2ZUhpZ2hsaWdodFRpbWVyRmlyZWQoKTsKIAotICAgIHN0YXRpYyBib29s
IGhpZ2hsaWdodHNBcmVFcXVpdmFsZW50KGNvbnN0IEhpZ2hsaWdodCosIGNvbnN0IEhpZ2hsaWdo
dCopOwotCiAgICAgVmVjdG9yPFNpbXBsZVJhbmdlPiB0ZWxlcGhvbmVOdW1iZXJSYW5nZXNGb3JG
b2N1c2VkRnJhbWUoKTsKIAotICAgIHZvaWQgZGlkQ3JlYXRlSGlnaGxpZ2h0KEhpZ2hsaWdodCop
OwotICAgIHZvaWQgd2lsbERlc3Ryb3lIaWdobGlnaHQoSGlnaGxpZ2h0Kik7Ci0gICAgdm9pZCBk
aWRGaW5pc2hGYWRpbmdPdXRIaWdobGlnaHQoSGlnaGxpZ2h0Kik7Ci0KICAgICBGcmFtZSYgbWFp
bkZyYW1lKCkgY29uc3Q7CiAgICAgUGFnZSYgcGFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZTsg
fQogCiAgICAgUGFnZSYgbV9wYWdlOwogICAgIFBhZ2VPdmVybGF5KiBtX3NlcnZpY2VzT3Zlcmxh
eSB7IG51bGxwdHIgfTsKIAotICAgIFJlZlB0cjxIaWdobGlnaHQ+IG1fYWN0aXZlSGlnaGxpZ2h0
OwotICAgIFJlZlB0cjxIaWdobGlnaHQ+IG1fbmV4dEFjdGl2ZUhpZ2hsaWdodDsKLSAgICBIYXNo
U2V0PFJlZlB0cjxIaWdobGlnaHQ+PiBtX3BvdGVudGlhbEhpZ2hsaWdodHM7Ci0gICAgSGFzaFNl
dDxSZWZQdHI8SGlnaGxpZ2h0Pj4gbV9hbmltYXRpbmdIaWdobGlnaHRzOwotCi0gICAgSGFzaFNl
dDxIaWdobGlnaHQqPiBtX2hpZ2hsaWdodHM7CisgICAgUmVmUHRyPERhdGFEZXRlY3RvckhpZ2hs
aWdodD4gbV9hY3RpdmVIaWdobGlnaHQ7CisgICAgUmVmUHRyPERhdGFEZXRlY3RvckhpZ2hsaWdo
dD4gbV9uZXh0QWN0aXZlSGlnaGxpZ2h0OworICAgIEhhc2hTZXQ8UmVmUHRyPERhdGFEZXRlY3Rv
ckhpZ2hsaWdodD4+IG1fcG90ZW50aWFsSGlnaGxpZ2h0czsKKyAgICBIYXNoU2V0PFJlZlB0cjxE
YXRhRGV0ZWN0b3JIaWdobGlnaHQ+PiBtX2FuaW1hdGluZ0hpZ2hsaWdodHM7CisgICAgV2Vha0hh
c2hTZXQ8RGF0YURldGVjdG9ySGlnaGxpZ2h0PiBtX2hpZ2hsaWdodHM7CiAKLSAgICAvLyBGSVhN
RTogVGhlc2Ugc2hvdWxkIG1vdmUgb250byBIaWdobGlnaHQuCiAgICAgVmVjdG9yPExheW91dFJl
Y3Q+IG1fY3VycmVudFNlbGVjdGlvblJlY3RzOwogICAgIGJvb2wgbV9pc1RleHRPbmx5IHsgZmFs
c2UgfTsKIAotICAgIEhpZ2hsaWdodDo6VHlwZSBtX2RpcnR5SGlnaGxpZ2h0VHlwZXMgeyAwIH07
CisgICAgT3B0aW9uU2V0PERhdGFEZXRlY3RvckhpZ2hsaWdodDo6VHlwZT4gbV9kaXJ0eUhpZ2hs
aWdodFR5cGVzOwogCiAgICAgTW9ub3RvbmljVGltZSBtX2xhc3RTZWxlY3Rpb25DaGFuZ2VUaW1l
OwogICAgIE1vbm90b25pY1RpbWUgbV9uZXh0QWN0aXZlSGlnaGxpZ2h0Q2hhbmdlVGltZTsKICAg
ICBNb25vdG9uaWNUaW1lIG1fbGFzdE1vdXNlVXBUaW1lOwogCi0gICAgUmVmUHRyPEhpZ2hsaWdo
dD4gbV9jdXJyZW50TW91c2VEb3duT25CdXR0b25IaWdobGlnaHQ7CisgICAgUmVmUHRyPERhdGFE
ZXRlY3RvckhpZ2hsaWdodD4gbV9jdXJyZW50TW91c2VEb3duT25CdXR0b25IaWdobGlnaHQ7CiAg
ICAgSW50UG9pbnQgbV9tb3VzZVBvc2l0aW9uOwogCiAgICAgVGltZXIgbV9kZXRlcm1pbmVBY3Rp
dmVIaWdobGlnaHRUaW1lcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1Nl
cnZpY2VzT3ZlcmxheUNvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9TZXJ2
aWNlc092ZXJsYXlDb250cm9sbGVyLm1tCmluZGV4IDc0ZDkxOGViM2Y5YjY2ZDA3NWIwMzNkNGUz
MTg1ODBlNGYzYTg2MTAuLjBhMTQ1N2Q3YzA2OGE3NTA1MzZlYzliMDU4YTlmYjg4NjMxZTcyMGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1NlcnZpY2VzT3ZlcmxheUNvbnRy
b2xsZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvU2VydmljZXNPdmVybGF5Q29u
dHJvbGxlci5tbQpAQCAtNDUsMTUxICs0NSwxMyBAQAogI2ltcG9ydCAiTG9nZ2luZy5oIgogI2lt
cG9ydCAiUGFnZS5oIgogI2ltcG9ydCAiUGFnZU92ZXJsYXlDb250cm9sbGVyLmgiCi0jaW1wb3J0
ICJQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2EuaCIKICNpbXBvcnQgIlNldHRpbmdzLmgiCiAjaW1w
b3J0IDxRdWFydHpDb3JlL1F1YXJ0ekNvcmUuaD4KICNpbXBvcnQgPHBhbC9zcGkvbWFjL0RhdGFE
ZXRlY3RvcnNTUEkuaD4KICNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgogCi1jb25zdCBmbG9h
dCBoaWdobGlnaHRGYWRlQW5pbWF0aW9uRHVyYXRpb24gPSAwLjM7Ci0KIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotUmVmPFNlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXI6OkhpZ2hsaWdodD4gU2Vydmlj
ZXNPdmVybGF5Q29udHJvbGxlcjo6SGlnaGxpZ2h0OjpjcmVhdGVGb3JTZWxlY3Rpb24oU2Vydmlj
ZXNPdmVybGF5Q29udHJvbGxlciYgY29udHJvbGxlciwgUmV0YWluUHRyPERESGlnaGxpZ2h0UmVm
PiYmIGRkSGlnaGxpZ2h0LCBTaW1wbGVSYW5nZSYmIHJhbmdlKQotewotICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IEhpZ2hsaWdodChjb250cm9sbGVyLCBIaWdobGlnaHQ6OlNlbGVjdGlvblR5cGUs
IFdURk1vdmUoZGRIaWdobGlnaHQpLCBXVEZNb3ZlKHJhbmdlKSkpOwotfQotCi1SZWY8U2Vydmlj
ZXNPdmVybGF5Q29udHJvbGxlcjo6SGlnaGxpZ2h0PiBTZXJ2aWNlc092ZXJsYXlDb250cm9sbGVy
OjpIaWdobGlnaHQ6OmNyZWF0ZUZvclRlbGVwaG9uZU51bWJlcihTZXJ2aWNlc092ZXJsYXlDb250
cm9sbGVyJiBjb250cm9sbGVyLCBSZXRhaW5QdHI8RERIaWdobGlnaHRSZWY+JiYgZGRIaWdobGln
aHQsIFNpbXBsZVJhbmdlJiYgcmFuZ2UpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSGln
aGxpZ2h0KGNvbnRyb2xsZXIsIEhpZ2hsaWdodDo6VGVsZXBob25lTnVtYmVyVHlwZSwgV1RGTW92
ZShkZEhpZ2hsaWdodCksIFdURk1vdmUocmFuZ2UpKSk7Ci19Ci0KLVNlcnZpY2VzT3ZlcmxheUNv
bnRyb2xsZXI6OkhpZ2hsaWdodDo6SGlnaGxpZ2h0KFNlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXIm
IGNvbnRyb2xsZXIsIFR5cGUgdHlwZSwgUmV0YWluUHRyPERESGlnaGxpZ2h0UmVmPiYmIGRkSGln
aGxpZ2h0LCBTaW1wbGVSYW5nZSYmIHJhbmdlKQotICAgIDogbV9jb250cm9sbGVyKCZjb250cm9s
bGVyKQotICAgICwgbV9yYW5nZShXVEZNb3ZlKHJhbmdlKSkKLSAgICAsIG1fZ3JhcGhpY3NMYXll
cihHcmFwaGljc0xheWVyOjpjcmVhdGUoY29udHJvbGxlci5wYWdlKCkuY2hyb21lKCkuY2xpZW50
KCkuZ3JhcGhpY3NMYXllckZhY3RvcnkoKSwgKnRoaXMpKQotICAgICwgbV90eXBlKHR5cGUpCi17
Ci0gICAgQVNTRVJUKGRkSGlnaGxpZ2h0KTsKLQotICAgIG1fZ3JhcGhpY3NMYXllci0+c2V0RHJh
d3NDb250ZW50KHRydWUpOwotCi0gICAgc2V0RERIaWdobGlnaHQoZGRIaWdobGlnaHQuZ2V0KCkp
OwotCi0gICAgLy8gU2V0IGRpcmVjdGx5IG9uIHRoZSBQbGF0Zm9ybUNBTGF5ZXIgc28gdGhhdCB3
aGVuIHdlIGxlYXZlIHRoZSAnZnJvbScgdmFsdWUgaW1wbGljaXQKLSAgICAvLyBpbiBvdXIgYW5p
bWF0aW9ucywgd2UgZ2V0IHRoZSByaWdodCBpbml0aWFsIHZhbHVlIHJlZ2FyZGxlc3Mgb2YgZmx1
c2ggdGltaW5nLgotICAgIGRvd25jYXN0PEdyYXBoaWNzTGF5ZXJDQT4obGF5ZXIoKSkucGxhdGZv
cm1DQUxheWVyKCktPnNldE9wYWNpdHkoMCk7Ci0KLSAgICBjb250cm9sbGVyLmRpZENyZWF0ZUhp
Z2hsaWdodCh0aGlzKTsKLX0KLQotU2VydmljZXNPdmVybGF5Q29udHJvbGxlcjo6SGlnaGxpZ2h0
Ojp+SGlnaGxpZ2h0KCkKLXsKLSAgICBpZiAobV9jb250cm9sbGVyKQotICAgICAgICBtX2NvbnRy
b2xsZXItPndpbGxEZXN0cm95SGlnaGxpZ2h0KHRoaXMpOwotfQotCi12b2lkIFNlcnZpY2VzT3Zl
cmxheUNvbnRyb2xsZXI6OkhpZ2hsaWdodDo6c2V0RERIaWdobGlnaHQoRERIaWdobGlnaHRSZWYg
aGlnaGxpZ2h0KQotewotICAgIGlmICghRGF0YURldGVjdG9yc0xpYnJhcnkoKSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgaWYgKCFtX2NvbnRyb2xsZXIpCi0gICAgICAgIHJldHVybjsKLQotICAg
IG1fZGRIaWdobGlnaHQgPSBoaWdobGlnaHQ7Ci0KLSAgICBpZiAoIW1fZGRIaWdobGlnaHQpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIENHUmVjdCBoaWdobGlnaHRCb3VuZGluZ1JlY3QgPSBEREhp
Z2hsaWdodEdldEJvdW5kaW5nUmVjdChtX2RkSGlnaGxpZ2h0LmdldCgpKTsKLSAgICBtX2dyYXBo
aWNzTGF5ZXItPnNldFBvc2l0aW9uKEZsb2F0UG9pbnQoaGlnaGxpZ2h0Qm91bmRpbmdSZWN0Lm9y
aWdpbikpOwotICAgIG1fZ3JhcGhpY3NMYXllci0+c2V0U2l6ZShGbG9hdFNpemUoaGlnaGxpZ2h0
Qm91bmRpbmdSZWN0LnNpemUpKTsKLQotICAgIG1fZ3JhcGhpY3NMYXllci0+c2V0TmVlZHNEaXNw
bGF5KCk7Ci19Ci0KLXZvaWQgU2VydmljZXNPdmVybGF5Q29udHJvbGxlcjo6SGlnaGxpZ2h0Ojpp
bnZhbGlkYXRlKCkKLXsKLSAgICBsYXllcigpLnJlbW92ZUZyb21QYXJlbnQoKTsKLSAgICBtX2Nv
bnRyb2xsZXIgPSBudWxscHRyOwotfQotCi12b2lkIFNlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXI6
OkhpZ2hsaWdodDo6bm90aWZ5Rmx1c2hSZXF1aXJlZChjb25zdCBHcmFwaGljc0xheWVyKikKLXsK
LSAgICBpZiAoIW1fY29udHJvbGxlcikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9jb250cm9s
bGVyLT5wYWdlKCkuc2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoUmVuZGVyaW5nVXBkYXRlU3RlcDo6
TGF5ZXJGbHVzaCk7Ci19Ci0KLXZvaWQgU2VydmljZXNPdmVybGF5Q29udHJvbGxlcjo6SGlnaGxp
Z2h0OjpwYWludENvbnRlbnRzKGNvbnN0IEdyYXBoaWNzTGF5ZXIqLCBHcmFwaGljc0NvbnRleHQm
IGdyYXBoaWNzQ29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiwgR3JhcGhpY3NMYXllclBhaW50QmVo
YXZpb3IpCi17Ci0gICAgaWYgKCFEYXRhRGV0ZWN0b3JzTGlicmFyeSgpKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBDR0NvbnRleHRSZWYgY2dDb250ZXh0ID0gZ3JhcGhpY3NDb250ZXh0LnBsYXRm
b3JtQ29udGV4dCgpOwotCi0gICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4K
LSAgICBDR0xheWVyUmVmIGhpZ2hsaWdodExheWVyID0gRERIaWdobGlnaHRHZXRMYXllcldpdGhD
b250ZXh0KGRkSGlnaGxpZ2h0KCksIGNnQ29udGV4dCk7Ci0gICAgQUxMT1dfREVQUkVDQVRFRF9E
RUNMQVJBVElPTlNfRU5ECi0gICAgQ0dSZWN0IGhpZ2hsaWdodEJvdW5kaW5nUmVjdCA9IERESGln
aGxpZ2h0R2V0Qm91bmRpbmdSZWN0KGRkSGlnaGxpZ2h0KCkpOwotICAgIGhpZ2hsaWdodEJvdW5k
aW5nUmVjdC5vcmlnaW4gPSBDR1BvaW50WmVybzsKLQotICAgIENHQ29udGV4dERyYXdMYXllcklu
UmVjdChjZ0NvbnRleHQsIGhpZ2hsaWdodEJvdW5kaW5nUmVjdCwgaGlnaGxpZ2h0TGF5ZXIpOwot
fQotCi1mbG9hdCBTZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyOjpIaWdobGlnaHQ6OmRldmljZVNj
YWxlRmFjdG9yKCkgY29uc3QKLXsKLSAgICBpZiAoIW1fY29udHJvbGxlcikKLSAgICAgICAgcmV0
dXJuIDE7Ci0KLSAgICByZXR1cm4gbV9jb250cm9sbGVyLT5wYWdlKCkuZGV2aWNlU2NhbGVGYWN0
b3IoKTsKLX0KLQotdm9pZCBTZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyOjpIaWdobGlnaHQ6OmZh
ZGVJbigpCi17Ci0gICAgUmV0YWluUHRyPENBQmFzaWNBbmltYXRpb24+IGFuaW1hdGlvbiA9IFtD
QUJhc2ljQW5pbWF0aW9uIGFuaW1hdGlvbldpdGhLZXlQYXRoOkAib3BhY2l0eSJdOwotICAgIFth
bmltYXRpb24gc2V0RHVyYXRpb246aGlnaGxpZ2h0RmFkZUFuaW1hdGlvbkR1cmF0aW9uXTsKLSAg
ICBbYW5pbWF0aW9uIHNldEZpbGxNb2RlOmtDQUZpbGxNb2RlRm9yd2FyZHNdOwotICAgIFthbmlt
YXRpb24gc2V0UmVtb3ZlZE9uQ29tcGxldGlvbjpmYWxzZV07Ci0gICAgW2FuaW1hdGlvbiBzZXRU
b1ZhbHVlOkAxXTsKLQotICAgIGF1dG8gcGxhdGZvcm1BbmltYXRpb24gPSBQbGF0Zm9ybUNBQW5p
bWF0aW9uQ29jb2E6OmNyZWF0ZShhbmltYXRpb24uZ2V0KCkpOwotICAgIGRvd25jYXN0PEdyYXBo
aWNzTGF5ZXJDQT4obGF5ZXIoKSkucGxhdGZvcm1DQUxheWVyKCktPmFkZEFuaW1hdGlvbkZvcktl
eSgiRmFkZUhpZ2hsaWdodEluIiwgcGxhdGZvcm1BbmltYXRpb24uZ2V0KCkpOwotfQotCi12b2lk
IFNlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXI6OkhpZ2hsaWdodDo6ZmFkZU91dCgpCi17Ci0gICAg
UmV0YWluUHRyPENBQmFzaWNBbmltYXRpb24+IGFuaW1hdGlvbiA9IFtDQUJhc2ljQW5pbWF0aW9u
IGFuaW1hdGlvbldpdGhLZXlQYXRoOkAib3BhY2l0eSJdOwotICAgIFthbmltYXRpb24gc2V0RHVy
YXRpb246aGlnaGxpZ2h0RmFkZUFuaW1hdGlvbkR1cmF0aW9uXTsKLSAgICBbYW5pbWF0aW9uIHNl
dEZpbGxNb2RlOmtDQUZpbGxNb2RlRm9yd2FyZHNdOwotICAgIFthbmltYXRpb24gc2V0UmVtb3Zl
ZE9uQ29tcGxldGlvbjpmYWxzZV07Ci0gICAgW2FuaW1hdGlvbiBzZXRUb1ZhbHVlOkAwXTsKLQot
ICAgIFJlZlB0cjxIaWdobGlnaHQ+IHJldGFpbmVkU2VsZiA9IHRoaXM7Ci0gICAgW0NBVHJhbnNh
Y3Rpb24gYmVnaW5dOwotICAgIFtDQVRyYW5zYWN0aW9uIHNldENvbXBsZXRpb25CbG9jazpbcmV0
YWluZWRTZWxmXSAoKSB7Ci0gICAgICAgIHJldGFpbmVkU2VsZi0+ZGlkRmluaXNoRmFkZU91dEFu
aW1hdGlvbigpOwotICAgIH1dOwotCi0gICAgYXV0byBwbGF0Zm9ybUFuaW1hdGlvbiA9IFBsYXRm
b3JtQ0FBbmltYXRpb25Db2NvYTo6Y3JlYXRlKGFuaW1hdGlvbi5nZXQoKSk7Ci0gICAgZG93bmNh
c3Q8R3JhcGhpY3NMYXllckNBPihsYXllcigpKS5wbGF0Zm9ybUNBTGF5ZXIoKS0+YWRkQW5pbWF0
aW9uRm9yS2V5KCJGYWRlSGlnaGxpZ2h0T3V0IiwgcGxhdGZvcm1BbmltYXRpb24uZ2V0KCkpOwot
ICAgIFtDQVRyYW5zYWN0aW9uIGNvbW1pdF07Ci19Ci0KLXZvaWQgU2VydmljZXNPdmVybGF5Q29u
dHJvbGxlcjo6SGlnaGxpZ2h0OjpkaWRGaW5pc2hGYWRlT3V0QW5pbWF0aW9uKCkKLXsKLSAgICBp
ZiAoIW1fY29udHJvbGxlcikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKG1fY29udHJvbGxl
ci0+YWN0aXZlSGlnaGxpZ2h0KCkgPT0gdGhpcykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbGF5
ZXIoKS5yZW1vdmVGcm9tUGFyZW50KCk7Ci19Ci0KIFNlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXI6
OlNlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXIoUGFnZSYgcGFnZSkKICAgICA6IG1fcGFnZShwYWdl
KQogICAgICwgbV9kZXRlcm1pbmVBY3RpdmVIaWdobGlnaHRUaW1lcigqdGhpcywgJlNlcnZpY2Vz
T3ZlcmxheUNvbnRyb2xsZXI6OmRldGVybWluZUFjdGl2ZUhpZ2hsaWdodFRpbWVyRmlyZWQpCkBA
IC0yMDAsNyArNjIsNyBAQCBTZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyOjpTZXJ2aWNlc092ZXJs
YXlDb250cm9sbGVyKFBhZ2UmIHBhZ2UpCiBTZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyOjp+U2Vy
dmljZXNPdmVybGF5Q29udHJvbGxlcigpCiB7CiAgICAgZm9yIChhdXRvJiBoaWdobGlnaHQgOiBt
X2hpZ2hsaWdodHMpCi0gICAgICAgIGhpZ2hsaWdodC0+aW52YWxpZGF0ZSgpOworICAgICAgICBo
aWdobGlnaHQuaW52YWxpZGF0ZSgpOwogfQogCiB2b2lkIFNlcnZpY2VzT3ZlcmxheUNvbnRyb2xs
ZXI6OndpbGxNb3ZlVG9QYWdlKFBhZ2VPdmVybGF5JiwgUGFnZSogcGFnZSkKQEAgLTM1OCwzNiAr
MjIwLDM2IEBAIHZvaWQgU2VydmljZXNPdmVybGF5Q29udHJvbGxlcjo6c2VsZWN0aW9uUmVjdHNE
aWRDaGFuZ2UoY29uc3QgVmVjdG9yPExheW91dFJlY3Q+CiAgICAgbV9jdXJyZW50U2VsZWN0aW9u
UmVjdHMucmV2ZXJzZSgpOwogCiAgICAgTE9HKFNlcnZpY2VzLCAiU2VydmljZXNPdmVybGF5Q29u
dHJvbGxlciAtIFNlbGVjdGlvbiByZWN0cyBjaGFuZ2VkIC0gTm93IGhhdmUgJWx1XG4iLCByZWN0
cy5zaXplKCkpOwotICAgIGludmFsaWRhdGVIaWdobGlnaHRzT2ZUeXBlKEhpZ2hsaWdodDo6U2Vs
ZWN0aW9uVHlwZSk7CisgICAgaW52YWxpZGF0ZUhpZ2hsaWdodHNPZlR5cGUoRGF0YURldGVjdG9y
SGlnaGxpZ2h0OjpUeXBlOjpTZWxlY3Rpb24pOwogfQogCiB2b2lkIFNlcnZpY2VzT3ZlcmxheUNv
bnRyb2xsZXI6OnNlbGVjdGVkVGVsZXBob25lTnVtYmVyUmFuZ2VzQ2hhbmdlZCgpCiB7CiAgICAg
TE9HKFNlcnZpY2VzLCAiU2VydmljZXNPdmVybGF5Q29udHJvbGxlciAtIFRlbGVwaG9uZSBudW1i
ZXIgcmFuZ2VzIGNoYW5nZWRcbiIpOwotICAgIGludmFsaWRhdGVIaWdobGlnaHRzT2ZUeXBlKEhp
Z2hsaWdodDo6VGVsZXBob25lTnVtYmVyVHlwZSk7CisgICAgaW52YWxpZGF0ZUhpZ2hsaWdodHNP
ZlR5cGUoRGF0YURldGVjdG9ySGlnaGxpZ2h0OjpUeXBlOjpUZWxlcGhvbmVOdW1iZXIpOwogfQog
Ci12b2lkIFNlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXI6OmludmFsaWRhdGVIaWdobGlnaHRzT2ZU
eXBlKEhpZ2hsaWdodDo6VHlwZSB0eXBlKQordm9pZCBTZXJ2aWNlc092ZXJsYXlDb250cm9sbGVy
OjppbnZhbGlkYXRlSGlnaGxpZ2h0c09mVHlwZShEYXRhRGV0ZWN0b3JIaWdobGlnaHQ6OlR5cGUg
dHlwZSkKIHsKICAgICBpZiAoIW1fcGFnZS5zZXR0aW5ncygpLnNlcnZpY2VDb250cm9sc0VuYWJs
ZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9kaXJ0eUhpZ2hsaWdodFR5cGVzIHw9IHR5
cGU7CisgICAgbV9kaXJ0eUhpZ2hsaWdodFR5cGVzLmFkZCh0eXBlKTsKICAgICBtX2J1aWxkSGln
aGxpZ2h0c1RpbWVyLnN0YXJ0T25lU2hvdCgwX3MpOwogfQogCiB2b2lkIFNlcnZpY2VzT3Zlcmxh
eUNvbnRyb2xsZXI6OmJ1aWxkUG90ZW50aWFsSGlnaGxpZ2h0c0lmTmVlZGVkKCkKIHsKLSAgICBp
ZiAoIW1fZGlydHlIaWdobGlnaHRUeXBlcykKKyAgICBpZiAobV9kaXJ0eUhpZ2hsaWdodFR5cGVz
LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKG1fZGlydHlIaWdobGlnaHRU
eXBlcyAmIEhpZ2hsaWdodDo6VGVsZXBob25lTnVtYmVyVHlwZSkKKyAgICBpZiAobV9kaXJ0eUhp
Z2hsaWdodFR5cGVzLmNvbnRhaW5zKERhdGFEZXRlY3RvckhpZ2hsaWdodDo6VHlwZTo6VGVsZXBo
b25lTnVtYmVyKSkKICAgICAgICAgYnVpbGRQaG9uZU51bWJlckhpZ2hsaWdodHMoKTsKIAotICAg
IGlmIChtX2RpcnR5SGlnaGxpZ2h0VHlwZXMgJiBIaWdobGlnaHQ6OlNlbGVjdGlvblR5cGUpCisg
ICAgaWYgKG1fZGlydHlIaWdobGlnaHRUeXBlcy5jb250YWlucyhEYXRhRGV0ZWN0b3JIaWdobGln
aHQ6OlR5cGU6OlNlbGVjdGlvbikpCiAgICAgICAgIGJ1aWxkU2VsZWN0aW9uSGlnaGxpZ2h0KCk7
CiAKLSAgICBtX2RpcnR5SGlnaGxpZ2h0VHlwZXMgPSAwOworICAgIG1fZGlydHlIaWdobGlnaHRU
eXBlcyA9IHsgfTsKIAogICAgIGlmIChtX3BvdGVudGlhbEhpZ2hsaWdodHMuaXNFbXB0eSgpKSB7
CiAgICAgICAgIGlmIChtX3NlcnZpY2VzT3ZlcmxheSkKQEAgLTQwNCwxOCArMjY2LDE4IEBAIHZv
aWQgU2VydmljZXNPdmVybGF5Q29udHJvbGxlcjo6YnVpbGRQb3RlbnRpYWxIaWdobGlnaHRzSWZO
ZWVkZWQoKQogICAgIGRldGVybWluZUFjdGl2ZUhpZ2hsaWdodChtb3VzZUlzT3ZlckJ1dHRvbik7
CiB9CiAKLWJvb2wgU2VydmljZXNPdmVybGF5Q29udHJvbGxlcjo6bW91c2VJc092ZXJIaWdobGln
aHQoSGlnaGxpZ2h0JiBoaWdobGlnaHQsIGJvb2wmIG1vdXNlSXNPdmVyQnV0dG9uKSBjb25zdAor
Ym9vbCBTZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyOjptb3VzZUlzT3ZlckhpZ2hsaWdodChEYXRh
RGV0ZWN0b3JIaWdobGlnaHQmIGhpZ2hsaWdodCwgYm9vbCYgbW91c2VJc092ZXJCdXR0b24pIGNv
bnN0CiB7CiAgICAgaWYgKCFEYXRhRGV0ZWN0b3JzTGlicmFyeSgpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKICAgICBCb29sZWFuIG9uQnV0dG9uOwotICAgIGJvb2wgaG92ZXJlZCA9IERESGln
aGxpZ2h0UG9pbnRJc09uSGlnaGxpZ2h0KGhpZ2hsaWdodC5kZEhpZ2hsaWdodCgpLCAoQ0dQb2lu
dCltX21vdXNlUG9zaXRpb24sICZvbkJ1dHRvbik7CisgICAgYm9vbCBob3ZlcmVkID0gRERIaWdo
bGlnaHRQb2ludElzT25IaWdobGlnaHQoaGlnaGxpZ2h0LmhpZ2hsaWdodCgpLCAoQ0dQb2ludClt
X21vdXNlUG9zaXRpb24sICZvbkJ1dHRvbik7CiAgICAgbW91c2VJc092ZXJCdXR0b24gPSBvbkJ1
dHRvbjsKICAgICByZXR1cm4gaG92ZXJlZDsKIH0KIAotU2Vjb25kcyBTZXJ2aWNlc092ZXJsYXlD
b250cm9sbGVyOjpyZW1haW5pbmdUaW1lVW50aWxIaWdobGlnaHRTaG91bGRCZVNob3duKEhpZ2hs
aWdodCogaGlnaGxpZ2h0KSBjb25zdAorU2Vjb25kcyBTZXJ2aWNlc092ZXJsYXlDb250cm9sbGVy
OjpyZW1haW5pbmdUaW1lVW50aWxIaWdobGlnaHRTaG91bGRCZVNob3duKERhdGFEZXRlY3Rvckhp
Z2hsaWdodCogaGlnaGxpZ2h0KSBjb25zdAogewogICAgIGlmICghaGlnaGxpZ2h0KQogICAgICAg
ICByZXR1cm4gMF9zOwpAQCAtNDI5LDcgKzI5MSw3IEBAIFNlY29uZHMgU2VydmljZXNPdmVybGF5
Q29udHJvbGxlcjo6cmVtYWluaW5nVGltZVVudGlsSGlnaGxpZ2h0U2hvdWxkQmVTaG93bihIaWdo
CiAgICAgLy8gSGlnaGxpZ2h0IGh5c3RlcmVzaXMgaXMgb25seSBmb3Igc2VsZWN0aW9uIHNlcnZp
Y2VzLCBiZWNhdXNlIHRlbGVwaG9uZSBudW1iZXIgaGlnaGxpZ2h0cyBhcmUgYWxyZWFkeSBtdWNo
IG1vcmUgc3RhYmxlCiAgICAgLy8gYnkgdmlydHVlIG9mIGJlaW5nIGV4cGFuZGVkIHRvIGluY2x1
ZGUgdGhlIGVudGlyZSB0ZWxlcGhvbmUgbnVtYmVyLiBIb3dldmVyLCB3ZSB3aWxsIHN0aWxsIGF2
b2lkIGhpZ2hsaWdodGluZwogICAgIC8vIHRlbGVwaG9uZSBudW1iZXJzIHdoaWxlIHRoZSBtb3Vz
ZSBpcyBkb3duLgotICAgIGlmIChoaWdobGlnaHQtPnR5cGUoKSA9PSBIaWdobGlnaHQ6OlRlbGVw
aG9uZU51bWJlclR5cGUpCisgICAgaWYgKGhpZ2hsaWdodC0+dHlwZSgpID09IERhdGFEZXRlY3Rv
ckhpZ2hsaWdodDo6VHlwZTo6VGVsZXBob25lTnVtYmVyKQogICAgICAgICByZXR1cm4gbW91c2VQ
cmVzc2VkID8gbWluaW11bVRpbWVVbnRpbEhpZ2hsaWdodFNob3VsZEJlU2hvd24gOiAwX3M7CiAK
ICAgICBNb25vdG9uaWNUaW1lIG5vdyA9IE1vbm90b25pY1RpbWU6Om5vdygpOwpAQCAtNDYwLDkg
KzMyMiw5IEBAIHZvaWQgU2VydmljZXNPdmVybGF5Q29udHJvbGxlcjo6Y2xlYXJBY3RpdmVIaWdo
bGlnaHQoKQogICAgIG1fYWN0aXZlSGlnaGxpZ2h0ID0gbnVsbHB0cjsKIH0KIAotdm9pZCBTZXJ2
aWNlc092ZXJsYXlDb250cm9sbGVyOjpyZW1vdmVBbGxQb3RlbnRpYWxIaWdobGlnaHRzT2ZUeXBl
KEhpZ2hsaWdodDo6VHlwZSB0eXBlKQordm9pZCBTZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyOjpy
ZW1vdmVBbGxQb3RlbnRpYWxIaWdobGlnaHRzT2ZUeXBlKERhdGFEZXRlY3RvckhpZ2hsaWdodDo6
VHlwZSB0eXBlKQogewotICAgIFZlY3RvcjxSZWZQdHI8SGlnaGxpZ2h0Pj4gaGlnaGxpZ2h0c1Rv
UmVtb3ZlOworICAgIFZlY3RvcjxSZWZQdHI8RGF0YURldGVjdG9ySGlnaGxpZ2h0Pj4gaGlnaGxp
Z2h0c1RvUmVtb3ZlOwogICAgIGZvciAoYXV0byYgaGlnaGxpZ2h0IDogbV9wb3RlbnRpYWxIaWdo
bGlnaHRzKSB7CiAgICAgICAgIGlmIChoaWdobGlnaHQtPnR5cGUoKSA9PSB0eXBlKQogICAgICAg
ICAgICAgaGlnaGxpZ2h0c1RvUmVtb3ZlLmFwcGVuZChoaWdobGlnaHQpOwpAQCAtNDc5LDE0ICsz
NDEsMTQgQEAgdm9pZCBTZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyOjpidWlsZFBob25lTnVtYmVy
SGlnaGxpZ2h0cygpCiAgICAgICAgIHBob25lTnVtYmVyUmFuZ2VzLmFwcGVuZFZlY3RvcihmcmFt
ZS0+ZWRpdG9yKCkuZGV0ZWN0ZWRUZWxlcGhvbmVOdW1iZXJSYW5nZXMoKSk7CiAKICAgICBpZiAo
cGhvbmVOdW1iZXJSYW5nZXMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIHJlbW92ZUFsbFBvdGVudGlh
bEhpZ2hsaWdodHNPZlR5cGUoSGlnaGxpZ2h0OjpUZWxlcGhvbmVOdW1iZXJUeXBlKTsKKyAgICAg
ICAgcmVtb3ZlQWxsUG90ZW50aWFsSGlnaGxpZ2h0c09mVHlwZShEYXRhRGV0ZWN0b3JIaWdobGln
aHQ6OlR5cGU6OlRlbGVwaG9uZU51bWJlcik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAg
ICBpZiAoIURhdGFEZXRlY3RvcnNMaWJyYXJ5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIEhh
c2hTZXQ8UmVmUHRyPEhpZ2hsaWdodD4+IG5ld1BvdGVudGlhbEhpZ2hsaWdodHM7CisgICAgSGFz
aFNldDxSZWZQdHI8RGF0YURldGVjdG9ySGlnaGxpZ2h0Pj4gbmV3UG90ZW50aWFsSGlnaGxpZ2h0
czsKIAogICAgIEZyYW1lVmlldyYgbWFpbkZyYW1lVmlldyA9ICptYWluRnJhbWUoKS52aWV3KCk7
CiAKQEAgLTUxMCwyMyArMzcyLDI1IEBAIHZvaWQgU2VydmljZXNPdmVybGF5Q29udHJvbGxlcjo6
YnVpbGRQaG9uZU51bWJlckhpZ2hsaWdodHMoKQogI2Vsc2UKICAgICAgICAgYXV0byBkZEhpZ2hs
aWdodCA9IGFkb3B0Q0YoRERIaWdobGlnaHRDcmVhdGVXaXRoUmVjdHNJblZpc2libGVSZWN0V2l0
aFN0eWxlQW5kRGlyZWN0aW9uKG51bGxwdHIsICZjZ1JlY3QsIDEsIG1haW5GcmFtZVZpZXcudmlz
aWJsZUNvbnRlbnRSZWN0KCksIERESGlnaGxpZ2h0U3R5bGVCdWJibGVTdGFuZGFyZCB8IERESGln
aGxpZ2h0U3R5bGVTdGFuZGFyZEljb25BcnJvdywgWUVTLCBOU1dyaXRpbmdEaXJlY3Rpb25OYXR1
cmFsLCBOTywgWUVTKSk7CiAjZW5kaWYKLSAgICAgICAgbmV3UG90ZW50aWFsSGlnaGxpZ2h0cy5h
ZGQoSGlnaGxpZ2h0OjpjcmVhdGVGb3JUZWxlcGhvbmVOdW1iZXIoKnRoaXMsIFdURk1vdmUoZGRI
aWdobGlnaHQpLCBXVEZNb3ZlKHJhbmdlKSkpOworICAgICAgICBhdXRvIGhpZ2hsaWdodCA9IERh
dGFEZXRlY3RvckhpZ2hsaWdodDo6Y3JlYXRlRm9yVGVsZXBob25lTnVtYmVyKG1fcGFnZSwgKnRo
aXMsIFdURk1vdmUoZGRIaWdobGlnaHQpLCBXVEZNb3ZlKHJhbmdlKSk7CisgICAgICAgIG1faGln
aGxpZ2h0cy5hZGQoaGlnaGxpZ2h0LmdldCgpKTsKKyAgICAgICAgbmV3UG90ZW50aWFsSGlnaGxp
Z2h0cy5hZGQoV1RGTW92ZShoaWdobGlnaHQpKTsKICAgICB9CiAKLSAgICByZXBsYWNlSGlnaGxp
Z2h0c09mVHlwZVByZXNlcnZpbmdFcXVpdmFsZW50SGlnaGxpZ2h0cyhuZXdQb3RlbnRpYWxIaWdo
bGlnaHRzLCBIaWdobGlnaHQ6OlRlbGVwaG9uZU51bWJlclR5cGUpOworICAgIHJlcGxhY2VIaWdo
bGlnaHRzT2ZUeXBlUHJlc2VydmluZ0VxdWl2YWxlbnRIaWdobGlnaHRzKG5ld1BvdGVudGlhbEhp
Z2hsaWdodHMsIERhdGFEZXRlY3RvckhpZ2hsaWdodDo6VHlwZTo6VGVsZXBob25lTnVtYmVyKTsK
IH0KIAogdm9pZCBTZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyOjpidWlsZFNlbGVjdGlvbkhpZ2hs
aWdodCgpCiB7CiAgICAgaWYgKG1fY3VycmVudFNlbGVjdGlvblJlY3RzLmlzRW1wdHkoKSkgewot
ICAgICAgICByZW1vdmVBbGxQb3RlbnRpYWxIaWdobGlnaHRzT2ZUeXBlKEhpZ2hsaWdodDo6U2Vs
ZWN0aW9uVHlwZSk7CisgICAgICAgIHJlbW92ZUFsbFBvdGVudGlhbEhpZ2hsaWdodHNPZlR5cGUo
RGF0YURldGVjdG9ySGlnaGxpZ2h0OjpUeXBlOjpTZWxlY3Rpb24pOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCiAgICAgaWYgKCFEYXRhRGV0ZWN0b3JzTGlicmFyeSgpKQogICAgICAgICByZXR1
cm47CiAKLSAgICBIYXNoU2V0PFJlZlB0cjxIaWdobGlnaHQ+PiBuZXdQb3RlbnRpYWxIaWdobGln
aHRzOworICAgIEhhc2hTZXQ8UmVmUHRyPERhdGFEZXRlY3RvckhpZ2hsaWdodD4+IG5ld1BvdGVu
dGlhbEhpZ2hsaWdodHM7CiAKICAgICBWZWN0b3I8Q0dSZWN0PiBjZ1JlY3RzOwogICAgIGNnUmVj
dHMucmVzZXJ2ZUNhcGFjaXR5KG1fY3VycmVudFNlbGVjdGlvblJlY3RzLnNpemUoKSk7CkBAIC01
NTMsMjYgKzQxNywyOCBAQCB2b2lkIFNlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXI6OmJ1aWxkU2Vs
ZWN0aW9uSGlnaGxpZ2h0KCkKICNlbHNlCiAgICAgICAgICAgICBhdXRvIGRkSGlnaGxpZ2h0ID0g
YWRvcHRDRihEREhpZ2hsaWdodENyZWF0ZVdpdGhSZWN0c0luVmlzaWJsZVJlY3RXaXRoU3R5bGVB
bmREaXJlY3Rpb24obnVsbHB0ciwgY2dSZWN0cy5iZWdpbigpLCBjZ1JlY3RzLnNpemUoKSwgdmlz
aWJsZVJlY3QsIERESGlnaGxpZ2h0U3R5bGVCdWJibGVOb25lIHwgRERIaWdobGlnaHRTdHlsZVN0
YW5kYXJkSWNvbkFycm93IHwgRERIaWdobGlnaHRTdHlsZUJ1dHRvblNob3dBbHdheXMsIFlFUywg
TlNXcml0aW5nRGlyZWN0aW9uTmF0dXJhbCwgTk8sIFlFUykpOwogI2VuZGlmCi0gICAgICAgICAg
ICBuZXdQb3RlbnRpYWxIaWdobGlnaHRzLmFkZChIaWdobGlnaHQ6OmNyZWF0ZUZvclNlbGVjdGlv
bigqdGhpcywgV1RGTW92ZShkZEhpZ2hsaWdodCksIFdURk1vdmUoKnNlbGVjdGlvblJhbmdlKSkp
OworICAgICAgICAgICAgYXV0byBoaWdobGlnaHQgPSBEYXRhRGV0ZWN0b3JIaWdobGlnaHQ6OmNy
ZWF0ZUZvclNlbGVjdGlvbihtX3BhZ2UsICp0aGlzLCBXVEZNb3ZlKGRkSGlnaGxpZ2h0KSwgV1RG
TW92ZSgqc2VsZWN0aW9uUmFuZ2UpKTsKKyAgICAgICAgICAgIG1faGlnaGxpZ2h0cy5hZGQoaGln
aGxpZ2h0LmdldCgpKTsKKyAgICAgICAgICAgIG5ld1BvdGVudGlhbEhpZ2hsaWdodHMuYWRkKFdU
Rk1vdmUoaGlnaGxpZ2h0KSk7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICByZXBsYWNlSGlnaGxp
Z2h0c09mVHlwZVByZXNlcnZpbmdFcXVpdmFsZW50SGlnaGxpZ2h0cyhuZXdQb3RlbnRpYWxIaWdo
bGlnaHRzLCBIaWdobGlnaHQ6OlNlbGVjdGlvblR5cGUpOworICAgIHJlcGxhY2VIaWdobGlnaHRz
T2ZUeXBlUHJlc2VydmluZ0VxdWl2YWxlbnRIaWdobGlnaHRzKG5ld1BvdGVudGlhbEhpZ2hsaWdo
dHMsIERhdGFEZXRlY3RvckhpZ2hsaWdodDo6VHlwZTo6U2VsZWN0aW9uKTsKIH0KIAotdm9pZCBT
ZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyOjpyZXBsYWNlSGlnaGxpZ2h0c09mVHlwZVByZXNlcnZp
bmdFcXVpdmFsZW50SGlnaGxpZ2h0cyhIYXNoU2V0PFJlZlB0cjxIaWdobGlnaHQ+PiYgbmV3UG90
ZW50aWFsSGlnaGxpZ2h0cywgSGlnaGxpZ2h0OjpUeXBlIHR5cGUpCit2b2lkIFNlcnZpY2VzT3Zl
cmxheUNvbnRyb2xsZXI6OnJlcGxhY2VIaWdobGlnaHRzT2ZUeXBlUHJlc2VydmluZ0VxdWl2YWxl
bnRIaWdobGlnaHRzKEhhc2hTZXQ8UmVmUHRyPERhdGFEZXRlY3RvckhpZ2hsaWdodD4+JiBuZXdQ
b3RlbnRpYWxIaWdobGlnaHRzLCBEYXRhRGV0ZWN0b3JIaWdobGlnaHQ6OlR5cGUgdHlwZSkKIHsK
ICAgICAvLyBJZiBhbnkgb2xkIEhpZ2hsaWdodHMgYXJlIGVxdWl2YWxlbnQgKGJ5IFJhbmdlKSB0
byBhIG5ldyBIaWdobGlnaHQsIHJldXNlIHRoZSBvbGQKICAgICAvLyBvbmUgc28gdGhhdCBhbnkg
bWV0YWRhdGEgaXMgcmV0YWluZWQuCi0gICAgSGFzaFNldDxSZWZQdHI8SGlnaGxpZ2h0Pj4gcmV1
c2VkUG90ZW50aWFsSGlnaGxpZ2h0czsKKyAgICBIYXNoU2V0PFJlZlB0cjxEYXRhRGV0ZWN0b3JI
aWdobGlnaHQ+PiByZXVzZWRQb3RlbnRpYWxIaWdobGlnaHRzOwogCiAgICAgZm9yIChhdXRvJiBv
bGRIaWdobGlnaHQgOiBtX3BvdGVudGlhbEhpZ2hsaWdodHMpIHsKICAgICAgICAgaWYgKG9sZEhp
Z2hsaWdodC0+dHlwZSgpICE9IHR5cGUpCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAg
ICBmb3IgKGF1dG8mIG5ld0hpZ2hsaWdodCA6IG5ld1BvdGVudGlhbEhpZ2hsaWdodHMpIHsKLSAg
ICAgICAgICAgIGlmIChoaWdobGlnaHRzQXJlRXF1aXZhbGVudChvbGRIaWdobGlnaHQuZ2V0KCks
IG5ld0hpZ2hsaWdodC5nZXQoKSkpIHsKLSAgICAgICAgICAgICAgICBvbGRIaWdobGlnaHQtPnNl
dERESGlnaGxpZ2h0KG5ld0hpZ2hsaWdodC0+ZGRIaWdobGlnaHQoKSk7CisgICAgICAgICAgICBp
ZiAoYXJlRXF1aXZhbGVudChvbGRIaWdobGlnaHQuZ2V0KCksIG5ld0hpZ2hsaWdodC5nZXQoKSkp
IHsKKyAgICAgICAgICAgICAgICBvbGRIaWdobGlnaHQtPnNldEhpZ2hsaWdodChuZXdIaWdobGln
aHQtPmhpZ2hsaWdodCgpKTsKIAogICAgICAgICAgICAgICAgIHJldXNlZFBvdGVudGlhbEhpZ2hs
aWdodHMuYWRkKG9sZEhpZ2hsaWdodCk7CiAgICAgICAgICAgICAgICAgbmV3UG90ZW50aWFsSGln
aGxpZ2h0cy5yZW1vdmUobmV3SGlnaGxpZ2h0KTsKQEAgLTYxMSwxOCArNDc3LDkgQEAgVmVjdG9y
PFNpbXBsZVJhbmdlPiBTZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyOjp0ZWxlcGhvbmVOdW1iZXJS
YW5nZXNGb3JGb2N1c2VkRnIKICAgICByZXR1cm4gbV9wYWdlLmZvY3VzQ29udHJvbGxlcigpLmZv
Y3VzZWRPck1haW5GcmFtZSgpLmVkaXRvcigpLmRldGVjdGVkVGVsZXBob25lTnVtYmVyUmFuZ2Vz
KCk7CiB9CiAKLWJvb2wgU2VydmljZXNPdmVybGF5Q29udHJvbGxlcjo6aGlnaGxpZ2h0c0FyZUVx
dWl2YWxlbnQoY29uc3QgSGlnaGxpZ2h0KiBhLCBjb25zdCBIaWdobGlnaHQqIGIpCi17Ci0gICAg
aWYgKGEgPT0gYikKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgaWYgKCFhIHx8ICFiKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIGEtPnR5cGUoKSA9PSBiLT50eXBlKCkgJiYg
YS0+cmFuZ2UoKSA9PSBiLT5yYW5nZSgpOwotfQotCi1TZXJ2aWNlc092ZXJsYXlDb250cm9sbGVy
OjpIaWdobGlnaHQqIFNlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXI6OmZpbmRUZWxlcGhvbmVOdW1i
ZXJIaWdobGlnaHRDb250YWluaW5nU2VsZWN0aW9uSGlnaGxpZ2h0KEhpZ2hsaWdodCYgc2VsZWN0
aW9uSGlnaGxpZ2h0KQorRGF0YURldGVjdG9ySGlnaGxpZ2h0KiBTZXJ2aWNlc092ZXJsYXlDb250
cm9sbGVyOjpmaW5kVGVsZXBob25lTnVtYmVySGlnaGxpZ2h0Q29udGFpbmluZ1NlbGVjdGlvbkhp
Z2hsaWdodChEYXRhRGV0ZWN0b3JIaWdobGlnaHQmIHNlbGVjdGlvbkhpZ2hsaWdodCkKIHsKLSAg
ICBpZiAoc2VsZWN0aW9uSGlnaGxpZ2h0LnR5cGUoKSAhPSBIaWdobGlnaHQ6OlNlbGVjdGlvblR5
cGUpCisgICAgaWYgKHNlbGVjdGlvbkhpZ2hsaWdodC50eXBlKCkgIT0gRGF0YURldGVjdG9ySGln
aGxpZ2h0OjpUeXBlOjpTZWxlY3Rpb24pCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAg
YXV0byBzZWxlY3Rpb25SYW5nZSA9IG1fcGFnZS5zZWxlY3Rpb24oKS50b05vcm1hbGl6ZWRSYW5n
ZSgpOwpAQCAtNjMwLDcgKzQ4Nyw3IEBAIFNlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXI6OkhpZ2hs
aWdodCogU2VydmljZXNPdmVybGF5Q29udHJvbGxlcjo6ZmluZFRlbGVwaG9uZU51CiAgICAgICAg
IHJldHVybiBudWxscHRyOwogCiAgICAgZm9yIChhdXRvJiBoaWdobGlnaHQgOiBtX3BvdGVudGlh
bEhpZ2hsaWdodHMpIHsKLSAgICAgICAgaWYgKGhpZ2hsaWdodC0+dHlwZSgpID09IEhpZ2hsaWdo
dDo6VGVsZXBob25lTnVtYmVyVHlwZSAmJiBjb250YWluczxDb21wb3NlZFRyZWU+KGhpZ2hsaWdo
dC0+cmFuZ2UoKSwgKnNlbGVjdGlvblJhbmdlKSkKKyAgICAgICAgaWYgKGhpZ2hsaWdodC0+dHlw
ZSgpID09IERhdGFEZXRlY3RvckhpZ2hsaWdodDo6VHlwZTo6VGVsZXBob25lTnVtYmVyICYmIGNv
bnRhaW5zPENvbXBvc2VkVHJlZT4oaGlnaGxpZ2h0LT5yYW5nZSgpLCAqc2VsZWN0aW9uUmFuZ2Up
KQogICAgICAgICAgICAgcmV0dXJuIGhpZ2hsaWdodC5nZXQoKTsKICAgICB9CiAKQEAgLTY0Mywx
MyArNTAwLDEzIEBAIHZvaWQgU2VydmljZXNPdmVybGF5Q29udHJvbGxlcjo6ZGV0ZXJtaW5lQWN0
aXZlSGlnaGxpZ2h0KGJvb2wmIG1vdXNlSXNPdmVyQWN0aXZlCiAKICAgICBtb3VzZUlzT3ZlckFj
dGl2ZUhpZ2hsaWdodEJ1dHRvbiA9IGZhbHNlOwogCi0gICAgUmVmUHRyPEhpZ2hsaWdodD4gbmV3
QWN0aXZlSGlnaGxpZ2h0OworICAgIFJlZlB0cjxEYXRhRGV0ZWN0b3JIaWdobGlnaHQ+IG5ld0Fj
dGl2ZUhpZ2hsaWdodDsKIAogICAgIGZvciAoYXV0byYgaGlnaGxpZ2h0IDogbV9wb3RlbnRpYWxI
aWdobGlnaHRzKSB7Ci0gICAgICAgIGlmIChoaWdobGlnaHQtPnR5cGUoKSA9PSBIaWdobGlnaHQ6
OlNlbGVjdGlvblR5cGUpIHsKKyAgICAgICAgaWYgKGhpZ2hsaWdodC0+dHlwZSgpID09IERhdGFE
ZXRlY3RvckhpZ2hsaWdodDo6VHlwZTo6U2VsZWN0aW9uKSB7CiAgICAgICAgICAgICAvLyBJZiB3
ZSd2ZSBhbHJlYWR5IGZvdW5kIGEgbmV3IGFjdGl2ZSBoaWdobGlnaHQsIGFuZCBpdCdzCiAgICAg
ICAgICAgICAvLyBhIHRlbGVwaG9uZSBudW1iZXIgaGlnaGxpZ2h0LCBwcmVmZXIgdGhhdCBvdmVy
IHRoaXMgc2VsZWN0aW9uIGhpZ2hsaWdodC4KLSAgICAgICAgICAgIGlmIChuZXdBY3RpdmVIaWdo
bGlnaHQgJiYgbmV3QWN0aXZlSGlnaGxpZ2h0LT50eXBlKCkgPT0gSGlnaGxpZ2h0OjpUZWxlcGhv
bmVOdW1iZXJUeXBlKQorICAgICAgICAgICAgaWYgKG5ld0FjdGl2ZUhpZ2hsaWdodCAmJiBuZXdB
Y3RpdmVIaWdobGlnaHQtPnR5cGUoKSA9PSBEYXRhRGV0ZWN0b3JIaWdobGlnaHQ6OlR5cGU6OlRl
bGVwaG9uZU51bWJlcikKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAgICAg
Ly8gSWYgdGhpcyBoaWdobGlnaHQgaGFzIG5vIGNvbXBhdGlibGUgc2VydmljZXMsIGl0IGNhbid0
IGJlIGFjdGl2ZS4KQEAgLTY2OCw4ICs1MjUsOCBAQCB2b2lkIFNlcnZpY2VzT3ZlcmxheUNvbnRy
b2xsZXI6OmRldGVybWluZUFjdGl2ZUhpZ2hsaWdodChib29sJiBtb3VzZUlzT3ZlckFjdGl2ZQog
CiAgICAgLy8gSWYgb3VyIG5ldyBhY3RpdmUgaGlnaGxpZ2h0IGlzIGEgc2VsZWN0aW9uIGhpZ2hs
aWdodCB0aGF0IGlzIGNvbXBsZXRlbHkgY29udGFpbmVkCiAgICAgLy8gYnkgb25lIG9mIHRoZSBw
aG9uZSBudW1iZXIgaGlnaGxpZ2h0cywgd2UnbGwgbWFrZSB0aGUgcGhvbmUgbnVtYmVyIGhpZ2hs
aWdodCBhY3RpdmUgZXZlbiBpZiBpdCdzIG5vdCBob3ZlcmVkLgotICAgIGlmIChuZXdBY3RpdmVI
aWdobGlnaHQgJiYgbmV3QWN0aXZlSGlnaGxpZ2h0LT50eXBlKCkgPT0gSGlnaGxpZ2h0OjpTZWxl
Y3Rpb25UeXBlKSB7Ci0gICAgICAgIGlmIChIaWdobGlnaHQqIGNvbnRhaW5lZFRlbGVwaG9uZU51
bWJlckhpZ2hsaWdodCA9IGZpbmRUZWxlcGhvbmVOdW1iZXJIaWdobGlnaHRDb250YWluaW5nU2Vs
ZWN0aW9uSGlnaGxpZ2h0KCpuZXdBY3RpdmVIaWdobGlnaHQpKSB7CisgICAgaWYgKG5ld0FjdGl2
ZUhpZ2hsaWdodCAmJiBuZXdBY3RpdmVIaWdobGlnaHQtPnR5cGUoKSA9PSBEYXRhRGV0ZWN0b3JI
aWdobGlnaHQ6OlR5cGU6OlNlbGVjdGlvbikgeworICAgICAgICBpZiAoRGF0YURldGVjdG9ySGln
aGxpZ2h0KiBjb250YWluZWRUZWxlcGhvbmVOdW1iZXJIaWdobGlnaHQgPSBmaW5kVGVsZXBob25l
TnVtYmVySGlnaGxpZ2h0Q29udGFpbmluZ1NlbGVjdGlvbkhpZ2hsaWdodCgqbmV3QWN0aXZlSGln
aGxpZ2h0KSkgewogICAgICAgICAgICAgbmV3QWN0aXZlSGlnaGxpZ2h0ID0gY29udGFpbmVkVGVs
ZXBob25lTnVtYmVySGlnaGxpZ2h0OwogCiAgICAgICAgICAgICAvLyBXZSB3aWxsIGFsd2F5cyBp
bml0aWFsbHkgY2hvb3NlIHRoZSB0ZWxlcGhvbmUgbnVtYmVyIGhpZ2hsaWdodCBvdmVyIHRoZSBz
ZWxlY3Rpb24gaGlnaGxpZ2h0IGlmIHRoZQpAQCAtNjc4LDcgKzUzNSw3IEBAIHZvaWQgU2Vydmlj
ZXNPdmVybGF5Q29udHJvbGxlcjo6ZGV0ZXJtaW5lQWN0aXZlSGlnaGxpZ2h0KGJvb2wmIG1vdXNl
SXNPdmVyQWN0aXZlCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAoIXRoaXMtPmhpZ2hsaWdo
dHNBcmVFcXVpdmFsZW50KG1fYWN0aXZlSGlnaGxpZ2h0LmdldCgpLCBuZXdBY3RpdmVIaWdobGln
aHQuZ2V0KCkpKSB7CisgICAgaWYgKCFhcmVFcXVpdmFsZW50KG1fYWN0aXZlSGlnaGxpZ2h0Lmdl
dCgpLCBuZXdBY3RpdmVIaWdobGlnaHQuZ2V0KCkpKSB7CiAgICAgICAgIC8vIFdoZW4gdHJhbnNp
dGlvbmluZyB0byBhIG5ldyBoaWdobGlnaHQsIHdlIG1pZ2h0IGVuZCB1cCBpbiBkZXRlcm1pbmVB
Y3RpdmVIaWdobGlnaHQgbXVsdGlwbGUgdGltZXMKICAgICAgICAgLy8gYmVmb3JlIHRoZSBuZXcg
aGlnaGxpZ2h0IGFjdHVhbGx5IGJlY29tZXMgYWN0aXZlLiBLZWVwIHRyYWNrIG9mIHRoZSBsYXN0
IG5leHQtYnV0LW5vdC15ZXQtYWN0aXZlCiAgICAgICAgIC8vIGhpZ2hsaWdodCwgYW5kIG9ubHkg
cmVzZXQgdGhlIGFjdGl2ZSBoaWdobGlnaHQgaHlzdGVyZXNpcyB3aGVuIHRoYXQgY2hhbmdlcy4K
QEAgLTcyNSw3ICs1ODIsNyBAQCBib29sIFNlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXI6Om1vdXNl
RXZlbnQoUGFnZU92ZXJsYXkmLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbgogCiAgICAgLy8gSWYg
dGhlIG1vdXNlIGxpZnRlZCB3aGlsZSBzdGlsbCBvdmVyIHRoZSBoaWdobGlnaHQgYnV0dG9uIHRo
YXQgaXQgd2VudCBkb3duIG9uLCB0aGVuIHRoYXQgaXMgYSBjbGljay4KICAgICBpZiAoZXZlbnQu
dHlwZSgpID09IFBsYXRmb3JtRXZlbnQ6Ok1vdXNlUmVsZWFzZWQpIHsKLSAgICAgICAgUmVmUHRy
PEhpZ2hsaWdodD4gbW91c2VEb3duSGlnaGxpZ2h0ID0gbV9jdXJyZW50TW91c2VEb3duT25CdXR0
b25IaWdobGlnaHQ7CisgICAgICAgIGF1dG8gbW91c2VEb3duSGlnaGxpZ2h0ID0gbV9jdXJyZW50
TW91c2VEb3duT25CdXR0b25IaWdobGlnaHQuY29weVJlZigpOwogICAgICAgICBtX2N1cnJlbnRN
b3VzZURvd25PbkJ1dHRvbkhpZ2hsaWdodCA9IG51bGxwdHI7CiAKICAgICAgICAgbV9sYXN0TW91
c2VVcFRpbWUgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKQEAgLTc2NSwxNSArNjIyLDE1IEBAIHZv
aWQgU2VydmljZXNPdmVybGF5Q29udHJvbGxlcjo6ZGlkU2Nyb2xsRnJhbWUoUGFnZU92ZXJsYXkm
LCBGcmFtZSYgZnJhbWUpCiAgICAgaWYgKGZyYW1lLmlzTWFpbkZyYW1lKCkpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIGludmFsaWRhdGVIaWdobGlnaHRzT2ZUeXBlKEhpZ2hsaWdodDo6VGVsZXBo
b25lTnVtYmVyVHlwZSk7Ci0gICAgaW52YWxpZGF0ZUhpZ2hsaWdodHNPZlR5cGUoSGlnaGxpZ2h0
OjpTZWxlY3Rpb25UeXBlKTsKKyAgICBpbnZhbGlkYXRlSGlnaGxpZ2h0c09mVHlwZShEYXRhRGV0
ZWN0b3JIaWdobGlnaHQ6OlR5cGU6OlRlbGVwaG9uZU51bWJlcik7CisgICAgaW52YWxpZGF0ZUhp
Z2hsaWdodHNPZlR5cGUoRGF0YURldGVjdG9ySGlnaGxpZ2h0OjpUeXBlOjpTZWxlY3Rpb24pOwog
ICAgIGJ1aWxkUG90ZW50aWFsSGlnaGxpZ2h0c0lmTmVlZGVkKCk7CiAKICAgICBib29sIG1vdXNl
SXNPdmVyQWN0aXZlSGlnaGxpZ2h0QnV0dG9uOwogICAgIGRldGVybWluZUFjdGl2ZUhpZ2hsaWdo
dChtb3VzZUlzT3ZlckFjdGl2ZUhpZ2hsaWdodEJ1dHRvbik7CiB9CiAKLXZvaWQgU2VydmljZXNP
dmVybGF5Q29udHJvbGxlcjo6aGFuZGxlQ2xpY2soY29uc3QgSW50UG9pbnQmIGNsaWNrUG9pbnQs
IEhpZ2hsaWdodCYgaGlnaGxpZ2h0KQordm9pZCBTZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyOjpo
YW5kbGVDbGljayhjb25zdCBJbnRQb2ludCYgY2xpY2tQb2ludCwgRGF0YURldGVjdG9ySGlnaGxp
Z2h0JiBoaWdobGlnaHQpCiB7CiAgICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBtYWluRnJhbWUo
KS52aWV3KCk7CiAgICAgaWYgKCFmcmFtZVZpZXcpCkBAIC03ODEsNyArNjM4LDcgQEAgdm9pZCBT
ZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyOjpoYW5kbGVDbGljayhjb25zdCBJbnRQb2ludCYgY2xp
Y2tQb2ludCwgSGlnaGxpZ2gKIAogICAgIEludFBvaW50IHdpbmRvd1BvaW50ID0gZnJhbWVWaWV3
LT5jb250ZW50c1RvV2luZG93KGNsaWNrUG9pbnQpOwogCi0gICAgaWYgKGhpZ2hsaWdodC50eXBl
KCkgPT0gSGlnaGxpZ2h0OjpTZWxlY3Rpb25UeXBlKSB7CisgICAgaWYgKGhpZ2hsaWdodC50eXBl
KCkgPT0gRGF0YURldGVjdG9ySGlnaGxpZ2h0OjpUeXBlOjpTZWxlY3Rpb24pIHsKICAgICAgICAg
YXV0byB0ZWxlcGhvbmVOdW1iZXJSYW5nZXMgPSB0ZWxlcGhvbmVOdW1iZXJSYW5nZXNGb3JGb2N1
c2VkRnJhbWUoKTsKICAgICAgICAgVmVjdG9yPFN0cmluZz4gc2VsZWN0ZWRUZWxlcGhvbmVOdW1i
ZXJzOwogICAgICAgICBzZWxlY3RlZFRlbGVwaG9uZU51bWJlcnMucmVzZXJ2ZUNhcGFjaXR5KHRl
bGVwaG9uZU51bWJlclJhbmdlcy5zaXplKCkpOwpAQCAtNzg5LDcgKzY0Niw3IEBAIHZvaWQgU2Vy
dmljZXNPdmVybGF5Q29udHJvbGxlcjo6aGFuZGxlQ2xpY2soY29uc3QgSW50UG9pbnQmIGNsaWNr
UG9pbnQsIEhpZ2hsaWdoCiAgICAgICAgICAgICBzZWxlY3RlZFRlbGVwaG9uZU51bWJlcnMuYXBw
ZW5kKHBsYWluVGV4dChyYW5nZSkpOwogCiAgICAgICAgIG1fcGFnZS5jaHJvbWUoKS5jbGllbnQo
KS5oYW5kbGVTZWxlY3Rpb25TZXJ2aWNlQ2xpY2sobV9wYWdlLmZvY3VzQ29udHJvbGxlcigpLmZv
Y3VzZWRPck1haW5GcmFtZSgpLnNlbGVjdGlvbigpLCBzZWxlY3RlZFRlbGVwaG9uZU51bWJlcnMs
IHdpbmRvd1BvaW50KTsKLSAgICB9IGVsc2UgaWYgKGhpZ2hsaWdodC50eXBlKCkgPT0gSGlnaGxp
Z2h0OjpUZWxlcGhvbmVOdW1iZXJUeXBlKQorICAgIH0gZWxzZSBpZiAoaGlnaGxpZ2h0LnR5cGUo
KSA9PSBEYXRhRGV0ZWN0b3JIaWdobGlnaHQ6OlR5cGU6OlRlbGVwaG9uZU51bWJlcikKICAgICAg
ICAgbV9wYWdlLmNocm9tZSgpLmNsaWVudCgpLmhhbmRsZVRlbGVwaG9uZU51bWJlckNsaWNrKHBs
YWluVGV4dChoaWdobGlnaHQucmFuZ2UoKSksIHdpbmRvd1BvaW50KTsKIH0KIApAQCAtNzk4LDE4
ICs2NTUsNiBAQCBGcmFtZSYgU2VydmljZXNPdmVybGF5Q29udHJvbGxlcjo6bWFpbkZyYW1lKCkg
Y29uc3QKICAgICByZXR1cm4gbV9wYWdlLm1haW5GcmFtZSgpOwogfQogCi12b2lkIFNlcnZpY2Vz
T3ZlcmxheUNvbnRyb2xsZXI6OmRpZENyZWF0ZUhpZ2hsaWdodChIaWdobGlnaHQqIGhpZ2hsaWdo
dCkKLXsKLSAgICBBU1NFUlQoIW1faGlnaGxpZ2h0cy5jb250YWlucyhoaWdobGlnaHQpKTsKLSAg
ICBtX2hpZ2hsaWdodHMuYWRkKGhpZ2hsaWdodCk7Ci19Ci0KLXZvaWQgU2VydmljZXNPdmVybGF5
Q29udHJvbGxlcjo6d2lsbERlc3Ryb3lIaWdobGlnaHQoSGlnaGxpZ2h0KiBoaWdobGlnaHQpCi17
Ci0gICAgQVNTRVJUKG1faGlnaGxpZ2h0cy5jb250YWlucyhoaWdobGlnaHQpKTsKLSAgICBtX2hp
Z2hsaWdodHMucmVtb3ZlKGhpZ2hsaWdodCk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYktpdAog
CiAjZW5kaWYgLy8gKEVOQUJMRShTRVJWSUNFX0NPTlRST0xTKSB8fCBFTkFCTEUoVEVMRVBIT05F
X05VTUJFUl9ERVRFQ1RJT04pKSAmJiBQTEFURk9STShNQUMpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvRGF0YURldGVjdG9ySGlnaGxpZ2h0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvRGF0YURldGVjdG9ySGlnaGxpZ2h0LmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTM0
NzY3YjZlYTRhMzA0NDlhM2E0MzBjOWI4YTFkMDkzNDY1NWRhZgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EYXRhRGV0ZWN0b3JIaWdobGlnaHQuaApAQCAt
MCwwICsxLDEwMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKERB
VEFfREVURUNUSU9OKSAmJiBQTEFURk9STShNQUMpCisKKyNpbXBvcnQgIkdyYXBoaWNzTGF5ZXJD
bGllbnQuaCIKKyNpbXBvcnQgIlNpbXBsZVJhbmdlLmgiCisjaW1wb3J0IDx3dGYvUmVmQ291bnRl
ZC5oPgorI2ltcG9ydCA8d3RmL1JlZlB0ci5oPgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgor
I2ltcG9ydCA8d3RmL1dlYWtQdHIuaD4KKwordHlwZWRlZiBzdHJ1Y3QgX19EREhpZ2hsaWdodCAq
RERIaWdobGlnaHRSZWY7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRGF0YURldGVj
dG9ySGlnaGxpZ2h0OworY2xhc3MgRmxvYXRSZWN0OworY2xhc3MgR3JhcGhpY3NDb250ZXh0Owor
Y2xhc3MgR3JhcGhpY3NMYXllcjsKK2NsYXNzIFBhZ2U7CisKK2NsYXNzIERhdGFEZXRlY3Rvckhp
Z2hsaWdodENsaWVudCA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxEYXRhRGV0ZWN0b3JIaWdobGln
aHRDbGllbnQ+IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5EYXRhRGV0ZWN0b3JIaWdobGlnaHRD
bGllbnQoKSA9IGRlZmF1bHQ7CisKKyAgICB2aXJ0dWFsIERhdGFEZXRlY3RvckhpZ2hsaWdodCog
YWN0aXZlSGlnaGxpZ2h0KCkgY29uc3QgPSAwOworfTsKKworY2xhc3MgRGF0YURldGVjdG9ySGln
aGxpZ2h0IDogcHVibGljIFJlZkNvdW50ZWQ8RGF0YURldGVjdG9ySGlnaGxpZ2h0PiwgcHJpdmF0
ZSBHcmFwaGljc0xheWVyQ2xpZW50LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8RGF0YURldGVjdG9y
SGlnaGxpZ2h0PiB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRGF0YURldGVjdG9ySGlnaGxp
Z2h0KTsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPERhdGFEZXRlY3RvckhpZ2hsaWdodD4gY3Jl
YXRlRm9yU2VsZWN0aW9uKFBhZ2UmLCBEYXRhRGV0ZWN0b3JIaWdobGlnaHRDbGllbnQmLCBSZXRh
aW5QdHI8RERIaWdobGlnaHRSZWY+JiYsIFNpbXBsZVJhbmdlJiYpOworICAgIHN0YXRpYyBSZWY8
RGF0YURldGVjdG9ySGlnaGxpZ2h0PiBjcmVhdGVGb3JUZWxlcGhvbmVOdW1iZXIoUGFnZSYsIERh
dGFEZXRlY3RvckhpZ2hsaWdodENsaWVudCYsIFJldGFpblB0cjxEREhpZ2hsaWdodFJlZj4mJiwg
U2ltcGxlUmFuZ2UmJik7CisKKyAgICB+RGF0YURldGVjdG9ySGlnaGxpZ2h0KCkgPSBkZWZhdWx0
OworCisgICAgdm9pZCBpbnZhbGlkYXRlKCk7CisKKyAgICBEREhpZ2hsaWdodFJlZiBoaWdobGln
aHQoKSBjb25zdCB7IHJldHVybiBtX2hpZ2hsaWdodC5nZXQoKTsgfQorICAgIGNvbnN0IFNpbXBs
ZVJhbmdlJiByYW5nZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmFuZ2U7IH0KKyAgICBHcmFwaGljc0xh
eWVyJiBsYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fZ3JhcGhpY3NMYXllci5nZXQoKTsgfQorCisg
ICAgZW51bSBjbGFzcyBUeXBlIDogdWludDhfdCB7CisgICAgICAgIE5vbmUgPSAwLAorICAgICAg
ICBUZWxlcGhvbmVOdW1iZXIgPSAxIDw8IDAsCisgICAgICAgIFNlbGVjdGlvbiA9IDEgPDwgMSwK
KyAgICB9OworCisgICAgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CisKKyAg
ICB2b2lkIGZhZGVJbigpOworICAgIHZvaWQgZmFkZU91dCgpOworCisgICAgdm9pZCBzZXRIaWdo
bGlnaHQoRERIaWdobGlnaHRSZWYpOworCitwcml2YXRlOgorICAgIERhdGFEZXRlY3RvckhpZ2hs
aWdodChQYWdlJiwgRGF0YURldGVjdG9ySGlnaGxpZ2h0Q2xpZW50JiwgVHlwZSwgUmV0YWluUHRy
PERESGlnaGxpZ2h0UmVmPiYmLCBTaW1wbGVSYW5nZSYmKTsKKworICAgIC8vIEdyYXBoaWNzTGF5
ZXJDbGllbnQKKyAgICB2b2lkIG5vdGlmeUZsdXNoUmVxdWlyZWQoY29uc3QgR3JhcGhpY3NMYXll
ciopIG92ZXJyaWRlOworICAgIHZvaWQgcGFpbnRDb250ZW50cyhjb25zdCBHcmFwaGljc0xheWVy
KiwgR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBpbkNsaXAsIEdyYXBoaWNzTGF5
ZXJQYWludEJlaGF2aW9yKSBvdmVycmlkZTsKKyAgICBmbG9hdCBkZXZpY2VTY2FsZUZhY3Rvcigp
IGNvbnN0IG92ZXJyaWRlOworCisgICAgdm9pZCBkaWRGaW5pc2hGYWRlT3V0QW5pbWF0aW9uKCk7
CisKKyAgICBXZWFrUHRyPERhdGFEZXRlY3RvckhpZ2hsaWdodENsaWVudD4gbV9jbGllbnQ7Cisg
ICAgV2Vha1B0cjxQYWdlPiBtX3BhZ2U7CisgICAgUmV0YWluUHRyPERESGlnaGxpZ2h0UmVmPiBt
X2hpZ2hsaWdodDsKKyAgICBTaW1wbGVSYW5nZSBtX3JhbmdlOworICAgIFJlZjxHcmFwaGljc0xh
eWVyPiBtX2dyYXBoaWNzTGF5ZXI7CisgICAgVHlwZSBtX3R5cGUgeyBUeXBlOjpOb25lIH07Cit9
OworCitib29sIGFyZUVxdWl2YWxlbnQoY29uc3QgRGF0YURldGVjdG9ySGlnaGxpZ2h0KiwgY29u
c3QgRGF0YURldGVjdG9ySGlnaGxpZ2h0Kik7CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmIC8vIEVOQUJMRShEQVRBX0RFVEVDVElPTikgJiYgUExBVEZPUk0oTUFDKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RhdGFEZXRlY3RvckhpZ2hsaWdodC5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EYXRhRGV0ZWN0b3JIaWdobGlnaHQubW0K
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZDQ0NzEyNWIxYzA4NGE0ZDAwMTI1NDhmYmYyNDdmZjRlMTI5NTFlZAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EYXRhRGV0ZWN0b3JI
aWdobGlnaHQubW0KQEAgLTAsMCArMSwxOTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25m
aWcuaCIKKyNpbXBvcnQgIkRhdGFEZXRlY3RvckhpZ2hsaWdodC5oIgorCisjaWYgRU5BQkxFKERB
VEFfREVURUNUSU9OKSAmJiBQTEFURk9STShNQUMpCisKKyNpbXBvcnQgIkNocm9tZS5oIgorI2lt
cG9ydCAiQ2hyb21lQ2xpZW50LmgiCisjaW1wb3J0ICJGbG9hdFJlY3QuaCIKKyNpbXBvcnQgIkdy
YXBoaWNzQ29udGV4dC5oIgorI2ltcG9ydCAiR3JhcGhpY3NMYXllci5oIgorI2ltcG9ydCAiR3Jh
cGhpY3NMYXllckNBLmgiCisjaW1wb3J0ICJHcmFwaGljc0xheWVyRmFjdG9yeS5oIgorI2ltcG9y
dCAiUGFnZS5oIgorI2ltcG9ydCAiUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hLmgiCisjaW1wb3J0
ICJQbGF0Zm9ybUNBTGF5ZXIuaCIKKyNpbXBvcnQgPFF1YXJ0ekNvcmUvUXVhcnR6Q29yZS5oPgor
I2ltcG9ydCA8cGFsL3NwaS9tYWMvRGF0YURldGVjdG9yc1NQSS5oPgorI2ltcG9ydCA8d3RmL1Nl
Y29uZHMuaD4KKyNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK2NvbnN0ZXhwciBTZWNvbmRzIGhpZ2hsaWdodEZhZGVBbmltYXRpb25EdXJhdGlvbiA9
IDMwMF9tczsKKworUmVmPERhdGFEZXRlY3RvckhpZ2hsaWdodD4gRGF0YURldGVjdG9ySGlnaGxp
Z2h0OjpjcmVhdGVGb3JTZWxlY3Rpb24oUGFnZSYgcGFnZSwgRGF0YURldGVjdG9ySGlnaGxpZ2h0
Q2xpZW50JiBjbGllbnQsIFJldGFpblB0cjxEREhpZ2hsaWdodFJlZj4mJiBkZEhpZ2hsaWdodCwg
U2ltcGxlUmFuZ2UmJiByYW5nZSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhRGV0
ZWN0b3JIaWdobGlnaHQocGFnZSwgY2xpZW50LCBEYXRhRGV0ZWN0b3JIaWdobGlnaHQ6OlR5cGU6
OlNlbGVjdGlvbiwgV1RGTW92ZShkZEhpZ2hsaWdodCksIFdURk1vdmUocmFuZ2UpKSk7Cit9CisK
K1JlZjxEYXRhRGV0ZWN0b3JIaWdobGlnaHQ+IERhdGFEZXRlY3RvckhpZ2hsaWdodDo6Y3JlYXRl
Rm9yVGVsZXBob25lTnVtYmVyKFBhZ2UmIHBhZ2UsIERhdGFEZXRlY3RvckhpZ2hsaWdodENsaWVu
dCYgY2xpZW50LCBSZXRhaW5QdHI8RERIaWdobGlnaHRSZWY+JiYgZGRIaWdobGlnaHQsIFNpbXBs
ZVJhbmdlJiYgcmFuZ2UpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YURldGVjdG9y
SGlnaGxpZ2h0KHBhZ2UsIGNsaWVudCwgRGF0YURldGVjdG9ySGlnaGxpZ2h0OjpUeXBlOjpUZWxl
cGhvbmVOdW1iZXIsIFdURk1vdmUoZGRIaWdobGlnaHQpLCBXVEZNb3ZlKHJhbmdlKSkpOworfQor
CitEYXRhRGV0ZWN0b3JIaWdobGlnaHQ6OkRhdGFEZXRlY3RvckhpZ2hsaWdodChQYWdlJiBwYWdl
LCBEYXRhRGV0ZWN0b3JIaWdobGlnaHRDbGllbnQmIGNsaWVudCwgVHlwZSB0eXBlLCBSZXRhaW5Q
dHI8RERIaWdobGlnaHRSZWY+JiYgZGRIaWdobGlnaHQsIFNpbXBsZVJhbmdlJiYgcmFuZ2UpCisg
ICAgOiBtX2NsaWVudChtYWtlV2Vha1B0cihjbGllbnQpKQorICAgICwgbV9wYWdlKG1ha2VXZWFr
UHRyKHBhZ2UpKQorICAgICwgbV9yYW5nZShXVEZNb3ZlKHJhbmdlKSkKKyAgICAsIG1fZ3JhcGhp
Y3NMYXllcihHcmFwaGljc0xheWVyOjpjcmVhdGUocGFnZS5jaHJvbWUoKS5jbGllbnQoKS5ncmFw
aGljc0xheWVyRmFjdG9yeSgpLCAqdGhpcykpCisgICAgLCBtX3R5cGUodHlwZSkKK3sKKyAgICBB
U1NFUlQoZGRIaWdobGlnaHQpOworCisgICAgbV9ncmFwaGljc0xheWVyLT5zZXREcmF3c0NvbnRl
bnQodHJ1ZSk7CisKKyAgICBzZXRIaWdobGlnaHQoZGRIaWdobGlnaHQuZ2V0KCkpOworCisgICAg
Ly8gU2V0IGRpcmVjdGx5IG9uIHRoZSBQbGF0Zm9ybUNBTGF5ZXIgc28gdGhhdCB3aGVuIHdlIGxl
YXZlIHRoZSAnZnJvbScgdmFsdWUgaW1wbGljaXQKKyAgICAvLyBpbiBvdXIgYW5pbWF0aW9ucywg
d2UgZ2V0IHRoZSByaWdodCBpbml0aWFsIHZhbHVlIHJlZ2FyZGxlc3Mgb2YgZmx1c2ggdGltaW5n
LgorICAgIGRvd25jYXN0PEdyYXBoaWNzTGF5ZXJDQT4obGF5ZXIoKSkucGxhdGZvcm1DQUxheWVy
KCktPnNldE9wYWNpdHkoMCk7Cit9CisKK3ZvaWQgRGF0YURldGVjdG9ySGlnaGxpZ2h0OjpzZXRI
aWdobGlnaHQoRERIaWdobGlnaHRSZWYgaGlnaGxpZ2h0KQoreworICAgIGlmICghRGF0YURldGVj
dG9yc0xpYnJhcnkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCFtX2NsaWVudCkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgbV9oaWdobGlnaHQgPSBoaWdobGlnaHQ7CisKKyAgICBpZiAo
IW1faGlnaGxpZ2h0KQorICAgICAgICByZXR1cm47CisKKyAgICBDR1JlY3QgaGlnaGxpZ2h0Qm91
bmRpbmdSZWN0ID0gRERIaWdobGlnaHRHZXRCb3VuZGluZ1JlY3QobV9oaWdobGlnaHQuZ2V0KCkp
OworICAgIG1fZ3JhcGhpY3NMYXllci0+c2V0UG9zaXRpb24oRmxvYXRQb2ludChoaWdobGlnaHRC
b3VuZGluZ1JlY3Qub3JpZ2luKSk7CisgICAgbV9ncmFwaGljc0xheWVyLT5zZXRTaXplKEZsb2F0
U2l6ZShoaWdobGlnaHRCb3VuZGluZ1JlY3Quc2l6ZSkpOworCisgICAgbV9ncmFwaGljc0xheWVy
LT5zZXROZWVkc0Rpc3BsYXkoKTsKK30KKwordm9pZCBEYXRhRGV0ZWN0b3JIaWdobGlnaHQ6Omlu
dmFsaWRhdGUoKQoreworICAgIGxheWVyKCkucmVtb3ZlRnJvbVBhcmVudCgpOworICAgIG1fY2xp
ZW50ID0gbnVsbHB0cjsKKyAgICBtX3BhZ2UgPSBudWxscHRyOworfQorCit2b2lkIERhdGFEZXRl
Y3RvckhpZ2hsaWdodDo6bm90aWZ5Rmx1c2hSZXF1aXJlZChjb25zdCBHcmFwaGljc0xheWVyKikK
K3sKKyAgICBpZiAoIW1fcGFnZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9wYWdlLT5zY2hl
ZHVsZVJlbmRlcmluZ1VwZGF0ZShSZW5kZXJpbmdVcGRhdGVTdGVwOjpMYXllckZsdXNoKTsKK30K
Kwordm9pZCBEYXRhRGV0ZWN0b3JIaWdobGlnaHQ6OnBhaW50Q29udGVudHMoY29uc3QgR3JhcGhp
Y3NMYXllciosIEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBGbG9hdFJl
Y3QmLCBHcmFwaGljc0xheWVyUGFpbnRCZWhhdmlvcikKK3sKKyAgICBpZiAoIURhdGFEZXRlY3Rv
cnNMaWJyYXJ5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIEZJWE1FOiBUaGlzIG5lZWRz
IHRvIGJlIG1vdmVkIGludG8gR3JhcGhpY3NDb250ZXh0IGFzIGEgRGlzcGxheUxpc3QtY29tcGF0
aWJsZSBkcmF3aW5nIGNvbW1hbmQuCisgICAgaWYgKCFncmFwaGljc0NvbnRleHQuaGFzUGxhdGZv
cm1Db250ZXh0KCkpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBDR0NvbnRleHRSZWYgY2dDb250ZXh0ID0gZ3JhcGhpY3NDb250
ZXh0LnBsYXRmb3JtQ29udGV4dCgpOworCisgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElP
TlNfQkVHSU4KKyAgICBDR0xheWVyUmVmIGhpZ2hsaWdodExheWVyID0gRERIaWdobGlnaHRHZXRM
YXllcldpdGhDb250ZXh0KGhpZ2hsaWdodCgpLCBjZ0NvbnRleHQpOworICAgIEFMTE9XX0RFUFJF
Q0FURURfREVDTEFSQVRJT05TX0VORAorICAgIENHUmVjdCBoaWdobGlnaHRCb3VuZGluZ1JlY3Qg
PSBEREhpZ2hsaWdodEdldEJvdW5kaW5nUmVjdChoaWdobGlnaHQoKSk7CisgICAgaGlnaGxpZ2h0
Qm91bmRpbmdSZWN0Lm9yaWdpbiA9IENHUG9pbnRaZXJvOworCisgICAgQ0dDb250ZXh0RHJhd0xh
eWVySW5SZWN0KGNnQ29udGV4dCwgaGlnaGxpZ2h0Qm91bmRpbmdSZWN0LCBoaWdobGlnaHRMYXll
cik7Cit9CisKK2Zsb2F0IERhdGFEZXRlY3RvckhpZ2hsaWdodDo6ZGV2aWNlU2NhbGVGYWN0b3Io
KSBjb25zdAoreworICAgIGlmICghbV9wYWdlKQorICAgICAgICByZXR1cm4gMTsKKworICAgIHJl
dHVybiBtX3BhZ2UtPmRldmljZVNjYWxlRmFjdG9yKCk7Cit9CisKK3ZvaWQgRGF0YURldGVjdG9y
SGlnaGxpZ2h0OjpmYWRlSW4oKQoreworICAgIFJldGFpblB0cjxDQUJhc2ljQW5pbWF0aW9uPiBh
bmltYXRpb24gPSBbQ0FCYXNpY0FuaW1hdGlvbiBhbmltYXRpb25XaXRoS2V5UGF0aDpAIm9wYWNp
dHkiXTsKKyAgICBbYW5pbWF0aW9uIHNldER1cmF0aW9uOmhpZ2hsaWdodEZhZGVBbmltYXRpb25E
dXJhdGlvbi5zZWNvbmRzKCldOworICAgIFthbmltYXRpb24gc2V0RmlsbE1vZGU6a0NBRmlsbE1v
ZGVGb3J3YXJkc107CisgICAgW2FuaW1hdGlvbiBzZXRSZW1vdmVkT25Db21wbGV0aW9uOmZhbHNl
XTsKKyAgICBbYW5pbWF0aW9uIHNldFRvVmFsdWU6QDFdOworCisgICAgYXV0byBwbGF0Zm9ybUFu
aW1hdGlvbiA9IFBsYXRmb3JtQ0FBbmltYXRpb25Db2NvYTo6Y3JlYXRlKGFuaW1hdGlvbi5nZXQo
KSk7CisgICAgZG93bmNhc3Q8R3JhcGhpY3NMYXllckNBPihsYXllcigpKS5wbGF0Zm9ybUNBTGF5
ZXIoKS0+YWRkQW5pbWF0aW9uRm9yS2V5KCJGYWRlSGlnaGxpZ2h0SW4iLCBwbGF0Zm9ybUFuaW1h
dGlvbi5nZXQoKSk7Cit9CisKK3ZvaWQgRGF0YURldGVjdG9ySGlnaGxpZ2h0OjpmYWRlT3V0KCkK
K3sKKyAgICBSZXRhaW5QdHI8Q0FCYXNpY0FuaW1hdGlvbj4gYW5pbWF0aW9uID0gW0NBQmFzaWNB
bmltYXRpb24gYW5pbWF0aW9uV2l0aEtleVBhdGg6QCJvcGFjaXR5Il07CisgICAgW2FuaW1hdGlv
biBzZXREdXJhdGlvbjpoaWdobGlnaHRGYWRlQW5pbWF0aW9uRHVyYXRpb24uc2Vjb25kcygpXTsK
KyAgICBbYW5pbWF0aW9uIHNldEZpbGxNb2RlOmtDQUZpbGxNb2RlRm9yd2FyZHNdOworICAgIFth
bmltYXRpb24gc2V0UmVtb3ZlZE9uQ29tcGxldGlvbjpmYWxzZV07CisgICAgW2FuaW1hdGlvbiBz
ZXRUb1ZhbHVlOkAwXTsKKworICAgIFtDQVRyYW5zYWN0aW9uIGJlZ2luXTsKKyAgICBbQ0FUcmFu
c2FjdGlvbiBzZXRDb21wbGV0aW9uQmxvY2s6W3Byb3RlY3RlZFNlbGYgPSBtYWtlUmVmKCp0aGlz
KV0oKSBtdXRhYmxlIHsKKyAgICAgICAgcHJvdGVjdGVkU2VsZi0+ZGlkRmluaXNoRmFkZU91dEFu
aW1hdGlvbigpOworICAgIH1dOworCisgICAgYXV0byBwbGF0Zm9ybUFuaW1hdGlvbiA9IFBsYXRm
b3JtQ0FBbmltYXRpb25Db2NvYTo6Y3JlYXRlKGFuaW1hdGlvbi5nZXQoKSk7CisgICAgZG93bmNh
c3Q8R3JhcGhpY3NMYXllckNBPihsYXllcigpKS5wbGF0Zm9ybUNBTGF5ZXIoKS0+YWRkQW5pbWF0
aW9uRm9yS2V5KCJGYWRlSGlnaGxpZ2h0T3V0IiwgcGxhdGZvcm1BbmltYXRpb24uZ2V0KCkpOwor
ICAgIFtDQVRyYW5zYWN0aW9uIGNvbW1pdF07Cit9CisKK3ZvaWQgRGF0YURldGVjdG9ySGlnaGxp
Z2h0OjpkaWRGaW5pc2hGYWRlT3V0QW5pbWF0aW9uKCkKK3sKKyAgICBpZiAoIW1fY2xpZW50KQor
ICAgICAgICByZXR1cm47CisKKyAgICBpZiAobV9jbGllbnQtPmFjdGl2ZUhpZ2hsaWdodCgpID09
IHRoaXMpCisgICAgICAgIHJldHVybjsKKworICAgIGxheWVyKCkucmVtb3ZlRnJvbVBhcmVudCgp
OworfQorCitib29sIGFyZUVxdWl2YWxlbnQoY29uc3QgRGF0YURldGVjdG9ySGlnaGxpZ2h0KiBh
LCBjb25zdCBEYXRhRGV0ZWN0b3JIaWdobGlnaHQqIGIpCit7CisgICAgaWYgKGEgPT0gYikKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBpZiAoIWEgfHwgIWIpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIHJldHVybiBhLT50eXBlKCkgPT0gYi0+dHlwZSgpICYmIGEtPnJhbmdlKCkg
PT0gYi0+cmFuZ2UoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8g
RU5BQkxFKERBVEFfREVURUNUSU9OKSAmJiBQTEFURk9STShNQUMpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>