<?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>139981</bug_id>
          
          <creation_ts>2014-12-28 15:03:44 -0800</creation_ts>
          <short_desc>Web Inspector: pass parameters to inspector instrumentation by reference where possible</short_desc>
          <delta_ts>2015-01-05 16:54:16 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>140098</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brian Burg">burg</reporter>
          <assigned_to name="Brian Burg">burg</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>graouts</cc>
    
    <cc>joepeck</cc>
    
    <cc>jonowells</cc>
    
    <cc>kling</cc>
    
    <cc>mattbaker</cc>
    
    <cc>nvasilyev</cc>
    
    <cc>ossy</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1058061</commentid>
    <comment_count>0</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-12-28 15:03:44 -0800</bug_when>
    <thetext>Cleanup work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1058062</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2014-12-28 15:03:55 -0800</bug_when>
    <thetext>&lt;rdar://problem/19353559&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1058064</commentid>
    <comment_count>2</comment_count>
      <attachid>243787</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-12-28 15:36:29 -0800</bug_when>
    <thetext>Created attachment 243787
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1058065</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-12-28 15:38:59 -0800</bug_when>
    <thetext>Attachment 243787 did not pass style-queue:


ERROR: Source/WebCore/inspector/InspectorInstrumentation.cpp:46:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 42 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1058145</commentid>
    <comment_count>4</comment_count>
      <attachid>243787</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2014-12-29 16:05:33 -0800</bug_when>
    <thetext>Comment on attachment 243787
Patch

r=me, this is really neat!

Please fix the EFL &amp; Gtk+ build failures before landing:

../../Source/WebCore/page/EventHandler.cpp: In member function &apos;bool WebCore::EventHandler::handleTouchEvent(const WebCore::PlatformTouchEvent&amp;)&apos;:
../../Source/WebCore/page/EventHandler.cpp:3869:82: error: no matching function for call to &apos;WebCore::InspectorInstrumentation::handleTouchEvent(WebCore::Frame&amp;, WebCore::Node&amp;)&apos;
             if (node &amp;&amp; InspectorInstrumentation::handleTouchEvent(m_frame, *node))
                                                                                  ^
../../Source/WebCore/page/EventHandler.cpp:3869:82: note: candidate is:
In file included from ../../Source/WebCore/page/EventHandler.cpp:63:0:
../../Source/WebCore/inspector/InspectorInstrumentation.h:746:17: note: static bool WebCore::InspectorInstrumentation::handleTouchEvent(WebCore::Page&amp;, WebCore::Node&amp;)
 inline bool InspectorInstrumentation::handleTouchEvent(Page&amp; page, Node&amp; node)
                 ^
../../Source/WebCore/inspector/InspectorInstrumentation.h:746:17: note:   no known conversion for argument 1 from &apos;WebCore::Frame&apos; to &apos;WebCore::Page&amp;&apos;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1058178</commentid>
    <comment_count>5</comment_count>
      <attachid>243822</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-12-30 05:38:05 -0800</bug_when>
    <thetext>Created attachment 243822
Fix EFL/GTK</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1058179</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-12-30 05:39:35 -0800</bug_when>
    <thetext>Attachment 243822 did not pass style-queue:


ERROR: Source/WebCore/inspector/InspectorInstrumentation.cpp:46:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 42 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1058789</commentid>
    <comment_count>7</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2015-01-05 13:30:32 -0800</bug_when>
    <thetext>Committed r177925: &lt;http://trac.webkit.org/changeset/177925&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1058819</commentid>
    <comment_count>8</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2015-01-05 14:51:54 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; Committed r177925: &lt;http://trac.webkit.org/changeset/177925&gt;

It broke the Apple Windows build:
     1&gt;WebKit.exp : error LNK2001: unresolved external symbol &quot;class WebCore::InstrumentingAgents * __cdecl WebCore::instrumentationForPage(class WebCore::Page *)&quot; (?instrumentationForPage@WebCore@@YAPAVInstrumentingAgents@1@PAVPage@1@@Z)
     1&gt;WebKit.exp : error LNK2001: unresolved external symbol &quot;private: static class WebCore::InstrumentingAgents * __cdecl WebCore::InspectorInstrumentation::instrumentingAgentsForPage(class WebCore::Page *)&quot; (?instrumentingAgentsForPage@InspectorInstrumentation@WebCore@@CAPAVInstrumentingAgents@2@PAVPage@2@@Z)
     1&gt;C:\cygwin\home\buildbot\slave\win-release\build\WebKitBuild\Release\bin32\WebKit.dll : fatal error LNK1120: 2 unresolved externals
     1&gt;Done Building Project &quot;C:\cygwin\home\buildbot\slave\win-release\build\Source\WebKit\WebKit.vcxproj\WebKit\WebKit.vcxproj&quot; (Build target(s)) -- FAILED.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1058855</commentid>
    <comment_count>9</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-01-05 16:54:16 -0800</bug_when>
    <thetext>A small build fix for Windows was needed:

http://trac.webkit.org/changeset/177940

Looks like you also found a crufty symbol export we don&apos;t need anymore! :-)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>243787</attachid>
            <date>2014-12-28 15:36:29 -0800</date>
            <delta_ts>2014-12-30 05:38:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-139981-20141228153629.patch</filename>
            <type>text/plain</type>
            <size>309728</size>
            <attacher name="Brian Burg">burg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc3Nzg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDBkMzVkMDk1ZjBiY2Nl
ZmEwZGYyYmMwNGZjMDYzYzVmMWNkMWFhYy4uZTQyMDg2MzgzODJmMWRhNGQ5ZTU0YzU0NTYzMmFm
NTNlZmM3NDhhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyMiBAQAorMjAxNC0xMi0yOCAgQnJp
YW4gSi4gQnVyZyAgPGJ1cmdAY3Mud2FzaGluZ3Rvbi5lZHU+CisKKyAgICAgICAgV2ViIEluc3Bl
Y3RvcjogcGFzcyBwYXJhbWV0ZXJzIHRvIGluc3BlY3RvciBpbnN0cnVtZW50YXRpb24gYnkgcmVm
ZXJlbmNlIHdoZXJlIHBvc3NpYmxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMzk5ODEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBDbGVhbiB1cCBpbnNwZWN0b3IgaW5zdHJ1bWVudGF0aW9uIGVudHJ5IHBv
aW50cyB0aHJvdWdob3V0IFdlYkNvcmUuIEluIHBhcnRpY3VsYXIsIG1ha2UKKyAgICAgICAgcGFy
YW1ldGVycyBwYXNzLWJ5LXJlZmVyZW5jZSBpZiB0aGV5IGFyZSBub3QgbnVsbGFibGUuIEFsc28g
c3RhbmRhcmRpemUgcXVpcmt5IHBhcmFtZXRlcgorICAgICAgICBvcmRlcnMgYW5kIGRvIG90aGVy
IHNtYWxsIGNsZWFudXBzIGluIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbiBhbmQgYXQgY2FsbHNp
dGVzLgorCisgICAgICAgIEluc3BlY3RvciBhZ2VudHMgc3RpbGwgdGFrZSB0aGUgcGVydGluZW50
IHBhcmFtZXRlcnMgYnkgcG9pbnRlciBldmVuIHdoZW4gdGhleSBjb3VsZCBiZQorICAgICAgICBw
YXNzZWQgYnkgcmVmZXJlbmNlLiBUaGlzIHdpbGwgYmUgYWRkcmVzc2VkIGluIGEgZm9sbG93LXVw
IGNoYW5nZS4KKworICAgICAgICBObyBuZXcgdGVzdHMsIG5vIGJlaGF2aW9yIGNoYW5nZWQuCisK
KyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRD
b250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmV2YWx1
YXRlSW5Xb3JsZCk6CisgICAgICAgICogY3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlv
bi5jcHA6CisgICAgICAgICogY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25lKToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVj
dG9yQ2hlY2tlcjo6bWF0Y2hlc0ZvY3VzUHNldWRvQ2xhc3MpOgorICAgICAgICAqIGNzcy9TdHls
ZVJlc29sdmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OnN0eWxlRm9y
RWxlbWVudCk6CisgICAgICAgICogY3Nzaml0L1NlbGVjdG9yQ29tcGlsZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U2VsZWN0b3JDb21waWxlcjo6ZWxlbWVudElzQWN0aXZlKToKKyAgICAgICAg
KFdlYkNvcmU6OlNlbGVjdG9yQ29tcGlsZXI6OmVsZW1lbnRJc0FjdGl2ZUZvclN0eWxlUmVzb2x1
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNvbXBpbGVyOjplbGVtZW50SXNIb3Zl
cmVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yQ29tcGlsZXI6OmVsZW1lbnRJc0hvdmVy
ZWRGb3JTdHlsZVJlc29sdXRpb24pOgorICAgICAgICAqIGRvbS9DaGFyYWN0ZXJEYXRhLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNoYXJhY3RlckRhdGE6OmRpc3BhdGNoTW9kaWZpZWRFdmVudCk6
IFJlbW92ZSB1bm5lY2Vzc2FyeSBFTkFCTEUgZ3VhcmQuCisgICAgICAgICogZG9tL0NvbnRhaW5l
ck5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6aW5zZXJ0QmVmb3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRhaW5lck5vZGU6OnJlcGxhY2VDaGlsZCk6CisgICAg
ICAgIChXZWJDb3JlOjpDb250YWluZXJOb2RlOjpyZW1vdmVCZXR3ZWVuKToKKyAgICAgICAgKFdl
YkNvcmU6OkNvbnRhaW5lck5vZGU6OmFwcGVuZENoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OmRp
c3BhdGNoQ2hpbGRSZW1vdmFsRXZlbnRzKToKKyAgICAgICAgKiBkb20vQ29udGFpbmVyTm9kZUFs
Z29yaXRobXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNoaWxkTm9kZUluc2VydGlvbk5vdGlmaWVy
Ojpub3RpZnkpOiBSZW1vdmUgdW5uZWNlc3NhcnkgRU5BQkxFIGd1YXJkLgorICAgICAgICAqIGRv
bS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2NoZWR1bGVTdHls
ZVJlY2FsYyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cmVjYWxjU3R5bGUpOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmZpbmlzaGVkUGFyc2luZyk6IFRoaXMgaXMgc2FmZSBi
ZWNhdXNlIHdlIGNoZWNrZWQgdGhlIGFyZ3VtZW50LgorICAgICAgICAqIGRvbS9FbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmFkZFNoYWRvd1Jvb3QpOgorICAgICAgICAo
V2ViQ29yZTo6RWxlbWVudDo6cmVtb3ZlU2hhZG93Um9vdCk6IFRoaXMgaXMgc2FmZSBiZWNhdXNl
IHdlIGNoZWNrZWQgdGhlIGFyZ3VtZW50LgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6d2ls
bE1vZGlmeUF0dHJpYnV0ZSk6IFJlbW92ZSB1bm5lY2Vzc2FyeSBFTkFCTEUgZ3VhcmQuCisgICAg
ICAgIChXZWJDb3JlOjpFbGVtZW50OjpkaWRBZGRBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29y
ZTo6RWxlbWVudDo6ZGlkTW9kaWZ5QXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1l
bnQ6OmRpZFJlbW92ZUF0dHJpYnV0ZSk6CisgICAgICAgICogZG9tL0V2ZW50VGFyZ2V0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkV2ZW50VGFyZ2V0OjpmaXJlRXZlbnRMaXN0ZW5lcnMpOiBUaGlz
IGlzIHNhZmUgYmVjYXVzZSB0aGUgdHlwZSB0ZXN0IHdvdWxkIGZhaWwgaWYgbnVsbC4KKyAgICAg
ICAgKiBkb20vTmFtZWRGbG93Q29sbGVjdGlvbi5jcHA6IFBhc3MgYnkgcmVmZXJlbmNlIHNpbmNl
IGNvZGUgYWxyZWFkeSBhc3N1bWVzIG5vbi1udWxsLgorICAgICAgICAoV2ViQ29yZTo6TmFtZWRG
bG93Q29sbGVjdGlvbjo6ZW5zdXJlRmxvd1dpdGhOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6Ok5h
bWVkRmxvd0NvbGxlY3Rpb246OmRpc2NhcmROYW1lZEZsb3cpOgorICAgICAgICAqIGRvbS9Qc2V1
ZG9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBzZXVkb0VsZW1lbnQ6On5Qc2V1ZG9F
bGVtZW50KToKKyAgICAgICAgKiBkb20vU3R5bGVkRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZWRFbGVtZW50OjpzdHlsZUF0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6U3R5bGVkRWxlbWVudDo6aW5saW5lU3R5bGVDaGFuZ2VkKToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9yQ29uc29sZUluc3RydW1lbnRhdGlvbi5oOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjphZGRNZXNzYWdlVG9Db25zb2xlKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Y29uc29sZUNvdW50KToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c3RhcnRDb25zb2xlVGlt
aW5nKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c3RvcENv
bnNvbGVUaW1pbmcpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Ojpjb25zb2xlVGltZVN0YW1wKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6c3RhcnRQcm9maWxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpzdG9wUHJvZmlsaW5nKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9yQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVy
OjpkaWRDbGVhcldpbmRvd09iamVjdEluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yQ29udHJvbGxlcjo6Y29ubmVjdEZyb250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckNvbnRyb2xsZXI6OmRpc2Nvbm5lY3RGcm9udGVuZCk6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvckNvbnRyb2xsZXIuaDogUmVtb3ZlIGluc3RydW1lbnRhdGlvbkZvclBhZ2UoKSBp
biBmYXZvciBvZiB1c2luZyBpbnN0cnVtZW50aW5nQWdlbnRzRm9yUGFnZSgpIGRpcmVjdGx5Lgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUluc3RydW1lbnRhdGlvbi5oOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRPcGVuRGF0YWJh
c2UpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwOiBB
ZGQgbWlzc2luZyBzXyBwcmVmaXggZm9yIGdsb2JhbCBzX2luc3RydW1lbnRpbmdBZ2VudFNldHMu
IFBhc3MgdGhlIGluc3RydW1lbnRpbmcKKyAgICAgICAgYWdlbnQgYnkgcmVmZXJlbmNlIHNpbmNl
IGl0IHdhcyBhbHJlYWR5IG51bGwtY2hlY2tlZCBpZiB3ZSByZWFjaGVkIGEgc2xvdyBwYXRoIGZv
ciBpbnN0cnVtZW50YXRpb24uCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmRpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZEltcGwpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppc0RlYnVnZ2VyUGF1c2VkSW1wbCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxJbnNlcnRET01Ob2Rl
SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZElu
c2VydERPTU5vZGVJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6d2lsbFJlbW92ZURPTU5vZGVJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6ZGlkUmVtb3ZlRE9NTm9kZUltcGwpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsTW9kaWZ5RE9NQXR0ckltcGwpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRNb2RpZnlET01BdHRy
SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJl
bW92ZURPTUF0dHJJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6ZGlkSW52YWxpZGF0ZVN0eWxlQXR0ckltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpmcmFtZVdpbmRvd0Rpc2NhcmRlZEltcGwpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjptZWRpYVF1ZXJ5UmVzdWx0Q2hh
bmdlZEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpk
aWRQdXNoU2hhZG93Um9vdEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjp3aWxsUG9wU2hhZG93Um9vdEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDcmVhdGVOYW1lZEZsb3dJbXBsKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFJlbW92ZU5hbWVkRmxvd0lt
cGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDaGFu
Z2VSZWdpb25PdmVyc2V0SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmRpZFJlZ2lzdGVyTmFtZWRGbG93Q29udGVudEVsZW1lbnRJbXBsKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkVW5yZWdpc3Rlck5hbWVk
Rmxvd0NvbnRlbnRFbGVtZW50SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246Om1vdXNlRGlkTW92ZU92ZXJFbGVtZW50SW1wbCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFNjcm9sbEltcGwpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpoYW5kbGVUb3VjaEV2ZW50SW1wbCk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmhhbmRsZU1vdXNl
UHJlc3NJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
Zm9yY2VQc2V1ZG9TdGF0ZUltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpjaGFyYWN0ZXJEYXRhTW9kaWZpZWRJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFNlbmRYTUxIdHRwUmVxdWVzdEltcGwpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRTY2hlZHVsZVJl
c291cmNlUmVxdWVzdEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpkaWRJbnN0YWxsVGltZXJJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6ZGlkUmVtb3ZlVGltZXJJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbENhbGxGdW5jdGlvbkltcGwpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRGlzcGF0Y2hYSFJSZWFk
eVN0YXRlQ2hhbmdlRXZlbnRJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6d2lsbERpc3BhdGNoRXZlbnRJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEhhbmRsZUV2ZW50SW1wbCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEhhbmRsZUV2ZW50SW1wbCk6IEFk
ZCBwcm9wZXIgY29va2llIGd1YXJkIGFuZCBwYXNzIGJ5IHJlZmVyZW5jZS4KKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbERpc3BhdGNoRXZlbnRPbldpbmRv
d0ltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxs
RXZhbHVhdGVTY3JpcHRJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6ZGlkRXZhbHVhdGVTY3JpcHRJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6c2NyaXB0c0VuYWJsZWRJbXBsKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ3JlYXRlSXNvbGF0ZWRDb250ZXh0SW1w
bCk6IFJlbW92ZWQsIGFzIHRoZXJlIGFyZSBubyBjYWxsZXJzIGZyb20gV2ViQ29yZS4gUG9zc2li
bGUgVjggYXJ0aWZhY3QuCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OndpbGxGaXJlVGltZXJJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZGlkRmlyZVRpbWVySW1wbCk6IEFkZCBwcm9wZXIgY29va2llIGd1YXJkIGFu
ZCBwYXNzIGJ5IHJlZmVyZW5jZS4KKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6ZGlkSW52YWxpZGF0ZUxheW91dEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsTGF5b3V0SW1wbCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxEaXNwYXRjaFhIUkxvYWRFdmVudEltcGwp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUGFpbnRJ
bXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUGFp
bnRJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2ls
bFNjcm9sbExheWVySW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmRpZFNjcm9sbExheWVySW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OndpbGxSZWNhbGN1bGF0ZVN0eWxlSW1wbCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2FsY3VsYXRlU3R5bGVJbXBsKTog
QWRkIHByb3BlciBjb29raWUgZ3VhcmQgYW5kIHBhc3MgYnkgcmVmZXJlbmNlLgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRTY2hlZHVsZVN0eWxlUmVjYWxj
dWxhdGlvbkltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjphcHBseUVtdWxhdGVkTWVkaWFJbXBsKTogUGFzcyBzdHJpbmcgYnkgcmVmZXJlbmNlLgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsU2VuZFJlcXVlc3RJ
bXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Y29udGlu
dWVBZnRlclBpbmdMb2FkZXJJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6bWFya1Jlc291cmNlQXNDYWNoZWRJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkTG9hZFJlc291cmNlRnJvbU1lbW9yeUNhY2hl
SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxS
ZWNlaXZlUmVzb3VyY2VEYXRhSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OndpbGxSZWNlaXZlUmVzb3VyY2VSZXNwb25zZUltcGwpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlUmVzb3VyY2VSZXNw
b25zZUltcGwpOiBBZGQgcHJvcGVyIGNvb2tpZSBndWFyZCBhbmQgcGFzcyBieSByZWZlcmVuY2Uu
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVS
ZXNvdXJjZVJlc3BvbnNlQnV0Q2FuY2VsZWRJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6Y29udGludWVBZnRlclhGcmFtZU9wdGlvbnNEZW5pZWRJbXBs
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Y29udGludWVX
aXRoUG9saWN5RG93bmxvYWRJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6Y29udGludWVXaXRoUG9saWN5SWdub3JlSW1wbCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVEYXRhSW1wbCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZpbmlzaExvYWRpbmdJ
bXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmFp
bExvYWRpbmdJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6ZG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyU3RhcnRlZExvYWRpbmdGb3JDbGllbnRJbXBsKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbExvYWRYSFJJ
bXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmFp
bFhIUkxvYWRpbmdJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6ZGlkRmluaXNoWEhSTG9hZGluZ0ltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlWEhSUmVzcG9uc2VJbXBsKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbExvYWRYSFJTeW5jaHJvbm91
c2x5SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRp
ZExvYWRYSFJTeW5jaHJvbm91c2x5SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OnNjcmlwdEltcG9ydGVkSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNjcmlwdEV4ZWN1dGlvbkJsb2NrZWRCeUNTUEltcGwp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZl
U2NyaXB0UmVzcG9uc2VJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6ZG9tQ29udGVudExvYWRlZEV2ZW50RmlyZWRJbXBsKTogVXNlIEZyYW1lOjppc01h
aW5GcmFtZSgpLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjps
b2FkRXZlbnRGaXJlZEltcGwpOiBVc2UgRnJhbWU6OmlzTWFpbkZyYW1lKCkuCisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmZyYW1lRGV0YWNoZWRGcm9tUGFyZW50
SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENv
bW1pdExvYWRJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6ZnJhbWVEb2N1bWVudFVwZGF0ZWRJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6bG9hZGVyRGV0YWNoZWRGcm9tRnJhbWVJbXBsKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFJ1bkphdmFTY3JpcHREaWFs
b2dJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2ls
bERlc3Ryb3lDYWNoZWRSZXNvdXJjZUltcGwpOiBVc2UgYSByYW5nZS1iYXNlZCBpdGVyYXRvci4K
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFdyaXRlSFRN
TEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjphZGRN
ZXNzYWdlVG9Db25zb2xlSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmNvbnNvbGVDb3VudEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpzdGFydENvbnNvbGVUaW1pbmdJbXBsKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c3RvcENvbnNvbGVUaW1pbmdJbXBsKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Y29uc29sZVRpbWVTdGFt
cEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzdGFy
dFByb2ZpbGluZ0ltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpzdG9wUHJvZmlsaW5nSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmRpZE9wZW5EYXRhYmFzZUltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWREaXNwYXRjaERPTVN0b3JhZ2VFdmVudEltcGwpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzaG91bGRQYXVzZURl
ZGljYXRlZFdvcmtlck9uU3RhcnRJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6ZGlkU3RhcnRXb3JrZXJHbG9iYWxTY29wZUltcGwpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRXZhbHVhdGVXb3JrZXJTY3Jp
cHQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3b3JrZXJH
bG9iYWxTY29wZVRlcm1pbmF0ZWRJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6ZGlkQ3JlYXRlV2ViU29ja2V0SW1wbCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxTZW5kV2ViU29ja2V0SGFuZHNoYWtlUmVx
dWVzdEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpk
aWRSZWNlaXZlV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2VJbXBsKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ2xvc2VXZWJTb2NrZXRJbXBsKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZVdlYlNv
Y2tldEZyYW1lSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmRpZFJlY2VpdmVXZWJTb2NrZXRGcmFtZUVycm9ySW1wbCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFNlbmRXZWJTb2NrZXRGcmFtZUltcGwpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzZXNzaW9uQ3JlYXRl
ZEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzZXNz
aW9uTG9hZGVkSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OnNlc3Npb25Nb2RpZmllZEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpzZWdtZW50Q3JlYXRlZEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzZWdtZW50Q29tcGxldGVkSW1wbCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNlZ21lbnRMb2FkZWRJbXBsKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c2VnbWVudFVubG9hZGVk
SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNhcHR1
cmVTdGFydGVkSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmNhcHR1cmVTdG9wcGVkSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OnBsYXliYWNrU3RhcnRlZEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpwbGF5YmFja1BhdXNlZEltcGwpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpwbGF5YmFja0hpdFBvc2l0aW9uSW1wbCk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnBsYXliYWNrRmlu
aXNoZWRJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
bmV0d29ya1N0YXRlQ2hhbmdlZEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjp1cGRhdGVBcHBsaWNhdGlvbkNhY2hlU3RhdHVzSW1wbCk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnBhdXNlT25OYXRpdmVFdmVudElm
TmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Y2Fu
Y2VsUGF1c2VPbk5hdGl2ZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZGlkUmVxdWVzdEFuaW1hdGlvbkZyYW1lSW1wbCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENhbmNlbEFuaW1hdGlvbkZyYW1lSW1w
bCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxGaXJl
QW5pbWF0aW9uRnJhbWVJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6cmVnaXN0ZXJJbnN0cnVtZW50aW5nQWdlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6dW5yZWdpc3Rlckluc3RydW1lbnRpbmdBZ2VudHMp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpyZXRyaWV2ZVRp
bWVsaW5lQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjppbnN0cnVtZW50aW5nQWdlbnRzRm9yUGFnZSk6IEFkZCBieS1yZWZlcmVuY2UgdmVyc2lvbiB3
aGljaCBjb250YWlucyB0aGUgbG9naWMgZnJvbSBpbnN0cnVtZW50YXRpb25Gb3JQYWdlKCkuCisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Omluc3RydW1lbnRpbmdB
Z2VudHNGb3JSZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246Omluc3RydW1lbnRpbmdBZ2VudHNGb3JXb3JrZXJHbG9iYWxTY29wZSk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Omluc3RydW1lbnRpbmdBZ2VudHNG
b3JOb25Eb2N1bWVudENvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpsYXllclRyZWVEaWRDaGFuZ2VJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6cmVuZGVyTGF5ZXJEZXN0cm95ZWRJbXBsKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6cHNldWRvRWxlbWVudERlc3Ry
b3llZEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpk
aWRDcmVhdGVJc29sYXRlZENvbnRleHRJbXBsKTogRGVsZXRlZC4KKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OmRpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZCk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmlzRGVidWdnZXJQYXVzZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsSW5zZXJ0RE9N
Tm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZElu
c2VydERPTU5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Ojp3aWxsUmVtb3ZlRE9NTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmRpZFJlbW92ZURPTU5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjp3aWxsTW9kaWZ5RE9NQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZE1vZGlmeURPTUF0dHIpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZW1vdmVET01BdHRyKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkSW52YWxpZGF0ZVN0eWxl
QXR0cik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmZyYW1l
V2luZG93RGlzY2FyZGVkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6bWVkaWFRdWVyeVJlc3VsdENoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRQdXNoU2hhZG93Um9vdCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxQb3BTaGFkb3dSb290KToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ3JlYXRlTmFtZWRGbG93KToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFJlbW92ZU5h
bWVkRmxvdyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRp
ZENoYW5nZVJlZ2lvbk92ZXJzZXQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpkaWRSZWdpc3Rlck5hbWVkRmxvd0NvbnRlbnRFbGVtZW50KToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkVW5yZWdpc3Rlck5hbWVkRmxv
d0NvbnRlbnRFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6bW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpoYW5kbGVUb3VjaEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aGFuZGxlTW91c2VQcmVzcyk6IFRha2UgRnJhbWUg
YnkgcmVmZXJlbmNlIGluc3RlYWQgb2YgUGFnZSBieSBwb2ludGVyLgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpmb3JjZVBzZXVkb1N0YXRlKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Y2hhcmFjdGVyRGF0YU1vZGlmaWVk
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFNlbmRY
TUxIdHRwUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmRpZFNjaGVkdWxlUmVzb3VyY2VSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkSW5zdGFsbFRpbWVyKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVtb3ZlVGltZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsQ2FsbEZ1bmN0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbERpc3BhdGNoWEhSUmVh
ZHlTdGF0ZUNoYW5nZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6d2lsbERpc3BhdGNoRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjp3aWxsSGFuZGxlRXZlbnQpOiBQYXNzIGEgY29uc3QgZXZlbnQgcmVm
ZXJlbmNlLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxs
RGlzcGF0Y2hFdmVudE9uV2luZG93KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6d2lsbEV2YWx1YXRlU2NyaXB0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRXZhbHVhdGVTY3JpcHQpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzY3JpcHRzRW5hYmxlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxGaXJlVGltZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRJbnZhbGlkYXRlTGF5b3V0
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbExheW91
dCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFNjcm9s
bCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxEaXNw
YXRjaFhIUkxvYWRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OndpbGxQYWludCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmRpZFBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6d2lsbFNjcm9sbExheWVyKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZGlkU2Nyb2xsTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjp3aWxsUmVjYWxjdWxhdGVTdHlsZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFNjaGVkdWxlU3R5bGVSZWNhbGN1bGF0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6YXBwbHlFbXVs
YXRlZE1lZGlhKTogUGFzcyBzdHJpbmcgYnkgcmVmZXJlbmNlLgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjb250aW51ZUFmdGVyUGluZ0xvYWRlcik6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Om1hcmtSZXNvdXJj
ZUFzQ2FjaGVkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
ZGlkTG9hZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFJlY2VpdmVSZXNvdXJjZURhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUmVjZWl2ZVJlc291cmNlUmVz
cG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjb250
aW51ZUFmdGVyWEZyYW1lT3B0aW9uc0RlbmllZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OmNvbnRpbnVlV2l0aFBvbGljeURvd25sb2FkKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Y29udGludWVXaXRoUG9saWN5SWdu
b3JlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVj
ZWl2ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpk
aWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6ZGlkRmFpbExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpkb2N1bWVudFRocmVhZGFibGVMb2FkZXJTdGFydGVkTG9hZGluZ0ZvckNsaWVu
dCk6IE5vIG5lZWQgdG8gZ28gdGhyb3VnaAorICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0
IGludGVyZmFjZSwgYXMgaXQncyBhbHdheXMgYSBEb2N1bWVudC4KKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbExvYWRYSFIpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGYWlsWEhSTG9hZGluZyk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZpbmlzaFhIUkxvYWRpbmcp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZl
WEhSUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Ojp3aWxsTG9hZFhIUlN5bmNocm9ub3VzbHkpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpkaWRMb2FkWEhSU3luY2hyb25vdXNseSk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNjcmlwdEltcG9ydGVkKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c2NyaXB0RXhlY3V0aW9uQmxvY2tl
ZEJ5Q1NQKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlk
UmVjZWl2ZVNjcmlwdFJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZG9tQ29udGVudExvYWRlZEV2ZW50RmlyZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpsb2FkRXZlbnRGaXJlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmZyYW1lRGV0YWNoZWRGcm9tUGFyZW50
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ29tbWl0
TG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmZyYW1l
RG9jdW1lbnRVcGRhdGVkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6bG9hZGVyRGV0YWNoZWRGcm9tRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUnVuSmF2YVNjcmlwdERpYWxvZyk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxEZXN0cm95Q2FjaGVkUmVzb3Vy
Y2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsV3Jp
dGVIVE1MKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlk
RGlzcGF0Y2hET01TdG9yYWdlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpzaG91bGRQYXVzZURlZGljYXRlZFdvcmtlck9uU3RhcnQpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRTdGFydFdvcmtlckdsb2Jh
bFNjb3BlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d29y
a2VyR2xvYmFsU2NvcGVUZXJtaW5hdGVkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6ZGlkQ3JlYXRlV2ViU29ja2V0KToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFNlbmRXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2
ZVdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6ZGlkQ2xvc2VXZWJTb2NrZXQpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlV2ViU29ja2V0RnJhbWUpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlV2ViU29j
a2V0RnJhbWVFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmRpZFNlbmRXZWJTb2NrZXRGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OnNlc3Npb25DcmVhdGVkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6c2Vzc2lvbkxvYWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNlc3Npb25Nb2RpZmllZCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNlZ21lbnRDcmVhdGVkKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c2VnbWVudENvbXBsZXRlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNlZ21lbnRMb2FkZWQp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzZWdtZW50VW5s
b2FkZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjYXB0
dXJlU3RhcnRlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmNhcHR1cmVTdG9wcGVkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6cGxheWJhY2tTdGFydGVkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6cGxheWJhY2tQYXVzZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpwbGF5YmFja0ZpbmlzaGVkKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6cGxheWJhY2tIaXRQb3NpdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Om5ldHdvcmtTdGF0ZUNoYW5nZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp1cGRhdGVBcHBsaWNh
dGlvbkNhY2hlU3RhdHVzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6ZGlkUmVxdWVzdEFuaW1hdGlvbkZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ2FuY2VsQW5pbWF0aW9uRnJhbWUpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRmlyZUFuaW1hdGlvbkZyYW1l
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6bGF5ZXJUcmVl
RGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
cmVuZGVyTGF5ZXJEZXN0cm95ZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpwc2V1ZG9FbGVtZW50RGVzdHJveWVkKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW5zdHJ1bWVudGluZ0FnZW50c0ZvckZyYW1lKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW5zdHJ1bWVudGluZ0Fn
ZW50c0ZvckRvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6ZGlkQ3JlYXRlSXNvbGF0ZWRDb250ZXh0KTogRGVsZXRlZC4KKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llLmNwcDogVGFrZSBhIHJlZmVyZW5j
ZSwgdXNlIGRlZmF1bHQgUmVmUHRyIGNvbnN0cnVjdG9yLgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29r
aWUpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUu
aDogRml4IG1pc3BsYWNlZCBFTkFCTEUgZ3VhcmQuCisgICAgICAgICogaW5zcGVjdG9yL0luc3Ry
dW1lbnRpbmdBZ2VudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aW5zdHJ1bWVudGF0aW9uRm9y
UGFnZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjppbnN0cnVtZW50YXRpb25Gb3JXb3Jr
ZXJHbG9iYWxTY29wZSk6IERlbGV0ZWQuCisgICAgICAgICogaW5zcGVjdG9yL0luc3RydW1lbnRp
bmdBZ2VudHMuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJvbGxl
ci5oOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudExvYWRlcjo6cmVzcG9uc2VSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudExvYWRlcjo6Y29udGludWVBZnRlckNvbnRlbnRQb2xpY3kpOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmRldGFjaEZyb21GcmFtZSk6CisgICAgICAgICogbG9h
ZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHA6IFJlbW92ZSB1bm5lY2Vzc2FyeSBFTkFC
TEUoSU5TUEVDVE9SKSBndWFyZHMsIGFzIHRoZXNlIGlubGluZWQgY2FsbHMKKyAgICAgICAgYXJl
IGJvaWxlZCBhd2F5IGJ5IHRoZSBjb21waWxlciBpZiAhRU5BQkxFKElOU1BFQ1RPUikuCisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKToK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6ZGlkRmluaXNoTG9h
ZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmRpZEZh
aWwpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpwcmVmbGln
aHRGYWlsdXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6
bG9hZFJlcXVlc3QpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6ZGV0YWNoRnJvbVBhcmVudCk6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZUxvYWRlcjo6bG9hZGVkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUpOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmRpc3BhdGNoRGlkQ2xlYXJXaW5kb3dPYmplY3RJbldv
cmxkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpkaXNwYXRjaERpZENvbW1pdExv
YWQpOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpub3RpZnlEaWRTY2hlZHVsZVJlc291
cmNlUmVxdWVzdCk6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QpOiBSZW1vdmUgdW5u
ZWNlc3NhcnkgRU5BQkxFIGd1YXJkLgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlR3JvdXAuY3BwOiBSZW1vdmUgc2V2ZXJhbCB1bm5lY2Vzc2FyeSBFTkFCTEUgZ3Vh
cmRzLgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRSZWNlaXZl
UmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRS
ZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRp
ZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUdyb3Vw
OjpkaWRGYWlsKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OmRlbGV0ZUlmUG9zc2libGUpOgorICAg
ICAgICAqIHBhZ2UvQ2hyb21lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZTo6c2Nyb2xs
KToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZTo6cnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVs
KToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZTo6cnVuSmF2YVNjcmlwdEFsZXJ0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNocm9tZTo6cnVuSmF2YVNjcmlwdENvbmZpcm0pOgorICAgICAgICAoV2Vi
Q29yZTo6Q2hyb21lOjpydW5KYXZhU2NyaXB0UHJvbXB0KToKKyAgICAgICAgKFdlYkNvcmU6OkNo
cm9tZTo6bW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQpOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6ZGlzcGF0Y2hMb2FkRXZlbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93OjpkaXNwYXRjaEV2ZW50KToKKyAgICAgICAgKiBw
YWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6Omhh
bmRsZU1vdXNlUHJlc3NFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6Omhh
bmRsZVRvdWNoRXZlbnQpOiBBZGQgYSBndWFyZCB0byBtYWtlIGl0IHNhZmUgdG8gcGFzcyBldmVu
dCB0YXJnZXQgYnktcmVmZXJlbmNlLgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6bGF5b3V0KToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lVmlldzo6bWVkaWFUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6c2NoZWR1
bGVSZWxheW91dCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnNjaGVkdWxlUmVsYXlv
dXRPZlN1YnRyZWUpOgorICAgICAgICAqIHBhZ2UvUGFnZUNvbnNvbGVDbGllbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UGFnZUNvbnNvbGVDbGllbnQ6OmFkZE1lc3NhZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6UGFnZUNvbnNvbGVDbGllbnQ6Om1lc3NhZ2VXaXRoVHlwZUFuZExldmVsKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBhZ2VDb25zb2xlQ2xpZW50Ojpjb3VudCk6CisgICAgICAgIChXZWJD
b3JlOjpQYWdlQ29uc29sZUNsaWVudDo6cHJvZmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdl
Q29uc29sZUNsaWVudDo6cHJvZmlsZUVuZCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlQ29uc29s
ZUNsaWVudDo6dGltZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlQ29uc29sZUNsaWVudDo6dGlt
ZUVuZCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlQ29uc29sZUNsaWVudDo6dGltZVN0YW1wKToK
KyAgICAgICAgKiBwYWdlL1NldHRpbmdzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdz
OjpzZXRTY3JpcHRFbmFibGVkKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnNjcm9sbFRvKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckxheWVyQ29tcG9zaXRvcjo6bGF5ZXJCZWNhbWVOb25Db21wb3NpdGVkKToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93VGhyZWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlck5hbWVkRmxvd1RocmVhZDo6cmVnaXN0ZXJOYW1lZEZsb3dDb250ZW50RWxlbWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6OnVucmVnaXN0ZXJOYW1l
ZEZsb3dDb250ZW50RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJOYW1lZEZsb3dU
aHJlYWQ6OmRpc3BhdGNoUmVnaW9uT3ZlcnNldENoYW5nZUV2ZW50SWZOZWVkZWQpOgorICAgICAg
ICAqIHJlcGxheS9SZXBsYXlDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlcGxh
eUNvbnRyb2xsZXI6OnN3aXRjaFNlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVwbGF5Q29u
dHJvbGxlcjo6Y3JlYXRlU2VnbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpSZXBsYXlDb250cm9s
bGVyOjpjb21wbGV0ZVNlZ21lbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVwbGF5Q29udHJvbGxl
cjo6bG9hZFNlZ21lbnRBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OlJlcGxheUNvbnRyb2xs
ZXI6OnVubG9hZFNlZ21lbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVwbGF5Q29udHJvbGxlcjo6
c3RhcnRDYXB0dXJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UmVwbGF5Q29udHJvbGxlcjo6c3Rv
cENhcHR1cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpSZXBsYXlDb250cm9sbGVyOjpzdGFydFBs
YXliYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlJlcGxheUNvbnRyb2xsZXI6OnBhdXNlUGxheWJh
Y2spOgorICAgICAgICAoV2ViQ29yZTo6UmVwbGF5Q29udHJvbGxlcjo6Y2FuY2VsUGxheWJhY2sp
OgorICAgICAgICAoV2ViQ29yZTo6UmVwbGF5Q29udHJvbGxlcjo6d2lsbERpc3BhdGNoSW5wdXQp
OgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
dGVybmFsczo6Y29uc29sZU1lc3NhZ2VBcmd1bWVudENvdW50cyk6CisgICAgICAgICogeG1sL1hN
TEh0dHBSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpjYWxs
UmVhZHlTdGF0ZUNoYW5nZUxpc3RlbmVyKToKKwogMjAxNC0xMi0yOCAgRGFuIEJlcm5zdGVpbiAg
PG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAgIGlPUyBidWlsZCBmaXguCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhw
LmluCmluZGV4IGM1MjllNzFkMTE3ZjQ3Mjg2NmE4NjI1NzQ0NDAwNDZmOGQxMDBlYTEuLjNjYjM1
NmE2Mjc1MmYxN2NlNWE4MWVhNmRlMDVlNzllNDQxMTZjNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmlu
CkBAIC0zMjAyLDcgKzMyMDIsNiBAQCBfX1pON1dlYkNvcmUxOUluc3BlY3RvckNvbnRyb2xsZXI1
Y2xvc2VFdgogX19aTjdXZWJDb3JlMjFJbnNwZWN0b3JGcm9udGVuZEhvc3QxNmRpc2Nvbm5lY3RD
bGllbnRFdgogX19aTjdXZWJDb3JlMjFJbnNwZWN0b3JGcm9udGVuZEhvc3RDMUVQTlNfMjNJbnNw
ZWN0b3JGcm9udGVuZENsaWVudEVQTlNfNFBhZ2VFCiBfX1pON1dlYkNvcmUyMUluc3BlY3RvckZy
b250ZW5kSG9zdEQxRXYKLV9fWk43V2ViQ29yZTIyaW5zdHJ1bWVudGF0aW9uRm9yUGFnZUVQTlNf
NFBhZ2VFCiBfX1pON1dlYkNvcmUyNEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjE3c19mcm9udGVu
ZENvdW50ZXJFCiBfX1pON1dlYkNvcmUyNEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjI2aW5zdHJ1
bWVudGluZ0FnZW50c0ZvclBhZ2VFUE5TXzRQYWdlRQogX19aTjdXZWJDb3JlMjhJbnNwZWN0b3JG
cm9udGVuZENsaWVudExvY2FsMTFpc1VuZGVyVGVzdEV2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IDcwMjE0NGM2NjQ0MTZhYWY4Yjhm
YWRjNjI1Yzc1MTE4ODM3MmYyNjMuLjA0NzQzMzZlYTMyM2RmYmQxZDdlZDRjZDBlNjVmMTk3ODY0
ZmM0Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRy
b2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xs
ZXIuY3BwCkBAIC0xNDQsMTMgKzE0NCwxMyBAQCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBTY3Jp
cHRDb250cm9sbGVyOjpldmFsdWF0ZUluV29ybGQoY29uc3QgU2NyaXB0U291cmNlQ29kZQogCiAg
ICAgUmVmPEZyYW1lPiBwcm90ZWN0KG1fZnJhbWUpOwogCi0gICAgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uQ29va2llIGNvb2tpZSA9IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEV2YWx1
YXRlU2NyaXB0KCZtX2ZyYW1lLCBzb3VyY2VVUkwsIHNvdXJjZUNvZGUuc3RhcnRMaW5lKCkpOwor
ICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWUgPSBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OndpbGxFdmFsdWF0ZVNjcmlwdChtX2ZyYW1lLCBzb3VyY2VVUkwsIHNvdXJj
ZUNvZGUuc3RhcnRMaW5lKCkpOwogCiAgICAgSlNWYWx1ZSBldmFsdWF0aW9uRXhjZXB0aW9uOwog
CiAgICAgSlNWYWx1ZSByZXR1cm5WYWx1ZSA9IEpTTWFpblRocmVhZEV4ZWNTdGF0ZTo6ZXZhbHVh
dGUoZXhlYywganNTb3VyY2VDb2RlLCBzaGVsbCwgJmV2YWx1YXRpb25FeGNlcHRpb24pOwogCi0g
ICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRFdmFsdWF0ZVNjcmlwdChjb29raWUsICZt
X2ZyYW1lKTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEV2YWx1YXRlU2NyaXB0
KGNvb2tpZSwgbV9mcmFtZSk7CiAKICAgICBpZiAoZXZhbHVhdGlvbkV4Y2VwdGlvbikgewogICAg
ICAgICByZXBvcnRFeGNlcHRpb24oZXhlYywgZXZhbHVhdGlvbkV4Y2VwdGlvbiwgc291cmNlQ29k
ZS5jYWNoZWRTY3JpcHQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvUHJvcGVy
dHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0
eVNldENTU1N0eWxlRGVjbGFyYXRpb24uY3BwCmluZGV4IDU3MWQ4NDQ3MTk0NzA5OGVlNDYzMjkw
MDliNjZhNDZkZjk2YTcwODYuLmM3Mjg1MWYwMDBhMmI1Y2I5MTlkZGVjMmUyMTZmODQ0OWI2Yjk5
MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVj
bGFyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNldENTU1N0eWxl
RGVjbGFyYXRpb24uY3BwCkBAIC04OCw3ICs4OCw3IEBAIHB1YmxpYzoKICAgICAgICAgc19jdXJy
ZW50RGVjbCA9IDA7CiAgICAgICAgIHNfc2hvdWxkTm90aWZ5SW5zcGVjdG9yID0gZmFsc2U7CiAg
ICAgICAgIGlmIChsb2NhbENvcHlTdHlsZURlY2wtPnBhcmVudEVsZW1lbnQoKSkKLSAgICAgICAg
ICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkSW52YWxpZGF0ZVN0eWxlQXR0cigmbG9j
YWxDb3B5U3R5bGVEZWNsLT5wYXJlbnRFbGVtZW50KCktPmRvY3VtZW50KCksIGxvY2FsQ29weVN0
eWxlRGVjbC0+cGFyZW50RWxlbWVudCgpKTsKKyAgICAgICAgICAgIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6ZGlkSW52YWxpZGF0ZVN0eWxlQXR0cihsb2NhbENvcHlTdHlsZURlY2wtPnBhcmVu
dEVsZW1lbnQoKS0+ZG9jdW1lbnQoKSwgKmxvY2FsQ29weVN0eWxlRGVjbC0+cGFyZW50RWxlbWVu
dCgpKTsKICAgICB9CiAKICAgICB2b2lkIGVucXVldWVNdXRhdGlvblJlY29yZCgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwCmluZGV4IDA4ZTUxZDg4OWMxZTkzZWU3NjI3NWVi
ZWFmMjkwZDMyMDVhNDU5OGMuLjQ4NDdlODViNjdhNjUwZGZjZGQzYTFkYmU4NDgxZDQ5MDFlNzU4
YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwCkBAIC04ODgsNyArODg4
LDcgQEAgYm9vbCBTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25lKGNvbnN0IENoZWNraW5nQ29udGV4
dFdpdGhTdGF0dXMmIGNvbnRleHQsIFBzZXVkb0kKICAgICAgICAgICAgICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudC0+c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5SG92
ZXIoKTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQtPmhv
dmVyZWQoKSB8fCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmZvcmNlUHNldWRvU3RhdGUoZWxl
bWVudCwgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzSG92ZXIpKQorICAgICAgICAgICAgICAgIGlm
IChlbGVtZW50LT5ob3ZlcmVkKCkgfHwgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpmb3JjZVBz
ZXVkb1N0YXRlKCplbGVtZW50LCBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NIb3ZlcikpCiAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAg
YnJlYWs7CkBAIC05MDAsNyArOTAwLDcgQEAgYm9vbCBTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25l
KGNvbnN0IENoZWNraW5nQ29udGV4dFdpdGhTdGF0dXMmIGNvbnRleHQsIFBzZXVkb0kKICAgICAg
ICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudC0+c2V0
Q2hpbGRyZW5BZmZlY3RlZEJ5QWN0aXZlKCk7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgIGlmIChlbGVtZW50LT5hY3RpdmUoKSB8fCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmZvcmNlUHNldWRvU3RhdGUoZWxlbWVudCwgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzQWN0aXZl
KSkKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudC0+YWN0aXZlKCkgfHwgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpmb3JjZVBzZXVkb1N0YXRlKCplbGVtZW50LCBDU1NTZWxlY3Rvcjo6UHNl
dWRvQ2xhc3NBY3RpdmUpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTEyNyw3ICsxMTI3LDcgQEAgc3RhdGlj
IGJvb2wgaXNGcmFtZUZvY3VzZWQoY29uc3QgRWxlbWVudCogZWxlbWVudCkKIAogYm9vbCBTZWxl
Y3RvckNoZWNrZXI6Om1hdGNoZXNGb2N1c1BzZXVkb0NsYXNzKGNvbnN0IEVsZW1lbnQqIGVsZW1l
bnQpCiB7Ci0gICAgaWYgKEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Zm9yY2VQc2V1ZG9TdGF0
ZShjb25zdF9jYXN0PEVsZW1lbnQqPihlbGVtZW50KSwgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNz
Rm9jdXMpKQorICAgIGlmIChJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmZvcmNlUHNldWRvU3Rh
dGUoY29uc3RfY2FzdDxFbGVtZW50Jj4oKmVsZW1lbnQpLCBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xh
c3NGb2N1cykpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIHJldHVybiBlbGVtZW50LT5mb2N1
c2VkKCkgJiYgaXNGcmFtZUZvY3VzZWQoZWxlbWVudCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVS
ZXNvbHZlci5jcHAKaW5kZXggZTRhODRlNzVjNzFkMTE5ZThiOGQ4NWNiZDU4OWQ1NmQ2NjE3OGUy
OS4uNWExMjg3Mjg0NmUwNjZkODMwYzM5MDJiMzIyY2MwNGJlNzQ3NGRkNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9TdHlsZVJlc29sdmVyLmNwcApAQCAtNzc2LDcgKzc3Niw3IEBAIFJlZjxSZW5kZXJTdHls
ZT4gU3R5bGVSZXNvbHZlcjo6c3R5bGVGb3JFbGVtZW50KEVsZW1lbnQqIGVsZW1lbnQsIFJlbmRl
clN0eWxlKiBkCiAgICAgICAgIHN0YXRlLnN0eWxlKCktPnNldElzTGluayh0cnVlKTsKICAgICAg
ICAgRUluc2lkZUxpbmsgbGlua1N0YXRlID0gc3RhdGUuZWxlbWVudExpbmtTdGF0ZSgpOwogICAg
ICAgICBpZiAobGlua1N0YXRlICE9IE5vdEluc2lkZUxpbmspIHsKLSAgICAgICAgICAgIGJvb2wg
Zm9yY2VWaXNpdGVkID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpmb3JjZVBzZXVkb1N0YXRl
KGVsZW1lbnQsIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc1Zpc2l0ZWQpOworICAgICAgICAgICAg
Ym9vbCBmb3JjZVZpc2l0ZWQgPSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmZvcmNlUHNldWRv
U3RhdGUoKmVsZW1lbnQsIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc1Zpc2l0ZWQpOwogICAgICAg
ICAgICAgaWYgKGZvcmNlVmlzaXRlZCkKICAgICAgICAgICAgICAgICBsaW5rU3RhdGUgPSBJbnNp
ZGVWaXNpdGVkTGluazsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
aml0L1NlbGVjdG9yQ29tcGlsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3Nzaml0L1NlbGVjdG9y
Q29tcGlsZXIuY3BwCmluZGV4IDI0ZjU1Y2Q1ODczNTk0ZGQ4ZTRhOWQ3YTQ2ODhhNWZiNmFhNGJm
ZjYuLjg5MTBkMDJkOWU2M2RlNzFkOTk3ODY5Mzg3YmUxNTc4NzM3ZDEzMmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzc2ppdC9TZWxlY3RvckNvbXBpbGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3NqaXQvU2VsZWN0b3JDb21waWxlci5jcHAKQEAgLTI5MjEsMTQgKzI5MjEsMTQg
QEAgc3RhdGljIHZvaWQgc2V0Rmlyc3RDaGlsZFN0YXRlKEVsZW1lbnQqIGVsZW1lbnQpCiAKIHN0
YXRpYyBib29sIGVsZW1lbnRJc0FjdGl2ZShFbGVtZW50KiBlbGVtZW50KQogewotICAgIHJldHVy
biBlbGVtZW50LT5hY3RpdmUoKSB8fCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmZvcmNlUHNl
dWRvU3RhdGUoZWxlbWVudCwgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzQWN0aXZlKTsKKyAgICBy
ZXR1cm4gZWxlbWVudC0+YWN0aXZlKCkgfHwgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpmb3Jj
ZVBzZXVkb1N0YXRlKCplbGVtZW50LCBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NBY3RpdmUpOwog
fQogCiBzdGF0aWMgYm9vbCBlbGVtZW50SXNBY3RpdmVGb3JTdHlsZVJlc29sdXRpb24oRWxlbWVu
dCogZWxlbWVudCwgY29uc3QgU2VsZWN0b3JDaGVja2VyOjpDaGVja2luZ0NvbnRleHQqIGNoZWNr
aW5nQ29udGV4dCkKIHsKICAgICBpZiAoY2hlY2tpbmdDb250ZXh0LT5yZXNvbHZpbmdNb2RlID09
IFNlbGVjdG9yQ2hlY2tlcjo6TW9kZTo6UmVzb2x2aW5nU3R5bGUpCiAgICAgICAgIGVsZW1lbnQt
PnNldENoaWxkcmVuQWZmZWN0ZWRCeUFjdGl2ZSgpOwotICAgIHJldHVybiBlbGVtZW50LT5hY3Rp
dmUoKSB8fCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmZvcmNlUHNldWRvU3RhdGUoZWxlbWVu
dCwgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzQWN0aXZlKTsKKyAgICByZXR1cm4gZWxlbWVudC0+
YWN0aXZlKCkgfHwgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpmb3JjZVBzZXVkb1N0YXRlKCpl
bGVtZW50LCBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NBY3RpdmUpOwogfQogCiB2b2lkIFNlbGVj
dG9yQ29kZUdlbmVyYXRvcjo6Z2VuZXJhdGVFbGVtZW50SXNBY3RpdmUoQXNzZW1ibGVyOjpKdW1w
TGlzdCYgZmFpbHVyZUNhc2VzLCBjb25zdCBTZWxlY3RvckZyYWdtZW50JiBmcmFnbWVudCkKQEAg
LTMxMDAsMTQgKzMxMDAsMTQgQEAgdm9pZCBTZWxlY3RvckNvZGVHZW5lcmF0b3I6OmdlbmVyYXRl
RWxlbWVudElzRmlyc3RDaGlsZChBc3NlbWJsZXI6Okp1bXBMaXN0JiBmYWkKIAogc3RhdGljIGJv
b2wgZWxlbWVudElzSG92ZXJlZChFbGVtZW50KiBlbGVtZW50KQogewotICAgIHJldHVybiBlbGVt
ZW50LT5ob3ZlcmVkKCkgfHwgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpmb3JjZVBzZXVkb1N0
YXRlKGVsZW1lbnQsIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0hvdmVyKTsKKyAgICByZXR1cm4g
ZWxlbWVudC0+aG92ZXJlZCgpIHx8IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Zm9yY2VQc2V1
ZG9TdGF0ZSgqZWxlbWVudCwgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzSG92ZXIpOwogfQogCiBz
dGF0aWMgYm9vbCBlbGVtZW50SXNIb3ZlcmVkRm9yU3R5bGVSZXNvbHV0aW9uKEVsZW1lbnQqIGVs
ZW1lbnQsIGNvbnN0IFNlbGVjdG9yQ2hlY2tlcjo6Q2hlY2tpbmdDb250ZXh0KiBjaGVja2luZ0Nv
bnRleHQpCiB7CiAgICAgaWYgKGNoZWNraW5nQ29udGV4dC0+cmVzb2x2aW5nTW9kZSA9PSBTZWxl
Y3RvckNoZWNrZXI6Ok1vZGU6OlJlc29sdmluZ1N0eWxlKQogICAgICAgICBlbGVtZW50LT5zZXRD
aGlsZHJlbkFmZmVjdGVkQnlIb3ZlcigpOwotICAgIHJldHVybiBlbGVtZW50LT5ob3ZlcmVkKCkg
fHwgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpmb3JjZVBzZXVkb1N0YXRlKGVsZW1lbnQsIENT
U1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0hvdmVyKTsKKyAgICByZXR1cm4gZWxlbWVudC0+aG92ZXJl
ZCgpIHx8IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Zm9yY2VQc2V1ZG9TdGF0ZSgqZWxlbWVu
dCwgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzSG92ZXIpOwogfQogCiB2b2lkIFNlbGVjdG9yQ29k
ZUdlbmVyYXRvcjo6Z2VuZXJhdGVFbGVtZW50SXNIb3ZlcmVkKEFzc2VtYmxlcjo6SnVtcExpc3Qm
IGZhaWx1cmVDYXNlcywgY29uc3QgU2VsZWN0b3JGcmFnbWVudCYgZnJhZ21lbnQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vQ2hhcmFjdGVyRGF0YS5jcHAKaW5kZXggNzE3MDAwODIzYWYzMTU5ODNhZGQzMGU3ZjNl
ZGExMGQ5MzAwMzQ4OS4uYjQ5M2Q4YjY1OTQyMDI5ODEzZDVjMTIyMmYyZjJiNDRmMDc5YzkwYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmNwcApAQCAtMjI3LDkgKzIyNyw4IEBAIHZv
aWQgQ2hhcmFjdGVyRGF0YTo6ZGlzcGF0Y2hNb2RpZmllZEV2ZW50KGNvbnN0IFN0cmluZyYgb2xk
RGF0YSkKICAgICAgICAgICAgIGRpc3BhdGNoU2NvcGVkRXZlbnQoTXV0YXRpb25FdmVudDo6Y3Jl
YXRlKGV2ZW50TmFtZXMoKS5ET01DaGFyYWN0ZXJEYXRhTW9kaWZpZWRFdmVudCwgdHJ1ZSwgMCwg
b2xkRGF0YSwgbV9kYXRhKSk7CiAgICAgICAgIGRpc3BhdGNoU3VidHJlZU1vZGlmaWVkRXZlbnQo
KTsKICAgICB9Ci0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmNoYXJhY3RlckRhdGFNb2RpZmllZCgmZG9jdW1lbnQoKSwgdGhpcyk7Ci0jZW5kaWYK
KworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Y2hhcmFjdGVyRGF0YU1vZGlmaWVkKGRv
Y3VtZW50KCksICp0aGlzKTsKIH0KIAogdm9pZCBDaGFyYWN0ZXJEYXRhOjpjaGVja0NoYXJEYXRh
T3BlcmF0aW9uKHVuc2lnbmVkIG9mZnNldCwgRXhjZXB0aW9uQ29kZSYgZWMpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vQ29udGFpbmVyTm9kZS5jcHAKaW5kZXggZTc1MDg3ZTBmMzNjZTA4MDBmZjdmMWMwZjEyZDAy
MTFmMWVhMTVkYS4uODJiMjM3YjMzYTg4MTdjMmZkMTZhYmQ3NzJkOWUxMTcwMTE1NzMyYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcApAQCAtMjc2LDcgKzI3Niw3IEBAIGJvb2wg
Q29udGFpbmVyTm9kZTo6aW5zZXJ0QmVmb3JlKFBhc3NSZWZQdHI8Tm9kZT4gbmV3Q2hpbGQsIE5v
ZGUqIHJlZkNoaWxkLCBFeGNlCiAgICAgaWYgKCFjaGVja0FjY2VwdENoaWxkR3VhcmFudGVlZE5v
ZGVUeXBlcyh0aGlzLCBuZXdDaGlsZC5nZXQoKSwgZWMpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxJbnNlcnRET01Ob2RlKCZkb2N1
bWVudCgpLCB0aGlzKTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxJbnNlcnRE
T01Ob2RlKGRvY3VtZW50KCksICp0aGlzKTsKIAogICAgIENoaWxkTGlzdE11dGF0aW9uU2NvcGUg
bXV0YXRpb24oKnRoaXMpOwogICAgIGZvciAoYXV0byBpdCA9IHRhcmdldHMuYmVnaW4oKSwgZW5k
ID0gdGFyZ2V0cy5lbmQoKTsgaXQgIT0gZW5kOyArK2l0KSB7CkBAIC00MzIsNyArNDMyLDcgQEAg
Ym9vbCBDb250YWluZXJOb2RlOjpyZXBsYWNlQ2hpbGQoUGFzc1JlZlB0cjxOb2RlPiBuZXdDaGls
ZCwgTm9kZSogb2xkQ2hpbGQsIEV4Y2UKICAgICBpZiAoIWNoZWNrUmVwbGFjZUNoaWxkKHRoaXMs
IG5ld0NoaWxkLmdldCgpLCBvbGRDaGlsZCwgZWMpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
LSAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxJbnNlcnRET01Ob2RlKCZkb2N1bWVu
dCgpLCB0aGlzKTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxJbnNlcnRET01O
b2RlKGRvY3VtZW50KCksICp0aGlzKTsKIAogICAgIC8vIEFkZCB0aGUgbmV3IGNoaWxkKHJlbikK
ICAgICBmb3IgKGF1dG8gaXQgPSB0YXJnZXRzLmJlZ2luKCksIGVuZCA9IHRhcmdldHMuZW5kKCk7
IGl0ICE9IGVuZDsgKytpdCkgewpAQCAtNTc3LDcgKzU3Nyw3IEBAIGJvb2wgQ29udGFpbmVyTm9k
ZTo6cmVtb3ZlQ2hpbGQoTm9kZSogb2xkQ2hpbGQsIEV4Y2VwdGlvbkNvZGUmIGVjKQogCiB2b2lk
IENvbnRhaW5lck5vZGU6OnJlbW92ZUJldHdlZW4oTm9kZSogcHJldmlvdXNDaGlsZCwgTm9kZSog
bmV4dENoaWxkLCBOb2RlJiBvbGRDaGlsZCkKIHsKLSAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmRpZFJlbW92ZURPTU5vZGUoJm9sZENoaWxkLmRvY3VtZW50KCksICZvbGRDaGlsZCk7Cisg
ICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZW1vdmVET01Ob2RlKG9sZENoaWxkLmRv
Y3VtZW50KCksIG9sZENoaWxkKTsKIAogICAgIE5vRXZlbnREaXNwYXRjaEFzc2VydGlvbiBhc3Nl
cnROb0V2ZW50RGlzcGF0Y2g7CiAKQEAgLTY5OSw3ICs2OTksNyBAQCBib29sIENvbnRhaW5lck5v
ZGU6OmFwcGVuZENoaWxkKFBhc3NSZWZQdHI8Tm9kZT4gbmV3Q2hpbGQsIEV4Y2VwdGlvbkNvZGUm
IGVjKQogICAgIGlmICghY2hlY2tBY2NlcHRDaGlsZEd1YXJhbnRlZWROb2RlVHlwZXModGhpcywg
bmV3Q2hpbGQuZ2V0KCksIGVjKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsSW5zZXJ0RE9NTm9kZSgmZG9jdW1lbnQoKSwgdGhpcyk7
CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsSW5zZXJ0RE9NTm9kZShkb2N1bWVu
dCgpLCAqdGhpcyk7CiAKICAgICAvLyBOb3cgYWN0dWFsbHkgYWRkIHRoZSBjaGlsZChyZW4pCiAg
ICAgQ2hpbGRMaXN0TXV0YXRpb25TY29wZSBtdXRhdGlvbigqdGhpcyk7CkBAIC04MTcsMTQgKzgx
NywxNCBAQCBzdGF0aWMgdm9pZCBkaXNwYXRjaENoaWxkSW5zZXJ0aW9uRXZlbnRzKE5vZGUmIGNo
aWxkKQogc3RhdGljIHZvaWQgZGlzcGF0Y2hDaGlsZFJlbW92YWxFdmVudHMoTm9kZSYgY2hpbGQp
CiB7CiAgICAgaWYgKGNoaWxkLmlzSW5TaGFkb3dUcmVlKCkpIHsKLSAgICAgICAgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjp3aWxsUmVtb3ZlRE9NTm9kZSgmY2hpbGQuZG9jdW1lbnQoKSwgJmNo
aWxkKTsKKyAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUmVtb3ZlRE9NTm9k
ZShjaGlsZC5kb2N1bWVudCgpLCBjaGlsZCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAg
ICBBU1NFUlQoIU5vRXZlbnREaXNwYXRjaEFzc2VydGlvbjo6aXNFdmVudERpc3BhdGNoRm9yYmlk
ZGVuKCkpOwogCiAgICAgd2lsbENyZWF0ZVBvc3NpYmx5T3JwaGFuZWRUcmVlQnlSZW1vdmFsKCZj
aGlsZCk7Ci0gICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUmVtb3ZlRE9NTm9kZSgm
Y2hpbGQuZG9jdW1lbnQoKSwgJmNoaWxkKTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OndpbGxSZW1vdmVET01Ob2RlKGNoaWxkLmRvY3VtZW50KCksIGNoaWxkKTsKIAogICAgIFJlZlB0
cjxOb2RlPiBjID0gJmNoaWxkOwogICAgIFJlZjxEb2N1bWVudD4gZG9jdW1lbnQoY2hpbGQuZG9j
dW1lbnQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZUFs
Z29yaXRobXMuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlQWxnb3JpdGhtcy5o
CmluZGV4IGNjMDkxYjAyNTQwNGMxZGI3ZTU4NDRmMjQzMzNhMjkwZjgwOWVjYzIuLjk3MTRiYmQx
YzM1M2NlNWViMjk0OWVkMjRjMzYyNTM0Nzk0NWE2OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Db250YWluZXJOb2RlQWxnb3JpdGhtcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Db250YWluZXJOb2RlQWxnb3JpdGhtcy5oCkBAIC0yMTcsOSArMjE3LDcgQEAgaW5saW5lIHZv
aWQgQ2hpbGROb2RlSW5zZXJ0aW9uTm90aWZpZXI6Om5vdGlmeShOb2RlJiBub2RlKQogewogICAg
IEFTU0VSVCghTm9FdmVudERpc3BhdGNoQXNzZXJ0aW9uOjppc0V2ZW50RGlzcGF0Y2hGb3JiaWRk
ZW4oKSk7CiAKLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6ZGlkSW5zZXJ0RE9NTm9kZSgmbm9kZS5kb2N1bWVudCgpLCAmbm9kZSk7Ci0jZW5kaWYK
KyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEluc2VydERPTU5vZGUobm9kZS5kb2N1
bWVudCgpLCBub2RlKTsKIAogICAgIFJlZjxEb2N1bWVudD4gcHJvdGVjdERvY3VtZW50KG5vZGUu
ZG9jdW1lbnQoKSk7CiAgICAgUmVmPE5vZGU+IHByb3RlY3ROb2RlKG5vZGUpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAKaW5kZXggZTZlZTYyMzk5NjI0NmI3OTNiZGI1Y2U0M2Y4ZTU0NWNhYzE4NTBm
NS4uOGY4Y2I4ZTVkNWU4MDEwNzA4NDdmYjA5OTg3MWYyZTlhZjJjZWRiMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuY3BwCkBAIC0xNjk3LDcgKzE2OTcsNyBAQCB2b2lkIERvY3VtZW50OjpzY2hlZHVs
ZVN0eWxlUmVjYWxjKCkKICAgICAKICAgICBtX3N0eWxlUmVjYWxjVGltZXIuc3RhcnRPbmVTaG90
KDApOwogCi0gICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRTY2hlZHVsZVN0eWxlUmVj
YWxjdWxhdGlvbih0aGlzKTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFNjaGVk
dWxlU3R5bGVSZWNhbGN1bGF0aW9uKCp0aGlzKTsKIH0KIAogdm9pZCBEb2N1bWVudDo6dW5zY2hl
ZHVsZVN0eWxlUmVjYWxjKCkKQEAgLTE3NTAsNyArMTc1MCw3IEBAIHZvaWQgRG9jdW1lbnQ6OnJl
Y2FsY1N0eWxlKFN0eWxlOjpDaGFuZ2UgY2hhbmdlKQogCiAgICAgbV9zdHlsZVNoZWV0Q29sbGVj
dGlvbi5mbHVzaFBlbmRpbmdVcGRhdGVzKCk7CiAKLSAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b25Db29raWUgY29va2llID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUmVjYWxjdWxh
dGVTdHlsZSh0aGlzKTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgY29va2ll
ID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUmVjYWxjdWxhdGVTdHlsZSgqdGhpcyk7
CiAKICAgICBpZiAobV9lbGVtZW50U2hlZXQgJiYgbV9lbGVtZW50U2hlZXQtPmNvbnRlbnRzKCku
dXNlc1JlbVVuaXRzKCkpCiAgICAgICAgIG1fc3R5bGVTaGVldENvbGxlY3Rpb24uc2V0VXNlc1Jl
bVVuaXQodHJ1ZSk7CkBAIC00NTk2LDcgKzQ1OTYsNyBAQCB2b2lkIERvY3VtZW50OjpmaW5pc2hl
ZFBhcnNpbmcoKQogCiAgICAgICAgIGYtPmxvYWRlcigpLmZpbmlzaGVkUGFyc2luZygpOwogCi0g
ICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZG9tQ29udGVudExvYWRlZEV2ZW50Rmly
ZWQoZi5nZXQoKSk7CisgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZG9tQ29udGVu
dExvYWRlZEV2ZW50RmlyZWQoKmYpOwogICAgIH0KIAogICAgIC8vIFNjaGVkdWxlIGRyb3BwaW5n
IG9mIHRoZSBEb2N1bWVudFNoYXJlZE9iamVjdFBvb2wuIFdlIGtlZXAgaXQgYWxpdmUgZm9yIGEg
d2hpbGUgYWZ0ZXIgcGFyc2luZyBmaW5pc2hlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IDUx
ZTdlMjk4YWZmNzA1Yzk1NjRhZTM5ZTJlMjBkODM4YjExMzUxN2YuLmI4ZGM2ZTE4NzNhNGE4MjIx
ZjlmYjdmYmI1ZjViMmMxZjJmMjVmZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9F
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTE0NzQs
NyArMTQ3NCw3IEBAIHZvaWQgRWxlbWVudDo6YWRkU2hhZG93Um9vdChSZWY8U2hhZG93Um9vdD4m
JiBuZXdTaGFkb3dSb290KQogCiAgICAgc2V0TmVlZHNTdHlsZVJlY2FsYyhSZWNvbnN0cnVjdFJl
bmRlclRyZWUpOwogCi0gICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRQdXNoU2hhZG93
Um9vdCh0aGlzLCAmc2hhZG93Um9vdCk7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpk
aWRQdXNoU2hhZG93Um9vdCgqdGhpcywgc2hhZG93Um9vdCk7CiB9CiAKIHZvaWQgRWxlbWVudDo6
cmVtb3ZlU2hhZG93Um9vdCgpCkBAIC0xNDgyLDcgKzE0ODIsNyBAQCB2b2lkIEVsZW1lbnQ6OnJl
bW92ZVNoYWRvd1Jvb3QoKQogICAgIFJlZlB0cjxTaGFkb3dSb290PiBvbGRSb290ID0gc2hhZG93
Um9vdCgpOwogICAgIGlmICghb2xkUm9vdCkKICAgICAgICAgcmV0dXJuOwotICAgIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6d2lsbFBvcFNoYWRvd1Jvb3QodGhpcywgb2xkUm9vdC5nZXQoKSk7
CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUG9wU2hhZG93Um9vdCgqdGhpcywg
Km9sZFJvb3QpOwogICAgIGRvY3VtZW50KCkucmVtb3ZlRm9jdXNlZE5vZGVPZlN1YnRyZWUob2xk
Um9vdC5nZXQoKSk7CiAKICAgICBBU1NFUlQoIW9sZFJvb3QtPnJlbmRlcmVyKCkpOwpAQCAtMjgx
MCwyOSArMjgxMCwyNyBAQCB2b2lkIEVsZW1lbnQ6OndpbGxNb2RpZnlBdHRyaWJ1dGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJgogICAgIGlmIChzdGQ6OnVu
aXF1ZV9wdHI8TXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXA+IHJlY2lwaWVudHMgPSBNdXRh
dGlvbk9ic2VydmVySW50ZXJlc3RHcm91cDo6Y3JlYXRlRm9yQXR0cmlidXRlc011dGF0aW9uKCp0
aGlzLCBuYW1lKSkKICAgICAgICAgcmVjaXBpZW50cy0+ZW5xdWV1ZU11dGF0aW9uUmVjb3JkKE11
dGF0aW9uUmVjb3JkOjpjcmVhdGVBdHRyaWJ1dGVzKCp0aGlzLCBuYW1lLCBvbGRWYWx1ZSkpOwog
Ci0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Ondp
bGxNb2RpZnlET01BdHRyKCZkb2N1bWVudCgpLCB0aGlzLCBvbGRWYWx1ZSwgbmV3VmFsdWUpOwot
I2VuZGlmCisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsTW9kaWZ5RE9NQXR0cihk
b2N1bWVudCgpLCAqdGhpcywgb2xkVmFsdWUsIG5ld1ZhbHVlKTsKIH0KIAogdm9pZCBFbGVtZW50
OjpkaWRBZGRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWlj
U3RyaW5nJiB2YWx1ZSkKIHsKICAgICBhdHRyaWJ1dGVDaGFuZ2VkKG5hbWUsIG51bGxBdG9tLCB2
YWx1ZSk7Ci0gICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRNb2RpZnlET01BdHRyKCZk
b2N1bWVudCgpLCB0aGlzLCBuYW1lLmxvY2FsTmFtZSgpLCB2YWx1ZSk7CisgICAgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpkaWRNb2RpZnlET01BdHRyKGRvY3VtZW50KCksICp0aGlzLCBuYW1l
LmxvY2FsTmFtZSgpLCB2YWx1ZSk7CiAgICAgZGlzcGF0Y2hTdWJ0cmVlTW9kaWZpZWRFdmVudCgp
OwogfQogCiB2b2lkIEVsZW1lbnQ6OmRpZE1vZGlmeUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBBdG9taWNTdHJp
bmcmIG5ld1ZhbHVlKQogewogICAgIGF0dHJpYnV0ZUNoYW5nZWQobmFtZSwgb2xkVmFsdWUsIG5l
d1ZhbHVlKTsKLSAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZE1vZGlmeURPTUF0dHIo
JmRvY3VtZW50KCksIHRoaXMsIG5hbWUubG9jYWxOYW1lKCksIG5ld1ZhbHVlKTsKKyAgICBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZE1vZGlmeURPTUF0dHIoZG9jdW1lbnQoKSwgKnRoaXMs
IG5hbWUubG9jYWxOYW1lKCksIG5ld1ZhbHVlKTsKICAgICAvLyBEbyBub3QgZGlzcGF0Y2ggYSBE
T01TdWJ0cmVlTW9kaWZpZWQgZXZlbnQgaGVyZTsgc2VlIGJ1ZyA4MTE0MS4KIH0KIAogdm9pZCBF
bGVtZW50OjpkaWRSZW1vdmVBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29u
c3QgQXRvbWljU3RyaW5nJiBvbGRWYWx1ZSkKIHsKICAgICBhdHRyaWJ1dGVDaGFuZ2VkKG5hbWUs
IG9sZFZhbHVlLCBudWxsQXRvbSk7Ci0gICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRS
ZW1vdmVET01BdHRyKCZkb2N1bWVudCgpLCB0aGlzLCBuYW1lLmxvY2FsTmFtZSgpKTsKKyAgICBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlbW92ZURPTUF0dHIoZG9jdW1lbnQoKSwgKnRo
aXMsIG5hbWUubG9jYWxOYW1lKCkpOwogICAgIGRpc3BhdGNoU3VidHJlZU1vZGlmaWVkRXZlbnQo
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5jcHAKaW5kZXggZjE3ZDZkM2ZjNzlmZWE1
MTlkZWZlZTVlNDFlZTVmNGY1MDQwMmE2Mi4uN2YzODk1YjE3NjZjYWY0ZDVkMzBjODc1YjcwZjU0
MWM2YWEwNTIyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3BwCkBAIC0yMzQsNyArMjM0
LDcgQEAgdm9pZCBFdmVudFRhcmdldDo6ZmlyZUV2ZW50TGlzdGVuZXJzKEV2ZW50KiBldmVudCwg
RXZlbnRUYXJnZXREYXRhKiBkLCBFdmVudExpc3QKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b25Db29raWUgd2lsbERpc3BhdGNoRXZlbnRDb29raWU7CiAgICAgaWYgKGlzPERvY3VtZW50Pihj
b250ZXh0KSkgewogICAgICAgICBkb2N1bWVudCA9IGRvd25jYXN0PERvY3VtZW50Pihjb250ZXh0
KTsKLSAgICAgICAgd2lsbERpc3BhdGNoRXZlbnRDb29raWUgPSBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OndpbGxEaXNwYXRjaEV2ZW50KGRvY3VtZW50LCAqZXZlbnQsIHNpemUgPiAwKTsKKyAg
ICAgICAgd2lsbERpc3BhdGNoRXZlbnRDb29raWUgPSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OndpbGxEaXNwYXRjaEV2ZW50KCpkb2N1bWVudCwgKmV2ZW50LCBzaXplID4gMCk7CiAgICAgfQog
CiAgICAgZm9yICg7IGkgPCBzaXplOyArK2kpIHsKQEAgLTI0OSw3ICsyNDksNyBAQCB2b2lkIEV2
ZW50VGFyZ2V0OjpmaXJlRXZlbnRMaXN0ZW5lcnMoRXZlbnQqIGV2ZW50LCBFdmVudFRhcmdldERh
dGEqIGQsIEV2ZW50TGlzdAogICAgICAgICBpZiAoZXZlbnQtPmltbWVkaWF0ZVByb3BhZ2F0aW9u
U3RvcHBlZCgpKQogICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uQ29va2llIGNvb2tpZSA9IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEhh
bmRsZUV2ZW50KGNvbnRleHQsIGV2ZW50KTsKKyAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uQ29va2llIGNvb2tpZSA9IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEhhbmRsZUV2
ZW50KGNvbnRleHQsICpldmVudCk7CiAgICAgICAgIC8vIFRvIG1hdGNoIE1vemlsbGEsIHRoZSBB
VF9UQVJHRVQgcGhhc2UgZmlyZXMgYm90aCBjYXB0dXJpbmcgYW5kIGJ1YmJsaW5nCiAgICAgICAg
IC8vIGV2ZW50IGxpc3RlbmVycywgZXZlbiB0aG91Z2ggdGhhdCB2aW9sYXRlcyBzb21lIHZlcnNp
b25zIG9mIHRoZSBET00gc3BlYy4KICAgICAgICAgcmVnaXN0ZXJlZExpc3RlbmVyLmxpc3RlbmVy
LT5oYW5kbGVFdmVudChjb250ZXh0LCBldmVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vTmFtZWRGbG93Q29sbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTmFtZWRG
bG93Q29sbGVjdGlvbi5jcHAKaW5kZXggNmJkNzY1NWVjZDRmMTU3MjRkZWI4OTBjZWE3N2EwMzUy
ZDJjYzMwOS4uNjIyNzk3Y2ViMTdlMmQ0YjMyNTYwMmFiMzBkNzIzZWEyZWM5NjQ0NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05hbWVkRmxvd0NvbGxlY3Rpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9OYW1lZEZsb3dDb2xsZWN0aW9uLmNwcApAQCAtNzksNyArNzksNyBA
QCBSZWY8V2ViS2l0TmFtZWRGbG93PiBOYW1lZEZsb3dDb2xsZWN0aW9uOjplbnN1cmVGbG93V2l0
aE5hbWUoY29uc3QgU3RyaW5nJiBmbG93TgogICAgIFJlZlB0cjxXZWJLaXROYW1lZEZsb3c+IG5l
d0Zsb3cgPSBXZWJLaXROYW1lZEZsb3c6OmNyZWF0ZSh0aGlzLCBmbG93TmFtZSk7CiAgICAgbV9u
YW1lZEZsb3dzLmFkZChuZXdGbG93LmdldCgpKTsKIAotICAgIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6ZGlkQ3JlYXRlTmFtZWRGbG93KGRvY3VtZW50KCksIG5ld0Zsb3cuZ2V0KCkpOworICAg
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ3JlYXRlTmFtZWRGbG93KGRvY3VtZW50KCks
ICpuZXdGbG93KTsKIAogICAgIHJldHVybiBuZXdGbG93LnJlbGVhc2VOb25OdWxsKCk7CiB9CkBA
IC05Myw3ICs5Myw3IEBAIHZvaWQgTmFtZWRGbG93Q29sbGVjdGlvbjo6ZGlzY2FyZE5hbWVkRmxv
dyhXZWJLaXROYW1lZEZsb3cqIG5hbWVkRmxvdykKICAgICBBU1NFUlQobmFtZWRGbG93LT5mbG93
U3RhdGUoKSA9PSBXZWJLaXROYW1lZEZsb3c6OkZsb3dTdGF0ZU51bGwpOwogICAgIEFTU0VSVCht
X25hbWVkRmxvd3MuY29udGFpbnMobmFtZWRGbG93KSk7CiAKLSAgICBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OndpbGxSZW1vdmVOYW1lZEZsb3coZG9jdW1lbnQoKSwgbmFtZWRGbG93KTsKKyAg
ICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxSZW1vdmVOYW1lZEZsb3coZG9jdW1lbnQo
KSwgKm5hbWVkRmxvdyk7CiAKICAgICBtX25hbWVkRmxvd3MucmVtb3ZlKG5hbWVkRmxvdyk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUHNldWRvRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vUHNldWRvRWxlbWVudC5jcHAKaW5kZXggNjUwZjcxMzJmNjg5NmY4NjE1
MDYwYjcwZmIzZjhhZGNjMzJlNjFlMy4uOTMyYjcxYmI2Y2FhYzRlM2U5ZjhjY2IwZDAyYWU4ZjE0
YzAzMGU2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1BzZXVkb0VsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qc2V1ZG9FbGVtZW50LmNwcApAQCAtNjcsNyArNjcs
NyBAQCBQc2V1ZG9FbGVtZW50OjpQc2V1ZG9FbGVtZW50KEVsZW1lbnQmIGhvc3QsIFBzZXVkb0lk
IHBzZXVkb0lkKQogUHNldWRvRWxlbWVudDo6flBzZXVkb0VsZW1lbnQoKQogewogICAgIEFTU0VS
VCghbV9ob3N0RWxlbWVudCk7Ci0gICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpwc2V1ZG9F
bGVtZW50RGVzdHJveWVkKGRvY3VtZW50KCkucGFnZSgpLCB0aGlzKTsKKyAgICBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OnBzZXVkb0VsZW1lbnREZXN0cm95ZWQoZG9jdW1lbnQoKS5wYWdlKCks
ICp0aGlzKTsKIH0KIAogUmVmUHRyPFJlbmRlclN0eWxlPiBQc2V1ZG9FbGVtZW50OjpjdXN0b21T
dHlsZUZvclJlbmRlcmVyKFJlbmRlclN0eWxlJiBwYXJlbnRTdHlsZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9T
dHlsZWRFbGVtZW50LmNwcAppbmRleCBlY2QwMmMxNjc1OTY4NWQzNGE5YmJlNTAxNzZiZmRhYzM4
MDIwMzEwLi40OWE2YTljOWJlMmVkYjJlNTllM2E3MDYzMTIzN2I0ZjRmMzM4NTBjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVkRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuY3BwCkBAIC0yMDQsNyArMjA0LDcgQEAgdm9pZCBTdHls
ZWRFbGVtZW50OjpzdHlsZUF0dHJpYnV0ZUNoYW5nZWQoY29uc3QgQXRvbWljU3RyaW5nJiBuZXdT
dHlsZVN0cmluZywgQXQKICAgICBlbGVtZW50RGF0YSgpLT5zZXRTdHlsZUF0dHJpYnV0ZUlzRGly
dHkoZmFsc2UpOwogCiAgICAgc2V0TmVlZHNTdHlsZVJlY2FsYyhJbmxpbmVTdHlsZUNoYW5nZSk7
Ci0gICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRJbnZhbGlkYXRlU3R5bGVBdHRyKCZk
b2N1bWVudCgpLCB0aGlzKTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEludmFs
aWRhdGVTdHlsZUF0dHIoZG9jdW1lbnQoKSwgKnRoaXMpOwogfQogCiB2b2lkIFN0eWxlZEVsZW1l
bnQ6OmlubGluZVN0eWxlQ2hhbmdlZCgpCkBAIC0yMTIsNyArMjEyLDcgQEAgdm9pZCBTdHlsZWRF
bGVtZW50OjppbmxpbmVTdHlsZUNoYW5nZWQoKQogICAgIHNldE5lZWRzU3R5bGVSZWNhbGMoSW5s
aW5lU3R5bGVDaGFuZ2UpOwogICAgIEFTU0VSVChlbGVtZW50RGF0YSgpKTsKICAgICBlbGVtZW50
RGF0YSgpLT5zZXRTdHlsZUF0dHJpYnV0ZUlzRGlydHkodHJ1ZSk7Ci0gICAgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpkaWRJbnZhbGlkYXRlU3R5bGVBdHRyKCZkb2N1bWVudCgpLCB0aGlzKTsK
KyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEludmFsaWRhdGVTdHlsZUF0dHIoZG9j
dW1lbnQoKSwgKnRoaXMpOwogfQogICAgIAogYm9vbCBTdHlsZWRFbGVtZW50OjpzZXRJbmxpbmVT
dHlsZVByb3BlcnR5KENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwgQ1NTVmFsdWVJRCBpZGVudGlm
aWVyLCBib29sIGltcG9ydGFudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JDb25zb2xlSW5zdHJ1bWVudGF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQ29uc29sZUluc3RydW1lbnRhdGlvbi5oCmluZGV4IGY1NDBjZTJiY2Ex
MjBkNTc4NDg0ZTE2ZjNiYTg5YjJkOWVkNmFiZjQuLjMyYTYyNDcyNTY4NWFlZWFkZTIyNjEwOWEx
MGEwNmRhZTIxMzE4ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JDb25zb2xlSW5zdHJ1bWVudGF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckNvbnNvbGVJbnN0cnVtZW50YXRpb24uaApAQCAtMzksMTEgKzM5LDExIEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjphZGRNZXNzYWdlVG9Db25zb2xlKFBhZ2UqIHBhZ2UsIE1lc3NhZ2VTb3VyY2Ugc291
cmNlLCBNZXNzYWdlVHlwZSB0eXBlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYg
bWVzc2FnZSwgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlNjcmlwdENhbGxTdGFjaz4gY2FsbFN0YWNr
LCB1bnNpZ25lZCBsb25nIHJlcXVlc3RJZGVudGlmaWVyKQoraW5saW5lIHZvaWQgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjphZGRNZXNzYWdlVG9Db25zb2xlKFBhZ2UmIHBhZ2UsIE1lc3NhZ2VT
b3VyY2Ugc291cmNlLCBNZXNzYWdlVHlwZSB0eXBlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0
IFN0cmluZyYgbWVzc2FnZSwgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlNjcmlwdENhbGxTdGFjaz4g
Y2FsbFN0YWNrLCB1bnNpZ25lZCBsb25nIHJlcXVlc3RJZGVudGlmaWVyKQogewogI2lmIEVOQUJM
RShJTlNQRUNUT1IpCiAgICAgaWYgKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdB
Z2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yUGFnZShwYWdlKSkKLSAgICAgICAgYWRkTWVz
c2FnZVRvQ29uc29sZUltcGwoaW5zdHJ1bWVudGluZ0FnZW50cywgc291cmNlLCB0eXBlLCBsZXZl
bCwgbWVzc2FnZSwgY2FsbFN0YWNrLCByZXF1ZXN0SWRlbnRpZmllcik7CisgICAgICAgIGFkZE1l
c3NhZ2VUb0NvbnNvbGVJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRzLCBzb3VyY2UsIHR5cGUsIGxl
dmVsLCBtZXNzYWdlLCBjYWxsU3RhY2ssIHJlcXVlc3RJZGVudGlmaWVyKTsKICNlbHNlCiAgICAg
VU5VU0VEX1BBUkFNKHBhZ2UpOwogICAgIFVOVVNFRF9QQVJBTShzb3VyY2UpOwpAQCAtNTUsMTEg
KzU1LDExIEBAIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6YWRkTWVzc2Fn
ZVRvQ29uc29sZShQYWdlKiBwYWdlLCBNZXNzYWdlU291CiAjZW5kaWYKIH0KIAotaW5saW5lIHZv
aWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjphZGRNZXNzYWdlVG9Db25zb2xlKFBhZ2UqIHBh
Z2UsIE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlVHlwZSB0eXBlLCBNZXNzYWdlTGV2ZWwg
bGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBQYXNz
UmVmUHRyPEluc3BlY3Rvcjo6U2NyaXB0QXJndW1lbnRzPiBhcmd1bWVudHMsIHVuc2lnbmVkIGxv
bmcgcmVxdWVzdElkZW50aWZpZXIpCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmFkZE1lc3NhZ2VUb0NvbnNvbGUoUGFnZSYgcGFnZSwgTWVzc2FnZVNvdXJjZSBzb3VyY2Us
IE1lc3NhZ2VUeXBlIHR5cGUsIE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNz
YWdlLCBKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpTY3JpcHRB
cmd1bWVudHM+IGFyZ3VtZW50cywgdW5zaWduZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmllcikKIHsK
ICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0
cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvclBhZ2UocGFnZSkpCi0gICAg
ICAgIGFkZE1lc3NhZ2VUb0NvbnNvbGVJbXBsKGluc3RydW1lbnRpbmdBZ2VudHMsIHNvdXJjZSwg
dHlwZSwgbGV2ZWwsIG1lc3NhZ2UsIHN0YXRlLCBhcmd1bWVudHMsIHJlcXVlc3RJZGVudGlmaWVy
KTsKKyAgICAgICAgYWRkTWVzc2FnZVRvQ29uc29sZUltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMs
IHNvdXJjZSwgdHlwZSwgbGV2ZWwsIG1lc3NhZ2UsIHN0YXRlLCBhcmd1bWVudHMsIHJlcXVlc3RJ
ZGVudGlmaWVyKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHBhZ2UpOwogICAgIFVOVVNFRF9Q
QVJBTShzb3VyY2UpOwpAQCAtNzIsMTEgKzcyLDExIEBAIGlubGluZSB2b2lkIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6YWRkTWVzc2FnZVRvQ29uc29sZShQYWdlKiBwYWdlLCBNZXNzYWdlU291
CiAjZW5kaWYKIH0KIAotaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjphZGRN
ZXNzYWdlVG9Db25zb2xlKFBhZ2UqIHBhZ2UsIE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdl
VHlwZSB0eXBlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29u
c3QgU3RyaW5nJiBzY3JpcHRJRCwgdW5zaWduZWQgbGluZU51bWJlciwgdW5zaWduZWQgY29sdW1u
TnVtYmVyLCBKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHVuc2lnbmVkIGxvbmcgcmVxdWVzdElkZW50
aWZpZXIpCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmFkZE1lc3NhZ2VU
b0NvbnNvbGUoUGFnZSYgcGFnZSwgTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VUeXBlIHR5
cGUsIE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJp
bmcmIHNjcmlwdElELCB1bnNpZ25lZCBsaW5lTnVtYmVyLCB1bnNpZ25lZCBjb2x1bW5OdW1iZXIs
IEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdW5zaWduZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmllcikK
IHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBp
bnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvclBhZ2UocGFnZSkpCi0g
ICAgICAgIGFkZE1lc3NhZ2VUb0NvbnNvbGVJbXBsKGluc3RydW1lbnRpbmdBZ2VudHMsIHNvdXJj
ZSwgdHlwZSwgbGV2ZWwsIG1lc3NhZ2UsIHNjcmlwdElELCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1i
ZXIsIHN0YXRlLCByZXF1ZXN0SWRlbnRpZmllcik7CisgICAgICAgIGFkZE1lc3NhZ2VUb0NvbnNv
bGVJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRzLCBzb3VyY2UsIHR5cGUsIGxldmVsLCBtZXNzYWdl
LCBzY3JpcHRJRCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBzdGF0ZSwgcmVxdWVzdElkZW50
aWZpZXIpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0ocGFnZSk7CiAgICAgVU5VU0VEX1BBUkFN
KHNvdXJjZSk7CkBAIC05NSw3ICs5NSw3IEBAIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6YWRkTWVzc2FnZVRvQ29uc29sZShXb3JrZXJHbG9iYWxTY29wZSogd29yCiB7CiAj
aWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBpZiAoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1
bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JXb3JrZXJHbG9iYWxTY29wZSh3
b3JrZXJHbG9iYWxTY29wZSkpCi0gICAgICAgIGFkZE1lc3NhZ2VUb0NvbnNvbGVJbXBsKGluc3Ry
dW1lbnRpbmdBZ2VudHMsIHNvdXJjZSwgdHlwZSwgbGV2ZWwsIG1lc3NhZ2UsIGNhbGxTdGFjaywg
cmVxdWVzdElkZW50aWZpZXIpOworICAgICAgICBhZGRNZXNzYWdlVG9Db25zb2xlSW1wbCgqaW5z
dHJ1bWVudGluZ0FnZW50cywgc291cmNlLCB0eXBlLCBsZXZlbCwgbWVzc2FnZSwgY2FsbFN0YWNr
LCByZXF1ZXN0SWRlbnRpZmllcik7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTSh3b3JrZXJHbG9i
YWxTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHNvdXJjZSk7CkBAIC0xMTEsNyArMTExLDcgQEAg
aW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjphZGRNZXNzYWdlVG9Db25zb2xl
KFdvcmtlckdsb2JhbFNjb3BlKiB3b3IKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIGlm
IChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGlu
Z0FnZW50c0Zvcldvcmtlckdsb2JhbFNjb3BlKHdvcmtlckdsb2JhbFNjb3BlKSkKLSAgICAgICAg
YWRkTWVzc2FnZVRvQ29uc29sZUltcGwoaW5zdHJ1bWVudGluZ0FnZW50cywgc291cmNlLCB0eXBl
LCBsZXZlbCwgbWVzc2FnZSwgc2NyaXB0SUQsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgc3Rh
dGUsIHJlcXVlc3RJZGVudGlmaWVyKTsKKyAgICAgICAgYWRkTWVzc2FnZVRvQ29uc29sZUltcGwo
Kmluc3RydW1lbnRpbmdBZ2VudHMsIHNvdXJjZSwgdHlwZSwgbGV2ZWwsIG1lc3NhZ2UsIHNjcmlw
dElELCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIHN0YXRlLCByZXF1ZXN0SWRlbnRpZmllcik7
CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTSh3b3JrZXJHbG9iYWxTY29wZSk7CiAgICAgVU5VU0VE
X1BBUkFNKHNvdXJjZSk7CkBAIC0xMjYsMTEgKzEyNiwxMSBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OmFkZE1lc3NhZ2VUb0NvbnNvbGUoV29ya2VyR2xvYmFsU2NvcGUq
IHdvcgogI2VuZGlmCiB9CiAKLWlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
Y29uc29sZUNvdW50KFBhZ2UqIHBhZ2UsIEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgUGFzc1JlZlB0
cjxJbnNwZWN0b3I6OlNjcmlwdEFyZ3VtZW50cz4gYXJndW1lbnRzKQoraW5saW5lIHZvaWQgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjb25zb2xlQ291bnQoUGFnZSYgcGFnZSwgSlNDOjpFeGVj
U3RhdGUqIHN0YXRlLCBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6U2NyaXB0QXJndW1lbnRzPiBhcmd1
bWVudHMpCiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBpZiAoSW5zdHJ1bWVudGluZ0Fn
ZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JQYWdlKHBh
Z2UpKQotICAgICAgICBjb25zb2xlQ291bnRJbXBsKGluc3RydW1lbnRpbmdBZ2VudHMsIHN0YXRl
LCBhcmd1bWVudHMpOworICAgICAgICBjb25zb2xlQ291bnRJbXBsKCppbnN0cnVtZW50aW5nQWdl
bnRzLCBzdGF0ZSwgYXJndW1lbnRzKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHBhZ2UpOwog
ICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CkBAIC0xMzgsMjIgKzEzOCwyMiBAQCBpbmxpbmUgdm9p
ZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNvbnNvbGVDb3VudChQYWdlKiBwYWdlLCBKU0M6
OkV4ZWNTdGF0ZSogcwogI2VuZGlmCiB9CiAKLWlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6c3RhcnRDb25zb2xlVGltaW5nKEZyYW1lKiBmcmFtZSwgY29uc3QgU3RyaW5nJiB0
aXRsZSkKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c3RhcnRDb25zb2xl
VGltaW5nKEZyYW1lJiBmcmFtZSwgY29uc3QgU3RyaW5nJiB0aXRsZSkKIHsKICNpZiBFTkFCTEUo
SU5TUEVDVE9SKQogICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdl
bnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvckZyYW1lKGZyYW1lKSkKLSAgICAgICAgc3RhcnRD
b25zb2xlVGltaW5nSW1wbChpbnN0cnVtZW50aW5nQWdlbnRzLCBmcmFtZSwgdGl0bGUpOworICAg
ICAgICBzdGFydENvbnNvbGVUaW1pbmdJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRzLCBmcmFtZSwg
dGl0bGUpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZnJhbWUpOwogICAgIFVOVVNFRF9QQVJB
TSh0aXRsZSk7CiAjZW5kaWYKIH0KIAotaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpzdG9wQ29uc29sZVRpbWluZyhGcmFtZSogZnJhbWUsIGNvbnN0IFN0cmluZyYgdGl0bGUs
IFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpTY3JpcHRDYWxsU3RhY2s+IHN0YWNrKQoraW5saW5lIHZv
aWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzdG9wQ29uc29sZVRpbWluZyhGcmFtZSYgZnJh
bWUsIGNvbnN0IFN0cmluZyYgdGl0bGUsIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpTY3JpcHRDYWxs
U3RhY2s+IHN0YWNrKQogewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgaWYgKEluc3RydW1l
bnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9y
RnJhbWUoZnJhbWUpKQotICAgICAgICBzdG9wQ29uc29sZVRpbWluZ0ltcGwoaW5zdHJ1bWVudGlu
Z0FnZW50cywgZnJhbWUsIHRpdGxlLCBzdGFjayk7CisgICAgICAgIHN0b3BDb25zb2xlVGltaW5n
SW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywgZnJhbWUsIHRpdGxlLCBzdGFjayk7CiAjZWxzZQog
ICAgIFVOVVNFRF9QQVJBTShmcmFtZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRpdGxlKTsKQEAgLTE2
MSwyMyArMTYxLDIzIEBAIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c3Rv
cENvbnNvbGVUaW1pbmcoRnJhbWUqIGZyYW1lLCBjb25zdCBTdHJpCiAjZW5kaWYKIH0KIAotaW5s
aW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjb25zb2xlVGltZVN0YW1wKEZyYW1l
KiBmcmFtZSwgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlNjcmlwdEFyZ3VtZW50cz4gYXJndW1lbnRz
KQoraW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjb25zb2xlVGltZVN0YW1w
KEZyYW1lJiBmcmFtZSwgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlNjcmlwdEFyZ3VtZW50cz4gYXJn
dW1lbnRzKQogewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgRkFTVF9SRVRVUk5fSUZfTk9f
RlJPTlRFTkRTKHZvaWQoKSk7CiAgICAgaWYgKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1l
bnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yRnJhbWUoZnJhbWUpKQotICAgICAg
ICBjb25zb2xlVGltZVN0YW1wSW1wbChpbnN0cnVtZW50aW5nQWdlbnRzLCBmcmFtZSwgYXJndW1l
bnRzKTsKKyAgICAgICAgY29uc29sZVRpbWVTdGFtcEltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMs
IGZyYW1lLCBhcmd1bWVudHMpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZnJhbWUpOwogICAg
IFVOVVNFRF9QQVJBTShhcmd1bWVudHMpOwogI2VuZGlmCiB9CiAKLWlubGluZSB2b2lkIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6c3RhcnRQcm9maWxpbmcoUGFnZSogcGFnZSwgSlNDOjpFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyAmdGl0bGUpCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OnN0YXJ0UHJvZmlsaW5nKFBhZ2UmIHBhZ2UsIEpTQzo6RXhlY1N0YXRl
KiBleGVjLCBjb25zdCBTdHJpbmcgJnRpdGxlKQogewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAg
ICAgaWYgKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVt
ZW50aW5nQWdlbnRzRm9yUGFnZShwYWdlKSkKLSAgICAgICAgc3RhcnRQcm9maWxpbmdJbXBsKGlu
c3RydW1lbnRpbmdBZ2VudHMsIGV4ZWMsIHRpdGxlKTsKKyAgICAgICAgc3RhcnRQcm9maWxpbmdJ
bXBsKCppbnN0cnVtZW50aW5nQWdlbnRzLCBleGVjLCB0aXRsZSk7CiAjZWxzZQogICAgIFVOVVNF
RF9QQVJBTShwYWdlKTsKICAgICBVTlVTRURfUEFSQU0oZXhlYyk7CkBAIC0xODUsMTEgKzE4NSwx
MSBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnN0YXJ0UHJvZmlsaW5n
KFBhZ2UqIHBhZ2UsIEpTQzo6RXhlY1N0YXRlKgogI2VuZGlmCiB9CiAKLWlubGluZSBQYXNzUmVm
UHRyPEpTQzo6UHJvZmlsZT4gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzdG9wUHJvZmlsaW5n
KFBhZ2UqIHBhZ2UsIEpTQzo6RXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcgJnRpdGxlKQor
aW5saW5lIFBhc3NSZWZQdHI8SlNDOjpQcm9maWxlPiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OnN0b3BQcm9maWxpbmcoUGFnZSYgcGFnZSwgSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0
cmluZyAmdGl0bGUpCiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBpZiAoSW5zdHJ1bWVu
dGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JQ
YWdlKHBhZ2UpKQotICAgICAgICByZXR1cm4gc3RvcFByb2ZpbGluZ0ltcGwoaW5zdHJ1bWVudGlu
Z0FnZW50cywgZXhlYywgdGl0bGUpOworICAgICAgICByZXR1cm4gc3RvcFByb2ZpbGluZ0ltcGwo
Kmluc3RydW1lbnRpbmdBZ2VudHMsIGV4ZWMsIHRpdGxlKTsKICNlbHNlCiAgICAgVU5VU0VEX1BB
UkFNKHBhZ2UpOwogICAgIFVOVVNFRF9QQVJBTShleGVjKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAppbmRleCA4NmNlYzA0N2QzMzFkYmIz
ZDkwMThjNjI4MzQxZDQ3NjJjNTA2YWE2Li4yZWQ4YWRmYmRlOWEwODM2NGYwZjAyZGMxYWI5NzFm
ZjhiYWJiYjIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNv
bnRyb2xsZXIuY3BwCkBAIC0yMjQsMTcgKzIyNCwxNyBAQCBib29sIEluc3BlY3RvckNvbnRyb2xs
ZXI6Omhhc0luc3BlY3RvckZyb250ZW5kQ2xpZW50KCkgY29uc3QKICAgICByZXR1cm4gbV9pbnNw
ZWN0b3JGcm9udGVuZENsaWVudDsKIH0KIAotdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpkaWRD
bGVhcldpbmRvd09iamVjdEluV29ybGQoRnJhbWUqIGZyYW1lLCBET01XcmFwcGVyV29ybGQmIHdv
cmxkKQordm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpkaWRDbGVhcldpbmRvd09iamVjdEluV29y
bGQoRnJhbWUmIGZyYW1lLCBET01XcmFwcGVyV29ybGQmIHdvcmxkKQogewogICAgIGlmICgmd29y
bGQgIT0gJm1haW5UaHJlYWROb3JtYWxXb3JsZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBp
ZiAoZnJhbWUtPmlzTWFpbkZyYW1lKCkpCisgICAgaWYgKGZyYW1lLmlzTWFpbkZyYW1lKCkpCiAg
ICAgICAgIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5kaXNjYXJkSW5qZWN0ZWRTY3JpcHRzKCk7
CiAKICAgICAvLyBJZiB0aGUgcGFnZSBpcyBzdXBwb3NlZCB0byBzZXJ2ZSBhcyBJbnNwZWN0b3JG
cm9udGVuZCBub3RpZnkgaW5zcGVjdG9yIGZyb250ZW5kCiAgICAgLy8gY2xpZW50IHRoYXQgaXQn
cyBjbGVhcmVkIHNvIHRoYXQgdGhlIGNsaWVudCBjYW4gZXhwb3NlIGluc3BlY3RvciBiaW5kaW5n
cy4KLSAgICBpZiAobV9pbnNwZWN0b3JGcm9udGVuZENsaWVudCAmJiBmcmFtZS0+aXNNYWluRnJh
bWUoKSkKKyAgICBpZiAobV9pbnNwZWN0b3JGcm9udGVuZENsaWVudCAmJiBmcmFtZS5pc01haW5G
cmFtZSgpKQogICAgICAgICBtX2luc3BlY3RvckZyb250ZW5kQ2xpZW50LT53aW5kb3dPYmplY3RD
bGVhcmVkKCk7CiB9CiAKQEAgLTI1Miw3ICsyNTIsNyBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xs
ZXI6OmNvbm5lY3RGcm9udGVuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hh
bgogCiAgICAgbV9hZ2VudHMuZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKGZyb250ZW5kQ2hh
bm5lbCwgbV9pbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5nZXQoKSk7CiAKLSAgICBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OnJlZ2lzdGVySW5zdHJ1bWVudGluZ0FnZW50cyhtX2luc3RydW1l
bnRpbmdBZ2VudHMuZ2V0KCkpOworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6cmVnaXN0
ZXJJbnN0cnVtZW50aW5nQWdlbnRzKCptX2luc3RydW1lbnRpbmdBZ2VudHMpOwogICAgIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6ZnJvbnRlbmRDcmVhdGVkKCk7CiAKICNpZiBFTkFCTEUoUkVN
T1RFX0lOU1BFQ1RPUikKQEAgLTI3Nyw3ICsyNzcsNyBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xs
ZXI6OmRpc2Nvbm5lY3RGcm9udGVuZChJbnNwZWN0b3JEaXNjb25uZWN0UmVhc29uIHJlYXNvbikK
ICAgICAvLyBSZWxlYXNlIG92ZXJsYXkgcGFnZSByZXNvdXJjZXMuCiAgICAgbV9vdmVybGF5LT5m
cmVlUGFnZSgpOwogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZnJvbnRlbmREZWxldGVk
KCk7Ci0gICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp1bnJlZ2lzdGVySW5zdHJ1bWVudGlu
Z0FnZW50cyhtX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCkpOworICAgIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6dW5yZWdpc3Rlckluc3RydW1lbnRpbmdBZ2VudHMoKm1faW5zdHJ1bWVudGlu
Z0FnZW50cyk7CiAKICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKICAgICBpZiAoIW1faGFz
UmVtb3RlRnJvbnRlbmQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNv
bnRyb2xsZXIuaAppbmRleCA5NmY0MWY1MmRiNGI5ZWExNGMwZGY3Yjc3OWJlMWNjYjIxYjAxNWUw
Li43Yzc4ZWU0OTQzZWZmNGQ0MGI1YTE0NzRjNDkzN2MwZTM0MGNkODQ0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKQEAgLTU5LDYgKzU5LDcg
QEAgY2xhc3MgSW5zcGVjdG9yQ2xpZW50OwogY2xhc3MgSW5zcGVjdG9yRE9NQWdlbnQ7CiBjbGFz
cyBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OwogY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmRDbGll
bnQ7CitjbGFzcyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb247CiBjbGFzcyBJbnNwZWN0b3JQYWdl
QWdlbnQ7CiBjbGFzcyBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OwogY2xhc3MgSW5zcGVjdG9yVGlt
ZWxpbmVBZ2VudDsKQEAgLTg1LDcgKzg2LDcgQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzZXRJbnNwZWN0b3JGcm9udGVuZENsaWVudChJbnNwZWN0b3JGcm9udGVuZENsaWVu
dCopOwogICAgIGJvb2wgaGFzSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQoKSBjb25zdDsKLSAgICB2
b2lkIGRpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZChGcmFtZSosIERPTVdyYXBwZXJXb3JsZCYp
OworICAgIHZvaWQgZGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxkKEZyYW1lJiwgRE9NV3JhcHBl
cldvcmxkJik7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpc3BhdGNoTWVzc2FnZUZyb21G
cm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwogCkBAIC0xMzMsNyArMTM0LDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXVEY6OlN0b3B3YXRjaD4gZXhlY3V0aW9uU3Rv
cHdhdGNoKCkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6Ci0gICAgZnJpZW5kIEluc3RydW1lbnRpbmdB
Z2VudHMqIGluc3RydW1lbnRhdGlvbkZvclBhZ2UoUGFnZSopOworICAgIGZyaWVuZCBjbGFzcyBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb247CiAKICAgICBSZWZQdHI8SW5zdHJ1bWVudGluZ0FnZW50
cz4gbV9pbnN0cnVtZW50aW5nQWdlbnRzOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJJbmplY3Rl
ZFNjcmlwdE1hbmFnZXI+IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlSW5zdHJ1bWVudGF0aW9uLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VJbnN0cnVtZW50YXRp
b24uaAppbmRleCBiMGFkN2IzNDVlYzU3OTFiMjU3MGEzNDdiMDM5MTg5ODQ2NDJiODI3Li5kNmNi
NjIzNmJjOGFlMDYyNTkwNmZiOTIyMzRmZDkxODExZTdhNWUzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VJbnN0cnVtZW50YXRpb24uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VJbnN0cnVtZW50YXRp
b24uaApAQCAtNDIsNyArNDIsNyBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmRpZE9wZW5EYXRhYmFzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjbwogewogI2lmIEVO
QUJMRShJTlNQRUNUT1IpCiAgICAgaWYgKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRp
bmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yQ29udGV4dChjb250ZXh0KSkKLSAgICAg
ICAgZGlkT3BlbkRhdGFiYXNlSW1wbChpbnN0cnVtZW50aW5nQWdlbnRzLCBkYXRhYmFzZSwgZG9t
YWluLCBuYW1lLCB2ZXJzaW9uKTsKKyAgICAgICAgZGlkT3BlbkRhdGFiYXNlSW1wbCgqaW5zdHJ1
bWVudGluZ0FnZW50cywgZGF0YWJhc2UsIGRvbWFpbiwgbmFtZSwgdmVyc2lvbik7CiAjZWxzZQog
ICAgIFVOVVNFRF9QQVJBTShjb250ZXh0KTsKICAgICBVTlVTRURfUEFSQU0oZGF0YWJhc2UpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRh
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uLmNwcAppbmRleCA3OTUyMzY2YzY3M2I3OThiZGE0NDcwNDU4NDM2NmViODk4Y2EzNmVmLi5l
YTVjZTViNzAxNDIxOTlmNjQzNmVlYjVlM2I1MGQ4NThkZWE1YjFhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcApAQCAt
NDMsNiArNDMsNyBAQAogI2luY2x1ZGUgIkV2ZW50LmgiCiAjaW5jbHVkZSAiRXZlbnREaXNwYXRj
aGVyLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmgiCisjaW5j
bHVkZSAiSW5zcGVjdG9yQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkluc3BlY3RvckNTU0FnZW50
LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRE9NQWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JE
T01EZWJ1Z2dlckFnZW50LmgiCkBAIC02NCw2ICs2NSw3IEBACiAjaW5jbHVkZSAiU3R5bGVSdWxl
LmgiCiAjaW5jbHVkZSAiV2ViQ29uc29sZUFnZW50LmgiCiAjaW5jbHVkZSAiV29ya2VyR2xvYmFs
U2NvcGUuaCIKKyNpbmNsdWRlICJXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmgiCiAjaW5jbHVk
ZSAiV29ya2VyUnVudGltZUFnZW50LmgiCiAjaW5jbHVkZSAiV29ya2VyVGhyZWFkLmgiCiAjaW5j
bHVkZSAiWE1MSHR0cFJlcXVlc3QuaCIKQEAgLTkyLDcgKzk0LDcgQEAgc3RhdGljIGNvbnN0IGNo
YXIqIGNvbnN0IGNsZWFyVGltZXJFdmVudE5hbWUgPSAiY2xlYXJUaW1lciI7CiBzdGF0aWMgY29u
c3QgY2hhciogY29uc3QgdGltZXJGaXJlZEV2ZW50TmFtZSA9ICJ0aW1lckZpcmVkIjsKIAogbmFt
ZXNwYWNlIHsKLXN0YXRpYyBIYXNoU2V0PEluc3RydW1lbnRpbmdBZ2VudHMqPiogaW5zdHJ1bWVu
dGluZ0FnZW50c1NldCA9IG51bGxwdHI7CitzdGF0aWMgSGFzaFNldDxJbnN0cnVtZW50aW5nQWdl
bnRzKj4qIHNfaW5zdHJ1bWVudGluZ0FnZW50c1NldCA9IG51bGxwdHI7CiB9CiAKIGludCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OnNfZnJvbnRlbmRDb3VudGVyID0gMDsKQEAgLTEwNSwyMDcg
KzEwNywyMDcgQEAgc3RhdGljIEZyYW1lKiBmcmFtZUZvclNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKICAgICByZXR1cm4gZnJhbWU7CiB9CiAK
LXZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDbGVhcldpbmRvd09iamVjdEluV29y
bGRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIEZyYW1lKiBm
cmFtZSwgRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpkaWRDbGVhcldpbmRvd09iamVjdEluV29ybGRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMm
IGluc3RydW1lbnRpbmdBZ2VudHMsIEZyYW1lJiBmcmFtZSwgRE9NV3JhcHBlcldvcmxkJiB3b3Js
ZCkKIHsKLSAgICBJbnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2VudCA9IGluc3RydW1lbnRpbmdB
Z2VudHMtPmluc3BlY3RvclBhZ2VBZ2VudCgpOworICAgIEluc3BlY3RvclBhZ2VBZ2VudCogcGFn
ZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JQYWdlQWdlbnQoKTsKICAgICBp
ZiAocGFnZUFnZW50KQotICAgICAgICBwYWdlQWdlbnQtPmRpZENsZWFyV2luZG93T2JqZWN0SW5X
b3JsZChmcmFtZSwgd29ybGQpOwotICAgIGlmIChQYWdlRGVidWdnZXJBZ2VudCogZGVidWdnZXJB
Z2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMtPnBhZ2VEZWJ1Z2dlckFnZW50KCkpIHsKLSAgICAg
ICAgaWYgKHBhZ2VBZ2VudCAmJiAmd29ybGQgPT0gJm1haW5UaHJlYWROb3JtYWxXb3JsZCgpICYm
IGZyYW1lID09IHBhZ2VBZ2VudC0+bWFpbkZyYW1lKCkpCisgICAgICAgIHBhZ2VBZ2VudC0+ZGlk
Q2xlYXJXaW5kb3dPYmplY3RJbldvcmxkKCZmcmFtZSwgd29ybGQpOworICAgIGlmIChQYWdlRGVi
dWdnZXJBZ2VudCogZGVidWdnZXJBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMucGFnZURlYnVn
Z2VyQWdlbnQoKSkgeworICAgICAgICBpZiAocGFnZUFnZW50ICYmICZ3b3JsZCA9PSAmbWFpblRo
cmVhZE5vcm1hbFdvcmxkKCkgJiYgJmZyYW1lID09IHBhZ2VBZ2VudC0+bWFpbkZyYW1lKCkpCiAg
ICAgICAgICAgICBkZWJ1Z2dlckFnZW50LT5kaWRDbGVhck1haW5GcmFtZVdpbmRvd09iamVjdCgp
OwogICAgIH0KLSAgICBpZiAoUGFnZVJ1bnRpbWVBZ2VudCogcGFnZVJ1bnRpbWVBZ2VudCA9IGlu
c3RydW1lbnRpbmdBZ2VudHMtPnBhZ2VSdW50aW1lQWdlbnQoKSkgeworICAgIGlmIChQYWdlUnVu
dGltZUFnZW50KiBwYWdlUnVudGltZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5wYWdlUnVu
dGltZUFnZW50KCkpIHsKICAgICAgICAgaWYgKCZ3b3JsZCA9PSAmbWFpblRocmVhZE5vcm1hbFdv
cmxkKCkpCi0gICAgICAgICAgICBwYWdlUnVudGltZUFnZW50LT5kaWRDcmVhdGVNYWluV29ybGRD
b250ZXh0KGZyYW1lKTsKKyAgICAgICAgICAgIHBhZ2VSdW50aW1lQWdlbnQtPmRpZENyZWF0ZU1h
aW5Xb3JsZENvbnRleHQoJmZyYW1lKTsKICAgICB9CiB9CiAKLWJvb2wgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjppc0RlYnVnZ2VyUGF1c2VkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0
cnVtZW50aW5nQWdlbnRzKQorYm9vbCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmlzRGVidWdn
ZXJQYXVzZWRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMpCiB7
Ci0gICAgaWYgKEluc3BlY3RvckRlYnVnZ2VyQWdlbnQqIGRlYnVnZ2VyQWdlbnQgPSBpbnN0cnVt
ZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JEZWJ1Z2dlckFnZW50KCkpCisgICAgaWYgKEluc3BlY3Rv
ckRlYnVnZ2VyQWdlbnQqIGRlYnVnZ2VyQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQoKSkKICAgICAgICAgcmV0dXJuIGRlYnVnZ2VyQWdlbnQtPmlzUGF1
c2VkKCk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6d2lsbEluc2VydERPTU5vZGVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1l
bnRpbmdBZ2VudHMsIE5vZGUqIHBhcmVudCkKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Ojp3aWxsSW5zZXJ0RE9NTm9kZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGlu
Z0FnZW50cywgTm9kZSYgcGFyZW50KQogewotICAgIGlmIChJbnNwZWN0b3JET01EZWJ1Z2dlckFn
ZW50KiBkb21EZWJ1Z2dlckFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yRE9N
RGVidWdnZXJBZ2VudCgpKQotICAgICAgICBkb21EZWJ1Z2dlckFnZW50LT53aWxsSW5zZXJ0RE9N
Tm9kZShwYXJlbnQpOworICAgIGlmIChJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50KiBkb21EZWJ1
Z2dlckFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50
KCkpCisgICAgICAgIGRvbURlYnVnZ2VyQWdlbnQtPndpbGxJbnNlcnRET01Ob2RlKCZwYXJlbnQp
OwogfQogCi12b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkSW5zZXJ0RE9NTm9kZUlt
cGwoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgTm9kZSogbm9kZSkK
K3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRJbnNlcnRET01Ob2RlSW1wbChJbnN0
cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBOb2RlJiBub2RlKQogewotICAg
IGlmIChJbnNwZWN0b3JET01BZ2VudCogZG9tQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLT5p
bnNwZWN0b3JET01BZ2VudCgpKQotICAgICAgICBkb21BZ2VudC0+ZGlkSW5zZXJ0RE9NTm9kZShu
b2RlKTsKLSAgICBpZiAoSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudCogZG9tRGVidWdnZXJBZ2Vu
dCA9IGluc3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQoKSkKLSAg
ICAgICAgZG9tRGVidWdnZXJBZ2VudC0+ZGlkSW5zZXJ0RE9NTm9kZShub2RlKTsKKyAgICBpZiAo
SW5zcGVjdG9yRE9NQWdlbnQqIGRvbUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0
b3JET01BZ2VudCgpKQorICAgICAgICBkb21BZ2VudC0+ZGlkSW5zZXJ0RE9NTm9kZSgmbm9kZSk7
CisgICAgaWYgKEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQqIGRvbURlYnVnZ2VyQWdlbnQgPSBp
bnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQoKSkKKyAgICAgICAg
ZG9tRGVidWdnZXJBZ2VudC0+ZGlkSW5zZXJ0RE9NTm9kZSgmbm9kZSk7CiB9CiAKLXZvaWQgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUmVtb3ZlRE9NTm9kZUltcGwoSW5zdHJ1bWVudGlu
Z0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgTm9kZSogbm9kZSkKK3ZvaWQgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjp3aWxsUmVtb3ZlRE9NTm9kZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50
cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgTm9kZSYgbm9kZSkKIHsKLSAgICBpZiAoSW5zcGVjdG9y
RE9NRGVidWdnZXJBZ2VudCogZG9tRGVidWdnZXJBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMt
Pmluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQoKSkKLSAgICAgICAgZG9tRGVidWdnZXJBZ2VudC0+
d2lsbFJlbW92ZURPTU5vZGUobm9kZSk7CisgICAgaWYgKEluc3BlY3RvckRPTURlYnVnZ2VyQWdl
bnQqIGRvbURlYnVnZ2VyQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckRPTURl
YnVnZ2VyQWdlbnQoKSkKKyAgICAgICAgZG9tRGVidWdnZXJBZ2VudC0+d2lsbFJlbW92ZURPTU5v
ZGUoJm5vZGUpOwogfQogCi12b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVtb3Zl
RE9NTm9kZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgTm9k
ZSogbm9kZSkKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZW1vdmVET01Ob2Rl
SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBOb2RlJiBub2Rl
KQogewotICAgIGlmIChJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50KiBkb21EZWJ1Z2dlckFnZW50
ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudCgpKQotICAg
ICAgICBkb21EZWJ1Z2dlckFnZW50LT5kaWRSZW1vdmVET01Ob2RlKG5vZGUpOwotICAgIGlmIChJ
bnNwZWN0b3JET01BZ2VudCogZG9tQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLT5pbnNwZWN0
b3JET01BZ2VudCgpKQotICAgICAgICBkb21BZ2VudC0+ZGlkUmVtb3ZlRE9NTm9kZShub2RlKTsK
KyAgICBpZiAoSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudCogZG9tRGVidWdnZXJBZ2VudCA9IGlu
c3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudCgpKQorICAgICAgICBk
b21EZWJ1Z2dlckFnZW50LT5kaWRSZW1vdmVET01Ob2RlKCZub2RlKTsKKyAgICBpZiAoSW5zcGVj
dG9yRE9NQWdlbnQqIGRvbUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JET01B
Z2VudCgpKQorICAgICAgICBkb21BZ2VudC0+ZGlkUmVtb3ZlRE9NTm9kZSgmbm9kZSk7CiB9CiAK
LXZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsTW9kaWZ5RE9NQXR0ckltcGwoSW5z
dHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgRWxlbWVudCogZWxlbWVudCwg
Y29uc3QgQXRvbWljU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuZXdWYWx1
ZSkKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsTW9kaWZ5RE9NQXR0ckltcGwo
SW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgRWxlbWVudCYgZWxlbWVu
dCwgY29uc3QgQXRvbWljU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuZXdW
YWx1ZSkKIHsKLSAgICBpZiAoSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudCogZG9tRGVidWdnZXJB
Z2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQoKSkK
LSAgICAgICAgZG9tRGVidWdnZXJBZ2VudC0+d2lsbE1vZGlmeURPTUF0dHIoZWxlbWVudCk7Ci0g
ICAgaWYgKEluc3BlY3RvckRPTUFnZW50KiBkb21BZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMt
Pmluc3BlY3RvckRPTUFnZW50KCkpCi0gICAgICAgIGRvbUFnZW50LT53aWxsTW9kaWZ5RE9NQXR0
cihlbGVtZW50LCBvbGRWYWx1ZSwgbmV3VmFsdWUpOworICAgIGlmIChJbnNwZWN0b3JET01EZWJ1
Z2dlckFnZW50KiBkb21EZWJ1Z2dlckFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0
b3JET01EZWJ1Z2dlckFnZW50KCkpCisgICAgICAgIGRvbURlYnVnZ2VyQWdlbnQtPndpbGxNb2Rp
ZnlET01BdHRyKCZlbGVtZW50KTsKKyAgICBpZiAoSW5zcGVjdG9yRE9NQWdlbnQqIGRvbUFnZW50
ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JET01BZ2VudCgpKQorICAgICAgICBkb21B
Z2VudC0+d2lsbE1vZGlmeURPTUF0dHIoJmVsZW1lbnQsIG9sZFZhbHVlLCBuZXdWYWx1ZSk7CiB9
CiAKLXZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRNb2RpZnlET01BdHRySW1wbChJ
bnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBFbGVtZW50KiBlbGVtZW50
LCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCit2
b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkTW9kaWZ5RE9NQXR0ckltcGwoSW5zdHJ1
bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgRWxlbWVudCYgZWxlbWVudCwgY29u
c3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQogewotICAg
IGlmIChJbnNwZWN0b3JET01BZ2VudCogZG9tQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLT5p
bnNwZWN0b3JET01BZ2VudCgpKQotICAgICAgICBkb21BZ2VudC0+ZGlkTW9kaWZ5RE9NQXR0cihl
bGVtZW50LCBuYW1lLCB2YWx1ZSk7CisgICAgaWYgKEluc3BlY3RvckRPTUFnZW50KiBkb21BZ2Vu
dCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yRE9NQWdlbnQoKSkKKyAgICAgICAgZG9t
QWdlbnQtPmRpZE1vZGlmeURPTUF0dHIoJmVsZW1lbnQsIG5hbWUsIHZhbHVlKTsKIH0KIAotdm9p
ZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlbW92ZURPTUF0dHJJbXBsKEluc3RydW1l
bnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0
IEF0b21pY1N0cmluZyYgbmFtZSkKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRS
ZW1vdmVET01BdHRySW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRz
LCBFbGVtZW50JiBlbGVtZW50LCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpCiB7Ci0gICAgaWYg
KEluc3BlY3RvckRPTUFnZW50KiBkb21BZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMtPmluc3Bl
Y3RvckRPTUFnZW50KCkpCi0gICAgICAgIGRvbUFnZW50LT5kaWRSZW1vdmVET01BdHRyKGVsZW1l
bnQsIG5hbWUpOworICAgIGlmIChJbnNwZWN0b3JET01BZ2VudCogZG9tQWdlbnQgPSBpbnN0cnVt
ZW50aW5nQWdlbnRzLmluc3BlY3RvckRPTUFnZW50KCkpCisgICAgICAgIGRvbUFnZW50LT5kaWRS
ZW1vdmVET01BdHRyKCZlbGVtZW50LCBuYW1lKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmRpZEludmFsaWRhdGVTdHlsZUF0dHJJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMq
IGluc3RydW1lbnRpbmdBZ2VudHMsIE5vZGUqIG5vZGUpCit2b2lkIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6ZGlkSW52YWxpZGF0ZVN0eWxlQXR0ckltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYg
aW5zdHJ1bWVudGluZ0FnZW50cywgTm9kZSYgbm9kZSkKIHsKLSAgICBpZiAoSW5zcGVjdG9yRE9N
QWdlbnQqIGRvbUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yRE9NQWdlbnQo
KSkKLSAgICAgICAgZG9tQWdlbnQtPmRpZEludmFsaWRhdGVTdHlsZUF0dHIobm9kZSk7Ci0gICAg
aWYgKEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQqIGRvbURlYnVnZ2VyQWdlbnQgPSBpbnN0cnVt
ZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50KCkpCi0gICAgICAgIGRvbURl
YnVnZ2VyQWdlbnQtPmRpZEludmFsaWRhdGVTdHlsZUF0dHIobm9kZSk7CisgICAgaWYgKEluc3Bl
Y3RvckRPTUFnZW50KiBkb21BZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yRE9N
QWdlbnQoKSkKKyAgICAgICAgZG9tQWdlbnQtPmRpZEludmFsaWRhdGVTdHlsZUF0dHIoJm5vZGUp
OworICAgIGlmIChJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50KiBkb21EZWJ1Z2dlckFnZW50ID0g
aW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50KCkpCisgICAgICAg
IGRvbURlYnVnZ2VyQWdlbnQtPmRpZEludmFsaWRhdGVTdHlsZUF0dHIoJm5vZGUpOwogfQogCi12
b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZnJhbWVXaW5kb3dEaXNjYXJkZWRJbXBsKElu
c3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIERPTVdpbmRvdyogd2luZG93
KQordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmZyYW1lV2luZG93RGlzY2FyZGVkSW1w
bChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBET01XaW5kb3cqIHdp
bmRvdykKIHsKLSAgICBpZiAoV2ViQ29uc29sZUFnZW50KiBjb25zb2xlQWdlbnQgPSBpbnN0cnVt
ZW50aW5nQWdlbnRzLT53ZWJDb25zb2xlQWdlbnQoKSkKKyAgICBpZiAoV2ViQ29uc29sZUFnZW50
KiBjb25zb2xlQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLndlYkNvbnNvbGVBZ2VudCgpKQog
ICAgICAgICBjb25zb2xlQWdlbnQtPmZyYW1lV2luZG93RGlzY2FyZGVkKHdpbmRvdyk7CiB9CiAK
LXZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjptZWRpYVF1ZXJ5UmVzdWx0Q2hhbmdlZElt
cGwoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cykKK3ZvaWQgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjptZWRpYVF1ZXJ5UmVzdWx0Q2hhbmdlZEltcGwoSW5zdHJ1bWVu
dGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cykKIHsKLSAgICBpZiAoSW5zcGVjdG9yQ1NT
QWdlbnQqIGNzc0FnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yQ1NTQWdlbnQo
KSkKKyAgICBpZiAoSW5zcGVjdG9yQ1NTQWdlbnQqIGNzc0FnZW50ID0gaW5zdHJ1bWVudGluZ0Fn
ZW50cy5pbnNwZWN0b3JDU1NBZ2VudCgpKQogICAgICAgICBjc3NBZ2VudC0+bWVkaWFRdWVyeVJl
c3VsdENoYW5nZWQoKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFB1
c2hTaGFkb3dSb290SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRz
LCBFbGVtZW50KiBob3N0LCBTaGFkb3dSb290KiByb290KQordm9pZCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmRpZFB1c2hTaGFkb3dSb290SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0
cnVtZW50aW5nQWdlbnRzLCBFbGVtZW50JiBob3N0LCBTaGFkb3dSb290JiByb290KQogewotICAg
IGlmIChJbnNwZWN0b3JET01BZ2VudCogZG9tQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLT5p
bnNwZWN0b3JET01BZ2VudCgpKQotICAgICAgICBkb21BZ2VudC0+ZGlkUHVzaFNoYWRvd1Jvb3Qo
aG9zdCwgcm9vdCk7CisgICAgaWYgKEluc3BlY3RvckRPTUFnZW50KiBkb21BZ2VudCA9IGluc3Ry
dW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yRE9NQWdlbnQoKSkKKyAgICAgICAgZG9tQWdlbnQtPmRp
ZFB1c2hTaGFkb3dSb290KCZob3N0LCAmcm9vdCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjp3aWxsUG9wU2hhZG93Um9vdEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5z
dHJ1bWVudGluZ0FnZW50cywgRWxlbWVudCogaG9zdCwgU2hhZG93Um9vdCogcm9vdCkKK3ZvaWQg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUG9wU2hhZG93Um9vdEltcGwoSW5zdHJ1bWVu
dGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgRWxlbWVudCYgaG9zdCwgU2hhZG93Um9v
dCYgcm9vdCkKIHsKLSAgICBpZiAoSW5zcGVjdG9yRE9NQWdlbnQqIGRvbUFnZW50ID0gaW5zdHJ1
bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yRE9NQWdlbnQoKSkKLSAgICAgICAgZG9tQWdlbnQtPndp
bGxQb3BTaGFkb3dSb290KGhvc3QsIHJvb3QpOworICAgIGlmIChJbnNwZWN0b3JET01BZ2VudCog
ZG9tQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckRPTUFnZW50KCkpCisgICAg
ICAgIGRvbUFnZW50LT53aWxsUG9wU2hhZG93Um9vdCgmaG9zdCwgJnJvb3QpOwogfQogCi12b2lk
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ3JlYXRlTmFtZWRGbG93SW1wbChJbnN0cnVt
ZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBEb2N1bWVudCogZG9jdW1lbnQsIFdl
YktpdE5hbWVkRmxvdyogbmFtZWRGbG93KQordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmRpZENyZWF0ZU5hbWVkRmxvd0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGlu
Z0FnZW50cywgRG9jdW1lbnQqIGRvY3VtZW50LCBXZWJLaXROYW1lZEZsb3cmIG5hbWVkRmxvdykK
IHsKLSAgICBpZiAoSW5zcGVjdG9yQ1NTQWdlbnQqIGNzc0FnZW50ID0gaW5zdHJ1bWVudGluZ0Fn
ZW50cy0+aW5zcGVjdG9yQ1NTQWdlbnQoKSkKLSAgICAgICAgY3NzQWdlbnQtPmRpZENyZWF0ZU5h
bWVkRmxvdyhkb2N1bWVudCwgbmFtZWRGbG93KTsKKyAgICBpZiAoSW5zcGVjdG9yQ1NTQWdlbnQq
IGNzc0FnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JDU1NBZ2VudCgpKQorICAg
ICAgICBjc3NBZ2VudC0+ZGlkQ3JlYXRlTmFtZWRGbG93KGRvY3VtZW50LCAmbmFtZWRGbG93KTsK
IH0KIAotdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxSZW1vdmVOYW1lZEZsb3dJ
bXBsKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIERvY3VtZW50KiBk
b2N1bWVudCwgV2ViS2l0TmFtZWRGbG93KiBuYW1lZEZsb3cpCit2b2lkIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6d2lsbFJlbW92ZU5hbWVkRmxvd0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYg
aW5zdHJ1bWVudGluZ0FnZW50cywgRG9jdW1lbnQqIGRvY3VtZW50LCBXZWJLaXROYW1lZEZsb3cm
IG5hbWVkRmxvdykKIHsKLSAgICBpZiAoSW5zcGVjdG9yQ1NTQWdlbnQqIGNzc0FnZW50ID0gaW5z
dHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yQ1NTQWdlbnQoKSkKLSAgICAgICAgY3NzQWdlbnQt
PndpbGxSZW1vdmVOYW1lZEZsb3coZG9jdW1lbnQsIG5hbWVkRmxvdyk7CisgICAgaWYgKEluc3Bl
Y3RvckNTU0FnZW50KiBjc3NBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yQ1NT
QWdlbnQoKSkKKyAgICAgICAgY3NzQWdlbnQtPndpbGxSZW1vdmVOYW1lZEZsb3coZG9jdW1lbnQs
ICZuYW1lZEZsb3cpOwogfQogCi12b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ2hh
bmdlUmVnaW9uT3ZlcnNldEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0Fn
ZW50cywgRG9jdW1lbnQqIGRvY3VtZW50LCBXZWJLaXROYW1lZEZsb3cqIG5hbWVkRmxvdykKK3Zv
aWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDaGFuZ2VSZWdpb25PdmVyc2V0SW1wbChJ
bnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBEb2N1bWVudCYgZG9jdW1l
bnQsIFdlYktpdE5hbWVkRmxvdyYgbmFtZWRGbG93KQogewotICAgIGlmIChJbnNwZWN0b3JDU1NB
Z2VudCogY3NzQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JDU1NBZ2VudCgp
KQotICAgICAgICBjc3NBZ2VudC0+ZGlkQ2hhbmdlUmVnaW9uT3ZlcnNldChkb2N1bWVudCwgbmFt
ZWRGbG93KTsKKyAgICBpZiAoSW5zcGVjdG9yQ1NTQWdlbnQqIGNzc0FnZW50ID0gaW5zdHJ1bWVu
dGluZ0FnZW50cy5pbnNwZWN0b3JDU1NBZ2VudCgpKQorICAgICAgICBjc3NBZ2VudC0+ZGlkQ2hh
bmdlUmVnaW9uT3ZlcnNldCgmZG9jdW1lbnQsICZuYW1lZEZsb3cpOwogfQogCi12b2lkIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVnaXN0ZXJOYW1lZEZsb3dDb250ZW50RWxlbWVudElt
cGwoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgRG9jdW1lbnQqIGRv
Y3VtZW50LCBXZWJLaXROYW1lZEZsb3cqIG5hbWVkRmxvdywgTm9kZSogY29udGVudEVsZW1lbnQs
IE5vZGUqIG5leHRDb250ZW50RWxlbWVudCkKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpkaWRSZWdpc3Rlck5hbWVkRmxvd0NvbnRlbnRFbGVtZW50SW1wbChJbnN0cnVtZW50aW5nQWdl
bnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBEb2N1bWVudCYgZG9jdW1lbnQsIFdlYktpdE5hbWVk
RmxvdyYgbmFtZWRGbG93LCBOb2RlJiBjb250ZW50RWxlbWVudCwgTm9kZSogbmV4dENvbnRlbnRF
bGVtZW50KQogewotICAgIGlmIChJbnNwZWN0b3JDU1NBZ2VudCogY3NzQWdlbnQgPSBpbnN0cnVt
ZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JDU1NBZ2VudCgpKQotICAgICAgICBjc3NBZ2VudC0+ZGlk
UmVnaXN0ZXJOYW1lZEZsb3dDb250ZW50RWxlbWVudChkb2N1bWVudCwgbmFtZWRGbG93LCBjb250
ZW50RWxlbWVudCwgbmV4dENvbnRlbnRFbGVtZW50KTsKKyAgICBpZiAoSW5zcGVjdG9yQ1NTQWdl
bnQqIGNzc0FnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JDU1NBZ2VudCgpKQor
ICAgICAgICBjc3NBZ2VudC0+ZGlkUmVnaXN0ZXJOYW1lZEZsb3dDb250ZW50RWxlbWVudCgmZG9j
dW1lbnQsICZuYW1lZEZsb3csICZjb250ZW50RWxlbWVudCwgbmV4dENvbnRlbnRFbGVtZW50KTsK
IH0KIAotdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFVucmVnaXN0ZXJOYW1lZEZs
b3dDb250ZW50RWxlbWVudEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0Fn
ZW50cywgRG9jdW1lbnQqIGRvY3VtZW50LCBXZWJLaXROYW1lZEZsb3cqIG5hbWVkRmxvdywgTm9k
ZSogY29udGVudEVsZW1lbnQpCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkVW5y
ZWdpc3Rlck5hbWVkRmxvd0NvbnRlbnRFbGVtZW50SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBp
bnN0cnVtZW50aW5nQWdlbnRzLCBEb2N1bWVudCYgZG9jdW1lbnQsIFdlYktpdE5hbWVkRmxvdyYg
bmFtZWRGbG93LCBOb2RlJiBjb250ZW50RWxlbWVudCkKIHsKLSAgICBpZiAoSW5zcGVjdG9yQ1NT
QWdlbnQqIGNzc0FnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yQ1NTQWdlbnQo
KSkKLSAgICAgICAgY3NzQWdlbnQtPmRpZFVucmVnaXN0ZXJOYW1lZEZsb3dDb250ZW50RWxlbWVu
dChkb2N1bWVudCwgbmFtZWRGbG93LCBjb250ZW50RWxlbWVudCk7CisgICAgaWYgKEluc3BlY3Rv
ckNTU0FnZW50KiBjc3NBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yQ1NTQWdl
bnQoKSkKKyAgICAgICAgY3NzQWdlbnQtPmRpZFVucmVnaXN0ZXJOYW1lZEZsb3dDb250ZW50RWxl
bWVudCgmZG9jdW1lbnQsICZuYW1lZEZsb3csICZjb250ZW50RWxlbWVudCk7CiB9CiAKLXZvaWQg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjptb3VzZURpZE1vdmVPdmVyRWxlbWVudEltcGwoSW5z
dHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgY29uc3QgSGl0VGVzdFJlc3Vs
dCYgcmVzdWx0LCB1bnNpZ25lZCBtb2RpZmllckZsYWdzKQordm9pZCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246Om1vdXNlRGlkTW92ZU92ZXJFbGVtZW50SW1wbChJbnN0cnVtZW50aW5nQWdlbnRz
JiBpbnN0cnVtZW50aW5nQWdlbnRzLCBjb25zdCBIaXRUZXN0UmVzdWx0JiByZXN1bHQsIHVuc2ln
bmVkIG1vZGlmaWVyRmxhZ3MpCiB7Ci0gICAgaWYgKEluc3BlY3RvckRPTUFnZW50KiBkb21BZ2Vu
dCA9IGluc3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvckRPTUFnZW50KCkpCisgICAgaWYgKElu
c3BlY3RvckRPTUFnZW50KiBkb21BZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9y
RE9NQWdlbnQoKSkKICAgICAgICAgZG9tQWdlbnQtPm1vdXNlRGlkTW92ZU92ZXJFbGVtZW50KHJl
c3VsdCwgbW9kaWZpZXJGbGFncyk7CiB9CiAKLXZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpkaWRTY3JvbGxJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMp
Cit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkU2Nyb2xsSW1wbChJbnN0cnVtZW50
aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzKQogewotICAgIGlmIChJbnNwZWN0b3JQYWdl
QWdlbnQqIHBhZ2VBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvclBhZ2VBZ2Vu
dCgpKQorICAgIGlmIChJbnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2VudCA9IGluc3RydW1lbnRp
bmdBZ2VudHMuaW5zcGVjdG9yUGFnZUFnZW50KCkpCiAgICAgICAgIHBhZ2VBZ2VudC0+ZGlkU2Ny
b2xsKCk7CiB9CiAKLWJvb2wgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpoYW5kbGVUb3VjaEV2
ZW50SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBOb2RlKiBu
b2RlKQorYm9vbCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmhhbmRsZVRvdWNoRXZlbnRJbXBs
KEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIE5vZGUmIG5vZGUpCiB7
Ci0gICAgaWYgKEluc3BlY3RvckRPTUFnZW50KiBkb21BZ2VudCA9IGluc3RydW1lbnRpbmdBZ2Vu
dHMtPmluc3BlY3RvckRPTUFnZW50KCkpCi0gICAgICAgIHJldHVybiBkb21BZ2VudC0+aGFuZGxl
VG91Y2hFdmVudChub2RlKTsKKyAgICBpZiAoSW5zcGVjdG9yRE9NQWdlbnQqIGRvbUFnZW50ID0g
aW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JET01BZ2VudCgpKQorICAgICAgICByZXR1cm4g
ZG9tQWdlbnQtPmhhbmRsZVRvdWNoRXZlbnQoJm5vZGUpOwogICAgIHJldHVybiBmYWxzZTsKIH0K
IAotYm9vbCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmhhbmRsZU1vdXNlUHJlc3NJbXBsKElu
c3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMpCitib29sIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6aGFuZGxlTW91c2VQcmVzc0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYg
aW5zdHJ1bWVudGluZ0FnZW50cykKIHsKLSAgICBpZiAoSW5zcGVjdG9yRE9NQWdlbnQqIGRvbUFn
ZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yRE9NQWdlbnQoKSkKKyAgICBpZiAo
SW5zcGVjdG9yRE9NQWdlbnQqIGRvbUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0
b3JET01BZ2VudCgpKQogICAgICAgICByZXR1cm4gZG9tQWdlbnQtPmhhbmRsZU1vdXNlUHJlc3Mo
KTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Ojpmb3JjZVBzZXVkb1N0YXRlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5n
QWdlbnRzLCBFbGVtZW50KiBlbGVtZW50LCBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NUeXBlIHBz
ZXVkb1N0YXRlKQorYm9vbCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmZvcmNlUHNldWRvU3Rh
dGVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIEVsZW1lbnQm
IGVsZW1lbnQsIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc1R5cGUgcHNldWRvU3RhdGUpCiB7Ci0g
ICAgaWYgKEluc3BlY3RvckNTU0FnZW50KiBjc3NBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMt
Pmluc3BlY3RvckNTU0FnZW50KCkpCi0gICAgICAgIHJldHVybiBjc3NBZ2VudC0+Zm9yY2VQc2V1
ZG9TdGF0ZShlbGVtZW50LCBwc2V1ZG9TdGF0ZSk7CisgICAgaWYgKEluc3BlY3RvckNTU0FnZW50
KiBjc3NBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yQ1NTQWdlbnQoKSkKKyAg
ICAgICAgcmV0dXJuIGNzc0FnZW50LT5mb3JjZVBzZXVkb1N0YXRlKCZlbGVtZW50LCBwc2V1ZG9T
dGF0ZSk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6Y2hhcmFjdGVyRGF0YU1vZGlmaWVkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0
cnVtZW50aW5nQWdlbnRzLCBDaGFyYWN0ZXJEYXRhKiBjaGFyYWN0ZXJEYXRhKQordm9pZCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmNoYXJhY3RlckRhdGFNb2RpZmllZEltcGwoSW5zdHJ1bWVu
dGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgQ2hhcmFjdGVyRGF0YSYgY2hhcmFjdGVy
RGF0YSkKIHsKLSAgICBpZiAoSW5zcGVjdG9yRE9NQWdlbnQqIGRvbUFnZW50ID0gaW5zdHJ1bWVu
dGluZ0FnZW50cy0+aW5zcGVjdG9yRE9NQWdlbnQoKSkKLSAgICAgICAgZG9tQWdlbnQtPmNoYXJh
Y3RlckRhdGFNb2RpZmllZChjaGFyYWN0ZXJEYXRhKTsKKyAgICBpZiAoSW5zcGVjdG9yRE9NQWdl
bnQqIGRvbUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JET01BZ2VudCgpKQor
ICAgICAgICBkb21BZ2VudC0+Y2hhcmFjdGVyRGF0YU1vZGlmaWVkKCZjaGFyYWN0ZXJEYXRhKTsK
IH0KIAotdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxTZW5kWE1MSHR0cFJlcXVl
c3RJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIGNvbnN0IFN0
cmluZyYgdXJsKQordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxTZW5kWE1MSHR0
cFJlcXVlc3RJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIGNv
bnN0IFN0cmluZyYgdXJsKQogewotICAgIGlmIChJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50KiBk
b21EZWJ1Z2dlckFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yRE9NRGVidWdn
ZXJBZ2VudCgpKQorICAgIGlmIChJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50KiBkb21EZWJ1Z2dl
ckFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50KCkp
CiAgICAgICAgIGRvbURlYnVnZ2VyQWdlbnQtPndpbGxTZW5kWE1MSHR0cFJlcXVlc3QodXJsKTsK
IH0KIAotdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFNjaGVkdWxlUmVzb3VyY2VS
ZXF1ZXN0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBjb25z
dCBTdHJpbmcmIHVybCwgRnJhbWUqIGZyYW1lKQordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmRpZFNjaGVkdWxlUmVzb3VyY2VSZXF1ZXN0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBp
bnN0cnVtZW50aW5nQWdlbnRzLCBjb25zdCBTdHJpbmcmIHVybCwgRnJhbWUqIGZyYW1lKQogewot
ICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gaW5zdHJ1bWVu
dGluZ0FnZW50cy0+aW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpKQorICAgIGlmIChJbnNwZWN0b3JU
aW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0
b3JUaW1lbGluZUFnZW50KCkpCiAgICAgICAgIHRpbWVsaW5lQWdlbnQtPmRpZFNjaGVkdWxlUmVz
b3VyY2VSZXF1ZXN0KHVybCwgZnJhbWUpOwogfQogCi12b2lkIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6ZGlkSW5zdGFsbFRpbWVySW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50
aW5nQWdlbnRzLCBpbnQgdGltZXJJZCwgaW50IHRpbWVvdXQsIGJvb2wgc2luZ2xlU2hvdCwgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpkaWRJbnN0YWxsVGltZXJJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRp
bmdBZ2VudHMsIGludCB0aW1lcklkLCBpbnQgdGltZW91dCwgYm9vbCBzaW5nbGVTaG90LCBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogewogICAgIHBhdXNlT25OYXRpdmVFdmVudElm
TmVlZGVkKGluc3RydW1lbnRpbmdBZ2VudHMsIGZhbHNlLCBzZXRUaW1lckV2ZW50TmFtZSwgdHJ1
ZSk7Ci0gICAgaWYgKEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSBpbnN0
cnVtZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JUaW1lbGluZUFnZW50KCkpCisgICAgaWYgKEluc3Bl
Y3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmlu
c3BlY3RvclRpbWVsaW5lQWdlbnQoKSkKICAgICAgICAgdGltZWxpbmVBZ2VudC0+ZGlkSW5zdGFs
bFRpbWVyKHRpbWVySWQsIHRpbWVvdXQsIHNpbmdsZVNob3QsIGZyYW1lRm9yU2NyaXB0RXhlY3V0
aW9uQ29udGV4dChjb250ZXh0KSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpkaWRSZW1vdmVUaW1lckltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0Fn
ZW50cywgaW50IHRpbWVySWQsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCit2b2lk
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVtb3ZlVGltZXJJbXBsKEluc3RydW1lbnRp
bmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIGludCB0aW1lcklkLCBTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0KQogewogICAgIHBhdXNlT25OYXRpdmVFdmVudElmTmVlZGVkKGlu
c3RydW1lbnRpbmdBZ2VudHMsIGZhbHNlLCBjbGVhclRpbWVyRXZlbnROYW1lLCB0cnVlKTsKLSAg
ICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IGluc3RydW1lbnRp
bmdBZ2VudHMtPmluc3BlY3RvclRpbWVsaW5lQWdlbnQoKSkKKyAgICBpZiAoSW5zcGVjdG9yVGlt
ZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9y
VGltZWxpbmVBZ2VudCgpKQogICAgICAgICB0aW1lbGluZUFnZW50LT5kaWRSZW1vdmVUaW1lcih0
aW1lcklkLCBmcmFtZUZvclNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoY29udGV4dCkpOwogfQogCi1J
bnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3
aWxsQ2FsbEZ1bmN0aW9uSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdl
bnRzLCBjb25zdCBTdHJpbmcmIHNjcmlwdE5hbWUsIGludCBzY3JpcHRMaW5lLCBTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0KQorSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbENhbGxGdW5jdGlvbkltcGwoSW5zdHJ1bWVudGlu
Z0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgY29uc3QgU3RyaW5nJiBzY3JpcHROYW1lLCBp
bnQgc2NyaXB0TGluZSwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKIHsKICAgICBp
bnQgdGltZWxpbmVBZ2VudElkID0gMDsKLSAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCog
dGltZWxpbmVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvclRpbWVsaW5lQWdl
bnQoKSkgeworICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0g
aW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JUaW1lbGluZUFnZW50KCkpIHsKICAgICAgICAg
dGltZWxpbmVBZ2VudC0+d2lsbENhbGxGdW5jdGlvbihzY3JpcHROYW1lLCBzY3JpcHRMaW5lLCBm
cmFtZUZvclNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoY29udGV4dCkpOwogICAgICAgICB0aW1lbGlu
ZUFnZW50SWQgPSB0aW1lbGluZUFnZW50LT5pZCgpOwogICAgIH0KQEAgLTMxOCwxMiArMzIwLDEy
IEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDYWxsRnVuY3Rpb25JbXBsKGNv
bnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvCiAgICAgICAgIHRpbWVsaW5lQWdlbnQtPmRpZENh
bGxGdW5jdGlvbihmcmFtZUZvclNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoY29udGV4dCkpOwogfQog
Ci1JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Ojp3aWxsRGlzcGF0Y2hYSFJSZWFkeVN0YXRlQ2hhbmdlRXZlbnRJbXBsKEluc3RydW1lbnRpbmdB
Z2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIFhNTEh0dHBSZXF1ZXN0KiByZXF1ZXN0LCBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQorSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29v
a2llIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbERpc3BhdGNoWEhSUmVhZHlTdGF0ZUNo
YW5nZUV2ZW50SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBY
TUxIdHRwUmVxdWVzdCYgcmVxdWVzdCwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkK
IHsKICAgICBpbnQgdGltZWxpbmVBZ2VudElkID0gMDsKLSAgICBJbnNwZWN0b3JUaW1lbGluZUFn
ZW50KiB0aW1lbGluZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yVGltZWxp
bmVBZ2VudCgpOwotICAgIGlmICh0aW1lbGluZUFnZW50ICYmIHJlcXVlc3QtPmhhc0V2ZW50TGlz
dGVuZXJzKGV2ZW50TmFtZXMoKS5yZWFkeXN0YXRlY2hhbmdlRXZlbnQpKSB7Ci0gICAgICAgIHRp
bWVsaW5lQWdlbnQtPndpbGxEaXNwYXRjaFhIUlJlYWR5U3RhdGVDaGFuZ2VFdmVudChyZXF1ZXN0
LT51cmwoKS5zdHJpbmcoKSwgcmVxdWVzdC0+cmVhZHlTdGF0ZSgpLCBmcmFtZUZvclNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoY29udGV4dCkpOworICAgIEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRp
bWVsaW5lQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvclRpbWVsaW5lQWdlbnQo
KTsKKyAgICBpZiAodGltZWxpbmVBZ2VudCAmJiByZXF1ZXN0Lmhhc0V2ZW50TGlzdGVuZXJzKGV2
ZW50TmFtZXMoKS5yZWFkeXN0YXRlY2hhbmdlRXZlbnQpKSB7CisgICAgICAgIHRpbWVsaW5lQWdl
bnQtPndpbGxEaXNwYXRjaFhIUlJlYWR5U3RhdGVDaGFuZ2VFdmVudChyZXF1ZXN0LnVybCgpLnN0
cmluZygpLCByZXF1ZXN0LnJlYWR5U3RhdGUoKSwgZnJhbWVGb3JTY3JpcHRFeGVjdXRpb25Db250
ZXh0KGNvbnRleHQpKTsKICAgICAgICAgdGltZWxpbmVBZ2VudElkID0gdGltZWxpbmVBZ2VudC0+
aWQoKTsKICAgICB9CiAgICAgcmV0dXJuIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZShp
bnN0cnVtZW50aW5nQWdlbnRzLCB0aW1lbGluZUFnZW50SWQpOwpAQCAtMzM1LDMwICszMzcsMzEg
QEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZERpc3BhdGNoWEhSUmVhZHlTdGF0
ZUNoYW5nZUV2ZW50SW1wbChjb25zdCBJbnMKICAgICAgICAgdGltZWxpbmVBZ2VudC0+ZGlkRGlz
cGF0Y2hYSFJSZWFkeVN0YXRlQ2hhbmdlRXZlbnQoKTsKIH0KIAotSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uQ29va2llIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbERpc3BhdGNoRXZlbnRJ
bXBsKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIGNvbnN0IEV2ZW50
JiBldmVudCwgYm9vbCBoYXNFdmVudExpc3RlbmVycywgRG9jdW1lbnQqIGRvY3VtZW50KQorSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2ls
bERpc3BhdGNoRXZlbnRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2Vu
dHMsIERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgRXZlbnQmIGV2ZW50LCBib29sIGhhc0V2ZW50
TGlzdGVuZXJzKQogewogICAgIGludCB0aW1lbGluZUFnZW50SWQgPSAwOwotICAgIEluc3BlY3Rv
clRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLT5pbnNw
ZWN0b3JUaW1lbGluZUFnZW50KCk7CisgICAgSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxp
bmVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpOwog
ICAgIGlmICh0aW1lbGluZUFnZW50ICYmIGhhc0V2ZW50TGlzdGVuZXJzKSB7Ci0gICAgICAgIHRp
bWVsaW5lQWdlbnQtPndpbGxEaXNwYXRjaEV2ZW50KGV2ZW50LCBkb2N1bWVudC0+ZnJhbWUoKSk7
CisgICAgICAgIHRpbWVsaW5lQWdlbnQtPndpbGxEaXNwYXRjaEV2ZW50KGV2ZW50LCBkb2N1bWVu
dC5mcmFtZSgpKTsKICAgICAgICAgdGltZWxpbmVBZ2VudElkID0gdGltZWxpbmVBZ2VudC0+aWQo
KTsKICAgICB9CiAjaWYgRU5BQkxFKFdFQl9SRVBMQVkpCi0gICAgaWYgKEluc3BlY3RvclJlcGxh
eUFnZW50KiByZXBsYXlBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvclJlcGxh
eUFnZW50KCkpCi0gICAgICAgIHJlcGxheUFnZW50LT53aWxsRGlzcGF0Y2hFdmVudChldmVudCwg
ZG9jdW1lbnQtPmZyYW1lKCkpOworICAgIGlmIChJbnNwZWN0b3JSZXBsYXlBZ2VudCogcmVwbGF5
QWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvclJlcGxheUFnZW50KCkpCisgICAg
ICAgIHJlcGxheUFnZW50LT53aWxsRGlzcGF0Y2hFdmVudChldmVudCwgZG9jdW1lbnQuZnJhbWUo
KSk7CiAjZW5kaWYKICAgICByZXR1cm4gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llKGlu
c3RydW1lbnRpbmdBZ2VudHMsIHRpbWVsaW5lQWdlbnRJZCk7CiB9CiAKLUluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbkNvb2tpZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxIYW5kbGVFdmVu
dEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgRXZlbnQqIGV2
ZW50KQorSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6d2lsbEhhbmRsZUV2ZW50SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50
aW5nQWdlbnRzLCBjb25zdCBFdmVudCYgZXZlbnQpCiB7Ci0gICAgcGF1c2VPbk5hdGl2ZUV2ZW50
SWZOZWVkZWQoaW5zdHJ1bWVudGluZ0FnZW50cywgdHJ1ZSwgZXZlbnQtPnR5cGUoKSwgZmFsc2Up
OworICAgIHBhdXNlT25OYXRpdmVFdmVudElmTmVlZGVkKGluc3RydW1lbnRpbmdBZ2VudHMsIHRy
dWUsIGV2ZW50LnR5cGUoKSwgZmFsc2UpOwogICAgIHJldHVybiBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb25Db29raWUoaW5zdHJ1bWVudGluZ0FnZW50cywgMCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpkaWRIYW5kbGVFdmVudEltcGwoY29uc3QgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uQ29va2llJiBjb29raWUpCiB7Ci0gICAgY2FuY2VsUGF1c2VPbk5hdGl2ZUV2ZW50
KGNvb2tpZS5pbnN0cnVtZW50aW5nQWdlbnRzKCkpOworICAgIGlmIChjb29raWUuaXNWYWxpZCgp
KQorICAgICAgICBjYW5jZWxQYXVzZU9uTmF0aXZlRXZlbnQoKmNvb2tpZS5pbnN0cnVtZW50aW5n
QWdlbnRzKCkpOwogfQogCiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRGlzcGF0
Y2hFdmVudEltcGwoY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llJiBjb29raWUp
CkBAIC0zNjcsMTcgKzM3MCwxNyBAQCB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlk
RGlzcGF0Y2hFdmVudEltcGwoY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aQogICAgICAgICB0
aW1lbGluZUFnZW50LT5kaWREaXNwYXRjaEV2ZW50KCk7CiB9CiAKLUluc3BlY3Rvckluc3RydW1l
bnRhdGlvbkNvb2tpZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxEaXNwYXRjaEV2ZW50
T25XaW5kb3dJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIGNv
bnN0IEV2ZW50JiBldmVudCwgRE9NV2luZG93KiB3aW5kb3cpCitJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb25Db29raWUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRGlzcGF0Y2hFdmVudE9u
V2luZG93SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBjb25z
dCBFdmVudCYgZXZlbnQsIERPTVdpbmRvdyYgd2luZG93KQogewogICAgIGludCB0aW1lbGluZUFn
ZW50SWQgPSAwOwotICAgIEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSBp
bnN0cnVtZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JUaW1lbGluZUFnZW50KCk7Ci0gICAgaWYgKHRp
bWVsaW5lQWdlbnQgJiYgd2luZG93LT5oYXNFdmVudExpc3RlbmVycyhldmVudC50eXBlKCkpKSB7
Ci0gICAgICAgIHRpbWVsaW5lQWdlbnQtPndpbGxEaXNwYXRjaEV2ZW50KGV2ZW50LCB3aW5kb3cg
PyB3aW5kb3ctPmZyYW1lKCkgOiBudWxscHRyKTsKKyAgICBJbnNwZWN0b3JUaW1lbGluZUFnZW50
KiB0aW1lbGluZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JUaW1lbGluZUFn
ZW50KCk7CisgICAgaWYgKHRpbWVsaW5lQWdlbnQgJiYgd2luZG93Lmhhc0V2ZW50TGlzdGVuZXJz
KGV2ZW50LnR5cGUoKSkpIHsKKyAgICAgICAgdGltZWxpbmVBZ2VudC0+d2lsbERpc3BhdGNoRXZl
bnQoZXZlbnQsIHdpbmRvdy5mcmFtZSgpKTsKICAgICAgICAgdGltZWxpbmVBZ2VudElkID0gdGlt
ZWxpbmVBZ2VudC0+aWQoKTsKICAgICB9CiAjaWYgRU5BQkxFKFdFQl9SRVBMQVkpCi0gICAgaWYg
KEluc3BlY3RvclJlcGxheUFnZW50KiByZXBsYXlBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMt
Pmluc3BlY3RvclJlcGxheUFnZW50KCkpCi0gICAgICAgIHJlcGxheUFnZW50LT53aWxsRGlzcGF0
Y2hFdmVudChldmVudCwgd2luZG93ID8gd2luZG93LT5mcmFtZSgpIDogbnVsbHB0cik7CisgICAg
aWYgKEluc3BlY3RvclJlcGxheUFnZW50KiByZXBsYXlBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2Vu
dHMuaW5zcGVjdG9yUmVwbGF5QWdlbnQoKSkKKyAgICAgICAgcmVwbGF5QWdlbnQtPndpbGxEaXNw
YXRjaEV2ZW50KGV2ZW50LCB3aW5kb3cuZnJhbWUoKSk7CiAjZW5kaWYKICAgICByZXR1cm4gSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llKGluc3RydW1lbnRpbmdBZ2VudHMsIHRpbWVsaW5l
QWdlbnRJZCk7CiB9CkBAIC0zODgsNDAgKzM5MSwzNCBAQCB2b2lkIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6ZGlkRGlzcGF0Y2hFdmVudE9uV2luZG93SW1wbChjb25zdCBJbnNwZWN0b3JJbnN0
cgogICAgICAgICB0aW1lbGluZUFnZW50LT5kaWREaXNwYXRjaEV2ZW50KCk7CiB9CiAKLUluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxF
dmFsdWF0ZVNjcmlwdEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50
cywgY29uc3QgU3RyaW5nJiB1cmwsIGludCBsaW5lTnVtYmVyLCBGcmFtZSogZnJhbWUpCitJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxs
RXZhbHVhdGVTY3JpcHRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2Vu
dHMsIEZyYW1lJiBmcmFtZSwgY29uc3QgU3RyaW5nJiB1cmwsIGludCBsaW5lTnVtYmVyKQogewog
ICAgIGludCB0aW1lbGluZUFnZW50SWQgPSAwOwotICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFn
ZW50KiB0aW1lbGluZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yVGltZWxp
bmVBZ2VudCgpKSB7Ci0gICAgICAgIHRpbWVsaW5lQWdlbnQtPndpbGxFdmFsdWF0ZVNjcmlwdCh1
cmwsIGxpbmVOdW1iZXIsIGZyYW1lKTsKKyAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCog
dGltZWxpbmVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dCgpKSB7CisgICAgICAgIHRpbWVsaW5lQWdlbnQtPndpbGxFdmFsdWF0ZVNjcmlwdCh1cmwsIGxp
bmVOdW1iZXIsICZmcmFtZSk7CiAgICAgICAgIHRpbWVsaW5lQWdlbnRJZCA9IHRpbWVsaW5lQWdl
bnQtPmlkKCk7CiAgICAgfQogICAgIHJldHVybiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29r
aWUoaW5zdHJ1bWVudGluZ0FnZW50cywgdGltZWxpbmVBZ2VudElkKTsKIH0KIAotdm9pZCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEV2YWx1YXRlU2NyaXB0SW1wbChjb25zdCBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb25Db29raWUmIGNvb2tpZSwgRnJhbWUqIGZyYW1lKQordm9pZCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEV2YWx1YXRlU2NyaXB0SW1wbChjb25zdCBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb25Db29raWUmIGNvb2tpZSwgRnJhbWUmIGZyYW1lKQogewogICAgIGlm
IChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gcmV0cmlldmVUaW1lbGlu
ZUFnZW50KGNvb2tpZSkpCi0gICAgICAgIHRpbWVsaW5lQWdlbnQtPmRpZEV2YWx1YXRlU2NyaXB0
KGZyYW1lKTsKKyAgICAgICAgdGltZWxpbmVBZ2VudC0+ZGlkRXZhbHVhdGVTY3JpcHQoJmZyYW1l
KTsKIH0KIAotdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNjcmlwdHNFbmFibGVkSW1w
bChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBib29sIGlzRW5hYmxl
ZCkKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzY3JpcHRzRW5hYmxlZEltcGwoSW5z
dHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgYm9vbCBpc0VuYWJsZWQpCiB7
Ci0gICAgaWYgKEluc3BlY3RvclBhZ2VBZ2VudCogcGFnZUFnZW50ID0gaW5zdHJ1bWVudGluZ0Fn
ZW50cy0+aW5zcGVjdG9yUGFnZUFnZW50KCkpCisgICAgaWYgKEluc3BlY3RvclBhZ2VBZ2VudCog
cGFnZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JQYWdlQWdlbnQoKSkKICAg
ICAgICAgcGFnZUFnZW50LT5zY3JpcHRzRW5hYmxlZChpc0VuYWJsZWQpOwogfQogCi12b2lkIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ3JlYXRlSXNvbGF0ZWRDb250ZXh0SW1wbChJbnN0
cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBGcmFtZSogZnJhbWUsIEpTQzo6
RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSwgU2VjdXJpdHlPcmlnaW4qIG9yaWdpbikKLXsKLSAgICBp
ZiAoUGFnZVJ1bnRpbWVBZ2VudCogcnVudGltZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+
cGFnZVJ1bnRpbWVBZ2VudCgpKQotICAgICAgICBydW50aW1lQWdlbnQtPmRpZENyZWF0ZUlzb2xh
dGVkQ29udGV4dChmcmFtZSwgc2NyaXB0U3RhdGUsIG9yaWdpbik7Ci19Ci0KLUluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbkNvb2tpZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxGaXJlVGlt
ZXJJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIGludCB0aW1l
cklkLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQorSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uQ29va2llIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEZpcmVUaW1lckltcGwo
SW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgaW50IHRpbWVySWQsIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgcGF1c2VPbk5hdGl2ZUV2ZW50
SWZOZWVkZWQoaW5zdHJ1bWVudGluZ0FnZW50cywgZmFsc2UsIHRpbWVyRmlyZWRFdmVudE5hbWUs
IGZhbHNlKTsKIAogICAgIGludCB0aW1lbGluZUFnZW50SWQgPSAwOwotICAgIGlmIChJbnNwZWN0
b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5z
cGVjdG9yVGltZWxpbmVBZ2VudCgpKSB7CisgICAgaWYgKEluc3BlY3RvclRpbWVsaW5lQWdlbnQq
IHRpbWVsaW5lQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvclRpbWVsaW5lQWdl
bnQoKSkgewogICAgICAgICB0aW1lbGluZUFnZW50LT53aWxsRmlyZVRpbWVyKHRpbWVySWQsIGZy
YW1lRm9yU2NyaXB0RXhlY3V0aW9uQ29udGV4dChjb250ZXh0KSk7CiAgICAgICAgIHRpbWVsaW5l
QWdlbnRJZCA9IHRpbWVsaW5lQWdlbnQtPmlkKCk7CiAgICAgfQpAQCAtNDMwLDIzICs0MjcsMjQg
QEAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6d2lsbEZpcmVUaW1lckltcGwoSW5zdHIKIAogdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmRpZEZpcmVUaW1lckltcGwoY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2ll
JiBjb29raWUpCiB7Ci0gICAgY2FuY2VsUGF1c2VPbk5hdGl2ZUV2ZW50KGNvb2tpZS5pbnN0cnVt
ZW50aW5nQWdlbnRzKCkpOworICAgIGlmIChjb29raWUuaXNWYWxpZCgpKQorICAgICAgICBjYW5j
ZWxQYXVzZU9uTmF0aXZlRXZlbnQoKmNvb2tpZS5pbnN0cnVtZW50aW5nQWdlbnRzKCkpOwogCiAg
ICAgaWYgKEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSByZXRyaWV2ZVRp
bWVsaW5lQWdlbnQoY29va2llKSkKICAgICAgICAgdGltZWxpbmVBZ2VudC0+ZGlkRmlyZVRpbWVy
KCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRJbnZhbGlkYXRlTGF5
b3V0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBGcmFtZSog
ZnJhbWUpCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkSW52YWxpZGF0ZUxheW91
dEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgRnJhbWUmIGZy
YW1lKQogewotICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0g
aW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpKQotICAgICAgICB0
aW1lbGluZUFnZW50LT5kaWRJbnZhbGlkYXRlTGF5b3V0KGZyYW1lKTsKKyAgICBpZiAoSW5zcGVj
dG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5z
cGVjdG9yVGltZWxpbmVBZ2VudCgpKQorICAgICAgICB0aW1lbGluZUFnZW50LT5kaWRJbnZhbGlk
YXRlTGF5b3V0KCZmcmFtZSk7CiB9CiAKLUluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxMYXlvdXRJbXBsKEluc3RydW1lbnRpbmdBZ2Vu
dHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIEZyYW1lKiBmcmFtZSkKK0luc3BlY3Rvckluc3RydW1l
bnRhdGlvbkNvb2tpZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxMYXlvdXRJbXBsKElu
c3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIEZyYW1lJiBmcmFtZSkKIHsK
ICAgICBpbnQgdGltZWxpbmVBZ2VudElkID0gMDsKLSAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVB
Z2VudCogdGltZWxpbmVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvclRpbWVs
aW5lQWdlbnQoKSkgewotICAgICAgICB0aW1lbGluZUFnZW50LT53aWxsTGF5b3V0KGZyYW1lKTsK
KyAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IGluc3RydW1l
bnRpbmdBZ2VudHMuaW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpKSB7CisgICAgICAgIHRpbWVsaW5l
QWdlbnQtPndpbGxMYXlvdXQoJmZyYW1lKTsKICAgICAgICAgdGltZWxpbmVBZ2VudElkID0gdGlt
ZWxpbmVBZ2VudC0+aWQoKTsKICAgICB9CiAgICAgcmV0dXJuIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbkNvb2tpZShpbnN0cnVtZW50aW5nQWdlbnRzLCB0aW1lbGluZUFnZW50SWQpOwpAQCAtNDYx
LDEyICs0NTksMTIgQEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZExheW91dElt
cGwoY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2kKICAgICAgICAgcGFnZUFnZW50
LT5kaWRMYXlvdXQoKTsKIH0KIAotSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbERpc3BhdGNoWEhSTG9hZEV2ZW50SW1wbChJbnN0cnVt
ZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBYTUxIdHRwUmVxdWVzdCogcmVxdWVz
dCwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKK0luc3BlY3Rvckluc3RydW1lbnRh
dGlvbkNvb2tpZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxEaXNwYXRjaFhIUkxvYWRF
dmVudEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgWE1MSHR0
cFJlcXVlc3QmIHJlcXVlc3QsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiB7CiAg
ICAgaW50IHRpbWVsaW5lQWdlbnRJZCA9IDA7Ci0gICAgSW5zcGVjdG9yVGltZWxpbmVBZ2VudCog
dGltZWxpbmVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvclRpbWVsaW5lQWdl
bnQoKTsKLSAgICBpZiAodGltZWxpbmVBZ2VudCAmJiByZXF1ZXN0LT5oYXNFdmVudExpc3RlbmVy
cyhldmVudE5hbWVzKCkubG9hZEV2ZW50KSkgewotICAgICAgICB0aW1lbGluZUFnZW50LT53aWxs
RGlzcGF0Y2hYSFJMb2FkRXZlbnQocmVxdWVzdC0+dXJsKCksIGZyYW1lRm9yU2NyaXB0RXhlY3V0
aW9uQ29udGV4dChjb250ZXh0KSk7CisgICAgSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxp
bmVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpOwor
ICAgIGlmICh0aW1lbGluZUFnZW50ICYmIHJlcXVlc3QuaGFzRXZlbnRMaXN0ZW5lcnMoZXZlbnRO
YW1lcygpLmxvYWRFdmVudCkpIHsKKyAgICAgICAgdGltZWxpbmVBZ2VudC0+d2lsbERpc3BhdGNo
WEhSTG9hZEV2ZW50KHJlcXVlc3QudXJsKCksIGZyYW1lRm9yU2NyaXB0RXhlY3V0aW9uQ29udGV4
dChjb250ZXh0KSk7CiAgICAgICAgIHRpbWVsaW5lQWdlbnRJZCA9IHRpbWVsaW5lQWdlbnQtPmlk
KCk7CiAgICAgfQogICAgIHJldHVybiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUoaW5z
dHJ1bWVudGluZ0FnZW50cywgdGltZWxpbmVBZ2VudElkKTsKQEAgLTQ3OCwxMDEgKzQ3NiwxMDUg
QEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZERpc3BhdGNoWEhSTG9hZEV2ZW50
SW1wbChjb25zdCBJbnNwZWN0b3JJbnN0cnUKICAgICAgICAgdGltZWxpbmVBZ2VudC0+ZGlkRGlz
cGF0Y2hYSFJMb2FkRXZlbnQoKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OndpbGxQYWludEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywg
UmVuZGVyT2JqZWN0KiByZW5kZXJlcikKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3
aWxsUGFpbnRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIFJl
bmRlck9iamVjdCogcmVuZGVyZXIpCiB7Ci0gICAgaWYgKEluc3BlY3RvclRpbWVsaW5lQWdlbnQq
IHRpbWVsaW5lQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JUaW1lbGluZUFn
ZW50KCkpCisgICAgaWYgKEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSBp
bnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvclRpbWVsaW5lQWdlbnQoKSkKICAgICAgICAgdGlt
ZWxpbmVBZ2VudC0+d2lsbFBhaW50KCZyZW5kZXJlci0+ZnJhbWUoKSk7CiB9CiAKLXZvaWQgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRQYWludEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyog
aW5zdHJ1bWVudGluZ0FnZW50cywgUmVuZGVyT2JqZWN0KiByZW5kZXJlciwgY29uc3QgTGF5b3V0
UmVjdCYgcmVjdCkKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRQYWludEltcGwo
SW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgUmVuZGVyT2JqZWN0KiBy
ZW5kZXJlciwgY29uc3QgTGF5b3V0UmVjdCYgcmVjdCkKIHsKLSAgICBpZiAoSW5zcGVjdG9yVGlt
ZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3Rv
clRpbWVsaW5lQWdlbnQoKSkKKyAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxp
bmVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpKQog
ICAgICAgICB0aW1lbGluZUFnZW50LT5kaWRQYWludChyZW5kZXJlciwgcmVjdCk7CiAKLSAgICBp
ZiAoSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLT5p
bnNwZWN0b3JQYWdlQWdlbnQoKSkKKyAgICBpZiAoSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdl
bnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvclBhZ2VBZ2VudCgpKQogICAgICAgICBw
YWdlQWdlbnQtPmRpZFBhaW50KHJlbmRlcmVyLCByZWN0KTsKIH0KIAotdm9pZCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OndpbGxTY3JvbGxMYXllckltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyog
aW5zdHJ1bWVudGluZ0FnZW50cywgRnJhbWUqIGZyYW1lKQordm9pZCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OndpbGxTY3JvbGxMYXllckltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1
bWVudGluZ0FnZW50cywgRnJhbWUmIGZyYW1lKQogewotICAgIGlmIChJbnNwZWN0b3JUaW1lbGlu
ZUFnZW50KiB0aW1lbGluZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yVGlt
ZWxpbmVBZ2VudCgpKQotICAgICAgICB0aW1lbGluZUFnZW50LT53aWxsU2Nyb2xsKGZyYW1lKTsK
KyAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IGluc3RydW1l
bnRpbmdBZ2VudHMuaW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpKQorICAgICAgICB0aW1lbGluZUFn
ZW50LT53aWxsU2Nyb2xsKCZmcmFtZSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpkaWRTY3JvbGxMYXllckltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGlu
Z0FnZW50cykKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRTY3JvbGxMYXllcklt
cGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cykKIHsKLSAgICBpZiAo
SW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2Vu
dHMtPmluc3BlY3RvclRpbWVsaW5lQWdlbnQoKSkKKyAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVB
Z2VudCogdGltZWxpbmVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yVGltZWxp
bmVBZ2VudCgpKQogICAgICAgICB0aW1lbGluZUFnZW50LT5kaWRTY3JvbGwoKTsKIH0KIAotSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2ls
bFJlY2FsY3VsYXRlU3R5bGVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdB
Z2VudHMsIEZyYW1lKiBmcmFtZSkKK0luc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxSZWNhbGN1bGF0ZVN0eWxlSW1wbChJbnN0cnVtZW50
aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBEb2N1bWVudCYgZG9jdW1lbnQpCiB7CiAg
ICAgaW50IHRpbWVsaW5lQWdlbnRJZCA9IDA7Ci0gICAgaWYgKEluc3BlY3RvclRpbWVsaW5lQWdl
bnQqIHRpbWVsaW5lQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JUaW1lbGlu
ZUFnZW50KCkpIHsKLSAgICAgICAgdGltZWxpbmVBZ2VudC0+d2lsbFJlY2FsY3VsYXRlU3R5bGUo
ZnJhbWUpOworICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0g
aW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JUaW1lbGluZUFnZW50KCkpIHsKKyAgICAgICAg
dGltZWxpbmVBZ2VudC0+d2lsbFJlY2FsY3VsYXRlU3R5bGUoZG9jdW1lbnQuZnJhbWUoKSk7CiAg
ICAgICAgIHRpbWVsaW5lQWdlbnRJZCA9IHRpbWVsaW5lQWdlbnQtPmlkKCk7CiAgICAgfQotICAg
IGlmIChJbnNwZWN0b3JSZXNvdXJjZUFnZW50KiByZXNvdXJjZUFnZW50ID0gaW5zdHJ1bWVudGlu
Z0FnZW50cy0+aW5zcGVjdG9yUmVzb3VyY2VBZ2VudCgpKQorICAgIGlmIChJbnNwZWN0b3JSZXNv
dXJjZUFnZW50KiByZXNvdXJjZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JS
ZXNvdXJjZUFnZW50KCkpCiAgICAgICAgIHJlc291cmNlQWdlbnQtPndpbGxSZWNhbGN1bGF0ZVN0
eWxlKCk7CiAgICAgcmV0dXJuIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZShpbnN0cnVt
ZW50aW5nQWdlbnRzLCB0aW1lbGluZUFnZW50SWQpOwogfQogCiB2b2lkIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZGlkUmVjYWxjdWxhdGVTdHlsZUltcGwoY29uc3QgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uQ29va2llJiBjb29raWUpCiB7CisgICAgaWYgKCFjb29raWUuaXNWYWxpZCgpKQor
ICAgICAgICByZXR1cm47CisgICAgCisgICAgSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVu
dGluZ0FnZW50cyA9ICpjb29raWUuaW5zdHJ1bWVudGluZ0FnZW50cygpOworCiAgICAgaWYgKElu
c3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSByZXRyaWV2ZVRpbWVsaW5lQWdl
bnQoY29va2llKSkKICAgICAgICAgdGltZWxpbmVBZ2VudC0+ZGlkUmVjYWxjdWxhdGVTdHlsZSgp
OwotICAgIEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMgPSBjb29raWUu
aW5zdHJ1bWVudGluZ0FnZW50cygpOwotICAgIGlmIChJbnNwZWN0b3JSZXNvdXJjZUFnZW50KiBy
ZXNvdXJjZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yUmVzb3VyY2VBZ2Vu
dCgpKQorICAgIGlmIChJbnNwZWN0b3JSZXNvdXJjZUFnZW50KiByZXNvdXJjZUFnZW50ID0gaW5z
dHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JSZXNvdXJjZUFnZW50KCkpCiAgICAgICAgIHJlc291
cmNlQWdlbnQtPmRpZFJlY2FsY3VsYXRlU3R5bGUoKTsKLSAgICBpZiAoSW5zcGVjdG9yUGFnZUFn
ZW50KiBwYWdlQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JQYWdlQWdlbnQo
KSkKKyAgICBpZiAoSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQgPSBpbnN0cnVtZW50aW5n
QWdlbnRzLmluc3BlY3RvclBhZ2VBZ2VudCgpKQogICAgICAgICBwYWdlQWdlbnQtPmRpZFJlY2Fs
Y3VsYXRlU3R5bGUoKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFNj
aGVkdWxlU3R5bGVSZWNhbGN1bGF0aW9uSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVt
ZW50aW5nQWdlbnRzLCBEb2N1bWVudCogZG9jdW1lbnQpCit2b2lkIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6ZGlkU2NoZWR1bGVTdHlsZVJlY2FsY3VsYXRpb25JbXBsKEluc3RydW1lbnRpbmdB
Z2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIERvY3VtZW50JiBkb2N1bWVudCkKIHsKLSAgICBp
ZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IGluc3RydW1lbnRpbmdB
Z2VudHMtPmluc3BlY3RvclRpbWVsaW5lQWdlbnQoKSkKLSAgICAgICAgdGltZWxpbmVBZ2VudC0+
ZGlkU2NoZWR1bGVTdHlsZVJlY2FsY3VsYXRpb24oZG9jdW1lbnQtPmZyYW1lKCkpOwotICAgIGlm
IChJbnNwZWN0b3JSZXNvdXJjZUFnZW50KiByZXNvdXJjZUFnZW50ID0gaW5zdHJ1bWVudGluZ0Fn
ZW50cy0+aW5zcGVjdG9yUmVzb3VyY2VBZ2VudCgpKQotICAgICAgICByZXNvdXJjZUFnZW50LT5k
aWRTY2hlZHVsZVN0eWxlUmVjYWxjdWxhdGlvbihkb2N1bWVudCk7CisgICAgaWYgKEluc3BlY3Rv
clRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3Bl
Y3RvclRpbWVsaW5lQWdlbnQoKSkKKyAgICAgICAgdGltZWxpbmVBZ2VudC0+ZGlkU2NoZWR1bGVT
dHlsZVJlY2FsY3VsYXRpb24oZG9jdW1lbnQuZnJhbWUoKSk7CisgICAgaWYgKEluc3BlY3RvclJl
c291cmNlQWdlbnQqIHJlc291cmNlQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3Rv
clJlc291cmNlQWdlbnQoKSkKKyAgICAgICAgcmVzb3VyY2VBZ2VudC0+ZGlkU2NoZWR1bGVTdHls
ZVJlY2FsY3VsYXRpb24oJmRvY3VtZW50KTsKIH0KIAotdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmFwcGx5RW11bGF0ZWRNZWRpYUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1
bWVudGluZ0FnZW50cywgU3RyaW5nKiBtZWRpYSkKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjphcHBseUVtdWxhdGVkTWVkaWFJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1l
bnRpbmdBZ2VudHMsIFN0cmluZyYgbWVkaWEpCiB7Ci0gICAgaWYgKEluc3BlY3RvclBhZ2VBZ2Vu
dCogcGFnZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yUGFnZUFnZW50KCkp
Ci0gICAgICAgIHBhZ2VBZ2VudC0+YXBwbHlFbXVsYXRlZE1lZGlhKG1lZGlhKTsKKyAgICBpZiAo
SW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3Bl
Y3RvclBhZ2VBZ2VudCgpKQorICAgICAgICBwYWdlQWdlbnQtPmFwcGx5RW11bGF0ZWRNZWRpYSgm
bWVkaWEpOwogfQogCi12b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFNlbmRSZXF1
ZXN0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCB1bnNpZ25l
ZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSkKK3Zv
aWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsU2VuZFJlcXVlc3RJbXBsKEluc3RydW1l
bnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmll
ciwgRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKQogewotICAgIGlmIChJbnNwZWN0
b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5z
cGVjdG9yVGltZWxpbmVBZ2VudCgpKQorICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0
aW1lbGluZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JUaW1lbGluZUFnZW50
KCkpCiAgICAgICAgIHRpbWVsaW5lQWdlbnQtPndpbGxTZW5kUmVzb3VyY2VSZXF1ZXN0KGlkZW50
aWZpZXIsIHJlcXVlc3QsIGxvYWRlci0+ZnJhbWUoKSk7Ci0gICAgaWYgKEluc3BlY3RvclJlc291
cmNlQWdlbnQqIHJlc291cmNlQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JS
ZXNvdXJjZUFnZW50KCkpCisgICAgaWYgKEluc3BlY3RvclJlc291cmNlQWdlbnQqIHJlc291cmNl
QWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvclJlc291cmNlQWdlbnQoKSkKICAg
ICAgICAgcmVzb3VyY2VBZ2VudC0+d2lsbFNlbmRSZXF1ZXN0KGlkZW50aWZpZXIsIGxvYWRlciwg
cmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpjb250aW51ZUFmdGVyUGluZ0xvYWRlckltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyog
aW5zdHJ1bWVudGluZ0FnZW50cywgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudExv
YWRlciogbG9hZGVyLCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIHJlc3BvbnNlKQordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNvbnRpbnVl
QWZ0ZXJQaW5nTG9hZGVySW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdl
bnRzLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2Up
CiB7CiAgICAgd2lsbFNlbmRSZXF1ZXN0SW1wbChpbnN0cnVtZW50aW5nQWdlbnRzLCBpZGVudGlm
aWVyLCBsb2FkZXIsIHJlcXVlc3QsIHJlc3BvbnNlKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246Om1hcmtSZXNvdXJjZUFzQ2FjaGVkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRz
KiBpbnN0cnVtZW50aW5nQWdlbnRzLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpCit2b2lkIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6bWFya1Jlc291cmNlQXNDYWNoZWRJbXBsKEluc3RydW1l
bnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmll
cikKIHsKLSAgICBpZiAoSW5zcGVjdG9yUmVzb3VyY2VBZ2VudCogcmVzb3VyY2VBZ2VudCA9IGlu
c3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvclJlc291cmNlQWdlbnQoKSkKKyAgICBpZiAoSW5z
cGVjdG9yUmVzb3VyY2VBZ2VudCogcmVzb3VyY2VBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMu
aW5zcGVjdG9yUmVzb3VyY2VBZ2VudCgpKQogICAgICAgICByZXNvdXJjZUFnZW50LT5tYXJrUmVz
b3VyY2VBc0NhY2hlZChpZGVudGlmaWVyKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmRpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZUltcGwoSW5zdHJ1bWVudGluZ0Fn
ZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgQ2FjaGVk
UmVzb3VyY2UqIGNhY2hlZFJlc291cmNlKQordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmRpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYg
aW5zdHJ1bWVudGluZ0FnZW50cywgRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgQ2FjaGVkUmVzb3Vy
Y2UqIGNhY2hlZFJlc291cmNlKQogewotICAgIGlmICghaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5z
cGVjdG9yRW52aXJvbm1lbnQoKS5kZXZlbG9wZXJFeHRyYXNFbmFibGVkKCkpCisgICAgaWYgKCFp
bnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckVudmlyb25tZW50KCkuZGV2ZWxvcGVyRXh0cmFz
RW5hYmxlZCgpKQogICAgICAgICByZXR1cm47Ci0gICAgaWYgKEluc3BlY3RvclJlc291cmNlQWdl
bnQqIHJlc291cmNlQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JSZXNvdXJj
ZUFnZW50KCkpCisgICAgaWYgKEluc3BlY3RvclJlc291cmNlQWdlbnQqIHJlc291cmNlQWdlbnQg
PSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvclJlc291cmNlQWdlbnQoKSkKICAgICAgICAg
cmVzb3VyY2VBZ2VudC0+ZGlkTG9hZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlKGxvYWRlciwgY2Fj
aGVkUmVzb3VyY2UpOwogfQogCi1JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUmVjZWl2ZVJlc291cmNlRGF0YUltcGwoSW5zdHJ1bWVu
dGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
LCBGcmFtZSogZnJhbWUsIGludCBsZW5ndGgpCitJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29r
aWUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUmVjZWl2ZVJlc291cmNlRGF0YUltcGwo
SW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgRnJhbWUqIGZyYW1lLCB1
bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGludCBsZW5ndGgpCiB7CiAgICAgaW50IHRpbWVsaW5l
QWdlbnRJZCA9IDA7Ci0gICAgaWYgKEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdl
bnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JUaW1lbGluZUFnZW50KCkpIHsKKyAg
ICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IGluc3RydW1lbnRp
bmdBZ2VudHMuaW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpKSB7CiAgICAgICAgIHRpbWVsaW5lQWdl
bnQtPndpbGxSZWNlaXZlUmVzb3VyY2VEYXRhKGlkZW50aWZpZXIsIGZyYW1lLCBsZW5ndGgpOwog
ICAgICAgICB0aW1lbGluZUFnZW50SWQgPSB0aW1lbGluZUFnZW50LT5pZCgpOwogICAgIH0KQEAg
LTU4NSwxMCArNTg3LDEwIEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNl
aXZlUmVzb3VyY2VEYXRhSW1wbChjb25zdCBJbnNwZWN0b3JJbnN0cnVtCiAgICAgICAgIHRpbWVs
aW5lQWdlbnQtPmRpZFJlY2VpdmVSZXNvdXJjZURhdGEoKTsKIH0KIAotSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uQ29va2llIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFJlY2VpdmVSZXNv
dXJjZVJlc3BvbnNlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRz
LCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlLCBGcmFtZSogZnJhbWUpCitJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUmVjZWl2ZVJlc291cmNlUmVzcG9uc2VJbXBsKEluc3Ry
dW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIEZyYW1lKiBmcmFtZSwgdW5zaWdu
ZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsK
ICAgICBpbnQgdGltZWxpbmVBZ2VudElkID0gMDsKLSAgICBJbnNwZWN0b3JUaW1lbGluZUFnZW50
KiB0aW1lbGluZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yVGltZWxpbmVB
Z2VudCgpOworICAgIEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSBpbnN0
cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvclRpbWVsaW5lQWdlbnQoKTsKICAgICBpZiAodGltZWxp
bmVBZ2VudCkgewogICAgICAgICB0aW1lbGluZUFnZW50LT53aWxsUmVjZWl2ZVJlc291cmNlUmVz
cG9uc2UoaWRlbnRpZmllciwgcmVzcG9uc2UsIGZyYW1lKTsKICAgICAgICAgdGltZWxpbmVBZ2Vu
dElkID0gdGltZWxpbmVBZ2VudC0+aWQoKTsKQEAgLTU5OCwyMTUgKzYwMCwyMjAgQEAgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFJl
Y2VpdmVSZXNvdXJjZVJlc3AKIAogdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJl
Y2VpdmVSZXNvdXJjZVJlc3BvbnNlSW1wbChjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25D
b29raWUmIGNvb2tpZSwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciog
bG9hZGVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVzb3VyY2VMb2FkZXIq
IHJlc291cmNlTG9hZGVyKQogewotICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1l
bGluZUFnZW50ID0gcmV0cmlldmVUaW1lbGluZUFnZW50KGNvb2tpZSkpCi0gICAgICAgIHRpbWVs
aW5lQWdlbnQtPmRpZFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlKCk7CisgICAgaWYgKCFjb29raWUu
aXNWYWxpZCgpKQorICAgICAgICByZXR1cm47CisKICAgICBpZiAoIWxvYWRlcikKICAgICAgICAg
cmV0dXJuOwotICAgIEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMgPSBj
b29raWUuaW5zdHJ1bWVudGluZ0FnZW50cygpOwotICAgIGlmIChJbnNwZWN0b3JSZXNvdXJjZUFn
ZW50KiByZXNvdXJjZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yUmVzb3Vy
Y2VBZ2VudCgpKQorCisgICAgSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50
cyA9ICpjb29raWUuaW5zdHJ1bWVudGluZ0FnZW50cygpOworCisgICAgaWYgKEluc3BlY3RvclRp
bWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSByZXRyaWV2ZVRpbWVsaW5lQWdlbnQoY29va2ll
KSkKKyAgICAgICAgdGltZWxpbmVBZ2VudC0+ZGlkUmVjZWl2ZVJlc291cmNlUmVzcG9uc2UoKTsK
KyAgICBpZiAoSW5zcGVjdG9yUmVzb3VyY2VBZ2VudCogcmVzb3VyY2VBZ2VudCA9IGluc3RydW1l
bnRpbmdBZ2VudHMuaW5zcGVjdG9yUmVzb3VyY2VBZ2VudCgpKQogICAgICAgICByZXNvdXJjZUFn
ZW50LT5kaWRSZWNlaXZlUmVzcG9uc2UoaWRlbnRpZmllciwgbG9hZGVyLCByZXNwb25zZSwgcmVz
b3VyY2VMb2FkZXIpOwotICAgIGlmIChXZWJDb25zb2xlQWdlbnQqIGNvbnNvbGVBZ2VudCA9IGlu
c3RydW1lbnRpbmdBZ2VudHMtPndlYkNvbnNvbGVBZ2VudCgpKQorICAgIGlmIChXZWJDb25zb2xl
QWdlbnQqIGNvbnNvbGVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMud2ViQ29uc29sZUFnZW50
KCkpCiAgICAgICAgIGNvbnNvbGVBZ2VudC0+ZGlkUmVjZWl2ZVJlc3BvbnNlKGlkZW50aWZpZXIs
IHJlc3BvbnNlKTsgLy8gVGhpcyBzaG91bGQgY29tZSBBRlRFUiByZXNvdXJjZSBub3RpZmljYXRp
b24sIGZyb250LWVuZCByZWxpZXMgb24gdGhpcy4KIH0KIAotdm9pZCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmRpZFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlQnV0Q2FuY2VsZWRJbXBsKEZyYW1l
KiBmcmFtZSwgRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByKQordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmRpZFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlQnV0Q2FuY2VsZWRJbXBsKEZyYW1lKiBmcmFt
ZSwgRG9jdW1lbnRMb2FkZXImIGxvYWRlciwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiByKQogewogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNv
b2tpZSBjb29raWUgPSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxSZWNlaXZlUmVzb3Vy
Y2VSZXNwb25zZShmcmFtZSwgaWRlbnRpZmllciwgcik7Ci0gICAgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpkaWRSZWNlaXZlUmVzb3VyY2VSZXNwb25zZShjb29raWUsIGlkZW50aWZpZXIsIGxv
YWRlciwgciwgbnVsbHB0cik7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNl
aXZlUmVzb3VyY2VSZXNwb25zZShjb29raWUsIGlkZW50aWZpZXIsICZsb2FkZXIsIHIsIG51bGxw
dHIpOwogfQogCi12b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Y29udGludWVBZnRlclhG
cmFtZU9wdGlvbnNEZW5pZWRJbXBsKEZyYW1lKiBmcmFtZSwgRG9jdW1lbnRMb2FkZXIqIGxvYWRl
ciwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByKQor
dm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNvbnRpbnVlQWZ0ZXJYRnJhbWVPcHRpb25z
RGVuaWVkSW1wbChGcmFtZSogZnJhbWUsIERvY3VtZW50TG9hZGVyJiBsb2FkZXIsIHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcikKIHsKICAgICBkaWRS
ZWNlaXZlUmVzb3VyY2VSZXNwb25zZUJ1dENhbmNlbGVkSW1wbChmcmFtZSwgbG9hZGVyLCBpZGVu
dGlmaWVyLCByKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNvbnRpbnVl
V2l0aFBvbGljeURvd25sb2FkSW1wbChGcmFtZSogZnJhbWUsIERvY3VtZW50TG9hZGVyKiBsb2Fk
ZXIsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcikK
K3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjb250aW51ZVdpdGhQb2xpY3lEb3dubG9h
ZEltcGwoRnJhbWUqIGZyYW1lLCBEb2N1bWVudExvYWRlciYgbG9hZGVyLCB1bnNpZ25lZCBsb25n
IGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHIpCiB7CiAgICAgZGlkUmVjZWl2
ZVJlc291cmNlUmVzcG9uc2VCdXRDYW5jZWxlZEltcGwoZnJhbWUsIGxvYWRlciwgaWRlbnRpZmll
ciwgcik7CiB9CiAKLXZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjb250aW51ZVdpdGhQ
b2xpY3lJZ25vcmVJbXBsKEZyYW1lKiBmcmFtZSwgRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgdW5z
aWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByKQordm9pZCBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNvbnRpbnVlV2l0aFBvbGljeUlnbm9yZUltcGwoRnJh
bWUqIGZyYW1lLCBEb2N1bWVudExvYWRlciYgbG9hZGVyLCB1bnNpZ25lZCBsb25nIGlkZW50aWZp
ZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHIpCiB7CiAgICAgZGlkUmVjZWl2ZVJlc291cmNl
UmVzcG9uc2VCdXRDYW5jZWxlZEltcGwoZnJhbWUsIGxvYWRlciwgaWRlbnRpZmllciwgcik7CiB9
CiAKLXZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0YUltcGwoSW5z
dHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgdW5zaWduZWQgbG9uZyBpZGVu
dGlmaWVyLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxlbmd0aCwgaW50IGVuY29kZWREYXRh
TGVuZ3RoKQordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVEYXRhSW1w
bChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCB1bnNpZ25lZCBsb25n
IGlkZW50aWZpZXIsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoLCBpbnQgZW5jb2Rl
ZERhdGFMZW5ndGgpCiB7Ci0gICAgaWYgKEluc3BlY3RvclJlc291cmNlQWdlbnQqIHJlc291cmNl
QWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JSZXNvdXJjZUFnZW50KCkpCisg
ICAgaWYgKEluc3BlY3RvclJlc291cmNlQWdlbnQqIHJlc291cmNlQWdlbnQgPSBpbnN0cnVtZW50
aW5nQWdlbnRzLmluc3BlY3RvclJlc291cmNlQWdlbnQoKSkKICAgICAgICAgcmVzb3VyY2VBZ2Vu
dC0+ZGlkUmVjZWl2ZURhdGEoaWRlbnRpZmllciwgZGF0YSwgZGF0YUxlbmd0aCwgZW5jb2RlZERh
dGFMZW5ndGgpOwogfQogCi12b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmluaXNo
TG9hZGluZ0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgdW5z
aWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciogbG9hZGVyLCBkb3VibGUgZmlu
aXNoVGltZSkKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGaW5pc2hMb2FkaW5n
SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCB1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGRvdWJsZSBmaW5pc2hUaW1l
KQogewotICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gaW5z
dHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpKQorICAgIGlmIChJbnNw
ZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5p
bnNwZWN0b3JUaW1lbGluZUFnZW50KCkpCiAgICAgICAgIHRpbWVsaW5lQWdlbnQtPmRpZEZpbmlz
aExvYWRpbmdSZXNvdXJjZShpZGVudGlmaWVyLCBmYWxzZSwgZmluaXNoVGltZSwgbG9hZGVyLT5m
cmFtZSgpKTsKLSAgICBpZiAoSW5zcGVjdG9yUmVzb3VyY2VBZ2VudCogcmVzb3VyY2VBZ2VudCA9
IGluc3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvclJlc291cmNlQWdlbnQoKSkKKyAgICBpZiAo
SW5zcGVjdG9yUmVzb3VyY2VBZ2VudCogcmVzb3VyY2VBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2Vu
dHMuaW5zcGVjdG9yUmVzb3VyY2VBZ2VudCgpKQogICAgICAgICByZXNvdXJjZUFnZW50LT5kaWRG
aW5pc2hMb2FkaW5nKGlkZW50aWZpZXIsIGxvYWRlciwgZmluaXNoVGltZSk7CiB9CiAKLXZvaWQg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGYWlsTG9hZGluZ0ltcGwoSW5zdHJ1bWVudGlu
Z0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBE
b2N1bWVudExvYWRlciogbG9hZGVyLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKK3ZvaWQg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGYWlsTG9hZGluZ0ltcGwoSW5zdHJ1bWVudGlu
Z0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBE
b2N1bWVudExvYWRlciogbG9hZGVyLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKIHsKLSAg
ICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IGluc3RydW1lbnRp
bmdBZ2VudHMtPmluc3BlY3RvclRpbWVsaW5lQWdlbnQoKSkKKyAgICBpZiAoSW5zcGVjdG9yVGlt
ZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9y
VGltZWxpbmVBZ2VudCgpKQogICAgICAgICB0aW1lbGluZUFnZW50LT5kaWRGaW5pc2hMb2FkaW5n
UmVzb3VyY2UoaWRlbnRpZmllciwgdHJ1ZSwgMCwgbG9hZGVyLT5mcmFtZSgpKTsKLSAgICBpZiAo
SW5zcGVjdG9yUmVzb3VyY2VBZ2VudCogcmVzb3VyY2VBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2Vu
dHMtPmluc3BlY3RvclJlc291cmNlQWdlbnQoKSkKKyAgICBpZiAoSW5zcGVjdG9yUmVzb3VyY2VB
Z2VudCogcmVzb3VyY2VBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yUmVzb3Vy
Y2VBZ2VudCgpKQogICAgICAgICByZXNvdXJjZUFnZW50LT5kaWRGYWlsTG9hZGluZyhpZGVudGlm
aWVyLCBsb2FkZXIsIGVycm9yKTsKLSAgICBpZiAoV2ViQ29uc29sZUFnZW50KiBjb25zb2xlQWdl
bnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLT53ZWJDb25zb2xlQWdlbnQoKSkKKyAgICBpZiAoV2Vi
Q29uc29sZUFnZW50KiBjb25zb2xlQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLndlYkNvbnNv
bGVBZ2VudCgpKQogICAgICAgICBjb25zb2xlQWdlbnQtPmRpZEZhaWxMb2FkaW5nKGlkZW50aWZp
ZXIsIGVycm9yKTsgLy8gVGhpcyBzaG91bGQgY29tZSBBRlRFUiByZXNvdXJjZSBub3RpZmljYXRp
b24sIGZyb250LWVuZCByZWxpZXMgb24gdGhpcy4KIH0KIAotdm9pZCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmRvY3VtZW50VGhyZWFkYWJsZUxvYWRlclN0YXJ0ZWRMb2FkaW5nRm9yQ2xpZW50
SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCB1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIsIFRocmVhZGFibGVMb2FkZXJDbGllbnQqIGNsaWVudCkKK3ZvaWQgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkb2N1bWVudFRocmVhZGFibGVMb2FkZXJTdGFydGVkTG9h
ZGluZ0ZvckNsaWVudEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50
cywgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50KiBjbGll
bnQpCiB7Ci0gICAgaWYgKEluc3BlY3RvclJlc291cmNlQWdlbnQqIHJlc291cmNlQWdlbnQgPSBp
bnN0cnVtZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JSZXNvdXJjZUFnZW50KCkpCisgICAgaWYgKElu
c3BlY3RvclJlc291cmNlQWdlbnQqIHJlc291cmNlQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRz
Lmluc3BlY3RvclJlc291cmNlQWdlbnQoKSkKICAgICAgICAgcmVzb3VyY2VBZ2VudC0+ZG9jdW1l
bnRUaHJlYWRhYmxlTG9hZGVyU3RhcnRlZExvYWRpbmdGb3JDbGllbnQoaWRlbnRpZmllciwgY2xp
ZW50KTsKIH0KIAotdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxMb2FkWEhSSW1w
bChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBUaHJlYWRhYmxlTG9h
ZGVyQ2xpZW50KiBjbGllbnQsIGNvbnN0IFN0cmluZyYgbWV0aG9kLCBjb25zdCBVUkwmIHVybCwg
Ym9vbCBhc3luYywgUGFzc1JlZlB0cjxGb3JtRGF0YT4gZm9ybURhdGEsIGNvbnN0IEhUVFBIZWFk
ZXJNYXAmIGhlYWRlcnMsIGJvb2wgaW5jbHVkZUNyZWRlbnRpYWxzKQordm9pZCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OndpbGxMb2FkWEhSSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0
cnVtZW50aW5nQWdlbnRzLCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50KiBjbGllbnQsIGNvbnN0IFN0
cmluZyYgbWV0aG9kLCBjb25zdCBVUkwmIHVybCwgYm9vbCBhc3luYywgUGFzc1JlZlB0cjxGb3Jt
RGF0YT4gZm9ybURhdGEsIGNvbnN0IEhUVFBIZWFkZXJNYXAmIGhlYWRlcnMsIGJvb2wgaW5jbHVk
ZUNyZWRlbnRpYWxzKQogewotICAgIGlmIChJbnNwZWN0b3JSZXNvdXJjZUFnZW50KiByZXNvdXJj
ZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yUmVzb3VyY2VBZ2VudCgpKQor
ICAgIGlmIChJbnNwZWN0b3JSZXNvdXJjZUFnZW50KiByZXNvdXJjZUFnZW50ID0gaW5zdHJ1bWVu
dGluZ0FnZW50cy5pbnNwZWN0b3JSZXNvdXJjZUFnZW50KCkpCiAgICAgICAgIHJlc291cmNlQWdl
bnQtPndpbGxMb2FkWEhSKGNsaWVudCwgbWV0aG9kLCB1cmwsIGFzeW5jLCBmb3JtRGF0YSwgaGVh
ZGVycywgaW5jbHVkZUNyZWRlbnRpYWxzKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmRpZEZhaWxYSFJMb2FkaW5nSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVt
ZW50aW5nQWdlbnRzLCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50KiBjbGllbnQpCit2b2lkIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmFpbFhIUkxvYWRpbmdJbXBsKEluc3RydW1lbnRpbmdB
Z2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIFRocmVhZGFibGVMb2FkZXJDbGllbnQqIGNsaWVu
dCkKIHsKLSAgICBpZiAoSW5zcGVjdG9yUmVzb3VyY2VBZ2VudCogcmVzb3VyY2VBZ2VudCA9IGlu
c3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvclJlc291cmNlQWdlbnQoKSkKKyAgICBpZiAoSW5z
cGVjdG9yUmVzb3VyY2VBZ2VudCogcmVzb3VyY2VBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMu
aW5zcGVjdG9yUmVzb3VyY2VBZ2VudCgpKQogICAgICAgICByZXNvdXJjZUFnZW50LT5kaWRGYWls
WEhSTG9hZGluZyhjbGllbnQpOwogfQogCi12b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
ZGlkRmluaXNoWEhSTG9hZGluZ0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGlu
Z0FnZW50cywgVGhyZWFkYWJsZUxvYWRlckNsaWVudCogY2xpZW50LCB1bnNpZ25lZCBsb25nIGlk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNlU3RyaW5nLCBjb25zdCBTdHJpbmcmIHVybCwg
Y29uc3QgU3RyaW5nJiBzZW5kVVJMLCB1bnNpZ25lZCBzZW5kTGluZU51bWJlciwgdW5zaWduZWQg
c2VuZENvbHVtbk51bWJlcikKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGaW5p
c2hYSFJMb2FkaW5nSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRz
LCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50KiBjbGllbnQsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmll
ciwgY29uc3QgU3RyaW5nJiBzb3VyY2VTdHJpbmcsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBT
dHJpbmcmIHNlbmRVUkwsIHVuc2lnbmVkIHNlbmRMaW5lTnVtYmVyLCB1bnNpZ25lZCBzZW5kQ29s
dW1uTnVtYmVyKQogewotICAgIGlmIChXZWJDb25zb2xlQWdlbnQqIGNvbnNvbGVBZ2VudCA9IGlu
c3RydW1lbnRpbmdBZ2VudHMtPndlYkNvbnNvbGVBZ2VudCgpKQorICAgIGlmIChXZWJDb25zb2xl
QWdlbnQqIGNvbnNvbGVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMud2ViQ29uc29sZUFnZW50
KCkpCiAgICAgICAgIGNvbnNvbGVBZ2VudC0+ZGlkRmluaXNoWEhSTG9hZGluZyhpZGVudGlmaWVy
LCB1cmwsIHNlbmRVUkwsIHNlbmRMaW5lTnVtYmVyLCBzZW5kQ29sdW1uTnVtYmVyKTsKLSAgICBp
ZiAoSW5zcGVjdG9yUmVzb3VyY2VBZ2VudCogcmVzb3VyY2VBZ2VudCA9IGluc3RydW1lbnRpbmdB
Z2VudHMtPmluc3BlY3RvclJlc291cmNlQWdlbnQoKSkKKyAgICBpZiAoSW5zcGVjdG9yUmVzb3Vy
Y2VBZ2VudCogcmVzb3VyY2VBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yUmVz
b3VyY2VBZ2VudCgpKQogICAgICAgICByZXNvdXJjZUFnZW50LT5kaWRGaW5pc2hYSFJMb2FkaW5n
KGNsaWVudCwgaWRlbnRpZmllciwgc291cmNlU3RyaW5nKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVYSFJSZXNwb25zZUltcGwoSW5zdHJ1bWVudGluZ0Fn
ZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKQordm9p
ZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVYSFJSZXNwb25zZUltcGwoSW5z
dHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgdW5zaWduZWQgbG9uZyBpZGVu
dGlmaWVyKQogewotICAgIGlmIChJbnNwZWN0b3JSZXNvdXJjZUFnZW50KiByZXNvdXJjZUFnZW50
ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yUmVzb3VyY2VBZ2VudCgpKQorICAgIGlm
IChJbnNwZWN0b3JSZXNvdXJjZUFnZW50KiByZXNvdXJjZUFnZW50ID0gaW5zdHJ1bWVudGluZ0Fn
ZW50cy5pbnNwZWN0b3JSZXNvdXJjZUFnZW50KCkpCiAgICAgICAgIHJlc291cmNlQWdlbnQtPmRp
ZFJlY2VpdmVYSFJSZXNwb25zZShpZGVudGlmaWVyKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OndpbGxMb2FkWEhSU3luY2hyb25vdXNseUltcGwoSW5zdHJ1bWVudGluZ0Fn
ZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cykKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Ojp3aWxsTG9hZFhIUlN5bmNocm9ub3VzbHlJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3Ry
dW1lbnRpbmdBZ2VudHMpCiB7Ci0gICAgaWYgKEluc3BlY3RvclJlc291cmNlQWdlbnQqIHJlc291
cmNlQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JSZXNvdXJjZUFnZW50KCkp
CisgICAgaWYgKEluc3BlY3RvclJlc291cmNlQWdlbnQqIHJlc291cmNlQWdlbnQgPSBpbnN0cnVt
ZW50aW5nQWdlbnRzLmluc3BlY3RvclJlc291cmNlQWdlbnQoKSkKICAgICAgICAgcmVzb3VyY2VB
Z2VudC0+d2lsbExvYWRYSFJTeW5jaHJvbm91c2x5KCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpkaWRMb2FkWEhSU3luY2hyb25vdXNseUltcGwoSW5zdHJ1bWVudGluZ0Fn
ZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cykKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpkaWRMb2FkWEhSU3luY2hyb25vdXNseUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1
bWVudGluZ0FnZW50cykKIHsKLSAgICBpZiAoSW5zcGVjdG9yUmVzb3VyY2VBZ2VudCogcmVzb3Vy
Y2VBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvclJlc291cmNlQWdlbnQoKSkK
KyAgICBpZiAoSW5zcGVjdG9yUmVzb3VyY2VBZ2VudCogcmVzb3VyY2VBZ2VudCA9IGluc3RydW1l
bnRpbmdBZ2VudHMuaW5zcGVjdG9yUmVzb3VyY2VBZ2VudCgpKQogICAgICAgICByZXNvdXJjZUFn
ZW50LT5kaWRMb2FkWEhSU3luY2hyb25vdXNseSgpOwogfQogCi12b2lkIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6c2NyaXB0SW1wb3J0ZWRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3Ry
dW1lbnRpbmdBZ2VudHMsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBz
b3VyY2VTdHJpbmcpCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c2NyaXB0SW1wb3J0
ZWRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VTdHJpbmcpCiB7Ci0gICAgaWYg
KEluc3BlY3RvclJlc291cmNlQWdlbnQqIHJlc291cmNlQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdl
bnRzLT5pbnNwZWN0b3JSZXNvdXJjZUFnZW50KCkpCisgICAgaWYgKEluc3BlY3RvclJlc291cmNl
QWdlbnQqIHJlc291cmNlQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvclJlc291
cmNlQWdlbnQoKSkKICAgICAgICAgcmVzb3VyY2VBZ2VudC0+c2V0SW5pdGlhbFNjcmlwdENvbnRl
bnQoaWRlbnRpZmllciwgc291cmNlU3RyaW5nKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OnNjcmlwdEV4ZWN1dGlvbkJsb2NrZWRCeUNTUEltcGwoSW5zdHJ1bWVudGluZ0Fn
ZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgY29uc3QgU3RyaW5nJiBkaXJlY3RpdmVUZXh0KQor
dm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNjcmlwdEV4ZWN1dGlvbkJsb2NrZWRCeUNT
UEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgY29uc3QgU3Ry
aW5nJiBkaXJlY3RpdmVUZXh0KQogewotICAgIGlmIChJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KiBk
ZWJ1Z2dlckFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dCgpKQorICAgIGlmIChJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KiBkZWJ1Z2dlckFnZW50ID0gaW5z
dHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JEZWJ1Z2dlckFnZW50KCkpCiAgICAgICAgIGRlYnVn
Z2VyQWdlbnQtPnNjcmlwdEV4ZWN1dGlvbkJsb2NrZWRCeUNTUChkaXJlY3RpdmVUZXh0KTsKIH0K
IAotdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVTY3JpcHRSZXNwb25z
ZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgdW5zaWduZWQg
bG9uZyBpZGVudGlmaWVyKQordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2Vp
dmVTY3JpcHRSZXNwb25zZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0Fn
ZW50cywgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKQogewotICAgIGlmIChJbnNwZWN0b3JSZXNv
dXJjZUFnZW50KiByZXNvdXJjZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9y
UmVzb3VyY2VBZ2VudCgpKQorICAgIGlmIChJbnNwZWN0b3JSZXNvdXJjZUFnZW50KiByZXNvdXJj
ZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JSZXNvdXJjZUFnZW50KCkpCiAg
ICAgICAgIHJlc291cmNlQWdlbnQtPmRpZFJlY2VpdmVTY3JpcHRSZXNwb25zZShpZGVudGlmaWVy
KTsKIH0KIAotdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRvbUNvbnRlbnRMb2FkZWRF
dmVudEZpcmVkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBG
cmFtZSogZnJhbWUpCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZG9tQ29udGVudExv
YWRlZEV2ZW50RmlyZWRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2Vu
dHMsIEZyYW1lJiBmcmFtZSkKIHsKLSAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGlt
ZWxpbmVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvclRpbWVsaW5lQWdlbnQo
KSkKLSAgICAgICAgdGltZWxpbmVBZ2VudC0+ZGlkTWFya0RPTUNvbnRlbnRFdmVudChmcmFtZSk7
CisgICAgaWYgKEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSBpbnN0cnVt
ZW50aW5nQWdlbnRzLmluc3BlY3RvclRpbWVsaW5lQWdlbnQoKSkKKyAgICAgICAgdGltZWxpbmVB
Z2VudC0+ZGlkTWFya0RPTUNvbnRlbnRFdmVudCgmZnJhbWUpOwogCi0gICAgaWYgKCZmcmFtZS0+
cGFnZSgpLT5tYWluRnJhbWUoKSAhPSBmcmFtZSkKKyAgICBpZiAoIWZyYW1lLmlzTWFpbkZyYW1l
KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChJbnNwZWN0b3JET01BZ2VudCogZG9tQWdl
bnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JET01BZ2VudCgpKQorICAgIGlmIChJ
bnNwZWN0b3JET01BZ2VudCogZG9tQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3Rv
ckRPTUFnZW50KCkpCiAgICAgICAgIGRvbUFnZW50LT5tYWluRnJhbWVET01Db250ZW50TG9hZGVk
KCk7CiAKLSAgICBpZiAoSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQgPSBpbnN0cnVtZW50
aW5nQWdlbnRzLT5pbnNwZWN0b3JQYWdlQWdlbnQoKSkKKyAgICBpZiAoSW5zcGVjdG9yUGFnZUFn
ZW50KiBwYWdlQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvclBhZ2VBZ2VudCgp
KQogICAgICAgICBwYWdlQWdlbnQtPmRvbUNvbnRlbnRFdmVudEZpcmVkKCk7CiB9CiAKLXZvaWQg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpsb2FkRXZlbnRGaXJlZEltcGwoSW5zdHJ1bWVudGlu
Z0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgRnJhbWUqIGZyYW1lKQordm9pZCBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OmxvYWRFdmVudEZpcmVkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRz
JiBpbnN0cnVtZW50aW5nQWdlbnRzLCBGcmFtZSogZnJhbWUpCiB7Ci0gICAgaWYgKEluc3BlY3Rv
clRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLT5pbnNw
ZWN0b3JUaW1lbGluZUFnZW50KCkpCisgICAgaWYgKEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRp
bWVsaW5lQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvclRpbWVsaW5lQWdlbnQo
KSkKICAgICAgICAgdGltZWxpbmVBZ2VudC0+ZGlkTWFya0xvYWRFdmVudChmcmFtZSk7CiAKLSAg
ICBpZiAoJmZyYW1lLT5wYWdlKCktPm1haW5GcmFtZSgpICE9IGZyYW1lKQorICAgIGlmICghZnJh
bWUtPmlzTWFpbkZyYW1lKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChJbnNwZWN0b3JQ
YWdlQWdlbnQqIHBhZ2VBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvclBhZ2VB
Z2VudCgpKQorICAgIGlmIChJbnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2VudCA9IGluc3RydW1l
bnRpbmdBZ2VudHMuaW5zcGVjdG9yUGFnZUFnZW50KCkpCiAgICAgICAgIHBhZ2VBZ2VudC0+bG9h
ZEV2ZW50RmlyZWQoKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmZyYW1l
RGV0YWNoZWRGcm9tUGFyZW50SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5n
QWdlbnRzLCBGcmFtZSogZnJhbWUpCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZnJh
bWVEZXRhY2hlZEZyb21QYXJlbnRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRp
bmdBZ2VudHMsIEZyYW1lJiBmcmFtZSkKIHsKLSAgICBpZiAoSW5zcGVjdG9yUGFnZUFnZW50KiBw
YWdlQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JQYWdlQWdlbnQoKSkKLSAg
ICAgICAgcGFnZUFnZW50LT5mcmFtZURldGFjaGVkKGZyYW1lKTsKKyAgICBpZiAoSW5zcGVjdG9y
UGFnZUFnZW50KiBwYWdlQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvclBhZ2VB
Z2VudCgpKQorICAgICAgICBwYWdlQWdlbnQtPmZyYW1lRGV0YWNoZWQoJmZyYW1lKTsKIAogI2lm
IEVOQUJMRShXRUJfUkVQTEFZKQotICAgIGlmIChmcmFtZS0+aXNNYWluRnJhbWUoKSkgewotICAg
ICAgICBpZiAoSW5zcGVjdG9yUmVwbGF5QWdlbnQqIHJlcGxheUFnZW50ID0gaW5zdHJ1bWVudGlu
Z0FnZW50cy0+aW5zcGVjdG9yUmVwbGF5QWdlbnQoKSkKLSAgICAgICAgICAgIHJlcGxheUFnZW50
LT5mcmFtZURldGFjaGVkKGZyYW1lKTsKKyAgICBpZiAoZnJhbWUuaXNNYWluRnJhbWUoKSkgewor
ICAgICAgICBpZiAoSW5zcGVjdG9yUmVwbGF5QWdlbnQqIHJlcGxheUFnZW50ID0gaW5zdHJ1bWVu
dGluZ0FnZW50cy5pbnNwZWN0b3JSZXBsYXlBZ2VudCgpKQorICAgICAgICAgICAgcmVwbGF5QWdl
bnQtPmZyYW1lRGV0YWNoZWQoJmZyYW1lKTsKICAgICB9CiAjZW5kaWYKIH0KIAotdm9pZCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENvbW1pdExvYWRJbXBsKEluc3RydW1lbnRpbmdBZ2Vu
dHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIFBhZ2UqIHBhZ2UsIERvY3VtZW50TG9hZGVyKiBsb2Fk
ZXIpCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ29tbWl0TG9hZEltcGwoSW5z
dHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgUGFnZSogcGFnZSwgRG9jdW1l
bnRMb2FkZXIqIGxvYWRlcikKIHsKLSAgICBpZiAoIWluc3RydW1lbnRpbmdBZ2VudHMtPmluc3Bl
Y3RvckVudmlyb25tZW50KCkuZGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCgpKQorICAgIGlmICghaW5z
dHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JFbnZpcm9ubWVudCgpLmRldmVsb3BlckV4dHJhc0Vu
YWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKGxvYWRlci0+ZnJhbWUoKS0+aXNN
YWluRnJhbWUoKSkgewotICAgICAgICBpZiAoV2ViQ29uc29sZUFnZW50KiBjb25zb2xlQWdlbnQg
PSBpbnN0cnVtZW50aW5nQWdlbnRzLT53ZWJDb25zb2xlQWdlbnQoKSkKKyAgICAgICAgaWYgKFdl
YkNvbnNvbGVBZ2VudCogY29uc29sZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy53ZWJDb25z
b2xlQWdlbnQoKSkKICAgICAgICAgICAgIGNvbnNvbGVBZ2VudC0+cmVzZXQoKTsKIAotICAgICAg
ICBpZiAoSW5zcGVjdG9yUmVzb3VyY2VBZ2VudCogcmVzb3VyY2VBZ2VudCA9IGluc3RydW1lbnRp
bmdBZ2VudHMtPmluc3BlY3RvclJlc291cmNlQWdlbnQoKSkKKyAgICAgICAgaWYgKEluc3BlY3Rv
clJlc291cmNlQWdlbnQqIHJlc291cmNlQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3Bl
Y3RvclJlc291cmNlQWdlbnQoKSkKICAgICAgICAgICAgIHJlc291cmNlQWdlbnQtPm1haW5GcmFt
ZU5hdmlnYXRlZChsb2FkZXIpOwogCi0gICAgICAgIGlmIChJbnNwZWN0b3JDU1NBZ2VudCogY3Nz
QWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JDU1NBZ2VudCgpKQorICAgICAg
ICBpZiAoSW5zcGVjdG9yQ1NTQWdlbnQqIGNzc0FnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5p
bnNwZWN0b3JDU1NBZ2VudCgpKQogICAgICAgICAgICAgY3NzQWdlbnQtPnJlc2V0KCk7CiAKICNp
ZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQotICAgICAgICBpZiAoSW5zcGVjdG9yRGF0YWJhc2VBZ2Vu
dCogZGF0YWJhc2VBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvckRhdGFiYXNl
QWdlbnQoKSkKKyAgICAgICAgaWYgKEluc3BlY3RvckRhdGFiYXNlQWdlbnQqIGRhdGFiYXNlQWdl
bnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckRhdGFiYXNlQWdlbnQoKSkKICAgICAg
ICAgICAgIGRhdGFiYXNlQWdlbnQtPmNsZWFyUmVzb3VyY2VzKCk7CiAjZW5kaWYKIAotICAgICAg
ICBpZiAoSW5zcGVjdG9yRE9NQWdlbnQqIGRvbUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+
aW5zcGVjdG9yRE9NQWdlbnQoKSkKKyAgICAgICAgaWYgKEluc3BlY3RvckRPTUFnZW50KiBkb21B
Z2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yRE9NQWdlbnQoKSkKICAgICAgICAg
ICAgIGRvbUFnZW50LT5zZXREb2N1bWVudChwYWdlLT5tYWluRnJhbWUoKS5kb2N1bWVudCgpKTsK
IAotICAgICAgICBpZiAoSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQqIGxheWVyVHJlZUFnZW50ID0g
aW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQoKSkKKyAgICAgICAg
aWYgKEluc3BlY3RvckxheWVyVHJlZUFnZW50KiBsYXllclRyZWVBZ2VudCA9IGluc3RydW1lbnRp
bmdBZ2VudHMuaW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQoKSkKICAgICAgICAgICAgIGxheWVyVHJl
ZUFnZW50LT5yZXNldCgpOwogICAgIH0KIAotICAgIGlmIChJbnNwZWN0b3JET01BZ2VudCogZG9t
QWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JET01BZ2VudCgpKQorICAgIGlm
IChJbnNwZWN0b3JET01BZ2VudCogZG9tQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3Bl
Y3RvckRPTUFnZW50KCkpCiAgICAgICAgIGRvbUFnZW50LT5kaWRDb21taXRMb2FkKGxvYWRlci0+
ZnJhbWUoKS0+ZG9jdW1lbnQoKSk7CiAKLSAgICBpZiAoSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdl
QWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JQYWdlQWdlbnQoKSkKKyAgICBp
ZiAoSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmlu
c3BlY3RvclBhZ2VBZ2VudCgpKQogICAgICAgICBwYWdlQWdlbnQtPmZyYW1lTmF2aWdhdGVkKGxv
YWRlcik7CiAKICNpZiBFTkFCTEUoV0VCX1JFUExBWSkKLSAgICBpZiAoSW5zcGVjdG9yUmVwbGF5
QWdlbnQqIHJlcGxheUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yUmVwbGF5
QWdlbnQoKSkKKyAgICBpZiAoSW5zcGVjdG9yUmVwbGF5QWdlbnQqIHJlcGxheUFnZW50ID0gaW5z
dHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JSZXBsYXlBZ2VudCgpKQogICAgICAgICByZXBsYXlB
Z2VudC0+ZnJhbWVOYXZpZ2F0ZWQobG9hZGVyKTsKICNlbmRpZgogfQogCi12b2lkIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6ZnJhbWVEb2N1bWVudFVwZGF0ZWRJbXBsKEluc3RydW1lbnRpbmdB
Z2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIEZyYW1lKiBmcmFtZSkKK3ZvaWQgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpmcmFtZURvY3VtZW50VXBkYXRlZEltcGwoSW5zdHJ1bWVudGluZ0Fn
ZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgRnJhbWUqIGZyYW1lKQogewotICAgIGlmICghaW5z
dHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yRW52aXJvbm1lbnQoKS5kZXZlbG9wZXJFeHRyYXNF
bmFibGVkKCkpCisgICAgaWYgKCFpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckVudmlyb25t
ZW50KCkuZGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCgpKQogICAgICAgICByZXR1cm47Ci0gICAgaWYg
KEluc3BlY3RvckRPTUFnZW50KiBkb21BZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMtPmluc3Bl
Y3RvckRPTUFnZW50KCkpCisgICAgaWYgKEluc3BlY3RvckRPTUFnZW50KiBkb21BZ2VudCA9IGlu
c3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yRE9NQWdlbnQoKSkKICAgICAgICAgZG9tQWdlbnQt
PmZyYW1lRG9jdW1lbnRVcGRhdGVkKGZyYW1lKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmxvYWRlckRldGFjaGVkRnJvbUZyYW1lSW1wbChJbnN0cnVtZW50aW5nQWdlbnRz
KiBpbnN0cnVtZW50aW5nQWdlbnRzLCBEb2N1bWVudExvYWRlciogbG9hZGVyKQordm9pZCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmxvYWRlckRldGFjaGVkRnJvbUZyYW1lSW1wbChJbnN0cnVt
ZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBEb2N1bWVudExvYWRlciYgbG9hZGVy
KQogewotICAgIGlmIChJbnNwZWN0b3JQYWdlQWdlbnQqIGluc3BlY3RvclBhZ2VBZ2VudCA9IGlu
c3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvclBhZ2VBZ2VudCgpKQotICAgICAgICBpbnNwZWN0
b3JQYWdlQWdlbnQtPmxvYWRlckRldGFjaGVkRnJvbUZyYW1lKGxvYWRlcik7CisgICAgaWYgKElu
c3BlY3RvclBhZ2VBZ2VudCogaW5zcGVjdG9yUGFnZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50
cy5pbnNwZWN0b3JQYWdlQWdlbnQoKSkKKyAgICAgICAgaW5zcGVjdG9yUGFnZUFnZW50LT5sb2Fk
ZXJEZXRhY2hlZEZyb21GcmFtZSgmbG9hZGVyKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmZyYW1lU3RhcnRlZExvYWRpbmdJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGlu
c3RydW1lbnRpbmdBZ2VudHMsIEZyYW1lJiBmcmFtZSkKQEAgLTgzMyw5ICs4NDAsOSBAQCB2b2lk
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZnJhbWVDbGVhcmVkU2NoZWR1bGVkTmF2aWdhdGlv
bkltcGwoSW5zdHJ1bWVudGluZwogICAgICAgICBpbnNwZWN0b3JQYWdlQWdlbnQtPmZyYW1lQ2xl
YXJlZFNjaGVkdWxlZE5hdmlnYXRpb24oZnJhbWUpOwogfQogCi1JbnNwZWN0b3JJbnN0cnVtZW50
YXRpb25Db29raWUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUnVuSmF2YVNjcmlwdERp
YWxvZ0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgY29uc3Qg
U3RyaW5nJiBtZXNzYWdlKQorSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6d2lsbFJ1bkphdmFTY3JpcHREaWFsb2dJbXBsKEluc3RydW1lbnRp
bmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsK
LSAgICBpZiAoSW5zcGVjdG9yUGFnZUFnZW50KiBpbnNwZWN0b3JQYWdlQWdlbnQgPSBpbnN0cnVt
ZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JQYWdlQWdlbnQoKSkKKyAgICBpZiAoSW5zcGVjdG9yUGFn
ZUFnZW50KiBpbnNwZWN0b3JQYWdlQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3Rv
clBhZ2VBZ2VudCgpKQogICAgICAgICBpbnNwZWN0b3JQYWdlQWdlbnQtPndpbGxSdW5KYXZhU2Ny
aXB0RGlhbG9nKG1lc3NhZ2UpOwogICAgIHJldHVybiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25D
b29raWUoaW5zdHJ1bWVudGluZ0FnZW50cywgMCk7CiB9CkBAIC04NDYsMjIgKzg1MywyMSBAQCB2
b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUnVuSmF2YVNjcmlwdERpYWxvZ0ltcGwo
Y29uc3QgSW5zcGVjdG9ySW5zdHJ1bQogICAgICAgICBpbnNwZWN0b3JQYWdlQWdlbnQtPmRpZFJ1
bkphdmFTY3JpcHREaWFsb2coKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OndpbGxEZXN0cm95Q2FjaGVkUmVzb3VyY2VJbXBsKENhY2hlZFJlc291cmNlKiBjYWNoZWRSZXNv
dXJjZSkKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRGVzdHJveUNhY2hlZFJl
c291cmNlSW1wbChDYWNoZWRSZXNvdXJjZSYgY2FjaGVkUmVzb3VyY2UpCiB7Ci0gICAgaWYgKCFp
bnN0cnVtZW50aW5nQWdlbnRzU2V0KQorICAgIGlmICghc19pbnN0cnVtZW50aW5nQWdlbnRzU2V0
KQogICAgICAgICByZXR1cm47Ci0gICAgSGFzaFNldDxJbnN0cnVtZW50aW5nQWdlbnRzKj46Oml0
ZXJhdG9yIGVuZCA9IGluc3RydW1lbnRpbmdBZ2VudHNTZXQtPmVuZCgpOwotICAgIGZvciAoSGFz
aFNldDxJbnN0cnVtZW50aW5nQWdlbnRzKj46Oml0ZXJhdG9yIGl0ID0gaW5zdHJ1bWVudGluZ0Fn
ZW50c1NldC0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgIEluc3RydW1lbnRp
bmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMgPSAqaXQ7Ci0gICAgICAgIGlmIChJbnNwZWN0
b3JSZXNvdXJjZUFnZW50KiBpbnNwZWN0b3JSZXNvdXJjZUFnZW50ID0gaW5zdHJ1bWVudGluZ0Fn
ZW50cy0+aW5zcGVjdG9yUmVzb3VyY2VBZ2VudCgpKQotICAgICAgICAgICAgaW5zcGVjdG9yUmVz
b3VyY2VBZ2VudC0+d2lsbERlc3Ryb3lDYWNoZWRSZXNvdXJjZShjYWNoZWRSZXNvdXJjZSk7CisK
KyAgICBmb3IgKGF1dG8qIGluc3RydW1lbnRpbmdBZ2VudCA6ICpzX2luc3RydW1lbnRpbmdBZ2Vu
dHNTZXQpIHsKKyAgICAgICAgaWYgKEluc3BlY3RvclJlc291cmNlQWdlbnQqIGluc3BlY3RvclJl
c291cmNlQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnQtPmluc3BlY3RvclJlc291cmNlQWdlbnQo
KSkKKyAgICAgICAgICAgIGluc3BlY3RvclJlc291cmNlQWdlbnQtPndpbGxEZXN0cm95Q2FjaGVk
UmVzb3VyY2UoJmNhY2hlZFJlc291cmNlKTsKICAgICB9CiB9CiAKLUluc3BlY3Rvckluc3RydW1l
bnRhdGlvbkNvb2tpZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxXcml0ZUhUTUxJbXBs
KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIHVuc2lnbmVkIHN0YXJ0
TGluZSwgRnJhbWUqIGZyYW1lKQorSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFdyaXRlSFRNTEltcGwoSW5zdHJ1bWVudGluZ0FnZW50
cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgdW5zaWduZWQgc3RhcnRMaW5lLCBGcmFtZSogZnJhbWUp
CiB7CiAgICAgaW50IHRpbWVsaW5lQWdlbnRJZCA9IDA7Ci0gICAgaWYgKEluc3BlY3RvclRpbWVs
aW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JU
aW1lbGluZUFnZW50KCkpIHsKKyAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxp
bmVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpKSB7
CiAgICAgICAgIHRpbWVsaW5lQWdlbnQtPndpbGxXcml0ZUhUTUwoc3RhcnRMaW5lLCBmcmFtZSk7
CiAgICAgICAgIHRpbWVsaW5lQWdlbnRJZCA9IHRpbWVsaW5lQWdlbnQtPmlkKCk7CiAgICAgfQpA
QCAtODgxLDEwOSArODg3LDEwOSBAQCBzdGF0aWMgYm9vbCBpc0NvbnNvbGVBc3NlcnRNZXNzYWdl
KE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlVHlwZSB0eXBlKQogfQogCiAvLyBGSVhNRTog
RHJvcCB0aGlzIG9uY2Ugd2Ugbm8gbG9uZ2VyIGdlbmVyYXRlIHN0YWNrcyBvdXRzaWRlIG9mIElu
c3BlY3Rvci4KLXZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjphZGRNZXNzYWdlVG9Db25z
b2xlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBNZXNzYWdl
U291cmNlIHNvdXJjZSwgTWVzc2FnZVR5cGUgdHlwZSwgTWVzc2FnZUxldmVsIGxldmVsLCBjb25z
dCBTdHJpbmcmIG1lc3NhZ2UsIFBhc3NSZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPiBjYWxsU3RhY2ss
IHVuc2lnbmVkIGxvbmcgcmVxdWVzdElkZW50aWZpZXIpCit2b2lkIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6YWRkTWVzc2FnZVRvQ29uc29sZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5z
dHJ1bWVudGluZ0FnZW50cywgTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VUeXBlIHR5cGUs
IE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBQYXNzUmVmUHRyPFNj
cmlwdENhbGxTdGFjaz4gY2FsbFN0YWNrLCB1bnNpZ25lZCBsb25nIHJlcXVlc3RJZGVudGlmaWVy
KQogewotICAgIGlmIChXZWJDb25zb2xlQWdlbnQqIGNvbnNvbGVBZ2VudCA9IGluc3RydW1lbnRp
bmdBZ2VudHMtPndlYkNvbnNvbGVBZ2VudCgpKQorICAgIGlmIChXZWJDb25zb2xlQWdlbnQqIGNv
bnNvbGVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMud2ViQ29uc29sZUFnZW50KCkpCiAgICAg
ICAgIGNvbnNvbGVBZ2VudC0+YWRkTWVzc2FnZVRvQ29uc29sZShzb3VyY2UsIHR5cGUsIGxldmVs
LCBtZXNzYWdlLCBjYWxsU3RhY2ssIHJlcXVlc3RJZGVudGlmaWVyKTsKICAgICAvLyBGSVhNRTog
VGhpcyBzaG91bGQganVzdCBwYXNzIHRoZSBtZXNzYWdlIG9uIHRvIHRoZSBkZWJ1Z2dlciBhZ2Vu
dC4gSmF2YVNjcmlwdENvcmUgSW5zcGVjdG9yRGVidWdnZXJBZ2VudCBzaG91bGQga25vdyBDb25z
b2xlIE1lc3NhZ2VUeXBlcy4KLSAgICBpZiAoSW5zcGVjdG9yRGVidWdnZXJBZ2VudCogZGVidWdn
ZXJBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvckRlYnVnZ2VyQWdlbnQoKSkg
eworICAgIGlmIChJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KiBkZWJ1Z2dlckFnZW50ID0gaW5zdHJ1
bWVudGluZ0FnZW50cy5pbnNwZWN0b3JEZWJ1Z2dlckFnZW50KCkpIHsKICAgICAgICAgaWYgKGlz
Q29uc29sZUFzc2VydE1lc3NhZ2Uoc291cmNlLCB0eXBlKSkKICAgICAgICAgICAgIGRlYnVnZ2Vy
QWdlbnQtPmhhbmRsZUNvbnNvbGVBc3NlcnQobWVzc2FnZSk7CiAgICAgfQogfQogCi12b2lkIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6YWRkTWVzc2FnZVRvQ29uc29sZUltcGwoSW5zdHJ1bWVu
dGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1l
c3NhZ2VUeXBlIHR5cGUsIE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdl
LCBKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIFBhc3NSZWZQdHI8U2NyaXB0QXJndW1lbnRzPiBhcmd1
bWVudHMsIHVuc2lnbmVkIGxvbmcgcmVxdWVzdElkZW50aWZpZXIpCit2b2lkIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6YWRkTWVzc2FnZVRvQ29uc29sZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50
cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VUeXBl
IHR5cGUsIE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBKU0M6OkV4
ZWNTdGF0ZSogc3RhdGUsIFBhc3NSZWZQdHI8U2NyaXB0QXJndW1lbnRzPiBhcmd1bWVudHMsIHVu
c2lnbmVkIGxvbmcgcmVxdWVzdElkZW50aWZpZXIpCiB7Ci0gICAgaWYgKFdlYkNvbnNvbGVBZ2Vu
dCogY29uc29sZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+d2ViQ29uc29sZUFnZW50KCkp
CisgICAgaWYgKFdlYkNvbnNvbGVBZ2VudCogY29uc29sZUFnZW50ID0gaW5zdHJ1bWVudGluZ0Fn
ZW50cy53ZWJDb25zb2xlQWdlbnQoKSkKICAgICAgICAgY29uc29sZUFnZW50LT5hZGRNZXNzYWdl
VG9Db25zb2xlKHNvdXJjZSwgdHlwZSwgbGV2ZWwsIG1lc3NhZ2UsIHN0YXRlLCBhcmd1bWVudHMs
IHJlcXVlc3RJZGVudGlmaWVyKTsKICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQganVzdCBwYXNz
IHRoZSBtZXNzYWdlIG9uIHRvIHRoZSBkZWJ1Z2dlciBhZ2VudC4gSmF2YVNjcmlwdENvcmUgSW5z
cGVjdG9yRGVidWdnZXJBZ2VudCBzaG91bGQga25vdyBDb25zb2xlIE1lc3NhZ2VUeXBlcy4KLSAg
ICBpZiAoSW5zcGVjdG9yRGVidWdnZXJBZ2VudCogZGVidWdnZXJBZ2VudCA9IGluc3RydW1lbnRp
bmdBZ2VudHMtPmluc3BlY3RvckRlYnVnZ2VyQWdlbnQoKSkgeworICAgIGlmIChJbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50KiBkZWJ1Z2dlckFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0
b3JEZWJ1Z2dlckFnZW50KCkpIHsKICAgICAgICAgaWYgKGlzQ29uc29sZUFzc2VydE1lc3NhZ2Uo
c291cmNlLCB0eXBlKSkKICAgICAgICAgICAgIGRlYnVnZ2VyQWdlbnQtPmhhbmRsZUNvbnNvbGVB
c3NlcnQobWVzc2FnZSk7CiAgICAgfQogfQogCi12b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6YWRkTWVzc2FnZVRvQ29uc29sZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVu
dGluZ0FnZW50cywgTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VUeXBlIHR5cGUsIE1lc3Nh
Z2VMZXZlbCBsZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNjcmlw
dElELCB1bnNpZ25lZCBsaW5lTnVtYmVyLCB1bnNpZ25lZCBjb2x1bW5OdW1iZXIsIEpTQzo6RXhl
Y1N0YXRlKiBzdGF0ZSwgdW5zaWduZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmllcikKK3ZvaWQgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjphZGRNZXNzYWdlVG9Db25zb2xlSW1wbChJbnN0cnVtZW50
aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVz
c2FnZVR5cGUgdHlwZSwgTWVzc2FnZUxldmVsIGxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2Us
IGNvbnN0IFN0cmluZyYgc2NyaXB0SUQsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIHVuc2lnbmVkIGNv
bHVtbk51bWJlciwgSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB1bnNpZ25lZCBsb25nIHJlcXVlc3RJ
ZGVudGlmaWVyKQogewotICAgIGlmIChXZWJDb25zb2xlQWdlbnQqIGNvbnNvbGVBZ2VudCA9IGlu
c3RydW1lbnRpbmdBZ2VudHMtPndlYkNvbnNvbGVBZ2VudCgpKQorICAgIGlmIChXZWJDb25zb2xl
QWdlbnQqIGNvbnNvbGVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMud2ViQ29uc29sZUFnZW50
KCkpCiAgICAgICAgIGNvbnNvbGVBZ2VudC0+YWRkTWVzc2FnZVRvQ29uc29sZShzb3VyY2UsIHR5
cGUsIGxldmVsLCBtZXNzYWdlLCBzY3JpcHRJRCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBz
dGF0ZSwgcmVxdWVzdElkZW50aWZpZXIpOwogICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBqdXN0
IHBhc3MgdGhlIG1lc3NhZ2Ugb24gdG8gdGhlIGRlYnVnZ2VyIGFnZW50LiBKYXZhU2NyaXB0Q29y
ZSBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50IHNob3VsZCBrbm93IENvbnNvbGUgTWVzc2FnZVR5cGVz
LgotICAgIGlmIChJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KiBkZWJ1Z2dlckFnZW50ID0gaW5zdHJ1
bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yRGVidWdnZXJBZ2VudCgpKSB7CisgICAgaWYgKEluc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQqIGRlYnVnZ2VyQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmlu
c3BlY3RvckRlYnVnZ2VyQWdlbnQoKSkgewogICAgICAgICBpZiAoaXNDb25zb2xlQXNzZXJ0TWVz
c2FnZShzb3VyY2UsIHR5cGUpKQogICAgICAgICAgICAgZGVidWdnZXJBZ2VudC0+aGFuZGxlQ29u
c29sZUFzc2VydChtZXNzYWdlKTsKICAgICB9CiB9CiAKLXZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpjb25zb2xlQ291bnRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRp
bmdBZ2VudHMsIEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgUGFzc1JlZlB0cjxTY3JpcHRBcmd1bWVu
dHM+IGFyZ3VtZW50cykKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjb25zb2xlQ291
bnRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIEpTQzo6RXhl
Y1N0YXRlKiBzdGF0ZSwgUGFzc1JlZlB0cjxTY3JpcHRBcmd1bWVudHM+IGFyZ3VtZW50cykKIHsK
LSAgICBpZiAoV2ViQ29uc29sZUFnZW50KiBjb25zb2xlQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdl
bnRzLT53ZWJDb25zb2xlQWdlbnQoKSkKKyAgICBpZiAoV2ViQ29uc29sZUFnZW50KiBjb25zb2xl
QWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLndlYkNvbnNvbGVBZ2VudCgpKQogICAgICAgICBj
b25zb2xlQWdlbnQtPmNvdW50KHN0YXRlLCBhcmd1bWVudHMpOwogfQogCi12b2lkIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6c3RhcnRDb25zb2xlVGltaW5nSW1wbChJbnN0cnVtZW50aW5nQWdl
bnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBGcmFtZSogZnJhbWUsIGNvbnN0IFN0cmluZyYgdGl0
bGUpCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c3RhcnRDb25zb2xlVGltaW5nSW1w
bChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBGcmFtZSYgZnJhbWUs
IGNvbnN0IFN0cmluZyYgdGl0bGUpCiB7Ci0gICAgaWYgKEluc3BlY3RvclRpbWVsaW5lQWdlbnQq
IHRpbWVsaW5lQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JUaW1lbGluZUFn
ZW50KCkpCi0gICAgICAgIHRpbWVsaW5lQWdlbnQtPnRpbWUoZnJhbWUsIHRpdGxlKTsKLSAgICBp
ZiAoV2ViQ29uc29sZUFnZW50KiBjb25zb2xlQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLT53
ZWJDb25zb2xlQWdlbnQoKSkKKyAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxp
bmVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpKQor
ICAgICAgICB0aW1lbGluZUFnZW50LT50aW1lKCZmcmFtZSwgdGl0bGUpOworICAgIGlmIChXZWJD
b25zb2xlQWdlbnQqIGNvbnNvbGVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMud2ViQ29uc29s
ZUFnZW50KCkpCiAgICAgICAgIGNvbnNvbGVBZ2VudC0+c3RhcnRUaW1pbmcodGl0bGUpOwogfQog
Ci12b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c3RvcENvbnNvbGVUaW1pbmdJbXBsKElu
c3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIEZyYW1lKiBmcmFtZSwgY29u
c3QgU3RyaW5nJiB0aXRsZSwgUGFzc1JlZlB0cjxTY3JpcHRDYWxsU3RhY2s+IHN0YWNrKQordm9p
ZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnN0b3BDb25zb2xlVGltaW5nSW1wbChJbnN0cnVt
ZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBGcmFtZSYgZnJhbWUsIGNvbnN0IFN0
cmluZyYgdGl0bGUsIFBhc3NSZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPiBzdGFjaykKIHsKLSAgICBp
ZiAoV2ViQ29uc29sZUFnZW50KiBjb25zb2xlQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLT53
ZWJDb25zb2xlQWdlbnQoKSkKKyAgICBpZiAoV2ViQ29uc29sZUFnZW50KiBjb25zb2xlQWdlbnQg
PSBpbnN0cnVtZW50aW5nQWdlbnRzLndlYkNvbnNvbGVBZ2VudCgpKQogICAgICAgICBjb25zb2xl
QWdlbnQtPnN0b3BUaW1pbmcodGl0bGUsIHN0YWNrKTsKLSAgICBpZiAoSW5zcGVjdG9yVGltZWxp
bmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvclRp
bWVsaW5lQWdlbnQoKSkKLSAgICAgICAgdGltZWxpbmVBZ2VudC0+dGltZUVuZChmcmFtZSwgdGl0
bGUpOworICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gaW5z
dHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JUaW1lbGluZUFnZW50KCkpCisgICAgICAgIHRpbWVs
aW5lQWdlbnQtPnRpbWVFbmQoJmZyYW1lLCB0aXRsZSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpjb25zb2xlVGltZVN0YW1wSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiBp
bnN0cnVtZW50aW5nQWdlbnRzLCBGcmFtZSogZnJhbWUsIFBhc3NSZWZQdHI8U2NyaXB0QXJndW1l
bnRzPiBhcmd1bWVudHMpCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Y29uc29sZVRp
bWVTdGFtcEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgRnJh
bWUmIGZyYW1lLCBQYXNzUmVmUHRyPFNjcmlwdEFyZ3VtZW50cz4gYXJndW1lbnRzKQogewotICAg
IGlmIChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gaW5zdHJ1bWVudGlu
Z0FnZW50cy0+aW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpKSB7CisgICAgaWYgKEluc3BlY3RvclRp
bWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3Rv
clRpbWVsaW5lQWdlbnQoKSkgewogICAgICAgICBTdHJpbmcgbWVzc2FnZTsKICAgICAgICAgYXJn
dW1lbnRzLT5nZXRGaXJzdEFyZ3VtZW50QXNTdHJpbmcobWVzc2FnZSk7Ci0gICAgICAgIHRpbWVs
aW5lQWdlbnQtPmRpZFRpbWVTdGFtcChmcmFtZSwgbWVzc2FnZSk7CisgICAgICAgIHRpbWVsaW5l
QWdlbnQtPmRpZFRpbWVTdGFtcCgmZnJhbWUsIG1lc3NhZ2UpOwogICAgICB9CiB9CiAKLXZvaWQg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzdGFydFByb2ZpbGluZ0ltcGwoSW5zdHJ1bWVudGlu
Z0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IFN0cmluZyYgdGl0bGUpCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c3RhcnRQcm9m
aWxpbmdJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIEpTQzo6
RXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIHRpdGxlKQogewotICAgIGlmIChJbnNwZWN0
b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+cGVy
c2lzdGVudEluc3BlY3RvclRpbWVsaW5lQWdlbnQoKSkKKyAgICBpZiAoSW5zcGVjdG9yVGltZWxp
bmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMucGVyc2lzdGVudElu
c3BlY3RvclRpbWVsaW5lQWdlbnQoKSkKICAgICAgICAgdGltZWxpbmVBZ2VudC0+c3RhcnRGcm9t
Q29uc29sZShleGVjLCB0aXRsZSk7CiB9CiAKLVBhc3NSZWZQdHI8SlNDOjpQcm9maWxlPiBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OnN0b3BQcm9maWxpbmdJbXBsKEluc3RydW1lbnRpbmdBZ2Vu
dHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIEpTQzo6RXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJp
bmcmIHRpdGxlKQorUGFzc1JlZlB0cjxKU0M6OlByb2ZpbGU+IEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6c3RvcFByb2ZpbGluZ0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGlu
Z0FnZW50cywgSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgdGl0bGUpCiB7Ci0g
ICAgaWYgKEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSBpbnN0cnVtZW50
aW5nQWdlbnRzLT5wZXJzaXN0ZW50SW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpKQorICAgIGlmIChJ
bnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50
cy5wZXJzaXN0ZW50SW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpKQogICAgICAgICByZXR1cm4gdGlt
ZWxpbmVBZ2VudC0+c3RvcEZyb21Db25zb2xlKGV4ZWMsIHRpdGxlKTsKICAgICByZXR1cm4gbnVs
bHB0cjsKIH0KIAogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCi12b2lkIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZGlkT3BlbkRhdGFiYXNlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0
cnVtZW50aW5nQWdlbnRzLCBQYXNzUmVmUHRyPERhdGFiYXNlPiBkYXRhYmFzZSwgY29uc3QgU3Ry
aW5nJiBkb21haW4sIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uKQor
dm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZE9wZW5EYXRhYmFzZUltcGwoSW5zdHJ1
bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgUGFzc1JlZlB0cjxEYXRhYmFzZT4g
ZGF0YWJhc2UsIGNvbnN0IFN0cmluZyYgZG9tYWluLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0
IFN0cmluZyYgdmVyc2lvbikKIHsKLSAgICBpZiAoIWluc3RydW1lbnRpbmdBZ2VudHMtPmluc3Bl
Y3RvckVudmlyb25tZW50KCkuZGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCgpKQorICAgIGlmICghaW5z
dHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JFbnZpcm9ubWVudCgpLmRldmVsb3BlckV4dHJhc0Vu
YWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwotICAgIGlmIChJbnNwZWN0b3JEYXRhYmFzZUFnZW50
KiBkYkFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yRGF0YWJhc2VBZ2VudCgp
KQorICAgIGlmIChJbnNwZWN0b3JEYXRhYmFzZUFnZW50KiBkYkFnZW50ID0gaW5zdHJ1bWVudGlu
Z0FnZW50cy5pbnNwZWN0b3JEYXRhYmFzZUFnZW50KCkpCiAgICAgICAgIGRiQWdlbnQtPmRpZE9w
ZW5EYXRhYmFzZShkYXRhYmFzZSwgZG9tYWluLCBuYW1lLCB2ZXJzaW9uKTsKIH0KICNlbmRpZgog
Ci12b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRGlzcGF0Y2hET01TdG9yYWdlRXZl
bnRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIGNvbnN0IFN0
cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBTdHJpbmcmIG5ld1ZhbHVl
LCBTdG9yYWdlVHlwZSBzdG9yYWdlVHlwZSwgU2VjdXJpdHlPcmlnaW4qIHNlY3VyaXR5T3JpZ2lu
LCBQYWdlKiBwYWdlKQordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZERpc3BhdGNo
RE9NU3RvcmFnZUV2ZW50SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdl
bnRzLCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgU3Ry
aW5nJiBuZXdWYWx1ZSwgU3RvcmFnZVR5cGUgc3RvcmFnZVR5cGUsIFNlY3VyaXR5T3JpZ2luKiBz
ZWN1cml0eU9yaWdpbiwgUGFnZSogcGFnZSkKIHsKLSAgICBpZiAoSW5zcGVjdG9yRE9NU3RvcmFn
ZUFnZW50KiBkb21TdG9yYWdlQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JE
T01TdG9yYWdlQWdlbnQoKSkKKyAgICBpZiAoSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50KiBkb21T
dG9yYWdlQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckRPTVN0b3JhZ2VBZ2Vu
dCgpKQogICAgICAgICBkb21TdG9yYWdlQWdlbnQtPmRpZERpc3BhdGNoRE9NU3RvcmFnZUV2ZW50
KGtleSwgb2xkVmFsdWUsIG5ld1ZhbHVlLCBzdG9yYWdlVHlwZSwgc2VjdXJpdHlPcmlnaW4sIHBh
Z2UpOwogfQogCi1ib29sIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c2hvdWxkUGF1c2VEZWRp
Y2F0ZWRXb3JrZXJPblN0YXJ0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5n
QWdlbnRzKQorYm9vbCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNob3VsZFBhdXNlRGVkaWNh
dGVkV29ya2VyT25TdGFydEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0Fn
ZW50cykKIHsKLSAgICBpZiAoSW5zcGVjdG9yV29ya2VyQWdlbnQqIHdvcmtlckFnZW50ID0gaW5z
dHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yV29ya2VyQWdlbnQoKSkKKyAgICBpZiAoSW5zcGVj
dG9yV29ya2VyQWdlbnQqIHdvcmtlckFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0
b3JXb3JrZXJBZ2VudCgpKQogICAgICAgICByZXR1cm4gd29ya2VyQWdlbnQtPnNob3VsZFBhdXNl
RGVkaWNhdGVkV29ya2VyT25TdGFydCgpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFN0YXJ0V29ya2VyR2xvYmFsU2NvcGVJbXBsKElu
c3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIFdvcmtlckdsb2JhbFNjb3Bl
UHJveHkqIHdvcmtlckdsb2JhbFNjb3BlUHJveHksIGNvbnN0IFVSTCYgdXJsKQordm9pZCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFN0YXJ0V29ya2VyR2xvYmFsU2NvcGVJbXBsKEluc3Ry
dW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIFdvcmtlckdsb2JhbFNjb3BlUHJv
eHkqIHdvcmtlckdsb2JhbFNjb3BlUHJveHksIGNvbnN0IFVSTCYgdXJsKQogewotICAgIGlmIChJ
bnNwZWN0b3JXb3JrZXJBZ2VudCogd29ya2VyQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLT5p
bnNwZWN0b3JXb3JrZXJBZ2VudCgpKQorICAgIGlmIChJbnNwZWN0b3JXb3JrZXJBZ2VudCogd29y
a2VyQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvcldvcmtlckFnZW50KCkpCiAg
ICAgICAgIHdvcmtlckFnZW50LT5kaWRTdGFydFdvcmtlckdsb2JhbFNjb3BlKHdvcmtlckdsb2Jh
bFNjb3BlUHJveHksIHVybCk7CiB9CiAKQEAgLTk5MSwxNjAgKzk5NywxNjIgQEAgdm9pZCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxFdmFsdWF0ZVdvcmtlclNjcmlwdChXb3JrZXJHbG9i
YWxTY29wZSogd29ya2UKIHsKICAgICBpZiAod29ya2VyVGhyZWFkU3RhcnRNb2RlICE9IFBhdXNl
V29ya2VyR2xvYmFsU2NvcGVPblN0YXJ0KQogICAgICAgICByZXR1cm47Ci0gICAgSW5zdHJ1bWVu
dGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRhdGlvbkZvcldvcmtl
ckdsb2JhbFNjb3BlKHdvcmtlckdsb2JhbFNjb3BlKTsKKworICAgIEluc3RydW1lbnRpbmdBZ2Vu
dHMqIGluc3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yV29ya2VyR2xv
YmFsU2NvcGUod29ya2VyR2xvYmFsU2NvcGUpOwogICAgIGlmICghaW5zdHJ1bWVudGluZ0FnZW50
cykKICAgICAgICAgcmV0dXJuOworCiAgICAgaWYgKFdvcmtlclJ1bnRpbWVBZ2VudCogcnVudGlt
ZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+d29ya2VyUnVudGltZUFnZW50KCkpCiAgICAg
ICAgIHJ1bnRpbWVBZ2VudC0+cGF1c2VXb3JrZXJHbG9iYWxTY29wZSh3b3JrZXJHbG9iYWxTY29w
ZSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3b3JrZXJHbG9iYWxTY29w
ZVRlcm1pbmF0ZWRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMs
IFdvcmtlckdsb2JhbFNjb3BlUHJveHkqIHByb3h5KQordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246Ondvcmtlckdsb2JhbFNjb3BlVGVybWluYXRlZEltcGwoSW5zdHJ1bWVudGluZ0FnZW50
cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgV29ya2VyR2xvYmFsU2NvcGVQcm94eSogcHJveHkpCiB7
Ci0gICAgaWYgKEluc3BlY3RvcldvcmtlckFnZW50KiB3b3JrZXJBZ2VudCA9IGluc3RydW1lbnRp
bmdBZ2VudHMtPmluc3BlY3RvcldvcmtlckFnZW50KCkpCisgICAgaWYgKEluc3BlY3Rvcldvcmtl
ckFnZW50KiB3b3JrZXJBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yV29ya2Vy
QWdlbnQoKSkKICAgICAgICAgd29ya2VyQWdlbnQtPndvcmtlckdsb2JhbFNjb3BlVGVybWluYXRl
ZChwcm94eSk7CiB9CiAKICNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCi12b2lkIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6ZGlkQ3JlYXRlV2ViU29ja2V0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRz
KiBpbnN0cnVtZW50aW5nQWdlbnRzLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFVS
TCYgcmVxdWVzdFVSTCwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCwgRG9jdW1l
bnQqIGRvY3VtZW50KQordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENyZWF0ZVdl
YlNvY2tldEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgdW5z
aWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBVUkwmIHJlcXVlc3RVUkwsIGNvbnN0IFVSTCYs
IGNvbnN0IFN0cmluZyYgcHJvdG9jb2wsIERvY3VtZW50KiBkb2N1bWVudCkKIHsKLSAgICBpZiAo
IWluc3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvckVudmlyb25tZW50KCkuZGV2ZWxvcGVyRXh0
cmFzRW5hYmxlZCgpKQorICAgIGlmICghaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JFbnZp
cm9ubWVudCgpLmRldmVsb3BlckV4dHJhc0VuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwotICAg
IGlmIChJbnNwZWN0b3JSZXNvdXJjZUFnZW50KiByZXNvdXJjZUFnZW50ID0gaW5zdHJ1bWVudGlu
Z0FnZW50cy0+aW5zcGVjdG9yUmVzb3VyY2VBZ2VudCgpKQorICAgIGlmIChJbnNwZWN0b3JSZXNv
dXJjZUFnZW50KiByZXNvdXJjZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JS
ZXNvdXJjZUFnZW50KCkpCiAgICAgICAgIHJlc291cmNlQWdlbnQtPmRpZENyZWF0ZVdlYlNvY2tl
dChpZGVudGlmaWVyLCByZXF1ZXN0VVJMKTsKLSAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dCogdGltZWxpbmVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvclRpbWVsaW5l
QWdlbnQoKSkKKyAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9
IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpKQogICAgICAgICB0
aW1lbGluZUFnZW50LT5kaWRDcmVhdGVXZWJTb2NrZXQoaWRlbnRpZmllciwgcmVxdWVzdFVSTCwg
cHJvdG9jb2wsIGRvY3VtZW50LT5mcmFtZSgpKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OndpbGxTZW5kV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdEltcGwoSW5zdHJ1bWVu
dGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIERvY3VtZW50KiBkb2N1bWVudCkKK3Zv
aWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsU2VuZFdlYlNvY2tldEhhbmRzaGFrZVJl
cXVlc3RJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIHVuc2ln
bmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBEb2N1
bWVudCogZG9jdW1lbnQpCiB7Ci0gICAgaWYgKEluc3BlY3RvclJlc291cmNlQWdlbnQqIHJlc291
cmNlQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JSZXNvdXJjZUFnZW50KCkp
CisgICAgaWYgKEluc3BlY3RvclJlc291cmNlQWdlbnQqIHJlc291cmNlQWdlbnQgPSBpbnN0cnVt
ZW50aW5nQWdlbnRzLmluc3BlY3RvclJlc291cmNlQWdlbnQoKSkKICAgICAgICAgcmVzb3VyY2VB
Z2VudC0+d2lsbFNlbmRXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0KGlkZW50aWZpZXIsIHJlcXVl
c3QpOwotICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gaW5z
dHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpKQorICAgIGlmIChJbnNw
ZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5p
bnNwZWN0b3JUaW1lbGluZUFnZW50KCkpCiAgICAgICAgIHRpbWVsaW5lQWdlbnQtPndpbGxTZW5k
V2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdChpZGVudGlmaWVyLCBkb2N1bWVudC0+ZnJhbWUoKSk7
CiB9CiAKLXZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlV2ViU29ja2V0
SGFuZHNoYWtlUmVzcG9uc2VJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdB
Z2VudHMsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UsIERvY3VtZW50KiBkb2N1bWVudCkKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpkaWRSZWNlaXZlV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2VJbXBsKEluc3RydW1lbnRp
bmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIERvY3VtZW50KiBkb2N1bWVudCkKIHsK
LSAgICBpZiAoSW5zcGVjdG9yUmVzb3VyY2VBZ2VudCogcmVzb3VyY2VBZ2VudCA9IGluc3RydW1l
bnRpbmdBZ2VudHMtPmluc3BlY3RvclJlc291cmNlQWdlbnQoKSkKKyAgICBpZiAoSW5zcGVjdG9y
UmVzb3VyY2VBZ2VudCogcmVzb3VyY2VBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVj
dG9yUmVzb3VyY2VBZ2VudCgpKQogICAgICAgICByZXNvdXJjZUFnZW50LT5kaWRSZWNlaXZlV2Vi
U29ja2V0SGFuZHNoYWtlUmVzcG9uc2UoaWRlbnRpZmllciwgcmVzcG9uc2UpOwotICAgIGlmIChJ
bnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50
cy0+aW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpKQorICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFn
ZW50KiB0aW1lbGluZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JUaW1lbGlu
ZUFnZW50KCkpCiAgICAgICAgIHRpbWVsaW5lQWdlbnQtPmRpZFJlY2VpdmVXZWJTb2NrZXRIYW5k
c2hha2VSZXNwb25zZShpZGVudGlmaWVyLCBkb2N1bWVudC0+ZnJhbWUoKSk7CiB9CiAKLXZvaWQg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDbG9zZVdlYlNvY2tldEltcGwoSW5zdHJ1bWVu
dGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
LCBEb2N1bWVudCogZG9jdW1lbnQpCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlk
Q2xvc2VXZWJTb2NrZXRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2Vu
dHMsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnQqIGRvY3VtZW50KQogewotICAg
IGlmIChJbnNwZWN0b3JSZXNvdXJjZUFnZW50KiByZXNvdXJjZUFnZW50ID0gaW5zdHJ1bWVudGlu
Z0FnZW50cy0+aW5zcGVjdG9yUmVzb3VyY2VBZ2VudCgpKQorICAgIGlmIChJbnNwZWN0b3JSZXNv
dXJjZUFnZW50KiByZXNvdXJjZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JS
ZXNvdXJjZUFnZW50KCkpCiAgICAgICAgIHJlc291cmNlQWdlbnQtPmRpZENsb3NlV2ViU29ja2V0
KGlkZW50aWZpZXIpOwotICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFn
ZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpKQorICAg
IGlmIChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gaW5zdHJ1bWVudGlu
Z0FnZW50cy5pbnNwZWN0b3JUaW1lbGluZUFnZW50KCkpCiAgICAgICAgIHRpbWVsaW5lQWdlbnQt
PmRpZERlc3Ryb3lXZWJTb2NrZXQoaWRlbnRpZmllciwgZG9jdW1lbnQtPmZyYW1lKCkpOwogfQog
Ci12b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZVdlYlNvY2tldEZyYW1l
SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCB1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIsIGNvbnN0IFdlYlNvY2tldEZyYW1lJiBmcmFtZSkKK3ZvaWQgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlV2ViU29ja2V0RnJhbWVJbXBsKEluc3RydW1l
bnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmll
ciwgY29uc3QgV2ViU29ja2V0RnJhbWUmIGZyYW1lKQogewotICAgIGlmIChJbnNwZWN0b3JSZXNv
dXJjZUFnZW50KiByZXNvdXJjZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9y
UmVzb3VyY2VBZ2VudCgpKQorICAgIGlmIChJbnNwZWN0b3JSZXNvdXJjZUFnZW50KiByZXNvdXJj
ZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JSZXNvdXJjZUFnZW50KCkpCiAg
ICAgICAgIHJlc291cmNlQWdlbnQtPmRpZFJlY2VpdmVXZWJTb2NrZXRGcmFtZShpZGVudGlmaWVy
LCBmcmFtZSk7CiB9Ci12b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZVdl
YlNvY2tldEZyYW1lRXJyb3JJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdB
Z2VudHMsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3Nh
Z2UpCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZVdlYlNvY2tldEZy
YW1lRXJyb3JJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIHVu
c2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCiB7Ci0g
ICAgaWYgKEluc3BlY3RvclJlc291cmNlQWdlbnQqIHJlc291cmNlQWdlbnQgPSBpbnN0cnVtZW50
aW5nQWdlbnRzLT5pbnNwZWN0b3JSZXNvdXJjZUFnZW50KCkpCisgICAgaWYgKEluc3BlY3RvclJl
c291cmNlQWdlbnQqIHJlc291cmNlQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3Rv
clJlc291cmNlQWdlbnQoKSkKICAgICAgICAgcmVzb3VyY2VBZ2VudC0+ZGlkUmVjZWl2ZVdlYlNv
Y2tldEZyYW1lRXJyb3IoaWRlbnRpZmllciwgZXJyb3JNZXNzYWdlKTsKIH0KLXZvaWQgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRTZW5kV2ViU29ja2V0RnJhbWVJbXBsKEluc3RydW1lbnRp
bmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwg
Y29uc3QgV2ViU29ja2V0RnJhbWUmIGZyYW1lKQordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmRpZFNlbmRXZWJTb2NrZXRGcmFtZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1
bWVudGluZ0FnZW50cywgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBXZWJTb2NrZXRG
cmFtZSYgZnJhbWUpCiB7Ci0gICAgaWYgKEluc3BlY3RvclJlc291cmNlQWdlbnQqIHJlc291cmNl
QWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JSZXNvdXJjZUFnZW50KCkpCisg
ICAgaWYgKEluc3BlY3RvclJlc291cmNlQWdlbnQqIHJlc291cmNlQWdlbnQgPSBpbnN0cnVtZW50
aW5nQWdlbnRzLmluc3BlY3RvclJlc291cmNlQWdlbnQoKSkKICAgICAgICAgcmVzb3VyY2VBZ2Vu
dC0+ZGlkU2VuZFdlYlNvY2tldEZyYW1lKGlkZW50aWZpZXIsIGZyYW1lKTsKIH0KICNlbmRpZgog
CiAjaWYgRU5BQkxFKFdFQl9SRVBMQVkpCi12b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
c2Vzc2lvbkNyZWF0ZWRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2Vu
dHMsIFBhc3NSZWZQdHI8UmVwbGF5U2Vzc2lvbj4gc2Vzc2lvbikKK3ZvaWQgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpzZXNzaW9uQ3JlYXRlZEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5z
dHJ1bWVudGluZ0FnZW50cywgUGFzc1JlZlB0cjxSZXBsYXlTZXNzaW9uPiBzZXNzaW9uKQogewot
ICAgIGlmIChJbnNwZWN0b3JSZXBsYXlBZ2VudCogcmVwbGF5QWdlbnQgPSBpbnN0cnVtZW50aW5n
QWdlbnRzLT5pbnNwZWN0b3JSZXBsYXlBZ2VudCgpKQorICAgIGlmIChJbnNwZWN0b3JSZXBsYXlB
Z2VudCogcmVwbGF5QWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvclJlcGxheUFn
ZW50KCkpCiAgICAgICAgIHJlcGxheUFnZW50LT5zZXNzaW9uQ3JlYXRlZChzZXNzaW9uKTsKIH0K
IAotdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNlc3Npb25Mb2FkZWRJbXBsKEluc3Ry
dW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIFBhc3NSZWZQdHI8UmVwbGF5U2Vz
c2lvbj4gc2Vzc2lvbikKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzZXNzaW9uTG9h
ZGVkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBQYXNzUmVm
UHRyPFJlcGxheVNlc3Npb24+IHNlc3Npb24pCiB7Ci0gICAgaWYgKEluc3BlY3RvclJlcGxheUFn
ZW50KiByZXBsYXlBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvclJlcGxheUFn
ZW50KCkpCisgICAgaWYgKEluc3BlY3RvclJlcGxheUFnZW50KiByZXBsYXlBZ2VudCA9IGluc3Ry
dW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yUmVwbGF5QWdlbnQoKSkKICAgICAgICAgcmVwbGF5QWdl
bnQtPnNlc3Npb25Mb2FkZWQoc2Vzc2lvbik7CiB9CiAKLXZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpzZXNzaW9uTW9kaWZpZWRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1l
bnRpbmdBZ2VudHMsIFBhc3NSZWZQdHI8UmVwbGF5U2Vzc2lvbj4gc2Vzc2lvbikKK3ZvaWQgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzZXNzaW9uTW9kaWZpZWRJbXBsKEluc3RydW1lbnRpbmdB
Z2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIFBhc3NSZWZQdHI8UmVwbGF5U2Vzc2lvbj4gc2Vz
c2lvbikKIHsKLSAgICBpZiAoSW5zcGVjdG9yUmVwbGF5QWdlbnQqIHJlcGxheUFnZW50ID0gaW5z
dHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yUmVwbGF5QWdlbnQoKSkKKyAgICBpZiAoSW5zcGVj
dG9yUmVwbGF5QWdlbnQqIHJlcGxheUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0
b3JSZXBsYXlBZ2VudCgpKQogICAgICAgICByZXBsYXlBZ2VudC0+c2Vzc2lvbk1vZGlmaWVkKHNl
c3Npb24pOwogfQogCi12b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c2VnbWVudENyZWF0
ZWRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIFBhc3NSZWZQ
dHI8UmVwbGF5U2Vzc2lvblNlZ21lbnQ+IHNlZ21lbnQpCit2b2lkIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6c2VnbWVudENyZWF0ZWRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1l
bnRpbmdBZ2VudHMsIFBhc3NSZWZQdHI8UmVwbGF5U2Vzc2lvblNlZ21lbnQ+IHNlZ21lbnQpCiB7
Ci0gICAgaWYgKEluc3BlY3RvclJlcGxheUFnZW50KiByZXBsYXlBZ2VudCA9IGluc3RydW1lbnRp
bmdBZ2VudHMtPmluc3BlY3RvclJlcGxheUFnZW50KCkpCisgICAgaWYgKEluc3BlY3RvclJlcGxh
eUFnZW50KiByZXBsYXlBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yUmVwbGF5
QWdlbnQoKSkKICAgICAgICAgcmVwbGF5QWdlbnQtPnNlZ21lbnRDcmVhdGVkKHNlZ21lbnQpOwog
fQogCi12b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c2VnbWVudENvbXBsZXRlZEltcGwo
SW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgUGFzc1JlZlB0cjxSZXBs
YXlTZXNzaW9uU2VnbWVudD4gc2VnbWVudCkKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpzZWdtZW50Q29tcGxldGVkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5n
QWdlbnRzLCBQYXNzUmVmUHRyPFJlcGxheVNlc3Npb25TZWdtZW50PiBzZWdtZW50KQogewotICAg
IGlmIChJbnNwZWN0b3JSZXBsYXlBZ2VudCogcmVwbGF5QWdlbnQgPSBpbnN0cnVtZW50aW5nQWdl
bnRzLT5pbnNwZWN0b3JSZXBsYXlBZ2VudCgpKQorICAgIGlmIChJbnNwZWN0b3JSZXBsYXlBZ2Vu
dCogcmVwbGF5QWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvclJlcGxheUFnZW50
KCkpCiAgICAgICAgIHJlcGxheUFnZW50LT5zZWdtZW50Q29tcGxldGVkKHNlZ21lbnQpOwogfQog
Ci12b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c2VnbWVudExvYWRlZEltcGwoSW5zdHJ1
bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgUGFzc1JlZlB0cjxSZXBsYXlTZXNz
aW9uU2VnbWVudD4gc2VnbWVudCkKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzZWdt
ZW50TG9hZGVkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBQ
YXNzUmVmUHRyPFJlcGxheVNlc3Npb25TZWdtZW50PiBzZWdtZW50KQogewotICAgIGlmIChJbnNw
ZWN0b3JSZXBsYXlBZ2VudCogcmVwbGF5QWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLT5pbnNw
ZWN0b3JSZXBsYXlBZ2VudCgpKQorICAgIGlmIChJbnNwZWN0b3JSZXBsYXlBZ2VudCogcmVwbGF5
QWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvclJlcGxheUFnZW50KCkpCiAgICAg
ICAgIHJlcGxheUFnZW50LT5zZWdtZW50TG9hZGVkKHNlZ21lbnQpOwogfQogCi12b2lkIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6c2VnbWVudFVubG9hZGVkSW1wbChJbnN0cnVtZW50aW5nQWdl
bnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzKQordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OnNlZ21lbnRVbmxvYWRlZEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0Fn
ZW50cykKIHsKLSAgICBpZiAoSW5zcGVjdG9yUmVwbGF5QWdlbnQqIHJlcGxheUFnZW50ID0gaW5z
dHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yUmVwbGF5QWdlbnQoKSkKKyAgICBpZiAoSW5zcGVj
dG9yUmVwbGF5QWdlbnQqIHJlcGxheUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0
b3JSZXBsYXlBZ2VudCgpKQogICAgICAgICByZXBsYXlBZ2VudC0+c2VnbWVudFVubG9hZGVkKCk7
CiB9CiAKLXZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjYXB0dXJlU3RhcnRlZEltcGwo
SW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cykKK3ZvaWQgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpjYXB0dXJlU3RhcnRlZEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYg
aW5zdHJ1bWVudGluZ0FnZW50cykKIHsKLSAgICBpZiAoSW5zcGVjdG9yUmVwbGF5QWdlbnQqIHJl
cGxheUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yUmVwbGF5QWdlbnQoKSkK
KyAgICBpZiAoSW5zcGVjdG9yUmVwbGF5QWdlbnQqIHJlcGxheUFnZW50ID0gaW5zdHJ1bWVudGlu
Z0FnZW50cy5pbnNwZWN0b3JSZXBsYXlBZ2VudCgpKQogICAgICAgICByZXBsYXlBZ2VudC0+Y2Fw
dHVyZVN0YXJ0ZWQoKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNhcHR1
cmVTdG9wcGVkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzKQor
dm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNhcHR1cmVTdG9wcGVkSW1wbChJbnN0cnVt
ZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzKQogewotICAgIGlmIChJbnNwZWN0b3JS
ZXBsYXlBZ2VudCogcmVwbGF5QWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JS
ZXBsYXlBZ2VudCgpKQorICAgIGlmIChJbnNwZWN0b3JSZXBsYXlBZ2VudCogcmVwbGF5QWdlbnQg
PSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvclJlcGxheUFnZW50KCkpCiAgICAgICAgIHJl
cGxheUFnZW50LT5jYXB0dXJlU3RvcHBlZCgpOwogfQogCi12b2lkIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6cGxheWJhY2tTdGFydGVkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVt
ZW50aW5nQWdlbnRzKQordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnBsYXliYWNrU3Rh
cnRlZEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cykKIHsKLSAg
ICBpZiAoSW5zcGVjdG9yUmVwbGF5QWdlbnQqIHJlcGxheUFnZW50ID0gaW5zdHJ1bWVudGluZ0Fn
ZW50cy0+aW5zcGVjdG9yUmVwbGF5QWdlbnQoKSkKKyAgICBpZiAoSW5zcGVjdG9yUmVwbGF5QWdl
bnQqIHJlcGxheUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JSZXBsYXlBZ2Vu
dCgpKQogICAgICAgICByZXBsYXlBZ2VudC0+cGxheWJhY2tTdGFydGVkKCk7CiB9CiAKLXZvaWQg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpwbGF5YmFja1BhdXNlZEltcGwoSW5zdHJ1bWVudGlu
Z0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgY29uc3QgUmVwbGF5UG9zaXRpb24mIHBvc2l0
aW9uKQordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnBsYXliYWNrUGF1c2VkSW1wbChJ
bnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBjb25zdCBSZXBsYXlQb3Np
dGlvbiYgcG9zaXRpb24pCiB7Ci0gICAgaWYgKEluc3BlY3RvclJlcGxheUFnZW50KiByZXBsYXlB
Z2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvclJlcGxheUFnZW50KCkpCisgICAg
aWYgKEluc3BlY3RvclJlcGxheUFnZW50KiByZXBsYXlBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2Vu
dHMuaW5zcGVjdG9yUmVwbGF5QWdlbnQoKSkKICAgICAgICAgcmVwbGF5QWdlbnQtPnBsYXliYWNr
UGF1c2VkKHBvc2l0aW9uKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnBs
YXliYWNrSGl0UG9zaXRpb25JbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdB
Z2VudHMsIGNvbnN0IFJlcGxheVBvc2l0aW9uJiBwb3NpdGlvbikKK3ZvaWQgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpwbGF5YmFja0hpdFBvc2l0aW9uSW1wbChJbnN0cnVtZW50aW5nQWdlbnRz
JiBpbnN0cnVtZW50aW5nQWdlbnRzLCBjb25zdCBSZXBsYXlQb3NpdGlvbiYgcG9zaXRpb24pCiB7
Ci0gICAgaWYgKEluc3BlY3RvclJlcGxheUFnZW50KiByZXBsYXlBZ2VudCA9IGluc3RydW1lbnRp
bmdBZ2VudHMtPmluc3BlY3RvclJlcGxheUFnZW50KCkpCisgICAgaWYgKEluc3BlY3RvclJlcGxh
eUFnZW50KiByZXBsYXlBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yUmVwbGF5
QWdlbnQoKSkKICAgICAgICAgcmVwbGF5QWdlbnQtPnBsYXliYWNrSGl0UG9zaXRpb24ocG9zaXRp
b24pOwogfQogCi12b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6cGxheWJhY2tGaW5pc2hl
ZEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cykKK3ZvaWQgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpwbGF5YmFja0ZpbmlzaGVkSW1wbChJbnN0cnVtZW50aW5n
QWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzKQogewotICAgIGlmIChJbnNwZWN0b3JSZXBsYXlB
Z2VudCogcmVwbGF5QWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JSZXBsYXlB
Z2VudCgpKQorICAgIGlmIChJbnNwZWN0b3JSZXBsYXlBZ2VudCogcmVwbGF5QWdlbnQgPSBpbnN0
cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvclJlcGxheUFnZW50KCkpCiAgICAgICAgIHJlcGxheUFn
ZW50LT5wbGF5YmFja0ZpbmlzaGVkKCk7CiB9CiAjZW5kaWYKIAotdm9pZCBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246Om5ldHdvcmtTdGF0ZUNoYW5nZWRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMq
IGluc3RydW1lbnRpbmdBZ2VudHMpCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6bmV0
d29ya1N0YXRlQ2hhbmdlZEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0Fn
ZW50cykKIHsKLSAgICBpZiAoSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50KiBhcHBsaWNh
dGlvbkNhY2hlQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JBcHBsaWNhdGlv
bkNhY2hlQWdlbnQoKSkKKyAgICBpZiAoSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50KiBh
cHBsaWNhdGlvbkNhY2hlQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckFwcGxp
Y2F0aW9uQ2FjaGVBZ2VudCgpKQogICAgICAgICBhcHBsaWNhdGlvbkNhY2hlQWdlbnQtPm5ldHdv
cmtTdGF0ZUNoYW5nZWQoKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnVw
ZGF0ZUFwcGxpY2F0aW9uQ2FjaGVTdGF0dXNJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3Ry
dW1lbnRpbmdBZ2VudHMsIEZyYW1lKiBmcmFtZSkKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjp1cGRhdGVBcHBsaWNhdGlvbkNhY2hlU3RhdHVzSW1wbChJbnN0cnVtZW50aW5nQWdlbnRz
JiBpbnN0cnVtZW50aW5nQWdlbnRzLCBGcmFtZSogZnJhbWUpCiB7Ci0gICAgaWYgKEluc3BlY3Rv
ckFwcGxpY2F0aW9uQ2FjaGVBZ2VudCogYXBwbGljYXRpb25DYWNoZUFnZW50ID0gaW5zdHJ1bWVu
dGluZ0FnZW50cy0+aW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50KCkpCisgICAgaWYgKElu
c3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudCogYXBwbGljYXRpb25DYWNoZUFnZW50ID0gaW5z
dHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQoKSkKICAgICAg
ICAgYXBwbGljYXRpb25DYWNoZUFnZW50LT51cGRhdGVBcHBsaWNhdGlvbkNhY2hlU3RhdHVzKGZy
YW1lKTsKIH0KIApAQCAtMTE3Miw0MCArMTE4MCw0MCBAQCBib29sIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6cmVwbGF5QWdlbnRFbmFibGVkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlw
dAogI2VuZGlmCiB9CiAKLXZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpwYXVzZU9uTmF0
aXZlRXZlbnRJZk5lZWRlZChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRz
LCBib29sIGlzRE9NRXZlbnQsIGNvbnN0IFN0cmluZyYgZXZlbnROYW1lLCBib29sIHN5bmNocm9u
b3VzKQordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnBhdXNlT25OYXRpdmVFdmVudElm
TmVlZGVkKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIGJvb2wgaXNE
T01FdmVudCwgY29uc3QgU3RyaW5nJiBldmVudE5hbWUsIGJvb2wgc3luY2hyb25vdXMpCiB7Ci0g
ICAgaWYgKEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQqIGRvbURlYnVnZ2VyQWdlbnQgPSBpbnN0
cnVtZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50KCkpCisgICAgaWYgKElu
c3BlY3RvckRPTURlYnVnZ2VyQWdlbnQqIGRvbURlYnVnZ2VyQWdlbnQgPSBpbnN0cnVtZW50aW5n
QWdlbnRzLmluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQoKSkKICAgICAgICAgZG9tRGVidWdnZXJB
Z2VudC0+cGF1c2VPbk5hdGl2ZUV2ZW50SWZOZWVkZWQoaXNET01FdmVudCwgZXZlbnROYW1lLCBz
eW5jaHJvbm91cyk7CiB9CiAKLXZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjYW5jZWxQ
YXVzZU9uTmF0aXZlRXZlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50
cykKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjYW5jZWxQYXVzZU9uTmF0aXZlRXZl
bnQoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cykKIHsKLSAgICBpZiAo
SW5zcGVjdG9yRGVidWdnZXJBZ2VudCogZGVidWdnZXJBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2Vu
dHMtPmluc3BlY3RvckRlYnVnZ2VyQWdlbnQoKSkKKyAgICBpZiAoSW5zcGVjdG9yRGVidWdnZXJB
Z2VudCogZGVidWdnZXJBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yRGVidWdn
ZXJBZ2VudCgpKQogICAgICAgICBkZWJ1Z2dlckFnZW50LT5jYW5jZWxQYXVzZU9uTmV4dFN0YXRl
bWVudCgpOwogfQogCi12b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVxdWVzdEFu
aW1hdGlvbkZyYW1lSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRz
LCBpbnQgY2FsbGJhY2tJZCwgRnJhbWUqIGZyYW1lKQordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmRpZFJlcXVlc3RBbmltYXRpb25GcmFtZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYg
aW5zdHJ1bWVudGluZ0FnZW50cywgaW50IGNhbGxiYWNrSWQsIEZyYW1lKiBmcmFtZSkKIHsKICAg
ICBwYXVzZU9uTmF0aXZlRXZlbnRJZk5lZWRlZChpbnN0cnVtZW50aW5nQWdlbnRzLCBmYWxzZSwg
cmVxdWVzdEFuaW1hdGlvbkZyYW1lRXZlbnROYW1lLCB0cnVlKTsKIAotICAgIGlmIChJbnNwZWN0
b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5z
cGVjdG9yVGltZWxpbmVBZ2VudCgpKQorICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0
aW1lbGluZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JUaW1lbGluZUFnZW50
KCkpCiAgICAgICAgIHRpbWVsaW5lQWdlbnQtPmRpZFJlcXVlc3RBbmltYXRpb25GcmFtZShjYWxs
YmFja0lkLCBmcmFtZSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRD
YW5jZWxBbmltYXRpb25GcmFtZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGlu
Z0FnZW50cywgaW50IGNhbGxiYWNrSWQsIEZyYW1lKiBmcmFtZSkKK3ZvaWQgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpkaWRDYW5jZWxBbmltYXRpb25GcmFtZUltcGwoSW5zdHJ1bWVudGluZ0Fn
ZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgaW50IGNhbGxiYWNrSWQsIEZyYW1lKiBmcmFtZSkK
IHsKICAgICBwYXVzZU9uTmF0aXZlRXZlbnRJZk5lZWRlZChpbnN0cnVtZW50aW5nQWdlbnRzLCBm
YWxzZSwgY2FuY2VsQW5pbWF0aW9uRnJhbWVFdmVudE5hbWUsIHRydWUpOwogCi0gICAgaWYgKElu
c3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRz
LT5pbnNwZWN0b3JUaW1lbGluZUFnZW50KCkpCisgICAgaWYgKEluc3BlY3RvclRpbWVsaW5lQWdl
bnQqIHRpbWVsaW5lQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvclRpbWVsaW5l
QWdlbnQoKSkKICAgICAgICAgdGltZWxpbmVBZ2VudC0+ZGlkQ2FuY2VsQW5pbWF0aW9uRnJhbWUo
Y2FsbGJhY2tJZCwgZnJhbWUpOwogfQogCi1JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRmlyZUFuaW1hdGlvbkZyYW1lSW1wbChJbnN0
cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBpbnQgY2FsbGJhY2tJZCwgRnJh
bWUqIGZyYW1lKQorSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6d2lsbEZpcmVBbmltYXRpb25GcmFtZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50
cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgaW50IGNhbGxiYWNrSWQsIEZyYW1lKiBmcmFtZSkKIHsK
ICAgICBwYXVzZU9uTmF0aXZlRXZlbnRJZk5lZWRlZChpbnN0cnVtZW50aW5nQWdlbnRzLCBmYWxz
ZSwgYW5pbWF0aW9uRnJhbWVGaXJlZEV2ZW50TmFtZSwgZmFsc2UpOwogCiAgICAgaW50IHRpbWVs
aW5lQWdlbnRJZCA9IDA7Ci0gICAgaWYgKEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5l
QWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JUaW1lbGluZUFnZW50KCkpIHsK
KyAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IGluc3RydW1l
bnRpbmdBZ2VudHMuaW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpKSB7CiAgICAgICAgIHRpbWVsaW5l
QWdlbnQtPndpbGxGaXJlQW5pbWF0aW9uRnJhbWUoY2FsbGJhY2tJZCwgZnJhbWUpOwogICAgICAg
ICB0aW1lbGluZUFnZW50SWQgPSB0aW1lbGluZUFnZW50LT5pZCgpOwogICAgIH0KQEAgLTEyMTgs
MjggKzEyMjYsMzEgQEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZpcmVBbmlt
YXRpb25GcmFtZUltcGwoY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWUKICAgICAgICAgdGltZWxpbmVB
Z2VudC0+ZGlkRmlyZUFuaW1hdGlvbkZyYW1lKCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpyZWdpc3Rlckluc3RydW1lbnRpbmdBZ2VudHMoSW5zdHJ1bWVudGluZ0FnZW50
cyogaW5zdHJ1bWVudGluZ0FnZW50cykKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpy
ZWdpc3Rlckluc3RydW1lbnRpbmdBZ2VudHMoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVu
dGluZ0FnZW50cykKIHsKLSAgICBpZiAoIWluc3RydW1lbnRpbmdBZ2VudHNTZXQpCi0gICAgICAg
IGluc3RydW1lbnRpbmdBZ2VudHNTZXQgPSBuZXcgSGFzaFNldDxJbnN0cnVtZW50aW5nQWdlbnRz
Kj4oKTsKLSAgICBpbnN0cnVtZW50aW5nQWdlbnRzU2V0LT5hZGQoaW5zdHJ1bWVudGluZ0FnZW50
cyk7CisgICAgaWYgKCFzX2luc3RydW1lbnRpbmdBZ2VudHNTZXQpCisgICAgICAgIHNfaW5zdHJ1
bWVudGluZ0FnZW50c1NldCA9IG5ldyBIYXNoU2V0PEluc3RydW1lbnRpbmdBZ2VudHMqPigpOwor
CisgICAgc19pbnN0cnVtZW50aW5nQWdlbnRzU2V0LT5hZGQoJmluc3RydW1lbnRpbmdBZ2VudHMp
OwogfQogCi12b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6dW5yZWdpc3Rlckluc3RydW1l
bnRpbmdBZ2VudHMoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cykKK3Zv
aWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp1bnJlZ2lzdGVySW5zdHJ1bWVudGluZ0FnZW50
cyhJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzKQogewotICAgIGlmICgh
aW5zdHJ1bWVudGluZ0FnZW50c1NldCkKKyAgICBpZiAoIXNfaW5zdHJ1bWVudGluZ0FnZW50c1Nl
dCkKICAgICAgICAgcmV0dXJuOwotICAgIGluc3RydW1lbnRpbmdBZ2VudHNTZXQtPnJlbW92ZShp
bnN0cnVtZW50aW5nQWdlbnRzKTsKLSAgICBpZiAoaW5zdHJ1bWVudGluZ0FnZW50c1NldC0+aXNF
bXB0eSgpKSB7Ci0gICAgICAgIGRlbGV0ZSBpbnN0cnVtZW50aW5nQWdlbnRzU2V0OwotICAgICAg
ICBpbnN0cnVtZW50aW5nQWdlbnRzU2V0ID0gbnVsbHB0cjsKKworICAgIHNfaW5zdHJ1bWVudGlu
Z0FnZW50c1NldC0+cmVtb3ZlKCZpbnN0cnVtZW50aW5nQWdlbnRzKTsKKyAgICBpZiAoc19pbnN0
cnVtZW50aW5nQWdlbnRzU2V0LT5pc0VtcHR5KCkpIHsKKyAgICAgICAgZGVsZXRlIHNfaW5zdHJ1
bWVudGluZ0FnZW50c1NldDsKKyAgICAgICAgc19pbnN0cnVtZW50aW5nQWdlbnRzU2V0ID0gbnVs
bHB0cjsKICAgICB9CiB9CiAKIEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6cmV0cmlldmVUaW1lbGluZUFnZW50KGNvbnN0IEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbkNvb2tpZSYgY29va2llKQogewotICAgIGlmICghY29va2llLmluc3RydW1lbnRpbmdB
Z2VudHMoKSkKKyAgICBpZiAoIWNvb2tpZS5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOworCiAgICAgSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IGNvb2tp
ZS5pbnN0cnVtZW50aW5nQWdlbnRzKCktPmluc3BlY3RvclRpbWVsaW5lQWdlbnQoKTsKICAgICBp
ZiAodGltZWxpbmVBZ2VudCAmJiBjb29raWUuaGFzTWF0Y2hpbmdUaW1lbGluZUFnZW50SWQodGlt
ZWxpbmVBZ2VudC0+aWQoKSkpCiAgICAgICAgIHJldHVybiB0aW1lbGluZUFnZW50OwpAQCAtMTI0
OCw0NyArMTI1OSw0OSBAQCBJbnNwZWN0b3JUaW1lbGluZUFnZW50KiBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OnJldHJpZXZlVGltZWxpbmVBZ2VudChjb25zdCBJbgogCiBJbnN0cnVtZW50aW5n
QWdlbnRzKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Omluc3RydW1lbnRpbmdBZ2VudHNGb3JQ
YWdlKFBhZ2UqIHBhZ2UpCiB7Ci0gICAgaWYgKCFwYWdlKQotICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLSAgICByZXR1cm4gaW5zdHJ1bWVudGF0aW9uRm9yUGFnZShwYWdlKTsKKyAgICByZXR1cm4g
cGFnZSA/IGluc3RydW1lbnRpbmdBZ2VudHNGb3JQYWdlKCpwYWdlKSA6IG51bGxwdHI7Cit9CisK
K0luc3RydW1lbnRpbmdBZ2VudHMqIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW5zdHJ1bWVu
dGluZ0FnZW50c0ZvclBhZ2UoUGFnZSYgcGFnZSkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOworICAgIHJldHVybiBwYWdlLmluc3BlY3RvckNvbnRyb2xsZXIoKS5tX2luc3RydW1lbnRp
bmdBZ2VudHMuZ2V0KCk7CiB9CiAKIEluc3RydW1lbnRpbmdBZ2VudHMqIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6aW5zdHJ1bWVudGluZ0FnZW50c0ZvclJlbmRlcmVyKFJlbmRlck9iamVjdCog
cmVuZGVyZXIpCiB7Ci0gICAgcmV0dXJuIGluc3RydW1lbnRpbmdBZ2VudHNGb3JGcmFtZSgmcmVu
ZGVyZXItPmZyYW1lKCkpOworICAgIHJldHVybiBpbnN0cnVtZW50aW5nQWdlbnRzRm9yRnJhbWUo
cmVuZGVyZXItPmZyYW1lKCkpOwogfQogCiBJbnN0cnVtZW50aW5nQWdlbnRzKiBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246Omluc3RydW1lbnRpbmdBZ2VudHNGb3JXb3JrZXJHbG9iYWxTY29wZShX
b3JrZXJHbG9iYWxTY29wZSogd29ya2VyR2xvYmFsU2NvcGUpCiB7Ci0gICAgaWYgKCF3b3JrZXJH
bG9iYWxTY29wZSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIGluc3RydW1l
bnRhdGlvbkZvcldvcmtlckdsb2JhbFNjb3BlKHdvcmtlckdsb2JhbFNjb3BlKTsKKyAgICByZXR1
cm4gd29ya2VyR2xvYmFsU2NvcGUgPyB3b3JrZXJHbG9iYWxTY29wZS0+d29ya2VySW5zcGVjdG9y
Q29udHJvbGxlcigpLm1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSA6IG51bGxwdHI7CiB9CiAK
IEluc3RydW1lbnRpbmdBZ2VudHMqIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW5zdHJ1bWVu
dGluZ0FnZW50c0Zvck5vbkRvY3VtZW50Q29udGV4dChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBj
b250ZXh0KQogewogICAgIEFTU0VSVChjb250ZXh0KTsKICAgICBpZiAoaXM8V29ya2VyR2xvYmFs
U2NvcGU+KCpjb250ZXh0KSkKLSAgICAgICAgcmV0dXJuIGluc3RydW1lbnRhdGlvbkZvcldvcmtl
ckdsb2JhbFNjb3BlKGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KSk7CisgICAg
ICAgIHJldHVybiBpbnN0cnVtZW50aW5nQWdlbnRzRm9yV29ya2VyR2xvYmFsU2NvcGUoZG93bmNh
c3Q8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0K
IAotdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmxheWVyVHJlZURpZENoYW5nZUltcGwo
SW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cykKK3ZvaWQgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpsYXllclRyZWVEaWRDaGFuZ2VJbXBsKEluc3RydW1lbnRpbmdBZ2Vu
dHMmIGluc3RydW1lbnRpbmdBZ2VudHMpCiB7Ci0gICAgaWYgKEluc3BlY3RvckxheWVyVHJlZUFn
ZW50KiBsYXllclRyZWVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvckxheWVy
VHJlZUFnZW50KCkpCisgICAgaWYgKEluc3BlY3RvckxheWVyVHJlZUFnZW50KiBsYXllclRyZWVB
Z2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQoKSkKICAg
ICAgICAgbGF5ZXJUcmVlQWdlbnQtPmxheWVyVHJlZURpZENoYW5nZSgpOwogfQogCi12b2lkIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6cmVuZGVyTGF5ZXJEZXN0cm95ZWRJbXBsKEluc3RydW1l
bnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIGNvbnN0IFJlbmRlckxheWVyKiByZW5k
ZXJMYXllcikKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpyZW5kZXJMYXllckRlc3Ry
b3llZEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgY29uc3Qg
UmVuZGVyTGF5ZXImIHJlbmRlckxheWVyKQogewotICAgIGlmIChJbnNwZWN0b3JMYXllclRyZWVB
Z2VudCogbGF5ZXJUcmVlQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JMYXll
clRyZWVBZ2VudCgpKQotICAgICAgICBsYXllclRyZWVBZ2VudC0+cmVuZGVyTGF5ZXJEZXN0cm95
ZWQocmVuZGVyTGF5ZXIpOworICAgIGlmIChJbnNwZWN0b3JMYXllclRyZWVBZ2VudCogbGF5ZXJU
cmVlQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckxheWVyVHJlZUFnZW50KCkp
CisgICAgICAgIGxheWVyVHJlZUFnZW50LT5yZW5kZXJMYXllckRlc3Ryb3llZCgmcmVuZGVyTGF5
ZXIpOwogfQogCi12b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6cHNldWRvRWxlbWVudERl
c3Ryb3llZEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgUHNl
dWRvRWxlbWVudCogcHNldWRvRWxlbWVudCkKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Ojpwc2V1ZG9FbGVtZW50RGVzdHJveWVkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVt
ZW50aW5nQWdlbnRzLCBQc2V1ZG9FbGVtZW50JiBwc2V1ZG9FbGVtZW50KQogewotICAgIGlmIChJ
bnNwZWN0b3JMYXllclRyZWVBZ2VudCogbGF5ZXJUcmVlQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdl
bnRzLT5pbnNwZWN0b3JMYXllclRyZWVBZ2VudCgpKQotICAgICAgICBsYXllclRyZWVBZ2VudC0+
cHNldWRvRWxlbWVudERlc3Ryb3llZChwc2V1ZG9FbGVtZW50KTsKKyAgICBpZiAoSW5zcGVjdG9y
TGF5ZXJUcmVlQWdlbnQqIGxheWVyVHJlZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNw
ZWN0b3JMYXllclRyZWVBZ2VudCgpKQorICAgICAgICBsYXllclRyZWVBZ2VudC0+cHNldWRvRWxl
bWVudERlc3Ryb3llZCgmcHNldWRvRWxlbWVudCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50
YXRpb24uaAppbmRleCA4MDAzYzU0NTMyYzE5ZTk2NTIwNjY5ZGE2YjczNjQzM2MwMGU2ZTU3Li5l
MjRlZjcxY2VkMzY2MDQyZDk3MTE2N2MxZGJmZTkxOGJiZWIxNjIyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCkBAIC0xMDks
MzIgKzEwOSwzMiBAQCBzdHJ1Y3QgUmVwbGF5UG9zaXRpb247CiAKIGNsYXNzIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHZvaWQgZGlkQ2xlYXJXaW5kb3dP
YmplY3RJbldvcmxkKEZyYW1lKiwgRE9NV3JhcHBlcldvcmxkJik7CisgICAgc3RhdGljIHZvaWQg
ZGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxkKEZyYW1lJiwgRE9NV3JhcHBlcldvcmxkJik7CiAg
ICAgc3RhdGljIGJvb2wgaXNEZWJ1Z2dlclBhdXNlZChGcmFtZSopOwogCi0gICAgc3RhdGljIHZv
aWQgd2lsbEluc2VydERPTU5vZGUoRG9jdW1lbnQqLCBOb2RlKiBwYXJlbnQpOwotICAgIHN0YXRp
YyB2b2lkIGRpZEluc2VydERPTU5vZGUoRG9jdW1lbnQqLCBOb2RlKik7Ci0gICAgc3RhdGljIHZv
aWQgd2lsbFJlbW92ZURPTU5vZGUoRG9jdW1lbnQqLCBOb2RlKik7Ci0gICAgc3RhdGljIHZvaWQg
ZGlkUmVtb3ZlRE9NTm9kZShEb2N1bWVudCosIE5vZGUqKTsKLSAgICBzdGF0aWMgdm9pZCB3aWxs
TW9kaWZ5RE9NQXR0cihEb2N1bWVudCosIEVsZW1lbnQqLCBjb25zdCBBdG9taWNTdHJpbmcmIG9s
ZFZhbHVlLCBjb25zdCBBdG9taWNTdHJpbmcmIG5ld1ZhbHVlKTsKLSAgICBzdGF0aWMgdm9pZCBk
aWRNb2RpZnlET01BdHRyKERvY3VtZW50KiwgRWxlbWVudCosIGNvbnN0IEF0b21pY1N0cmluZyYg
bmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSk7Ci0gICAgc3RhdGljIHZvaWQgZGlkUmVt
b3ZlRE9NQXR0cihEb2N1bWVudCosIEVsZW1lbnQqLCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUp
OwotICAgIHN0YXRpYyB2b2lkIGNoYXJhY3RlckRhdGFNb2RpZmllZChEb2N1bWVudCosIENoYXJh
Y3RlckRhdGEqKTsKLSAgICBzdGF0aWMgdm9pZCBkaWRJbnZhbGlkYXRlU3R5bGVBdHRyKERvY3Vt
ZW50KiwgTm9kZSopOworICAgIHN0YXRpYyB2b2lkIHdpbGxJbnNlcnRET01Ob2RlKERvY3VtZW50
JiwgTm9kZSYgcGFyZW50KTsKKyAgICBzdGF0aWMgdm9pZCBkaWRJbnNlcnRET01Ob2RlKERvY3Vt
ZW50JiwgTm9kZSYpOworICAgIHN0YXRpYyB2b2lkIHdpbGxSZW1vdmVET01Ob2RlKERvY3VtZW50
JiwgTm9kZSYpOworICAgIHN0YXRpYyB2b2lkIGRpZFJlbW92ZURPTU5vZGUoRG9jdW1lbnQmLCBO
b2RlJik7CisgICAgc3RhdGljIHZvaWQgd2lsbE1vZGlmeURPTUF0dHIoRG9jdW1lbnQmLCBFbGVt
ZW50JiwgY29uc3QgQXRvbWljU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgQXRvbWljU3RyaW5nJiBu
ZXdWYWx1ZSk7CisgICAgc3RhdGljIHZvaWQgZGlkTW9kaWZ5RE9NQXR0cihEb2N1bWVudCYsIEVs
ZW1lbnQmLCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFs
dWUpOworICAgIHN0YXRpYyB2b2lkIGRpZFJlbW92ZURPTUF0dHIoRG9jdW1lbnQmLCBFbGVtZW50
JiwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKTsKKyAgICBzdGF0aWMgdm9pZCBjaGFyYWN0ZXJE
YXRhTW9kaWZpZWQoRG9jdW1lbnQmLCBDaGFyYWN0ZXJEYXRhJik7CisgICAgc3RhdGljIHZvaWQg
ZGlkSW52YWxpZGF0ZVN0eWxlQXR0cihEb2N1bWVudCYsIE5vZGUmKTsKICAgICBzdGF0aWMgdm9p
ZCBmcmFtZVdpbmRvd0Rpc2NhcmRlZChGcmFtZSosIERPTVdpbmRvdyopOwotICAgIHN0YXRpYyB2
b2lkIG1lZGlhUXVlcnlSZXN1bHRDaGFuZ2VkKERvY3VtZW50Kik7Ci0gICAgc3RhdGljIHZvaWQg
ZGlkUHVzaFNoYWRvd1Jvb3QoRWxlbWVudCogaG9zdCwgU2hhZG93Um9vdCopOwotICAgIHN0YXRp
YyB2b2lkIHdpbGxQb3BTaGFkb3dSb290KEVsZW1lbnQqIGhvc3QsIFNoYWRvd1Jvb3QqKTsKLSAg
ICBzdGF0aWMgdm9pZCBkaWRDcmVhdGVOYW1lZEZsb3coRG9jdW1lbnQqLCBXZWJLaXROYW1lZEZs
b3cqKTsKLSAgICBzdGF0aWMgdm9pZCB3aWxsUmVtb3ZlTmFtZWRGbG93KERvY3VtZW50KiwgV2Vi
S2l0TmFtZWRGbG93Kik7Ci0gICAgc3RhdGljIHZvaWQgZGlkQ2hhbmdlUmVnaW9uT3ZlcnNldChE
b2N1bWVudCosIFdlYktpdE5hbWVkRmxvdyopOwotICAgIHN0YXRpYyB2b2lkIGRpZFJlZ2lzdGVy
TmFtZWRGbG93Q29udGVudEVsZW1lbnQoRG9jdW1lbnQqLCBXZWJLaXROYW1lZEZsb3cqLCBOb2Rl
KiBjb250ZW50RWxlbWVudCwgTm9kZSogbmV4dENvbnRlbnRFbGVtZW50ID0gbnVsbHB0cik7Ci0g
ICAgc3RhdGljIHZvaWQgZGlkVW5yZWdpc3Rlck5hbWVkRmxvd0NvbnRlbnRFbGVtZW50KERvY3Vt
ZW50KiwgV2ViS2l0TmFtZWRGbG93KiwgTm9kZSogY29udGVudEVsZW1lbnQpOwotCi0gICAgc3Rh
dGljIHZvaWQgbW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQoUGFnZSosIGNvbnN0IEhpdFRlc3RSZXN1
bHQmLCB1bnNpZ25lZCBtb2RpZmllckZsYWdzKTsKLSAgICBzdGF0aWMgYm9vbCBoYW5kbGVNb3Vz
ZVByZXNzKFBhZ2UqKTsKLSAgICBzdGF0aWMgYm9vbCBoYW5kbGVUb3VjaEV2ZW50KFBhZ2UqLCBO
b2RlKik7Ci0gICAgc3RhdGljIGJvb2wgZm9yY2VQc2V1ZG9TdGF0ZShFbGVtZW50KiwgQ1NTU2Vs
ZWN0b3I6OlBzZXVkb0NsYXNzVHlwZSk7CisgICAgc3RhdGljIHZvaWQgbWVkaWFRdWVyeVJlc3Vs
dENoYW5nZWQoRG9jdW1lbnQmKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRQdXNoU2hhZG93Um9vdChF
bGVtZW50JiBob3N0LCBTaGFkb3dSb290Jik7CisgICAgc3RhdGljIHZvaWQgd2lsbFBvcFNoYWRv
d1Jvb3QoRWxlbWVudCYgaG9zdCwgU2hhZG93Um9vdCYpOworICAgIHN0YXRpYyB2b2lkIGRpZENy
ZWF0ZU5hbWVkRmxvdyhEb2N1bWVudCosIFdlYktpdE5hbWVkRmxvdyYpOworICAgIHN0YXRpYyB2
b2lkIHdpbGxSZW1vdmVOYW1lZEZsb3coRG9jdW1lbnQqLCBXZWJLaXROYW1lZEZsb3cmKTsKKyAg
ICBzdGF0aWMgdm9pZCBkaWRDaGFuZ2VSZWdpb25PdmVyc2V0KERvY3VtZW50JiwgV2ViS2l0TmFt
ZWRGbG93Jik7CisgICAgc3RhdGljIHZvaWQgZGlkUmVnaXN0ZXJOYW1lZEZsb3dDb250ZW50RWxl
bWVudChEb2N1bWVudCYsIFdlYktpdE5hbWVkRmxvdyYsIE5vZGUmIGNvbnRlbnRFbGVtZW50LCBO
b2RlKiBuZXh0Q29udGVudEVsZW1lbnQgPSBudWxscHRyKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRV
bnJlZ2lzdGVyTmFtZWRGbG93Q29udGVudEVsZW1lbnQoRG9jdW1lbnQmLCBXZWJLaXROYW1lZEZs
b3cmLCBOb2RlJiBjb250ZW50RWxlbWVudCk7CisKKyAgICBzdGF0aWMgdm9pZCBtb3VzZURpZE1v
dmVPdmVyRWxlbWVudChQYWdlJiwgY29uc3QgSGl0VGVzdFJlc3VsdCYsIHVuc2lnbmVkIG1vZGlm
aWVyRmxhZ3MpOworICAgIHN0YXRpYyBib29sIGhhbmRsZU1vdXNlUHJlc3MoRnJhbWUmKTsKKyAg
ICBzdGF0aWMgYm9vbCBoYW5kbGVUb3VjaEV2ZW50KFBhZ2UmLCBOb2RlJik7CisgICAgc3RhdGlj
IGJvb2wgZm9yY2VQc2V1ZG9TdGF0ZShFbGVtZW50JiwgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNz
VHlwZSk7CiAKICAgICBzdGF0aWMgdm9pZCB3aWxsU2VuZFhNTEh0dHBSZXF1ZXN0KFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIHVybCk7CiAgICAgc3RhdGljIHZvaWQgZGlk
U2NoZWR1bGVSZXNvdXJjZVJlcXVlc3QoRG9jdW1lbnQqLCBjb25zdCBTdHJpbmcmIHVybCk7CkBA
IC0xNDMsNTAgKzE0Myw0OSBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uQ29va2llIHdpbGxDYWxsRnVuY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IGNvbnN0IFN0cmluZyYgc2NyaXB0TmFtZSwgaW50IHNjcmlwdExpbmUpOwogICAgIHN0YXRpYyB2
b2lkIGRpZENhbGxGdW5jdGlvbihjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUm
LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7Ci0gICAgc3RhdGljIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbkNvb2tpZSB3aWxsRGlzcGF0Y2hYSFJSZWFkeVN0YXRlQ2hhbmdlRXZlbnQoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCosIFhNTEh0dHBSZXF1ZXN0Kik7CisgICAgc3RhdGljIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbkNvb2tpZSB3aWxsRGlzcGF0Y2hYSFJSZWFkeVN0YXRlQ2hhbmdlRXZl
bnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFhNTEh0dHBSZXF1ZXN0Jik7CiAgICAgc3RhdGlj
IHZvaWQgZGlkRGlzcGF0Y2hYSFJSZWFkeVN0YXRlQ2hhbmdlRXZlbnQoY29uc3QgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uQ29va2llJik7Ci0gICAgc3RhdGljIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbkNvb2tpZSB3aWxsRGlzcGF0Y2hFdmVudChEb2N1bWVudCosIGNvbnN0IEV2ZW50JiwgYm9v
bCBoYXNFdmVudExpc3RlbmVycyk7CisgICAgc3RhdGljIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bkNvb2tpZSB3aWxsRGlzcGF0Y2hFdmVudChEb2N1bWVudCYsIGNvbnN0IEV2ZW50JiwgYm9vbCBo
YXNFdmVudExpc3RlbmVycyk7CiAgICAgc3RhdGljIHZvaWQgZGlkRGlzcGF0Y2hFdmVudChjb25z
dCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUmKTsKLSAgICBzdGF0aWMgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uQ29va2llIHdpbGxIYW5kbGVFdmVudChTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgRXZlbnQqKTsKKyAgICBzdGF0aWMgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2ll
IHdpbGxIYW5kbGVFdmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgRXZlbnQmKTsK
ICAgICBzdGF0aWMgdm9pZCBkaWRIYW5kbGVFdmVudChjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb25Db29raWUmKTsKLSAgICBzdGF0aWMgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2ll
IHdpbGxEaXNwYXRjaEV2ZW50T25XaW5kb3coRnJhbWUqLCBjb25zdCBFdmVudCYgZXZlbnQsIERP
TVdpbmRvdyogd2luZG93KTsKKyAgICBzdGF0aWMgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29v
a2llIHdpbGxEaXNwYXRjaEV2ZW50T25XaW5kb3coRnJhbWUqLCBjb25zdCBFdmVudCYsIERPTVdp
bmRvdyYpOwogICAgIHN0YXRpYyB2b2lkIGRpZERpc3BhdGNoRXZlbnRPbldpbmRvdyhjb25zdCBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUmKTsKLSAgICBzdGF0aWMgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uQ29va2llIHdpbGxFdmFsdWF0ZVNjcmlwdChGcmFtZSosIGNvbnN0IFN0cmlu
ZyYgdXJsLCBpbnQgbGluZU51bWJlcik7Ci0gICAgc3RhdGljIHZvaWQgZGlkRXZhbHVhdGVTY3Jp
cHQoY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llJiwgRnJhbWUqKTsKLSAgICBz
dGF0aWMgdm9pZCBzY3JpcHRzRW5hYmxlZChQYWdlKiwgYm9vbCBpc0VuYWJsZWQpOwotICAgIHN0
YXRpYyB2b2lkIGRpZENyZWF0ZUlzb2xhdGVkQ29udGV4dChGcmFtZSosIEpTQzo6RXhlY1N0YXRl
KiwgU2VjdXJpdHlPcmlnaW4qKTsKKyAgICBzdGF0aWMgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Q29va2llIHdpbGxFdmFsdWF0ZVNjcmlwdChGcmFtZSYsIGNvbnN0IFN0cmluZyYgdXJsLCBpbnQg
bGluZU51bWJlcik7CisgICAgc3RhdGljIHZvaWQgZGlkRXZhbHVhdGVTY3JpcHQoY29uc3QgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llJiwgRnJhbWUmKTsKKyAgICBzdGF0aWMgdm9pZCBz
Y3JpcHRzRW5hYmxlZChQYWdlJiwgYm9vbCBpc0VuYWJsZWQpOwogICAgIHN0YXRpYyBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb25Db29raWUgd2lsbEZpcmVUaW1lcihTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgaW50IHRpbWVySWQpOwogICAgIHN0YXRpYyB2b2lkIGRpZEZpcmVUaW1lcihjb25zdCBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUmKTsKLSAgICBzdGF0aWMgdm9pZCBkaWRJbnZh
bGlkYXRlTGF5b3V0KEZyYW1lKik7Ci0gICAgc3RhdGljIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bkNvb2tpZSB3aWxsTGF5b3V0KEZyYW1lKik7CisgICAgc3RhdGljIHZvaWQgZGlkSW52YWxpZGF0
ZUxheW91dChGcmFtZSYpOworICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29r
aWUgd2lsbExheW91dChGcmFtZSYpOwogICAgIHN0YXRpYyB2b2lkIGRpZExheW91dChjb25zdCBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUmLCBSZW5kZXJPYmplY3QqKTsKLSAgICBzdGF0
aWMgdm9pZCBkaWRTY3JvbGwoUGFnZSopOwotICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb25Db29raWUgd2lsbERpc3BhdGNoWEhSTG9hZEV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCBYTUxIdHRwUmVxdWVzdCopOworICAgIHN0YXRpYyB2b2lkIGRpZFNjcm9sbChQYWdlJik7
CisgICAgc3RhdGljIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSB3aWxsRGlzcGF0Y2hY
SFJMb2FkRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFhNTEh0dHBSZXF1ZXN0Jik7CiAg
ICAgc3RhdGljIHZvaWQgZGlkRGlzcGF0Y2hYSFJMb2FkRXZlbnQoY29uc3QgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uQ29va2llJik7Ci0gICAgc3RhdGljIHZvaWQgd2lsbFNjcm9sbExheWVyKEZy
YW1lKik7Ci0gICAgc3RhdGljIHZvaWQgZGlkU2Nyb2xsTGF5ZXIoRnJhbWUqKTsKKyAgICBzdGF0
aWMgdm9pZCB3aWxsU2Nyb2xsTGF5ZXIoRnJhbWUmKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRTY3Jv
bGxMYXllcihGcmFtZSYpOwogICAgIHN0YXRpYyB2b2lkIHdpbGxQYWludChSZW5kZXJPYmplY3Qq
KTsKICAgICBzdGF0aWMgdm9pZCBkaWRQYWludChSZW5kZXJPYmplY3QqLCBjb25zdCBMYXlvdXRS
ZWN0Jik7Ci0gICAgc3RhdGljIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSB3aWxsUmVj
YWxjdWxhdGVTdHlsZShEb2N1bWVudCopOworICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb25Db29raWUgd2lsbFJlY2FsY3VsYXRlU3R5bGUoRG9jdW1lbnQmKTsKICAgICBzdGF0aWMg
dm9pZCBkaWRSZWNhbGN1bGF0ZVN0eWxlKGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNv
b2tpZSYpOwotICAgIHN0YXRpYyB2b2lkIGRpZFNjaGVkdWxlU3R5bGVSZWNhbGN1bGF0aW9uKERv
Y3VtZW50Kik7CisgICAgc3RhdGljIHZvaWQgZGlkU2NoZWR1bGVTdHlsZVJlY2FsY3VsYXRpb24o
RG9jdW1lbnQmKTsKIAotICAgIHN0YXRpYyB2b2lkIGFwcGx5RW11bGF0ZWRNZWRpYShGcmFtZSos
IFN0cmluZyopOworICAgIHN0YXRpYyB2b2lkIGFwcGx5RW11bGF0ZWRNZWRpYShGcmFtZSYsIFN0
cmluZyYpOwogICAgIHN0YXRpYyB2b2lkIHdpbGxTZW5kUmVxdWVzdChGcmFtZSosIHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqLCBSZXNvdXJjZVJlcXVlc3QmLCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKTsKICAgICBzdGF0aWMgdm9pZCBj
b250aW51ZUFmdGVyUGluZ0xvYWRlcihGcmFtZSYsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwg
RG9jdW1lbnRMb2FkZXIqLCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
Jik7Ci0gICAgc3RhdGljIHZvaWQgbWFya1Jlc291cmNlQXNDYWNoZWQoUGFnZSosIHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllcik7Ci0gICAgc3RhdGljIHZvaWQgZGlkTG9hZFJlc291cmNlRnJvbU1l
bW9yeUNhY2hlKFBhZ2UqLCBEb2N1bWVudExvYWRlciosIENhY2hlZFJlc291cmNlKik7CisgICAg
c3RhdGljIHZvaWQgbWFya1Jlc291cmNlQXNDYWNoZWQoUGFnZSYsIHVuc2lnbmVkIGxvbmcgaWRl
bnRpZmllcik7CisgICAgc3RhdGljIHZvaWQgZGlkTG9hZFJlc291cmNlRnJvbU1lbW9yeUNhY2hl
KFBhZ2UmLCBEb2N1bWVudExvYWRlciosIENhY2hlZFJlc291cmNlKik7CiAgICAgc3RhdGljIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSB3aWxsUmVjZWl2ZVJlc291cmNlRGF0YShGcmFt
ZSosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgaW50IGxlbmd0aCk7CiAgICAgc3RhdGljIHZv
aWQgZGlkUmVjZWl2ZVJlc291cmNlRGF0YShjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25D
b29raWUmKTsKICAgICBzdGF0aWMgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIHdpbGxS
ZWNlaXZlUmVzb3VyY2VSZXNwb25zZShGcmFtZSosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVSZXNv
dXJjZVJlc3BvbnNlKGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYsIHVuc2ln
bmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiwgUmVzb3VyY2VMb2FkZXIqKTsKLSAgICBzdGF0aWMgdm9pZCBjb250aW51ZUFmdGVyWEZy
YW1lT3B0aW9uc0RlbmllZChGcmFtZSosIERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBp
ZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgc3RhdGljIHZvaWQgY29u
dGludWVXaXRoUG9saWN5RG93bmxvYWQoRnJhbWUqLCBEb2N1bWVudExvYWRlciosIHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwotICAgIHN0YXRpYyB2
b2lkIGNvbnRpbnVlV2l0aFBvbGljeUlnbm9yZShGcmFtZSosIERvY3VtZW50TG9hZGVyKiwgdW5z
aWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CisgICAgc3Rh
dGljIHZvaWQgY29udGludWVBZnRlclhGcmFtZU9wdGlvbnNEZW5pZWQoRnJhbWUqLCBEb2N1bWVu
dExvYWRlciYsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYpOworICAgIHN0YXRpYyB2b2lkIGNvbnRpbnVlV2l0aFBvbGljeURvd25sb2FkKEZyYW1lKiwg
RG9jdW1lbnRMb2FkZXImLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmKTsKKyAgICBzdGF0aWMgdm9pZCBjb250aW51ZVdpdGhQb2xpY3lJZ25vcmUoRnJh
bWUqLCBEb2N1bWVudExvYWRlciYsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYpOwogICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVEYXRhKEZyYW1lKiwg
dW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxlbmd0
aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKTsKICAgICBzdGF0aWMgdm9pZCBkaWRGaW5pc2hMb2Fk
aW5nKEZyYW1lKiwgRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGRv
dWJsZSBmaW5pc2hUaW1lKTsKICAgICBzdGF0aWMgdm9pZCBkaWRGYWlsTG9hZGluZyhGcmFtZSos
IERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJj
ZUVycm9yJik7Ci0gICAgc3RhdGljIHZvaWQgZG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyU3RhcnRl
ZExvYWRpbmdGb3JDbGllbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIHVuc2lnbmVkIGxvbmcg
aWRlbnRpZmllciwgVGhyZWFkYWJsZUxvYWRlckNsaWVudCopOworICAgIHN0YXRpYyB2b2lkIGRv
Y3VtZW50VGhyZWFkYWJsZUxvYWRlclN0YXJ0ZWRMb2FkaW5nRm9yQ2xpZW50KERvY3VtZW50Jiwg
dW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50Kik7CiAgICAg
c3RhdGljIHZvaWQgd2lsbExvYWRYSFIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFRocmVhZGFi
bGVMb2FkZXJDbGllbnQqLCBjb25zdCBTdHJpbmcmLCBjb25zdCBVUkwmLCBib29sLCBQYXNzUmVm
UHRyPEZvcm1EYXRhPiwgY29uc3QgSFRUUEhlYWRlck1hcCYsIGJvb2wpOwogICAgIHN0YXRpYyB2
b2lkIGRpZEZhaWxYSFJMb2FkaW5nKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBUaHJlYWRhYmxl
TG9hZGVyQ2xpZW50Kik7CiAgICAgc3RhdGljIHZvaWQgZGlkRmluaXNoWEhSTG9hZGluZyhTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiwgVGhyZWFkYWJsZUxvYWRlckNsaWVudCosIHVuc2lnbmVkIGxv
bmcgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VTdHJpbmcsIGNvbnN0IFN0cmluZyYg
dXJsLCBjb25zdCBTdHJpbmcmIHNlbmRVUkwsIHVuc2lnbmVkIHNlbmRMaW5lTnVtYmVyLCB1bnNp
Z25lZCBzZW5kQ29sdW1uTnVtYmVyKTsKQEAgLTE5Niw0NCArMTk1LDQ0IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgdm9pZCBzY3JpcHRJbXBvcnRlZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgdW5z
aWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVN0cmluZyk7CiAgICAg
c3RhdGljIHZvaWQgc2NyaXB0RXhlY3V0aW9uQmxvY2tlZEJ5Q1NQKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLCBjb25zdCBTdHJpbmcmIGRpcmVjdGl2ZVRleHQpOwogICAgIHN0YXRpYyB2b2lkIGRp
ZFJlY2VpdmVTY3JpcHRSZXNwb25zZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgdW5zaWduZWQg
bG9uZyBpZGVudGlmaWVyKTsKLSAgICBzdGF0aWMgdm9pZCBkb21Db250ZW50TG9hZGVkRXZlbnRG
aXJlZChGcmFtZSopOworICAgIHN0YXRpYyB2b2lkIGRvbUNvbnRlbnRMb2FkZWRFdmVudEZpcmVk
KEZyYW1lJik7CiAgICAgc3RhdGljIHZvaWQgbG9hZEV2ZW50RmlyZWQoRnJhbWUqKTsKLSAgICBz
dGF0aWMgdm9pZCBmcmFtZURldGFjaGVkRnJvbVBhcmVudChGcmFtZSopOwotICAgIHN0YXRpYyB2
b2lkIGRpZENvbW1pdExvYWQoRnJhbWUqLCBEb2N1bWVudExvYWRlciopOworICAgIHN0YXRpYyB2
b2lkIGZyYW1lRGV0YWNoZWRGcm9tUGFyZW50KEZyYW1lJik7CisgICAgc3RhdGljIHZvaWQgZGlk
Q29tbWl0TG9hZChGcmFtZSYsIERvY3VtZW50TG9hZGVyKik7CiAgICAgc3RhdGljIHZvaWQgZnJh
bWVEb2N1bWVudFVwZGF0ZWQoRnJhbWUqKTsKLSAgICBzdGF0aWMgdm9pZCBsb2FkZXJEZXRhY2hl
ZEZyb21GcmFtZShGcmFtZSosIERvY3VtZW50TG9hZGVyKik7CisgICAgc3RhdGljIHZvaWQgbG9h
ZGVyRGV0YWNoZWRGcm9tRnJhbWUoRnJhbWUmLCBEb2N1bWVudExvYWRlciYpOwogICAgIHN0YXRp
YyB2b2lkIGZyYW1lU3RhcnRlZExvYWRpbmcoRnJhbWUmKTsKICAgICBzdGF0aWMgdm9pZCBmcmFt
ZVN0b3BwZWRMb2FkaW5nKEZyYW1lJik7CiAgICAgc3RhdGljIHZvaWQgZnJhbWVTY2hlZHVsZWRO
YXZpZ2F0aW9uKEZyYW1lJiwgZG91YmxlIGRlbGF5KTsKICAgICBzdGF0aWMgdm9pZCBmcmFtZUNs
ZWFyZWRTY2hlZHVsZWROYXZpZ2F0aW9uKEZyYW1lJik7Ci0gICAgc3RhdGljIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbkNvb2tpZSB3aWxsUnVuSmF2YVNjcmlwdERpYWxvZyhQYWdlKiwgY29uc3Qg
U3RyaW5nJiBtZXNzYWdlKTsKKyAgICBzdGF0aWMgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29v
a2llIHdpbGxSdW5KYXZhU2NyaXB0RGlhbG9nKFBhZ2UmLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2Up
OwogICAgIHN0YXRpYyB2b2lkIGRpZFJ1bkphdmFTY3JpcHREaWFsb2coY29uc3QgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uQ29va2llJik7Ci0gICAgc3RhdGljIHZvaWQgd2lsbERlc3Ryb3lDYWNo
ZWRSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSopOworICAgIHN0YXRpYyB2b2lkIHdpbGxEZXN0cm95
Q2FjaGVkUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UmKTsKIAogICAgIHN0YXRpYyBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb25Db29raWUgd2lsbFdyaXRlSFRNTChEb2N1bWVudCosIHVuc2lnbmVkIHN0
YXJ0TGluZSk7CiAgICAgc3RhdGljIHZvaWQgZGlkV3JpdGVIVE1MKGNvbnN0IEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbkNvb2tpZSYsIHVuc2lnbmVkIGVuZExpbmUpOwogCiAgICAgLy8gRklYTUU6
IFJlbW92ZSBvbmNlIHdlIG5vIGxvbmdlciBnZW5lcmF0ZSBzdGFja3Mgb3V0c2lkZSBvZiBJbnNw
ZWN0b3IuCi0gICAgc3RhdGljIHZvaWQgYWRkTWVzc2FnZVRvQ29uc29sZShQYWdlKiwgTWVzc2Fn
ZVNvdXJjZSwgTWVzc2FnZVR5cGUsIE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdl
LCBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6U2NyaXB0Q2FsbFN0YWNrPiwgdW5zaWduZWQgbG9uZyBy
ZXF1ZXN0SWRlbnRpZmllciA9IDApOwotICAgIHN0YXRpYyB2b2lkIGFkZE1lc3NhZ2VUb0NvbnNv
bGUoUGFnZSosIE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VUeXBlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0
IFN0cmluZyYgbWVzc2FnZSwgSlNDOjpFeGVjU3RhdGUqLCBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6
U2NyaXB0QXJndW1lbnRzPiwgdW5zaWduZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmllciA9IDApOwot
ICAgIHN0YXRpYyB2b2lkIGFkZE1lc3NhZ2VUb0NvbnNvbGUoUGFnZSosIE1lc3NhZ2VTb3VyY2Us
IE1lc3NhZ2VUeXBlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3Qg
U3RyaW5nJiBzY3JpcHRJRCwgdW5zaWduZWQgbGluZU51bWJlciwgdW5zaWduZWQgY29sdW1uTnVt
YmVyLCBKU0M6OkV4ZWNTdGF0ZSogPSBudWxscHRyLCB1bnNpZ25lZCBsb25nIHJlcXVlc3RJZGVu
dGlmaWVyID0gMCk7CisgICAgc3RhdGljIHZvaWQgYWRkTWVzc2FnZVRvQ29uc29sZShQYWdlJiwg
TWVzc2FnZVNvdXJjZSwgTWVzc2FnZVR5cGUsIE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBt
ZXNzYWdlLCBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6U2NyaXB0Q2FsbFN0YWNrPiwgdW5zaWduZWQg
bG9uZyByZXF1ZXN0SWRlbnRpZmllciA9IDApOworICAgIHN0YXRpYyB2b2lkIGFkZE1lc3NhZ2VU
b0NvbnNvbGUoUGFnZSYsIE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VUeXBlLCBNZXNzYWdlTGV2ZWws
IGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgSlNDOjpFeGVjU3RhdGUqLCBQYXNzUmVmUHRyPEluc3Bl
Y3Rvcjo6U2NyaXB0QXJndW1lbnRzPiwgdW5zaWduZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmllciA9
IDApOworICAgIHN0YXRpYyB2b2lkIGFkZE1lc3NhZ2VUb0NvbnNvbGUoUGFnZSYsIE1lc3NhZ2VT
b3VyY2UsIE1lc3NhZ2VUeXBlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwg
Y29uc3QgU3RyaW5nJiBzY3JpcHRJRCwgdW5zaWduZWQgbGluZU51bWJlciwgdW5zaWduZWQgY29s
dW1uTnVtYmVyLCBKU0M6OkV4ZWNTdGF0ZSogPSBudWxscHRyLCB1bnNpZ25lZCBsb25nIHJlcXVl
c3RJZGVudGlmaWVyID0gMCk7CiAKICAgICAvLyBGSVhNRTogQ29udmVydCB0byBTY3JpcHRBcmd1
bWVudHMgdG8gbWF0Y2ggbm9uLXdvcmtlciBjb250ZXh0LgogICAgIHN0YXRpYyB2b2lkIGFkZE1l
c3NhZ2VUb0NvbnNvbGUoV29ya2VyR2xvYmFsU2NvcGUqLCBNZXNzYWdlU291cmNlLCBNZXNzYWdl
VHlwZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIFBhc3NSZWZQdHI8SW5z
cGVjdG9yOjpTY3JpcHRDYWxsU3RhY2s+LCB1bnNpZ25lZCBsb25nIHJlcXVlc3RJZGVudGlmaWVy
ID0gMCk7CiAgICAgc3RhdGljIHZvaWQgYWRkTWVzc2FnZVRvQ29uc29sZShXb3JrZXJHbG9iYWxT
Y29wZSosIE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VUeXBlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0
cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzY3JpcHRJRCwgdW5zaWduZWQgbGluZU51bWJl
ciwgdW5zaWduZWQgY29sdW1uTnVtYmVyLCBKU0M6OkV4ZWNTdGF0ZSogPSBudWxscHRyLCB1bnNp
Z25lZCBsb25nIHJlcXVlc3RJZGVudGlmaWVyID0gMCk7CiAKLSAgICBzdGF0aWMgdm9pZCBjb25z
b2xlQ291bnQoUGFnZSosIEpTQzo6RXhlY1N0YXRlKiwgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlNj
cmlwdEFyZ3VtZW50cz4pOwotICAgIHN0YXRpYyB2b2lkIHN0YXJ0Q29uc29sZVRpbWluZyhGcmFt
ZSosIGNvbnN0IFN0cmluZyYgdGl0bGUpOwotICAgIHN0YXRpYyB2b2lkIHN0b3BDb25zb2xlVGlt
aW5nKEZyYW1lKiwgY29uc3QgU3RyaW5nJiB0aXRsZSwgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlNj
cmlwdENhbGxTdGFjaz4pOwotICAgIHN0YXRpYyB2b2lkIGNvbnNvbGVUaW1lU3RhbXAoRnJhbWUq
LCBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6U2NyaXB0QXJndW1lbnRzPik7CisgICAgc3RhdGljIHZv
aWQgY29uc29sZUNvdW50KFBhZ2UmLCBKU0M6OkV4ZWNTdGF0ZSosIFBhc3NSZWZQdHI8SW5zcGVj
dG9yOjpTY3JpcHRBcmd1bWVudHM+KTsKKyAgICBzdGF0aWMgdm9pZCBzdGFydENvbnNvbGVUaW1p
bmcoRnJhbWUmLCBjb25zdCBTdHJpbmcmIHRpdGxlKTsKKyAgICBzdGF0aWMgdm9pZCBzdG9wQ29u
c29sZVRpbWluZyhGcmFtZSYsIGNvbnN0IFN0cmluZyYgdGl0bGUsIFBhc3NSZWZQdHI8SW5zcGVj
dG9yOjpTY3JpcHRDYWxsU3RhY2s+KTsKKyAgICBzdGF0aWMgdm9pZCBjb25zb2xlVGltZVN0YW1w
KEZyYW1lJiwgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlNjcmlwdEFyZ3VtZW50cz4pOwogCiAgICAg
c3RhdGljIHZvaWQgZGlkUmVxdWVzdEFuaW1hdGlvbkZyYW1lKERvY3VtZW50KiwgaW50IGNhbGxi
YWNrSWQpOwogICAgIHN0YXRpYyB2b2lkIGRpZENhbmNlbEFuaW1hdGlvbkZyYW1lKERvY3VtZW50
KiwgaW50IGNhbGxiYWNrSWQpOwogICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25D
b29raWUgd2lsbEZpcmVBbmltYXRpb25GcmFtZShEb2N1bWVudCosIGludCBjYWxsYmFja0lkKTsK
ICAgICBzdGF0aWMgdm9pZCBkaWRGaXJlQW5pbWF0aW9uRnJhbWUoY29uc3QgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uQ29va2llJik7CiAKLSAgICBzdGF0aWMgdm9pZCBzdGFydFByb2ZpbGluZyhQ
YWdlKiwgSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBTdHJpbmcmIHRpdGxlKTsKLSAgICBzdGF0aWMg
UGFzc1JlZlB0cjxKU0M6OlByb2ZpbGU+IHN0b3BQcm9maWxpbmcoUGFnZSosIEpTQzo6RXhlY1N0
YXRlKiwgY29uc3QgU3RyaW5nJiB0aXRsZSk7CisgICAgc3RhdGljIHZvaWQgc3RhcnRQcm9maWxp
bmcoUGFnZSYsIEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgU3RyaW5nJiB0aXRsZSk7CisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8SlNDOjpQcm9maWxlPiBzdG9wUHJvZmlsaW5nKFBhZ2UmLCBKU0M6OkV4
ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYgdGl0bGUpOwogCiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFT
RSkKICAgICBzdGF0aWMgdm9pZCBkaWRPcGVuRGF0YWJhc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIFBhc3NSZWZQdHI8RGF0YWJhc2U+LCBjb25zdCBTdHJpbmcmIGRvbWFpbiwgY29uc3QgU3Ry
aW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZlcnNpb24pOwpAQCAtMjQ3LDIyICsyNDYsMjIgQEAg
cHVibGljOgogICAgIHN0YXRpYyB2b2lkIHdpbGxFdmFsdWF0ZVdvcmtlclNjcmlwdChXb3JrZXJH
bG9iYWxTY29wZSosIGludCB3b3JrZXJUaHJlYWRTdGFydE1vZGUpOwogCiAjaWYgRU5BQkxFKFdF
Ql9SRVBMQVkpCi0gICAgc3RhdGljIHZvaWQgc2Vzc2lvbkNyZWF0ZWQoUGFnZSosIFBhc3NSZWZQ
dHI8UmVwbGF5U2Vzc2lvbj4pOwotICAgIHN0YXRpYyB2b2lkIHNlc3Npb25Mb2FkZWQoUGFnZSos
IFBhc3NSZWZQdHI8UmVwbGF5U2Vzc2lvbj4pOwotICAgIHN0YXRpYyB2b2lkIHNlc3Npb25Nb2Rp
ZmllZChQYWdlKiwgUGFzc1JlZlB0cjxSZXBsYXlTZXNzaW9uPik7CisgICAgc3RhdGljIHZvaWQg
c2Vzc2lvbkNyZWF0ZWQoUGFnZSYsIFBhc3NSZWZQdHI8UmVwbGF5U2Vzc2lvbj4pOworICAgIHN0
YXRpYyB2b2lkIHNlc3Npb25Mb2FkZWQoUGFnZSYsIFBhc3NSZWZQdHI8UmVwbGF5U2Vzc2lvbj4p
OworICAgIHN0YXRpYyB2b2lkIHNlc3Npb25Nb2RpZmllZChQYWdlJiwgUGFzc1JlZlB0cjxSZXBs
YXlTZXNzaW9uPik7CiAKLSAgICBzdGF0aWMgdm9pZCBzZWdtZW50Q3JlYXRlZChQYWdlKiwgUGFz
c1JlZlB0cjxSZXBsYXlTZXNzaW9uU2VnbWVudD4pOwotICAgIHN0YXRpYyB2b2lkIHNlZ21lbnRD
b21wbGV0ZWQoUGFnZSosIFBhc3NSZWZQdHI8UmVwbGF5U2Vzc2lvblNlZ21lbnQ+KTsKLSAgICBz
dGF0aWMgdm9pZCBzZWdtZW50TG9hZGVkKFBhZ2UqLCBQYXNzUmVmUHRyPFJlcGxheVNlc3Npb25T
ZWdtZW50Pik7Ci0gICAgc3RhdGljIHZvaWQgc2VnbWVudFVubG9hZGVkKFBhZ2UqKTsKKyAgICBz
dGF0aWMgdm9pZCBzZWdtZW50Q3JlYXRlZChQYWdlJiwgUGFzc1JlZlB0cjxSZXBsYXlTZXNzaW9u
U2VnbWVudD4pOworICAgIHN0YXRpYyB2b2lkIHNlZ21lbnRDb21wbGV0ZWQoUGFnZSYsIFBhc3NS
ZWZQdHI8UmVwbGF5U2Vzc2lvblNlZ21lbnQ+KTsKKyAgICBzdGF0aWMgdm9pZCBzZWdtZW50TG9h
ZGVkKFBhZ2UmLCBQYXNzUmVmUHRyPFJlcGxheVNlc3Npb25TZWdtZW50Pik7CisgICAgc3RhdGlj
IHZvaWQgc2VnbWVudFVubG9hZGVkKFBhZ2UmKTsKIAotICAgIHN0YXRpYyB2b2lkIGNhcHR1cmVT
dGFydGVkKFBhZ2UqKTsKLSAgICBzdGF0aWMgdm9pZCBjYXB0dXJlU3RvcHBlZChQYWdlKik7Cisg
ICAgc3RhdGljIHZvaWQgY2FwdHVyZVN0YXJ0ZWQoUGFnZSYpOworICAgIHN0YXRpYyB2b2lkIGNh
cHR1cmVTdG9wcGVkKFBhZ2UmKTsKIAotICAgIHN0YXRpYyB2b2lkIHBsYXliYWNrU3RhcnRlZChQ
YWdlKik7Ci0gICAgc3RhdGljIHZvaWQgcGxheWJhY2tQYXVzZWQoUGFnZSosIGNvbnN0IFJlcGxh
eVBvc2l0aW9uJik7Ci0gICAgc3RhdGljIHZvaWQgcGxheWJhY2tIaXRQb3NpdGlvbihQYWdlKiwg
Y29uc3QgUmVwbGF5UG9zaXRpb24mKTsKLSAgICBzdGF0aWMgdm9pZCBwbGF5YmFja0ZpbmlzaGVk
KFBhZ2UqKTsKKyAgICBzdGF0aWMgdm9pZCBwbGF5YmFja1N0YXJ0ZWQoUGFnZSYpOworICAgIHN0
YXRpYyB2b2lkIHBsYXliYWNrUGF1c2VkKFBhZ2UmLCBjb25zdCBSZXBsYXlQb3NpdGlvbiYpOwor
ICAgIHN0YXRpYyB2b2lkIHBsYXliYWNrSGl0UG9zaXRpb24oUGFnZSYsIGNvbnN0IFJlcGxheVBv
c2l0aW9uJik7CisgICAgc3RhdGljIHZvaWQgcGxheWJhY2tGaW5pc2hlZChQYWdlJik7CiAjZW5k
aWYKIAogI2lmIEVOQUJMRShXRUJfU09DS0VUUykKQEAgLTI4Myw2ICsyODIsMTAgQEAgcHVibGlj
OgogICAgIHN0YXRpYyB2b2lkIG5ldHdvcmtTdGF0ZUNoYW5nZWQoUGFnZSopOwogICAgIHN0YXRp
YyB2b2lkIHVwZGF0ZUFwcGxpY2F0aW9uQ2FjaGVTdGF0dXMoRnJhbWUqKTsKIAorICAgIHN0YXRp
YyB2b2lkIGxheWVyVHJlZURpZENoYW5nZShQYWdlKik7CisgICAgc3RhdGljIHZvaWQgcmVuZGVy
TGF5ZXJEZXN0cm95ZWQoUGFnZSosIGNvbnN0IFJlbmRlckxheWVyJik7CisgICAgc3RhdGljIHZv
aWQgcHNldWRvRWxlbWVudERlc3Ryb3llZChQYWdlKiwgUHNldWRvRWxlbWVudCYpOworCiAjaWYg
RU5BQkxFKElOU1BFQ1RPUikKICAgICBzdGF0aWMgdm9pZCBmcm9udGVuZENyZWF0ZWQoKSB7IHNf
ZnJvbnRlbmRDb3VudGVyICs9IDE7IH0KICAgICBzdGF0aWMgdm9pZCBmcm9udGVuZERlbGV0ZWQo
KSB7IHNfZnJvbnRlbmRDb3VudGVyIC09IDE7IH0KQEAgLTI5OCwyMDcgKzMwMSwyMDcgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBib29sIHJlcGxheUFnZW50RW5hYmxlZChTY3JpcHRFeGVjdXRpb25D
b250ZXh0KikgeyByZXR1cm4gZmFsc2U7IH0KICNlbmRpZgogCi0gICAgc3RhdGljIHZvaWQgcmVn
aXN0ZXJJbnN0cnVtZW50aW5nQWdlbnRzKEluc3RydW1lbnRpbmdBZ2VudHMqKTsKLSAgICBzdGF0
aWMgdm9pZCB1bnJlZ2lzdGVySW5zdHJ1bWVudGluZ0FnZW50cyhJbnN0cnVtZW50aW5nQWdlbnRz
Kik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3Ry
dW1lbnRpbmdBZ2VudHNGb3JQYWdlKFBhZ2UqKTsKIAotICAgIHN0YXRpYyB2b2lkIGxheWVyVHJl
ZURpZENoYW5nZShQYWdlKik7Ci0gICAgc3RhdGljIHZvaWQgcmVuZGVyTGF5ZXJEZXN0cm95ZWQo
UGFnZSosIGNvbnN0IFJlbmRlckxheWVyKik7Ci0gICAgc3RhdGljIHZvaWQgcHNldWRvRWxlbWVu
dERlc3Ryb3llZChQYWdlKiwgUHNldWRvRWxlbWVudCopOworICAgIHN0YXRpYyB2b2lkIHJlZ2lz
dGVySW5zdHJ1bWVudGluZ0FnZW50cyhJbnN0cnVtZW50aW5nQWdlbnRzJik7CisgICAgc3RhdGlj
IHZvaWQgdW5yZWdpc3Rlckluc3RydW1lbnRpbmdBZ2VudHMoSW5zdHJ1bWVudGluZ0FnZW50cyYp
OwogCiBwcml2YXRlOgogI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgc3RhdGljIHZvaWQgZGlk
Q2xlYXJXaW5kb3dPYmplY3RJbldvcmxkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwgRnJhbWUq
LCBET01XcmFwcGVyV29ybGQmKTsKLSAgICBzdGF0aWMgYm9vbCBpc0RlYnVnZ2VyUGF1c2VkSW1w
bChJbnN0cnVtZW50aW5nQWdlbnRzKik7Ci0KLSAgICBzdGF0aWMgdm9pZCB3aWxsSW5zZXJ0RE9N
Tm9kZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIE5vZGUqIHBhcmVudCk7Ci0gICAgc3RhdGlj
IHZvaWQgZGlkSW5zZXJ0RE9NTm9kZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIE5vZGUqKTsK
LSAgICBzdGF0aWMgdm9pZCB3aWxsUmVtb3ZlRE9NTm9kZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50
cyosIE5vZGUqKTsKLSAgICBzdGF0aWMgdm9pZCBkaWRSZW1vdmVET01Ob2RlSW1wbChJbnN0cnVt
ZW50aW5nQWdlbnRzKiwgTm9kZSopOwotICAgIHN0YXRpYyB2b2lkIHdpbGxNb2RpZnlET01BdHRy
SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwgRWxlbWVudCosIGNvbnN0IEF0b21pY1N0cmluZyYg
b2xkVmFsdWUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmV3VmFsdWUpOwotICAgIHN0YXRpYyB2b2lk
IGRpZE1vZGlmeURPTUF0dHJJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCBFbGVtZW50KiwgY29u
c3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKTsKLSAgICBz
dGF0aWMgdm9pZCBkaWRSZW1vdmVET01BdHRySW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwgRWxl
bWVudCosIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSk7Ci0gICAgc3RhdGljIHZvaWQgY2hhcmFj
dGVyRGF0YU1vZGlmaWVkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwgQ2hhcmFjdGVyRGF0YSop
OwotICAgIHN0YXRpYyB2b2lkIGRpZEludmFsaWRhdGVTdHlsZUF0dHJJbXBsKEluc3RydW1lbnRp
bmdBZ2VudHMqLCBOb2RlKik7Ci0gICAgc3RhdGljIHZvaWQgZnJhbWVXaW5kb3dEaXNjYXJkZWRJ
bXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCBET01XaW5kb3cqKTsKLSAgICBzdGF0aWMgdm9pZCBt
ZWRpYVF1ZXJ5UmVzdWx0Q2hhbmdlZEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyopOwotICAgIHN0
YXRpYyB2b2lkIGRpZFB1c2hTaGFkb3dSb290SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwgRWxl
bWVudCogaG9zdCwgU2hhZG93Um9vdCopOwotICAgIHN0YXRpYyB2b2lkIHdpbGxQb3BTaGFkb3dS
b290SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwgRWxlbWVudCogaG9zdCwgU2hhZG93Um9vdCop
OwotICAgIHN0YXRpYyB2b2lkIGRpZENyZWF0ZU5hbWVkRmxvd0ltcGwoSW5zdHJ1bWVudGluZ0Fn
ZW50cyosIERvY3VtZW50KiwgV2ViS2l0TmFtZWRGbG93Kik7Ci0gICAgc3RhdGljIHZvaWQgd2ls
bFJlbW92ZU5hbWVkRmxvd0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIERvY3VtZW50KiwgV2Vi
S2l0TmFtZWRGbG93Kik7Ci0gICAgc3RhdGljIHZvaWQgZGlkQ2hhbmdlUmVnaW9uT3ZlcnNldElt
cGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIERvY3VtZW50KiwgV2ViS2l0TmFtZWRGbG93Kik7Ci0g
ICAgc3RhdGljIHZvaWQgZGlkUmVnaXN0ZXJOYW1lZEZsb3dDb250ZW50RWxlbWVudEltcGwoSW5z
dHJ1bWVudGluZ0FnZW50cyosIERvY3VtZW50KiwgV2ViS2l0TmFtZWRGbG93KiwgTm9kZSogY29u
dGVudEVsZW1lbnQsIE5vZGUqIG5leHRDb250ZW50RWxlbWVudCA9IG51bGxwdHIpOwotICAgIHN0
YXRpYyB2b2lkIGRpZFVucmVnaXN0ZXJOYW1lZEZsb3dDb250ZW50RWxlbWVudEltcGwoSW5zdHJ1
bWVudGluZ0FnZW50cyosIERvY3VtZW50KiwgV2ViS2l0TmFtZWRGbG93KiwgTm9kZSogY29udGVu
dEVsZW1lbnQpOwotCi0gICAgc3RhdGljIHZvaWQgbW91c2VEaWRNb3ZlT3ZlckVsZW1lbnRJbXBs
KEluc3RydW1lbnRpbmdBZ2VudHMqLCBjb25zdCBIaXRUZXN0UmVzdWx0JiwgdW5zaWduZWQgbW9k
aWZpZXJGbGFncyk7Ci0gICAgc3RhdGljIGJvb2wgaGFuZGxlVG91Y2hFdmVudEltcGwoSW5zdHJ1
bWVudGluZ0FnZW50cyosIE5vZGUqKTsKLSAgICBzdGF0aWMgYm9vbCBoYW5kbGVNb3VzZVByZXNz
SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKik7Ci0gICAgc3RhdGljIGJvb2wgZm9yY2VQc2V1ZG9T
dGF0ZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIEVsZW1lbnQqLCBDU1NTZWxlY3Rvcjo6UHNl
dWRvQ2xhc3NUeXBlKTsKLQotICAgIHN0YXRpYyB2b2lkIHdpbGxTZW5kWE1MSHR0cFJlcXVlc3RJ
bXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCBjb25zdCBTdHJpbmcmIHVybCk7Ci0gICAgc3RhdGlj
IHZvaWQgZGlkU2NoZWR1bGVSZXNvdXJjZVJlcXVlc3RJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMq
LCBjb25zdCBTdHJpbmcmIHVybCwgRnJhbWUqKTsKLSAgICBzdGF0aWMgdm9pZCBkaWRJbnN0YWxs
VGltZXJJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCBpbnQgdGltZXJJZCwgaW50IHRpbWVvdXQs
IGJvb2wgc2luZ2xlU2hvdCwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwotICAgIHN0YXRpYyB2
b2lkIGRpZFJlbW92ZVRpbWVySW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwgaW50IHRpbWVySWQs
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKLQotICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb25Db29raWUgd2lsbENhbGxGdW5jdGlvbkltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyos
IGNvbnN0IFN0cmluZyYgc2NyaXB0TmFtZSwgaW50IHNjcmlwdExpbmUsIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRDbGVhcldpbmRvd09iamVjdEluV29ybGRJ
bXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBGcmFtZSYsIERPTVdyYXBwZXJXb3JsZCYpOworICAg
IHN0YXRpYyBib29sIGlzRGVidWdnZXJQYXVzZWRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmKTsK
KworICAgIHN0YXRpYyB2b2lkIHdpbGxJbnNlcnRET01Ob2RlSW1wbChJbnN0cnVtZW50aW5nQWdl
bnRzJiwgTm9kZSYgcGFyZW50KTsKKyAgICBzdGF0aWMgdm9pZCBkaWRJbnNlcnRET01Ob2RlSW1w
bChJbnN0cnVtZW50aW5nQWdlbnRzJiwgTm9kZSYpOworICAgIHN0YXRpYyB2b2lkIHdpbGxSZW1v
dmVET01Ob2RlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgTm9kZSYpOworICAgIHN0YXRpYyB2
b2lkIGRpZFJlbW92ZURPTU5vZGVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBOb2RlJik7Cisg
ICAgc3RhdGljIHZvaWQgd2lsbE1vZGlmeURPTUF0dHJJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMm
LCBFbGVtZW50JiwgY29uc3QgQXRvbWljU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgQXRvbWljU3Ry
aW5nJiBuZXdWYWx1ZSk7CisgICAgc3RhdGljIHZvaWQgZGlkTW9kaWZ5RE9NQXR0ckltcGwoSW5z
dHJ1bWVudGluZ0FnZW50cyYsIEVsZW1lbnQmLCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNv
bnN0IEF0b21pY1N0cmluZyYgdmFsdWUpOworICAgIHN0YXRpYyB2b2lkIGRpZFJlbW92ZURPTUF0
dHJJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBFbGVtZW50JiwgY29uc3QgQXRvbWljU3RyaW5n
JiBuYW1lKTsKKyAgICBzdGF0aWMgdm9pZCBjaGFyYWN0ZXJEYXRhTW9kaWZpZWRJbXBsKEluc3Ry
dW1lbnRpbmdBZ2VudHMmLCBDaGFyYWN0ZXJEYXRhJik7CisgICAgc3RhdGljIHZvaWQgZGlkSW52
YWxpZGF0ZVN0eWxlQXR0ckltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIE5vZGUmKTsKKyAgICBz
dGF0aWMgdm9pZCBmcmFtZVdpbmRvd0Rpc2NhcmRlZEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYs
IERPTVdpbmRvdyopOworICAgIHN0YXRpYyB2b2lkIG1lZGlhUXVlcnlSZXN1bHRDaGFuZ2VkSW1w
bChJbnN0cnVtZW50aW5nQWdlbnRzJik7CisgICAgc3RhdGljIHZvaWQgZGlkUHVzaFNoYWRvd1Jv
b3RJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBFbGVtZW50JiBob3N0LCBTaGFkb3dSb290Jik7
CisgICAgc3RhdGljIHZvaWQgd2lsbFBvcFNoYWRvd1Jvb3RJbXBsKEluc3RydW1lbnRpbmdBZ2Vu
dHMmLCBFbGVtZW50JiBob3N0LCBTaGFkb3dSb290Jik7CisgICAgc3RhdGljIHZvaWQgZGlkQ3Jl
YXRlTmFtZWRGbG93SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgRG9jdW1lbnQqLCBXZWJLaXRO
YW1lZEZsb3cmKTsKKyAgICBzdGF0aWMgdm9pZCB3aWxsUmVtb3ZlTmFtZWRGbG93SW1wbChJbnN0
cnVtZW50aW5nQWdlbnRzJiwgRG9jdW1lbnQqLCBXZWJLaXROYW1lZEZsb3cmKTsKKyAgICBzdGF0
aWMgdm9pZCBkaWRDaGFuZ2VSZWdpb25PdmVyc2V0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwg
RG9jdW1lbnQmLCBXZWJLaXROYW1lZEZsb3cmKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRSZWdpc3Rl
ck5hbWVkRmxvd0NvbnRlbnRFbGVtZW50SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgRG9jdW1l
bnQmLCBXZWJLaXROYW1lZEZsb3cmLCBOb2RlJiBjb250ZW50RWxlbWVudCwgTm9kZSogbmV4dENv
bnRlbnRFbGVtZW50ID0gbnVsbHB0cik7CisgICAgc3RhdGljIHZvaWQgZGlkVW5yZWdpc3Rlck5h
bWVkRmxvd0NvbnRlbnRFbGVtZW50SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgRG9jdW1lbnQm
LCBXZWJLaXROYW1lZEZsb3cmLCBOb2RlJiBjb250ZW50RWxlbWVudCk7CisKKyAgICBzdGF0aWMg
dm9pZCBtb3VzZURpZE1vdmVPdmVyRWxlbWVudEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIGNv
bnN0IEhpdFRlc3RSZXN1bHQmLCB1bnNpZ25lZCBtb2RpZmllckZsYWdzKTsKKyAgICBzdGF0aWMg
Ym9vbCBoYW5kbGVUb3VjaEV2ZW50SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgTm9kZSYpOwor
ICAgIHN0YXRpYyBib29sIGhhbmRsZU1vdXNlUHJlc3NJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMm
KTsKKyAgICBzdGF0aWMgYm9vbCBmb3JjZVBzZXVkb1N0YXRlSW1wbChJbnN0cnVtZW50aW5nQWdl
bnRzJiwgRWxlbWVudCYsIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc1R5cGUpOworCisgICAgc3Rh
dGljIHZvaWQgd2lsbFNlbmRYTUxIdHRwUmVxdWVzdEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYs
IGNvbnN0IFN0cmluZyYgdXJsKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRTY2hlZHVsZVJlc291cmNl
UmVxdWVzdEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIGNvbnN0IFN0cmluZyYgdXJsLCBGcmFt
ZSopOworICAgIHN0YXRpYyB2b2lkIGRpZEluc3RhbGxUaW1lckltcGwoSW5zdHJ1bWVudGluZ0Fn
ZW50cyYsIGludCB0aW1lcklkLCBpbnQgdGltZW91dCwgYm9vbCBzaW5nbGVTaG90LCBTY3JpcHRF
eGVjdXRpb25Db250ZXh0Kik7CisgICAgc3RhdGljIHZvaWQgZGlkUmVtb3ZlVGltZXJJbXBsKElu
c3RydW1lbnRpbmdBZ2VudHMmLCBpbnQgdGltZXJJZCwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCop
OworCisgICAgc3RhdGljIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSB3aWxsQ2FsbEZ1
bmN0aW9uSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgY29uc3QgU3RyaW5nJiBzY3JpcHROYW1l
LCBpbnQgc2NyaXB0TGluZSwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwogICAgIHN0YXRpYyB2
b2lkIGRpZENhbGxGdW5jdGlvbkltcGwoY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29v
a2llJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwotICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb25Db29raWUgd2lsbERpc3BhdGNoWEhSUmVhZHlTdGF0ZUNoYW5nZUV2ZW50SW1w
bChJbnN0cnVtZW50aW5nQWdlbnRzKiwgWE1MSHR0cFJlcXVlc3QqLCBTY3JpcHRFeGVjdXRpb25D
b250ZXh0Kik7CisgICAgc3RhdGljIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSB3aWxs
RGlzcGF0Y2hYSFJSZWFkeVN0YXRlQ2hhbmdlRXZlbnRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMm
LCBYTUxIdHRwUmVxdWVzdCYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKICAgICBzdGF0aWMg
dm9pZCBkaWREaXNwYXRjaFhIUlJlYWR5U3RhdGVDaGFuZ2VFdmVudEltcGwoY29uc3QgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uQ29va2llJik7Ci0gICAgc3RhdGljIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbkNvb2tpZSB3aWxsRGlzcGF0Y2hFdmVudEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyos
IGNvbnN0IEV2ZW50JiwgYm9vbCBoYXNFdmVudExpc3RlbmVycywgRG9jdW1lbnQqKTsKLSAgICBz
dGF0aWMgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIHdpbGxIYW5kbGVFdmVudEltcGwo
SW5zdHJ1bWVudGluZ0FnZW50cyosIEV2ZW50Kik7CisgICAgc3RhdGljIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbkNvb2tpZSB3aWxsRGlzcGF0Y2hFdmVudEltcGwoSW5zdHJ1bWVudGluZ0FnZW50
cyYsIERvY3VtZW50JiwgY29uc3QgRXZlbnQmLCBib29sIGhhc0V2ZW50TGlzdGVuZXJzKTsKKyAg
ICBzdGF0aWMgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIHdpbGxIYW5kbGVFdmVudElt
cGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIGNvbnN0IEV2ZW50Jik7CiAgICAgc3RhdGljIHZvaWQg
ZGlkSGFuZGxlRXZlbnRJbXBsKGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYp
OwogICAgIHN0YXRpYyB2b2lkIGRpZERpc3BhdGNoRXZlbnRJbXBsKGNvbnN0IEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbkNvb2tpZSYpOwotICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b25Db29raWUgd2lsbERpc3BhdGNoRXZlbnRPbldpbmRvd0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50
cyosIGNvbnN0IEV2ZW50JiwgRE9NV2luZG93Kik7CisgICAgc3RhdGljIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbkNvb2tpZSB3aWxsRGlzcGF0Y2hFdmVudE9uV2luZG93SW1wbChJbnN0cnVtZW50
aW5nQWdlbnRzJiwgY29uc3QgRXZlbnQmLCBET01XaW5kb3cmKTsKICAgICBzdGF0aWMgdm9pZCBk
aWREaXNwYXRjaEV2ZW50T25XaW5kb3dJbXBsKGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bkNvb2tpZSYpOwotICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgd2ls
bEV2YWx1YXRlU2NyaXB0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwgY29uc3QgU3RyaW5nJiB1
cmwsIGludCBsaW5lTnVtYmVyLCBGcmFtZSopOwotICAgIHN0YXRpYyB2b2lkIGRpZEV2YWx1YXRl
U2NyaXB0SW1wbChjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUmLCBGcmFtZSop
OwotICAgIHN0YXRpYyB2b2lkIHNjcmlwdHNFbmFibGVkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRz
KiwgYm9vbCBpc0VuYWJsZWQpOwotICAgIHN0YXRpYyB2b2lkIGRpZENyZWF0ZUlzb2xhdGVkQ29u
dGV4dEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIEZyYW1lKiwgSlNDOjpFeGVjU3RhdGUqLCBT
ZWN1cml0eU9yaWdpbiopOwotICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29r
aWUgd2lsbEZpcmVUaW1lckltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIGludCB0aW1lcklkLCBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CisgICAgc3RhdGljIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbkNvb2tpZSB3aWxsRXZhbHVhdGVTY3JpcHRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBG
cmFtZSYsIGNvbnN0IFN0cmluZyYgdXJsLCBpbnQgbGluZU51bWJlcik7CisgICAgc3RhdGljIHZv
aWQgZGlkRXZhbHVhdGVTY3JpcHRJbXBsKGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNv
b2tpZSYsIEZyYW1lJik7CisgICAgc3RhdGljIHZvaWQgc2NyaXB0c0VuYWJsZWRJbXBsKEluc3Ry
dW1lbnRpbmdBZ2VudHMmLCBib29sIGlzRW5hYmxlZCk7CisgICAgc3RhdGljIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbkNvb2tpZSB3aWxsRmlyZVRpbWVySW1wbChJbnN0cnVtZW50aW5nQWdlbnRz
JiwgaW50IHRpbWVySWQsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKICAgICBzdGF0aWMgdm9p
ZCBkaWRGaXJlVGltZXJJbXBsKGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYp
OwotICAgIHN0YXRpYyB2b2lkIGRpZEludmFsaWRhdGVMYXlvdXRJbXBsKEluc3RydW1lbnRpbmdB
Z2VudHMqLCBGcmFtZSopOwotICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29r
aWUgd2lsbExheW91dEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIEZyYW1lKik7CisgICAgc3Rh
dGljIHZvaWQgZGlkSW52YWxpZGF0ZUxheW91dEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIEZy
YW1lJik7CisgICAgc3RhdGljIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSB3aWxsTGF5
b3V0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgRnJhbWUmKTsKICAgICBzdGF0aWMgdm9pZCBk
aWRMYXlvdXRJbXBsKGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYsIFJlbmRl
ck9iamVjdCopOwotICAgIHN0YXRpYyB2b2lkIGRpZFNjcm9sbEltcGwoSW5zdHJ1bWVudGluZ0Fn
ZW50cyopOwotICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgd2lsbERp
c3BhdGNoWEhSTG9hZEV2ZW50SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwgWE1MSHR0cFJlcXVl
c3QqLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CisgICAgc3RhdGljIHZvaWQgZGlkU2Nyb2xs
SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJik7CisgICAgc3RhdGljIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbkNvb2tpZSB3aWxsRGlzcGF0Y2hYSFJMb2FkRXZlbnRJbXBsKEluc3RydW1lbnRpbmdB
Z2VudHMmLCBYTUxIdHRwUmVxdWVzdCYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKICAgICBz
dGF0aWMgdm9pZCBkaWREaXNwYXRjaFhIUkxvYWRFdmVudEltcGwoY29uc3QgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uQ29va2llJik7Ci0gICAgc3RhdGljIHZvaWQgd2lsbFNjcm9sbExheWVySW1w
bChJbnN0cnVtZW50aW5nQWdlbnRzKiwgRnJhbWUqKTsKLSAgICBzdGF0aWMgdm9pZCBkaWRTY3Jv
bGxMYXllckltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyopOwotICAgIHN0YXRpYyB2b2lkIHdpbGxQ
YWludEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIFJlbmRlck9iamVjdCopOwotICAgIHN0YXRp
YyB2b2lkIGRpZFBhaW50SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwgUmVuZGVyT2JqZWN0Kiwg
Y29uc3QgTGF5b3V0UmVjdCYpOwotICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25D
b29raWUgd2lsbFJlY2FsY3VsYXRlU3R5bGVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCBGcmFt
ZSopOworICAgIHN0YXRpYyB2b2lkIHdpbGxTY3JvbGxMYXllckltcGwoSW5zdHJ1bWVudGluZ0Fn
ZW50cyYsIEZyYW1lJik7CisgICAgc3RhdGljIHZvaWQgZGlkU2Nyb2xsTGF5ZXJJbXBsKEluc3Ry
dW1lbnRpbmdBZ2VudHMmKTsKKyAgICBzdGF0aWMgdm9pZCB3aWxsUGFpbnRJbXBsKEluc3RydW1l
bnRpbmdBZ2VudHMmLCBSZW5kZXJPYmplY3QqKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRQYWludElt
cGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIFJlbmRlck9iamVjdCosIGNvbnN0IExheW91dFJlY3Qm
KTsKKyAgICBzdGF0aWMgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIHdpbGxSZWNhbGN1
bGF0ZVN0eWxlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgRG9jdW1lbnQmKTsKICAgICBzdGF0
aWMgdm9pZCBkaWRSZWNhbGN1bGF0ZVN0eWxlSW1wbChjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb25Db29raWUmKTsKLSAgICBzdGF0aWMgdm9pZCBkaWRTY2hlZHVsZVN0eWxlUmVjYWxjdWxh
dGlvbkltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIERvY3VtZW50Kik7Ci0KLSAgICBzdGF0aWMg
dm9pZCBhcHBseUVtdWxhdGVkTWVkaWFJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCBTdHJpbmcq
KTsKLSAgICBzdGF0aWMgdm9pZCB3aWxsU2VuZFJlcXVlc3RJbXBsKEluc3RydW1lbnRpbmdBZ2Vu
dHMqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiwgUmVzb3VyY2VS
ZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSk7Ci0gICAg
c3RhdGljIHZvaWQgY29udGludWVBZnRlclBpbmdMb2FkZXJJbXBsKEluc3RydW1lbnRpbmdBZ2Vu
dHMqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiwgUmVzb3VyY2VS
ZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwotICAgIHN0YXRpYyB2b2lkIG1hcmtS
ZXNvdXJjZUFzQ2FjaGVkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwgdW5zaWduZWQgbG9uZyBp
ZGVudGlmaWVyKTsKLSAgICBzdGF0aWMgdm9pZCBkaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2Fj
aGVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCBEb2N1bWVudExvYWRlciosIENhY2hlZFJlc291
cmNlKik7Ci0gICAgc3RhdGljIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSB3aWxsUmVj
ZWl2ZVJlc291cmNlRGF0YUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIHVuc2lnbmVkIGxvbmcg
aWRlbnRpZmllciwgRnJhbWUqLCBpbnQgbGVuZ3RoKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRTY2hl
ZHVsZVN0eWxlUmVjYWxjdWxhdGlvbkltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIERvY3VtZW50
Jik7CisKKyAgICBzdGF0aWMgdm9pZCBhcHBseUVtdWxhdGVkTWVkaWFJbXBsKEluc3RydW1lbnRp
bmdBZ2VudHMmLCBTdHJpbmcmKTsKKyAgICBzdGF0aWMgdm9pZCB3aWxsU2VuZFJlcXVlc3RJbXBs
KEluc3RydW1lbnRpbmdBZ2VudHMmLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50
TG9hZGVyKiwgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJl
Y3RSZXNwb25zZSk7CisgICAgc3RhdGljIHZvaWQgY29udGludWVBZnRlclBpbmdMb2FkZXJJbXBs
KEluc3RydW1lbnRpbmdBZ2VudHMmLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50
TG9hZGVyKiwgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOworICAg
IHN0YXRpYyB2b2lkIG1hcmtSZXNvdXJjZUFzQ2FjaGVkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRz
JiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRMb2FkUmVz
b3VyY2VGcm9tTWVtb3J5Q2FjaGVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBEb2N1bWVudExv
YWRlciosIENhY2hlZFJlc291cmNlKik7CisgICAgc3RhdGljIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbkNvb2tpZSB3aWxsUmVjZWl2ZVJlc291cmNlRGF0YUltcGwoSW5zdHJ1bWVudGluZ0FnZW50
cyYsIEZyYW1lKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBpbnQgbGVuZ3RoKTsKICAgICBz
dGF0aWMgdm9pZCBkaWRSZWNlaXZlUmVzb3VyY2VEYXRhSW1wbChjb25zdCBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb25Db29raWUmKTsKLSAgICBzdGF0aWMgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Q29va2llIHdpbGxSZWNlaXZlUmVzb3VyY2VSZXNwb25zZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50
cyosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIEZy
YW1lKik7CisgICAgc3RhdGljIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSB3aWxsUmVj
ZWl2ZVJlc291cmNlUmVzcG9uc2VJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBGcmFtZSosIHVu
c2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHN0
YXRpYyB2b2lkIGRpZFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlSW1wbChjb25zdCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb25Db29raWUmLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50
TG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlc291cmNlTG9hZGVyKik7Ci0gICAg
c3RhdGljIHZvaWQgZGlkUmVjZWl2ZVJlc291cmNlUmVzcG9uc2VCdXRDYW5jZWxlZEltcGwoRnJh
bWUqLCBEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYpOwotICAgIHN0YXRpYyB2b2lkIGNvbnRpbnVlQWZ0ZXJYRnJhbWVPcHRp
b25zRGVuaWVkSW1wbChGcmFtZSosIERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVu
dGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgc3RhdGljIHZvaWQgY29udGlu
dWVXaXRoUG9saWN5RG93bmxvYWRJbXBsKEZyYW1lKiwgRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25l
ZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKLSAgICBzdGF0aWMg
dm9pZCBjb250aW51ZVdpdGhQb2xpY3lJZ25vcmVJbXBsKEZyYW1lKiwgRG9jdW1lbnRMb2FkZXIq
LCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKLSAg
ICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlRGF0YUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIHVu
c2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgs
IGludCBlbmNvZGVkRGF0YUxlbmd0aCk7Ci0gICAgc3RhdGljIHZvaWQgZGlkRmluaXNoTG9hZGlu
Z0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9j
dW1lbnRMb2FkZXIqLCBkb3VibGUgZmluaXNoVGltZSk7Ci0gICAgc3RhdGljIHZvaWQgZGlkRmFp
bExvYWRpbmdJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZp
ZXIsIERvY3VtZW50TG9hZGVyKiwgY29uc3QgUmVzb3VyY2VFcnJvciYpOwotICAgIHN0YXRpYyB2
b2lkIGRvY3VtZW50VGhyZWFkYWJsZUxvYWRlclN0YXJ0ZWRMb2FkaW5nRm9yQ2xpZW50SW1wbChJ
bnN0cnVtZW50aW5nQWdlbnRzKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBUaHJlYWRhYmxl
TG9hZGVyQ2xpZW50Kik7Ci0gICAgc3RhdGljIHZvaWQgd2lsbExvYWRYSFJJbXBsKEluc3RydW1l
bnRpbmdBZ2VudHMqLCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50KiwgY29uc3QgU3RyaW5nJiwgY29u
c3QgVVJMJiwgYm9vbCwgUGFzc1JlZlB0cjxGb3JtRGF0YT4sIGNvbnN0IEhUVFBIZWFkZXJNYXAm
LCBib29sKTsKLSAgICBzdGF0aWMgdm9pZCBkaWRGYWlsWEhSTG9hZGluZ0ltcGwoSW5zdHJ1bWVu
dGluZ0FnZW50cyosIFRocmVhZGFibGVMb2FkZXJDbGllbnQqKTsKLSAgICBzdGF0aWMgdm9pZCBk
aWRGaW5pc2hYSFJMb2FkaW5nSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwgVGhyZWFkYWJsZUxv
YWRlckNsaWVudCosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3Vy
Y2VTdHJpbmcsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHNlbmRVUkwsIHVuc2ln
bmVkIHNlbmRMaW5lTnVtYmVyLCB1bnNpZ25lZCBzZW5kQ29sdW1uTnVtYmVyKTsKLSAgICBzdGF0
aWMgdm9pZCBkaWRSZWNlaXZlWEhSUmVzcG9uc2VJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCB1
bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpOwotICAgIHN0YXRpYyB2b2lkIHdpbGxMb2FkWEhSU3lu
Y2hyb25vdXNseUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyopOwotICAgIHN0YXRpYyB2b2lkIGRp
ZExvYWRYSFJTeW5jaHJvbm91c2x5SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKik7Ci0gICAgc3Rh
dGljIHZvaWQgc2NyaXB0SW1wb3J0ZWRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCB1bnNpZ25l
ZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNlU3RyaW5nKTsKLSAgICBzdGF0
aWMgdm9pZCBzY3JpcHRFeGVjdXRpb25CbG9ja2VkQnlDU1BJbXBsKEluc3RydW1lbnRpbmdBZ2Vu
dHMqLCBjb25zdCBTdHJpbmcmIGRpcmVjdGl2ZVRleHQpOwotICAgIHN0YXRpYyB2b2lkIGRpZFJl
Y2VpdmVTY3JpcHRSZXNwb25zZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIHVuc2lnbmVkIGxv
bmcgaWRlbnRpZmllcik7Ci0gICAgc3RhdGljIHZvaWQgZG9tQ29udGVudExvYWRlZEV2ZW50Rmly
ZWRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCBGcmFtZSopOwotICAgIHN0YXRpYyB2b2lkIGxv
YWRFdmVudEZpcmVkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwgRnJhbWUqKTsKLSAgICBzdGF0
aWMgdm9pZCBmcmFtZURldGFjaGVkRnJvbVBhcmVudEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyos
IEZyYW1lKik7Ci0gICAgc3RhdGljIHZvaWQgZGlkQ29tbWl0TG9hZEltcGwoSW5zdHJ1bWVudGlu
Z0FnZW50cyosIFBhZ2UqLCBEb2N1bWVudExvYWRlciopOwotICAgIHN0YXRpYyB2b2lkIGZyYW1l
RG9jdW1lbnRVcGRhdGVkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwgRnJhbWUqKTsKLSAgICBz
dGF0aWMgdm9pZCBsb2FkZXJEZXRhY2hlZEZyb21GcmFtZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50
cyosIERvY3VtZW50TG9hZGVyKik7CisgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZVJlc291cmNl
UmVzcG9uc2VCdXRDYW5jZWxlZEltcGwoRnJhbWUqLCBEb2N1bWVudExvYWRlciYsIHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOworICAgIHN0YXRpYyB2
b2lkIGNvbnRpbnVlQWZ0ZXJYRnJhbWVPcHRpb25zRGVuaWVkSW1wbChGcmFtZSosIERvY3VtZW50
TG9hZGVyJiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
Jik7CisgICAgc3RhdGljIHZvaWQgY29udGludWVXaXRoUG9saWN5RG93bmxvYWRJbXBsKEZyYW1l
KiwgRG9jdW1lbnRMb2FkZXImLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmKTsKKyAgICBzdGF0aWMgdm9pZCBjb250aW51ZVdpdGhQb2xpY3lJZ25vcmVJ
bXBsKEZyYW1lKiwgRG9jdW1lbnRMb2FkZXImLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlRGF0YUlt
cGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3Qg
Y2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAg
c3RhdGljIHZvaWQgZGlkRmluaXNoTG9hZGluZ0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIHVu
c2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqLCBkb3VibGUgZmluaXNoVGlt
ZSk7CisgICAgc3RhdGljIHZvaWQgZGlkRmFpbExvYWRpbmdJbXBsKEluc3RydW1lbnRpbmdBZ2Vu
dHMmLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiwgY29uc3QgUmVz
b3VyY2VFcnJvciYpOworICAgIHN0YXRpYyB2b2lkIGRvY3VtZW50VGhyZWFkYWJsZUxvYWRlclN0
YXJ0ZWRMb2FkaW5nRm9yQ2xpZW50SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgdW5zaWduZWQg
bG9uZyBpZGVudGlmaWVyLCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50Kik7CisgICAgc3RhdGljIHZv
aWQgd2lsbExvYWRYSFJJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBUaHJlYWRhYmxlTG9hZGVy
Q2xpZW50KiwgY29uc3QgU3RyaW5nJiwgY29uc3QgVVJMJiwgYm9vbCwgUGFzc1JlZlB0cjxGb3Jt
RGF0YT4sIGNvbnN0IEhUVFBIZWFkZXJNYXAmLCBib29sKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRG
YWlsWEhSTG9hZGluZ0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIFRocmVhZGFibGVMb2FkZXJD
bGllbnQqKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRGaW5pc2hYSFJMb2FkaW5nSW1wbChJbnN0cnVt
ZW50aW5nQWdlbnRzJiwgVGhyZWFkYWJsZUxvYWRlckNsaWVudCosIHVuc2lnbmVkIGxvbmcgaWRl
bnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VTdHJpbmcsIGNvbnN0IFN0cmluZyYgdXJsLCBj
b25zdCBTdHJpbmcmIHNlbmRVUkwsIHVuc2lnbmVkIHNlbmRMaW5lTnVtYmVyLCB1bnNpZ25lZCBz
ZW5kQ29sdW1uTnVtYmVyKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlWEhSUmVzcG9uc2VJ
bXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpOworICAg
IHN0YXRpYyB2b2lkIHdpbGxMb2FkWEhSU3luY2hyb25vdXNseUltcGwoSW5zdHJ1bWVudGluZ0Fn
ZW50cyYpOworICAgIHN0YXRpYyB2b2lkIGRpZExvYWRYSFJTeW5jaHJvbm91c2x5SW1wbChJbnN0
cnVtZW50aW5nQWdlbnRzJik7CisgICAgc3RhdGljIHZvaWQgc2NyaXB0SW1wb3J0ZWRJbXBsKElu
c3RydW1lbnRpbmdBZ2VudHMmLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFN0cmlu
ZyYgc291cmNlU3RyaW5nKTsKKyAgICBzdGF0aWMgdm9pZCBzY3JpcHRFeGVjdXRpb25CbG9ja2Vk
QnlDU1BJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBjb25zdCBTdHJpbmcmIGRpcmVjdGl2ZVRl
eHQpOworICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVTY3JpcHRSZXNwb25zZUltcGwoSW5zdHJ1
bWVudGluZ0FnZW50cyYsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcik7CisgICAgc3RhdGljIHZv
aWQgZG9tQ29udGVudExvYWRlZEV2ZW50RmlyZWRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBG
cmFtZSYpOworICAgIHN0YXRpYyB2b2lkIGxvYWRFdmVudEZpcmVkSW1wbChJbnN0cnVtZW50aW5n
QWdlbnRzJiwgRnJhbWUqKTsKKyAgICBzdGF0aWMgdm9pZCBmcmFtZURldGFjaGVkRnJvbVBhcmVu
dEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIEZyYW1lJik7CisgICAgc3RhdGljIHZvaWQgZGlk
Q29tbWl0TG9hZEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIFBhZ2UqLCBEb2N1bWVudExvYWRl
ciopOworICAgIHN0YXRpYyB2b2lkIGZyYW1lRG9jdW1lbnRVcGRhdGVkSW1wbChJbnN0cnVtZW50
aW5nQWdlbnRzJiwgRnJhbWUqKTsKKyAgICBzdGF0aWMgdm9pZCBsb2FkZXJEZXRhY2hlZEZyb21G
cmFtZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIERvY3VtZW50TG9hZGVyJik7CiAgICAgc3Rh
dGljIHZvaWQgZnJhbWVTdGFydGVkTG9hZGluZ0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIEZy
YW1lJik7CiAgICAgc3RhdGljIHZvaWQgZnJhbWVTdG9wcGVkTG9hZGluZ0ltcGwoSW5zdHJ1bWVu
dGluZ0FnZW50cyYsIEZyYW1lJik7CiAgICAgc3RhdGljIHZvaWQgZnJhbWVTY2hlZHVsZWROYXZp
Z2F0aW9uSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgRnJhbWUmLCBkb3VibGUgZGVsYXkpOwog
ICAgIHN0YXRpYyB2b2lkIGZyYW1lQ2xlYXJlZFNjaGVkdWxlZE5hdmlnYXRpb25JbXBsKEluc3Ry
dW1lbnRpbmdBZ2VudHMmLCBGcmFtZSYpOwotICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb25Db29raWUgd2lsbFJ1bkphdmFTY3JpcHREaWFsb2dJbXBsKEluc3RydW1lbnRpbmdBZ2Vu
dHMqLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOworICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb25Db29raWUgd2lsbFJ1bkphdmFTY3JpcHREaWFsb2dJbXBsKEluc3RydW1lbnRpbmdB
Z2VudHMmLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwogICAgIHN0YXRpYyB2b2lkIGRpZFJ1bkph
dmFTY3JpcHREaWFsb2dJbXBsKGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYp
OwotICAgIHN0YXRpYyB2b2lkIHdpbGxEZXN0cm95Q2FjaGVkUmVzb3VyY2VJbXBsKENhY2hlZFJl
c291cmNlKik7CisgICAgc3RhdGljIHZvaWQgd2lsbERlc3Ryb3lDYWNoZWRSZXNvdXJjZUltcGwo
Q2FjaGVkUmVzb3VyY2UmKTsKIAotICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25D
b29raWUgd2lsbFdyaXRlSFRNTEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIHVuc2lnbmVkIHN0
YXJ0TGluZSwgRnJhbWUqKTsKKyAgICBzdGF0aWMgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29v
a2llIHdpbGxXcml0ZUhUTUxJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCB1bnNpZ25lZCBzdGFy
dExpbmUsIEZyYW1lKik7CiAgICAgc3RhdGljIHZvaWQgZGlkV3JpdGVIVE1MSW1wbChjb25zdCBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUmLCB1bnNpZ25lZCBlbmRMaW5lKTsKIAotICAg
IHN0YXRpYyB2b2lkIGFkZE1lc3NhZ2VUb0NvbnNvbGVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMq
LCBNZXNzYWdlU291cmNlLCBNZXNzYWdlVHlwZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcm
IG1lc3NhZ2UsIEpTQzo6RXhlY1N0YXRlKiwgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlNjcmlwdEFy
Z3VtZW50cz4sIHVuc2lnbmVkIGxvbmcgcmVxdWVzdElkZW50aWZpZXIpOwotICAgIHN0YXRpYyB2
b2lkIGFkZE1lc3NhZ2VUb0NvbnNvbGVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCBNZXNzYWdl
U291cmNlLCBNZXNzYWdlVHlwZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2Us
IGNvbnN0IFN0cmluZyYgc2NyaXB0SUQsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIHVuc2lnbmVkIGNv
bHVtbk51bWJlciwgSlNDOjpFeGVjU3RhdGUqLCB1bnNpZ25lZCBsb25nIHJlcXVlc3RJZGVudGlm
aWVyKTsKKyAgICBzdGF0aWMgdm9pZCBhZGRNZXNzYWdlVG9Db25zb2xlSW1wbChJbnN0cnVtZW50
aW5nQWdlbnRzJiwgTWVzc2FnZVNvdXJjZSwgTWVzc2FnZVR5cGUsIE1lc3NhZ2VMZXZlbCwgY29u
c3QgU3RyaW5nJiBtZXNzYWdlLCBKU0M6OkV4ZWNTdGF0ZSosIFBhc3NSZWZQdHI8SW5zcGVjdG9y
OjpTY3JpcHRBcmd1bWVudHM+LCB1bnNpZ25lZCBsb25nIHJlcXVlc3RJZGVudGlmaWVyKTsKKyAg
ICBzdGF0aWMgdm9pZCBhZGRNZXNzYWdlVG9Db25zb2xlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRz
JiwgTWVzc2FnZVNvdXJjZSwgTWVzc2FnZVR5cGUsIE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5n
JiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNjcmlwdElELCB1bnNpZ25lZCBsaW5lTnVtYmVyLCB1
bnNpZ25lZCBjb2x1bW5OdW1iZXIsIEpTQzo6RXhlY1N0YXRlKiwgdW5zaWduZWQgbG9uZyByZXF1
ZXN0SWRlbnRpZmllcik7CiAKICAgICAvLyBGSVhNRTogUmVtb3ZlIG9uY2Ugd2Ugbm8gbG9uZ2Vy
IGdlbmVyYXRlIHN0YWNrcyBvdXRzaWRlIG9mIEluc3BlY3Rvci4KLSAgICBzdGF0aWMgdm9pZCBh
ZGRNZXNzYWdlVG9Db25zb2xlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwgTWVzc2FnZVNvdXJj
ZSwgTWVzc2FnZVR5cGUsIE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBQYXNz
UmVmUHRyPEluc3BlY3Rvcjo6U2NyaXB0Q2FsbFN0YWNrPiwgdW5zaWduZWQgbG9uZyByZXF1ZXN0
SWRlbnRpZmllcik7CisgICAgc3RhdGljIHZvaWQgYWRkTWVzc2FnZVRvQ29uc29sZUltcGwoSW5z
dHJ1bWVudGluZ0FnZW50cyYsIE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VUeXBlLCBNZXNzYWdlTGV2
ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlNjcmlwdENh
bGxTdGFjaz4sIHVuc2lnbmVkIGxvbmcgcmVxdWVzdElkZW50aWZpZXIpOwogCi0gICAgc3RhdGlj
IHZvaWQgY29uc29sZUNvdW50SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwgSlNDOjpFeGVjU3Rh
dGUqLCBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6U2NyaXB0QXJndW1lbnRzPik7Ci0gICAgc3RhdGlj
IHZvaWQgc3RhcnRDb25zb2xlVGltaW5nSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwgRnJhbWUq
LCBjb25zdCBTdHJpbmcmIHRpdGxlKTsKLSAgICBzdGF0aWMgdm9pZCBzdG9wQ29uc29sZVRpbWlu
Z0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIEZyYW1lKiwgY29uc3QgU3RyaW5nJiB0aXRsZSwg
UGFzc1JlZlB0cjxJbnNwZWN0b3I6OlNjcmlwdENhbGxTdGFjaz4pOwotICAgIHN0YXRpYyB2b2lk
IGNvbnNvbGVUaW1lU3RhbXBJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCBGcmFtZSosIFBhc3NS
ZWZQdHI8SW5zcGVjdG9yOjpTY3JpcHRBcmd1bWVudHM+KTsKKyAgICBzdGF0aWMgdm9pZCBjb25z
b2xlQ291bnRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBKU0M6OkV4ZWNTdGF0ZSosIFBhc3NS
ZWZQdHI8SW5zcGVjdG9yOjpTY3JpcHRBcmd1bWVudHM+KTsKKyAgICBzdGF0aWMgdm9pZCBzdGFy
dENvbnNvbGVUaW1pbmdJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBGcmFtZSYsIGNvbnN0IFN0
cmluZyYgdGl0bGUpOworICAgIHN0YXRpYyB2b2lkIHN0b3BDb25zb2xlVGltaW5nSW1wbChJbnN0
cnVtZW50aW5nQWdlbnRzJiwgRnJhbWUmLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBQYXNzUmVmUHRy
PEluc3BlY3Rvcjo6U2NyaXB0Q2FsbFN0YWNrPik7CisgICAgc3RhdGljIHZvaWQgY29uc29sZVRp
bWVTdGFtcEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIEZyYW1lJiwgUGFzc1JlZlB0cjxJbnNw
ZWN0b3I6OlNjcmlwdEFyZ3VtZW50cz4pOwogCi0gICAgc3RhdGljIHZvaWQgZGlkUmVxdWVzdEFu
aW1hdGlvbkZyYW1lSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwgaW50IGNhbGxiYWNrSWQsIEZy
YW1lKik7Ci0gICAgc3RhdGljIHZvaWQgZGlkQ2FuY2VsQW5pbWF0aW9uRnJhbWVJbXBsKEluc3Ry
dW1lbnRpbmdBZ2VudHMqLCBpbnQgY2FsbGJhY2tJZCwgRnJhbWUqKTsKLSAgICBzdGF0aWMgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIHdpbGxGaXJlQW5pbWF0aW9uRnJhbWVJbXBsKElu
c3RydW1lbnRpbmdBZ2VudHMqLCBpbnQgY2FsbGJhY2tJZCwgRnJhbWUqKTsKKyAgICBzdGF0aWMg
dm9pZCBkaWRSZXF1ZXN0QW5pbWF0aW9uRnJhbWVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBp
bnQgY2FsbGJhY2tJZCwgRnJhbWUqKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRDYW5jZWxBbmltYXRp
b25GcmFtZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIGludCBjYWxsYmFja0lkLCBGcmFtZSop
OworICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgd2lsbEZpcmVBbmlt
YXRpb25GcmFtZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIGludCBjYWxsYmFja0lkLCBGcmFt
ZSopOwogICAgIHN0YXRpYyB2b2lkIGRpZEZpcmVBbmltYXRpb25GcmFtZUltcGwoY29uc3QgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llJik7CiAKLSAgICBzdGF0aWMgdm9pZCBzdGFydFBy
b2ZpbGluZ0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIEpTQzo6RXhlY1N0YXRlKiwgY29uc3Qg
U3RyaW5nJiB0aXRsZSk7Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SlNDOjpQcm9maWxlPiBzdG9w
UHJvZmlsaW5nSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwgSlNDOjpFeGVjU3RhdGUqLCBjb25z
dCBTdHJpbmcmIHRpdGxlKTsKKyAgICBzdGF0aWMgdm9pZCBzdGFydFByb2ZpbGluZ0ltcGwoSW5z
dHJ1bWVudGluZ0FnZW50cyYsIEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgU3RyaW5nJiB0aXRsZSk7
CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SlNDOjpQcm9maWxlPiBzdG9wUHJvZmlsaW5nSW1wbChJ
bnN0cnVtZW50aW5nQWdlbnRzJiwgSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBTdHJpbmcmIHRpdGxl
KTsKIAogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCi0gICAgc3RhdGljIHZvaWQgZGlkT3BlbkRh
dGFiYXNlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwgUGFzc1JlZlB0cjxEYXRhYmFzZT4sIGNv
bnN0IFN0cmluZyYgZG9tYWluLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmVy
c2lvbik7CisgICAgc3RhdGljIHZvaWQgZGlkT3BlbkRhdGFiYXNlSW1wbChJbnN0cnVtZW50aW5n
QWdlbnRzJiwgUGFzc1JlZlB0cjxEYXRhYmFzZT4sIGNvbnN0IFN0cmluZyYgZG9tYWluLCBjb25z
dCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmVyc2lvbik7CiAjZW5kaWYKIAotICAgIHN0
YXRpYyB2b2lkIGRpZERpc3BhdGNoRE9NU3RvcmFnZUV2ZW50SW1wbChJbnN0cnVtZW50aW5nQWdl
bnRzKiwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgb2xkVmFsdWUsIGNvbnN0IFN0
cmluZyYgbmV3VmFsdWUsIFN0b3JhZ2VUeXBlLCBTZWN1cml0eU9yaWdpbiosIFBhZ2UqKTsKKyAg
ICBzdGF0aWMgdm9pZCBkaWREaXNwYXRjaERPTVN0b3JhZ2VFdmVudEltcGwoSW5zdHJ1bWVudGlu
Z0FnZW50cyYsIGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIG9sZFZhbHVlLCBjb25z
dCBTdHJpbmcmIG5ld1ZhbHVlLCBTdG9yYWdlVHlwZSwgU2VjdXJpdHlPcmlnaW4qLCBQYWdlKik7
CiAKLSAgICBzdGF0aWMgYm9vbCBzaG91bGRQYXVzZURlZGljYXRlZFdvcmtlck9uU3RhcnRJbXBs
KEluc3RydW1lbnRpbmdBZ2VudHMqKTsKLSAgICBzdGF0aWMgdm9pZCBkaWRTdGFydFdvcmtlckds
b2JhbFNjb3BlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwgV29ya2VyR2xvYmFsU2NvcGVQcm94
eSosIGNvbnN0IFVSTCYpOwotICAgIHN0YXRpYyB2b2lkIHdvcmtlckdsb2JhbFNjb3BlVGVybWlu
YXRlZEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIFdvcmtlckdsb2JhbFNjb3BlUHJveHkqKTsK
KyAgICBzdGF0aWMgYm9vbCBzaG91bGRQYXVzZURlZGljYXRlZFdvcmtlck9uU3RhcnRJbXBsKElu
c3RydW1lbnRpbmdBZ2VudHMmKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRTdGFydFdvcmtlckdsb2Jh
bFNjb3BlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgV29ya2VyR2xvYmFsU2NvcGVQcm94eSos
IGNvbnN0IFVSTCYpOworICAgIHN0YXRpYyB2b2lkIHdvcmtlckdsb2JhbFNjb3BlVGVybWluYXRl
ZEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIFdvcmtlckdsb2JhbFNjb3BlUHJveHkqKTsKIAog
I2lmIEVOQUJMRShXRUJfUkVQTEFZKQotICAgIHN0YXRpYyB2b2lkIHNlc3Npb25DcmVhdGVkSW1w
bChJbnN0cnVtZW50aW5nQWdlbnRzKiwgUGFzc1JlZlB0cjxSZXBsYXlTZXNzaW9uPik7Ci0gICAg
c3RhdGljIHZvaWQgc2Vzc2lvbkxvYWRlZEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIFBhc3NS
ZWZQdHI8UmVwbGF5U2Vzc2lvbj4pOwotICAgIHN0YXRpYyB2b2lkIHNlc3Npb25Nb2RpZmllZElt
cGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIFBhc3NSZWZQdHI8UmVwbGF5U2Vzc2lvbj4pOworICAg
IHN0YXRpYyB2b2lkIHNlc3Npb25DcmVhdGVkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgUGFz
c1JlZlB0cjxSZXBsYXlTZXNzaW9uPik7CisgICAgc3RhdGljIHZvaWQgc2Vzc2lvbkxvYWRlZElt
cGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIFBhc3NSZWZQdHI8UmVwbGF5U2Vzc2lvbj4pOworICAg
IHN0YXRpYyB2b2lkIHNlc3Npb25Nb2RpZmllZEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIFBh
c3NSZWZQdHI8UmVwbGF5U2Vzc2lvbj4pOwogCi0gICAgc3RhdGljIHZvaWQgc2VnbWVudENyZWF0
ZWRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCBQYXNzUmVmUHRyPFJlcGxheVNlc3Npb25TZWdt
ZW50Pik7Ci0gICAgc3RhdGljIHZvaWQgc2VnbWVudENvbXBsZXRlZEltcGwoSW5zdHJ1bWVudGlu
Z0FnZW50cyosIFBhc3NSZWZQdHI8UmVwbGF5U2Vzc2lvblNlZ21lbnQ+KTsKLSAgICBzdGF0aWMg
dm9pZCBzZWdtZW50TG9hZGVkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwgUGFzc1JlZlB0cjxS
ZXBsYXlTZXNzaW9uU2VnbWVudD4pOwotICAgIHN0YXRpYyB2b2lkIHNlZ21lbnRVbmxvYWRlZElt
cGwoSW5zdHJ1bWVudGluZ0FnZW50cyopOworICAgIHN0YXRpYyB2b2lkIHNlZ21lbnRDcmVhdGVk
SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgUGFzc1JlZlB0cjxSZXBsYXlTZXNzaW9uU2VnbWVu
dD4pOworICAgIHN0YXRpYyB2b2lkIHNlZ21lbnRDb21wbGV0ZWRJbXBsKEluc3RydW1lbnRpbmdB
Z2VudHMmLCBQYXNzUmVmUHRyPFJlcGxheVNlc3Npb25TZWdtZW50Pik7CisgICAgc3RhdGljIHZv
aWQgc2VnbWVudExvYWRlZEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIFBhc3NSZWZQdHI8UmVw
bGF5U2Vzc2lvblNlZ21lbnQ+KTsKKyAgICBzdGF0aWMgdm9pZCBzZWdtZW50VW5sb2FkZWRJbXBs
KEluc3RydW1lbnRpbmdBZ2VudHMmKTsKIAotICAgIHN0YXRpYyB2b2lkIGNhcHR1cmVTdGFydGVk
SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKik7Ci0gICAgc3RhdGljIHZvaWQgY2FwdHVyZVN0b3Bw
ZWRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqKTsKKyAgICBzdGF0aWMgdm9pZCBjYXB0dXJlU3Rh
cnRlZEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYpOworICAgIHN0YXRpYyB2b2lkIGNhcHR1cmVT
dG9wcGVkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJik7CiAKLSAgICBzdGF0aWMgdm9pZCBwbGF5
YmFja1N0YXJ0ZWRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqKTsKLSAgICBzdGF0aWMgdm9pZCBw
bGF5YmFja1BhdXNlZEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIGNvbnN0IFJlcGxheVBvc2l0
aW9uJik7Ci0gICAgc3RhdGljIHZvaWQgcGxheWJhY2tIaXRQb3NpdGlvbkltcGwoSW5zdHJ1bWVu
dGluZ0FnZW50cyosIGNvbnN0IFJlcGxheVBvc2l0aW9uJik7Ci0gICAgc3RhdGljIHZvaWQgcGxh
eWJhY2tGaW5pc2hlZEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyopOworICAgIHN0YXRpYyB2b2lk
IHBsYXliYWNrU3RhcnRlZEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYpOworICAgIHN0YXRpYyB2
b2lkIHBsYXliYWNrUGF1c2VkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgY29uc3QgUmVwbGF5
UG9zaXRpb24mKTsKKyAgICBzdGF0aWMgdm9pZCBwbGF5YmFja0hpdFBvc2l0aW9uSW1wbChJbnN0
cnVtZW50aW5nQWdlbnRzJiwgY29uc3QgUmVwbGF5UG9zaXRpb24mKTsKKyAgICBzdGF0aWMgdm9p
ZCBwbGF5YmFja0ZpbmlzaGVkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJik7CiAjZW5kaWYKIAog
I2lmIEVOQUJMRShXRUJfU09DS0VUUykKLSAgICBzdGF0aWMgdm9pZCBkaWRDcmVhdGVXZWJTb2Nr
ZXRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNv
bnN0IFVSTCYgcmVxdWVzdFVSTCwgY29uc3QgVVJMJiBkb2N1bWVudFVSTCwgY29uc3QgU3RyaW5n
JiBwcm90b2NvbCwgRG9jdW1lbnQqKTsKLSAgICBzdGF0aWMgdm9pZCB3aWxsU2VuZFdlYlNvY2tl
dEhhbmRzaGFrZVJlcXVlc3RJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCB1bnNpZ25lZCBsb25n
IGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIERvY3VtZW50Kik7Ci0gICAgc3Rh
dGljIHZvaWQgZGlkUmVjZWl2ZVdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlSW1wbChJbnN0cnVt
ZW50aW5nQWdlbnRzKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiwgRG9jdW1lbnQqKTsKLSAgICBzdGF0aWMgdm9pZCBkaWRDbG9zZVdlYlNvY2tldElt
cGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1l
bnQqKTsKLSAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlV2ViU29ja2V0RnJhbWVJbXBsKEluc3Ry
dW1lbnRpbmdBZ2VudHMqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFdlYlNvY2tl
dEZyYW1lJik7Ci0gICAgc3RhdGljIHZvaWQgZGlkU2VuZFdlYlNvY2tldEZyYW1lSW1wbChJbnN0
cnVtZW50aW5nQWdlbnRzKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBXZWJTb2Nr
ZXRGcmFtZSYpOwotICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVXZWJTb2NrZXRGcmFtZUVycm9y
SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25z
dCBTdHJpbmcmKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRDcmVhdGVXZWJTb2NrZXRJbXBsKEluc3Ry
dW1lbnRpbmdBZ2VudHMmLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFVSTCYgcmVx
dWVzdFVSTCwgY29uc3QgVVJMJiBkb2N1bWVudFVSTCwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCwg
RG9jdW1lbnQqKTsKKyAgICBzdGF0aWMgdm9pZCB3aWxsU2VuZFdlYlNvY2tldEhhbmRzaGFrZVJl
cXVlc3RJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIs
IGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIERvY3VtZW50Kik7CisgICAgc3RhdGljIHZvaWQgZGlk
UmVjZWl2ZVdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRz
JiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgRG9j
dW1lbnQqKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRDbG9zZVdlYlNvY2tldEltcGwoSW5zdHJ1bWVu
dGluZ0FnZW50cyYsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnQqKTsKKyAgICBz
dGF0aWMgdm9pZCBkaWRSZWNlaXZlV2ViU29ja2V0RnJhbWVJbXBsKEluc3RydW1lbnRpbmdBZ2Vu
dHMmLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFdlYlNvY2tldEZyYW1lJik7Cisg
ICAgc3RhdGljIHZvaWQgZGlkU2VuZFdlYlNvY2tldEZyYW1lSW1wbChJbnN0cnVtZW50aW5nQWdl
bnRzJiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBXZWJTb2NrZXRGcmFtZSYpOwor
ICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVXZWJTb2NrZXRGcmFtZUVycm9ySW1wbChJbnN0cnVt
ZW50aW5nQWdlbnRzJiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmKTsK
ICNlbmRpZgogCi0gICAgc3RhdGljIHZvaWQgbmV0d29ya1N0YXRlQ2hhbmdlZEltcGwoSW5zdHJ1
bWVudGluZ0FnZW50cyopOwotICAgIHN0YXRpYyB2b2lkIHVwZGF0ZUFwcGxpY2F0aW9uQ2FjaGVT
dGF0dXNJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCBGcmFtZSopOworICAgIHN0YXRpYyB2b2lk
IG5ldHdvcmtTdGF0ZUNoYW5nZWRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmKTsKKyAgICBzdGF0
aWMgdm9pZCB1cGRhdGVBcHBsaWNhdGlvbkNhY2hlU3RhdHVzSW1wbChJbnN0cnVtZW50aW5nQWdl
bnRzJiwgRnJhbWUqKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBJbnN0cnVtZW50aW5n
QWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzRm9yUGFnZShQYWdlKik7CisgICAgc3RhdGljIHZv
aWQgbGF5ZXJUcmVlRGlkQ2hhbmdlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJik7CisgICAgc3Rh
dGljIHZvaWQgcmVuZGVyTGF5ZXJEZXN0cm95ZWRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBj
b25zdCBSZW5kZXJMYXllciYpOworICAgIHN0YXRpYyB2b2lkIHBzZXVkb0VsZW1lbnREZXN0cm95
ZWRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBQc2V1ZG9FbGVtZW50Jik7CisKKyAgICBzdGF0
aWMgSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50c0ZvclBhZ2UoUGFnZSYp
OworICAgIHN0YXRpYyBJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzRm9y
RnJhbWUoRnJhbWUmKTsKICAgICBzdGF0aWMgSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVu
dGluZ0FnZW50c0ZvckZyYW1lKEZyYW1lKik7CiAgICAgc3RhdGljIEluc3RydW1lbnRpbmdBZ2Vu
dHMqIGluc3RydW1lbnRpbmdBZ2VudHNGb3JDb250ZXh0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
KTsKKyAgICBzdGF0aWMgSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50c0Zv
ckRvY3VtZW50KERvY3VtZW50Jik7CiAgICAgc3RhdGljIEluc3RydW1lbnRpbmdBZ2VudHMqIGlu
c3RydW1lbnRpbmdBZ2VudHNGb3JEb2N1bWVudChEb2N1bWVudCopOwogICAgIHN0YXRpYyBJbnN0
cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzRm9yUmVuZGVyZXIoUmVuZGVyT2Jq
ZWN0Kik7CiAKICAgICBzdGF0aWMgSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0Fn
ZW50c0Zvcldvcmtlckdsb2JhbFNjb3BlKFdvcmtlckdsb2JhbFNjb3BlKik7CiAgICAgc3RhdGlj
IEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHNGb3JOb25Eb2N1bWVudENv
bnRleHQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwogCi0gICAgc3RhdGljIHZvaWQgcGF1c2VP
bk5hdGl2ZUV2ZW50SWZOZWVkZWQoSW5zdHJ1bWVudGluZ0FnZW50cyosIGJvb2wgaXNET01FdmVu
dCwgY29uc3QgU3RyaW5nJiBldmVudE5hbWUsIGJvb2wgc3luY2hyb25vdXMpOwotICAgIHN0YXRp
YyB2b2lkIGNhbmNlbFBhdXNlT25OYXRpdmVFdmVudChJbnN0cnVtZW50aW5nQWdlbnRzKik7CiAg
ICAgc3RhdGljIEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHJldHJpZXZlVGltZWxpbmVBZ2VudChj
b25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUmKTsKIAotICAgIHN0YXRpYyB2b2lk
IGxheWVyVHJlZURpZENoYW5nZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyopOwotICAgIHN0YXRp
YyB2b2lkIHJlbmRlckxheWVyRGVzdHJveWVkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwgY29u
c3QgUmVuZGVyTGF5ZXIqKTsKLSAgICBzdGF0aWMgdm9pZCBwc2V1ZG9FbGVtZW50RGVzdHJveWVk
SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwgUHNldWRvRWxlbWVudCopOworICAgIHN0YXRpYyB2
b2lkIHBhdXNlT25OYXRpdmVFdmVudElmTmVlZGVkKEluc3RydW1lbnRpbmdBZ2VudHMmLCBib29s
IGlzRE9NRXZlbnQsIGNvbnN0IFN0cmluZyYgZXZlbnROYW1lLCBib29sIHN5bmNocm9ub3VzKTsK
KyAgICBzdGF0aWMgdm9pZCBjYW5jZWxQYXVzZU9uTmF0aXZlRXZlbnQoSW5zdHJ1bWVudGluZ0Fn
ZW50cyYpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGludCBzX2Zyb250ZW5kQ291bnRl
cjsKICNlbmRpZgogfTsKIAotaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpk
aWRDbGVhcldpbmRvd09iamVjdEluV29ybGQoRnJhbWUqIGZyYW1lLCBET01XcmFwcGVyV29ybGQm
IHdvcmxkKQoraW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDbGVhcldp
bmRvd09iamVjdEluV29ybGQoRnJhbWUmIGZyYW1lLCBET01XcmFwcGVyV29ybGQmIHdvcmxkKQog
ewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgaWYgKEluc3RydW1lbnRpbmdBZ2VudHMqIGlu
c3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yRnJhbWUoZnJhbWUpKQot
ICAgICAgICBkaWRDbGVhcldpbmRvd09iamVjdEluV29ybGRJbXBsKGluc3RydW1lbnRpbmdBZ2Vu
dHMsIGZyYW1lLCB3b3JsZCk7CisgICAgICAgIGRpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZElt
cGwoKmluc3RydW1lbnRpbmdBZ2VudHMsIGZyYW1lLCB3b3JsZCk7CiAjZWxzZQogICAgIFVOVVNF
RF9QQVJBTShmcmFtZSk7CiAgICAgVU5VU0VEX1BBUkFNKHdvcmxkKTsKQEAgLTUxMCw2NyArNTEz
LDY3IEBAIGlubGluZSBib29sIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aXNEZWJ1Z2dlclBh
dXNlZChGcmFtZSogZnJhbWUpCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBGQVNUX1JFVFVS
Tl9JRl9OT19GUk9OVEVORFMoZmFsc2UpOwogICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBp
bnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvckZyYW1lKGZyYW1lKSkK
LSAgICAgICAgcmV0dXJuIGlzRGVidWdnZXJQYXVzZWRJbXBsKGluc3RydW1lbnRpbmdBZ2VudHMp
OworICAgICAgICByZXR1cm4gaXNEZWJ1Z2dlclBhdXNlZEltcGwoKmluc3RydW1lbnRpbmdBZ2Vu
dHMpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZnJhbWUpOwogI2VuZGlmCiAgICAgcmV0dXJu
IGZhbHNlOwogfQogCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxJ
bnNlcnRET01Ob2RlKERvY3VtZW50KiBkb2N1bWVudCwgTm9kZSogcGFyZW50KQoraW5saW5lIHZv
aWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsSW5zZXJ0RE9NTm9kZShEb2N1bWVudCYg
ZG9jdW1lbnQsIE5vZGUmIHBhcmVudCkKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIEZB
U1RfUkVUVVJOX0lGX05PX0ZST05URU5EUyh2b2lkKCkpOwogICAgIGlmIChJbnN0cnVtZW50aW5n
QWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvckRvY3Vt
ZW50KGRvY3VtZW50KSkKLSAgICAgICAgd2lsbEluc2VydERPTU5vZGVJbXBsKGluc3RydW1lbnRp
bmdBZ2VudHMsIHBhcmVudCk7CisgICAgICAgIHdpbGxJbnNlcnRET01Ob2RlSW1wbCgqaW5zdHJ1
bWVudGluZ0FnZW50cywgcGFyZW50KTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGRvY3VtZW50
KTsKICAgICBVTlVTRURfUEFSQU0ocGFyZW50KTsKICNlbmRpZgogfQogCi1pbmxpbmUgdm9pZCBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEluc2VydERPTU5vZGUoRG9jdW1lbnQqIGRvY3Vt
ZW50LCBOb2RlKiBub2RlKQoraW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpk
aWRJbnNlcnRET01Ob2RlKERvY3VtZW50JiBkb2N1bWVudCwgTm9kZSYgbm9kZSkKIHsKICNpZiBF
TkFCTEUoSU5TUEVDVE9SKQogICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZST05URU5EUyh2b2lkKCkp
OwogICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5z
dHJ1bWVudGluZ0FnZW50c0ZvckRvY3VtZW50KGRvY3VtZW50KSkKLSAgICAgICAgZGlkSW5zZXJ0
RE9NTm9kZUltcGwoaW5zdHJ1bWVudGluZ0FnZW50cywgbm9kZSk7CisgICAgICAgIGRpZEluc2Vy
dERPTU5vZGVJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRzLCBub2RlKTsKICNlbHNlCiAgICAgVU5V
U0VEX1BBUkFNKGRvY3VtZW50KTsKICAgICBVTlVTRURfUEFSQU0obm9kZSk7CiAjZW5kaWYKIH0K
IAotaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUmVtb3ZlRE9NTm9k
ZShEb2N1bWVudCogZG9jdW1lbnQsIE5vZGUqIG5vZGUpCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OndpbGxSZW1vdmVET01Ob2RlKERvY3VtZW50JiBkb2N1bWVudCwgTm9k
ZSYgbm9kZSkKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIEZBU1RfUkVUVVJOX0lGX05P
X0ZST05URU5EUyh2b2lkKCkpOwogICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVt
ZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvckRvY3VtZW50KGRvY3VtZW50KSkK
LSAgICAgICAgd2lsbFJlbW92ZURPTU5vZGVJbXBsKGluc3RydW1lbnRpbmdBZ2VudHMsIG5vZGUp
OworICAgICAgICB3aWxsUmVtb3ZlRE9NTm9kZUltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMsIG5v
ZGUpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZG9jdW1lbnQpOwogICAgIFVOVVNFRF9QQVJB
TShub2RlKTsKICNlbmRpZgogfQogCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmRpZFJlbW92ZURPTU5vZGUoRG9jdW1lbnQqIGRvY3VtZW50LCBOb2RlKiBub2RlKQoraW5s
aW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZW1vdmVET01Ob2RlKERvY3Vt
ZW50JiBkb2N1bWVudCwgTm9kZSYgbm9kZSkKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAg
IEZBU1RfUkVUVVJOX0lGX05PX0ZST05URU5EUyh2b2lkKCkpOwogICAgIGlmIChJbnN0cnVtZW50
aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvckRv
Y3VtZW50KGRvY3VtZW50KSkKLSAgICAgICAgZGlkUmVtb3ZlRE9NTm9kZUltcGwoaW5zdHJ1bWVu
dGluZ0FnZW50cywgbm9kZSk7CisgICAgICAgIGRpZFJlbW92ZURPTU5vZGVJbXBsKCppbnN0cnVt
ZW50aW5nQWdlbnRzLCBub2RlKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGRvY3VtZW50KTsK
ICAgICBVTlVTRURfUEFSQU0obm9kZSk7CiAjZW5kaWYKIH0KIAotaW5saW5lIHZvaWQgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsTW9kaWZ5RE9NQXR0cihEb2N1bWVudCogZG9jdW1lbnQs
IEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IEF0b21pY1N0cmluZyYgb2xkVmFsdWUsIGNvbnN0IEF0
b21pY1N0cmluZyYgbmV3VmFsdWUpCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OndpbGxNb2RpZnlET01BdHRyKERvY3VtZW50JiBkb2N1bWVudCwgRWxlbWVudCYgZWxlbWVu
dCwgY29uc3QgQXRvbWljU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuZXdW
YWx1ZSkKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZS
T05URU5EUyh2b2lkKCkpOwogICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50
aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvckRvY3VtZW50KGRvY3VtZW50KSkKLSAg
ICAgICAgd2lsbE1vZGlmeURPTUF0dHJJbXBsKGluc3RydW1lbnRpbmdBZ2VudHMsIGVsZW1lbnQs
IG9sZFZhbHVlLCBuZXdWYWx1ZSk7CisgICAgICAgIHdpbGxNb2RpZnlET01BdHRySW1wbCgqaW5z
dHJ1bWVudGluZ0FnZW50cywgZWxlbWVudCwgb2xkVmFsdWUsIG5ld1ZhbHVlKTsKICNlbHNlCiAg
ICAgVU5VU0VEX1BBUkFNKGRvY3VtZW50KTsKICAgICBVTlVTRURfUEFSQU0oZWxlbWVudCk7CkBA
IC01NzksMTIgKzU4MiwxMiBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OndpbGxNb2RpZnlET01BdHRyKERvY3VtZW50KiBkb2N1bWVudCwgRWxlbQogI2VuZGlmCiB9CiAK
LWlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkTW9kaWZ5RE9NQXR0cihE
b2N1bWVudCogZG9jdW1lbnQsIEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IEF0b21pY1N0cmluZyYg
bmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKK2lubGluZSB2b2lkIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6ZGlkTW9kaWZ5RE9NQXR0cihEb2N1bWVudCYgZG9jdW1lbnQsIEVsZW1l
bnQmIGVsZW1lbnQsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5n
JiB2YWx1ZSkKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIEZBU1RfUkVUVVJOX0lGX05P
X0ZST05URU5EUyh2b2lkKCkpOwogICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVt
ZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvckRvY3VtZW50KGRvY3VtZW50KSkK
LSAgICAgICAgZGlkTW9kaWZ5RE9NQXR0ckltcGwoaW5zdHJ1bWVudGluZ0FnZW50cywgZWxlbWVu
dCwgbmFtZSwgdmFsdWUpOworICAgICAgICBkaWRNb2RpZnlET01BdHRySW1wbCgqaW5zdHJ1bWVu
dGluZ0FnZW50cywgZWxlbWVudCwgbmFtZSwgdmFsdWUpOwogI2Vsc2UKICAgICBVTlVTRURfUEFS
QU0oZG9jdW1lbnQpOwogICAgIFVOVVNFRF9QQVJBTShlbGVtZW50KTsKQEAgLTU5MywxMiArNTk2
LDEyIEBAIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkTW9kaWZ5RE9N
QXR0cihEb2N1bWVudCogZG9jdW1lbnQsIEVsZW1lCiAjZW5kaWYKIH0KIAotaW5saW5lIHZvaWQg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZW1vdmVET01BdHRyKERvY3VtZW50KiBkb2N1
bWVudCwgRWxlbWVudCogZWxlbWVudCwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKQoraW5saW5l
IHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZW1vdmVET01BdHRyKERvY3VtZW50
JiBkb2N1bWVudCwgRWxlbWVudCYgZWxlbWVudCwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKQog
ewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgRkFTVF9SRVRVUk5fSUZfTk9fRlJPTlRFTkRT
KHZvaWQoKSk7CiAgICAgaWYgKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2Vu
dHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yRG9jdW1lbnQoZG9jdW1lbnQpKQotICAgICAgICBk
aWRSZW1vdmVET01BdHRySW1wbChpbnN0cnVtZW50aW5nQWdlbnRzLCBlbGVtZW50LCBuYW1lKTsK
KyAgICAgICAgZGlkUmVtb3ZlRE9NQXR0ckltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMsIGVsZW1l
bnQsIG5hbWUpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZG9jdW1lbnQpOwogICAgIFVOVVNF
RF9QQVJBTShlbGVtZW50KTsKQEAgLTYwNiwxMiArNjA5LDEyIEBAIGlubGluZSB2b2lkIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVtb3ZlRE9NQXR0cihEb2N1bWVudCogZG9jdW1lbnQs
IEVsZW1lCiAjZW5kaWYKIH0KIAotaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpkaWRJbnZhbGlkYXRlU3R5bGVBdHRyKERvY3VtZW50KiBkb2N1bWVudCwgTm9kZSogbm9kZSkK
K2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkSW52YWxpZGF0ZVN0eWxl
QXR0cihEb2N1bWVudCYgZG9jdW1lbnQsIE5vZGUmIG5vZGUpCiB7CiAjaWYgRU5BQkxFKElOU1BF
Q1RPUikKICAgICBGQVNUX1JFVFVSTl9JRl9OT19GUk9OVEVORFModm9pZCgpKTsKICAgICBpZiAo
SW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdB
Z2VudHNGb3JEb2N1bWVudChkb2N1bWVudCkpCi0gICAgICAgIGRpZEludmFsaWRhdGVTdHlsZUF0
dHJJbXBsKGluc3RydW1lbnRpbmdBZ2VudHMsIG5vZGUpOworICAgICAgICBkaWRJbnZhbGlkYXRl
U3R5bGVBdHRySW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywgbm9kZSk7CiAjZWxzZQogICAgIFVO
VVNFRF9QQVJBTShkb2N1bWVudCk7CiAgICAgVU5VU0VEX1BBUkFNKG5vZGUpOwpAQCAtNjIyLDkw
ICs2MjUsOTAgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpmcmFtZVdp
bmRvd0Rpc2NhcmRlZChGcmFtZSogZnJhbWUsIERPTVdpbmQKIHsKICNpZiBFTkFCTEUoSU5TUEVD
VE9SKQogICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0g
aW5zdHJ1bWVudGluZ0FnZW50c0ZvckZyYW1lKGZyYW1lKSkKLSAgICAgICAgZnJhbWVXaW5kb3dE
aXNjYXJkZWRJbXBsKGluc3RydW1lbnRpbmdBZ2VudHMsIGRvbVdpbmRvdyk7CisgICAgICAgIGZy
YW1lV2luZG93RGlzY2FyZGVkSW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywgZG9tV2luZG93KTsK
ICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGZyYW1lKTsKICAgICBVTlVTRURfUEFSQU0oZG9tV2lu
ZG93KTsKICNlbmRpZgogfQogCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
Om1lZGlhUXVlcnlSZXN1bHRDaGFuZ2VkKERvY3VtZW50KiBkb2N1bWVudCkKK2lubGluZSB2b2lk
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6bWVkaWFRdWVyeVJlc3VsdENoYW5nZWQoRG9jdW1l
bnQmIGRvY3VtZW50KQogewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgRkFTVF9SRVRVUk5f
SUZfTk9fRlJPTlRFTkRTKHZvaWQoKSk7CiAgICAgaWYgKEluc3RydW1lbnRpbmdBZ2VudHMqIGlu
c3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yRG9jdW1lbnQoZG9jdW1l
bnQpKQotICAgICAgICBtZWRpYVF1ZXJ5UmVzdWx0Q2hhbmdlZEltcGwoaW5zdHJ1bWVudGluZ0Fn
ZW50cyk7CisgICAgICAgIG1lZGlhUXVlcnlSZXN1bHRDaGFuZ2VkSW1wbCgqaW5zdHJ1bWVudGlu
Z0FnZW50cyk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShkb2N1bWVudCk7CiAjZW5kaWYKIH0K
IAotaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRQdXNoU2hhZG93Um9v
dChFbGVtZW50KiBob3N0LCBTaGFkb3dSb290KiByb290KQoraW5saW5lIHZvaWQgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpkaWRQdXNoU2hhZG93Um9vdChFbGVtZW50JiBob3N0LCBTaGFkb3dS
b290JiByb290KQogewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgRkFTVF9SRVRVUk5fSUZf
Tk9fRlJPTlRFTkRTKHZvaWQoKSk7Ci0gICAgaWYgKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3Ry
dW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yRG9jdW1lbnQoJmhvc3QtPmRv
Y3VtZW50KCkpKQotICAgICAgICBkaWRQdXNoU2hhZG93Um9vdEltcGwoaW5zdHJ1bWVudGluZ0Fn
ZW50cywgaG9zdCwgcm9vdCk7CisgICAgaWYgKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1l
bnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yRG9jdW1lbnQoaG9zdC5kb2N1bWVu
dCgpKSkKKyAgICAgICAgZGlkUHVzaFNoYWRvd1Jvb3RJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRz
LCBob3N0LCByb290KTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGhvc3QpOwogICAgIFVOVVNF
RF9QQVJBTShyb290KTsKICNlbmRpZgogfQogCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OndpbGxQb3BTaGFkb3dSb290KEVsZW1lbnQqIGhvc3QsIFNoYWRvd1Jvb3QqIHJv
b3QpCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxQb3BTaGFkb3dS
b290KEVsZW1lbnQmIGhvc3QsIFNoYWRvd1Jvb3QmIHJvb3QpCiB7CiAjaWYgRU5BQkxFKElOU1BF
Q1RPUikKICAgICBGQVNUX1JFVFVSTl9JRl9OT19GUk9OVEVORFModm9pZCgpKTsKLSAgICBpZiAo
SW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdB
Z2VudHNGb3JEb2N1bWVudCgmaG9zdC0+ZG9jdW1lbnQoKSkpCi0gICAgICAgIHdpbGxQb3BTaGFk
b3dSb290SW1wbChpbnN0cnVtZW50aW5nQWdlbnRzLCBob3N0LCByb290KTsKKyAgICBpZiAoSW5z
dHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2Vu
dHNGb3JEb2N1bWVudChob3N0LmRvY3VtZW50KCkpKQorICAgICAgICB3aWxsUG9wU2hhZG93Um9v
dEltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMsIGhvc3QsIHJvb3QpOwogI2Vsc2UKICAgICBVTlVT
RURfUEFSQU0oaG9zdCk7CiAgICAgVU5VU0VEX1BBUkFNKHJvb3QpOwogI2VuZGlmCiB9CiAKLWlu
bGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ3JlYXRlTmFtZWRGbG93KERv
Y3VtZW50KiBkb2N1bWVudCwgV2ViS2l0TmFtZWRGbG93KiBuYW1lZEZsb3cpCitpbmxpbmUgdm9p
ZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENyZWF0ZU5hbWVkRmxvdyhEb2N1bWVudCog
ZG9jdW1lbnQsIFdlYktpdE5hbWVkRmxvdyYgbmFtZWRGbG93KQogewogI2lmIEVOQUJMRShJTlNQ
RUNUT1IpCiAgICAgRkFTVF9SRVRVUk5fSUZfTk9fRlJPTlRFTkRTKHZvaWQoKSk7CiAgICAgaWYg
KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5n
QWdlbnRzRm9yRG9jdW1lbnQoZG9jdW1lbnQpKQotICAgICAgICBkaWRDcmVhdGVOYW1lZEZsb3dJ
bXBsKGluc3RydW1lbnRpbmdBZ2VudHMsIGRvY3VtZW50LCBuYW1lZEZsb3cpOworICAgICAgICBk
aWRDcmVhdGVOYW1lZEZsb3dJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRzLCBkb2N1bWVudCwgbmFt
ZWRGbG93KTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGRvY3VtZW50KTsKICAgICBVTlVTRURf
UEFSQU0obmFtZWRGbG93KTsKICNlbmRpZgogfQogCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OndpbGxSZW1vdmVOYW1lZEZsb3coRG9jdW1lbnQqIGRvY3VtZW50LCBXZWJL
aXROYW1lZEZsb3cqIG5hbWVkRmxvdykKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6d2lsbFJlbW92ZU5hbWVkRmxvdyhEb2N1bWVudCogZG9jdW1lbnQsIFdlYktpdE5hbWVk
RmxvdyYgbmFtZWRGbG93KQogewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgRkFTVF9SRVRV
Uk5fSUZfTk9fRlJPTlRFTkRTKHZvaWQoKSk7CiAgICAgaWYgKEluc3RydW1lbnRpbmdBZ2VudHMq
IGluc3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yRG9jdW1lbnQoZG9j
dW1lbnQpKQotICAgICAgICB3aWxsUmVtb3ZlTmFtZWRGbG93SW1wbChpbnN0cnVtZW50aW5nQWdl
bnRzLCBkb2N1bWVudCwgbmFtZWRGbG93KTsKKyAgICAgICAgd2lsbFJlbW92ZU5hbWVkRmxvd0lt
cGwoKmluc3RydW1lbnRpbmdBZ2VudHMsIGRvY3VtZW50LCBuYW1lZEZsb3cpOwogI2Vsc2UKICAg
ICBVTlVTRURfUEFSQU0oZG9jdW1lbnQpOwogICAgIFVOVVNFRF9QQVJBTShuYW1lZEZsb3cpOwog
I2VuZGlmCiB9CiAKLWlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ2hh
bmdlUmVnaW9uT3ZlcnNldChEb2N1bWVudCogZG9jdW1lbnQsIFdlYktpdE5hbWVkRmxvdyogbmFt
ZWRGbG93KQoraW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDaGFuZ2VS
ZWdpb25PdmVyc2V0KERvY3VtZW50JiBkb2N1bWVudCwgV2ViS2l0TmFtZWRGbG93JiBuYW1lZEZs
b3cpCiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBGQVNUX1JFVFVSTl9JRl9OT19GUk9O
VEVORFModm9pZCgpKTsKICAgICBpZiAoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGlu
Z0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JEb2N1bWVudChkb2N1bWVudCkpCi0gICAg
ICAgIGRpZENoYW5nZVJlZ2lvbk92ZXJzZXRJbXBsKGluc3RydW1lbnRpbmdBZ2VudHMsIGRvY3Vt
ZW50LCBuYW1lZEZsb3cpOworICAgICAgICBkaWRDaGFuZ2VSZWdpb25PdmVyc2V0SW1wbCgqaW5z
dHJ1bWVudGluZ0FnZW50cywgZG9jdW1lbnQsIG5hbWVkRmxvdyk7CiAjZWxzZQogICAgIFVOVVNF
RF9QQVJBTShkb2N1bWVudCk7CiAgICAgVU5VU0VEX1BBUkFNKG5hbWVkRmxvdyk7CiAjZW5kaWYK
IH0KIAotaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWdpc3Rlck5h
bWVkRmxvd0NvbnRlbnRFbGVtZW50KERvY3VtZW50KiBkb2N1bWVudCwgV2ViS2l0TmFtZWRGbG93
KiBuYW1lZEZsb3csIE5vZGUqIGNvbnRlbnRFbGVtZW50LCBOb2RlKiBuZXh0Q29udGVudEVsZW1l
bnQpCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlZ2lzdGVyTmFt
ZWRGbG93Q29udGVudEVsZW1lbnQoRG9jdW1lbnQmIGRvY3VtZW50LCBXZWJLaXROYW1lZEZsb3cm
IG5hbWVkRmxvdywgTm9kZSYgY29udGVudEVsZW1lbnQsIE5vZGUqIG5leHRDb250ZW50RWxlbWVu
dCkKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZST05U
RU5EUyh2b2lkKCkpOwogICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5n
QWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvckRvY3VtZW50KGRvY3VtZW50KSkKLSAgICAg
ICAgZGlkUmVnaXN0ZXJOYW1lZEZsb3dDb250ZW50RWxlbWVudEltcGwoaW5zdHJ1bWVudGluZ0Fn
ZW50cywgZG9jdW1lbnQsIG5hbWVkRmxvdywgY29udGVudEVsZW1lbnQsIG5leHRDb250ZW50RWxl
bWVudCk7CisgICAgICAgIGRpZFJlZ2lzdGVyTmFtZWRGbG93Q29udGVudEVsZW1lbnRJbXBsKCpp
bnN0cnVtZW50aW5nQWdlbnRzLCBkb2N1bWVudCwgbmFtZWRGbG93LCBjb250ZW50RWxlbWVudCwg
bmV4dENvbnRlbnRFbGVtZW50KTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGRvY3VtZW50KTsK
ICAgICBVTlVTRURfUEFSQU0obmFtZWRGbG93KTsKQEAgLTcxNCwxMiArNzE3LDEyIEBAIGlubGlu
ZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVnaXN0ZXJOYW1lZEZsb3dDb250
ZW50RWxlbWVudChEb2N1bWVuCiAjZW5kaWYKIH0KIAotaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpkaWRVbnJlZ2lzdGVyTmFtZWRGbG93Q29udGVudEVsZW1lbnQoRG9jdW1l
bnQqIGRvY3VtZW50LCBXZWJLaXROYW1lZEZsb3cqIG5hbWVkRmxvdywgTm9kZSogY29udGVudEVs
ZW1lbnQpCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFVucmVnaXN0
ZXJOYW1lZEZsb3dDb250ZW50RWxlbWVudChEb2N1bWVudCYgZG9jdW1lbnQsIFdlYktpdE5hbWVk
RmxvdyYgbmFtZWRGbG93LCBOb2RlJiBjb250ZW50RWxlbWVudCkKIHsKICNpZiBFTkFCTEUoSU5T
UEVDVE9SKQogICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZST05URU5EUyh2b2lkKCkpOwogICAgIGlm
IChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGlu
Z0FnZW50c0ZvckRvY3VtZW50KGRvY3VtZW50KSkKLSAgICAgICAgZGlkVW5yZWdpc3Rlck5hbWVk
Rmxvd0NvbnRlbnRFbGVtZW50SW1wbChpbnN0cnVtZW50aW5nQWdlbnRzLCBkb2N1bWVudCwgbmFt
ZWRGbG93LCBjb250ZW50RWxlbWVudCk7CisgICAgICAgIGRpZFVucmVnaXN0ZXJOYW1lZEZsb3dD
b250ZW50RWxlbWVudEltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMsIGRvY3VtZW50LCBuYW1lZEZs
b3csIGNvbnRlbnRFbGVtZW50KTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGRvY3VtZW50KTsK
ICAgICBVTlVTRURfUEFSQU0obmFtZWRGbG93KTsKQEAgLTcyNywxMiArNzMwLDEyIEBAIGlubGlu
ZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkVW5yZWdpc3Rlck5hbWVkRmxvd0Nv
bnRlbnRFbGVtZW50KERvY3VtCiAjZW5kaWYKIH0KIAotaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjptb3VzZURpZE1vdmVPdmVyRWxlbWVudChQYWdlKiBwYWdlLCBjb25zdCBI
aXRUZXN0UmVzdWx0JiByZXN1bHQsIHVuc2lnbmVkIG1vZGlmaWVyRmxhZ3MpCitpbmxpbmUgdm9p
ZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Om1vdXNlRGlkTW92ZU92ZXJFbGVtZW50KFBhZ2Um
IHBhZ2UsIGNvbnN0IEhpdFRlc3RSZXN1bHQmIHJlc3VsdCwgdW5zaWduZWQgbW9kaWZpZXJGbGFn
cykKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZST05U
RU5EUyh2b2lkKCkpOwogICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5n
QWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvclBhZ2UocGFnZSkpCi0gICAgICAgIG1vdXNl
RGlkTW92ZU92ZXJFbGVtZW50SW1wbChpbnN0cnVtZW50aW5nQWdlbnRzLCByZXN1bHQsIG1vZGlm
aWVyRmxhZ3MpOworICAgICAgICBtb3VzZURpZE1vdmVPdmVyRWxlbWVudEltcGwoKmluc3RydW1l
bnRpbmdBZ2VudHMsIHJlc3VsdCwgbW9kaWZpZXJGbGFncyk7CiAjZWxzZQogICAgIFVOVVNFRF9Q
QVJBTShwYWdlKTsKICAgICBVTlVTRURfUEFSQU0ocmVzdWx0KTsKQEAgLTc0MCwxMiArNzQzLDEy
IEBAIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6bW91c2VEaWRNb3ZlT3Zl
ckVsZW1lbnQoUGFnZSogcGFnZSwgY29uc3QKICNlbmRpZgogfQogCi1pbmxpbmUgYm9vbCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmhhbmRsZVRvdWNoRXZlbnQoUGFnZSogcGFnZSwgTm9kZSog
bm9kZSkKK2lubGluZSBib29sIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aGFuZGxlVG91Y2hF
dmVudChQYWdlJiBwYWdlLCBOb2RlJiBub2RlKQogewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAg
ICAgRkFTVF9SRVRVUk5fSUZfTk9fRlJPTlRFTkRTKGZhbHNlKTsKICAgICBpZiAoSW5zdHJ1bWVu
dGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JQ
YWdlKHBhZ2UpKQotICAgICAgICByZXR1cm4gaGFuZGxlVG91Y2hFdmVudEltcGwoaW5zdHJ1bWVu
dGluZ0FnZW50cywgbm9kZSk7CisgICAgICAgIHJldHVybiBoYW5kbGVUb3VjaEV2ZW50SW1wbCgq
aW5zdHJ1bWVudGluZ0FnZW50cywgbm9kZSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShwYWdl
KTsKICAgICBVTlVTRURfUEFSQU0obm9kZSk7CkBAIC03NTMsMjQgKzc1NiwyNCBAQCBpbmxpbmUg
Ym9vbCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmhhbmRsZVRvdWNoRXZlbnQoUGFnZSogcGFn
ZSwgTm9kZSogbm9kZSkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWlubGluZSBib29sIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6aGFuZGxlTW91c2VQcmVzcyhQYWdlKiBwYWdlKQoraW5saW5l
IGJvb2wgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpoYW5kbGVNb3VzZVByZXNzKEZyYW1lJiBm
cmFtZSkKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZS
T05URU5EUyhmYWxzZSk7Ci0gICAgaWYgKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRp
bmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yUGFnZShwYWdlKSkKLSAgICAgICAgcmV0
dXJuIGhhbmRsZU1vdXNlUHJlc3NJbXBsKGluc3RydW1lbnRpbmdBZ2VudHMpOworICAgIGlmIChJ
bnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0Fn
ZW50c0ZvckZyYW1lKGZyYW1lKSkKKyAgICAgICAgcmV0dXJuIGhhbmRsZU1vdXNlUHJlc3NJbXBs
KCppbnN0cnVtZW50aW5nQWdlbnRzKTsKICNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHBhZ2UpOwor
ICAgIFVOVVNFRF9QQVJBTShmcmFtZSk7CiAjZW5kaWYKICAgICByZXR1cm4gZmFsc2U7CiB9CiAK
LWlubGluZSBib29sIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Zm9yY2VQc2V1ZG9TdGF0ZShF
bGVtZW50KiBlbGVtZW50LCBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NUeXBlIHBzZXVkb1N0YXRl
KQoraW5saW5lIGJvb2wgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpmb3JjZVBzZXVkb1N0YXRl
KEVsZW1lbnQmIGVsZW1lbnQsIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc1R5cGUgcHNldWRvU3Rh
dGUpCiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBGQVNUX1JFVFVSTl9JRl9OT19GUk9O
VEVORFMoZmFsc2UpOwotICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5n
QWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvckRvY3VtZW50KCZlbGVtZW50LT5kb2N1bWVu
dCgpKSkKLSAgICAgICAgcmV0dXJuIGZvcmNlUHNldWRvU3RhdGVJbXBsKGluc3RydW1lbnRpbmdB
Z2VudHMsIGVsZW1lbnQsIHBzZXVkb1N0YXRlKTsKKyAgICBpZiAoSW5zdHJ1bWVudGluZ0FnZW50
cyogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JEb2N1bWVudChl
bGVtZW50LmRvY3VtZW50KCkpKQorICAgICAgICByZXR1cm4gZm9yY2VQc2V1ZG9TdGF0ZUltcGwo
Kmluc3RydW1lbnRpbmdBZ2VudHMsIGVsZW1lbnQsIHBzZXVkb1N0YXRlKTsKICNlbHNlCiAgICAg
VU5VU0VEX1BBUkFNKGVsZW1lbnQpOwogICAgIFVOVVNFRF9QQVJBTShwc2V1ZG9TdGF0ZSk7CkBA
IC03NzgsMTIgKzc4MSwxMiBAQCBpbmxpbmUgYm9vbCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmZvcmNlUHNldWRvU3RhdGUoRWxlbWVudCogZWxlbWVudCwgQ1NTU2VsZQogICAgIHJldHVybiBm
YWxzZTsKIH0KIAotaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjaGFyYWN0
ZXJEYXRhTW9kaWZpZWQoRG9jdW1lbnQqIGRvY3VtZW50LCBDaGFyYWN0ZXJEYXRhKiBjaGFyYWN0
ZXJEYXRhKQoraW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjaGFyYWN0ZXJE
YXRhTW9kaWZpZWQoRG9jdW1lbnQmIGRvY3VtZW50LCBDaGFyYWN0ZXJEYXRhJiBjaGFyYWN0ZXJE
YXRhKQogewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgRkFTVF9SRVRVUk5fSUZfTk9fRlJP
TlRFTkRTKHZvaWQoKSk7CiAgICAgaWYgKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRp
bmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yRG9jdW1lbnQoZG9jdW1lbnQpKQotICAg
ICAgICBjaGFyYWN0ZXJEYXRhTW9kaWZpZWRJbXBsKGluc3RydW1lbnRpbmdBZ2VudHMsIGNoYXJh
Y3RlckRhdGEpOworICAgICAgICBjaGFyYWN0ZXJEYXRhTW9kaWZpZWRJbXBsKCppbnN0cnVtZW50
aW5nQWdlbnRzLCBjaGFyYWN0ZXJEYXRhKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGRvY3Vt
ZW50KTsKICAgICBVTlVTRURfUEFSQU0oY2hhcmFjdGVyRGF0YSk7CkBAIC03OTUsNyArNzk4LDcg
QEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsU2VuZFhNTEh0dHBS
ZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnQKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIEZB
U1RfUkVUVVJOX0lGX05PX0ZST05URU5EUyh2b2lkKCkpOwogICAgIGlmIChJbnN0cnVtZW50aW5n
QWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvckNvbnRl
eHQoY29udGV4dCkpCi0gICAgICAgIHdpbGxTZW5kWE1MSHR0cFJlcXVlc3RJbXBsKGluc3RydW1l
bnRpbmdBZ2VudHMsIHVybCk7CisgICAgICAgIHdpbGxTZW5kWE1MSHR0cFJlcXVlc3RJbXBsKCpp
bnN0cnVtZW50aW5nQWdlbnRzLCB1cmwpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oY29udGV4
dCk7CiAgICAgVU5VU0VEX1BBUkFNKHVybCk7CkBAIC04MDcsNyArODEwLDcgQEAgaW5saW5lIHZv
aWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRTY2hlZHVsZVJlc291cmNlUmVxdWVzdChE
b2N1bWVudCogZG9jdW0KICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIEZBU1RfUkVUVVJOX0lG
X05PX0ZST05URU5EUyh2b2lkKCkpOwogICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0
cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvckRvY3VtZW50KGRvY3VtZW50
KSkKLSAgICAgICAgZGlkU2NoZWR1bGVSZXNvdXJjZVJlcXVlc3RJbXBsKGluc3RydW1lbnRpbmdB
Z2VudHMsIHVybCwgZG9jdW1lbnQtPmZyYW1lKCkpOworICAgICAgICBkaWRTY2hlZHVsZVJlc291
cmNlUmVxdWVzdEltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMsIHVybCwgZG9jdW1lbnQtPmZyYW1l
KCkpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZG9jdW1lbnQpOwogICAgIFVOVVNFRF9QQVJB
TSh1cmwpOwpAQCAtODE5LDcgKzgyMiw3IEBAIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6ZGlkSW5zdGFsbFRpbWVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvCiAjaWYg
RU5BQkxFKElOU1BFQ1RPUikKICAgICBGQVNUX1JFVFVSTl9JRl9OT19GUk9OVEVORFModm9pZCgp
KTsKICAgICBpZiAoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGlu
c3RydW1lbnRpbmdBZ2VudHNGb3JDb250ZXh0KGNvbnRleHQpKQotICAgICAgICBkaWRJbnN0YWxs
VGltZXJJbXBsKGluc3RydW1lbnRpbmdBZ2VudHMsIHRpbWVySWQsIHRpbWVvdXQsIHNpbmdsZVNo
b3QsIGNvbnRleHQpOworICAgICAgICBkaWRJbnN0YWxsVGltZXJJbXBsKCppbnN0cnVtZW50aW5n
QWdlbnRzLCB0aW1lcklkLCB0aW1lb3V0LCBzaW5nbGVTaG90LCBjb250ZXh0KTsKICNlbHNlCiAg
ICAgVU5VU0VEX1BBUkFNKGNvbnRleHQpOwogICAgIFVOVVNFRF9QQVJBTSh0aW1lcklkKTsKQEAg
LTgzMyw3ICs4MzYsNyBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRp
ZFJlbW92ZVRpbWVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbgogI2lmIEVOQUJMRShJTlNQ
RUNUT1IpCiAgICAgRkFTVF9SRVRVUk5fSUZfTk9fRlJPTlRFTkRTKHZvaWQoKSk7CiAgICAgaWYg
KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5n
QWdlbnRzRm9yQ29udGV4dChjb250ZXh0KSkKLSAgICAgICAgZGlkUmVtb3ZlVGltZXJJbXBsKGlu
c3RydW1lbnRpbmdBZ2VudHMsIHRpbWVySWQsIGNvbnRleHQpOworICAgICAgICBkaWRSZW1vdmVU
aW1lckltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMsIHRpbWVySWQsIGNvbnRleHQpOwogI2Vsc2UK
ICAgICBVTlVTRURfUEFSQU0oY29udGV4dCk7CiAgICAgVU5VU0VEX1BBUkFNKHRpbWVySWQpOwpA
QCAtODQ1LDcgKzg0OCw3IEBAIGlubGluZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsQ2FsbEZ1bmN0aW9uCiAjaWYgRU5BQkxFKElO
U1BFQ1RPUikKICAgICBGQVNUX1JFVFVSTl9JRl9OT19GUk9OVEVORFMoSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uQ29va2llKCkpOwogICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVt
ZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvckNvbnRleHQoY29udGV4dCkpCi0g
ICAgICAgIHJldHVybiB3aWxsQ2FsbEZ1bmN0aW9uSW1wbChpbnN0cnVtZW50aW5nQWdlbnRzLCBz
Y3JpcHROYW1lLCBzY3JpcHRMaW5lLCBjb250ZXh0KTsKKyAgICAgICAgcmV0dXJuIHdpbGxDYWxs
RnVuY3Rpb25JbXBsKCppbnN0cnVtZW50aW5nQWdlbnRzLCBzY3JpcHROYW1lLCBzY3JpcHRMaW5l
LCBjb250ZXh0KTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGNvbnRleHQpOwogICAgIFVOVVNF
RF9QQVJBTShzY3JpcHROYW1lKTsKQEAgLTg2NywxMiArODcwLDEyIEBAIGlubGluZSB2b2lkIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ2FsbEZ1bmN0aW9uKGNvbnN0IEluc3BlY3Rvcklu
c3RydW1lbnRhCiAjZW5kaWYKIH0KIAotaW5saW5lIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNv
b2tpZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxEaXNwYXRjaFhIUlJlYWR5U3RhdGVD
aGFuZ2VFdmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBYTUxIdHRwUmVxdWVz
dCogcmVxdWVzdCkKK2lubGluZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRGlzcGF0Y2hYSFJSZWFkeVN0YXRlQ2hhbmdlRXZlbnQo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgWE1MSHR0cFJlcXVlc3QmIHJlcXVlc3Qp
CiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBGQVNUX1JFVFVSTl9JRl9OT19GUk9OVEVO
RFMoSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llKCkpOwogICAgIGlmIChJbnN0cnVtZW50
aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvckNv
bnRleHQoY29udGV4dCkpCi0gICAgICAgIHJldHVybiB3aWxsRGlzcGF0Y2hYSFJSZWFkeVN0YXRl
Q2hhbmdlRXZlbnRJbXBsKGluc3RydW1lbnRpbmdBZ2VudHMsIHJlcXVlc3QsIGNvbnRleHQpOwor
ICAgICAgICByZXR1cm4gd2lsbERpc3BhdGNoWEhSUmVhZHlTdGF0ZUNoYW5nZUV2ZW50SW1wbCgq
aW5zdHJ1bWVudGluZ0FnZW50cywgcmVxdWVzdCwgY29udGV4dCk7CiAjZWxzZQogICAgIFVOVVNF
RF9QQVJBTShjb250ZXh0KTsKICAgICBVTlVTRURfUEFSQU0ocmVxdWVzdCk7CkBAIC04OTEsMTIg
Kzg5NCwxMiBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZERpc3Bh
dGNoWEhSUmVhZHlTdGF0ZUNoYW5nZUV2ZW50KGNvbnN0CiAjZW5kaWYKIH0KIAotaW5saW5lIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Ondp
bGxEaXNwYXRjaEV2ZW50KERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgRXZlbnQmIGV2ZW50LCBi
b29sIGhhc0V2ZW50TGlzdGVuZXJzKQoraW5saW5lIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNv
b2tpZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxEaXNwYXRjaEV2ZW50KERvY3VtZW50
JiBkb2N1bWVudCwgY29uc3QgRXZlbnQmIGV2ZW50LCBib29sIGhhc0V2ZW50TGlzdGVuZXJzKQog
ewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgRkFTVF9SRVRVUk5fSUZfTk9fRlJPTlRFTkRT
KEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSgpKTsKICAgICBpZiAoSW5zdHJ1bWVudGlu
Z0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JEb2N1
bWVudChkb2N1bWVudCkpCi0gICAgICAgIHJldHVybiB3aWxsRGlzcGF0Y2hFdmVudEltcGwoaW5z
dHJ1bWVudGluZ0FnZW50cywgZXZlbnQsIGhhc0V2ZW50TGlzdGVuZXJzLCBkb2N1bWVudCk7Cisg
ICAgICAgIHJldHVybiB3aWxsRGlzcGF0Y2hFdmVudEltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMs
IGRvY3VtZW50LCBldmVudCwgaGFzRXZlbnRMaXN0ZW5lcnMpOwogI2Vsc2UKICAgICBVTlVTRURf
UEFSQU0oZG9jdW1lbnQpOwogICAgIFVOVVNFRF9QQVJBTShldmVudCk7CkBAIC05MTYsMTIgKzkx
OSwxMiBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZERpc3BhdGNo
RXZlbnQoY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudAogI2VuZGlmCiB9CiAKLWlubGluZSBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxs
SGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgRXZlbnQqIGV2ZW50
KQoraW5saW5lIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OndpbGxIYW5kbGVFdmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
LCBjb25zdCBFdmVudCYgZXZlbnQpCiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBGQVNU
X1JFVFVSTl9JRl9OT19GUk9OVEVORFMoSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llKCkp
OwogICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5z
dHJ1bWVudGluZ0FnZW50c0ZvckNvbnRleHQoY29udGV4dCkpCi0gICAgICAgIHJldHVybiB3aWxs
SGFuZGxlRXZlbnRJbXBsKGluc3RydW1lbnRpbmdBZ2VudHMsIGV2ZW50KTsKKyAgICAgICAgcmV0
dXJuIHdpbGxIYW5kbGVFdmVudEltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMsIGV2ZW50KTsKICNl
bHNlCiAgICAgVU5VU0VEX1BBUkFNKGNvbnRleHQpOwogICAgIFVOVVNFRF9QQVJBTShldmVudCk7
CkBAIC05NDAsMTIgKzk0MywxMiBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmRpZEhhbmRsZUV2ZW50KGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdAogI2VuZGlmCiB9
CiAKLWlubGluZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjp3aWxsRGlzcGF0Y2hFdmVudE9uV2luZG93KEZyYW1lKiBmcmFtZSwgY29uc3Qg
RXZlbnQmIGV2ZW50LCBET01XaW5kb3cqIHdpbmRvdykKK2lubGluZSBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb25Db29raWUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRGlzcGF0Y2hFdmVu
dE9uV2luZG93KEZyYW1lKiBmcmFtZSwgY29uc3QgRXZlbnQmIGV2ZW50LCBET01XaW5kb3cmIHdp
bmRvdykKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZS
T05URU5EUyhJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUoKSk7CiAgICAgaWYgKEluc3Ry
dW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRz
Rm9yRnJhbWUoZnJhbWUpKQotICAgICAgICByZXR1cm4gd2lsbERpc3BhdGNoRXZlbnRPbldpbmRv
d0ltcGwoaW5zdHJ1bWVudGluZ0FnZW50cywgZXZlbnQsIHdpbmRvdyk7CisgICAgICAgIHJldHVy
biB3aWxsRGlzcGF0Y2hFdmVudE9uV2luZG93SW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywgZXZl
bnQsIHdpbmRvdyk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShmcmFtZSk7CiAgICAgVU5VU0VE
X1BBUkFNKGV2ZW50KTsKQEAgLTk2NSwxMiArOTY4LDEyIEBAIGlubGluZSB2b2lkIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6ZGlkRGlzcGF0Y2hFdmVudE9uV2luZG93KGNvbnN0IEluc3BlY3Rv
ckluCiAjZW5kaWYKIH0KIAotaW5saW5lIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxFdmFsdWF0ZVNjcmlwdChGcmFtZSogZnJhbWUs
IGNvbnN0IFN0cmluZyYgdXJsLCBpbnQgbGluZU51bWJlcikKK2lubGluZSBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb25Db29raWUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRXZhbHVhdGVT
Y3JpcHQoRnJhbWUmIGZyYW1lLCBjb25zdCBTdHJpbmcmIHVybCwgaW50IGxpbmVOdW1iZXIpCiB7
CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBGQVNUX1JFVFVSTl9JRl9OT19GUk9OVEVORFMo
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llKCkpOwogICAgIGlmIChJbnN0cnVtZW50aW5n
QWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvckZyYW1l
KGZyYW1lKSkKLSAgICAgICAgcmV0dXJuIHdpbGxFdmFsdWF0ZVNjcmlwdEltcGwoaW5zdHJ1bWVu
dGluZ0FnZW50cywgdXJsLCBsaW5lTnVtYmVyLCBmcmFtZSk7CisgICAgICAgIHJldHVybiB3aWxs
RXZhbHVhdGVTY3JpcHRJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRzLCBmcmFtZSwgdXJsLCBsaW5l
TnVtYmVyKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGZyYW1lKTsKICAgICBVTlVTRURfUEFS
QU0odXJsKTsKQEAgLTk3OSw3ICs5ODIsNyBAQCBpbmxpbmUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uQ29va2llIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEV2YWx1YXRlU2NyaQogICAg
IHJldHVybiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUoKTsKIH0KIAotaW5saW5lIHZv
aWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRFdmFsdWF0ZVNjcmlwdChjb25zdCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUmIGNvb2tpZSwgRnJhbWUqIGZyYW1lKQoraW5saW5l
IHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRFdmFsdWF0ZVNjcmlwdChjb25zdCBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUmIGNvb2tpZSwgRnJhbWUmIGZyYW1lKQogewog
I2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgRkFTVF9SRVRVUk5fSUZfTk9fRlJPTlRFTkRTKHZv
aWQoKSk7CkBAIC05OTEsMzcgKzk5NCwyNCBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmRpZEV2YWx1YXRlU2NyaXB0KGNvbnN0IEluc3BlY3Rvckluc3RydW1lbgogI2Vu
ZGlmCiB9CiAKLWlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c2NyaXB0c0Vu
YWJsZWQoUGFnZSogcGFnZSwgYm9vbCBpc0VuYWJsZWQpCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OnNjcmlwdHNFbmFibGVkKFBhZ2UmIHBhZ2UsIGJvb2wgaXNFbmFibGVk
KQogewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgRkFTVF9SRVRVUk5fSUZfTk9fRlJPTlRF
TkRTKHZvaWQoKSk7CiAgICAgaWYgKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdB
Z2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yUGFnZShwYWdlKSkKLSAgICAgICAgcmV0dXJu
IHNjcmlwdHNFbmFibGVkSW1wbChpbnN0cnVtZW50aW5nQWdlbnRzLCBpc0VuYWJsZWQpOworICAg
ICAgICByZXR1cm4gc2NyaXB0c0VuYWJsZWRJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRzLCBpc0Vu
YWJsZWQpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0ocGFnZSk7CiAgICAgVU5VU0VEX1BBUkFN
KGlzRW5hYmxlZCk7CiAjZW5kaWYKIH0KIAotaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpkaWRDcmVhdGVJc29sYXRlZENvbnRleHQoRnJhbWUqIGZyYW1lLCBKU0M6OkV4ZWNT
dGF0ZSogc2NyaXB0U3RhdGUsIFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4pCi17Ci0jaWYgRU5BQkxF
KElOU1BFQ1RPUikKLSAgICBGQVNUX1JFVFVSTl9JRl9OT19GUk9OVEVORFModm9pZCgpKTsKLSAg
ICBpZiAoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1l
bnRpbmdBZ2VudHNGb3JGcmFtZShmcmFtZSkpCi0gICAgICAgIHJldHVybiBkaWRDcmVhdGVJc29s
YXRlZENvbnRleHRJbXBsKGluc3RydW1lbnRpbmdBZ2VudHMsIGZyYW1lLCBzY3JpcHRTdGF0ZSwg
b3JpZ2luKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGZyYW1lKTsKLSAgICBVTlVTRURfUEFS
QU0oc2NyaXB0U3RhdGUpOwotICAgIFVOVVNFRF9QQVJBTShvcmlnaW4pOwotI2VuZGlmCi19Ci0K
IGlubGluZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjp3aWxsRmlyZVRpbWVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGlu
dCB0aW1lcklkKQogewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgRkFTVF9SRVRVUk5fSUZf
Tk9fRlJPTlRFTkRTKEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSgpKTsKICAgICBpZiAo
SW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdB
Z2VudHNGb3JDb250ZXh0KGNvbnRleHQpKQotICAgICAgICByZXR1cm4gd2lsbEZpcmVUaW1lcklt
cGwoaW5zdHJ1bWVudGluZ0FnZW50cywgdGltZXJJZCwgY29udGV4dCk7CisgICAgICAgIHJldHVy
biB3aWxsRmlyZVRpbWVySW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywgdGltZXJJZCwgY29udGV4
dCk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShjb250ZXh0KTsKICAgICBVTlVTRURfUEFSQU0o
dGltZXJJZCk7CkBAIC0xMDQwLDIzICsxMDMwLDIzIEBAIGlubGluZSB2b2lkIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6ZGlkRmlyZVRpbWVyKGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlv
CiAjZW5kaWYKIH0KIAotaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRJ
bnZhbGlkYXRlTGF5b3V0KEZyYW1lKiBmcmFtZSkKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZGlkSW52YWxpZGF0ZUxheW91dChGcmFtZSYgZnJhbWUpCiB7CiAjaWYgRU5B
QkxFKElOU1BFQ1RPUikKICAgICBGQVNUX1JFVFVSTl9JRl9OT19GUk9OVEVORFModm9pZCgpKTsK
ICAgICBpZiAoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3Ry
dW1lbnRpbmdBZ2VudHNGb3JGcmFtZShmcmFtZSkpCi0gICAgICAgIGRpZEludmFsaWRhdGVMYXlv
dXRJbXBsKGluc3RydW1lbnRpbmdBZ2VudHMsIGZyYW1lKTsKKyAgICAgICAgZGlkSW52YWxpZGF0
ZUxheW91dEltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMsIGZyYW1lKTsKICNlbHNlCiAgICAgVU5V
U0VEX1BBUkFNKGZyYW1lKTsKICNlbmRpZgogfQogCi1pbmxpbmUgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uQ29va2llIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbExheW91dChGcmFtZSog
ZnJhbWUpCitpbmxpbmUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6d2lsbExheW91dChGcmFtZSYgZnJhbWUpCiB7CiAjaWYgRU5BQkxFKElO
U1BFQ1RPUikKICAgICBGQVNUX1JFVFVSTl9JRl9OT19GUk9OVEVORFMoSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uQ29va2llKCkpOwogICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVt
ZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvckZyYW1lKGZyYW1lKSkKLSAgICAg
ICAgcmV0dXJuIHdpbGxMYXlvdXRJbXBsKGluc3RydW1lbnRpbmdBZ2VudHMsIGZyYW1lKTsKKyAg
ICAgICAgcmV0dXJuIHdpbGxMYXlvdXRJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRzLCBmcmFtZSk7
CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShmcmFtZSk7CiAjZW5kaWYKQEAgLTEwNzUsMjMgKzEw
NjUsMjMgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRMYXlvdXQo
Y29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ28KICNlbmRpZgogfQogCi1pbmxpbmUgdm9p
ZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFNjcm9sbChQYWdlKiBwYWdlKQoraW5saW5l
IHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRTY3JvbGwoUGFnZSYgcGFnZSkKIHsK
ICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZST05URU5EUyh2
b2lkKCkpOwogICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRz
ID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvclBhZ2UocGFnZSkpCi0gICAgICAgIGRpZFNjcm9sbElt
cGwoaW5zdHJ1bWVudGluZ0FnZW50cyk7CisgICAgICAgIGRpZFNjcm9sbEltcGwoKmluc3RydW1l
bnRpbmdBZ2VudHMpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0ocGFnZSk7CiAjZW5kaWYKIH0K
IAotaW5saW5lIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OndpbGxEaXNwYXRjaFhIUkxvYWRFdmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBYTUxIdHRwUmVxdWVzdCogcmVxdWVzdCkKK2lubGluZSBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb25Db29raWUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRGlzcGF0Y2hY
SFJMb2FkRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgWE1MSHR0cFJlcXVl
c3QmIHJlcXVlc3QpCiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBGQVNUX1JFVFVSTl9J
Rl9OT19GUk9OVEVORFMoSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llKCkpOwogICAgIGlm
IChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGlu
Z0FnZW50c0ZvckNvbnRleHQoY29udGV4dCkpCi0gICAgICAgIHJldHVybiB3aWxsRGlzcGF0Y2hY
SFJMb2FkRXZlbnRJbXBsKGluc3RydW1lbnRpbmdBZ2VudHMsIHJlcXVlc3QsIGNvbnRleHQpOwor
ICAgICAgICByZXR1cm4gd2lsbERpc3BhdGNoWEhSTG9hZEV2ZW50SW1wbCgqaW5zdHJ1bWVudGlu
Z0FnZW50cywgcmVxdWVzdCwgY29udGV4dCk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShjb250
ZXh0KTsKICAgICBVTlVTRURfUEFSQU0ocmVxdWVzdCk7CkBAIC0xMTE1LDcgKzExMDUsNyBAQCBp
bmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxQYWludChSZW5kZXJPYmpl
Y3QqIHJlbmRlcmVyKQogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgRkFTVF9SRVRVUk5fSUZf
Tk9fRlJPTlRFTkRTKHZvaWQoKSk7CiAgICAgaWYgKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3Ry
dW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yUmVuZGVyZXIocmVuZGVyZXIp
KQotICAgICAgICByZXR1cm4gd2lsbFBhaW50SW1wbChpbnN0cnVtZW50aW5nQWdlbnRzLCByZW5k
ZXJlcik7CisgICAgICAgIHJldHVybiB3aWxsUGFpbnRJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRz
LCByZW5kZXJlcik7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShyZW5kZXJlcik7CiAjZW5kaWYK
QEAgLTExMjYsNDEgKzExMTYsNDEgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpkaWRQYWludChSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBjb25zdCBMYXkKICNpZiBFTkFC
TEUoSU5TUEVDVE9SKQogICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZST05URU5EUyh2b2lkKCkpOwog
ICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1
bWVudGluZ0FnZW50c0ZvclJlbmRlcmVyKHJlbmRlcmVyKSkKLSAgICAgICAgZGlkUGFpbnRJbXBs
KGluc3RydW1lbnRpbmdBZ2VudHMsIHJlbmRlcmVyLCByZWN0KTsKKyAgICAgICAgZGlkUGFpbnRJ
bXBsKCppbnN0cnVtZW50aW5nQWdlbnRzLCByZW5kZXJlciwgcmVjdCk7CiAjZWxzZQogICAgIFVO
VVNFRF9QQVJBTShyZW5kZXJlcik7CiAgICAgVU5VU0VEX1BBUkFNKHJlY3QpOwogI2VuZGlmCiB9
CiAKLWlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFNjcm9sbExheWVy
KEZyYW1lKiBmcmFtZSkKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2ls
bFNjcm9sbExheWVyKEZyYW1lJiBmcmFtZSkKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAg
IEZBU1RfUkVUVVJOX0lGX05PX0ZST05URU5EUyh2b2lkKCkpOwogICAgIGlmIChJbnN0cnVtZW50
aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvckZy
YW1lKGZyYW1lKSkKLSAgICAgICAgd2lsbFNjcm9sbExheWVySW1wbChpbnN0cnVtZW50aW5nQWdl
bnRzLCBmcmFtZSk7CisgICAgICAgIHdpbGxTY3JvbGxMYXllckltcGwoKmluc3RydW1lbnRpbmdB
Z2VudHMsIGZyYW1lKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGZyYW1lKTsKICNlbmRpZgog
fQogCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFNjcm9sbExheWVy
KEZyYW1lKiBmcmFtZSkKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlk
U2Nyb2xsTGF5ZXIoRnJhbWUmIGZyYW1lKQogewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAg
RkFTVF9SRVRVUk5fSUZfTk9fRlJPTlRFTkRTKHZvaWQoKSk7CiAgICAgaWYgKEluc3RydW1lbnRp
bmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yRnJh
bWUoZnJhbWUpKQotICAgICAgICBkaWRTY3JvbGxMYXllckltcGwoaW5zdHJ1bWVudGluZ0FnZW50
cyk7CisgICAgICAgIGRpZFNjcm9sbExheWVySW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cyk7CiAj
ZWxzZQogICAgIFVOVVNFRF9QQVJBTShmcmFtZSk7CiAjZW5kaWYKIH0KIAotaW5saW5lIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxS
ZWNhbGN1bGF0ZVN0eWxlKERvY3VtZW50KiBkb2N1bWVudCkKK2lubGluZSBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb25Db29raWUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUmVjYWxjdWxh
dGVTdHlsZShEb2N1bWVudCYgZG9jdW1lbnQpCiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAg
ICBGQVNUX1JFVFVSTl9JRl9OT19GUk9OVEVORFMoSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29v
a2llKCkpOwogICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRz
ID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvckRvY3VtZW50KGRvY3VtZW50KSkKLSAgICAgICAgcmV0
dXJuIHdpbGxSZWNhbGN1bGF0ZVN0eWxlSW1wbChpbnN0cnVtZW50aW5nQWdlbnRzLCBkb2N1bWVu
dC0+ZnJhbWUoKSk7CisgICAgICAgIHJldHVybiB3aWxsUmVjYWxjdWxhdGVTdHlsZUltcGwoKmlu
c3RydW1lbnRpbmdBZ2VudHMsIGRvY3VtZW50KTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGRv
Y3VtZW50KTsKICNlbmRpZgpAQCAtMTE3OCwyMyArMTE2OCwyMyBAQCBpbmxpbmUgdm9pZCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2FsY3VsYXRlU3R5bGUoY29uc3QgSW5zcGVjdG9y
SW5zdHJ1bQogI2VuZGlmCiB9CiAKLWlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6ZGlkU2NoZWR1bGVTdHlsZVJlY2FsY3VsYXRpb24oRG9jdW1lbnQqIGRvY3VtZW50KQoraW5s
aW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRTY2hlZHVsZVN0eWxlUmVjYWxj
dWxhdGlvbihEb2N1bWVudCYgZG9jdW1lbnQpCiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAg
ICBGQVNUX1JFVFVSTl9JRl9OT19GUk9OVEVORFModm9pZCgpKTsKICAgICBpZiAoSW5zdHJ1bWVu
dGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JE
b2N1bWVudChkb2N1bWVudCkpCi0gICAgICAgIGRpZFNjaGVkdWxlU3R5bGVSZWNhbGN1bGF0aW9u
SW1wbChpbnN0cnVtZW50aW5nQWdlbnRzLCBkb2N1bWVudCk7CisgICAgICAgIGRpZFNjaGVkdWxl
U3R5bGVSZWNhbGN1bGF0aW9uSW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywgZG9jdW1lbnQpOwog
I2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZG9jdW1lbnQpOwogI2VuZGlmCiB9CiAKLWlubGluZSB2
b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6YXBwbHlFbXVsYXRlZE1lZGlhKEZyYW1lKiBm
cmFtZSwgU3RyaW5nKiBtZWRpYSkKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6YXBwbHlFbXVsYXRlZE1lZGlhKEZyYW1lJiBmcmFtZSwgU3RyaW5nJiBtZWRpYSkKIHsKICNp
ZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZST05URU5EUyh2b2lk
KCkpOwogICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0g
aW5zdHJ1bWVudGluZ0FnZW50c0ZvckZyYW1lKGZyYW1lKSkKLSAgICAgICAgYXBwbHlFbXVsYXRl
ZE1lZGlhSW1wbChpbnN0cnVtZW50aW5nQWdlbnRzLCBtZWRpYSk7CisgICAgICAgIGFwcGx5RW11
bGF0ZWRNZWRpYUltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMsIG1lZGlhKTsKICNlbHNlCiAgICAg
VU5VU0VEX1BBUkFNKGZyYW1lKTsKICAgICBVTlVTRURfUEFSQU0obWVkaWEpOwpAQCAtMTIwNSw3
ICsxMTk1LDcgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsU2Vu
ZFJlcXVlc3QoRnJhbWUqIGZyYW1lLCB1bnNpZ25lZCBsb24KIHsKICNpZiBFTkFCTEUoSU5TUEVD
VE9SKQogICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0g
aW5zdHJ1bWVudGluZ0FnZW50c0ZvckZyYW1lKGZyYW1lKSkKLSAgICAgICAgd2lsbFNlbmRSZXF1
ZXN0SW1wbChpbnN0cnVtZW50aW5nQWdlbnRzLCBpZGVudGlmaWVyLCBsb2FkZXIsIHJlcXVlc3Qs
IHJlZGlyZWN0UmVzcG9uc2UpOworICAgICAgICB3aWxsU2VuZFJlcXVlc3RJbXBsKCppbnN0cnVt
ZW50aW5nQWdlbnRzLCBpZGVudGlmaWVyLCBsb2FkZXIsIHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9u
c2UpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZnJhbWUpOwogICAgIFVOVVNFRF9QQVJBTShp
ZGVudGlmaWVyKTsKQEAgLTEyMTksNyArMTIwOSw3IEBAIGlubGluZSB2b2lkIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6Y29udGludWVBZnRlclBpbmdMb2FkZXIoRnJhbWUmIGZyYW1lLCB1bnNp
CiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBpZiAoSW5zdHJ1bWVudGluZ0FnZW50cyog
aW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JGcmFtZSgmZnJhbWUp
KQotICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNvbnRpbnVlQWZ0ZXJQaW5nTG9h
ZGVySW1wbChpbnN0cnVtZW50aW5nQWdlbnRzLCBpZGVudGlmaWVyLCBsb2FkZXIsIHJlcXVlc3Qs
IHJlc3BvbnNlKTsKKyAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjb250aW51ZUFm
dGVyUGluZ0xvYWRlckltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMsIGlkZW50aWZpZXIsIGxvYWRl
ciwgcmVxdWVzdCwgcmVzcG9uc2UpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZnJhbWUpOwog
ICAgIFVOVVNFRF9QQVJBTShpZGVudGlmaWVyKTsKQEAgLTEyMjksMjIgKzEyMTksMjIgQEAgaW5s
aW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjb250aW51ZUFmdGVyUGluZ0xvYWRl
cihGcmFtZSYgZnJhbWUsIHVuc2kKICNlbmRpZgogfQogCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246Om1hcmtSZXNvdXJjZUFzQ2FjaGVkKFBhZ2UqIHBhZ2UsIHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllcikKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
bWFya1Jlc291cmNlQXNDYWNoZWQoUGFnZSYgcGFnZSwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
KQogewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgaWYgKEluc3RydW1lbnRpbmdBZ2VudHMq
IGluc3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yUGFnZShwYWdlKSkK
LSAgICAgICAgbWFya1Jlc291cmNlQXNDYWNoZWRJbXBsKGluc3RydW1lbnRpbmdBZ2VudHMsIGlk
ZW50aWZpZXIpOworICAgICAgICBtYXJrUmVzb3VyY2VBc0NhY2hlZEltcGwoKmluc3RydW1lbnRp
bmdBZ2VudHMsIGlkZW50aWZpZXIpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0ocGFnZSk7CiAg
ICAgVU5VU0VEX1BBUkFNKGlkZW50aWZpZXIpOwogI2VuZGlmCiB9CiAKLWlubGluZSB2b2lkIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkTG9hZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlKFBh
Z2UqIHBhZ2UsIERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIENhY2hlZFJlc291cmNlKiByZXNvdXJj
ZSkKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkTG9hZFJlc291cmNl
RnJvbU1lbW9yeUNhY2hlKFBhZ2UmIHBhZ2UsIERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIENhY2hl
ZFJlc291cmNlKiByZXNvdXJjZSkKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIGlmIChJ
bnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0Fn
ZW50c0ZvclBhZ2UocGFnZSkpCi0gICAgICAgIGRpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNo
ZUltcGwoaW5zdHJ1bWVudGluZ0FnZW50cywgbG9hZGVyLCByZXNvdXJjZSk7CisgICAgICAgIGRp
ZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZUltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMsIGxv
YWRlciwgcmVzb3VyY2UpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0ocGFnZSk7CiAgICAgVU5V
U0VEX1BBUkFNKGxvYWRlcik7CkBAIC0xMjU3LDcgKzEyNDcsNyBAQCBpbmxpbmUgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uQ29va2llIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFJlY2Vp
dmVSZXNvdQogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgRkFTVF9SRVRVUk5fSUZfTk9fRlJP
TlRFTkRTKEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSgpKTsKICAgICBpZiAoSW5zdHJ1
bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNG
b3JGcmFtZShmcmFtZSkpCi0gICAgICAgIHJldHVybiB3aWxsUmVjZWl2ZVJlc291cmNlRGF0YUlt
cGwoaW5zdHJ1bWVudGluZ0FnZW50cywgaWRlbnRpZmllciwgZnJhbWUsIGxlbmd0aCk7CisgICAg
ICAgIHJldHVybiB3aWxsUmVjZWl2ZVJlc291cmNlRGF0YUltcGwoKmluc3RydW1lbnRpbmdBZ2Vu
dHMsIGZyYW1lLCBpZGVudGlmaWVyLCBsZW5ndGgpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0o
ZnJhbWUpOwogICAgIFVOVVNFRF9QQVJBTShpZGVudGlmaWVyKTsKQEAgLTEyODEsNyArMTI3MSw3
IEBAIGlubGluZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjp3aWxsUmVjZWl2ZVJlc291CiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAg
ICBpZiAoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1l
bnRpbmdBZ2VudHNGb3JGcmFtZShmcmFtZSkpCi0gICAgICAgIHJldHVybiB3aWxsUmVjZWl2ZVJl
c291cmNlUmVzcG9uc2VJbXBsKGluc3RydW1lbnRpbmdBZ2VudHMsIGlkZW50aWZpZXIsIHJlc3Bv
bnNlLCBmcmFtZSk7CisgICAgICAgIHJldHVybiB3aWxsUmVjZWl2ZVJlc291cmNlUmVzcG9uc2VJ
bXBsKCppbnN0cnVtZW50aW5nQWdlbnRzLCBmcmFtZSwgaWRlbnRpZmllciwgcmVzcG9uc2UpOwog
I2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZnJhbWUpOwogICAgIFVOVVNFRF9QQVJBTShpZGVudGlm
aWVyKTsKQEAgLTEzMDUsNyArMTI5NSw3IEBAIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6ZGlkUmVjZWl2ZVJlc291cmNlUmVzcG9uc2UoY29uc3QgSW5zcGVjdG9yCiAjZW5k
aWYKIH0KIAotaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjb250aW51ZUFm
dGVyWEZyYW1lT3B0aW9uc0RlbmllZChGcmFtZSogZnJhbWUsIERvY3VtZW50TG9hZGVyKiBsb2Fk
ZXIsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcikK
K2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Y29udGludWVBZnRlclhGcmFt
ZU9wdGlvbnNEZW5pZWQoRnJhbWUqIGZyYW1lLCBEb2N1bWVudExvYWRlciYgbG9hZGVyLCB1bnNp
Z25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHIpCiB7CiAjaWYg
RU5BQkxFKElOU1BFQ1RPUikKICAgICBGQVNUX1JFVFVSTl9JRl9OT19GUk9OVEVORFModm9pZCgp
KTsKQEAgLTEzMTgsNyArMTMwOCw3IEBAIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6Y29udGludWVBZnRlclhGcmFtZU9wdGlvbnNEZW5pZWQoRnJhbWUqIGZyCiAjZW5kaWYK
IH0KIAotaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjb250aW51ZVdpdGhQ
b2xpY3lEb3dubG9hZChGcmFtZSogZnJhbWUsIERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIHVuc2ln
bmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcikKK2lubGluZSB2
b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Y29udGludWVXaXRoUG9saWN5RG93bmxvYWQo
RnJhbWUqIGZyYW1lLCBEb2N1bWVudExvYWRlciYgbG9hZGVyLCB1bnNpZ25lZCBsb25nIGlkZW50
aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHIpCiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RP
UikKICAgICBGQVNUX1JFVFVSTl9JRl9OT19GUk9OVEVORFModm9pZCgpKTsKQEAgLTEzMzEsNyAr
MTMyMSw3IEBAIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Y29udGludWVX
aXRoUG9saWN5RG93bmxvYWQoRnJhbWUqIGZyYW1lLCBECiAjZW5kaWYKIH0KIAotaW5saW5lIHZv
aWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjb250aW51ZVdpdGhQb2xpY3lJZ25vcmUoRnJh
bWUqIGZyYW1lLCBEb2N1bWVudExvYWRlciogbG9hZGVyLCB1bnNpZ25lZCBsb25nIGlkZW50aWZp
ZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHIpCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmNvbnRpbnVlV2l0aFBvbGljeUlnbm9yZShGcmFtZSogZnJhbWUsIERvY3Vt
ZW50TG9hZGVyJiBsb2FkZXIsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYgcikKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIEZBU1RfUkVUVVJO
X0lGX05PX0ZST05URU5EUyh2b2lkKCkpOwpAQCAtMTM0OCw3ICsxMzM4LDcgQEAgaW5saW5lIHZv
aWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0YShGcmFtZSogZnJhbWUs
IHVuc2lnbmVkIGxvbmcKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIGlmIChJbnN0cnVt
ZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0Zv
ckZyYW1lKGZyYW1lKSkKLSAgICAgICAgZGlkUmVjZWl2ZURhdGFJbXBsKGluc3RydW1lbnRpbmdB
Z2VudHMsIGlkZW50aWZpZXIsIGRhdGEsIGRhdGFMZW5ndGgsIGVuY29kZWREYXRhTGVuZ3RoKTsK
KyAgICAgICAgZGlkUmVjZWl2ZURhdGFJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRzLCBpZGVudGlm
aWVyLCBkYXRhLCBkYXRhTGVuZ3RoLCBlbmNvZGVkRGF0YUxlbmd0aCk7CiAjZWxzZQogICAgIFVO
VVNFRF9QQVJBTShmcmFtZSk7CiAgICAgVU5VU0VEX1BBUkFNKGlkZW50aWZpZXIpOwpAQCAtMTM2
Miw3ICsxMzUyLDcgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRG
aW5pc2hMb2FkaW5nKEZyYW1lKiBmcmFtZSwgRG9jdW1lbnRMb2EKIHsKICNpZiBFTkFCTEUoSU5T
UEVDVE9SKQogICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRz
ID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvckZyYW1lKGZyYW1lKSkKLSAgICAgICAgZGlkRmluaXNo
TG9hZGluZ0ltcGwoaW5zdHJ1bWVudGluZ0FnZW50cywgaWRlbnRpZmllciwgbG9hZGVyLCBmaW5p
c2hUaW1lKTsKKyAgICAgICAgZGlkRmluaXNoTG9hZGluZ0ltcGwoKmluc3RydW1lbnRpbmdBZ2Vu
dHMsIGlkZW50aWZpZXIsIGxvYWRlciwgZmluaXNoVGltZSk7CiAjZWxzZQogICAgIFVOVVNFRF9Q
QVJBTShmcmFtZSk7CiAgICAgVU5VU0VEX1BBUkFNKGxvYWRlcik7CkBAIC0xMzc1LDcgKzEzNjUs
NyBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZhaWxMb2FkaW5n
KEZyYW1lKiBmcmFtZSwgRG9jdW1lbnRMb2FkZQogewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAg
ICAgaWYgKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVt
ZW50aW5nQWdlbnRzRm9yRnJhbWUoZnJhbWUpKQotICAgICAgICBkaWRGYWlsTG9hZGluZ0ltcGwo
aW5zdHJ1bWVudGluZ0FnZW50cywgaWRlbnRpZmllciwgbG9hZGVyLCBlcnJvcik7CisgICAgICAg
IGRpZEZhaWxMb2FkaW5nSW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywgaWRlbnRpZmllciwgbG9h
ZGVyLCBlcnJvcik7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShmcmFtZSk7CiAgICAgVU5VU0VE
X1BBUkFNKGxvYWRlcik7CkBAIC0xMzg0LDEzICsxMzc0LDEzIEBAIGlubGluZSB2b2lkIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmFpbExvYWRpbmcoRnJhbWUqIGZyYW1lLCBEb2N1bWVu
dExvYWRlCiAjZW5kaWYKIH0KIAotaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Ojpkb2N1bWVudFRocmVhZGFibGVMb2FkZXJTdGFydGVkTG9hZGluZ0ZvckNsaWVudChTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIFRocmVh
ZGFibGVMb2FkZXJDbGllbnQqIGNsaWVudCkKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6ZG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyU3RhcnRlZExvYWRpbmdGb3JDbGllbnQo
RG9jdW1lbnQmIGRvY3VtZW50LCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIFRocmVhZGFibGVM
b2FkZXJDbGllbnQqIGNsaWVudCkKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIGlmIChJ
bnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0Fn
ZW50c0ZvckNvbnRleHQoY29udGV4dCkpCi0gICAgICAgIGRvY3VtZW50VGhyZWFkYWJsZUxvYWRl
clN0YXJ0ZWRMb2FkaW5nRm9yQ2xpZW50SW1wbChpbnN0cnVtZW50aW5nQWdlbnRzLCBpZGVudGlm
aWVyLCBjbGllbnQpOworICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5n
QWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvckRvY3VtZW50KGRvY3VtZW50KSkKKyAgICAg
ICAgZG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyU3RhcnRlZExvYWRpbmdGb3JDbGllbnRJbXBsKCpp
bnN0cnVtZW50aW5nQWdlbnRzLCBpZGVudGlmaWVyLCBjbGllbnQpOwogI2Vsc2UKLSAgICBVTlVT
RURfUEFSQU0oY29udGV4dCk7CisgICAgVU5VU0VEX1BBUkFNKGRvY3VtZW50KTsKICAgICBVTlVT
RURfUEFSQU0oaWRlbnRpZmllcik7CiAgICAgVU5VU0VEX1BBUkFNKGNsaWVudCk7CiAjZW5kaWYK
QEAgLTE0MDAsNyArMTM5MCw3IEBAIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6d2lsbExvYWRYSFIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4CiB7CiAjaWYgRU5B
QkxFKElOU1BFQ1RPUikKICAgICBpZiAoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGlu
Z0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JDb250ZXh0KGNvbnRleHQpKQotICAgICAg
ICB3aWxsTG9hZFhIUkltcGwoaW5zdHJ1bWVudGluZ0FnZW50cywgY2xpZW50LCBtZXRob2QsIHVy
bCwgYXN5bmMsIGZvcm1EYXRhLCBoZWFkZXJzLCBpbmNsdWRlQ3JlZGVudGlhbHMpOworICAgICAg
ICB3aWxsTG9hZFhIUkltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMsIGNsaWVudCwgbWV0aG9kLCB1
cmwsIGFzeW5jLCBmb3JtRGF0YSwgaGVhZGVycywgaW5jbHVkZUNyZWRlbnRpYWxzKTsKICNlbHNl
CiAgICAgVU5VU0VEX1BBUkFNKGNvbnRleHQpOwogICAgIFVOVVNFRF9QQVJBTShjbGllbnQpOwpA
QCAtMTQxNyw3ICsxNDA3LDcgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpkaWRGYWlsWEhSTG9hZGluZyhTY3JpcHRFeGVjdXRpb25Db250ZXh0KgogewogI2lmIEVOQUJM
RShJTlNQRUNUT1IpCiAgICAgaWYgKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdB
Z2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yQ29udGV4dChjb250ZXh0KSkKLSAgICAgICAg
ZGlkRmFpbFhIUkxvYWRpbmdJbXBsKGluc3RydW1lbnRpbmdBZ2VudHMsIGNsaWVudCk7CisgICAg
ICAgIGRpZEZhaWxYSFJMb2FkaW5nSW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywgY2xpZW50KTsK
ICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGNvbnRleHQpOwogICAgIFVOVVNFRF9QQVJBTShjbGll
bnQpOwpAQCAtMTQyOSw3ICsxNDE5LDcgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpkaWRGaW5pc2hYSFJMb2FkaW5nKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQKIHsKICNp
ZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVt
ZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvckNvbnRleHQoY29udGV4dCkpCi0g
ICAgICAgIGRpZEZpbmlzaFhIUkxvYWRpbmdJbXBsKGluc3RydW1lbnRpbmdBZ2VudHMsIGNsaWVu
dCwgaWRlbnRpZmllciwgc291cmNlU3RyaW5nLCB1cmwsIHNlbmRVUkwsIHNlbmRMaW5lTnVtYmVy
LCBzZW5kQ29sdW1uTnVtYmVyKTsKKyAgICAgICAgZGlkRmluaXNoWEhSTG9hZGluZ0ltcGwoKmlu
c3RydW1lbnRpbmdBZ2VudHMsIGNsaWVudCwgaWRlbnRpZmllciwgc291cmNlU3RyaW5nLCB1cmws
IHNlbmRVUkwsIHNlbmRMaW5lTnVtYmVyLCBzZW5kQ29sdW1uTnVtYmVyKTsKICNlbHNlCiAgICAg
VU5VU0VEX1BBUkFNKGNvbnRleHQpOwogICAgIFVOVVNFRF9QQVJBTShjbGllbnQpOwpAQCAtMTQ0
Niw3ICsxNDM2LDcgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRS
ZWNlaXZlWEhSUmVzcG9uc2UoU2NyaXB0RXhlY3V0aW9uQ29udGUKIHsKICNpZiBFTkFCTEUoSU5T
UEVDVE9SKQogICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRz
ID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvckNvbnRleHQoY29udGV4dCkpCi0gICAgICAgIGRpZFJl
Y2VpdmVYSFJSZXNwb25zZUltcGwoaW5zdHJ1bWVudGluZ0FnZW50cywgaWRlbnRpZmllcik7Cisg
ICAgICAgIGRpZFJlY2VpdmVYSFJSZXNwb25zZUltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMsIGlk
ZW50aWZpZXIpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oY29udGV4dCk7CiAgICAgVU5VU0VE
X1BBUkFNKGlkZW50aWZpZXIpOwpAQCAtMTQ1Nyw3ICsxNDQ3LDcgQEAgaW5saW5lIHZvaWQgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsTG9hZFhIUlN5bmNocm9ub3VzbHkoU2NyaXB0RXhl
Y3V0aW9uQ28KIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIGlmIChJbnN0cnVtZW50aW5n
QWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvckNvbnRl
eHQoY29udGV4dCkpCi0gICAgICAgIHdpbGxMb2FkWEhSU3luY2hyb25vdXNseUltcGwoaW5zdHJ1
bWVudGluZ0FnZW50cyk7CisgICAgICAgIHdpbGxMb2FkWEhSU3luY2hyb25vdXNseUltcGwoKmlu
c3RydW1lbnRpbmdBZ2VudHMpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oY29udGV4dCk7CiAj
ZW5kaWYKQEAgLTE0NjcsNyArMTQ1Nyw3IEBAIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6ZGlkTG9hZFhIUlN5bmNocm9ub3VzbHkoU2NyaXB0RXhlY3V0aW9uQ29uCiB7CiAj
aWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBpZiAoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1
bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JDb250ZXh0KGNvbnRleHQpKQot
ICAgICAgICBkaWRMb2FkWEhSU3luY2hyb25vdXNseUltcGwoaW5zdHJ1bWVudGluZ0FnZW50cyk7
CisgICAgICAgIGRpZExvYWRYSFJTeW5jaHJvbm91c2x5SW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50
cyk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShjb250ZXh0KTsKICNlbmRpZgpAQCAtMTQ3Nyw3
ICsxNDY3LDcgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzY3JpcHRJ
bXBvcnRlZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb24KIHsKICNpZiBFTkFCTEUoSU5TUEVD
VE9SKQogICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0g
aW5zdHJ1bWVudGluZ0FnZW50c0ZvckNvbnRleHQoY29udGV4dCkpCi0gICAgICAgIHNjcmlwdElt
cG9ydGVkSW1wbChpbnN0cnVtZW50aW5nQWdlbnRzLCBpZGVudGlmaWVyLCBzb3VyY2VTdHJpbmcp
OworICAgICAgICBzY3JpcHRJbXBvcnRlZEltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMsIGlkZW50
aWZpZXIsIHNvdXJjZVN0cmluZyk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShjb250ZXh0KTsK
ICAgICBVTlVTRURfUEFSQU0oaWRlbnRpZmllcik7CkBAIC0xNDg5LDcgKzE0NzksNyBAQCBpbmxp
bmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNjcmlwdEV4ZWN1dGlvbkJsb2NrZWRC
eUNTUChTY3JpcHRFeGVjdXRpbwogewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgaWYgKElu
c3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdl
bnRzRm9yQ29udGV4dChjb250ZXh0KSkKLSAgICAgICAgc2NyaXB0RXhlY3V0aW9uQmxvY2tlZEJ5
Q1NQSW1wbChpbnN0cnVtZW50aW5nQWdlbnRzLCBkaXJlY3RpdmVUZXh0KTsKKyAgICAgICAgc2Ny
aXB0RXhlY3V0aW9uQmxvY2tlZEJ5Q1NQSW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywgZGlyZWN0
aXZlVGV4dCk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShjb250ZXh0KTsKICAgICBVTlVTRURf
UEFSQU0oZGlyZWN0aXZlVGV4dCk7CkBAIC0xNTAwLDE4ICsxNDkwLDE4IEBAIGlubGluZSB2b2lk
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZVNjcmlwdFJlc3BvbnNlKFNjcmlw
dEV4ZWN1dGlvbkNvCiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBpZiAoSW5zdHJ1bWVu
dGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JD
b250ZXh0KGNvbnRleHQpKQotICAgICAgICBkaWRSZWNlaXZlU2NyaXB0UmVzcG9uc2VJbXBsKGlu
c3RydW1lbnRpbmdBZ2VudHMsIGlkZW50aWZpZXIpOworICAgICAgICBkaWRSZWNlaXZlU2NyaXB0
UmVzcG9uc2VJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRzLCBpZGVudGlmaWVyKTsKICNlbHNlCiAg
ICAgVU5VU0VEX1BBUkFNKGNvbnRleHQpOwogICAgIFVOVVNFRF9QQVJBTShpZGVudGlmaWVyKTsK
ICNlbmRpZgogfQogCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRvbUNv
bnRlbnRMb2FkZWRFdmVudEZpcmVkKEZyYW1lKiBmcmFtZSkKK2lubGluZSB2b2lkIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6ZG9tQ29udGVudExvYWRlZEV2ZW50RmlyZWQoRnJhbWUmIGZyYW1l
KQogewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgaWYgKEluc3RydW1lbnRpbmdBZ2VudHMq
IGluc3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yRnJhbWUoZnJhbWUp
KQotICAgICAgICBkb21Db250ZW50TG9hZGVkRXZlbnRGaXJlZEltcGwoaW5zdHJ1bWVudGluZ0Fn
ZW50cywgZnJhbWUpOworICAgICAgICBkb21Db250ZW50TG9hZGVkRXZlbnRGaXJlZEltcGwoKmlu
c3RydW1lbnRpbmdBZ2VudHMsIGZyYW1lKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGZyYW1l
KTsKICNlbmRpZgpAQCAtMTUyMSwyNyArMTUxMSwyNyBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmxvYWRFdmVudEZpcmVkKEZyYW1lKiBmcmFtZSkKIHsKICNpZiBFTkFC
TEUoSU5TUEVDVE9SKQogICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5n
QWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvckZyYW1lKGZyYW1lKSkKLSAgICAgICAgbG9h
ZEV2ZW50RmlyZWRJbXBsKGluc3RydW1lbnRpbmdBZ2VudHMsIGZyYW1lKTsKKyAgICAgICAgbG9h
ZEV2ZW50RmlyZWRJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRzLCBmcmFtZSk7CiAjZWxzZQogICAg
IFVOVVNFRF9QQVJBTShmcmFtZSk7CiAjZW5kaWYKIH0KIAotaW5saW5lIHZvaWQgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpmcmFtZURldGFjaGVkRnJvbVBhcmVudChGcmFtZSogZnJhbWUpCitp
bmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmZyYW1lRGV0YWNoZWRGcm9tUGFy
ZW50KEZyYW1lJiBmcmFtZSkKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIGlmIChJbnN0
cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50
c0ZvckZyYW1lKGZyYW1lKSkKLSAgICAgICAgZnJhbWVEZXRhY2hlZEZyb21QYXJlbnRJbXBsKGlu
c3RydW1lbnRpbmdBZ2VudHMsIGZyYW1lKTsKKyAgICAgICAgZnJhbWVEZXRhY2hlZEZyb21QYXJl
bnRJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRzLCBmcmFtZSk7CiAjZWxzZQogICAgIFVOVVNFRF9Q
QVJBTShmcmFtZSk7CiAjZW5kaWYKIH0KIAotaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpkaWRDb21taXRMb2FkKEZyYW1lKiBmcmFtZSwgRG9jdW1lbnRMb2FkZXIqIGxvYWRl
cikKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ29tbWl0TG9hZChG
cmFtZSYgZnJhbWUsIERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCiB7CiAjaWYgRU5BQkxFKElOU1BF
Q1RPUikKICAgICBpZiAoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyA9
IGluc3RydW1lbnRpbmdBZ2VudHNGb3JGcmFtZShmcmFtZSkpCi0gICAgICAgIGRpZENvbW1pdExv
YWRJbXBsKGluc3RydW1lbnRpbmdBZ2VudHMsIGZyYW1lLT5wYWdlKCksIGxvYWRlcik7CisgICAg
ICAgIGRpZENvbW1pdExvYWRJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRzLCBmcmFtZS5wYWdlKCks
IGxvYWRlcik7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShmcmFtZSk7CiAgICAgVU5VU0VEX1BB
UkFNKGxvYWRlcik7CkBAIC0xNTUzLDE3ICsxNTQzLDE3IEBAIGlubGluZSB2b2lkIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6ZnJhbWVEb2N1bWVudFVwZGF0ZWQoRnJhbWUqIGZyYW1lKQogI2lm
IEVOQUJMRShJTlNQRUNUT1IpCiAgICAgRkFTVF9SRVRVUk5fSUZfTk9fRlJPTlRFTkRTKHZvaWQo
KSk7CiAgICAgaWYgKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMgPSBp
bnN0cnVtZW50aW5nQWdlbnRzRm9yRnJhbWUoZnJhbWUpKQotICAgICAgICBmcmFtZURvY3VtZW50
VXBkYXRlZEltcGwoaW5zdHJ1bWVudGluZ0FnZW50cywgZnJhbWUpOworICAgICAgICBmcmFtZURv
Y3VtZW50VXBkYXRlZEltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMsIGZyYW1lKTsKICNlbHNlCiAg
ICAgVU5VU0VEX1BBUkFNKGZyYW1lKTsKICNlbmRpZgogfQogCi1pbmxpbmUgdm9pZCBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OmxvYWRlckRldGFjaGVkRnJvbUZyYW1lKEZyYW1lKiBmcmFtZSwg
RG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6bG9hZGVyRGV0YWNoZWRGcm9tRnJhbWUoRnJhbWUmIGZyYW1lLCBEb2N1bWVudExvYWRl
ciYgbG9hZGVyKQogewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgaWYgKEluc3RydW1lbnRp
bmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yRnJh
bWUoZnJhbWUpKQotICAgICAgICBsb2FkZXJEZXRhY2hlZEZyb21GcmFtZUltcGwoaW5zdHJ1bWVu
dGluZ0FnZW50cywgbG9hZGVyKTsKKyAgICAgICAgbG9hZGVyRGV0YWNoZWRGcm9tRnJhbWVJbXBs
KCppbnN0cnVtZW50aW5nQWdlbnRzLCBsb2FkZXIpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0o
ZnJhbWUpOwogICAgIFVOVVNFRF9QQVJBTShsb2FkZXIpOwpAQCAtMTYxMSwxMiArMTYwMSwxMiBA
QCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmZyYW1lQ2xlYXJlZFNjaGVk
dWxlZE5hdmlnYXRpb24oRnJhbWUmIGZyYQogI2VuZGlmCiB9CiAKLWlubGluZSBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb25Db29raWUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUnVuSmF2
YVNjcmlwdERpYWxvZyhQYWdlKiBwYWdlLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCitpbmxpbmUg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
d2lsbFJ1bkphdmFTY3JpcHREaWFsb2coUGFnZSYgcGFnZSwgY29uc3QgU3RyaW5nJiBtZXNzYWdl
KQogewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgRkFTVF9SRVRVUk5fSUZfTk9fRlJPTlRF
TkRTKEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSgpKTsKICAgICBpZiAoSW5zdHJ1bWVu
dGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JQ
YWdlKHBhZ2UpKQotICAgICAgICByZXR1cm4gd2lsbFJ1bkphdmFTY3JpcHREaWFsb2dJbXBsKGlu
c3RydW1lbnRpbmdBZ2VudHMsIG1lc3NhZ2UpOworICAgICAgICByZXR1cm4gd2lsbFJ1bkphdmFT
Y3JpcHREaWFsb2dJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRzLCBtZXNzYWdlKTsKICNlbHNlCiAg
ICAgVU5VU0VEX1BBUkFNKHBhZ2UpOwogICAgIFVOVVNFRF9QQVJBTShtZXNzYWdlKTsKQEAgLTE2
MzUsNyArMTYyNSw3IEBAIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlk
UnVuSmF2YVNjcmlwdERpYWxvZyhjb25zdCBJbnNwZWN0b3JJbnN0CiAjZW5kaWYKIH0KIAotaW5s
aW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRGVzdHJveUNhY2hlZFJlc291
cmNlKENhY2hlZFJlc291cmNlKiBjYWNoZWRSZXNvdXJjZSkKK2lubGluZSB2b2lkIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6d2lsbERlc3Ryb3lDYWNoZWRSZXNvdXJjZShDYWNoZWRSZXNvdXJj
ZSYgY2FjaGVkUmVzb3VyY2UpCiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBGQVNUX1JF
VFVSTl9JRl9OT19GUk9OVEVORFModm9pZCgpKTsKQEAgLTE2NTAsNyArMTY0MCw3IEBAIGlubGlu
ZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Ojp3aWxsV3JpdGVIVE1MKERvCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBGQVNUX1JFVFVS
Tl9JRl9OT19GUk9OVEVORFMoSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llKCkpOwogICAg
IGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVu
dGluZ0FnZW50c0ZvckRvY3VtZW50KGRvY3VtZW50KSkKLSAgICAgICAgcmV0dXJuIHdpbGxXcml0
ZUhUTUxJbXBsKGluc3RydW1lbnRpbmdBZ2VudHMsIHN0YXJ0TGluZSwgZG9jdW1lbnQtPmZyYW1l
KCkpOworICAgICAgICByZXR1cm4gd2lsbFdyaXRlSFRNTEltcGwoKmluc3RydW1lbnRpbmdBZ2Vu
dHMsIHN0YXJ0TGluZSwgZG9jdW1lbnQtPmZyYW1lKCkpOwogI2Vsc2UKICAgICBVTlVTRURfUEFS
QU0oZG9jdW1lbnQpOwogICAgIFVOVVNFRF9QQVJBTShzdGFydExpbmUpOwpAQCAtMTY3NSw3ICsx
NjY1LDcgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWREaXNwYXRj
aERPTVN0b3JhZ2VFdmVudChjb25zdCBTdHJpbmcmIGsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQog
ICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZST05URU5EUyh2b2lkKCkpOwogICAgIGlmIChJbnN0cnVt
ZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0Zv
clBhZ2UocGFnZSkpCi0gICAgICAgIGRpZERpc3BhdGNoRE9NU3RvcmFnZUV2ZW50SW1wbChpbnN0
cnVtZW50aW5nQWdlbnRzLCBrZXksIG9sZFZhbHVlLCBuZXdWYWx1ZSwgc3RvcmFnZVR5cGUsIHNl
Y3VyaXR5T3JpZ2luLCBwYWdlKTsKKyAgICAgICAgZGlkRGlzcGF0Y2hET01TdG9yYWdlRXZlbnRJ
bXBsKCppbnN0cnVtZW50aW5nQWdlbnRzLCBrZXksIG9sZFZhbHVlLCBuZXdWYWx1ZSwgc3RvcmFn
ZVR5cGUsIHNlY3VyaXR5T3JpZ2luLCBwYWdlKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGtl
eSk7CiAgICAgVU5VU0VEX1BBUkFNKG9sZFZhbHVlKTsKQEAgLTE2OTEsNyArMTY4MSw3IEBAIGlu
bGluZSBib29sIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c2hvdWxkUGF1c2VEZWRpY2F0ZWRX
b3JrZXJPblN0YXJ0KFNjcmlwdEV4CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBGQVNUX1JF
VFVSTl9JRl9OT19GUk9OVEVORFMoZmFsc2UpOwogICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRz
KiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvckNvbnRleHQoY29u
dGV4dCkpCi0gICAgICAgIHJldHVybiBzaG91bGRQYXVzZURlZGljYXRlZFdvcmtlck9uU3RhcnRJ
bXBsKGluc3RydW1lbnRpbmdBZ2VudHMpOworICAgICAgICByZXR1cm4gc2hvdWxkUGF1c2VEZWRp
Y2F0ZWRXb3JrZXJPblN0YXJ0SW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cyk7CiAjZWxzZQogICAg
IFVOVVNFRF9QQVJBTShjb250ZXh0KTsKICNlbmRpZgpAQCAtMTcwMiw3ICsxNjkyLDcgQEAgaW5s
aW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRTdGFydFdvcmtlckdsb2JhbFNj
b3BlKFNjcmlwdEV4ZWN1dGlvbkMKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIGlmIChJ
bnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0Fn
ZW50c0ZvckNvbnRleHQoY29udGV4dCkpCi0gICAgICAgIGRpZFN0YXJ0V29ya2VyR2xvYmFsU2Nv
cGVJbXBsKGluc3RydW1lbnRpbmdBZ2VudHMsIHByb3h5LCB1cmwpOworICAgICAgICBkaWRTdGFy
dFdvcmtlckdsb2JhbFNjb3BlSW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywgcHJveHksIHVybCk7
CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShjb250ZXh0KTsKICAgICBVTlVTRURfUEFSQU0ocHJv
eHkpOwpAQCAtMTcxNCw3ICsxNzA0LDcgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjp3b3JrZXJHbG9iYWxTY29wZVRlcm1pbmF0ZWQoU2NyaXB0RXhlY3V0aW8KIHsKICNp
ZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVt
ZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvckNvbnRleHQoY29udGV4dCkpCi0g
ICAgICAgIHdvcmtlckdsb2JhbFNjb3BlVGVybWluYXRlZEltcGwoaW5zdHJ1bWVudGluZ0FnZW50
cywgcHJveHkpOworICAgICAgICB3b3JrZXJHbG9iYWxTY29wZVRlcm1pbmF0ZWRJbXBsKCppbnN0
cnVtZW50aW5nQWdlbnRzLCBwcm94eSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShjb250ZXh0
KTsKICAgICBVTlVTRURfUEFSQU0ocHJveHkpOwpAQCAtMTcyNiw3ICsxNzE2LDcgQEAgaW5saW5l
IHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDcmVhdGVXZWJTb2NrZXQoRG9jdW1l
bnQqIGRvY3VtZW50LCB1bnMKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIGlmIChJbnN0
cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50
c0ZvckRvY3VtZW50KGRvY3VtZW50KSkKLSAgICAgICAgZGlkQ3JlYXRlV2ViU29ja2V0SW1wbChp
bnN0cnVtZW50aW5nQWdlbnRzLCBpZGVudGlmaWVyLCByZXF1ZXN0VVJMLCBkb2N1bWVudFVSTCwg
cHJvdG9jb2wsIGRvY3VtZW50KTsKKyAgICAgICAgZGlkQ3JlYXRlV2ViU29ja2V0SW1wbCgqaW5z
dHJ1bWVudGluZ0FnZW50cywgaWRlbnRpZmllciwgcmVxdWVzdFVSTCwgZG9jdW1lbnRVUkwsIHBy
b3RvY29sLCBkb2N1bWVudCk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShkb2N1bWVudCk7CiAg
ICAgVU5VU0VEX1BBUkFNKGlkZW50aWZpZXIpOwpAQCAtMTc0MCw3ICsxNzMwLDcgQEAgaW5saW5l
IHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsU2VuZFdlYlNvY2tldEhhbmRzaGFr
ZVJlcXVlc3QoRG9jdW1lbnQKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIGlmIChJbnN0
cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50
c0ZvckRvY3VtZW50KGRvY3VtZW50KSkKLSAgICAgICAgd2lsbFNlbmRXZWJTb2NrZXRIYW5kc2hh
a2VSZXF1ZXN0SW1wbChpbnN0cnVtZW50aW5nQWdlbnRzLCBpZGVudGlmaWVyLCByZXF1ZXN0LCBk
b2N1bWVudCk7CisgICAgICAgIHdpbGxTZW5kV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdEltcGwo
Kmluc3RydW1lbnRpbmdBZ2VudHMsIGlkZW50aWZpZXIsIHJlcXVlc3QsIGRvY3VtZW50KTsKICNl
bHNlCiAgICAgVU5VU0VEX1BBUkFNKGRvY3VtZW50KTsKICAgICBVTlVTRURfUEFSQU0oaWRlbnRp
Zmllcik7CkBAIC0xNzUyLDcgKzE3NDIsNyBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmRpZFJlY2VpdmVXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZShEb2N1bQogewog
I2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgaWYgKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3Ry
dW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yRG9jdW1lbnQoZG9jdW1lbnQp
KQotICAgICAgICBkaWRSZWNlaXZlV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2VJbXBsKGluc3Ry
dW1lbnRpbmdBZ2VudHMsIGlkZW50aWZpZXIsIHJlc3BvbnNlLCBkb2N1bWVudCk7CisgICAgICAg
IGRpZFJlY2VpdmVXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZUltcGwoKmluc3RydW1lbnRpbmdB
Z2VudHMsIGlkZW50aWZpZXIsIHJlc3BvbnNlLCBkb2N1bWVudCk7CiAjZWxzZQogICAgIFVOVVNF
RF9QQVJBTShkb2N1bWVudCk7CiAgICAgVU5VU0VEX1BBUkFNKGlkZW50aWZpZXIpOwpAQCAtMTc2
NCw3ICsxNzU0LDcgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRD
bG9zZVdlYlNvY2tldChEb2N1bWVudCogZG9jdW1lbnQsIHVuc2kKIHsKICNpZiBFTkFCTEUoSU5T
UEVDVE9SKQogICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRz
ID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvckRvY3VtZW50KGRvY3VtZW50KSkKLSAgICAgICAgZGlk
Q2xvc2VXZWJTb2NrZXRJbXBsKGluc3RydW1lbnRpbmdBZ2VudHMsIGlkZW50aWZpZXIsIGRvY3Vt
ZW50KTsKKyAgICAgICAgZGlkQ2xvc2VXZWJTb2NrZXRJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRz
LCBpZGVudGlmaWVyLCBkb2N1bWVudCk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShkb2N1bWVu
dCk7CiAgICAgVU5VU0VEX1BBUkFNKGlkZW50aWZpZXIpOwpAQCAtMTc3NCw3ICsxNzY0LDcgQEAg
aW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlV2ViU29ja2V0
RnJhbWUoRG9jdW1lbnQqIGRvY3VtZW4KIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIGlm
IChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGlu
Z0FnZW50c0ZvckRvY3VtZW50KGRvY3VtZW50KSkKLSAgICAgICAgZGlkUmVjZWl2ZVdlYlNvY2tl
dEZyYW1lSW1wbChpbnN0cnVtZW50aW5nQWdlbnRzLCBpZGVudGlmaWVyLCBmcmFtZSk7CisgICAg
ICAgIGRpZFJlY2VpdmVXZWJTb2NrZXRGcmFtZUltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMsIGlk
ZW50aWZpZXIsIGZyYW1lKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGRvY3VtZW50KTsKICAg
ICBVTlVTRURfUEFSQU0oaWRlbnRpZmllcik7CkBAIC0xNzg1LDcgKzE3NzUsNyBAQCBpbmxpbmUg
dm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVXZWJTb2NrZXRGcmFtZUVy
cm9yKERvY3VtZW50KiBkbwogewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgaWYgKEluc3Ry
dW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRz
Rm9yRG9jdW1lbnQoZG9jdW1lbnQpKQotICAgICAgICBkaWRSZWNlaXZlV2ViU29ja2V0RnJhbWVF
cnJvckltcGwoaW5zdHJ1bWVudGluZ0FnZW50cywgaWRlbnRpZmllciwgZXJyb3JNZXNzYWdlKTsK
KyAgICAgICAgZGlkUmVjZWl2ZVdlYlNvY2tldEZyYW1lRXJyb3JJbXBsKCppbnN0cnVtZW50aW5n
QWdlbnRzLCBpZGVudGlmaWVyLCBlcnJvck1lc3NhZ2UpOwogI2Vsc2UKICAgICBVTlVTRURfUEFS
QU0oZG9jdW1lbnQpOwogICAgIFVOVVNFRF9QQVJBTShpZGVudGlmaWVyKTsKQEAgLTE3OTYsNyAr
MTc4Niw3IEBAIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkU2VuZFdl
YlNvY2tldEZyYW1lKERvY3VtZW50KiBkb2N1bWVudCwKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9S
KQogICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5z
dHJ1bWVudGluZ0FnZW50c0ZvckRvY3VtZW50KGRvY3VtZW50KSkKLSAgICAgICAgZGlkU2VuZFdl
YlNvY2tldEZyYW1lSW1wbChpbnN0cnVtZW50aW5nQWdlbnRzLCBpZGVudGlmaWVyLCBmcmFtZSk7
CisgICAgICAgIGRpZFNlbmRXZWJTb2NrZXRGcmFtZUltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMs
IGlkZW50aWZpZXIsIGZyYW1lKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGRvY3VtZW50KTsK
ICAgICBVTlVTRURfUEFSQU0oaWRlbnRpZmllcik7CkBAIC0xODA2LDE1MSArMTc5NiwxNTEgQEAg
aW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRTZW5kV2ViU29ja2V0RnJh
bWUoRG9jdW1lbnQqIGRvY3VtZW50LAogI2VuZGlmCiAKICNpZiBFTkFCTEUoV0VCX1JFUExBWSkK
LWlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c2Vzc2lvbkNyZWF0ZWQoUGFn
ZSogcGFnZSwgUGFzc1JlZlB0cjxSZXBsYXlTZXNzaW9uPiBzZXNzaW9uKQoraW5saW5lIHZvaWQg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzZXNzaW9uQ3JlYXRlZChQYWdlJiBwYWdlLCBQYXNz
UmVmUHRyPFJlcGxheVNlc3Npb24+IHNlc3Npb24pCiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikK
ICAgICBGQVNUX1JFVFVSTl9JRl9OT19GUk9OVEVORFModm9pZCgpKTsKICAgICBpZiAoSW5zdHJ1
bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNG
b3JQYWdlKHBhZ2UpKQotICAgICAgICBzZXNzaW9uQ3JlYXRlZEltcGwoaW5zdHJ1bWVudGluZ0Fn
ZW50cywgc2Vzc2lvbik7CisgICAgICAgIHNlc3Npb25DcmVhdGVkSW1wbCgqaW5zdHJ1bWVudGlu
Z0FnZW50cywgc2Vzc2lvbik7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShwYWdlKTsKICAgICBV
TlVTRURfUEFSQU0oc2Vzc2lvbik7CiAjZW5kaWYKIH0KIAotaW5saW5lIHZvaWQgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpzZXNzaW9uTG9hZGVkKFBhZ2UqIHBhZ2UsIFBhc3NSZWZQdHI8UmVw
bGF5U2Vzc2lvbj4gc2Vzc2lvbikKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6c2Vzc2lvbkxvYWRlZChQYWdlJiBwYWdlLCBQYXNzUmVmUHRyPFJlcGxheVNlc3Npb24+IHNl
c3Npb24pCiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBGQVNUX1JFVFVSTl9JRl9OT19G
Uk9OVEVORFModm9pZCgpKTsKICAgICBpZiAoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVu
dGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JQYWdlKHBhZ2UpKQotICAgICAgICBz
ZXNzaW9uTG9hZGVkSW1wbChpbnN0cnVtZW50aW5nQWdlbnRzLCBzZXNzaW9uKTsKKyAgICAgICAg
c2Vzc2lvbkxvYWRlZEltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMsIHNlc3Npb24pOwogI2Vsc2UK
ICAgICBVTlVTRURfUEFSQU0ocGFnZSk7CiAgICAgVU5VU0VEX1BBUkFNKHNlc3Npb24pOwogI2Vu
ZGlmCiB9CiAKLWlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c2Vzc2lvbk1v
ZGlmaWVkKFBhZ2UqIHBhZ2UsIFBhc3NSZWZQdHI8UmVwbGF5U2Vzc2lvbj4gc2Vzc2lvbikKK2lu
bGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c2Vzc2lvbk1vZGlmaWVkKFBhZ2Um
IHBhZ2UsIFBhc3NSZWZQdHI8UmVwbGF5U2Vzc2lvbj4gc2Vzc2lvbikKIHsKICNpZiBFTkFCTEUo
SU5TUEVDVE9SKQogICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZST05URU5EUyh2b2lkKCkpOwogICAg
IGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVu
dGluZ0FnZW50c0ZvclBhZ2UocGFnZSkpCi0gICAgICAgIHNlc3Npb25Nb2RpZmllZEltcGwoaW5z
dHJ1bWVudGluZ0FnZW50cywgc2Vzc2lvbik7CisgICAgICAgIHNlc3Npb25Nb2RpZmllZEltcGwo
Kmluc3RydW1lbnRpbmdBZ2VudHMsIHNlc3Npb24pOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0o
cGFnZSk7CiAgICAgVU5VU0VEX1BBUkFNKHNlc3Npb24pOwogI2VuZGlmCiB9CiAKLWlubGluZSB2
b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c2VnbWVudENyZWF0ZWQoUGFnZSogcGFnZSwg
UGFzc1JlZlB0cjxSZXBsYXlTZXNzaW9uU2VnbWVudD4gc2VnbWVudCkKK2lubGluZSB2b2lkIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c2VnbWVudENyZWF0ZWQoUGFnZSYgcGFnZSwgUGFzc1Jl
ZlB0cjxSZXBsYXlTZXNzaW9uU2VnbWVudD4gc2VnbWVudCkKIHsKICNpZiBFTkFCTEUoSU5TUEVD
VE9SKQogICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZST05URU5EUyh2b2lkKCkpOwogICAgIGlmIChJ
bnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0Fn
ZW50c0ZvclBhZ2UocGFnZSkpCi0gICAgICAgIHNlZ21lbnRDcmVhdGVkSW1wbChpbnN0cnVtZW50
aW5nQWdlbnRzLCBzZWdtZW50KTsKKyAgICAgICAgc2VnbWVudENyZWF0ZWRJbXBsKCppbnN0cnVt
ZW50aW5nQWdlbnRzLCBzZWdtZW50KTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHBhZ2UpOwog
ICAgIFVOVVNFRF9QQVJBTShzZWdtZW50KTsKICNlbmRpZgogfQogCi1pbmxpbmUgdm9pZCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OnNlZ21lbnRDb21wbGV0ZWQoUGFnZSogcGFnZSwgUGFzc1Jl
ZlB0cjxSZXBsYXlTZXNzaW9uU2VnbWVudD4gc2VnbWVudCkKK2lubGluZSB2b2lkIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6c2VnbWVudENvbXBsZXRlZChQYWdlJiBwYWdlLCBQYXNzUmVmUHRy
PFJlcGxheVNlc3Npb25TZWdtZW50PiBzZWdtZW50KQogewogI2lmIEVOQUJMRShJTlNQRUNUT1Ip
CiAgICAgRkFTVF9SRVRVUk5fSUZfTk9fRlJPTlRFTkRTKHZvaWQoKSk7CiAgICAgaWYgKEluc3Ry
dW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRz
Rm9yUGFnZShwYWdlKSkKLSAgICAgICAgc2VnbWVudENvbXBsZXRlZEltcGwoaW5zdHJ1bWVudGlu
Z0FnZW50cywgc2VnbWVudCk7CisgICAgICAgIHNlZ21lbnRDb21wbGV0ZWRJbXBsKCppbnN0cnVt
ZW50aW5nQWdlbnRzLCBzZWdtZW50KTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHBhZ2UpOwog
ICAgIFVOVVNFRF9QQVJBTShzZWdtZW50KTsKICNlbmRpZgogfQogCi1pbmxpbmUgdm9pZCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OnNlZ21lbnRMb2FkZWQoUGFnZSogcGFnZSwgUGFzc1JlZlB0
cjxSZXBsYXlTZXNzaW9uU2VnbWVudD4gc2VnbWVudCkKK2lubGluZSB2b2lkIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6c2VnbWVudExvYWRlZChQYWdlJiBwYWdlLCBQYXNzUmVmUHRyPFJlcGxh
eVNlc3Npb25TZWdtZW50PiBzZWdtZW50KQogewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAg
RkFTVF9SRVRVUk5fSUZfTk9fRlJPTlRFTkRTKHZvaWQoKSk7CiAgICAgaWYgKEluc3RydW1lbnRp
bmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yUGFn
ZShwYWdlKSkKLSAgICAgICAgc2VnbWVudExvYWRlZEltcGwoaW5zdHJ1bWVudGluZ0FnZW50cywg
c2VnbWVudCk7CisgICAgICAgIHNlZ21lbnRMb2FkZWRJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRz
LCBzZWdtZW50KTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHBhZ2UpOwogICAgIFVOVVNFRF9Q
QVJBTShzZWdtZW50KTsKICNlbmRpZgogfQogCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OnNlZ21lbnRVbmxvYWRlZChQYWdlKiBwYWdlKQoraW5saW5lIHZvaWQgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpzZWdtZW50VW5sb2FkZWQoUGFnZSYgcGFnZSkKIHsKICNpZiBF
TkFCTEUoSU5TUEVDVE9SKQogICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZST05URU5EUyh2b2lkKCkp
OwogICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5z
dHJ1bWVudGluZ0FnZW50c0ZvclBhZ2UocGFnZSkpCi0gICAgICAgIHNlZ21lbnRVbmxvYWRlZElt
cGwoaW5zdHJ1bWVudGluZ0FnZW50cyk7CisgICAgICAgIHNlZ21lbnRVbmxvYWRlZEltcGwoKmlu
c3RydW1lbnRpbmdBZ2VudHMpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0ocGFnZSk7CiAjZW5k
aWYKIH0KIAotaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjYXB0dXJlU3Rh
cnRlZChQYWdlKiBwYWdlKQoraW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpj
YXB0dXJlU3RhcnRlZChQYWdlJiBwYWdlKQogewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAg
RkFTVF9SRVRVUk5fSUZfTk9fRlJPTlRFTkRTKHZvaWQoKSk7CiAgICAgaWYgKEluc3RydW1lbnRp
bmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yUGFn
ZShwYWdlKSkKLSAgICAgICAgY2FwdHVyZVN0YXJ0ZWRJbXBsKGluc3RydW1lbnRpbmdBZ2VudHMp
OworICAgICAgICBjYXB0dXJlU3RhcnRlZEltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMpOwogI2Vs
c2UKICAgICBVTlVTRURfUEFSQU0ocGFnZSk7CiAjZW5kaWYKIH0KIAotaW5saW5lIHZvaWQgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjYXB0dXJlU3RvcHBlZChQYWdlKiBwYWdlKQoraW5saW5l
IHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjYXB0dXJlU3RvcHBlZChQYWdlJiBwYWdl
KQogewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgRkFTVF9SRVRVUk5fSUZfTk9fRlJPTlRF
TkRTKHZvaWQoKSk7CiAgICAgaWYgKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdB
Z2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yUGFnZShwYWdlKSkKLSAgICAgICAgY2FwdHVy
ZVN0b3BwZWRJbXBsKGluc3RydW1lbnRpbmdBZ2VudHMpOworICAgICAgICBjYXB0dXJlU3RvcHBl
ZEltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0ocGFn
ZSk7CiAjZW5kaWYKIH0KIAotaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpw
bGF5YmFja1N0YXJ0ZWQoUGFnZSogcGFnZSkKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6cGxheWJhY2tTdGFydGVkKFBhZ2UmIHBhZ2UpCiB7CiAjaWYgRU5BQkxFKElOU1BF
Q1RPUikKICAgICBGQVNUX1JFVFVSTl9JRl9OT19GUk9OVEVORFModm9pZCgpKTsKICAgICBpZiAo
SW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdB
Z2VudHNGb3JQYWdlKHBhZ2UpKQotICAgICAgICBwbGF5YmFja1N0YXJ0ZWRJbXBsKGluc3RydW1l
bnRpbmdBZ2VudHMpOworICAgICAgICBwbGF5YmFja1N0YXJ0ZWRJbXBsKCppbnN0cnVtZW50aW5n
QWdlbnRzKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHBhZ2UpOwogI2VuZGlmCiB9CiAKLWlu
bGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6cGxheWJhY2tQYXVzZWQoUGFnZSog
cGFnZSwgY29uc3QgUmVwbGF5UG9zaXRpb24mIHBvc2l0aW9uKQoraW5saW5lIHZvaWQgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpwbGF5YmFja1BhdXNlZChQYWdlJiBwYWdlLCBjb25zdCBSZXBs
YXlQb3NpdGlvbiYgcG9zaXRpb24pCiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBGQVNU
X1JFVFVSTl9JRl9OT19GUk9OVEVORFModm9pZCgpKTsKICAgICBpZiAoSW5zdHJ1bWVudGluZ0Fn
ZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JQYWdlKHBh
Z2UpKQotICAgICAgICBwbGF5YmFja1BhdXNlZEltcGwoaW5zdHJ1bWVudGluZ0FnZW50cywgcG9z
aXRpb24pOworICAgICAgICBwbGF5YmFja1BhdXNlZEltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMs
IHBvc2l0aW9uKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHBhZ2UpOwogICAgIFVOVVNFRF9Q
QVJBTShwb3NpdGlvbik7CiAjZW5kaWYKIH0KIAotaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpwbGF5YmFja0ZpbmlzaGVkKFBhZ2UqIHBhZ2UpCitpbmxpbmUgdm9pZCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OnBsYXliYWNrRmluaXNoZWQoUGFnZSYgcGFnZSkKIHsKICNp
ZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZST05URU5EUyh2b2lk
KCkpOwogICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0g
aW5zdHJ1bWVudGluZ0FnZW50c0ZvclBhZ2UocGFnZSkpCi0gICAgICAgIHBsYXliYWNrRmluaXNo
ZWRJbXBsKGluc3RydW1lbnRpbmdBZ2VudHMpOworICAgICAgICBwbGF5YmFja0ZpbmlzaGVkSW1w
bCgqaW5zdHJ1bWVudGluZ0FnZW50cyk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShwYWdlKTsK
ICNlbmRpZgogfQogCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnBsYXli
YWNrSGl0UG9zaXRpb24oUGFnZSogcGFnZSwgY29uc3QgUmVwbGF5UG9zaXRpb24mIHBvc2l0aW9u
KQoraW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpwbGF5YmFja0hpdFBvc2l0
aW9uKFBhZ2UmIHBhZ2UsIGNvbnN0IFJlcGxheVBvc2l0aW9uJiBwb3NpdGlvbikKIHsKICNpZiBF
TkFCTEUoSU5TUEVDVE9SKQogICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZST05URU5EUyh2b2lkKCkp
OwogICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5z
dHJ1bWVudGluZ0FnZW50c0ZvclBhZ2UocGFnZSkpCi0gICAgICAgIHBsYXliYWNrSGl0UG9zaXRp
b25JbXBsKGluc3RydW1lbnRpbmdBZ2VudHMsIHBvc2l0aW9uKTsKKyAgICAgICAgcGxheWJhY2tI
aXRQb3NpdGlvbkltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMsIHBvc2l0aW9uKTsKICNlbHNlCiAg
ICAgVU5VU0VEX1BBUkFNKHBhZ2UpOwogICAgIFVOVVNFRF9QQVJBTShwb3NpdGlvbik7CkBAIC0x
OTYzLDcgKzE5NTMsNyBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Om5l
dHdvcmtTdGF0ZUNoYW5nZWQoUGFnZSogcGFnZSkKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAg
IEZBU1RfUkVUVVJOX0lGX05PX0ZST05URU5EUyh2b2lkKCkpOwogICAgIGlmIChJbnN0cnVtZW50
aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvclBh
Z2UocGFnZSkpCi0gICAgICAgIG5ldHdvcmtTdGF0ZUNoYW5nZWRJbXBsKGluc3RydW1lbnRpbmdB
Z2VudHMpOworICAgICAgICBuZXR3b3JrU3RhdGVDaGFuZ2VkSW1wbCgqaW5zdHJ1bWVudGluZ0Fn
ZW50cyk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShwYWdlKTsKICNlbmRpZgpAQCAtMTk3NCw3
ICsxOTY0LDcgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp1cGRhdGVB
cHBsaWNhdGlvbkNhY2hlU3RhdHVzKEZyYW1lKiBmcmFtZSkKICNpZiBFTkFCTEUoSU5TUEVDVE9S
KQogICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZST05URU5EUyh2b2lkKCkpOwogICAgIGlmIChJbnN0
cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50
c0ZvckZyYW1lKGZyYW1lKSkKLSAgICAgICAgdXBkYXRlQXBwbGljYXRpb25DYWNoZVN0YXR1c0lt
cGwoaW5zdHJ1bWVudGluZ0FnZW50cywgZnJhbWUpOworICAgICAgICB1cGRhdGVBcHBsaWNhdGlv
bkNhY2hlU3RhdHVzSW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywgZnJhbWUpOwogI2Vsc2UKICAg
ICBVTlVTRURfUEFSQU0oZnJhbWUpOwogI2VuZGlmCkBAIC0xOTg0LDcgKzE5NzQsNyBAQCBpbmxp
bmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlcXVlc3RBbmltYXRpb25GcmFt
ZShEb2N1bWVudCogZG9jdW1lbgogewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgaWYgKElu
c3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdl
bnRzRm9yRG9jdW1lbnQoZG9jdW1lbnQpKQotICAgICAgICBkaWRSZXF1ZXN0QW5pbWF0aW9uRnJh
bWVJbXBsKGluc3RydW1lbnRpbmdBZ2VudHMsIGNhbGxiYWNrSWQsIGRvY3VtZW50LT5mcmFtZSgp
KTsKKyAgICAgICAgZGlkUmVxdWVzdEFuaW1hdGlvbkZyYW1lSW1wbCgqaW5zdHJ1bWVudGluZ0Fn
ZW50cywgY2FsbGJhY2tJZCwgZG9jdW1lbnQtPmZyYW1lKCkpOwogI2Vsc2UKICAgICBVTlVTRURf
UEFSQU0oZG9jdW1lbnQpOwogICAgIFVOVVNFRF9QQVJBTShjYWxsYmFja0lkKTsKQEAgLTE5OTUs
NyArMTk4NSw3IEBAIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ2Fu
Y2VsQW5pbWF0aW9uRnJhbWUoRG9jdW1lbnQqIGRvY3VtZW50CiB7CiAjaWYgRU5BQkxFKElOU1BF
Q1RPUikKICAgICBpZiAoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyA9
IGluc3RydW1lbnRpbmdBZ2VudHNGb3JEb2N1bWVudChkb2N1bWVudCkpCi0gICAgICAgIGRpZENh
bmNlbEFuaW1hdGlvbkZyYW1lSW1wbChpbnN0cnVtZW50aW5nQWdlbnRzLCBjYWxsYmFja0lkLCBk
b2N1bWVudC0+ZnJhbWUoKSk7CisgICAgICAgIGRpZENhbmNlbEFuaW1hdGlvbkZyYW1lSW1wbCgq
aW5zdHJ1bWVudGluZ0FnZW50cywgY2FsbGJhY2tJZCwgZG9jdW1lbnQtPmZyYW1lKCkpOwogI2Vs
c2UKICAgICBVTlVTRURfUEFSQU0oZG9jdW1lbnQpOwogICAgIFVOVVNFRF9QQVJBTShjYWxsYmFj
a0lkKTsKQEAgLTIwMDYsNyArMTk5Niw3IEBAIGlubGluZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b25Db29raWUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRmlyZUFuaW1hdGlvCiB7CiAj
aWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBpZiAoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1
bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JEb2N1bWVudChkb2N1bWVudCkp
Ci0gICAgICAgIHJldHVybiB3aWxsRmlyZUFuaW1hdGlvbkZyYW1lSW1wbChpbnN0cnVtZW50aW5n
QWdlbnRzLCBjYWxsYmFja0lkLCBkb2N1bWVudC0+ZnJhbWUoKSk7CisgICAgICAgIHJldHVybiB3
aWxsRmlyZUFuaW1hdGlvbkZyYW1lSW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywgY2FsbGJhY2tJ
ZCwgZG9jdW1lbnQtPmZyYW1lKCkpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZG9jdW1lbnQp
OwogICAgIFVOVVNFRF9QQVJBTShjYWxsYmFja0lkKTsKQEAgLTIwMjksMjggKzIwMTksMjggQEAg
aW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpsYXllclRyZWVEaWRDaGFuZ2Uo
UGFnZSogcGFnZSkKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIGlmIChJbnN0cnVtZW50
aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvclBh
Z2UocGFnZSkpCi0gICAgICAgIGxheWVyVHJlZURpZENoYW5nZUltcGwoaW5zdHJ1bWVudGluZ0Fn
ZW50cyk7CisgICAgICAgIGxheWVyVHJlZURpZENoYW5nZUltcGwoKmluc3RydW1lbnRpbmdBZ2Vu
dHMpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0ocGFnZSk7CiAjZW5kaWYKIH0KIAotaW5saW5l
IHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpyZW5kZXJMYXllckRlc3Ryb3llZChQYWdl
KiBwYWdlLCBjb25zdCBSZW5kZXJMYXllciogcmVuZGVyTGF5ZXIpCitpbmxpbmUgdm9pZCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OnJlbmRlckxheWVyRGVzdHJveWVkKFBhZ2UqIHBhZ2UsIGNv
bnN0IFJlbmRlckxheWVyJiByZW5kZXJMYXllcikKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQog
ICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1
bWVudGluZ0FnZW50c0ZvclBhZ2UocGFnZSkpCi0gICAgICAgIHJlbmRlckxheWVyRGVzdHJveWVk
SW1wbChpbnN0cnVtZW50aW5nQWdlbnRzLCByZW5kZXJMYXllcik7CisgICAgICAgIHJlbmRlckxh
eWVyRGVzdHJveWVkSW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywgcmVuZGVyTGF5ZXIpOwogI2Vs
c2UKICAgICBVTlVTRURfUEFSQU0ocGFnZSk7CiAgICAgVU5VU0VEX1BBUkFNKHJlbmRlckxheWVy
KTsKICNlbmRpZgogfQogCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnBz
ZXVkb0VsZW1lbnREZXN0cm95ZWQoUGFnZSogcGFnZSwgUHNldWRvRWxlbWVudCogcHNldWRvRWxl
bWVudCkKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6cHNldWRvRWxlbWVu
dERlc3Ryb3llZChQYWdlKiBwYWdlLCBQc2V1ZG9FbGVtZW50JiBwc2V1ZG9FbGVtZW50KQogewog
I2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgaWYgKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3Ry
dW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yUGFnZShwYWdlKSkKLSAgICAg
ICAgcHNldWRvRWxlbWVudERlc3Ryb3llZEltcGwoaW5zdHJ1bWVudGluZ0FnZW50cywgcHNldWRv
RWxlbWVudCk7CisgICAgICAgIHBzZXVkb0VsZW1lbnREZXN0cm95ZWRJbXBsKCppbnN0cnVtZW50
aW5nQWdlbnRzLCBwc2V1ZG9FbGVtZW50KTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHBhZ2Up
OwogICAgIFVOVVNFRF9QQVJBTShwc2V1ZG9FbGVtZW50KTsKQEAgLTIwNjksMjIgKzIwNTksMjcg
QEAgaW5saW5lIEluc3RydW1lbnRpbmdBZ2VudHMqIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
aW5zdHJ1bWVudGluZ0FnZW50c0ZvckNvbnQKIAogaW5saW5lIEluc3RydW1lbnRpbmdBZ2VudHMq
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW5zdHJ1bWVudGluZ0FnZW50c0ZvckZyYW1lKEZy
YW1lKiBmcmFtZSkKIHsKLSAgICBpZiAoZnJhbWUpCi0gICAgICAgIHJldHVybiBpbnN0cnVtZW50
aW5nQWdlbnRzRm9yUGFnZShmcmFtZS0+cGFnZSgpKTsKLSAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICByZXR1cm4gZnJhbWUgPyBpbnN0cnVtZW50aW5nQWdlbnRzRm9yRnJhbWUoKmZyYW1lKSA6IG51
bGxwdHI7Cit9CisKK2lubGluZSBJbnN0cnVtZW50aW5nQWdlbnRzKiBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246Omluc3RydW1lbnRpbmdBZ2VudHNGb3JGcmFtZShGcmFtZSYgZnJhbWUpCit7Cisg
ICAgcmV0dXJuIGluc3RydW1lbnRpbmdBZ2VudHNGb3JQYWdlKGZyYW1lLnBhZ2UoKSk7CiB9CiAK
IGlubGluZSBJbnN0cnVtZW50aW5nQWdlbnRzKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Omlu
c3RydW1lbnRpbmdBZ2VudHNGb3JEb2N1bWVudChEb2N1bWVudCogZG9jdW1lbnQpCiB7Ci0gICAg
aWYgKGRvY3VtZW50KSB7Ci0gICAgICAgIFBhZ2UqIHBhZ2UgPSBkb2N1bWVudC0+cGFnZSgpOwor
ICAgIHJldHVybiBkb2N1bWVudCA/IGluc3RydW1lbnRpbmdBZ2VudHNGb3JEb2N1bWVudCgqZG9j
dW1lbnQpIDogbnVsbHB0cjsKK30KKworaW5saW5lIEluc3RydW1lbnRpbmdBZ2VudHMqIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6aW5zdHJ1bWVudGluZ0FnZW50c0ZvckRvY3VtZW50KERvY3Vt
ZW50JiBkb2N1bWVudCkKK3sKKyAgICBQYWdlKiBwYWdlID0gZG9jdW1lbnQucGFnZSgpOwogI2lm
IEVOQUJMRShURU1QTEFURV9FTEVNRU5UKQotICAgICAgICBpZiAoIXBhZ2UgJiYgZG9jdW1lbnQt
PnRlbXBsYXRlRG9jdW1lbnRIb3N0KCkpCi0gICAgICAgICAgICBwYWdlID0gZG9jdW1lbnQtPnRl
bXBsYXRlRG9jdW1lbnRIb3N0KCktPnBhZ2UoKTsKKyAgICBpZiAoIXBhZ2UgJiYgZG9jdW1lbnQu
dGVtcGxhdGVEb2N1bWVudEhvc3QoKSkKKyAgICAgICAgcGFnZSA9IGRvY3VtZW50LnRlbXBsYXRl
RG9jdW1lbnRIb3N0KCktPnBhZ2UoKTsKICNlbmRpZgotICAgICAgICByZXR1cm4gaW5zdHJ1bWVu
dGluZ0FnZW50c0ZvclBhZ2UocGFnZSk7Ci0gICAgfQotICAgIHJldHVybiBudWxscHRyOworICAg
IHJldHVybiBpbnN0cnVtZW50aW5nQWdlbnRzRm9yUGFnZShwYWdlKTsKIH0KICNlbmRpZgogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uQ29va2llLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb25Db29raWUuY3BwCmluZGV4IDdmMDBkZWIzZmMyN2JlYzdjZmRmOWUwNThiMTc5OWJm
YjM0YjQ5YWEuLjI2MWYzOWI4ZDRkZWZlMGY4NGZlMzE1MzlmYjJhMmM2MWJmMWQyMTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25D
b29raWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb25Db29raWUuY3BwCkBAIC0zOCwxMyArMzgsMTIgQEAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llOjpJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb25Db29raWUoKQotICAgIDogbV9pbnN0cnVtZW50aW5nQWdlbnRzKG51bGxwdHIpCi0gICAg
LCBtX3RpbWVsaW5lQWdlbnRJZCgwKQorICAgIDogbV90aW1lbGluZUFnZW50SWQoMCkKIHsKIH0K
IAotSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b25Db29raWUoSW5zdHJ1bWVudGluZ0FnZW50cyogYWdlbnRzLCBpbnQgdGltZWxpbmVBZ2VudElk
KQotICAgIDogbV9pbnN0cnVtZW50aW5nQWdlbnRzKGFnZW50cykKK0luc3BlY3Rvckluc3RydW1l
bnRhdGlvbkNvb2tpZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llKEluc3RydW1lbnRp
bmdBZ2VudHMmIGFnZW50cywgaW50IHRpbWVsaW5lQWdlbnRJZCkKKyAgICA6IG1faW5zdHJ1bWVu
dGluZ0FnZW50cygmYWdlbnRzKQogICAgICwgbV90aW1lbGluZUFnZW50SWQodGltZWxpbmVBZ2Vu
dElkKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckluc3RydW1lbnRhdGlvbkNvb2tpZS5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZS5oCmluZGV4IDZkYjUxNGZjOWI5NTI2NDNlZTBiNWI0
ZjRmZTYyNjE3Y2U2YzA1YzEuLmQxNTQ5OTUxY2M4ZDg0M2U1OTdlNmNlYmUzODcwZjRhNzQxMzhl
NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb25Db29raWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uQ29va2llLmgKQEAgLTMzLDE2ICszMywxNyBAQAogCiAjaW5jbHVkZSA8
d3RmL1JlZlB0ci5oPgogCisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKwogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb247CiBjbGFzcyBJbnN0cnVtZW50
aW5nQWdlbnRzOwogCiBjbGFzcyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgewotI2lm
IEVOQUJMRShJTlNQRUNUT1IpCiBwdWJsaWM6CiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Q29va2llKCk7Ci0gICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llKEluc3RydW1lbnRp
bmdBZ2VudHMqLCBpbnQpOworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZShJbnN0
cnVtZW50aW5nQWdlbnRzJiwgaW50KTsKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29r
aWUoY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llJik7CiAgICAgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uQ29va2llJiBvcGVyYXRvcj0oY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uQ29va2llJik7CiAgICAgfkluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSgpOwpA
QCAtNTQsOSArNTUsMTAgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBSZWZQdHI8SW5zdHJ1bWVu
dGluZ0FnZW50cz4gbV9pbnN0cnVtZW50aW5nQWdlbnRzOwogICAgIGludCBtX3RpbWVsaW5lQWdl
bnRJZDsKLSNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCisjZW5kaWYgLy8g
RU5BQkxFKElOU1BFQ1RPUikKKwogI2VuZGlmIC8vIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNv
b2tpZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zdHJ1bWVudGlu
Z0FnZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zdHJ1bWVudGluZ0FnZW50
cy5jcHAKaW5kZXggZjRlOGRmMDQ3MTdhOGFjODc5MzczNDA1MTg1ZWM2MGJlMzFiOTEzOS4uZWE4
MjhlYzc5ZDAxYTE5YzUwMTEyYjA0ZDQ0N2UzMGE1YmEyYTI0OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3RydW1lbnRpbmdBZ2VudHMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnN0cnVtZW50aW5nQWdlbnRzLmNwcApAQCAtOTksMTcgKzk5LDYg
QEAgdm9pZCBJbnN0cnVtZW50aW5nQWdlbnRzOjpyZXNldCgpCiAgICAgbV9pbnNwZWN0b3JXb3Jr
ZXJBZ2VudCA9IG51bGxwdHI7CiB9CiAKLUluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRh
dGlvbkZvclBhZ2UoUGFnZSogcGFnZSkKLXsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwot
ICAgIHJldHVybiBwYWdlID8gcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLm1faW5zdHJ1bWVu
dGluZ0FnZW50cy5nZXQoKSA6IG51bGxwdHI7Ci19Ci0KLUluc3RydW1lbnRpbmdBZ2VudHMqIGlu
c3RydW1lbnRhdGlvbkZvcldvcmtlckdsb2JhbFNjb3BlKFdvcmtlckdsb2JhbFNjb3BlKiB3b3Jr
ZXJHbG9iYWxTY29wZSkKLXsKLSAgICByZXR1cm4gd29ya2VyR2xvYmFsU2NvcGUgPyB3b3JrZXJH
bG9iYWxTY29wZS0+d29ya2VySW5zcGVjdG9yQ29udHJvbGxlcigpLm1faW5zdHJ1bWVudGluZ0Fn
ZW50cy5nZXQoKSA6IG51bGxwdHI7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2Vu
ZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zdHJ1bWVudGluZ0FnZW50cy5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3RydW1lbnRpbmdBZ2VudHMuaAppbmRleCA2NTdjZDk2OGI0ZjY3Nzk1MzQzYmI3MTIzOTgxOWYx
YmJiZDViMWZkLi40NzIyNWUwYzFiNzUzOGU0MTI4MTEzZTM3MGFmYWY0NzMzMGU1NTAxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zdHJ1bWVudGluZ0FnZW50cy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnN0cnVtZW50aW5nQWdlbnRzLmgKQEAgLTE2
OCw5ICsxNjgsNiBAQCBwcml2YXRlOgogICAgIEluc3BlY3RvcldvcmtlckFnZW50KiBtX2luc3Bl
Y3RvcldvcmtlckFnZW50OwogfTsKIAotV0VCQ09SRV9FWFBPUlQgSW5zdHJ1bWVudGluZ0FnZW50
cyogaW5zdHJ1bWVudGF0aW9uRm9yUGFnZShQYWdlKik7Ci1JbnN0cnVtZW50aW5nQWdlbnRzKiBp
bnN0cnVtZW50YXRpb25Gb3JXb3JrZXJHbG9iYWxTY29wZShXb3JrZXJHbG9iYWxTY29wZSopOwot
CiB9CiAKICNlbmRpZiAvLyAhZGVmaW5lZChJbnN0cnVtZW50aW5nQWdlbnRzX2gpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5o
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuaApp
bmRleCAxNWJhYmNhNzUxMmUwNjlkZmMyYWMyNDNiNzQzZGU4YmI5OTVlNTM2Li5kNDk5YTE5MjIx
YmI3OTJiNDlmYjI1OTBjOTQ4MDE2NDQwMTFhMGIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmgKQEAgLTc3LDcgKzc3LDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXVEY6OlN0b3B3YXRjaD4gZXhlY3V0
aW9uU3RvcHdhdGNoKCkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6Ci0gICAgZnJpZW5kIEluc3RydW1l
bnRpbmdBZ2VudHMqIGluc3RydW1lbnRhdGlvbkZvcldvcmtlckdsb2JhbFNjb3BlKFdvcmtlckds
b2JhbFNjb3BlKik7CisgICAgZnJpZW5kIGNsYXNzIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjsK
IAogICAgIFdvcmtlckdsb2JhbFNjb3BlJiBtX3dvcmtlckdsb2JhbFNjb3BlOwogICAgIFJlZlB0
cjxJbnN0cnVtZW50aW5nQWdlbnRzPiBtX2luc3RydW1lbnRpbmdBZ2VudHM7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAppbmRleCAyNDU4YjNhYWQyMWFhZTJkYWU2MWQ0
OTkxZjU5NDQ1YWYwZDVhYTEzLi4xYmJjMzZiN2QxNjkxZTY0NDQ2MTBlOGY0ZjVhY2UwNjdmMTk5
MDNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKQEAgLTYxMiw3
ICs2MTIsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpyZXNwb25zZVJlY2VpdmVkKENhY2hlZFJl
c291cmNlKiByZXNvdXJjZSwgY29uc3QgUmVzb3VyY2VSZQogICAgICAgICB1bnNpZ25lZCBsb25n
IGlkZW50aWZpZXIgPSBtX2lkZW50aWZpZXJGb3JMb2FkV2l0aG91dFJlc291cmNlTG9hZGVyID8g
bV9pZGVudGlmaWVyRm9yTG9hZFdpdGhvdXRSZXNvdXJjZUxvYWRlciA6IG1fbWFpblJlc291cmNl
LT5pZGVudGlmaWVyKCk7CiAgICAgICAgIEFTU0VSVChpZGVudGlmaWVyKTsKICAgICAgICAgaWYg
KGZyYW1lTG9hZGVyKCktPnNob3VsZEludGVycnVwdExvYWRGb3JYRnJhbWVPcHRpb25zKGNvbnRl
bnQsIHJlc3BvbnNlLnVybCgpLCBpZGVudGlmaWVyKSkgewotICAgICAgICAgICAgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpjb250aW51ZUFmdGVyWEZyYW1lT3B0aW9uc0RlbmllZChtX2ZyYW1l
LCB0aGlzLCBpZGVudGlmaWVyLCByZXNwb25zZSk7CisgICAgICAgICAgICBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmNvbnRpbnVlQWZ0ZXJYRnJhbWVPcHRpb25zRGVuaWVkKG1fZnJhbWUsICp0
aGlzLCBpZGVudGlmaWVyLCByZXNwb25zZSk7CiAgICAgICAgICAgICBTdHJpbmcgbWVzc2FnZSA9
ICJSZWZ1c2VkIHRvIGRpc3BsYXkgJyIgKyByZXNwb25zZS51cmwoKS5zdHJpbmdDZW50ZXJFbGxp
cHNpemVkVG9MZW5ndGgoKSArICInIGluIGEgZnJhbWUgYmVjYXVzZSBpdCBzZXQgJ1gtRnJhbWUt
T3B0aW9ucycgdG8gJyIgKyBjb250ZW50ICsgIicuIjsKICAgICAgICAgICAgIGZyYW1lKCktPmRv
Y3VtZW50KCktPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlNlY3VyaXR5LCBNZXNz
YWdlTGV2ZWw6OkVycm9yLCBtZXNzYWdlLCBpZGVudGlmaWVyKTsKICAgICAgICAgICAgIGZyYW1l
KCktPmRvY3VtZW50KCktPmVuZm9yY2VTYW5kYm94RmxhZ3MoU2FuZGJveE9yaWdpbik7CkBAIC03
MDksNyArNzA5LDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6Y29udGludWVBZnRlckNvbnRlbnRQ
b2xpY3koUG9saWN5QWN0aW9uIHBvbGljeSkKICAgICAgICAgfQogCiAgICAgICAgIGlmIChSZXNv
dXJjZUxvYWRlciogbWFpblJlc291cmNlTG9hZGVyID0gdGhpcy0+bWFpblJlc291cmNlTG9hZGVy
KCkpCi0gICAgICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNvbnRpbnVlV2l0aFBv
bGljeURvd25sb2FkKG1fZnJhbWUsIHRoaXMsIG1haW5SZXNvdXJjZUxvYWRlci0+aWRlbnRpZmll
cigpLCBtX3Jlc3BvbnNlKTsKKyAgICAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
Y29udGludWVXaXRoUG9saWN5RG93bmxvYWQobV9mcmFtZSwgKnRoaXMsIG1haW5SZXNvdXJjZUxv
YWRlci0+aWRlbnRpZmllcigpLCBtX3Jlc3BvbnNlKTsKIAogICAgICAgICAvLyBXaGVuIHN0YXJ0
aW5nIHRoZSByZXF1ZXN0LCB3ZSBkaWRuJ3Qga25vdyB0aGF0IGl0IHdvdWxkIHJlc3VsdCBpbiBk
b3dubG9hZCBhbmQgbm90IG5hdmlnYXRpb24uIE5vdyB3ZSBrbm93IHRoYXQgbWFpbiBkb2N1bWVu
dCBVUkwgZGlkbid0IGNoYW5nZS4KICAgICAgICAgLy8gRG93bmxvYWQgbWF5IHVzZSB0aGlzIGtu
b3dsZWRnZSBmb3IgcHVycG9zZXMgdW5yZWxhdGVkIHRvIGNvb2tpZXMsIG5vdGFibHkgZm9yIHNl
dHRpbmcgZmlsZSBxdWFyYW50aW5lIGRhdGEuCkBAIC03MjMsNyArNzIzLDcgQEAgdm9pZCBEb2N1
bWVudExvYWRlcjo6Y29udGludWVBZnRlckNvbnRlbnRQb2xpY3koUG9saWN5QWN0aW9uIHBvbGlj
eSkKICAgICB9CiAgICAgY2FzZSBQb2xpY3lJZ25vcmU6CiAgICAgICAgIGlmIChSZXNvdXJjZUxv
YWRlciogbWFpblJlc291cmNlTG9hZGVyID0gdGhpcy0+bWFpblJlc291cmNlTG9hZGVyKCkpCi0g
ICAgICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNvbnRpbnVlV2l0aFBvbGljeUln
bm9yZShtX2ZyYW1lLCB0aGlzLCBtYWluUmVzb3VyY2VMb2FkZXItPmlkZW50aWZpZXIoKSwgbV9y
ZXNwb25zZSk7CisgICAgICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNvbnRpbnVl
V2l0aFBvbGljeUlnbm9yZShtX2ZyYW1lLCAqdGhpcywgbWFpblJlc291cmNlTG9hZGVyLT5pZGVu
dGlmaWVyKCksIG1fcmVzcG9uc2UpOwogICAgICAgICBzdG9wTG9hZGluZ0ZvclBvbGljeUNoYW5n
ZSgpOwogICAgICAgICByZXR1cm47CiAgICAgCkBAIC05NDgsNyArOTQ4LDcgQEAgdm9pZCBEb2N1
bWVudExvYWRlcjo6ZGV0YWNoRnJvbUZyYW1lKCkKICAgICAgICAgbV9tYWluUmVzb3VyY2UtPnJl
bW92ZUNsaWVudCh0aGlzKTsKIAogICAgIG1fYXBwbGljYXRpb25DYWNoZUhvc3QtPnNldERPTUFw
cGxpY2F0aW9uQ2FjaGUoMCk7Ci0gICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpsb2FkZXJE
ZXRhY2hlZEZyb21GcmFtZShtX2ZyYW1lLCB0aGlzKTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmxvYWRlckRldGFjaGVkRnJvbUZyYW1lKCptX2ZyYW1lLCAqdGhpcyk7CiAgICAgbV9m
cmFtZSA9IDA7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVu
dFRocmVhZGFibGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhy
ZWFkYWJsZUxvYWRlci5jcHAKaW5kZXggMDAwNjQ3OTQ1NTVhNGRjNTVkZWJmZDJiYzNmYzYxMTNi
MTY3MWM2OC4uNjY4ZjAxMDk1MmRkYTg3ODk5OGQ5ODhhMGVhMTYxMGI1N2QxZmNkNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAK
QEAgLTI4NiwxMSArMjg2LDcgQEAgdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmRpZFJl
Y2VpdmVEYXRhKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgY2gKIAogICAgIC8vIFBy
ZWZsaWdodCBkYXRhIHNob3VsZCBiZSBpbnZpc2libGUgdG8gY2xpZW50cy4KICAgICBpZiAobV9h
Y3R1YWxSZXF1ZXN0KSB7Ci0jaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICAgICAgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0YShtX2RvY3VtZW50LmZyYW1lKCksIGlkZW50
aWZpZXIsIDAsIDAsIGRhdGFMZW5ndGgpOwotI2Vsc2UKLSAgICAgICAgVU5VU0VEX1BBUkFNKGlk
ZW50aWZpZXIpOwotI2VuZGlmCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTMxMSw5ICsz
MDcsOCBAQCB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bm90aWZ5RmluaXNoZWQoQ2Fj
aGVkUmVzb3VyY2UqIHJlc291cmNlKQogdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmRp
ZEZpbmlzaExvYWRpbmcodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBkb3VibGUgZmluaXNoVGlt
ZSkKIHsKICAgICBpZiAobV9hY3R1YWxSZXF1ZXN0KSB7Ci0jaWYgRU5BQkxFKElOU1BFQ1RPUikK
ICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGaW5pc2hMb2FkaW5nKG1fZG9j
dW1lbnQuZnJhbWUoKSwgbV9kb2N1bWVudC5mcmFtZSgpLT5sb2FkZXIoKS5kb2N1bWVudExvYWRl
cigpLCBpZGVudGlmaWVyLCBmaW5pc2hUaW1lKTsKLSNlbmRpZgorCiAgICAgICAgIEFTU0VSVCgh
bV9zYW1lT3JpZ2luUmVxdWVzdCk7CiAgICAgICAgIEFTU0VSVChtX29wdGlvbnMuY3Jvc3NPcmln
aW5SZXF1ZXN0UG9saWN5ID09IFVzZUFjY2Vzc0NvbnRyb2wpOwogICAgICAgICBwcmVmbGlnaHRT
dWNjZXNzKCk7CkBAIC0zMjMsMTIgKzMxOCw4IEBAIHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9h
ZGVyOjpkaWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgZG91YmxlCiAK
IHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpkaWRGYWlsKHVuc2lnbmVkIGxvbmcgaWRl
bnRpZmllciwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7Ci0jaWYgRU5BQkxFKElOU1BF
Q1RPUikKICAgICBpZiAobV9hY3R1YWxSZXF1ZXN0KQogICAgICAgICBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmRpZEZhaWxMb2FkaW5nKG1fZG9jdW1lbnQuZnJhbWUoKSwgbV9kb2N1bWVudC5m
cmFtZSgpLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLCBpZGVudGlmaWVyLCBlcnJvcik7Ci0j
ZWxzZQotICAgIFVOVVNFRF9QQVJBTShpZGVudGlmaWVyKTsKLSNlbmRpZgogCiAgICAgbV9jbGll
bnQtPmRpZEZhaWwoZXJyb3IpOwogfQpAQCAtMzQ5LDEyICszNDAsOSBAQCB2b2lkIERvY3VtZW50
VGhyZWFkYWJsZUxvYWRlcjo6cHJlZmxpZ2h0U3VjY2VzcygpCiB2b2lkIERvY3VtZW50VGhyZWFk
YWJsZUxvYWRlcjo6cHJlZmxpZ2h0RmFpbHVyZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNv
bnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIGVycm9yRGVzY3JpcHRpb24pCiB7CiAgICAg
UmVzb3VyY2VFcnJvciBlcnJvcihlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCB1cmwsIGVy
cm9yRGVzY3JpcHRpb24pOwotI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgaWYgKG1fYWN0dWFs
UmVxdWVzdCkKICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGYWlsTG9hZGlu
ZyhtX2RvY3VtZW50LmZyYW1lKCksIG1fZG9jdW1lbnQuZnJhbWUoKS0+bG9hZGVyKCkuZG9jdW1l
bnRMb2FkZXIoKSwgaWRlbnRpZmllciwgZXJyb3IpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0o
aWRlbnRpZmllcik7Ci0jZW5kaWYKKwogICAgIG1fYWN0dWFsUmVxdWVzdCA9IG51bGxwdHI7IC8v
IFByZXZlbnQgZGlkRmluaXNoTG9hZGluZygpIGZyb20gYnlwYXNzaW5nIGFjY2VzcyBjaGVjay4K
ICAgICBtX2NsaWVudC0+ZGlkRmFpbEFjY2Vzc0NvbnRyb2xDaGVjayhlcnJvcik7CiB9CkBAIC0z
ODgsNyArMzc2LDcgQEAgdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXF1ZXN0
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgU2VjdXIKICNpZiBFTkFCTEUoSU5TUEVD
VE9SKQogICAgICAgICAgICAgaWYgKG1fcmVzb3VyY2UtPmxvYWRlcigpKSB7CiAgICAgICAgICAg
ICAgICAgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyID0gbV9yZXNvdXJjZS0+bG9hZGVyKCktPmlk
ZW50aWZpZXIoKTsKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRv
Y3VtZW50VGhyZWFkYWJsZUxvYWRlclN0YXJ0ZWRMb2FkaW5nRm9yQ2xpZW50KCZtX2RvY3VtZW50
LCBpZGVudGlmaWVyLCBtX2NsaWVudCk7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpkb2N1bWVudFRocmVhZGFibGVMb2FkZXJTdGFydGVkTG9hZGluZ0ZvckNsaWVu
dChtX2RvY3VtZW50LCBpZGVudGlmaWVyLCBtX2NsaWVudCk7CiAgICAgICAgICAgICB9CiAjZW5k
aWYKICAgICAgICAgICAgIG1fcmVzb3VyY2UtPmFkZENsaWVudCh0aGlzKTsKQEAgLTQwNCw3ICsz
OTIsNyBAQCB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlcXVlc3QoY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBTZWN1cgogICAgIGlmIChtX2RvY3VtZW50LmZyYW1l
KCkpCiAgICAgICAgIGlkZW50aWZpZXIgPSBtX2RvY3VtZW50LmZyYW1lKCktPmxvYWRlcigpLmxv
YWRSZXNvdXJjZVN5bmNocm9ub3VzbHkocmVxdWVzdCwgbV9vcHRpb25zLmFsbG93Q3JlZGVudGlh
bHMoKSwgbV9vcHRpb25zLmNsaWVudENyZWRlbnRpYWxQb2xpY3koKSwgZXJyb3IsIHJlc3BvbnNl
LCBkYXRhKTsKIAotICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZG9jdW1lbnRUaHJlYWRh
YmxlTG9hZGVyU3RhcnRlZExvYWRpbmdGb3JDbGllbnQoJm1fZG9jdW1lbnQsIGlkZW50aWZpZXIs
IG1fY2xpZW50KTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRvY3VtZW50VGhyZWFk
YWJsZUxvYWRlclN0YXJ0ZWRMb2FkaW5nRm9yQ2xpZW50KG1fZG9jdW1lbnQsIGlkZW50aWZpZXIs
IG1fY2xpZW50KTsKIAogICAgIGlmICghZXJyb3IuaXNOdWxsKCkgJiYgcmVzcG9uc2UuaHR0cFN0
YXR1c0NvZGUoKSA8PSAwKSB7CiAgICAgICAgIGlmIChyZXF1ZXN0VVJMLmlzTG9jYWxGaWxlKCkp
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IGI3NTQ1ZWYyYzRjYTA5
YTIyOWFiN2ZiM2I3MjM0YzgzZjAwZmI0MGMuLjY2YjBjMzQzODU3Nzg1YmI2ODM0MTIwOGEwNzM2
NDNlNWYyMDMxMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAtMjUw
MSw3ICsyNTAxLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6ZGV0YWNoRnJvbVBhcmVudCgpCiAgICAg
Ly8gaGFuZGxlcnMgbWlnaHQgc3RhcnQgYSBuZXcgc3VicmVzb3VyY2UgbG9hZCBpbiB0aGlzIGZy
YW1lLgogICAgIHN0b3BBbGxMb2FkZXJzKCk7CiAKLSAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmZyYW1lRGV0YWNoZWRGcm9tUGFyZW50KCZtX2ZyYW1lKTsKKyAgICBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmZyYW1lRGV0YWNoZWRGcm9tUGFyZW50KG1fZnJhbWUpOwogCiAgICAgZGV0
YWNoVmlld3NBbmREb2N1bWVudExvYWRlcigpOwogCkBAIC0zMDM1LDE0ICszMDM1LDE0IEBAIHZv
aWQgRnJhbWVMb2FkZXI6OmxvYWRlZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlKENhY2hlZFJlc291
cmNlKiByZXNvdXJjZSwgUmVzb3VyCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICghcGFnZS0+
YXJlTWVtb3J5Q2FjaGVDbGllbnRDYWxsc0VuYWJsZWQoKSkgewotICAgICAgICBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmRpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZShwYWdlLCBtX2Rv
Y3VtZW50TG9hZGVyLmdldCgpLCByZXNvdXJjZSk7CisgICAgICAgIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6ZGlkTG9hZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlKCpwYWdlLCBtX2RvY3VtZW50
TG9hZGVyLmdldCgpLCByZXNvdXJjZSk7CiAgICAgICAgIG1fZG9jdW1lbnRMb2FkZXItPnJlY29y
ZE1lbW9yeUNhY2hlTG9hZEZvckZ1dHVyZUNsaWVudE5vdGlmaWNhdGlvbihyZXNvdXJjZS0+cmVz
b3VyY2VSZXF1ZXN0KCkpOwogICAgICAgICBtX2RvY3VtZW50TG9hZGVyLT5kaWRUZWxsQ2xpZW50
QWJvdXRMb2FkKHJlc291cmNlLT51cmwoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAg
ICBpZiAobV9jbGllbnQuZGlzcGF0Y2hEaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUobV9k
b2N1bWVudExvYWRlci5nZXQoKSwgbmV3UmVxdWVzdCwgcmVzb3VyY2UtPnJlc3BvbnNlKCksIHJl
c291cmNlLT5lbmNvZGVkU2l6ZSgpKSkgewotICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmRpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZShwYWdlLCBtX2RvY3VtZW50TG9hZGVy
LmdldCgpLCByZXNvdXJjZSk7CisgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlk
TG9hZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlKCpwYWdlLCBtX2RvY3VtZW50TG9hZGVyLmdldCgp
LCByZXNvdXJjZSk7CiAgICAgICAgIG1fZG9jdW1lbnRMb2FkZXItPmRpZFRlbGxDbGllbnRBYm91
dExvYWQocmVzb3VyY2UtPnVybCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTMwNTAs
NyArMzA1MCw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRlZFJlc291cmNlRnJvbU1lbW9yeUNh
Y2hlKENhY2hlZFJlc291cmNlKiByZXNvdXJjZSwgUmVzb3VyCiAgICAgdW5zaWduZWQgbG9uZyBp
ZGVudGlmaWVyOwogICAgIFJlc291cmNlRXJyb3IgZXJyb3I7CiAgICAgcmVxdWVzdEZyb21EZWxl
Z2F0ZShuZXdSZXF1ZXN0LCBpZGVudGlmaWVyLCBlcnJvcik7Ci0gICAgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjptYXJrUmVzb3VyY2VBc0NhY2hlZChwYWdlLCBpZGVudGlmaWVyKTsKKyAgICBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246Om1hcmtSZXNvdXJjZUFzQ2FjaGVkKCpwYWdlLCBpZGVu
dGlmaWVyKTsKICAgICBub3RpZmllcigpLnNlbmRSZW1haW5pbmdEZWxlZ2F0ZU1lc3NhZ2VzKG1f
ZG9jdW1lbnRMb2FkZXIuZ2V0KCksIGlkZW50aWZpZXIsIG5ld1JlcXVlc3QsIHJlc291cmNlLT5y
ZXNwb25zZSgpLCAwLCByZXNvdXJjZS0+ZW5jb2RlZFNpemUoKSwgMCwgZXJyb3IpOwogfQogCkBA
IC0zMzI1LDEwICszMzI1LDEwIEBAIHZvaWQgRnJhbWVMb2FkZXI6OmRpc3BhdGNoRGlkQ2xlYXJX
aW5kb3dPYmplY3RJbldvcmxkKERPTVdyYXBwZXJXb3JsZCYgd29ybGQpCiAKICNpZiBFTkFCTEUo
SU5TUEVDVE9SKQogICAgIGlmIChQYWdlKiBwYWdlID0gbV9mcmFtZS5wYWdlKCkpCi0gICAgICAg
IHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS5kaWRDbGVhcldpbmRvd09iamVjdEluV29ybGQo
Jm1fZnJhbWUsIHdvcmxkKTsKKyAgICAgICAgcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLmRp
ZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZChtX2ZyYW1lLCB3b3JsZCk7CiAjZW5kaWYKIAotICAg
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxkKCZt
X2ZyYW1lLCB3b3JsZCk7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDbGVhcldp
bmRvd09iamVjdEluV29ybGQobV9mcmFtZSwgd29ybGQpOwogfQogCiB2b2lkIEZyYW1lTG9hZGVy
OjpkaXNwYXRjaEdsb2JhbE9iamVjdEF2YWlsYWJsZUluQWxsV29ybGRzKCkKQEAgLTMzODUsNyAr
MzM4NSw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmRpc3BhdGNoRGlkQ29tbWl0TG9hZCgpCiAgICAg
ICAgIG1fZnJhbWUucGFnZSgpLT5yZXNldFNlZW5NZWRpYUVuZ2luZXMoKTsKICAgICB9CiAKLSAg
ICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENvbW1pdExvYWQoJm1fZnJhbWUsIG1fZG9j
dW1lbnRMb2FkZXIuZ2V0KCkpOworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ29t
bWl0TG9hZChtX2ZyYW1lLCBtX2RvY3VtZW50TG9hZGVyLmdldCgpKTsKIAogI2lmIEVOQUJMRShS
RU1PVEVfSU5TUEVDVE9SKQogICAgIGlmIChtX2ZyYW1lLmlzTWFpbkZyYW1lKCkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwCmluZGV4IGQyMjMz
ZDAyNWI1MzU0MmVjZjQyYmMzNDYzMzQ1OGFjNGY4Y2NjNjYuLmM0ZGQ2MjA5NjUzYTkyZTBjZjJj
ZDBhZmJkMDJlNWI1NWY4MGY4NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9S
ZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNv
dXJjZUxvYWRTY2hlZHVsZXIuY3BwCkBAIC0yMDAsNyArMjAwLDcgQEAgdm9pZCBSZXNvdXJjZUxv
YWRTY2hlZHVsZXI6OnNjaGVkdWxlTG9hZChSZXNvdXJjZUxvYWRlciogcmVzb3VyY2VMb2FkZXIp
CiAKIHZvaWQgUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpub3RpZnlEaWRTY2hlZHVsZVJlc291cmNl
UmVxdWVzdChSZXNvdXJjZUxvYWRlciogbG9hZGVyKQogewotICAgIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6ZGlkU2NoZWR1bGVSZXNvdXJjZVJlcXVlc3QobG9hZGVyLT5mcmFtZUxvYWRlcigp
ID8gbG9hZGVyLT5mcmFtZUxvYWRlcigpLT5mcmFtZSgpLmRvY3VtZW50KCkgOiAwLCBsb2FkZXIt
PnVybCgpKTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFNjaGVkdWxlUmVzb3Vy
Y2VSZXF1ZXN0KGxvYWRlci0+ZnJhbWVMb2FkZXIoKSA/IGxvYWRlci0+ZnJhbWVMb2FkZXIoKS0+
ZnJhbWUoKS5kb2N1bWVudCgpIDogbnVsbHB0ciwgbG9hZGVyLT51cmwoKSk7CiB9CiAKICNpZiBV
U0UoUVVJQ0tfTE9PSykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJj
ZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCmlu
ZGV4IDNlNGQ2ZTMyNDg5MTQ4MTNlZjc5ZmE3ZDFmMmFjYTQ1ZGQ5Mjk0YjkuLjYxZmZiNjUzNzZl
MmU0ODU0ODE0M2JmODhjNGRkNThkMzJjOWM4YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jl
c291cmNlTG9hZGVyLmNwcApAQCAtMjcyLDEwICsyNzIsOCBAQCB2b2lkIFJlc291cmNlTG9hZGVy
Ojp3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJj
ZVJlcwogCiAgICAgICAgIGZyYW1lTG9hZGVyKCktPm5vdGlmaWVyKCkud2lsbFNlbmRSZXF1ZXN0
KHRoaXMsIHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpOwogICAgIH0KLSNpZiBFTkFCTEUoSU5T
UEVDVE9SKQogICAgIGVsc2UKICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxs
U2VuZFJlcXVlc3QobV9mcmFtZS5nZXQoKSwgbV9pZGVudGlmaWVyLCBtX2ZyYW1lLT5sb2FkZXIo
KS5kb2N1bWVudExvYWRlcigpLCByZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlKTsKLSNlbmRpZgog
CiAgICAgaWYgKCFyZWRpcmVjdFJlc3BvbnNlLmlzTnVsbCgpKQogICAgICAgICBwbGF0Zm9ybVN0
cmF0ZWdpZXMoKS0+bG9hZGVyU3RyYXRlZ3koKS0+cmVzb3VyY2VMb2FkU2NoZWR1bGVyKCktPmNy
b3NzT3JpZ2luUmVkaXJlY3RSZWNlaXZlZCh0aGlzLCByZXF1ZXN0LnVybCgpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91
cC5jcHAKaW5kZXggZTk1NGEzMzdlMDgyNzc3YzgzYzUzYjZjZWFiOTQ5ZDZkODUwNTY5Yi4uYzc5
NzEwOTAzMjIzZjZiMDI2YWUxMTgxZmQxN2FmNjQzYWNkMjVmMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAK
QEAgLTUwMiw3ICs1MDIsNyBAQCBQYXNzUmVmUHRyPFJlc291cmNlSGFuZGxlPiBBcHBsaWNhdGlv
bkNhY2hlR3JvdXA6OmNyZWF0ZVJlc291cmNlSGFuZGxlKGNvbnN0IFVSTAogdm9pZCBBcHBsaWNh
dGlvbkNhY2hlR3JvdXA6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSogaGFuZGxl
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKICNpZiBFTkFCTEUoSU5TUEVD
VE9SKQotICAgIERvY3VtZW50TG9hZGVyKiBsb2FkZXIgPSAoaGFuZGxlID09IG1fbWFuaWZlc3RI
YW5kbGUpID8gMCA6IG1fZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCk7CisgICAgRG9j
dW1lbnRMb2FkZXIqIGxvYWRlciA9IChoYW5kbGUgPT0gbV9tYW5pZmVzdEhhbmRsZSkgPyBudWxs
cHRyIDogbV9mcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKTsKICAgICBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb25Db29raWUgY29va2llID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3
aWxsUmVjZWl2ZVJlc291cmNlUmVzcG9uc2UobV9mcmFtZSwgbV9jdXJyZW50UmVzb3VyY2VJZGVu
dGlmaWVyLCByZXNwb25zZSk7CiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNl
aXZlUmVzb3VyY2VSZXNwb25zZShjb29raWUsIG1fY3VycmVudFJlc291cmNlSWRlbnRpZmllciwg
bG9hZGVyLCByZXNwb25zZSwgMCk7CiAjZW5kaWYKQEAgLTU3Nyw5ICs1NzcsNyBAQCB2b2lkIEFw
cGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqIGhhbmRs
ZSwgY29uc3QgY2hhciogZAogewogICAgIFVOVVNFRF9QQVJBTShlbmNvZGVkRGF0YUxlbmd0aCk7
CiAKLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
ZGlkUmVjZWl2ZURhdGEobV9mcmFtZSwgbV9jdXJyZW50UmVzb3VyY2VJZGVudGlmaWVyLCAwLCBs
ZW5ndGgsIDApOwotI2VuZGlmCiAKICAgICBpZiAoaGFuZGxlID09IG1fbWFuaWZlc3RIYW5kbGUp
IHsKICAgICAgICAgZGlkUmVjZWl2ZU1hbmlmZXN0RGF0YShkYXRhLCBsZW5ndGgpOwpAQCAtNTk0
LDExICs1OTIsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkUmVjZWl2ZURhdGEo
UmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgY29uc3QgY2hhciogZAogCiB2b2lkIEFwcGxpY2F0aW9u
Q2FjaGVHcm91cDo6ZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBkb3Vi
bGUgZmluaXNoVGltZSkKIHsKLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6ZGlkRmluaXNoTG9hZGluZyhtX2ZyYW1lLCBtX2ZyYW1lLT5sb2FkZXIo
KS5kb2N1bWVudExvYWRlcigpLCBtX2N1cnJlbnRSZXNvdXJjZUlkZW50aWZpZXIsIGZpbmlzaFRp
bWUpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oZmluaXNoVGltZSk7Ci0jZW5kaWYKIAogICAg
IGlmIChoYW5kbGUgPT0gbV9tYW5pZmVzdEhhbmRsZSkgewogICAgICAgICBkaWRGaW5pc2hMb2Fk
aW5nTWFuaWZlc3QoKTsKQEAgLTYzMywxMSArNjI3LDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hl
R3JvdXA6OmRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgZG91YmxlIGZp
bmkKIAogdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRpZEZhaWwoUmVzb3VyY2VIYW5kbGUq
IGhhbmRsZSwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7Ci0jaWYgRU5BQkxFKElOU1BF
Q1RPUikKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZhaWxMb2FkaW5nKG1fZnJh
bWUsIG1fZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCksIG1fY3VycmVudFJlc291cmNl
SWRlbnRpZmllciwgZXJyb3IpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oZXJyb3IpOwotI2Vu
ZGlmCiAKICAgICBpZiAoaGFuZGxlID09IG1fbWFuaWZlc3RIYW5kbGUpIHsKICAgICAgICAgLy8g
QSBuZXR3b3JrIGVycm9yIGlzIGxvZ2dlZCBlbHNld2hlcmUsIG5vIG5lZWQgdG8gbG9nIGFnYWlu
LiBBbHNvLCBpdCdzIG5vcm1hbCBmb3IgbWFuaWZlc3QgZmV0Y2hpbmcgdG8gZmFpbCB3aGVuIHdv
cmtpbmcgb2ZmbGluZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVz
b3VyY2UuY3BwCmluZGV4IDhlNzM3YTg2MmY2ZmJmNjRjYzFlOWJiN2JjMmJlMzE1ZWZjNmMyMmEu
LjY2MjU1NzAyYmNhYWU4NWIzNWI1MjhmYWZlZTdjYjI4MGFlNjU4NmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcApAQCAtNDgzLDcgKzQ4Myw3
IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OmRlY29kZWREYXRhRGVsZXRpb25UaW1lckZpcmVkKCkK
IGJvb2wgQ2FjaGVkUmVzb3VyY2U6OmRlbGV0ZUlmUG9zc2libGUoKQogewogICAgIGlmIChjYW5E
ZWxldGUoKSAmJiAhaW5DYWNoZSgpKSB7Ci0gICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6d2lsbERlc3Ryb3lDYWNoZWRSZXNvdXJjZSh0aGlzKTsKKyAgICAgICAgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjp3aWxsRGVzdHJveUNhY2hlZFJlc291cmNlKCp0aGlzKTsKICAgICAgICAg
ZGVsZXRlIHRoaXM7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21l
LmNwcAppbmRleCAyMzdmZGJiNTNiYTViOTdhMDk5YmY3ZWRjOTJiZGNkZmJiY2Y5NjBmLi42OGJm
NjY4Y2EzMjU2M2UxY2YxYmE3MmU1NjQzZjdjNjM2OTczOTIwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUu
Y3BwCkBAIC05NSw3ICs5NSw3IEBAIHZvaWQgQ2hyb21lOjppbnZhbGlkYXRlQ29udGVudHNGb3JT
bG93U2Nyb2xsKGNvbnN0IEludFJlY3QmIHVwZGF0ZVJlY3QpCiB2b2lkIENocm9tZTo6c2Nyb2xs
KGNvbnN0IEludFNpemUmIHNjcm9sbERlbHRhLCBjb25zdCBJbnRSZWN0JiByZWN0VG9TY3JvbGws
IGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KQogewogICAgIG1fY2xpZW50LnNjcm9sbChzY3JvbGxE
ZWx0YSwgcmVjdFRvU2Nyb2xsLCBjbGlwUmVjdCk7Ci0gICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpkaWRTY3JvbGwoJm1fcGFnZSk7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpk
aWRTY3JvbGwobV9wYWdlKTsKIH0KIAogI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQpAQCAt
Mjk3LDcgKzI5Nyw3IEBAIGJvb2wgQ2hyb21lOjpydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwo
Y29uc3QgU3RyaW5nJiBtZXNzYWdlLCBGcmFtZSogZnJhbWUpCiAgICAgLy8gb3RoZXJ3aXNlIGNh
dXNlIHRoZSBsb2FkIHRvIGNvbnRpbnVlIHdoaWxlIHdlJ3JlIGluIHRoZSBtaWRkbGUgb2YgZXhl
Y3V0aW5nIEphdmFTY3JpcHQuCiAgICAgUGFnZUdyb3VwTG9hZERlZmVycmVyIGRlZmVycmVyKG1f
cGFnZSwgdHJ1ZSk7CiAKLSAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgY29va2ll
ID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUnVuSmF2YVNjcmlwdERpYWxvZygmbV9w
YWdlLCBtZXNzYWdlKTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgY29va2ll
ID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUnVuSmF2YVNjcmlwdERpYWxvZyhtX3Bh
Z2UsIG1lc3NhZ2UpOwogICAgIGJvb2wgb2sgPSBtX2NsaWVudC5ydW5CZWZvcmVVbmxvYWRDb25m
aXJtUGFuZWwobWVzc2FnZSwgZnJhbWUpOwogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
ZGlkUnVuSmF2YVNjcmlwdERpYWxvZyhjb29raWUpOwogICAgIHJldHVybiBvazsKQEAgLTMyMSw3
ICszMjEsNyBAQCB2b2lkIENocm9tZTo6cnVuSmF2YVNjcmlwdEFsZXJ0KEZyYW1lKiBmcmFtZSwg
Y29uc3QgU3RyaW5nJiBtZXNzYWdlKQogICAgIG5vdGlmeVBvcHVwT3BlbmluZ09ic2VydmVycygp
OwogICAgIFN0cmluZyBkaXNwbGF5TWVzc2FnZSA9IGZyYW1lLT5kaXNwbGF5U3RyaW5nTW9kaWZp
ZWRCeUVuY29kaW5nKG1lc3NhZ2UpOwogCi0gICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29v
a2llIGNvb2tpZSA9IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFJ1bkphdmFTY3JpcHRE
aWFsb2coJm1fcGFnZSwgZGlzcGxheU1lc3NhZ2UpOworICAgIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbkNvb2tpZSBjb29raWUgPSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxSdW5KYXZh
U2NyaXB0RGlhbG9nKG1fcGFnZSwgZGlzcGxheU1lc3NhZ2UpOwogICAgIG1fY2xpZW50LnJ1bkph
dmFTY3JpcHRBbGVydChmcmFtZSwgZGlzcGxheU1lc3NhZ2UpOwogICAgIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZGlkUnVuSmF2YVNjcmlwdERpYWxvZyhjb29raWUpOwogfQpAQCAtMzM5LDcg
KzMzOSw3IEBAIGJvb2wgQ2hyb21lOjpydW5KYXZhU2NyaXB0Q29uZmlybShGcmFtZSogZnJhbWUs
IGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKICAgICBub3RpZnlQb3B1cE9wZW5pbmdPYnNlcnZlcnMo
KTsKICAgICBTdHJpbmcgZGlzcGxheU1lc3NhZ2UgPSBmcmFtZS0+ZGlzcGxheVN0cmluZ01vZGlm
aWVkQnlFbmNvZGluZyhtZXNzYWdlKTsKIAotICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNv
b2tpZSBjb29raWUgPSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxSdW5KYXZhU2NyaXB0
RGlhbG9nKCZtX3BhZ2UsIGRpc3BsYXlNZXNzYWdlKTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb25Db29raWUgY29va2llID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUnVuSmF2
YVNjcmlwdERpYWxvZyhtX3BhZ2UsIGRpc3BsYXlNZXNzYWdlKTsKICAgICBib29sIG9rID0gbV9j
bGllbnQucnVuSmF2YVNjcmlwdENvbmZpcm0oZnJhbWUsIGRpc3BsYXlNZXNzYWdlKTsKICAgICBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJ1bkphdmFTY3JpcHREaWFsb2coY29va2llKTsK
ICAgICByZXR1cm4gb2s7CkBAIC0zNTgsNyArMzU4LDcgQEAgYm9vbCBDaHJvbWU6OnJ1bkphdmFT
Y3JpcHRQcm9tcHQoRnJhbWUqIGZyYW1lLCBjb25zdCBTdHJpbmcmIHByb21wdCwgY29uc3QgU3Ry
aW4KICAgICBub3RpZnlQb3B1cE9wZW5pbmdPYnNlcnZlcnMoKTsKICAgICBTdHJpbmcgZGlzcGxh
eVByb21wdCA9IGZyYW1lLT5kaXNwbGF5U3RyaW5nTW9kaWZpZWRCeUVuY29kaW5nKHByb21wdCk7
CiAKLSAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgY29va2llID0gSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjp3aWxsUnVuSmF2YVNjcmlwdERpYWxvZygmbV9wYWdlLCBkaXNwbGF5
UHJvbXB0KTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgY29va2llID0gSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUnVuSmF2YVNjcmlwdERpYWxvZyhtX3BhZ2UsIGRp
c3BsYXlQcm9tcHQpOwogICAgIGJvb2wgb2sgPSBtX2NsaWVudC5ydW5KYXZhU2NyaXB0UHJvbXB0
KGZyYW1lLCBkaXNwbGF5UHJvbXB0LCBmcmFtZS0+ZGlzcGxheVN0cmluZ01vZGlmaWVkQnlFbmNv
ZGluZyhkZWZhdWx0VmFsdWUpLCByZXN1bHQpOwogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6ZGlkUnVuSmF2YVNjcmlwdERpYWxvZyhjb29raWUpOwogCkBAIC0zOTQsNyArMzk0LDcgQEAg
dm9pZCBDaHJvbWU6Om1vdXNlRGlkTW92ZU92ZXJFbGVtZW50KGNvbnN0IEhpdFRlc3RSZXN1bHQm
IHJlc3VsdCwgdW5zaWduZWQgbW9kaWYKICAgICAgICAgcHJlZmV0Y2hETlMocmVzdWx0LmFic29s
dXRlTGlua1VSTCgpLmhvc3QoKSk7CiAgICAgbV9jbGllbnQubW91c2VEaWRNb3ZlT3ZlckVsZW1l
bnQocmVzdWx0LCBtb2RpZmllckZsYWdzKTsKIAotICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6bW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQoJm1fcGFnZSwgcmVzdWx0LCBtb2RpZmllckZsYWdz
KTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Om1vdXNlRGlkTW92ZU92ZXJFbGVtZW50
KG1fcGFnZSwgcmVzdWx0LCBtb2RpZmllckZsYWdzKTsKIH0KIAogdm9pZCBDaHJvbWU6OnNldFRv
b2xUaXAoY29uc3QgSGl0VGVzdFJlc3VsdCYgcmVzdWx0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cu
Y3BwCmluZGV4IDVjZGE5MjRhNzZmMjQ2ZDJkMzI4Y2I4NjAxYmViMzAxYTI4NGJmZWYuLjc5NzA4
ODBmMjU3ZmVhMmQzNzM5NmU4YmIzMWZjMmUxYmJiYjY5ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdp
bmRvdy5jcHAKQEAgLTE4NjAsNyArMTg2MCw3IEBAIHZvaWQgRE9NV2luZG93OjpkaXNwYXRjaExv
YWRFdmVudCgpCiAgICAgLy8gRm9yIGxvYWQgZXZlbnRzLCBzZW5kIGEgc2VwYXJhdGUgbG9hZCBl
dmVudCB0byB0aGUgZW5jbG9zaW5nIGZyYW1lIG9ubHkuCiAgICAgLy8gVGhpcyBpcyBhIERPTSBl
eHRlbnNpb24gYW5kIGlzIGluZGVwZW5kZW50IG9mIGJ1YmJsaW5nL2NhcHR1cmluZyBydWxlcyBv
ZgogICAgIC8vIHRoZSBET00uCi0gICAgRWxlbWVudCogb3duZXJFbGVtZW50ID0gbV9mcmFtZSA/
IG1fZnJhbWUtPm93bmVyRWxlbWVudCgpIDogMDsKKyAgICBFbGVtZW50KiBvd25lckVsZW1lbnQg
PSBtX2ZyYW1lID8gbV9mcmFtZS0+b3duZXJFbGVtZW50KCkgOiBudWxscHRyOwogICAgIGlmIChv
d25lckVsZW1lbnQpCiAgICAgICAgIG93bmVyRWxlbWVudC0+ZGlzcGF0Y2hFdmVudChFdmVudDo6
Y3JlYXRlKGV2ZW50TmFtZXMoKS5sb2FkRXZlbnQsIGZhbHNlLCBmYWxzZSkpOwogCkBAIC0xODky
LDcgKzE4OTIsNyBAQCBib29sIERPTVdpbmRvdzo6ZGlzcGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2
ZW50PiBwcnBFdmVudCwgUGFzc1JlZlB0cjxFdmVudFRhcmdldAogICAgIGV2ZW50LT5zZXRDdXJy
ZW50VGFyZ2V0KHRoaXMpOwogICAgIGV2ZW50LT5zZXRFdmVudFBoYXNlKEV2ZW50OjpBVF9UQVJH
RVQpOwogCi0gICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIGNvb2tpZSA9IEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbERpc3BhdGNoRXZlbnRPbldpbmRvdyhmcmFtZSgpLCAq
ZXZlbnQsIHRoaXMpOworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWUg
PSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxEaXNwYXRjaEV2ZW50T25XaW5kb3coZnJh
bWUoKSwgKmV2ZW50LCAqdGhpcyk7CiAKICAgICBib29sIHJlc3VsdCA9IGZpcmVFdmVudExpc3Rl
bmVycyhldmVudC5nZXQoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZl
bnRIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAppbmRl
eCA0NWFhOGNkMWM3OTliMjNiNWExNGU3ZTBmZmFhOGJlNWFlM2JlZGYwLi42M2IyYTI0ZTc1OGNm
NjNjNGU2N2U2NDE3YmYxNWE0NGRmODMyNDZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0V2ZW50SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRs
ZXIuY3BwCkBAIC0xNjM2LDcgKzE2MzYsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91
c2VQcmVzc0V2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgcGxhdGZvcm1Nb3VzZQogewog
ICAgIFJlZlB0cjxGcmFtZVZpZXc+IHByb3RlY3RvcihtX2ZyYW1lLnZpZXcoKSk7CiAKLSAgICBp
ZiAoSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpoYW5kbGVNb3VzZVByZXNzKG1fZnJhbWUucGFn
ZSgpKSkgeworICAgIGlmIChJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmhhbmRsZU1vdXNlUHJl
c3MobV9mcmFtZSkpIHsKICAgICAgICAgaW52YWxpZGF0ZUNsaWNrKCk7CiAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIH0KQEAgLTM4NjYsNyArMzg2Niw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpo
YW5kbGVUb3VjaEV2ZW50KGNvbnN0IFBsYXRmb3JtVG91Y2hFdmVudCYgZXZlbnQpCiAgICAgICAg
ICAgICBOb2RlKiBub2RlID0gcmVzdWx0LmlubmVyRWxlbWVudCgpOwogICAgICAgICAgICAgQVNT
RVJUKG5vZGUpOwogCi0gICAgICAgICAgICBpZiAoSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpo
YW5kbGVUb3VjaEV2ZW50KG1fZnJhbWUucGFnZSgpLCBub2RlKSkKKyAgICAgICAgICAgIGlmIChu
b2RlICYmIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aGFuZGxlVG91Y2hFdmVudChtX2ZyYW1l
LCAqbm9kZSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICAgICAgICAgIERv
Y3VtZW50JiBkb2MgPSBub2RlLT5kb2N1bWVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9GcmFtZVZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3Bw
CmluZGV4IGQ5NjY1N2U0Y2U2ZWU0MGZiNDJlN2IzYzVkZmNlNjUyNmYxYjUzNzkuLmQ0MjYyYzhm
MTI1MTY1YzE1MzhjNWQwNGY0ZTQ2MDRhMGRlMzc5N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmll
dy5jcHAKQEAgLTExNTIsNyArMTE1Miw3IEBAIHZvaWQgRnJhbWVWaWV3OjpsYXlvdXQoYm9vbCBh
bGxvd1N1YnRyZWUpCiAgICAgaWYgKGlzUGFpbnRpbmcoKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIGNvb2tpZSA9IEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6d2lsbExheW91dCgmZnJhbWUoKSk7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uQ29va2llIGNvb2tpZSA9IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbExheW91
dChmcmFtZSgpKTsKICAgICBBbmltYXRpb25VcGRhdGVCbG9jayBhbmltYXRpb25VcGRhdGVCbG9j
aygmZnJhbWUoKS5hbmltYXRpb24oKSk7CiAgICAgCiAgICAgaWYgKCFhbGxvd1N1YnRyZWUgJiYg
bV9sYXlvdXRSb290KSB7CkBAIC0xMTg2LDcgKzExODYsNyBAQCB2b2lkIEZyYW1lVmlldzo6bGF5
b3V0KGJvb2wgYWxsb3dTdWJ0cmVlKQogICAgICAgICBpZiAoIXN0eWxlUmVzb2x2ZXIgfHwgc3R5
bGVSZXNvbHZlci0+aGFzTWVkaWFRdWVyaWVzQWZmZWN0ZWRCeVZpZXdwb3J0Q2hhbmdlKCkpIHsK
ICAgICAgICAgICAgIGRvY3VtZW50LnN0eWxlUmVzb2x2ZXJDaGFuZ2VkKERlZmVyUmVjYWxjU3R5
bGUpOwogICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgaW5zdHJ1bWVudGF0aW9uIGV2ZW50IGlz
IG5vdCBzdHJpY3RseSBhY2N1cmF0ZSBzaW5jZSBjYWNoZWQgbWVkaWEgcXVlcnkgcmVzdWx0cyBk
byBub3QgcGVyc2lzdCBhY3Jvc3MgU3R5bGVSZXNvbHZlciByZWJ1aWxkcy4KLSAgICAgICAgICAg
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6bWVkaWFRdWVyeVJlc3VsdENoYW5nZWQoJmRvY3Vt
ZW50KTsKKyAgICAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6bWVkaWFRdWVyeVJl
c3VsdENoYW5nZWQoZG9jdW1lbnQpOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIGRvY3Vt
ZW50LmV2YWx1YXRlTWVkaWFRdWVyeUxpc3QoKTsKIApAQCAtMTQ1NCw3ICsxNDU0LDcgQEAgU3Ry
aW5nIEZyYW1lVmlldzo6bWVkaWFUeXBlKCkgY29uc3QKIHsKICAgICAvLyBTZWUgaWYgd2UgaGF2
ZSBhbiBvdmVycmlkZSB0eXBlLgogICAgIFN0cmluZyBvdmVycmlkZVR5cGUgPSBmcmFtZSgpLmxv
YWRlcigpLmNsaWVudCgpLm92ZXJyaWRlTWVkaWFUeXBlKCk7Ci0gICAgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjphcHBseUVtdWxhdGVkTWVkaWEoJmZyYW1lKCksICZvdmVycmlkZVR5cGUpOwor
ICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6YXBwbHlFbXVsYXRlZE1lZGlhKGZyYW1lKCks
IG92ZXJyaWRlVHlwZSk7CiAgICAgaWYgKCFvdmVycmlkZVR5cGUuaXNOdWxsKCkpCiAgICAgICAg
IHJldHVybiBvdmVycmlkZVR5cGU7CiAgICAgcmV0dXJuIG1fbWVkaWFUeXBlOwpAQCAtMjQ0Niw3
ICsyNDQ2LDcgQEAgdm9pZCBGcmFtZVZpZXc6OnNjaGVkdWxlUmVsYXlvdXQoKQogICAgICAgICBy
ZXR1cm47CiAgICAgaWYgKCFmcmFtZSgpLmRvY3VtZW50KCktPnNob3VsZFNjaGVkdWxlTGF5b3V0
KCkpCiAgICAgICAgIHJldHVybjsKLSAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZElu
dmFsaWRhdGVMYXlvdXQoJmZyYW1lKCkpOworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
ZGlkSW52YWxpZGF0ZUxheW91dChmcmFtZSgpKTsKICAgICAvLyBXaGVuIGZyYW1lIGZsYXR0ZW5p
bmcgaXMgZW5hYmxlZCwgdGhlIGNvbnRlbnRzIG9mIHRoZSBmcmFtZSBjb3VsZCBhZmZlY3QgdGhl
IGxheW91dCBvZiB0aGUgcGFyZW50IGZyYW1lcy4KICAgICAvLyBBbHNvIGludmFsaWRhdGUgcGFy
ZW50IGZyYW1lIHN0YXJ0aW5nIGZyb20gdGhlIG93bmVyIGVsZW1lbnQgb2YgdGhpcyBmcmFtZS4K
ICAgICBpZiAoZnJhbWUoKS5vd25lclJlbmRlcmVyKCkgJiYgaXNJbkNoaWxkRnJhbWVXaXRoRnJh
bWVGbGF0dGVuaW5nKCkpCkBAIC0yNDk1LDcgKzI0OTUsNyBAQCB2b2lkIEZyYW1lVmlldzo6c2No
ZWR1bGVSZWxheW91dE9mU3VidHJlZShSZW5kZXJFbGVtZW50JiBuZXdSZWxheW91dFJvb3QpCiAg
ICAgICAgIHN0ZDo6Y2hyb25vOjptaWxsaXNlY29uZHMgZGVsYXkgPSByZW5kZXJWaWV3LmRvY3Vt
ZW50KCkubWluaW11bUxheW91dERlbGF5KCk7CiAgICAgICAgIEFTU0VSVCghbmV3UmVsYXlvdXRS
b290LmNvbnRhaW5lcigpIHx8ICFuZXdSZWxheW91dFJvb3QuY29udGFpbmVyKCktPm5lZWRzTGF5
b3V0KCkpOwogICAgICAgICBtX2xheW91dFJvb3QgPSAmbmV3UmVsYXlvdXRSb290OwotICAgICAg
ICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEludmFsaWRhdGVMYXlvdXQoJmZyYW1lKCkp
OworICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEludmFsaWRhdGVMYXlvdXQo
ZnJhbWUoKSk7CiAgICAgICAgIG1fZGVsYXllZExheW91dCA9IGRlbGF5LmNvdW50KCk7CiAgICAg
ICAgIG1fbGF5b3V0VGltZXIuc3RhcnRPbmVTaG90KGRlbGF5KTsKICAgICAgICAgcmV0dXJuOwpA
QCAtMjUwNyw3ICsyNTA3LDcgQEAgdm9pZCBGcmFtZVZpZXc6OnNjaGVkdWxlUmVsYXlvdXRPZlN1
YnRyZWUoUmVuZGVyRWxlbWVudCYgbmV3UmVsYXlvdXRSb290KQogICAgIGlmICghbV9sYXlvdXRS
b290KSB7CiAgICAgICAgIC8vIEp1c3QgcmVsYXlvdXQgdGhlIHN1YnRyZWUuCiAgICAgICAgIG5l
d1JlbGF5b3V0Um9vdC5tYXJrQ29udGFpbmluZ0Jsb2Nrc0ZvckxheW91dChmYWxzZSk7Ci0gICAg
ICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkSW52YWxpZGF0ZUxheW91dCgmZnJhbWUo
KSk7CisgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkSW52YWxpZGF0ZUxheW91
dChmcmFtZSgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMjUyMyw3ICsyNTIzLDcg
QEAgdm9pZCBGcmFtZVZpZXc6OnNjaGVkdWxlUmVsYXlvdXRPZlN1YnRyZWUoUmVuZGVyRWxlbWVu
dCYgbmV3UmVsYXlvdXRSb290KQogICAgICAgICBtX2xheW91dFJvb3QtPm1hcmtDb250YWluaW5n
QmxvY2tzRm9yTGF5b3V0KGZhbHNlLCAmbmV3UmVsYXlvdXRSb290KTsKICAgICAgICAgbV9sYXlv
dXRSb290ID0gJm5ld1JlbGF5b3V0Um9vdDsKICAgICAgICAgQVNTRVJUKCFtX2xheW91dFJvb3Qt
PmNvbnRhaW5lcigpIHx8ICFtX2xheW91dFJvb3QtPmNvbnRhaW5lcigpLT5uZWVkc0xheW91dCgp
KTsKLSAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRJbnZhbGlkYXRlTGF5b3V0
KCZmcmFtZSgpKTsKKyAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRJbnZhbGlk
YXRlTGF5b3V0KGZyYW1lKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0yNTMxLDcg
KzI1MzEsNyBAQCB2b2lkIEZyYW1lVmlldzo6c2NoZWR1bGVSZWxheW91dE9mU3VidHJlZShSZW5k
ZXJFbGVtZW50JiBuZXdSZWxheW91dFJvb3QpCiAgICAgbV9sYXlvdXRSb290LT5tYXJrQ29udGFp
bmluZ0Jsb2Nrc0ZvckxheW91dChmYWxzZSk7CiAgICAgbV9sYXlvdXRSb290ID0gMDsKICAgICBu
ZXdSZWxheW91dFJvb3QubWFya0NvbnRhaW5pbmdCbG9ja3NGb3JMYXlvdXQoZmFsc2UpOwotICAg
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkSW52YWxpZGF0ZUxheW91dCgmZnJhbWUoKSk7
CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRJbnZhbGlkYXRlTGF5b3V0KGZyYW1l
KCkpOwogfQogCiBib29sIEZyYW1lVmlldzo6bGF5b3V0UGVuZGluZygpIGNvbnN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25zb2xlQ2xpZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZUNvbnNvbGVDbGllbnQuY3BwCmluZGV4IDYxY2I1OGI1ZGRjZGQ5NmQ2
ZWEyOWQ3NDI2YWY1M2I3YzNhMDFhNzAuLmNlY2FmMWZkMzY2ZTNlMmRiODBkZWVhZTA5YTMwMWM5
YmEyNGJiNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbnNvbGVDbGll
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbnNvbGVDbGllbnQuY3BwCkBA
IC0xMTcsOSArMTE3LDkgQEAgdm9pZCBQYWdlQ29uc29sZUNsaWVudDo6YWRkTWVzc2FnZShNZXNz
YWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZUxldmVsIGxldmVsLCBjb24KICAgICAgICAgcmV0dXJu
OwogCiAgICAgaWYgKGNhbGxTdGFjaykKLSAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjphZGRNZXNzYWdlVG9Db25zb2xlKCZtX3BhZ2UsIHNvdXJjZSwgTWVzc2FnZVR5cGU6OkxvZywg
bGV2ZWwsIG1lc3NhZ2UsIGNhbGxTdGFjaywgcmVxdWVzdElkZW50aWZpZXIpOworICAgICAgICBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmFkZE1lc3NhZ2VUb0NvbnNvbGUobV9wYWdlLCBzb3Vy
Y2UsIE1lc3NhZ2VUeXBlOjpMb2csIGxldmVsLCBtZXNzYWdlLCBjYWxsU3RhY2ssIHJlcXVlc3RJ
ZGVudGlmaWVyKTsKICAgICBlbHNlCi0gICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
YWRkTWVzc2FnZVRvQ29uc29sZSgmbV9wYWdlLCBzb3VyY2UsIE1lc3NhZ2VUeXBlOjpMb2csIGxl
dmVsLCBtZXNzYWdlLCB1cmwsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgc3RhdGUsIHJlcXVl
c3RJZGVudGlmaWVyKTsKKyAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjphZGRNZXNz
YWdlVG9Db25zb2xlKG1fcGFnZSwgc291cmNlLCBNZXNzYWdlVHlwZTo6TG9nLCBsZXZlbCwgbWVz
c2FnZSwgdXJsLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIHN0YXRlLCByZXF1ZXN0SWRlbnRp
Zmllcik7CiAKICAgICBpZiAoc291cmNlID09IE1lc3NhZ2VTb3VyY2U6OkNTUykKICAgICAgICAg
cmV0dXJuOwpAQCAtMTQyLDcgKzE0Miw3IEBAIHZvaWQgUGFnZUNvbnNvbGVDbGllbnQ6Om1lc3Nh
Z2VXaXRoVHlwZUFuZExldmVsKE1lc3NhZ2VUeXBlIHR5cGUsIE1lc3NhZ2VMZXZlbCBsCiAKICAg
ICBTdHJpbmcgbWVzc2FnZTsKICAgICBib29sIGdvdE1lc3NhZ2UgPSBhcmd1bWVudHMtPmdldEZp
cnN0QXJndW1lbnRBc1N0cmluZyhtZXNzYWdlKTsKLSAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmFkZE1lc3NhZ2VUb0NvbnNvbGUoJm1fcGFnZSwgTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQ
SSwgdHlwZSwgbGV2ZWwsIG1lc3NhZ2UsIGV4ZWMsIGFyZ3VtZW50cyk7CisgICAgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjphZGRNZXNzYWdlVG9Db25zb2xlKG1fcGFnZSwgTWVzc2FnZVNvdXJj
ZTo6Q29uc29sZUFQSSwgdHlwZSwgbGV2ZWwsIG1lc3NhZ2UsIGV4ZWMsIGFyZ3VtZW50cyk7CiAK
ICAgICBpZiAobV9wYWdlLnVzZXNFcGhlbWVyYWxTZXNzaW9uKCkpCiAgICAgICAgIHJldHVybjsK
QEAgLTE2MCwzNCArMTYwLDM0IEBAIHZvaWQgUGFnZUNvbnNvbGVDbGllbnQ6Om1lc3NhZ2VXaXRo
VHlwZUFuZExldmVsKE1lc3NhZ2VUeXBlIHR5cGUsIE1lc3NhZ2VMZXZlbCBsCiAKIHZvaWQgUGFn
ZUNvbnNvbGVDbGllbnQ6OmNvdW50KEpTQzo6RXhlY1N0YXRlKiBleGVjLCBQYXNzUmVmUHRyPFNj
cmlwdEFyZ3VtZW50cz4gYXJndW1lbnRzKQogewotICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6Y29uc29sZUNvdW50KCZtX3BhZ2UsIGV4ZWMsIGFyZ3VtZW50cyk7CisgICAgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpjb25zb2xlQ291bnQobV9wYWdlLCBleGVjLCBhcmd1bWVudHMpOwog
fQogCiB2b2lkIFBhZ2VDb25zb2xlQ2xpZW50Ojpwcm9maWxlKEpTQzo6RXhlY1N0YXRlKiBleGVj
LCBjb25zdCBTdHJpbmcmIHRpdGxlKQogewotICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
c3RhcnRQcm9maWxpbmcoJm1fcGFnZSwgZXhlYywgdGl0bGUpOworICAgIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6c3RhcnRQcm9maWxpbmcobV9wYWdlLCBleGVjLCB0aXRsZSk7CiB9CiAKIHZv
aWQgUGFnZUNvbnNvbGVDbGllbnQ6OnByb2ZpbGVFbmQoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIGNv
bnN0IFN0cmluZyYgdGl0bGUpCiB7Ci0gICAgaWYgKFJlZlB0cjxKU0M6OlByb2ZpbGU+IHByb2Zp
bGUgPSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnN0b3BQcm9maWxpbmcoJm1fcGFnZSwgZXhl
YywgdGl0bGUpKQorICAgIGlmIChSZWZQdHI8SlNDOjpQcm9maWxlPiBwcm9maWxlID0gSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpzdG9wUHJvZmlsaW5nKG1fcGFnZSwgZXhlYywgdGl0bGUpKQog
ICAgICAgICBtX3Byb2ZpbGVzLmFwcGVuZChwcm9maWxlLnJlbGVhc2UoKSk7CiB9CiAKIHZvaWQg
UGFnZUNvbnNvbGVDbGllbnQ6OnRpbWUoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBTdHJpbmcmIHRp
dGxlKQogewotICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c3RhcnRDb25zb2xlVGltaW5n
KCZtX3BhZ2UubWFpbkZyYW1lKCksIHRpdGxlKTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OnN0YXJ0Q29uc29sZVRpbWluZyhtX3BhZ2UubWFpbkZyYW1lKCksIHRpdGxlKTsKIH0KIAog
dm9pZCBQYWdlQ29uc29sZUNsaWVudDo6dGltZUVuZChKU0M6OkV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgU3RyaW5nJiB0aXRsZSkKIHsKICAgICBSZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPiBjYWxsU3Rh
Y2soY3JlYXRlU2NyaXB0Q2FsbFN0YWNrRm9yQ29uc29sZShleGVjLCAxKSk7Ci0gICAgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpzdG9wQ29uc29sZVRpbWluZygmbV9wYWdlLm1haW5GcmFtZSgp
LCB0aXRsZSwgY2FsbFN0YWNrLnJlbGVhc2UoKSk7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpzdG9wQ29uc29sZVRpbWluZyhtX3BhZ2UubWFpbkZyYW1lKCksIHRpdGxlLCBjYWxsU3Rh
Y2sucmVsZWFzZSgpKTsKIH0KIAogdm9pZCBQYWdlQ29uc29sZUNsaWVudDo6dGltZVN0YW1wKEpT
Qzo6RXhlY1N0YXRlKiwgUGFzc1JlZlB0cjxTY3JpcHRBcmd1bWVudHM+IGFyZ3VtZW50cykKIHsK
LSAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNvbnNvbGVUaW1lU3RhbXAoJm1fcGFnZS5t
YWluRnJhbWUoKSwgYXJndW1lbnRzKTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNv
bnNvbGVUaW1lU3RhbXAobV9wYWdlLm1haW5GcmFtZSgpLCBhcmd1bWVudHMpOwogfQogCiB2b2lk
IFBhZ2VDb25zb2xlQ2xpZW50OjpjbGVhclByb2ZpbGVzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5j
cHAKaW5kZXggNDdiY2E3MDVhNGVhMmZhZDcyOWQ0ODhlOGQ0Mjg1ODg2YzllYTBmZS4uYTkwYWYz
N2IzOWZlMjVlYjNjOTM4ZTQ1ZjYwMDM2YTEyNmI0NzE5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5n
cy5jcHAKQEAgLTQxNCw3ICs0MTQsNyBAQCB2b2lkIFNldHRpbmdzOjpzZXRTY3JpcHRFbmFibGVk
KGJvb2wgaXNTY3JpcHRFbmFibGVkKQogI2lmIFBMQVRGT1JNKElPUykKICAgICBtX3BhZ2UtPnNl
dE5lZWRzUmVjYWxjU3R5bGVJbkFsbEZyYW1lcygpOwogI2VuZGlmCi0gICAgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpzY3JpcHRzRW5hYmxlZChtX3BhZ2UsIG1faXNTY3JpcHRFbmFibGVkKTsK
KyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNjcmlwdHNFbmFibGVkKCptX3BhZ2UsIG1f
aXNTY3JpcHRFbmFibGVkKTsKIH0KIAogdm9pZCBTZXR0aW5nczo6c2V0SmF2YUVuYWJsZWQoYm9v
bCBpc0phdmFFbmFibGVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAK
aW5kZXggOTAyNTU3NDAyNzM2YmQzM2UxODFiMzZlZTc4YzgyNTE1M2ZiYTM0Yy4uNTQ5N2ViODY2
ZDEzM2NlOTY3MmYzMjU0MTU4ODczNWQxMDRkYjdhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXIuY3BwCkBAIC0yMjU1LDcgKzIyNTUsNyBAQCB2b2lkIFJlbmRlckxheWVy
OjpzY3JvbGxUbyhpbnQgeCwgaW50IHkpCiAgICAgSW50UG9pbnQgb2xkUG9zaXRpb24gPSBJbnRQ
b2ludChtX3Njcm9sbE9mZnNldCk7CiAgICAgbV9zY3JvbGxPZmZzZXQgPSBuZXdTY3JvbGxPZmZz
ZXQ7CiAKLSAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxTY3JvbGxMYXllcigmcmVu
ZGVyZXIoKS5mcmFtZSgpKTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxTY3Jv
bGxMYXllcihyZW5kZXJlcigpLmZyYW1lKCkpOwogCiAgICAgUmVuZGVyVmlldyYgdmlldyA9IHJl
bmRlcmVyKCkudmlldygpOwogCkBAIC0yMzA4LDcgKzIzMDgsNyBAQCB2b2lkIFJlbmRlckxheWVy
OjpzY3JvbGxUbyhpbnQgeCwgaW50IHkpCiAgICAgICAgIGVsZW1lbnQtPmRvY3VtZW50KCkuc2Vu
ZFdpbGxSZXZlYWxFZGdlRXZlbnRzSWZOZWVkZWQob2xkUG9zaXRpb24sIEludFBvaW50KG5ld1Nj
cm9sbE9mZnNldCksIHZpc2libGVDb250ZW50UmVjdCgpLCBjb250ZW50c1NpemUoKSwgZWxlbWVu
dCk7CiAgICAgfQogCi0gICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRTY3JvbGxMYXll
cigmZnJhbWUpOworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkU2Nyb2xsTGF5ZXIo
ZnJhbWUpOwogICAgIGlmIChzY3JvbGxzT3ZlcmZsb3coKSkKICAgICAgICAgdmlldy5mcmFtZVZp
ZXcoKS5kaWRDaGFuZ2VTY3JvbGxPZmZzZXQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAppbmRleCBmMzNlZjM4ODU4MTJmMThk
YmMzMmNmYTMzZDRlOGM3ZWIwZDNmYWYyLi5lOTFjNjhjZWYxMGVlMWFmMjNkODI0NTVlNDUxZjM0
MWI2YWI2YmViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXJDb21wb3NpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXJDb21wb3NpdG9yLmNwcApAQCAtODA0LDcgKzgwNCw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21w
b3NpdG9yOjphcHBlbmREb2N1bWVudE92ZXJsYXlMYXllcnMoVmVjdG9yPEdyYXBoaWNzTGF5ZXIq
PiYKIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpsYXllckJlY2FtZU5vbkNvbXBvc2l0ZWQo
Y29uc3QgUmVuZGVyTGF5ZXImIGxheWVyKQogewogICAgIC8vIEluZm9ybSB0aGUgaW5zcGVjdG9y
IHRoYXQgdGhlIGdpdmVuIFJlbmRlckxheWVyIHdhcyBkZXN0cm95ZWQuCi0gICAgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpyZW5kZXJMYXllckRlc3Ryb3llZChwYWdlKCksICZsYXllcik7Cisg
ICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpyZW5kZXJMYXllckRlc3Ryb3llZChwYWdlKCks
IGxheWVyKTsKIAogICAgIEFTU0VSVChtX2NvbXBvc2l0ZWRMYXllckNvdW50ID4gMCk7CiAgICAg
LS1tX2NvbXBvc2l0ZWRMYXllckNvdW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlck5hbWVkRmxvd1RocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTmFtZWRGbG93VGhyZWFkLmNwcAppbmRleCA5NzgyMjc4YmMyZTJhYmM4NzJkOGZl
YjgyOTRmOWMwMzIyMWQ2OTgwLi40Mzk3MDBhMjFkMDc1MjYxOWE2NWY2ZjEyMzQ1NzFkMGZjMWU3
Y2JlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93
VGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93
VGhyZWFkLmNwcApAQCAtNTA2LDEzICs1MDYsMTMgQEAgdm9pZCBSZW5kZXJOYW1lZEZsb3dUaHJl
YWQ6OnJlZ2lzdGVyTmFtZWRGbG93Q29udGVudEVsZW1lbnQoRWxlbWVudCYgY29udGVudEVsZW0K
ICAgICAgICAgdW5zaWduZWQgc2hvcnQgcG9zaXRpb24gPSBjb250ZW50RWxlbWVudC5jb21wYXJl
RG9jdW1lbnRQb3NpdGlvbihlbGVtZW50KTsKICAgICAgICAgaWYgKHBvc2l0aW9uICYgTm9kZTo6
RE9DVU1FTlRfUE9TSVRJT05fRk9MTE9XSU5HKSB7CiAgICAgICAgICAgICBtX2NvbnRlbnRFbGVt
ZW50cy5pbnNlcnRCZWZvcmUoZWxlbWVudCwgJmNvbnRlbnRFbGVtZW50KTsKLSAgICAgICAgICAg
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVnaXN0ZXJOYW1lZEZsb3dDb250ZW50RWxl
bWVudCgmZG9jdW1lbnQoKSwgJm5hbWVkRmxvdygpLCAmY29udGVudEVsZW1lbnQsIGVsZW1lbnQp
OworICAgICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWdpc3Rlck5hbWVk
Rmxvd0NvbnRlbnRFbGVtZW50KGRvY3VtZW50KCksIG5hbWVkRmxvdygpLCBjb250ZW50RWxlbWVu
dCwgZWxlbWVudCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CiAKICAg
ICBtX2NvbnRlbnRFbGVtZW50cy5hZGQoJmNvbnRlbnRFbGVtZW50KTsKLSAgICBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmRpZFJlZ2lzdGVyTmFtZWRGbG93Q29udGVudEVsZW1lbnQoJmRvY3Vt
ZW50KCksICZuYW1lZEZsb3coKSwgJmNvbnRlbnRFbGVtZW50KTsKKyAgICBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmRpZFJlZ2lzdGVyTmFtZWRGbG93Q29udGVudEVsZW1lbnQoZG9jdW1lbnQo
KSwgbmFtZWRGbG93KCksIGNvbnRlbnRFbGVtZW50KTsKIH0KIAogdm9pZCBSZW5kZXJOYW1lZEZs
b3dUaHJlYWQ6OnVucmVnaXN0ZXJOYW1lZEZsb3dDb250ZW50RWxlbWVudChFbGVtZW50JiBjb250
ZW50RWxlbWVudCkKQEAgLTUyNyw3ICs1MjcsNyBAQCB2b2lkIFJlbmRlck5hbWVkRmxvd1RocmVh
ZDo6dW5yZWdpc3Rlck5hbWVkRmxvd0NvbnRlbnRFbGVtZW50KEVsZW1lbnQmIGNvbnRlbnRFbAog
ICAgIGlmIChjYW5CZURlc3Ryb3llZCgpKQogICAgICAgICBzZXRNYXJrRm9yRGVzdHJ1Y3Rpb24o
KTsKIAotICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkVW5yZWdpc3Rlck5hbWVkRmxv
d0NvbnRlbnRFbGVtZW50KCZkb2N1bWVudCgpLCAmbmFtZWRGbG93KCksICZjb250ZW50RWxlbWVu
dCk7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRVbnJlZ2lzdGVyTmFtZWRGbG93
Q29udGVudEVsZW1lbnQoZG9jdW1lbnQoKSwgbmFtZWRGbG93KCksIGNvbnRlbnRFbGVtZW50KTsK
IH0KIAogYm9vbCBSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6Omhhc0NvbnRlbnRFbGVtZW50KEVsZW1l
bnQmIGNvbnRlbnRFbGVtZW50KSBjb25zdApAQCAtNTYwLDcgKzU2MCw3IEBAIHZvaWQgUmVuZGVy
TmFtZWRGbG93VGhyZWFkOjpkaXNwYXRjaFJlZ2lvbk92ZXJzZXRDaGFuZ2VFdmVudElmTmVlZGVk
KCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9kaXNwYXRjaFJlZ2lvbk92ZXJzZXRDaGFuZ2VF
dmVudCA9IGZhbHNlOwotICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ2hhbmdlUmVn
aW9uT3ZlcnNldCgmZG9jdW1lbnQoKSwgJm5hbWVkRmxvdygpKTsKKyAgICBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmRpZENoYW5nZVJlZ2lvbk92ZXJzZXQoZG9jdW1lbnQoKSwgbmFtZWRGbG93
KCkpOwogICAgIAogICAgIGlmICghbV9yZWdpb25PdmVyc2V0Q2hhbmdlRXZlbnRUaW1lci5pc0Fj
dGl2ZSgpICYmIG5hbWVkRmxvdygpLmhhc0V2ZW50TGlzdGVuZXJzKCkpCiAgICAgICAgIG1fcmVn
aW9uT3ZlcnNldENoYW5nZUV2ZW50VGltZXIuc3RhcnRPbmVTaG90KDApOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVwbGF5L1JlcGxheUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVwbGF5L1JlcGxheUNvbnRyb2xsZXIuY3BwCmluZGV4IDk2YjFmMTQ2NmYxYWNiNWEwNDRl
YTQwNDg5NTRiNDliNDk2OWNlOTguLmFjNzUyODY5NmUyMjYxZTJmZGE5MTMxN2ZlM2M2NGE5ZGNk
YTQ5OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlcGxheS9SZXBsYXlDb250cm9sbGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZXBsYXkvUmVwbGF5Q29udHJvbGxlci5jcHAKQEAg
LTIwNyw3ICsyMDcsNyBAQCB2b2lkIFJlcGxheUNvbnRyb2xsZXI6OnN3aXRjaFNlc3Npb24oUGFz
c1JlZlB0cjxSZXBsYXlTZXNzaW9uPiBzZXNzaW9uKQogICAgIG1fY3VycmVudFBvc2l0aW9uID0g
UmVwbGF5UG9zaXRpb24oMCwgMCk7CiAKICAgICBMT0coV2ViUmVwbGF5LCAiJS0yMHNTd2l0Y2hp
bmcgc2Vzc2lvbnMgZnJvbSAlcCB0byAlcC5cbiIsICJSZXBsYXlDb250cm9sbGVyIiwgbV9sb2Fk
ZWRTZXNzaW9uLmdldCgpLCBzZXNzaW9uLmdldCgpKTsKLSAgICBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OnNlc3Npb25Mb2FkZWQoJm1fcGFnZSwgbV9sb2FkZWRTZXNzaW9uKTsKKyAgICBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OnNlc3Npb25Mb2FkZWQobV9wYWdlLCBtX2xvYWRlZFNlc3Np
b24pOwogfQogCiB2b2lkIFJlcGxheUNvbnRyb2xsZXI6OmNyZWF0ZVNlZ21lbnQoKQpAQCAtMjIz
LDcgKzIyMyw3IEBAIHZvaWQgUmVwbGF5Q29udHJvbGxlcjo6Y3JlYXRlU2VnbWVudCgpCiAgICAg
bV9sb2FkZWRTZWdtZW50ID0gUmVwbGF5U2Vzc2lvblNlZ21lbnQ6OmNyZWF0ZSgpOwogCiAgICAg
TE9HKFdlYlJlcGxheSwgIiUtMjBzIENyZWF0ZWQgc2VnbWVudDogJXAuXG4iLCAiUmVwbGF5Q29u
dHJvbGxlciIsIG1fbG9hZGVkU2VnbWVudC5nZXQoKSk7Ci0gICAgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpzZWdtZW50Q3JlYXRlZCgmbV9wYWdlLCBtX2xvYWRlZFNlZ21lbnQpOworICAgIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c2VnbWVudENyZWF0ZWQobV9wYWdlLCBtX2xvYWRlZFNl
Z21lbnQpOwogCiAgICAgbV9hY3RpdmVDdXJzb3IgPSBDYXB0dXJpbmdJbnB1dEN1cnNvcjo6Y3Jl
YXRlKG1fbG9hZGVkU2VnbWVudCk7CiAgICAgbV9hY3RpdmVDdXJzb3ItPmFwcGVuZElucHV0PEJl
Z2luU2VnbWVudFNlbnRpbmVsPigpOwpAQCAtMjQ3LDEwICsyNDcsMTAgQEAgdm9pZCBSZXBsYXlD
b250cm9sbGVyOjpjb21wbGV0ZVNlZ21lbnQoKQogICAgIHVubG9hZFNlZ21lbnQoc2hvdWxkU3Vw
cHJlc3NOb3RpZmljYXRpb25zKTsKIAogICAgIExPRyhXZWJSZXBsYXksICIlLTIwcyBDb21wbGV0
ZWQgc2VnbWVudDogJXAuXG4iLCAiUmVwbGF5Q29udHJvbGxlciIsIHNlZ21lbnQuZ2V0KCkpOwot
ICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c2VnbWVudENvbXBsZXRlZCgmbV9wYWdlLCBz
ZWdtZW50KTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNlZ21lbnRDb21wbGV0ZWQo
bV9wYWdlLCBzZWdtZW50KTsKIAogICAgIG1fbG9hZGVkU2Vzc2lvbi0+YXBwZW5kU2VnbWVudChz
ZWdtZW50KTsKLSAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNlc3Npb25Nb2RpZmllZCgm
bV9wYWdlLCBtX2xvYWRlZFNlc3Npb24pOworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
c2Vzc2lvbk1vZGlmaWVkKG1fcGFnZSwgbV9sb2FkZWRTZXNzaW9uKTsKIH0KIAogdm9pZCBSZXBs
YXlDb250cm9sbGVyOjpsb2FkU2VnbWVudEF0SW5kZXgoc2l6ZV90IHNlZ21lbnRJbmRleCkKQEAg
LTI3Miw3ICsyNzIsNyBAQCB2b2lkIFJlcGxheUNvbnRyb2xsZXI6OmxvYWRTZWdtZW50QXRJbmRl
eChzaXplX3Qgc2VnbWVudEluZGV4KQogICAgIG1fYWN0aXZlQ3Vyc29yID0gUmVwbGF5aW5nSW5w
dXRDdXJzb3I6OmNyZWF0ZShtX2xvYWRlZFNlZ21lbnQsIG1fcGFnZSwgdGhpcyk7CiAKICAgICBM
T0coV2ViUmVwbGF5LCAiJS0yMHNMb2FkaW5nIHNlZ21lbnQ6ICVwLlxuIiwgIlJlcGxheUNvbnRy
b2xsZXIiLCBzZWdtZW50LmdldCgpKTsKLSAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNl
Z21lbnRMb2FkZWQoJm1fcGFnZSwgc2VnbWVudCk7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpzZWdtZW50TG9hZGVkKG1fcGFnZSwgc2VnbWVudCk7CiB9CiAKIHZvaWQgUmVwbGF5Q29u
dHJvbGxlcjo6dW5sb2FkU2VnbWVudChib29sIHN1cHByZXNzTm90aWZpY2F0aW9ucykKQEAgLTI5
NSw3ICsyOTUsNyBAQCB2b2lkIFJlcGxheUNvbnRyb2xsZXI6OnVubG9hZFNlZ21lbnQoYm9vbCBz
dXBwcmVzc05vdGlmaWNhdGlvbnMpCiAgICAgLy8gZGlkbid0IHNlbmQgb3V0IHRoZSBjb3JyZXNw
b25kaW5nIHNlZ21lbnRMb2FkZWQgZXZlbnQgYXQgdGhlIHN0YXJ0IG9mIGNhcHR1cmUuCiAgICAg
aWYgKCFzdXBwcmVzc05vdGlmaWNhdGlvbnMpIHsKICAgICAgICAgTE9HKFdlYlJlcGxheSwgIiUt
MjBzVW5sb2FkaW5nIHNlZ21lbnQ6ICVwLlxuIiwgIlJlcGxheUNvbnRyb2xsZXIiLCB1bmxvYWRl
ZFNlZ21lbnQuZ2V0KCkpOwotICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNlZ21l
bnRVbmxvYWRlZCgmbV9wYWdlKTsKKyAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpz
ZWdtZW50VW5sb2FkZWQobV9wYWdlKTsKICAgICB9CiB9CiAKQEAgLTMwOCw3ICszMDgsNyBAQCB2
b2lkIFJlcGxheUNvbnRyb2xsZXI6OnN0YXJ0Q2FwdHVyaW5nKCkKICAgICBzZXRGb3JjZURldGVy
bWluaXN0aWNTZXR0aW5ncyh0cnVlKTsKIAogICAgIExPRyhXZWJSZXBsYXksICIlLTIwcyBTdGFy
dGluZyBjYXB0dXJlLlxuIiwgIlJlcGxheUNvbnRyb2xsZXIiKTsKLSAgICBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmNhcHR1cmVTdGFydGVkKCZtX3BhZ2UpOworICAgIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6Y2FwdHVyZVN0YXJ0ZWQobV9wYWdlKTsKIAogICAgIG1fY3VycmVudFBvc2l0
aW9uID0gUmVwbGF5UG9zaXRpb24oMCwgMCk7CiAKQEAgLTMyNiw3ICszMjYsNyBAQCB2b2lkIFJl
cGxheUNvbnRyb2xsZXI6OnN0b3BDYXB0dXJpbmcoKQogICAgIHNldEZvcmNlRGV0ZXJtaW5pc3Rp
Y1NldHRpbmdzKGZhbHNlKTsKIAogICAgIExPRyhXZWJSZXBsYXksICIlLTIwcyBTdG9wcGluZyBj
YXB0dXJlLlxuIiwgIlJlcGxheUNvbnRyb2xsZXIiKTsKLSAgICBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmNhcHR1cmVTdG9wcGVkKCZtX3BhZ2UpOworICAgIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6Y2FwdHVyZVN0b3BwZWQobV9wYWdlKTsKIH0KIAogdm9pZCBSZXBsYXlDb250cm9sbGVy
OjpzdGFydFBsYXliYWNrKCkKQEAgLTMzNyw3ICszMzcsNyBAQCB2b2lkIFJlcGxheUNvbnRyb2xs
ZXI6OnN0YXJ0UGxheWJhY2soKQogICAgIHNldFNlZ21lbnRTdGF0ZShTZWdtZW50U3RhdGU6OkRp
c3BhdGNoaW5nKTsKIAogICAgIExPRyhXZWJSZXBsYXksICIlLTIwcyBTdGFydGluZyBwbGF5YmFj
ayB0byBwb3NpdGlvbiAoc2VnbWVudDogJWQsIGlucHV0OiAlZCkuXG4iLCAiUmVwbGF5Q29udHJv
bGxlciIsIG1fdGFyZ2V0UG9zaXRpb24uc2VnbWVudE9mZnNldCwgbV90YXJnZXRQb3NpdGlvbi5p
bnB1dE9mZnNldCk7Ci0gICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpwbGF5YmFja1N0YXJ0
ZWQoJm1fcGFnZSk7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpwbGF5YmFja1N0YXJ0
ZWQobV9wYWdlKTsKIAogICAgIGRpc3BhdGNoZXIoKS5zZXREaXNwYXRjaFNwZWVkKG1fZGlzcGF0
Y2hTcGVlZCk7CiAgICAgZGlzcGF0Y2hlcigpLnJ1bigpOwpAQCAtMzU0LDcgKzM1NCw3IEBAIHZv
aWQgUmVwbGF5Q29udHJvbGxlcjo6cGF1c2VQbGF5YmFjaygpCiAgICAgc2V0U2VnbWVudFN0YXRl
KFNlZ21lbnRTdGF0ZTo6TG9hZGVkKTsKIAogICAgIExPRyhXZWJSZXBsYXksICIlLTIwcyBQYXVz
aW5nIHBsYXliYWNrIGF0IHBvc2l0aW9uIChzZWdtZW50OiAlZCwgaW5wdXQ6ICVkKS5cbiIsICJS
ZXBsYXlDb250cm9sbGVyIiwgbV9jdXJyZW50UG9zaXRpb24uc2VnbWVudE9mZnNldCwgbV9jdXJy
ZW50UG9zaXRpb24uaW5wdXRPZmZzZXQpOwotICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
cGxheWJhY2tQYXVzZWQoJm1fcGFnZSwgbV9jdXJyZW50UG9zaXRpb24pOworICAgIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6cGxheWJhY2tQYXVzZWQobV9wYWdlLCBtX2N1cnJlbnRQb3NpdGlv
bik7CiB9CiAKIHZvaWQgUmVwbGF5Q29udHJvbGxlcjo6Y2FuY2VsUGxheWJhY2soKQpAQCAtMzcy
LDcgKzM3Miw3IEBAIHZvaWQgUmVwbGF5Q29udHJvbGxlcjo6Y2FuY2VsUGxheWJhY2soKQogICAg
IHVubG9hZFNlZ21lbnQoKTsKICAgICBtX3Nlc3Npb25TdGF0ZSA9IFNlc3Npb25TdGF0ZTo6SW5h
Y3RpdmU7CiAgICAgc2V0Rm9yY2VEZXRlcm1pbmlzdGljU2V0dGluZ3MoZmFsc2UpOwotICAgIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6cGxheWJhY2tGaW5pc2hlZCgmbV9wYWdlKTsKKyAgICBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnBsYXliYWNrRmluaXNoZWQobV9wYWdlKTsKIH0KIAog
dm9pZCBSZXBsYXlDb250cm9sbGVyOjpyZXBsYXlUb1Bvc2l0aW9uKGNvbnN0IFJlcGxheVBvc2l0
aW9uJiBwb3NpdGlvbiwgRGlzcGF0Y2hTcGVlZCBzcGVlZCkKQEAgLTUxMSw3ICs1MTEsNyBAQCB2
b2lkIFJlcGxheUNvbnRyb2xsZXI6OndpbGxEaXNwYXRjaElucHV0KGNvbnN0IEV2ZW50TG9vcElu
cHV0QmFzZSYpCiAKICAgICBtX2N1cnJlbnRQb3NpdGlvbi5pbnB1dE9mZnNldCsrOwogCi0gICAg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpwbGF5YmFja0hpdFBvc2l0aW9uKCZtX3BhZ2UsIG1f
Y3VycmVudFBvc2l0aW9uKTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnBsYXliYWNr
SGl0UG9zaXRpb24obV9wYWdlLCBtX2N1cnJlbnRQb3NpdGlvbik7CiAKICAgICBpZiAobV9jdXJy
ZW50UG9zaXRpb24gPT0gbV90YXJnZXRQb3NpdGlvbikKICAgICAgICAgcGF1c2VQbGF5YmFjaygp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IGM3M2Q2NThiM2Q2MDYzNWMx
NGM5Y2FlZTM3YmRjNmY4ODVkNmNmYzUuLjlhMDU1M2QzZGQwNTgyOThkYTdkNDAyNWMyNDQ0YjBi
ZGZmODIwNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTE0ODAsNyAr
MTQ4MCw3IEBAIFZlY3RvcjxTdHJpbmc+IEludGVybmFsczo6Y29uc29sZU1lc3NhZ2VBcmd1bWVu
dENvdW50cygpIGNvbnN0CiAgICAgaWYgKCFkb2N1bWVudCB8fCAhZG9jdW1lbnQtPnBhZ2UoKSkK
ICAgICAgICAgcmV0dXJuIFZlY3RvcjxTdHJpbmc+KCk7CiAKLSAgICBJbnN0cnVtZW50aW5nQWdl
bnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGF0aW9uRm9yUGFnZShkb2N1bWVu
dC0+cGFnZSgpKTsKKyAgICBJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRz
ID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnN0cnVtZW50aW5nQWdlbnRzRm9yUGFnZShk
b2N1bWVudC0+cGFnZSgpKTsKICAgICBpZiAoIWluc3RydW1lbnRpbmdBZ2VudHMpCiAgICAgICAg
IHJldHVybiBWZWN0b3I8U3RyaW5nPigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94
bWwvWE1MSHR0cFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0
LmNwcAppbmRleCBiNTQwYTEzODNmMzE0ODI1YTYxZmExMzU2NWM5ZmIzNjg1YWIxODhmLi40NmUx
OGZkOWMwNzczM2U0OGFlNWMzODZhZGI5NWVhZDI3NjFjYWJhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9Y
TUxIdHRwUmVxdWVzdC5jcHAKQEAgLTM3MiwxNCArMzcyLDE0IEBAIHZvaWQgWE1MSHR0cFJlcXVl
c3Q6OmNhbGxSZWFkeVN0YXRlQ2hhbmdlTGlzdGVuZXIoKQogICAgIGlmICghc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb25Db29raWUgY29va2llID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRGlzcGF0
Y2hYSFJSZWFkeVN0YXRlQ2hhbmdlRXZlbnQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCB0aGlz
KTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgY29va2llID0gSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjp3aWxsRGlzcGF0Y2hYSFJSZWFkeVN0YXRlQ2hhbmdlRXZlbnQoc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpLCAqdGhpcyk7CiAKICAgICBpZiAobV9hc3luYyB8fCAobV9z
dGF0ZSA8PSBPUEVORUQgfHwgbV9zdGF0ZSA9PSBET05FKSkKICAgICAgICAgbV9wcm9ncmVzc0V2
ZW50VGhyb3R0bGUuZGlzcGF0Y2hSZWFkeVN0YXRlQ2hhbmdlRXZlbnQoRXZlbnQ6OmNyZWF0ZShl
dmVudE5hbWVzKCkucmVhZHlzdGF0ZWNoYW5nZUV2ZW50LCBmYWxzZSwgZmFsc2UpLCBtX3N0YXRl
ID09IERPTkUgPyBGbHVzaFByb2dyZXNzRXZlbnQgOiBEb05vdEZsdXNoUHJvZ3Jlc3NFdmVudCk7
CiAKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZERpc3BhdGNoWEhSUmVhZHlTdGF0
ZUNoYW5nZUV2ZW50KGNvb2tpZSk7CiAgICAgaWYgKG1fc3RhdGUgPT0gRE9ORSAmJiAhbV9lcnJv
cikgewotICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgY29va2llID0gSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRGlzcGF0Y2hYSFJMb2FkRXZlbnQoc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpLCB0aGlzKTsKKyAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Q29va2llIGNvb2tpZSA9IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbERpc3BhdGNoWEhS
TG9hZEV2ZW50KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgKnRoaXMpOwogICAgICAgICBtX3By
b2dyZXNzRXZlbnRUaHJvdHRsZS5kaXNwYXRjaFByb2dyZXNzRXZlbnQoZXZlbnROYW1lcygpLmxv
YWRFdmVudCk7CiAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRGlzcGF0Y2hY
SFJMb2FkRXZlbnQoY29va2llKTsKICAgICAgICAgbV9wcm9ncmVzc0V2ZW50VGhyb3R0bGUuZGlz
cGF0Y2hQcm9ncmVzc0V2ZW50KGV2ZW50TmFtZXMoKS5sb2FkZW5kRXZlbnQpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>243822</attachid>
            <date>2014-12-30 05:38:05 -0800</date>
            <delta_ts>2015-01-01 11:35:52 -0800</delta_ts>
            <desc>Fix EFL/GTK</desc>
            <filename>bug-139981-20141230053806.patch</filename>
            <type>text/plain</type>
            <size>309765</size>
            <attacher name="Brian Burg">burg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc3ODIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGRlZWZmZDM2ZGU1Mjc0
NmZiNjRhOTNlMjk3NTE0NjE0NmIzYmViNy4uYTcyMWQzMDM3YTc0MzY1OGU1MjEzNGEzNDM3Zjc2
YjliNDhmZGZkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyMiBAQAorMjAxNC0xMi0yOCAgQnJp
YW4gSi4gQnVyZyAgPGJ1cmdAY3Mud2FzaGluZ3Rvbi5lZHU+CisKKyAgICAgICAgV2ViIEluc3Bl
Y3RvcjogcGFzcyBwYXJhbWV0ZXJzIHRvIGluc3BlY3RvciBpbnN0cnVtZW50YXRpb24gYnkgcmVm
ZXJlbmNlIHdoZXJlIHBvc3NpYmxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMzk5ODEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBDbGVhbiB1cCBpbnNwZWN0b3IgaW5zdHJ1bWVudGF0aW9uIGVudHJ5IHBv
aW50cyB0aHJvdWdob3V0IFdlYkNvcmUuIEluIHBhcnRpY3VsYXIsIG1ha2UKKyAgICAgICAgcGFy
YW1ldGVycyBwYXNzLWJ5LXJlZmVyZW5jZSBpZiB0aGV5IGFyZSBub3QgbnVsbGFibGUuIEFsc28g
c3RhbmRhcmRpemUgcXVpcmt5IHBhcmFtZXRlcgorICAgICAgICBvcmRlcnMgYW5kIGRvIG90aGVy
IHNtYWxsIGNsZWFudXBzIGluIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbiBhbmQgYXQgY2FsbHNp
dGVzLgorCisgICAgICAgIEluc3BlY3RvciBhZ2VudHMgc3RpbGwgdGFrZSB0aGUgcGVydGluZW50
IHBhcmFtZXRlcnMgYnkgcG9pbnRlciBldmVuIHdoZW4gdGhleSBjb3VsZCBiZQorICAgICAgICBw
YXNzZWQgYnkgcmVmZXJlbmNlLiBUaGlzIHdpbGwgYmUgYWRkcmVzc2VkIGluIGEgZm9sbG93LXVw
IGNoYW5nZS4KKworICAgICAgICBObyBuZXcgdGVzdHMsIG5vIGJlaGF2aW9yIGNoYW5nZWQuCisK
KyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRD
b250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmV2YWx1
YXRlSW5Xb3JsZCk6CisgICAgICAgICogY3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlv
bi5jcHA6CisgICAgICAgICogY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25lKToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVj
dG9yQ2hlY2tlcjo6bWF0Y2hlc0ZvY3VzUHNldWRvQ2xhc3MpOgorICAgICAgICAqIGNzcy9TdHls
ZVJlc29sdmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OnN0eWxlRm9y
RWxlbWVudCk6CisgICAgICAgICogY3Nzaml0L1NlbGVjdG9yQ29tcGlsZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U2VsZWN0b3JDb21waWxlcjo6ZWxlbWVudElzQWN0aXZlKToKKyAgICAgICAg
KFdlYkNvcmU6OlNlbGVjdG9yQ29tcGlsZXI6OmVsZW1lbnRJc0FjdGl2ZUZvclN0eWxlUmVzb2x1
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNvbXBpbGVyOjplbGVtZW50SXNIb3Zl
cmVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yQ29tcGlsZXI6OmVsZW1lbnRJc0hvdmVy
ZWRGb3JTdHlsZVJlc29sdXRpb24pOgorICAgICAgICAqIGRvbS9DaGFyYWN0ZXJEYXRhLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNoYXJhY3RlckRhdGE6OmRpc3BhdGNoTW9kaWZpZWRFdmVudCk6
IFJlbW92ZSB1bm5lY2Vzc2FyeSBFTkFCTEUgZ3VhcmQuCisgICAgICAgICogZG9tL0NvbnRhaW5l
ck5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6aW5zZXJ0QmVmb3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRhaW5lck5vZGU6OnJlcGxhY2VDaGlsZCk6CisgICAg
ICAgIChXZWJDb3JlOjpDb250YWluZXJOb2RlOjpyZW1vdmVCZXR3ZWVuKToKKyAgICAgICAgKFdl
YkNvcmU6OkNvbnRhaW5lck5vZGU6OmFwcGVuZENoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OmRp
c3BhdGNoQ2hpbGRSZW1vdmFsRXZlbnRzKToKKyAgICAgICAgKiBkb20vQ29udGFpbmVyTm9kZUFs
Z29yaXRobXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNoaWxkTm9kZUluc2VydGlvbk5vdGlmaWVy
Ojpub3RpZnkpOiBSZW1vdmUgdW5uZWNlc3NhcnkgRU5BQkxFIGd1YXJkLgorICAgICAgICAqIGRv
bS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2NoZWR1bGVTdHls
ZVJlY2FsYyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cmVjYWxjU3R5bGUpOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmZpbmlzaGVkUGFyc2luZyk6IFRoaXMgaXMgc2FmZSBi
ZWNhdXNlIHdlIGNoZWNrZWQgdGhlIGFyZ3VtZW50LgorICAgICAgICAqIGRvbS9FbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmFkZFNoYWRvd1Jvb3QpOgorICAgICAgICAo
V2ViQ29yZTo6RWxlbWVudDo6cmVtb3ZlU2hhZG93Um9vdCk6IFRoaXMgaXMgc2FmZSBiZWNhdXNl
IHdlIGNoZWNrZWQgdGhlIGFyZ3VtZW50LgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6d2ls
bE1vZGlmeUF0dHJpYnV0ZSk6IFJlbW92ZSB1bm5lY2Vzc2FyeSBFTkFCTEUgZ3VhcmQuCisgICAg
ICAgIChXZWJDb3JlOjpFbGVtZW50OjpkaWRBZGRBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29y
ZTo6RWxlbWVudDo6ZGlkTW9kaWZ5QXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1l
bnQ6OmRpZFJlbW92ZUF0dHJpYnV0ZSk6CisgICAgICAgICogZG9tL0V2ZW50VGFyZ2V0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkV2ZW50VGFyZ2V0OjpmaXJlRXZlbnRMaXN0ZW5lcnMpOiBUaGlz
IGlzIHNhZmUgYmVjYXVzZSB0aGUgdHlwZSB0ZXN0IHdvdWxkIGZhaWwgaWYgbnVsbC4KKyAgICAg
ICAgKiBkb20vTmFtZWRGbG93Q29sbGVjdGlvbi5jcHA6IFBhc3MgYnkgcmVmZXJlbmNlIHNpbmNl
IGNvZGUgYWxyZWFkeSBhc3N1bWVzIG5vbi1udWxsLgorICAgICAgICAoV2ViQ29yZTo6TmFtZWRG
bG93Q29sbGVjdGlvbjo6ZW5zdXJlRmxvd1dpdGhOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6Ok5h
bWVkRmxvd0NvbGxlY3Rpb246OmRpc2NhcmROYW1lZEZsb3cpOgorICAgICAgICAqIGRvbS9Qc2V1
ZG9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBzZXVkb0VsZW1lbnQ6On5Qc2V1ZG9F
bGVtZW50KToKKyAgICAgICAgKiBkb20vU3R5bGVkRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZWRFbGVtZW50OjpzdHlsZUF0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6U3R5bGVkRWxlbWVudDo6aW5saW5lU3R5bGVDaGFuZ2VkKToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9yQ29uc29sZUluc3RydW1lbnRhdGlvbi5oOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjphZGRNZXNzYWdlVG9Db25zb2xlKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Y29uc29sZUNvdW50KToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c3RhcnRDb25zb2xlVGlt
aW5nKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c3RvcENv
bnNvbGVUaW1pbmcpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Ojpjb25zb2xlVGltZVN0YW1wKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6c3RhcnRQcm9maWxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpzdG9wUHJvZmlsaW5nKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9yQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVy
OjpkaWRDbGVhcldpbmRvd09iamVjdEluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yQ29udHJvbGxlcjo6Y29ubmVjdEZyb250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckNvbnRyb2xsZXI6OmRpc2Nvbm5lY3RGcm9udGVuZCk6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvckNvbnRyb2xsZXIuaDogUmVtb3ZlIGluc3RydW1lbnRhdGlvbkZvclBhZ2UoKSBp
biBmYXZvciBvZiB1c2luZyBpbnN0cnVtZW50aW5nQWdlbnRzRm9yUGFnZSgpIGRpcmVjdGx5Lgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUluc3RydW1lbnRhdGlvbi5oOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRPcGVuRGF0YWJh
c2UpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwOiBB
ZGQgbWlzc2luZyBzXyBwcmVmaXggZm9yIGdsb2JhbCBzX2luc3RydW1lbnRpbmdBZ2VudFNldHMu
IFBhc3MgdGhlIGluc3RydW1lbnRpbmcKKyAgICAgICAgYWdlbnQgYnkgcmVmZXJlbmNlIHNpbmNl
IGl0IHdhcyBhbHJlYWR5IG51bGwtY2hlY2tlZCBpZiB3ZSByZWFjaGVkIGEgc2xvdyBwYXRoIGZv
ciBpbnN0cnVtZW50YXRpb24uCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmRpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZEltcGwpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppc0RlYnVnZ2VyUGF1c2VkSW1wbCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxJbnNlcnRET01Ob2Rl
SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZElu
c2VydERPTU5vZGVJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6d2lsbFJlbW92ZURPTU5vZGVJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6ZGlkUmVtb3ZlRE9NTm9kZUltcGwpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsTW9kaWZ5RE9NQXR0ckltcGwpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRNb2RpZnlET01BdHRy
SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJl
bW92ZURPTUF0dHJJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6ZGlkSW52YWxpZGF0ZVN0eWxlQXR0ckltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpmcmFtZVdpbmRvd0Rpc2NhcmRlZEltcGwpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjptZWRpYVF1ZXJ5UmVzdWx0Q2hh
bmdlZEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpk
aWRQdXNoU2hhZG93Um9vdEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjp3aWxsUG9wU2hhZG93Um9vdEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDcmVhdGVOYW1lZEZsb3dJbXBsKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFJlbW92ZU5hbWVkRmxvd0lt
cGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDaGFu
Z2VSZWdpb25PdmVyc2V0SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmRpZFJlZ2lzdGVyTmFtZWRGbG93Q29udGVudEVsZW1lbnRJbXBsKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkVW5yZWdpc3Rlck5hbWVk
Rmxvd0NvbnRlbnRFbGVtZW50SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246Om1vdXNlRGlkTW92ZU92ZXJFbGVtZW50SW1wbCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFNjcm9sbEltcGwpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpoYW5kbGVUb3VjaEV2ZW50SW1wbCk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmhhbmRsZU1vdXNl
UHJlc3NJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
Zm9yY2VQc2V1ZG9TdGF0ZUltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpjaGFyYWN0ZXJEYXRhTW9kaWZpZWRJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFNlbmRYTUxIdHRwUmVxdWVzdEltcGwpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRTY2hlZHVsZVJl
c291cmNlUmVxdWVzdEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpkaWRJbnN0YWxsVGltZXJJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6ZGlkUmVtb3ZlVGltZXJJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbENhbGxGdW5jdGlvbkltcGwpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRGlzcGF0Y2hYSFJSZWFk
eVN0YXRlQ2hhbmdlRXZlbnRJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6d2lsbERpc3BhdGNoRXZlbnRJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEhhbmRsZUV2ZW50SW1wbCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEhhbmRsZUV2ZW50SW1wbCk6IEFk
ZCBwcm9wZXIgY29va2llIGd1YXJkIGFuZCBwYXNzIGJ5IHJlZmVyZW5jZS4KKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbERpc3BhdGNoRXZlbnRPbldpbmRv
d0ltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxs
RXZhbHVhdGVTY3JpcHRJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6ZGlkRXZhbHVhdGVTY3JpcHRJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6c2NyaXB0c0VuYWJsZWRJbXBsKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ3JlYXRlSXNvbGF0ZWRDb250ZXh0SW1w
bCk6IFJlbW92ZWQsIGFzIHRoZXJlIGFyZSBubyBjYWxsZXJzIGZyb20gV2ViQ29yZS4gUG9zc2li
bGUgVjggYXJ0aWZhY3QuCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OndpbGxGaXJlVGltZXJJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZGlkRmlyZVRpbWVySW1wbCk6IEFkZCBwcm9wZXIgY29va2llIGd1YXJkIGFu
ZCBwYXNzIGJ5IHJlZmVyZW5jZS4KKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6ZGlkSW52YWxpZGF0ZUxheW91dEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsTGF5b3V0SW1wbCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxEaXNwYXRjaFhIUkxvYWRFdmVudEltcGwp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUGFpbnRJ
bXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUGFp
bnRJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2ls
bFNjcm9sbExheWVySW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmRpZFNjcm9sbExheWVySW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OndpbGxSZWNhbGN1bGF0ZVN0eWxlSW1wbCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2FsY3VsYXRlU3R5bGVJbXBsKTog
QWRkIHByb3BlciBjb29raWUgZ3VhcmQgYW5kIHBhc3MgYnkgcmVmZXJlbmNlLgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRTY2hlZHVsZVN0eWxlUmVjYWxj
dWxhdGlvbkltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjphcHBseUVtdWxhdGVkTWVkaWFJbXBsKTogUGFzcyBzdHJpbmcgYnkgcmVmZXJlbmNlLgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsU2VuZFJlcXVlc3RJ
bXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Y29udGlu
dWVBZnRlclBpbmdMb2FkZXJJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6bWFya1Jlc291cmNlQXNDYWNoZWRJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkTG9hZFJlc291cmNlRnJvbU1lbW9yeUNhY2hl
SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxS
ZWNlaXZlUmVzb3VyY2VEYXRhSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OndpbGxSZWNlaXZlUmVzb3VyY2VSZXNwb25zZUltcGwpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlUmVzb3VyY2VSZXNw
b25zZUltcGwpOiBBZGQgcHJvcGVyIGNvb2tpZSBndWFyZCBhbmQgcGFzcyBieSByZWZlcmVuY2Uu
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVS
ZXNvdXJjZVJlc3BvbnNlQnV0Q2FuY2VsZWRJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6Y29udGludWVBZnRlclhGcmFtZU9wdGlvbnNEZW5pZWRJbXBs
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Y29udGludWVX
aXRoUG9saWN5RG93bmxvYWRJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6Y29udGludWVXaXRoUG9saWN5SWdub3JlSW1wbCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVEYXRhSW1wbCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZpbmlzaExvYWRpbmdJ
bXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmFp
bExvYWRpbmdJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6ZG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyU3RhcnRlZExvYWRpbmdGb3JDbGllbnRJbXBsKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbExvYWRYSFJJ
bXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmFp
bFhIUkxvYWRpbmdJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6ZGlkRmluaXNoWEhSTG9hZGluZ0ltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlWEhSUmVzcG9uc2VJbXBsKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbExvYWRYSFJTeW5jaHJvbm91
c2x5SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRp
ZExvYWRYSFJTeW5jaHJvbm91c2x5SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OnNjcmlwdEltcG9ydGVkSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNjcmlwdEV4ZWN1dGlvbkJsb2NrZWRCeUNTUEltcGwp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZl
U2NyaXB0UmVzcG9uc2VJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6ZG9tQ29udGVudExvYWRlZEV2ZW50RmlyZWRJbXBsKTogVXNlIEZyYW1lOjppc01h
aW5GcmFtZSgpLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjps
b2FkRXZlbnRGaXJlZEltcGwpOiBVc2UgRnJhbWU6OmlzTWFpbkZyYW1lKCkuCisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmZyYW1lRGV0YWNoZWRGcm9tUGFyZW50
SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENv
bW1pdExvYWRJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6ZnJhbWVEb2N1bWVudFVwZGF0ZWRJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6bG9hZGVyRGV0YWNoZWRGcm9tRnJhbWVJbXBsKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFJ1bkphdmFTY3JpcHREaWFs
b2dJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2ls
bERlc3Ryb3lDYWNoZWRSZXNvdXJjZUltcGwpOiBVc2UgYSByYW5nZS1iYXNlZCBpdGVyYXRvci4K
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFdyaXRlSFRN
TEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjphZGRN
ZXNzYWdlVG9Db25zb2xlSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmNvbnNvbGVDb3VudEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpzdGFydENvbnNvbGVUaW1pbmdJbXBsKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c3RvcENvbnNvbGVUaW1pbmdJbXBsKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Y29uc29sZVRpbWVTdGFt
cEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzdGFy
dFByb2ZpbGluZ0ltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpzdG9wUHJvZmlsaW5nSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmRpZE9wZW5EYXRhYmFzZUltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWREaXNwYXRjaERPTVN0b3JhZ2VFdmVudEltcGwpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzaG91bGRQYXVzZURl
ZGljYXRlZFdvcmtlck9uU3RhcnRJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6ZGlkU3RhcnRXb3JrZXJHbG9iYWxTY29wZUltcGwpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRXZhbHVhdGVXb3JrZXJTY3Jp
cHQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3b3JrZXJH
bG9iYWxTY29wZVRlcm1pbmF0ZWRJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6ZGlkQ3JlYXRlV2ViU29ja2V0SW1wbCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxTZW5kV2ViU29ja2V0SGFuZHNoYWtlUmVx
dWVzdEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpk
aWRSZWNlaXZlV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2VJbXBsKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ2xvc2VXZWJTb2NrZXRJbXBsKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZVdlYlNv
Y2tldEZyYW1lSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmRpZFJlY2VpdmVXZWJTb2NrZXRGcmFtZUVycm9ySW1wbCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFNlbmRXZWJTb2NrZXRGcmFtZUltcGwpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzZXNzaW9uQ3JlYXRl
ZEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzZXNz
aW9uTG9hZGVkSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OnNlc3Npb25Nb2RpZmllZEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpzZWdtZW50Q3JlYXRlZEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzZWdtZW50Q29tcGxldGVkSW1wbCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNlZ21lbnRMb2FkZWRJbXBsKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c2VnbWVudFVubG9hZGVk
SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNhcHR1
cmVTdGFydGVkSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmNhcHR1cmVTdG9wcGVkSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OnBsYXliYWNrU3RhcnRlZEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpwbGF5YmFja1BhdXNlZEltcGwpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpwbGF5YmFja0hpdFBvc2l0aW9uSW1wbCk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnBsYXliYWNrRmlu
aXNoZWRJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
bmV0d29ya1N0YXRlQ2hhbmdlZEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjp1cGRhdGVBcHBsaWNhdGlvbkNhY2hlU3RhdHVzSW1wbCk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnBhdXNlT25OYXRpdmVFdmVudElm
TmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Y2Fu
Y2VsUGF1c2VPbk5hdGl2ZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZGlkUmVxdWVzdEFuaW1hdGlvbkZyYW1lSW1wbCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENhbmNlbEFuaW1hdGlvbkZyYW1lSW1w
bCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxGaXJl
QW5pbWF0aW9uRnJhbWVJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6cmVnaXN0ZXJJbnN0cnVtZW50aW5nQWdlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6dW5yZWdpc3Rlckluc3RydW1lbnRpbmdBZ2VudHMp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpyZXRyaWV2ZVRp
bWVsaW5lQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjppbnN0cnVtZW50aW5nQWdlbnRzRm9yUGFnZSk6IEFkZCBieS1yZWZlcmVuY2UgdmVyc2lvbiB3
aGljaCBjb250YWlucyB0aGUgbG9naWMgZnJvbSBpbnN0cnVtZW50YXRpb25Gb3JQYWdlKCkuCisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Omluc3RydW1lbnRpbmdB
Z2VudHNGb3JSZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246Omluc3RydW1lbnRpbmdBZ2VudHNGb3JXb3JrZXJHbG9iYWxTY29wZSk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Omluc3RydW1lbnRpbmdBZ2VudHNG
b3JOb25Eb2N1bWVudENvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpsYXllclRyZWVEaWRDaGFuZ2VJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6cmVuZGVyTGF5ZXJEZXN0cm95ZWRJbXBsKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6cHNldWRvRWxlbWVudERlc3Ry
b3llZEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpk
aWRDcmVhdGVJc29sYXRlZENvbnRleHRJbXBsKTogRGVsZXRlZC4KKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OmRpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZCk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmlzRGVidWdnZXJQYXVzZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsSW5zZXJ0RE9N
Tm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZElu
c2VydERPTU5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Ojp3aWxsUmVtb3ZlRE9NTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmRpZFJlbW92ZURPTU5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjp3aWxsTW9kaWZ5RE9NQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZE1vZGlmeURPTUF0dHIpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZW1vdmVET01BdHRyKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkSW52YWxpZGF0ZVN0eWxl
QXR0cik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmZyYW1l
V2luZG93RGlzY2FyZGVkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6bWVkaWFRdWVyeVJlc3VsdENoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRQdXNoU2hhZG93Um9vdCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxQb3BTaGFkb3dSb290KToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ3JlYXRlTmFtZWRGbG93KToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFJlbW92ZU5h
bWVkRmxvdyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRp
ZENoYW5nZVJlZ2lvbk92ZXJzZXQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpkaWRSZWdpc3Rlck5hbWVkRmxvd0NvbnRlbnRFbGVtZW50KToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkVW5yZWdpc3Rlck5hbWVkRmxv
d0NvbnRlbnRFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6bW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpoYW5kbGVUb3VjaEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aGFuZGxlTW91c2VQcmVzcyk6IFRha2UgRnJhbWUg
YnkgcmVmZXJlbmNlIGluc3RlYWQgb2YgUGFnZSBieSBwb2ludGVyLgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpmb3JjZVBzZXVkb1N0YXRlKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Y2hhcmFjdGVyRGF0YU1vZGlmaWVk
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFNlbmRY
TUxIdHRwUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmRpZFNjaGVkdWxlUmVzb3VyY2VSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkSW5zdGFsbFRpbWVyKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVtb3ZlVGltZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsQ2FsbEZ1bmN0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbERpc3BhdGNoWEhSUmVh
ZHlTdGF0ZUNoYW5nZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6d2lsbERpc3BhdGNoRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjp3aWxsSGFuZGxlRXZlbnQpOiBQYXNzIGEgY29uc3QgZXZlbnQgcmVm
ZXJlbmNlLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxs
RGlzcGF0Y2hFdmVudE9uV2luZG93KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6d2lsbEV2YWx1YXRlU2NyaXB0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRXZhbHVhdGVTY3JpcHQpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzY3JpcHRzRW5hYmxlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxGaXJlVGltZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRJbnZhbGlkYXRlTGF5b3V0
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbExheW91
dCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFNjcm9s
bCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxEaXNw
YXRjaFhIUkxvYWRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OndpbGxQYWludCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmRpZFBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6d2lsbFNjcm9sbExheWVyKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZGlkU2Nyb2xsTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjp3aWxsUmVjYWxjdWxhdGVTdHlsZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFNjaGVkdWxlU3R5bGVSZWNhbGN1bGF0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6YXBwbHlFbXVs
YXRlZE1lZGlhKTogUGFzcyBzdHJpbmcgYnkgcmVmZXJlbmNlLgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjb250aW51ZUFmdGVyUGluZ0xvYWRlcik6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Om1hcmtSZXNvdXJj
ZUFzQ2FjaGVkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
ZGlkTG9hZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFJlY2VpdmVSZXNvdXJjZURhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUmVjZWl2ZVJlc291cmNlUmVz
cG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjb250
aW51ZUFmdGVyWEZyYW1lT3B0aW9uc0RlbmllZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OmNvbnRpbnVlV2l0aFBvbGljeURvd25sb2FkKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Y29udGludWVXaXRoUG9saWN5SWdu
b3JlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVj
ZWl2ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpk
aWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6ZGlkRmFpbExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpkb2N1bWVudFRocmVhZGFibGVMb2FkZXJTdGFydGVkTG9hZGluZ0ZvckNsaWVu
dCk6IE5vIG5lZWQgdG8gZ28gdGhyb3VnaAorICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0
IGludGVyZmFjZSwgYXMgaXQncyBhbHdheXMgYSBEb2N1bWVudC4KKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbExvYWRYSFIpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGYWlsWEhSTG9hZGluZyk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZpbmlzaFhIUkxvYWRpbmcp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZl
WEhSUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Ojp3aWxsTG9hZFhIUlN5bmNocm9ub3VzbHkpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpkaWRMb2FkWEhSU3luY2hyb25vdXNseSk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNjcmlwdEltcG9ydGVkKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c2NyaXB0RXhlY3V0aW9uQmxvY2tl
ZEJ5Q1NQKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlk
UmVjZWl2ZVNjcmlwdFJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZG9tQ29udGVudExvYWRlZEV2ZW50RmlyZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpsb2FkRXZlbnRGaXJlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmZyYW1lRGV0YWNoZWRGcm9tUGFyZW50
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ29tbWl0
TG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmZyYW1l
RG9jdW1lbnRVcGRhdGVkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6bG9hZGVyRGV0YWNoZWRGcm9tRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUnVuSmF2YVNjcmlwdERpYWxvZyk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxEZXN0cm95Q2FjaGVkUmVzb3Vy
Y2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsV3Jp
dGVIVE1MKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlk
RGlzcGF0Y2hET01TdG9yYWdlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpzaG91bGRQYXVzZURlZGljYXRlZFdvcmtlck9uU3RhcnQpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRTdGFydFdvcmtlckdsb2Jh
bFNjb3BlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d29y
a2VyR2xvYmFsU2NvcGVUZXJtaW5hdGVkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6ZGlkQ3JlYXRlV2ViU29ja2V0KToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFNlbmRXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2
ZVdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6ZGlkQ2xvc2VXZWJTb2NrZXQpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlV2ViU29ja2V0RnJhbWUpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlV2ViU29j
a2V0RnJhbWVFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmRpZFNlbmRXZWJTb2NrZXRGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OnNlc3Npb25DcmVhdGVkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6c2Vzc2lvbkxvYWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNlc3Npb25Nb2RpZmllZCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNlZ21lbnRDcmVhdGVkKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c2VnbWVudENvbXBsZXRlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNlZ21lbnRMb2FkZWQp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzZWdtZW50VW5s
b2FkZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjYXB0
dXJlU3RhcnRlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmNhcHR1cmVTdG9wcGVkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6cGxheWJhY2tTdGFydGVkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6cGxheWJhY2tQYXVzZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpwbGF5YmFja0ZpbmlzaGVkKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6cGxheWJhY2tIaXRQb3NpdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Om5ldHdvcmtTdGF0ZUNoYW5nZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp1cGRhdGVBcHBsaWNh
dGlvbkNhY2hlU3RhdHVzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6ZGlkUmVxdWVzdEFuaW1hdGlvbkZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ2FuY2VsQW5pbWF0aW9uRnJhbWUpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRmlyZUFuaW1hdGlvbkZyYW1l
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6bGF5ZXJUcmVl
RGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
cmVuZGVyTGF5ZXJEZXN0cm95ZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpwc2V1ZG9FbGVtZW50RGVzdHJveWVkKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW5zdHJ1bWVudGluZ0FnZW50c0ZvckZyYW1lKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW5zdHJ1bWVudGluZ0Fn
ZW50c0ZvckRvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6ZGlkQ3JlYXRlSXNvbGF0ZWRDb250ZXh0KTogRGVsZXRlZC4KKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llLmNwcDogVGFrZSBhIHJlZmVyZW5j
ZSwgdXNlIGRlZmF1bHQgUmVmUHRyIGNvbnN0cnVjdG9yLgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29r
aWUpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUu
aDogRml4IG1pc3BsYWNlZCBFTkFCTEUgZ3VhcmQuCisgICAgICAgICogaW5zcGVjdG9yL0luc3Ry
dW1lbnRpbmdBZ2VudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aW5zdHJ1bWVudGF0aW9uRm9y
UGFnZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjppbnN0cnVtZW50YXRpb25Gb3JXb3Jr
ZXJHbG9iYWxTY29wZSk6IERlbGV0ZWQuCisgICAgICAgICogaW5zcGVjdG9yL0luc3RydW1lbnRp
bmdBZ2VudHMuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJvbGxl
ci5oOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudExvYWRlcjo6cmVzcG9uc2VSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudExvYWRlcjo6Y29udGludWVBZnRlckNvbnRlbnRQb2xpY3kpOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmRldGFjaEZyb21GcmFtZSk6CisgICAgICAgICogbG9h
ZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHA6IFJlbW92ZSB1bm5lY2Vzc2FyeSBFTkFC
TEUoSU5TUEVDVE9SKSBndWFyZHMsIGFzIHRoZXNlIGlubGluZWQgY2FsbHMKKyAgICAgICAgYXJl
IGJvaWxlZCBhd2F5IGJ5IHRoZSBjb21waWxlciBpZiAhRU5BQkxFKElOU1BFQ1RPUikuCisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKToK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6ZGlkRmluaXNoTG9h
ZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmRpZEZh
aWwpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpwcmVmbGln
aHRGYWlsdXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6
bG9hZFJlcXVlc3QpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6ZGV0YWNoRnJvbVBhcmVudCk6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZUxvYWRlcjo6bG9hZGVkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUpOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmRpc3BhdGNoRGlkQ2xlYXJXaW5kb3dPYmplY3RJbldv
cmxkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpkaXNwYXRjaERpZENvbW1pdExv
YWQpOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpub3RpZnlEaWRTY2hlZHVsZVJlc291
cmNlUmVxdWVzdCk6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QpOiBSZW1vdmUgdW5u
ZWNlc3NhcnkgRU5BQkxFIGd1YXJkLgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlR3JvdXAuY3BwOiBSZW1vdmUgc2V2ZXJhbCB1bm5lY2Vzc2FyeSBFTkFCTEUgZ3Vh
cmRzLgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRSZWNlaXZl
UmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRS
ZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRp
ZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUdyb3Vw
OjpkaWRGYWlsKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OmRlbGV0ZUlmUG9zc2libGUpOgorICAg
ICAgICAqIHBhZ2UvQ2hyb21lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZTo6c2Nyb2xs
KToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZTo6cnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVs
KToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZTo6cnVuSmF2YVNjcmlwdEFsZXJ0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNocm9tZTo6cnVuSmF2YVNjcmlwdENvbmZpcm0pOgorICAgICAgICAoV2Vi
Q29yZTo6Q2hyb21lOjpydW5KYXZhU2NyaXB0UHJvbXB0KToKKyAgICAgICAgKFdlYkNvcmU6OkNo
cm9tZTo6bW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQpOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6ZGlzcGF0Y2hMb2FkRXZlbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93OjpkaXNwYXRjaEV2ZW50KToKKyAgICAgICAgKiBw
YWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6Omhh
bmRsZU1vdXNlUHJlc3NFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6Omhh
bmRsZVRvdWNoRXZlbnQpOiBBZGQgYSBndWFyZCB0byBtYWtlIGl0IHNhZmUgdG8gcGFzcyBldmVu
dCB0YXJnZXQgYnktcmVmZXJlbmNlLgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6bGF5b3V0KToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lVmlldzo6bWVkaWFUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6c2NoZWR1
bGVSZWxheW91dCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnNjaGVkdWxlUmVsYXlv
dXRPZlN1YnRyZWUpOgorICAgICAgICAqIHBhZ2UvUGFnZUNvbnNvbGVDbGllbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UGFnZUNvbnNvbGVDbGllbnQ6OmFkZE1lc3NhZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6UGFnZUNvbnNvbGVDbGllbnQ6Om1lc3NhZ2VXaXRoVHlwZUFuZExldmVsKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBhZ2VDb25zb2xlQ2xpZW50Ojpjb3VudCk6CisgICAgICAgIChXZWJD
b3JlOjpQYWdlQ29uc29sZUNsaWVudDo6cHJvZmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdl
Q29uc29sZUNsaWVudDo6cHJvZmlsZUVuZCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlQ29uc29s
ZUNsaWVudDo6dGltZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlQ29uc29sZUNsaWVudDo6dGlt
ZUVuZCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlQ29uc29sZUNsaWVudDo6dGltZVN0YW1wKToK
KyAgICAgICAgKiBwYWdlL1NldHRpbmdzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdz
OjpzZXRTY3JpcHRFbmFibGVkKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnNjcm9sbFRvKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckxheWVyQ29tcG9zaXRvcjo6bGF5ZXJCZWNhbWVOb25Db21wb3NpdGVkKToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93VGhyZWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlck5hbWVkRmxvd1RocmVhZDo6cmVnaXN0ZXJOYW1lZEZsb3dDb250ZW50RWxlbWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6OnVucmVnaXN0ZXJOYW1l
ZEZsb3dDb250ZW50RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJOYW1lZEZsb3dU
aHJlYWQ6OmRpc3BhdGNoUmVnaW9uT3ZlcnNldENoYW5nZUV2ZW50SWZOZWVkZWQpOgorICAgICAg
ICAqIHJlcGxheS9SZXBsYXlDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlcGxh
eUNvbnRyb2xsZXI6OnN3aXRjaFNlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVwbGF5Q29u
dHJvbGxlcjo6Y3JlYXRlU2VnbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpSZXBsYXlDb250cm9s
bGVyOjpjb21wbGV0ZVNlZ21lbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVwbGF5Q29udHJvbGxl
cjo6bG9hZFNlZ21lbnRBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OlJlcGxheUNvbnRyb2xs
ZXI6OnVubG9hZFNlZ21lbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVwbGF5Q29udHJvbGxlcjo6
c3RhcnRDYXB0dXJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UmVwbGF5Q29udHJvbGxlcjo6c3Rv
cENhcHR1cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpSZXBsYXlDb250cm9sbGVyOjpzdGFydFBs
YXliYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlJlcGxheUNvbnRyb2xsZXI6OnBhdXNlUGxheWJh
Y2spOgorICAgICAgICAoV2ViQ29yZTo6UmVwbGF5Q29udHJvbGxlcjo6Y2FuY2VsUGxheWJhY2sp
OgorICAgICAgICAoV2ViQ29yZTo6UmVwbGF5Q29udHJvbGxlcjo6d2lsbERpc3BhdGNoSW5wdXQp
OgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
dGVybmFsczo6Y29uc29sZU1lc3NhZ2VBcmd1bWVudENvdW50cyk6CisgICAgICAgICogeG1sL1hN
TEh0dHBSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpjYWxs
UmVhZHlTdGF0ZUNoYW5nZUxpc3RlbmVyKToKKwogMjAxNC0xMi0yOSAgQW5kZXJzIENhcmxzc29u
ICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBtb3JlIGRlYWQgY29kZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmV4cC5pbgppbmRleCBhNzlkMWI5NDdlOGEwMGE2NjY4Y2E0OWNjMWY1Yzk1M2Uw
ZGFkMThiLi42NTFiNWMyNmRiYjEwMzVlMDBkMGEyODQ1OTYwMTg1NzJjNmZiY2YyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmV4cC5pbgpAQCAtMzE5NSw3ICszMTk1LDYgQEAgX19aTjdXZWJDb3JlMTlJbnNwZWN0
b3JDb250cm9sbGVyNWNsb3NlRXYKIF9fWk43V2ViQ29yZTIxSW5zcGVjdG9yRnJvbnRlbmRIb3N0
MTZkaXNjb25uZWN0Q2xpZW50RXYKIF9fWk43V2ViQ29yZTIxSW5zcGVjdG9yRnJvbnRlbmRIb3N0
QzFFUE5TXzIzSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRFUE5TXzRQYWdlRQogX19aTjdXZWJDb3Jl
MjFJbnNwZWN0b3JGcm9udGVuZEhvc3REMUV2Ci1fX1pON1dlYkNvcmUyMmluc3RydW1lbnRhdGlv
bkZvclBhZ2VFUE5TXzRQYWdlRQogX19aTjdXZWJDb3JlMjRJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b24xN3NfZnJvbnRlbmRDb3VudGVyRQogX19aTjdXZWJDb3JlMjRJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb24yNmluc3RydW1lbnRpbmdBZ2VudHNGb3JQYWdlRVBOU180UGFnZUUKIF9fWk43V2ViQ29y
ZTI4SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDExaXNVbmRlclRlc3RFdgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcAppbmRleCA3MDIxNDRj
NjY0NDE2YWFmOGI4ZmFkYzYyNWM3NTExODgzNzJmMjYzLi4wNDc0MzM2ZWEzMjNkZmJkMWQ3ZWQ0
Y2QwZTY1ZjE5Nzg2NGZjNGNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TY3JpcHRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
Y3JpcHRDb250cm9sbGVyLmNwcApAQCAtMTQ0LDEzICsxNDQsMTMgQEAgRGVwcmVjYXRlZDo6U2Ny
aXB0VmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGVJbldvcmxkKGNvbnN0IFNjcmlwdFNv
dXJjZUNvZGUKIAogICAgIFJlZjxGcmFtZT4gcHJvdGVjdChtX2ZyYW1lKTsKIAotICAgIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWUgPSBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OndpbGxFdmFsdWF0ZVNjcmlwdCgmbV9mcmFtZSwgc291cmNlVVJMLCBzb3VyY2VDb2RlLnN0
YXJ0TGluZSgpKTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgY29va2llID0g
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRXZhbHVhdGVTY3JpcHQobV9mcmFtZSwgc291
cmNlVVJMLCBzb3VyY2VDb2RlLnN0YXJ0TGluZSgpKTsKIAogICAgIEpTVmFsdWUgZXZhbHVhdGlv
bkV4Y2VwdGlvbjsKIAogICAgIEpTVmFsdWUgcmV0dXJuVmFsdWUgPSBKU01haW5UaHJlYWRFeGVj
U3RhdGU6OmV2YWx1YXRlKGV4ZWMsIGpzU291cmNlQ29kZSwgc2hlbGwsICZldmFsdWF0aW9uRXhj
ZXB0aW9uKTsKIAotICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRXZhbHVhdGVTY3Jp
cHQoY29va2llLCAmbV9mcmFtZSk7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRF
dmFsdWF0ZVNjcmlwdChjb29raWUsIG1fZnJhbWUpOwogCiAgICAgaWYgKGV2YWx1YXRpb25FeGNl
cHRpb24pIHsKICAgICAgICAgcmVwb3J0RXhjZXB0aW9uKGV4ZWMsIGV2YWx1YXRpb25FeGNlcHRp
b24sIHNvdXJjZUNvZGUuY2FjaGVkU2NyaXB0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uLmNwcAppbmRleCA1NzFkODQ0NzE5
NDcwOThlZTQ2MzI5MDA5YjY2YTQ2ZGY5NmE3MDg2Li5jNzI4NTFmMDAwYTJiNWNiOTE5ZGRlYzJl
MjE2Zjg0NDliNmI5OTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvUHJvcGVydHlT
ZXRDU1NTdHlsZURlY2xhcmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvUHJvcGVy
dHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uLmNwcApAQCAtODgsNyArODgsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIHNfY3VycmVudERlY2wgPSAwOwogICAgICAgICBzX3Nob3VsZE5vdGlmeUluc3BlY3Rv
ciA9IGZhbHNlOwogICAgICAgICBpZiAobG9jYWxDb3B5U3R5bGVEZWNsLT5wYXJlbnRFbGVtZW50
KCkpCi0gICAgICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEludmFsaWRhdGVT
dHlsZUF0dHIoJmxvY2FsQ29weVN0eWxlRGVjbC0+cGFyZW50RWxlbWVudCgpLT5kb2N1bWVudCgp
LCBsb2NhbENvcHlTdHlsZURlY2wtPnBhcmVudEVsZW1lbnQoKSk7CisgICAgICAgICAgICBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEludmFsaWRhdGVTdHlsZUF0dHIobG9jYWxDb3B5U3R5
bGVEZWNsLT5wYXJlbnRFbGVtZW50KCktPmRvY3VtZW50KCksICpsb2NhbENvcHlTdHlsZURlY2wt
PnBhcmVudEVsZW1lbnQoKSk7CiAgICAgfQogCiAgICAgdm9pZCBlbnF1ZXVlTXV0YXRpb25SZWNv
cmQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcAppbmRleCAwOGU1MWQ4ODlj
MWU5M2VlNzYyNzVlYmVhZjI5MGQzMjA1YTQ1OThjLi40ODQ3ZTg1YjY3YTY1MGRmY2RkM2ExZGJl
ODQ4MWQ0OTAxZTc1OGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JD
aGVja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcApA
QCAtODg4LDcgKzg4OCw3IEBAIGJvb2wgU2VsZWN0b3JDaGVja2VyOjpjaGVja09uZShjb25zdCBD
aGVja2luZ0NvbnRleHRXaXRoU3RhdHVzJiBjb250ZXh0LCBQc2V1ZG9JCiAgICAgICAgICAgICAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQtPnNldENoaWxkcmVu
QWZmZWN0ZWRCeUhvdmVyKCk7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlm
IChlbGVtZW50LT5ob3ZlcmVkKCkgfHwgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpmb3JjZVBz
ZXVkb1N0YXRlKGVsZW1lbnQsIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0hvdmVyKSkKKyAgICAg
ICAgICAgICAgICBpZiAoZWxlbWVudC0+aG92ZXJlZCgpIHx8IEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6Zm9yY2VQc2V1ZG9TdGF0ZSgqZWxlbWVudCwgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNz
SG92ZXIpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIGJyZWFrOwpAQCAtOTAwLDcgKzkwMCw3IEBAIGJvb2wgU2VsZWN0b3JDaGVj
a2VyOjpjaGVja09uZShjb25zdCBDaGVja2luZ0NvbnRleHRXaXRoU3RhdHVzJiBjb250ZXh0LCBQ
c2V1ZG9JCiAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAg
IGVsZW1lbnQtPnNldENoaWxkcmVuQWZmZWN0ZWRCeUFjdGl2ZSgpOwogICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICBpZiAoZWxlbWVudC0+YWN0aXZlKCkgfHwgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpmb3JjZVBzZXVkb1N0YXRlKGVsZW1lbnQsIENTU1NlbGVjdG9yOjpQc2V1
ZG9DbGFzc0FjdGl2ZSkpCisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQtPmFjdGl2ZSgpIHx8
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Zm9yY2VQc2V1ZG9TdGF0ZSgqZWxlbWVudCwgQ1NT
U2VsZWN0b3I6OlBzZXVkb0NsYXNzQWN0aXZlKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKQEAgLTExMjcsNyArMTEy
Nyw3IEBAIHN0YXRpYyBib29sIGlzRnJhbWVGb2N1c2VkKGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQp
CiAKIGJvb2wgU2VsZWN0b3JDaGVja2VyOjptYXRjaGVzRm9jdXNQc2V1ZG9DbGFzcyhjb25zdCBF
bGVtZW50KiBlbGVtZW50KQogewotICAgIGlmIChJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmZv
cmNlUHNldWRvU3RhdGUoY29uc3RfY2FzdDxFbGVtZW50Kj4oZWxlbWVudCksIENTU1NlbGVjdG9y
OjpQc2V1ZG9DbGFzc0ZvY3VzKSkKKyAgICBpZiAoSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpm
b3JjZVBzZXVkb1N0YXRlKGNvbnN0X2Nhc3Q8RWxlbWVudCY+KCplbGVtZW50KSwgQ1NTU2VsZWN0
b3I6OlBzZXVkb0NsYXNzRm9jdXMpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICByZXR1cm4g
ZWxlbWVudC0+Zm9jdXNlZCgpICYmIGlzRnJhbWVGb2N1c2VkKGVsZW1lbnQpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCmluZGV4IGU0YTg0ZTc1YzcxZDExOWU4YjhkODVjYmQ1
ODlkNTZkNjYxNzhlMjkuLjVhMTI4NzI4NDZlMDY2ZDgzMGMzOTAyYjMyMmNjMDRiZTc0NzRkZDYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKQEAgLTc3Niw3ICs3NzYsNyBAQCBS
ZWY8UmVuZGVyU3R5bGU+IFN0eWxlUmVzb2x2ZXI6OnN0eWxlRm9yRWxlbWVudChFbGVtZW50KiBl
bGVtZW50LCBSZW5kZXJTdHlsZSogZAogICAgICAgICBzdGF0ZS5zdHlsZSgpLT5zZXRJc0xpbmso
dHJ1ZSk7CiAgICAgICAgIEVJbnNpZGVMaW5rIGxpbmtTdGF0ZSA9IHN0YXRlLmVsZW1lbnRMaW5r
U3RhdGUoKTsKICAgICAgICAgaWYgKGxpbmtTdGF0ZSAhPSBOb3RJbnNpZGVMaW5rKSB7Ci0gICAg
ICAgICAgICBib29sIGZvcmNlVmlzaXRlZCA9IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Zm9y
Y2VQc2V1ZG9TdGF0ZShlbGVtZW50LCBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NWaXNpdGVkKTsK
KyAgICAgICAgICAgIGJvb2wgZm9yY2VWaXNpdGVkID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Ojpmb3JjZVBzZXVkb1N0YXRlKCplbGVtZW50LCBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NWaXNp
dGVkKTsKICAgICAgICAgICAgIGlmIChmb3JjZVZpc2l0ZWQpCiAgICAgICAgICAgICAgICAgbGlu
a1N0YXRlID0gSW5zaWRlVmlzaXRlZExpbms7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzc2ppdC9TZWxlY3RvckNvbXBpbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nz
c2ppdC9TZWxlY3RvckNvbXBpbGVyLmNwcAppbmRleCAyNGY1NWNkNTg3MzU5NGRkOGU0YTlkN2E0
Njg4YTVmYjZhYTRiZmY2Li44OTEwZDAyZDllNjNkZTcxZDk5Nzg2OTM4N2JlMTU3ODczN2QxMzJm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3NqaXQvU2VsZWN0b3JDb21waWxlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvY3Nzaml0L1NlbGVjdG9yQ29tcGlsZXIuY3BwCkBAIC0yOTIx
LDE0ICsyOTIxLDE0IEBAIHN0YXRpYyB2b2lkIHNldEZpcnN0Q2hpbGRTdGF0ZShFbGVtZW50KiBl
bGVtZW50KQogCiBzdGF0aWMgYm9vbCBlbGVtZW50SXNBY3RpdmUoRWxlbWVudCogZWxlbWVudCkK
IHsKLSAgICByZXR1cm4gZWxlbWVudC0+YWN0aXZlKCkgfHwgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpmb3JjZVBzZXVkb1N0YXRlKGVsZW1lbnQsIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0Fj
dGl2ZSk7CisgICAgcmV0dXJuIGVsZW1lbnQtPmFjdGl2ZSgpIHx8IEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6Zm9yY2VQc2V1ZG9TdGF0ZSgqZWxlbWVudCwgQ1NTU2VsZWN0b3I6OlBzZXVkb0Ns
YXNzQWN0aXZlKTsKIH0KIAogc3RhdGljIGJvb2wgZWxlbWVudElzQWN0aXZlRm9yU3R5bGVSZXNv
bHV0aW9uKEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFNlbGVjdG9yQ2hlY2tlcjo6Q2hlY2tpbmdD
b250ZXh0KiBjaGVja2luZ0NvbnRleHQpCiB7CiAgICAgaWYgKGNoZWNraW5nQ29udGV4dC0+cmVz
b2x2aW5nTW9kZSA9PSBTZWxlY3RvckNoZWNrZXI6Ok1vZGU6OlJlc29sdmluZ1N0eWxlKQogICAg
ICAgICBlbGVtZW50LT5zZXRDaGlsZHJlbkFmZmVjdGVkQnlBY3RpdmUoKTsKLSAgICByZXR1cm4g
ZWxlbWVudC0+YWN0aXZlKCkgfHwgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpmb3JjZVBzZXVk
b1N0YXRlKGVsZW1lbnQsIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0FjdGl2ZSk7CisgICAgcmV0
dXJuIGVsZW1lbnQtPmFjdGl2ZSgpIHx8IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Zm9yY2VQ
c2V1ZG9TdGF0ZSgqZWxlbWVudCwgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzQWN0aXZlKTsKIH0K
IAogdm9pZCBTZWxlY3RvckNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlRWxlbWVudElzQWN0aXZlKEFz
c2VtYmxlcjo6SnVtcExpc3QmIGZhaWx1cmVDYXNlcywgY29uc3QgU2VsZWN0b3JGcmFnbWVudCYg
ZnJhZ21lbnQpCkBAIC0zMTAwLDE0ICszMTAwLDE0IEBAIHZvaWQgU2VsZWN0b3JDb2RlR2VuZXJh
dG9yOjpnZW5lcmF0ZUVsZW1lbnRJc0ZpcnN0Q2hpbGQoQXNzZW1ibGVyOjpKdW1wTGlzdCYgZmFp
CiAKIHN0YXRpYyBib29sIGVsZW1lbnRJc0hvdmVyZWQoRWxlbWVudCogZWxlbWVudCkKIHsKLSAg
ICByZXR1cm4gZWxlbWVudC0+aG92ZXJlZCgpIHx8IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
Zm9yY2VQc2V1ZG9TdGF0ZShlbGVtZW50LCBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NIb3Zlcik7
CisgICAgcmV0dXJuIGVsZW1lbnQtPmhvdmVyZWQoKSB8fCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmZvcmNlUHNldWRvU3RhdGUoKmVsZW1lbnQsIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0hv
dmVyKTsKIH0KIAogc3RhdGljIGJvb2wgZWxlbWVudElzSG92ZXJlZEZvclN0eWxlUmVzb2x1dGlv
bihFbGVtZW50KiBlbGVtZW50LCBjb25zdCBTZWxlY3RvckNoZWNrZXI6OkNoZWNraW5nQ29udGV4
dCogY2hlY2tpbmdDb250ZXh0KQogewogICAgIGlmIChjaGVja2luZ0NvbnRleHQtPnJlc29sdmlu
Z01vZGUgPT0gU2VsZWN0b3JDaGVja2VyOjpNb2RlOjpSZXNvbHZpbmdTdHlsZSkKICAgICAgICAg
ZWxlbWVudC0+c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5SG92ZXIoKTsKLSAgICByZXR1cm4gZWxlbWVu
dC0+aG92ZXJlZCgpIHx8IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Zm9yY2VQc2V1ZG9TdGF0
ZShlbGVtZW50LCBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NIb3Zlcik7CisgICAgcmV0dXJuIGVs
ZW1lbnQtPmhvdmVyZWQoKSB8fCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmZvcmNlUHNldWRv
U3RhdGUoKmVsZW1lbnQsIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0hvdmVyKTsKIH0KIAogdm9p
ZCBTZWxlY3RvckNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlRWxlbWVudElzSG92ZXJlZChBc3NlbWJs
ZXI6Okp1bXBMaXN0JiBmYWlsdXJlQ2FzZXMsIGNvbnN0IFNlbGVjdG9yRnJhZ21lbnQmIGZyYWdt
ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuY3BwCmluZGV4IDcxNzAwMDgyM2FmMzE1
OTgzYWRkMzBlN2YzZWRhMTBkOTMwMDM0ODkuLmI0OTNkOGI2NTk0MjAyOTgxM2Q1YzEyMjJmMmYy
YjQ0ZjA3OWM5MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRh
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0YS5jcHAKQEAgLTIyNyw5
ICsyMjcsOCBAQCB2b2lkIENoYXJhY3RlckRhdGE6OmRpc3BhdGNoTW9kaWZpZWRFdmVudChjb25z
dCBTdHJpbmcmIG9sZERhdGEpCiAgICAgICAgICAgICBkaXNwYXRjaFNjb3BlZEV2ZW50KE11dGF0
aW9uRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuRE9NQ2hhcmFjdGVyRGF0YU1vZGlmaWVkRXZl
bnQsIHRydWUsIDAsIG9sZERhdGEsIG1fZGF0YSkpOwogICAgICAgICBkaXNwYXRjaFN1YnRyZWVN
b2RpZmllZEV2ZW50KCk7CiAgICAgfQotI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpjaGFyYWN0ZXJEYXRhTW9kaWZpZWQoJmRvY3VtZW50KCksIHRo
aXMpOwotI2VuZGlmCisKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNoYXJhY3RlckRh
dGFNb2RpZmllZChkb2N1bWVudCgpLCAqdGhpcyk7CiB9CiAKIHZvaWQgQ2hhcmFjdGVyRGF0YTo6
Y2hlY2tDaGFyRGF0YU9wZXJhdGlvbih1bnNpZ25lZCBvZmZzZXQsIEV4Y2VwdGlvbkNvZGUmIGVj
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCmluZGV4IGU3NTA4N2UwZjMzY2UwODAw
ZmY3ZjFjMGYxMmQwMjExZjFlYTE1ZGEuLjgyYjIzN2IzM2E4ODE3YzJmZDE2YWJkNzcyZDllMTE3
MDExNTczMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKQEAgLTI3Niw3ICsy
NzYsNyBAQCBib29sIENvbnRhaW5lck5vZGU6Omluc2VydEJlZm9yZShQYXNzUmVmUHRyPE5vZGU+
IG5ld0NoaWxkLCBOb2RlKiByZWZDaGlsZCwgRXhjZQogICAgIGlmICghY2hlY2tBY2NlcHRDaGls
ZEd1YXJhbnRlZWROb2RlVHlwZXModGhpcywgbmV3Q2hpbGQuZ2V0KCksIGVjKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCi0gICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsSW5zZXJ0
RE9NTm9kZSgmZG9jdW1lbnQoKSwgdGhpcyk7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Ojp3aWxsSW5zZXJ0RE9NTm9kZShkb2N1bWVudCgpLCAqdGhpcyk7CiAKICAgICBDaGlsZExpc3RN
dXRhdGlvblNjb3BlIG11dGF0aW9uKCp0aGlzKTsKICAgICBmb3IgKGF1dG8gaXQgPSB0YXJnZXRz
LmJlZ2luKCksIGVuZCA9IHRhcmdldHMuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkgewpAQCAtNDMy
LDcgKzQzMiw3IEBAIGJvb2wgQ29udGFpbmVyTm9kZTo6cmVwbGFjZUNoaWxkKFBhc3NSZWZQdHI8
Tm9kZT4gbmV3Q2hpbGQsIE5vZGUqIG9sZENoaWxkLCBFeGNlCiAgICAgaWYgKCFjaGVja1JlcGxh
Y2VDaGlsZCh0aGlzLCBuZXdDaGlsZC5nZXQoKSwgb2xkQ2hpbGQsIGVjKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCi0gICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsSW5zZXJ0RE9N
Tm9kZSgmZG9jdW1lbnQoKSwgdGhpcyk7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3
aWxsSW5zZXJ0RE9NTm9kZShkb2N1bWVudCgpLCAqdGhpcyk7CiAKICAgICAvLyBBZGQgdGhlIG5l
dyBjaGlsZChyZW4pCiAgICAgZm9yIChhdXRvIGl0ID0gdGFyZ2V0cy5iZWdpbigpLCBlbmQgPSB0
YXJnZXRzLmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpIHsKQEAgLTU3Nyw3ICs1NzcsNyBAQCBib29s
IENvbnRhaW5lck5vZGU6OnJlbW92ZUNoaWxkKE5vZGUqIG9sZENoaWxkLCBFeGNlcHRpb25Db2Rl
JiBlYykKIAogdm9pZCBDb250YWluZXJOb2RlOjpyZW1vdmVCZXR3ZWVuKE5vZGUqIHByZXZpb3Vz
Q2hpbGQsIE5vZGUqIG5leHRDaGlsZCwgTm9kZSYgb2xkQ2hpbGQpCiB7Ci0gICAgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpkaWRSZW1vdmVET01Ob2RlKCZvbGRDaGlsZC5kb2N1bWVudCgpLCAm
b2xkQ2hpbGQpOworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVtb3ZlRE9NTm9k
ZShvbGRDaGlsZC5kb2N1bWVudCgpLCBvbGRDaGlsZCk7CiAKICAgICBOb0V2ZW50RGlzcGF0Y2hB
c3NlcnRpb24gYXNzZXJ0Tm9FdmVudERpc3BhdGNoOwogCkBAIC02OTksNyArNjk5LDcgQEAgYm9v
bCBDb250YWluZXJOb2RlOjphcHBlbmRDaGlsZChQYXNzUmVmUHRyPE5vZGU+IG5ld0NoaWxkLCBF
eGNlcHRpb25Db2RlJiBlYykKICAgICBpZiAoIWNoZWNrQWNjZXB0Q2hpbGRHdWFyYW50ZWVkTm9k
ZVR5cGVzKHRoaXMsIG5ld0NoaWxkLmdldCgpLCBlYykpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEluc2VydERPTU5vZGUoJmRvY3Vt
ZW50KCksIHRoaXMpOworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEluc2VydERP
TU5vZGUoZG9jdW1lbnQoKSwgKnRoaXMpOwogCiAgICAgLy8gTm93IGFjdHVhbGx5IGFkZCB0aGUg
Y2hpbGQocmVuKQogICAgIENoaWxkTGlzdE11dGF0aW9uU2NvcGUgbXV0YXRpb24oKnRoaXMpOwpA
QCAtODE3LDE0ICs4MTcsMTQgQEAgc3RhdGljIHZvaWQgZGlzcGF0Y2hDaGlsZEluc2VydGlvbkV2
ZW50cyhOb2RlJiBjaGlsZCkKIHN0YXRpYyB2b2lkIGRpc3BhdGNoQ2hpbGRSZW1vdmFsRXZlbnRz
KE5vZGUmIGNoaWxkKQogewogICAgIGlmIChjaGlsZC5pc0luU2hhZG93VHJlZSgpKSB7Ci0gICAg
ICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFJlbW92ZURPTU5vZGUoJmNoaWxkLmRv
Y3VtZW50KCksICZjaGlsZCk7CisgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2ls
bFJlbW92ZURPTU5vZGUoY2hpbGQuZG9jdW1lbnQoKSwgY2hpbGQpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCiAgICAgQVNTRVJUKCFOb0V2ZW50RGlzcGF0Y2hBc3NlcnRpb246OmlzRXZlbnRE
aXNwYXRjaEZvcmJpZGRlbigpKTsKIAogICAgIHdpbGxDcmVhdGVQb3NzaWJseU9ycGhhbmVkVHJl
ZUJ5UmVtb3ZhbCgmY2hpbGQpOwotICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFJl
bW92ZURPTU5vZGUoJmNoaWxkLmRvY3VtZW50KCksICZjaGlsZCk7CisgICAgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjp3aWxsUmVtb3ZlRE9NTm9kZShjaGlsZC5kb2N1bWVudCgpLCBjaGlsZCk7
CiAKICAgICBSZWZQdHI8Tm9kZT4gYyA9ICZjaGlsZDsKICAgICBSZWY8RG9jdW1lbnQ+IGRvY3Vt
ZW50KGNoaWxkLmRvY3VtZW50KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0Nv
bnRhaW5lck5vZGVBbGdvcml0aG1zLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9k
ZUFsZ29yaXRobXMuaAppbmRleCBjYzA5MWIwMjU0MDRjMWRiN2U1ODQ0ZjI0MzMzYTI5MGY4MDll
Y2MyLi45NzE0YmJkMWMzNTNjZTVlYjI5NDllZDI0YzM2MjUzNDc5NDVhNjkxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuaApAQCAtMjE3LDkgKzIxNyw3
IEBAIGlubGluZSB2b2lkIENoaWxkTm9kZUluc2VydGlvbk5vdGlmaWVyOjpub3RpZnkoTm9kZSYg
bm9kZSkKIHsKICAgICBBU1NFUlQoIU5vRXZlbnREaXNwYXRjaEFzc2VydGlvbjo6aXNFdmVudERp
c3BhdGNoRm9yYmlkZGVuKCkpOwogCi0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OmRpZEluc2VydERPTU5vZGUoJm5vZGUuZG9jdW1lbnQoKSwgJm5v
ZGUpOwotI2VuZGlmCisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRJbnNlcnRET01O
b2RlKG5vZGUuZG9jdW1lbnQoKSwgbm9kZSk7CiAKICAgICBSZWY8RG9jdW1lbnQ+IHByb3RlY3RE
b2N1bWVudChub2RlLmRvY3VtZW50KCkpOwogICAgIFJlZjxOb2RlPiBwcm90ZWN0Tm9kZShub2Rl
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IGU2ZWU2MjM5OTYyNDZiNzkzYmRiNWNlNDNm
OGU1NDVjYWMxODUwZjUuLjhmOGNiOGU1ZDVlODAxMDcwODQ3ZmIwOTk4NzFmMmU5YWYyY2VkYjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtMTY5Nyw3ICsxNjk3LDcgQEAgdm9pZCBEb2N1
bWVudDo6c2NoZWR1bGVTdHlsZVJlY2FsYygpCiAgICAgCiAgICAgbV9zdHlsZVJlY2FsY1RpbWVy
LnN0YXJ0T25lU2hvdCgwKTsKIAotICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkU2No
ZWR1bGVTdHlsZVJlY2FsY3VsYXRpb24odGhpcyk7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpkaWRTY2hlZHVsZVN0eWxlUmVjYWxjdWxhdGlvbigqdGhpcyk7CiB9CiAKIHZvaWQgRG9j
dW1lbnQ6OnVuc2NoZWR1bGVTdHlsZVJlY2FsYygpCkBAIC0xNzUwLDcgKzE3NTAsNyBAQCB2b2lk
IERvY3VtZW50OjpyZWNhbGNTdHlsZShTdHlsZTo6Q2hhbmdlIGNoYW5nZSkKIAogICAgIG1fc3R5
bGVTaGVldENvbGxlY3Rpb24uZmx1c2hQZW5kaW5nVXBkYXRlcygpOwogCi0gICAgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uQ29va2llIGNvb2tpZSA9IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
d2lsbFJlY2FsY3VsYXRlU3R5bGUodGhpcyk7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Q29va2llIGNvb2tpZSA9IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFJlY2FsY3VsYXRl
U3R5bGUoKnRoaXMpOwogCiAgICAgaWYgKG1fZWxlbWVudFNoZWV0ICYmIG1fZWxlbWVudFNoZWV0
LT5jb250ZW50cygpLnVzZXNSZW1Vbml0cygpKQogICAgICAgICBtX3N0eWxlU2hlZXRDb2xsZWN0
aW9uLnNldFVzZXNSZW1Vbml0KHRydWUpOwpAQCAtNDU5Niw3ICs0NTk2LDcgQEAgdm9pZCBEb2N1
bWVudDo6ZmluaXNoZWRQYXJzaW5nKCkKIAogICAgICAgICBmLT5sb2FkZXIoKS5maW5pc2hlZFBh
cnNpbmcoKTsKIAotICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRvbUNvbnRlbnRM
b2FkZWRFdmVudEZpcmVkKGYuZ2V0KCkpOworICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmRvbUNvbnRlbnRMb2FkZWRFdmVudEZpcmVkKCpmKTsKICAgICB9CiAKICAgICAvLyBTY2hl
ZHVsZSBkcm9wcGluZyBvZiB0aGUgRG9jdW1lbnRTaGFyZWRPYmplY3RQb29sLiBXZSBrZWVwIGl0
IGFsaXZlIGZvciBhIHdoaWxlIGFmdGVyIHBhcnNpbmcgZmluaXNoZXMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
LmNwcAppbmRleCA1MWU3ZTI5OGFmZjcwNWM5NTY0YWUzOWUyZTIwZDgzOGIxMTM1MTdmLi5iOGRj
NmUxODczYTRhODIyMWY5ZmI3ZmJiNWY1YjJjMWYyZjI1ZmRlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQu
Y3BwCkBAIC0xNDc0LDcgKzE0NzQsNyBAQCB2b2lkIEVsZW1lbnQ6OmFkZFNoYWRvd1Jvb3QoUmVm
PFNoYWRvd1Jvb3Q+JiYgbmV3U2hhZG93Um9vdCkKIAogICAgIHNldE5lZWRzU3R5bGVSZWNhbGMo
UmVjb25zdHJ1Y3RSZW5kZXJUcmVlKTsKIAotICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
ZGlkUHVzaFNoYWRvd1Jvb3QodGhpcywgJnNoYWRvd1Jvb3QpOworICAgIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZGlkUHVzaFNoYWRvd1Jvb3QoKnRoaXMsIHNoYWRvd1Jvb3QpOwogfQogCiB2
b2lkIEVsZW1lbnQ6OnJlbW92ZVNoYWRvd1Jvb3QoKQpAQCAtMTQ4Miw3ICsxNDgyLDcgQEAgdm9p
ZCBFbGVtZW50OjpyZW1vdmVTaGFkb3dSb290KCkKICAgICBSZWZQdHI8U2hhZG93Um9vdD4gb2xk
Um9vdCA9IHNoYWRvd1Jvb3QoKTsKICAgICBpZiAoIW9sZFJvb3QpCiAgICAgICAgIHJldHVybjsK
LSAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxQb3BTaGFkb3dSb290KHRoaXMsIG9s
ZFJvb3QuZ2V0KCkpOworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFBvcFNoYWRv
d1Jvb3QoKnRoaXMsICpvbGRSb290KTsKICAgICBkb2N1bWVudCgpLnJlbW92ZUZvY3VzZWROb2Rl
T2ZTdWJ0cmVlKG9sZFJvb3QuZ2V0KCkpOwogCiAgICAgQVNTRVJUKCFvbGRSb290LT5yZW5kZXJl
cigpKTsKQEAgLTI4MTAsMjkgKzI4MTAsMjcgQEAgdm9pZCBFbGVtZW50Ojp3aWxsTW9kaWZ5QXR0
cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYKICAg
ICBpZiAoc3RkOjp1bmlxdWVfcHRyPE11dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwPiByZWNp
cGllbnRzID0gTXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXA6OmNyZWF0ZUZvckF0dHJpYnV0
ZXNNdXRhdGlvbigqdGhpcywgbmFtZSkpCiAgICAgICAgIHJlY2lwaWVudHMtPmVucXVldWVNdXRh
dGlvblJlY29yZChNdXRhdGlvblJlY29yZDo6Y3JlYXRlQXR0cmlidXRlcygqdGhpcywgbmFtZSwg
b2xkVmFsdWUpKTsKIAotI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjp3aWxsTW9kaWZ5RE9NQXR0cigmZG9jdW1lbnQoKSwgdGhpcywgb2xkVmFsdWUs
IG5ld1ZhbHVlKTsKLSNlbmRpZgorICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbE1v
ZGlmeURPTUF0dHIoZG9jdW1lbnQoKSwgKnRoaXMsIG9sZFZhbHVlLCBuZXdWYWx1ZSk7CiB9CiAK
IHZvaWQgRWxlbWVudDo6ZGlkQWRkQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUs
IGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCiB7CiAgICAgYXR0cmlidXRlQ2hhbmdlZChuYW1l
LCBudWxsQXRvbSwgdmFsdWUpOwotICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkTW9k
aWZ5RE9NQXR0cigmZG9jdW1lbnQoKSwgdGhpcywgbmFtZS5sb2NhbE5hbWUoKSwgdmFsdWUpOwor
ICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkTW9kaWZ5RE9NQXR0cihkb2N1bWVudCgp
LCAqdGhpcywgbmFtZS5sb2NhbE5hbWUoKSwgdmFsdWUpOwogICAgIGRpc3BhdGNoU3VidHJlZU1v
ZGlmaWVkRXZlbnQoKTsKIH0KIAogdm9pZCBFbGVtZW50OjpkaWRNb2RpZnlBdHRyaWJ1dGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiBvbGRWYWx1ZSwgY29u
c3QgQXRvbWljU3RyaW5nJiBuZXdWYWx1ZSkKIHsKICAgICBhdHRyaWJ1dGVDaGFuZ2VkKG5hbWUs
IG9sZFZhbHVlLCBuZXdWYWx1ZSk7Ci0gICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRN
b2RpZnlET01BdHRyKCZkb2N1bWVudCgpLCB0aGlzLCBuYW1lLmxvY2FsTmFtZSgpLCBuZXdWYWx1
ZSk7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRNb2RpZnlET01BdHRyKGRvY3Vt
ZW50KCksICp0aGlzLCBuYW1lLmxvY2FsTmFtZSgpLCBuZXdWYWx1ZSk7CiAgICAgLy8gRG8gbm90
IGRpc3BhdGNoIGEgRE9NU3VidHJlZU1vZGlmaWVkIGV2ZW50IGhlcmU7IHNlZSBidWcgODExNDEu
CiB9CiAKIHZvaWQgRWxlbWVudDo6ZGlkUmVtb3ZlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgb2xkVmFsdWUpCiB7CiAgICAgYXR0cmlidXRl
Q2hhbmdlZChuYW1lLCBvbGRWYWx1ZSwgbnVsbEF0b20pOwotICAgIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6ZGlkUmVtb3ZlRE9NQXR0cigmZG9jdW1lbnQoKSwgdGhpcywgbmFtZS5sb2NhbE5h
bWUoKSk7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZW1vdmVET01BdHRyKGRv
Y3VtZW50KCksICp0aGlzLCBuYW1lLmxvY2FsTmFtZSgpKTsKICAgICBkaXNwYXRjaFN1YnRyZWVN
b2RpZmllZEV2ZW50KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVu
dFRhcmdldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3BwCmluZGV4IGYx
N2Q2ZDNmYzc5ZmVhNTE5ZGVmZWU1ZTQxZWU1ZjRmNTA0MDJhNjIuLjdmMzg5NWIxNzY2Y2FmNGQ1
ZDMwYzg3NWI3MGY1NDFjNmFhMDUyMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9F
dmVudFRhcmdldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNwcApA
QCAtMjM0LDcgKzIzNCw3IEBAIHZvaWQgRXZlbnRUYXJnZXQ6OmZpcmVFdmVudExpc3RlbmVycyhF
dmVudCogZXZlbnQsIEV2ZW50VGFyZ2V0RGF0YSogZCwgRXZlbnRMaXN0CiAgICAgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uQ29va2llIHdpbGxEaXNwYXRjaEV2ZW50Q29va2llOwogICAgIGlmIChp
czxEb2N1bWVudD4oY29udGV4dCkpIHsKICAgICAgICAgZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1
bWVudD4oY29udGV4dCk7Ci0gICAgICAgIHdpbGxEaXNwYXRjaEV2ZW50Q29va2llID0gSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRGlzcGF0Y2hFdmVudChkb2N1bWVudCwgKmV2ZW50LCBz
aXplID4gMCk7CisgICAgICAgIHdpbGxEaXNwYXRjaEV2ZW50Q29va2llID0gSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjp3aWxsRGlzcGF0Y2hFdmVudCgqZG9jdW1lbnQsICpldmVudCwgc2l6ZSA+
IDApOwogICAgIH0KIAogICAgIGZvciAoOyBpIDwgc2l6ZTsgKytpKSB7CkBAIC0yNDksNyArMjQ5
LDcgQEAgdm9pZCBFdmVudFRhcmdldDo6ZmlyZUV2ZW50TGlzdGVuZXJzKEV2ZW50KiBldmVudCwg
RXZlbnRUYXJnZXREYXRhKiBkLCBFdmVudExpc3QKICAgICAgICAgaWYgKGV2ZW50LT5pbW1lZGlh
dGVQcm9wYWdhdGlvblN0b3BwZWQoKSkKICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWUgPSBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OndpbGxIYW5kbGVFdmVudChjb250ZXh0LCBldmVudCk7CisgICAgICAgIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWUgPSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OndpbGxIYW5kbGVFdmVudChjb250ZXh0LCAqZXZlbnQpOwogICAgICAgICAvLyBUbyBtYXRjaCBN
b3ppbGxhLCB0aGUgQVRfVEFSR0VUIHBoYXNlIGZpcmVzIGJvdGggY2FwdHVyaW5nIGFuZCBidWJi
bGluZwogICAgICAgICAvLyBldmVudCBsaXN0ZW5lcnMsIGV2ZW4gdGhvdWdoIHRoYXQgdmlvbGF0
ZXMgc29tZSB2ZXJzaW9ucyBvZiB0aGUgRE9NIHNwZWMuCiAgICAgICAgIHJlZ2lzdGVyZWRMaXN0
ZW5lci5saXN0ZW5lci0+aGFuZGxlRXZlbnQoY29udGV4dCwgZXZlbnQpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL05hbWVkRmxvd0NvbGxlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNv
cmUvZG9tL05hbWVkRmxvd0NvbGxlY3Rpb24uY3BwCmluZGV4IDZiZDc2NTVlY2Q0ZjE1NzI0ZGVi
ODkwY2VhNzdhMDM1MmQyY2MzMDkuLjYyMjc5N2NlYjE3ZTJkNGIzMjU2MDJhYjMwZDcyM2VhMmVj
OTY0NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9OYW1lZEZsb3dDb2xsZWN0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTmFtZWRGbG93Q29sbGVjdGlvbi5jcHAKQEAg
LTc5LDcgKzc5LDcgQEAgUmVmPFdlYktpdE5hbWVkRmxvdz4gTmFtZWRGbG93Q29sbGVjdGlvbjo6
ZW5zdXJlRmxvd1dpdGhOYW1lKGNvbnN0IFN0cmluZyYgZmxvd04KICAgICBSZWZQdHI8V2ViS2l0
TmFtZWRGbG93PiBuZXdGbG93ID0gV2ViS2l0TmFtZWRGbG93OjpjcmVhdGUodGhpcywgZmxvd05h
bWUpOwogICAgIG1fbmFtZWRGbG93cy5hZGQobmV3Rmxvdy5nZXQoKSk7CiAKLSAgICBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OmRpZENyZWF0ZU5hbWVkRmxvdyhkb2N1bWVudCgpLCBuZXdGbG93
LmdldCgpKTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENyZWF0ZU5hbWVkRmxv
dyhkb2N1bWVudCgpLCAqbmV3Rmxvdyk7CiAKICAgICByZXR1cm4gbmV3Rmxvdy5yZWxlYXNlTm9u
TnVsbCgpOwogfQpAQCAtOTMsNyArOTMsNyBAQCB2b2lkIE5hbWVkRmxvd0NvbGxlY3Rpb246OmRp
c2NhcmROYW1lZEZsb3coV2ViS2l0TmFtZWRGbG93KiBuYW1lZEZsb3cpCiAgICAgQVNTRVJUKG5h
bWVkRmxvdy0+Zmxvd1N0YXRlKCkgPT0gV2ViS2l0TmFtZWRGbG93OjpGbG93U3RhdGVOdWxsKTsK
ICAgICBBU1NFUlQobV9uYW1lZEZsb3dzLmNvbnRhaW5zKG5hbWVkRmxvdykpOwogCi0gICAgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUmVtb3ZlTmFtZWRGbG93KGRvY3VtZW50KCksIG5h
bWVkRmxvdyk7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUmVtb3ZlTmFtZWRG
bG93KGRvY3VtZW50KCksICpuYW1lZEZsb3cpOwogCiAgICAgbV9uYW1lZEZsb3dzLnJlbW92ZShu
YW1lZEZsb3cpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1BzZXVkb0VsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1BzZXVkb0VsZW1lbnQuY3BwCmluZGV4IDY1MGY3
MTMyZjY4OTZmODYxNTA2MGI3MGZiM2Y4YWRjYzMyZTYxZTMuLjkzMmI3MWJiNmNhYWM0ZTNlOWY4
Y2NiMGQwMmFlOGYxNGMwMzBlNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qc2V1
ZG9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUHNldWRvRWxlbWVudC5jcHAK
QEAgLTY3LDcgKzY3LDcgQEAgUHNldWRvRWxlbWVudDo6UHNldWRvRWxlbWVudChFbGVtZW50JiBo
b3N0LCBQc2V1ZG9JZCBwc2V1ZG9JZCkKIFBzZXVkb0VsZW1lbnQ6On5Qc2V1ZG9FbGVtZW50KCkK
IHsKICAgICBBU1NFUlQoIW1faG9zdEVsZW1lbnQpOwotICAgIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6cHNldWRvRWxlbWVudERlc3Ryb3llZChkb2N1bWVudCgpLnBhZ2UoKSwgdGhpcyk7Cisg
ICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpwc2V1ZG9FbGVtZW50RGVzdHJveWVkKGRvY3Vt
ZW50KCkucGFnZSgpLCAqdGhpcyk7CiB9CiAKIFJlZlB0cjxSZW5kZXJTdHlsZT4gUHNldWRvRWxl
bWVudDo6Y3VzdG9tU3R5bGVGb3JSZW5kZXJlcihSZW5kZXJTdHlsZSYgcGFyZW50U3R5bGUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVkRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vU3R5bGVkRWxlbWVudC5jcHAKaW5kZXggZWNkMDJjMTY3NTk2ODVkMzRhOWJi
ZTUwMTc2YmZkYWMzODAyMDMxMC4uNDlhNmE5YzliZTJlZGIyZTU5ZTNhNzA2MzEyMzdiNGY0ZjMz
ODUwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmNwcApAQCAtMjA0LDcgKzIwNCw3
IEBAIHZvaWQgU3R5bGVkRWxlbWVudDo6c3R5bGVBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IEF0b21p
Y1N0cmluZyYgbmV3U3R5bGVTdHJpbmcsIEF0CiAgICAgZWxlbWVudERhdGEoKS0+c2V0U3R5bGVB
dHRyaWJ1dGVJc0RpcnR5KGZhbHNlKTsKIAogICAgIHNldE5lZWRzU3R5bGVSZWNhbGMoSW5saW5l
U3R5bGVDaGFuZ2UpOwotICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkSW52YWxpZGF0
ZVN0eWxlQXR0cigmZG9jdW1lbnQoKSwgdGhpcyk7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpkaWRJbnZhbGlkYXRlU3R5bGVBdHRyKGRvY3VtZW50KCksICp0aGlzKTsKIH0KIAogdm9p
ZCBTdHlsZWRFbGVtZW50OjppbmxpbmVTdHlsZUNoYW5nZWQoKQpAQCAtMjEyLDcgKzIxMiw3IEBA
IHZvaWQgU3R5bGVkRWxlbWVudDo6aW5saW5lU3R5bGVDaGFuZ2VkKCkKICAgICBzZXROZWVkc1N0
eWxlUmVjYWxjKElubGluZVN0eWxlQ2hhbmdlKTsKICAgICBBU1NFUlQoZWxlbWVudERhdGEoKSk7
CiAgICAgZWxlbWVudERhdGEoKS0+c2V0U3R5bGVBdHRyaWJ1dGVJc0RpcnR5KHRydWUpOwotICAg
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkSW52YWxpZGF0ZVN0eWxlQXR0cigmZG9jdW1l
bnQoKSwgdGhpcyk7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRJbnZhbGlkYXRl
U3R5bGVBdHRyKGRvY3VtZW50KCksICp0aGlzKTsKIH0KICAgICAKIGJvb2wgU3R5bGVkRWxlbWVu
dDo6c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsIENTU1Zh
bHVlSUQgaWRlbnRpZmllciwgYm9vbCBpbXBvcnRhbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29uc29sZUluc3RydW1lbnRhdGlvbi5oIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnNvbGVJbnN0cnVtZW50YXRpb24uaAppbmRl
eCBmNTQwY2UyYmNhMTIwZDU3ODQ4NGUxNmYzYmE4OWIyZDllZDZhYmY0Li4zMmE2MjQ3MjU2ODVh
ZWVhZGUyMjYxMDlhMTBhMDZkYWUyMTMxOGQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQ29uc29sZUluc3RydW1lbnRhdGlvbi5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb25zb2xlSW5zdHJ1bWVudGF0aW9uLmgKQEAgLTM5
LDExICszOSwxMSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWlubGluZSB2b2lkIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6YWRkTWVzc2FnZVRvQ29uc29sZShQYWdlKiBwYWdlLCBNZXNz
YWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZVR5cGUgdHlwZSwgTWVzc2FnZUxldmVsIGxldmVsLCBj
b25zdCBTdHJpbmcmIG1lc3NhZ2UsIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpTY3JpcHRDYWxsU3Rh
Y2s+IGNhbGxTdGFjaywgdW5zaWduZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmllcikKK2lubGluZSB2
b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6YWRkTWVzc2FnZVRvQ29uc29sZShQYWdlJiBw
YWdlLCBNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZVR5cGUgdHlwZSwgTWVzc2FnZUxldmVs
IGxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpTY3Jp
cHRDYWxsU3RhY2s+IGNhbGxTdGFjaywgdW5zaWduZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmllcikK
IHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBp
bnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvclBhZ2UocGFnZSkpCi0g
ICAgICAgIGFkZE1lc3NhZ2VUb0NvbnNvbGVJbXBsKGluc3RydW1lbnRpbmdBZ2VudHMsIHNvdXJj
ZSwgdHlwZSwgbGV2ZWwsIG1lc3NhZ2UsIGNhbGxTdGFjaywgcmVxdWVzdElkZW50aWZpZXIpOwor
ICAgICAgICBhZGRNZXNzYWdlVG9Db25zb2xlSW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywgc291
cmNlLCB0eXBlLCBsZXZlbCwgbWVzc2FnZSwgY2FsbFN0YWNrLCByZXF1ZXN0SWRlbnRpZmllcik7
CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShwYWdlKTsKICAgICBVTlVTRURfUEFSQU0oc291cmNl
KTsKQEAgLTU1LDExICs1NSwxMSBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmFkZE1lc3NhZ2VUb0NvbnNvbGUoUGFnZSogcGFnZSwgTWVzc2FnZVNvdQogI2VuZGlmCiB9
CiAKLWlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6YWRkTWVzc2FnZVRvQ29u
c29sZShQYWdlKiBwYWdlLCBNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZVR5cGUgdHlwZSwg
TWVzc2FnZUxldmVsIGxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIEpTQzo6RXhlY1N0YXRl
KiBzdGF0ZSwgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlNjcmlwdEFyZ3VtZW50cz4gYXJndW1lbnRz
LCB1bnNpZ25lZCBsb25nIHJlcXVlc3RJZGVudGlmaWVyKQoraW5saW5lIHZvaWQgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjphZGRNZXNzYWdlVG9Db25zb2xlKFBhZ2UmIHBhZ2UsIE1lc3NhZ2VT
b3VyY2Ugc291cmNlLCBNZXNzYWdlVHlwZSB0eXBlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0
IFN0cmluZyYgbWVzc2FnZSwgSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBQYXNzUmVmUHRyPEluc3Bl
Y3Rvcjo6U2NyaXB0QXJndW1lbnRzPiBhcmd1bWVudHMsIHVuc2lnbmVkIGxvbmcgcmVxdWVzdElk
ZW50aWZpZXIpCiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBpZiAoSW5zdHJ1bWVudGlu
Z0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JQYWdl
KHBhZ2UpKQotICAgICAgICBhZGRNZXNzYWdlVG9Db25zb2xlSW1wbChpbnN0cnVtZW50aW5nQWdl
bnRzLCBzb3VyY2UsIHR5cGUsIGxldmVsLCBtZXNzYWdlLCBzdGF0ZSwgYXJndW1lbnRzLCByZXF1
ZXN0SWRlbnRpZmllcik7CisgICAgICAgIGFkZE1lc3NhZ2VUb0NvbnNvbGVJbXBsKCppbnN0cnVt
ZW50aW5nQWdlbnRzLCBzb3VyY2UsIHR5cGUsIGxldmVsLCBtZXNzYWdlLCBzdGF0ZSwgYXJndW1l
bnRzLCByZXF1ZXN0SWRlbnRpZmllcik7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShwYWdlKTsK
ICAgICBVTlVTRURfUEFSQU0oc291cmNlKTsKQEAgLTcyLDExICs3MiwxMSBAQCBpbmxpbmUgdm9p
ZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmFkZE1lc3NhZ2VUb0NvbnNvbGUoUGFnZSogcGFn
ZSwgTWVzc2FnZVNvdQogI2VuZGlmCiB9CiAKLWlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6YWRkTWVzc2FnZVRvQ29uc29sZShQYWdlKiBwYWdlLCBNZXNzYWdlU291cmNlIHNv
dXJjZSwgTWVzc2FnZVR5cGUgdHlwZSwgTWVzc2FnZUxldmVsIGxldmVsLCBjb25zdCBTdHJpbmcm
IG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgc2NyaXB0SUQsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIHVu
c2lnbmVkIGNvbHVtbk51bWJlciwgSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB1bnNpZ25lZCBsb25n
IHJlcXVlc3RJZGVudGlmaWVyKQoraW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjphZGRNZXNzYWdlVG9Db25zb2xlKFBhZ2UmIHBhZ2UsIE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBN
ZXNzYWdlVHlwZSB0eXBlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSwgY29uc3QgU3RyaW5nJiBzY3JpcHRJRCwgdW5zaWduZWQgbGluZU51bWJlciwgdW5zaWduZWQg
Y29sdW1uTnVtYmVyLCBKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHVuc2lnbmVkIGxvbmcgcmVxdWVz
dElkZW50aWZpZXIpCiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBpZiAoSW5zdHJ1bWVu
dGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JQ
YWdlKHBhZ2UpKQotICAgICAgICBhZGRNZXNzYWdlVG9Db25zb2xlSW1wbChpbnN0cnVtZW50aW5n
QWdlbnRzLCBzb3VyY2UsIHR5cGUsIGxldmVsLCBtZXNzYWdlLCBzY3JpcHRJRCwgbGluZU51bWJl
ciwgY29sdW1uTnVtYmVyLCBzdGF0ZSwgcmVxdWVzdElkZW50aWZpZXIpOworICAgICAgICBhZGRN
ZXNzYWdlVG9Db25zb2xlSW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywgc291cmNlLCB0eXBlLCBs
ZXZlbCwgbWVzc2FnZSwgc2NyaXB0SUQsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgc3RhdGUs
IHJlcXVlc3RJZGVudGlmaWVyKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHBhZ2UpOwogICAg
IFVOVVNFRF9QQVJBTShzb3VyY2UpOwpAQCAtOTUsNyArOTUsNyBAQCBpbmxpbmUgdm9pZCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmFkZE1lc3NhZ2VUb0NvbnNvbGUoV29ya2VyR2xvYmFsU2Nv
cGUqIHdvcgogewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgaWYgKEluc3RydW1lbnRpbmdB
Z2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yV29ya2Vy
R2xvYmFsU2NvcGUod29ya2VyR2xvYmFsU2NvcGUpKQotICAgICAgICBhZGRNZXNzYWdlVG9Db25z
b2xlSW1wbChpbnN0cnVtZW50aW5nQWdlbnRzLCBzb3VyY2UsIHR5cGUsIGxldmVsLCBtZXNzYWdl
LCBjYWxsU3RhY2ssIHJlcXVlc3RJZGVudGlmaWVyKTsKKyAgICAgICAgYWRkTWVzc2FnZVRvQ29u
c29sZUltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMsIHNvdXJjZSwgdHlwZSwgbGV2ZWwsIG1lc3Nh
Z2UsIGNhbGxTdGFjaywgcmVxdWVzdElkZW50aWZpZXIpOwogI2Vsc2UKICAgICBVTlVTRURfUEFS
QU0od29ya2VyR2xvYmFsU2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTShzb3VyY2UpOwpAQCAtMTEx
LDcgKzExMSw3IEBAIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6YWRkTWVz
c2FnZVRvQ29uc29sZShXb3JrZXJHbG9iYWxTY29wZSogd29yCiB7CiAjaWYgRU5BQkxFKElOU1BF
Q1RPUikKICAgICBpZiAoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyA9
IGluc3RydW1lbnRpbmdBZ2VudHNGb3JXb3JrZXJHbG9iYWxTY29wZSh3b3JrZXJHbG9iYWxTY29w
ZSkpCi0gICAgICAgIGFkZE1lc3NhZ2VUb0NvbnNvbGVJbXBsKGluc3RydW1lbnRpbmdBZ2VudHMs
IHNvdXJjZSwgdHlwZSwgbGV2ZWwsIG1lc3NhZ2UsIHNjcmlwdElELCBsaW5lTnVtYmVyLCBjb2x1
bW5OdW1iZXIsIHN0YXRlLCByZXF1ZXN0SWRlbnRpZmllcik7CisgICAgICAgIGFkZE1lc3NhZ2VU
b0NvbnNvbGVJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRzLCBzb3VyY2UsIHR5cGUsIGxldmVsLCBt
ZXNzYWdlLCBzY3JpcHRJRCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBzdGF0ZSwgcmVxdWVz
dElkZW50aWZpZXIpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0od29ya2VyR2xvYmFsU2NvcGUp
OwogICAgIFVOVVNFRF9QQVJBTShzb3VyY2UpOwpAQCAtMTI2LDExICsxMjYsMTEgQEAgaW5saW5l
IHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjphZGRNZXNzYWdlVG9Db25zb2xlKFdvcmtl
ckdsb2JhbFNjb3BlKiB3b3IKICNlbmRpZgogfQogCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmNvbnNvbGVDb3VudChQYWdlKiBwYWdlLCBKU0M6OkV4ZWNTdGF0ZSogc3Rh
dGUsIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpTY3JpcHRBcmd1bWVudHM+IGFyZ3VtZW50cykKK2lu
bGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Y29uc29sZUNvdW50KFBhZ2UmIHBh
Z2UsIEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlNjcmlwdEFy
Z3VtZW50cz4gYXJndW1lbnRzKQogewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgaWYgKElu
c3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdl
bnRzRm9yUGFnZShwYWdlKSkKLSAgICAgICAgY29uc29sZUNvdW50SW1wbChpbnN0cnVtZW50aW5n
QWdlbnRzLCBzdGF0ZSwgYXJndW1lbnRzKTsKKyAgICAgICAgY29uc29sZUNvdW50SW1wbCgqaW5z
dHJ1bWVudGluZ0FnZW50cywgc3RhdGUsIGFyZ3VtZW50cyk7CiAjZWxzZQogICAgIFVOVVNFRF9Q
QVJBTShwYWdlKTsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwpAQCAtMTM4LDIyICsxMzgsMjIg
QEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjb25zb2xlQ291bnQoUGFn
ZSogcGFnZSwgSlNDOjpFeGVjU3RhdGUqIHMKICNlbmRpZgogfQogCi1pbmxpbmUgdm9pZCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OnN0YXJ0Q29uc29sZVRpbWluZyhGcmFtZSogZnJhbWUsIGNv
bnN0IFN0cmluZyYgdGl0bGUpCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OnN0YXJ0Q29uc29sZVRpbWluZyhGcmFtZSYgZnJhbWUsIGNvbnN0IFN0cmluZyYgdGl0bGUpCiB7
CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBpZiAoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5z
dHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JGcmFtZShmcmFtZSkpCi0g
ICAgICAgIHN0YXJ0Q29uc29sZVRpbWluZ0ltcGwoaW5zdHJ1bWVudGluZ0FnZW50cywgZnJhbWUs
IHRpdGxlKTsKKyAgICAgICAgc3RhcnRDb25zb2xlVGltaW5nSW1wbCgqaW5zdHJ1bWVudGluZ0Fn
ZW50cywgZnJhbWUsIHRpdGxlKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGZyYW1lKTsKICAg
ICBVTlVTRURfUEFSQU0odGl0bGUpOwogI2VuZGlmCiB9CiAKLWlubGluZSB2b2lkIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6c3RvcENvbnNvbGVUaW1pbmcoRnJhbWUqIGZyYW1lLCBjb25zdCBT
dHJpbmcmIHRpdGxlLCBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6U2NyaXB0Q2FsbFN0YWNrPiBzdGFj
aykKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c3RvcENvbnNvbGVUaW1p
bmcoRnJhbWUmIGZyYW1lLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBQYXNzUmVmUHRyPEluc3BlY3Rv
cjo6U2NyaXB0Q2FsbFN0YWNrPiBzdGFjaykKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAg
IGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVu
dGluZ0FnZW50c0ZvckZyYW1lKGZyYW1lKSkKLSAgICAgICAgc3RvcENvbnNvbGVUaW1pbmdJbXBs
KGluc3RydW1lbnRpbmdBZ2VudHMsIGZyYW1lLCB0aXRsZSwgc3RhY2spOworICAgICAgICBzdG9w
Q29uc29sZVRpbWluZ0ltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMsIGZyYW1lLCB0aXRsZSwgc3Rh
Y2spOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZnJhbWUpOwogICAgIFVOVVNFRF9QQVJBTSh0
aXRsZSk7CkBAIC0xNjEsMjMgKzE2MSwyMyBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OnN0b3BDb25zb2xlVGltaW5nKEZyYW1lKiBmcmFtZSwgY29uc3QgU3RyaQogI2Vu
ZGlmCiB9CiAKLWlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Y29uc29sZVRp
bWVTdGFtcChGcmFtZSogZnJhbWUsIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpTY3JpcHRBcmd1bWVu
dHM+IGFyZ3VtZW50cykKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Y29u
c29sZVRpbWVTdGFtcChGcmFtZSYgZnJhbWUsIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpTY3JpcHRB
cmd1bWVudHM+IGFyZ3VtZW50cykKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIEZBU1Rf
UkVUVVJOX0lGX05PX0ZST05URU5EUyh2b2lkKCkpOwogICAgIGlmIChJbnN0cnVtZW50aW5nQWdl
bnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvckZyYW1lKGZy
YW1lKSkKLSAgICAgICAgY29uc29sZVRpbWVTdGFtcEltcGwoaW5zdHJ1bWVudGluZ0FnZW50cywg
ZnJhbWUsIGFyZ3VtZW50cyk7CisgICAgICAgIGNvbnNvbGVUaW1lU3RhbXBJbXBsKCppbnN0cnVt
ZW50aW5nQWdlbnRzLCBmcmFtZSwgYXJndW1lbnRzKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFN
KGZyYW1lKTsKICAgICBVTlVTRURfUEFSQU0oYXJndW1lbnRzKTsKICNlbmRpZgogfQogCi1pbmxp
bmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnN0YXJ0UHJvZmlsaW5nKFBhZ2UqIHBh
Z2UsIEpTQzo6RXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcgJnRpdGxlKQoraW5saW5lIHZv
aWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzdGFydFByb2ZpbGluZyhQYWdlJiBwYWdlLCBK
U0M6OkV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nICZ0aXRsZSkKIHsKICNpZiBFTkFCTEUo
SU5TUEVDVE9SKQogICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdl
bnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvclBhZ2UocGFnZSkpCi0gICAgICAgIHN0YXJ0UHJv
ZmlsaW5nSW1wbChpbnN0cnVtZW50aW5nQWdlbnRzLCBleGVjLCB0aXRsZSk7CisgICAgICAgIHN0
YXJ0UHJvZmlsaW5nSW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywgZXhlYywgdGl0bGUpOwogI2Vs
c2UKICAgICBVTlVTRURfUEFSQU0ocGFnZSk7CiAgICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwpAQCAt
MTg1LDExICsxODUsMTEgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpz
dGFydFByb2ZpbGluZyhQYWdlKiBwYWdlLCBKU0M6OkV4ZWNTdGF0ZSoKICNlbmRpZgogfQogCi1p
bmxpbmUgUGFzc1JlZlB0cjxKU0M6OlByb2ZpbGU+IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
c3RvcFByb2ZpbGluZyhQYWdlKiBwYWdlLCBKU0M6OkV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3Ry
aW5nICZ0aXRsZSkKK2lubGluZSBQYXNzUmVmUHRyPEpTQzo6UHJvZmlsZT4gSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpzdG9wUHJvZmlsaW5nKFBhZ2UmIHBhZ2UsIEpTQzo6RXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBTdHJpbmcgJnRpdGxlKQogewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAg
aWYgKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50
aW5nQWdlbnRzRm9yUGFnZShwYWdlKSkKLSAgICAgICAgcmV0dXJuIHN0b3BQcm9maWxpbmdJbXBs
KGluc3RydW1lbnRpbmdBZ2VudHMsIGV4ZWMsIHRpdGxlKTsKKyAgICAgICAgcmV0dXJuIHN0b3BQ
cm9maWxpbmdJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRzLCBleGVjLCB0aXRsZSk7CiAjZWxzZQog
ICAgIFVOVVNFRF9QQVJBTShwYWdlKTsKICAgICBVTlVTRURfUEFSQU0oZXhlYyk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKaW5kZXggODZj
ZWMwNDdkMzMxZGJiM2Q5MDE4YzYyODM0MWQ0NzYyYzUwNmFhNi4uMmVkOGFkZmJkZTlhMDgzNjRm
MGYwMmRjMWFiOTcxZmY4YmFiYmIyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcApAQCAtMjI0LDE3ICsyMjQsMTcgQEAgYm9vbCBJbnNw
ZWN0b3JDb250cm9sbGVyOjpoYXNJbnNwZWN0b3JGcm9udGVuZENsaWVudCgpIGNvbnN0CiAgICAg
cmV0dXJuIG1faW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ29u
dHJvbGxlcjo6ZGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxkKEZyYW1lKiBmcmFtZSwgRE9NV3Jh
cHBlcldvcmxkJiB3b3JsZCkKK3ZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkQ2xlYXJXaW5k
b3dPYmplY3RJbldvcmxkKEZyYW1lJiBmcmFtZSwgRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKIHsK
ICAgICBpZiAoJndvcmxkICE9ICZtYWluVGhyZWFkTm9ybWFsV29ybGQoKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgaWYgKGZyYW1lLT5pc01haW5GcmFtZSgpKQorICAgIGlmIChmcmFtZS5pc01h
aW5GcmFtZSgpKQogICAgICAgICBtX2luamVjdGVkU2NyaXB0TWFuYWdlci0+ZGlzY2FyZEluamVj
dGVkU2NyaXB0cygpOwogCiAgICAgLy8gSWYgdGhlIHBhZ2UgaXMgc3VwcG9zZWQgdG8gc2VydmUg
YXMgSW5zcGVjdG9yRnJvbnRlbmQgbm90aWZ5IGluc3BlY3RvciBmcm9udGVuZAogICAgIC8vIGNs
aWVudCB0aGF0IGl0J3MgY2xlYXJlZCBzbyB0aGF0IHRoZSBjbGllbnQgY2FuIGV4cG9zZSBpbnNw
ZWN0b3IgYmluZGluZ3MuCi0gICAgaWYgKG1faW5zcGVjdG9yRnJvbnRlbmRDbGllbnQgJiYgZnJh
bWUtPmlzTWFpbkZyYW1lKCkpCisgICAgaWYgKG1faW5zcGVjdG9yRnJvbnRlbmRDbGllbnQgJiYg
ZnJhbWUuaXNNYWluRnJhbWUoKSkKICAgICAgICAgbV9pbnNwZWN0b3JGcm9udGVuZENsaWVudC0+
d2luZG93T2JqZWN0Q2xlYXJlZCgpOwogfQogCkBAIC0yNTIsNyArMjUyLDcgQEAgdm9pZCBJbnNw
ZWN0b3JDb250cm9sbGVyOjpjb25uZWN0RnJvbnRlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVs
KiBmcm9udGVuZENoYW4KIAogICAgIG1fYWdlbnRzLmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2Vu
ZChmcm9udGVuZENoYW5uZWwsIG1faW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuZ2V0KCkpOwog
Ci0gICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpyZWdpc3Rlckluc3RydW1lbnRpbmdBZ2Vu
dHMobV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpKTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OnJlZ2lzdGVySW5zdHJ1bWVudGluZ0FnZW50cygqbV9pbnN0cnVtZW50aW5nQWdlbnRz
KTsKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmZyb250ZW5kQ3JlYXRlZCgpOwogCiAj
aWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCkBAIC0yNzcsNyArMjc3LDcgQEAgdm9pZCBJbnNw
ZWN0b3JDb250cm9sbGVyOjpkaXNjb25uZWN0RnJvbnRlbmQoSW5zcGVjdG9yRGlzY29ubmVjdFJl
YXNvbiByZWFzb24pCiAgICAgLy8gUmVsZWFzZSBvdmVybGF5IHBhZ2UgcmVzb3VyY2VzLgogICAg
IG1fb3ZlcmxheS0+ZnJlZVBhZ2UoKTsKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmZy
b250ZW5kRGVsZXRlZCgpOwotICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6dW5yZWdpc3Rl
ckluc3RydW1lbnRpbmdBZ2VudHMobV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpKTsKKyAgICBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnVucmVnaXN0ZXJJbnN0cnVtZW50aW5nQWdlbnRzKCpt
X2luc3RydW1lbnRpbmdBZ2VudHMpOwogCiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCiAg
ICAgaWYgKCFtX2hhc1JlbW90ZUZyb250ZW5kKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JDb250cm9sbGVyLmgKaW5kZXggOTZmNDFmNTJkYjRiOWVhMTRjMGRmN2I3Nzli
ZTFjY2IyMWIwMTVlMC4uN2M3OGVlNDk0M2VmZjRkNDBiNWExNDc0YzQ5MzdjMGUzNDBjZDg0NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCkBA
IC01OSw2ICs1OSw3IEBAIGNsYXNzIEluc3BlY3RvckNsaWVudDsKIGNsYXNzIEluc3BlY3RvckRP
TUFnZW50OwogY2xhc3MgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDsKIGNsYXNzIEluc3BlY3Rv
ckZyb250ZW5kQ2xpZW50OworY2xhc3MgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOwogY2xhc3Mg
SW5zcGVjdG9yUGFnZUFnZW50OwogY2xhc3MgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDsKIGNsYXNz
IEluc3BlY3RvclRpbWVsaW5lQWdlbnQ7CkBAIC04NSw3ICs4Niw3IEBAIHB1YmxpYzoKIAogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQoSW5zcGVjdG9y
RnJvbnRlbmRDbGllbnQqKTsKICAgICBib29sIGhhc0luc3BlY3RvckZyb250ZW5kQ2xpZW50KCkg
Y29uc3Q7Ci0gICAgdm9pZCBkaWRDbGVhcldpbmRvd09iamVjdEluV29ybGQoRnJhbWUqLCBET01X
cmFwcGVyV29ybGQmKTsKKyAgICB2b2lkIGRpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZChGcmFt
ZSYsIERPTVdyYXBwZXJXb3JsZCYpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaXNwYXRj
aE1lc3NhZ2VGcm9tRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKIApAQCAtMTMzLDcg
KzEzNCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V1RGOjpTdG9wd2F0Y2g+
IGV4ZWN1dGlvblN0b3B3YXRjaCgpIG92ZXJyaWRlOwogCiBwcml2YXRlOgotICAgIGZyaWVuZCBJ
bnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50YXRpb25Gb3JQYWdlKFBhZ2UqKTsKKyAgICBm
cmllbmQgY2xhc3MgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOwogCiAgICAgUmVmUHRyPEluc3Ry
dW1lbnRpbmdBZ2VudHM+IG1faW5zdHJ1bWVudGluZ0FnZW50czsKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8V2ViSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyPiBtX2luamVjdGVkU2NyaXB0TWFuYWdlcjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUluc3Ry
dW1lbnRhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNl
SW5zdHJ1bWVudGF0aW9uLmgKaW5kZXggYjBhZDdiMzQ1ZWM1NzkxYjI1NzBhMzQ3YjAzOTE4OTg0
NjQyYjgyNy4uZDZjYjYyMzZiYzhhZTA2MjU5MDZmYjkyMjM0ZmQ5MTgxMWU3YTVlMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlSW5zdHJ1bWVu
dGF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNl
SW5zdHJ1bWVudGF0aW9uLmgKQEAgLTQyLDcgKzQyLDcgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpkaWRPcGVuRGF0YWJhc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y28KIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRz
KiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvckNvbnRleHQoY29u
dGV4dCkpCi0gICAgICAgIGRpZE9wZW5EYXRhYmFzZUltcGwoaW5zdHJ1bWVudGluZ0FnZW50cywg
ZGF0YWJhc2UsIGRvbWFpbiwgbmFtZSwgdmVyc2lvbik7CisgICAgICAgIGRpZE9wZW5EYXRhYmFz
ZUltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMsIGRhdGFiYXNlLCBkb21haW4sIG5hbWUsIHZlcnNp
b24pOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oY29udGV4dCk7CiAgICAgVU5VU0VEX1BBUkFN
KGRhdGFiYXNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JJbnN0cnVtZW50YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckluc3RydW1lbnRhdGlvbi5jcHAKaW5kZXggNzk1MjM2NmM2NzNiNzk4YmRhNDQ3MDQ1ODQzNjZl
Yjg5OGNhMzZlZi4uZWE1Y2U1YjcwMTQyMTk5ZjY0MzZlZWI1ZTNiNTBkODU4ZGVhNWIxYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRh
dGlvbi5jcHAKQEAgLTQzLDYgKzQzLDcgQEAKICNpbmNsdWRlICJFdmVudC5oIgogI2luY2x1ZGUg
IkV2ZW50RGlzcGF0Y2hlci5oIgogI2luY2x1ZGUgIkluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVB
Z2VudC5oIgorI2luY2x1ZGUgIkluc3BlY3RvckNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJJbnNw
ZWN0b3JDU1NBZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckRPTUFnZW50LmgiCiAjaW5jbHVk
ZSAiSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5oIgpAQCAtNjQsNiArNjUsNyBAQAogI2luY2x1
ZGUgIlN0eWxlUnVsZS5oIgogI2luY2x1ZGUgIldlYkNvbnNvbGVBZ2VudC5oIgogI2luY2x1ZGUg
Ildvcmtlckdsb2JhbFNjb3BlLmgiCisjaW5jbHVkZSAiV29ya2VySW5zcGVjdG9yQ29udHJvbGxl
ci5oIgogI2luY2x1ZGUgIldvcmtlclJ1bnRpbWVBZ2VudC5oIgogI2luY2x1ZGUgIldvcmtlclRo
cmVhZC5oIgogI2luY2x1ZGUgIlhNTEh0dHBSZXF1ZXN0LmgiCkBAIC05Miw3ICs5NCw3IEBAIHN0
YXRpYyBjb25zdCBjaGFyKiBjb25zdCBjbGVhclRpbWVyRXZlbnROYW1lID0gImNsZWFyVGltZXIi
Owogc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IHRpbWVyRmlyZWRFdmVudE5hbWUgPSAidGltZXJG
aXJlZCI7CiAKIG5hbWVzcGFjZSB7Ci1zdGF0aWMgSGFzaFNldDxJbnN0cnVtZW50aW5nQWdlbnRz
Kj4qIGluc3RydW1lbnRpbmdBZ2VudHNTZXQgPSBudWxscHRyOworc3RhdGljIEhhc2hTZXQ8SW5z
dHJ1bWVudGluZ0FnZW50cyo+KiBzX2luc3RydW1lbnRpbmdBZ2VudHNTZXQgPSBudWxscHRyOwog
fQogCiBpbnQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzX2Zyb250ZW5kQ291bnRlciA9IDA7
CkBAIC0xMDUsMjA3ICsxMDcsMjA3IEBAIHN0YXRpYyBGcmFtZSogZnJhbWVGb3JTY3JpcHRFeGVj
dXRpb25Db250ZXh0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiAgICAgcmV0dXJu
IGZyYW1lOwogfQogCi12b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ2xlYXJXaW5k
b3dPYmplY3RJbldvcmxkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdl
bnRzLCBGcmFtZSogZnJhbWUsIERPTVdyYXBwZXJXb3JsZCYgd29ybGQpCit2b2lkIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6ZGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxkSW1wbChJbnN0cnVt
ZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBGcmFtZSYgZnJhbWUsIERPTVdyYXBw
ZXJXb3JsZCYgd29ybGQpCiB7Ci0gICAgSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQgPSBp
bnN0cnVtZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JQYWdlQWdlbnQoKTsKKyAgICBJbnNwZWN0b3JQ
YWdlQWdlbnQqIHBhZ2VBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yUGFnZUFn
ZW50KCk7CiAgICAgaWYgKHBhZ2VBZ2VudCkKLSAgICAgICAgcGFnZUFnZW50LT5kaWRDbGVhcldp
bmRvd09iamVjdEluV29ybGQoZnJhbWUsIHdvcmxkKTsKLSAgICBpZiAoUGFnZURlYnVnZ2VyQWdl
bnQqIGRlYnVnZ2VyQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLT5wYWdlRGVidWdnZXJBZ2Vu
dCgpKSB7Ci0gICAgICAgIGlmIChwYWdlQWdlbnQgJiYgJndvcmxkID09ICZtYWluVGhyZWFkTm9y
bWFsV29ybGQoKSAmJiBmcmFtZSA9PSBwYWdlQWdlbnQtPm1haW5GcmFtZSgpKQorICAgICAgICBw
YWdlQWdlbnQtPmRpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZCgmZnJhbWUsIHdvcmxkKTsKKyAg
ICBpZiAoUGFnZURlYnVnZ2VyQWdlbnQqIGRlYnVnZ2VyQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdl
bnRzLnBhZ2VEZWJ1Z2dlckFnZW50KCkpIHsKKyAgICAgICAgaWYgKHBhZ2VBZ2VudCAmJiAmd29y
bGQgPT0gJm1haW5UaHJlYWROb3JtYWxXb3JsZCgpICYmICZmcmFtZSA9PSBwYWdlQWdlbnQtPm1h
aW5GcmFtZSgpKQogICAgICAgICAgICAgZGVidWdnZXJBZ2VudC0+ZGlkQ2xlYXJNYWluRnJhbWVX
aW5kb3dPYmplY3QoKTsKICAgICB9Ci0gICAgaWYgKFBhZ2VSdW50aW1lQWdlbnQqIHBhZ2VSdW50
aW1lQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLT5wYWdlUnVudGltZUFnZW50KCkpIHsKKyAg
ICBpZiAoUGFnZVJ1bnRpbWVBZ2VudCogcGFnZVJ1bnRpbWVBZ2VudCA9IGluc3RydW1lbnRpbmdB
Z2VudHMucGFnZVJ1bnRpbWVBZ2VudCgpKSB7CiAgICAgICAgIGlmICgmd29ybGQgPT0gJm1haW5U
aHJlYWROb3JtYWxXb3JsZCgpKQotICAgICAgICAgICAgcGFnZVJ1bnRpbWVBZ2VudC0+ZGlkQ3Jl
YXRlTWFpbldvcmxkQ29udGV4dChmcmFtZSk7CisgICAgICAgICAgICBwYWdlUnVudGltZUFnZW50
LT5kaWRDcmVhdGVNYWluV29ybGRDb250ZXh0KCZmcmFtZSk7CiAgICAgfQogfQogCi1ib29sIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aXNEZWJ1Z2dlclBhdXNlZEltcGwoSW5zdHJ1bWVudGlu
Z0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cykKK2Jvb2wgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjppc0RlYnVnZ2VyUGF1c2VkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50
aW5nQWdlbnRzKQogewotICAgIGlmIChJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KiBkZWJ1Z2dlckFn
ZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yRGVidWdnZXJBZ2VudCgpKQorICAg
IGlmIChJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KiBkZWJ1Z2dlckFnZW50ID0gaW5zdHJ1bWVudGlu
Z0FnZW50cy5pbnNwZWN0b3JEZWJ1Z2dlckFnZW50KCkpCiAgICAgICAgIHJldHVybiBkZWJ1Z2dl
ckFnZW50LT5pc1BhdXNlZCgpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OndpbGxJbnNlcnRET01Ob2RlSW1wbChJbnN0cnVtZW50aW5nQWdl
bnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBOb2RlKiBwYXJlbnQpCit2b2lkIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6d2lsbEluc2VydERPTU5vZGVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMm
IGluc3RydW1lbnRpbmdBZ2VudHMsIE5vZGUmIHBhcmVudCkKIHsKLSAgICBpZiAoSW5zcGVjdG9y
RE9NRGVidWdnZXJBZ2VudCogZG9tRGVidWdnZXJBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMt
Pmluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQoKSkKLSAgICAgICAgZG9tRGVidWdnZXJBZ2VudC0+
d2lsbEluc2VydERPTU5vZGUocGFyZW50KTsKKyAgICBpZiAoSW5zcGVjdG9yRE9NRGVidWdnZXJB
Z2VudCogZG9tRGVidWdnZXJBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yRE9N
RGVidWdnZXJBZ2VudCgpKQorICAgICAgICBkb21EZWJ1Z2dlckFnZW50LT53aWxsSW5zZXJ0RE9N
Tm9kZSgmcGFyZW50KTsKIH0KIAotdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZElu
c2VydERPTU5vZGVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMs
IE5vZGUqIG5vZGUpCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkSW5zZXJ0RE9N
Tm9kZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgTm9kZSYg
bm9kZSkKIHsKLSAgICBpZiAoSW5zcGVjdG9yRE9NQWdlbnQqIGRvbUFnZW50ID0gaW5zdHJ1bWVu
dGluZ0FnZW50cy0+aW5zcGVjdG9yRE9NQWdlbnQoKSkKLSAgICAgICAgZG9tQWdlbnQtPmRpZElu
c2VydERPTU5vZGUobm9kZSk7Ci0gICAgaWYgKEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQqIGRv
bURlYnVnZ2VyQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JET01EZWJ1Z2dl
ckFnZW50KCkpCi0gICAgICAgIGRvbURlYnVnZ2VyQWdlbnQtPmRpZEluc2VydERPTU5vZGUobm9k
ZSk7CisgICAgaWYgKEluc3BlY3RvckRPTUFnZW50KiBkb21BZ2VudCA9IGluc3RydW1lbnRpbmdB
Z2VudHMuaW5zcGVjdG9yRE9NQWdlbnQoKSkKKyAgICAgICAgZG9tQWdlbnQtPmRpZEluc2VydERP
TU5vZGUoJm5vZGUpOworICAgIGlmIChJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50KiBkb21EZWJ1
Z2dlckFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50
KCkpCisgICAgICAgIGRvbURlYnVnZ2VyQWdlbnQtPmRpZEluc2VydERPTU5vZGUoJm5vZGUpOwog
fQogCi12b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFJlbW92ZURPTU5vZGVJbXBs
KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIE5vZGUqIG5vZGUpCit2
b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFJlbW92ZURPTU5vZGVJbXBsKEluc3Ry
dW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIE5vZGUmIG5vZGUpCiB7Ci0gICAg
aWYgKEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQqIGRvbURlYnVnZ2VyQWdlbnQgPSBpbnN0cnVt
ZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50KCkpCi0gICAgICAgIGRvbURl
YnVnZ2VyQWdlbnQtPndpbGxSZW1vdmVET01Ob2RlKG5vZGUpOworICAgIGlmIChJbnNwZWN0b3JE
T01EZWJ1Z2dlckFnZW50KiBkb21EZWJ1Z2dlckFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5p
bnNwZWN0b3JET01EZWJ1Z2dlckFnZW50KCkpCisgICAgICAgIGRvbURlYnVnZ2VyQWdlbnQtPndp
bGxSZW1vdmVET01Ob2RlKCZub2RlKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmRpZFJlbW92ZURPTU5vZGVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRp
bmdBZ2VudHMsIE5vZGUqIG5vZGUpCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlk
UmVtb3ZlRE9NTm9kZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50
cywgTm9kZSYgbm9kZSkKIHsKLSAgICBpZiAoSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudCogZG9t
RGVidWdnZXJBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvckRPTURlYnVnZ2Vy
QWdlbnQoKSkKLSAgICAgICAgZG9tRGVidWdnZXJBZ2VudC0+ZGlkUmVtb3ZlRE9NTm9kZShub2Rl
KTsKLSAgICBpZiAoSW5zcGVjdG9yRE9NQWdlbnQqIGRvbUFnZW50ID0gaW5zdHJ1bWVudGluZ0Fn
ZW50cy0+aW5zcGVjdG9yRE9NQWdlbnQoKSkKLSAgICAgICAgZG9tQWdlbnQtPmRpZFJlbW92ZURP
TU5vZGUobm9kZSk7CisgICAgaWYgKEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQqIGRvbURlYnVn
Z2VyQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQo
KSkKKyAgICAgICAgZG9tRGVidWdnZXJBZ2VudC0+ZGlkUmVtb3ZlRE9NTm9kZSgmbm9kZSk7Cisg
ICAgaWYgKEluc3BlY3RvckRPTUFnZW50KiBkb21BZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMu
aW5zcGVjdG9yRE9NQWdlbnQoKSkKKyAgICAgICAgZG9tQWdlbnQtPmRpZFJlbW92ZURPTU5vZGUo
Jm5vZGUpOwogfQogCi12b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbE1vZGlmeURP
TUF0dHJJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIEVsZW1l
bnQqIGVsZW1lbnQsIGNvbnN0IEF0b21pY1N0cmluZyYgb2xkVmFsdWUsIGNvbnN0IEF0b21pY1N0
cmluZyYgbmV3VmFsdWUpCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbE1vZGlm
eURPTUF0dHJJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIEVs
ZW1lbnQmIGVsZW1lbnQsIGNvbnN0IEF0b21pY1N0cmluZyYgb2xkVmFsdWUsIGNvbnN0IEF0b21p
Y1N0cmluZyYgbmV3VmFsdWUpCiB7Ci0gICAgaWYgKEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQq
IGRvbURlYnVnZ2VyQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JET01EZWJ1
Z2dlckFnZW50KCkpCi0gICAgICAgIGRvbURlYnVnZ2VyQWdlbnQtPndpbGxNb2RpZnlET01BdHRy
KGVsZW1lbnQpOwotICAgIGlmIChJbnNwZWN0b3JET01BZ2VudCogZG9tQWdlbnQgPSBpbnN0cnVt
ZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JET01BZ2VudCgpKQotICAgICAgICBkb21BZ2VudC0+d2ls
bE1vZGlmeURPTUF0dHIoZWxlbWVudCwgb2xkVmFsdWUsIG5ld1ZhbHVlKTsKKyAgICBpZiAoSW5z
cGVjdG9yRE9NRGVidWdnZXJBZ2VudCogZG9tRGVidWdnZXJBZ2VudCA9IGluc3RydW1lbnRpbmdB
Z2VudHMuaW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudCgpKQorICAgICAgICBkb21EZWJ1Z2dlckFn
ZW50LT53aWxsTW9kaWZ5RE9NQXR0cigmZWxlbWVudCk7CisgICAgaWYgKEluc3BlY3RvckRPTUFn
ZW50KiBkb21BZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yRE9NQWdlbnQoKSkK
KyAgICAgICAgZG9tQWdlbnQtPndpbGxNb2RpZnlET01BdHRyKCZlbGVtZW50LCBvbGRWYWx1ZSwg
bmV3VmFsdWUpOwogfQogCi12b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkTW9kaWZ5
RE9NQXR0ckltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgRWxl
bWVudCogZWxlbWVudCwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBBdG9taWNTdHJp
bmcmIHZhbHVlKQordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZE1vZGlmeURPTUF0
dHJJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIEVsZW1lbnQm
IGVsZW1lbnQsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2
YWx1ZSkKIHsKLSAgICBpZiAoSW5zcGVjdG9yRE9NQWdlbnQqIGRvbUFnZW50ID0gaW5zdHJ1bWVu
dGluZ0FnZW50cy0+aW5zcGVjdG9yRE9NQWdlbnQoKSkKLSAgICAgICAgZG9tQWdlbnQtPmRpZE1v
ZGlmeURPTUF0dHIoZWxlbWVudCwgbmFtZSwgdmFsdWUpOworICAgIGlmIChJbnNwZWN0b3JET01B
Z2VudCogZG9tQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckRPTUFnZW50KCkp
CisgICAgICAgIGRvbUFnZW50LT5kaWRNb2RpZnlET01BdHRyKCZlbGVtZW50LCBuYW1lLCB2YWx1
ZSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZW1vdmVET01BdHRy
SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBFbGVtZW50KiBl
bGVtZW50LCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpCit2b2lkIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6ZGlkUmVtb3ZlRE9NQXR0ckltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1
bWVudGluZ0FnZW50cywgRWxlbWVudCYgZWxlbWVudCwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1l
KQogewotICAgIGlmIChJbnNwZWN0b3JET01BZ2VudCogZG9tQWdlbnQgPSBpbnN0cnVtZW50aW5n
QWdlbnRzLT5pbnNwZWN0b3JET01BZ2VudCgpKQotICAgICAgICBkb21BZ2VudC0+ZGlkUmVtb3Zl
RE9NQXR0cihlbGVtZW50LCBuYW1lKTsKKyAgICBpZiAoSW5zcGVjdG9yRE9NQWdlbnQqIGRvbUFn
ZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JET01BZ2VudCgpKQorICAgICAgICBk
b21BZ2VudC0+ZGlkUmVtb3ZlRE9NQXR0cigmZWxlbWVudCwgbmFtZSk7CiB9CiAKLXZvaWQgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRJbnZhbGlkYXRlU3R5bGVBdHRySW1wbChJbnN0cnVt
ZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBOb2RlKiBub2RlKQordm9pZCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEludmFsaWRhdGVTdHlsZUF0dHJJbXBsKEluc3RydW1l
bnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIE5vZGUmIG5vZGUpCiB7Ci0gICAgaWYg
KEluc3BlY3RvckRPTUFnZW50KiBkb21BZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMtPmluc3Bl
Y3RvckRPTUFnZW50KCkpCi0gICAgICAgIGRvbUFnZW50LT5kaWRJbnZhbGlkYXRlU3R5bGVBdHRy
KG5vZGUpOwotICAgIGlmIChJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50KiBkb21EZWJ1Z2dlckFn
ZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudCgpKQot
ICAgICAgICBkb21EZWJ1Z2dlckFnZW50LT5kaWRJbnZhbGlkYXRlU3R5bGVBdHRyKG5vZGUpOwor
ICAgIGlmIChJbnNwZWN0b3JET01BZ2VudCogZG9tQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRz
Lmluc3BlY3RvckRPTUFnZW50KCkpCisgICAgICAgIGRvbUFnZW50LT5kaWRJbnZhbGlkYXRlU3R5
bGVBdHRyKCZub2RlKTsKKyAgICBpZiAoSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudCogZG9tRGVi
dWdnZXJBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yRE9NRGVidWdnZXJBZ2Vu
dCgpKQorICAgICAgICBkb21EZWJ1Z2dlckFnZW50LT5kaWRJbnZhbGlkYXRlU3R5bGVBdHRyKCZu
b2RlKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmZyYW1lV2luZG93RGlz
Y2FyZGVkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBET01X
aW5kb3cqIHdpbmRvdykKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpmcmFtZVdpbmRv
d0Rpc2NhcmRlZEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywg
RE9NV2luZG93KiB3aW5kb3cpCiB7Ci0gICAgaWYgKFdlYkNvbnNvbGVBZ2VudCogY29uc29sZUFn
ZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+d2ViQ29uc29sZUFnZW50KCkpCisgICAgaWYgKFdl
YkNvbnNvbGVBZ2VudCogY29uc29sZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy53ZWJDb25z
b2xlQWdlbnQoKSkKICAgICAgICAgY29uc29sZUFnZW50LT5mcmFtZVdpbmRvd0Rpc2NhcmRlZCh3
aW5kb3cpOwogfQogCi12b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6bWVkaWFRdWVyeVJl
c3VsdENoYW5nZWRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMp
Cit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6bWVkaWFRdWVyeVJlc3VsdENoYW5nZWRJ
bXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMpCiB7Ci0gICAgaWYg
KEluc3BlY3RvckNTU0FnZW50KiBjc3NBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMtPmluc3Bl
Y3RvckNTU0FnZW50KCkpCisgICAgaWYgKEluc3BlY3RvckNTU0FnZW50KiBjc3NBZ2VudCA9IGlu
c3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yQ1NTQWdlbnQoKSkKICAgICAgICAgY3NzQWdlbnQt
Pm1lZGlhUXVlcnlSZXN1bHRDaGFuZ2VkKCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpkaWRQdXNoU2hhZG93Um9vdEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1
bWVudGluZ0FnZW50cywgRWxlbWVudCogaG9zdCwgU2hhZG93Um9vdCogcm9vdCkKK3ZvaWQgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRQdXNoU2hhZG93Um9vdEltcGwoSW5zdHJ1bWVudGlu
Z0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgRWxlbWVudCYgaG9zdCwgU2hhZG93Um9vdCYg
cm9vdCkKIHsKLSAgICBpZiAoSW5zcGVjdG9yRE9NQWdlbnQqIGRvbUFnZW50ID0gaW5zdHJ1bWVu
dGluZ0FnZW50cy0+aW5zcGVjdG9yRE9NQWdlbnQoKSkKLSAgICAgICAgZG9tQWdlbnQtPmRpZFB1
c2hTaGFkb3dSb290KGhvc3QsIHJvb3QpOworICAgIGlmIChJbnNwZWN0b3JET01BZ2VudCogZG9t
QWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckRPTUFnZW50KCkpCisgICAgICAg
IGRvbUFnZW50LT5kaWRQdXNoU2hhZG93Um9vdCgmaG9zdCwgJnJvb3QpOwogfQogCi12b2lkIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFBvcFNoYWRvd1Jvb3RJbXBsKEluc3RydW1lbnRp
bmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIEVsZW1lbnQqIGhvc3QsIFNoYWRvd1Jvb3Qq
IHJvb3QpCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFBvcFNoYWRvd1Jvb3RJ
bXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIEVsZW1lbnQmIGhv
c3QsIFNoYWRvd1Jvb3QmIHJvb3QpCiB7Ci0gICAgaWYgKEluc3BlY3RvckRPTUFnZW50KiBkb21B
Z2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvckRPTUFnZW50KCkpCi0gICAgICAg
IGRvbUFnZW50LT53aWxsUG9wU2hhZG93Um9vdChob3N0LCByb290KTsKKyAgICBpZiAoSW5zcGVj
dG9yRE9NQWdlbnQqIGRvbUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JET01B
Z2VudCgpKQorICAgICAgICBkb21BZ2VudC0+d2lsbFBvcFNoYWRvd1Jvb3QoJmhvc3QsICZyb290
KTsKIH0KIAotdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENyZWF0ZU5hbWVkRmxv
d0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgRG9jdW1lbnQq
IGRvY3VtZW50LCBXZWJLaXROYW1lZEZsb3cqIG5hbWVkRmxvdykKK3ZvaWQgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpkaWRDcmVhdGVOYW1lZEZsb3dJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMm
IGluc3RydW1lbnRpbmdBZ2VudHMsIERvY3VtZW50KiBkb2N1bWVudCwgV2ViS2l0TmFtZWRGbG93
JiBuYW1lZEZsb3cpCiB7Ci0gICAgaWYgKEluc3BlY3RvckNTU0FnZW50KiBjc3NBZ2VudCA9IGlu
c3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvckNTU0FnZW50KCkpCi0gICAgICAgIGNzc0FnZW50
LT5kaWRDcmVhdGVOYW1lZEZsb3coZG9jdW1lbnQsIG5hbWVkRmxvdyk7CisgICAgaWYgKEluc3Bl
Y3RvckNTU0FnZW50KiBjc3NBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yQ1NT
QWdlbnQoKSkKKyAgICAgICAgY3NzQWdlbnQtPmRpZENyZWF0ZU5hbWVkRmxvdyhkb2N1bWVudCwg
Jm5hbWVkRmxvdyk7CiB9CiAKLXZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUmVt
b3ZlTmFtZWRGbG93SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRz
LCBEb2N1bWVudCogZG9jdW1lbnQsIFdlYktpdE5hbWVkRmxvdyogbmFtZWRGbG93KQordm9pZCBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxSZW1vdmVOYW1lZEZsb3dJbXBsKEluc3RydW1l
bnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIERvY3VtZW50KiBkb2N1bWVudCwgV2Vi
S2l0TmFtZWRGbG93JiBuYW1lZEZsb3cpCiB7Ci0gICAgaWYgKEluc3BlY3RvckNTU0FnZW50KiBj
c3NBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvckNTU0FnZW50KCkpCi0gICAg
ICAgIGNzc0FnZW50LT53aWxsUmVtb3ZlTmFtZWRGbG93KGRvY3VtZW50LCBuYW1lZEZsb3cpOwor
ICAgIGlmIChJbnNwZWN0b3JDU1NBZ2VudCogY3NzQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRz
Lmluc3BlY3RvckNTU0FnZW50KCkpCisgICAgICAgIGNzc0FnZW50LT53aWxsUmVtb3ZlTmFtZWRG
bG93KGRvY3VtZW50LCAmbmFtZWRGbG93KTsKIH0KIAotdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmRpZENoYW5nZVJlZ2lvbk92ZXJzZXRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqIGlu
c3RydW1lbnRpbmdBZ2VudHMsIERvY3VtZW50KiBkb2N1bWVudCwgV2ViS2l0TmFtZWRGbG93KiBu
YW1lZEZsb3cpCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ2hhbmdlUmVnaW9u
T3ZlcnNldEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgRG9j
dW1lbnQmIGRvY3VtZW50LCBXZWJLaXROYW1lZEZsb3cmIG5hbWVkRmxvdykKIHsKLSAgICBpZiAo
SW5zcGVjdG9yQ1NTQWdlbnQqIGNzc0FnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVj
dG9yQ1NTQWdlbnQoKSkKLSAgICAgICAgY3NzQWdlbnQtPmRpZENoYW5nZVJlZ2lvbk92ZXJzZXQo
ZG9jdW1lbnQsIG5hbWVkRmxvdyk7CisgICAgaWYgKEluc3BlY3RvckNTU0FnZW50KiBjc3NBZ2Vu
dCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yQ1NTQWdlbnQoKSkKKyAgICAgICAgY3Nz
QWdlbnQtPmRpZENoYW5nZVJlZ2lvbk92ZXJzZXQoJmRvY3VtZW50LCAmbmFtZWRGbG93KTsKIH0K
IAotdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlZ2lzdGVyTmFtZWRGbG93Q29u
dGVudEVsZW1lbnRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMs
IERvY3VtZW50KiBkb2N1bWVudCwgV2ViS2l0TmFtZWRGbG93KiBuYW1lZEZsb3csIE5vZGUqIGNv
bnRlbnRFbGVtZW50LCBOb2RlKiBuZXh0Q29udGVudEVsZW1lbnQpCit2b2lkIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6ZGlkUmVnaXN0ZXJOYW1lZEZsb3dDb250ZW50RWxlbWVudEltcGwoSW5z
dHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgRG9jdW1lbnQmIGRvY3VtZW50
LCBXZWJLaXROYW1lZEZsb3cmIG5hbWVkRmxvdywgTm9kZSYgY29udGVudEVsZW1lbnQsIE5vZGUq
IG5leHRDb250ZW50RWxlbWVudCkKIHsKLSAgICBpZiAoSW5zcGVjdG9yQ1NTQWdlbnQqIGNzc0Fn
ZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yQ1NTQWdlbnQoKSkKLSAgICAgICAg
Y3NzQWdlbnQtPmRpZFJlZ2lzdGVyTmFtZWRGbG93Q29udGVudEVsZW1lbnQoZG9jdW1lbnQsIG5h
bWVkRmxvdywgY29udGVudEVsZW1lbnQsIG5leHRDb250ZW50RWxlbWVudCk7CisgICAgaWYgKElu
c3BlY3RvckNTU0FnZW50KiBjc3NBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9y
Q1NTQWdlbnQoKSkKKyAgICAgICAgY3NzQWdlbnQtPmRpZFJlZ2lzdGVyTmFtZWRGbG93Q29udGVu
dEVsZW1lbnQoJmRvY3VtZW50LCAmbmFtZWRGbG93LCAmY29udGVudEVsZW1lbnQsIG5leHRDb250
ZW50RWxlbWVudCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRVbnJl
Z2lzdGVyTmFtZWRGbG93Q29udGVudEVsZW1lbnRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqIGlu
c3RydW1lbnRpbmdBZ2VudHMsIERvY3VtZW50KiBkb2N1bWVudCwgV2ViS2l0TmFtZWRGbG93KiBu
YW1lZEZsb3csIE5vZGUqIGNvbnRlbnRFbGVtZW50KQordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmRpZFVucmVnaXN0ZXJOYW1lZEZsb3dDb250ZW50RWxlbWVudEltcGwoSW5zdHJ1bWVu
dGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgRG9jdW1lbnQmIGRvY3VtZW50LCBXZWJL
aXROYW1lZEZsb3cmIG5hbWVkRmxvdywgTm9kZSYgY29udGVudEVsZW1lbnQpCiB7Ci0gICAgaWYg
KEluc3BlY3RvckNTU0FnZW50KiBjc3NBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMtPmluc3Bl
Y3RvckNTU0FnZW50KCkpCi0gICAgICAgIGNzc0FnZW50LT5kaWRVbnJlZ2lzdGVyTmFtZWRGbG93
Q29udGVudEVsZW1lbnQoZG9jdW1lbnQsIG5hbWVkRmxvdywgY29udGVudEVsZW1lbnQpOworICAg
IGlmIChJbnNwZWN0b3JDU1NBZ2VudCogY3NzQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmlu
c3BlY3RvckNTU0FnZW50KCkpCisgICAgICAgIGNzc0FnZW50LT5kaWRVbnJlZ2lzdGVyTmFtZWRG
bG93Q29udGVudEVsZW1lbnQoJmRvY3VtZW50LCAmbmFtZWRGbG93LCAmY29udGVudEVsZW1lbnQp
OwogfQogCi12b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6bW91c2VEaWRNb3ZlT3ZlckVs
ZW1lbnRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIGNvbnN0
IEhpdFRlc3RSZXN1bHQmIHJlc3VsdCwgdW5zaWduZWQgbW9kaWZpZXJGbGFncykKK3ZvaWQgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjptb3VzZURpZE1vdmVPdmVyRWxlbWVudEltcGwoSW5zdHJ1
bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgY29uc3QgSGl0VGVzdFJlc3VsdCYg
cmVzdWx0LCB1bnNpZ25lZCBtb2RpZmllckZsYWdzKQogewotICAgIGlmIChJbnNwZWN0b3JET01B
Z2VudCogZG9tQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JET01BZ2VudCgp
KQorICAgIGlmIChJbnNwZWN0b3JET01BZ2VudCogZG9tQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdl
bnRzLmluc3BlY3RvckRPTUFnZW50KCkpCiAgICAgICAgIGRvbUFnZW50LT5tb3VzZURpZE1vdmVP
dmVyRWxlbWVudChyZXN1bHQsIG1vZGlmaWVyRmxhZ3MpOwogfQogCi12b2lkIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6ZGlkU2Nyb2xsSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVt
ZW50aW5nQWdlbnRzKQordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFNjcm9sbElt
cGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cykKIHsKLSAgICBpZiAo
SW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLT5pbnNw
ZWN0b3JQYWdlQWdlbnQoKSkKKyAgICBpZiAoSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQg
PSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvclBhZ2VBZ2VudCgpKQogICAgICAgICBwYWdl
QWdlbnQtPmRpZFNjcm9sbCgpOwogfQogCi1ib29sIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
aGFuZGxlVG91Y2hFdmVudEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0Fn
ZW50cywgTm9kZSogbm9kZSkKK2Jvb2wgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpoYW5kbGVU
b3VjaEV2ZW50SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBO
b2RlJiBub2RlKQogewotICAgIGlmIChJbnNwZWN0b3JET01BZ2VudCogZG9tQWdlbnQgPSBpbnN0
cnVtZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JET01BZ2VudCgpKQotICAgICAgICByZXR1cm4gZG9t
QWdlbnQtPmhhbmRsZVRvdWNoRXZlbnQobm9kZSk7CisgICAgaWYgKEluc3BlY3RvckRPTUFnZW50
KiBkb21BZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yRE9NQWdlbnQoKSkKKyAg
ICAgICAgcmV0dXJuIGRvbUFnZW50LT5oYW5kbGVUb3VjaEV2ZW50KCZub2RlKTsKICAgICByZXR1
cm4gZmFsc2U7CiB9CiAKLWJvb2wgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpoYW5kbGVNb3Vz
ZVByZXNzSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzKQorYm9v
bCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmhhbmRsZU1vdXNlUHJlc3NJbXBsKEluc3RydW1l
bnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMpCiB7Ci0gICAgaWYgKEluc3BlY3RvckRP
TUFnZW50KiBkb21BZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvckRPTUFnZW50
KCkpCisgICAgaWYgKEluc3BlY3RvckRPTUFnZW50KiBkb21BZ2VudCA9IGluc3RydW1lbnRpbmdB
Z2VudHMuaW5zcGVjdG9yRE9NQWdlbnQoKSkKICAgICAgICAgcmV0dXJuIGRvbUFnZW50LT5oYW5k
bGVNb3VzZVByZXNzKCk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6Zm9yY2VQc2V1ZG9TdGF0ZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyog
aW5zdHJ1bWVudGluZ0FnZW50cywgRWxlbWVudCogZWxlbWVudCwgQ1NTU2VsZWN0b3I6OlBzZXVk
b0NsYXNzVHlwZSBwc2V1ZG9TdGF0ZSkKK2Jvb2wgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpm
b3JjZVBzZXVkb1N0YXRlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdl
bnRzLCBFbGVtZW50JiBlbGVtZW50LCBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NUeXBlIHBzZXVk
b1N0YXRlKQogewotICAgIGlmIChJbnNwZWN0b3JDU1NBZ2VudCogY3NzQWdlbnQgPSBpbnN0cnVt
ZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JDU1NBZ2VudCgpKQotICAgICAgICByZXR1cm4gY3NzQWdl
bnQtPmZvcmNlUHNldWRvU3RhdGUoZWxlbWVudCwgcHNldWRvU3RhdGUpOworICAgIGlmIChJbnNw
ZWN0b3JDU1NBZ2VudCogY3NzQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckNT
U0FnZW50KCkpCisgICAgICAgIHJldHVybiBjc3NBZ2VudC0+Zm9yY2VQc2V1ZG9TdGF0ZSgmZWxl
bWVudCwgcHNldWRvU3RhdGUpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OmNoYXJhY3RlckRhdGFNb2RpZmllZEltcGwoSW5zdHJ1bWVudGlu
Z0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgQ2hhcmFjdGVyRGF0YSogY2hhcmFjdGVyRGF0
YSkKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjaGFyYWN0ZXJEYXRhTW9kaWZpZWRJ
bXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIENoYXJhY3RlckRh
dGEmIGNoYXJhY3RlckRhdGEpCiB7Ci0gICAgaWYgKEluc3BlY3RvckRPTUFnZW50KiBkb21BZ2Vu
dCA9IGluc3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvckRPTUFnZW50KCkpCi0gICAgICAgIGRv
bUFnZW50LT5jaGFyYWN0ZXJEYXRhTW9kaWZpZWQoY2hhcmFjdGVyRGF0YSk7CisgICAgaWYgKElu
c3BlY3RvckRPTUFnZW50KiBkb21BZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9y
RE9NQWdlbnQoKSkKKyAgICAgICAgZG9tQWdlbnQtPmNoYXJhY3RlckRhdGFNb2RpZmllZCgmY2hh
cmFjdGVyRGF0YSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsU2Vu
ZFhNTEh0dHBSZXF1ZXN0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdl
bnRzLCBjb25zdCBTdHJpbmcmIHVybCkKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3
aWxsU2VuZFhNTEh0dHBSZXF1ZXN0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50
aW5nQWdlbnRzLCBjb25zdCBTdHJpbmcmIHVybCkKIHsKLSAgICBpZiAoSW5zcGVjdG9yRE9NRGVi
dWdnZXJBZ2VudCogZG9tRGVidWdnZXJBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMtPmluc3Bl
Y3RvckRPTURlYnVnZ2VyQWdlbnQoKSkKKyAgICBpZiAoSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2Vu
dCogZG9tRGVidWdnZXJBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yRE9NRGVi
dWdnZXJBZ2VudCgpKQogICAgICAgICBkb21EZWJ1Z2dlckFnZW50LT53aWxsU2VuZFhNTEh0dHBS
ZXF1ZXN0KHVybCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRTY2hl
ZHVsZVJlc291cmNlUmVxdWVzdEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGlu
Z0FnZW50cywgY29uc3QgU3RyaW5nJiB1cmwsIEZyYW1lKiBmcmFtZSkKK3ZvaWQgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpkaWRTY2hlZHVsZVJlc291cmNlUmVxdWVzdEltcGwoSW5zdHJ1bWVu
dGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgY29uc3QgU3RyaW5nJiB1cmwsIEZyYW1l
KiBmcmFtZSkKIHsKLSAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2Vu
dCA9IGluc3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvclRpbWVsaW5lQWdlbnQoKSkKKyAgICBp
ZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IGluc3RydW1lbnRpbmdB
Z2VudHMuaW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpKQogICAgICAgICB0aW1lbGluZUFnZW50LT5k
aWRTY2hlZHVsZVJlc291cmNlUmVxdWVzdCh1cmwsIGZyYW1lKTsKIH0KIAotdm9pZCBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OmRpZEluc3RhbGxUaW1lckltcGwoSW5zdHJ1bWVudGluZ0FnZW50
cyogaW5zdHJ1bWVudGluZ0FnZW50cywgaW50IHRpbWVySWQsIGludCB0aW1lb3V0LCBib29sIHNp
bmdsZVNob3QsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCit2b2lkIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6ZGlkSW5zdGFsbFRpbWVySW1wbChJbnN0cnVtZW50aW5nQWdlbnRz
JiBpbnN0cnVtZW50aW5nQWdlbnRzLCBpbnQgdGltZXJJZCwgaW50IHRpbWVvdXQsIGJvb2wgc2lu
Z2xlU2hvdCwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKIHsKICAgICBwYXVzZU9u
TmF0aXZlRXZlbnRJZk5lZWRlZChpbnN0cnVtZW50aW5nQWdlbnRzLCBmYWxzZSwgc2V0VGltZXJF
dmVudE5hbWUsIHRydWUpOwotICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGlu
ZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpKQor
ICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gaW5zdHJ1bWVu
dGluZ0FnZW50cy5pbnNwZWN0b3JUaW1lbGluZUFnZW50KCkpCiAgICAgICAgIHRpbWVsaW5lQWdl
bnQtPmRpZEluc3RhbGxUaW1lcih0aW1lcklkLCB0aW1lb3V0LCBzaW5nbGVTaG90LCBmcmFtZUZv
clNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoY29udGV4dCkpOwogfQogCi12b2lkIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6ZGlkUmVtb3ZlVGltZXJJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqIGlu
c3RydW1lbnRpbmdBZ2VudHMsIGludCB0aW1lcklkLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBj
b250ZXh0KQordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlbW92ZVRpbWVySW1w
bChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBpbnQgdGltZXJJZCwg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKIHsKICAgICBwYXVzZU9uTmF0aXZlRXZl
bnRJZk5lZWRlZChpbnN0cnVtZW50aW5nQWdlbnRzLCBmYWxzZSwgY2xlYXJUaW1lckV2ZW50TmFt
ZSwgdHJ1ZSk7Ci0gICAgaWYgKEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQg
PSBpbnN0cnVtZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JUaW1lbGluZUFnZW50KCkpCisgICAgaWYg
KEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdl
bnRzLmluc3BlY3RvclRpbWVsaW5lQWdlbnQoKSkKICAgICAgICAgdGltZWxpbmVBZ2VudC0+ZGlk
UmVtb3ZlVGltZXIodGltZXJJZCwgZnJhbWVGb3JTY3JpcHRFeGVjdXRpb25Db250ZXh0KGNvbnRl
eHQpKTsKIH0KIAotSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6d2lsbENhbGxGdW5jdGlvbkltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5z
dHJ1bWVudGluZ0FnZW50cywgY29uc3QgU3RyaW5nJiBzY3JpcHROYW1lLCBpbnQgc2NyaXB0TGlu
ZSwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKK0luc3BlY3Rvckluc3RydW1lbnRh
dGlvbkNvb2tpZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxDYWxsRnVuY3Rpb25JbXBs
KEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIGNvbnN0IFN0cmluZyYg
c2NyaXB0TmFtZSwgaW50IHNjcmlwdExpbmUsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQpCiB7CiAgICAgaW50IHRpbWVsaW5lQWdlbnRJZCA9IDA7Ci0gICAgaWYgKEluc3BlY3RvclRp
bWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLT5pbnNwZWN0
b3JUaW1lbGluZUFnZW50KCkpIHsKKyAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGlt
ZWxpbmVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yVGltZWxpbmVBZ2VudCgp
KSB7CiAgICAgICAgIHRpbWVsaW5lQWdlbnQtPndpbGxDYWxsRnVuY3Rpb24oc2NyaXB0TmFtZSwg
c2NyaXB0TGluZSwgZnJhbWVGb3JTY3JpcHRFeGVjdXRpb25Db250ZXh0KGNvbnRleHQpKTsKICAg
ICAgICAgdGltZWxpbmVBZ2VudElkID0gdGltZWxpbmVBZ2VudC0+aWQoKTsKICAgICB9CkBAIC0z
MTgsMTIgKzMyMCwxMiBAQCB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ2FsbEZ1
bmN0aW9uSW1wbChjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpbwogICAgICAgICB0aW1lbGlu
ZUFnZW50LT5kaWRDYWxsRnVuY3Rpb24oZnJhbWVGb3JTY3JpcHRFeGVjdXRpb25Db250ZXh0KGNv
bnRleHQpKTsKIH0KIAotSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6d2lsbERpc3BhdGNoWEhSUmVhZHlTdGF0ZUNoYW5nZUV2ZW50SW1wbChJ
bnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBYTUxIdHRwUmVxdWVzdCog
cmVxdWVzdCwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKK0luc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbkNvb2tpZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxEaXNwYXRjaFhI
UlJlYWR5U3RhdGVDaGFuZ2VFdmVudEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVu
dGluZ0FnZW50cywgWE1MSHR0cFJlcXVlc3QmIHJlcXVlc3QsIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQpCiB7CiAgICAgaW50IHRpbWVsaW5lQWdlbnRJZCA9IDA7Ci0gICAgSW5zcGVj
dG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMtPmlu
c3BlY3RvclRpbWVsaW5lQWdlbnQoKTsKLSAgICBpZiAodGltZWxpbmVBZ2VudCAmJiByZXF1ZXN0
LT5oYXNFdmVudExpc3RlbmVycyhldmVudE5hbWVzKCkucmVhZHlzdGF0ZWNoYW5nZUV2ZW50KSkg
ewotICAgICAgICB0aW1lbGluZUFnZW50LT53aWxsRGlzcGF0Y2hYSFJSZWFkeVN0YXRlQ2hhbmdl
RXZlbnQocmVxdWVzdC0+dXJsKCkuc3RyaW5nKCksIHJlcXVlc3QtPnJlYWR5U3RhdGUoKSwgZnJh
bWVGb3JTY3JpcHRFeGVjdXRpb25Db250ZXh0KGNvbnRleHQpKTsKKyAgICBJbnNwZWN0b3JUaW1l
bGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JU
aW1lbGluZUFnZW50KCk7CisgICAgaWYgKHRpbWVsaW5lQWdlbnQgJiYgcmVxdWVzdC5oYXNFdmVu
dExpc3RlbmVycyhldmVudE5hbWVzKCkucmVhZHlzdGF0ZWNoYW5nZUV2ZW50KSkgeworICAgICAg
ICB0aW1lbGluZUFnZW50LT53aWxsRGlzcGF0Y2hYSFJSZWFkeVN0YXRlQ2hhbmdlRXZlbnQocmVx
dWVzdC51cmwoKS5zdHJpbmcoKSwgcmVxdWVzdC5yZWFkeVN0YXRlKCksIGZyYW1lRm9yU2NyaXB0
RXhlY3V0aW9uQ29udGV4dChjb250ZXh0KSk7CiAgICAgICAgIHRpbWVsaW5lQWdlbnRJZCA9IHRp
bWVsaW5lQWdlbnQtPmlkKCk7CiAgICAgfQogICAgIHJldHVybiBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb25Db29raWUoaW5zdHJ1bWVudGluZ0FnZW50cywgdGltZWxpbmVBZ2VudElkKTsKQEAgLTMz
NSwzMCArMzM3LDMxIEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWREaXNwYXRj
aFhIUlJlYWR5U3RhdGVDaGFuZ2VFdmVudEltcGwoY29uc3QgSW5zCiAgICAgICAgIHRpbWVsaW5l
QWdlbnQtPmRpZERpc3BhdGNoWEhSUmVhZHlTdGF0ZUNoYW5nZUV2ZW50KCk7CiB9CiAKLUluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxE
aXNwYXRjaEV2ZW50SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRz
LCBjb25zdCBFdmVudCYgZXZlbnQsIGJvb2wgaGFzRXZlbnRMaXN0ZW5lcnMsIERvY3VtZW50KiBk
b2N1bWVudCkKK0luc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OndpbGxEaXNwYXRjaEV2ZW50SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0
cnVtZW50aW5nQWdlbnRzLCBEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IEV2ZW50JiBldmVudCwg
Ym9vbCBoYXNFdmVudExpc3RlbmVycykKIHsKICAgICBpbnQgdGltZWxpbmVBZ2VudElkID0gMDsK
LSAgICBJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gaW5zdHJ1bWVudGlu
Z0FnZW50cy0+aW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpOworICAgIEluc3BlY3RvclRpbWVsaW5l
QWdlbnQqIHRpbWVsaW5lQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvclRpbWVs
aW5lQWdlbnQoKTsKICAgICBpZiAodGltZWxpbmVBZ2VudCAmJiBoYXNFdmVudExpc3RlbmVycykg
ewotICAgICAgICB0aW1lbGluZUFnZW50LT53aWxsRGlzcGF0Y2hFdmVudChldmVudCwgZG9jdW1l
bnQtPmZyYW1lKCkpOworICAgICAgICB0aW1lbGluZUFnZW50LT53aWxsRGlzcGF0Y2hFdmVudChl
dmVudCwgZG9jdW1lbnQuZnJhbWUoKSk7CiAgICAgICAgIHRpbWVsaW5lQWdlbnRJZCA9IHRpbWVs
aW5lQWdlbnQtPmlkKCk7CiAgICAgfQogI2lmIEVOQUJMRShXRUJfUkVQTEFZKQotICAgIGlmIChJ
bnNwZWN0b3JSZXBsYXlBZ2VudCogcmVwbGF5QWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLT5p
bnNwZWN0b3JSZXBsYXlBZ2VudCgpKQotICAgICAgICByZXBsYXlBZ2VudC0+d2lsbERpc3BhdGNo
RXZlbnQoZXZlbnQsIGRvY3VtZW50LT5mcmFtZSgpKTsKKyAgICBpZiAoSW5zcGVjdG9yUmVwbGF5
QWdlbnQqIHJlcGxheUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JSZXBsYXlB
Z2VudCgpKQorICAgICAgICByZXBsYXlBZ2VudC0+d2lsbERpc3BhdGNoRXZlbnQoZXZlbnQsIGRv
Y3VtZW50LmZyYW1lKCkpOwogI2VuZGlmCiAgICAgcmV0dXJuIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbkNvb2tpZShpbnN0cnVtZW50aW5nQWdlbnRzLCB0aW1lbGluZUFnZW50SWQpOwogfQogCi1J
bnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3
aWxsSGFuZGxlRXZlbnRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2Vu
dHMsIEV2ZW50KiBldmVudCkKK0luc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OndpbGxIYW5kbGVFdmVudEltcGwoSW5zdHJ1bWVudGluZ0FnZW50
cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgY29uc3QgRXZlbnQmIGV2ZW50KQogewotICAgIHBhdXNl
T25OYXRpdmVFdmVudElmTmVlZGVkKGluc3RydW1lbnRpbmdBZ2VudHMsIHRydWUsIGV2ZW50LT50
eXBlKCksIGZhbHNlKTsKKyAgICBwYXVzZU9uTmF0aXZlRXZlbnRJZk5lZWRlZChpbnN0cnVtZW50
aW5nQWdlbnRzLCB0cnVlLCBldmVudC50eXBlKCksIGZhbHNlKTsKICAgICByZXR1cm4gSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uQ29va2llKGluc3RydW1lbnRpbmdBZ2VudHMsIDApOwogfQogCiB2
b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkSGFuZGxlRXZlbnRJbXBsKGNvbnN0IElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYgY29va2llKQogewotICAgIGNhbmNlbFBhdXNl
T25OYXRpdmVFdmVudChjb29raWUuaW5zdHJ1bWVudGluZ0FnZW50cygpKTsKKyAgICBpZiAoY29v
a2llLmlzVmFsaWQoKSkKKyAgICAgICAgY2FuY2VsUGF1c2VPbk5hdGl2ZUV2ZW50KCpjb29raWUu
aW5zdHJ1bWVudGluZ0FnZW50cygpKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmRpZERpc3BhdGNoRXZlbnRJbXBsKGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNv
b2tpZSYgY29va2llKQpAQCAtMzY3LDE3ICszNzAsMTcgQEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmRpZERpc3BhdGNoRXZlbnRJbXBsKGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRh
dGkKICAgICAgICAgdGltZWxpbmVBZ2VudC0+ZGlkRGlzcGF0Y2hFdmVudCgpOwogfQogCi1JbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxs
RGlzcGF0Y2hFdmVudE9uV2luZG93SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50
aW5nQWdlbnRzLCBjb25zdCBFdmVudCYgZXZlbnQsIERPTVdpbmRvdyogd2luZG93KQorSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbERp
c3BhdGNoRXZlbnRPbldpbmRvd0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGlu
Z0FnZW50cywgY29uc3QgRXZlbnQmIGV2ZW50LCBET01XaW5kb3cmIHdpbmRvdykKIHsKICAgICBp
bnQgdGltZWxpbmVBZ2VudElkID0gMDsKLSAgICBJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1l
bGluZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yVGltZWxpbmVBZ2VudCgp
OwotICAgIGlmICh0aW1lbGluZUFnZW50ICYmIHdpbmRvdy0+aGFzRXZlbnRMaXN0ZW5lcnMoZXZl
bnQudHlwZSgpKSkgewotICAgICAgICB0aW1lbGluZUFnZW50LT53aWxsRGlzcGF0Y2hFdmVudChl
dmVudCwgd2luZG93ID8gd2luZG93LT5mcmFtZSgpIDogbnVsbHB0cik7CisgICAgSW5zcGVjdG9y
VGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVj
dG9yVGltZWxpbmVBZ2VudCgpOworICAgIGlmICh0aW1lbGluZUFnZW50ICYmIHdpbmRvdy5oYXNF
dmVudExpc3RlbmVycyhldmVudC50eXBlKCkpKSB7CisgICAgICAgIHRpbWVsaW5lQWdlbnQtPndp
bGxEaXNwYXRjaEV2ZW50KGV2ZW50LCB3aW5kb3cuZnJhbWUoKSk7CiAgICAgICAgIHRpbWVsaW5l
QWdlbnRJZCA9IHRpbWVsaW5lQWdlbnQtPmlkKCk7CiAgICAgfQogI2lmIEVOQUJMRShXRUJfUkVQ
TEFZKQotICAgIGlmIChJbnNwZWN0b3JSZXBsYXlBZ2VudCogcmVwbGF5QWdlbnQgPSBpbnN0cnVt
ZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JSZXBsYXlBZ2VudCgpKQotICAgICAgICByZXBsYXlBZ2Vu
dC0+d2lsbERpc3BhdGNoRXZlbnQoZXZlbnQsIHdpbmRvdyA/IHdpbmRvdy0+ZnJhbWUoKSA6IG51
bGxwdHIpOworICAgIGlmIChJbnNwZWN0b3JSZXBsYXlBZ2VudCogcmVwbGF5QWdlbnQgPSBpbnN0
cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvclJlcGxheUFnZW50KCkpCisgICAgICAgIHJlcGxheUFn
ZW50LT53aWxsRGlzcGF0Y2hFdmVudChldmVudCwgd2luZG93LmZyYW1lKCkpOwogI2VuZGlmCiAg
ICAgcmV0dXJuIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZShpbnN0cnVtZW50aW5nQWdl
bnRzLCB0aW1lbGluZUFnZW50SWQpOwogfQpAQCAtMzg4LDQwICszOTEsMzQgQEAgdm9pZCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZERpc3BhdGNoRXZlbnRPbldpbmRvd0ltcGwoY29uc3Qg
SW5zcGVjdG9ySW5zdHIKICAgICAgICAgdGltZWxpbmVBZ2VudC0+ZGlkRGlzcGF0Y2hFdmVudCgp
OwogfQogCi1JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjp3aWxsRXZhbHVhdGVTY3JpcHRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3Ry
dW1lbnRpbmdBZ2VudHMsIGNvbnN0IFN0cmluZyYgdXJsLCBpbnQgbGluZU51bWJlciwgRnJhbWUq
IGZyYW1lKQorSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6d2lsbEV2YWx1YXRlU2NyaXB0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0
cnVtZW50aW5nQWdlbnRzLCBGcmFtZSYgZnJhbWUsIGNvbnN0IFN0cmluZyYgdXJsLCBpbnQgbGlu
ZU51bWJlcikKIHsKICAgICBpbnQgdGltZWxpbmVBZ2VudElkID0gMDsKLSAgICBpZiAoSW5zcGVj
dG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMtPmlu
c3BlY3RvclRpbWVsaW5lQWdlbnQoKSkgewotICAgICAgICB0aW1lbGluZUFnZW50LT53aWxsRXZh
bHVhdGVTY3JpcHQodXJsLCBsaW5lTnVtYmVyLCBmcmFtZSk7CisgICAgaWYgKEluc3BlY3RvclRp
bWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3Rv
clRpbWVsaW5lQWdlbnQoKSkgeworICAgICAgICB0aW1lbGluZUFnZW50LT53aWxsRXZhbHVhdGVT
Y3JpcHQodXJsLCBsaW5lTnVtYmVyLCAmZnJhbWUpOwogICAgICAgICB0aW1lbGluZUFnZW50SWQg
PSB0aW1lbGluZUFnZW50LT5pZCgpOwogICAgIH0KICAgICByZXR1cm4gSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uQ29va2llKGluc3RydW1lbnRpbmdBZ2VudHMsIHRpbWVsaW5lQWdlbnRJZCk7CiB9
CiAKLXZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRFdmFsdWF0ZVNjcmlwdEltcGwo
Y29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llJiBjb29raWUsIEZyYW1lKiBmcmFt
ZSkKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRFdmFsdWF0ZVNjcmlwdEltcGwo
Y29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llJiBjb29raWUsIEZyYW1lJiBmcmFt
ZSkKIHsKICAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IHJl
dHJpZXZlVGltZWxpbmVBZ2VudChjb29raWUpKQotICAgICAgICB0aW1lbGluZUFnZW50LT5kaWRF
dmFsdWF0ZVNjcmlwdChmcmFtZSk7CisgICAgICAgIHRpbWVsaW5lQWdlbnQtPmRpZEV2YWx1YXRl
U2NyaXB0KCZmcmFtZSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzY3Jp
cHRzRW5hYmxlZEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywg
Ym9vbCBpc0VuYWJsZWQpCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c2NyaXB0c0Vu
YWJsZWRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIGJvb2wg
aXNFbmFibGVkKQogewotICAgIGlmIChJbnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2VudCA9IGlu
c3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvclBhZ2VBZ2VudCgpKQorICAgIGlmIChJbnNwZWN0
b3JQYWdlQWdlbnQqIHBhZ2VBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yUGFn
ZUFnZW50KCkpCiAgICAgICAgIHBhZ2VBZ2VudC0+c2NyaXB0c0VuYWJsZWQoaXNFbmFibGVkKTsK
IH0KIAotdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENyZWF0ZUlzb2xhdGVkQ29u
dGV4dEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgRnJhbWUq
IGZyYW1lLCBKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUsIFNlY3VyaXR5T3JpZ2luKiBvcmln
aW4pCi17Ci0gICAgaWYgKFBhZ2VSdW50aW1lQWdlbnQqIHJ1bnRpbWVBZ2VudCA9IGluc3RydW1l
bnRpbmdBZ2VudHMtPnBhZ2VSdW50aW1lQWdlbnQoKSkKLSAgICAgICAgcnVudGltZUFnZW50LT5k
aWRDcmVhdGVJc29sYXRlZENvbnRleHQoZnJhbWUsIHNjcmlwdFN0YXRlLCBvcmlnaW4pOwotfQot
Ci1JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Ojp3aWxsRmlyZVRpbWVySW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdl
bnRzLCBpbnQgdGltZXJJZCwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKK0luc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxG
aXJlVGltZXJJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIGlu
dCB0aW1lcklkLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogewogICAgIHBhdXNl
T25OYXRpdmVFdmVudElmTmVlZGVkKGluc3RydW1lbnRpbmdBZ2VudHMsIGZhbHNlLCB0aW1lckZp
cmVkRXZlbnROYW1lLCBmYWxzZSk7CiAKICAgICBpbnQgdGltZWxpbmVBZ2VudElkID0gMDsKLSAg
ICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IGluc3RydW1lbnRp
bmdBZ2VudHMtPmluc3BlY3RvclRpbWVsaW5lQWdlbnQoKSkgeworICAgIGlmIChJbnNwZWN0b3JU
aW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0
b3JUaW1lbGluZUFnZW50KCkpIHsKICAgICAgICAgdGltZWxpbmVBZ2VudC0+d2lsbEZpcmVUaW1l
cih0aW1lcklkLCBmcmFtZUZvclNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoY29udGV4dCkpOwogICAg
ICAgICB0aW1lbGluZUFnZW50SWQgPSB0aW1lbGluZUFnZW50LT5pZCgpOwogICAgIH0KQEAgLTQz
MCwyMyArNDI3LDI0IEBAIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OndpbGxGaXJlVGltZXJJbXBsKEluc3RyCiAKIHZvaWQgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpkaWRGaXJlVGltZXJJbXBsKGNvbnN0IEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbkNvb2tpZSYgY29va2llKQogewotICAgIGNhbmNlbFBhdXNlT25OYXRpdmVFdmVudChj
b29raWUuaW5zdHJ1bWVudGluZ0FnZW50cygpKTsKKyAgICBpZiAoY29va2llLmlzVmFsaWQoKSkK
KyAgICAgICAgY2FuY2VsUGF1c2VPbk5hdGl2ZUV2ZW50KCpjb29raWUuaW5zdHJ1bWVudGluZ0Fn
ZW50cygpKTsKIAogICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50
ID0gcmV0cmlldmVUaW1lbGluZUFnZW50KGNvb2tpZSkpCiAgICAgICAgIHRpbWVsaW5lQWdlbnQt
PmRpZEZpcmVUaW1lcigpOwogfQogCi12b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlk
SW52YWxpZGF0ZUxheW91dEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0Fn
ZW50cywgRnJhbWUqIGZyYW1lKQordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZElu
dmFsaWRhdGVMYXlvdXRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2Vu
dHMsIEZyYW1lJiBmcmFtZSkKIHsKLSAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGlt
ZWxpbmVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvclRpbWVsaW5lQWdlbnQo
KSkKLSAgICAgICAgdGltZWxpbmVBZ2VudC0+ZGlkSW52YWxpZGF0ZUxheW91dChmcmFtZSk7Cisg
ICAgaWYgKEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSBpbnN0cnVtZW50
aW5nQWdlbnRzLmluc3BlY3RvclRpbWVsaW5lQWdlbnQoKSkKKyAgICAgICAgdGltZWxpbmVBZ2Vu
dC0+ZGlkSW52YWxpZGF0ZUxheW91dCgmZnJhbWUpOwogfQogCi1JbnNwZWN0b3JJbnN0cnVtZW50
YXRpb25Db29raWUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsTGF5b3V0SW1wbChJbnN0
cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBGcmFtZSogZnJhbWUpCitJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxs
TGF5b3V0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBGcmFt
ZSYgZnJhbWUpCiB7CiAgICAgaW50IHRpbWVsaW5lQWdlbnRJZCA9IDA7Ci0gICAgaWYgKEluc3Bl
Y3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLT5p
bnNwZWN0b3JUaW1lbGluZUFnZW50KCkpIHsKLSAgICAgICAgdGltZWxpbmVBZ2VudC0+d2lsbExh
eW91dChmcmFtZSk7CisgICAgaWYgKEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdl
bnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvclRpbWVsaW5lQWdlbnQoKSkgeworICAg
ICAgICB0aW1lbGluZUFnZW50LT53aWxsTGF5b3V0KCZmcmFtZSk7CiAgICAgICAgIHRpbWVsaW5l
QWdlbnRJZCA9IHRpbWVsaW5lQWdlbnQtPmlkKCk7CiAgICAgfQogICAgIHJldHVybiBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb25Db29raWUoaW5zdHJ1bWVudGluZ0FnZW50cywgdGltZWxpbmVBZ2Vu
dElkKTsKQEAgLTQ2MSwxMiArNDU5LDEyIEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpkaWRMYXlvdXRJbXBsKGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpCiAgICAg
ICAgIHBhZ2VBZ2VudC0+ZGlkTGF5b3V0KCk7CiB9CiAKLUluc3BlY3Rvckluc3RydW1lbnRhdGlv
bkNvb2tpZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxEaXNwYXRjaFhIUkxvYWRFdmVu
dEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgWE1MSHR0cFJl
cXVlc3QqIHJlcXVlc3QsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCitJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb25Db29raWUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRGlz
cGF0Y2hYSFJMb2FkRXZlbnRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdB
Z2VudHMsIFhNTEh0dHBSZXF1ZXN0JiByZXF1ZXN0LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBj
b250ZXh0KQogewogICAgIGludCB0aW1lbGluZUFnZW50SWQgPSAwOwotICAgIEluc3BlY3RvclRp
bWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLT5pbnNwZWN0
b3JUaW1lbGluZUFnZW50KCk7Ci0gICAgaWYgKHRpbWVsaW5lQWdlbnQgJiYgcmVxdWVzdC0+aGFz
RXZlbnRMaXN0ZW5lcnMoZXZlbnROYW1lcygpLmxvYWRFdmVudCkpIHsKLSAgICAgICAgdGltZWxp
bmVBZ2VudC0+d2lsbERpc3BhdGNoWEhSTG9hZEV2ZW50KHJlcXVlc3QtPnVybCgpLCBmcmFtZUZv
clNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoY29udGV4dCkpOworICAgIEluc3BlY3RvclRpbWVsaW5l
QWdlbnQqIHRpbWVsaW5lQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvclRpbWVs
aW5lQWdlbnQoKTsKKyAgICBpZiAodGltZWxpbmVBZ2VudCAmJiByZXF1ZXN0Lmhhc0V2ZW50TGlz
dGVuZXJzKGV2ZW50TmFtZXMoKS5sb2FkRXZlbnQpKSB7CisgICAgICAgIHRpbWVsaW5lQWdlbnQt
PndpbGxEaXNwYXRjaFhIUkxvYWRFdmVudChyZXF1ZXN0LnVybCgpLCBmcmFtZUZvclNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoY29udGV4dCkpOwogICAgICAgICB0aW1lbGluZUFnZW50SWQgPSB0aW1l
bGluZUFnZW50LT5pZCgpOwogICAgIH0KICAgICByZXR1cm4gSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uQ29va2llKGluc3RydW1lbnRpbmdBZ2VudHMsIHRpbWVsaW5lQWdlbnRJZCk7CkBAIC00Nzgs
MTAxICs0NzYsMTA1IEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWREaXNwYXRj
aFhIUkxvYWRFdmVudEltcGwoY29uc3QgSW5zcGVjdG9ySW5zdHJ1CiAgICAgICAgIHRpbWVsaW5l
QWdlbnQtPmRpZERpc3BhdGNoWEhSTG9hZEV2ZW50KCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjp3aWxsUGFpbnRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1l
bnRpbmdBZ2VudHMsIFJlbmRlck9iamVjdCogcmVuZGVyZXIpCit2b2lkIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6d2lsbFBhaW50SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50
aW5nQWdlbnRzLCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQogewotICAgIGlmIChJbnNwZWN0b3JU
aW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVj
dG9yVGltZWxpbmVBZ2VudCgpKQorICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1l
bGluZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JUaW1lbGluZUFnZW50KCkp
CiAgICAgICAgIHRpbWVsaW5lQWdlbnQtPndpbGxQYWludCgmcmVuZGVyZXItPmZyYW1lKCkpOwog
fQogCi12b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUGFpbnRJbXBsKEluc3RydW1l
bnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIFJlbmRlck9iamVjdCogcmVuZGVyZXIs
IGNvbnN0IExheW91dFJlY3QmIHJlY3QpCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
ZGlkUGFpbnRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIFJl
bmRlck9iamVjdCogcmVuZGVyZXIsIGNvbnN0IExheW91dFJlY3QmIHJlY3QpCiB7Ci0gICAgaWYg
KEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdl
bnRzLT5pbnNwZWN0b3JUaW1lbGluZUFnZW50KCkpCisgICAgaWYgKEluc3BlY3RvclRpbWVsaW5l
QWdlbnQqIHRpbWVsaW5lQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvclRpbWVs
aW5lQWdlbnQoKSkKICAgICAgICAgdGltZWxpbmVBZ2VudC0+ZGlkUGFpbnQocmVuZGVyZXIsIHJl
Y3QpOwogCi0gICAgaWYgKEluc3BlY3RvclBhZ2VBZ2VudCogcGFnZUFnZW50ID0gaW5zdHJ1bWVu
dGluZ0FnZW50cy0+aW5zcGVjdG9yUGFnZUFnZW50KCkpCisgICAgaWYgKEluc3BlY3RvclBhZ2VB
Z2VudCogcGFnZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JQYWdlQWdlbnQo
KSkKICAgICAgICAgcGFnZUFnZW50LT5kaWRQYWludChyZW5kZXJlciwgcmVjdCk7CiB9CiAKLXZv
aWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsU2Nyb2xsTGF5ZXJJbXBsKEluc3RydW1l
bnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIEZyYW1lKiBmcmFtZSkKK3ZvaWQgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsU2Nyb2xsTGF5ZXJJbXBsKEluc3RydW1lbnRpbmdB
Z2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIEZyYW1lJiBmcmFtZSkKIHsKLSAgICBpZiAoSW5z
cGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMt
Pmluc3BlY3RvclRpbWVsaW5lQWdlbnQoKSkKLSAgICAgICAgdGltZWxpbmVBZ2VudC0+d2lsbFNj
cm9sbChmcmFtZSk7CisgICAgaWYgKEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdl
bnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvclRpbWVsaW5lQWdlbnQoKSkKKyAgICAg
ICAgdGltZWxpbmVBZ2VudC0+d2lsbFNjcm9sbCgmZnJhbWUpOwogfQogCi12b2lkIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6ZGlkU2Nyb2xsTGF5ZXJJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMq
IGluc3RydW1lbnRpbmdBZ2VudHMpCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlk
U2Nyb2xsTGF5ZXJJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMp
CiB7Ci0gICAgaWYgKEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSBpbnN0
cnVtZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JUaW1lbGluZUFnZW50KCkpCisgICAgaWYgKEluc3Bl
Y3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmlu
c3BlY3RvclRpbWVsaW5lQWdlbnQoKSkKICAgICAgICAgdGltZWxpbmVBZ2VudC0+ZGlkU2Nyb2xs
KCk7CiB9CiAKLUluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OndpbGxSZWNhbGN1bGF0ZVN0eWxlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiBp
bnN0cnVtZW50aW5nQWdlbnRzLCBGcmFtZSogZnJhbWUpCitJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b25Db29raWUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUmVjYWxjdWxhdGVTdHlsZUlt
cGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgRG9jdW1lbnQmIGRv
Y3VtZW50KQogewogICAgIGludCB0aW1lbGluZUFnZW50SWQgPSAwOwotICAgIGlmIChJbnNwZWN0
b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5z
cGVjdG9yVGltZWxpbmVBZ2VudCgpKSB7Ci0gICAgICAgIHRpbWVsaW5lQWdlbnQtPndpbGxSZWNh
bGN1bGF0ZVN0eWxlKGZyYW1lKTsKKyAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGlt
ZWxpbmVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yVGltZWxpbmVBZ2VudCgp
KSB7CisgICAgICAgIHRpbWVsaW5lQWdlbnQtPndpbGxSZWNhbGN1bGF0ZVN0eWxlKGRvY3VtZW50
LmZyYW1lKCkpOwogICAgICAgICB0aW1lbGluZUFnZW50SWQgPSB0aW1lbGluZUFnZW50LT5pZCgp
OwogICAgIH0KLSAgICBpZiAoSW5zcGVjdG9yUmVzb3VyY2VBZ2VudCogcmVzb3VyY2VBZ2VudCA9
IGluc3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvclJlc291cmNlQWdlbnQoKSkKKyAgICBpZiAo
SW5zcGVjdG9yUmVzb3VyY2VBZ2VudCogcmVzb3VyY2VBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2Vu
dHMuaW5zcGVjdG9yUmVzb3VyY2VBZ2VudCgpKQogICAgICAgICByZXNvdXJjZUFnZW50LT53aWxs
UmVjYWxjdWxhdGVTdHlsZSgpOwogICAgIHJldHVybiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25D
b29raWUoaW5zdHJ1bWVudGluZ0FnZW50cywgdGltZWxpbmVBZ2VudElkKTsKIH0KIAogdm9pZCBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2FsY3VsYXRlU3R5bGVJbXBsKGNvbnN0IElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYgY29va2llKQogeworICAgIGlmICghY29va2ll
LmlzVmFsaWQoKSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIEluc3RydW1lbnRpbmdBZ2Vu
dHMmIGluc3RydW1lbnRpbmdBZ2VudHMgPSAqY29va2llLmluc3RydW1lbnRpbmdBZ2VudHMoKTsK
KwogICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gcmV0cmll
dmVUaW1lbGluZUFnZW50KGNvb2tpZSkpCiAgICAgICAgIHRpbWVsaW5lQWdlbnQtPmRpZFJlY2Fs
Y3VsYXRlU3R5bGUoKTsKLSAgICBJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdl
bnRzID0gY29va2llLmluc3RydW1lbnRpbmdBZ2VudHMoKTsKLSAgICBpZiAoSW5zcGVjdG9yUmVz
b3VyY2VBZ2VudCogcmVzb3VyY2VBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3Rv
clJlc291cmNlQWdlbnQoKSkKKyAgICBpZiAoSW5zcGVjdG9yUmVzb3VyY2VBZ2VudCogcmVzb3Vy
Y2VBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yUmVzb3VyY2VBZ2VudCgpKQog
ICAgICAgICByZXNvdXJjZUFnZW50LT5kaWRSZWNhbGN1bGF0ZVN0eWxlKCk7Ci0gICAgaWYgKElu
c3BlY3RvclBhZ2VBZ2VudCogcGFnZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVj
dG9yUGFnZUFnZW50KCkpCisgICAgaWYgKEluc3BlY3RvclBhZ2VBZ2VudCogcGFnZUFnZW50ID0g
aW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JQYWdlQWdlbnQoKSkKICAgICAgICAgcGFnZUFn
ZW50LT5kaWRSZWNhbGN1bGF0ZVN0eWxlKCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpkaWRTY2hlZHVsZVN0eWxlUmVjYWxjdWxhdGlvbkltcGwoSW5zdHJ1bWVudGluZ0Fn
ZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgRG9jdW1lbnQqIGRvY3VtZW50KQordm9pZCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFNjaGVkdWxlU3R5bGVSZWNhbGN1bGF0aW9uSW1wbChJ
bnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBEb2N1bWVudCYgZG9jdW1l
bnQpCiB7Ci0gICAgaWYgKEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSBp
bnN0cnVtZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JUaW1lbGluZUFnZW50KCkpCi0gICAgICAgIHRp
bWVsaW5lQWdlbnQtPmRpZFNjaGVkdWxlU3R5bGVSZWNhbGN1bGF0aW9uKGRvY3VtZW50LT5mcmFt
ZSgpKTsKLSAgICBpZiAoSW5zcGVjdG9yUmVzb3VyY2VBZ2VudCogcmVzb3VyY2VBZ2VudCA9IGlu
c3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvclJlc291cmNlQWdlbnQoKSkKLSAgICAgICAgcmVz
b3VyY2VBZ2VudC0+ZGlkU2NoZWR1bGVTdHlsZVJlY2FsY3VsYXRpb24oZG9jdW1lbnQpOworICAg
IGlmIChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gaW5zdHJ1bWVudGlu
Z0FnZW50cy5pbnNwZWN0b3JUaW1lbGluZUFnZW50KCkpCisgICAgICAgIHRpbWVsaW5lQWdlbnQt
PmRpZFNjaGVkdWxlU3R5bGVSZWNhbGN1bGF0aW9uKGRvY3VtZW50LmZyYW1lKCkpOworICAgIGlm
IChJbnNwZWN0b3JSZXNvdXJjZUFnZW50KiByZXNvdXJjZUFnZW50ID0gaW5zdHJ1bWVudGluZ0Fn
ZW50cy5pbnNwZWN0b3JSZXNvdXJjZUFnZW50KCkpCisgICAgICAgIHJlc291cmNlQWdlbnQtPmRp
ZFNjaGVkdWxlU3R5bGVSZWNhbGN1bGF0aW9uKCZkb2N1bWVudCk7CiB9CiAKLXZvaWQgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjphcHBseUVtdWxhdGVkTWVkaWFJbXBsKEluc3RydW1lbnRpbmdB
Z2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIFN0cmluZyogbWVkaWEpCit2b2lkIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6YXBwbHlFbXVsYXRlZE1lZGlhSW1wbChJbnN0cnVtZW50aW5nQWdl
bnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBTdHJpbmcmIG1lZGlhKQogewotICAgIGlmIChJbnNw
ZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3Rv
clBhZ2VBZ2VudCgpKQotICAgICAgICBwYWdlQWdlbnQtPmFwcGx5RW11bGF0ZWRNZWRpYShtZWRp
YSk7CisgICAgaWYgKEluc3BlY3RvclBhZ2VBZ2VudCogcGFnZUFnZW50ID0gaW5zdHJ1bWVudGlu
Z0FnZW50cy5pbnNwZWN0b3JQYWdlQWdlbnQoKSkKKyAgICAgICAgcGFnZUFnZW50LT5hcHBseUVt
dWxhdGVkTWVkaWEoJm1lZGlhKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OndpbGxTZW5kUmVxdWVzdEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0Fn
ZW50cywgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciogbG9hZGVyLCBS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0
UmVzcG9uc2UpCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFNlbmRSZXF1ZXN0
SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCB1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIFJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSkKIHsKLSAg
ICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IGluc3RydW1lbnRp
bmdBZ2VudHMtPmluc3BlY3RvclRpbWVsaW5lQWdlbnQoKSkKKyAgICBpZiAoSW5zcGVjdG9yVGlt
ZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9y
VGltZWxpbmVBZ2VudCgpKQogICAgICAgICB0aW1lbGluZUFnZW50LT53aWxsU2VuZFJlc291cmNl
UmVxdWVzdChpZGVudGlmaWVyLCByZXF1ZXN0LCBsb2FkZXItPmZyYW1lKCkpOwotICAgIGlmIChJ
bnNwZWN0b3JSZXNvdXJjZUFnZW50KiByZXNvdXJjZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50
cy0+aW5zcGVjdG9yUmVzb3VyY2VBZ2VudCgpKQorICAgIGlmIChJbnNwZWN0b3JSZXNvdXJjZUFn
ZW50KiByZXNvdXJjZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JSZXNvdXJj
ZUFnZW50KCkpCiAgICAgICAgIHJlc291cmNlQWdlbnQtPndpbGxTZW5kUmVxdWVzdChpZGVudGlm
aWVyLCBsb2FkZXIsIHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpOwogfQogCi12b2lkIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6Y29udGludWVBZnRlclBpbmdMb2FkZXJJbXBsKEluc3RydW1l
bnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmll
ciwgRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpjb250aW51ZUFmdGVyUGluZ0xvYWRlckltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5z
dHJ1bWVudGluZ0FnZW50cywgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRl
ciogbG9hZGVyLCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmIHJlc3BvbnNlKQogewogICAgIHdpbGxTZW5kUmVxdWVzdEltcGwoaW5zdHJ1bWVudGluZ0Fn
ZW50cywgaWRlbnRpZmllciwgbG9hZGVyLCByZXF1ZXN0LCByZXNwb25zZSk7CiB9CiAKLXZvaWQg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjptYXJrUmVzb3VyY2VBc0NhY2hlZEltcGwoSW5zdHJ1
bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgdW5zaWduZWQgbG9uZyBpZGVudGlm
aWVyKQordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Om1hcmtSZXNvdXJjZUFzQ2FjaGVk
SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCB1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIpCiB7Ci0gICAgaWYgKEluc3BlY3RvclJlc291cmNlQWdlbnQqIHJlc291
cmNlQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JSZXNvdXJjZUFnZW50KCkp
CisgICAgaWYgKEluc3BlY3RvclJlc291cmNlQWdlbnQqIHJlc291cmNlQWdlbnQgPSBpbnN0cnVt
ZW50aW5nQWdlbnRzLmluc3BlY3RvclJlc291cmNlQWdlbnQoKSkKICAgICAgICAgcmVzb3VyY2VB
Z2VudC0+bWFya1Jlc291cmNlQXNDYWNoZWQoaWRlbnRpZmllcik7CiB9CiAKLXZvaWQgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGVJbXBsKElu
c3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIERvY3VtZW50TG9hZGVyKiBs
b2FkZXIsIENhY2hlZFJlc291cmNlKiBjYWNoZWRSZXNvdXJjZSkKK3ZvaWQgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpkaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGVJbXBsKEluc3RydW1l
bnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIERvY3VtZW50TG9hZGVyKiBsb2FkZXIs
IENhY2hlZFJlc291cmNlKiBjYWNoZWRSZXNvdXJjZSkKIHsKLSAgICBpZiAoIWluc3RydW1lbnRp
bmdBZ2VudHMtPmluc3BlY3RvckVudmlyb25tZW50KCkuZGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCgp
KQorICAgIGlmICghaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JFbnZpcm9ubWVudCgpLmRl
dmVsb3BlckV4dHJhc0VuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwotICAgIGlmIChJbnNwZWN0
b3JSZXNvdXJjZUFnZW50KiByZXNvdXJjZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5z
cGVjdG9yUmVzb3VyY2VBZ2VudCgpKQorICAgIGlmIChJbnNwZWN0b3JSZXNvdXJjZUFnZW50KiBy
ZXNvdXJjZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JSZXNvdXJjZUFnZW50
KCkpCiAgICAgICAgIHJlc291cmNlQWdlbnQtPmRpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNo
ZShsb2FkZXIsIGNhY2hlZFJlc291cmNlKTsKIH0KIAotSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Q29va2llIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFJlY2VpdmVSZXNvdXJjZURhdGFJ
bXBsKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIHVuc2lnbmVkIGxv
bmcgaWRlbnRpZmllciwgRnJhbWUqIGZyYW1lLCBpbnQgbGVuZ3RoKQorSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uQ29va2llIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFJlY2VpdmVSZXNv
dXJjZURhdGFJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIEZy
YW1lKiBmcmFtZSwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBpbnQgbGVuZ3RoKQogewogICAg
IGludCB0aW1lbGluZUFnZW50SWQgPSAwOwotICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFnZW50
KiB0aW1lbGluZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yVGltZWxpbmVB
Z2VudCgpKSB7CisgICAgaWYgKEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQg
PSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvclRpbWVsaW5lQWdlbnQoKSkgewogICAgICAg
ICB0aW1lbGluZUFnZW50LT53aWxsUmVjZWl2ZVJlc291cmNlRGF0YShpZGVudGlmaWVyLCBmcmFt
ZSwgbGVuZ3RoKTsKICAgICAgICAgdGltZWxpbmVBZ2VudElkID0gdGltZWxpbmVBZ2VudC0+aWQo
KTsKICAgICB9CkBAIC01ODUsMTAgKzU4NywxMCBAQCB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6ZGlkUmVjZWl2ZVJlc291cmNlRGF0YUltcGwoY29uc3QgSW5zcGVjdG9ySW5zdHJ1bQog
ICAgICAgICB0aW1lbGluZUFnZW50LT5kaWRSZWNlaXZlUmVzb3VyY2VEYXRhKCk7CiB9CiAKLUlu
c3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Ondp
bGxSZWNlaXZlUmVzb3VyY2VSZXNwb25zZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1
bWVudGluZ0FnZW50cywgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiByZXNwb25zZSwgRnJhbWUqIGZyYW1lKQorSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Q29va2llIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFJlY2VpdmVSZXNvdXJjZVJlc3Bv
bnNlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBGcmFtZSog
ZnJhbWUsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UpCiB7CiAgICAgaW50IHRpbWVsaW5lQWdlbnRJZCA9IDA7Ci0gICAgSW5zcGVjdG9y
VGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMtPmluc3Bl
Y3RvclRpbWVsaW5lQWdlbnQoKTsKKyAgICBJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGlu
ZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JUaW1lbGluZUFnZW50KCk7CiAg
ICAgaWYgKHRpbWVsaW5lQWdlbnQpIHsKICAgICAgICAgdGltZWxpbmVBZ2VudC0+d2lsbFJlY2Vp
dmVSZXNvdXJjZVJlc3BvbnNlKGlkZW50aWZpZXIsIHJlc3BvbnNlLCBmcmFtZSk7CiAgICAgICAg
IHRpbWVsaW5lQWdlbnRJZCA9IHRpbWVsaW5lQWdlbnQtPmlkKCk7CkBAIC01OTgsMjE1ICs2MDAs
MjIwIEBAIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OndpbGxSZWNlaXZlUmVzb3VyY2VSZXNwCiAKIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpkaWRSZWNlaXZlUmVzb3VyY2VSZXNwb25zZUltcGwoY29uc3QgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uQ29va2llJiBjb29raWUsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9j
dW1lbnRMb2FkZXIqIGxvYWRlciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJl
c291cmNlTG9hZGVyKiByZXNvdXJjZUxvYWRlcikKIHsKLSAgICBpZiAoSW5zcGVjdG9yVGltZWxp
bmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IHJldHJpZXZlVGltZWxpbmVBZ2VudChjb29raWUpKQot
ICAgICAgICB0aW1lbGluZUFnZW50LT5kaWRSZWNlaXZlUmVzb3VyY2VSZXNwb25zZSgpOworICAg
IGlmICghY29va2llLmlzVmFsaWQoKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgaWYgKCFsb2Fk
ZXIpCiAgICAgICAgIHJldHVybjsKLSAgICBJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50
aW5nQWdlbnRzID0gY29va2llLmluc3RydW1lbnRpbmdBZ2VudHMoKTsKLSAgICBpZiAoSW5zcGVj
dG9yUmVzb3VyY2VBZ2VudCogcmVzb3VyY2VBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMtPmlu
c3BlY3RvclJlc291cmNlQWdlbnQoKSkKKworICAgIEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3Ry
dW1lbnRpbmdBZ2VudHMgPSAqY29va2llLmluc3RydW1lbnRpbmdBZ2VudHMoKTsKKworICAgIGlm
IChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gcmV0cmlldmVUaW1lbGlu
ZUFnZW50KGNvb2tpZSkpCisgICAgICAgIHRpbWVsaW5lQWdlbnQtPmRpZFJlY2VpdmVSZXNvdXJj
ZVJlc3BvbnNlKCk7CisgICAgaWYgKEluc3BlY3RvclJlc291cmNlQWdlbnQqIHJlc291cmNlQWdl
bnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvclJlc291cmNlQWdlbnQoKSkKICAgICAg
ICAgcmVzb3VyY2VBZ2VudC0+ZGlkUmVjZWl2ZVJlc3BvbnNlKGlkZW50aWZpZXIsIGxvYWRlciwg
cmVzcG9uc2UsIHJlc291cmNlTG9hZGVyKTsKLSAgICBpZiAoV2ViQ29uc29sZUFnZW50KiBjb25z
b2xlQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLT53ZWJDb25zb2xlQWdlbnQoKSkKKyAgICBp
ZiAoV2ViQ29uc29sZUFnZW50KiBjb25zb2xlQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLndl
YkNvbnNvbGVBZ2VudCgpKQogICAgICAgICBjb25zb2xlQWdlbnQtPmRpZFJlY2VpdmVSZXNwb25z
ZShpZGVudGlmaWVyLCByZXNwb25zZSk7IC8vIFRoaXMgc2hvdWxkIGNvbWUgQUZURVIgcmVzb3Vy
Y2Ugbm90aWZpY2F0aW9uLCBmcm9udC1lbmQgcmVsaWVzIG9uIHRoaXMuCiB9CiAKLXZvaWQgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlUmVzb3VyY2VSZXNwb25zZUJ1dENhbmNl
bGVkSW1wbChGcmFtZSogZnJhbWUsIERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIHVuc2lnbmVkIGxv
bmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcikKK3ZvaWQgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlUmVzb3VyY2VSZXNwb25zZUJ1dENhbmNlbGVkSW1w
bChGcmFtZSogZnJhbWUsIERvY3VtZW50TG9hZGVyJiBsb2FkZXIsIHVuc2lnbmVkIGxvbmcgaWRl
bnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcikKIHsKICAgICBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb25Db29raWUgY29va2llID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxs
UmVjZWl2ZVJlc291cmNlUmVzcG9uc2UoZnJhbWUsIGlkZW50aWZpZXIsIHIpOwotICAgIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZVJlc291cmNlUmVzcG9uc2UoY29va2llLCBp
ZGVudGlmaWVyLCBsb2FkZXIsIHIsIG51bGxwdHIpOworICAgIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6ZGlkUmVjZWl2ZVJlc291cmNlUmVzcG9uc2UoY29va2llLCBpZGVudGlmaWVyLCAmbG9h
ZGVyLCByLCBudWxscHRyKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNv
bnRpbnVlQWZ0ZXJYRnJhbWVPcHRpb25zRGVuaWVkSW1wbChGcmFtZSogZnJhbWUsIERvY3VtZW50
TG9hZGVyKiBsb2FkZXIsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYgcikKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjb250aW51ZUFmdGVy
WEZyYW1lT3B0aW9uc0RlbmllZEltcGwoRnJhbWUqIGZyYW1lLCBEb2N1bWVudExvYWRlciYgbG9h
ZGVyLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHIp
CiB7CiAgICAgZGlkUmVjZWl2ZVJlc291cmNlUmVzcG9uc2VCdXRDYW5jZWxlZEltcGwoZnJhbWUs
IGxvYWRlciwgaWRlbnRpZmllciwgcik7CiB9CiAKLXZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpjb250aW51ZVdpdGhQb2xpY3lEb3dubG9hZEltcGwoRnJhbWUqIGZyYW1lLCBEb2N1bWVu
dExvYWRlciogbG9hZGVyLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIHIpCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Y29udGludWVXaXRo
UG9saWN5RG93bmxvYWRJbXBsKEZyYW1lKiBmcmFtZSwgRG9jdW1lbnRMb2FkZXImIGxvYWRlciwg
dW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByKQogewog
ICAgIGRpZFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlQnV0Q2FuY2VsZWRJbXBsKGZyYW1lLCBsb2Fk
ZXIsIGlkZW50aWZpZXIsIHIpOwogfQogCi12b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
Y29udGludWVXaXRoUG9saWN5SWdub3JlSW1wbChGcmFtZSogZnJhbWUsIERvY3VtZW50TG9hZGVy
KiBsb2FkZXIsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYgcikKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjb250aW51ZVdpdGhQb2xpY3lJ
Z25vcmVJbXBsKEZyYW1lKiBmcmFtZSwgRG9jdW1lbnRMb2FkZXImIGxvYWRlciwgdW5zaWduZWQg
bG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByKQogewogICAgIGRpZFJl
Y2VpdmVSZXNvdXJjZVJlc3BvbnNlQnV0Q2FuY2VsZWRJbXBsKGZyYW1lLCBsb2FkZXIsIGlkZW50
aWZpZXIsIHIpOwogfQogCi12b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2
ZURhdGFJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIHVuc2ln
bmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgsIGlu
dCBlbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRS
ZWNlaXZlRGF0YUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywg
dW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxlbmd0
aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQogewotICAgIGlmIChJbnNwZWN0b3JSZXNvdXJjZUFn
ZW50KiByZXNvdXJjZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yUmVzb3Vy
Y2VBZ2VudCgpKQorICAgIGlmIChJbnNwZWN0b3JSZXNvdXJjZUFnZW50KiByZXNvdXJjZUFnZW50
ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JSZXNvdXJjZUFnZW50KCkpCiAgICAgICAg
IHJlc291cmNlQWdlbnQtPmRpZFJlY2VpdmVEYXRhKGlkZW50aWZpZXIsIGRhdGEsIGRhdGFMZW5n
dGgsIGVuY29kZWREYXRhTGVuZ3RoKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmRpZEZpbmlzaExvYWRpbmdJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRp
bmdBZ2VudHMsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqIGxvYWRl
ciwgZG91YmxlIGZpbmlzaFRpbWUpCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlk
RmluaXNoTG9hZGluZ0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50
cywgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciogbG9hZGVyLCBkb3Vi
bGUgZmluaXNoVGltZSkKIHsKLSAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxp
bmVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvclRpbWVsaW5lQWdlbnQoKSkK
KyAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IGluc3RydW1l
bnRpbmdBZ2VudHMuaW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpKQogICAgICAgICB0aW1lbGluZUFn
ZW50LT5kaWRGaW5pc2hMb2FkaW5nUmVzb3VyY2UoaWRlbnRpZmllciwgZmFsc2UsIGZpbmlzaFRp
bWUsIGxvYWRlci0+ZnJhbWUoKSk7Ci0gICAgaWYgKEluc3BlY3RvclJlc291cmNlQWdlbnQqIHJl
c291cmNlQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JSZXNvdXJjZUFnZW50
KCkpCisgICAgaWYgKEluc3BlY3RvclJlc291cmNlQWdlbnQqIHJlc291cmNlQWdlbnQgPSBpbnN0
cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvclJlc291cmNlQWdlbnQoKSkKICAgICAgICAgcmVzb3Vy
Y2VBZ2VudC0+ZGlkRmluaXNoTG9hZGluZyhpZGVudGlmaWVyLCBsb2FkZXIsIGZpbmlzaFRpbWUp
OwogfQogCi12b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmFpbExvYWRpbmdJbXBs
KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIHVuc2lnbmVkIGxvbmcg
aWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgY29uc3QgUmVzb3VyY2VFcnJvciYg
ZXJyb3IpCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmFpbExvYWRpbmdJbXBs
KEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIHVuc2lnbmVkIGxvbmcg
aWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgY29uc3QgUmVzb3VyY2VFcnJvciYg
ZXJyb3IpCiB7Ci0gICAgaWYgKEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQg
PSBpbnN0cnVtZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JUaW1lbGluZUFnZW50KCkpCisgICAgaWYg
KEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdl
bnRzLmluc3BlY3RvclRpbWVsaW5lQWdlbnQoKSkKICAgICAgICAgdGltZWxpbmVBZ2VudC0+ZGlk
RmluaXNoTG9hZGluZ1Jlc291cmNlKGlkZW50aWZpZXIsIHRydWUsIDAsIGxvYWRlci0+ZnJhbWUo
KSk7Ci0gICAgaWYgKEluc3BlY3RvclJlc291cmNlQWdlbnQqIHJlc291cmNlQWdlbnQgPSBpbnN0
cnVtZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JSZXNvdXJjZUFnZW50KCkpCisgICAgaWYgKEluc3Bl
Y3RvclJlc291cmNlQWdlbnQqIHJlc291cmNlQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmlu
c3BlY3RvclJlc291cmNlQWdlbnQoKSkKICAgICAgICAgcmVzb3VyY2VBZ2VudC0+ZGlkRmFpbExv
YWRpbmcoaWRlbnRpZmllciwgbG9hZGVyLCBlcnJvcik7Ci0gICAgaWYgKFdlYkNvbnNvbGVBZ2Vu
dCogY29uc29sZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+d2ViQ29uc29sZUFnZW50KCkp
CisgICAgaWYgKFdlYkNvbnNvbGVBZ2VudCogY29uc29sZUFnZW50ID0gaW5zdHJ1bWVudGluZ0Fn
ZW50cy53ZWJDb25zb2xlQWdlbnQoKSkKICAgICAgICAgY29uc29sZUFnZW50LT5kaWRGYWlsTG9h
ZGluZyhpZGVudGlmaWVyLCBlcnJvcik7IC8vIFRoaXMgc2hvdWxkIGNvbWUgQUZURVIgcmVzb3Vy
Y2Ugbm90aWZpY2F0aW9uLCBmcm9udC1lbmQgcmVsaWVzIG9uIHRoaXMuCiB9CiAKLXZvaWQgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkb2N1bWVudFRocmVhZGFibGVMb2FkZXJTdGFydGVkTG9h
ZGluZ0ZvckNsaWVudEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50
cywgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50KiBjbGll
bnQpCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZG9jdW1lbnRUaHJlYWRhYmxlTG9h
ZGVyU3RhcnRlZExvYWRpbmdGb3JDbGllbnRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3Ry
dW1lbnRpbmdBZ2VudHMsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgVGhyZWFkYWJsZUxvYWRl
ckNsaWVudCogY2xpZW50KQogewotICAgIGlmIChJbnNwZWN0b3JSZXNvdXJjZUFnZW50KiByZXNv
dXJjZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yUmVzb3VyY2VBZ2VudCgp
KQorICAgIGlmIChJbnNwZWN0b3JSZXNvdXJjZUFnZW50KiByZXNvdXJjZUFnZW50ID0gaW5zdHJ1
bWVudGluZ0FnZW50cy5pbnNwZWN0b3JSZXNvdXJjZUFnZW50KCkpCiAgICAgICAgIHJlc291cmNl
QWdlbnQtPmRvY3VtZW50VGhyZWFkYWJsZUxvYWRlclN0YXJ0ZWRMb2FkaW5nRm9yQ2xpZW50KGlk
ZW50aWZpZXIsIGNsaWVudCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3
aWxsTG9hZFhIUkltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywg
VGhyZWFkYWJsZUxvYWRlckNsaWVudCogY2xpZW50LCBjb25zdCBTdHJpbmcmIG1ldGhvZCwgY29u
c3QgVVJMJiB1cmwsIGJvb2wgYXN5bmMsIFBhc3NSZWZQdHI8Rm9ybURhdGE+IGZvcm1EYXRhLCBj
b25zdCBIVFRQSGVhZGVyTWFwJiBoZWFkZXJzLCBib29sIGluY2x1ZGVDcmVkZW50aWFscykKK3Zv
aWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsTG9hZFhIUkltcGwoSW5zdHJ1bWVudGlu
Z0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgVGhyZWFkYWJsZUxvYWRlckNsaWVudCogY2xp
ZW50LCBjb25zdCBTdHJpbmcmIG1ldGhvZCwgY29uc3QgVVJMJiB1cmwsIGJvb2wgYXN5bmMsIFBh
c3NSZWZQdHI8Rm9ybURhdGE+IGZvcm1EYXRhLCBjb25zdCBIVFRQSGVhZGVyTWFwJiBoZWFkZXJz
LCBib29sIGluY2x1ZGVDcmVkZW50aWFscykKIHsKLSAgICBpZiAoSW5zcGVjdG9yUmVzb3VyY2VB
Z2VudCogcmVzb3VyY2VBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvclJlc291
cmNlQWdlbnQoKSkKKyAgICBpZiAoSW5zcGVjdG9yUmVzb3VyY2VBZ2VudCogcmVzb3VyY2VBZ2Vu
dCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yUmVzb3VyY2VBZ2VudCgpKQogICAgICAg
ICByZXNvdXJjZUFnZW50LT53aWxsTG9hZFhIUihjbGllbnQsIG1ldGhvZCwgdXJsLCBhc3luYywg
Zm9ybURhdGEsIGhlYWRlcnMsIGluY2x1ZGVDcmVkZW50aWFscyk7CiB9CiAKLXZvaWQgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGYWlsWEhSTG9hZGluZ0ltcGwoSW5zdHJ1bWVudGluZ0Fn
ZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgVGhyZWFkYWJsZUxvYWRlckNsaWVudCogY2xpZW50
KQordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZhaWxYSFJMb2FkaW5nSW1wbChJ
bnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBUaHJlYWRhYmxlTG9hZGVy
Q2xpZW50KiBjbGllbnQpCiB7Ci0gICAgaWYgKEluc3BlY3RvclJlc291cmNlQWdlbnQqIHJlc291
cmNlQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JSZXNvdXJjZUFnZW50KCkp
CisgICAgaWYgKEluc3BlY3RvclJlc291cmNlQWdlbnQqIHJlc291cmNlQWdlbnQgPSBpbnN0cnVt
ZW50aW5nQWdlbnRzLmluc3BlY3RvclJlc291cmNlQWdlbnQoKSkKICAgICAgICAgcmVzb3VyY2VB
Z2VudC0+ZGlkRmFpbFhIUkxvYWRpbmcoY2xpZW50KTsKIH0KIAotdm9pZCBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmRpZEZpbmlzaFhIUkxvYWRpbmdJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMq
IGluc3RydW1lbnRpbmdBZ2VudHMsIFRocmVhZGFibGVMb2FkZXJDbGllbnQqIGNsaWVudCwgdW5z
aWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVN0cmluZywgY29uc3Qg
U3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgc2VuZFVSTCwgdW5zaWduZWQgc2VuZExpbmVOdW1i
ZXIsIHVuc2lnbmVkIHNlbmRDb2x1bW5OdW1iZXIpCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6ZGlkRmluaXNoWEhSTG9hZGluZ0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1
bWVudGluZ0FnZW50cywgVGhyZWFkYWJsZUxvYWRlckNsaWVudCogY2xpZW50LCB1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNlU3RyaW5nLCBjb25zdCBTdHJpbmcm
IHVybCwgY29uc3QgU3RyaW5nJiBzZW5kVVJMLCB1bnNpZ25lZCBzZW5kTGluZU51bWJlciwgdW5z
aWduZWQgc2VuZENvbHVtbk51bWJlcikKIHsKLSAgICBpZiAoV2ViQ29uc29sZUFnZW50KiBjb25z
b2xlQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLT53ZWJDb25zb2xlQWdlbnQoKSkKKyAgICBp
ZiAoV2ViQ29uc29sZUFnZW50KiBjb25zb2xlQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLndl
YkNvbnNvbGVBZ2VudCgpKQogICAgICAgICBjb25zb2xlQWdlbnQtPmRpZEZpbmlzaFhIUkxvYWRp
bmcoaWRlbnRpZmllciwgdXJsLCBzZW5kVVJMLCBzZW5kTGluZU51bWJlciwgc2VuZENvbHVtbk51
bWJlcik7Ci0gICAgaWYgKEluc3BlY3RvclJlc291cmNlQWdlbnQqIHJlc291cmNlQWdlbnQgPSBp
bnN0cnVtZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JSZXNvdXJjZUFnZW50KCkpCisgICAgaWYgKElu
c3BlY3RvclJlc291cmNlQWdlbnQqIHJlc291cmNlQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRz
Lmluc3BlY3RvclJlc291cmNlQWdlbnQoKSkKICAgICAgICAgcmVzb3VyY2VBZ2VudC0+ZGlkRmlu
aXNoWEhSTG9hZGluZyhjbGllbnQsIGlkZW50aWZpZXIsIHNvdXJjZVN0cmluZyk7CiB9CiAKLXZv
aWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlWEhSUmVzcG9uc2VJbXBsKElu
c3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIHVuc2lnbmVkIGxvbmcgaWRl
bnRpZmllcikKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlWEhSUmVz
cG9uc2VJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIHVuc2ln
bmVkIGxvbmcgaWRlbnRpZmllcikKIHsKLSAgICBpZiAoSW5zcGVjdG9yUmVzb3VyY2VBZ2VudCog
cmVzb3VyY2VBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvclJlc291cmNlQWdl
bnQoKSkKKyAgICBpZiAoSW5zcGVjdG9yUmVzb3VyY2VBZ2VudCogcmVzb3VyY2VBZ2VudCA9IGlu
c3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yUmVzb3VyY2VBZ2VudCgpKQogICAgICAgICByZXNv
dXJjZUFnZW50LT5kaWRSZWNlaXZlWEhSUmVzcG9uc2UoaWRlbnRpZmllcik7CiB9CiAKLXZvaWQg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsTG9hZFhIUlN5bmNocm9ub3VzbHlJbXBsKElu
c3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMpCit2b2lkIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6d2lsbExvYWRYSFJTeW5jaHJvbm91c2x5SW1wbChJbnN0cnVtZW50aW5n
QWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzKQogewotICAgIGlmIChJbnNwZWN0b3JSZXNvdXJj
ZUFnZW50KiByZXNvdXJjZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yUmVz
b3VyY2VBZ2VudCgpKQorICAgIGlmIChJbnNwZWN0b3JSZXNvdXJjZUFnZW50KiByZXNvdXJjZUFn
ZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JSZXNvdXJjZUFnZW50KCkpCiAgICAg
ICAgIHJlc291cmNlQWdlbnQtPndpbGxMb2FkWEhSU3luY2hyb25vdXNseSgpOwogfQogCi12b2lk
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkTG9hZFhIUlN5bmNocm9ub3VzbHlJbXBsKElu
c3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMpCit2b2lkIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6ZGlkTG9hZFhIUlN5bmNocm9ub3VzbHlJbXBsKEluc3RydW1lbnRpbmdB
Z2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMpCiB7Ci0gICAgaWYgKEluc3BlY3RvclJlc291cmNl
QWdlbnQqIHJlc291cmNlQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JSZXNv
dXJjZUFnZW50KCkpCisgICAgaWYgKEluc3BlY3RvclJlc291cmNlQWdlbnQqIHJlc291cmNlQWdl
bnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvclJlc291cmNlQWdlbnQoKSkKICAgICAg
ICAgcmVzb3VyY2VBZ2VudC0+ZGlkTG9hZFhIUlN5bmNocm9ub3VzbHkoKTsKIH0KIAotdm9pZCBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNjcmlwdEltcG9ydGVkSW1wbChJbnN0cnVtZW50aW5n
QWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNv
bnN0IFN0cmluZyYgc291cmNlU3RyaW5nKQordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OnNjcmlwdEltcG9ydGVkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdl
bnRzLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNlU3RyaW5n
KQogewotICAgIGlmIChJbnNwZWN0b3JSZXNvdXJjZUFnZW50KiByZXNvdXJjZUFnZW50ID0gaW5z
dHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yUmVzb3VyY2VBZ2VudCgpKQorICAgIGlmIChJbnNw
ZWN0b3JSZXNvdXJjZUFnZW50KiByZXNvdXJjZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5p
bnNwZWN0b3JSZXNvdXJjZUFnZW50KCkpCiAgICAgICAgIHJlc291cmNlQWdlbnQtPnNldEluaXRp
YWxTY3JpcHRDb250ZW50KGlkZW50aWZpZXIsIHNvdXJjZVN0cmluZyk7CiB9CiAKLXZvaWQgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzY3JpcHRFeGVjdXRpb25CbG9ja2VkQnlDU1BJbXBsKElu
c3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIGNvbnN0IFN0cmluZyYgZGly
ZWN0aXZlVGV4dCkKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzY3JpcHRFeGVjdXRp
b25CbG9ja2VkQnlDU1BJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2Vu
dHMsIGNvbnN0IFN0cmluZyYgZGlyZWN0aXZlVGV4dCkKIHsKLSAgICBpZiAoSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudCogZGVidWdnZXJBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3Rv
ckRlYnVnZ2VyQWdlbnQoKSkKKyAgICBpZiAoSW5zcGVjdG9yRGVidWdnZXJBZ2VudCogZGVidWdn
ZXJBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yRGVidWdnZXJBZ2VudCgpKQog
ICAgICAgICBkZWJ1Z2dlckFnZW50LT5zY3JpcHRFeGVjdXRpb25CbG9ja2VkQnlDU1AoZGlyZWN0
aXZlVGV4dCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZl
U2NyaXB0UmVzcG9uc2VJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2Vu
dHMsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcikKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpkaWRSZWNlaXZlU2NyaXB0UmVzcG9uc2VJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGlu
c3RydW1lbnRpbmdBZ2VudHMsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcikKIHsKLSAgICBpZiAo
SW5zcGVjdG9yUmVzb3VyY2VBZ2VudCogcmVzb3VyY2VBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2Vu
dHMtPmluc3BlY3RvclJlc291cmNlQWdlbnQoKSkKKyAgICBpZiAoSW5zcGVjdG9yUmVzb3VyY2VB
Z2VudCogcmVzb3VyY2VBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yUmVzb3Vy
Y2VBZ2VudCgpKQogICAgICAgICByZXNvdXJjZUFnZW50LT5kaWRSZWNlaXZlU2NyaXB0UmVzcG9u
c2UoaWRlbnRpZmllcik7CiB9CiAKLXZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkb21D
b250ZW50TG9hZGVkRXZlbnRGaXJlZEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVu
dGluZ0FnZW50cywgRnJhbWUqIGZyYW1lKQordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmRvbUNvbnRlbnRMb2FkZWRFdmVudEZpcmVkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0
cnVtZW50aW5nQWdlbnRzLCBGcmFtZSYgZnJhbWUpCiB7Ci0gICAgaWYgKEluc3BlY3RvclRpbWVs
aW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JU
aW1lbGluZUFnZW50KCkpCi0gICAgICAgIHRpbWVsaW5lQWdlbnQtPmRpZE1hcmtET01Db250ZW50
RXZlbnQoZnJhbWUpOworICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFn
ZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JUaW1lbGluZUFnZW50KCkpCisgICAg
ICAgIHRpbWVsaW5lQWdlbnQtPmRpZE1hcmtET01Db250ZW50RXZlbnQoJmZyYW1lKTsKIAotICAg
IGlmICgmZnJhbWUtPnBhZ2UoKS0+bWFpbkZyYW1lKCkgIT0gZnJhbWUpCisgICAgaWYgKCFmcmFt
ZS5pc01haW5GcmFtZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoSW5zcGVjdG9yRE9N
QWdlbnQqIGRvbUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yRE9NQWdlbnQo
KSkKKyAgICBpZiAoSW5zcGVjdG9yRE9NQWdlbnQqIGRvbUFnZW50ID0gaW5zdHJ1bWVudGluZ0Fn
ZW50cy5pbnNwZWN0b3JET01BZ2VudCgpKQogICAgICAgICBkb21BZ2VudC0+bWFpbkZyYW1lRE9N
Q29udGVudExvYWRlZCgpOwogCi0gICAgaWYgKEluc3BlY3RvclBhZ2VBZ2VudCogcGFnZUFnZW50
ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yUGFnZUFnZW50KCkpCisgICAgaWYgKElu
c3BlY3RvclBhZ2VBZ2VudCogcGFnZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0
b3JQYWdlQWdlbnQoKSkKICAgICAgICAgcGFnZUFnZW50LT5kb21Db250ZW50RXZlbnRGaXJlZCgp
OwogfQogCi12b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6bG9hZEV2ZW50RmlyZWRJbXBs
KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIEZyYW1lKiBmcmFtZSkK
K3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpsb2FkRXZlbnRGaXJlZEltcGwoSW5zdHJ1
bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgRnJhbWUqIGZyYW1lKQogewotICAg
IGlmIChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gaW5zdHJ1bWVudGlu
Z0FnZW50cy0+aW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpKQorICAgIGlmIChJbnNwZWN0b3JUaW1l
bGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JU
aW1lbGluZUFnZW50KCkpCiAgICAgICAgIHRpbWVsaW5lQWdlbnQtPmRpZE1hcmtMb2FkRXZlbnQo
ZnJhbWUpOwogCi0gICAgaWYgKCZmcmFtZS0+cGFnZSgpLT5tYWluRnJhbWUoKSAhPSBmcmFtZSkK
KyAgICBpZiAoIWZyYW1lLT5pc01haW5GcmFtZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBp
ZiAoSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLT5p
bnNwZWN0b3JQYWdlQWdlbnQoKSkKKyAgICBpZiAoSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdl
bnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvclBhZ2VBZ2VudCgpKQogICAgICAgICBw
YWdlQWdlbnQtPmxvYWRFdmVudEZpcmVkKCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpmcmFtZURldGFjaGVkRnJvbVBhcmVudEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyog
aW5zdHJ1bWVudGluZ0FnZW50cywgRnJhbWUqIGZyYW1lKQordm9pZCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmZyYW1lRGV0YWNoZWRGcm9tUGFyZW50SW1wbChJbnN0cnVtZW50aW5nQWdlbnRz
JiBpbnN0cnVtZW50aW5nQWdlbnRzLCBGcmFtZSYgZnJhbWUpCiB7Ci0gICAgaWYgKEluc3BlY3Rv
clBhZ2VBZ2VudCogcGFnZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yUGFn
ZUFnZW50KCkpCi0gICAgICAgIHBhZ2VBZ2VudC0+ZnJhbWVEZXRhY2hlZChmcmFtZSk7CisgICAg
aWYgKEluc3BlY3RvclBhZ2VBZ2VudCogcGFnZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5p
bnNwZWN0b3JQYWdlQWdlbnQoKSkKKyAgICAgICAgcGFnZUFnZW50LT5mcmFtZURldGFjaGVkKCZm
cmFtZSk7CiAKICNpZiBFTkFCTEUoV0VCX1JFUExBWSkKLSAgICBpZiAoZnJhbWUtPmlzTWFpbkZy
YW1lKCkpIHsKLSAgICAgICAgaWYgKEluc3BlY3RvclJlcGxheUFnZW50KiByZXBsYXlBZ2VudCA9
IGluc3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvclJlcGxheUFnZW50KCkpCi0gICAgICAgICAg
ICByZXBsYXlBZ2VudC0+ZnJhbWVEZXRhY2hlZChmcmFtZSk7CisgICAgaWYgKGZyYW1lLmlzTWFp
bkZyYW1lKCkpIHsKKyAgICAgICAgaWYgKEluc3BlY3RvclJlcGxheUFnZW50KiByZXBsYXlBZ2Vu
dCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yUmVwbGF5QWdlbnQoKSkKKyAgICAgICAg
ICAgIHJlcGxheUFnZW50LT5mcmFtZURldGFjaGVkKCZmcmFtZSk7CiAgICAgfQogI2VuZGlmCiB9
CiAKLXZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDb21taXRMb2FkSW1wbChJbnN0
cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBQYWdlKiBwYWdlLCBEb2N1bWVu
dExvYWRlciogbG9hZGVyKQordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENvbW1p
dExvYWRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIFBhZ2Uq
IHBhZ2UsIERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCiB7Ci0gICAgaWYgKCFpbnN0cnVtZW50aW5n
QWdlbnRzLT5pbnNwZWN0b3JFbnZpcm9ubWVudCgpLmRldmVsb3BlckV4dHJhc0VuYWJsZWQoKSkK
KyAgICBpZiAoIWluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yRW52aXJvbm1lbnQoKS5kZXZl
bG9wZXJFeHRyYXNFbmFibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChsb2FkZXIt
PmZyYW1lKCktPmlzTWFpbkZyYW1lKCkpIHsKLSAgICAgICAgaWYgKFdlYkNvbnNvbGVBZ2VudCog
Y29uc29sZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+d2ViQ29uc29sZUFnZW50KCkpCisg
ICAgICAgIGlmIChXZWJDb25zb2xlQWdlbnQqIGNvbnNvbGVBZ2VudCA9IGluc3RydW1lbnRpbmdB
Z2VudHMud2ViQ29uc29sZUFnZW50KCkpCiAgICAgICAgICAgICBjb25zb2xlQWdlbnQtPnJlc2V0
KCk7CiAKLSAgICAgICAgaWYgKEluc3BlY3RvclJlc291cmNlQWdlbnQqIHJlc291cmNlQWdlbnQg
PSBpbnN0cnVtZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JSZXNvdXJjZUFnZW50KCkpCisgICAgICAg
IGlmIChJbnNwZWN0b3JSZXNvdXJjZUFnZW50KiByZXNvdXJjZUFnZW50ID0gaW5zdHJ1bWVudGlu
Z0FnZW50cy5pbnNwZWN0b3JSZXNvdXJjZUFnZW50KCkpCiAgICAgICAgICAgICByZXNvdXJjZUFn
ZW50LT5tYWluRnJhbWVOYXZpZ2F0ZWQobG9hZGVyKTsKIAotICAgICAgICBpZiAoSW5zcGVjdG9y
Q1NTQWdlbnQqIGNzc0FnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yQ1NTQWdl
bnQoKSkKKyAgICAgICAgaWYgKEluc3BlY3RvckNTU0FnZW50KiBjc3NBZ2VudCA9IGluc3RydW1l
bnRpbmdBZ2VudHMuaW5zcGVjdG9yQ1NTQWdlbnQoKSkKICAgICAgICAgICAgIGNzc0FnZW50LT5y
ZXNldCgpOwogCiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKLSAgICAgICAgaWYgKEluc3BlY3Rv
ckRhdGFiYXNlQWdlbnQqIGRhdGFiYXNlQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLT5pbnNw
ZWN0b3JEYXRhYmFzZUFnZW50KCkpCisgICAgICAgIGlmIChJbnNwZWN0b3JEYXRhYmFzZUFnZW50
KiBkYXRhYmFzZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JEYXRhYmFzZUFn
ZW50KCkpCiAgICAgICAgICAgICBkYXRhYmFzZUFnZW50LT5jbGVhclJlc291cmNlcygpOwogI2Vu
ZGlmCiAKLSAgICAgICAgaWYgKEluc3BlY3RvckRPTUFnZW50KiBkb21BZ2VudCA9IGluc3RydW1l
bnRpbmdBZ2VudHMtPmluc3BlY3RvckRPTUFnZW50KCkpCisgICAgICAgIGlmIChJbnNwZWN0b3JE
T01BZ2VudCogZG9tQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckRPTUFnZW50
KCkpCiAgICAgICAgICAgICBkb21BZ2VudC0+c2V0RG9jdW1lbnQocGFnZS0+bWFpbkZyYW1lKCku
ZG9jdW1lbnQoKSk7CiAKLSAgICAgICAgaWYgKEluc3BlY3RvckxheWVyVHJlZUFnZW50KiBsYXll
clRyZWVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvckxheWVyVHJlZUFnZW50
KCkpCisgICAgICAgIGlmIChJbnNwZWN0b3JMYXllclRyZWVBZ2VudCogbGF5ZXJUcmVlQWdlbnQg
PSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckxheWVyVHJlZUFnZW50KCkpCiAgICAgICAg
ICAgICBsYXllclRyZWVBZ2VudC0+cmVzZXQoKTsKICAgICB9CiAKLSAgICBpZiAoSW5zcGVjdG9y
RE9NQWdlbnQqIGRvbUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yRE9NQWdl
bnQoKSkKKyAgICBpZiAoSW5zcGVjdG9yRE9NQWdlbnQqIGRvbUFnZW50ID0gaW5zdHJ1bWVudGlu
Z0FnZW50cy5pbnNwZWN0b3JET01BZ2VudCgpKQogICAgICAgICBkb21BZ2VudC0+ZGlkQ29tbWl0
TG9hZChsb2FkZXItPmZyYW1lKCktPmRvY3VtZW50KCkpOwogCi0gICAgaWYgKEluc3BlY3RvclBh
Z2VBZ2VudCogcGFnZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yUGFnZUFn
ZW50KCkpCisgICAgaWYgKEluc3BlY3RvclBhZ2VBZ2VudCogcGFnZUFnZW50ID0gaW5zdHJ1bWVu
dGluZ0FnZW50cy5pbnNwZWN0b3JQYWdlQWdlbnQoKSkKICAgICAgICAgcGFnZUFnZW50LT5mcmFt
ZU5hdmlnYXRlZChsb2FkZXIpOwogCiAjaWYgRU5BQkxFKFdFQl9SRVBMQVkpCi0gICAgaWYgKElu
c3BlY3RvclJlcGxheUFnZW50KiByZXBsYXlBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMtPmlu
c3BlY3RvclJlcGxheUFnZW50KCkpCisgICAgaWYgKEluc3BlY3RvclJlcGxheUFnZW50KiByZXBs
YXlBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yUmVwbGF5QWdlbnQoKSkKICAg
ICAgICAgcmVwbGF5QWdlbnQtPmZyYW1lTmF2aWdhdGVkKGxvYWRlcik7CiAjZW5kaWYKIH0KIAot
dm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmZyYW1lRG9jdW1lbnRVcGRhdGVkSW1wbChJ
bnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBGcmFtZSogZnJhbWUpCit2
b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZnJhbWVEb2N1bWVudFVwZGF0ZWRJbXBsKElu
c3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIEZyYW1lKiBmcmFtZSkKIHsK
LSAgICBpZiAoIWluc3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvckVudmlyb25tZW50KCkuZGV2
ZWxvcGVyRXh0cmFzRW5hYmxlZCgpKQorICAgIGlmICghaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNw
ZWN0b3JFbnZpcm9ubWVudCgpLmRldmVsb3BlckV4dHJhc0VuYWJsZWQoKSkKICAgICAgICAgcmV0
dXJuOwotICAgIGlmIChJbnNwZWN0b3JET01BZ2VudCogZG9tQWdlbnQgPSBpbnN0cnVtZW50aW5n
QWdlbnRzLT5pbnNwZWN0b3JET01BZ2VudCgpKQorICAgIGlmIChJbnNwZWN0b3JET01BZ2VudCog
ZG9tQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckRPTUFnZW50KCkpCiAgICAg
ICAgIGRvbUFnZW50LT5mcmFtZURvY3VtZW50VXBkYXRlZChmcmFtZSk7CiB9CiAKLXZvaWQgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpsb2FkZXJEZXRhY2hlZEZyb21GcmFtZUltcGwoSW5zdHJ1
bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgRG9jdW1lbnRMb2FkZXIqIGxvYWRl
cikKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpsb2FkZXJEZXRhY2hlZEZyb21GcmFt
ZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgRG9jdW1lbnRM
b2FkZXImIGxvYWRlcikKIHsKLSAgICBpZiAoSW5zcGVjdG9yUGFnZUFnZW50KiBpbnNwZWN0b3JQ
YWdlQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JQYWdlQWdlbnQoKSkKLSAg
ICAgICAgaW5zcGVjdG9yUGFnZUFnZW50LT5sb2FkZXJEZXRhY2hlZEZyb21GcmFtZShsb2FkZXIp
OworICAgIGlmIChJbnNwZWN0b3JQYWdlQWdlbnQqIGluc3BlY3RvclBhZ2VBZ2VudCA9IGluc3Ry
dW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yUGFnZUFnZW50KCkpCisgICAgICAgIGluc3BlY3RvclBh
Z2VBZ2VudC0+bG9hZGVyRGV0YWNoZWRGcm9tRnJhbWUoJmxvYWRlcik7CiB9CiAKIHZvaWQgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpmcmFtZVN0YXJ0ZWRMb2FkaW5nSW1wbChJbnN0cnVtZW50
aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBGcmFtZSYgZnJhbWUpCkBAIC04MzMsOSAr
ODQwLDkgQEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmZyYW1lQ2xlYXJlZFNjaGVk
dWxlZE5hdmlnYXRpb25JbXBsKEluc3RydW1lbnRpbmcKICAgICAgICAgaW5zcGVjdG9yUGFnZUFn
ZW50LT5mcmFtZUNsZWFyZWRTY2hlZHVsZWROYXZpZ2F0aW9uKGZyYW1lKTsKIH0KIAotSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFJ1
bkphdmFTY3JpcHREaWFsb2dJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdB
Z2VudHMsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK0luc3BlY3Rvckluc3RydW1lbnRhdGlvbkNv
b2tpZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxSdW5KYXZhU2NyaXB0RGlhbG9nSW1w
bChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBjb25zdCBTdHJpbmcm
IG1lc3NhZ2UpCiB7Ci0gICAgaWYgKEluc3BlY3RvclBhZ2VBZ2VudCogaW5zcGVjdG9yUGFnZUFn
ZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yUGFnZUFnZW50KCkpCisgICAgaWYg
KEluc3BlY3RvclBhZ2VBZ2VudCogaW5zcGVjdG9yUGFnZUFnZW50ID0gaW5zdHJ1bWVudGluZ0Fn
ZW50cy5pbnNwZWN0b3JQYWdlQWdlbnQoKSkKICAgICAgICAgaW5zcGVjdG9yUGFnZUFnZW50LT53
aWxsUnVuSmF2YVNjcmlwdERpYWxvZyhtZXNzYWdlKTsKICAgICByZXR1cm4gSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uQ29va2llKGluc3RydW1lbnRpbmdBZ2VudHMsIDApOwogfQpAQCAtODQ2LDIy
ICs4NTMsMjEgQEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJ1bkphdmFTY3Jp
cHREaWFsb2dJbXBsKGNvbnN0IEluc3BlY3Rvckluc3RydW0KICAgICAgICAgaW5zcGVjdG9yUGFn
ZUFnZW50LT5kaWRSdW5KYXZhU2NyaXB0RGlhbG9nKCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjp3aWxsRGVzdHJveUNhY2hlZFJlc291cmNlSW1wbChDYWNoZWRSZXNvdXJj
ZSogY2FjaGVkUmVzb3VyY2UpCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbERl
c3Ryb3lDYWNoZWRSZXNvdXJjZUltcGwoQ2FjaGVkUmVzb3VyY2UmIGNhY2hlZFJlc291cmNlKQog
ewotICAgIGlmICghaW5zdHJ1bWVudGluZ0FnZW50c1NldCkKKyAgICBpZiAoIXNfaW5zdHJ1bWVu
dGluZ0FnZW50c1NldCkKICAgICAgICAgcmV0dXJuOwotICAgIEhhc2hTZXQ8SW5zdHJ1bWVudGlu
Z0FnZW50cyo+OjppdGVyYXRvciBlbmQgPSBpbnN0cnVtZW50aW5nQWdlbnRzU2V0LT5lbmQoKTsK
LSAgICBmb3IgKEhhc2hTZXQ8SW5zdHJ1bWVudGluZ0FnZW50cyo+OjppdGVyYXRvciBpdCA9IGlu
c3RydW1lbnRpbmdBZ2VudHNTZXQtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAg
ICBJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gKml0OwotICAgICAg
ICBpZiAoSW5zcGVjdG9yUmVzb3VyY2VBZ2VudCogaW5zcGVjdG9yUmVzb3VyY2VBZ2VudCA9IGlu
c3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvclJlc291cmNlQWdlbnQoKSkKLSAgICAgICAgICAg
IGluc3BlY3RvclJlc291cmNlQWdlbnQtPndpbGxEZXN0cm95Q2FjaGVkUmVzb3VyY2UoY2FjaGVk
UmVzb3VyY2UpOworCisgICAgZm9yIChhdXRvKiBpbnN0cnVtZW50aW5nQWdlbnQgOiAqc19pbnN0
cnVtZW50aW5nQWdlbnRzU2V0KSB7CisgICAgICAgIGlmIChJbnNwZWN0b3JSZXNvdXJjZUFnZW50
KiBpbnNwZWN0b3JSZXNvdXJjZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50LT5pbnNwZWN0b3JS
ZXNvdXJjZUFnZW50KCkpCisgICAgICAgICAgICBpbnNwZWN0b3JSZXNvdXJjZUFnZW50LT53aWxs
RGVzdHJveUNhY2hlZFJlc291cmNlKCZjYWNoZWRSZXNvdXJjZSk7CiAgICAgfQogfQogCi1JbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxs
V3JpdGVIVE1MSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCB1
bnNpZ25lZCBzdGFydExpbmUsIEZyYW1lKiBmcmFtZSkKK0luc3BlY3Rvckluc3RydW1lbnRhdGlv
bkNvb2tpZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxXcml0ZUhUTUxJbXBsKEluc3Ry
dW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIHVuc2lnbmVkIHN0YXJ0TGluZSwg
RnJhbWUqIGZyYW1lKQogewogICAgIGludCB0aW1lbGluZUFnZW50SWQgPSAwOwotICAgIGlmIChJ
bnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50
cy0+aW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpKSB7CisgICAgaWYgKEluc3BlY3RvclRpbWVsaW5l
QWdlbnQqIHRpbWVsaW5lQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvclRpbWVs
aW5lQWdlbnQoKSkgewogICAgICAgICB0aW1lbGluZUFnZW50LT53aWxsV3JpdGVIVE1MKHN0YXJ0
TGluZSwgZnJhbWUpOwogICAgICAgICB0aW1lbGluZUFnZW50SWQgPSB0aW1lbGluZUFnZW50LT5p
ZCgpOwogICAgIH0KQEAgLTg4MSwxMDkgKzg4NywxMDkgQEAgc3RhdGljIGJvb2wgaXNDb25zb2xl
QXNzZXJ0TWVzc2FnZShNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZVR5cGUgdHlwZSkKIH0K
IAogLy8gRklYTUU6IERyb3AgdGhpcyBvbmNlIHdlIG5vIGxvbmdlciBnZW5lcmF0ZSBzdGFja3Mg
b3V0c2lkZSBvZiBJbnNwZWN0b3IuCi12b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6YWRk
TWVzc2FnZVRvQ29uc29sZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0Fn
ZW50cywgTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VUeXBlIHR5cGUsIE1lc3NhZ2VMZXZl
bCBsZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBQYXNzUmVmUHRyPFNjcmlwdENhbGxTdGFj
az4gY2FsbFN0YWNrLCB1bnNpZ25lZCBsb25nIHJlcXVlc3RJZGVudGlmaWVyKQordm9pZCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmFkZE1lc3NhZ2VUb0NvbnNvbGVJbXBsKEluc3RydW1lbnRp
bmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNz
YWdlVHlwZSB0eXBlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwg
UGFzc1JlZlB0cjxTY3JpcHRDYWxsU3RhY2s+IGNhbGxTdGFjaywgdW5zaWduZWQgbG9uZyByZXF1
ZXN0SWRlbnRpZmllcikKIHsKLSAgICBpZiAoV2ViQ29uc29sZUFnZW50KiBjb25zb2xlQWdlbnQg
PSBpbnN0cnVtZW50aW5nQWdlbnRzLT53ZWJDb25zb2xlQWdlbnQoKSkKKyAgICBpZiAoV2ViQ29u
c29sZUFnZW50KiBjb25zb2xlQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLndlYkNvbnNvbGVB
Z2VudCgpKQogICAgICAgICBjb25zb2xlQWdlbnQtPmFkZE1lc3NhZ2VUb0NvbnNvbGUoc291cmNl
LCB0eXBlLCBsZXZlbCwgbWVzc2FnZSwgY2FsbFN0YWNrLCByZXF1ZXN0SWRlbnRpZmllcik7CiAg
ICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGp1c3QgcGFzcyB0aGUgbWVzc2FnZSBvbiB0byB0aGUg
ZGVidWdnZXIgYWdlbnQuIEphdmFTY3JpcHRDb3JlIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQgc2hv
dWxkIGtub3cgQ29uc29sZSBNZXNzYWdlVHlwZXMuCi0gICAgaWYgKEluc3BlY3RvckRlYnVnZ2Vy
QWdlbnQqIGRlYnVnZ2VyQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JEZWJ1
Z2dlckFnZW50KCkpIHsKKyAgICBpZiAoSW5zcGVjdG9yRGVidWdnZXJBZ2VudCogZGVidWdnZXJB
Z2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yRGVidWdnZXJBZ2VudCgpKSB7CiAg
ICAgICAgIGlmIChpc0NvbnNvbGVBc3NlcnRNZXNzYWdlKHNvdXJjZSwgdHlwZSkpCiAgICAgICAg
ICAgICBkZWJ1Z2dlckFnZW50LT5oYW5kbGVDb25zb2xlQXNzZXJ0KG1lc3NhZ2UpOwogICAgIH0K
IH0KIAotdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmFkZE1lc3NhZ2VUb0NvbnNvbGVJ
bXBsKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIE1lc3NhZ2VTb3Vy
Y2Ugc291cmNlLCBNZXNzYWdlVHlwZSB0eXBlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0
cmluZyYgbWVzc2FnZSwgSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBQYXNzUmVmUHRyPFNjcmlwdEFy
Z3VtZW50cz4gYXJndW1lbnRzLCB1bnNpZ25lZCBsb25nIHJlcXVlc3RJZGVudGlmaWVyKQordm9p
ZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmFkZE1lc3NhZ2VUb0NvbnNvbGVJbXBsKEluc3Ry
dW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIE1lc3NhZ2VTb3VyY2Ugc291cmNl
LCBNZXNzYWdlVHlwZSB0eXBlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVz
c2FnZSwgSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBQYXNzUmVmUHRyPFNjcmlwdEFyZ3VtZW50cz4g
YXJndW1lbnRzLCB1bnNpZ25lZCBsb25nIHJlcXVlc3RJZGVudGlmaWVyKQogewotICAgIGlmIChX
ZWJDb25zb2xlQWdlbnQqIGNvbnNvbGVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMtPndlYkNv
bnNvbGVBZ2VudCgpKQorICAgIGlmIChXZWJDb25zb2xlQWdlbnQqIGNvbnNvbGVBZ2VudCA9IGlu
c3RydW1lbnRpbmdBZ2VudHMud2ViQ29uc29sZUFnZW50KCkpCiAgICAgICAgIGNvbnNvbGVBZ2Vu
dC0+YWRkTWVzc2FnZVRvQ29uc29sZShzb3VyY2UsIHR5cGUsIGxldmVsLCBtZXNzYWdlLCBzdGF0
ZSwgYXJndW1lbnRzLCByZXF1ZXN0SWRlbnRpZmllcik7CiAgICAgLy8gRklYTUU6IFRoaXMgc2hv
dWxkIGp1c3QgcGFzcyB0aGUgbWVzc2FnZSBvbiB0byB0aGUgZGVidWdnZXIgYWdlbnQuIEphdmFT
Y3JpcHRDb3JlIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQgc2hvdWxkIGtub3cgQ29uc29sZSBNZXNz
YWdlVHlwZXMuCi0gICAgaWYgKEluc3BlY3RvckRlYnVnZ2VyQWdlbnQqIGRlYnVnZ2VyQWdlbnQg
PSBpbnN0cnVtZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JEZWJ1Z2dlckFnZW50KCkpIHsKKyAgICBp
ZiAoSW5zcGVjdG9yRGVidWdnZXJBZ2VudCogZGVidWdnZXJBZ2VudCA9IGluc3RydW1lbnRpbmdB
Z2VudHMuaW5zcGVjdG9yRGVidWdnZXJBZ2VudCgpKSB7CiAgICAgICAgIGlmIChpc0NvbnNvbGVB
c3NlcnRNZXNzYWdlKHNvdXJjZSwgdHlwZSkpCiAgICAgICAgICAgICBkZWJ1Z2dlckFnZW50LT5o
YW5kbGVDb25zb2xlQXNzZXJ0KG1lc3NhZ2UpOwogICAgIH0KIH0KIAotdm9pZCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmFkZE1lc3NhZ2VUb0NvbnNvbGVJbXBsKEluc3RydW1lbnRpbmdBZ2Vu
dHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlVHlw
ZSB0eXBlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3Qg
U3RyaW5nJiBzY3JpcHRJRCwgdW5zaWduZWQgbGluZU51bWJlciwgdW5zaWduZWQgY29sdW1uTnVt
YmVyLCBKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHVuc2lnbmVkIGxvbmcgcmVxdWVzdElkZW50aWZp
ZXIpCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6YWRkTWVzc2FnZVRvQ29uc29sZUlt
cGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgTWVzc2FnZVNvdXJj
ZSBzb3VyY2UsIE1lc3NhZ2VUeXBlIHR5cGUsIE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29uc3QgU3Ry
aW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNjcmlwdElELCB1bnNpZ25lZCBsaW5lTnVtYmVy
LCB1bnNpZ25lZCBjb2x1bW5OdW1iZXIsIEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdW5zaWduZWQg
bG9uZyByZXF1ZXN0SWRlbnRpZmllcikKIHsKLSAgICBpZiAoV2ViQ29uc29sZUFnZW50KiBjb25z
b2xlQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLT53ZWJDb25zb2xlQWdlbnQoKSkKKyAgICBp
ZiAoV2ViQ29uc29sZUFnZW50KiBjb25zb2xlQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLndl
YkNvbnNvbGVBZ2VudCgpKQogICAgICAgICBjb25zb2xlQWdlbnQtPmFkZE1lc3NhZ2VUb0NvbnNv
bGUoc291cmNlLCB0eXBlLCBsZXZlbCwgbWVzc2FnZSwgc2NyaXB0SUQsIGxpbmVOdW1iZXIsIGNv
bHVtbk51bWJlciwgc3RhdGUsIHJlcXVlc3RJZGVudGlmaWVyKTsKICAgICAvLyBGSVhNRTogVGhp
cyBzaG91bGQganVzdCBwYXNzIHRoZSBtZXNzYWdlIG9uIHRvIHRoZSBkZWJ1Z2dlciBhZ2VudC4g
SmF2YVNjcmlwdENvcmUgSW5zcGVjdG9yRGVidWdnZXJBZ2VudCBzaG91bGQga25vdyBDb25zb2xl
IE1lc3NhZ2VUeXBlcy4KLSAgICBpZiAoSW5zcGVjdG9yRGVidWdnZXJBZ2VudCogZGVidWdnZXJB
Z2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvckRlYnVnZ2VyQWdlbnQoKSkgewor
ICAgIGlmIChJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KiBkZWJ1Z2dlckFnZW50ID0gaW5zdHJ1bWVu
dGluZ0FnZW50cy5pbnNwZWN0b3JEZWJ1Z2dlckFnZW50KCkpIHsKICAgICAgICAgaWYgKGlzQ29u
c29sZUFzc2VydE1lc3NhZ2Uoc291cmNlLCB0eXBlKSkKICAgICAgICAgICAgIGRlYnVnZ2VyQWdl
bnQtPmhhbmRsZUNvbnNvbGVBc3NlcnQobWVzc2FnZSk7CiAgICAgfQogfQogCi12b2lkIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6Y29uc29sZUNvdW50SW1wbChJbnN0cnVtZW50aW5nQWdlbnRz
KiBpbnN0cnVtZW50aW5nQWdlbnRzLCBKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIFBhc3NSZWZQdHI8
U2NyaXB0QXJndW1lbnRzPiBhcmd1bWVudHMpCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6Y29uc29sZUNvdW50SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdl
bnRzLCBKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIFBhc3NSZWZQdHI8U2NyaXB0QXJndW1lbnRzPiBh
cmd1bWVudHMpCiB7Ci0gICAgaWYgKFdlYkNvbnNvbGVBZ2VudCogY29uc29sZUFnZW50ID0gaW5z
dHJ1bWVudGluZ0FnZW50cy0+d2ViQ29uc29sZUFnZW50KCkpCisgICAgaWYgKFdlYkNvbnNvbGVB
Z2VudCogY29uc29sZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy53ZWJDb25zb2xlQWdlbnQo
KSkKICAgICAgICAgY29uc29sZUFnZW50LT5jb3VudChzdGF0ZSwgYXJndW1lbnRzKTsKIH0KIAot
dm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnN0YXJ0Q29uc29sZVRpbWluZ0ltcGwoSW5z
dHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgRnJhbWUqIGZyYW1lLCBjb25z
dCBTdHJpbmcmIHRpdGxlKQordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnN0YXJ0Q29u
c29sZVRpbWluZ0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywg
RnJhbWUmIGZyYW1lLCBjb25zdCBTdHJpbmcmIHRpdGxlKQogewotICAgIGlmIChJbnNwZWN0b3JU
aW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVj
dG9yVGltZWxpbmVBZ2VudCgpKQotICAgICAgICB0aW1lbGluZUFnZW50LT50aW1lKGZyYW1lLCB0
aXRsZSk7Ci0gICAgaWYgKFdlYkNvbnNvbGVBZ2VudCogY29uc29sZUFnZW50ID0gaW5zdHJ1bWVu
dGluZ0FnZW50cy0+d2ViQ29uc29sZUFnZW50KCkpCisgICAgaWYgKEluc3BlY3RvclRpbWVsaW5l
QWdlbnQqIHRpbWVsaW5lQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvclRpbWVs
aW5lQWdlbnQoKSkKKyAgICAgICAgdGltZWxpbmVBZ2VudC0+dGltZSgmZnJhbWUsIHRpdGxlKTsK
KyAgICBpZiAoV2ViQ29uc29sZUFnZW50KiBjb25zb2xlQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdl
bnRzLndlYkNvbnNvbGVBZ2VudCgpKQogICAgICAgICBjb25zb2xlQWdlbnQtPnN0YXJ0VGltaW5n
KHRpdGxlKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnN0b3BDb25zb2xl
VGltaW5nSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBGcmFt
ZSogZnJhbWUsIGNvbnN0IFN0cmluZyYgdGl0bGUsIFBhc3NSZWZQdHI8U2NyaXB0Q2FsbFN0YWNr
PiBzdGFjaykKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzdG9wQ29uc29sZVRpbWlu
Z0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgRnJhbWUmIGZy
YW1lLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBQYXNzUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4gc3Rh
Y2spCiB7Ci0gICAgaWYgKFdlYkNvbnNvbGVBZ2VudCogY29uc29sZUFnZW50ID0gaW5zdHJ1bWVu
dGluZ0FnZW50cy0+d2ViQ29uc29sZUFnZW50KCkpCisgICAgaWYgKFdlYkNvbnNvbGVBZ2VudCog
Y29uc29sZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy53ZWJDb25zb2xlQWdlbnQoKSkKICAg
ICAgICAgY29uc29sZUFnZW50LT5zdG9wVGltaW5nKHRpdGxlLCBzdGFjayk7Ci0gICAgaWYgKElu
c3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRz
LT5pbnNwZWN0b3JUaW1lbGluZUFnZW50KCkpCi0gICAgICAgIHRpbWVsaW5lQWdlbnQtPnRpbWVF
bmQoZnJhbWUsIHRpdGxlKTsKKyAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxp
bmVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpKQor
ICAgICAgICB0aW1lbGluZUFnZW50LT50aW1lRW5kKCZmcmFtZSwgdGl0bGUpOwogfQogCi12b2lk
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Y29uc29sZVRpbWVTdGFtcEltcGwoSW5zdHJ1bWVu
dGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgRnJhbWUqIGZyYW1lLCBQYXNzUmVmUHRy
PFNjcmlwdEFyZ3VtZW50cz4gYXJndW1lbnRzKQordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmNvbnNvbGVUaW1lU3RhbXBJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRp
bmdBZ2VudHMsIEZyYW1lJiBmcmFtZSwgUGFzc1JlZlB0cjxTY3JpcHRBcmd1bWVudHM+IGFyZ3Vt
ZW50cykKIHsKLSAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9
IGluc3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvclRpbWVsaW5lQWdlbnQoKSkgeworICAgIGlm
IChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gaW5zdHJ1bWVudGluZ0Fn
ZW50cy5pbnNwZWN0b3JUaW1lbGluZUFnZW50KCkpIHsKICAgICAgICAgU3RyaW5nIG1lc3NhZ2U7
CiAgICAgICAgIGFyZ3VtZW50cy0+Z2V0Rmlyc3RBcmd1bWVudEFzU3RyaW5nKG1lc3NhZ2UpOwot
ICAgICAgICB0aW1lbGluZUFnZW50LT5kaWRUaW1lU3RhbXAoZnJhbWUsIG1lc3NhZ2UpOworICAg
ICAgICB0aW1lbGluZUFnZW50LT5kaWRUaW1lU3RhbXAoJmZyYW1lLCBtZXNzYWdlKTsKICAgICAg
fQogfQogCi12b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c3RhcnRQcm9maWxpbmdJbXBs
KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIEpTQzo6RXhlY1N0YXRl
KiBleGVjLCBjb25zdCBTdHJpbmcmIHRpdGxlKQordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OnN0YXJ0UHJvZmlsaW5nSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5n
QWdlbnRzLCBKU0M6OkV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiB0aXRsZSkKIHsKLSAg
ICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IGluc3RydW1lbnRp
bmdBZ2VudHMtPnBlcnNpc3RlbnRJbnNwZWN0b3JUaW1lbGluZUFnZW50KCkpCisgICAgaWYgKElu
c3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRz
LnBlcnNpc3RlbnRJbnNwZWN0b3JUaW1lbGluZUFnZW50KCkpCiAgICAgICAgIHRpbWVsaW5lQWdl
bnQtPnN0YXJ0RnJvbUNvbnNvbGUoZXhlYywgdGl0bGUpOwogfQogCi1QYXNzUmVmUHRyPEpTQzo6
UHJvZmlsZT4gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzdG9wUHJvZmlsaW5nSW1wbChJbnN0
cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBKU0M6OkV4ZWNTdGF0ZSogZXhl
YywgY29uc3QgU3RyaW5nJiB0aXRsZSkKK1Bhc3NSZWZQdHI8SlNDOjpQcm9maWxlPiBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OnN0b3BQcm9maWxpbmdJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMm
IGluc3RydW1lbnRpbmdBZ2VudHMsIEpTQzo6RXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcm
IHRpdGxlKQogewotICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50
ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+cGVyc2lzdGVudEluc3BlY3RvclRpbWVsaW5lQWdlbnQo
KSkKKyAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IGluc3Ry
dW1lbnRpbmdBZ2VudHMucGVyc2lzdGVudEluc3BlY3RvclRpbWVsaW5lQWdlbnQoKSkKICAgICAg
ICAgcmV0dXJuIHRpbWVsaW5lQWdlbnQtPnN0b3BGcm9tQ29uc29sZShleGVjLCB0aXRsZSk7CiAg
ICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQotdm9pZCBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZE9wZW5EYXRhYmFzZUltcGwoSW5zdHJ1bWVudGlu
Z0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgUGFzc1JlZlB0cjxEYXRhYmFzZT4gZGF0YWJh
c2UsIGNvbnN0IFN0cmluZyYgZG9tYWluLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmlu
ZyYgdmVyc2lvbikKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRPcGVuRGF0YWJh
c2VJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIFBhc3NSZWZQ
dHI8RGF0YWJhc2U+IGRhdGFiYXNlLCBjb25zdCBTdHJpbmcmIGRvbWFpbiwgY29uc3QgU3RyaW5n
JiBuYW1lLCBjb25zdCBTdHJpbmcmIHZlcnNpb24pCiB7Ci0gICAgaWYgKCFpbnN0cnVtZW50aW5n
QWdlbnRzLT5pbnNwZWN0b3JFbnZpcm9ubWVudCgpLmRldmVsb3BlckV4dHJhc0VuYWJsZWQoKSkK
KyAgICBpZiAoIWluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yRW52aXJvbm1lbnQoKS5kZXZl
bG9wZXJFeHRyYXNFbmFibGVkKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBpZiAoSW5zcGVjdG9y
RGF0YWJhc2VBZ2VudCogZGJBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvckRh
dGFiYXNlQWdlbnQoKSkKKyAgICBpZiAoSW5zcGVjdG9yRGF0YWJhc2VBZ2VudCogZGJBZ2VudCA9
IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yRGF0YWJhc2VBZ2VudCgpKQogICAgICAgICBk
YkFnZW50LT5kaWRPcGVuRGF0YWJhc2UoZGF0YWJhc2UsIGRvbWFpbiwgbmFtZSwgdmVyc2lvbik7
CiB9CiAjZW5kaWYKIAotdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZERpc3BhdGNo
RE9NU3RvcmFnZUV2ZW50SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdl
bnRzLCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgU3Ry
aW5nJiBuZXdWYWx1ZSwgU3RvcmFnZVR5cGUgc3RvcmFnZVR5cGUsIFNlY3VyaXR5T3JpZ2luKiBz
ZWN1cml0eU9yaWdpbiwgUGFnZSogcGFnZSkKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpkaWREaXNwYXRjaERPTVN0b3JhZ2VFdmVudEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5z
dHJ1bWVudGluZ0FnZW50cywgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgb2xkVmFs
dWUsIGNvbnN0IFN0cmluZyYgbmV3VmFsdWUsIFN0b3JhZ2VUeXBlIHN0b3JhZ2VUeXBlLCBTZWN1
cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4sIFBhZ2UqIHBhZ2UpCiB7Ci0gICAgaWYgKEluc3Bl
Y3RvckRPTVN0b3JhZ2VBZ2VudCogZG9tU3RvcmFnZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50
cy0+aW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50KCkpCisgICAgaWYgKEluc3BlY3RvckRPTVN0b3Jh
Z2VBZ2VudCogZG9tU3RvcmFnZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JE
T01TdG9yYWdlQWdlbnQoKSkKICAgICAgICAgZG9tU3RvcmFnZUFnZW50LT5kaWREaXNwYXRjaERP
TVN0b3JhZ2VFdmVudChrZXksIG9sZFZhbHVlLCBuZXdWYWx1ZSwgc3RvcmFnZVR5cGUsIHNlY3Vy
aXR5T3JpZ2luLCBwYWdlKTsKIH0KIAotYm9vbCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNo
b3VsZFBhdXNlRGVkaWNhdGVkV29ya2VyT25TdGFydEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyog
aW5zdHJ1bWVudGluZ0FnZW50cykKK2Jvb2wgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzaG91
bGRQYXVzZURlZGljYXRlZFdvcmtlck9uU3RhcnRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGlu
c3RydW1lbnRpbmdBZ2VudHMpCiB7Ci0gICAgaWYgKEluc3BlY3RvcldvcmtlckFnZW50KiB3b3Jr
ZXJBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvcldvcmtlckFnZW50KCkpCisg
ICAgaWYgKEluc3BlY3RvcldvcmtlckFnZW50KiB3b3JrZXJBZ2VudCA9IGluc3RydW1lbnRpbmdB
Z2VudHMuaW5zcGVjdG9yV29ya2VyQWdlbnQoKSkKICAgICAgICAgcmV0dXJuIHdvcmtlckFnZW50
LT5zaG91bGRQYXVzZURlZGljYXRlZFdvcmtlck9uU3RhcnQoKTsKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKLXZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRTdGFydFdvcmtlckdsb2Jh
bFNjb3BlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBXb3Jr
ZXJHbG9iYWxTY29wZVByb3h5KiB3b3JrZXJHbG9iYWxTY29wZVByb3h5LCBjb25zdCBVUkwmIHVy
bCkKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRTdGFydFdvcmtlckdsb2JhbFNj
b3BlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBXb3JrZXJH
bG9iYWxTY29wZVByb3h5KiB3b3JrZXJHbG9iYWxTY29wZVByb3h5LCBjb25zdCBVUkwmIHVybCkK
IHsKLSAgICBpZiAoSW5zcGVjdG9yV29ya2VyQWdlbnQqIHdvcmtlckFnZW50ID0gaW5zdHJ1bWVu
dGluZ0FnZW50cy0+aW5zcGVjdG9yV29ya2VyQWdlbnQoKSkKKyAgICBpZiAoSW5zcGVjdG9yV29y
a2VyQWdlbnQqIHdvcmtlckFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JXb3Jr
ZXJBZ2VudCgpKQogICAgICAgICB3b3JrZXJBZ2VudC0+ZGlkU3RhcnRXb3JrZXJHbG9iYWxTY29w
ZSh3b3JrZXJHbG9iYWxTY29wZVByb3h5LCB1cmwpOwogfQogCkBAIC05OTEsMTYwICs5OTcsMTYy
IEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRXZhbHVhdGVXb3JrZXJTY3Jp
cHQoV29ya2VyR2xvYmFsU2NvcGUqIHdvcmtlCiB7CiAgICAgaWYgKHdvcmtlclRocmVhZFN0YXJ0
TW9kZSAhPSBQYXVzZVdvcmtlckdsb2JhbFNjb3BlT25TdGFydCkKICAgICAgICAgcmV0dXJuOwot
ICAgIEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50
YXRpb25Gb3JXb3JrZXJHbG9iYWxTY29wZSh3b3JrZXJHbG9iYWxTY29wZSk7CisKKyAgICBJbnN0
cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50
c0Zvcldvcmtlckdsb2JhbFNjb3BlKHdvcmtlckdsb2JhbFNjb3BlKTsKICAgICBpZiAoIWluc3Ry
dW1lbnRpbmdBZ2VudHMpCiAgICAgICAgIHJldHVybjsKKwogICAgIGlmIChXb3JrZXJSdW50aW1l
QWdlbnQqIHJ1bnRpbWVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMtPndvcmtlclJ1bnRpbWVB
Z2VudCgpKQogICAgICAgICBydW50aW1lQWdlbnQtPnBhdXNlV29ya2VyR2xvYmFsU2NvcGUod29y
a2VyR2xvYmFsU2NvcGUpOwogfQogCi12b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d29y
a2VyR2xvYmFsU2NvcGVUZXJtaW5hdGVkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVt
ZW50aW5nQWdlbnRzLCBXb3JrZXJHbG9iYWxTY29wZVByb3h5KiBwcm94eSkKK3ZvaWQgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjp3b3JrZXJHbG9iYWxTY29wZVRlcm1pbmF0ZWRJbXBsKEluc3Ry
dW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIFdvcmtlckdsb2JhbFNjb3BlUHJv
eHkqIHByb3h5KQogewotICAgIGlmIChJbnNwZWN0b3JXb3JrZXJBZ2VudCogd29ya2VyQWdlbnQg
PSBpbnN0cnVtZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JXb3JrZXJBZ2VudCgpKQorICAgIGlmIChJ
bnNwZWN0b3JXb3JrZXJBZ2VudCogd29ya2VyQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmlu
c3BlY3RvcldvcmtlckFnZW50KCkpCiAgICAgICAgIHdvcmtlckFnZW50LT53b3JrZXJHbG9iYWxT
Y29wZVRlcm1pbmF0ZWQocHJveHkpOwogfQogCiAjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQotdm9p
ZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENyZWF0ZVdlYlNvY2tldEltcGwoSW5zdHJ1
bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgdW5zaWduZWQgbG9uZyBpZGVudGlm
aWVyLCBjb25zdCBVUkwmIHJlcXVlc3RVUkwsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgcHJv
dG9jb2wsIERvY3VtZW50KiBkb2N1bWVudCkKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpkaWRDcmVhdGVXZWJTb2NrZXRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRp
bmdBZ2VudHMsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgVVJMJiByZXF1ZXN0VVJM
LCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHByb3RvY29sLCBEb2N1bWVudCogZG9jdW1lbnQp
CiB7Ci0gICAgaWYgKCFpbnN0cnVtZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JFbnZpcm9ubWVudCgp
LmRldmVsb3BlckV4dHJhc0VuYWJsZWQoKSkKKyAgICBpZiAoIWluc3RydW1lbnRpbmdBZ2VudHMu
aW5zcGVjdG9yRW52aXJvbm1lbnQoKS5kZXZlbG9wZXJFeHRyYXNFbmFibGVkKCkpCiAgICAgICAg
IHJldHVybjsKLSAgICBpZiAoSW5zcGVjdG9yUmVzb3VyY2VBZ2VudCogcmVzb3VyY2VBZ2VudCA9
IGluc3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvclJlc291cmNlQWdlbnQoKSkKKyAgICBpZiAo
SW5zcGVjdG9yUmVzb3VyY2VBZ2VudCogcmVzb3VyY2VBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2Vu
dHMuaW5zcGVjdG9yUmVzb3VyY2VBZ2VudCgpKQogICAgICAgICByZXNvdXJjZUFnZW50LT5kaWRD
cmVhdGVXZWJTb2NrZXQoaWRlbnRpZmllciwgcmVxdWVzdFVSTCk7Ci0gICAgaWYgKEluc3BlY3Rv
clRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLT5pbnNw
ZWN0b3JUaW1lbGluZUFnZW50KCkpCisgICAgaWYgKEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRp
bWVsaW5lQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvclRpbWVsaW5lQWdlbnQo
KSkKICAgICAgICAgdGltZWxpbmVBZ2VudC0+ZGlkQ3JlYXRlV2ViU29ja2V0KGlkZW50aWZpZXIs
IHJlcXVlc3RVUkwsIHByb3RvY29sLCBkb2N1bWVudC0+ZnJhbWUoKSk7CiB9CiAKLXZvaWQgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsU2VuZFdlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3RJ
bXBsKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIHVuc2lnbmVkIGxv
bmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBEb2N1bWVudCog
ZG9jdW1lbnQpCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFNlbmRXZWJTb2Nr
ZXRIYW5kc2hha2VSZXF1ZXN0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5n
QWdlbnRzLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCwgRG9jdW1lbnQqIGRvY3VtZW50KQogewotICAgIGlmIChJbnNwZWN0b3JSZXNvdXJj
ZUFnZW50KiByZXNvdXJjZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yUmVz
b3VyY2VBZ2VudCgpKQorICAgIGlmIChJbnNwZWN0b3JSZXNvdXJjZUFnZW50KiByZXNvdXJjZUFn
ZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JSZXNvdXJjZUFnZW50KCkpCiAgICAg
ICAgIHJlc291cmNlQWdlbnQtPndpbGxTZW5kV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdChpZGVu
dGlmaWVyLCByZXF1ZXN0KTsKLSAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxp
bmVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvclRpbWVsaW5lQWdlbnQoKSkK
KyAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IGluc3RydW1l
bnRpbmdBZ2VudHMuaW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpKQogICAgICAgICB0aW1lbGluZUFn
ZW50LT53aWxsU2VuZFdlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QoaWRlbnRpZmllciwgZG9jdW1l
bnQtPmZyYW1lKCkpOwogfQogCi12b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVj
ZWl2ZVdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiBp
bnN0cnVtZW50aW5nQWdlbnRzLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBEb2N1bWVudCogZG9jdW1lbnQpCit2b2lkIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZVdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlSW1w
bChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCB1bnNpZ25lZCBsb25n
IGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBEb2N1bWVudCog
ZG9jdW1lbnQpCiB7Ci0gICAgaWYgKEluc3BlY3RvclJlc291cmNlQWdlbnQqIHJlc291cmNlQWdl
bnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JSZXNvdXJjZUFnZW50KCkpCisgICAg
aWYgKEluc3BlY3RvclJlc291cmNlQWdlbnQqIHJlc291cmNlQWdlbnQgPSBpbnN0cnVtZW50aW5n
QWdlbnRzLmluc3BlY3RvclJlc291cmNlQWdlbnQoKSkKICAgICAgICAgcmVzb3VyY2VBZ2VudC0+
ZGlkUmVjZWl2ZVdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlKGlkZW50aWZpZXIsIHJlc3BvbnNl
KTsKLSAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IGluc3Ry
dW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvclRpbWVsaW5lQWdlbnQoKSkKKyAgICBpZiAoSW5zcGVj
dG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5z
cGVjdG9yVGltZWxpbmVBZ2VudCgpKQogICAgICAgICB0aW1lbGluZUFnZW50LT5kaWRSZWNlaXZl
V2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UoaWRlbnRpZmllciwgZG9jdW1lbnQtPmZyYW1lKCkp
OwogfQogCi12b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ2xvc2VXZWJTb2NrZXRJ
bXBsKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIHVuc2lnbmVkIGxv
bmcgaWRlbnRpZmllciwgRG9jdW1lbnQqIGRvY3VtZW50KQordm9pZCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmRpZENsb3NlV2ViU29ja2V0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0
cnVtZW50aW5nQWdlbnRzLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50KiBkb2N1
bWVudCkKIHsKLSAgICBpZiAoSW5zcGVjdG9yUmVzb3VyY2VBZ2VudCogcmVzb3VyY2VBZ2VudCA9
IGluc3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvclJlc291cmNlQWdlbnQoKSkKKyAgICBpZiAo
SW5zcGVjdG9yUmVzb3VyY2VBZ2VudCogcmVzb3VyY2VBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2Vu
dHMuaW5zcGVjdG9yUmVzb3VyY2VBZ2VudCgpKQogICAgICAgICByZXNvdXJjZUFnZW50LT5kaWRD
bG9zZVdlYlNvY2tldChpZGVudGlmaWVyKTsKLSAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dCogdGltZWxpbmVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvclRpbWVsaW5l
QWdlbnQoKSkKKyAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9
IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpKQogICAgICAgICB0
aW1lbGluZUFnZW50LT5kaWREZXN0cm95V2ViU29ja2V0KGlkZW50aWZpZXIsIGRvY3VtZW50LT5m
cmFtZSgpKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVX
ZWJTb2NrZXRGcmFtZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50
cywgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBXZWJTb2NrZXRGcmFtZSYgZnJhbWUp
Cit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZVdlYlNvY2tldEZyYW1l
SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCB1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIsIGNvbnN0IFdlYlNvY2tldEZyYW1lJiBmcmFtZSkKIHsKLSAgICBpZiAo
SW5zcGVjdG9yUmVzb3VyY2VBZ2VudCogcmVzb3VyY2VBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2Vu
dHMtPmluc3BlY3RvclJlc291cmNlQWdlbnQoKSkKKyAgICBpZiAoSW5zcGVjdG9yUmVzb3VyY2VB
Z2VudCogcmVzb3VyY2VBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yUmVzb3Vy
Y2VBZ2VudCgpKQogICAgICAgICByZXNvdXJjZUFnZW50LT5kaWRSZWNlaXZlV2ViU29ja2V0RnJh
bWUoaWRlbnRpZmllciwgZnJhbWUpOwogfQotdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmRpZFJlY2VpdmVXZWJTb2NrZXRGcmFtZUVycm9ySW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiBp
bnN0cnVtZW50aW5nQWdlbnRzLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFN0cmlu
ZyYgZXJyb3JNZXNzYWdlKQordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2Vp
dmVXZWJTb2NrZXRGcmFtZUVycm9ySW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50
aW5nQWdlbnRzLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZXJyb3JN
ZXNzYWdlKQogewotICAgIGlmIChJbnNwZWN0b3JSZXNvdXJjZUFnZW50KiByZXNvdXJjZUFnZW50
ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yUmVzb3VyY2VBZ2VudCgpKQorICAgIGlm
IChJbnNwZWN0b3JSZXNvdXJjZUFnZW50KiByZXNvdXJjZUFnZW50ID0gaW5zdHJ1bWVudGluZ0Fn
ZW50cy5pbnNwZWN0b3JSZXNvdXJjZUFnZW50KCkpCiAgICAgICAgIHJlc291cmNlQWdlbnQtPmRp
ZFJlY2VpdmVXZWJTb2NrZXRGcmFtZUVycm9yKGlkZW50aWZpZXIsIGVycm9yTWVzc2FnZSk7CiB9
Ci12b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkU2VuZFdlYlNvY2tldEZyYW1lSW1w
bChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCB1bnNpZ25lZCBsb25n
IGlkZW50aWZpZXIsIGNvbnN0IFdlYlNvY2tldEZyYW1lJiBmcmFtZSkKK3ZvaWQgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpkaWRTZW5kV2ViU29ja2V0RnJhbWVJbXBsKEluc3RydW1lbnRpbmdB
Z2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29u
c3QgV2ViU29ja2V0RnJhbWUmIGZyYW1lKQogewotICAgIGlmIChJbnNwZWN0b3JSZXNvdXJjZUFn
ZW50KiByZXNvdXJjZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yUmVzb3Vy
Y2VBZ2VudCgpKQorICAgIGlmIChJbnNwZWN0b3JSZXNvdXJjZUFnZW50KiByZXNvdXJjZUFnZW50
ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JSZXNvdXJjZUFnZW50KCkpCiAgICAgICAg
IHJlc291cmNlQWdlbnQtPmRpZFNlbmRXZWJTb2NrZXRGcmFtZShpZGVudGlmaWVyLCBmcmFtZSk7
CiB9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShXRUJfUkVQTEFZKQotdm9pZCBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OnNlc3Npb25DcmVhdGVkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0
cnVtZW50aW5nQWdlbnRzLCBQYXNzUmVmUHRyPFJlcGxheVNlc3Npb24+IHNlc3Npb24pCit2b2lk
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c2Vzc2lvbkNyZWF0ZWRJbXBsKEluc3RydW1lbnRp
bmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIFBhc3NSZWZQdHI8UmVwbGF5U2Vzc2lvbj4g
c2Vzc2lvbikKIHsKLSAgICBpZiAoSW5zcGVjdG9yUmVwbGF5QWdlbnQqIHJlcGxheUFnZW50ID0g
aW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yUmVwbGF5QWdlbnQoKSkKKyAgICBpZiAoSW5z
cGVjdG9yUmVwbGF5QWdlbnQqIHJlcGxheUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNw
ZWN0b3JSZXBsYXlBZ2VudCgpKQogICAgICAgICByZXBsYXlBZ2VudC0+c2Vzc2lvbkNyZWF0ZWQo
c2Vzc2lvbik7CiB9CiAKLXZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzZXNzaW9uTG9h
ZGVkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBQYXNzUmVm
UHRyPFJlcGxheVNlc3Npb24+IHNlc3Npb24pCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6c2Vzc2lvbkxvYWRlZEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0Fn
ZW50cywgUGFzc1JlZlB0cjxSZXBsYXlTZXNzaW9uPiBzZXNzaW9uKQogewotICAgIGlmIChJbnNw
ZWN0b3JSZXBsYXlBZ2VudCogcmVwbGF5QWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLT5pbnNw
ZWN0b3JSZXBsYXlBZ2VudCgpKQorICAgIGlmIChJbnNwZWN0b3JSZXBsYXlBZ2VudCogcmVwbGF5
QWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvclJlcGxheUFnZW50KCkpCiAgICAg
ICAgIHJlcGxheUFnZW50LT5zZXNzaW9uTG9hZGVkKHNlc3Npb24pOwogfQogCi12b2lkIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6c2Vzc2lvbk1vZGlmaWVkSW1wbChJbnN0cnVtZW50aW5nQWdl
bnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBQYXNzUmVmUHRyPFJlcGxheVNlc3Npb24+IHNlc3Np
b24pCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c2Vzc2lvbk1vZGlmaWVkSW1wbChJ
bnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBQYXNzUmVmUHRyPFJlcGxh
eVNlc3Npb24+IHNlc3Npb24pCiB7Ci0gICAgaWYgKEluc3BlY3RvclJlcGxheUFnZW50KiByZXBs
YXlBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvclJlcGxheUFnZW50KCkpCisg
ICAgaWYgKEluc3BlY3RvclJlcGxheUFnZW50KiByZXBsYXlBZ2VudCA9IGluc3RydW1lbnRpbmdB
Z2VudHMuaW5zcGVjdG9yUmVwbGF5QWdlbnQoKSkKICAgICAgICAgcmVwbGF5QWdlbnQtPnNlc3Np
b25Nb2RpZmllZChzZXNzaW9uKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OnNlZ21lbnRDcmVhdGVkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdl
bnRzLCBQYXNzUmVmUHRyPFJlcGxheVNlc3Npb25TZWdtZW50PiBzZWdtZW50KQordm9pZCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OnNlZ21lbnRDcmVhdGVkSW1wbChJbnN0cnVtZW50aW5nQWdl
bnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBQYXNzUmVmUHRyPFJlcGxheVNlc3Npb25TZWdtZW50
PiBzZWdtZW50KQogewotICAgIGlmIChJbnNwZWN0b3JSZXBsYXlBZ2VudCogcmVwbGF5QWdlbnQg
PSBpbnN0cnVtZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JSZXBsYXlBZ2VudCgpKQorICAgIGlmIChJ
bnNwZWN0b3JSZXBsYXlBZ2VudCogcmVwbGF5QWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmlu
c3BlY3RvclJlcGxheUFnZW50KCkpCiAgICAgICAgIHJlcGxheUFnZW50LT5zZWdtZW50Q3JlYXRl
ZChzZWdtZW50KTsKIH0KIAotdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNlZ21lbnRD
b21wbGV0ZWRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIFBh
c3NSZWZQdHI8UmVwbGF5U2Vzc2lvblNlZ21lbnQ+IHNlZ21lbnQpCit2b2lkIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6c2VnbWVudENvbXBsZXRlZEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYg
aW5zdHJ1bWVudGluZ0FnZW50cywgUGFzc1JlZlB0cjxSZXBsYXlTZXNzaW9uU2VnbWVudD4gc2Vn
bWVudCkKIHsKLSAgICBpZiAoSW5zcGVjdG9yUmVwbGF5QWdlbnQqIHJlcGxheUFnZW50ID0gaW5z
dHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yUmVwbGF5QWdlbnQoKSkKKyAgICBpZiAoSW5zcGVj
dG9yUmVwbGF5QWdlbnQqIHJlcGxheUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0
b3JSZXBsYXlBZ2VudCgpKQogICAgICAgICByZXBsYXlBZ2VudC0+c2VnbWVudENvbXBsZXRlZChz
ZWdtZW50KTsKIH0KIAotdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNlZ21lbnRMb2Fk
ZWRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIFBhc3NSZWZQ
dHI8UmVwbGF5U2Vzc2lvblNlZ21lbnQ+IHNlZ21lbnQpCit2b2lkIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6c2VnbWVudExvYWRlZEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVu
dGluZ0FnZW50cywgUGFzc1JlZlB0cjxSZXBsYXlTZXNzaW9uU2VnbWVudD4gc2VnbWVudCkKIHsK
LSAgICBpZiAoSW5zcGVjdG9yUmVwbGF5QWdlbnQqIHJlcGxheUFnZW50ID0gaW5zdHJ1bWVudGlu
Z0FnZW50cy0+aW5zcGVjdG9yUmVwbGF5QWdlbnQoKSkKKyAgICBpZiAoSW5zcGVjdG9yUmVwbGF5
QWdlbnQqIHJlcGxheUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JSZXBsYXlB
Z2VudCgpKQogICAgICAgICByZXBsYXlBZ2VudC0+c2VnbWVudExvYWRlZChzZWdtZW50KTsKIH0K
IAotdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNlZ21lbnRVbmxvYWRlZEltcGwoSW5z
dHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cykKK3ZvaWQgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpzZWdtZW50VW5sb2FkZWRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGlu
c3RydW1lbnRpbmdBZ2VudHMpCiB7Ci0gICAgaWYgKEluc3BlY3RvclJlcGxheUFnZW50KiByZXBs
YXlBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvclJlcGxheUFnZW50KCkpCisg
ICAgaWYgKEluc3BlY3RvclJlcGxheUFnZW50KiByZXBsYXlBZ2VudCA9IGluc3RydW1lbnRpbmdB
Z2VudHMuaW5zcGVjdG9yUmVwbGF5QWdlbnQoKSkKICAgICAgICAgcmVwbGF5QWdlbnQtPnNlZ21l
bnRVbmxvYWRlZCgpOwogfQogCi12b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Y2FwdHVy
ZVN0YXJ0ZWRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMpCit2
b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Y2FwdHVyZVN0YXJ0ZWRJbXBsKEluc3RydW1l
bnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMpCiB7Ci0gICAgaWYgKEluc3BlY3RvclJl
cGxheUFnZW50KiByZXBsYXlBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvclJl
cGxheUFnZW50KCkpCisgICAgaWYgKEluc3BlY3RvclJlcGxheUFnZW50KiByZXBsYXlBZ2VudCA9
IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yUmVwbGF5QWdlbnQoKSkKICAgICAgICAgcmVw
bGF5QWdlbnQtPmNhcHR1cmVTdGFydGVkKCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpjYXB0dXJlU3RvcHBlZEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVu
dGluZ0FnZW50cykKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjYXB0dXJlU3RvcHBl
ZEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cykKIHsKLSAgICBp
ZiAoSW5zcGVjdG9yUmVwbGF5QWdlbnQqIHJlcGxheUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50
cy0+aW5zcGVjdG9yUmVwbGF5QWdlbnQoKSkKKyAgICBpZiAoSW5zcGVjdG9yUmVwbGF5QWdlbnQq
IHJlcGxheUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JSZXBsYXlBZ2VudCgp
KQogICAgICAgICByZXBsYXlBZ2VudC0+Y2FwdHVyZVN0b3BwZWQoKTsKIH0KIAotdm9pZCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OnBsYXliYWNrU3RhcnRlZEltcGwoSW5zdHJ1bWVudGluZ0Fn
ZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cykKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpwbGF5YmFja1N0YXJ0ZWRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdB
Z2VudHMpCiB7Ci0gICAgaWYgKEluc3BlY3RvclJlcGxheUFnZW50KiByZXBsYXlBZ2VudCA9IGlu
c3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvclJlcGxheUFnZW50KCkpCisgICAgaWYgKEluc3Bl
Y3RvclJlcGxheUFnZW50KiByZXBsYXlBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVj
dG9yUmVwbGF5QWdlbnQoKSkKICAgICAgICAgcmVwbGF5QWdlbnQtPnBsYXliYWNrU3RhcnRlZCgp
OwogfQogCi12b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6cGxheWJhY2tQYXVzZWRJbXBs
KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIGNvbnN0IFJlcGxheVBv
c2l0aW9uJiBwb3NpdGlvbikKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpwbGF5YmFj
a1BhdXNlZEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgY29u
c3QgUmVwbGF5UG9zaXRpb24mIHBvc2l0aW9uKQogewotICAgIGlmIChJbnNwZWN0b3JSZXBsYXlB
Z2VudCogcmVwbGF5QWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JSZXBsYXlB
Z2VudCgpKQorICAgIGlmIChJbnNwZWN0b3JSZXBsYXlBZ2VudCogcmVwbGF5QWdlbnQgPSBpbnN0
cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvclJlcGxheUFnZW50KCkpCiAgICAgICAgIHJlcGxheUFn
ZW50LT5wbGF5YmFja1BhdXNlZChwb3NpdGlvbik7CiB9CiAKLXZvaWQgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpwbGF5YmFja0hpdFBvc2l0aW9uSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiBp
bnN0cnVtZW50aW5nQWdlbnRzLCBjb25zdCBSZXBsYXlQb3NpdGlvbiYgcG9zaXRpb24pCit2b2lk
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6cGxheWJhY2tIaXRQb3NpdGlvbkltcGwoSW5zdHJ1
bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgY29uc3QgUmVwbGF5UG9zaXRpb24m
IHBvc2l0aW9uKQogewotICAgIGlmIChJbnNwZWN0b3JSZXBsYXlBZ2VudCogcmVwbGF5QWdlbnQg
PSBpbnN0cnVtZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JSZXBsYXlBZ2VudCgpKQorICAgIGlmIChJ
bnNwZWN0b3JSZXBsYXlBZ2VudCogcmVwbGF5QWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmlu
c3BlY3RvclJlcGxheUFnZW50KCkpCiAgICAgICAgIHJlcGxheUFnZW50LT5wbGF5YmFja0hpdFBv
c2l0aW9uKHBvc2l0aW9uKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnBs
YXliYWNrRmluaXNoZWRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2Vu
dHMpCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6cGxheWJhY2tGaW5pc2hlZEltcGwo
SW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cykKIHsKLSAgICBpZiAoSW5z
cGVjdG9yUmVwbGF5QWdlbnQqIHJlcGxheUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5z
cGVjdG9yUmVwbGF5QWdlbnQoKSkKKyAgICBpZiAoSW5zcGVjdG9yUmVwbGF5QWdlbnQqIHJlcGxh
eUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JSZXBsYXlBZ2VudCgpKQogICAg
ICAgICByZXBsYXlBZ2VudC0+cGxheWJhY2tGaW5pc2hlZCgpOwogfQogI2VuZGlmCiAKLXZvaWQg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpuZXR3b3JrU3RhdGVDaGFuZ2VkSW1wbChJbnN0cnVt
ZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzKQordm9pZCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246Om5ldHdvcmtTdGF0ZUNoYW5nZWRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGlu
c3RydW1lbnRpbmdBZ2VudHMpCiB7Ci0gICAgaWYgKEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVB
Z2VudCogYXBwbGljYXRpb25DYWNoZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVj
dG9yQXBwbGljYXRpb25DYWNoZUFnZW50KCkpCisgICAgaWYgKEluc3BlY3RvckFwcGxpY2F0aW9u
Q2FjaGVBZ2VudCogYXBwbGljYXRpb25DYWNoZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5p
bnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQoKSkKICAgICAgICAgYXBwbGljYXRpb25DYWNo
ZUFnZW50LT5uZXR3b3JrU3RhdGVDaGFuZ2VkKCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjp1cGRhdGVBcHBsaWNhdGlvbkNhY2hlU3RhdHVzSW1wbChJbnN0cnVtZW50aW5n
QWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBGcmFtZSogZnJhbWUpCit2b2lkIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6dXBkYXRlQXBwbGljYXRpb25DYWNoZVN0YXR1c0ltcGwoSW5zdHJ1
bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgRnJhbWUqIGZyYW1lKQogewotICAg
IGlmIChJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQqIGFwcGxpY2F0aW9uQ2FjaGVBZ2Vu
dCA9IGluc3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudCgp
KQorICAgIGlmIChJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQqIGFwcGxpY2F0aW9uQ2Fj
aGVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFn
ZW50KCkpCiAgICAgICAgIGFwcGxpY2F0aW9uQ2FjaGVBZ2VudC0+dXBkYXRlQXBwbGljYXRpb25D
YWNoZVN0YXR1cyhmcmFtZSk7CiB9CiAKQEAgLTExNzIsNDAgKzExODAsNDAgQEAgYm9vbCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OnJlcGxheUFnZW50RW5hYmxlZChTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBzY3JpcHQKICNlbmRpZgogfQogCi12b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6cGF1c2VPbk5hdGl2ZUV2ZW50SWZOZWVkZWQoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1
bWVudGluZ0FnZW50cywgYm9vbCBpc0RPTUV2ZW50LCBjb25zdCBTdHJpbmcmIGV2ZW50TmFtZSwg
Ym9vbCBzeW5jaHJvbm91cykKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpwYXVzZU9u
TmF0aXZlRXZlbnRJZk5lZWRlZChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdl
bnRzLCBib29sIGlzRE9NRXZlbnQsIGNvbnN0IFN0cmluZyYgZXZlbnROYW1lLCBib29sIHN5bmNo
cm9ub3VzKQogewotICAgIGlmIChJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50KiBkb21EZWJ1Z2dl
ckFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudCgp
KQorICAgIGlmIChJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50KiBkb21EZWJ1Z2dlckFnZW50ID0g
aW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50KCkpCiAgICAgICAg
IGRvbURlYnVnZ2VyQWdlbnQtPnBhdXNlT25OYXRpdmVFdmVudElmTmVlZGVkKGlzRE9NRXZlbnQs
IGV2ZW50TmFtZSwgc3luY2hyb25vdXMpOwogfQogCi12b2lkIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6Y2FuY2VsUGF1c2VPbk5hdGl2ZUV2ZW50KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3Ry
dW1lbnRpbmdBZ2VudHMpCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Y2FuY2VsUGF1
c2VPbk5hdGl2ZUV2ZW50KEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMp
CiB7Ci0gICAgaWYgKEluc3BlY3RvckRlYnVnZ2VyQWdlbnQqIGRlYnVnZ2VyQWdlbnQgPSBpbnN0
cnVtZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JEZWJ1Z2dlckFnZW50KCkpCisgICAgaWYgKEluc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQqIGRlYnVnZ2VyQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmlu
c3BlY3RvckRlYnVnZ2VyQWdlbnQoKSkKICAgICAgICAgZGVidWdnZXJBZ2VudC0+Y2FuY2VsUGF1
c2VPbk5leHRTdGF0ZW1lbnQoKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmRpZFJlcXVlc3RBbmltYXRpb25GcmFtZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1
bWVudGluZ0FnZW50cywgaW50IGNhbGxiYWNrSWQsIEZyYW1lKiBmcmFtZSkKK3ZvaWQgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZXF1ZXN0QW5pbWF0aW9uRnJhbWVJbXBsKEluc3RydW1l
bnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIGludCBjYWxsYmFja0lkLCBGcmFtZSog
ZnJhbWUpCiB7CiAgICAgcGF1c2VPbk5hdGl2ZUV2ZW50SWZOZWVkZWQoaW5zdHJ1bWVudGluZ0Fn
ZW50cywgZmFsc2UsIHJlcXVlc3RBbmltYXRpb25GcmFtZUV2ZW50TmFtZSwgdHJ1ZSk7CiAKLSAg
ICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IGluc3RydW1lbnRp
bmdBZ2VudHMtPmluc3BlY3RvclRpbWVsaW5lQWdlbnQoKSkKKyAgICBpZiAoSW5zcGVjdG9yVGlt
ZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9y
VGltZWxpbmVBZ2VudCgpKQogICAgICAgICB0aW1lbGluZUFnZW50LT5kaWRSZXF1ZXN0QW5pbWF0
aW9uRnJhbWUoY2FsbGJhY2tJZCwgZnJhbWUpOwogfQogCi12b2lkIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6ZGlkQ2FuY2VsQW5pbWF0aW9uRnJhbWVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMq
IGluc3RydW1lbnRpbmdBZ2VudHMsIGludCBjYWxsYmFja0lkLCBGcmFtZSogZnJhbWUpCit2b2lk
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ2FuY2VsQW5pbWF0aW9uRnJhbWVJbXBsKElu
c3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIGludCBjYWxsYmFja0lkLCBG
cmFtZSogZnJhbWUpCiB7CiAgICAgcGF1c2VPbk5hdGl2ZUV2ZW50SWZOZWVkZWQoaW5zdHJ1bWVu
dGluZ0FnZW50cywgZmFsc2UsIGNhbmNlbEFuaW1hdGlvbkZyYW1lRXZlbnROYW1lLCB0cnVlKTsK
IAotICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gaW5zdHJ1
bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpKQorICAgIGlmIChJbnNwZWN0
b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNw
ZWN0b3JUaW1lbGluZUFnZW50KCkpCiAgICAgICAgIHRpbWVsaW5lQWdlbnQtPmRpZENhbmNlbEFu
aW1hdGlvbkZyYW1lKGNhbGxiYWNrSWQsIGZyYW1lKTsKIH0KIAotSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uQ29va2llIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEZpcmVBbmltYXRpb25G
cmFtZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgaW50IGNh
bGxiYWNrSWQsIEZyYW1lKiBmcmFtZSkKK0luc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxGaXJlQW5pbWF0aW9uRnJhbWVJbXBsKEluc3Ry
dW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIGludCBjYWxsYmFja0lkLCBGcmFt
ZSogZnJhbWUpCiB7CiAgICAgcGF1c2VPbk5hdGl2ZUV2ZW50SWZOZWVkZWQoaW5zdHJ1bWVudGlu
Z0FnZW50cywgZmFsc2UsIGFuaW1hdGlvbkZyYW1lRmlyZWRFdmVudE5hbWUsIGZhbHNlKTsKIAog
ICAgIGludCB0aW1lbGluZUFnZW50SWQgPSAwOwotICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFn
ZW50KiB0aW1lbGluZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yVGltZWxp
bmVBZ2VudCgpKSB7CisgICAgaWYgKEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdl
bnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvclRpbWVsaW5lQWdlbnQoKSkgewogICAg
ICAgICB0aW1lbGluZUFnZW50LT53aWxsRmlyZUFuaW1hdGlvbkZyYW1lKGNhbGxiYWNrSWQsIGZy
YW1lKTsKICAgICAgICAgdGltZWxpbmVBZ2VudElkID0gdGltZWxpbmVBZ2VudC0+aWQoKTsKICAg
ICB9CkBAIC0xMjE4LDI4ICsxMjI2LDMxIEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpkaWRGaXJlQW5pbWF0aW9uRnJhbWVJbXBsKGNvbnN0IEluc3BlY3Rvckluc3RydW1lCiAgICAg
ICAgIHRpbWVsaW5lQWdlbnQtPmRpZEZpcmVBbmltYXRpb25GcmFtZSgpOwogfQogCi12b2lkIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6cmVnaXN0ZXJJbnN0cnVtZW50aW5nQWdlbnRzKEluc3Ry
dW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMpCit2b2lkIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6cmVnaXN0ZXJJbnN0cnVtZW50aW5nQWdlbnRzKEluc3RydW1lbnRpbmdBZ2Vu
dHMmIGluc3RydW1lbnRpbmdBZ2VudHMpCiB7Ci0gICAgaWYgKCFpbnN0cnVtZW50aW5nQWdlbnRz
U2V0KQotICAgICAgICBpbnN0cnVtZW50aW5nQWdlbnRzU2V0ID0gbmV3IEhhc2hTZXQ8SW5zdHJ1
bWVudGluZ0FnZW50cyo+KCk7Ci0gICAgaW5zdHJ1bWVudGluZ0FnZW50c1NldC0+YWRkKGluc3Ry
dW1lbnRpbmdBZ2VudHMpOworICAgIGlmICghc19pbnN0cnVtZW50aW5nQWdlbnRzU2V0KQorICAg
ICAgICBzX2luc3RydW1lbnRpbmdBZ2VudHNTZXQgPSBuZXcgSGFzaFNldDxJbnN0cnVtZW50aW5n
QWdlbnRzKj4oKTsKKworICAgIHNfaW5zdHJ1bWVudGluZ0FnZW50c1NldC0+YWRkKCZpbnN0cnVt
ZW50aW5nQWdlbnRzKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnVucmVn
aXN0ZXJJbnN0cnVtZW50aW5nQWdlbnRzKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRp
bmdBZ2VudHMpCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6dW5yZWdpc3Rlckluc3Ry
dW1lbnRpbmdBZ2VudHMoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cykK
IHsKLSAgICBpZiAoIWluc3RydW1lbnRpbmdBZ2VudHNTZXQpCisgICAgaWYgKCFzX2luc3RydW1l
bnRpbmdBZ2VudHNTZXQpCiAgICAgICAgIHJldHVybjsKLSAgICBpbnN0cnVtZW50aW5nQWdlbnRz
U2V0LT5yZW1vdmUoaW5zdHJ1bWVudGluZ0FnZW50cyk7Ci0gICAgaWYgKGluc3RydW1lbnRpbmdB
Z2VudHNTZXQtPmlzRW1wdHkoKSkgewotICAgICAgICBkZWxldGUgaW5zdHJ1bWVudGluZ0FnZW50
c1NldDsKLSAgICAgICAgaW5zdHJ1bWVudGluZ0FnZW50c1NldCA9IG51bGxwdHI7CisKKyAgICBz
X2luc3RydW1lbnRpbmdBZ2VudHNTZXQtPnJlbW92ZSgmaW5zdHJ1bWVudGluZ0FnZW50cyk7Cisg
ICAgaWYgKHNfaW5zdHJ1bWVudGluZ0FnZW50c1NldC0+aXNFbXB0eSgpKSB7CisgICAgICAgIGRl
bGV0ZSBzX2luc3RydW1lbnRpbmdBZ2VudHNTZXQ7CisgICAgICAgIHNfaW5zdHJ1bWVudGluZ0Fn
ZW50c1NldCA9IG51bGxwdHI7CiAgICAgfQogfQogCiBJbnNwZWN0b3JUaW1lbGluZUFnZW50KiBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnJldHJpZXZlVGltZWxpbmVBZ2VudChjb25zdCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUmIGNvb2tpZSkKIHsKLSAgICBpZiAoIWNvb2tpZS5p
bnN0cnVtZW50aW5nQWdlbnRzKCkpCisgICAgaWYgKCFjb29raWUuaXNWYWxpZCgpKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKwogICAgIEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5l
QWdlbnQgPSBjb29raWUuaW5zdHJ1bWVudGluZ0FnZW50cygpLT5pbnNwZWN0b3JUaW1lbGluZUFn
ZW50KCk7CiAgICAgaWYgKHRpbWVsaW5lQWdlbnQgJiYgY29va2llLmhhc01hdGNoaW5nVGltZWxp
bmVBZ2VudElkKHRpbWVsaW5lQWdlbnQtPmlkKCkpKQogICAgICAgICByZXR1cm4gdGltZWxpbmVB
Z2VudDsKQEAgLTEyNDgsNDcgKzEyNTksNDkgQEAgSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpyZXRyaWV2ZVRpbWVsaW5lQWdlbnQoY29uc3QgSW4KIAog
SW5zdHJ1bWVudGluZ0FnZW50cyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnN0cnVtZW50
aW5nQWdlbnRzRm9yUGFnZShQYWdlKiBwYWdlKQogewotICAgIGlmICghcGFnZSkKLSAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIGluc3RydW1lbnRhdGlvbkZvclBhZ2UocGFnZSk7
CisgICAgcmV0dXJuIHBhZ2UgPyBpbnN0cnVtZW50aW5nQWdlbnRzRm9yUGFnZSgqcGFnZSkgOiBu
dWxscHRyOworfQorCitJbnN0cnVtZW50aW5nQWdlbnRzKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246Omluc3RydW1lbnRpbmdBZ2VudHNGb3JQYWdlKFBhZ2UmIHBhZ2UpCit7CisgICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKKyAgICByZXR1cm4gcGFnZS5pbnNwZWN0b3JDb250cm9sbGVyKCku
bV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpOwogfQogCiBJbnN0cnVtZW50aW5nQWdlbnRzKiBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246Omluc3RydW1lbnRpbmdBZ2VudHNGb3JSZW5kZXJlcihS
ZW5kZXJPYmplY3QqIHJlbmRlcmVyKQogewotICAgIHJldHVybiBpbnN0cnVtZW50aW5nQWdlbnRz
Rm9yRnJhbWUoJnJlbmRlcmVyLT5mcmFtZSgpKTsKKyAgICByZXR1cm4gaW5zdHJ1bWVudGluZ0Fn
ZW50c0ZvckZyYW1lKHJlbmRlcmVyLT5mcmFtZSgpKTsKIH0KIAogSW5zdHJ1bWVudGluZ0FnZW50
cyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnN0cnVtZW50aW5nQWdlbnRzRm9yV29ya2Vy
R2xvYmFsU2NvcGUoV29ya2VyR2xvYmFsU2NvcGUqIHdvcmtlckdsb2JhbFNjb3BlKQogewotICAg
IGlmICghd29ya2VyR2xvYmFsU2NvcGUpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJl
dHVybiBpbnN0cnVtZW50YXRpb25Gb3JXb3JrZXJHbG9iYWxTY29wZSh3b3JrZXJHbG9iYWxTY29w
ZSk7CisgICAgcmV0dXJuIHdvcmtlckdsb2JhbFNjb3BlID8gd29ya2VyR2xvYmFsU2NvcGUtPndv
cmtlckluc3BlY3RvckNvbnRyb2xsZXIoKS5tX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCkgOiBu
dWxscHRyOwogfQogCiBJbnN0cnVtZW50aW5nQWdlbnRzKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246Omluc3RydW1lbnRpbmdBZ2VudHNGb3JOb25Eb2N1bWVudENvbnRleHQoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCkKIHsKICAgICBBU1NFUlQoY29udGV4dCk7CiAgICAgaWYgKGlz
PFdvcmtlckdsb2JhbFNjb3BlPigqY29udGV4dCkpCi0gICAgICAgIHJldHVybiBpbnN0cnVtZW50
YXRpb25Gb3JXb3JrZXJHbG9iYWxTY29wZShkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oY29u
dGV4dCkpOworICAgICAgICByZXR1cm4gaW5zdHJ1bWVudGluZ0FnZW50c0Zvcldvcmtlckdsb2Jh
bFNjb3BlKGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KSk7CiAgICAgcmV0dXJu
IG51bGxwdHI7CiB9CiAKLXZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpsYXllclRyZWVE
aWRDaGFuZ2VJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMpCit2
b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6bGF5ZXJUcmVlRGlkQ2hhbmdlSW1wbChJbnN0
cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzKQogewotICAgIGlmIChJbnNwZWN0
b3JMYXllclRyZWVBZ2VudCogbGF5ZXJUcmVlQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLT5p
bnNwZWN0b3JMYXllclRyZWVBZ2VudCgpKQorICAgIGlmIChJbnNwZWN0b3JMYXllclRyZWVBZ2Vu
dCogbGF5ZXJUcmVlQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckxheWVyVHJl
ZUFnZW50KCkpCiAgICAgICAgIGxheWVyVHJlZUFnZW50LT5sYXllclRyZWVEaWRDaGFuZ2UoKTsK
IH0KIAotdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnJlbmRlckxheWVyRGVzdHJveWVk
SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBjb25zdCBSZW5k
ZXJMYXllciogcmVuZGVyTGF5ZXIpCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6cmVu
ZGVyTGF5ZXJEZXN0cm95ZWRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdB
Z2VudHMsIGNvbnN0IFJlbmRlckxheWVyJiByZW5kZXJMYXllcikKIHsKLSAgICBpZiAoSW5zcGVj
dG9yTGF5ZXJUcmVlQWdlbnQqIGxheWVyVHJlZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+
aW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQoKSkKLSAgICAgICAgbGF5ZXJUcmVlQWdlbnQtPnJlbmRl
ckxheWVyRGVzdHJveWVkKHJlbmRlckxheWVyKTsKKyAgICBpZiAoSW5zcGVjdG9yTGF5ZXJUcmVl
QWdlbnQqIGxheWVyVHJlZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JMYXll
clRyZWVBZ2VudCgpKQorICAgICAgICBsYXllclRyZWVBZ2VudC0+cmVuZGVyTGF5ZXJEZXN0cm95
ZWQoJnJlbmRlckxheWVyKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnBz
ZXVkb0VsZW1lbnREZXN0cm95ZWRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRp
bmdBZ2VudHMsIFBzZXVkb0VsZW1lbnQqIHBzZXVkb0VsZW1lbnQpCit2b2lkIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6cHNldWRvRWxlbWVudERlc3Ryb3llZEltcGwoSW5zdHJ1bWVudGluZ0Fn
ZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgUHNldWRvRWxlbWVudCYgcHNldWRvRWxlbWVudCkK
IHsKLSAgICBpZiAoSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQqIGxheWVyVHJlZUFnZW50ID0gaW5z
dHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQoKSkKLSAgICAgICAgbGF5
ZXJUcmVlQWdlbnQtPnBzZXVkb0VsZW1lbnREZXN0cm95ZWQocHNldWRvRWxlbWVudCk7CisgICAg
aWYgKEluc3BlY3RvckxheWVyVHJlZUFnZW50KiBsYXllclRyZWVBZ2VudCA9IGluc3RydW1lbnRp
bmdBZ2VudHMuaW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQoKSkKKyAgICAgICAgbGF5ZXJUcmVlQWdl
bnQtPnBzZXVkb0VsZW1lbnREZXN0cm95ZWQoJnBzZXVkb0VsZW1lbnQpOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uLmgKaW5kZXggODAwM2M1NDUzMmMxOWU5NjUyMDY2OWRhNmI3MzY0
MzNjMDBlNmU1Ny4uZDdjYWE1OTEyNTE3MmIxNjUyMmU1MDM3NTlmYTAyNDJmNTQ2ZDc1MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlv
bi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRp
b24uaApAQCAtMTA5LDMyICsxMDksMzIgQEAgc3RydWN0IFJlcGxheVBvc2l0aW9uOwogCiBjbGFz
cyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24gewogcHVibGljOgotICAgIHN0YXRpYyB2b2lkIGRp
ZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZChGcmFtZSosIERPTVdyYXBwZXJXb3JsZCYpOworICAg
IHN0YXRpYyB2b2lkIGRpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZChGcmFtZSYsIERPTVdyYXBw
ZXJXb3JsZCYpOwogICAgIHN0YXRpYyBib29sIGlzRGVidWdnZXJQYXVzZWQoRnJhbWUqKTsKIAot
ICAgIHN0YXRpYyB2b2lkIHdpbGxJbnNlcnRET01Ob2RlKERvY3VtZW50KiwgTm9kZSogcGFyZW50
KTsKLSAgICBzdGF0aWMgdm9pZCBkaWRJbnNlcnRET01Ob2RlKERvY3VtZW50KiwgTm9kZSopOwot
ICAgIHN0YXRpYyB2b2lkIHdpbGxSZW1vdmVET01Ob2RlKERvY3VtZW50KiwgTm9kZSopOwotICAg
IHN0YXRpYyB2b2lkIGRpZFJlbW92ZURPTU5vZGUoRG9jdW1lbnQqLCBOb2RlKik7Ci0gICAgc3Rh
dGljIHZvaWQgd2lsbE1vZGlmeURPTUF0dHIoRG9jdW1lbnQqLCBFbGVtZW50KiwgY29uc3QgQXRv
bWljU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuZXdWYWx1ZSk7Ci0gICAg
c3RhdGljIHZvaWQgZGlkTW9kaWZ5RE9NQXR0cihEb2N1bWVudCosIEVsZW1lbnQqLCBjb25zdCBB
dG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpOwotICAgIHN0YXRp
YyB2b2lkIGRpZFJlbW92ZURPTUF0dHIoRG9jdW1lbnQqLCBFbGVtZW50KiwgY29uc3QgQXRvbWlj
U3RyaW5nJiBuYW1lKTsKLSAgICBzdGF0aWMgdm9pZCBjaGFyYWN0ZXJEYXRhTW9kaWZpZWQoRG9j
dW1lbnQqLCBDaGFyYWN0ZXJEYXRhKik7Ci0gICAgc3RhdGljIHZvaWQgZGlkSW52YWxpZGF0ZVN0
eWxlQXR0cihEb2N1bWVudCosIE5vZGUqKTsKKyAgICBzdGF0aWMgdm9pZCB3aWxsSW5zZXJ0RE9N
Tm9kZShEb2N1bWVudCYsIE5vZGUmIHBhcmVudCk7CisgICAgc3RhdGljIHZvaWQgZGlkSW5zZXJ0
RE9NTm9kZShEb2N1bWVudCYsIE5vZGUmKTsKKyAgICBzdGF0aWMgdm9pZCB3aWxsUmVtb3ZlRE9N
Tm9kZShEb2N1bWVudCYsIE5vZGUmKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRSZW1vdmVET01Ob2Rl
KERvY3VtZW50JiwgTm9kZSYpOworICAgIHN0YXRpYyB2b2lkIHdpbGxNb2RpZnlET01BdHRyKERv
Y3VtZW50JiwgRWxlbWVudCYsIGNvbnN0IEF0b21pY1N0cmluZyYgb2xkVmFsdWUsIGNvbnN0IEF0
b21pY1N0cmluZyYgbmV3VmFsdWUpOworICAgIHN0YXRpYyB2b2lkIGRpZE1vZGlmeURPTUF0dHIo
RG9jdW1lbnQmLCBFbGVtZW50JiwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBBdG9t
aWNTdHJpbmcmIHZhbHVlKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRSZW1vdmVET01BdHRyKERvY3Vt
ZW50JiwgRWxlbWVudCYsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSk7CisgICAgc3RhdGljIHZv
aWQgY2hhcmFjdGVyRGF0YU1vZGlmaWVkKERvY3VtZW50JiwgQ2hhcmFjdGVyRGF0YSYpOworICAg
IHN0YXRpYyB2b2lkIGRpZEludmFsaWRhdGVTdHlsZUF0dHIoRG9jdW1lbnQmLCBOb2RlJik7CiAg
ICAgc3RhdGljIHZvaWQgZnJhbWVXaW5kb3dEaXNjYXJkZWQoRnJhbWUqLCBET01XaW5kb3cqKTsK
LSAgICBzdGF0aWMgdm9pZCBtZWRpYVF1ZXJ5UmVzdWx0Q2hhbmdlZChEb2N1bWVudCopOwotICAg
IHN0YXRpYyB2b2lkIGRpZFB1c2hTaGFkb3dSb290KEVsZW1lbnQqIGhvc3QsIFNoYWRvd1Jvb3Qq
KTsKLSAgICBzdGF0aWMgdm9pZCB3aWxsUG9wU2hhZG93Um9vdChFbGVtZW50KiBob3N0LCBTaGFk
b3dSb290Kik7Ci0gICAgc3RhdGljIHZvaWQgZGlkQ3JlYXRlTmFtZWRGbG93KERvY3VtZW50Kiwg
V2ViS2l0TmFtZWRGbG93Kik7Ci0gICAgc3RhdGljIHZvaWQgd2lsbFJlbW92ZU5hbWVkRmxvdyhE
b2N1bWVudCosIFdlYktpdE5hbWVkRmxvdyopOwotICAgIHN0YXRpYyB2b2lkIGRpZENoYW5nZVJl
Z2lvbk92ZXJzZXQoRG9jdW1lbnQqLCBXZWJLaXROYW1lZEZsb3cqKTsKLSAgICBzdGF0aWMgdm9p
ZCBkaWRSZWdpc3Rlck5hbWVkRmxvd0NvbnRlbnRFbGVtZW50KERvY3VtZW50KiwgV2ViS2l0TmFt
ZWRGbG93KiwgTm9kZSogY29udGVudEVsZW1lbnQsIE5vZGUqIG5leHRDb250ZW50RWxlbWVudCA9
IG51bGxwdHIpOwotICAgIHN0YXRpYyB2b2lkIGRpZFVucmVnaXN0ZXJOYW1lZEZsb3dDb250ZW50
RWxlbWVudChEb2N1bWVudCosIFdlYktpdE5hbWVkRmxvdyosIE5vZGUqIGNvbnRlbnRFbGVtZW50
KTsKLQotICAgIHN0YXRpYyB2b2lkIG1vdXNlRGlkTW92ZU92ZXJFbGVtZW50KFBhZ2UqLCBjb25z
dCBIaXRUZXN0UmVzdWx0JiwgdW5zaWduZWQgbW9kaWZpZXJGbGFncyk7Ci0gICAgc3RhdGljIGJv
b2wgaGFuZGxlTW91c2VQcmVzcyhQYWdlKik7Ci0gICAgc3RhdGljIGJvb2wgaGFuZGxlVG91Y2hF
dmVudChQYWdlKiwgTm9kZSopOwotICAgIHN0YXRpYyBib29sIGZvcmNlUHNldWRvU3RhdGUoRWxl
bWVudCosIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc1R5cGUpOworICAgIHN0YXRpYyB2b2lkIG1l
ZGlhUXVlcnlSZXN1bHRDaGFuZ2VkKERvY3VtZW50Jik7CisgICAgc3RhdGljIHZvaWQgZGlkUHVz
aFNoYWRvd1Jvb3QoRWxlbWVudCYgaG9zdCwgU2hhZG93Um9vdCYpOworICAgIHN0YXRpYyB2b2lk
IHdpbGxQb3BTaGFkb3dSb290KEVsZW1lbnQmIGhvc3QsIFNoYWRvd1Jvb3QmKTsKKyAgICBzdGF0
aWMgdm9pZCBkaWRDcmVhdGVOYW1lZEZsb3coRG9jdW1lbnQqLCBXZWJLaXROYW1lZEZsb3cmKTsK
KyAgICBzdGF0aWMgdm9pZCB3aWxsUmVtb3ZlTmFtZWRGbG93KERvY3VtZW50KiwgV2ViS2l0TmFt
ZWRGbG93Jik7CisgICAgc3RhdGljIHZvaWQgZGlkQ2hhbmdlUmVnaW9uT3ZlcnNldChEb2N1bWVu
dCYsIFdlYktpdE5hbWVkRmxvdyYpOworICAgIHN0YXRpYyB2b2lkIGRpZFJlZ2lzdGVyTmFtZWRG
bG93Q29udGVudEVsZW1lbnQoRG9jdW1lbnQmLCBXZWJLaXROYW1lZEZsb3cmLCBOb2RlJiBjb250
ZW50RWxlbWVudCwgTm9kZSogbmV4dENvbnRlbnRFbGVtZW50ID0gbnVsbHB0cik7CisgICAgc3Rh
dGljIHZvaWQgZGlkVW5yZWdpc3Rlck5hbWVkRmxvd0NvbnRlbnRFbGVtZW50KERvY3VtZW50Jiwg
V2ViS2l0TmFtZWRGbG93JiwgTm9kZSYgY29udGVudEVsZW1lbnQpOworCisgICAgc3RhdGljIHZv
aWQgbW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQoUGFnZSYsIGNvbnN0IEhpdFRlc3RSZXN1bHQmLCB1
bnNpZ25lZCBtb2RpZmllckZsYWdzKTsKKyAgICBzdGF0aWMgYm9vbCBoYW5kbGVNb3VzZVByZXNz
KEZyYW1lJik7CisgICAgc3RhdGljIGJvb2wgaGFuZGxlVG91Y2hFdmVudChGcmFtZSYsIE5vZGUm
KTsKKyAgICBzdGF0aWMgYm9vbCBmb3JjZVBzZXVkb1N0YXRlKEVsZW1lbnQmLCBDU1NTZWxlY3Rv
cjo6UHNldWRvQ2xhc3NUeXBlKTsKIAogICAgIHN0YXRpYyB2b2lkIHdpbGxTZW5kWE1MSHR0cFJl
cXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgdXJsKTsKICAgICBz
dGF0aWMgdm9pZCBkaWRTY2hlZHVsZVJlc291cmNlUmVxdWVzdChEb2N1bWVudCosIGNvbnN0IFN0
cmluZyYgdXJsKTsKQEAgLTE0Myw1MCArMTQzLDQ5IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgd2lsbENhbGxGdW5jdGlvbihTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBzY3JpcHROYW1lLCBpbnQgc2NyaXB0TGluZSk7
CiAgICAgc3RhdGljIHZvaWQgZGlkQ2FsbEZ1bmN0aW9uKGNvbnN0IEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbkNvb2tpZSYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKLSAgICBzdGF0aWMgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIHdpbGxEaXNwYXRjaFhIUlJlYWR5U3RhdGVDaGFu
Z2VFdmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgWE1MSHR0cFJlcXVlc3QqKTsKKyAgICBz
dGF0aWMgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIHdpbGxEaXNwYXRjaFhIUlJlYWR5
U3RhdGVDaGFuZ2VFdmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgWE1MSHR0cFJlcXVlc3Qm
KTsKICAgICBzdGF0aWMgdm9pZCBkaWREaXNwYXRjaFhIUlJlYWR5U3RhdGVDaGFuZ2VFdmVudChj
b25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUmKTsKLSAgICBzdGF0aWMgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIHdpbGxEaXNwYXRjaEV2ZW50KERvY3VtZW50KiwgY29u
c3QgRXZlbnQmLCBib29sIGhhc0V2ZW50TGlzdGVuZXJzKTsKKyAgICBzdGF0aWMgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uQ29va2llIHdpbGxEaXNwYXRjaEV2ZW50KERvY3VtZW50JiwgY29uc3Qg
RXZlbnQmLCBib29sIGhhc0V2ZW50TGlzdGVuZXJzKTsKICAgICBzdGF0aWMgdm9pZCBkaWREaXNw
YXRjaEV2ZW50KGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYpOwotICAgIHN0
YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgd2lsbEhhbmRsZUV2ZW50KFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqLCBFdmVudCopOworICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb25Db29raWUgd2lsbEhhbmRsZUV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBj
b25zdCBFdmVudCYpOwogICAgIHN0YXRpYyB2b2lkIGRpZEhhbmRsZUV2ZW50KGNvbnN0IEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYpOwotICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb25Db29raWUgd2lsbERpc3BhdGNoRXZlbnRPbldpbmRvdyhGcmFtZSosIGNvbnN0IEV2
ZW50JiBldmVudCwgRE9NV2luZG93KiB3aW5kb3cpOworICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb25Db29raWUgd2lsbERpc3BhdGNoRXZlbnRPbldpbmRvdyhGcmFtZSosIGNvbnN0
IEV2ZW50JiwgRE9NV2luZG93Jik7CiAgICAgc3RhdGljIHZvaWQgZGlkRGlzcGF0Y2hFdmVudE9u
V2luZG93KGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYpOwotICAgIHN0YXRp
YyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgd2lsbEV2YWx1YXRlU2NyaXB0KEZyYW1l
KiwgY29uc3QgU3RyaW5nJiB1cmwsIGludCBsaW5lTnVtYmVyKTsKLSAgICBzdGF0aWMgdm9pZCBk
aWRFdmFsdWF0ZVNjcmlwdChjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUmLCBG
cmFtZSopOwotICAgIHN0YXRpYyB2b2lkIHNjcmlwdHNFbmFibGVkKFBhZ2UqLCBib29sIGlzRW5h
YmxlZCk7Ci0gICAgc3RhdGljIHZvaWQgZGlkQ3JlYXRlSXNvbGF0ZWRDb250ZXh0KEZyYW1lKiwg
SlNDOjpFeGVjU3RhdGUqLCBTZWN1cml0eU9yaWdpbiopOworICAgIHN0YXRpYyBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb25Db29raWUgd2lsbEV2YWx1YXRlU2NyaXB0KEZyYW1lJiwgY29uc3QgU3Ry
aW5nJiB1cmwsIGludCBsaW5lTnVtYmVyKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRFdmFsdWF0ZVNj
cmlwdChjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUmLCBGcmFtZSYpOworICAg
IHN0YXRpYyB2b2lkIHNjcmlwdHNFbmFibGVkKFBhZ2UmLCBib29sIGlzRW5hYmxlZCk7CiAgICAg
c3RhdGljIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSB3aWxsRmlyZVRpbWVyKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqLCBpbnQgdGltZXJJZCk7CiAgICAgc3RhdGljIHZvaWQgZGlkRmly
ZVRpbWVyKGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYpOwotICAgIHN0YXRp
YyB2b2lkIGRpZEludmFsaWRhdGVMYXlvdXQoRnJhbWUqKTsKLSAgICBzdGF0aWMgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uQ29va2llIHdpbGxMYXlvdXQoRnJhbWUqKTsKKyAgICBzdGF0aWMgdm9p
ZCBkaWRJbnZhbGlkYXRlTGF5b3V0KEZyYW1lJik7CisgICAgc3RhdGljIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbkNvb2tpZSB3aWxsTGF5b3V0KEZyYW1lJik7CiAgICAgc3RhdGljIHZvaWQgZGlk
TGF5b3V0KGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYsIFJlbmRlck9iamVj
dCopOwotICAgIHN0YXRpYyB2b2lkIGRpZFNjcm9sbChQYWdlKik7Ci0gICAgc3RhdGljIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSB3aWxsRGlzcGF0Y2hYSFJMb2FkRXZlbnQoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCosIFhNTEh0dHBSZXF1ZXN0Kik7CisgICAgc3RhdGljIHZvaWQgZGlk
U2Nyb2xsKFBhZ2UmKTsKKyAgICBzdGF0aWMgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2ll
IHdpbGxEaXNwYXRjaFhIUkxvYWRFdmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgWE1MSHR0
cFJlcXVlc3QmKTsKICAgICBzdGF0aWMgdm9pZCBkaWREaXNwYXRjaFhIUkxvYWRFdmVudChjb25z
dCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUmKTsKLSAgICBzdGF0aWMgdm9pZCB3aWxs
U2Nyb2xsTGF5ZXIoRnJhbWUqKTsKLSAgICBzdGF0aWMgdm9pZCBkaWRTY3JvbGxMYXllcihGcmFt
ZSopOworICAgIHN0YXRpYyB2b2lkIHdpbGxTY3JvbGxMYXllcihGcmFtZSYpOworICAgIHN0YXRp
YyB2b2lkIGRpZFNjcm9sbExheWVyKEZyYW1lJik7CiAgICAgc3RhdGljIHZvaWQgd2lsbFBhaW50
KFJlbmRlck9iamVjdCopOwogICAgIHN0YXRpYyB2b2lkIGRpZFBhaW50KFJlbmRlck9iamVjdCos
IGNvbnN0IExheW91dFJlY3QmKTsKLSAgICBzdGF0aWMgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Q29va2llIHdpbGxSZWNhbGN1bGF0ZVN0eWxlKERvY3VtZW50Kik7CisgICAgc3RhdGljIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSB3aWxsUmVjYWxjdWxhdGVTdHlsZShEb2N1bWVudCYp
OwogICAgIHN0YXRpYyB2b2lkIGRpZFJlY2FsY3VsYXRlU3R5bGUoY29uc3QgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uQ29va2llJik7Ci0gICAgc3RhdGljIHZvaWQgZGlkU2NoZWR1bGVTdHlsZVJl
Y2FsY3VsYXRpb24oRG9jdW1lbnQqKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRTY2hlZHVsZVN0eWxl
UmVjYWxjdWxhdGlvbihEb2N1bWVudCYpOwogCi0gICAgc3RhdGljIHZvaWQgYXBwbHlFbXVsYXRl
ZE1lZGlhKEZyYW1lKiwgU3RyaW5nKik7CisgICAgc3RhdGljIHZvaWQgYXBwbHlFbXVsYXRlZE1l
ZGlhKEZyYW1lJiwgU3RyaW5nJik7CiAgICAgc3RhdGljIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KEZy
YW1lKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciosIFJlc291cmNl
UmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpOwogICAg
IHN0YXRpYyB2b2lkIGNvbnRpbnVlQWZ0ZXJQaW5nTG9hZGVyKEZyYW1lJiwgdW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciosIFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmKTsKLSAgICBzdGF0aWMgdm9pZCBtYXJrUmVzb3VyY2VBc0NhY2hlZChQ
YWdlKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKTsKLSAgICBzdGF0aWMgdm9pZCBkaWRMb2Fk
UmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUoUGFnZSosIERvY3VtZW50TG9hZGVyKiwgQ2FjaGVkUmVz
b3VyY2UqKTsKKyAgICBzdGF0aWMgdm9pZCBtYXJrUmVzb3VyY2VBc0NhY2hlZChQYWdlJiwgdW5z
aWduZWQgbG9uZyBpZGVudGlmaWVyKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRMb2FkUmVzb3VyY2VG
cm9tTWVtb3J5Q2FjaGUoUGFnZSYsIERvY3VtZW50TG9hZGVyKiwgQ2FjaGVkUmVzb3VyY2UqKTsK
ICAgICBzdGF0aWMgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIHdpbGxSZWNlaXZlUmVz
b3VyY2VEYXRhKEZyYW1lKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBpbnQgbGVuZ3RoKTsK
ICAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlUmVzb3VyY2VEYXRhKGNvbnN0IEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbkNvb2tpZSYpOwogICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b25Db29raWUgd2lsbFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlKEZyYW1lKiwgdW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgc3RhdGljIHZvaWQg
ZGlkUmVjZWl2ZVJlc291cmNlUmVzcG9uc2UoY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Q29va2llJiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciosIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmLCBSZXNvdXJjZUxvYWRlciopOwotICAgIHN0YXRpYyB2b2lkIGNv
bnRpbnVlQWZ0ZXJYRnJhbWVPcHRpb25zRGVuaWVkKEZyYW1lKiwgRG9jdW1lbnRMb2FkZXIqLCB1
bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKLSAgICBz
dGF0aWMgdm9pZCBjb250aW51ZVdpdGhQb2xpY3lEb3dubG9hZChGcmFtZSosIERvY3VtZW50TG9h
ZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7
Ci0gICAgc3RhdGljIHZvaWQgY29udGludWVXaXRoUG9saWN5SWdub3JlKEZyYW1lKiwgRG9jdW1l
bnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmKTsKKyAgICBzdGF0aWMgdm9pZCBjb250aW51ZUFmdGVyWEZyYW1lT3B0aW9uc0RlbmllZChG
cmFtZSosIERvY3VtZW50TG9hZGVyJiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJik7CisgICAgc3RhdGljIHZvaWQgY29udGludWVXaXRoUG9saWN5RG93
bmxvYWQoRnJhbWUqLCBEb2N1bWVudExvYWRlciYsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOworICAgIHN0YXRpYyB2b2lkIGNvbnRpbnVlV2l0aFBv
bGljeUlnbm9yZShGcmFtZSosIERvY3VtZW50TG9hZGVyJiwgdW5zaWduZWQgbG9uZyBpZGVudGlm
aWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2
ZURhdGEoRnJhbWUqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IGNoYXIqIGRhdGEs
IGludCBkYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgIHN0YXRpYyB2b2lk
IGRpZEZpbmlzaExvYWRpbmcoRnJhbWUqLCBEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcg
aWRlbnRpZmllciwgZG91YmxlIGZpbmlzaFRpbWUpOwogICAgIHN0YXRpYyB2b2lkIGRpZEZhaWxM
b2FkaW5nKEZyYW1lKiwgRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIs
IGNvbnN0IFJlc291cmNlRXJyb3ImKTsKLSAgICBzdGF0aWMgdm9pZCBkb2N1bWVudFRocmVhZGFi
bGVMb2FkZXJTdGFydGVkTG9hZGluZ0ZvckNsaWVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
dW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50Kik7CisgICAg
c3RhdGljIHZvaWQgZG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyU3RhcnRlZExvYWRpbmdGb3JDbGll
bnQoRG9jdW1lbnQmLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIFRocmVhZGFibGVMb2FkZXJD
bGllbnQqKTsKICAgICBzdGF0aWMgdm9pZCB3aWxsTG9hZFhIUihTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgVGhyZWFkYWJsZUxvYWRlckNsaWVudCosIGNvbnN0IFN0cmluZyYsIGNvbnN0IFVSTCYs
IGJvb2wsIFBhc3NSZWZQdHI8Rm9ybURhdGE+LCBjb25zdCBIVFRQSGVhZGVyTWFwJiwgYm9vbCk7
CiAgICAgc3RhdGljIHZvaWQgZGlkRmFpbFhIUkxvYWRpbmcoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIFRocmVhZGFibGVMb2FkZXJDbGllbnQqKTsKICAgICBzdGF0aWMgdm9pZCBkaWRGaW5pc2hY
SFJMb2FkaW5nKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50
KiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVN0cmluZywg
Y29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgc2VuZFVSTCwgdW5zaWduZWQgc2VuZExp
bmVOdW1iZXIsIHVuc2lnbmVkIHNlbmRDb2x1bW5OdW1iZXIpOwpAQCAtMTk2LDQ0ICsxOTUsNDQg
QEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIHNjcmlwdEltcG9ydGVkKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNl
U3RyaW5nKTsKICAgICBzdGF0aWMgdm9pZCBzY3JpcHRFeGVjdXRpb25CbG9ja2VkQnlDU1AoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgZGlyZWN0aXZlVGV4dCk7CiAgICAg
c3RhdGljIHZvaWQgZGlkUmVjZWl2ZVNjcmlwdFJlc3BvbnNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpOwotICAgIHN0YXRpYyB2b2lkIGRvbUNvbnRl
bnRMb2FkZWRFdmVudEZpcmVkKEZyYW1lKik7CisgICAgc3RhdGljIHZvaWQgZG9tQ29udGVudExv
YWRlZEV2ZW50RmlyZWQoRnJhbWUmKTsKICAgICBzdGF0aWMgdm9pZCBsb2FkRXZlbnRGaXJlZChG
cmFtZSopOwotICAgIHN0YXRpYyB2b2lkIGZyYW1lRGV0YWNoZWRGcm9tUGFyZW50KEZyYW1lKik7
Ci0gICAgc3RhdGljIHZvaWQgZGlkQ29tbWl0TG9hZChGcmFtZSosIERvY3VtZW50TG9hZGVyKik7
CisgICAgc3RhdGljIHZvaWQgZnJhbWVEZXRhY2hlZEZyb21QYXJlbnQoRnJhbWUmKTsKKyAgICBz
dGF0aWMgdm9pZCBkaWRDb21taXRMb2FkKEZyYW1lJiwgRG9jdW1lbnRMb2FkZXIqKTsKICAgICBz
dGF0aWMgdm9pZCBmcmFtZURvY3VtZW50VXBkYXRlZChGcmFtZSopOwotICAgIHN0YXRpYyB2b2lk
IGxvYWRlckRldGFjaGVkRnJvbUZyYW1lKEZyYW1lKiwgRG9jdW1lbnRMb2FkZXIqKTsKKyAgICBz
dGF0aWMgdm9pZCBsb2FkZXJEZXRhY2hlZEZyb21GcmFtZShGcmFtZSYsIERvY3VtZW50TG9hZGVy
Jik7CiAgICAgc3RhdGljIHZvaWQgZnJhbWVTdGFydGVkTG9hZGluZyhGcmFtZSYpOwogICAgIHN0
YXRpYyB2b2lkIGZyYW1lU3RvcHBlZExvYWRpbmcoRnJhbWUmKTsKICAgICBzdGF0aWMgdm9pZCBm
cmFtZVNjaGVkdWxlZE5hdmlnYXRpb24oRnJhbWUmLCBkb3VibGUgZGVsYXkpOwogICAgIHN0YXRp
YyB2b2lkIGZyYW1lQ2xlYXJlZFNjaGVkdWxlZE5hdmlnYXRpb24oRnJhbWUmKTsKLSAgICBzdGF0
aWMgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIHdpbGxSdW5KYXZhU2NyaXB0RGlhbG9n
KFBhZ2UqLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOworICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb25Db29raWUgd2lsbFJ1bkphdmFTY3JpcHREaWFsb2coUGFnZSYsIGNvbnN0IFN0
cmluZyYgbWVzc2FnZSk7CiAgICAgc3RhdGljIHZvaWQgZGlkUnVuSmF2YVNjcmlwdERpYWxvZyhj
b25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUmKTsKLSAgICBzdGF0aWMgdm9pZCB3
aWxsRGVzdHJveUNhY2hlZFJlc291cmNlKENhY2hlZFJlc291cmNlKik7CisgICAgc3RhdGljIHZv
aWQgd2lsbERlc3Ryb3lDYWNoZWRSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSYpOwogCiAgICAgc3Rh
dGljIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSB3aWxsV3JpdGVIVE1MKERvY3VtZW50
KiwgdW5zaWduZWQgc3RhcnRMaW5lKTsKICAgICBzdGF0aWMgdm9pZCBkaWRXcml0ZUhUTUwoY29u
c3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llJiwgdW5zaWduZWQgZW5kTGluZSk7CiAK
ICAgICAvLyBGSVhNRTogUmVtb3ZlIG9uY2Ugd2Ugbm8gbG9uZ2VyIGdlbmVyYXRlIHN0YWNrcyBv
dXRzaWRlIG9mIEluc3BlY3Rvci4KLSAgICBzdGF0aWMgdm9pZCBhZGRNZXNzYWdlVG9Db25zb2xl
KFBhZ2UqLCBNZXNzYWdlU291cmNlLCBNZXNzYWdlVHlwZSwgTWVzc2FnZUxldmVsLCBjb25zdCBT
dHJpbmcmIG1lc3NhZ2UsIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpTY3JpcHRDYWxsU3RhY2s+LCB1
bnNpZ25lZCBsb25nIHJlcXVlc3RJZGVudGlmaWVyID0gMCk7Ci0gICAgc3RhdGljIHZvaWQgYWRk
TWVzc2FnZVRvQ29uc29sZShQYWdlKiwgTWVzc2FnZVNvdXJjZSwgTWVzc2FnZVR5cGUsIE1lc3Nh
Z2VMZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBKU0M6OkV4ZWNTdGF0ZSosIFBhc3NSZWZQ
dHI8SW5zcGVjdG9yOjpTY3JpcHRBcmd1bWVudHM+LCB1bnNpZ25lZCBsb25nIHJlcXVlc3RJZGVu
dGlmaWVyID0gMCk7Ci0gICAgc3RhdGljIHZvaWQgYWRkTWVzc2FnZVRvQ29uc29sZShQYWdlKiwg
TWVzc2FnZVNvdXJjZSwgTWVzc2FnZVR5cGUsIE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBt
ZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNjcmlwdElELCB1bnNpZ25lZCBsaW5lTnVtYmVyLCB1bnNp
Z25lZCBjb2x1bW5OdW1iZXIsIEpTQzo6RXhlY1N0YXRlKiA9IG51bGxwdHIsIHVuc2lnbmVkIGxv
bmcgcmVxdWVzdElkZW50aWZpZXIgPSAwKTsKKyAgICBzdGF0aWMgdm9pZCBhZGRNZXNzYWdlVG9D
b25zb2xlKFBhZ2UmLCBNZXNzYWdlU291cmNlLCBNZXNzYWdlVHlwZSwgTWVzc2FnZUxldmVsLCBj
b25zdCBTdHJpbmcmIG1lc3NhZ2UsIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpTY3JpcHRDYWxsU3Rh
Y2s+LCB1bnNpZ25lZCBsb25nIHJlcXVlc3RJZGVudGlmaWVyID0gMCk7CisgICAgc3RhdGljIHZv
aWQgYWRkTWVzc2FnZVRvQ29uc29sZShQYWdlJiwgTWVzc2FnZVNvdXJjZSwgTWVzc2FnZVR5cGUs
IE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBKU0M6OkV4ZWNTdGF0ZSosIFBh
c3NSZWZQdHI8SW5zcGVjdG9yOjpTY3JpcHRBcmd1bWVudHM+LCB1bnNpZ25lZCBsb25nIHJlcXVl
c3RJZGVudGlmaWVyID0gMCk7CisgICAgc3RhdGljIHZvaWQgYWRkTWVzc2FnZVRvQ29uc29sZShQ
YWdlJiwgTWVzc2FnZVNvdXJjZSwgTWVzc2FnZVR5cGUsIE1lc3NhZ2VMZXZlbCwgY29uc3QgU3Ry
aW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNjcmlwdElELCB1bnNpZ25lZCBsaW5lTnVtYmVy
LCB1bnNpZ25lZCBjb2x1bW5OdW1iZXIsIEpTQzo6RXhlY1N0YXRlKiA9IG51bGxwdHIsIHVuc2ln
bmVkIGxvbmcgcmVxdWVzdElkZW50aWZpZXIgPSAwKTsKIAogICAgIC8vIEZJWE1FOiBDb252ZXJ0
IHRvIFNjcmlwdEFyZ3VtZW50cyB0byBtYXRjaCBub24td29ya2VyIGNvbnRleHQuCiAgICAgc3Rh
dGljIHZvaWQgYWRkTWVzc2FnZVRvQ29uc29sZShXb3JrZXJHbG9iYWxTY29wZSosIE1lc3NhZ2VT
b3VyY2UsIE1lc3NhZ2VUeXBlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwg
UGFzc1JlZlB0cjxJbnNwZWN0b3I6OlNjcmlwdENhbGxTdGFjaz4sIHVuc2lnbmVkIGxvbmcgcmVx
dWVzdElkZW50aWZpZXIgPSAwKTsKICAgICBzdGF0aWMgdm9pZCBhZGRNZXNzYWdlVG9Db25zb2xl
KFdvcmtlckdsb2JhbFNjb3BlKiwgTWVzc2FnZVNvdXJjZSwgTWVzc2FnZVR5cGUsIE1lc3NhZ2VM
ZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNjcmlwdElELCB1bnNp
Z25lZCBsaW5lTnVtYmVyLCB1bnNpZ25lZCBjb2x1bW5OdW1iZXIsIEpTQzo6RXhlY1N0YXRlKiA9
IG51bGxwdHIsIHVuc2lnbmVkIGxvbmcgcmVxdWVzdElkZW50aWZpZXIgPSAwKTsKIAotICAgIHN0
YXRpYyB2b2lkIGNvbnNvbGVDb3VudChQYWdlKiwgSlNDOjpFeGVjU3RhdGUqLCBQYXNzUmVmUHRy
PEluc3BlY3Rvcjo6U2NyaXB0QXJndW1lbnRzPik7Ci0gICAgc3RhdGljIHZvaWQgc3RhcnRDb25z
b2xlVGltaW5nKEZyYW1lKiwgY29uc3QgU3RyaW5nJiB0aXRsZSk7Ci0gICAgc3RhdGljIHZvaWQg
c3RvcENvbnNvbGVUaW1pbmcoRnJhbWUqLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBQYXNzUmVmUHRy
PEluc3BlY3Rvcjo6U2NyaXB0Q2FsbFN0YWNrPik7Ci0gICAgc3RhdGljIHZvaWQgY29uc29sZVRp
bWVTdGFtcChGcmFtZSosIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpTY3JpcHRBcmd1bWVudHM+KTsK
KyAgICBzdGF0aWMgdm9pZCBjb25zb2xlQ291bnQoUGFnZSYsIEpTQzo6RXhlY1N0YXRlKiwgUGFz
c1JlZlB0cjxJbnNwZWN0b3I6OlNjcmlwdEFyZ3VtZW50cz4pOworICAgIHN0YXRpYyB2b2lkIHN0
YXJ0Q29uc29sZVRpbWluZyhGcmFtZSYsIGNvbnN0IFN0cmluZyYgdGl0bGUpOworICAgIHN0YXRp
YyB2b2lkIHN0b3BDb25zb2xlVGltaW5nKEZyYW1lJiwgY29uc3QgU3RyaW5nJiB0aXRsZSwgUGFz
c1JlZlB0cjxJbnNwZWN0b3I6OlNjcmlwdENhbGxTdGFjaz4pOworICAgIHN0YXRpYyB2b2lkIGNv
bnNvbGVUaW1lU3RhbXAoRnJhbWUmLCBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6U2NyaXB0QXJndW1l
bnRzPik7CiAKICAgICBzdGF0aWMgdm9pZCBkaWRSZXF1ZXN0QW5pbWF0aW9uRnJhbWUoRG9jdW1l
bnQqLCBpbnQgY2FsbGJhY2tJZCk7CiAgICAgc3RhdGljIHZvaWQgZGlkQ2FuY2VsQW5pbWF0aW9u
RnJhbWUoRG9jdW1lbnQqLCBpbnQgY2FsbGJhY2tJZCk7CiAgICAgc3RhdGljIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbkNvb2tpZSB3aWxsRmlyZUFuaW1hdGlvbkZyYW1lKERvY3VtZW50KiwgaW50
IGNhbGxiYWNrSWQpOwogICAgIHN0YXRpYyB2b2lkIGRpZEZpcmVBbmltYXRpb25GcmFtZShjb25z
dCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUmKTsKIAotICAgIHN0YXRpYyB2b2lkIHN0
YXJ0UHJvZmlsaW5nKFBhZ2UqLCBKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYgdGl0bGUp
OwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEpTQzo6UHJvZmlsZT4gc3RvcFByb2ZpbGluZyhQYWdl
KiwgSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBTdHJpbmcmIHRpdGxlKTsKKyAgICBzdGF0aWMgdm9p
ZCBzdGFydFByb2ZpbGluZyhQYWdlJiwgSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBTdHJpbmcmIHRp
dGxlKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxKU0M6OlByb2ZpbGU+IHN0b3BQcm9maWxpbmco
UGFnZSYsIEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgU3RyaW5nJiB0aXRsZSk7CiAKICNpZiBFTkFC
TEUoU1FMX0RBVEFCQVNFKQogICAgIHN0YXRpYyB2b2lkIGRpZE9wZW5EYXRhYmFzZShTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxEYXRhYmFzZT4sIGNvbnN0IFN0cmluZyYgZG9t
YWluLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmVyc2lvbik7CkBAIC0yNDcs
MjIgKzI0NiwyMiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgd2lsbEV2YWx1YXRlV29ya2Vy
U2NyaXB0KFdvcmtlckdsb2JhbFNjb3BlKiwgaW50IHdvcmtlclRocmVhZFN0YXJ0TW9kZSk7CiAK
ICNpZiBFTkFCTEUoV0VCX1JFUExBWSkKLSAgICBzdGF0aWMgdm9pZCBzZXNzaW9uQ3JlYXRlZChQ
YWdlKiwgUGFzc1JlZlB0cjxSZXBsYXlTZXNzaW9uPik7Ci0gICAgc3RhdGljIHZvaWQgc2Vzc2lv
bkxvYWRlZChQYWdlKiwgUGFzc1JlZlB0cjxSZXBsYXlTZXNzaW9uPik7Ci0gICAgc3RhdGljIHZv
aWQgc2Vzc2lvbk1vZGlmaWVkKFBhZ2UqLCBQYXNzUmVmUHRyPFJlcGxheVNlc3Npb24+KTsKKyAg
ICBzdGF0aWMgdm9pZCBzZXNzaW9uQ3JlYXRlZChQYWdlJiwgUGFzc1JlZlB0cjxSZXBsYXlTZXNz
aW9uPik7CisgICAgc3RhdGljIHZvaWQgc2Vzc2lvbkxvYWRlZChQYWdlJiwgUGFzc1JlZlB0cjxS
ZXBsYXlTZXNzaW9uPik7CisgICAgc3RhdGljIHZvaWQgc2Vzc2lvbk1vZGlmaWVkKFBhZ2UmLCBQ
YXNzUmVmUHRyPFJlcGxheVNlc3Npb24+KTsKIAotICAgIHN0YXRpYyB2b2lkIHNlZ21lbnRDcmVh
dGVkKFBhZ2UqLCBQYXNzUmVmUHRyPFJlcGxheVNlc3Npb25TZWdtZW50Pik7Ci0gICAgc3RhdGlj
IHZvaWQgc2VnbWVudENvbXBsZXRlZChQYWdlKiwgUGFzc1JlZlB0cjxSZXBsYXlTZXNzaW9uU2Vn
bWVudD4pOwotICAgIHN0YXRpYyB2b2lkIHNlZ21lbnRMb2FkZWQoUGFnZSosIFBhc3NSZWZQdHI8
UmVwbGF5U2Vzc2lvblNlZ21lbnQ+KTsKLSAgICBzdGF0aWMgdm9pZCBzZWdtZW50VW5sb2FkZWQo
UGFnZSopOworICAgIHN0YXRpYyB2b2lkIHNlZ21lbnRDcmVhdGVkKFBhZ2UmLCBQYXNzUmVmUHRy
PFJlcGxheVNlc3Npb25TZWdtZW50Pik7CisgICAgc3RhdGljIHZvaWQgc2VnbWVudENvbXBsZXRl
ZChQYWdlJiwgUGFzc1JlZlB0cjxSZXBsYXlTZXNzaW9uU2VnbWVudD4pOworICAgIHN0YXRpYyB2
b2lkIHNlZ21lbnRMb2FkZWQoUGFnZSYsIFBhc3NSZWZQdHI8UmVwbGF5U2Vzc2lvblNlZ21lbnQ+
KTsKKyAgICBzdGF0aWMgdm9pZCBzZWdtZW50VW5sb2FkZWQoUGFnZSYpOwogCi0gICAgc3RhdGlj
IHZvaWQgY2FwdHVyZVN0YXJ0ZWQoUGFnZSopOwotICAgIHN0YXRpYyB2b2lkIGNhcHR1cmVTdG9w
cGVkKFBhZ2UqKTsKKyAgICBzdGF0aWMgdm9pZCBjYXB0dXJlU3RhcnRlZChQYWdlJik7CisgICAg
c3RhdGljIHZvaWQgY2FwdHVyZVN0b3BwZWQoUGFnZSYpOwogCi0gICAgc3RhdGljIHZvaWQgcGxh
eWJhY2tTdGFydGVkKFBhZ2UqKTsKLSAgICBzdGF0aWMgdm9pZCBwbGF5YmFja1BhdXNlZChQYWdl
KiwgY29uc3QgUmVwbGF5UG9zaXRpb24mKTsKLSAgICBzdGF0aWMgdm9pZCBwbGF5YmFja0hpdFBv
c2l0aW9uKFBhZ2UqLCBjb25zdCBSZXBsYXlQb3NpdGlvbiYpOwotICAgIHN0YXRpYyB2b2lkIHBs
YXliYWNrRmluaXNoZWQoUGFnZSopOworICAgIHN0YXRpYyB2b2lkIHBsYXliYWNrU3RhcnRlZChQ
YWdlJik7CisgICAgc3RhdGljIHZvaWQgcGxheWJhY2tQYXVzZWQoUGFnZSYsIGNvbnN0IFJlcGxh
eVBvc2l0aW9uJik7CisgICAgc3RhdGljIHZvaWQgcGxheWJhY2tIaXRQb3NpdGlvbihQYWdlJiwg
Y29uc3QgUmVwbGF5UG9zaXRpb24mKTsKKyAgICBzdGF0aWMgdm9pZCBwbGF5YmFja0ZpbmlzaGVk
KFBhZ2UmKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQpAQCAtMjgzLDYgKzI4
MiwxMCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgbmV0d29ya1N0YXRlQ2hhbmdlZChQYWdl
Kik7CiAgICAgc3RhdGljIHZvaWQgdXBkYXRlQXBwbGljYXRpb25DYWNoZVN0YXR1cyhGcmFtZSop
OwogCisgICAgc3RhdGljIHZvaWQgbGF5ZXJUcmVlRGlkQ2hhbmdlKFBhZ2UqKTsKKyAgICBzdGF0
aWMgdm9pZCByZW5kZXJMYXllckRlc3Ryb3llZChQYWdlKiwgY29uc3QgUmVuZGVyTGF5ZXImKTsK
KyAgICBzdGF0aWMgdm9pZCBwc2V1ZG9FbGVtZW50RGVzdHJveWVkKFBhZ2UqLCBQc2V1ZG9FbGVt
ZW50Jik7CisKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIHN0YXRpYyB2b2lkIGZyb250ZW5k
Q3JlYXRlZCgpIHsgc19mcm9udGVuZENvdW50ZXIgKz0gMTsgfQogICAgIHN0YXRpYyB2b2lkIGZy
b250ZW5kRGVsZXRlZCgpIHsgc19mcm9udGVuZENvdW50ZXIgLT0gMTsgfQpAQCAtMjk4LDIwNyAr
MzAxLDIwNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgcmVwbGF5QWdlbnRFbmFibGVkKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqKSB7IHJldHVybiBmYWxzZTsgfQogI2VuZGlmCiAKLSAgICBz
dGF0aWMgdm9pZCByZWdpc3Rlckluc3RydW1lbnRpbmdBZ2VudHMoSW5zdHJ1bWVudGluZ0FnZW50
cyopOwotICAgIHN0YXRpYyB2b2lkIHVucmVnaXN0ZXJJbnN0cnVtZW50aW5nQWdlbnRzKEluc3Ry
dW1lbnRpbmdBZ2VudHMqKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgSW5zdHJ1bWVudGlu
Z0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50c0ZvclBhZ2UoUGFnZSopOwogCi0gICAgc3RhdGlj
IHZvaWQgbGF5ZXJUcmVlRGlkQ2hhbmdlKFBhZ2UqKTsKLSAgICBzdGF0aWMgdm9pZCByZW5kZXJM
YXllckRlc3Ryb3llZChQYWdlKiwgY29uc3QgUmVuZGVyTGF5ZXIqKTsKLSAgICBzdGF0aWMgdm9p
ZCBwc2V1ZG9FbGVtZW50RGVzdHJveWVkKFBhZ2UqLCBQc2V1ZG9FbGVtZW50Kik7CisgICAgc3Rh
dGljIHZvaWQgcmVnaXN0ZXJJbnN0cnVtZW50aW5nQWdlbnRzKEluc3RydW1lbnRpbmdBZ2VudHMm
KTsKKyAgICBzdGF0aWMgdm9pZCB1bnJlZ2lzdGVySW5zdHJ1bWVudGluZ0FnZW50cyhJbnN0cnVt
ZW50aW5nQWdlbnRzJik7CiAKIHByaXZhdGU6CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBz
dGF0aWMgdm9pZCBkaWRDbGVhcldpbmRvd09iamVjdEluV29ybGRJbXBsKEluc3RydW1lbnRpbmdB
Z2VudHMqLCBGcmFtZSosIERPTVdyYXBwZXJXb3JsZCYpOwotICAgIHN0YXRpYyBib29sIGlzRGVi
dWdnZXJQYXVzZWRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqKTsKLQotICAgIHN0YXRpYyB2b2lk
IHdpbGxJbnNlcnRET01Ob2RlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwgTm9kZSogcGFyZW50
KTsKLSAgICBzdGF0aWMgdm9pZCBkaWRJbnNlcnRET01Ob2RlSW1wbChJbnN0cnVtZW50aW5nQWdl
bnRzKiwgTm9kZSopOwotICAgIHN0YXRpYyB2b2lkIHdpbGxSZW1vdmVET01Ob2RlSW1wbChJbnN0
cnVtZW50aW5nQWdlbnRzKiwgTm9kZSopOwotICAgIHN0YXRpYyB2b2lkIGRpZFJlbW92ZURPTU5v
ZGVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCBOb2RlKik7Ci0gICAgc3RhdGljIHZvaWQgd2ls
bE1vZGlmeURPTUF0dHJJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCBFbGVtZW50KiwgY29uc3Qg
QXRvbWljU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuZXdWYWx1ZSk7Ci0g
ICAgc3RhdGljIHZvaWQgZGlkTW9kaWZ5RE9NQXR0ckltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyos
IEVsZW1lbnQqLCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYg
dmFsdWUpOwotICAgIHN0YXRpYyB2b2lkIGRpZFJlbW92ZURPTUF0dHJJbXBsKEluc3RydW1lbnRp
bmdBZ2VudHMqLCBFbGVtZW50KiwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKTsKLSAgICBzdGF0
aWMgdm9pZCBjaGFyYWN0ZXJEYXRhTW9kaWZpZWRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCBD
aGFyYWN0ZXJEYXRhKik7Ci0gICAgc3RhdGljIHZvaWQgZGlkSW52YWxpZGF0ZVN0eWxlQXR0cklt
cGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIE5vZGUqKTsKLSAgICBzdGF0aWMgdm9pZCBmcmFtZVdp
bmRvd0Rpc2NhcmRlZEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIERPTVdpbmRvdyopOwotICAg
IHN0YXRpYyB2b2lkIG1lZGlhUXVlcnlSZXN1bHRDaGFuZ2VkSW1wbChJbnN0cnVtZW50aW5nQWdl
bnRzKik7Ci0gICAgc3RhdGljIHZvaWQgZGlkUHVzaFNoYWRvd1Jvb3RJbXBsKEluc3RydW1lbnRp
bmdBZ2VudHMqLCBFbGVtZW50KiBob3N0LCBTaGFkb3dSb290Kik7Ci0gICAgc3RhdGljIHZvaWQg
d2lsbFBvcFNoYWRvd1Jvb3RJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCBFbGVtZW50KiBob3N0
LCBTaGFkb3dSb290Kik7Ci0gICAgc3RhdGljIHZvaWQgZGlkQ3JlYXRlTmFtZWRGbG93SW1wbChJ
bnN0cnVtZW50aW5nQWdlbnRzKiwgRG9jdW1lbnQqLCBXZWJLaXROYW1lZEZsb3cqKTsKLSAgICBz
dGF0aWMgdm9pZCB3aWxsUmVtb3ZlTmFtZWRGbG93SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwg
RG9jdW1lbnQqLCBXZWJLaXROYW1lZEZsb3cqKTsKLSAgICBzdGF0aWMgdm9pZCBkaWRDaGFuZ2VS
ZWdpb25PdmVyc2V0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwgRG9jdW1lbnQqLCBXZWJLaXRO
YW1lZEZsb3cqKTsKLSAgICBzdGF0aWMgdm9pZCBkaWRSZWdpc3Rlck5hbWVkRmxvd0NvbnRlbnRF
bGVtZW50SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwgRG9jdW1lbnQqLCBXZWJLaXROYW1lZEZs
b3cqLCBOb2RlKiBjb250ZW50RWxlbWVudCwgTm9kZSogbmV4dENvbnRlbnRFbGVtZW50ID0gbnVs
bHB0cik7Ci0gICAgc3RhdGljIHZvaWQgZGlkVW5yZWdpc3Rlck5hbWVkRmxvd0NvbnRlbnRFbGVt
ZW50SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwgRG9jdW1lbnQqLCBXZWJLaXROYW1lZEZsb3cq
LCBOb2RlKiBjb250ZW50RWxlbWVudCk7Ci0KLSAgICBzdGF0aWMgdm9pZCBtb3VzZURpZE1vdmVP
dmVyRWxlbWVudEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIGNvbnN0IEhpdFRlc3RSZXN1bHQm
LCB1bnNpZ25lZCBtb2RpZmllckZsYWdzKTsKLSAgICBzdGF0aWMgYm9vbCBoYW5kbGVUb3VjaEV2
ZW50SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwgTm9kZSopOwotICAgIHN0YXRpYyBib29sIGhh
bmRsZU1vdXNlUHJlc3NJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqKTsKLSAgICBzdGF0aWMgYm9v
bCBmb3JjZVBzZXVkb1N0YXRlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwgRWxlbWVudCosIENT
U1NlbGVjdG9yOjpQc2V1ZG9DbGFzc1R5cGUpOwotCi0gICAgc3RhdGljIHZvaWQgd2lsbFNlbmRY
TUxIdHRwUmVxdWVzdEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIGNvbnN0IFN0cmluZyYgdXJs
KTsKLSAgICBzdGF0aWMgdm9pZCBkaWRTY2hlZHVsZVJlc291cmNlUmVxdWVzdEltcGwoSW5zdHJ1
bWVudGluZ0FnZW50cyosIGNvbnN0IFN0cmluZyYgdXJsLCBGcmFtZSopOwotICAgIHN0YXRpYyB2
b2lkIGRpZEluc3RhbGxUaW1lckltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIGludCB0aW1lcklk
LCBpbnQgdGltZW91dCwgYm9vbCBzaW5nbGVTaG90LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7
Ci0gICAgc3RhdGljIHZvaWQgZGlkUmVtb3ZlVGltZXJJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMq
LCBpbnQgdGltZXJJZCwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwotCi0gICAgc3RhdGljIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSB3aWxsQ2FsbEZ1bmN0aW9uSW1wbChJbnN0cnVt
ZW50aW5nQWdlbnRzKiwgY29uc3QgU3RyaW5nJiBzY3JpcHROYW1lLCBpbnQgc2NyaXB0TGluZSwg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOworICAgIHN0YXRpYyB2b2lkIGRpZENsZWFyV2luZG93
T2JqZWN0SW5Xb3JsZEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIEZyYW1lJiwgRE9NV3JhcHBl
cldvcmxkJik7CisgICAgc3RhdGljIGJvb2wgaXNEZWJ1Z2dlclBhdXNlZEltcGwoSW5zdHJ1bWVu
dGluZ0FnZW50cyYpOworCisgICAgc3RhdGljIHZvaWQgd2lsbEluc2VydERPTU5vZGVJbXBsKElu
c3RydW1lbnRpbmdBZ2VudHMmLCBOb2RlJiBwYXJlbnQpOworICAgIHN0YXRpYyB2b2lkIGRpZElu
c2VydERPTU5vZGVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBOb2RlJik7CisgICAgc3RhdGlj
IHZvaWQgd2lsbFJlbW92ZURPTU5vZGVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBOb2RlJik7
CisgICAgc3RhdGljIHZvaWQgZGlkUmVtb3ZlRE9NTm9kZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50
cyYsIE5vZGUmKTsKKyAgICBzdGF0aWMgdm9pZCB3aWxsTW9kaWZ5RE9NQXR0ckltcGwoSW5zdHJ1
bWVudGluZ0FnZW50cyYsIEVsZW1lbnQmLCBjb25zdCBBdG9taWNTdHJpbmcmIG9sZFZhbHVlLCBj
b25zdCBBdG9taWNTdHJpbmcmIG5ld1ZhbHVlKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRNb2RpZnlE
T01BdHRySW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgRWxlbWVudCYsIGNvbnN0IEF0b21pY1N0
cmluZyYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSk7CisgICAgc3RhdGljIHZvaWQg
ZGlkUmVtb3ZlRE9NQXR0ckltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIEVsZW1lbnQmLCBjb25z
dCBBdG9taWNTdHJpbmcmIG5hbWUpOworICAgIHN0YXRpYyB2b2lkIGNoYXJhY3RlckRhdGFNb2Rp
ZmllZEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIENoYXJhY3RlckRhdGEmKTsKKyAgICBzdGF0
aWMgdm9pZCBkaWRJbnZhbGlkYXRlU3R5bGVBdHRySW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwg
Tm9kZSYpOworICAgIHN0YXRpYyB2b2lkIGZyYW1lV2luZG93RGlzY2FyZGVkSW1wbChJbnN0cnVt
ZW50aW5nQWdlbnRzJiwgRE9NV2luZG93Kik7CisgICAgc3RhdGljIHZvaWQgbWVkaWFRdWVyeVJl
c3VsdENoYW5nZWRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmKTsKKyAgICBzdGF0aWMgdm9pZCBk
aWRQdXNoU2hhZG93Um9vdEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIEVsZW1lbnQmIGhvc3Qs
IFNoYWRvd1Jvb3QmKTsKKyAgICBzdGF0aWMgdm9pZCB3aWxsUG9wU2hhZG93Um9vdEltcGwoSW5z
dHJ1bWVudGluZ0FnZW50cyYsIEVsZW1lbnQmIGhvc3QsIFNoYWRvd1Jvb3QmKTsKKyAgICBzdGF0
aWMgdm9pZCBkaWRDcmVhdGVOYW1lZEZsb3dJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBEb2N1
bWVudCosIFdlYktpdE5hbWVkRmxvdyYpOworICAgIHN0YXRpYyB2b2lkIHdpbGxSZW1vdmVOYW1l
ZEZsb3dJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBEb2N1bWVudCosIFdlYktpdE5hbWVkRmxv
dyYpOworICAgIHN0YXRpYyB2b2lkIGRpZENoYW5nZVJlZ2lvbk92ZXJzZXRJbXBsKEluc3RydW1l
bnRpbmdBZ2VudHMmLCBEb2N1bWVudCYsIFdlYktpdE5hbWVkRmxvdyYpOworICAgIHN0YXRpYyB2
b2lkIGRpZFJlZ2lzdGVyTmFtZWRGbG93Q29udGVudEVsZW1lbnRJbXBsKEluc3RydW1lbnRpbmdB
Z2VudHMmLCBEb2N1bWVudCYsIFdlYktpdE5hbWVkRmxvdyYsIE5vZGUmIGNvbnRlbnRFbGVtZW50
LCBOb2RlKiBuZXh0Q29udGVudEVsZW1lbnQgPSBudWxscHRyKTsKKyAgICBzdGF0aWMgdm9pZCBk
aWRVbnJlZ2lzdGVyTmFtZWRGbG93Q29udGVudEVsZW1lbnRJbXBsKEluc3RydW1lbnRpbmdBZ2Vu
dHMmLCBEb2N1bWVudCYsIFdlYktpdE5hbWVkRmxvdyYsIE5vZGUmIGNvbnRlbnRFbGVtZW50KTsK
KworICAgIHN0YXRpYyB2b2lkIG1vdXNlRGlkTW92ZU92ZXJFbGVtZW50SW1wbChJbnN0cnVtZW50
aW5nQWdlbnRzJiwgY29uc3QgSGl0VGVzdFJlc3VsdCYsIHVuc2lnbmVkIG1vZGlmaWVyRmxhZ3Mp
OworICAgIHN0YXRpYyBib29sIGhhbmRsZVRvdWNoRXZlbnRJbXBsKEluc3RydW1lbnRpbmdBZ2Vu
dHMmLCBOb2RlJik7CisgICAgc3RhdGljIGJvb2wgaGFuZGxlTW91c2VQcmVzc0ltcGwoSW5zdHJ1
bWVudGluZ0FnZW50cyYpOworICAgIHN0YXRpYyBib29sIGZvcmNlUHNldWRvU3RhdGVJbXBsKElu
c3RydW1lbnRpbmdBZ2VudHMmLCBFbGVtZW50JiwgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzVHlw
ZSk7CisKKyAgICBzdGF0aWMgdm9pZCB3aWxsU2VuZFhNTEh0dHBSZXF1ZXN0SW1wbChJbnN0cnVt
ZW50aW5nQWdlbnRzJiwgY29uc3QgU3RyaW5nJiB1cmwpOworICAgIHN0YXRpYyB2b2lkIGRpZFNj
aGVkdWxlUmVzb3VyY2VSZXF1ZXN0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgY29uc3QgU3Ry
aW5nJiB1cmwsIEZyYW1lKik7CisgICAgc3RhdGljIHZvaWQgZGlkSW5zdGFsbFRpbWVySW1wbChJ
bnN0cnVtZW50aW5nQWdlbnRzJiwgaW50IHRpbWVySWQsIGludCB0aW1lb3V0LCBib29sIHNpbmds
ZVNob3QsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRSZW1v
dmVUaW1lckltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIGludCB0aW1lcklkLCBTY3JpcHRFeGVj
dXRpb25Db250ZXh0Kik7CisKKyAgICBzdGF0aWMgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29v
a2llIHdpbGxDYWxsRnVuY3Rpb25JbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBjb25zdCBTdHJp
bmcmIHNjcmlwdE5hbWUsIGludCBzY3JpcHRMaW5lLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7
CiAgICAgc3RhdGljIHZvaWQgZGlkQ2FsbEZ1bmN0aW9uSW1wbChjb25zdCBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb25Db29raWUmLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7Ci0gICAgc3RhdGlj
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSB3aWxsRGlzcGF0Y2hYSFJSZWFkeVN0YXRl
Q2hhbmdlRXZlbnRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCBYTUxIdHRwUmVxdWVzdCosIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKKyAgICBzdGF0aWMgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uQ29va2llIHdpbGxEaXNwYXRjaFhIUlJlYWR5U3RhdGVDaGFuZ2VFdmVudEltcGwoSW5zdHJ1
bWVudGluZ0FnZW50cyYsIFhNTEh0dHBSZXF1ZXN0JiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCop
OwogICAgIHN0YXRpYyB2b2lkIGRpZERpc3BhdGNoWEhSUmVhZHlTdGF0ZUNoYW5nZUV2ZW50SW1w
bChjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUmKTsKLSAgICBzdGF0aWMgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIHdpbGxEaXNwYXRjaEV2ZW50SW1wbChJbnN0cnVt
ZW50aW5nQWdlbnRzKiwgY29uc3QgRXZlbnQmLCBib29sIGhhc0V2ZW50TGlzdGVuZXJzLCBEb2N1
bWVudCopOwotICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgd2lsbEhh
bmRsZUV2ZW50SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwgRXZlbnQqKTsKKyAgICBzdGF0aWMg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIHdpbGxEaXNwYXRjaEV2ZW50SW1wbChJbnN0
cnVtZW50aW5nQWdlbnRzJiwgRG9jdW1lbnQmLCBjb25zdCBFdmVudCYsIGJvb2wgaGFzRXZlbnRM
aXN0ZW5lcnMpOworICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgd2ls
bEhhbmRsZUV2ZW50SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgY29uc3QgRXZlbnQmKTsKICAg
ICBzdGF0aWMgdm9pZCBkaWRIYW5kbGVFdmVudEltcGwoY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uQ29va2llJik7CiAgICAgc3RhdGljIHZvaWQgZGlkRGlzcGF0Y2hFdmVudEltcGwoY29u
c3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llJik7Ci0gICAgc3RhdGljIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbkNvb2tpZSB3aWxsRGlzcGF0Y2hFdmVudE9uV2luZG93SW1wbChJbnN0
cnVtZW50aW5nQWdlbnRzKiwgY29uc3QgRXZlbnQmLCBET01XaW5kb3cqKTsKKyAgICBzdGF0aWMg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIHdpbGxEaXNwYXRjaEV2ZW50T25XaW5kb3dJ
bXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBjb25zdCBFdmVudCYsIERPTVdpbmRvdyYpOwogICAg
IHN0YXRpYyB2b2lkIGRpZERpc3BhdGNoRXZlbnRPbldpbmRvd0ltcGwoY29uc3QgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uQ29va2llJik7Ci0gICAgc3RhdGljIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbkNvb2tpZSB3aWxsRXZhbHVhdGVTY3JpcHRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCBj
b25zdCBTdHJpbmcmIHVybCwgaW50IGxpbmVOdW1iZXIsIEZyYW1lKik7Ci0gICAgc3RhdGljIHZv
aWQgZGlkRXZhbHVhdGVTY3JpcHRJbXBsKGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNv
b2tpZSYsIEZyYW1lKik7Ci0gICAgc3RhdGljIHZvaWQgc2NyaXB0c0VuYWJsZWRJbXBsKEluc3Ry
dW1lbnRpbmdBZ2VudHMqLCBib29sIGlzRW5hYmxlZCk7Ci0gICAgc3RhdGljIHZvaWQgZGlkQ3Jl
YXRlSXNvbGF0ZWRDb250ZXh0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwgRnJhbWUqLCBKU0M6
OkV4ZWNTdGF0ZSosIFNlY3VyaXR5T3JpZ2luKik7Ci0gICAgc3RhdGljIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbkNvb2tpZSB3aWxsRmlyZVRpbWVySW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwg
aW50IHRpbWVySWQsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKKyAgICBzdGF0aWMgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIHdpbGxFdmFsdWF0ZVNjcmlwdEltcGwoSW5zdHJ1bWVu
dGluZ0FnZW50cyYsIEZyYW1lJiwgY29uc3QgU3RyaW5nJiB1cmwsIGludCBsaW5lTnVtYmVyKTsK
KyAgICBzdGF0aWMgdm9pZCBkaWRFdmFsdWF0ZVNjcmlwdEltcGwoY29uc3QgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uQ29va2llJiwgRnJhbWUmKTsKKyAgICBzdGF0aWMgdm9pZCBzY3JpcHRzRW5h
YmxlZEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIGJvb2wgaXNFbmFibGVkKTsKKyAgICBzdGF0
aWMgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIHdpbGxGaXJlVGltZXJJbXBsKEluc3Ry
dW1lbnRpbmdBZ2VudHMmLCBpbnQgdGltZXJJZCwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwog
ICAgIHN0YXRpYyB2b2lkIGRpZEZpcmVUaW1lckltcGwoY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uQ29va2llJik7Ci0gICAgc3RhdGljIHZvaWQgZGlkSW52YWxpZGF0ZUxheW91dEltcGwo
SW5zdHJ1bWVudGluZ0FnZW50cyosIEZyYW1lKik7Ci0gICAgc3RhdGljIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbkNvb2tpZSB3aWxsTGF5b3V0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwgRnJh
bWUqKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRJbnZhbGlkYXRlTGF5b3V0SW1wbChJbnN0cnVtZW50
aW5nQWdlbnRzJiwgRnJhbWUmKTsKKyAgICBzdGF0aWMgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Q29va2llIHdpbGxMYXlvdXRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBGcmFtZSYpOwogICAg
IHN0YXRpYyB2b2lkIGRpZExheW91dEltcGwoY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Q29va2llJiwgUmVuZGVyT2JqZWN0Kik7Ci0gICAgc3RhdGljIHZvaWQgZGlkU2Nyb2xsSW1wbChJ
bnN0cnVtZW50aW5nQWdlbnRzKik7Ci0gICAgc3RhdGljIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bkNvb2tpZSB3aWxsRGlzcGF0Y2hYSFJMb2FkRXZlbnRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMq
LCBYTUxIdHRwUmVxdWVzdCosIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKKyAgICBzdGF0aWMg
dm9pZCBkaWRTY3JvbGxJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmKTsKKyAgICBzdGF0aWMgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIHdpbGxEaXNwYXRjaFhIUkxvYWRFdmVudEltcGwo
SW5zdHJ1bWVudGluZ0FnZW50cyYsIFhNTEh0dHBSZXF1ZXN0JiwgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCopOwogICAgIHN0YXRpYyB2b2lkIGRpZERpc3BhdGNoWEhSTG9hZEV2ZW50SW1wbChjb25z
dCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUmKTsKLSAgICBzdGF0aWMgdm9pZCB3aWxs
U2Nyb2xsTGF5ZXJJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCBGcmFtZSopOwotICAgIHN0YXRp
YyB2b2lkIGRpZFNjcm9sbExheWVySW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKik7Ci0gICAgc3Rh
dGljIHZvaWQgd2lsbFBhaW50SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwgUmVuZGVyT2JqZWN0
Kik7Ci0gICAgc3RhdGljIHZvaWQgZGlkUGFpbnRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCBS
ZW5kZXJPYmplY3QqLCBjb25zdCBMYXlvdXRSZWN0Jik7Ci0gICAgc3RhdGljIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbkNvb2tpZSB3aWxsUmVjYWxjdWxhdGVTdHlsZUltcGwoSW5zdHJ1bWVudGlu
Z0FnZW50cyosIEZyYW1lKik7CisgICAgc3RhdGljIHZvaWQgd2lsbFNjcm9sbExheWVySW1wbChJ
bnN0cnVtZW50aW5nQWdlbnRzJiwgRnJhbWUmKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRTY3JvbGxM
YXllckltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYpOworICAgIHN0YXRpYyB2b2lkIHdpbGxQYWlu
dEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIFJlbmRlck9iamVjdCopOworICAgIHN0YXRpYyB2
b2lkIGRpZFBhaW50SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgUmVuZGVyT2JqZWN0KiwgY29u
c3QgTGF5b3V0UmVjdCYpOworICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29r
aWUgd2lsbFJlY2FsY3VsYXRlU3R5bGVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBEb2N1bWVu
dCYpOwogICAgIHN0YXRpYyB2b2lkIGRpZFJlY2FsY3VsYXRlU3R5bGVJbXBsKGNvbnN0IEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYpOwotICAgIHN0YXRpYyB2b2lkIGRpZFNjaGVkdWxl
U3R5bGVSZWNhbGN1bGF0aW9uSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwgRG9jdW1lbnQqKTsK
LQotICAgIHN0YXRpYyB2b2lkIGFwcGx5RW11bGF0ZWRNZWRpYUltcGwoSW5zdHJ1bWVudGluZ0Fn
ZW50cyosIFN0cmluZyopOwotICAgIHN0YXRpYyB2b2lkIHdpbGxTZW5kUmVxdWVzdEltcGwoSW5z
dHJ1bWVudGluZ0FnZW50cyosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2Fk
ZXIqLCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJl
c3BvbnNlKTsKLSAgICBzdGF0aWMgdm9pZCBjb250aW51ZUFmdGVyUGluZ0xvYWRlckltcGwoSW5z
dHJ1bWVudGluZ0FnZW50cyosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2Fk
ZXIqLCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgc3Rh
dGljIHZvaWQgbWFya1Jlc291cmNlQXNDYWNoZWRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCB1
bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpOwotICAgIHN0YXRpYyB2b2lkIGRpZExvYWRSZXNvdXJj
ZUZyb21NZW1vcnlDYWNoZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIERvY3VtZW50TG9hZGVy
KiwgQ2FjaGVkUmVzb3VyY2UqKTsKLSAgICBzdGF0aWMgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Q29va2llIHdpbGxSZWNlaXZlUmVzb3VyY2VEYXRhSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwg
dW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBGcmFtZSosIGludCBsZW5ndGgpOworICAgIHN0YXRp
YyB2b2lkIGRpZFNjaGVkdWxlU3R5bGVSZWNhbGN1bGF0aW9uSW1wbChJbnN0cnVtZW50aW5nQWdl
bnRzJiwgRG9jdW1lbnQmKTsKKworICAgIHN0YXRpYyB2b2lkIGFwcGx5RW11bGF0ZWRNZWRpYUlt
cGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIFN0cmluZyYpOworICAgIHN0YXRpYyB2b2lkIHdpbGxT
ZW5kUmVxdWVzdEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIHVuc2lnbmVkIGxvbmcgaWRlbnRp
ZmllciwgRG9jdW1lbnRMb2FkZXIqLCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKTsKKyAgICBzdGF0aWMgdm9pZCBjb250aW51ZUFmdGVy
UGluZ0xvYWRlckltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIHVuc2lnbmVkIGxvbmcgaWRlbnRp
ZmllciwgRG9jdW1lbnRMb2FkZXIqLCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJik7CisgICAgc3RhdGljIHZvaWQgbWFya1Jlc291cmNlQXNDYWNoZWRJbXBsKEluc3Ry
dW1lbnRpbmdBZ2VudHMmLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpOworICAgIHN0YXRpYyB2
b2lkIGRpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50
cyYsIERvY3VtZW50TG9hZGVyKiwgQ2FjaGVkUmVzb3VyY2UqKTsKKyAgICBzdGF0aWMgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIHdpbGxSZWNlaXZlUmVzb3VyY2VEYXRhSW1wbChJbnN0
cnVtZW50aW5nQWdlbnRzJiwgRnJhbWUqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGludCBs
ZW5ndGgpOwogICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVSZXNvdXJjZURhdGFJbXBsKGNvbnN0
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYpOwotICAgIHN0YXRpYyBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb25Db29raWUgd2lsbFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlSW1wbChJbnN0
cnVtZW50aW5nQWdlbnRzKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiwgRnJhbWUqKTsKKyAgICBzdGF0aWMgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Q29va2llIHdpbGxSZWNlaXZlUmVzb3VyY2VSZXNwb25zZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50
cyYsIEZyYW1lKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJik7CiAgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZVJlc291cmNlUmVzcG9uc2VJbXBsKGNv
bnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYsIHVuc2lnbmVkIGxvbmcgaWRlbnRp
ZmllciwgRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VM
b2FkZXIqKTsKLSAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlUmVzb3VyY2VSZXNwb25zZUJ1dENh
bmNlbGVkSW1wbChGcmFtZSosIERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlm
aWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgc3RhdGljIHZvaWQgY29udGludWVB
ZnRlclhGcmFtZU9wdGlvbnNEZW5pZWRJbXBsKEZyYW1lKiwgRG9jdW1lbnRMb2FkZXIqLCB1bnNp
Z25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKLSAgICBzdGF0
aWMgdm9pZCBjb250aW51ZVdpdGhQb2xpY3lEb3dubG9hZEltcGwoRnJhbWUqLCBEb2N1bWVudExv
YWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYp
OwotICAgIHN0YXRpYyB2b2lkIGNvbnRpbnVlV2l0aFBvbGljeUlnbm9yZUltcGwoRnJhbWUqLCBE
b2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYpOwotICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVEYXRhSW1wbChJbnN0cnVtZW50
aW5nQWdlbnRzKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBjaGFyKiBkYXRhLCBp
bnQgZGF0YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKTsKLSAgICBzdGF0aWMgdm9pZCBk
aWRGaW5pc2hMb2FkaW5nSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwgdW5zaWduZWQgbG9uZyBp
ZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciosIGRvdWJsZSBmaW5pc2hUaW1lKTsKLSAgICBzdGF0
aWMgdm9pZCBkaWRGYWlsTG9hZGluZ0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBSZXNvdXJjZUVycm9yJik7
Ci0gICAgc3RhdGljIHZvaWQgZG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyU3RhcnRlZExvYWRpbmdG
b3JDbGllbnRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZp
ZXIsIFRocmVhZGFibGVMb2FkZXJDbGllbnQqKTsKLSAgICBzdGF0aWMgdm9pZCB3aWxsTG9hZFhI
UkltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIFRocmVhZGFibGVMb2FkZXJDbGllbnQqLCBjb25z
dCBTdHJpbmcmLCBjb25zdCBVUkwmLCBib29sLCBQYXNzUmVmUHRyPEZvcm1EYXRhPiwgY29uc3Qg
SFRUUEhlYWRlck1hcCYsIGJvb2wpOwotICAgIHN0YXRpYyB2b2lkIGRpZEZhaWxYSFJMb2FkaW5n
SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwgVGhyZWFkYWJsZUxvYWRlckNsaWVudCopOwotICAg
IHN0YXRpYyB2b2lkIGRpZEZpbmlzaFhIUkxvYWRpbmdJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMq
LCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50KiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25z
dCBTdHJpbmcmIHNvdXJjZVN0cmluZywgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYg
c2VuZFVSTCwgdW5zaWduZWQgc2VuZExpbmVOdW1iZXIsIHVuc2lnbmVkIHNlbmRDb2x1bW5OdW1i
ZXIpOwotICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVYSFJSZXNwb25zZUltcGwoSW5zdHJ1bWVu
dGluZ0FnZW50cyosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcik7Ci0gICAgc3RhdGljIHZvaWQg
d2lsbExvYWRYSFJTeW5jaHJvbm91c2x5SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKik7Ci0gICAg
c3RhdGljIHZvaWQgZGlkTG9hZFhIUlN5bmNocm9ub3VzbHlJbXBsKEluc3RydW1lbnRpbmdBZ2Vu
dHMqKTsKLSAgICBzdGF0aWMgdm9pZCBzY3JpcHRJbXBvcnRlZEltcGwoSW5zdHJ1bWVudGluZ0Fn
ZW50cyosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VTdHJp
bmcpOwotICAgIHN0YXRpYyB2b2lkIHNjcmlwdEV4ZWN1dGlvbkJsb2NrZWRCeUNTUEltcGwoSW5z
dHJ1bWVudGluZ0FnZW50cyosIGNvbnN0IFN0cmluZyYgZGlyZWN0aXZlVGV4dCk7Ci0gICAgc3Rh
dGljIHZvaWQgZGlkUmVjZWl2ZVNjcmlwdFJlc3BvbnNlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRz
KiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKTsKLSAgICBzdGF0aWMgdm9pZCBkb21Db250ZW50
TG9hZGVkRXZlbnRGaXJlZEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIEZyYW1lKik7Ci0gICAg
c3RhdGljIHZvaWQgbG9hZEV2ZW50RmlyZWRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCBGcmFt
ZSopOwotICAgIHN0YXRpYyB2b2lkIGZyYW1lRGV0YWNoZWRGcm9tUGFyZW50SW1wbChJbnN0cnVt
ZW50aW5nQWdlbnRzKiwgRnJhbWUqKTsKLSAgICBzdGF0aWMgdm9pZCBkaWRDb21taXRMb2FkSW1w
bChJbnN0cnVtZW50aW5nQWdlbnRzKiwgUGFnZSosIERvY3VtZW50TG9hZGVyKik7Ci0gICAgc3Rh
dGljIHZvaWQgZnJhbWVEb2N1bWVudFVwZGF0ZWRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCBG
cmFtZSopOwotICAgIHN0YXRpYyB2b2lkIGxvYWRlckRldGFjaGVkRnJvbUZyYW1lSW1wbChJbnN0
cnVtZW50aW5nQWdlbnRzKiwgRG9jdW1lbnRMb2FkZXIqKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRS
ZWNlaXZlUmVzb3VyY2VSZXNwb25zZUJ1dENhbmNlbGVkSW1wbChGcmFtZSosIERvY3VtZW50TG9h
ZGVyJiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7
CisgICAgc3RhdGljIHZvaWQgY29udGludWVBZnRlclhGcmFtZU9wdGlvbnNEZW5pZWRJbXBsKEZy
YW1lKiwgRG9jdW1lbnRMb2FkZXImLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmKTsKKyAgICBzdGF0aWMgdm9pZCBjb250aW51ZVdpdGhQb2xpY3lEb3du
bG9hZEltcGwoRnJhbWUqLCBEb2N1bWVudExvYWRlciYsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmll
ciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOworICAgIHN0YXRpYyB2b2lkIGNvbnRpbnVlV2l0
aFBvbGljeUlnbm9yZUltcGwoRnJhbWUqLCBEb2N1bWVudExvYWRlciYsIHVuc2lnbmVkIGxvbmcg
aWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOworICAgIHN0YXRpYyB2b2lkIGRp
ZFJlY2VpdmVEYXRhSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgdW5zaWduZWQgbG9uZyBpZGVu
dGlmaWVyLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxlbmd0aCwgaW50IGVuY29kZWREYXRh
TGVuZ3RoKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRGaW5pc2hMb2FkaW5nSW1wbChJbnN0cnVtZW50
aW5nQWdlbnRzJiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciosIGRv
dWJsZSBmaW5pc2hUaW1lKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRGYWlsTG9hZGluZ0ltcGwoSW5z
dHJ1bWVudGluZ0FnZW50cyYsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2Fk
ZXIqLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CisgICAgc3RhdGljIHZvaWQgZG9jdW1lbnRUaHJl
YWRhYmxlTG9hZGVyU3RhcnRlZExvYWRpbmdGb3JDbGllbnRJbXBsKEluc3RydW1lbnRpbmdBZ2Vu
dHMmLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIFRocmVhZGFibGVMb2FkZXJDbGllbnQqKTsK
KyAgICBzdGF0aWMgdm9pZCB3aWxsTG9hZFhIUkltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIFRo
cmVhZGFibGVMb2FkZXJDbGllbnQqLCBjb25zdCBTdHJpbmcmLCBjb25zdCBVUkwmLCBib29sLCBQ
YXNzUmVmUHRyPEZvcm1EYXRhPiwgY29uc3QgSFRUUEhlYWRlck1hcCYsIGJvb2wpOworICAgIHN0
YXRpYyB2b2lkIGRpZEZhaWxYSFJMb2FkaW5nSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgVGhy
ZWFkYWJsZUxvYWRlckNsaWVudCopOworICAgIHN0YXRpYyB2b2lkIGRpZEZpbmlzaFhIUkxvYWRp
bmdJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50KiwgdW5z
aWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVN0cmluZywgY29uc3Qg
U3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgc2VuZFVSTCwgdW5zaWduZWQgc2VuZExpbmVOdW1i
ZXIsIHVuc2lnbmVkIHNlbmRDb2x1bW5OdW1iZXIpOworICAgIHN0YXRpYyB2b2lkIGRpZFJlY2Vp
dmVYSFJSZXNwb25zZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIHVuc2lnbmVkIGxvbmcgaWRl
bnRpZmllcik7CisgICAgc3RhdGljIHZvaWQgd2lsbExvYWRYSFJTeW5jaHJvbm91c2x5SW1wbChJ
bnN0cnVtZW50aW5nQWdlbnRzJik7CisgICAgc3RhdGljIHZvaWQgZGlkTG9hZFhIUlN5bmNocm9u
b3VzbHlJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmKTsKKyAgICBzdGF0aWMgdm9pZCBzY3JpcHRJ
bXBvcnRlZEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmll
ciwgY29uc3QgU3RyaW5nJiBzb3VyY2VTdHJpbmcpOworICAgIHN0YXRpYyB2b2lkIHNjcmlwdEV4
ZWN1dGlvbkJsb2NrZWRCeUNTUEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIGNvbnN0IFN0cmlu
ZyYgZGlyZWN0aXZlVGV4dCk7CisgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZVNjcmlwdFJlc3Bv
bnNlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKTsK
KyAgICBzdGF0aWMgdm9pZCBkb21Db250ZW50TG9hZGVkRXZlbnRGaXJlZEltcGwoSW5zdHJ1bWVu
dGluZ0FnZW50cyYsIEZyYW1lJik7CisgICAgc3RhdGljIHZvaWQgbG9hZEV2ZW50RmlyZWRJbXBs
KEluc3RydW1lbnRpbmdBZ2VudHMmLCBGcmFtZSopOworICAgIHN0YXRpYyB2b2lkIGZyYW1lRGV0
YWNoZWRGcm9tUGFyZW50SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgRnJhbWUmKTsKKyAgICBz
dGF0aWMgdm9pZCBkaWRDb21taXRMb2FkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgUGFnZSos
IERvY3VtZW50TG9hZGVyKik7CisgICAgc3RhdGljIHZvaWQgZnJhbWVEb2N1bWVudFVwZGF0ZWRJ
bXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBGcmFtZSopOworICAgIHN0YXRpYyB2b2lkIGxvYWRl
ckRldGFjaGVkRnJvbUZyYW1lSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgRG9jdW1lbnRMb2Fk
ZXImKTsKICAgICBzdGF0aWMgdm9pZCBmcmFtZVN0YXJ0ZWRMb2FkaW5nSW1wbChJbnN0cnVtZW50
aW5nQWdlbnRzJiwgRnJhbWUmKTsKICAgICBzdGF0aWMgdm9pZCBmcmFtZVN0b3BwZWRMb2FkaW5n
SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgRnJhbWUmKTsKICAgICBzdGF0aWMgdm9pZCBmcmFt
ZVNjaGVkdWxlZE5hdmlnYXRpb25JbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBGcmFtZSYsIGRv
dWJsZSBkZWxheSk7CiAgICAgc3RhdGljIHZvaWQgZnJhbWVDbGVhcmVkU2NoZWR1bGVkTmF2aWdh
dGlvbkltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIEZyYW1lJik7Ci0gICAgc3RhdGljIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSB3aWxsUnVuSmF2YVNjcmlwdERpYWxvZ0ltcGwoSW5z
dHJ1bWVudGluZ0FnZW50cyosIGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CisgICAgc3RhdGljIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSB3aWxsUnVuSmF2YVNjcmlwdERpYWxvZ0ltcGwo
SW5zdHJ1bWVudGluZ0FnZW50cyYsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CiAgICAgc3RhdGlj
IHZvaWQgZGlkUnVuSmF2YVNjcmlwdERpYWxvZ0ltcGwoY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uQ29va2llJik7Ci0gICAgc3RhdGljIHZvaWQgd2lsbERlc3Ryb3lDYWNoZWRSZXNvdXJj
ZUltcGwoQ2FjaGVkUmVzb3VyY2UqKTsKKyAgICBzdGF0aWMgdm9pZCB3aWxsRGVzdHJveUNhY2hl
ZFJlc291cmNlSW1wbChDYWNoZWRSZXNvdXJjZSYpOwogCi0gICAgc3RhdGljIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbkNvb2tpZSB3aWxsV3JpdGVIVE1MSW1wbChJbnN0cnVtZW50aW5nQWdlbnRz
KiwgdW5zaWduZWQgc3RhcnRMaW5lLCBGcmFtZSopOworICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb25Db29raWUgd2lsbFdyaXRlSFRNTEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYs
IHVuc2lnbmVkIHN0YXJ0TGluZSwgRnJhbWUqKTsKICAgICBzdGF0aWMgdm9pZCBkaWRXcml0ZUhU
TUxJbXBsKGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYsIHVuc2lnbmVkIGVu
ZExpbmUpOwogCi0gICAgc3RhdGljIHZvaWQgYWRkTWVzc2FnZVRvQ29uc29sZUltcGwoSW5zdHJ1
bWVudGluZ0FnZW50cyosIE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VUeXBlLCBNZXNzYWdlTGV2ZWws
IGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgSlNDOjpFeGVjU3RhdGUqLCBQYXNzUmVmUHRyPEluc3Bl
Y3Rvcjo6U2NyaXB0QXJndW1lbnRzPiwgdW5zaWduZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmllcik7
Ci0gICAgc3RhdGljIHZvaWQgYWRkTWVzc2FnZVRvQ29uc29sZUltcGwoSW5zdHJ1bWVudGluZ0Fn
ZW50cyosIE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VUeXBlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0
cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzY3JpcHRJRCwgdW5zaWduZWQgbGluZU51bWJl
ciwgdW5zaWduZWQgY29sdW1uTnVtYmVyLCBKU0M6OkV4ZWNTdGF0ZSosIHVuc2lnbmVkIGxvbmcg
cmVxdWVzdElkZW50aWZpZXIpOworICAgIHN0YXRpYyB2b2lkIGFkZE1lc3NhZ2VUb0NvbnNvbGVJ
bXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBNZXNzYWdlU291cmNlLCBNZXNzYWdlVHlwZSwgTWVz
c2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIEpTQzo6RXhlY1N0YXRlKiwgUGFzc1Jl
ZlB0cjxJbnNwZWN0b3I6OlNjcmlwdEFyZ3VtZW50cz4sIHVuc2lnbmVkIGxvbmcgcmVxdWVzdElk
ZW50aWZpZXIpOworICAgIHN0YXRpYyB2b2lkIGFkZE1lc3NhZ2VUb0NvbnNvbGVJbXBsKEluc3Ry
dW1lbnRpbmdBZ2VudHMmLCBNZXNzYWdlU291cmNlLCBNZXNzYWdlVHlwZSwgTWVzc2FnZUxldmVs
LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgc2NyaXB0SUQsIHVuc2lnbmVk
IGxpbmVOdW1iZXIsIHVuc2lnbmVkIGNvbHVtbk51bWJlciwgSlNDOjpFeGVjU3RhdGUqLCB1bnNp
Z25lZCBsb25nIHJlcXVlc3RJZGVudGlmaWVyKTsKIAogICAgIC8vIEZJWE1FOiBSZW1vdmUgb25j
ZSB3ZSBubyBsb25nZXIgZ2VuZXJhdGUgc3RhY2tzIG91dHNpZGUgb2YgSW5zcGVjdG9yLgotICAg
IHN0YXRpYyB2b2lkIGFkZE1lc3NhZ2VUb0NvbnNvbGVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMq
LCBNZXNzYWdlU291cmNlLCBNZXNzYWdlVHlwZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcm
IG1lc3NhZ2UsIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpTY3JpcHRDYWxsU3RhY2s+LCB1bnNpZ25l
ZCBsb25nIHJlcXVlc3RJZGVudGlmaWVyKTsKKyAgICBzdGF0aWMgdm9pZCBhZGRNZXNzYWdlVG9D
b25zb2xlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgTWVzc2FnZVNvdXJjZSwgTWVzc2FnZVR5
cGUsIE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBQYXNzUmVmUHRyPEluc3Bl
Y3Rvcjo6U2NyaXB0Q2FsbFN0YWNrPiwgdW5zaWduZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmllcik7
CiAKLSAgICBzdGF0aWMgdm9pZCBjb25zb2xlQ291bnRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMq
LCBKU0M6OkV4ZWNTdGF0ZSosIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpTY3JpcHRBcmd1bWVudHM+
KTsKLSAgICBzdGF0aWMgdm9pZCBzdGFydENvbnNvbGVUaW1pbmdJbXBsKEluc3RydW1lbnRpbmdB
Z2VudHMqLCBGcmFtZSosIGNvbnN0IFN0cmluZyYgdGl0bGUpOwotICAgIHN0YXRpYyB2b2lkIHN0
b3BDb25zb2xlVGltaW5nSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwgRnJhbWUqLCBjb25zdCBT
dHJpbmcmIHRpdGxlLCBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6U2NyaXB0Q2FsbFN0YWNrPik7Ci0g
ICAgc3RhdGljIHZvaWQgY29uc29sZVRpbWVTdGFtcEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyos
IEZyYW1lKiwgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlNjcmlwdEFyZ3VtZW50cz4pOworICAgIHN0
YXRpYyB2b2lkIGNvbnNvbGVDb3VudEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIEpTQzo6RXhl
Y1N0YXRlKiwgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlNjcmlwdEFyZ3VtZW50cz4pOworICAgIHN0
YXRpYyB2b2lkIHN0YXJ0Q29uc29sZVRpbWluZ0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIEZy
YW1lJiwgY29uc3QgU3RyaW5nJiB0aXRsZSk7CisgICAgc3RhdGljIHZvaWQgc3RvcENvbnNvbGVU
aW1pbmdJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBGcmFtZSYsIGNvbnN0IFN0cmluZyYgdGl0
bGUsIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpTY3JpcHRDYWxsU3RhY2s+KTsKKyAgICBzdGF0aWMg
dm9pZCBjb25zb2xlVGltZVN0YW1wSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgRnJhbWUmLCBQ
YXNzUmVmUHRyPEluc3BlY3Rvcjo6U2NyaXB0QXJndW1lbnRzPik7CiAKLSAgICBzdGF0aWMgdm9p
ZCBkaWRSZXF1ZXN0QW5pbWF0aW9uRnJhbWVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCBpbnQg
Y2FsbGJhY2tJZCwgRnJhbWUqKTsKLSAgICBzdGF0aWMgdm9pZCBkaWRDYW5jZWxBbmltYXRpb25G
cmFtZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIGludCBjYWxsYmFja0lkLCBGcmFtZSopOwot
ICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgd2lsbEZpcmVBbmltYXRp
b25GcmFtZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIGludCBjYWxsYmFja0lkLCBGcmFtZSop
OworICAgIHN0YXRpYyB2b2lkIGRpZFJlcXVlc3RBbmltYXRpb25GcmFtZUltcGwoSW5zdHJ1bWVu
dGluZ0FnZW50cyYsIGludCBjYWxsYmFja0lkLCBGcmFtZSopOworICAgIHN0YXRpYyB2b2lkIGRp
ZENhbmNlbEFuaW1hdGlvbkZyYW1lSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgaW50IGNhbGxi
YWNrSWQsIEZyYW1lKik7CisgICAgc3RhdGljIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tp
ZSB3aWxsRmlyZUFuaW1hdGlvbkZyYW1lSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgaW50IGNh
bGxiYWNrSWQsIEZyYW1lKik7CiAgICAgc3RhdGljIHZvaWQgZGlkRmlyZUFuaW1hdGlvbkZyYW1l
SW1wbChjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUmKTsKIAotICAgIHN0YXRp
YyB2b2lkIHN0YXJ0UHJvZmlsaW5nSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwgSlNDOjpFeGVj
U3RhdGUqLCBjb25zdCBTdHJpbmcmIHRpdGxlKTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxKU0M6
OlByb2ZpbGU+IHN0b3BQcm9maWxpbmdJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCBKU0M6OkV4
ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYgdGl0bGUpOworICAgIHN0YXRpYyB2b2lkIHN0YXJ0UHJv
ZmlsaW5nSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBT
dHJpbmcmIHRpdGxlKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxKU0M6OlByb2ZpbGU+IHN0b3BQ
cm9maWxpbmdJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0
IFN0cmluZyYgdGl0bGUpOwogCiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKLSAgICBzdGF0aWMg
dm9pZCBkaWRPcGVuRGF0YWJhc2VJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCBQYXNzUmVmUHRy
PERhdGFiYXNlPiwgY29uc3QgU3RyaW5nJiBkb21haW4sIGNvbnN0IFN0cmluZyYgbmFtZSwgY29u
c3QgU3RyaW5nJiB2ZXJzaW9uKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRPcGVuRGF0YWJhc2VJbXBs
KEluc3RydW1lbnRpbmdBZ2VudHMmLCBQYXNzUmVmUHRyPERhdGFiYXNlPiwgY29uc3QgU3RyaW5n
JiBkb21haW4sIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uKTsKICNl
bmRpZgogCi0gICAgc3RhdGljIHZvaWQgZGlkRGlzcGF0Y2hET01TdG9yYWdlRXZlbnRJbXBsKElu
c3RydW1lbnRpbmdBZ2VudHMqLCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiBvbGRW
YWx1ZSwgY29uc3QgU3RyaW5nJiBuZXdWYWx1ZSwgU3RvcmFnZVR5cGUsIFNlY3VyaXR5T3JpZ2lu
KiwgUGFnZSopOworICAgIHN0YXRpYyB2b2lkIGRpZERpc3BhdGNoRE9NU3RvcmFnZUV2ZW50SW1w
bChJbnN0cnVtZW50aW5nQWdlbnRzJiwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYg
b2xkVmFsdWUsIGNvbnN0IFN0cmluZyYgbmV3VmFsdWUsIFN0b3JhZ2VUeXBlLCBTZWN1cml0eU9y
aWdpbiosIFBhZ2UqKTsKIAotICAgIHN0YXRpYyBib29sIHNob3VsZFBhdXNlRGVkaWNhdGVkV29y
a2VyT25TdGFydEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyopOwotICAgIHN0YXRpYyB2b2lkIGRp
ZFN0YXJ0V29ya2VyR2xvYmFsU2NvcGVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCBXb3JrZXJH
bG9iYWxTY29wZVByb3h5KiwgY29uc3QgVVJMJik7Ci0gICAgc3RhdGljIHZvaWQgd29ya2VyR2xv
YmFsU2NvcGVUZXJtaW5hdGVkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwgV29ya2VyR2xvYmFs
U2NvcGVQcm94eSopOworICAgIHN0YXRpYyBib29sIHNob3VsZFBhdXNlRGVkaWNhdGVkV29ya2Vy
T25TdGFydEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYpOworICAgIHN0YXRpYyB2b2lkIGRpZFN0
YXJ0V29ya2VyR2xvYmFsU2NvcGVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBXb3JrZXJHbG9i
YWxTY29wZVByb3h5KiwgY29uc3QgVVJMJik7CisgICAgc3RhdGljIHZvaWQgd29ya2VyR2xvYmFs
U2NvcGVUZXJtaW5hdGVkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgV29ya2VyR2xvYmFsU2Nv
cGVQcm94eSopOwogCiAjaWYgRU5BQkxFKFdFQl9SRVBMQVkpCi0gICAgc3RhdGljIHZvaWQgc2Vz
c2lvbkNyZWF0ZWRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCBQYXNzUmVmUHRyPFJlcGxheVNl
c3Npb24+KTsKLSAgICBzdGF0aWMgdm9pZCBzZXNzaW9uTG9hZGVkSW1wbChJbnN0cnVtZW50aW5n
QWdlbnRzKiwgUGFzc1JlZlB0cjxSZXBsYXlTZXNzaW9uPik7Ci0gICAgc3RhdGljIHZvaWQgc2Vz
c2lvbk1vZGlmaWVkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwgUGFzc1JlZlB0cjxSZXBsYXlT
ZXNzaW9uPik7CisgICAgc3RhdGljIHZvaWQgc2Vzc2lvbkNyZWF0ZWRJbXBsKEluc3RydW1lbnRp
bmdBZ2VudHMmLCBQYXNzUmVmUHRyPFJlcGxheVNlc3Npb24+KTsKKyAgICBzdGF0aWMgdm9pZCBz
ZXNzaW9uTG9hZGVkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgUGFzc1JlZlB0cjxSZXBsYXlT
ZXNzaW9uPik7CisgICAgc3RhdGljIHZvaWQgc2Vzc2lvbk1vZGlmaWVkSW1wbChJbnN0cnVtZW50
aW5nQWdlbnRzJiwgUGFzc1JlZlB0cjxSZXBsYXlTZXNzaW9uPik7CiAKLSAgICBzdGF0aWMgdm9p
ZCBzZWdtZW50Q3JlYXRlZEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIFBhc3NSZWZQdHI8UmVw
bGF5U2Vzc2lvblNlZ21lbnQ+KTsKLSAgICBzdGF0aWMgdm9pZCBzZWdtZW50Q29tcGxldGVkSW1w
bChJbnN0cnVtZW50aW5nQWdlbnRzKiwgUGFzc1JlZlB0cjxSZXBsYXlTZXNzaW9uU2VnbWVudD4p
OwotICAgIHN0YXRpYyB2b2lkIHNlZ21lbnRMb2FkZWRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMq
LCBQYXNzUmVmUHRyPFJlcGxheVNlc3Npb25TZWdtZW50Pik7Ci0gICAgc3RhdGljIHZvaWQgc2Vn
bWVudFVubG9hZGVkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKik7CisgICAgc3RhdGljIHZvaWQg
c2VnbWVudENyZWF0ZWRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBQYXNzUmVmUHRyPFJlcGxh
eVNlc3Npb25TZWdtZW50Pik7CisgICAgc3RhdGljIHZvaWQgc2VnbWVudENvbXBsZXRlZEltcGwo
SW5zdHJ1bWVudGluZ0FnZW50cyYsIFBhc3NSZWZQdHI8UmVwbGF5U2Vzc2lvblNlZ21lbnQ+KTsK
KyAgICBzdGF0aWMgdm9pZCBzZWdtZW50TG9hZGVkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwg
UGFzc1JlZlB0cjxSZXBsYXlTZXNzaW9uU2VnbWVudD4pOworICAgIHN0YXRpYyB2b2lkIHNlZ21l
bnRVbmxvYWRlZEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYpOwogCi0gICAgc3RhdGljIHZvaWQg
Y2FwdHVyZVN0YXJ0ZWRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqKTsKLSAgICBzdGF0aWMgdm9p
ZCBjYXB0dXJlU3RvcHBlZEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyopOworICAgIHN0YXRpYyB2
b2lkIGNhcHR1cmVTdGFydGVkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJik7CisgICAgc3RhdGlj
IHZvaWQgY2FwdHVyZVN0b3BwZWRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmKTsKIAotICAgIHN0
YXRpYyB2b2lkIHBsYXliYWNrU3RhcnRlZEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyopOwotICAg
IHN0YXRpYyB2b2lkIHBsYXliYWNrUGF1c2VkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwgY29u
c3QgUmVwbGF5UG9zaXRpb24mKTsKLSAgICBzdGF0aWMgdm9pZCBwbGF5YmFja0hpdFBvc2l0aW9u
SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwgY29uc3QgUmVwbGF5UG9zaXRpb24mKTsKLSAgICBz
dGF0aWMgdm9pZCBwbGF5YmFja0ZpbmlzaGVkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKik7Cisg
ICAgc3RhdGljIHZvaWQgcGxheWJhY2tTdGFydGVkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJik7
CisgICAgc3RhdGljIHZvaWQgcGxheWJhY2tQYXVzZWRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMm
LCBjb25zdCBSZXBsYXlQb3NpdGlvbiYpOworICAgIHN0YXRpYyB2b2lkIHBsYXliYWNrSGl0UG9z
aXRpb25JbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBjb25zdCBSZXBsYXlQb3NpdGlvbiYpOwor
ICAgIHN0YXRpYyB2b2lkIHBsYXliYWNrRmluaXNoZWRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMm
KTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQotICAgIHN0YXRpYyB2b2lkIGRp
ZENyZWF0ZVdlYlNvY2tldEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIHVuc2lnbmVkIGxvbmcg
aWRlbnRpZmllciwgY29uc3QgVVJMJiByZXF1ZXN0VVJMLCBjb25zdCBVUkwmIGRvY3VtZW50VVJM
LCBjb25zdCBTdHJpbmcmIHByb3RvY29sLCBEb2N1bWVudCopOwotICAgIHN0YXRpYyB2b2lkIHdp
bGxTZW5kV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyos
IHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgRG9jdW1l
bnQqKTsKLSAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9u
c2VJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmLCBEb2N1bWVudCopOwotICAgIHN0YXRpYyB2b2lkIGRpZENs
b3NlV2ViU29ja2V0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwgdW5zaWduZWQgbG9uZyBpZGVu
dGlmaWVyLCBEb2N1bWVudCopOwotICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVXZWJTb2NrZXRG
cmFtZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwg
Y29uc3QgV2ViU29ja2V0RnJhbWUmKTsKLSAgICBzdGF0aWMgdm9pZCBkaWRTZW5kV2ViU29ja2V0
RnJhbWVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIs
IGNvbnN0IFdlYlNvY2tldEZyYW1lJik7Ci0gICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZVdlYlNv
Y2tldEZyYW1lRXJyb3JJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCB1bnNpZ25lZCBsb25nIGlk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYpOworICAgIHN0YXRpYyB2b2lkIGRpZENyZWF0ZVdlYlNv
Y2tldEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwg
Y29uc3QgVVJMJiByZXF1ZXN0VVJMLCBjb25zdCBVUkwmIGRvY3VtZW50VVJMLCBjb25zdCBTdHJp
bmcmIHByb3RvY29sLCBEb2N1bWVudCopOworICAgIHN0YXRpYyB2b2lkIHdpbGxTZW5kV2ViU29j
a2V0SGFuZHNoYWtlUmVxdWVzdEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIHVuc2lnbmVkIGxv
bmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgRG9jdW1lbnQqKTsKKyAgICBz
dGF0aWMgdm9pZCBkaWRSZWNlaXZlV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2VJbXBsKEluc3Ry
dW1lbnRpbmdBZ2VudHMmLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmLCBEb2N1bWVudCopOworICAgIHN0YXRpYyB2b2lkIGRpZENsb3NlV2ViU29ja2V0
SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1
bWVudCopOworICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVXZWJTb2NrZXRGcmFtZUltcGwoSW5z
dHJ1bWVudGluZ0FnZW50cyYsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgV2ViU29j
a2V0RnJhbWUmKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRTZW5kV2ViU29ja2V0RnJhbWVJbXBsKElu
c3RydW1lbnRpbmdBZ2VudHMmLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFdlYlNv
Y2tldEZyYW1lJik7CisgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZVdlYlNvY2tldEZyYW1lRXJy
b3JJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNv
bnN0IFN0cmluZyYpOwogI2VuZGlmCiAKLSAgICBzdGF0aWMgdm9pZCBuZXR3b3JrU3RhdGVDaGFu
Z2VkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKik7Ci0gICAgc3RhdGljIHZvaWQgdXBkYXRlQXBw
bGljYXRpb25DYWNoZVN0YXR1c0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIEZyYW1lKik7Cisg
ICAgc3RhdGljIHZvaWQgbmV0d29ya1N0YXRlQ2hhbmdlZEltcGwoSW5zdHJ1bWVudGluZ0FnZW50
cyYpOworICAgIHN0YXRpYyB2b2lkIHVwZGF0ZUFwcGxpY2F0aW9uQ2FjaGVTdGF0dXNJbXBsKElu
c3RydW1lbnRpbmdBZ2VudHMmLCBGcmFtZSopOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHNGb3JQYWdlKFBhZ2UqKTsK
KyAgICBzdGF0aWMgdm9pZCBsYXllclRyZWVEaWRDaGFuZ2VJbXBsKEluc3RydW1lbnRpbmdBZ2Vu
dHMmKTsKKyAgICBzdGF0aWMgdm9pZCByZW5kZXJMYXllckRlc3Ryb3llZEltcGwoSW5zdHJ1bWVu
dGluZ0FnZW50cyYsIGNvbnN0IFJlbmRlckxheWVyJik7CisgICAgc3RhdGljIHZvaWQgcHNldWRv
RWxlbWVudERlc3Ryb3llZEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIFBzZXVkb0VsZW1lbnQm
KTsKKworICAgIHN0YXRpYyBJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRz
Rm9yUGFnZShQYWdlJik7CisgICAgc3RhdGljIEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1l
bnRpbmdBZ2VudHNGb3JGcmFtZShGcmFtZSYpOwogICAgIHN0YXRpYyBJbnN0cnVtZW50aW5nQWdl
bnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzRm9yRnJhbWUoRnJhbWUqKTsKICAgICBzdGF0aWMgSW5z
dHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50c0ZvckNvbnRleHQoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCopOworICAgIHN0YXRpYyBJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVt
ZW50aW5nQWdlbnRzRm9yRG9jdW1lbnQoRG9jdW1lbnQmKTsKICAgICBzdGF0aWMgSW5zdHJ1bWVu
dGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50c0ZvckRvY3VtZW50KERvY3VtZW50Kik7CiAg
ICAgc3RhdGljIEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHNGb3JSZW5k
ZXJlcihSZW5kZXJPYmplY3QqKTsKIAogICAgIHN0YXRpYyBJbnN0cnVtZW50aW5nQWdlbnRzKiBp
bnN0cnVtZW50aW5nQWdlbnRzRm9yV29ya2VyR2xvYmFsU2NvcGUoV29ya2VyR2xvYmFsU2NvcGUq
KTsKICAgICBzdGF0aWMgSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50c0Zv
ck5vbkRvY3VtZW50Q29udGV4dChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CiAKLSAgICBzdGF0
aWMgdm9pZCBwYXVzZU9uTmF0aXZlRXZlbnRJZk5lZWRlZChJbnN0cnVtZW50aW5nQWdlbnRzKiwg
Ym9vbCBpc0RPTUV2ZW50LCBjb25zdCBTdHJpbmcmIGV2ZW50TmFtZSwgYm9vbCBzeW5jaHJvbm91
cyk7Ci0gICAgc3RhdGljIHZvaWQgY2FuY2VsUGF1c2VPbk5hdGl2ZUV2ZW50KEluc3RydW1lbnRp
bmdBZ2VudHMqKTsKICAgICBzdGF0aWMgSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogcmV0cmlldmVU
aW1lbGluZUFnZW50KGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYpOwogCi0g
ICAgc3RhdGljIHZvaWQgbGF5ZXJUcmVlRGlkQ2hhbmdlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRz
Kik7Ci0gICAgc3RhdGljIHZvaWQgcmVuZGVyTGF5ZXJEZXN0cm95ZWRJbXBsKEluc3RydW1lbnRp
bmdBZ2VudHMqLCBjb25zdCBSZW5kZXJMYXllciopOwotICAgIHN0YXRpYyB2b2lkIHBzZXVkb0Vs
ZW1lbnREZXN0cm95ZWRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCBQc2V1ZG9FbGVtZW50Kik7
CisgICAgc3RhdGljIHZvaWQgcGF1c2VPbk5hdGl2ZUV2ZW50SWZOZWVkZWQoSW5zdHJ1bWVudGlu
Z0FnZW50cyYsIGJvb2wgaXNET01FdmVudCwgY29uc3QgU3RyaW5nJiBldmVudE5hbWUsIGJvb2wg
c3luY2hyb25vdXMpOworICAgIHN0YXRpYyB2b2lkIGNhbmNlbFBhdXNlT25OYXRpdmVFdmVudChJ
bnN0cnVtZW50aW5nQWdlbnRzJik7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgaW50IHNf
ZnJvbnRlbmRDb3VudGVyOwogI2VuZGlmCiB9OwogCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmRpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZChGcmFtZSogZnJhbWUsIERP
TVdyYXBwZXJXb3JsZCYgd29ybGQpCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmRpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZChGcmFtZSYgZnJhbWUsIERPTVdyYXBwZXJX
b3JsZCYgd29ybGQpCiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBpZiAoSW5zdHJ1bWVu
dGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JG
cmFtZShmcmFtZSkpCi0gICAgICAgIGRpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZEltcGwoaW5z
dHJ1bWVudGluZ0FnZW50cywgZnJhbWUsIHdvcmxkKTsKKyAgICAgICAgZGlkQ2xlYXJXaW5kb3dP
YmplY3RJbldvcmxkSW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywgZnJhbWUsIHdvcmxkKTsKICNl
bHNlCiAgICAgVU5VU0VEX1BBUkFNKGZyYW1lKTsKICAgICBVTlVTRURfUEFSQU0od29ybGQpOwpA
QCAtNTEwLDY3ICs1MTMsNjcgQEAgaW5saW5lIGJvb2wgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Ojppc0RlYnVnZ2VyUGF1c2VkKEZyYW1lKiBmcmFtZSkKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQog
ICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZST05URU5EUyhmYWxzZSk7CiAgICAgaWYgKEluc3RydW1l
bnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9y
RnJhbWUoZnJhbWUpKQotICAgICAgICByZXR1cm4gaXNEZWJ1Z2dlclBhdXNlZEltcGwoaW5zdHJ1
bWVudGluZ0FnZW50cyk7CisgICAgICAgIHJldHVybiBpc0RlYnVnZ2VyUGF1c2VkSW1wbCgqaW5z
dHJ1bWVudGluZ0FnZW50cyk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShmcmFtZSk7CiAjZW5k
aWYKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6d2lsbEluc2VydERPTU5vZGUoRG9jdW1lbnQqIGRvY3VtZW50LCBOb2RlKiBwYXJl
bnQpCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxJbnNlcnRET01O
b2RlKERvY3VtZW50JiBkb2N1bWVudCwgTm9kZSYgcGFyZW50KQogewogI2lmIEVOQUJMRShJTlNQ
RUNUT1IpCiAgICAgRkFTVF9SRVRVUk5fSUZfTk9fRlJPTlRFTkRTKHZvaWQoKSk7CiAgICAgaWYg
KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5n
QWdlbnRzRm9yRG9jdW1lbnQoZG9jdW1lbnQpKQotICAgICAgICB3aWxsSW5zZXJ0RE9NTm9kZUlt
cGwoaW5zdHJ1bWVudGluZ0FnZW50cywgcGFyZW50KTsKKyAgICAgICAgd2lsbEluc2VydERPTU5v
ZGVJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRzLCBwYXJlbnQpOwogI2Vsc2UKICAgICBVTlVTRURf
UEFSQU0oZG9jdW1lbnQpOwogICAgIFVOVVNFRF9QQVJBTShwYXJlbnQpOwogI2VuZGlmCiB9CiAK
LWlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkSW5zZXJ0RE9NTm9kZShE
b2N1bWVudCogZG9jdW1lbnQsIE5vZGUqIG5vZGUpCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmRpZEluc2VydERPTU5vZGUoRG9jdW1lbnQmIGRvY3VtZW50LCBOb2RlJiBu
b2RlKQogewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgRkFTVF9SRVRVUk5fSUZfTk9fRlJP
TlRFTkRTKHZvaWQoKSk7CiAgICAgaWYgKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRp
bmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yRG9jdW1lbnQoZG9jdW1lbnQpKQotICAg
ICAgICBkaWRJbnNlcnRET01Ob2RlSW1wbChpbnN0cnVtZW50aW5nQWdlbnRzLCBub2RlKTsKKyAg
ICAgICAgZGlkSW5zZXJ0RE9NTm9kZUltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMsIG5vZGUpOwog
I2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZG9jdW1lbnQpOwogICAgIFVOVVNFRF9QQVJBTShub2Rl
KTsKICNlbmRpZgogfQogCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Ondp
bGxSZW1vdmVET01Ob2RlKERvY3VtZW50KiBkb2N1bWVudCwgTm9kZSogbm9kZSkKK2lubGluZSB2
b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFJlbW92ZURPTU5vZGUoRG9jdW1lbnQm
IGRvY3VtZW50LCBOb2RlJiBub2RlKQogewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgRkFT
VF9SRVRVUk5fSUZfTk9fRlJPTlRFTkRTKHZvaWQoKSk7CiAgICAgaWYgKEluc3RydW1lbnRpbmdB
Z2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yRG9jdW1l
bnQoZG9jdW1lbnQpKQotICAgICAgICB3aWxsUmVtb3ZlRE9NTm9kZUltcGwoaW5zdHJ1bWVudGlu
Z0FnZW50cywgbm9kZSk7CisgICAgICAgIHdpbGxSZW1vdmVET01Ob2RlSW1wbCgqaW5zdHJ1bWVu
dGluZ0FnZW50cywgbm9kZSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShkb2N1bWVudCk7CiAg
ICAgVU5VU0VEX1BBUkFNKG5vZGUpOwogI2VuZGlmCiB9CiAKLWlubGluZSB2b2lkIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6ZGlkUmVtb3ZlRE9NTm9kZShEb2N1bWVudCogZG9jdW1lbnQsIE5v
ZGUqIG5vZGUpCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlbW92
ZURPTU5vZGUoRG9jdW1lbnQmIGRvY3VtZW50LCBOb2RlJiBub2RlKQogewogI2lmIEVOQUJMRShJ
TlNQRUNUT1IpCiAgICAgRkFTVF9SRVRVUk5fSUZfTk9fRlJPTlRFTkRTKHZvaWQoKSk7CiAgICAg
aWYgKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50
aW5nQWdlbnRzRm9yRG9jdW1lbnQoZG9jdW1lbnQpKQotICAgICAgICBkaWRSZW1vdmVET01Ob2Rl
SW1wbChpbnN0cnVtZW50aW5nQWdlbnRzLCBub2RlKTsKKyAgICAgICAgZGlkUmVtb3ZlRE9NTm9k
ZUltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMsIG5vZGUpOwogI2Vsc2UKICAgICBVTlVTRURfUEFS
QU0oZG9jdW1lbnQpOwogICAgIFVOVVNFRF9QQVJBTShub2RlKTsKICNlbmRpZgogfQogCi1pbmxp
bmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxNb2RpZnlET01BdHRyKERvY3Vt
ZW50KiBkb2N1bWVudCwgRWxlbWVudCogZWxlbWVudCwgY29uc3QgQXRvbWljU3RyaW5nJiBvbGRW
YWx1ZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuZXdWYWx1ZSkKK2lubGluZSB2b2lkIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6d2lsbE1vZGlmeURPTUF0dHIoRG9jdW1lbnQmIGRvY3VtZW50LCBF
bGVtZW50JiBlbGVtZW50LCBjb25zdCBBdG9taWNTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBBdG9t
aWNTdHJpbmcmIG5ld1ZhbHVlKQogewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgRkFTVF9S
RVRVUk5fSUZfTk9fRlJPTlRFTkRTKHZvaWQoKSk7CiAgICAgaWYgKEluc3RydW1lbnRpbmdBZ2Vu
dHMqIGluc3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yRG9jdW1lbnQo
ZG9jdW1lbnQpKQotICAgICAgICB3aWxsTW9kaWZ5RE9NQXR0ckltcGwoaW5zdHJ1bWVudGluZ0Fn
ZW50cywgZWxlbWVudCwgb2xkVmFsdWUsIG5ld1ZhbHVlKTsKKyAgICAgICAgd2lsbE1vZGlmeURP
TUF0dHJJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRzLCBlbGVtZW50LCBvbGRWYWx1ZSwgbmV3VmFs
dWUpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZG9jdW1lbnQpOwogICAgIFVOVVNFRF9QQVJB
TShlbGVtZW50KTsKQEAgLTU3OSwxMiArNTgyLDEyIEBAIGlubGluZSB2b2lkIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6d2lsbE1vZGlmeURPTUF0dHIoRG9jdW1lbnQqIGRvY3VtZW50LCBFbGVt
CiAjZW5kaWYKIH0KIAotaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRN
b2RpZnlET01BdHRyKERvY3VtZW50KiBkb2N1bWVudCwgRWxlbWVudCogZWxlbWVudCwgY29uc3Qg
QXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQoraW5saW5lIHZv
aWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRNb2RpZnlET01BdHRyKERvY3VtZW50JiBk
b2N1bWVudCwgRWxlbWVudCYgZWxlbWVudCwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25z
dCBBdG9taWNTdHJpbmcmIHZhbHVlKQogewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgRkFT
VF9SRVRVUk5fSUZfTk9fRlJPTlRFTkRTKHZvaWQoKSk7CiAgICAgaWYgKEluc3RydW1lbnRpbmdB
Z2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yRG9jdW1l
bnQoZG9jdW1lbnQpKQotICAgICAgICBkaWRNb2RpZnlET01BdHRySW1wbChpbnN0cnVtZW50aW5n
QWdlbnRzLCBlbGVtZW50LCBuYW1lLCB2YWx1ZSk7CisgICAgICAgIGRpZE1vZGlmeURPTUF0dHJJ
bXBsKCppbnN0cnVtZW50aW5nQWdlbnRzLCBlbGVtZW50LCBuYW1lLCB2YWx1ZSk7CiAjZWxzZQog
ICAgIFVOVVNFRF9QQVJBTShkb2N1bWVudCk7CiAgICAgVU5VU0VEX1BBUkFNKGVsZW1lbnQpOwpA
QCAtNTkzLDEyICs1OTYsMTIgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpkaWRNb2RpZnlET01BdHRyKERvY3VtZW50KiBkb2N1bWVudCwgRWxlbWUKICNlbmRpZgogfQog
Ci1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlbW92ZURPTUF0dHIo
RG9jdW1lbnQqIGRvY3VtZW50LCBFbGVtZW50KiBlbGVtZW50LCBjb25zdCBBdG9taWNTdHJpbmcm
IG5hbWUpCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlbW92ZURP
TUF0dHIoRG9jdW1lbnQmIGRvY3VtZW50LCBFbGVtZW50JiBlbGVtZW50LCBjb25zdCBBdG9taWNT
dHJpbmcmIG5hbWUpCiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBGQVNUX1JFVFVSTl9J
Rl9OT19GUk9OVEVORFModm9pZCgpKTsKICAgICBpZiAoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5z
dHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JEb2N1bWVudChkb2N1bWVu
dCkpCi0gICAgICAgIGRpZFJlbW92ZURPTUF0dHJJbXBsKGluc3RydW1lbnRpbmdBZ2VudHMsIGVs
ZW1lbnQsIG5hbWUpOworICAgICAgICBkaWRSZW1vdmVET01BdHRySW1wbCgqaW5zdHJ1bWVudGlu
Z0FnZW50cywgZWxlbWVudCwgbmFtZSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShkb2N1bWVu
dCk7CiAgICAgVU5VU0VEX1BBUkFNKGVsZW1lbnQpOwpAQCAtNjA2LDEyICs2MDksMTIgQEAgaW5s
aW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZW1vdmVET01BdHRyKERvY3Vt
ZW50KiBkb2N1bWVudCwgRWxlbWUKICNlbmRpZgogfQogCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmRpZEludmFsaWRhdGVTdHlsZUF0dHIoRG9jdW1lbnQqIGRvY3VtZW50
LCBOb2RlKiBub2RlKQoraW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRJ
bnZhbGlkYXRlU3R5bGVBdHRyKERvY3VtZW50JiBkb2N1bWVudCwgTm9kZSYgbm9kZSkKIHsKICNp
ZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZST05URU5EUyh2b2lk
KCkpOwogICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0g
aW5zdHJ1bWVudGluZ0FnZW50c0ZvckRvY3VtZW50KGRvY3VtZW50KSkKLSAgICAgICAgZGlkSW52
YWxpZGF0ZVN0eWxlQXR0ckltcGwoaW5zdHJ1bWVudGluZ0FnZW50cywgbm9kZSk7CisgICAgICAg
IGRpZEludmFsaWRhdGVTdHlsZUF0dHJJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRzLCBub2RlKTsK
ICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGRvY3VtZW50KTsKICAgICBVTlVTRURfUEFSQU0obm9k
ZSk7CkBAIC02MjIsOTAgKzYyNSw5MCBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmZyYW1lV2luZG93RGlzY2FyZGVkKEZyYW1lKiBmcmFtZSwgRE9NV2luZAogewogI2lm
IEVOQUJMRShJTlNQRUNUT1IpCiAgICAgaWYgKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1l
bnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yRnJhbWUoZnJhbWUpKQotICAgICAg
ICBmcmFtZVdpbmRvd0Rpc2NhcmRlZEltcGwoaW5zdHJ1bWVudGluZ0FnZW50cywgZG9tV2luZG93
KTsKKyAgICAgICAgZnJhbWVXaW5kb3dEaXNjYXJkZWRJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRz
LCBkb21XaW5kb3cpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZnJhbWUpOwogICAgIFVOVVNF
RF9QQVJBTShkb21XaW5kb3cpOwogI2VuZGlmCiB9CiAKLWlubGluZSB2b2lkIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6bWVkaWFRdWVyeVJlc3VsdENoYW5nZWQoRG9jdW1lbnQqIGRvY3VtZW50
KQoraW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjptZWRpYVF1ZXJ5UmVzdWx0
Q2hhbmdlZChEb2N1bWVudCYgZG9jdW1lbnQpCiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAg
ICBGQVNUX1JFVFVSTl9JRl9OT19GUk9OVEVORFModm9pZCgpKTsKICAgICBpZiAoSW5zdHJ1bWVu
dGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JE
b2N1bWVudChkb2N1bWVudCkpCi0gICAgICAgIG1lZGlhUXVlcnlSZXN1bHRDaGFuZ2VkSW1wbChp
bnN0cnVtZW50aW5nQWdlbnRzKTsKKyAgICAgICAgbWVkaWFRdWVyeVJlc3VsdENoYW5nZWRJbXBs
KCppbnN0cnVtZW50aW5nQWdlbnRzKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGRvY3VtZW50
KTsKICNlbmRpZgogfQogCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRp
ZFB1c2hTaGFkb3dSb290KEVsZW1lbnQqIGhvc3QsIFNoYWRvd1Jvb3QqIHJvb3QpCitpbmxpbmUg
dm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFB1c2hTaGFkb3dSb290KEVsZW1lbnQm
IGhvc3QsIFNoYWRvd1Jvb3QmIHJvb3QpCiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBG
QVNUX1JFVFVSTl9JRl9OT19GUk9OVEVORFModm9pZCgpKTsKLSAgICBpZiAoSW5zdHJ1bWVudGlu
Z0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JEb2N1
bWVudCgmaG9zdC0+ZG9jdW1lbnQoKSkpCi0gICAgICAgIGRpZFB1c2hTaGFkb3dSb290SW1wbChp
bnN0cnVtZW50aW5nQWdlbnRzLCBob3N0LCByb290KTsKKyAgICBpZiAoSW5zdHJ1bWVudGluZ0Fn
ZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JEb2N1bWVu
dChob3N0LmRvY3VtZW50KCkpKQorICAgICAgICBkaWRQdXNoU2hhZG93Um9vdEltcGwoKmluc3Ry
dW1lbnRpbmdBZ2VudHMsIGhvc3QsIHJvb3QpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oaG9z
dCk7CiAgICAgVU5VU0VEX1BBUkFNKHJvb3QpOwogI2VuZGlmCiB9CiAKLWlubGluZSB2b2lkIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFBvcFNoYWRvd1Jvb3QoRWxlbWVudCogaG9zdCwg
U2hhZG93Um9vdCogcm9vdCkKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
d2lsbFBvcFNoYWRvd1Jvb3QoRWxlbWVudCYgaG9zdCwgU2hhZG93Um9vdCYgcm9vdCkKIHsKICNp
ZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZST05URU5EUyh2b2lk
KCkpOwotICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0g
aW5zdHJ1bWVudGluZ0FnZW50c0ZvckRvY3VtZW50KCZob3N0LT5kb2N1bWVudCgpKSkKLSAgICAg
ICAgd2lsbFBvcFNoYWRvd1Jvb3RJbXBsKGluc3RydW1lbnRpbmdBZ2VudHMsIGhvc3QsIHJvb3Qp
OworICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5z
dHJ1bWVudGluZ0FnZW50c0ZvckRvY3VtZW50KGhvc3QuZG9jdW1lbnQoKSkpCisgICAgICAgIHdp
bGxQb3BTaGFkb3dSb290SW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywgaG9zdCwgcm9vdCk7CiAj
ZWxzZQogICAgIFVOVVNFRF9QQVJBTShob3N0KTsKICAgICBVTlVTRURfUEFSQU0ocm9vdCk7CiAj
ZW5kaWYKIH0KIAotaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDcmVh
dGVOYW1lZEZsb3coRG9jdW1lbnQqIGRvY3VtZW50LCBXZWJLaXROYW1lZEZsb3cqIG5hbWVkRmxv
dykKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ3JlYXRlTmFtZWRG
bG93KERvY3VtZW50KiBkb2N1bWVudCwgV2ViS2l0TmFtZWRGbG93JiBuYW1lZEZsb3cpCiB7CiAj
aWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBGQVNUX1JFVFVSTl9JRl9OT19GUk9OVEVORFModm9p
ZCgpKTsKICAgICBpZiAoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyA9
IGluc3RydW1lbnRpbmdBZ2VudHNGb3JEb2N1bWVudChkb2N1bWVudCkpCi0gICAgICAgIGRpZENy
ZWF0ZU5hbWVkRmxvd0ltcGwoaW5zdHJ1bWVudGluZ0FnZW50cywgZG9jdW1lbnQsIG5hbWVkRmxv
dyk7CisgICAgICAgIGRpZENyZWF0ZU5hbWVkRmxvd0ltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMs
IGRvY3VtZW50LCBuYW1lZEZsb3cpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZG9jdW1lbnQp
OwogICAgIFVOVVNFRF9QQVJBTShuYW1lZEZsb3cpOwogI2VuZGlmCiB9CiAKLWlubGluZSB2b2lk
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFJlbW92ZU5hbWVkRmxvdyhEb2N1bWVudCog
ZG9jdW1lbnQsIFdlYktpdE5hbWVkRmxvdyogbmFtZWRGbG93KQoraW5saW5lIHZvaWQgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUmVtb3ZlTmFtZWRGbG93KERvY3VtZW50KiBkb2N1bWVu
dCwgV2ViS2l0TmFtZWRGbG93JiBuYW1lZEZsb3cpCiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikK
ICAgICBGQVNUX1JFVFVSTl9JRl9OT19GUk9OVEVORFModm9pZCgpKTsKICAgICBpZiAoSW5zdHJ1
bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNG
b3JEb2N1bWVudChkb2N1bWVudCkpCi0gICAgICAgIHdpbGxSZW1vdmVOYW1lZEZsb3dJbXBsKGlu
c3RydW1lbnRpbmdBZ2VudHMsIGRvY3VtZW50LCBuYW1lZEZsb3cpOworICAgICAgICB3aWxsUmVt
b3ZlTmFtZWRGbG93SW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywgZG9jdW1lbnQsIG5hbWVkRmxv
dyk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShkb2N1bWVudCk7CiAgICAgVU5VU0VEX1BBUkFN
KG5hbWVkRmxvdyk7CiAjZW5kaWYKIH0KIAotaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpkaWRDaGFuZ2VSZWdpb25PdmVyc2V0KERvY3VtZW50KiBkb2N1bWVudCwgV2ViS2l0
TmFtZWRGbG93KiBuYW1lZEZsb3cpCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmRpZENoYW5nZVJlZ2lvbk92ZXJzZXQoRG9jdW1lbnQmIGRvY3VtZW50LCBXZWJLaXROYW1l
ZEZsb3cmIG5hbWVkRmxvdykKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIEZBU1RfUkVU
VVJOX0lGX05PX0ZST05URU5EUyh2b2lkKCkpOwogICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRz
KiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvckRvY3VtZW50KGRv
Y3VtZW50KSkKLSAgICAgICAgZGlkQ2hhbmdlUmVnaW9uT3ZlcnNldEltcGwoaW5zdHJ1bWVudGlu
Z0FnZW50cywgZG9jdW1lbnQsIG5hbWVkRmxvdyk7CisgICAgICAgIGRpZENoYW5nZVJlZ2lvbk92
ZXJzZXRJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRzLCBkb2N1bWVudCwgbmFtZWRGbG93KTsKICNl
bHNlCiAgICAgVU5VU0VEX1BBUkFNKGRvY3VtZW50KTsKICAgICBVTlVTRURfUEFSQU0obmFtZWRG
bG93KTsKICNlbmRpZgogfQogCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmRpZFJlZ2lzdGVyTmFtZWRGbG93Q29udGVudEVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50LCBX
ZWJLaXROYW1lZEZsb3cqIG5hbWVkRmxvdywgTm9kZSogY29udGVudEVsZW1lbnQsIE5vZGUqIG5l
eHRDb250ZW50RWxlbWVudCkKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
ZGlkUmVnaXN0ZXJOYW1lZEZsb3dDb250ZW50RWxlbWVudChEb2N1bWVudCYgZG9jdW1lbnQsIFdl
YktpdE5hbWVkRmxvdyYgbmFtZWRGbG93LCBOb2RlJiBjb250ZW50RWxlbWVudCwgTm9kZSogbmV4
dENvbnRlbnRFbGVtZW50KQogewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgRkFTVF9SRVRV
Uk5fSUZfTk9fRlJPTlRFTkRTKHZvaWQoKSk7CiAgICAgaWYgKEluc3RydW1lbnRpbmdBZ2VudHMq
IGluc3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yRG9jdW1lbnQoZG9j
dW1lbnQpKQotICAgICAgICBkaWRSZWdpc3Rlck5hbWVkRmxvd0NvbnRlbnRFbGVtZW50SW1wbChp
bnN0cnVtZW50aW5nQWdlbnRzLCBkb2N1bWVudCwgbmFtZWRGbG93LCBjb250ZW50RWxlbWVudCwg
bmV4dENvbnRlbnRFbGVtZW50KTsKKyAgICAgICAgZGlkUmVnaXN0ZXJOYW1lZEZsb3dDb250ZW50
RWxlbWVudEltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMsIGRvY3VtZW50LCBuYW1lZEZsb3csIGNv
bnRlbnRFbGVtZW50LCBuZXh0Q29udGVudEVsZW1lbnQpOwogI2Vsc2UKICAgICBVTlVTRURfUEFS
QU0oZG9jdW1lbnQpOwogICAgIFVOVVNFRF9QQVJBTShuYW1lZEZsb3cpOwpAQCAtNzE0LDEyICs3
MTcsMTIgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWdpc3Rl
ck5hbWVkRmxvd0NvbnRlbnRFbGVtZW50KERvY3VtZW4KICNlbmRpZgogfQogCi1pbmxpbmUgdm9p
ZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFVucmVnaXN0ZXJOYW1lZEZsb3dDb250ZW50
RWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQsIFdlYktpdE5hbWVkRmxvdyogbmFtZWRGbG93LCBO
b2RlKiBjb250ZW50RWxlbWVudCkKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6ZGlkVW5yZWdpc3Rlck5hbWVkRmxvd0NvbnRlbnRFbGVtZW50KERvY3VtZW50JiBkb2N1bWVu
dCwgV2ViS2l0TmFtZWRGbG93JiBuYW1lZEZsb3csIE5vZGUmIGNvbnRlbnRFbGVtZW50KQogewog
I2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgRkFTVF9SRVRVUk5fSUZfTk9fRlJPTlRFTkRTKHZv
aWQoKSk7CiAgICAgaWYgKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMg
PSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yRG9jdW1lbnQoZG9jdW1lbnQpKQotICAgICAgICBkaWRV
bnJlZ2lzdGVyTmFtZWRGbG93Q29udGVudEVsZW1lbnRJbXBsKGluc3RydW1lbnRpbmdBZ2VudHMs
IGRvY3VtZW50LCBuYW1lZEZsb3csIGNvbnRlbnRFbGVtZW50KTsKKyAgICAgICAgZGlkVW5yZWdp
c3Rlck5hbWVkRmxvd0NvbnRlbnRFbGVtZW50SW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywgZG9j
dW1lbnQsIG5hbWVkRmxvdywgY29udGVudEVsZW1lbnQpOwogI2Vsc2UKICAgICBVTlVTRURfUEFS
QU0oZG9jdW1lbnQpOwogICAgIFVOVVNFRF9QQVJBTShuYW1lZEZsb3cpOwpAQCAtNzI3LDEyICs3
MzAsMTIgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRVbnJlZ2lz
dGVyTmFtZWRGbG93Q29udGVudEVsZW1lbnQoRG9jdW0KICNlbmRpZgogfQogCi1pbmxpbmUgdm9p
ZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Om1vdXNlRGlkTW92ZU92ZXJFbGVtZW50KFBhZ2Uq
IHBhZ2UsIGNvbnN0IEhpdFRlc3RSZXN1bHQmIHJlc3VsdCwgdW5zaWduZWQgbW9kaWZpZXJGbGFn
cykKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6bW91c2VEaWRNb3ZlT3Zl
ckVsZW1lbnQoUGFnZSYgcGFnZSwgY29uc3QgSGl0VGVzdFJlc3VsdCYgcmVzdWx0LCB1bnNpZ25l
ZCBtb2RpZmllckZsYWdzKQogewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgRkFTVF9SRVRV
Uk5fSUZfTk9fRlJPTlRFTkRTKHZvaWQoKSk7CiAgICAgaWYgKEluc3RydW1lbnRpbmdBZ2VudHMq
IGluc3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yUGFnZShwYWdlKSkK
LSAgICAgICAgbW91c2VEaWRNb3ZlT3ZlckVsZW1lbnRJbXBsKGluc3RydW1lbnRpbmdBZ2VudHMs
IHJlc3VsdCwgbW9kaWZpZXJGbGFncyk7CisgICAgICAgIG1vdXNlRGlkTW92ZU92ZXJFbGVtZW50
SW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywgcmVzdWx0LCBtb2RpZmllckZsYWdzKTsKICNlbHNl
CiAgICAgVU5VU0VEX1BBUkFNKHBhZ2UpOwogICAgIFVOVVNFRF9QQVJBTShyZXN1bHQpOwpAQCAt
NzQwLDM3ICs3NDMsMzcgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpt
b3VzZURpZE1vdmVPdmVyRWxlbWVudChQYWdlKiBwYWdlLCBjb25zdAogI2VuZGlmCiB9CiAKLWlu
bGluZSBib29sIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aGFuZGxlVG91Y2hFdmVudChQYWdl
KiBwYWdlLCBOb2RlKiBub2RlKQoraW5saW5lIGJvb2wgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpoYW5kbGVUb3VjaEV2ZW50KEZyYW1lJiBmcmFtZSwgTm9kZSYgbm9kZSkKIHsKICNpZiBFTkFC
TEUoSU5TUEVDVE9SKQogICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZST05URU5EUyhmYWxzZSk7Ci0g
ICAgaWYgKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVt
ZW50aW5nQWdlbnRzRm9yUGFnZShwYWdlKSkKLSAgICAgICAgcmV0dXJuIGhhbmRsZVRvdWNoRXZl
bnRJbXBsKGluc3RydW1lbnRpbmdBZ2VudHMsIG5vZGUpOworICAgIGlmIChJbnN0cnVtZW50aW5n
QWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvckZyYW1l
KGZyYW1lKSkKKyAgICAgICAgcmV0dXJuIGhhbmRsZVRvdWNoRXZlbnRJbXBsKCppbnN0cnVtZW50
aW5nQWdlbnRzLCBub2RlKTsKICNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHBhZ2UpOworICAgIFVO
VVNFRF9QQVJBTShmcmFtZSk7CiAgICAgVU5VU0VEX1BBUkFNKG5vZGUpOwogI2VuZGlmCiAgICAg
cmV0dXJuIGZhbHNlOwogfQogCi1pbmxpbmUgYm9vbCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmhhbmRsZU1vdXNlUHJlc3MoUGFnZSogcGFnZSkKK2lubGluZSBib29sIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6aGFuZGxlTW91c2VQcmVzcyhGcmFtZSYgZnJhbWUpCiB7CiAjaWYgRU5BQkxF
KElOU1BFQ1RPUikKICAgICBGQVNUX1JFVFVSTl9JRl9OT19GUk9OVEVORFMoZmFsc2UpOwotICAg
IGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVu
dGluZ0FnZW50c0ZvclBhZ2UocGFnZSkpCi0gICAgICAgIHJldHVybiBoYW5kbGVNb3VzZVByZXNz
SW1wbChpbnN0cnVtZW50aW5nQWdlbnRzKTsKKyAgICBpZiAoSW5zdHJ1bWVudGluZ0FnZW50cyog
aW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JGcmFtZShmcmFtZSkp
CisgICAgICAgIHJldHVybiBoYW5kbGVNb3VzZVByZXNzSW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50
cyk7CiAjZWxzZQotICAgIFVOVVNFRF9QQVJBTShwYWdlKTsKKyAgICBVTlVTRURfUEFSQU0oZnJh
bWUpOwogI2VuZGlmCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1pbmxpbmUgYm9vbCBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OmZvcmNlUHNldWRvU3RhdGUoRWxlbWVudCogZWxlbWVudCwgQ1NT
U2VsZWN0b3I6OlBzZXVkb0NsYXNzVHlwZSBwc2V1ZG9TdGF0ZSkKK2lubGluZSBib29sIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6Zm9yY2VQc2V1ZG9TdGF0ZShFbGVtZW50JiBlbGVtZW50LCBD
U1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NUeXBlIHBzZXVkb1N0YXRlKQogewogI2lmIEVOQUJMRShJ
TlNQRUNUT1IpCiAgICAgRkFTVF9SRVRVUk5fSUZfTk9fRlJPTlRFTkRTKGZhbHNlKTsKLSAgICBp
ZiAoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRp
bmdBZ2VudHNGb3JEb2N1bWVudCgmZWxlbWVudC0+ZG9jdW1lbnQoKSkpCi0gICAgICAgIHJldHVy
biBmb3JjZVBzZXVkb1N0YXRlSW1wbChpbnN0cnVtZW50aW5nQWdlbnRzLCBlbGVtZW50LCBwc2V1
ZG9TdGF0ZSk7CisgICAgaWYgKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2Vu
dHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yRG9jdW1lbnQoZWxlbWVudC5kb2N1bWVudCgpKSkK
KyAgICAgICAgcmV0dXJuIGZvcmNlUHNldWRvU3RhdGVJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRz
LCBlbGVtZW50LCBwc2V1ZG9TdGF0ZSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShlbGVtZW50
KTsKICAgICBVTlVTRURfUEFSQU0ocHNldWRvU3RhdGUpOwpAQCAtNzc4LDEyICs3ODEsMTIgQEAg
aW5saW5lIGJvb2wgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpmb3JjZVBzZXVkb1N0YXRlKEVs
ZW1lbnQqIGVsZW1lbnQsIENTU1NlbGUKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWlubGluZSB2
b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Y2hhcmFjdGVyRGF0YU1vZGlmaWVkKERvY3Vt
ZW50KiBkb2N1bWVudCwgQ2hhcmFjdGVyRGF0YSogY2hhcmFjdGVyRGF0YSkKK2lubGluZSB2b2lk
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Y2hhcmFjdGVyRGF0YU1vZGlmaWVkKERvY3VtZW50
JiBkb2N1bWVudCwgQ2hhcmFjdGVyRGF0YSYgY2hhcmFjdGVyRGF0YSkKIHsKICNpZiBFTkFCTEUo
SU5TUEVDVE9SKQogICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZST05URU5EUyh2b2lkKCkpOwogICAg
IGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVu
dGluZ0FnZW50c0ZvckRvY3VtZW50KGRvY3VtZW50KSkKLSAgICAgICAgY2hhcmFjdGVyRGF0YU1v
ZGlmaWVkSW1wbChpbnN0cnVtZW50aW5nQWdlbnRzLCBjaGFyYWN0ZXJEYXRhKTsKKyAgICAgICAg
Y2hhcmFjdGVyRGF0YU1vZGlmaWVkSW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywgY2hhcmFjdGVy
RGF0YSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShkb2N1bWVudCk7CiAgICAgVU5VU0VEX1BB
UkFNKGNoYXJhY3RlckRhdGEpOwpAQCAtNzk1LDcgKzc5OCw3IEBAIGlubGluZSB2b2lkIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFNlbmRYTUxIdHRwUmVxdWVzdChTY3JpcHRFeGVjdXRp
b25Db250CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBGQVNUX1JFVFVSTl9JRl9OT19GUk9O
VEVORFModm9pZCgpKTsKICAgICBpZiAoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGlu
Z0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JDb250ZXh0KGNvbnRleHQpKQotICAgICAg
ICB3aWxsU2VuZFhNTEh0dHBSZXF1ZXN0SW1wbChpbnN0cnVtZW50aW5nQWdlbnRzLCB1cmwpOwor
ICAgICAgICB3aWxsU2VuZFhNTEh0dHBSZXF1ZXN0SW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywg
dXJsKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGNvbnRleHQpOwogICAgIFVOVVNFRF9QQVJB
TSh1cmwpOwpAQCAtODA3LDcgKzgxMCw3IEBAIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6ZGlkU2NoZWR1bGVSZXNvdXJjZVJlcXVlc3QoRG9jdW1lbnQqIGRvY3VtCiAjaWYg
RU5BQkxFKElOU1BFQ1RPUikKICAgICBGQVNUX1JFVFVSTl9JRl9OT19GUk9OVEVORFModm9pZCgp
KTsKICAgICBpZiAoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGlu
c3RydW1lbnRpbmdBZ2VudHNGb3JEb2N1bWVudChkb2N1bWVudCkpCi0gICAgICAgIGRpZFNjaGVk
dWxlUmVzb3VyY2VSZXF1ZXN0SW1wbChpbnN0cnVtZW50aW5nQWdlbnRzLCB1cmwsIGRvY3VtZW50
LT5mcmFtZSgpKTsKKyAgICAgICAgZGlkU2NoZWR1bGVSZXNvdXJjZVJlcXVlc3RJbXBsKCppbnN0
cnVtZW50aW5nQWdlbnRzLCB1cmwsIGRvY3VtZW50LT5mcmFtZSgpKTsKICNlbHNlCiAgICAgVU5V
U0VEX1BBUkFNKGRvY3VtZW50KTsKICAgICBVTlVTRURfUEFSQU0odXJsKTsKQEAgLTgxOSw3ICs4
MjIsNyBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEluc3RhbGxU
aW1lcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjbwogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAg
ICAgRkFTVF9SRVRVUk5fSUZfTk9fRlJPTlRFTkRTKHZvaWQoKSk7CiAgICAgaWYgKEluc3RydW1l
bnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9y
Q29udGV4dChjb250ZXh0KSkKLSAgICAgICAgZGlkSW5zdGFsbFRpbWVySW1wbChpbnN0cnVtZW50
aW5nQWdlbnRzLCB0aW1lcklkLCB0aW1lb3V0LCBzaW5nbGVTaG90LCBjb250ZXh0KTsKKyAgICAg
ICAgZGlkSW5zdGFsbFRpbWVySW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywgdGltZXJJZCwgdGlt
ZW91dCwgc2luZ2xlU2hvdCwgY29udGV4dCk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShjb250
ZXh0KTsKICAgICBVTlVTRURfUEFSQU0odGltZXJJZCk7CkBAIC04MzMsNyArODM2LDcgQEAgaW5s
aW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZW1vdmVUaW1lcihTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb24KICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIEZBU1RfUkVU
VVJOX0lGX05PX0ZST05URU5EUyh2b2lkKCkpOwogICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRz
KiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvckNvbnRleHQoY29u
dGV4dCkpCi0gICAgICAgIGRpZFJlbW92ZVRpbWVySW1wbChpbnN0cnVtZW50aW5nQWdlbnRzLCB0
aW1lcklkLCBjb250ZXh0KTsKKyAgICAgICAgZGlkUmVtb3ZlVGltZXJJbXBsKCppbnN0cnVtZW50
aW5nQWdlbnRzLCB0aW1lcklkLCBjb250ZXh0KTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGNv
bnRleHQpOwogICAgIFVOVVNFRF9QQVJBTSh0aW1lcklkKTsKQEAgLTg0NSw3ICs4NDgsNyBAQCBp
bmxpbmUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6d2lsbENhbGxGdW5jdGlvbgogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgRkFTVF9S
RVRVUk5fSUZfTk9fRlJPTlRFTkRTKEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSgpKTsK
ICAgICBpZiAoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3Ry
dW1lbnRpbmdBZ2VudHNGb3JDb250ZXh0KGNvbnRleHQpKQotICAgICAgICByZXR1cm4gd2lsbENh
bGxGdW5jdGlvbkltcGwoaW5zdHJ1bWVudGluZ0FnZW50cywgc2NyaXB0TmFtZSwgc2NyaXB0TGlu
ZSwgY29udGV4dCk7CisgICAgICAgIHJldHVybiB3aWxsQ2FsbEZ1bmN0aW9uSW1wbCgqaW5zdHJ1
bWVudGluZ0FnZW50cywgc2NyaXB0TmFtZSwgc2NyaXB0TGluZSwgY29udGV4dCk7CiAjZWxzZQog
ICAgIFVOVVNFRF9QQVJBTShjb250ZXh0KTsKICAgICBVTlVTRURfUEFSQU0oc2NyaXB0TmFtZSk7
CkBAIC04NjcsMTIgKzg3MCwxMiBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmRpZENhbGxGdW5jdGlvbihjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YQogI2VuZGlmCiB9
CiAKLWlubGluZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjp3aWxsRGlzcGF0Y2hYSFJSZWFkeVN0YXRlQ2hhbmdlRXZlbnQoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCwgWE1MSHR0cFJlcXVlc3QqIHJlcXVlc3QpCitpbmxpbmUg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
d2lsbERpc3BhdGNoWEhSUmVhZHlTdGF0ZUNoYW5nZUV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQsIFhNTEh0dHBSZXF1ZXN0JiByZXF1ZXN0KQogewogI2lmIEVOQUJMRShJTlNQ
RUNUT1IpCiAgICAgRkFTVF9SRVRVUk5fSUZfTk9fRlJPTlRFTkRTKEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbkNvb2tpZSgpKTsKICAgICBpZiAoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVu
dGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JDb250ZXh0KGNvbnRleHQpKQotICAg
ICAgICByZXR1cm4gd2lsbERpc3BhdGNoWEhSUmVhZHlTdGF0ZUNoYW5nZUV2ZW50SW1wbChpbnN0
cnVtZW50aW5nQWdlbnRzLCByZXF1ZXN0LCBjb250ZXh0KTsKKyAgICAgICAgcmV0dXJuIHdpbGxE
aXNwYXRjaFhIUlJlYWR5U3RhdGVDaGFuZ2VFdmVudEltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMs
IHJlcXVlc3QsIGNvbnRleHQpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oY29udGV4dCk7CiAg
ICAgVU5VU0VEX1BBUkFNKHJlcXVlc3QpOwpAQCAtODkxLDEyICs4OTQsMTIgQEAgaW5saW5lIHZv
aWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWREaXNwYXRjaFhIUlJlYWR5U3RhdGVDaGFu
Z2VFdmVudChjb25zdAogI2VuZGlmCiB9CiAKLWlubGluZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b25Db29raWUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRGlzcGF0Y2hFdmVudChEb2N1
bWVudCogZG9jdW1lbnQsIGNvbnN0IEV2ZW50JiBldmVudCwgYm9vbCBoYXNFdmVudExpc3RlbmVy
cykKK2lubGluZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjp3aWxsRGlzcGF0Y2hFdmVudChEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IEV2
ZW50JiBldmVudCwgYm9vbCBoYXNFdmVudExpc3RlbmVycykKIHsKICNpZiBFTkFCTEUoSU5TUEVD
VE9SKQogICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZST05URU5EUyhJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb25Db29raWUoKSk7CiAgICAgaWYgKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRp
bmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yRG9jdW1lbnQoZG9jdW1lbnQpKQotICAg
ICAgICByZXR1cm4gd2lsbERpc3BhdGNoRXZlbnRJbXBsKGluc3RydW1lbnRpbmdBZ2VudHMsIGV2
ZW50LCBoYXNFdmVudExpc3RlbmVycywgZG9jdW1lbnQpOworICAgICAgICByZXR1cm4gd2lsbERp
c3BhdGNoRXZlbnRJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRzLCBkb2N1bWVudCwgZXZlbnQsIGhh
c0V2ZW50TGlzdGVuZXJzKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGRvY3VtZW50KTsKICAg
ICBVTlVTRURfUEFSQU0oZXZlbnQpOwpAQCAtOTE2LDEyICs5MTksMTIgQEAgaW5saW5lIHZvaWQg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWREaXNwYXRjaEV2ZW50KGNvbnN0IEluc3BlY3Rv
ckluc3RydW1lbnQKICNlbmRpZgogfQogCi1pbmxpbmUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Q29va2llIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEhhbmRsZUV2ZW50KFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEV2ZW50KiBldmVudCkKK2lubGluZSBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb25Db29raWUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsSGFuZGxl
RXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgRXZlbnQmIGV2ZW50
KQogewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgRkFTVF9SRVRVUk5fSUZfTk9fRlJPTlRF
TkRTKEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSgpKTsKICAgICBpZiAoSW5zdHJ1bWVu
dGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JD
b250ZXh0KGNvbnRleHQpKQotICAgICAgICByZXR1cm4gd2lsbEhhbmRsZUV2ZW50SW1wbChpbnN0
cnVtZW50aW5nQWdlbnRzLCBldmVudCk7CisgICAgICAgIHJldHVybiB3aWxsSGFuZGxlRXZlbnRJ
bXBsKCppbnN0cnVtZW50aW5nQWdlbnRzLCBldmVudCk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJB
TShjb250ZXh0KTsKICAgICBVTlVTRURfUEFSQU0oZXZlbnQpOwpAQCAtOTQwLDEyICs5NDMsMTIg
QEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRIYW5kbGVFdmVudChj
b25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXQKICNlbmRpZgogfQogCi1pbmxpbmUgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uQ29va2llIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbERpc3Bh
dGNoRXZlbnRPbldpbmRvdyhGcmFtZSogZnJhbWUsIGNvbnN0IEV2ZW50JiBldmVudCwgRE9NV2lu
ZG93KiB3aW5kb3cpCitpbmxpbmUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbERpc3BhdGNoRXZlbnRPbldpbmRvdyhGcmFtZSogZnJh
bWUsIGNvbnN0IEV2ZW50JiBldmVudCwgRE9NV2luZG93JiB3aW5kb3cpCiB7CiAjaWYgRU5BQkxF
KElOU1BFQ1RPUikKICAgICBGQVNUX1JFVFVSTl9JRl9OT19GUk9OVEVORFMoSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uQ29va2llKCkpOwogICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0
cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvckZyYW1lKGZyYW1lKSkKLSAg
ICAgICAgcmV0dXJuIHdpbGxEaXNwYXRjaEV2ZW50T25XaW5kb3dJbXBsKGluc3RydW1lbnRpbmdB
Z2VudHMsIGV2ZW50LCB3aW5kb3cpOworICAgICAgICByZXR1cm4gd2lsbERpc3BhdGNoRXZlbnRP
bldpbmRvd0ltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMsIGV2ZW50LCB3aW5kb3cpOwogI2Vsc2UK
ICAgICBVTlVTRURfUEFSQU0oZnJhbWUpOwogICAgIFVOVVNFRF9QQVJBTShldmVudCk7CkBAIC05
NjUsMTIgKzk2OCwxMiBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRp
ZERpc3BhdGNoRXZlbnRPbldpbmRvdyhjb25zdCBJbnNwZWN0b3JJbgogI2VuZGlmCiB9CiAKLWlu
bGluZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjp3aWxsRXZhbHVhdGVTY3JpcHQoRnJhbWUqIGZyYW1lLCBjb25zdCBTdHJpbmcmIHVybCwg
aW50IGxpbmVOdW1iZXIpCitpbmxpbmUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEV2YWx1YXRlU2NyaXB0KEZyYW1lJiBmcmFtZSwg
Y29uc3QgU3RyaW5nJiB1cmwsIGludCBsaW5lTnVtYmVyKQogewogI2lmIEVOQUJMRShJTlNQRUNU
T1IpCiAgICAgRkFTVF9SRVRVUk5fSUZfTk9fRlJPTlRFTkRTKEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbkNvb2tpZSgpKTsKICAgICBpZiAoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGlu
Z0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JGcmFtZShmcmFtZSkpCi0gICAgICAgIHJl
dHVybiB3aWxsRXZhbHVhdGVTY3JpcHRJbXBsKGluc3RydW1lbnRpbmdBZ2VudHMsIHVybCwgbGlu
ZU51bWJlciwgZnJhbWUpOworICAgICAgICByZXR1cm4gd2lsbEV2YWx1YXRlU2NyaXB0SW1wbCgq
aW5zdHJ1bWVudGluZ0FnZW50cywgZnJhbWUsIHVybCwgbGluZU51bWJlcik7CiAjZWxzZQogICAg
IFVOVVNFRF9QQVJBTShmcmFtZSk7CiAgICAgVU5VU0VEX1BBUkFNKHVybCk7CkBAIC05NzksNyAr
OTgyLDcgQEAgaW5saW5lIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OndpbGxFdmFsdWF0ZVNjcmkKICAgICByZXR1cm4gSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uQ29va2llKCk7CiB9CiAKLWlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6ZGlkRXZhbHVhdGVTY3JpcHQoY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Q29va2llJiBjb29raWUsIEZyYW1lKiBmcmFtZSkKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZGlkRXZhbHVhdGVTY3JpcHQoY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uQ29va2llJiBjb29raWUsIEZyYW1lJiBmcmFtZSkKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9S
KQogICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZST05URU5EUyh2b2lkKCkpOwpAQCAtOTkxLDM3ICs5
OTQsMjQgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRFdmFsdWF0
ZVNjcmlwdChjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW4KICNlbmRpZgogfQogCi1pbmxpbmUgdm9p
ZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNjcmlwdHNFbmFibGVkKFBhZ2UqIHBhZ2UsIGJv
b2wgaXNFbmFibGVkKQoraW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzY3Jp
cHRzRW5hYmxlZChQYWdlJiBwYWdlLCBib29sIGlzRW5hYmxlZCkKIHsKICNpZiBFTkFCTEUoSU5T
UEVDVE9SKQogICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZST05URU5EUyh2b2lkKCkpOwogICAgIGlm
IChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGlu
Z0FnZW50c0ZvclBhZ2UocGFnZSkpCi0gICAgICAgIHJldHVybiBzY3JpcHRzRW5hYmxlZEltcGwo
aW5zdHJ1bWVudGluZ0FnZW50cywgaXNFbmFibGVkKTsKKyAgICAgICAgcmV0dXJuIHNjcmlwdHNF
bmFibGVkSW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywgaXNFbmFibGVkKTsKICNlbHNlCiAgICAg
VU5VU0VEX1BBUkFNKHBhZ2UpOwogICAgIFVOVVNFRF9QQVJBTShpc0VuYWJsZWQpOwogI2VuZGlm
CiB9CiAKLWlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ3JlYXRlSXNv
bGF0ZWRDb250ZXh0KEZyYW1lKiBmcmFtZSwgSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlLCBT
ZWN1cml0eU9yaWdpbiogb3JpZ2luKQotewotI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgRkFT
VF9SRVRVUk5fSUZfTk9fRlJPTlRFTkRTKHZvaWQoKSk7Ci0gICAgaWYgKEluc3RydW1lbnRpbmdB
Z2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yRnJhbWUo
ZnJhbWUpKQotICAgICAgICByZXR1cm4gZGlkQ3JlYXRlSXNvbGF0ZWRDb250ZXh0SW1wbChpbnN0
cnVtZW50aW5nQWdlbnRzLCBmcmFtZSwgc2NyaXB0U3RhdGUsIG9yaWdpbik7Ci0jZWxzZQotICAg
IFVOVVNFRF9QQVJBTShmcmFtZSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNjcmlwdFN0YXRlKTsKLSAg
ICBVTlVTRURfUEFSQU0ob3JpZ2luKTsKLSNlbmRpZgotfQotCiBpbmxpbmUgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uQ29va2llIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEZpcmVUaW1l
cihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBpbnQgdGltZXJJZCkKIHsKICNpZiBF
TkFCTEUoSU5TUEVDVE9SKQogICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZST05URU5EUyhJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb25Db29raWUoKSk7CiAgICAgaWYgKEluc3RydW1lbnRpbmdBZ2VudHMq
IGluc3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yQ29udGV4dChjb250
ZXh0KSkKLSAgICAgICAgcmV0dXJuIHdpbGxGaXJlVGltZXJJbXBsKGluc3RydW1lbnRpbmdBZ2Vu
dHMsIHRpbWVySWQsIGNvbnRleHQpOworICAgICAgICByZXR1cm4gd2lsbEZpcmVUaW1lckltcGwo
Kmluc3RydW1lbnRpbmdBZ2VudHMsIHRpbWVySWQsIGNvbnRleHQpOwogI2Vsc2UKICAgICBVTlVT
RURfUEFSQU0oY29udGV4dCk7CiAgICAgVU5VU0VEX1BBUkFNKHRpbWVySWQpOwpAQCAtMTA0MCwy
MyArMTAzMCwyMyBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZp
cmVUaW1lcihjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpbwogI2VuZGlmCiB9CiAKLWlubGlu
ZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkSW52YWxpZGF0ZUxheW91dChGcmFt
ZSogZnJhbWUpCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEludmFs
aWRhdGVMYXlvdXQoRnJhbWUmIGZyYW1lKQogewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAg
RkFTVF9SRVRVUk5fSUZfTk9fRlJPTlRFTkRTKHZvaWQoKSk7CiAgICAgaWYgKEluc3RydW1lbnRp
bmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yRnJh
bWUoZnJhbWUpKQotICAgICAgICBkaWRJbnZhbGlkYXRlTGF5b3V0SW1wbChpbnN0cnVtZW50aW5n
QWdlbnRzLCBmcmFtZSk7CisgICAgICAgIGRpZEludmFsaWRhdGVMYXlvdXRJbXBsKCppbnN0cnVt
ZW50aW5nQWdlbnRzLCBmcmFtZSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShmcmFtZSk7CiAj
ZW5kaWYKIH0KIAotaW5saW5lIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OndpbGxMYXlvdXQoRnJhbWUqIGZyYW1lKQoraW5saW5lIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxM
YXlvdXQoRnJhbWUmIGZyYW1lKQogewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgRkFTVF9S
RVRVUk5fSUZfTk9fRlJPTlRFTkRTKEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSgpKTsK
ICAgICBpZiAoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3Ry
dW1lbnRpbmdBZ2VudHNGb3JGcmFtZShmcmFtZSkpCi0gICAgICAgIHJldHVybiB3aWxsTGF5b3V0
SW1wbChpbnN0cnVtZW50aW5nQWdlbnRzLCBmcmFtZSk7CisgICAgICAgIHJldHVybiB3aWxsTGF5
b3V0SW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywgZnJhbWUpOwogI2Vsc2UKICAgICBVTlVTRURf
UEFSQU0oZnJhbWUpOwogI2VuZGlmCkBAIC0xMDc1LDIzICsxMDY1LDIzIEBAIGlubGluZSB2b2lk
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkTGF5b3V0KGNvbnN0IEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbkNvCiAjZW5kaWYKIH0KIAotaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpkaWRTY3JvbGwoUGFnZSogcGFnZSkKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZGlkU2Nyb2xsKFBhZ2UmIHBhZ2UpCiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RP
UikKICAgICBGQVNUX1JFVFVSTl9JRl9OT19GUk9OVEVORFModm9pZCgpKTsKICAgICBpZiAoSW5z
dHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2Vu
dHNGb3JQYWdlKHBhZ2UpKQotICAgICAgICBkaWRTY3JvbGxJbXBsKGluc3RydW1lbnRpbmdBZ2Vu
dHMpOworICAgICAgICBkaWRTY3JvbGxJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRzKTsKICNlbHNl
CiAgICAgVU5VU0VEX1BBUkFNKHBhZ2UpOwogI2VuZGlmCiB9CiAKLWlubGluZSBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb25Db29raWUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRGlzcGF0
Y2hYSFJMb2FkRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgWE1MSHR0cFJl
cXVlc3QqIHJlcXVlc3QpCitpbmxpbmUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbERpc3BhdGNoWEhSTG9hZEV2ZW50KFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFhNTEh0dHBSZXF1ZXN0JiByZXF1ZXN0KQogewogI2lm
IEVOQUJMRShJTlNQRUNUT1IpCiAgICAgRkFTVF9SRVRVUk5fSUZfTk9fRlJPTlRFTkRTKEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSgpKTsKICAgICBpZiAoSW5zdHJ1bWVudGluZ0FnZW50
cyogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JDb250ZXh0KGNv
bnRleHQpKQotICAgICAgICByZXR1cm4gd2lsbERpc3BhdGNoWEhSTG9hZEV2ZW50SW1wbChpbnN0
cnVtZW50aW5nQWdlbnRzLCByZXF1ZXN0LCBjb250ZXh0KTsKKyAgICAgICAgcmV0dXJuIHdpbGxE
aXNwYXRjaFhIUkxvYWRFdmVudEltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMsIHJlcXVlc3QsIGNv
bnRleHQpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oY29udGV4dCk7CiAgICAgVU5VU0VEX1BB
UkFNKHJlcXVlc3QpOwpAQCAtMTExNSw3ICsxMTA1LDcgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjp3aWxsUGFpbnQoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKICNpZiBF
TkFCTEUoSU5TUEVDVE9SKQogICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZST05URU5EUyh2b2lkKCkp
OwogICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5z
dHJ1bWVudGluZ0FnZW50c0ZvclJlbmRlcmVyKHJlbmRlcmVyKSkKLSAgICAgICAgcmV0dXJuIHdp
bGxQYWludEltcGwoaW5zdHJ1bWVudGluZ0FnZW50cywgcmVuZGVyZXIpOworICAgICAgICByZXR1
cm4gd2lsbFBhaW50SW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywgcmVuZGVyZXIpOwogI2Vsc2UK
ICAgICBVTlVTRURfUEFSQU0ocmVuZGVyZXIpOwogI2VuZGlmCkBAIC0xMTI2LDQxICsxMTE2LDQx
IEBAIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUGFpbnQoUmVuZGVy
T2JqZWN0KiByZW5kZXJlciwgY29uc3QgTGF5CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBG
QVNUX1JFVFVSTl9JRl9OT19GUk9OVEVORFModm9pZCgpKTsKICAgICBpZiAoSW5zdHJ1bWVudGlu
Z0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JSZW5k
ZXJlcihyZW5kZXJlcikpCi0gICAgICAgIGRpZFBhaW50SW1wbChpbnN0cnVtZW50aW5nQWdlbnRz
LCByZW5kZXJlciwgcmVjdCk7CisgICAgICAgIGRpZFBhaW50SW1wbCgqaW5zdHJ1bWVudGluZ0Fn
ZW50cywgcmVuZGVyZXIsIHJlY3QpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0ocmVuZGVyZXIp
OwogICAgIFVOVVNFRF9QQVJBTShyZWN0KTsKICNlbmRpZgogfQogCi1pbmxpbmUgdm9pZCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxTY3JvbGxMYXllcihGcmFtZSogZnJhbWUpCitpbmxp
bmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxTY3JvbGxMYXllcihGcmFtZSYg
ZnJhbWUpCiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBGQVNUX1JFVFVSTl9JRl9OT19G
Uk9OVEVORFModm9pZCgpKTsKICAgICBpZiAoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVu
dGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JGcmFtZShmcmFtZSkpCi0gICAgICAg
IHdpbGxTY3JvbGxMYXllckltcGwoaW5zdHJ1bWVudGluZ0FnZW50cywgZnJhbWUpOworICAgICAg
ICB3aWxsU2Nyb2xsTGF5ZXJJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRzLCBmcmFtZSk7CiAjZWxz
ZQogICAgIFVOVVNFRF9QQVJBTShmcmFtZSk7CiAjZW5kaWYKIH0KIAotaW5saW5lIHZvaWQgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRTY3JvbGxMYXllcihGcmFtZSogZnJhbWUpCitpbmxp
bmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFNjcm9sbExheWVyKEZyYW1lJiBm
cmFtZSkKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZS
T05URU5EUyh2b2lkKCkpOwogICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50
aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvckZyYW1lKGZyYW1lKSkKLSAgICAgICAg
ZGlkU2Nyb2xsTGF5ZXJJbXBsKGluc3RydW1lbnRpbmdBZ2VudHMpOworICAgICAgICBkaWRTY3Jv
bGxMYXllckltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMpOwogI2Vsc2UKICAgICBVTlVTRURfUEFS
QU0oZnJhbWUpOwogI2VuZGlmCiB9CiAKLWlubGluZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25D
b29raWUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUmVjYWxjdWxhdGVTdHlsZShEb2N1
bWVudCogZG9jdW1lbnQpCitpbmxpbmUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFJlY2FsY3VsYXRlU3R5bGUoRG9jdW1lbnQmIGRv
Y3VtZW50KQogewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgRkFTVF9SRVRVUk5fSUZfTk9f
RlJPTlRFTkRTKEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSgpKTsKICAgICBpZiAoSW5z
dHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2Vu
dHNGb3JEb2N1bWVudChkb2N1bWVudCkpCi0gICAgICAgIHJldHVybiB3aWxsUmVjYWxjdWxhdGVT
dHlsZUltcGwoaW5zdHJ1bWVudGluZ0FnZW50cywgZG9jdW1lbnQtPmZyYW1lKCkpOworICAgICAg
ICByZXR1cm4gd2lsbFJlY2FsY3VsYXRlU3R5bGVJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRzLCBk
b2N1bWVudCk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShkb2N1bWVudCk7CiAjZW5kaWYKQEAg
LTExNzgsMjMgKzExNjgsMjMgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpkaWRSZWNhbGN1bGF0ZVN0eWxlKGNvbnN0IEluc3BlY3Rvckluc3RydW0KICNlbmRpZgogfQog
Ci1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFNjaGVkdWxlU3R5bGVS
ZWNhbGN1bGF0aW9uKERvY3VtZW50KiBkb2N1bWVudCkKK2lubGluZSB2b2lkIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6ZGlkU2NoZWR1bGVTdHlsZVJlY2FsY3VsYXRpb24oRG9jdW1lbnQmIGRv
Y3VtZW50KQogewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgRkFTVF9SRVRVUk5fSUZfTk9f
RlJPTlRFTkRTKHZvaWQoKSk7CiAgICAgaWYgKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1l
bnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yRG9jdW1lbnQoZG9jdW1lbnQpKQot
ICAgICAgICBkaWRTY2hlZHVsZVN0eWxlUmVjYWxjdWxhdGlvbkltcGwoaW5zdHJ1bWVudGluZ0Fn
ZW50cywgZG9jdW1lbnQpOworICAgICAgICBkaWRTY2hlZHVsZVN0eWxlUmVjYWxjdWxhdGlvbklt
cGwoKmluc3RydW1lbnRpbmdBZ2VudHMsIGRvY3VtZW50KTsKICNlbHNlCiAgICAgVU5VU0VEX1BB
UkFNKGRvY3VtZW50KTsKICNlbmRpZgogfQogCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmFwcGx5RW11bGF0ZWRNZWRpYShGcmFtZSogZnJhbWUsIFN0cmluZyogbWVkaWEp
CitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmFwcGx5RW11bGF0ZWRNZWRp
YShGcmFtZSYgZnJhbWUsIFN0cmluZyYgbWVkaWEpCiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikK
ICAgICBGQVNUX1JFVFVSTl9JRl9OT19GUk9OVEVORFModm9pZCgpKTsKICAgICBpZiAoSW5zdHJ1
bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNG
b3JGcmFtZShmcmFtZSkpCi0gICAgICAgIGFwcGx5RW11bGF0ZWRNZWRpYUltcGwoaW5zdHJ1bWVu
dGluZ0FnZW50cywgbWVkaWEpOworICAgICAgICBhcHBseUVtdWxhdGVkTWVkaWFJbXBsKCppbnN0
cnVtZW50aW5nQWdlbnRzLCBtZWRpYSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShmcmFtZSk7
CiAgICAgVU5VU0VEX1BBUkFNKG1lZGlhKTsKQEAgLTEyMDUsNyArMTE5NSw3IEBAIGlubGluZSB2
b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFNlbmRSZXF1ZXN0KEZyYW1lKiBmcmFt
ZSwgdW5zaWduZWQgbG9uCiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBpZiAoSW5zdHJ1
bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNG
b3JGcmFtZShmcmFtZSkpCi0gICAgICAgIHdpbGxTZW5kUmVxdWVzdEltcGwoaW5zdHJ1bWVudGlu
Z0FnZW50cywgaWRlbnRpZmllciwgbG9hZGVyLCByZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlKTsK
KyAgICAgICAgd2lsbFNlbmRSZXF1ZXN0SW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywgaWRlbnRp
ZmllciwgbG9hZGVyLCByZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlKTsKICNlbHNlCiAgICAgVU5V
U0VEX1BBUkFNKGZyYW1lKTsKICAgICBVTlVTRURfUEFSQU0oaWRlbnRpZmllcik7CkBAIC0xMjE5
LDcgKzEyMDksNyBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNvbnRp
bnVlQWZ0ZXJQaW5nTG9hZGVyKEZyYW1lJiBmcmFtZSwgdW5zaQogewogI2lmIEVOQUJMRShJTlNQ
RUNUT1IpCiAgICAgaWYgKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMg
PSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yRnJhbWUoJmZyYW1lKSkKLSAgICAgICAgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpjb250aW51ZUFmdGVyUGluZ0xvYWRlckltcGwoaW5zdHJ1bWVudGlu
Z0FnZW50cywgaWRlbnRpZmllciwgbG9hZGVyLCByZXF1ZXN0LCByZXNwb25zZSk7CisgICAgICAg
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Y29udGludWVBZnRlclBpbmdMb2FkZXJJbXBsKCpp
bnN0cnVtZW50aW5nQWdlbnRzLCBpZGVudGlmaWVyLCBsb2FkZXIsIHJlcXVlc3QsIHJlc3BvbnNl
KTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGZyYW1lKTsKICAgICBVTlVTRURfUEFSQU0oaWRl
bnRpZmllcik7CkBAIC0xMjI5LDIyICsxMjE5LDIyIEBAIGlubGluZSB2b2lkIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6Y29udGludWVBZnRlclBpbmdMb2FkZXIoRnJhbWUmIGZyYW1lLCB1bnNp
CiAjZW5kaWYKIH0KIAotaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjptYXJr
UmVzb3VyY2VBc0NhY2hlZChQYWdlKiBwYWdlLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpCitp
bmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Om1hcmtSZXNvdXJjZUFzQ2FjaGVk
KFBhZ2UmIHBhZ2UsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcikKIHsKICNpZiBFTkFCTEUoSU5T
UEVDVE9SKQogICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRz
ID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvclBhZ2UocGFnZSkpCi0gICAgICAgIG1hcmtSZXNvdXJj
ZUFzQ2FjaGVkSW1wbChpbnN0cnVtZW50aW5nQWdlbnRzLCBpZGVudGlmaWVyKTsKKyAgICAgICAg
bWFya1Jlc291cmNlQXNDYWNoZWRJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRzLCBpZGVudGlmaWVy
KTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHBhZ2UpOwogICAgIFVOVVNFRF9QQVJBTShpZGVu
dGlmaWVyKTsKICNlbmRpZgogfQogCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmRpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZShQYWdlKiBwYWdlLCBEb2N1bWVudExv
YWRlciogbG9hZGVyLCBDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UpCitpbmxpbmUgdm9pZCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZShQYWdl
JiBwYWdlLCBEb2N1bWVudExvYWRlciogbG9hZGVyLCBDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2Up
CiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBpZiAoSW5zdHJ1bWVudGluZ0FnZW50cyog
aW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JQYWdlKHBhZ2UpKQot
ICAgICAgICBkaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGVJbXBsKGluc3RydW1lbnRpbmdB
Z2VudHMsIGxvYWRlciwgcmVzb3VyY2UpOworICAgICAgICBkaWRMb2FkUmVzb3VyY2VGcm9tTWVt
b3J5Q2FjaGVJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRzLCBsb2FkZXIsIHJlc291cmNlKTsKICNl
bHNlCiAgICAgVU5VU0VEX1BBUkFNKHBhZ2UpOwogICAgIFVOVVNFRF9QQVJBTShsb2FkZXIpOwpA
QCAtMTI1Nyw3ICsxMjQ3LDcgQEAgaW5saW5lIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tp
ZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxSZWNlaXZlUmVzb3UKICNpZiBFTkFCTEUo
SU5TUEVDVE9SKQogICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZST05URU5EUyhJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb25Db29raWUoKSk7CiAgICAgaWYgKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3Ry
dW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yRnJhbWUoZnJhbWUpKQotICAg
ICAgICByZXR1cm4gd2lsbFJlY2VpdmVSZXNvdXJjZURhdGFJbXBsKGluc3RydW1lbnRpbmdBZ2Vu
dHMsIGlkZW50aWZpZXIsIGZyYW1lLCBsZW5ndGgpOworICAgICAgICByZXR1cm4gd2lsbFJlY2Vp
dmVSZXNvdXJjZURhdGFJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRzLCBmcmFtZSwgaWRlbnRpZmll
ciwgbGVuZ3RoKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGZyYW1lKTsKICAgICBVTlVTRURf
UEFSQU0oaWRlbnRpZmllcik7CkBAIC0xMjgxLDcgKzEyNzEsNyBAQCBpbmxpbmUgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uQ29va2llIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFJlY2Vp
dmVSZXNvdQogewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgaWYgKEluc3RydW1lbnRpbmdB
Z2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yRnJhbWUo
ZnJhbWUpKQotICAgICAgICByZXR1cm4gd2lsbFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlSW1wbChp
bnN0cnVtZW50aW5nQWdlbnRzLCBpZGVudGlmaWVyLCByZXNwb25zZSwgZnJhbWUpOworICAgICAg
ICByZXR1cm4gd2lsbFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlSW1wbCgqaW5zdHJ1bWVudGluZ0Fn
ZW50cywgZnJhbWUsIGlkZW50aWZpZXIsIHJlc3BvbnNlKTsKICNlbHNlCiAgICAgVU5VU0VEX1BB
UkFNKGZyYW1lKTsKICAgICBVTlVTRURfUEFSQU0oaWRlbnRpZmllcik7CkBAIC0xMzA1LDcgKzEy
OTUsNyBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVS
ZXNvdXJjZVJlc3BvbnNlKGNvbnN0IEluc3BlY3RvcgogI2VuZGlmCiB9CiAKLWlubGluZSB2b2lk
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Y29udGludWVBZnRlclhGcmFtZU9wdGlvbnNEZW5p
ZWQoRnJhbWUqIGZyYW1lLCBEb2N1bWVudExvYWRlciogbG9hZGVyLCB1bnNpZ25lZCBsb25nIGlk
ZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHIpCitpbmxpbmUgdm9pZCBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OmNvbnRpbnVlQWZ0ZXJYRnJhbWVPcHRpb25zRGVuaWVkKEZyYW1l
KiBmcmFtZSwgRG9jdW1lbnRMb2FkZXImIGxvYWRlciwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByKQogewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAg
ICAgRkFTVF9SRVRVUk5fSUZfTk9fRlJPTlRFTkRTKHZvaWQoKSk7CkBAIC0xMzE4LDcgKzEzMDgs
NyBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNvbnRpbnVlQWZ0ZXJY
RnJhbWVPcHRpb25zRGVuaWVkKEZyYW1lKiBmcgogI2VuZGlmCiB9CiAKLWlubGluZSB2b2lkIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Y29udGludWVXaXRoUG9saWN5RG93bmxvYWQoRnJhbWUq
IGZyYW1lLCBEb2N1bWVudExvYWRlciogbG9hZGVyLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIs
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHIpCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmNvbnRpbnVlV2l0aFBvbGljeURvd25sb2FkKEZyYW1lKiBmcmFtZSwgRG9jdW1l
bnRMb2FkZXImIGxvYWRlciwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiByKQogewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgRkFTVF9SRVRVUk5f
SUZfTk9fRlJPTlRFTkRTKHZvaWQoKSk7CkBAIC0xMzMxLDcgKzEzMjEsNyBAQCBpbmxpbmUgdm9p
ZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNvbnRpbnVlV2l0aFBvbGljeURvd25sb2FkKEZy
YW1lKiBmcmFtZSwgRAogI2VuZGlmCiB9CiAKLWlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6Y29udGludWVXaXRoUG9saWN5SWdub3JlKEZyYW1lKiBmcmFtZSwgRG9jdW1lbnRM
b2FkZXIqIGxvYWRlciwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiByKQoraW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjb250aW51
ZVdpdGhQb2xpY3lJZ25vcmUoRnJhbWUqIGZyYW1lLCBEb2N1bWVudExvYWRlciYgbG9hZGVyLCB1
bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHIpCiB7CiAj
aWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBGQVNUX1JFVFVSTl9JRl9OT19GUk9OVEVORFModm9p
ZCgpKTsKQEAgLTEzNDgsNyArMTMzOCw3IEBAIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6ZGlkUmVjZWl2ZURhdGEoRnJhbWUqIGZyYW1lLCB1bnNpZ25lZCBsb25nCiB7CiAj
aWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBpZiAoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1
bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JGcmFtZShmcmFtZSkpCi0gICAg
ICAgIGRpZFJlY2VpdmVEYXRhSW1wbChpbnN0cnVtZW50aW5nQWdlbnRzLCBpZGVudGlmaWVyLCBk
YXRhLCBkYXRhTGVuZ3RoLCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgICAgIGRpZFJlY2VpdmVE
YXRhSW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywgaWRlbnRpZmllciwgZGF0YSwgZGF0YUxlbmd0
aCwgZW5jb2RlZERhdGFMZW5ndGgpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZnJhbWUpOwog
ICAgIFVOVVNFRF9QQVJBTShpZGVudGlmaWVyKTsKQEAgLTEzNjIsNyArMTM1Miw3IEBAIGlubGlu
ZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmluaXNoTG9hZGluZyhGcmFtZSog
ZnJhbWUsIERvY3VtZW50TG9hCiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBpZiAoSW5z
dHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2Vu
dHNGb3JGcmFtZShmcmFtZSkpCi0gICAgICAgIGRpZEZpbmlzaExvYWRpbmdJbXBsKGluc3RydW1l
bnRpbmdBZ2VudHMsIGlkZW50aWZpZXIsIGxvYWRlciwgZmluaXNoVGltZSk7CisgICAgICAgIGRp
ZEZpbmlzaExvYWRpbmdJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRzLCBpZGVudGlmaWVyLCBsb2Fk
ZXIsIGZpbmlzaFRpbWUpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZnJhbWUpOwogICAgIFVO
VVNFRF9QQVJBTShsb2FkZXIpOwpAQCAtMTM3NSw3ICsxMzY1LDcgQEAgaW5saW5lIHZvaWQgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGYWlsTG9hZGluZyhGcmFtZSogZnJhbWUsIERvY3Vt
ZW50TG9hZGUKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIGlmIChJbnN0cnVtZW50aW5n
QWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvckZyYW1l
KGZyYW1lKSkKLSAgICAgICAgZGlkRmFpbExvYWRpbmdJbXBsKGluc3RydW1lbnRpbmdBZ2VudHMs
IGlkZW50aWZpZXIsIGxvYWRlciwgZXJyb3IpOworICAgICAgICBkaWRGYWlsTG9hZGluZ0ltcGwo
Kmluc3RydW1lbnRpbmdBZ2VudHMsIGlkZW50aWZpZXIsIGxvYWRlciwgZXJyb3IpOwogI2Vsc2UK
ICAgICBVTlVTRURfUEFSQU0oZnJhbWUpOwogICAgIFVOVVNFRF9QQVJBTShsb2FkZXIpOwpAQCAt
MTM4NCwxMyArMTM3NCwxMyBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmRpZEZhaWxMb2FkaW5nKEZyYW1lKiBmcmFtZSwgRG9jdW1lbnRMb2FkZQogI2VuZGlmCiB9CiAK
LWlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyU3RhcnRlZExvYWRpbmdGb3JDbGllbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50KiBj
bGllbnQpCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRvY3VtZW50VGhy
ZWFkYWJsZUxvYWRlclN0YXJ0ZWRMb2FkaW5nRm9yQ2xpZW50KERvY3VtZW50JiBkb2N1bWVudCwg
dW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50KiBjbGllbnQp
CiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBpZiAoSW5zdHJ1bWVudGluZ0FnZW50cyog
aW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JDb250ZXh0KGNvbnRl
eHQpKQotICAgICAgICBkb2N1bWVudFRocmVhZGFibGVMb2FkZXJTdGFydGVkTG9hZGluZ0ZvckNs
aWVudEltcGwoaW5zdHJ1bWVudGluZ0FnZW50cywgaWRlbnRpZmllciwgY2xpZW50KTsKKyAgICBp
ZiAoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRp
bmdBZ2VudHNGb3JEb2N1bWVudChkb2N1bWVudCkpCisgICAgICAgIGRvY3VtZW50VGhyZWFkYWJs
ZUxvYWRlclN0YXJ0ZWRMb2FkaW5nRm9yQ2xpZW50SW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywg
aWRlbnRpZmllciwgY2xpZW50KTsKICNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGNvbnRleHQpOwor
ICAgIFVOVVNFRF9QQVJBTShkb2N1bWVudCk7CiAgICAgVU5VU0VEX1BBUkFNKGlkZW50aWZpZXIp
OwogICAgIFVOVVNFRF9QQVJBTShjbGllbnQpOwogI2VuZGlmCkBAIC0xNDAwLDcgKzEzOTAsNyBA
QCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxMb2FkWEhSKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleAogewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAg
aWYgKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50
aW5nQWdlbnRzRm9yQ29udGV4dChjb250ZXh0KSkKLSAgICAgICAgd2lsbExvYWRYSFJJbXBsKGlu
c3RydW1lbnRpbmdBZ2VudHMsIGNsaWVudCwgbWV0aG9kLCB1cmwsIGFzeW5jLCBmb3JtRGF0YSwg
aGVhZGVycywgaW5jbHVkZUNyZWRlbnRpYWxzKTsKKyAgICAgICAgd2lsbExvYWRYSFJJbXBsKCpp
bnN0cnVtZW50aW5nQWdlbnRzLCBjbGllbnQsIG1ldGhvZCwgdXJsLCBhc3luYywgZm9ybURhdGEs
IGhlYWRlcnMsIGluY2x1ZGVDcmVkZW50aWFscyk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShj
b250ZXh0KTsKICAgICBVTlVTRURfUEFSQU0oY2xpZW50KTsKQEAgLTE0MTcsNyArMTQwNyw3IEBA
IGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmFpbFhIUkxvYWRpbmco
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCoKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIGlm
IChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGlu
Z0FnZW50c0ZvckNvbnRleHQoY29udGV4dCkpCi0gICAgICAgIGRpZEZhaWxYSFJMb2FkaW5nSW1w
bChpbnN0cnVtZW50aW5nQWdlbnRzLCBjbGllbnQpOworICAgICAgICBkaWRGYWlsWEhSTG9hZGlu
Z0ltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMsIGNsaWVudCk7CiAjZWxzZQogICAgIFVOVVNFRF9Q
QVJBTShjb250ZXh0KTsKICAgICBVTlVTRURfUEFSQU0oY2xpZW50KTsKQEAgLTE0MjksNyArMTQx
OSw3IEBAIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmluaXNoWEhS
TG9hZGluZyhTY3JpcHRFeGVjdXRpb25Db250ZXh0CiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikK
ICAgICBpZiAoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3Ry
dW1lbnRpbmdBZ2VudHNGb3JDb250ZXh0KGNvbnRleHQpKQotICAgICAgICBkaWRGaW5pc2hYSFJM
b2FkaW5nSW1wbChpbnN0cnVtZW50aW5nQWdlbnRzLCBjbGllbnQsIGlkZW50aWZpZXIsIHNvdXJj
ZVN0cmluZywgdXJsLCBzZW5kVVJMLCBzZW5kTGluZU51bWJlciwgc2VuZENvbHVtbk51bWJlcik7
CisgICAgICAgIGRpZEZpbmlzaFhIUkxvYWRpbmdJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRzLCBj
bGllbnQsIGlkZW50aWZpZXIsIHNvdXJjZVN0cmluZywgdXJsLCBzZW5kVVJMLCBzZW5kTGluZU51
bWJlciwgc2VuZENvbHVtbk51bWJlcik7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShjb250ZXh0
KTsKICAgICBVTlVTRURfUEFSQU0oY2xpZW50KTsKQEAgLTE0NDYsNyArMTQzNiw3IEBAIGlubGlu
ZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZVhIUlJlc3BvbnNlKFNj
cmlwdEV4ZWN1dGlvbkNvbnRlCiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBpZiAoSW5z
dHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2Vu
dHNGb3JDb250ZXh0KGNvbnRleHQpKQotICAgICAgICBkaWRSZWNlaXZlWEhSUmVzcG9uc2VJbXBs
KGluc3RydW1lbnRpbmdBZ2VudHMsIGlkZW50aWZpZXIpOworICAgICAgICBkaWRSZWNlaXZlWEhS
UmVzcG9uc2VJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRzLCBpZGVudGlmaWVyKTsKICNlbHNlCiAg
ICAgVU5VU0VEX1BBUkFNKGNvbnRleHQpOwogICAgIFVOVVNFRF9QQVJBTShpZGVudGlmaWVyKTsK
QEAgLTE0NTcsNyArMTQ0Nyw3IEBAIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6d2lsbExvYWRYSFJTeW5jaHJvbm91c2x5KFNjcmlwdEV4ZWN1dGlvbkNvCiB7CiAjaWYgRU5B
QkxFKElOU1BFQ1RPUikKICAgICBpZiAoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGlu
Z0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JDb250ZXh0KGNvbnRleHQpKQotICAgICAg
ICB3aWxsTG9hZFhIUlN5bmNocm9ub3VzbHlJbXBsKGluc3RydW1lbnRpbmdBZ2VudHMpOworICAg
ICAgICB3aWxsTG9hZFhIUlN5bmNocm9ub3VzbHlJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRzKTsK
ICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGNvbnRleHQpOwogI2VuZGlmCkBAIC0xNDY3LDcgKzE0
NTcsNyBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZExvYWRYSFJT
eW5jaHJvbm91c2x5KFNjcmlwdEV4ZWN1dGlvbkNvbgogewogI2lmIEVOQUJMRShJTlNQRUNUT1Ip
CiAgICAgaWYgKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0
cnVtZW50aW5nQWdlbnRzRm9yQ29udGV4dChjb250ZXh0KSkKLSAgICAgICAgZGlkTG9hZFhIUlN5
bmNocm9ub3VzbHlJbXBsKGluc3RydW1lbnRpbmdBZ2VudHMpOworICAgICAgICBkaWRMb2FkWEhS
U3luY2hyb25vdXNseUltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMpOwogI2Vsc2UKICAgICBVTlVT
RURfUEFSQU0oY29udGV4dCk7CiAjZW5kaWYKQEAgLTE0NzcsNyArMTQ2Nyw3IEBAIGlubGluZSB2
b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c2NyaXB0SW1wb3J0ZWQoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29uCiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBpZiAoSW5zdHJ1
bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNG
b3JDb250ZXh0KGNvbnRleHQpKQotICAgICAgICBzY3JpcHRJbXBvcnRlZEltcGwoaW5zdHJ1bWVu
dGluZ0FnZW50cywgaWRlbnRpZmllciwgc291cmNlU3RyaW5nKTsKKyAgICAgICAgc2NyaXB0SW1w
b3J0ZWRJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRzLCBpZGVudGlmaWVyLCBzb3VyY2VTdHJpbmcp
OwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oY29udGV4dCk7CiAgICAgVU5VU0VEX1BBUkFNKGlk
ZW50aWZpZXIpOwpAQCAtMTQ4OSw3ICsxNDc5LDcgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpzY3JpcHRFeGVjdXRpb25CbG9ja2VkQnlDU1AoU2NyaXB0RXhlY3V0aW8K
IHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBp
bnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvckNvbnRleHQoY29udGV4
dCkpCi0gICAgICAgIHNjcmlwdEV4ZWN1dGlvbkJsb2NrZWRCeUNTUEltcGwoaW5zdHJ1bWVudGlu
Z0FnZW50cywgZGlyZWN0aXZlVGV4dCk7CisgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkJsb2NrZWRC
eUNTUEltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMsIGRpcmVjdGl2ZVRleHQpOwogI2Vsc2UKICAg
ICBVTlVTRURfUEFSQU0oY29udGV4dCk7CiAgICAgVU5VU0VEX1BBUkFNKGRpcmVjdGl2ZVRleHQp
OwpAQCAtMTUwMCwxOCArMTQ5MCwxOCBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmRpZFJlY2VpdmVTY3JpcHRSZXNwb25zZShTY3JpcHRFeGVjdXRpb25DbwogewogI2lm
IEVOQUJMRShJTlNQRUNUT1IpCiAgICAgaWYgKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1l
bnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yQ29udGV4dChjb250ZXh0KSkKLSAg
ICAgICAgZGlkUmVjZWl2ZVNjcmlwdFJlc3BvbnNlSW1wbChpbnN0cnVtZW50aW5nQWdlbnRzLCBp
ZGVudGlmaWVyKTsKKyAgICAgICAgZGlkUmVjZWl2ZVNjcmlwdFJlc3BvbnNlSW1wbCgqaW5zdHJ1
bWVudGluZ0FnZW50cywgaWRlbnRpZmllcik7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShjb250
ZXh0KTsKICAgICBVTlVTRURfUEFSQU0oaWRlbnRpZmllcik7CiAjZW5kaWYKIH0KIAotaW5saW5l
IHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkb21Db250ZW50TG9hZGVkRXZlbnRGaXJl
ZChGcmFtZSogZnJhbWUpCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRv
bUNvbnRlbnRMb2FkZWRFdmVudEZpcmVkKEZyYW1lJiBmcmFtZSkKIHsKICNpZiBFTkFCTEUoSU5T
UEVDVE9SKQogICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRz
ID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvckZyYW1lKGZyYW1lKSkKLSAgICAgICAgZG9tQ29udGVu
dExvYWRlZEV2ZW50RmlyZWRJbXBsKGluc3RydW1lbnRpbmdBZ2VudHMsIGZyYW1lKTsKKyAgICAg
ICAgZG9tQ29udGVudExvYWRlZEV2ZW50RmlyZWRJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRzLCBm
cmFtZSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShmcmFtZSk7CiAjZW5kaWYKQEAgLTE1MjEs
MjcgKzE1MTEsMjcgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpsb2Fk
RXZlbnRGaXJlZChGcmFtZSogZnJhbWUpCiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBp
ZiAoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRp
bmdBZ2VudHNGb3JGcmFtZShmcmFtZSkpCi0gICAgICAgIGxvYWRFdmVudEZpcmVkSW1wbChpbnN0
cnVtZW50aW5nQWdlbnRzLCBmcmFtZSk7CisgICAgICAgIGxvYWRFdmVudEZpcmVkSW1wbCgqaW5z
dHJ1bWVudGluZ0FnZW50cywgZnJhbWUpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZnJhbWUp
OwogI2VuZGlmCiB9CiAKLWlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZnJh
bWVEZXRhY2hlZEZyb21QYXJlbnQoRnJhbWUqIGZyYW1lKQoraW5saW5lIHZvaWQgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpmcmFtZURldGFjaGVkRnJvbVBhcmVudChGcmFtZSYgZnJhbWUpCiB7
CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBpZiAoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5z
dHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JGcmFtZShmcmFtZSkpCi0g
ICAgICAgIGZyYW1lRGV0YWNoZWRGcm9tUGFyZW50SW1wbChpbnN0cnVtZW50aW5nQWdlbnRzLCBm
cmFtZSk7CisgICAgICAgIGZyYW1lRGV0YWNoZWRGcm9tUGFyZW50SW1wbCgqaW5zdHJ1bWVudGlu
Z0FnZW50cywgZnJhbWUpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZnJhbWUpOwogI2VuZGlm
CiB9CiAKLWlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ29tbWl0TG9h
ZChGcmFtZSogZnJhbWUsIERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCitpbmxpbmUgdm9pZCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENvbW1pdExvYWQoRnJhbWUmIGZyYW1lLCBEb2N1bWVu
dExvYWRlciogbG9hZGVyKQogewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgaWYgKEluc3Ry
dW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRz
Rm9yRnJhbWUoZnJhbWUpKQotICAgICAgICBkaWRDb21taXRMb2FkSW1wbChpbnN0cnVtZW50aW5n
QWdlbnRzLCBmcmFtZS0+cGFnZSgpLCBsb2FkZXIpOworICAgICAgICBkaWRDb21taXRMb2FkSW1w
bCgqaW5zdHJ1bWVudGluZ0FnZW50cywgZnJhbWUucGFnZSgpLCBsb2FkZXIpOwogI2Vsc2UKICAg
ICBVTlVTRURfUEFSQU0oZnJhbWUpOwogICAgIFVOVVNFRF9QQVJBTShsb2FkZXIpOwpAQCAtMTU1
MywxNyArMTU0MywxNyBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmZy
YW1lRG9jdW1lbnRVcGRhdGVkKEZyYW1lKiBmcmFtZSkKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQog
ICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZST05URU5EUyh2b2lkKCkpOwogICAgIGlmIChJbnN0cnVt
ZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0Zv
ckZyYW1lKGZyYW1lKSkKLSAgICAgICAgZnJhbWVEb2N1bWVudFVwZGF0ZWRJbXBsKGluc3RydW1l
bnRpbmdBZ2VudHMsIGZyYW1lKTsKKyAgICAgICAgZnJhbWVEb2N1bWVudFVwZGF0ZWRJbXBsKCpp
bnN0cnVtZW50aW5nQWdlbnRzLCBmcmFtZSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShmcmFt
ZSk7CiAjZW5kaWYKIH0KIAotaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjps
b2FkZXJEZXRhY2hlZEZyb21GcmFtZShGcmFtZSogZnJhbWUsIERvY3VtZW50TG9hZGVyKiBsb2Fk
ZXIpCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmxvYWRlckRldGFjaGVk
RnJvbUZyYW1lKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnRMb2FkZXImIGxvYWRlcikKIHsKICNpZiBF
TkFCTEUoSU5TUEVDVE9SKQogICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50
aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvckZyYW1lKGZyYW1lKSkKLSAgICAgICAg
bG9hZGVyRGV0YWNoZWRGcm9tRnJhbWVJbXBsKGluc3RydW1lbnRpbmdBZ2VudHMsIGxvYWRlcik7
CisgICAgICAgIGxvYWRlckRldGFjaGVkRnJvbUZyYW1lSW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50
cywgbG9hZGVyKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGZyYW1lKTsKICAgICBVTlVTRURf
UEFSQU0obG9hZGVyKTsKQEAgLTE2MTEsMTIgKzE2MDEsMTIgQEAgaW5saW5lIHZvaWQgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpmcmFtZUNsZWFyZWRTY2hlZHVsZWROYXZpZ2F0aW9uKEZyYW1l
JiBmcmEKICNlbmRpZgogfQogCi1pbmxpbmUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2ll
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFJ1bkphdmFTY3JpcHREaWFsb2coUGFnZSog
cGFnZSwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQoraW5saW5lIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbkNvb2tpZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxSdW5KYXZhU2NyaXB0RGlh
bG9nKFBhZ2UmIHBhZ2UsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKICNpZiBFTkFCTEUoSU5T
UEVDVE9SKQogICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZST05URU5EUyhJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb25Db29raWUoKSk7CiAgICAgaWYgKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1l
bnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yUGFnZShwYWdlKSkKLSAgICAgICAg
cmV0dXJuIHdpbGxSdW5KYXZhU2NyaXB0RGlhbG9nSW1wbChpbnN0cnVtZW50aW5nQWdlbnRzLCBt
ZXNzYWdlKTsKKyAgICAgICAgcmV0dXJuIHdpbGxSdW5KYXZhU2NyaXB0RGlhbG9nSW1wbCgqaW5z
dHJ1bWVudGluZ0FnZW50cywgbWVzc2FnZSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShwYWdl
KTsKICAgICBVTlVTRURfUEFSQU0obWVzc2FnZSk7CkBAIC0xNjM1LDcgKzE2MjUsNyBAQCBpbmxp
bmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJ1bkphdmFTY3JpcHREaWFsb2co
Y29uc3QgSW5zcGVjdG9ySW5zdAogI2VuZGlmCiB9CiAKLWlubGluZSB2b2lkIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6d2lsbERlc3Ryb3lDYWNoZWRSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSog
Y2FjaGVkUmVzb3VyY2UpCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Ondp
bGxEZXN0cm95Q2FjaGVkUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UmIGNhY2hlZFJlc291cmNlKQog
ewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgRkFTVF9SRVRVUk5fSUZfTk9fRlJPTlRFTkRT
KHZvaWQoKSk7CkBAIC0xNjUwLDcgKzE2NDAsNyBAQCBpbmxpbmUgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uQ29va2llIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFdyaXRlSFRNTChEbwog
I2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgRkFTVF9SRVRVUk5fSUZfTk9fRlJPTlRFTkRTKElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSgpKTsKICAgICBpZiAoSW5zdHJ1bWVudGluZ0Fn
ZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JEb2N1bWVu
dChkb2N1bWVudCkpCi0gICAgICAgIHJldHVybiB3aWxsV3JpdGVIVE1MSW1wbChpbnN0cnVtZW50
aW5nQWdlbnRzLCBzdGFydExpbmUsIGRvY3VtZW50LT5mcmFtZSgpKTsKKyAgICAgICAgcmV0dXJu
IHdpbGxXcml0ZUhUTUxJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRzLCBzdGFydExpbmUsIGRvY3Vt
ZW50LT5mcmFtZSgpKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGRvY3VtZW50KTsKICAgICBV
TlVTRURfUEFSQU0oc3RhcnRMaW5lKTsKQEAgLTE2NzUsNyArMTY2NSw3IEBAIGlubGluZSB2b2lk
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRGlzcGF0Y2hET01TdG9yYWdlRXZlbnQoY29u
c3QgU3RyaW5nJiBrCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBGQVNUX1JFVFVSTl9JRl9O
T19GUk9OVEVORFModm9pZCgpKTsKICAgICBpZiAoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1
bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JQYWdlKHBhZ2UpKQotICAgICAg
ICBkaWREaXNwYXRjaERPTVN0b3JhZ2VFdmVudEltcGwoaW5zdHJ1bWVudGluZ0FnZW50cywga2V5
LCBvbGRWYWx1ZSwgbmV3VmFsdWUsIHN0b3JhZ2VUeXBlLCBzZWN1cml0eU9yaWdpbiwgcGFnZSk7
CisgICAgICAgIGRpZERpc3BhdGNoRE9NU3RvcmFnZUV2ZW50SW1wbCgqaW5zdHJ1bWVudGluZ0Fn
ZW50cywga2V5LCBvbGRWYWx1ZSwgbmV3VmFsdWUsIHN0b3JhZ2VUeXBlLCBzZWN1cml0eU9yaWdp
biwgcGFnZSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShrZXkpOwogICAgIFVOVVNFRF9QQVJB
TShvbGRWYWx1ZSk7CkBAIC0xNjkxLDcgKzE2ODEsNyBAQCBpbmxpbmUgYm9vbCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OnNob3VsZFBhdXNlRGVkaWNhdGVkV29ya2VyT25TdGFydChTY3JpcHRF
eAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgRkFTVF9SRVRVUk5fSUZfTk9fRlJPTlRFTkRT
KGZhbHNlKTsKICAgICBpZiAoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50
cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JDb250ZXh0KGNvbnRleHQpKQotICAgICAgICByZXR1
cm4gc2hvdWxkUGF1c2VEZWRpY2F0ZWRXb3JrZXJPblN0YXJ0SW1wbChpbnN0cnVtZW50aW5nQWdl
bnRzKTsKKyAgICAgICAgcmV0dXJuIHNob3VsZFBhdXNlRGVkaWNhdGVkV29ya2VyT25TdGFydElt
cGwoKmluc3RydW1lbnRpbmdBZ2VudHMpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oY29udGV4
dCk7CiAjZW5kaWYKQEAgLTE3MDIsNyArMTY5Miw3IEBAIGlubGluZSB2b2lkIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6ZGlkU3RhcnRXb3JrZXJHbG9iYWxTY29wZShTY3JpcHRFeGVjdXRpb25D
CiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBpZiAoSW5zdHJ1bWVudGluZ0FnZW50cyog
aW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JDb250ZXh0KGNvbnRl
eHQpKQotICAgICAgICBkaWRTdGFydFdvcmtlckdsb2JhbFNjb3BlSW1wbChpbnN0cnVtZW50aW5n
QWdlbnRzLCBwcm94eSwgdXJsKTsKKyAgICAgICAgZGlkU3RhcnRXb3JrZXJHbG9iYWxTY29wZUlt
cGwoKmluc3RydW1lbnRpbmdBZ2VudHMsIHByb3h5LCB1cmwpOwogI2Vsc2UKICAgICBVTlVTRURf
UEFSQU0oY29udGV4dCk7CiAgICAgVU5VU0VEX1BBUkFNKHByb3h5KTsKQEAgLTE3MTQsNyArMTcw
NCw3IEBAIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d29ya2VyR2xvYmFs
U2NvcGVUZXJtaW5hdGVkKFNjcmlwdEV4ZWN1dGlvCiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikK
ICAgICBpZiAoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3Ry
dW1lbnRpbmdBZ2VudHNGb3JDb250ZXh0KGNvbnRleHQpKQotICAgICAgICB3b3JrZXJHbG9iYWxT
Y29wZVRlcm1pbmF0ZWRJbXBsKGluc3RydW1lbnRpbmdBZ2VudHMsIHByb3h5KTsKKyAgICAgICAg
d29ya2VyR2xvYmFsU2NvcGVUZXJtaW5hdGVkSW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywgcHJv
eHkpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oY29udGV4dCk7CiAgICAgVU5VU0VEX1BBUkFN
KHByb3h5KTsKQEAgLTE3MjYsNyArMTcxNiw3IEBAIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZGlkQ3JlYXRlV2ViU29ja2V0KERvY3VtZW50KiBkb2N1bWVudCwgdW5zCiB7
CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBpZiAoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5z
dHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JEb2N1bWVudChkb2N1bWVu
dCkpCi0gICAgICAgIGRpZENyZWF0ZVdlYlNvY2tldEltcGwoaW5zdHJ1bWVudGluZ0FnZW50cywg
aWRlbnRpZmllciwgcmVxdWVzdFVSTCwgZG9jdW1lbnRVUkwsIHByb3RvY29sLCBkb2N1bWVudCk7
CisgICAgICAgIGRpZENyZWF0ZVdlYlNvY2tldEltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMsIGlk
ZW50aWZpZXIsIHJlcXVlc3RVUkwsIGRvY3VtZW50VVJMLCBwcm90b2NvbCwgZG9jdW1lbnQpOwog
I2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZG9jdW1lbnQpOwogICAgIFVOVVNFRF9QQVJBTShpZGVu
dGlmaWVyKTsKQEAgLTE3NDAsNyArMTczMCw3IEBAIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6d2lsbFNlbmRXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0KERvY3VtZW50CiB7
CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBpZiAoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5z
dHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JEb2N1bWVudChkb2N1bWVu
dCkpCi0gICAgICAgIHdpbGxTZW5kV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdEltcGwoaW5zdHJ1
bWVudGluZ0FnZW50cywgaWRlbnRpZmllciwgcmVxdWVzdCwgZG9jdW1lbnQpOworICAgICAgICB3
aWxsU2VuZFdlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3RJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRz
LCBpZGVudGlmaWVyLCByZXF1ZXN0LCBkb2N1bWVudCk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJB
TShkb2N1bWVudCk7CiAgICAgVU5VU0VEX1BBUkFNKGlkZW50aWZpZXIpOwpAQCAtMTc1Miw3ICsx
NzQyLDcgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZl
V2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UoRG9jdW0KIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9S
KQogICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5z
dHJ1bWVudGluZ0FnZW50c0ZvckRvY3VtZW50KGRvY3VtZW50KSkKLSAgICAgICAgZGlkUmVjZWl2
ZVdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlSW1wbChpbnN0cnVtZW50aW5nQWdlbnRzLCBpZGVu
dGlmaWVyLCByZXNwb25zZSwgZG9jdW1lbnQpOworICAgICAgICBkaWRSZWNlaXZlV2ViU29ja2V0
SGFuZHNoYWtlUmVzcG9uc2VJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRzLCBpZGVudGlmaWVyLCBy
ZXNwb25zZSwgZG9jdW1lbnQpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZG9jdW1lbnQpOwog
ICAgIFVOVVNFRF9QQVJBTShpZGVudGlmaWVyKTsKQEAgLTE3NjQsNyArMTc1NCw3IEBAIGlubGlu
ZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ2xvc2VXZWJTb2NrZXQoRG9jdW1l
bnQqIGRvY3VtZW50LCB1bnNpCiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBpZiAoSW5z
dHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2Vu
dHNGb3JEb2N1bWVudChkb2N1bWVudCkpCi0gICAgICAgIGRpZENsb3NlV2ViU29ja2V0SW1wbChp
bnN0cnVtZW50aW5nQWdlbnRzLCBpZGVudGlmaWVyLCBkb2N1bWVudCk7CisgICAgICAgIGRpZENs
b3NlV2ViU29ja2V0SW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywgaWRlbnRpZmllciwgZG9jdW1l
bnQpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZG9jdW1lbnQpOwogICAgIFVOVVNFRF9QQVJB
TShpZGVudGlmaWVyKTsKQEAgLTE3NzQsNyArMTc2NCw3IEBAIGlubGluZSB2b2lkIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZVdlYlNvY2tldEZyYW1lKERvY3VtZW50KiBkb2N1
bWVuCiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBpZiAoSW5zdHJ1bWVudGluZ0FnZW50
cyogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JEb2N1bWVudChk
b2N1bWVudCkpCi0gICAgICAgIGRpZFJlY2VpdmVXZWJTb2NrZXRGcmFtZUltcGwoaW5zdHJ1bWVu
dGluZ0FnZW50cywgaWRlbnRpZmllciwgZnJhbWUpOworICAgICAgICBkaWRSZWNlaXZlV2ViU29j
a2V0RnJhbWVJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRzLCBpZGVudGlmaWVyLCBmcmFtZSk7CiAj
ZWxzZQogICAgIFVOVVNFRF9QQVJBTShkb2N1bWVudCk7CiAgICAgVU5VU0VEX1BBUkFNKGlkZW50
aWZpZXIpOwpAQCAtMTc4NSw3ICsxNzc1LDcgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpkaWRSZWNlaXZlV2ViU29ja2V0RnJhbWVFcnJvcihEb2N1bWVudCogZG8KIHsK
ICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0
cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvckRvY3VtZW50KGRvY3VtZW50
KSkKLSAgICAgICAgZGlkUmVjZWl2ZVdlYlNvY2tldEZyYW1lRXJyb3JJbXBsKGluc3RydW1lbnRp
bmdBZ2VudHMsIGlkZW50aWZpZXIsIGVycm9yTWVzc2FnZSk7CisgICAgICAgIGRpZFJlY2VpdmVX
ZWJTb2NrZXRGcmFtZUVycm9ySW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywgaWRlbnRpZmllciwg
ZXJyb3JNZXNzYWdlKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGRvY3VtZW50KTsKICAgICBV
TlVTRURfUEFSQU0oaWRlbnRpZmllcik7CkBAIC0xNzk2LDcgKzE3ODYsNyBAQCBpbmxpbmUgdm9p
ZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFNlbmRXZWJTb2NrZXRGcmFtZShEb2N1bWVu
dCogZG9jdW1lbnQsCiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBpZiAoSW5zdHJ1bWVu
dGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JE
b2N1bWVudChkb2N1bWVudCkpCi0gICAgICAgIGRpZFNlbmRXZWJTb2NrZXRGcmFtZUltcGwoaW5z
dHJ1bWVudGluZ0FnZW50cywgaWRlbnRpZmllciwgZnJhbWUpOworICAgICAgICBkaWRTZW5kV2Vi
U29ja2V0RnJhbWVJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRzLCBpZGVudGlmaWVyLCBmcmFtZSk7
CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShkb2N1bWVudCk7CiAgICAgVU5VU0VEX1BBUkFNKGlk
ZW50aWZpZXIpOwpAQCAtMTgwNiwxNTEgKzE3OTYsMTUxIEBAIGlubGluZSB2b2lkIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6ZGlkU2VuZFdlYlNvY2tldEZyYW1lKERvY3VtZW50KiBkb2N1bWVu
dCwKICNlbmRpZgogCiAjaWYgRU5BQkxFKFdFQl9SRVBMQVkpCi1pbmxpbmUgdm9pZCBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OnNlc3Npb25DcmVhdGVkKFBhZ2UqIHBhZ2UsIFBhc3NSZWZQdHI8
UmVwbGF5U2Vzc2lvbj4gc2Vzc2lvbikKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6c2Vzc2lvbkNyZWF0ZWQoUGFnZSYgcGFnZSwgUGFzc1JlZlB0cjxSZXBsYXlTZXNzaW9u
PiBzZXNzaW9uKQogewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgRkFTVF9SRVRVUk5fSUZf
Tk9fRlJPTlRFTkRTKHZvaWQoKSk7CiAgICAgaWYgKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3Ry
dW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yUGFnZShwYWdlKSkKLSAgICAg
ICAgc2Vzc2lvbkNyZWF0ZWRJbXBsKGluc3RydW1lbnRpbmdBZ2VudHMsIHNlc3Npb24pOworICAg
ICAgICBzZXNzaW9uQ3JlYXRlZEltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMsIHNlc3Npb24pOwog
I2Vsc2UKICAgICBVTlVTRURfUEFSQU0ocGFnZSk7CiAgICAgVU5VU0VEX1BBUkFNKHNlc3Npb24p
OwogI2VuZGlmCiB9CiAKLWlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c2Vz
c2lvbkxvYWRlZChQYWdlKiBwYWdlLCBQYXNzUmVmUHRyPFJlcGxheVNlc3Npb24+IHNlc3Npb24p
CitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNlc3Npb25Mb2FkZWQoUGFn
ZSYgcGFnZSwgUGFzc1JlZlB0cjxSZXBsYXlTZXNzaW9uPiBzZXNzaW9uKQogewogI2lmIEVOQUJM
RShJTlNQRUNUT1IpCiAgICAgRkFTVF9SRVRVUk5fSUZfTk9fRlJPTlRFTkRTKHZvaWQoKSk7CiAg
ICAgaWYgKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVt
ZW50aW5nQWdlbnRzRm9yUGFnZShwYWdlKSkKLSAgICAgICAgc2Vzc2lvbkxvYWRlZEltcGwoaW5z
dHJ1bWVudGluZ0FnZW50cywgc2Vzc2lvbik7CisgICAgICAgIHNlc3Npb25Mb2FkZWRJbXBsKCpp
bnN0cnVtZW50aW5nQWdlbnRzLCBzZXNzaW9uKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHBh
Z2UpOwogICAgIFVOVVNFRF9QQVJBTShzZXNzaW9uKTsKICNlbmRpZgogfQogCi1pbmxpbmUgdm9p
ZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNlc3Npb25Nb2RpZmllZChQYWdlKiBwYWdlLCBQ
YXNzUmVmUHRyPFJlcGxheVNlc3Npb24+IHNlc3Npb24pCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OnNlc3Npb25Nb2RpZmllZChQYWdlJiBwYWdlLCBQYXNzUmVmUHRyPFJl
cGxheVNlc3Npb24+IHNlc3Npb24pCiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBGQVNU
X1JFVFVSTl9JRl9OT19GUk9OVEVORFModm9pZCgpKTsKICAgICBpZiAoSW5zdHJ1bWVudGluZ0Fn
ZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JQYWdlKHBh
Z2UpKQotICAgICAgICBzZXNzaW9uTW9kaWZpZWRJbXBsKGluc3RydW1lbnRpbmdBZ2VudHMsIHNl
c3Npb24pOworICAgICAgICBzZXNzaW9uTW9kaWZpZWRJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRz
LCBzZXNzaW9uKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHBhZ2UpOwogICAgIFVOVVNFRF9Q
QVJBTShzZXNzaW9uKTsKICNlbmRpZgogfQogCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OnNlZ21lbnRDcmVhdGVkKFBhZ2UqIHBhZ2UsIFBhc3NSZWZQdHI8UmVwbGF5U2Vz
c2lvblNlZ21lbnQ+IHNlZ21lbnQpCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OnNlZ21lbnRDcmVhdGVkKFBhZ2UmIHBhZ2UsIFBhc3NSZWZQdHI8UmVwbGF5U2Vzc2lvblNl
Z21lbnQ+IHNlZ21lbnQpCiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBGQVNUX1JFVFVS
Tl9JRl9OT19GUk9OVEVORFModm9pZCgpKTsKICAgICBpZiAoSW5zdHJ1bWVudGluZ0FnZW50cyog
aW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JQYWdlKHBhZ2UpKQot
ICAgICAgICBzZWdtZW50Q3JlYXRlZEltcGwoaW5zdHJ1bWVudGluZ0FnZW50cywgc2VnbWVudCk7
CisgICAgICAgIHNlZ21lbnRDcmVhdGVkSW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywgc2VnbWVu
dCk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShwYWdlKTsKICAgICBVTlVTRURfUEFSQU0oc2Vn
bWVudCk7CiAjZW5kaWYKIH0KIAotaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpzZWdtZW50Q29tcGxldGVkKFBhZ2UqIHBhZ2UsIFBhc3NSZWZQdHI8UmVwbGF5U2Vzc2lvblNl
Z21lbnQ+IHNlZ21lbnQpCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNl
Z21lbnRDb21wbGV0ZWQoUGFnZSYgcGFnZSwgUGFzc1JlZlB0cjxSZXBsYXlTZXNzaW9uU2VnbWVu
dD4gc2VnbWVudCkKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIEZBU1RfUkVUVVJOX0lG
X05PX0ZST05URU5EUyh2b2lkKCkpOwogICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0
cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvclBhZ2UocGFnZSkpCi0gICAg
ICAgIHNlZ21lbnRDb21wbGV0ZWRJbXBsKGluc3RydW1lbnRpbmdBZ2VudHMsIHNlZ21lbnQpOwor
ICAgICAgICBzZWdtZW50Q29tcGxldGVkSW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywgc2VnbWVu
dCk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShwYWdlKTsKICAgICBVTlVTRURfUEFSQU0oc2Vn
bWVudCk7CiAjZW5kaWYKIH0KIAotaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpzZWdtZW50TG9hZGVkKFBhZ2UqIHBhZ2UsIFBhc3NSZWZQdHI8UmVwbGF5U2Vzc2lvblNlZ21l
bnQ+IHNlZ21lbnQpCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNlZ21l
bnRMb2FkZWQoUGFnZSYgcGFnZSwgUGFzc1JlZlB0cjxSZXBsYXlTZXNzaW9uU2VnbWVudD4gc2Vn
bWVudCkKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZS
T05URU5EUyh2b2lkKCkpOwogICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50
aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvclBhZ2UocGFnZSkpCi0gICAgICAgIHNl
Z21lbnRMb2FkZWRJbXBsKGluc3RydW1lbnRpbmdBZ2VudHMsIHNlZ21lbnQpOworICAgICAgICBz
ZWdtZW50TG9hZGVkSW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywgc2VnbWVudCk7CiAjZWxzZQog
ICAgIFVOVVNFRF9QQVJBTShwYWdlKTsKICAgICBVTlVTRURfUEFSQU0oc2VnbWVudCk7CiAjZW5k
aWYKIH0KIAotaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzZWdtZW50VW5s
b2FkZWQoUGFnZSogcGFnZSkKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
c2VnbWVudFVubG9hZGVkKFBhZ2UmIHBhZ2UpCiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAg
ICBGQVNUX1JFVFVSTl9JRl9OT19GUk9OVEVORFModm9pZCgpKTsKICAgICBpZiAoSW5zdHJ1bWVu
dGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JQ
YWdlKHBhZ2UpKQotICAgICAgICBzZWdtZW50VW5sb2FkZWRJbXBsKGluc3RydW1lbnRpbmdBZ2Vu
dHMpOworICAgICAgICBzZWdtZW50VW5sb2FkZWRJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRzKTsK
ICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHBhZ2UpOwogI2VuZGlmCiB9CiAKLWlubGluZSB2b2lk
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Y2FwdHVyZVN0YXJ0ZWQoUGFnZSogcGFnZSkKK2lu
bGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Y2FwdHVyZVN0YXJ0ZWQoUGFnZSYg
cGFnZSkKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZS
T05URU5EUyh2b2lkKCkpOwogICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50
aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvclBhZ2UocGFnZSkpCi0gICAgICAgIGNh
cHR1cmVTdGFydGVkSW1wbChpbnN0cnVtZW50aW5nQWdlbnRzKTsKKyAgICAgICAgY2FwdHVyZVN0
YXJ0ZWRJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRzKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFN
KHBhZ2UpOwogI2VuZGlmCiB9CiAKLWlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6Y2FwdHVyZVN0b3BwZWQoUGFnZSogcGFnZSkKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6Y2FwdHVyZVN0b3BwZWQoUGFnZSYgcGFnZSkKIHsKICNpZiBFTkFCTEUoSU5T
UEVDVE9SKQogICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZST05URU5EUyh2b2lkKCkpOwogICAgIGlm
IChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGlu
Z0FnZW50c0ZvclBhZ2UocGFnZSkpCi0gICAgICAgIGNhcHR1cmVTdG9wcGVkSW1wbChpbnN0cnVt
ZW50aW5nQWdlbnRzKTsKKyAgICAgICAgY2FwdHVyZVN0b3BwZWRJbXBsKCppbnN0cnVtZW50aW5n
QWdlbnRzKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHBhZ2UpOwogI2VuZGlmCiB9CiAKLWlu
bGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6cGxheWJhY2tTdGFydGVkKFBhZ2Uq
IHBhZ2UpCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnBsYXliYWNrU3Rh
cnRlZChQYWdlJiBwYWdlKQogewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgRkFTVF9SRVRV
Uk5fSUZfTk9fRlJPTlRFTkRTKHZvaWQoKSk7CiAgICAgaWYgKEluc3RydW1lbnRpbmdBZ2VudHMq
IGluc3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yUGFnZShwYWdlKSkK
LSAgICAgICAgcGxheWJhY2tTdGFydGVkSW1wbChpbnN0cnVtZW50aW5nQWdlbnRzKTsKKyAgICAg
ICAgcGxheWJhY2tTdGFydGVkSW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cyk7CiAjZWxzZQogICAg
IFVOVVNFRF9QQVJBTShwYWdlKTsKICNlbmRpZgogfQogCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OnBsYXliYWNrUGF1c2VkKFBhZ2UqIHBhZ2UsIGNvbnN0IFJlcGxheVBv
c2l0aW9uJiBwb3NpdGlvbikKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
cGxheWJhY2tQYXVzZWQoUGFnZSYgcGFnZSwgY29uc3QgUmVwbGF5UG9zaXRpb24mIHBvc2l0aW9u
KQogewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgRkFTVF9SRVRVUk5fSUZfTk9fRlJPTlRF
TkRTKHZvaWQoKSk7CiAgICAgaWYgKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdB
Z2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yUGFnZShwYWdlKSkKLSAgICAgICAgcGxheWJh
Y2tQYXVzZWRJbXBsKGluc3RydW1lbnRpbmdBZ2VudHMsIHBvc2l0aW9uKTsKKyAgICAgICAgcGxh
eWJhY2tQYXVzZWRJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRzLCBwb3NpdGlvbik7CiAjZWxzZQog
ICAgIFVOVVNFRF9QQVJBTShwYWdlKTsKICAgICBVTlVTRURfUEFSQU0ocG9zaXRpb24pOwogI2Vu
ZGlmCiB9CiAKLWlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6cGxheWJhY2tG
aW5pc2hlZChQYWdlKiBwYWdlKQoraW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpwbGF5YmFja0ZpbmlzaGVkKFBhZ2UmIHBhZ2UpCiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikK
ICAgICBGQVNUX1JFVFVSTl9JRl9OT19GUk9OVEVORFModm9pZCgpKTsKICAgICBpZiAoSW5zdHJ1
bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNG
b3JQYWdlKHBhZ2UpKQotICAgICAgICBwbGF5YmFja0ZpbmlzaGVkSW1wbChpbnN0cnVtZW50aW5n
QWdlbnRzKTsKKyAgICAgICAgcGxheWJhY2tGaW5pc2hlZEltcGwoKmluc3RydW1lbnRpbmdBZ2Vu
dHMpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0ocGFnZSk7CiAjZW5kaWYKIH0KIAotaW5saW5l
IHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpwbGF5YmFja0hpdFBvc2l0aW9uKFBhZ2Uq
IHBhZ2UsIGNvbnN0IFJlcGxheVBvc2l0aW9uJiBwb3NpdGlvbikKK2lubGluZSB2b2lkIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6cGxheWJhY2tIaXRQb3NpdGlvbihQYWdlJiBwYWdlLCBjb25z
dCBSZXBsYXlQb3NpdGlvbiYgcG9zaXRpb24pCiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAg
ICBGQVNUX1JFVFVSTl9JRl9OT19GUk9OVEVORFModm9pZCgpKTsKICAgICBpZiAoSW5zdHJ1bWVu
dGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JQ
YWdlKHBhZ2UpKQotICAgICAgICBwbGF5YmFja0hpdFBvc2l0aW9uSW1wbChpbnN0cnVtZW50aW5n
QWdlbnRzLCBwb3NpdGlvbik7CisgICAgICAgIHBsYXliYWNrSGl0UG9zaXRpb25JbXBsKCppbnN0
cnVtZW50aW5nQWdlbnRzLCBwb3NpdGlvbik7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShwYWdl
KTsKICAgICBVTlVTRURfUEFSQU0ocG9zaXRpb24pOwpAQCAtMTk2Myw3ICsxOTUzLDcgQEAgaW5s
aW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpuZXR3b3JrU3RhdGVDaGFuZ2VkKFBh
Z2UqIHBhZ2UpCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBGQVNUX1JFVFVSTl9JRl9OT19G
Uk9OVEVORFModm9pZCgpKTsKICAgICBpZiAoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVu
dGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JQYWdlKHBhZ2UpKQotICAgICAgICBu
ZXR3b3JrU3RhdGVDaGFuZ2VkSW1wbChpbnN0cnVtZW50aW5nQWdlbnRzKTsKKyAgICAgICAgbmV0
d29ya1N0YXRlQ2hhbmdlZEltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMpOwogI2Vsc2UKICAgICBV
TlVTRURfUEFSQU0ocGFnZSk7CiAjZW5kaWYKQEAgLTE5NzQsNyArMTk2NCw3IEBAIGlubGluZSB2
b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6dXBkYXRlQXBwbGljYXRpb25DYWNoZVN0YXR1
cyhGcmFtZSogZnJhbWUpCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBGQVNUX1JFVFVSTl9J
Rl9OT19GUk9OVEVORFModm9pZCgpKTsKICAgICBpZiAoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5z
dHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JGcmFtZShmcmFtZSkpCi0g
ICAgICAgIHVwZGF0ZUFwcGxpY2F0aW9uQ2FjaGVTdGF0dXNJbXBsKGluc3RydW1lbnRpbmdBZ2Vu
dHMsIGZyYW1lKTsKKyAgICAgICAgdXBkYXRlQXBwbGljYXRpb25DYWNoZVN0YXR1c0ltcGwoKmlu
c3RydW1lbnRpbmdBZ2VudHMsIGZyYW1lKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGZyYW1l
KTsKICNlbmRpZgpAQCAtMTk4NCw3ICsxOTc0LDcgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpkaWRSZXF1ZXN0QW5pbWF0aW9uRnJhbWUoRG9jdW1lbnQqIGRvY3VtZW4K
IHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBp
bnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvckRvY3VtZW50KGRvY3Vt
ZW50KSkKLSAgICAgICAgZGlkUmVxdWVzdEFuaW1hdGlvbkZyYW1lSW1wbChpbnN0cnVtZW50aW5n
QWdlbnRzLCBjYWxsYmFja0lkLCBkb2N1bWVudC0+ZnJhbWUoKSk7CisgICAgICAgIGRpZFJlcXVl
c3RBbmltYXRpb25GcmFtZUltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMsIGNhbGxiYWNrSWQsIGRv
Y3VtZW50LT5mcmFtZSgpKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGRvY3VtZW50KTsKICAg
ICBVTlVTRURfUEFSQU0oY2FsbGJhY2tJZCk7CkBAIC0xOTk1LDcgKzE5ODUsNyBAQCBpbmxpbmUg
dm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENhbmNlbEFuaW1hdGlvbkZyYW1lKERv
Y3VtZW50KiBkb2N1bWVudAogewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgaWYgKEluc3Ry
dW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRz
Rm9yRG9jdW1lbnQoZG9jdW1lbnQpKQotICAgICAgICBkaWRDYW5jZWxBbmltYXRpb25GcmFtZUlt
cGwoaW5zdHJ1bWVudGluZ0FnZW50cywgY2FsbGJhY2tJZCwgZG9jdW1lbnQtPmZyYW1lKCkpOwor
ICAgICAgICBkaWRDYW5jZWxBbmltYXRpb25GcmFtZUltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMs
IGNhbGxiYWNrSWQsIGRvY3VtZW50LT5mcmFtZSgpKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFN
KGRvY3VtZW50KTsKICAgICBVTlVTRURfUEFSQU0oY2FsbGJhY2tJZCk7CkBAIC0yMDA2LDcgKzE5
OTYsNyBAQCBpbmxpbmUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6d2lsbEZpcmVBbmltYXRpbwogewogI2lmIEVOQUJMRShJTlNQRUNUT1Ip
CiAgICAgaWYgKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0
cnVtZW50aW5nQWdlbnRzRm9yRG9jdW1lbnQoZG9jdW1lbnQpKQotICAgICAgICByZXR1cm4gd2ls
bEZpcmVBbmltYXRpb25GcmFtZUltcGwoaW5zdHJ1bWVudGluZ0FnZW50cywgY2FsbGJhY2tJZCwg
ZG9jdW1lbnQtPmZyYW1lKCkpOworICAgICAgICByZXR1cm4gd2lsbEZpcmVBbmltYXRpb25GcmFt
ZUltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMsIGNhbGxiYWNrSWQsIGRvY3VtZW50LT5mcmFtZSgp
KTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGRvY3VtZW50KTsKICAgICBVTlVTRURfUEFSQU0o
Y2FsbGJhY2tJZCk7CkBAIC0yMDI5LDI4ICsyMDE5LDI4IEBAIGlubGluZSB2b2lkIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6bGF5ZXJUcmVlRGlkQ2hhbmdlKFBhZ2UqIHBhZ2UpCiB7CiAjaWYg
RU5BQkxFKElOU1BFQ1RPUikKICAgICBpZiAoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVu
dGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JQYWdlKHBhZ2UpKQotICAgICAgICBs
YXllclRyZWVEaWRDaGFuZ2VJbXBsKGluc3RydW1lbnRpbmdBZ2VudHMpOworICAgICAgICBsYXll
clRyZWVEaWRDaGFuZ2VJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRzKTsKICNlbHNlCiAgICAgVU5V
U0VEX1BBUkFNKHBhZ2UpOwogI2VuZGlmCiB9CiAKLWlubGluZSB2b2lkIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6cmVuZGVyTGF5ZXJEZXN0cm95ZWQoUGFnZSogcGFnZSwgY29uc3QgUmVuZGVy
TGF5ZXIqIHJlbmRlckxheWVyKQoraW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpyZW5kZXJMYXllckRlc3Ryb3llZChQYWdlKiBwYWdlLCBjb25zdCBSZW5kZXJMYXllciYgcmVu
ZGVyTGF5ZXIpCiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBpZiAoSW5zdHJ1bWVudGlu
Z0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JQYWdl
KHBhZ2UpKQotICAgICAgICByZW5kZXJMYXllckRlc3Ryb3llZEltcGwoaW5zdHJ1bWVudGluZ0Fn
ZW50cywgcmVuZGVyTGF5ZXIpOworICAgICAgICByZW5kZXJMYXllckRlc3Ryb3llZEltcGwoKmlu
c3RydW1lbnRpbmdBZ2VudHMsIHJlbmRlckxheWVyKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFN
KHBhZ2UpOwogICAgIFVOVVNFRF9QQVJBTShyZW5kZXJMYXllcik7CiAjZW5kaWYKIH0KIAotaW5s
aW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpwc2V1ZG9FbGVtZW50RGVzdHJveWVk
KFBhZ2UqIHBhZ2UsIFBzZXVkb0VsZW1lbnQqIHBzZXVkb0VsZW1lbnQpCitpbmxpbmUgdm9pZCBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnBzZXVkb0VsZW1lbnREZXN0cm95ZWQoUGFnZSogcGFn
ZSwgUHNldWRvRWxlbWVudCYgcHNldWRvRWxlbWVudCkKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9S
KQogICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5z
dHJ1bWVudGluZ0FnZW50c0ZvclBhZ2UocGFnZSkpCi0gICAgICAgIHBzZXVkb0VsZW1lbnREZXN0
cm95ZWRJbXBsKGluc3RydW1lbnRpbmdBZ2VudHMsIHBzZXVkb0VsZW1lbnQpOworICAgICAgICBw
c2V1ZG9FbGVtZW50RGVzdHJveWVkSW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywgcHNldWRvRWxl
bWVudCk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShwYWdlKTsKICAgICBVTlVTRURfUEFSQU0o
cHNldWRvRWxlbWVudCk7CkBAIC0yMDY5LDIyICsyMDU5LDI3IEBAIGlubGluZSBJbnN0cnVtZW50
aW5nQWdlbnRzKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Omluc3RydW1lbnRpbmdBZ2VudHNG
b3JDb250CiAKIGlubGluZSBJbnN0cnVtZW50aW5nQWdlbnRzKiBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246Omluc3RydW1lbnRpbmdBZ2VudHNGb3JGcmFtZShGcmFtZSogZnJhbWUpCiB7Ci0gICAg
aWYgKGZyYW1lKQotICAgICAgICByZXR1cm4gaW5zdHJ1bWVudGluZ0FnZW50c0ZvclBhZ2UoZnJh
bWUtPnBhZ2UoKSk7Ci0gICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIGZyYW1lID8gaW5z
dHJ1bWVudGluZ0FnZW50c0ZvckZyYW1lKCpmcmFtZSkgOiBudWxscHRyOworfQorCitpbmxpbmUg
SW5zdHJ1bWVudGluZ0FnZW50cyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnN0cnVtZW50
aW5nQWdlbnRzRm9yRnJhbWUoRnJhbWUmIGZyYW1lKQoreworICAgIHJldHVybiBpbnN0cnVtZW50
aW5nQWdlbnRzRm9yUGFnZShmcmFtZS5wYWdlKCkpOwogfQogCiBpbmxpbmUgSW5zdHJ1bWVudGlu
Z0FnZW50cyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnN0cnVtZW50aW5nQWdlbnRzRm9y
RG9jdW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50KQogewotICAgIGlmIChkb2N1bWVudCkgewotICAg
ICAgICBQYWdlKiBwYWdlID0gZG9jdW1lbnQtPnBhZ2UoKTsKKyAgICByZXR1cm4gZG9jdW1lbnQg
PyBpbnN0cnVtZW50aW5nQWdlbnRzRm9yRG9jdW1lbnQoKmRvY3VtZW50KSA6IG51bGxwdHI7Cit9
CisKK2lubGluZSBJbnN0cnVtZW50aW5nQWdlbnRzKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
Omluc3RydW1lbnRpbmdBZ2VudHNGb3JEb2N1bWVudChEb2N1bWVudCYgZG9jdW1lbnQpCit7Cisg
ICAgUGFnZSogcGFnZSA9IGRvY3VtZW50LnBhZ2UoKTsKICNpZiBFTkFCTEUoVEVNUExBVEVfRUxF
TUVOVCkKLSAgICAgICAgaWYgKCFwYWdlICYmIGRvY3VtZW50LT50ZW1wbGF0ZURvY3VtZW50SG9z
dCgpKQotICAgICAgICAgICAgcGFnZSA9IGRvY3VtZW50LT50ZW1wbGF0ZURvY3VtZW50SG9zdCgp
LT5wYWdlKCk7CisgICAgaWYgKCFwYWdlICYmIGRvY3VtZW50LnRlbXBsYXRlRG9jdW1lbnRIb3N0
KCkpCisgICAgICAgIHBhZ2UgPSBkb2N1bWVudC50ZW1wbGF0ZURvY3VtZW50SG9zdCgpLT5wYWdl
KCk7CiAjZW5kaWYKLSAgICAgICAgcmV0dXJuIGluc3RydW1lbnRpbmdBZ2VudHNGb3JQYWdlKHBh
Z2UpOwotICAgIH0KLSAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gaW5zdHJ1bWVudGlu
Z0FnZW50c0ZvclBhZ2UocGFnZSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llLmNwcApp
bmRleCA3ZjAwZGViM2ZjMjdiZWM3Y2ZkZjllMDU4YjE3OTliZmIzNGI0OWFhLi4yNjFmMzliOGQ0
ZGVmZTBmODRmZTMxNTM5ZmIyYTJjNjFiZjFkMjE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llLmNwcApA
QCAtMzgsMTMgKzM4LDEyIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbkNvb2tpZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llKCkKLSAgICA6
IG1faW5zdHJ1bWVudGluZ0FnZW50cyhudWxscHRyKQotICAgICwgbV90aW1lbGluZUFnZW50SWQo
MCkKKyAgICA6IG1fdGltZWxpbmVBZ2VudElkKDApCiB7CiB9CiAKLUluc3BlY3Rvckluc3RydW1l
bnRhdGlvbkNvb2tpZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llKEluc3RydW1lbnRp
bmdBZ2VudHMqIGFnZW50cywgaW50IHRpbWVsaW5lQWdlbnRJZCkKLSAgICA6IG1faW5zdHJ1bWVu
dGluZ0FnZW50cyhhZ2VudHMpCitJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWU6Okluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZShJbnN0cnVtZW50aW5nQWdlbnRzJiBhZ2VudHMsIGlu
dCB0aW1lbGluZUFnZW50SWQpCisgICAgOiBtX2luc3RydW1lbnRpbmdBZ2VudHMoJmFnZW50cykK
ICAgICAsIG1fdGltZWxpbmVBZ2VudElkKHRpbWVsaW5lQWdlbnRJZCkKIHsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29r
aWUuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25D
b29raWUuaAppbmRleCA2ZGI1MTRmYzliOTUyNjQzZWUwYjViNGY0ZmU2MjYxN2NlNmMwNWMxLi5k
MTU0OTk1MWNjOGQ4NDNlNTk3ZTZjZWJlMzg3MGY0YTc0MTM4ZTcwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tp
ZS5oCkBAIC0zMywxNiArMzMsMTcgQEAKIAogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAorI2lm
IEVOQUJMRShJTlNQRUNUT1IpCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOwogY2xhc3MgSW5zdHJ1bWVudGluZ0FnZW50czsKIAogY2xhc3Mg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIHsKLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQog
cHVibGljOgogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSgpOwotICAgIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZShJbnN0cnVtZW50aW5nQWdlbnRzKiwgaW50KTsKKyAg
ICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUoSW5zdHJ1bWVudGluZ0FnZW50cyYsIGlu
dCk7CiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llKGNvbnN0IEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbkNvb2tpZSYpOwogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tp
ZSYgb3BlcmF0b3I9KGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYpOwogICAg
IH5JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUoKTsKQEAgLTU0LDkgKzU1LDEwIEBAIHB1
YmxpYzoKIHByaXZhdGU6CiAgICAgUmVmUHRyPEluc3RydW1lbnRpbmdBZ2VudHM+IG1faW5zdHJ1
bWVudGluZ0FnZW50czsKICAgICBpbnQgbV90aW1lbGluZUFnZW50SWQ7Ci0jZW5kaWYKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAorI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCisK
ICNlbmRpZiAvLyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWVfaApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3RydW1lbnRpbmdBZ2VudHMuY3BwIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3RydW1lbnRpbmdBZ2VudHMuY3BwCmluZGV4IGY0ZThkZjA0
NzE3YThhYzg3OTM3MzQwNTE4NWVjNjBiZTMxYjkxMzkuLmVhODI4ZWM3OWQwMWExOWM1MDExMmIw
NGQ0NDdlMzBhNWJhMmEyNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnN0cnVtZW50aW5nQWdlbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
dHJ1bWVudGluZ0FnZW50cy5jcHAKQEAgLTk5LDE3ICs5OSw2IEBAIHZvaWQgSW5zdHJ1bWVudGlu
Z0FnZW50czo6cmVzZXQoKQogICAgIG1faW5zcGVjdG9yV29ya2VyQWdlbnQgPSBudWxscHRyOwog
fQogCi1JbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50YXRpb25Gb3JQYWdlKFBhZ2UqIHBh
Z2UpCi17Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICByZXR1cm4gcGFnZSA/IHBh
Z2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS5tX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCkgOiBu
dWxscHRyOwotfQotCi1JbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50YXRpb25Gb3JXb3Jr
ZXJHbG9iYWxTY29wZShXb3JrZXJHbG9iYWxTY29wZSogd29ya2VyR2xvYmFsU2NvcGUpCi17Ci0g
ICAgcmV0dXJuIHdvcmtlckdsb2JhbFNjb3BlID8gd29ya2VyR2xvYmFsU2NvcGUtPndvcmtlcklu
c3BlY3RvckNvbnRyb2xsZXIoKS5tX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCkgOiBudWxscHRy
OwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoSU5TUEVD
VE9SKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3RydW1lbnRpbmdB
Z2VudHMuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnN0cnVtZW50aW5nQWdlbnRzLmgK
aW5kZXggNjU3Y2Q5NjhiNGY2Nzc5NTM0M2JiNzEyMzk4MTlmMWJiYmQ1YjFmZC4uNDcyMjVlMGMx
Yjc1MzhlNDEyODExM2UzNzBhZmFmNDczMzBlNTUwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3RydW1lbnRpbmdBZ2VudHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zdHJ1bWVudGluZ0FnZW50cy5oCkBAIC0xNjgsOSArMTY4LDYgQEAgcHJpdmF0
ZToKICAgICBJbnNwZWN0b3JXb3JrZXJBZ2VudCogbV9pbnNwZWN0b3JXb3JrZXJBZ2VudDsKIH07
CiAKLVdFQkNPUkVfRVhQT1JUIEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRhdGlvbkZv
clBhZ2UoUGFnZSopOwotSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGF0aW9uRm9yV29y
a2VyR2xvYmFsU2NvcGUoV29ya2VyR2xvYmFsU2NvcGUqKTsKLQogfQogCiAjZW5kaWYgLy8gIWRl
ZmluZWQoSW5zdHJ1bWVudGluZ0FnZW50c19oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmgKaW5kZXggMTViYWJjYTc1MTJlMDY5
ZGZjMmFjMjQzYjc0M2RlOGJiOTk1ZTUzNi4uZDQ5OWExOTIyMWJiNzkyYjQ5ZmIyNTkwYzk0ODAx
NjQ0MDExYTBiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlcklu
c3BlY3RvckNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2Vy
SW5zcGVjdG9yQ29udHJvbGxlci5oCkBAIC03Nyw3ICs3Nyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIFBhc3NSZWZQdHI8V1RGOjpTdG9wd2F0Y2g+IGV4ZWN1dGlvblN0b3B3YXRjaCgpIG92ZXJy
aWRlOwogCiBwcml2YXRlOgotICAgIGZyaWVuZCBJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVt
ZW50YXRpb25Gb3JXb3JrZXJHbG9iYWxTY29wZShXb3JrZXJHbG9iYWxTY29wZSopOworICAgIGZy
aWVuZCBjbGFzcyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb247CiAKICAgICBXb3JrZXJHbG9iYWxT
Y29wZSYgbV93b3JrZXJHbG9iYWxTY29wZTsKICAgICBSZWZQdHI8SW5zdHJ1bWVudGluZ0FnZW50
cz4gbV9pbnN0cnVtZW50aW5nQWdlbnRzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExv
YWRlci5jcHAKaW5kZXggMjQ1OGIzYWFkMjFhYWUyZGFlNjFkNDk5MWY1OTQ0NWFmMGQ1YWExMy4u
MWJiYzM2YjdkMTY5MWU2NDQ0NjEwZThmNGY1YWNlMDY3ZjE5OTAzZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCkBAIC02MTIsNyArNjEyLDcgQEAgdm9pZCBEb2N1
bWVudExvYWRlcjo6cmVzcG9uc2VSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UsIGNv
bnN0IFJlc291cmNlUmUKICAgICAgICAgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyID0gbV9pZGVu
dGlmaWVyRm9yTG9hZFdpdGhvdXRSZXNvdXJjZUxvYWRlciA/IG1faWRlbnRpZmllckZvckxvYWRX
aXRob3V0UmVzb3VyY2VMb2FkZXIgOiBtX21haW5SZXNvdXJjZS0+aWRlbnRpZmllcigpOwogICAg
ICAgICBBU1NFUlQoaWRlbnRpZmllcik7CiAgICAgICAgIGlmIChmcmFtZUxvYWRlcigpLT5zaG91
bGRJbnRlcnJ1cHRMb2FkRm9yWEZyYW1lT3B0aW9ucyhjb250ZW50LCByZXNwb25zZS51cmwoKSwg
aWRlbnRpZmllcikpIHsKLSAgICAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Y29u
dGludWVBZnRlclhGcmFtZU9wdGlvbnNEZW5pZWQobV9mcmFtZSwgdGhpcywgaWRlbnRpZmllciwg
cmVzcG9uc2UpOworICAgICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjb250aW51
ZUFmdGVyWEZyYW1lT3B0aW9uc0RlbmllZChtX2ZyYW1lLCAqdGhpcywgaWRlbnRpZmllciwgcmVz
cG9uc2UpOwogICAgICAgICAgICAgU3RyaW5nIG1lc3NhZ2UgPSAiUmVmdXNlZCB0byBkaXNwbGF5
ICciICsgcmVzcG9uc2UudXJsKCkuc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKCkgKyAi
JyBpbiBhIGZyYW1lIGJlY2F1c2UgaXQgc2V0ICdYLUZyYW1lLU9wdGlvbnMnIHRvICciICsgY29u
dGVudCArICInLiI7CiAgICAgICAgICAgICBmcmFtZSgpLT5kb2N1bWVudCgpLT5hZGRDb25zb2xl
TWVzc2FnZShNZXNzYWdlU291cmNlOjpTZWN1cml0eSwgTWVzc2FnZUxldmVsOjpFcnJvciwgbWVz
c2FnZSwgaWRlbnRpZmllcik7CiAgICAgICAgICAgICBmcmFtZSgpLT5kb2N1bWVudCgpLT5lbmZv
cmNlU2FuZGJveEZsYWdzKFNhbmRib3hPcmlnaW4pOwpAQCAtNzA5LDcgKzcwOSw3IEBAIHZvaWQg
RG9jdW1lbnRMb2FkZXI6OmNvbnRpbnVlQWZ0ZXJDb250ZW50UG9saWN5KFBvbGljeUFjdGlvbiBw
b2xpY3kpCiAgICAgICAgIH0KIAogICAgICAgICBpZiAoUmVzb3VyY2VMb2FkZXIqIG1haW5SZXNv
dXJjZUxvYWRlciA9IHRoaXMtPm1haW5SZXNvdXJjZUxvYWRlcigpKQotICAgICAgICAgICAgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjb250aW51ZVdpdGhQb2xpY3lEb3dubG9hZChtX2ZyYW1l
LCB0aGlzLCBtYWluUmVzb3VyY2VMb2FkZXItPmlkZW50aWZpZXIoKSwgbV9yZXNwb25zZSk7Cisg
ICAgICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNvbnRpbnVlV2l0aFBvbGljeURv
d25sb2FkKG1fZnJhbWUsICp0aGlzLCBtYWluUmVzb3VyY2VMb2FkZXItPmlkZW50aWZpZXIoKSwg
bV9yZXNwb25zZSk7CiAKICAgICAgICAgLy8gV2hlbiBzdGFydGluZyB0aGUgcmVxdWVzdCwgd2Ug
ZGlkbid0IGtub3cgdGhhdCBpdCB3b3VsZCByZXN1bHQgaW4gZG93bmxvYWQgYW5kIG5vdCBuYXZp
Z2F0aW9uLiBOb3cgd2Uga25vdyB0aGF0IG1haW4gZG9jdW1lbnQgVVJMIGRpZG4ndCBjaGFuZ2Uu
CiAgICAgICAgIC8vIERvd25sb2FkIG1heSB1c2UgdGhpcyBrbm93bGVkZ2UgZm9yIHB1cnBvc2Vz
IHVucmVsYXRlZCB0byBjb29raWVzLCBub3RhYmx5IGZvciBzZXR0aW5nIGZpbGUgcXVhcmFudGlu
ZSBkYXRhLgpAQCAtNzIzLDcgKzcyMyw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmNvbnRpbnVl
QWZ0ZXJDb250ZW50UG9saWN5KFBvbGljeUFjdGlvbiBwb2xpY3kpCiAgICAgfQogICAgIGNhc2Ug
UG9saWN5SWdub3JlOgogICAgICAgICBpZiAoUmVzb3VyY2VMb2FkZXIqIG1haW5SZXNvdXJjZUxv
YWRlciA9IHRoaXMtPm1haW5SZXNvdXJjZUxvYWRlcigpKQotICAgICAgICAgICAgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpjb250aW51ZVdpdGhQb2xpY3lJZ25vcmUobV9mcmFtZSwgdGhpcywg
bWFpblJlc291cmNlTG9hZGVyLT5pZGVudGlmaWVyKCksIG1fcmVzcG9uc2UpOworICAgICAgICAg
ICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjb250aW51ZVdpdGhQb2xpY3lJZ25vcmUobV9m
cmFtZSwgKnRoaXMsIG1haW5SZXNvdXJjZUxvYWRlci0+aWRlbnRpZmllcigpLCBtX3Jlc3BvbnNl
KTsKICAgICAgICAgc3RvcExvYWRpbmdGb3JQb2xpY3lDaGFuZ2UoKTsKICAgICAgICAgcmV0dXJu
OwogICAgIApAQCAtOTQ4LDcgKzk0OCw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmRldGFjaEZy
b21GcmFtZSgpCiAgICAgICAgIG1fbWFpblJlc291cmNlLT5yZW1vdmVDbGllbnQodGhpcyk7CiAK
ICAgICBtX2FwcGxpY2F0aW9uQ2FjaGVIb3N0LT5zZXRET01BcHBsaWNhdGlvbkNhY2hlKDApOwot
ICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6bG9hZGVyRGV0YWNoZWRGcm9tRnJhbWUobV9m
cmFtZSwgdGhpcyk7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpsb2FkZXJEZXRhY2hl
ZEZyb21GcmFtZSgqbV9mcmFtZSwgKnRoaXMpOwogICAgIG1fZnJhbWUgPSAwOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCmlu
ZGV4IDAwMDY0Nzk0NTU1YTRkYzU1ZGViZmQyYmMzZmM2MTEzYjE2NzFjNjguLjY2OGYwMTA5NTJk
ZGE4Nzg5OThkOTg4YTBlYTE2MTBiNTdkMWZjZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCkBAIC0yODYsMTEgKzI4Niw3IEBA
IHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YSh1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIsIGNvbnN0IGNoCiAKICAgICAvLyBQcmVmbGlnaHQgZGF0YSBzaG91bGQg
YmUgaW52aXNpYmxlIHRvIGNsaWVudHMuCiAgICAgaWYgKG1fYWN0dWFsUmVxdWVzdCkgewotI2lm
IEVOQUJMRShJTlNQRUNUT1IpCiAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlk
UmVjZWl2ZURhdGEobV9kb2N1bWVudC5mcmFtZSgpLCBpZGVudGlmaWVyLCAwLCAwLCBkYXRhTGVu
Z3RoKTsKLSNlbHNlCi0gICAgICAgIFVOVVNFRF9QQVJBTShpZGVudGlmaWVyKTsKLSNlbmRpZgog
ICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0zMTEsOSArMzA3LDggQEAgdm9pZCBEb2N1bWVu
dFRocmVhZGFibGVMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKiByZXNvdXJj
ZSkKIHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKHVuc2ln
bmVkIGxvbmcgaWRlbnRpZmllciwgZG91YmxlIGZpbmlzaFRpbWUpCiB7CiAgICAgaWYgKG1fYWN0
dWFsUmVxdWVzdCkgewotI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgICAgIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6ZGlkRmluaXNoTG9hZGluZyhtX2RvY3VtZW50LmZyYW1lKCksIG1fZG9j
dW1lbnQuZnJhbWUoKS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKSwgaWRlbnRpZmllciwgZmlu
aXNoVGltZSk7Ci0jZW5kaWYKKwogICAgICAgICBBU1NFUlQoIW1fc2FtZU9yaWdpblJlcXVlc3Qp
OwogICAgICAgICBBU1NFUlQobV9vcHRpb25zLmNyb3NzT3JpZ2luUmVxdWVzdFBvbGljeSA9PSBV
c2VBY2Nlc3NDb250cm9sKTsKICAgICAgICAgcHJlZmxpZ2h0U3VjY2VzcygpOwpAQCAtMzIzLDEy
ICszMTgsOCBAQCB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGlu
Zyh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGRvdWJsZQogCiB2b2lkIERvY3VtZW50VGhyZWFk
YWJsZUxvYWRlcjo6ZGlkRmFpbCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291
cmNlRXJyb3ImIGVycm9yKQogewotI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgaWYgKG1fYWN0
dWFsUmVxdWVzdCkKICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGYWlsTG9h
ZGluZyhtX2RvY3VtZW50LmZyYW1lKCksIG1fZG9jdW1lbnQuZnJhbWUoKS0+bG9hZGVyKCkuZG9j
dW1lbnRMb2FkZXIoKSwgaWRlbnRpZmllciwgZXJyb3IpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFS
QU0oaWRlbnRpZmllcik7Ci0jZW5kaWYKIAogICAgIG1fY2xpZW50LT5kaWRGYWlsKGVycm9yKTsK
IH0KQEAgLTM0OSwxMiArMzQwLDkgQEAgdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OnBy
ZWZsaWdodFN1Y2Nlc3MoKQogdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OnByZWZsaWdo
dEZhaWx1cmUodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHVybCwgY29u
c3QgU3RyaW5nJiBlcnJvckRlc2NyaXB0aW9uKQogewogICAgIFJlc291cmNlRXJyb3IgZXJyb3Io
ZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgdXJsLCBlcnJvckRlc2NyaXB0aW9uKTsKLSNp
ZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIGlmIChtX2FjdHVhbFJlcXVlc3QpCiAgICAgICAgIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmFpbExvYWRpbmcobV9kb2N1bWVudC5mcmFtZSgp
LCBtX2RvY3VtZW50LmZyYW1lKCktPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCksIGlkZW50aWZp
ZXIsIGVycm9yKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGlkZW50aWZpZXIpOwotI2VuZGlm
CisKICAgICBtX2FjdHVhbFJlcXVlc3QgPSBudWxscHRyOyAvLyBQcmV2ZW50IGRpZEZpbmlzaExv
YWRpbmcoKSBmcm9tIGJ5cGFzc2luZyBhY2Nlc3MgY2hlY2suCiAgICAgbV9jbGllbnQtPmRpZEZh
aWxBY2Nlc3NDb250cm9sQ2hlY2soZXJyb3IpOwogfQpAQCAtMzg4LDcgKzM3Niw3IEBAIHZvaWQg
RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QsIFNlY3VyCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICAgICAgICAgIGlm
IChtX3Jlc291cmNlLT5sb2FkZXIoKSkgewogICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcg
aWRlbnRpZmllciA9IG1fcmVzb3VyY2UtPmxvYWRlcigpLT5pZGVudGlmaWVyKCk7Ci0gICAgICAg
ICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkb2N1bWVudFRocmVhZGFibGVMb2Fk
ZXJTdGFydGVkTG9hZGluZ0ZvckNsaWVudCgmbV9kb2N1bWVudCwgaWRlbnRpZmllciwgbV9jbGll
bnQpOworICAgICAgICAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZG9jdW1lbnRU
aHJlYWRhYmxlTG9hZGVyU3RhcnRlZExvYWRpbmdGb3JDbGllbnQobV9kb2N1bWVudCwgaWRlbnRp
ZmllciwgbV9jbGllbnQpOwogICAgICAgICAgICAgfQogI2VuZGlmCiAgICAgICAgICAgICBtX3Jl
c291cmNlLT5hZGRDbGllbnQodGhpcyk7CkBAIC00MDQsNyArMzkyLDcgQEAgdm9pZCBEb2N1bWVu
dFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCwgU2VjdXIKICAgICBpZiAobV9kb2N1bWVudC5mcmFtZSgpKQogICAgICAgICBpZGVudGlm
aWVyID0gbV9kb2N1bWVudC5mcmFtZSgpLT5sb2FkZXIoKS5sb2FkUmVzb3VyY2VTeW5jaHJvbm91
c2x5KHJlcXVlc3QsIG1fb3B0aW9ucy5hbGxvd0NyZWRlbnRpYWxzKCksIG1fb3B0aW9ucy5jbGll
bnRDcmVkZW50aWFsUG9saWN5KCksIGVycm9yLCByZXNwb25zZSwgZGF0YSk7CiAKLSAgICBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmRvY3VtZW50VGhyZWFkYWJsZUxvYWRlclN0YXJ0ZWRMb2Fk
aW5nRm9yQ2xpZW50KCZtX2RvY3VtZW50LCBpZGVudGlmaWVyLCBtX2NsaWVudCk7CisgICAgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkb2N1bWVudFRocmVhZGFibGVMb2FkZXJTdGFydGVkTG9h
ZGluZ0ZvckNsaWVudChtX2RvY3VtZW50LCBpZGVudGlmaWVyLCBtX2NsaWVudCk7CiAKICAgICBp
ZiAoIWVycm9yLmlzTnVsbCgpICYmIHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkgPD0gMCkgewog
ICAgICAgICBpZiAocmVxdWVzdFVSTC5pc0xvY2FsRmlsZSgpKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyLmNwcAppbmRleCBiNzU0NWVmMmM0Y2EwOWEyMjlhYjdmYjNiNzIzNGM4M2Yw
MGZiNDBjLi42NmIwYzM0Mzg1Nzc4NWJiNjgzNDEyMDhhMDczNjQzZTVmMjAzMTBhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKQEAgLTI1MDEsNyArMjUwMSw3IEBAIHZvaWQg
RnJhbWVMb2FkZXI6OmRldGFjaEZyb21QYXJlbnQoKQogICAgIC8vIGhhbmRsZXJzIG1pZ2h0IHN0
YXJ0IGEgbmV3IHN1YnJlc291cmNlIGxvYWQgaW4gdGhpcyBmcmFtZS4KICAgICBzdG9wQWxsTG9h
ZGVycygpOwogCi0gICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpmcmFtZURldGFjaGVkRnJv
bVBhcmVudCgmbV9mcmFtZSk7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpmcmFtZURl
dGFjaGVkRnJvbVBhcmVudChtX2ZyYW1lKTsKIAogICAgIGRldGFjaFZpZXdzQW5kRG9jdW1lbnRM
b2FkZXIoKTsKIApAQCAtMzAzNSwxNCArMzAzNSwxNCBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2Fk
ZWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZShDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UsIFJlc291
cgogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIXBhZ2UtPmFyZU1lbW9yeUNhY2hlQ2xpZW50
Q2FsbHNFbmFibGVkKCkpIHsKLSAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRM
b2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUocGFnZSwgbV9kb2N1bWVudExvYWRlci5nZXQoKSwg
cmVzb3VyY2UpOworICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZExvYWRSZXNv
dXJjZUZyb21NZW1vcnlDYWNoZSgqcGFnZSwgbV9kb2N1bWVudExvYWRlci5nZXQoKSwgcmVzb3Vy
Y2UpOwogICAgICAgICBtX2RvY3VtZW50TG9hZGVyLT5yZWNvcmRNZW1vcnlDYWNoZUxvYWRGb3JG
dXR1cmVDbGllbnROb3RpZmljYXRpb24ocmVzb3VyY2UtPnJlc291cmNlUmVxdWVzdCgpKTsKICAg
ICAgICAgbV9kb2N1bWVudExvYWRlci0+ZGlkVGVsbENsaWVudEFib3V0TG9hZChyZXNvdXJjZS0+
dXJsKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKG1fY2xpZW50LmRpc3Bh
dGNoRGlkTG9hZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlKG1fZG9jdW1lbnRMb2FkZXIuZ2V0KCks
IG5ld1JlcXVlc3QsIHJlc291cmNlLT5yZXNwb25zZSgpLCByZXNvdXJjZS0+ZW5jb2RlZFNpemUo
KSkpIHsKLSAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRMb2FkUmVzb3VyY2VG
cm9tTWVtb3J5Q2FjaGUocGFnZSwgbV9kb2N1bWVudExvYWRlci5nZXQoKSwgcmVzb3VyY2UpOwor
ICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZExvYWRSZXNvdXJjZUZyb21NZW1v
cnlDYWNoZSgqcGFnZSwgbV9kb2N1bWVudExvYWRlci5nZXQoKSwgcmVzb3VyY2UpOwogICAgICAg
ICBtX2RvY3VtZW50TG9hZGVyLT5kaWRUZWxsQ2xpZW50QWJvdXRMb2FkKHJlc291cmNlLT51cmwo
KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0zMDUwLDcgKzMwNTAsNyBAQCB2b2lkIEZy
YW1lTG9hZGVyOjpsb2FkZWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZShDYWNoZWRSZXNvdXJjZSog
cmVzb3VyY2UsIFJlc291cgogICAgIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcjsKICAgICBSZXNv
dXJjZUVycm9yIGVycm9yOwogICAgIHJlcXVlc3RGcm9tRGVsZWdhdGUobmV3UmVxdWVzdCwgaWRl
bnRpZmllciwgZXJyb3IpOwotICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6bWFya1Jlc291
cmNlQXNDYWNoZWQocGFnZSwgaWRlbnRpZmllcik7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjptYXJrUmVzb3VyY2VBc0NhY2hlZCgqcGFnZSwgaWRlbnRpZmllcik7CiAgICAgbm90aWZp
ZXIoKS5zZW5kUmVtYWluaW5nRGVsZWdhdGVNZXNzYWdlcyhtX2RvY3VtZW50TG9hZGVyLmdldCgp
LCBpZGVudGlmaWVyLCBuZXdSZXF1ZXN0LCByZXNvdXJjZS0+cmVzcG9uc2UoKSwgMCwgcmVzb3Vy
Y2UtPmVuY29kZWRTaXplKCksIDAsIGVycm9yKTsKIH0KIApAQCAtMzMyNSwxMCArMzMyNSwxMCBA
QCB2b2lkIEZyYW1lTG9hZGVyOjpkaXNwYXRjaERpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZChE
T01XcmFwcGVyV29ybGQmIHdvcmxkKQogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBpZiAo
UGFnZSogcGFnZSA9IG1fZnJhbWUucGFnZSgpKQotICAgICAgICBwYWdlLT5pbnNwZWN0b3JDb250
cm9sbGVyKCkuZGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxkKCZtX2ZyYW1lLCB3b3JsZCk7Cisg
ICAgICAgIHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS5kaWRDbGVhcldpbmRvd09iamVjdElu
V29ybGQobV9mcmFtZSwgd29ybGQpOwogI2VuZGlmCiAKLSAgICBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmRpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZCgmbV9mcmFtZSwgd29ybGQpOworICAg
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxkKG1f
ZnJhbWUsIHdvcmxkKTsKIH0KIAogdm9pZCBGcmFtZUxvYWRlcjo6ZGlzcGF0Y2hHbG9iYWxPYmpl
Y3RBdmFpbGFibGVJbkFsbFdvcmxkcygpCkBAIC0zMzg1LDcgKzMzODUsNyBAQCB2b2lkIEZyYW1l
TG9hZGVyOjpkaXNwYXRjaERpZENvbW1pdExvYWQoKQogICAgICAgICBtX2ZyYW1lLnBhZ2UoKS0+
cmVzZXRTZWVuTWVkaWFFbmdpbmVzKCk7CiAgICAgfQogCi0gICAgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpkaWRDb21taXRMb2FkKCZtX2ZyYW1lLCBtX2RvY3VtZW50TG9hZGVyLmdldCgpKTsK
KyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENvbW1pdExvYWQobV9mcmFtZSwgbV9k
b2N1bWVudExvYWRlci5nZXQoKSk7CiAKICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKICAg
ICBpZiAobV9mcmFtZS5pc01haW5GcmFtZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1Jlc291cmNlTG9hZFNjaGVkdWxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
UmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcAppbmRleCBkMjIzM2QwMjViNTM1NDJlY2Y0MmJjMzQ2
MzM0NThhYzRmOGNjYzY2Li5jNGRkNjIwOTY1M2E5MmUwY2YyY2QwYWZiZDAyZTViNTVmODBmODY5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU2NoZWR1bGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNw
cApAQCAtMjAwLDcgKzIwMCw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpzY2hlZHVs
ZUxvYWQoUmVzb3VyY2VMb2FkZXIqIHJlc291cmNlTG9hZGVyKQogCiB2b2lkIFJlc291cmNlTG9h
ZFNjaGVkdWxlcjo6bm90aWZ5RGlkU2NoZWR1bGVSZXNvdXJjZVJlcXVlc3QoUmVzb3VyY2VMb2Fk
ZXIqIGxvYWRlcikKIHsKLSAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFNjaGVkdWxl
UmVzb3VyY2VSZXF1ZXN0KGxvYWRlci0+ZnJhbWVMb2FkZXIoKSA/IGxvYWRlci0+ZnJhbWVMb2Fk
ZXIoKS0+ZnJhbWUoKS5kb2N1bWVudCgpIDogMCwgbG9hZGVyLT51cmwoKSk7CisgICAgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRTY2hlZHVsZVJlc291cmNlUmVxdWVzdChsb2FkZXItPmZy
YW1lTG9hZGVyKCkgPyBsb2FkZXItPmZyYW1lTG9hZGVyKCktPmZyYW1lKCkuZG9jdW1lbnQoKSA6
IG51bGxwdHIsIGxvYWRlci0+dXJsKCkpOwogfQogCiAjaWYgVVNFKFFVSUNLX0xPT0spCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAppbmRleCAzZTRkNmUzMjQ4OTE0ODEz
ZWY3OWZhN2QxZjJhY2E0NWRkOTI5NGI5Li42MWZmYjY1Mzc2ZTJlNDg1NDgxNDNiZjg4YzRkZDU4
ZDMyYzljOGE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2Fk
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKQEAg
LTI3MiwxMCArMjcyLDggQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0KFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXMKIAogICAgICAgICBmcmFt
ZUxvYWRlcigpLT5ub3RpZmllcigpLndpbGxTZW5kUmVxdWVzdCh0aGlzLCByZXF1ZXN0LCByZWRp
cmVjdFJlc3BvbnNlKTsKICAgICB9Ci0jaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBlbHNlCiAg
ICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFNlbmRSZXF1ZXN0KG1fZnJhbWUu
Z2V0KCksIG1faWRlbnRpZmllciwgbV9mcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKSwg
cmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSk7Ci0jZW5kaWYKIAogICAgIGlmICghcmVkaXJlY3RS
ZXNwb25zZS5pc051bGwoKSkKICAgICAgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvYWRlclN0
cmF0ZWd5KCktPnJlc291cmNlTG9hZFNjaGVkdWxlcigpLT5jcm9zc09yaWdpblJlZGlyZWN0UmVj
ZWl2ZWQodGhpcywgcmVxdWVzdC51cmwoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCmluZGV4IGU5NTRhMzM3
ZTA4Mjc3N2M4M2M1M2I2Y2VhYjk0OWQ2ZDg1MDU2OWIuLmM3OTcxMDkwMzIyM2Y2YjAyNmFlMTE4
MWZkMTdhZjY0M2FjZDI1ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCkBAIC01MDIsNyArNTAyLDcgQEAg
UGFzc1JlZlB0cjxSZXNvdXJjZUhhbmRsZT4gQXBwbGljYXRpb25DYWNoZUdyb3VwOjpjcmVhdGVS
ZXNvdXJjZUhhbmRsZShjb25zdCBVUkwKIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRS
ZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVzcG9uc2UpCiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBEb2N1bWVudExv
YWRlciogbG9hZGVyID0gKGhhbmRsZSA9PSBtX21hbmlmZXN0SGFuZGxlKSA/IDAgOiBtX2ZyYW1l
LT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpOworICAgIERvY3VtZW50TG9hZGVyKiBsb2FkZXIg
PSAoaGFuZGxlID09IG1fbWFuaWZlc3RIYW5kbGUpID8gbnVsbHB0ciA6IG1fZnJhbWUtPmxvYWRl
cigpLmRvY3VtZW50TG9hZGVyKCk7CiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2ll
IGNvb2tpZSA9IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFJlY2VpdmVSZXNvdXJjZVJl
c3BvbnNlKG1fZnJhbWUsIG1fY3VycmVudFJlc291cmNlSWRlbnRpZmllciwgcmVzcG9uc2UpOwog
ICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZVJlc291cmNlUmVzcG9uc2Uo
Y29va2llLCBtX2N1cnJlbnRSZXNvdXJjZUlkZW50aWZpZXIsIGxvYWRlciwgcmVzcG9uc2UsIDAp
OwogI2VuZGlmCkBAIC01NzcsOSArNTc3LDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6
OmRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIGNvbnN0IGNoYXIqIGQKIHsK
ICAgICBVTlVTRURfUEFSQU0oZW5jb2RlZERhdGFMZW5ndGgpOwogCi0jaWYgRU5BQkxFKElOU1BF
Q1RPUikKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVEYXRhKG1fZnJh
bWUsIG1fY3VycmVudFJlc291cmNlSWRlbnRpZmllciwgMCwgbGVuZ3RoLCAwKTsKLSNlbmRpZgog
CiAgICAgaWYgKGhhbmRsZSA9PSBtX21hbmlmZXN0SGFuZGxlKSB7CiAgICAgICAgIGRpZFJlY2Vp
dmVNYW5pZmVzdERhdGEoZGF0YSwgbGVuZ3RoKTsKQEAgLTU5NCwxMSArNTkyLDcgQEAgdm9pZCBB
cHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlKiBoYW5k
bGUsIGNvbnN0IGNoYXIqIGQKIAogdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRpZEZpbmlz
aExvYWRpbmcoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgZG91YmxlIGZpbmlzaFRpbWUpCiB7Ci0j
aWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZp
bmlzaExvYWRpbmcobV9mcmFtZSwgbV9mcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKSwg
bV9jdXJyZW50UmVzb3VyY2VJZGVudGlmaWVyLCBmaW5pc2hUaW1lKTsKLSNlbHNlCi0gICAgVU5V
U0VEX1BBUkFNKGZpbmlzaFRpbWUpOwotI2VuZGlmCiAKICAgICBpZiAoaGFuZGxlID09IG1fbWFu
aWZlc3RIYW5kbGUpIHsKICAgICAgICAgZGlkRmluaXNoTG9hZGluZ01hbmlmZXN0KCk7CkBAIC02
MzMsMTEgKzYyNyw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRGaW5pc2hMb2Fk
aW5nKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIGRvdWJsZSBmaW5pCiAKIHZvaWQgQXBwbGljYXRp
b25DYWNoZUdyb3VwOjpkaWRGYWlsKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIGNvbnN0IFJlc291
cmNlRXJyb3ImIGVycm9yKQogewotI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpkaWRGYWlsTG9hZGluZyhtX2ZyYW1lLCBtX2ZyYW1lLT5sb2FkZXIo
KS5kb2N1bWVudExvYWRlcigpLCBtX2N1cnJlbnRSZXNvdXJjZUlkZW50aWZpZXIsIGVycm9yKTsK
LSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGVycm9yKTsKLSNlbmRpZgogCiAgICAgaWYgKGhhbmRs
ZSA9PSBtX21hbmlmZXN0SGFuZGxlKSB7CiAgICAgICAgIC8vIEEgbmV0d29yayBlcnJvciBpcyBs
b2dnZWQgZWxzZXdoZXJlLCBubyBuZWVkIHRvIGxvZyBhZ2Fpbi4gQWxzbywgaXQncyBub3JtYWwg
Zm9yIG1hbmlmZXN0IGZldGNoaW5nIHRvIGZhaWwgd2hlbiB3b3JraW5nIG9mZmxpbmUuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAppbmRleCA4ZTcz
N2E4NjJmNmZiZjY0Y2MxZTliYjdiYzJiZTMxNWVmYzZjMjJhLi42NjI1NTcwMmJjYWFlODViMzVi
NTI4ZmFmZWU3Y2IyODBhZTY1ODZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSZXNvdXJjZS5jcHAKQEAgLTQ4Myw3ICs0ODMsNyBAQCB2b2lkIENhY2hlZFJlc291
cmNlOjpkZWNvZGVkRGF0YURlbGV0aW9uVGltZXJGaXJlZCgpCiBib29sIENhY2hlZFJlc291cmNl
OjpkZWxldGVJZlBvc3NpYmxlKCkKIHsKICAgICBpZiAoY2FuRGVsZXRlKCkgJiYgIWluQ2FjaGUo
KSkgewotICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxEZXN0cm95Q2FjaGVk
UmVzb3VyY2UodGhpcyk7CisgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbERl
c3Ryb3lDYWNoZWRSZXNvdXJjZSgqdGhpcyk7CiAgICAgICAgIGRlbGV0ZSB0aGlzOwogICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0No
cm9tZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAKaW5kZXggMjM3ZmRiYjUz
YmE1Yjk3YTA5OWJmN2VkYzkyYmRjZGZiYmNmOTYwZi4uNjhiZjY2OGNhMzI1NjNlMWNmMWJhNzJl
NTY0M2Y3YzYzNjk3MzkyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcApAQCAtOTUsNyArOTUsNyBA
QCB2b2lkIENocm9tZTo6aW52YWxpZGF0ZUNvbnRlbnRzRm9yU2xvd1Njcm9sbChjb25zdCBJbnRS
ZWN0JiB1cGRhdGVSZWN0KQogdm9pZCBDaHJvbWU6OnNjcm9sbChjb25zdCBJbnRTaXplJiBzY3Jv
bGxEZWx0YSwgY29uc3QgSW50UmVjdCYgcmVjdFRvU2Nyb2xsLCBjb25zdCBJbnRSZWN0JiBjbGlw
UmVjdCkKIHsKICAgICBtX2NsaWVudC5zY3JvbGwoc2Nyb2xsRGVsdGEsIHJlY3RUb1Njcm9sbCwg
Y2xpcFJlY3QpOwotICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkU2Nyb2xsKCZtX3Bh
Z2UpOworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkU2Nyb2xsKG1fcGFnZSk7CiB9
CiAKICNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKQEAgLTI5Nyw3ICsyOTcsNyBAQCBib29s
IENocm9tZTo6cnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSwgRnJhbWUqIGZyYW1lKQogICAgIC8vIG90aGVyd2lzZSBjYXVzZSB0aGUgbG9hZCB0byBjb250
aW51ZSB3aGlsZSB3ZSdyZSBpbiB0aGUgbWlkZGxlIG9mIGV4ZWN1dGluZyBKYXZhU2NyaXB0Lgog
ICAgIFBhZ2VHcm91cExvYWREZWZlcnJlciBkZWZlcnJlcihtX3BhZ2UsIHRydWUpOwogCi0gICAg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIGNvb2tpZSA9IEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6d2lsbFJ1bkphdmFTY3JpcHREaWFsb2coJm1fcGFnZSwgbWVzc2FnZSk7CisgICAg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIGNvb2tpZSA9IEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6d2lsbFJ1bkphdmFTY3JpcHREaWFsb2cobV9wYWdlLCBtZXNzYWdlKTsKICAgICBi
b29sIG9rID0gbV9jbGllbnQucnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKG1lc3NhZ2UsIGZy
YW1lKTsKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJ1bkphdmFTY3JpcHREaWFs
b2coY29va2llKTsKICAgICByZXR1cm4gb2s7CkBAIC0zMjEsNyArMzIxLDcgQEAgdm9pZCBDaHJv
bWU6OnJ1bkphdmFTY3JpcHRBbGVydChGcmFtZSogZnJhbWUsIGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSkKICAgICBub3RpZnlQb3B1cE9wZW5pbmdPYnNlcnZlcnMoKTsKICAgICBTdHJpbmcgZGlzcGxh
eU1lc3NhZ2UgPSBmcmFtZS0+ZGlzcGxheVN0cmluZ01vZGlmaWVkQnlFbmNvZGluZyhtZXNzYWdl
KTsKIAotICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWUgPSBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OndpbGxSdW5KYXZhU2NyaXB0RGlhbG9nKCZtX3BhZ2UsIGRpc3Bs
YXlNZXNzYWdlKTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgY29va2llID0g
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUnVuSmF2YVNjcmlwdERpYWxvZyhtX3BhZ2Us
IGRpc3BsYXlNZXNzYWdlKTsKICAgICBtX2NsaWVudC5ydW5KYXZhU2NyaXB0QWxlcnQoZnJhbWUs
IGRpc3BsYXlNZXNzYWdlKTsKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJ1bkph
dmFTY3JpcHREaWFsb2coY29va2llKTsKIH0KQEAgLTMzOSw3ICszMzksNyBAQCBib29sIENocm9t
ZTo6cnVuSmF2YVNjcmlwdENvbmZpcm0oRnJhbWUqIGZyYW1lLCBjb25zdCBTdHJpbmcmIG1lc3Nh
Z2UpCiAgICAgbm90aWZ5UG9wdXBPcGVuaW5nT2JzZXJ2ZXJzKCk7CiAgICAgU3RyaW5nIGRpc3Bs
YXlNZXNzYWdlID0gZnJhbWUtPmRpc3BsYXlTdHJpbmdNb2RpZmllZEJ5RW5jb2RpbmcobWVzc2Fn
ZSk7CiAKLSAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgY29va2llID0gSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUnVuSmF2YVNjcmlwdERpYWxvZygmbV9wYWdlLCBkaXNw
bGF5TWVzc2FnZSk7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIGNvb2tpZSA9
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFJ1bkphdmFTY3JpcHREaWFsb2cobV9wYWdl
LCBkaXNwbGF5TWVzc2FnZSk7CiAgICAgYm9vbCBvayA9IG1fY2xpZW50LnJ1bkphdmFTY3JpcHRD
b25maXJtKGZyYW1lLCBkaXNwbGF5TWVzc2FnZSk7CiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpkaWRSdW5KYXZhU2NyaXB0RGlhbG9nKGNvb2tpZSk7CiAgICAgcmV0dXJuIG9rOwpAQCAt
MzU4LDcgKzM1OCw3IEBAIGJvb2wgQ2hyb21lOjpydW5KYXZhU2NyaXB0UHJvbXB0KEZyYW1lKiBm
cmFtZSwgY29uc3QgU3RyaW5nJiBwcm9tcHQsIGNvbnN0IFN0cmluCiAgICAgbm90aWZ5UG9wdXBP
cGVuaW5nT2JzZXJ2ZXJzKCk7CiAgICAgU3RyaW5nIGRpc3BsYXlQcm9tcHQgPSBmcmFtZS0+ZGlz
cGxheVN0cmluZ01vZGlmaWVkQnlFbmNvZGluZyhwcm9tcHQpOwogCi0gICAgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uQ29va2llIGNvb2tpZSA9IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2ls
bFJ1bkphdmFTY3JpcHREaWFsb2coJm1fcGFnZSwgZGlzcGxheVByb21wdCk7CisgICAgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIGNvb2tpZSA9IEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6d2lsbFJ1bkphdmFTY3JpcHREaWFsb2cobV9wYWdlLCBkaXNwbGF5UHJvbXB0KTsKICAgICBi
b29sIG9rID0gbV9jbGllbnQucnVuSmF2YVNjcmlwdFByb21wdChmcmFtZSwgZGlzcGxheVByb21w
dCwgZnJhbWUtPmRpc3BsYXlTdHJpbmdNb2RpZmllZEJ5RW5jb2RpbmcoZGVmYXVsdFZhbHVlKSwg
cmVzdWx0KTsKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJ1bkphdmFTY3JpcHRE
aWFsb2coY29va2llKTsKIApAQCAtMzk0LDcgKzM5NCw3IEBAIHZvaWQgQ2hyb21lOjptb3VzZURp
ZE1vdmVPdmVyRWxlbWVudChjb25zdCBIaXRUZXN0UmVzdWx0JiByZXN1bHQsIHVuc2lnbmVkIG1v
ZGlmCiAgICAgICAgIHByZWZldGNoRE5TKHJlc3VsdC5hYnNvbHV0ZUxpbmtVUkwoKS5ob3N0KCkp
OwogICAgIG1fY2xpZW50Lm1vdXNlRGlkTW92ZU92ZXJFbGVtZW50KHJlc3VsdCwgbW9kaWZpZXJG
bGFncyk7CiAKLSAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Om1vdXNlRGlkTW92ZU92ZXJF
bGVtZW50KCZtX3BhZ2UsIHJlc3VsdCwgbW9kaWZpZXJGbGFncyk7CisgICAgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjptb3VzZURpZE1vdmVPdmVyRWxlbWVudChtX3BhZ2UsIHJlc3VsdCwgbW9k
aWZpZXJGbGFncyk7CiB9CiAKIHZvaWQgQ2hyb21lOjpzZXRUb29sVGlwKGNvbnN0IEhpdFRlc3RS
ZXN1bHQmIHJlc3VsdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAppbmRleCA1Y2RhOTI0YTc2
ZjI0NmQyZDMyOGNiODYwMWJlYjMwMWEyODRiZmVmLi43OTcwODgwZjI1N2ZlYTJkMzczOTZlOGJi
MzFmYzJlMWJiYmI2OTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRv
dy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCkBAIC0xODYwLDcg
KzE4NjAsNyBAQCB2b2lkIERPTVdpbmRvdzo6ZGlzcGF0Y2hMb2FkRXZlbnQoKQogICAgIC8vIEZv
ciBsb2FkIGV2ZW50cywgc2VuZCBhIHNlcGFyYXRlIGxvYWQgZXZlbnQgdG8gdGhlIGVuY2xvc2lu
ZyBmcmFtZSBvbmx5LgogICAgIC8vIFRoaXMgaXMgYSBET00gZXh0ZW5zaW9uIGFuZCBpcyBpbmRl
cGVuZGVudCBvZiBidWJibGluZy9jYXB0dXJpbmcgcnVsZXMgb2YKICAgICAvLyB0aGUgRE9NLgot
ICAgIEVsZW1lbnQqIG93bmVyRWxlbWVudCA9IG1fZnJhbWUgPyBtX2ZyYW1lLT5vd25lckVsZW1l
bnQoKSA6IDA7CisgICAgRWxlbWVudCogb3duZXJFbGVtZW50ID0gbV9mcmFtZSA/IG1fZnJhbWUt
Pm93bmVyRWxlbWVudCgpIDogbnVsbHB0cjsKICAgICBpZiAob3duZXJFbGVtZW50KQogICAgICAg
ICBvd25lckVsZW1lbnQtPmRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCku
bG9hZEV2ZW50LCBmYWxzZSwgZmFsc2UpKTsKIApAQCAtMTg5Miw3ICsxODkyLDcgQEAgYm9vbCBE
T01XaW5kb3c6OmRpc3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4gcHJwRXZlbnQsIFBhc3NS
ZWZQdHI8RXZlbnRUYXJnZXQKICAgICBldmVudC0+c2V0Q3VycmVudFRhcmdldCh0aGlzKTsKICAg
ICBldmVudC0+c2V0RXZlbnRQaGFzZShFdmVudDo6QVRfVEFSR0VUKTsKIAotICAgIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWUgPSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OndpbGxEaXNwYXRjaEV2ZW50T25XaW5kb3coZnJhbWUoKSwgKmV2ZW50LCB0aGlzKTsKKyAgICBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgY29va2llID0gSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjp3aWxsRGlzcGF0Y2hFdmVudE9uV2luZG93KGZyYW1lKCksICpldmVudCwgKnRoaXMp
OwogCiAgICAgYm9vbCByZXN1bHQgPSBmaXJlRXZlbnRMaXN0ZW5lcnMoZXZlbnQuZ2V0KCkpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKaW5kZXggNDVhYThjZDFjNzk5YjIzYjVh
MTRlN2UwZmZhYThiZTVhZTNiZWRmMC4uNjNiMmEyNGU3NThjZjYzYzRlNjdlNjQxN2JmMTVhNDRk
ZjgzMjQ2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcApAQCAtMTYzNiw3ICsx
NjM2LDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUHJlc3NFdmVudChjb25zdCBQ
bGF0Zm9ybU1vdXNlRXZlbnQmIHBsYXRmb3JtTW91c2UKIHsKICAgICBSZWZQdHI8RnJhbWVWaWV3
PiBwcm90ZWN0b3IobV9mcmFtZS52aWV3KCkpOwogCi0gICAgaWYgKEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6aGFuZGxlTW91c2VQcmVzcyhtX2ZyYW1lLnBhZ2UoKSkpIHsKKyAgICBpZiAoSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpoYW5kbGVNb3VzZVByZXNzKG1fZnJhbWUpKSB7CiAgICAg
ICAgIGludmFsaWRhdGVDbGljaygpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0z
ODY2LDcgKzM4NjYsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlVG91Y2hFdmVudChjb25z
dCBQbGF0Zm9ybVRvdWNoRXZlbnQmIGV2ZW50KQogICAgICAgICAgICAgTm9kZSogbm9kZSA9IHJl
c3VsdC5pbm5lckVsZW1lbnQoKTsKICAgICAgICAgICAgIEFTU0VSVChub2RlKTsKIAotICAgICAg
ICAgICAgaWYgKEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aGFuZGxlVG91Y2hFdmVudChtX2Zy
YW1lLnBhZ2UoKSwgbm9kZSkpCisgICAgICAgICAgICBpZiAobm9kZSAmJiBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmhhbmRsZVRvdWNoRXZlbnQobV9mcmFtZSwgKm5vZGUpKQogICAgICAgICAg
ICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgICAgICAgICBEb2N1bWVudCYgZG9jID0gbm9kZS0+
ZG9jdW1lbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAppbmRleCBkOTY2NTdlNGNlNmVl
NDBmYjQyZTdiM2M1ZGZjZTY1MjZmMWI1Mzc5Li5kNDI2MmM4ZjEyNTE2NWMxNTM4YzVkMDRmNGU0
NjA0YTBkZTM3OTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCkBAIC0xMTUyLDcgKzEx
NTIsNyBAQCB2b2lkIEZyYW1lVmlldzo6bGF5b3V0KGJvb2wgYWxsb3dTdWJ0cmVlKQogICAgIGlm
IChpc1BhaW50aW5nKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbkNvb2tpZSBjb29raWUgPSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxMYXlv
dXQoJmZyYW1lKCkpOworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWUg
PSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxMYXlvdXQoZnJhbWUoKSk7CiAgICAgQW5p
bWF0aW9uVXBkYXRlQmxvY2sgYW5pbWF0aW9uVXBkYXRlQmxvY2soJmZyYW1lKCkuYW5pbWF0aW9u
KCkpOwogICAgIAogICAgIGlmICghYWxsb3dTdWJ0cmVlICYmIG1fbGF5b3V0Um9vdCkgewpAQCAt
MTE4Niw3ICsxMTg2LDcgQEAgdm9pZCBGcmFtZVZpZXc6OmxheW91dChib29sIGFsbG93U3VidHJl
ZSkKICAgICAgICAgaWYgKCFzdHlsZVJlc29sdmVyIHx8IHN0eWxlUmVzb2x2ZXItPmhhc01lZGlh
UXVlcmllc0FmZmVjdGVkQnlWaWV3cG9ydENoYW5nZSgpKSB7CiAgICAgICAgICAgICBkb2N1bWVu
dC5zdHlsZVJlc29sdmVyQ2hhbmdlZChEZWZlclJlY2FsY1N0eWxlKTsKICAgICAgICAgICAgIC8v
IEZJWE1FOiBUaGlzIGluc3RydW1lbnRhdGlvbiBldmVudCBpcyBub3Qgc3RyaWN0bHkgYWNjdXJh
dGUgc2luY2UgY2FjaGVkIG1lZGlhIHF1ZXJ5IHJlc3VsdHMgZG8gbm90IHBlcnNpc3QgYWNyb3Nz
IFN0eWxlUmVzb2x2ZXIgcmVidWlsZHMuCi0gICAgICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246Om1lZGlhUXVlcnlSZXN1bHRDaGFuZ2VkKCZkb2N1bWVudCk7CisgICAgICAgICAgICBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246Om1lZGlhUXVlcnlSZXN1bHRDaGFuZ2VkKGRvY3VtZW50
KTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBkb2N1bWVudC5ldmFsdWF0ZU1lZGlhUXVl
cnlMaXN0KCk7CiAKQEAgLTE0NTQsNyArMTQ1NCw3IEBAIFN0cmluZyBGcmFtZVZpZXc6Om1lZGlh
VHlwZSgpIGNvbnN0CiB7CiAgICAgLy8gU2VlIGlmIHdlIGhhdmUgYW4gb3ZlcnJpZGUgdHlwZS4K
ICAgICBTdHJpbmcgb3ZlcnJpZGVUeXBlID0gZnJhbWUoKS5sb2FkZXIoKS5jbGllbnQoKS5vdmVy
cmlkZU1lZGlhVHlwZSgpOwotICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6YXBwbHlFbXVs
YXRlZE1lZGlhKCZmcmFtZSgpLCAmb3ZlcnJpZGVUeXBlKTsKKyAgICBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmFwcGx5RW11bGF0ZWRNZWRpYShmcmFtZSgpLCBvdmVycmlkZVR5cGUpOwogICAg
IGlmICghb3ZlcnJpZGVUeXBlLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gb3ZlcnJpZGVUeXBl
OwogICAgIHJldHVybiBtX21lZGlhVHlwZTsKQEAgLTI0NDYsNyArMjQ0Niw3IEBAIHZvaWQgRnJh
bWVWaWV3OjpzY2hlZHVsZVJlbGF5b3V0KCkKICAgICAgICAgcmV0dXJuOwogICAgIGlmICghZnJh
bWUoKS5kb2N1bWVudCgpLT5zaG91bGRTY2hlZHVsZUxheW91dCgpKQogICAgICAgICByZXR1cm47
Ci0gICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRJbnZhbGlkYXRlTGF5b3V0KCZmcmFt
ZSgpKTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEludmFsaWRhdGVMYXlvdXQo
ZnJhbWUoKSk7CiAgICAgLy8gV2hlbiBmcmFtZSBmbGF0dGVuaW5nIGlzIGVuYWJsZWQsIHRoZSBj
b250ZW50cyBvZiB0aGUgZnJhbWUgY291bGQgYWZmZWN0IHRoZSBsYXlvdXQgb2YgdGhlIHBhcmVu
dCBmcmFtZXMuCiAgICAgLy8gQWxzbyBpbnZhbGlkYXRlIHBhcmVudCBmcmFtZSBzdGFydGluZyBm
cm9tIHRoZSBvd25lciBlbGVtZW50IG9mIHRoaXMgZnJhbWUuCiAgICAgaWYgKGZyYW1lKCkub3du
ZXJSZW5kZXJlcigpICYmIGlzSW5DaGlsZEZyYW1lV2l0aEZyYW1lRmxhdHRlbmluZygpKQpAQCAt
MjQ5NSw3ICsyNDk1LDcgQEAgdm9pZCBGcmFtZVZpZXc6OnNjaGVkdWxlUmVsYXlvdXRPZlN1YnRy
ZWUoUmVuZGVyRWxlbWVudCYgbmV3UmVsYXlvdXRSb290KQogICAgICAgICBzdGQ6OmNocm9ubzo6
bWlsbGlzZWNvbmRzIGRlbGF5ID0gcmVuZGVyVmlldy5kb2N1bWVudCgpLm1pbmltdW1MYXlvdXRE
ZWxheSgpOwogICAgICAgICBBU1NFUlQoIW5ld1JlbGF5b3V0Um9vdC5jb250YWluZXIoKSB8fCAh
bmV3UmVsYXlvdXRSb290LmNvbnRhaW5lcigpLT5uZWVkc0xheW91dCgpKTsKICAgICAgICAgbV9s
YXlvdXRSb290ID0gJm5ld1JlbGF5b3V0Um9vdDsKLSAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpkaWRJbnZhbGlkYXRlTGF5b3V0KCZmcmFtZSgpKTsKKyAgICAgICAgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpkaWRJbnZhbGlkYXRlTGF5b3V0KGZyYW1lKCkpOwogICAgICAgICBt
X2RlbGF5ZWRMYXlvdXQgPSBkZWxheS5jb3VudCgpOwogICAgICAgICBtX2xheW91dFRpbWVyLnN0
YXJ0T25lU2hvdChkZWxheSk7CiAgICAgICAgIHJldHVybjsKQEAgLTI1MDcsNyArMjUwNyw3IEBA
IHZvaWQgRnJhbWVWaWV3OjpzY2hlZHVsZVJlbGF5b3V0T2ZTdWJ0cmVlKFJlbmRlckVsZW1lbnQm
IG5ld1JlbGF5b3V0Um9vdCkKICAgICBpZiAoIW1fbGF5b3V0Um9vdCkgewogICAgICAgICAvLyBK
dXN0IHJlbGF5b3V0IHRoZSBzdWJ0cmVlLgogICAgICAgICBuZXdSZWxheW91dFJvb3QubWFya0Nv
bnRhaW5pbmdCbG9ja3NGb3JMYXlvdXQoZmFsc2UpOwotICAgICAgICBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmRpZEludmFsaWRhdGVMYXlvdXQoJmZyYW1lKCkpOworICAgICAgICBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OmRpZEludmFsaWRhdGVMYXlvdXQoZnJhbWUoKSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKQEAgLTI1MjMsNyArMjUyMyw3IEBAIHZvaWQgRnJhbWVWaWV3Ojpz
Y2hlZHVsZVJlbGF5b3V0T2ZTdWJ0cmVlKFJlbmRlckVsZW1lbnQmIG5ld1JlbGF5b3V0Um9vdCkK
ICAgICAgICAgbV9sYXlvdXRSb290LT5tYXJrQ29udGFpbmluZ0Jsb2Nrc0ZvckxheW91dChmYWxz
ZSwgJm5ld1JlbGF5b3V0Um9vdCk7CiAgICAgICAgIG1fbGF5b3V0Um9vdCA9ICZuZXdSZWxheW91
dFJvb3Q7CiAgICAgICAgIEFTU0VSVCghbV9sYXlvdXRSb290LT5jb250YWluZXIoKSB8fCAhbV9s
YXlvdXRSb290LT5jb250YWluZXIoKS0+bmVlZHNMYXlvdXQoKSk7Ci0gICAgICAgIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6ZGlkSW52YWxpZGF0ZUxheW91dCgmZnJhbWUoKSk7CisgICAgICAg
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkSW52YWxpZGF0ZUxheW91dChmcmFtZSgpKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMjUzMSw3ICsyNTMxLDcgQEAgdm9pZCBGcmFt
ZVZpZXc6OnNjaGVkdWxlUmVsYXlvdXRPZlN1YnRyZWUoUmVuZGVyRWxlbWVudCYgbmV3UmVsYXlv
dXRSb290KQogICAgIG1fbGF5b3V0Um9vdC0+bWFya0NvbnRhaW5pbmdCbG9ja3NGb3JMYXlvdXQo
ZmFsc2UpOwogICAgIG1fbGF5b3V0Um9vdCA9IDA7CiAgICAgbmV3UmVsYXlvdXRSb290Lm1hcmtD
b250YWluaW5nQmxvY2tzRm9yTGF5b3V0KGZhbHNlKTsKLSAgICBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmRpZEludmFsaWRhdGVMYXlvdXQoJmZyYW1lKCkpOworICAgIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZGlkSW52YWxpZGF0ZUxheW91dChmcmFtZSgpKTsKIH0KIAogYm9vbCBGcmFt
ZVZpZXc6OmxheW91dFBlbmRpbmcoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlQ29uc29sZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25z
b2xlQ2xpZW50LmNwcAppbmRleCA2MWNiNThiNWRkY2RkOTZkNmVhMjlkNzQyNmFmNTNiN2MzYTAx
YTcwLi5jZWNhZjFmZDM2NmUzZTJkYjgwZGVlYWUwOWEzMDFjOWJhMjRiYjUxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25zb2xlQ2xpZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2VDb25zb2xlQ2xpZW50LmNwcApAQCAtMTE3LDkgKzExNyw5IEBAIHZv
aWQgUGFnZUNvbnNvbGVDbGllbnQ6OmFkZE1lc3NhZ2UoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1l
c3NhZ2VMZXZlbCBsZXZlbCwgY29uCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChjYWxsU3Rh
Y2spCi0gICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6YWRkTWVzc2FnZVRvQ29uc29s
ZSgmbV9wYWdlLCBzb3VyY2UsIE1lc3NhZ2VUeXBlOjpMb2csIGxldmVsLCBtZXNzYWdlLCBjYWxs
U3RhY2ssIHJlcXVlc3RJZGVudGlmaWVyKTsKKyAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjphZGRNZXNzYWdlVG9Db25zb2xlKG1fcGFnZSwgc291cmNlLCBNZXNzYWdlVHlwZTo6TG9n
LCBsZXZlbCwgbWVzc2FnZSwgY2FsbFN0YWNrLCByZXF1ZXN0SWRlbnRpZmllcik7CiAgICAgZWxz
ZQotICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmFkZE1lc3NhZ2VUb0NvbnNvbGUo
Jm1fcGFnZSwgc291cmNlLCBNZXNzYWdlVHlwZTo6TG9nLCBsZXZlbCwgbWVzc2FnZSwgdXJsLCBs
aW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIHN0YXRlLCByZXF1ZXN0SWRlbnRpZmllcik7CisgICAg
ICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6YWRkTWVzc2FnZVRvQ29uc29sZShtX3BhZ2Us
IHNvdXJjZSwgTWVzc2FnZVR5cGU6OkxvZywgbGV2ZWwsIG1lc3NhZ2UsIHVybCwgbGluZU51bWJl
ciwgY29sdW1uTnVtYmVyLCBzdGF0ZSwgcmVxdWVzdElkZW50aWZpZXIpOwogCiAgICAgaWYgKHNv
dXJjZSA9PSBNZXNzYWdlU291cmNlOjpDU1MpCiAgICAgICAgIHJldHVybjsKQEAgLTE0Miw3ICsx
NDIsNyBAQCB2b2lkIFBhZ2VDb25zb2xlQ2xpZW50OjptZXNzYWdlV2l0aFR5cGVBbmRMZXZlbChN
ZXNzYWdlVHlwZSB0eXBlLCBNZXNzYWdlTGV2ZWwgbAogCiAgICAgU3RyaW5nIG1lc3NhZ2U7CiAg
ICAgYm9vbCBnb3RNZXNzYWdlID0gYXJndW1lbnRzLT5nZXRGaXJzdEFyZ3VtZW50QXNTdHJpbmco
bWVzc2FnZSk7Ci0gICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjphZGRNZXNzYWdlVG9Db25z
b2xlKCZtX3BhZ2UsIE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIHR5cGUsIGxldmVsLCBtZXNz
YWdlLCBleGVjLCBhcmd1bWVudHMpOworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6YWRk
TWVzc2FnZVRvQ29uc29sZShtX3BhZ2UsIE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIHR5cGUs
IGxldmVsLCBtZXNzYWdlLCBleGVjLCBhcmd1bWVudHMpOwogCiAgICAgaWYgKG1fcGFnZS51c2Vz
RXBoZW1lcmFsU2Vzc2lvbigpKQogICAgICAgICByZXR1cm47CkBAIC0xNjAsMzQgKzE2MCwzNCBA
QCB2b2lkIFBhZ2VDb25zb2xlQ2xpZW50OjptZXNzYWdlV2l0aFR5cGVBbmRMZXZlbChNZXNzYWdl
VHlwZSB0eXBlLCBNZXNzYWdlTGV2ZWwgbAogCiB2b2lkIFBhZ2VDb25zb2xlQ2xpZW50Ojpjb3Vu
dChKU0M6OkV4ZWNTdGF0ZSogZXhlYywgUGFzc1JlZlB0cjxTY3JpcHRBcmd1bWVudHM+IGFyZ3Vt
ZW50cykKIHsKLSAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNvbnNvbGVDb3VudCgmbV9w
YWdlLCBleGVjLCBhcmd1bWVudHMpOworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Y29u
c29sZUNvdW50KG1fcGFnZSwgZXhlYywgYXJndW1lbnRzKTsKIH0KIAogdm9pZCBQYWdlQ29uc29s
ZUNsaWVudDo6cHJvZmlsZShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiB0aXRs
ZSkKIHsKLSAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnN0YXJ0UHJvZmlsaW5nKCZtX3Bh
Z2UsIGV4ZWMsIHRpdGxlKTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnN0YXJ0UHJv
ZmlsaW5nKG1fcGFnZSwgZXhlYywgdGl0bGUpOwogfQogCiB2b2lkIFBhZ2VDb25zb2xlQ2xpZW50
Ojpwcm9maWxlRW5kKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIHRpdGxlKQog
ewotICAgIGlmIChSZWZQdHI8SlNDOjpQcm9maWxlPiBwcm9maWxlID0gSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpzdG9wUHJvZmlsaW5nKCZtX3BhZ2UsIGV4ZWMsIHRpdGxlKSkKKyAgICBpZiAo
UmVmUHRyPEpTQzo6UHJvZmlsZT4gcHJvZmlsZSA9IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
c3RvcFByb2ZpbGluZyhtX3BhZ2UsIGV4ZWMsIHRpdGxlKSkKICAgICAgICAgbV9wcm9maWxlcy5h
cHBlbmQocHJvZmlsZS5yZWxlYXNlKCkpOwogfQogCiB2b2lkIFBhZ2VDb25zb2xlQ2xpZW50Ojp0
aW1lKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgU3RyaW5nJiB0aXRsZSkKIHsKLSAgICBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OnN0YXJ0Q29uc29sZVRpbWluZygmbV9wYWdlLm1haW5GcmFtZSgp
LCB0aXRsZSk7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzdGFydENvbnNvbGVUaW1p
bmcobV9wYWdlLm1haW5GcmFtZSgpLCB0aXRsZSk7CiB9CiAKIHZvaWQgUGFnZUNvbnNvbGVDbGll
bnQ6OnRpbWVFbmQoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgdGl0bGUpCiB7
CiAgICAgUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4gY2FsbFN0YWNrKGNyZWF0ZVNjcmlwdENhbGxT
dGFja0ZvckNvbnNvbGUoZXhlYywgMSkpOwotICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
c3RvcENvbnNvbGVUaW1pbmcoJm1fcGFnZS5tYWluRnJhbWUoKSwgdGl0bGUsIGNhbGxTdGFjay5y
ZWxlYXNlKCkpOworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c3RvcENvbnNvbGVUaW1p
bmcobV9wYWdlLm1haW5GcmFtZSgpLCB0aXRsZSwgY2FsbFN0YWNrLnJlbGVhc2UoKSk7CiB9CiAK
IHZvaWQgUGFnZUNvbnNvbGVDbGllbnQ6OnRpbWVTdGFtcChKU0M6OkV4ZWNTdGF0ZSosIFBhc3NS
ZWZQdHI8U2NyaXB0QXJndW1lbnRzPiBhcmd1bWVudHMpCiB7Ci0gICAgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpjb25zb2xlVGltZVN0YW1wKCZtX3BhZ2UubWFpbkZyYW1lKCksIGFyZ3VtZW50
cyk7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjb25zb2xlVGltZVN0YW1wKG1fcGFn
ZS5tYWluRnJhbWUoKSwgYXJndW1lbnRzKTsKIH0KIAogdm9pZCBQYWdlQ29uc29sZUNsaWVudDo6
Y2xlYXJQcm9maWxlcygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdz
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCmluZGV4IDQ3YmNhNzA1YTRl
YTJmYWQ3MjlkNDg4ZThkNDI4NTg4NmM5ZWEwZmUuLmE5MGFmMzdiMzlmZTI1ZWIzYzkzOGU0NWY2
MDAzNmExMjZiNDcxOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3Mu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCkBAIC00MTQsNyArNDE0
LDcgQEAgdm9pZCBTZXR0aW5nczo6c2V0U2NyaXB0RW5hYmxlZChib29sIGlzU2NyaXB0RW5hYmxl
ZCkKICNpZiBQTEFURk9STShJT1MpCiAgICAgbV9wYWdlLT5zZXROZWVkc1JlY2FsY1N0eWxlSW5B
bGxGcmFtZXMoKTsKICNlbmRpZgotICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c2NyaXB0
c0VuYWJsZWQobV9wYWdlLCBtX2lzU2NyaXB0RW5hYmxlZCk7CisgICAgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpzY3JpcHRzRW5hYmxlZCgqbV9wYWdlLCBtX2lzU2NyaXB0RW5hYmxlZCk7CiB9
CiAKIHZvaWQgU2V0dGluZ3M6OnNldEphdmFFbmFibGVkKGJvb2wgaXNKYXZhRW5hYmxlZCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCmluZGV4IDkwMjU1NzQwMjczNmJk
MzNlMTgxYjM2ZWU3OGM4MjUxNTNmYmEzNGMuLjU0OTdlYjg2NmQxMzNjZTk2NzJmMzI1NDE1ODg3
MzVkMTA0ZGI3YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcApA
QCAtMjI1NSw3ICsyMjU1LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6c2Nyb2xsVG8oaW50IHgsIGlu
dCB5KQogICAgIEludFBvaW50IG9sZFBvc2l0aW9uID0gSW50UG9pbnQobV9zY3JvbGxPZmZzZXQp
OwogICAgIG1fc2Nyb2xsT2Zmc2V0ID0gbmV3U2Nyb2xsT2Zmc2V0OwogCi0gICAgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjp3aWxsU2Nyb2xsTGF5ZXIoJnJlbmRlcmVyKCkuZnJhbWUoKSk7Cisg
ICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsU2Nyb2xsTGF5ZXIocmVuZGVyZXIoKS5m
cmFtZSgpKTsKIAogICAgIFJlbmRlclZpZXcmIHZpZXcgPSByZW5kZXJlcigpLnZpZXcoKTsKIApA
QCAtMjMwOCw3ICsyMzA4LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6c2Nyb2xsVG8oaW50IHgsIGlu
dCB5KQogICAgICAgICBlbGVtZW50LT5kb2N1bWVudCgpLnNlbmRXaWxsUmV2ZWFsRWRnZUV2ZW50
c0lmTmVlZGVkKG9sZFBvc2l0aW9uLCBJbnRQb2ludChuZXdTY3JvbGxPZmZzZXQpLCB2aXNpYmxl
Q29udGVudFJlY3QoKSwgY29udGVudHNTaXplKCksIGVsZW1lbnQpOwogICAgIH0KIAotICAgIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkU2Nyb2xsTGF5ZXIoJmZyYW1lKTsKKyAgICBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFNjcm9sbExheWVyKGZyYW1lKTsKICAgICBpZiAoc2Ny
b2xsc092ZXJmbG93KCkpCiAgICAgICAgIHZpZXcuZnJhbWVWaWV3KCkuZGlkQ2hhbmdlU2Nyb2xs
T2Zmc2V0KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllckNvbXBvc2l0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
Q29tcG9zaXRvci5jcHAKaW5kZXggZjMzZWYzODg1ODEyZjE4ZGJjMzJjZmEzM2Q0ZThjN2ViMGQz
ZmFmMi4uZTkxYzY4Y2VmMTBlZTFhZjIzZDgyNDU1ZTQ1MWYzNDFiNmFiNmJlYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKQEAg
LTgwNCw3ICs4MDQsNyBAQCB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6YXBwZW5kRG9jdW1l
bnRPdmVybGF5TGF5ZXJzKFZlY3RvcjxHcmFwaGljc0xheWVyKj4mCiB2b2lkIFJlbmRlckxheWVy
Q29tcG9zaXRvcjo6bGF5ZXJCZWNhbWVOb25Db21wb3NpdGVkKGNvbnN0IFJlbmRlckxheWVyJiBs
YXllcikKIHsKICAgICAvLyBJbmZvcm0gdGhlIGluc3BlY3RvciB0aGF0IHRoZSBnaXZlbiBSZW5k
ZXJMYXllciB3YXMgZGVzdHJveWVkLgotICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6cmVu
ZGVyTGF5ZXJEZXN0cm95ZWQocGFnZSgpLCAmbGF5ZXIpOworICAgIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6cmVuZGVyTGF5ZXJEZXN0cm95ZWQocGFnZSgpLCBsYXllcik7CiAKICAgICBBU1NF
UlQobV9jb21wb3NpdGVkTGF5ZXJDb3VudCA+IDApOwogICAgIC0tbV9jb21wb3NpdGVkTGF5ZXJD
b3VudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJOYW1lZEZs
b3dUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd1Ro
cmVhZC5jcHAKaW5kZXggOTc4MjI3OGJjMmUyYWJjODcyZDhmZWI4Mjk0ZjljMDMyMjFkNjk4MC4u
NDM5NzAwYTIxZDA3NTI2MTlhNjVmNmYxMjM0NTcxZDBmYzFlN2NiZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd1RocmVhZC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd1RocmVhZC5jcHAKQEAgLTUwNiwx
MyArNTA2LDEzIEBAIHZvaWQgUmVuZGVyTmFtZWRGbG93VGhyZWFkOjpyZWdpc3Rlck5hbWVkRmxv
d0NvbnRlbnRFbGVtZW50KEVsZW1lbnQmIGNvbnRlbnRFbGVtCiAgICAgICAgIHVuc2lnbmVkIHNo
b3J0IHBvc2l0aW9uID0gY29udGVudEVsZW1lbnQuY29tcGFyZURvY3VtZW50UG9zaXRpb24oZWxl
bWVudCk7CiAgICAgICAgIGlmIChwb3NpdGlvbiAmIE5vZGU6OkRPQ1VNRU5UX1BPU0lUSU9OX0ZP
TExPV0lORykgewogICAgICAgICAgICAgbV9jb250ZW50RWxlbWVudHMuaW5zZXJ0QmVmb3JlKGVs
ZW1lbnQsICZjb250ZW50RWxlbWVudCk7Ci0gICAgICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmRpZFJlZ2lzdGVyTmFtZWRGbG93Q29udGVudEVsZW1lbnQoJmRvY3VtZW50KCksICZu
YW1lZEZsb3coKSwgJmNvbnRlbnRFbGVtZW50LCBlbGVtZW50KTsKKyAgICAgICAgICAgIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVnaXN0ZXJOYW1lZEZsb3dDb250ZW50RWxlbWVudChk
b2N1bWVudCgpLCBuYW1lZEZsb3coKSwgY29udGVudEVsZW1lbnQsIGVsZW1lbnQpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQogCiAgICAgbV9jb250ZW50RWxlbWVudHMu
YWRkKCZjb250ZW50RWxlbWVudCk7Ci0gICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRS
ZWdpc3Rlck5hbWVkRmxvd0NvbnRlbnRFbGVtZW50KCZkb2N1bWVudCgpLCAmbmFtZWRGbG93KCks
ICZjb250ZW50RWxlbWVudCk7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWdp
c3Rlck5hbWVkRmxvd0NvbnRlbnRFbGVtZW50KGRvY3VtZW50KCksIG5hbWVkRmxvdygpLCBjb250
ZW50RWxlbWVudCk7CiB9CiAKIHZvaWQgUmVuZGVyTmFtZWRGbG93VGhyZWFkOjp1bnJlZ2lzdGVy
TmFtZWRGbG93Q29udGVudEVsZW1lbnQoRWxlbWVudCYgY29udGVudEVsZW1lbnQpCkBAIC01Mjcs
NyArNTI3LDcgQEAgdm9pZCBSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6OnVucmVnaXN0ZXJOYW1lZEZs
b3dDb250ZW50RWxlbWVudChFbGVtZW50JiBjb250ZW50RWwKICAgICBpZiAoY2FuQmVEZXN0cm95
ZWQoKSkKICAgICAgICAgc2V0TWFya0ZvckRlc3RydWN0aW9uKCk7CiAKLSAgICBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmRpZFVucmVnaXN0ZXJOYW1lZEZsb3dDb250ZW50RWxlbWVudCgmZG9j
dW1lbnQoKSwgJm5hbWVkRmxvdygpLCAmY29udGVudEVsZW1lbnQpOworICAgIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6ZGlkVW5yZWdpc3Rlck5hbWVkRmxvd0NvbnRlbnRFbGVtZW50KGRvY3Vt
ZW50KCksIG5hbWVkRmxvdygpLCBjb250ZW50RWxlbWVudCk7CiB9CiAKIGJvb2wgUmVuZGVyTmFt
ZWRGbG93VGhyZWFkOjpoYXNDb250ZW50RWxlbWVudChFbGVtZW50JiBjb250ZW50RWxlbWVudCkg
Y29uc3QKQEAgLTU2MCw3ICs1NjAsNyBAQCB2b2lkIFJlbmRlck5hbWVkRmxvd1RocmVhZDo6ZGlz
cGF0Y2hSZWdpb25PdmVyc2V0Q2hhbmdlRXZlbnRJZk5lZWRlZCgpCiAgICAgICAgIHJldHVybjsK
IAogICAgIG1fZGlzcGF0Y2hSZWdpb25PdmVyc2V0Q2hhbmdlRXZlbnQgPSBmYWxzZTsKLSAgICBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENoYW5nZVJlZ2lvbk92ZXJzZXQoJmRvY3VtZW50
KCksICZuYW1lZEZsb3coKSk7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDaGFu
Z2VSZWdpb25PdmVyc2V0KGRvY3VtZW50KCksIG5hbWVkRmxvdygpKTsKICAgICAKICAgICBpZiAo
IW1fcmVnaW9uT3ZlcnNldENoYW5nZUV2ZW50VGltZXIuaXNBY3RpdmUoKSAmJiBuYW1lZEZsb3co
KS5oYXNFdmVudExpc3RlbmVycygpKQogICAgICAgICBtX3JlZ2lvbk92ZXJzZXRDaGFuZ2VFdmVu
dFRpbWVyLnN0YXJ0T25lU2hvdCgwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlcGxh
eS9SZXBsYXlDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlcGxheS9SZXBsYXlDb250
cm9sbGVyLmNwcAppbmRleCA5NmIxZjE0NjZmMWFjYjVhMDQ0ZWE0MDQ4OTU0YjQ5YjQ5NjljZTk4
Li5hYzc1Mjg2OTZlMjI2MWUyZmRhOTEzMTdmZTNjNjRhOWRjZGE0OTk0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZXBsYXkvUmVwbGF5Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVwbGF5L1JlcGxheUNvbnRyb2xsZXIuY3BwCkBAIC0yMDcsNyArMjA3LDcgQEAgdm9p
ZCBSZXBsYXlDb250cm9sbGVyOjpzd2l0Y2hTZXNzaW9uKFBhc3NSZWZQdHI8UmVwbGF5U2Vzc2lv
bj4gc2Vzc2lvbikKICAgICBtX2N1cnJlbnRQb3NpdGlvbiA9IFJlcGxheVBvc2l0aW9uKDAsIDAp
OwogCiAgICAgTE9HKFdlYlJlcGxheSwgIiUtMjBzU3dpdGNoaW5nIHNlc3Npb25zIGZyb20gJXAg
dG8gJXAuXG4iLCAiUmVwbGF5Q29udHJvbGxlciIsIG1fbG9hZGVkU2Vzc2lvbi5nZXQoKSwgc2Vz
c2lvbi5nZXQoKSk7Ci0gICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzZXNzaW9uTG9hZGVk
KCZtX3BhZ2UsIG1fbG9hZGVkU2Vzc2lvbik7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpzZXNzaW9uTG9hZGVkKG1fcGFnZSwgbV9sb2FkZWRTZXNzaW9uKTsKIH0KIAogdm9pZCBSZXBs
YXlDb250cm9sbGVyOjpjcmVhdGVTZWdtZW50KCkKQEAgLTIyMyw3ICsyMjMsNyBAQCB2b2lkIFJl
cGxheUNvbnRyb2xsZXI6OmNyZWF0ZVNlZ21lbnQoKQogICAgIG1fbG9hZGVkU2VnbWVudCA9IFJl
cGxheVNlc3Npb25TZWdtZW50OjpjcmVhdGUoKTsKIAogICAgIExPRyhXZWJSZXBsYXksICIlLTIw
cyBDcmVhdGVkIHNlZ21lbnQ6ICVwLlxuIiwgIlJlcGxheUNvbnRyb2xsZXIiLCBtX2xvYWRlZFNl
Z21lbnQuZ2V0KCkpOwotICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c2VnbWVudENyZWF0
ZWQoJm1fcGFnZSwgbV9sb2FkZWRTZWdtZW50KTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OnNlZ21lbnRDcmVhdGVkKG1fcGFnZSwgbV9sb2FkZWRTZWdtZW50KTsKIAogICAgIG1fYWN0
aXZlQ3Vyc29yID0gQ2FwdHVyaW5nSW5wdXRDdXJzb3I6OmNyZWF0ZShtX2xvYWRlZFNlZ21lbnQp
OwogICAgIG1fYWN0aXZlQ3Vyc29yLT5hcHBlbmRJbnB1dDxCZWdpblNlZ21lbnRTZW50aW5lbD4o
KTsKQEAgLTI0NywxMCArMjQ3LDEwIEBAIHZvaWQgUmVwbGF5Q29udHJvbGxlcjo6Y29tcGxldGVT
ZWdtZW50KCkKICAgICB1bmxvYWRTZWdtZW50KHNob3VsZFN1cHByZXNzTm90aWZpY2F0aW9ucyk7
CiAKICAgICBMT0coV2ViUmVwbGF5LCAiJS0yMHMgQ29tcGxldGVkIHNlZ21lbnQ6ICVwLlxuIiwg
IlJlcGxheUNvbnRyb2xsZXIiLCBzZWdtZW50LmdldCgpKTsKLSAgICBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OnNlZ21lbnRDb21wbGV0ZWQoJm1fcGFnZSwgc2VnbWVudCk7CisgICAgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpzZWdtZW50Q29tcGxldGVkKG1fcGFnZSwgc2VnbWVudCk7CiAK
ICAgICBtX2xvYWRlZFNlc3Npb24tPmFwcGVuZFNlZ21lbnQoc2VnbWVudCk7Ci0gICAgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpzZXNzaW9uTW9kaWZpZWQoJm1fcGFnZSwgbV9sb2FkZWRTZXNz
aW9uKTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNlc3Npb25Nb2RpZmllZChtX3Bh
Z2UsIG1fbG9hZGVkU2Vzc2lvbik7CiB9CiAKIHZvaWQgUmVwbGF5Q29udHJvbGxlcjo6bG9hZFNl
Z21lbnRBdEluZGV4KHNpemVfdCBzZWdtZW50SW5kZXgpCkBAIC0yNzIsNyArMjcyLDcgQEAgdm9p
ZCBSZXBsYXlDb250cm9sbGVyOjpsb2FkU2VnbWVudEF0SW5kZXgoc2l6ZV90IHNlZ21lbnRJbmRl
eCkKICAgICBtX2FjdGl2ZUN1cnNvciA9IFJlcGxheWluZ0lucHV0Q3Vyc29yOjpjcmVhdGUobV9s
b2FkZWRTZWdtZW50LCBtX3BhZ2UsIHRoaXMpOwogCiAgICAgTE9HKFdlYlJlcGxheSwgIiUtMjBz
TG9hZGluZyBzZWdtZW50OiAlcC5cbiIsICJSZXBsYXlDb250cm9sbGVyIiwgc2VnbWVudC5nZXQo
KSk7Ci0gICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzZWdtZW50TG9hZGVkKCZtX3BhZ2Us
IHNlZ21lbnQpOworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c2VnbWVudExvYWRlZCht
X3BhZ2UsIHNlZ21lbnQpOwogfQogCiB2b2lkIFJlcGxheUNvbnRyb2xsZXI6OnVubG9hZFNlZ21l
bnQoYm9vbCBzdXBwcmVzc05vdGlmaWNhdGlvbnMpCkBAIC0yOTUsNyArMjk1LDcgQEAgdm9pZCBS
ZXBsYXlDb250cm9sbGVyOjp1bmxvYWRTZWdtZW50KGJvb2wgc3VwcHJlc3NOb3RpZmljYXRpb25z
KQogICAgIC8vIGRpZG4ndCBzZW5kIG91dCB0aGUgY29ycmVzcG9uZGluZyBzZWdtZW50TG9hZGVk
IGV2ZW50IGF0IHRoZSBzdGFydCBvZiBjYXB0dXJlLgogICAgIGlmICghc3VwcHJlc3NOb3RpZmlj
YXRpb25zKSB7CiAgICAgICAgIExPRyhXZWJSZXBsYXksICIlLTIwc1VubG9hZGluZyBzZWdtZW50
OiAlcC5cbiIsICJSZXBsYXlDb250cm9sbGVyIiwgdW5sb2FkZWRTZWdtZW50LmdldCgpKTsKLSAg
ICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzZWdtZW50VW5sb2FkZWQoJm1fcGFnZSk7
CisgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c2VnbWVudFVubG9hZGVkKG1fcGFn
ZSk7CiAgICAgfQogfQogCkBAIC0zMDgsNyArMzA4LDcgQEAgdm9pZCBSZXBsYXlDb250cm9sbGVy
OjpzdGFydENhcHR1cmluZygpCiAgICAgc2V0Rm9yY2VEZXRlcm1pbmlzdGljU2V0dGluZ3ModHJ1
ZSk7CiAKICAgICBMT0coV2ViUmVwbGF5LCAiJS0yMHMgU3RhcnRpbmcgY2FwdHVyZS5cbiIsICJS
ZXBsYXlDb250cm9sbGVyIik7Ci0gICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjYXB0dXJl
U3RhcnRlZCgmbV9wYWdlKTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNhcHR1cmVT
dGFydGVkKG1fcGFnZSk7CiAKICAgICBtX2N1cnJlbnRQb3NpdGlvbiA9IFJlcGxheVBvc2l0aW9u
KDAsIDApOwogCkBAIC0zMjYsNyArMzI2LDcgQEAgdm9pZCBSZXBsYXlDb250cm9sbGVyOjpzdG9w
Q2FwdHVyaW5nKCkKICAgICBzZXRGb3JjZURldGVybWluaXN0aWNTZXR0aW5ncyhmYWxzZSk7CiAK
ICAgICBMT0coV2ViUmVwbGF5LCAiJS0yMHMgU3RvcHBpbmcgY2FwdHVyZS5cbiIsICJSZXBsYXlD
b250cm9sbGVyIik7Ci0gICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjYXB0dXJlU3RvcHBl
ZCgmbV9wYWdlKTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNhcHR1cmVTdG9wcGVk
KG1fcGFnZSk7CiB9CiAKIHZvaWQgUmVwbGF5Q29udHJvbGxlcjo6c3RhcnRQbGF5YmFjaygpCkBA
IC0zMzcsNyArMzM3LDcgQEAgdm9pZCBSZXBsYXlDb250cm9sbGVyOjpzdGFydFBsYXliYWNrKCkK
ICAgICBzZXRTZWdtZW50U3RhdGUoU2VnbWVudFN0YXRlOjpEaXNwYXRjaGluZyk7CiAKICAgICBM
T0coV2ViUmVwbGF5LCAiJS0yMHMgU3RhcnRpbmcgcGxheWJhY2sgdG8gcG9zaXRpb24gKHNlZ21l
bnQ6ICVkLCBpbnB1dDogJWQpLlxuIiwgIlJlcGxheUNvbnRyb2xsZXIiLCBtX3RhcmdldFBvc2l0
aW9uLnNlZ21lbnRPZmZzZXQsIG1fdGFyZ2V0UG9zaXRpb24uaW5wdXRPZmZzZXQpOwotICAgIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6cGxheWJhY2tTdGFydGVkKCZtX3BhZ2UpOworICAgIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6cGxheWJhY2tTdGFydGVkKG1fcGFnZSk7CiAKICAgICBk
aXNwYXRjaGVyKCkuc2V0RGlzcGF0Y2hTcGVlZChtX2Rpc3BhdGNoU3BlZWQpOwogICAgIGRpc3Bh
dGNoZXIoKS5ydW4oKTsKQEAgLTM1NCw3ICszNTQsNyBAQCB2b2lkIFJlcGxheUNvbnRyb2xsZXI6
OnBhdXNlUGxheWJhY2soKQogICAgIHNldFNlZ21lbnRTdGF0ZShTZWdtZW50U3RhdGU6OkxvYWRl
ZCk7CiAKICAgICBMT0coV2ViUmVwbGF5LCAiJS0yMHMgUGF1c2luZyBwbGF5YmFjayBhdCBwb3Np
dGlvbiAoc2VnbWVudDogJWQsIGlucHV0OiAlZCkuXG4iLCAiUmVwbGF5Q29udHJvbGxlciIsIG1f
Y3VycmVudFBvc2l0aW9uLnNlZ21lbnRPZmZzZXQsIG1fY3VycmVudFBvc2l0aW9uLmlucHV0T2Zm
c2V0KTsKLSAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnBsYXliYWNrUGF1c2VkKCZtX3Bh
Z2UsIG1fY3VycmVudFBvc2l0aW9uKTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnBs
YXliYWNrUGF1c2VkKG1fcGFnZSwgbV9jdXJyZW50UG9zaXRpb24pOwogfQogCiB2b2lkIFJlcGxh
eUNvbnRyb2xsZXI6OmNhbmNlbFBsYXliYWNrKCkKQEAgLTM3Miw3ICszNzIsNyBAQCB2b2lkIFJl
cGxheUNvbnRyb2xsZXI6OmNhbmNlbFBsYXliYWNrKCkKICAgICB1bmxvYWRTZWdtZW50KCk7CiAg
ICAgbV9zZXNzaW9uU3RhdGUgPSBTZXNzaW9uU3RhdGU6OkluYWN0aXZlOwogICAgIHNldEZvcmNl
RGV0ZXJtaW5pc3RpY1NldHRpbmdzKGZhbHNlKTsKLSAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OnBsYXliYWNrRmluaXNoZWQoJm1fcGFnZSk7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpwbGF5YmFja0ZpbmlzaGVkKG1fcGFnZSk7CiB9CiAKIHZvaWQgUmVwbGF5Q29udHJvbGxl
cjo6cmVwbGF5VG9Qb3NpdGlvbihjb25zdCBSZXBsYXlQb3NpdGlvbiYgcG9zaXRpb24sIERpc3Bh
dGNoU3BlZWQgc3BlZWQpCkBAIC01MTEsNyArNTExLDcgQEAgdm9pZCBSZXBsYXlDb250cm9sbGVy
Ojp3aWxsRGlzcGF0Y2hJbnB1dChjb25zdCBFdmVudExvb3BJbnB1dEJhc2UmKQogCiAgICAgbV9j
dXJyZW50UG9zaXRpb24uaW5wdXRPZmZzZXQrKzsKIAotICAgIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6cGxheWJhY2tIaXRQb3NpdGlvbigmbV9wYWdlLCBtX2N1cnJlbnRQb3NpdGlvbik7Cisg
ICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpwbGF5YmFja0hpdFBvc2l0aW9uKG1fcGFnZSwg
bV9jdXJyZW50UG9zaXRpb24pOwogCiAgICAgaWYgKG1fY3VycmVudFBvc2l0aW9uID09IG1fdGFy
Z2V0UG9zaXRpb24pCiAgICAgICAgIHBhdXNlUGxheWJhY2soKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmNwcAppbmRleCBjNzNkNjU4YjNkNjA2MzVjMTRjOWNhZWUzN2JkYzZmODg1ZDZj
ZmM1Li45YTA1NTNkM2RkMDU4Mjk4ZGE3ZDQwMjVjMjQ0NGIwYmRmZjgyMDUwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC0xNDgwLDcgKzE0ODAsNyBAQCBWZWN0b3I8U3Ry
aW5nPiBJbnRlcm5hbHM6OmNvbnNvbGVNZXNzYWdlQXJndW1lbnRDb3VudHMoKSBjb25zdAogICAg
IGlmICghZG9jdW1lbnQgfHwgIWRvY3VtZW50LT5wYWdlKCkpCiAgICAgICAgIHJldHVybiBWZWN0
b3I8U3RyaW5nPigpOwogCi0gICAgSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0Fn
ZW50cyA9IGluc3RydW1lbnRhdGlvbkZvclBhZ2UoZG9jdW1lbnQtPnBhZ2UoKSk7CisgICAgSW5z
dHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyA9IEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6aW5zdHJ1bWVudGluZ0FnZW50c0ZvclBhZ2UoZG9jdW1lbnQtPnBhZ2UoKSk7CiAg
ICAgaWYgKCFpbnN0cnVtZW50aW5nQWdlbnRzKQogICAgICAgICByZXR1cm4gVmVjdG9yPFN0cmlu
Zz4oKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKaW5kZXggYjU0MGExMzgz
ZjMxNDgyNWE2MWZhMTM1NjVjOWZiMzY4NWFiMTg4Zi4uNDZlMThmZDljMDc3MzNlNDhhZTVjMzg2
YWRiOTVlYWQyNzYxY2FiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBS
ZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCkBA
IC0zNzIsMTQgKzM3MiwxNCBAQCB2b2lkIFhNTEh0dHBSZXF1ZXN0OjpjYWxsUmVhZHlTdGF0ZUNo
YW5nZUxpc3RlbmVyKCkKICAgICBpZiAoIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIGNvb2tpZSA9
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbERpc3BhdGNoWEhSUmVhZHlTdGF0ZUNoYW5n
ZUV2ZW50KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgdGhpcyk7CisgICAgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uQ29va2llIGNvb2tpZSA9IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2ls
bERpc3BhdGNoWEhSUmVhZHlTdGF0ZUNoYW5nZUV2ZW50KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSwgKnRoaXMpOwogCiAgICAgaWYgKG1fYXN5bmMgfHwgKG1fc3RhdGUgPD0gT1BFTkVEIHx8IG1f
c3RhdGUgPT0gRE9ORSkpCiAgICAgICAgIG1fcHJvZ3Jlc3NFdmVudFRocm90dGxlLmRpc3BhdGNo
UmVhZHlTdGF0ZUNoYW5nZUV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLnJlYWR5c3Rh
dGVjaGFuZ2VFdmVudCwgZmFsc2UsIGZhbHNlKSwgbV9zdGF0ZSA9PSBET05FID8gRmx1c2hQcm9n
cmVzc0V2ZW50IDogRG9Ob3RGbHVzaFByb2dyZXNzRXZlbnQpOwogCiAgICAgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpkaWREaXNwYXRjaFhIUlJlYWR5U3RhdGVDaGFuZ2VFdmVudChjb29raWUp
OwogICAgIGlmIChtX3N0YXRlID09IERPTkUgJiYgIW1fZXJyb3IpIHsKLSAgICAgICAgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIGNvb2tpZSA9IEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6d2lsbERpc3BhdGNoWEhSTG9hZEV2ZW50KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgdGhp
cyk7CisgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWUgPSBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxEaXNwYXRjaFhIUkxvYWRFdmVudChzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCksICp0aGlzKTsKICAgICAgICAgbV9wcm9ncmVzc0V2ZW50VGhyb3R0bGUu
ZGlzcGF0Y2hQcm9ncmVzc0V2ZW50KGV2ZW50TmFtZXMoKS5sb2FkRXZlbnQpOwogICAgICAgICBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZERpc3BhdGNoWEhSTG9hZEV2ZW50KGNvb2tpZSk7
CiAgICAgICAgIG1fcHJvZ3Jlc3NFdmVudFRocm90dGxlLmRpc3BhdGNoUHJvZ3Jlc3NFdmVudChl
dmVudE5hbWVzKCkubG9hZGVuZEV2ZW50KTsK
</data>
<flag name="review"
          id="268739"
          type_id="1"
          status="+"
          setter="kling"
    />
          </attachment>
      

    </bug>

</bugzilla>