<?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>212392</bug_id>
          
          <creation_ts>2020-05-26 16:41:33 -0700</creation_ts>
          <short_desc>Use ObjectIdentifier&lt;&gt; instead of uint64_t for context IDs in VideoFullscreenManagerProxy</short_desc>
          <delta_ts>2020-06-24 15:09:39 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Media</component>
          <version>Safari 13</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=212293</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>213576</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Peng Liu">peng.liu6</reporter>
          <assigned_to name="David Kilzer (:ddkilzer)">ddkilzer</assigned_to>
          <cc>ddkilzer</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>jer.noble</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>useafterfree</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1656228</commentid>
    <comment_count>0</comment_count>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2020-05-26 16:41:33 -0700</bug_when>
    <thetext>A follow-up task based on Youenn&apos;s comment: https://bugs.webkit.org/show_bug.cgi?id=212293#c3.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1665631</commentid>
    <comment_count>1</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-06-23 20:23:15 -0700</bug_when>
    <thetext>&lt;rdar://problem/61799040&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1665639</commentid>
    <comment_count>2</comment_count>
      <attachid>402620</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-06-23 20:32:02 -0700</bug_when>
    <thetext>Created attachment 402620
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1665669</commentid>
    <comment_count>3</comment_count>
      <attachid>402620</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-06-24 01:33:36 -0700</bug_when>
    <thetext>Comment on attachment 402620
Patch v1

View in context: https://bugs.webkit.org/attachment.cgi?id=402620&amp;action=review

&gt; Source/WebKit/UIProcess/Cocoa/PlaybackSessionManagerProxy.mm:371
&gt;      MESSAGE_CHECK_CONTEXTID(contextId);

We can remove this one.

&gt; Source/WebKit/UIProcess/Cocoa/PlaybackSessionManagerProxy.mm:504
&gt;      MESSAGE_CHECK_CONTEXTID(contextId);

Ditto here and above.

&gt; Source/WebKit/UIProcess/Cocoa/VideoFullscreenManagerProxy.mm:512
&gt;      MESSAGE_CHECK_CONTEXTID(contextId);

Do we need to remove this one as well? Ditto below.

&gt; Source/WebKit/UIProcess/Cocoa/VideoFullscreenManagerProxy.mm:513
&gt;      MESSAGE_CHECK(videoLayerID);

Should we also use ObjectIdentifier for videoLayerID in the future?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1665844</commentid>
    <comment_count>4</comment_count>
      <attachid>402620</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-06-24 13:17:30 -0700</bug_when>
    <thetext>Comment on attachment 402620
Patch v1

View in context: https://bugs.webkit.org/attachment.cgi?id=402620&amp;action=review

Will remove the MESSAGE_CHECK_CONTEXTID() checks as they&apos;re redundant now.

Thanks!

&gt;&gt; Source/WebKit/UIProcess/Cocoa/VideoFullscreenManagerProxy.mm:513
&gt;&gt;      MESSAGE_CHECK(videoLayerID);
&gt; 
&gt; Should we also use ObjectIdentifier for videoLayerID in the future?

Yes, tracked by &lt;rdar://problem/61806253&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1665847</commentid>
    <comment_count>5</comment_count>
      <attachid>402679</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-06-24 13:26:51 -0700</bug_when>
    <thetext>Created attachment 402679
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1665877</commentid>
    <comment_count>6</comment_count>
      <attachid>402679</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-06-24 14:42:13 -0700</bug_when>
    <thetext>Comment on attachment 402679
Patch for landing

Marking cq+ since changes are only in Source/WebKit, and thus mac-debug-wk1 can&apos;t be affected by failed tests.  (I also built macOS Debug locally.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1665882</commentid>
    <comment_count>7</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-06-24 15:09:38 -0700</bug_when>
    <thetext>Committed r263476: &lt;https://trac.webkit.org/changeset/263476&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 402679.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>402620</attachid>
            <date>2020-06-23 20:32:02 -0700</date>
            <delta_ts>2020-06-24 13:17:30 -0700</delta_ts>
            <desc>Patch v1</desc>
            <filename>bug-212392-20200623203425.patch</filename>
            <type>text/plain</type>
            <size>124818</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYzNDE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDI0NDkxYmI2YmQ1YTdhZTlj
MDc0YThmMjkwN2Q5ZDkxNTYzZDcyZTUuLjZmOGM1NzMzY2U3OWUzMDdmOTM3YWMwYjZkOTIyNDc3
YTlhNzFlOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTg0IEBACisyMDIwLTA2LTIzICBEYXZpZCBL
aWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIE9iamVjdElkZW50aWZp
ZXI8PiBpbnN0ZWFkIG9mIHVpbnQ2NF90IGZvciBjb250ZXh0IElEcyBpbiBWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyUHJveHkKKyAgICAgICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzIxMjM5Mj4KKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYxNzk5MDQwPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFN3aXRjaCBmcm9tIHVpbnQ2NF90IHRvIFdlYktpdDo6
UGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIKKyAgICAgICAgZm9yIGNvbnRleHRJZCB2
YWx1ZXMuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weToKKyAgICAgICAg
KHR5cGVzX3RoYXRfY2Fubm90X2JlX2ZvcndhcmRfZGVjbGFyZWQpOgorICAgICAgICAtIEFkZCBX
ZWJLaXQ6OlBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIHRvIGxpc3QuCisgICAgICAg
ICogVUlQcm9jZXNzL0NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5oOgorICAgICAg
ICAoV2ViS2l0OjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OmNvbnRyb2xzTWFuYWdlckNv
bnRleHRJZCBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1BsYXliYWNrU2Vzc2lv
bk1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvUGxh
eWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lm1tOgorICAgICAgICAoV2ViS2l0OjpQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyUHJveHk6OmNyZWF0ZU1vZGVsQW5kSW50ZXJmYWNlKToKKyAgICAgICAgKFdl
YktpdDo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjplbnN1cmVNb2RlbEFuZEludGVyZmFj
ZSk6CisgICAgICAgIChXZWJLaXQ6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6ZW5zdXJl
TW9kZWwpOgorICAgICAgICAoV2ViS2l0OjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OmVu
c3VyZUludGVyZmFjZSk6CisgICAgICAgIChXZWJLaXQ6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQ
cm94eTo6YWRkQ2xpZW50Rm9yQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OlBsYXliYWNrU2Vz
c2lvbk1hbmFnZXJQcm94eTo6cmVtb3ZlQ2xpZW50Rm9yQ29udGV4dCk6CisgICAgICAgIChXZWJL
aXQ6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6c2V0VXBQbGF5YmFja0NvbnRyb2xzTWFu
YWdlcldpdGhJRCk6CisgICAgICAgIChXZWJLaXQ6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94
eTo6Y2xlYXJQbGF5YmFja0NvbnRyb2xzTWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6OlBsYXli
YWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6Y3VycmVudFRpbWVDaGFuZ2VkKToKKyAgICAgICAgKFdl
YktpdDo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpidWZmZXJlZFRpbWVDaGFuZ2VkKToK
KyAgICAgICAgKFdlYktpdDo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpzZWVrYWJsZVJh
bmdlc1ZlY3RvckNoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpQbGF5YmFja1Nlc3Npb25NYW5h
Z2VyUHJveHk6OmNhblBsYXlGYXN0UmV2ZXJzZUNoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpQ
bGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OmF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hh
bmdlZCk6CisgICAgICAgIChXZWJLaXQ6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6bGVn
aWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpQbGF5
YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OmF1ZGlvTWVkaWFTZWxlY3Rpb25JbmRleENoYW5nZWQp
OgorICAgICAgICAoV2ViS2l0OjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OmxlZ2libGVN
ZWRpYVNlbGVjdGlvbkluZGV4Q2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OlBsYXliYWNrU2Vz
c2lvbk1hbmFnZXJQcm94eTo6ZXh0ZXJuYWxQbGF5YmFja1Byb3BlcnRpZXNDaGFuZ2VkKToKKyAg
ICAgICAgKFdlYktpdDo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Ojp3aXJlbGVzc1ZpZGVv
UGxheWJhY2tEaXNhYmxlZENoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpQbGF5YmFja1Nlc3Np
b25NYW5hZ2VyUHJveHk6Om11dGVkQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OlBsYXliYWNr
U2Vzc2lvbk1hbmFnZXJQcm94eTo6dm9sdW1lQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OlBs
YXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6ZHVyYXRpb25DaGFuZ2VkKToKKyAgICAgICAgKFdl
YktpdDo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpwbGF5YmFja1N0YXJ0ZWRUaW1lQ2hh
bmdlZCk6CisgICAgICAgIChXZWJLaXQ6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6cmF0
ZUNoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6
OnBpY3R1cmVJblBpY3R1cmVTdXBwb3J0ZWRDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6UGxh
eWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpoYW5kbGVDb250cm9sbGVkRWxlbWVudElEUmVzcG9u
c2UgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6
OnBsYXkpOgorICAgICAgICAoV2ViS2l0OjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OnBh
dXNlKToKKyAgICAgICAgKFdlYktpdDo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Ojp0b2dn
bGVQbGF5U3RhdGUpOgorICAgICAgICAoV2ViS2l0OjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJv
eHk6OmJlZ2luU2NydWJiaW5nKToKKyAgICAgICAgKFdlYktpdDo6UGxheWJhY2tTZXNzaW9uTWFu
YWdlclByb3h5OjplbmRTY3J1YmJpbmcpOgorICAgICAgICAoV2ViS2l0OjpQbGF5YmFja1Nlc3Np
b25NYW5hZ2VyUHJveHk6OnNlZWtUb1RpbWUpOgorICAgICAgICAoV2ViS2l0OjpQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyUHJveHk6OmZhc3RTZWVrKToKKyAgICAgICAgKFdlYktpdDo6UGxheWJhY2tT
ZXNzaW9uTWFuYWdlclByb3h5OjpiZWdpblNjYW5uaW5nRm9yd2FyZCk6CisgICAgICAgIChXZWJL
aXQ6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6YmVnaW5TY2FubmluZ0JhY2t3YXJkKToK
KyAgICAgICAgKFdlYktpdDo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjplbmRTY2Fubmlu
Zyk6CisgICAgICAgIChXZWJLaXQ6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6c2VsZWN0
QXVkaW9NZWRpYU9wdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlBsYXliYWNrU2Vzc2lvbk1hbmFn
ZXJQcm94eTo6c2VsZWN0TGVnaWJsZU1lZGlhT3B0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UGxh
eWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Ojp0b2dnbGVQaWN0dXJlSW5QaWN0dXJlKToKKyAgICAg
ICAgKFdlYktpdDo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Ojp0b2dnbGVNdXRlZCk6Cisg
ICAgICAgIChXZWJLaXQ6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6c2V0TXV0ZWQpOgor
ICAgICAgICAoV2ViS2l0OjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OnNldFZvbHVtZSk6
CisgICAgICAgIChXZWJLaXQ6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6c2V0UGxheWlu
Z09uU2Vjb25kU2NyZWVuKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlclByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNj
cmVlbk1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2Ev
VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1tOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1
bGxzY3JlZW5Nb2RlbENvbnRleHQ6OlZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dCk6CisgICAg
ICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6cmVxdWVzdFJvdXRlU2hh
cmluZ1BvbGljeUFuZENvbnRleHRVSUQpOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyUHJveHk6OmNyZWF0ZU1vZGVsQW5kSW50ZXJmYWNlKToKKyAgICAgICAgKFdlYktp
dDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjplbnN1cmVNb2RlbEFuZEludGVyZmFjZSk6
CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6ZW5zdXJlTW9k
ZWwpOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmVuc3Vy
ZUludGVyZmFjZSk6CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94
eTo6ZmluZEludGVyZmFjZSk6CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXJQcm94eTo6YWRkQ2xpZW50Rm9yQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVs
bHNjcmVlbk1hbmFnZXJQcm94eTo6cmVtb3ZlQ2xpZW50Rm9yQ29udGV4dCk6CisgICAgICAgIChX
ZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6c2V0dXBGdWxsc2NyZWVuV2l0aElE
KToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpzZXRIYXNW
aWRlbyk6CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6c2V0
VmlkZW9EaW1lbnNpb25zKToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdl
clByb3h5OjplbnRlckZ1bGxzY3JlZW4pOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyUHJveHk6OmV4aXRGdWxsc2NyZWVuKToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9G
dWxsc2NyZWVuTWFuYWdlclByb3h5OjpleGl0RnVsbHNjcmVlbldpdGhvdXRBbmltYXRpb25Ub01v
ZGUpOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OnNldElu
bGluZVJlY3QpOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6
OnNldEhhc1ZpZGVvQ29udGVudExheWVyKToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlclByb3h5OjpjbGVhbnVwRnVsbHNjcmVlbik6CisgICAgICAgIChXZWJLaXQ6OlZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6cHJlcGFyZWRUb1JldHVyblRvSW5saW5lKToKKyAg
ICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpwcmVwYXJlZFRvRXhp
dEZ1bGxzY3JlZW4pOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJv
eHk6OnJlcXVlc3RGdWxsc2NyZWVuTW9kZSk6CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNj
cmVlbk1hbmFnZXJQcm94eTo6cmVxdWVzdFVwZGF0ZUlubGluZVJlY3QpOgorICAgICAgICAoV2Vi
S2l0OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OnJlcXVlc3RWaWRlb0NvbnRlbnRMYXll
cik6CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6cmV0dXJu
VmlkZW9Db250ZW50TGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyUHJveHk6OmRpZFNldHVwRnVsbHNjcmVlbik6CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVs
bHNjcmVlbk1hbmFnZXJQcm94eTo6d2lsbEV4aXRGdWxsc2NyZWVuKToKKyAgICAgICAgKFdlYktp
dDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpkaWRFeGl0RnVsbHNjcmVlbik6CisgICAg
ICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6ZGlkRW50ZXJGdWxsc2Ny
ZWVuKToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpkaWRD
bGVhbnVwRnVsbHNjcmVlbik6CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXJQcm94eTo6c2V0VmlkZW9MYXllckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxs
c2NyZWVuTWFuYWdlclByb3h5OjpzZXRWaWRlb0xheWVyR3Jhdml0eSk6CisgICAgICAgIChXZWJL
aXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6ZnVsbHNjcmVlbk1vZGVDaGFuZ2VkKToK
KyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpmdWxsc2NyZWVu
TWF5UmV0dXJuVG9JbmxpbmUpOgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAtIEFkZCBQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllci5o
IHRvIHRoZSBwcm9qZWN0LgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvUGxheWJhY2tTZXNz
aW9uQ29udGV4dElkZW50aWZpZXIuaDogQWRkLgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2Ev
UGxheWJhY2tTZXNzaW9uTWFuYWdlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvUGxh
eWJhY2tTZXNzaW9uTWFuYWdlci5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL2Nv
Y29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXIubW06CisgICAgICAgIChXZWJLaXQ6OlBsYXliYWNr
U2Vzc2lvbkludGVyZmFjZUNvbnRleHQ6OlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQp
OgorICAgICAgICAoV2ViS2l0OjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpjcmVhdGVNb2RlbEFu
ZEludGVyZmFjZSk6CisgICAgICAgIChXZWJLaXQ6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmVu
c3VyZU1vZGVsQW5kSW50ZXJmYWNlKToKKyAgICAgICAgKFdlYktpdDo6UGxheWJhY2tTZXNzaW9u
TWFuYWdlcjo6ZW5zdXJlTW9kZWwpOgorICAgICAgICAoV2ViS2l0OjpQbGF5YmFja1Nlc3Npb25N
YW5hZ2VyOjplbnN1cmVJbnRlcmZhY2UpOgorICAgICAgICAoV2ViS2l0OjpQbGF5YmFja1Nlc3Np
b25NYW5hZ2VyOjpyZW1vdmVDb250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6UGxheWJhY2tTZXNz
aW9uTWFuYWdlcjo6YWRkQ2xpZW50Rm9yQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OlBsYXli
YWNrU2Vzc2lvbk1hbmFnZXI6OnJlbW92ZUNsaWVudEZvckNvbnRleHQpOgorICAgICAgICAoV2Vi
S2l0OjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpzZXRVcFBsYXliYWNrQ29udHJvbHNNYW5hZ2Vy
KToKKyAgICAgICAgKFdlYktpdDo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6Y2xlYXJQbGF5YmFj
a0NvbnRyb2xzTWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6OlBsYXliYWNrU2Vzc2lvbk1hbmFn
ZXI6OmNvbnRleHRJZEZvck1lZGlhRWxlbWVudCk6CisgICAgICAgIChXZWJLaXQ6OlBsYXliYWNr
U2Vzc2lvbk1hbmFnZXI6OmR1cmF0aW9uQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OlBsYXli
YWNrU2Vzc2lvbk1hbmFnZXI6OmN1cnJlbnRUaW1lQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6
OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmJ1ZmZlcmVkVGltZUNoYW5nZWQpOgorICAgICAgICAo
V2ViS2l0OjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpwbGF5YmFja1N0YXJ0ZWRUaW1lQ2hhbmdl
ZCk6CisgICAgICAgIChXZWJLaXQ6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OnJhdGVDaGFuZ2Vk
KToKKyAgICAgICAgKFdlYktpdDo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6c2Vla2FibGVSYW5n
ZXNDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6Y2Fu
UGxheUZhc3RSZXZlcnNlQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OlBsYXliYWNrU2Vzc2lv
bk1hbmFnZXI6OmF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZCk6CisgICAgICAgIChX
ZWJLaXQ6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmxlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlv
bnNDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6ZXh0
ZXJuYWxQbGF5YmFja0NoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpQbGF5YmFja1Nlc3Npb25N
YW5hZ2VyOjphdWRpb01lZGlhU2VsZWN0aW9uSW5kZXhDaGFuZ2VkKToKKyAgICAgICAgKFdlYktp
dDo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6bGVnaWJsZU1lZGlhU2VsZWN0aW9uSW5kZXhDaGFu
Z2VkKToKKyAgICAgICAgKFdlYktpdDo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6d2lyZWxlc3NW
aWRlb1BsYXliYWNrRGlzYWJsZWRDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6UGxheWJhY2tT
ZXNzaW9uTWFuYWdlcjo6bXV0ZWRDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6UGxheWJhY2tT
ZXNzaW9uTWFuYWdlcjo6dm9sdW1lQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OlBsYXliYWNr
U2Vzc2lvbk1hbmFnZXI6OmlzUGljdHVyZUluUGljdHVyZVN1cHBvcnRlZENoYW5nZWQpOgorICAg
ICAgICAoV2ViS2l0OjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpwbGF5KToKKyAgICAgICAgKFdl
YktpdDo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6cGF1c2UpOgorICAgICAgICAoV2ViS2l0OjpQ
bGF5YmFja1Nlc3Npb25NYW5hZ2VyOjp0b2dnbGVQbGF5U3RhdGUpOgorICAgICAgICAoV2ViS2l0
OjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpiZWdpblNjcnViYmluZyk6CisgICAgICAgIChXZWJL
aXQ6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmVuZFNjcnViYmluZyk6CisgICAgICAgIChXZWJL
aXQ6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OnNlZWtUb1RpbWUpOgorICAgICAgICAoV2ViS2l0
OjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpmYXN0U2Vlayk6CisgICAgICAgIChXZWJLaXQ6OlBs
YXliYWNrU2Vzc2lvbk1hbmFnZXI6OmJlZ2luU2Nhbm5pbmdGb3J3YXJkKToKKyAgICAgICAgKFdl
YktpdDo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6YmVnaW5TY2FubmluZ0JhY2t3YXJkKToKKyAg
ICAgICAgKFdlYktpdDo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6ZW5kU2Nhbm5pbmcpOgorICAg
ICAgICAoV2ViS2l0OjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpzZWxlY3RBdWRpb01lZGlhT3B0
aW9uKToKKyAgICAgICAgKFdlYktpdDo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6c2VsZWN0TGVn
aWJsZU1lZGlhT3B0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UGxheWJhY2tTZXNzaW9uTWFuYWdl
cjo6aGFuZGxlQ29udHJvbGxlZEVsZW1lbnRJRFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpQ
bGF5YmFja1Nlc3Npb25NYW5hZ2VyOjp0b2dnbGVQaWN0dXJlSW5QaWN0dXJlKToKKyAgICAgICAg
KFdlYktpdDo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6dG9nZ2xlTXV0ZWQpOgorICAgICAgICAo
V2ViS2l0OjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpzZXRNdXRlZCk6CisgICAgICAgIChXZWJL
aXQ6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OnNldFZvbHVtZSk6CisgICAgICAgIChXZWJLaXQ6
OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OnNldFBsYXlpbmdPblNlY29uZFNjcmVlbik6CisgICAg
ICAgIChXZWJLaXQ6Om5leHRDb250ZXh0SWQpOiBEZWxldGUuCisgICAgICAgIC0gUmVwbGFjZSB3
aXRoIFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyOjpnZW5lcmF0ZSgpLgorICAgICAg
ICAqIFdlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5oOgorICAgICAgICAo
V2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0OjpjcmVhdGUpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tZXNzYWdlcy5pbjoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW06Cisg
ICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQ6OlZpZGVvRnVs
bHNjcmVlbkludGVyZmFjZUNvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyOjpjcmVhdGVNb2RlbEFuZEludGVyZmFjZSk6CisgICAgICAgIChXZWJLaXQ6OlZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmVuc3VyZU1vZGVsQW5kSW50ZXJmYWNlKToKKyAgICAgICAg
KFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZW5zdXJlTW9kZWwpOgorICAgICAgICAo
V2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjplbnN1cmVJbnRlcmZhY2UpOgorICAgICAg
ICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpyZW1vdmVDb250ZXh0KToKKyAgICAg
ICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6YWRkQ2xpZW50Rm9yQ29udGV4dCk6
CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnJlbW92ZUNsaWVudEZv
ckNvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjplbnRl
clZpZGVvRnVsbHNjcmVlbkZvclZpZGVvRWxlbWVudCk6CisgICAgICAgIChXZWJLaXQ6OlZpZGVv
RnVsbHNjcmVlbk1hbmFnZXI6OmV4aXRWaWRlb0Z1bGxzY3JlZW5Gb3JWaWRlb0VsZW1lbnQpOgor
ICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpleGl0VmlkZW9GdWxsc2Ny
ZWVuVG9Nb2RlV2l0aG91dEFuaW1hdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNj
cmVlbk1hbmFnZXI6Omhhc1ZpZGVvQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVs
bHNjcmVlbk1hbmFnZXI6OnZpZGVvRGltZW5zaW9uc0NoYW5nZWQpOgorICAgICAgICAoV2ViS2l0
OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpyZXF1ZXN0RnVsbHNjcmVlbk1vZGUpOgorICAgICAg
ICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpmdWxsc2NyZWVuTW9kZUNoYW5nZWQp
OgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpyZXF1ZXN0VXBkYXRl
SW5saW5lUmVjdCk6CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnJl
cXVlc3RWaWRlb0NvbnRlbnRMYXllcik6CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVl
bk1hbmFnZXI6OnJldHVyblZpZGVvQ29udGVudExheWVyKToKKyAgICAgICAgKFdlYktpdDo6Vmlk
ZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZGlkU2V0dXBGdWxsc2NyZWVuKToKKyAgICAgICAgKFdlYktp
dDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6d2lsbEV4aXRGdWxsc2NyZWVuKToKKyAgICAgICAg
KFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZGlkRW50ZXJGdWxsc2NyZWVuKToKKyAg
ICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZGlkRXhpdEZ1bGxzY3JlZW4p
OgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpkaWRDbGVhbnVwRnVs
bHNjcmVlbik6CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnNldFZp
ZGVvTGF5ZXJHcmF2aXR5RW51bSk6CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1h
bmFnZXI6OmZ1bGxzY3JlZW5NYXlSZXR1cm5Ub0lubGluZSk6CisgICAgICAgIChXZWJLaXQ6OlZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnJlcXVlc3RSb3V0ZVNoYXJpbmdQb2xpY3lBbmRDb250ZXh0
VUlEKToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6c2V0VmlkZW9M
YXllckZyYW1lRmVuY2VkKToKKwogMjAyMC0wNi0yMyAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJp
c3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEV4cG9zZSBhbHJlYWR5LWF2YWlsYWJsZSBX
S05hdmlnYXRpb25BY3Rpb24ucmVxdWVzdC5IVFRQQm9keSB0aHJvdWdoIHRoZSBBUEkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkgYi9Tb3VyY2Uv
V2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CmluZGV4IGE1ZmM2Y2QzYmJkZDk4M2Nj
Y2JkOTYxZTQ4YzI5N2U3NDMzMWY3NTAuLjc5NjY0MGRhMThkNzBmN2E0OWI4Njc5NWVlOWU1ZGQ3
OGZmZjM2MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2Fn
ZXMucHkKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQpAQCAt
MjQxLDYgKzI0MSw3IEBAIGRlZiB0eXBlc190aGF0X2Nhbm5vdF9iZV9mb3J3YXJkX2RlY2xhcmVk
KCk6CiAgICAgICAgICdXZWJLaXQ6Ok1ETlNSZWdpc3RlcklkZW50aWZpZXInLAogICAgICAgICAn
V2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyJywKICAgICAgICAgJ1dl
YktpdDo6TWVkaWFSZWNvcmRlcklkZW50aWZpZXInLAorICAgICAgICAnV2ViS2l0OjpQbGF5YmFj
a1Nlc3Npb25Db250ZXh0SWRlbnRpZmllcicsCiAgICAgICAgICdXZWJLaXQ6OlBsdWdpblByb2Nl
c3NUeXBlJywKICAgICAgICAgJ1dlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZp
ZXInLAogICAgICAgICAnV2ViS2l0OjpSZW1vdGVBdWRpb1Nlc3Npb25JZGVudGlmaWVyJywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXliYWNrU2Vzc2lvbk1h
bmFnZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGxheWJhY2tTZXNz
aW9uTWFuYWdlclByb3h5LmgKaW5kZXggYjI3NTY3MzU5ZDM3MGI0ZmJjMjE3OTdlZjhkZWY3OGM1
NWExZDcxYy4uMGJiMDU5MTc5ODVkMjA3OTZmYjFkYzBhMTZkYWYyNmYxNWYyNzYyMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdl
clByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGxheWJhY2tTZXNz
aW9uTWFuYWdlclByb3h5LmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpZiBQTEFURk9STShJT1NfRkFN
SUxZKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUp
KQogCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisjaW5jbHVkZSAiUGxheWJhY2tTZXNz
aW9uQ29udGV4dElkZW50aWZpZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzTGF5ZXIu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL01lZGlhU2VsZWN0aW9uT3B0aW9uLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9QbGF0Zm9ybVZpZXcuaD4KQEAgLTU4LDcgKzU5LDcgQEAgY2xhc3MgUGxheWJhY2tT
ZXNzaW9uTWFuYWdlclByb3h5OwogCiBjbGFzcyBQbGF5YmFja1Nlc3Npb25Nb2RlbENvbnRleHQg
ZmluYWw6IHB1YmxpYyBSZWZDb3VudGVkPFBsYXliYWNrU2Vzc2lvbk1vZGVsQ29udGV4dD4sIHB1
YmxpYyBXZWJDb3JlOjpQbGF5YmFja1Nlc3Npb25Nb2RlbCAgewogcHVibGljOgotICAgIHN0YXRp
YyBSZWY8UGxheWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0PiBjcmVhdGUoUGxheWJhY2tTZXNzaW9u
TWFuYWdlclByb3h5JiBtYW5hZ2VyLCB1aW50NjRfdCBjb250ZXh0SWQpCisgICAgc3RhdGljIFJl
ZjxQbGF5YmFja1Nlc3Npb25Nb2RlbENvbnRleHQ+IGNyZWF0ZShQbGF5YmFja1Nlc3Npb25NYW5h
Z2VyUHJveHkmIG1hbmFnZXIsIFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRl
eHRJZCkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFBsYXliYWNrU2Vzc2lv
bk1vZGVsQ29udGV4dChtYW5hZ2VyLCBjb250ZXh0SWQpKTsKICAgICB9CkBAIC05MSw3ICs5Miw3
IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFZpZGVvRnVsbHNjcmVlbk1v
ZGVsQ29udGV4dDsKIAotICAgIFBsYXliYWNrU2Vzc2lvbk1vZGVsQ29udGV4dChQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyUHJveHkmIG1hbmFnZXIsIHVpbnQ2NF90IGNvbnRleHRJZCkKKyAgICBQbGF5
YmFja1Nlc3Npb25Nb2RlbENvbnRleHQoUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5JiBtYW5h
Z2VyLCBQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQpCiAgICAgICAg
IDogbV9tYW5hZ2VyKCZtYW5hZ2VyKQogICAgICAgICAsIG1fY29udGV4dElkKGNvbnRleHRJZCkK
ICAgICB7CkBAIC0xNDEsNyArMTQyLDcgQEAgcHJpdmF0ZToKICAgICBib29sIGlzUGljdHVyZUlu
UGljdHVyZUFjdGl2ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcGljdHVyZUluUGljdHVyZUFj
dGl2ZTsgfQogCiAgICAgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5KiBtX21hbmFnZXI7Ci0g
ICAgdWludDY0X3QgbV9jb250ZXh0SWQ7CisgICAgUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50
aWZpZXIgbV9jb250ZXh0SWQ7CiAgICAgSGFzaFNldDxXZWJDb3JlOjpQbGF5YmFja1Nlc3Npb25N
b2RlbENsaWVudCo+IG1fY2xpZW50czsKICAgICBkb3VibGUgbV9wbGF5YmFja1N0YXJ0ZWRUaW1l
IHsgMCB9OwogICAgIGJvb2wgbV9wbGF5YmFja1N0YXJ0ZWRUaW1lTmVlZHNVcGRhdGUgeyBmYWxz
ZSB9OwpAQCAtMTg3LDU5ICsxODgsNTkgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFJlY2VpdmVN
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwogCiAgICAgdHlw
ZWRlZiBzdGQ6OnR1cGxlPFJlZlB0cjxQbGF5YmFja1Nlc3Npb25Nb2RlbENvbnRleHQ+LCBSZWZQ
dHI8UGxhdGZvcm1QbGF5YmFja1Nlc3Npb25JbnRlcmZhY2U+PiBNb2RlbEludGVyZmFjZVR1cGxl
OwotICAgIE1vZGVsSW50ZXJmYWNlVHVwbGUgY3JlYXRlTW9kZWxBbmRJbnRlcmZhY2UodWludDY0
X3QgY29udGV4dElkKTsKLSAgICBNb2RlbEludGVyZmFjZVR1cGxlJiBlbnN1cmVNb2RlbEFuZElu
dGVyZmFjZSh1aW50NjRfdCBjb250ZXh0SWQpOwotICAgIFBsYXliYWNrU2Vzc2lvbk1vZGVsQ29u
dGV4dCYgZW5zdXJlTW9kZWwodWludDY0X3QgY29udGV4dElkKTsKLSAgICBQbGF0Zm9ybVBsYXli
YWNrU2Vzc2lvbkludGVyZmFjZSYgZW5zdXJlSW50ZXJmYWNlKHVpbnQ2NF90IGNvbnRleHRJZCk7
Ci0gICAgdm9pZCBhZGRDbGllbnRGb3JDb250ZXh0KHVpbnQ2NF90IGNvbnRleHRJZCk7Ci0gICAg
dm9pZCByZW1vdmVDbGllbnRGb3JDb250ZXh0KHVpbnQ2NF90IGNvbnRleHRJZCk7CisgICAgTW9k
ZWxJbnRlcmZhY2VUdXBsZSBjcmVhdGVNb2RlbEFuZEludGVyZmFjZShQbGF5YmFja1Nlc3Npb25D
b250ZXh0SWRlbnRpZmllcik7CisgICAgTW9kZWxJbnRlcmZhY2VUdXBsZSYgZW5zdXJlTW9kZWxB
bmRJbnRlcmZhY2UoUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIpOworICAgIFBsYXli
YWNrU2Vzc2lvbk1vZGVsQ29udGV4dCYgZW5zdXJlTW9kZWwoUGxheWJhY2tTZXNzaW9uQ29udGV4
dElkZW50aWZpZXIpOworICAgIFBsYXRmb3JtUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlJiBlbnN1
cmVJbnRlcmZhY2UoUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIpOworICAgIHZvaWQg
YWRkQ2xpZW50Rm9yQ29udGV4dChQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllcik7Cisg
ICAgdm9pZCByZW1vdmVDbGllbnRGb3JDb250ZXh0KFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVu
dGlmaWVyKTsKIAotICAgIHVpbnQ2NF90IGNvbnRyb2xzTWFuYWdlckNvbnRleHRJZCgpIGNvbnN0
IHsgcmV0dXJuIG1fY29udHJvbHNNYW5hZ2VyQ29udGV4dElkOyB9CisgICAgUGxheWJhY2tTZXNz
aW9uQ29udGV4dElkZW50aWZpZXIgY29udHJvbHNNYW5hZ2VyQ29udGV4dElkKCkgY29uc3QgeyBy
ZXR1cm4gbV9jb250cm9sc01hbmFnZXJDb250ZXh0SWQ7IH0KIAogICAgIC8vIE1lc3NhZ2VzIGZy
b20gUGxheWJhY2tTZXNzaW9uTWFuYWdlcgotICAgIHZvaWQgc2V0VXBQbGF5YmFja0NvbnRyb2xz
TWFuYWdlcldpdGhJRCh1aW50NjRfdCBjb250ZXh0SWQpOworICAgIHZvaWQgc2V0VXBQbGF5YmFj
a0NvbnRyb2xzTWFuYWdlcldpdGhJRChQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllcik7
CiAgICAgdm9pZCBjbGVhclBsYXliYWNrQ29udHJvbHNNYW5hZ2VyKCk7Ci0gICAgdm9pZCBjdXJy
ZW50VGltZUNoYW5nZWQodWludDY0X3QgY29udGV4dElkLCBkb3VibGUgY3VycmVudFRpbWUsIGRv
dWJsZSBob3N0VGltZSk7Ci0gICAgdm9pZCBidWZmZXJlZFRpbWVDaGFuZ2VkKHVpbnQ2NF90IGNv
bnRleHRJZCwgZG91YmxlIGJ1ZmZlcmVkVGltZSk7Ci0gICAgdm9pZCBzZWVrYWJsZVJhbmdlc1Zl
Y3RvckNoYW5nZWQodWludDY0X3QgY29udGV4dElkLCBWZWN0b3I8c3RkOjpwYWlyPGRvdWJsZSwg
ZG91YmxlPj4gcmFuZ2VzLCBkb3VibGUgbGFzdE1vZGlmaWVkVGltZSwgZG91YmxlIGxpdmVVcGRh
dGVJbnRlcnZhbCk7Ci0gICAgdm9pZCBjYW5QbGF5RmFzdFJldmVyc2VDaGFuZ2VkKHVpbnQ2NF90
IGNvbnRleHRJZCwgYm9vbCB2YWx1ZSk7Ci0gICAgdm9pZCBhdWRpb01lZGlhU2VsZWN0aW9uT3B0
aW9uc0NoYW5nZWQodWludDY0X3QgY29udGV4dElkLCBWZWN0b3I8V2ViQ29yZTo6TWVkaWFTZWxl
Y3Rpb25PcHRpb24+IG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpOwotICAgIHZvaWQg
bGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQodWludDY0X3QgY29udGV4dElkLCBW
ZWN0b3I8V2ViQ29yZTo6TWVkaWFTZWxlY3Rpb25PcHRpb24+IG9wdGlvbnMsIHVpbnQ2NF90IHNl
bGVjdGVkSW5kZXgpOwotICAgIHZvaWQgYXVkaW9NZWRpYVNlbGVjdGlvbkluZGV4Q2hhbmdlZCh1
aW50NjRfdCBjb250ZXh0SWQsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpOwotICAgIHZvaWQgbGVn
aWJsZU1lZGlhU2VsZWN0aW9uSW5kZXhDaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJZCwgdWludDY0
X3Qgc2VsZWN0ZWRJbmRleCk7Ci0gICAgdm9pZCBleHRlcm5hbFBsYXliYWNrUHJvcGVydGllc0No
YW5nZWQodWludDY0X3QgY29udGV4dElkLCBib29sIGVuYWJsZWQsIHVpbnQzMl90IHRhcmdldFR5
cGUsIFN0cmluZyBsb2NhbGl6ZWREZXZpY2VOYW1lKTsKLSAgICB2b2lkIHdpcmVsZXNzVmlkZW9Q
bGF5YmFja0Rpc2FibGVkQ2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wpOwotICAgIHZv
aWQgZHVyYXRpb25DaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJZCwgZG91YmxlIGR1cmF0aW9uKTsK
LSAgICB2b2lkIHBsYXliYWNrU3RhcnRlZFRpbWVDaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJZCwg
ZG91YmxlIHBsYXliYWNrU3RhcnRlZFRpbWUpOwotICAgIHZvaWQgcmF0ZUNoYW5nZWQodWludDY0
X3QgY29udGV4dElkLCBib29sIGlzUGxheWluZywgZG91YmxlIHJhdGUpOwotICAgIHZvaWQgaGFu
ZGxlQ29udHJvbGxlZEVsZW1lbnRJRFJlc3BvbnNlKHVpbnQ2NF90LCBTdHJpbmcpIGNvbnN0Owot
ICAgIHZvaWQgbXV0ZWRDaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vbCBtdXRlZCk7Ci0g
ICAgdm9pZCB2b2x1bWVDaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJZCwgZG91YmxlIHZvbHVtZSk7
Ci0gICAgdm9pZCBwaWN0dXJlSW5QaWN0dXJlU3VwcG9ydGVkQ2hhbmdlZCh1aW50NjRfdCBjb250
ZXh0SWQsIGJvb2wgcGljdHVyZUluUGljdHVyZVN1cHBvcnRlZCk7CisgICAgdm9pZCBjdXJyZW50
VGltZUNoYW5nZWQoUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIsIGRvdWJsZSBjdXJy
ZW50VGltZSwgZG91YmxlIGhvc3RUaW1lKTsKKyAgICB2b2lkIGJ1ZmZlcmVkVGltZUNoYW5nZWQo
UGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIsIGRvdWJsZSBidWZmZXJlZFRpbWUpOwor
ICAgIHZvaWQgc2Vla2FibGVSYW5nZXNWZWN0b3JDaGFuZ2VkKFBsYXliYWNrU2Vzc2lvbkNvbnRl
eHRJZGVudGlmaWVyLCBWZWN0b3I8c3RkOjpwYWlyPGRvdWJsZSwgZG91YmxlPj4gcmFuZ2VzLCBk
b3VibGUgbGFzdE1vZGlmaWVkVGltZSwgZG91YmxlIGxpdmVVcGRhdGVJbnRlcnZhbCk7CisgICAg
dm9pZCBjYW5QbGF5RmFzdFJldmVyc2VDaGFuZ2VkKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVu
dGlmaWVyLCBib29sIHZhbHVlKTsKKyAgICB2b2lkIGF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25z
Q2hhbmdlZChQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciwgVmVjdG9yPFdlYkNvcmU6
Ok1lZGlhU2VsZWN0aW9uT3B0aW9uPiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KTsK
KyAgICB2b2lkIGxlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2VkKFBsYXliYWNrU2Vz
c2lvbkNvbnRleHRJZGVudGlmaWVyLCBWZWN0b3I8V2ViQ29yZTo6TWVkaWFTZWxlY3Rpb25PcHRp
b24+IG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpOworICAgIHZvaWQgYXVkaW9NZWRp
YVNlbGVjdGlvbkluZGV4Q2hhbmdlZChQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciwg
dWludDY0X3Qgc2VsZWN0ZWRJbmRleCk7CisgICAgdm9pZCBsZWdpYmxlTWVkaWFTZWxlY3Rpb25J
bmRleENoYW5nZWQoUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIsIHVpbnQ2NF90IHNl
bGVjdGVkSW5kZXgpOworICAgIHZvaWQgZXh0ZXJuYWxQbGF5YmFja1Byb3BlcnRpZXNDaGFuZ2Vk
KFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyLCBib29sIGVuYWJsZWQsIHVpbnQzMl90
IHRhcmdldFR5cGUsIFN0cmluZyBsb2NhbGl6ZWREZXZpY2VOYW1lKTsKKyAgICB2b2lkIHdpcmVs
ZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkQ2hhbmdlZChQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRl
bnRpZmllciwgYm9vbCk7CisgICAgdm9pZCBkdXJhdGlvbkNoYW5nZWQoUGxheWJhY2tTZXNzaW9u
Q29udGV4dElkZW50aWZpZXIsIGRvdWJsZSBkdXJhdGlvbik7CisgICAgdm9pZCBwbGF5YmFja1N0
YXJ0ZWRUaW1lQ2hhbmdlZChQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciwgZG91Ymxl
IHBsYXliYWNrU3RhcnRlZFRpbWUpOworICAgIHZvaWQgcmF0ZUNoYW5nZWQoUGxheWJhY2tTZXNz
aW9uQ29udGV4dElkZW50aWZpZXIsIGJvb2wgaXNQbGF5aW5nLCBkb3VibGUgcmF0ZSk7CisgICAg
dm9pZCBoYW5kbGVDb250cm9sbGVkRWxlbWVudElEUmVzcG9uc2UoUGxheWJhY2tTZXNzaW9uQ29u
dGV4dElkZW50aWZpZXIsIFN0cmluZykgY29uc3Q7CisgICAgdm9pZCBtdXRlZENoYW5nZWQoUGxh
eWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIsIGJvb2wgbXV0ZWQpOworICAgIHZvaWQgdm9s
dW1lQ2hhbmdlZChQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciwgZG91YmxlIHZvbHVt
ZSk7CisgICAgdm9pZCBwaWN0dXJlSW5QaWN0dXJlU3VwcG9ydGVkQ2hhbmdlZChQbGF5YmFja1Nl
c3Npb25Db250ZXh0SWRlbnRpZmllciwgYm9vbCBwaWN0dXJlSW5QaWN0dXJlU3VwcG9ydGVkKTsK
IAogICAgIC8vIE1lc3NhZ2VzIHRvIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXIKLSAgICB2b2lkIHBs
YXkodWludDY0X3QgY29udGV4dElkKTsKLSAgICB2b2lkIHBhdXNlKHVpbnQ2NF90IGNvbnRleHRJ
ZCk7Ci0gICAgdm9pZCB0b2dnbGVQbGF5U3RhdGUodWludDY0X3QgY29udGV4dElkKTsKLSAgICB2
b2lkIGJlZ2luU2NydWJiaW5nKHVpbnQ2NF90IGNvbnRleHRJZCk7Ci0gICAgdm9pZCBlbmRTY3J1
YmJpbmcodWludDY0X3QgY29udGV4dElkKTsKLSAgICB2b2lkIHNlZWtUb1RpbWUodWludDY0X3Qg
Y29udGV4dElkLCBkb3VibGUgdGltZSwgZG91YmxlIGJlZm9yZSwgZG91YmxlIGFmdGVyKTsKLSAg
ICB2b2lkIGZhc3RTZWVrKHVpbnQ2NF90IGNvbnRleHRJZCwgZG91YmxlIHRpbWUpOwotICAgIHZv
aWQgYmVnaW5TY2FubmluZ0ZvcndhcmQodWludDY0X3QgY29udGV4dElkKTsKLSAgICB2b2lkIGJl
Z2luU2Nhbm5pbmdCYWNrd2FyZCh1aW50NjRfdCBjb250ZXh0SWQpOwotICAgIHZvaWQgZW5kU2Nh
bm5pbmcodWludDY0X3QgY29udGV4dElkKTsKLSAgICB2b2lkIHNlbGVjdEF1ZGlvTWVkaWFPcHRp
b24odWludDY0X3QgY29udGV4dElkLCB1aW50NjRfdCBpbmRleCk7Ci0gICAgdm9pZCBzZWxlY3RM
ZWdpYmxlTWVkaWFPcHRpb24odWludDY0X3QgY29udGV4dElkLCB1aW50NjRfdCBpbmRleCk7Ci0g
ICAgdm9pZCB0b2dnbGVQaWN0dXJlSW5QaWN0dXJlKHVpbnQ2NF90IGNvbnRleHRJZCk7Ci0gICAg
dm9pZCB0b2dnbGVNdXRlZCh1aW50NjRfdCBjb250ZXh0SWQpOwotICAgIHZvaWQgc2V0TXV0ZWQo
dWludDY0X3QgY29udGV4dElkLCBib29sKTsKLSAgICB2b2lkIHNldFZvbHVtZSh1aW50NjRfdCBj
b250ZXh0SWQsIGRvdWJsZSk7Ci0gICAgdm9pZCBzZXRQbGF5aW5nT25TZWNvbmRTY3JlZW4odWlu
dDY0X3QgY29udGV4dElkLCBib29sKTsKKyAgICB2b2lkIHBsYXkoUGxheWJhY2tTZXNzaW9uQ29u
dGV4dElkZW50aWZpZXIpOworICAgIHZvaWQgcGF1c2UoUGxheWJhY2tTZXNzaW9uQ29udGV4dElk
ZW50aWZpZXIpOworICAgIHZvaWQgdG9nZ2xlUGxheVN0YXRlKFBsYXliYWNrU2Vzc2lvbkNvbnRl
eHRJZGVudGlmaWVyKTsKKyAgICB2b2lkIGJlZ2luU2NydWJiaW5nKFBsYXliYWNrU2Vzc2lvbkNv
bnRleHRJZGVudGlmaWVyKTsKKyAgICB2b2lkIGVuZFNjcnViYmluZyhQbGF5YmFja1Nlc3Npb25D
b250ZXh0SWRlbnRpZmllcik7CisgICAgdm9pZCBzZWVrVG9UaW1lKFBsYXliYWNrU2Vzc2lvbkNv
bnRleHRJZGVudGlmaWVyLCBkb3VibGUgdGltZSwgZG91YmxlIGJlZm9yZSwgZG91YmxlIGFmdGVy
KTsKKyAgICB2b2lkIGZhc3RTZWVrKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyLCBk
b3VibGUgdGltZSk7CisgICAgdm9pZCBiZWdpblNjYW5uaW5nRm9yd2FyZChQbGF5YmFja1Nlc3Np
b25Db250ZXh0SWRlbnRpZmllcik7CisgICAgdm9pZCBiZWdpblNjYW5uaW5nQmFja3dhcmQoUGxh
eWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIpOworICAgIHZvaWQgZW5kU2Nhbm5pbmcoUGxh
eWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIpOworICAgIHZvaWQgc2VsZWN0QXVkaW9NZWRp
YU9wdGlvbihQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciwgdWludDY0X3QgaW5kZXgp
OworICAgIHZvaWQgc2VsZWN0TGVnaWJsZU1lZGlhT3B0aW9uKFBsYXliYWNrU2Vzc2lvbkNvbnRl
eHRJZGVudGlmaWVyLCB1aW50NjRfdCBpbmRleCk7CisgICAgdm9pZCB0b2dnbGVQaWN0dXJlSW5Q
aWN0dXJlKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyKTsKKyAgICB2b2lkIHRvZ2ds
ZU11dGVkKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyKTsKKyAgICB2b2lkIHNldE11
dGVkKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyLCBib29sKTsKKyAgICB2b2lkIHNl
dFZvbHVtZShQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciwgZG91YmxlKTsKKyAgICB2
b2lkIHNldFBsYXlpbmdPblNlY29uZFNjcmVlbihQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRp
ZmllciwgYm9vbCk7CiAKICAgICBXZWJQYWdlUHJveHkqIG1fcGFnZTsKLSAgICBIYXNoTWFwPHVp
bnQ2NF90LCBNb2RlbEludGVyZmFjZVR1cGxlPiBtX2NvbnRleHRNYXA7Ci0gICAgdWludDY0X3Qg
bV9jb250cm9sc01hbmFnZXJDb250ZXh0SWQgeyAwIH07Ci0gICAgSGFzaENvdW50ZWRTZXQ8dWlu
dDY0X3Q+IG1fY2xpZW50Q291bnRzOworICAgIEhhc2hNYXA8UGxheWJhY2tTZXNzaW9uQ29udGV4
dElkZW50aWZpZXIsIE1vZGVsSW50ZXJmYWNlVHVwbGU+IG1fY29udGV4dE1hcDsKKyAgICBQbGF5
YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciBtX2NvbnRyb2xzTWFuYWdlckNvbnRleHRJZDsK
KyAgICBIYXNoQ291bnRlZFNldDxQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllcj4gbV9j
bGllbnRDb3VudHM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5t
ZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXliYWNrU2Vzc2lv
bk1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgppbmRleCBjNThkMjBlMWIyYjkwNTg5NTI5MjJiZTk1
ZDhhYjU4MDk3YzE5ZGRjLi5kNzE1NjZiMDQ1M2RmMmQ2NWI5MjZkMjU1OGJlNWE3NTA2MzE4MTk1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF5YmFja1Nlc3Np
b25NYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCkBAIC0yMiwyNSAr
MjIsMjUgQEAKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpIHx8IChQTEFURk9STShNQUMpICYm
IEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCiBtZXNzYWdlcyAtPiBQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyUHJveHkgewotICAgIEN1cnJlbnRUaW1lQ2hhbmdlZCh1aW50NjRfdCBjb250
ZXh0SWQsIGRvdWJsZSBjdXJyZW50VGltZSwgZG91YmxlIGhvc3RUaW1lKQotICAgIEJ1ZmZlcmVk
VGltZUNoYW5nZWQodWludDY0X3QgY29udGV4dElkLCBkb3VibGUgYnVmZmVyZWRUaW1lKQotICAg
IFNlZWthYmxlUmFuZ2VzVmVjdG9yQ2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIFZlY3Rvcjxz
dGQ6OnBhaXI8ZG91YmxlLCBkb3VibGU+PiByYW5nZXMsIGRvdWJsZSBsYXN0TW9kaWZpZWRUaW1l
LCBkb3VibGUgbGl2ZVVwZGF0ZUludGVydmFsKQotICAgIENhblBsYXlGYXN0UmV2ZXJzZUNoYW5n
ZWQodWludDY0X3QgY29udGV4dElkLCBib29sIHZhbHVlKQotICAgIEF1ZGlvTWVkaWFTZWxlY3Rp
b25PcHRpb25zQ2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIFZlY3RvcjxXZWJDb3JlOjpNZWRp
YVNlbGVjdGlvbk9wdGlvbj4gb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkKLSAgICBM
ZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIFZl
Y3RvcjxXZWJDb3JlOjpNZWRpYVNlbGVjdGlvbk9wdGlvbj4gb3B0aW9ucywgdWludDY0X3Qgc2Vs
ZWN0ZWRJbmRleCkKLSAgICBBdWRpb01lZGlhU2VsZWN0aW9uSW5kZXhDaGFuZ2VkKHVpbnQ2NF90
IGNvbnRleHRJZCwgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkKLSAgICBMZWdpYmxlTWVkaWFTZWxl
Y3Rpb25JbmRleENoYW5nZWQodWludDY0X3QgY29udGV4dElkLCB1aW50NjRfdCBzZWxlY3RlZElu
ZGV4KQotICAgIEV4dGVybmFsUGxheWJhY2tQcm9wZXJ0aWVzQ2hhbmdlZCh1aW50NjRfdCBjb250
ZXh0SWQsIGJvb2wgZW5hYmxlZCwgdWludDMyX3QgdGFyZ2V0VHlwZSwgU3RyaW5nIGxvY2FsaXpl
ZERldmljZU5hbWUpCi0gICAgV2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWRDaGFuZ2VkKHVp
bnQ2NF90IGNvbnRleHRJZCwgYm9vbCBkaXNhYmxlZCkKLSAgICBEdXJhdGlvbkNoYW5nZWQodWlu
dDY0X3QgY29udGV4dElkLCBkb3VibGUgZHVyYXRpb24pCi0gICAgUGxheWJhY2tTdGFydGVkVGlt
ZUNoYW5nZWQodWludDY0X3QgY29udGV4dElkLCBkb3VibGUgcGxheWJhY2tTdGFydGVkVGltZSkK
LSAgICBSYXRlQ2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgaXNQbGF5aW5nLCBkb3Vi
bGUgcmF0ZSkKLSAgICBNdXRlZENoYW5nZWQodWludDY0X3QgY29udGV4dElkLCBib29sIG11dGVk
KTsKLSAgICBWb2x1bWVDaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJZCwgZG91YmxlIHZvbHVtZSk7
Ci0gICAgUGljdHVyZUluUGljdHVyZVN1cHBvcnRlZENoYW5nZWQodWludDY0X3QgY29udGV4dElE
LCBib29sIHBpY3R1cmVJblBpY3R1cmVTdXBwb3J0ZWQpCi0gICAgU2V0VXBQbGF5YmFja0NvbnRy
b2xzTWFuYWdlcldpdGhJRCh1aW50NjRfdCBjb250ZXh0SWQpCisgICAgQ3VycmVudFRpbWVDaGFu
Z2VkKFdlYktpdDo6UGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4dElkLCBk
b3VibGUgY3VycmVudFRpbWUsIGRvdWJsZSBob3N0VGltZSkKKyAgICBCdWZmZXJlZFRpbWVDaGFu
Z2VkKFdlYktpdDo6UGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4dElkLCBk
b3VibGUgYnVmZmVyZWRUaW1lKQorICAgIFNlZWthYmxlUmFuZ2VzVmVjdG9yQ2hhbmdlZChXZWJL
aXQ6OlBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCwgVmVjdG9yPHN0
ZDo6cGFpcjxkb3VibGUsIGRvdWJsZT4+IHJhbmdlcywgZG91YmxlIGxhc3RNb2RpZmllZFRpbWUs
IGRvdWJsZSBsaXZlVXBkYXRlSW50ZXJ2YWwpCisgICAgQ2FuUGxheUZhc3RSZXZlcnNlQ2hhbmdl
ZChXZWJLaXQ6OlBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCwgYm9v
bCB2YWx1ZSkKKyAgICBBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQoV2ViS2l0OjpQ
bGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQsIFZlY3RvcjxXZWJDb3Jl
OjpNZWRpYVNlbGVjdGlvbk9wdGlvbj4gb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkK
KyAgICBMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZChXZWJLaXQ6OlBsYXliYWNr
U2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCwgVmVjdG9yPFdlYkNvcmU6Ok1lZGlh
U2VsZWN0aW9uT3B0aW9uPiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KQorICAgIEF1
ZGlvTWVkaWFTZWxlY3Rpb25JbmRleENoYW5nZWQoV2ViS2l0OjpQbGF5YmFja1Nlc3Npb25Db250
ZXh0SWRlbnRpZmllciBjb250ZXh0SWQsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpCisgICAgTGVn
aWJsZU1lZGlhU2VsZWN0aW9uSW5kZXhDaGFuZ2VkKFdlYktpdDo6UGxheWJhY2tTZXNzaW9uQ29u
dGV4dElkZW50aWZpZXIgY29udGV4dElkLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KQorICAgIEV4
dGVybmFsUGxheWJhY2tQcm9wZXJ0aWVzQ2hhbmdlZChXZWJLaXQ6OlBsYXliYWNrU2Vzc2lvbkNv
bnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCwgYm9vbCBlbmFibGVkLCB1aW50MzJfdCB0YXJnZXRU
eXBlLCBTdHJpbmcgbG9jYWxpemVkRGV2aWNlTmFtZSkKKyAgICBXaXJlbGVzc1ZpZGVvUGxheWJh
Y2tEaXNhYmxlZENoYW5nZWQoV2ViS2l0OjpQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmll
ciBjb250ZXh0SWQsIGJvb2wgZGlzYWJsZWQpCisgICAgRHVyYXRpb25DaGFuZ2VkKFdlYktpdDo6
UGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4dElkLCBkb3VibGUgZHVyYXRp
b24pCisgICAgUGxheWJhY2tTdGFydGVkVGltZUNoYW5nZWQoV2ViS2l0OjpQbGF5YmFja1Nlc3Np
b25Db250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQsIGRvdWJsZSBwbGF5YmFja1N0YXJ0ZWRUaW1l
KQorICAgIFJhdGVDaGFuZ2VkKFdlYktpdDo6UGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZp
ZXIgY29udGV4dElkLCBib29sIGlzUGxheWluZywgZG91YmxlIHJhdGUpCisgICAgTXV0ZWRDaGFu
Z2VkKFdlYktpdDo6UGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4dElkLCBi
b29sIG11dGVkKTsKKyAgICBWb2x1bWVDaGFuZ2VkKFdlYktpdDo6UGxheWJhY2tTZXNzaW9uQ29u
dGV4dElkZW50aWZpZXIgY29udGV4dElkLCBkb3VibGUgdm9sdW1lKTsKKyAgICBQaWN0dXJlSW5Q
aWN0dXJlU3VwcG9ydGVkQ2hhbmdlZChXZWJLaXQ6OlBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVu
dGlmaWVyIGNvbnRleHRJZCwgYm9vbCBwaWN0dXJlSW5QaWN0dXJlU3VwcG9ydGVkKQorICAgIFNl
dFVwUGxheWJhY2tDb250cm9sc01hbmFnZXJXaXRoSUQoV2ViS2l0OjpQbGF5YmFja1Nlc3Npb25D
b250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQpCiAgICAgQ2xlYXJQbGF5YmFja0NvbnRyb2xzTWFu
YWdlcigpCiAKLSAgICBIYW5kbGVDb250cm9sbGVkRWxlbWVudElEUmVzcG9uc2UodWludDY0X3Qg
Y29udGV4dElkLCBTdHJpbmcgaWQpCisgICAgSGFuZGxlQ29udHJvbGxlZEVsZW1lbnRJRFJlc3Bv
bnNlKFdlYktpdDo6UGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4dElkLCBT
dHJpbmcgaWQpCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5tbQppbmRleCBkYzExNTlj
ZDM3OGU2YzFhZGY5NDEwNWZkMTJjNTIwNjVlMWExZWNhLi5hNTkyYmU2ZTIzZDk3NzAyMThkMDcz
ZGU3Y2JlZDUwOTk0Y2MwMTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lm1tCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzI0LDcg
KzMyNCw3IEBAIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjppbnZhbGlkYXRlKCkK
ICAgICAgICAgaW50ZXJmYWNlLT5pbnZhbGlkYXRlKCk7CiB9CiAKLVBsYXliYWNrU2Vzc2lvbk1h
bmFnZXJQcm94eTo6TW9kZWxJbnRlcmZhY2VUdXBsZSBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJv
eHk6OmNyZWF0ZU1vZGVsQW5kSW50ZXJmYWNlKHVpbnQ2NF90IGNvbnRleHRJZCkKK1BsYXliYWNr
U2Vzc2lvbk1hbmFnZXJQcm94eTo6TW9kZWxJbnRlcmZhY2VUdXBsZSBQbGF5YmFja1Nlc3Npb25N
YW5hZ2VyUHJveHk6OmNyZWF0ZU1vZGVsQW5kSW50ZXJmYWNlKFBsYXliYWNrU2Vzc2lvbkNvbnRl
eHRJZGVudGlmaWVyIGNvbnRleHRJZCkKIHsKICAgICBSZWY8UGxheWJhY2tTZXNzaW9uTW9kZWxD
b250ZXh0PiBtb2RlbCA9IFBsYXliYWNrU2Vzc2lvbk1vZGVsQ29udGV4dDo6Y3JlYXRlKCp0aGlz
LCBjb250ZXh0SWQpOwogICAgIFJlZjxQbGF0Zm9ybVBsYXliYWNrU2Vzc2lvbkludGVyZmFjZT4g
aW50ZXJmYWNlID0gUGxhdGZvcm1QbGF5YmFja1Nlc3Npb25JbnRlcmZhY2U6OmNyZWF0ZShtb2Rl
bCk7CkBAIC0zMzIsNyArMzMyLDcgQEAgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpNb2Rl
bEludGVyZmFjZVR1cGxlIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6Y3IKICAgICByZXR1
cm4gc3RkOjptYWtlX3R1cGxlKFdURk1vdmUobW9kZWwpLCBXVEZNb3ZlKGludGVyZmFjZSkpOwog
fQogCi1QbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6Ok1vZGVsSW50ZXJmYWNlVHVwbGUmIFBs
YXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6ZW5zdXJlTW9kZWxBbmRJbnRlcmZhY2UodWludDY0
X3QgY29udGV4dElkKQorUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpNb2RlbEludGVyZmFj
ZVR1cGxlJiBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OmVuc3VyZU1vZGVsQW5kSW50ZXJm
YWNlKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCkKIHsKICAgICBh
dXRvIGFkZFJlc3VsdCA9IG1fY29udGV4dE1hcC5hZGQoY29udGV4dElkLCBNb2RlbEludGVyZmFj
ZVR1cGxlKCkpOwogICAgIGlmIChhZGRSZXN1bHQuaXNOZXdFbnRyeSkKQEAgLTM0MCwyMiArMzQw
LDIyIEBAIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6TW9kZWxJbnRlcmZhY2VUdXBsZSYg
UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjplCiAgICAgcmV0dXJuIGFkZFJlc3VsdC5pdGVy
YXRvci0+dmFsdWU7CiB9CiAKLVBsYXliYWNrU2Vzc2lvbk1vZGVsQ29udGV4dCYgUGxheWJhY2tT
ZXNzaW9uTWFuYWdlclByb3h5OjplbnN1cmVNb2RlbCh1aW50NjRfdCBjb250ZXh0SWQpCitQbGF5
YmFja1Nlc3Npb25Nb2RlbENvbnRleHQmIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6ZW5z
dXJlTW9kZWwoUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4dElkKQogewog
ICAgIHJldHVybiAqc3RkOjpnZXQ8MD4oZW5zdXJlTW9kZWxBbmRJbnRlcmZhY2UoY29udGV4dElk
KSk7CiB9CiAKLVBsYXRmb3JtUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlJiBQbGF5YmFja1Nlc3Np
b25NYW5hZ2VyUHJveHk6OmVuc3VyZUludGVyZmFjZSh1aW50NjRfdCBjb250ZXh0SWQpCitQbGF0
Zm9ybVBsYXliYWNrU2Vzc2lvbkludGVyZmFjZSYgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5
OjplbnN1cmVJbnRlcmZhY2UoUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4
dElkKQogewogICAgIHJldHVybiAqc3RkOjpnZXQ8MT4oZW5zdXJlTW9kZWxBbmRJbnRlcmZhY2Uo
Y29udGV4dElkKSk7CiB9CiAKLXZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjphZGRD
bGllbnRGb3JDb250ZXh0KHVpbnQ2NF90IGNvbnRleHRJZCkKK3ZvaWQgUGxheWJhY2tTZXNzaW9u
TWFuYWdlclByb3h5OjphZGRDbGllbnRGb3JDb250ZXh0KFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJ
ZGVudGlmaWVyIGNvbnRleHRJZCkKIHsKICAgICBtX2NsaWVudENvdW50cy5hZGQoY29udGV4dElk
KTsKIH0KIAotdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OnJlbW92ZUNsaWVudEZv
ckNvbnRleHQodWludDY0X3QgY29udGV4dElkKQordm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
UHJveHk6OnJlbW92ZUNsaWVudEZvckNvbnRleHQoUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50
aWZpZXIgY29udGV4dElkKQogewogICAgIGlmICghbV9jbGllbnRDb3VudHMucmVtb3ZlKGNvbnRl
eHRJZCkpCiAgICAgICAgIHJldHVybjsKQEAgLTM2Niw3ICszNjYsNyBAQCB2b2lkIFBsYXliYWNr
U2Vzc2lvbk1hbmFnZXJQcm94eTo6cmVtb3ZlQ2xpZW50Rm9yQ29udGV4dCh1aW50NjRfdCBjb250
ZXh0SWQpCiAKICNwcmFnbWEgbWFyayBNZXNzYWdlcyBmcm9tIFBsYXliYWNrU2Vzc2lvbk1hbmFn
ZXIKIAotdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OnNldFVwUGxheWJhY2tDb250
cm9sc01hbmFnZXJXaXRoSUQodWludDY0X3QgY29udGV4dElkKQordm9pZCBQbGF5YmFja1Nlc3Np
b25NYW5hZ2VyUHJveHk6OnNldFVwUGxheWJhY2tDb250cm9sc01hbmFnZXJXaXRoSUQoUGxheWJh
Y2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4dElkKQogewogICAgIE1FU1NBR0VfQ0hF
Q0tfQ09OVEVYVElEKGNvbnRleHRJZCk7CiAgICAgaWYgKG1fY29udHJvbHNNYW5hZ2VyQ29udGV4
dElkID09IGNvbnRleHRJZCkKQEAgLTM4OCwyMyArMzg4LDIzIEBAIHZvaWQgUGxheWJhY2tTZXNz
aW9uTWFuYWdlclByb3h5OjpjbGVhclBsYXliYWNrQ29udHJvbHNNYW5hZ2VyKCkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgcmVtb3ZlQ2xpZW50Rm9yQ29udGV4dChtX2NvbnRyb2xzTWFuYWdlckNv
bnRleHRJZCk7Ci0gICAgbV9jb250cm9sc01hbmFnZXJDb250ZXh0SWQgPSAwOworICAgIG1fY29u
dHJvbHNNYW5hZ2VyQ29udGV4dElkID0geyB9OwogICAgIG1fcGFnZS0+dmlkZW9Db250cm9sc01h
bmFnZXJEaWRDaGFuZ2UoKTsKIH0KIAotdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6
OmN1cnJlbnRUaW1lQ2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIGRvdWJsZSBjdXJyZW50VGlt
ZSwgZG91YmxlIGhvc3RUaW1lKQordm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OmN1
cnJlbnRUaW1lQ2hhbmdlZChQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciBjb250ZXh0
SWQsIGRvdWJsZSBjdXJyZW50VGltZSwgZG91YmxlIGhvc3RUaW1lKQogewogICAgIE1FU1NBR0Vf
Q0hFQ0tfQ09OVEVYVElEKGNvbnRleHRJZCk7CiAgICAgZW5zdXJlTW9kZWwoY29udGV4dElkKS5j
dXJyZW50VGltZUNoYW5nZWQoY3VycmVudFRpbWUpOwogfQogCi12b2lkIFBsYXliYWNrU2Vzc2lv
bk1hbmFnZXJQcm94eTo6YnVmZmVyZWRUaW1lQ2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIGRv
dWJsZSBidWZmZXJlZFRpbWUpCit2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6YnVm
ZmVyZWRUaW1lQ2hhbmdlZChQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciBjb250ZXh0
SWQsIGRvdWJsZSBidWZmZXJlZFRpbWUpCiB7CiAgICAgTUVTU0FHRV9DSEVDS19DT05URVhUSUQo
Y29udGV4dElkKTsKICAgICBlbnN1cmVNb2RlbChjb250ZXh0SWQpLmJ1ZmZlcmVkVGltZUNoYW5n
ZWQoYnVmZmVyZWRUaW1lKTsKIH0KIAotdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6
OnNlZWthYmxlUmFuZ2VzVmVjdG9yQ2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIFZlY3Rvcjxz
dGQ6OnBhaXI8ZG91YmxlLCBkb3VibGU+PiByYW5nZXMsIGRvdWJsZSBsYXN0TW9kaWZpZWRUaW1l
LCBkb3VibGUgbGl2ZVVwZGF0ZUludGVydmFsKQordm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
UHJveHk6OnNlZWthYmxlUmFuZ2VzVmVjdG9yQ2hhbmdlZChQbGF5YmFja1Nlc3Npb25Db250ZXh0
SWRlbnRpZmllciBjb250ZXh0SWQsIFZlY3RvcjxzdGQ6OnBhaXI8ZG91YmxlLCBkb3VibGU+PiBy
YW5nZXMsIGRvdWJsZSBsYXN0TW9kaWZpZWRUaW1lLCBkb3VibGUgbGl2ZVVwZGF0ZUludGVydmFs
KQogewogICAgIE1FU1NBR0VfQ0hFQ0tfQ09OVEVYVElEKGNvbnRleHRJZCk7CiAgICAgUmVmPFRp
bWVSYW5nZXM+IHRpbWVSYW5nZXMgPSBUaW1lUmFuZ2VzOjpjcmVhdGUoKTsKQEAgLTQxOCwzNyAr
NDE4LDM3IEBAIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpzZWVrYWJsZVJhbmdl
c1ZlY3RvckNoYW5nZWQodWludDY0X3QgY29udGV4dElkCiAgICAgZW5zdXJlTW9kZWwoY29udGV4
dElkKS5zZWVrYWJsZVJhbmdlc0NoYW5nZWQodGltZVJhbmdlcywgbGFzdE1vZGlmaWVkVGltZSwg
bGl2ZVVwZGF0ZUludGVydmFsKTsKIH0KIAotdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJv
eHk6OmNhblBsYXlGYXN0UmV2ZXJzZUNoYW5nZWQodWludDY0X3QgY29udGV4dElkLCBib29sIHZh
bHVlKQordm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OmNhblBsYXlGYXN0UmV2ZXJz
ZUNoYW5nZWQoUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4dElkLCBib29s
IHZhbHVlKQogewogICAgIE1FU1NBR0VfQ0hFQ0tfQ09OVEVYVElEKGNvbnRleHRJZCk7CiAgICAg
ZW5zdXJlTW9kZWwoY29udGV4dElkKS5jYW5QbGF5RmFzdFJldmVyc2VDaGFuZ2VkKHZhbHVlKTsK
IH0KIAotdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OmF1ZGlvTWVkaWFTZWxlY3Rp
b25PcHRpb25zQ2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIFZlY3RvcjxNZWRpYVNlbGVjdGlv
bk9wdGlvbj4gb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkKK3ZvaWQgUGxheWJhY2tT
ZXNzaW9uTWFuYWdlclByb3h5OjphdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQoUGxh
eWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4dElkLCBWZWN0b3I8TWVkaWFTZWxl
Y3Rpb25PcHRpb24+IG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpCiB7CiAgICAgTUVT
U0FHRV9DSEVDS19DT05URVhUSUQoY29udGV4dElkKTsKICAgICBlbnN1cmVNb2RlbChjb250ZXh0
SWQpLmF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZChvcHRpb25zLCBzZWxlY3RlZElu
ZGV4KTsKIH0KIAotdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OmxlZ2libGVNZWRp
YVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJZCwgVmVjdG9yPE1lZGlh
U2VsZWN0aW9uT3B0aW9uPiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KQordm9pZCBQ
bGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OmxlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnND
aGFuZ2VkKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCwgVmVjdG9y
PE1lZGlhU2VsZWN0aW9uT3B0aW9uPiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KQog
ewogICAgIE1FU1NBR0VfQ0hFQ0tfQ09OVEVYVElEKGNvbnRleHRJZCk7CiAgICAgZW5zdXJlTW9k
ZWwoY29udGV4dElkKS5sZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZChvcHRpb25z
LCBzZWxlY3RlZEluZGV4KTsKIH0KIAotdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6
OmF1ZGlvTWVkaWFTZWxlY3Rpb25JbmRleENoYW5nZWQodWludDY0X3QgY29udGV4dElkLCB1aW50
NjRfdCBzZWxlY3RlZEluZGV4KQordm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OmF1
ZGlvTWVkaWFTZWxlY3Rpb25JbmRleENoYW5nZWQoUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50
aWZpZXIgY29udGV4dElkLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KQogewogICAgIE1FU1NBR0Vf
Q0hFQ0tfQ09OVEVYVElEKGNvbnRleHRJZCk7CiAgICAgZW5zdXJlTW9kZWwoY29udGV4dElkKS5h
dWRpb01lZGlhU2VsZWN0aW9uSW5kZXhDaGFuZ2VkKHNlbGVjdGVkSW5kZXgpOwogfQogCi12b2lk
IFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6bGVnaWJsZU1lZGlhU2VsZWN0aW9uSW5kZXhD
aGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJZCwgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkKK3ZvaWQg
UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpsZWdpYmxlTWVkaWFTZWxlY3Rpb25JbmRleENo
YW5nZWQoUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4dElkLCB1aW50NjRf
dCBzZWxlY3RlZEluZGV4KQogewogICAgIE1FU1NBR0VfQ0hFQ0tfQ09OVEVYVElEKGNvbnRleHRJ
ZCk7CiAgICAgZW5zdXJlTW9kZWwoY29udGV4dElkKS5sZWdpYmxlTWVkaWFTZWxlY3Rpb25JbmRl
eENoYW5nZWQoc2VsZWN0ZWRJbmRleCk7CiB9CiAKLXZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdl
clByb3h5OjpleHRlcm5hbFBsYXliYWNrUHJvcGVydGllc0NoYW5nZWQodWludDY0X3QgY29udGV4
dElkLCBib29sIGVuYWJsZWQsIHVpbnQzMl90IHRhcmdldFR5cGUsIFN0cmluZyBsb2NhbGl6ZWRE
ZXZpY2VOYW1lKQordm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OmV4dGVybmFsUGxh
eWJhY2tQcm9wZXJ0aWVzQ2hhbmdlZChQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciBj
b250ZXh0SWQsIGJvb2wgZW5hYmxlZCwgdWludDMyX3QgdGFyZ2V0VHlwZSwgU3RyaW5nIGxvY2Fs
aXplZERldmljZU5hbWUpCiB7CiAgICAgTUVTU0FHRV9DSEVDS19DT05URVhUSUQoY29udGV4dElk
KTsKICAgICBQbGF5YmFja1Nlc3Npb25Nb2RlbDo6RXh0ZXJuYWxQbGF5YmFja1RhcmdldFR5cGUg
dHlwZSA9IHN0YXRpY19jYXN0PFBsYXliYWNrU2Vzc2lvbk1vZGVsOjpFeHRlcm5hbFBsYXliYWNr
VGFyZ2V0VHlwZT4odGFyZ2V0VHlwZSk7CkBAIC00NTcsNDkgKzQ1Nyw0OSBAQCB2b2lkIFBsYXli
YWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6ZXh0ZXJuYWxQbGF5YmFja1Byb3BlcnRpZXNDaGFuZ2Vk
KHVpbnQ2NF90IGNvbgogICAgIGVuc3VyZU1vZGVsKGNvbnRleHRJZCkuZXh0ZXJuYWxQbGF5YmFj
a0NoYW5nZWQoZW5hYmxlZCwgdHlwZSwgbG9jYWxpemVkRGV2aWNlTmFtZSk7CiB9CiAKLXZvaWQg
UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Ojp3aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxl
ZENoYW5nZWQodWludDY0X3QgY29udGV4dElkLCBib29sIGRpc2FibGVkKQordm9pZCBQbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyUHJveHk6OndpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkQ2hhbmdl
ZChQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQsIGJvb2wgZGlzYWJs
ZWQpCiB7CiAgICAgTUVTU0FHRV9DSEVDS19DT05URVhUSUQoY29udGV4dElkKTsKICAgICBlbnN1
cmVNb2RlbChjb250ZXh0SWQpLndpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkQ2hhbmdlZChk
aXNhYmxlZCk7CiB9CiAKLXZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjptdXRlZENo
YW5nZWQodWludDY0X3QgY29udGV4dElkLCBib29sIG11dGVkKQordm9pZCBQbGF5YmFja1Nlc3Np
b25NYW5hZ2VyUHJveHk6Om11dGVkQ2hhbmdlZChQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRp
ZmllciBjb250ZXh0SWQsIGJvb2wgbXV0ZWQpCiB7CiAgICAgTUVTU0FHRV9DSEVDS19DT05URVhU
SUQoY29udGV4dElkKTsKICAgICBlbnN1cmVNb2RlbChjb250ZXh0SWQpLm11dGVkQ2hhbmdlZCht
dXRlZCk7CiB9CiAKLXZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Ojp2b2x1bWVDaGFu
Z2VkKHVpbnQ2NF90IGNvbnRleHRJZCwgZG91YmxlIHZvbHVtZSkKK3ZvaWQgUGxheWJhY2tTZXNz
aW9uTWFuYWdlclByb3h5Ojp2b2x1bWVDaGFuZ2VkKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVu
dGlmaWVyIGNvbnRleHRJZCwgZG91YmxlIHZvbHVtZSkKIHsKICAgICBNRVNTQUdFX0NIRUNLX0NP
TlRFWFRJRChjb250ZXh0SWQpOwogICAgIGVuc3VyZU1vZGVsKGNvbnRleHRJZCkudm9sdW1lQ2hh
bmdlZCh2b2x1bWUpOwogfQogCi12b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6ZHVy
YXRpb25DaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJZCwgZG91YmxlIGR1cmF0aW9uKQordm9pZCBQ
bGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OmR1cmF0aW9uQ2hhbmdlZChQbGF5YmFja1Nlc3Np
b25Db250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQsIGRvdWJsZSBkdXJhdGlvbikKIHsKICAgICBN
RVNTQUdFX0NIRUNLX0NPTlRFWFRJRChjb250ZXh0SWQpOwogICAgIGVuc3VyZU1vZGVsKGNvbnRl
eHRJZCkuZHVyYXRpb25DaGFuZ2VkKGR1cmF0aW9uKTsKIH0KIAotdm9pZCBQbGF5YmFja1Nlc3Np
b25NYW5hZ2VyUHJveHk6OnBsYXliYWNrU3RhcnRlZFRpbWVDaGFuZ2VkKHVpbnQ2NF90IGNvbnRl
eHRJZCwgZG91YmxlIHBsYXliYWNrU3RhcnRlZFRpbWUpCit2b2lkIFBsYXliYWNrU2Vzc2lvbk1h
bmFnZXJQcm94eTo6cGxheWJhY2tTdGFydGVkVGltZUNoYW5nZWQoUGxheWJhY2tTZXNzaW9uQ29u
dGV4dElkZW50aWZpZXIgY29udGV4dElkLCBkb3VibGUgcGxheWJhY2tTdGFydGVkVGltZSkKIHsK
ICAgICBNRVNTQUdFX0NIRUNLX0NPTlRFWFRJRChjb250ZXh0SWQpOwogICAgIGVuc3VyZU1vZGVs
KGNvbnRleHRJZCkucGxheWJhY2tTdGFydGVkVGltZUNoYW5nZWQocGxheWJhY2tTdGFydGVkVGlt
ZSk7CiB9CiAKLXZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpyYXRlQ2hhbmdlZCh1
aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgaXNQbGF5aW5nLCBkb3VibGUgcmF0ZSkKK3ZvaWQgUGxh
eWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpyYXRlQ2hhbmdlZChQbGF5YmFja1Nlc3Npb25Db250
ZXh0SWRlbnRpZmllciBjb250ZXh0SWQsIGJvb2wgaXNQbGF5aW5nLCBkb3VibGUgcmF0ZSkKIHsK
ICAgICBNRVNTQUdFX0NIRUNLX0NPTlRFWFRJRChjb250ZXh0SWQpOwogICAgIGVuc3VyZU1vZGVs
KGNvbnRleHRJZCkucmF0ZUNoYW5nZWQoaXNQbGF5aW5nLCByYXRlKTsKIH0KIAotdm9pZCBQbGF5
YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OnBpY3R1cmVJblBpY3R1cmVTdXBwb3J0ZWRDaGFuZ2Vk
KHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vbCBzdXBwb3J0ZWQpCit2b2lkIFBsYXliYWNrU2Vzc2lv
bk1hbmFnZXJQcm94eTo6cGljdHVyZUluUGljdHVyZVN1cHBvcnRlZENoYW5nZWQoUGxheWJhY2tT
ZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4dElkLCBib29sIHN1cHBvcnRlZCkKIHsKICAg
ICBNRVNTQUdFX0NIRUNLX0NPTlRFWFRJRChjb250ZXh0SWQpOwogICAgIGVuc3VyZU1vZGVsKGNv
bnRleHRJZCkucGljdHVyZUluUGljdHVyZVN1cHBvcnRlZENoYW5nZWQoc3VwcG9ydGVkKTsKIH0K
IAotdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OmhhbmRsZUNvbnRyb2xsZWRFbGVt
ZW50SURSZXNwb25zZSh1aW50NjRfdCBjb250ZXh0SWQsIFN0cmluZyBpZGVudGlmaWVyKSBjb25z
dAordm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OmhhbmRsZUNvbnRyb2xsZWRFbGVt
ZW50SURSZXNwb25zZShQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQs
IFN0cmluZyBpZGVudGlmaWVyKSBjb25zdAogewogICAgIE1FU1NBR0VfQ0hFQ0tfQ09OVEVYVElE
KGNvbnRleHRJZCk7CiAjaWYgUExBVEZPUk0oTUFDKQpAQCAtNTE0LDg3ICs1MTQsODcgQEAgdm9p
ZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OmhhbmRsZUNvbnRyb2xsZWRFbGVtZW50SURS
ZXNwb25zZSh1aW50NjRfdCBjb24KIAogI3ByYWdtYSBtYXJrIE1lc3NhZ2VzIHRvIFBsYXliYWNr
U2Vzc2lvbk1hbmFnZXIKIAotdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OnBsYXko
dWludDY0X3QgY29udGV4dElkKQordm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OnBs
YXkoUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4dElkKQogewogICAgIG1f
cGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6UGxheShjb250ZXh0
SWQpKTsKIH0KIAotdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OnBhdXNlKHVpbnQ2
NF90IGNvbnRleHRJZCkKK3ZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpwYXVzZShQ
bGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQpCiB7CiAgICAgbV9wYWdl
LT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpQYXVzZShjb250ZXh0SWQp
KTsKIH0KIAotdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OnRvZ2dsZVBsYXlTdGF0
ZSh1aW50NjRfdCBjb250ZXh0SWQpCit2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6
dG9nZ2xlUGxheVN0YXRlKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJ
ZCkKIHsKICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6
OlRvZ2dsZVBsYXlTdGF0ZShjb250ZXh0SWQpKTsKIH0KIAotdm9pZCBQbGF5YmFja1Nlc3Npb25N
YW5hZ2VyUHJveHk6OmJlZ2luU2NydWJiaW5nKHVpbnQ2NF90IGNvbnRleHRJZCkKK3ZvaWQgUGxh
eWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpiZWdpblNjcnViYmluZyhQbGF5YmFja1Nlc3Npb25D
b250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQpCiB7CiAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2Vz
OjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpCZWdpblNjcnViYmluZyhjb250ZXh0SWQpKTsKIH0K
IAotdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OmVuZFNjcnViYmluZyh1aW50NjRf
dCBjb250ZXh0SWQpCit2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6ZW5kU2NydWJi
aW5nKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCkKIHsKICAgICBt
X3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OkVuZFNjcnViYmlu
Zyhjb250ZXh0SWQpKTsKIH0KIAotdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OnNl
ZWtUb1RpbWUodWludDY0X3QgY29udGV4dElkLCBkb3VibGUgdGltZSwgZG91YmxlIHRvbGVyYW5j
ZUJlZm9yZSwgZG91YmxlIHRvbGVyYW5jZUFmdGVyKQordm9pZCBQbGF5YmFja1Nlc3Npb25NYW5h
Z2VyUHJveHk6OnNlZWtUb1RpbWUoUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29u
dGV4dElkLCBkb3VibGUgdGltZSwgZG91YmxlIHRvbGVyYW5jZUJlZm9yZSwgZG91YmxlIHRvbGVy
YW5jZUFmdGVyKQogewogICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9u
TWFuYWdlcjo6U2Vla1RvVGltZShjb250ZXh0SWQsIHRpbWUsIHRvbGVyYW5jZUJlZm9yZSwgdG9s
ZXJhbmNlQWZ0ZXIpKTsKIH0KIAotdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OmZh
c3RTZWVrKHVpbnQ2NF90IGNvbnRleHRJZCwgZG91YmxlIHRpbWUpCit2b2lkIFBsYXliYWNrU2Vz
c2lvbk1hbmFnZXJQcm94eTo6ZmFzdFNlZWsoUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZp
ZXIgY29udGV4dElkLCBkb3VibGUgdGltZSkKIHsKICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6
OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OkZhc3RTZWVrKGNvbnRleHRJZCwgdGltZSkpOwogfQog
Ci12b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6YmVnaW5TY2FubmluZ0ZvcndhcmQo
dWludDY0X3QgY29udGV4dElkKQordm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OmJl
Z2luU2Nhbm5pbmdGb3J3YXJkKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRl
eHRJZCkKIHsKICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFn
ZXI6OkJlZ2luU2Nhbm5pbmdGb3J3YXJkKGNvbnRleHRJZCkpOwogfQogCi12b2lkIFBsYXliYWNr
U2Vzc2lvbk1hbmFnZXJQcm94eTo6YmVnaW5TY2FubmluZ0JhY2t3YXJkKHVpbnQ2NF90IGNvbnRl
eHRJZCkKK3ZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpiZWdpblNjYW5uaW5nQmFj
a3dhcmQoUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4dElkKQogewogICAg
IG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6QmVnaW5TY2Fu
bmluZ0JhY2t3YXJkKGNvbnRleHRJZCkpOwogfQogCi12b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFn
ZXJQcm94eTo6ZW5kU2Nhbm5pbmcodWludDY0X3QgY29udGV4dElkKQordm9pZCBQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyUHJveHk6OmVuZFNjYW5uaW5nKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVu
dGlmaWVyIGNvbnRleHRJZCkKIHsKICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNr
U2Vzc2lvbk1hbmFnZXI6OkVuZFNjYW5uaW5nKGNvbnRleHRJZCkpOwogfQogCi12b2lkIFBsYXli
YWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6c2VsZWN0QXVkaW9NZWRpYU9wdGlvbih1aW50NjRfdCBj
b250ZXh0SWQsIHVpbnQ2NF90IGluZGV4KQordm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJv
eHk6OnNlbGVjdEF1ZGlvTWVkaWFPcHRpb24oUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZp
ZXIgY29udGV4dElkLCB1aW50NjRfdCBpbmRleCkKIHsKICAgICBtX3BhZ2UtPnNlbmQoTWVzc2Fn
ZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OlNlbGVjdEF1ZGlvTWVkaWFPcHRpb24oY29udGV4
dElkLCBpbmRleCkpOwogfQogCi12b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6c2Vs
ZWN0TGVnaWJsZU1lZGlhT3B0aW9uKHVpbnQ2NF90IGNvbnRleHRJZCwgdWludDY0X3QgaW5kZXgp
Cit2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6c2VsZWN0TGVnaWJsZU1lZGlhT3B0
aW9uKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCwgdWludDY0X3Qg
aW5kZXgpCiB7CiAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5h
Z2VyOjpTZWxlY3RMZWdpYmxlTWVkaWFPcHRpb24oY29udGV4dElkLCBpbmRleCkpOwogfQogCi12
b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6dG9nZ2xlUGljdHVyZUluUGljdHVyZSh1
aW50NjRfdCBjb250ZXh0SWQpCit2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6dG9n
Z2xlUGljdHVyZUluUGljdHVyZShQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciBjb250
ZXh0SWQpCiB7CiAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5h
Z2VyOjpUb2dnbGVQaWN0dXJlSW5QaWN0dXJlKGNvbnRleHRJZCkpOwogfQogCi12b2lkIFBsYXli
YWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6dG9nZ2xlTXV0ZWQodWludDY0X3QgY29udGV4dElkKQor
dm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OnRvZ2dsZU11dGVkKFBsYXliYWNrU2Vz
c2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCkKIHsKICAgICBtX3BhZ2UtPnNlbmQoTWVz
c2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OlRvZ2dsZU11dGVkKGNvbnRleHRJZCkpOwog
fQogCi12b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6c2V0TXV0ZWQodWludDY0X3Qg
Y29udGV4dElkLCBib29sIG11dGVkKQordm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6
OnNldE11dGVkKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCwgYm9v
bCBtdXRlZCkKIHsKICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1h
bmFnZXI6OlNldE11dGVkKGNvbnRleHRJZCwgbXV0ZWQpKTsKIH0KIAotdm9pZCBQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyUHJveHk6OnNldFZvbHVtZSh1aW50NjRfdCBjb250ZXh0SWQsIGRvdWJsZSB2
b2x1bWUpCit2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6c2V0Vm9sdW1lKFBsYXli
YWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCwgZG91YmxlIHZvbHVtZSkKIHsK
ICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OlNldFZv
bHVtZShjb250ZXh0SWQsIHZvbHVtZSkpOwogfQogCi12b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFn
ZXJQcm94eTo6c2V0UGxheWluZ09uU2Vjb25kU2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCwgYm9v
bCB2YWx1ZSkKK3ZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpzZXRQbGF5aW5nT25T
ZWNvbmRTY3JlZW4oUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4dElkLCBi
b29sIHZhbHVlKQogewogICAgIGlmIChtX3BhZ2UpCiAgICAgICAgIG1fcGFnZS0+c2VuZChNZXNz
YWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6U2V0UGxheWluZ09uU2Vjb25kU2NyZWVuKGNv
bnRleHRJZCwgdmFsdWUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5LmgKaW5kZXggNDJlMmQ4NWQ3YjFh
MzdhYWQwMjRhZGE4NDljYTk1NjNjNzVmZWY2NC4uZDIzZTg4YTI0YjlmYTQzNjEzZDUzZjkzZGMx
OGJhNDgzMGVhOGM5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5LmgKQEAgLTI4LDYgKzI4LDcgQEAK
ICNpZiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpCiAKICNpbmNsdWRlICJNZXNzYWdl
UmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllci5o
IgogI2luY2x1ZGUgPFdlYkNvcmUvQXVkaW9TZXNzaW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9H
cmFwaGljc0xheWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybVZpZXcuaD4KQEAgLTYz
LDcgKzY0LDcgQEAgY2xhc3MgVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0IGZpbmFsCiAgICAg
LCBwdWJsaWMgV2ViQ29yZTo6VmlkZW9GdWxsc2NyZWVuTW9kZWwKICAgICAsIHB1YmxpYyBXZWJD
b3JlOjpWaWRlb0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlciAgewogcHVibGljOgotICAgIHN0YXRp
YyBSZWY8VmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0PiBjcmVhdGUoVmlkZW9GdWxsc2NyZWVu
TWFuYWdlclByb3h5JiBtYW5hZ2VyLCBQbGF5YmFja1Nlc3Npb25Nb2RlbENvbnRleHQmIHBsYXli
YWNrU2Vzc2lvbk1vZGVsLCB1aW50NjRfdCBjb250ZXh0SWQpCisgICAgc3RhdGljIFJlZjxWaWRl
b0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQ+IGNyZWF0ZShWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJv
eHkmIG1hbmFnZXIsIFBsYXliYWNrU2Vzc2lvbk1vZGVsQ29udGV4dCYgcGxheWJhY2tTZXNzaW9u
TW9kZWwsIFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCkKICAgICB7
CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4
dChtYW5hZ2VyLCBwbGF5YmFja1Nlc3Npb25Nb2RlbCwgY29udGV4dElkKSk7CiAgICAgfQpAQCAt
NzUsNyArNzYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRMYXllckhvc3RWaWV3KFJldGFpblB0
cjxQbGF0Zm9ybVZpZXc+JiYgbGF5ZXJIb3N0VmlldykgeyBtX2xheWVySG9zdFZpZXcgPSBXVEZN
b3ZlKGxheWVySG9zdFZpZXcpOyB9CiAKIHByaXZhdGU6Ci0gICAgVmlkZW9GdWxsc2NyZWVuTW9k
ZWxDb250ZXh0KFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eSYsIFBsYXliYWNrU2Vzc2lvbk1v
ZGVsQ29udGV4dCYsIHVpbnQ2NF90KTsKKyAgICBWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQo
VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5JiwgUGxheWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0
JiwgUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIpOwogCiAgICAgLy8gVmlkZW9GdWxs
c2NyZWVuTW9kZWwKICAgICB2b2lkIGFkZENsaWVudChXZWJDb3JlOjpWaWRlb0Z1bGxzY3JlZW5N
b2RlbENsaWVudCYpIG92ZXJyaWRlOwpAQCAtMTEwLDcgKzExMSw3IEBAIHByaXZhdGU6CiAKICAg
ICBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkqIG1fbWFuYWdlcjsKICAgICBSZWY8UGxheWJh
Y2tTZXNzaW9uTW9kZWxDb250ZXh0PiBtX3BsYXliYWNrU2Vzc2lvbk1vZGVsOwotICAgIHVpbnQ2
NF90IG1fY29udGV4dElkOworICAgIFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIG1f
Y29udGV4dElkOwogICAgIFJldGFpblB0cjxQbGF0Zm9ybVZpZXc+IG1fbGF5ZXJIb3N0VmlldzsK
ICAgICBIYXNoU2V0PFdlYkNvcmU6OlZpZGVvRnVsbHNjcmVlbk1vZGVsQ2xpZW50Kj4gbV9jbGll
bnRzOwogICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBtX3ZpZGVvRGltZW5zaW9uczsKQEAgLTEzMiw3
ICsxMzMsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldE1vY2tWaWRlb1ByZXNlbnRhdGlvbk1v
ZGVFbmFibGVkKGJvb2wgZW5hYmxlZCkgeyBtX21vY2tWaWRlb1ByZXNlbnRhdGlvbk1vZGVFbmFi
bGVkID0gZW5hYmxlZDsgfQogCi0gICAgdm9pZCByZXF1ZXN0Um91dGVTaGFyaW5nUG9saWN5QW5k
Q29udGV4dFVJRCh1aW50NjRfdCBjb250ZXh0SWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2Vi
Q29yZTo6Um91dGVTaGFyaW5nUG9saWN5LCBTdHJpbmcpPiYmKTsKKyAgICB2b2lkIHJlcXVlc3RS
b3V0ZVNoYXJpbmdQb2xpY3lBbmRDb250ZXh0VUlEKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVu
dGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlJvdXRlU2hhcmluZ1BvbGlj
eSwgU3RyaW5nKT4mJik7CiAKICAgICBib29sIGlzUGxheWluZ1ZpZGVvSW5FbmhhbmNlZEZ1bGxz
Y3JlZW4oKSBjb25zdDsKIApAQCAtMTQ3LDUxICsxNDgsNTEgQEAgcHJpdmF0ZToKICAgICB2b2lk
IGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJy
aWRlOwogCiAgICAgdHlwZWRlZiBzdGQ6OnR1cGxlPFJlZlB0cjxWaWRlb0Z1bGxzY3JlZW5Nb2Rl
bENvbnRleHQ+LCBSZWZQdHI8UGxhdGZvcm1WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2U+PiBNb2Rl
bEludGVyZmFjZVR1cGxlOwotICAgIE1vZGVsSW50ZXJmYWNlVHVwbGUgY3JlYXRlTW9kZWxBbmRJ
bnRlcmZhY2UodWludDY0X3QgY29udGV4dElkKTsKLSAgICBNb2RlbEludGVyZmFjZVR1cGxlJiBl
bnN1cmVNb2RlbEFuZEludGVyZmFjZSh1aW50NjRfdCBjb250ZXh0SWQpOwotICAgIFZpZGVvRnVs
bHNjcmVlbk1vZGVsQ29udGV4dCYgZW5zdXJlTW9kZWwodWludDY0X3QgY29udGV4dElkKTsKLSAg
ICBQbGF0Zm9ybVZpZGVvRnVsbHNjcmVlbkludGVyZmFjZSYgZW5zdXJlSW50ZXJmYWNlKHVpbnQ2
NF90IGNvbnRleHRJZCk7Ci0gICAgUGxhdGZvcm1WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2UqIGZp
bmRJbnRlcmZhY2UodWludDY0X3QgY29udGV4dElkKTsKLSAgICB2b2lkIGFkZENsaWVudEZvckNv
bnRleHQodWludDY0X3QgY29udGV4dElkKTsKLSAgICB2b2lkIHJlbW92ZUNsaWVudEZvckNvbnRl
eHQodWludDY0X3QgY29udGV4dElkKTsKKyAgICBNb2RlbEludGVyZmFjZVR1cGxlIGNyZWF0ZU1v
ZGVsQW5kSW50ZXJmYWNlKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyKTsKKyAgICBN
b2RlbEludGVyZmFjZVR1cGxlJiBlbnN1cmVNb2RlbEFuZEludGVyZmFjZShQbGF5YmFja1Nlc3Np
b25Db250ZXh0SWRlbnRpZmllcik7CisgICAgVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0JiBl
bnN1cmVNb2RlbChQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllcik7CisgICAgUGxhdGZv
cm1WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2UmIGVuc3VyZUludGVyZmFjZShQbGF5YmFja1Nlc3Np
b25Db250ZXh0SWRlbnRpZmllcik7CisgICAgUGxhdGZvcm1WaWRlb0Z1bGxzY3JlZW5JbnRlcmZh
Y2UqIGZpbmRJbnRlcmZhY2UoUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIpOworICAg
IHZvaWQgYWRkQ2xpZW50Rm9yQ29udGV4dChQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmll
cik7CisgICAgdm9pZCByZW1vdmVDbGllbnRGb3JDb250ZXh0KFBsYXliYWNrU2Vzc2lvbkNvbnRl
eHRJZGVudGlmaWVyKTsKIAogICAgIHZvaWQgaGFzVmlkZW9JblBpY3R1cmVJblBpY3R1cmVEaWRD
aGFuZ2UoYm9vbCk7CiAKICAgICAvLyBNZXNzYWdlcyBmcm9tIFZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXIKLSAgICB2b2lkIHNldHVwRnVsbHNjcmVlbldpdGhJRCh1aW50NjRfdCBjb250ZXh0SWQsIHVp
bnQzMl90IHZpZGVvTGF5ZXJJRCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgaW5pdGlhbFJlY3Qs
IGZsb2F0IGhvc3RpbmdTY2FsZUZhY3RvciwgV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudEVudW1z
OjpWaWRlb0Z1bGxzY3JlZW5Nb2RlLCBib29sIGFsbG93c1BpY3R1cmVJblBpY3R1cmUsIGJvb2wg
c3RhbmRieSk7Ci0gICAgdm9pZCBzZXRJbmxpbmVSZWN0KHVpbnQ2NF90IGNvbnRleHRJZCwgY29u
c3QgV2ViQ29yZTo6SW50UmVjdCYgaW5saW5lUmVjdCwgYm9vbCB2aXNpYmxlKTsKLSAgICB2b2lk
IHNldEhhc1ZpZGVvQ29udGVudExheWVyKHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vbCB2YWx1ZSk7
Ci0gICAgdm9pZCBzZXRIYXNWaWRlbyh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wpOwotICAgIHZv
aWQgc2V0VmlkZW9EaW1lbnNpb25zKHVpbnQ2NF90IGNvbnRleHRJZCwgY29uc3QgV2ViQ29yZTo6
RmxvYXRTaXplJik7Ci0gICAgdm9pZCBlbnRlckZ1bGxzY3JlZW4odWludDY0X3QgY29udGV4dElk
KTsKLSAgICB2b2lkIGV4aXRGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCwgV2ViQ29yZTo6
SW50UmVjdCBmaW5hbFJlY3QpOwotICAgIHZvaWQgY2xlYW51cEZ1bGxzY3JlZW4odWludDY0X3Qg
Y29udGV4dElkKTsKLSAgICB2b2lkIHByZXBhcmVkVG9SZXR1cm5Ub0lubGluZSh1aW50NjRfdCBj
b250ZXh0SWQsIGJvb2wgdmlzaWJsZSwgV2ViQ29yZTo6SW50UmVjdCBpbmxpbmVSZWN0KTsKLSAg
ICB2b2lkIHByZXBhcmVkVG9FeGl0RnVsbHNjcmVlbih1aW50NjRfdCBjb250ZXh0SWQpOwotICAg
IHZvaWQgZXhpdEZ1bGxzY3JlZW5XaXRob3V0QW5pbWF0aW9uVG9Nb2RlKHVpbnQ2NF90IGNvbnRl
eHRJZCwgV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2Rl
KTsKKyAgICB2b2lkIHNldHVwRnVsbHNjcmVlbldpdGhJRChQbGF5YmFja1Nlc3Npb25Db250ZXh0
SWRlbnRpZmllciwgdWludDMyX3QgdmlkZW9MYXllcklELCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0
JiBpbml0aWFsUmVjdCwgZmxvYXQgaG9zdGluZ1NjYWxlRmFjdG9yLCBXZWJDb3JlOjpIVE1MTWVk
aWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUsIGJvb2wgYWxsb3dzUGljdHVyZUlu
UGljdHVyZSwgYm9vbCBzdGFuZGJ5KTsKKyAgICB2b2lkIHNldElubGluZVJlY3QoUGxheWJhY2tT
ZXNzaW9uQ29udGV4dElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGlubGluZVJl
Y3QsIGJvb2wgdmlzaWJsZSk7CisgICAgdm9pZCBzZXRIYXNWaWRlb0NvbnRlbnRMYXllcihQbGF5
YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciwgYm9vbCB2YWx1ZSk7CisgICAgdm9pZCBzZXRI
YXNWaWRlbyhQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciwgYm9vbCk7CisgICAgdm9p
ZCBzZXRWaWRlb0RpbWVuc2lvbnMoUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIsIGNv
bnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYpOworICAgIHZvaWQgZW50ZXJGdWxsc2NyZWVuKFBsYXli
YWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyKTsKKyAgICB2b2lkIGV4aXRGdWxsc2NyZWVuKFBs
YXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyLCBXZWJDb3JlOjpJbnRSZWN0IGZpbmFsUmVj
dCk7CisgICAgdm9pZCBjbGVhbnVwRnVsbHNjcmVlbihQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRl
bnRpZmllcik7CisgICAgdm9pZCBwcmVwYXJlZFRvUmV0dXJuVG9JbmxpbmUoUGxheWJhY2tTZXNz
aW9uQ29udGV4dElkZW50aWZpZXIsIGJvb2wgdmlzaWJsZSwgV2ViQ29yZTo6SW50UmVjdCBpbmxp
bmVSZWN0KTsKKyAgICB2b2lkIHByZXBhcmVkVG9FeGl0RnVsbHNjcmVlbihQbGF5YmFja1Nlc3Np
b25Db250ZXh0SWRlbnRpZmllcik7CisgICAgdm9pZCBleGl0RnVsbHNjcmVlbldpdGhvdXRBbmlt
YXRpb25Ub01vZGUoUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIsIFdlYkNvcmU6OkhU
TUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSk7CiAKICAgICAvLyBNZXNz
YWdlcyB0byBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyCi0gICAgdm9pZCByZXF1ZXN0RnVsbHNjcmVl
bk1vZGUodWludDY0X3QgY29udGV4dElkLCBXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW51bXM6
OlZpZGVvRnVsbHNjcmVlbk1vZGUsIGJvb2wgZmluaXNoZWRXaXRoTWVkaWEgPSBmYWxzZSk7Ci0g
ICAgdm9pZCByZXF1ZXN0VXBkYXRlSW5saW5lUmVjdCh1aW50NjRfdCBjb250ZXh0SWQpOwotICAg
IHZvaWQgcmVxdWVzdFZpZGVvQ29udGVudExheWVyKHVpbnQ2NF90IGNvbnRleHRJZCk7Ci0gICAg
dm9pZCByZXR1cm5WaWRlb0NvbnRlbnRMYXllcih1aW50NjRfdCBjb250ZXh0SWQpOwotICAgIHZv
aWQgZGlkU2V0dXBGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCk7Ci0gICAgdm9pZCB3aWxs
RXhpdEZ1bGxzY3JlZW4odWludDY0X3QgY29udGV4dElkKTsKLSAgICB2b2lkIGRpZEV4aXRGdWxs
c2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCk7Ci0gICAgdm9pZCBkaWRFbnRlckZ1bGxzY3JlZW4o
dWludDY0X3QgY29udGV4dElkKTsKLSAgICB2b2lkIGRpZENsZWFudXBGdWxsc2NyZWVuKHVpbnQ2
NF90IGNvbnRleHRJZCk7Ci0gICAgdm9pZCBzZXRWaWRlb0xheWVyRnJhbWUodWludDY0X3QgY29u
dGV4dElkLCBXZWJDb3JlOjpGbG9hdFJlY3QpOwotICAgIHZvaWQgc2V0VmlkZW9MYXllckdyYXZp
dHkodWludDY0X3QgY29udGV4dElkLCBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpWaWRlb0dy
YXZpdHkpOwotICAgIHZvaWQgZnVsbHNjcmVlbk1vZGVDaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJ
ZCwgV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlKTsK
LSAgICB2b2lkIGZ1bGxzY3JlZW5NYXlSZXR1cm5Ub0lubGluZSh1aW50NjRfdCBjb250ZXh0SWQp
OworICAgIHZvaWQgcmVxdWVzdEZ1bGxzY3JlZW5Nb2RlKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJ
ZGVudGlmaWVyLCBXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVl
bk1vZGUsIGJvb2wgZmluaXNoZWRXaXRoTWVkaWEgPSBmYWxzZSk7CisgICAgdm9pZCByZXF1ZXN0
VXBkYXRlSW5saW5lUmVjdChQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllcik7CisgICAg
dm9pZCByZXF1ZXN0VmlkZW9Db250ZW50TGF5ZXIoUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50
aWZpZXIpOworICAgIHZvaWQgcmV0dXJuVmlkZW9Db250ZW50TGF5ZXIoUGxheWJhY2tTZXNzaW9u
Q29udGV4dElkZW50aWZpZXIpOworICAgIHZvaWQgZGlkU2V0dXBGdWxsc2NyZWVuKFBsYXliYWNr
U2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyKTsKKyAgICB2b2lkIHdpbGxFeGl0RnVsbHNjcmVlbihQ
bGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllcik7CisgICAgdm9pZCBkaWRFeGl0RnVsbHNj
cmVlbihQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllcik7CisgICAgdm9pZCBkaWRFbnRl
ckZ1bGxzY3JlZW4oUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIpOworICAgIHZvaWQg
ZGlkQ2xlYW51cEZ1bGxzY3JlZW4oUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIpOwor
ICAgIHZvaWQgc2V0VmlkZW9MYXllckZyYW1lKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlm
aWVyLCBXZWJDb3JlOjpGbG9hdFJlY3QpOworICAgIHZvaWQgc2V0VmlkZW9MYXllckdyYXZpdHko
UGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIsIFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51
bXM6OlZpZGVvR3Jhdml0eSk7CisgICAgdm9pZCBmdWxsc2NyZWVuTW9kZUNoYW5nZWQoUGxheWJh
Y2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIsIFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRFbnVt
czo6VmlkZW9GdWxsc2NyZWVuTW9kZSk7CisgICAgdm9pZCBmdWxsc2NyZWVuTWF5UmV0dXJuVG9J
bmxpbmUoUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIpOwogCiAgICAgYm9vbCBtX21v
Y2tWaWRlb1ByZXNlbnRhdGlvbk1vZGVFbmFibGVkIHsgZmFsc2UgfTsKIAogICAgIFdlYlBhZ2VQ
cm94eSogbV9wYWdlOwogICAgIFJlZjxQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk+IG1fcGxh
eWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OwotICAgIEhhc2hNYXA8dWludDY0X3QsIE1vZGVsSW50
ZXJmYWNlVHVwbGU+IG1fY29udGV4dE1hcDsKLSAgICB1aW50NjRfdCBtX2NvbnRyb2xzTWFuYWdl
ckNvbnRleHRJZCB7IDAgfTsKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBpbnQ+IG1fY2xpZW50Q291
bnRzOworICAgIEhhc2hNYXA8UGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIsIE1vZGVs
SW50ZXJmYWNlVHVwbGU+IG1fY29udGV4dE1hcDsKKyAgICBQbGF5YmFja1Nlc3Npb25Db250ZXh0
SWRlbnRpZmllciBtX2NvbnRyb2xzTWFuYWdlckNvbnRleHRJZDsKKyAgICBIYXNoTWFwPFBsYXli
YWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyLCBpbnQ+IG1fY2xpZW50Q291bnRzOwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubWVzc2Fn
ZXMuaW4KaW5kZXggZjZjY2Q4N2FlMzVmMzk2ZDBmZDA3YzI0NzU5NTRhNTg3ZWY2M2ZhNS4uNDEw
NjZjYjYxODVhYWM3OTE2NWNlYWU1YjBlZWM4ODllYmNlNTA2ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1lc3Nh
Z2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVl
bk1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgpAQCAtMjIsMTYgKzIyLDE2IEBACiAKICNpZiBFTkFC
TEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpCiBtZXNzYWdlcyAtPiBWaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyUHJveHkgewotICAgIFNldEhhc1ZpZGVvKHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vbCBo
YXNWaWRlbykKLSAgICBTZXRWaWRlb0RpbWVuc2lvbnModWludDY0X3QgY29udGV4dElkLCBXZWJD
b3JlOjpGbG9hdFNpemUgdmlkZW9EaW1lbnNpb25zKQotICAgIFNldHVwRnVsbHNjcmVlbldpdGhJ
RCh1aW50NjRfdCBjb250ZXh0SWQsIHVpbnQzMl90IHZpZGVvTGF5ZXJJRCwgV2ViQ29yZTo6SW50
UmVjdCBpbml0aWFsUmVjdCwgZmxvYXQgaG9zdGluZ1NjYWxlRmFjdG9yLCBXZWJDb3JlOjpIVE1M
TWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUgdmlkZW9GdWxsc2NyZWVuTW9k
ZSwgYm9vbCBhbGxvd3NQaWN0dXJlSW5QaWN0dXJlLCBib29sIHN0YW5kYnkpCi0gICAgRW50ZXJG
dWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCkKLSAgICBFeGl0RnVsbHNjcmVlbih1aW50NjRf
dCBjb250ZXh0SWQsIFdlYkNvcmU6OkludFJlY3QgZmluYWxSZWN0KQotICAgIFNldElubGluZVJl
Y3QodWludDY0X3QgY29udGV4dElkLCBXZWJDb3JlOjpJbnRSZWN0IGlubGluZVJlY3QsIGJvb2wg
dmlzaWJsZSkKLSAgICBTZXRIYXNWaWRlb0NvbnRlbnRMYXllcih1aW50NjRfdCBjb250ZXh0SWQs
IGJvb2wgdmFsdWUpCi0gICAgQ2xlYW51cEZ1bGxzY3JlZW4odWludDY0X3QgY29udGV4dElkKQot
ICAgIFByZXBhcmVkVG9SZXR1cm5Ub0lubGluZSh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgdmlz
aWJsZSwgV2ViQ29yZTo6SW50UmVjdCBpbmxpbmVSZWN0KQotICAgIFByZXBhcmVkVG9FeGl0RnVs
bHNjcmVlbih1aW50NjRfdCBjb250ZXh0SWQpCi0gICAgRXhpdEZ1bGxzY3JlZW5XaXRob3V0QW5p
bWF0aW9uVG9Nb2RlKHVpbnQ2NF90IGNvbnRleHRJZCwgV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVu
dEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlIHZpZGVvRnVsbHNjcmVlbk1vZGUpCisgICAgU2V0
SGFzVmlkZW8oV2ViS2l0OjpQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciBjb250ZXh0
SWQsIGJvb2wgaGFzVmlkZW8pCisgICAgU2V0VmlkZW9EaW1lbnNpb25zKFdlYktpdDo6UGxheWJh
Y2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4dElkLCBXZWJDb3JlOjpGbG9hdFNpemUg
dmlkZW9EaW1lbnNpb25zKQorICAgIFNldHVwRnVsbHNjcmVlbldpdGhJRChXZWJLaXQ6OlBsYXli
YWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCwgdWludDMyX3QgdmlkZW9MYXll
cklELCBXZWJDb3JlOjpJbnRSZWN0IGluaXRpYWxSZWN0LCBmbG9hdCBob3N0aW5nU2NhbGVGYWN0
b3IsIFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSB2
aWRlb0Z1bGxzY3JlZW5Nb2RlLCBib29sIGFsbG93c1BpY3R1cmVJblBpY3R1cmUsIGJvb2wgc3Rh
bmRieSkKKyAgICBFbnRlckZ1bGxzY3JlZW4oV2ViS2l0OjpQbGF5YmFja1Nlc3Npb25Db250ZXh0
SWRlbnRpZmllciBjb250ZXh0SWQpCisgICAgRXhpdEZ1bGxzY3JlZW4oV2ViS2l0OjpQbGF5YmFj
a1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQsIFdlYkNvcmU6OkludFJlY3QgZmlu
YWxSZWN0KQorICAgIFNldElubGluZVJlY3QoV2ViS2l0OjpQbGF5YmFja1Nlc3Npb25Db250ZXh0
SWRlbnRpZmllciBjb250ZXh0SWQsIFdlYkNvcmU6OkludFJlY3QgaW5saW5lUmVjdCwgYm9vbCB2
aXNpYmxlKQorICAgIFNldEhhc1ZpZGVvQ29udGVudExheWVyKFdlYktpdDo6UGxheWJhY2tTZXNz
aW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4dElkLCBib29sIHZhbHVlKQorICAgIENsZWFudXBG
dWxsc2NyZWVuKFdlYktpdDo6UGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4
dElkKQorICAgIFByZXBhcmVkVG9SZXR1cm5Ub0lubGluZShXZWJLaXQ6OlBsYXliYWNrU2Vzc2lv
bkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCwgYm9vbCB2aXNpYmxlLCBXZWJDb3JlOjpJbnRS
ZWN0IGlubGluZVJlY3QpCisgICAgUHJlcGFyZWRUb0V4aXRGdWxsc2NyZWVuKFdlYktpdDo6UGxh
eWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4dElkKQorICAgIEV4aXRGdWxsc2Ny
ZWVuV2l0aG91dEFuaW1hdGlvblRvTW9kZShXZWJLaXQ6OlBsYXliYWNrU2Vzc2lvbkNvbnRleHRJ
ZGVudGlmaWVyIGNvbnRleHRJZCwgV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRl
b0Z1bGxzY3JlZW5Nb2RlIHZpZGVvRnVsbHNjcmVlbk1vZGUpCiB9CiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQ
cm94eS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1h
bmFnZXJQcm94eS5tbQppbmRleCAwMjRhOTliYTkzOTNlNTQxMTM3NTU0MzhkNDU1ZTdjYzE0NGNl
MTBmLi5lNjQ4ZjliMjA2NTRkNzIxNDRhMDk1ZDJjNmZmNzU5MDM5NmQ2NzA1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJv
eHkubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVu
TWFuYWdlclByb3h5Lm1tCkBAIC0xNTksNyArMTU5LDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyUHJveHk6OmFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlKCkKIAogI3ByYWdtYSBtYXJr
IC0gVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0CiAKLVZpZGVvRnVsbHNjcmVlbk1vZGVsQ29u
dGV4dDo6VmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0KFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQ
cm94eSYgbWFuYWdlciwgUGxheWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0JiBwbGF5YmFja1Nlc3Np
b25Nb2RlbCwgdWludDY0X3QgY29udGV4dElkKQorVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0
OjpWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQoVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5
JiBtYW5hZ2VyLCBQbGF5YmFja1Nlc3Npb25Nb2RlbENvbnRleHQmIHBsYXliYWNrU2Vzc2lvbk1v
ZGVsLCBQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQpCiAgICAgOiBt
X21hbmFnZXIoJm1hbmFnZXIpCiAgICAgLCBtX3BsYXliYWNrU2Vzc2lvbk1vZGVsKHBsYXliYWNr
U2Vzc2lvbk1vZGVsKQogICAgICwgbV9jb250ZXh0SWQoY29udGV4dElkKQpAQCAtNDA0LDEyICs0
MDQsMTIgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmFwcGxpY2F0aW9uRGlk
QmVjb21lQWN0aXZlKCkKICAgICAgICAgaW50ZXJmYWNlLT5hcHBsaWNhdGlvbkRpZEJlY29tZUFj
dGl2ZSgpOwogfQogCi12b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6cmVxdWVzdFJv
dXRlU2hhcmluZ1BvbGljeUFuZENvbnRleHRVSUQodWludDY0X3QgY29udGV4dElkLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlJvdXRlU2hhcmluZ1BvbGljeSwgU3RyaW5nKT4mJiBj
YWxsYmFjaykKK3ZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpyZXF1ZXN0Um91dGVT
aGFyaW5nUG9saWN5QW5kQ29udGV4dFVJRChQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmll
ciBjb250ZXh0SWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6Um91dGVTaGFyaW5n
UG9saWN5LCBTdHJpbmcpPiYmIGNhbGxiYWNrKQogewogICAgIG1fcGFnZS0+c2VuZFdpdGhBc3lu
Y1JlcGx5KE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpSZXF1ZXN0Um91dGVTaGFy
aW5nUG9saWN5QW5kQ29udGV4dFVJRChjb250ZXh0SWQpLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiB9
CiAKLVZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6TW9kZWxJbnRlcmZhY2VUdXBsZSBWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmNyZWF0ZU1vZGVsQW5kSW50ZXJmYWNlKHVpbnQ2NF90
IGNvbnRleHRJZCkKK1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6TW9kZWxJbnRlcmZhY2VU
dXBsZSBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmNyZWF0ZU1vZGVsQW5kSW50ZXJmYWNl
KFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCkKIHsKICAgICBhdXRv
JiBwbGF5YmFja1Nlc3Npb25Nb2RlbCA9IG1fcGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5LT5l
bnN1cmVNb2RlbChjb250ZXh0SWQpOwogICAgIFJlZjxWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRl
eHQ+IG1vZGVsID0gVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0OjpjcmVhdGUoKnRoaXMsIHBs
YXliYWNrU2Vzc2lvbk1vZGVsLCBjb250ZXh0SWQpOwpAQCAtNDIzLDcgKzQyMyw3IEBAIFZpZGVv
RnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6TW9kZWxJbnRlcmZhY2VUdXBsZSBWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyUHJveHk6OmNyCiAgICAgcmV0dXJuIHN0ZDo6bWFrZV90dXBsZShXVEZNb3ZlKG1v
ZGVsKSwgV1RGTW92ZShpbnRlcmZhY2UpKTsKIH0KIAotVmlkZW9GdWxsc2NyZWVuTWFuYWdlclBy
b3h5OjpNb2RlbEludGVyZmFjZVR1cGxlJiBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmVu
c3VyZU1vZGVsQW5kSW50ZXJmYWNlKHVpbnQ2NF90IGNvbnRleHRJZCkKK1ZpZGVvRnVsbHNjcmVl
bk1hbmFnZXJQcm94eTo6TW9kZWxJbnRlcmZhY2VUdXBsZSYgVmlkZW9GdWxsc2NyZWVuTWFuYWdl
clByb3h5OjplbnN1cmVNb2RlbEFuZEludGVyZmFjZShQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRl
bnRpZmllciBjb250ZXh0SWQpCiB7CiAgICAgYXV0byBhZGRSZXN1bHQgPSBtX2NvbnRleHRNYXAu
YWRkKGNvbnRleHRJZCwgTW9kZWxJbnRlcmZhY2VUdXBsZSgpKTsKICAgICBpZiAoYWRkUmVzdWx0
LmlzTmV3RW50cnkpCkBAIC00MzEsMTcgKzQzMSwxNyBAQCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
UHJveHk6Ok1vZGVsSW50ZXJmYWNlVHVwbGUmIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6
ZQogICAgIHJldHVybiBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlOwogfQogCi1WaWRlb0Z1bGxz
Y3JlZW5Nb2RlbENvbnRleHQmIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6ZW5zdXJlTW9k
ZWwodWludDY0X3QgY29udGV4dElkKQorVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0JiBWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmVuc3VyZU1vZGVsKFBsYXliYWNrU2Vzc2lvbkNvbnRl
eHRJZGVudGlmaWVyIGNvbnRleHRJZCkKIHsKICAgICByZXR1cm4gKnN0ZDo6Z2V0PDA+KGVuc3Vy
ZU1vZGVsQW5kSW50ZXJmYWNlKGNvbnRleHRJZCkpOwogfQogCi1QbGF0Zm9ybVZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZSYgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjplbnN1cmVJbnRlcmZh
Y2UodWludDY0X3QgY29udGV4dElkKQorUGxhdGZvcm1WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2Um
IFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6ZW5zdXJlSW50ZXJmYWNlKFBsYXliYWNrU2Vz
c2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCkKIHsKICAgICByZXR1cm4gKnN0ZDo6Z2V0
PDE+KGVuc3VyZU1vZGVsQW5kSW50ZXJmYWNlKGNvbnRleHRJZCkpOwogfQogCi1QbGF0Zm9ybVZp
ZGVvRnVsbHNjcmVlbkludGVyZmFjZSogVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpmaW5k
SW50ZXJmYWNlKHVpbnQ2NF90IGNvbnRleHRJZCkKK1BsYXRmb3JtVmlkZW9GdWxsc2NyZWVuSW50
ZXJmYWNlKiBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmZpbmRJbnRlcmZhY2UoUGxheWJh
Y2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4dElkKQogewogICAgIGF1dG8gaXQgPSBt
X2NvbnRleHRNYXAuZmluZChjb250ZXh0SWQpOwogICAgIGlmIChpdCA9PSBtX2NvbnRleHRNYXAu
ZW5kKCkpCkBAIC00NTAsMTQgKzQ1MCwxNCBAQCBQbGF0Zm9ybVZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZSogVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpmaW5kSW50ZXJmYWNlKHVpbgogICAg
IHJldHVybiBzdGQ6OmdldDwxPihpdC0+dmFsdWUpLmdldCgpOwogfQogCi12b2lkIFZpZGVvRnVs
bHNjcmVlbk1hbmFnZXJQcm94eTo6YWRkQ2xpZW50Rm9yQ29udGV4dCh1aW50NjRfdCBjb250ZXh0
SWQpCit2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6YWRkQ2xpZW50Rm9yQ29udGV4
dChQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQpCiB7CiAgICAgYXV0
byBhZGRSZXN1bHQgPSBtX2NsaWVudENvdW50cy5hZGQoY29udGV4dElkLCAxKTsKICAgICBpZiAo
IWFkZFJlc3VsdC5pc05ld0VudHJ5KQogICAgICAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVl
Kys7CiB9CiAKLXZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpyZW1vdmVDbGllbnRG
b3JDb250ZXh0KHVpbnQ2NF90IGNvbnRleHRJZCkKK3ZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdl
clByb3h5OjpyZW1vdmVDbGllbnRGb3JDb250ZXh0KFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVu
dGlmaWVyIGNvbnRleHRJZCkKIHsKICAgICBBU1NFUlQobV9jbGllbnRDb3VudHMuY29udGFpbnMo
Y29udGV4dElkKSk7CiAKQEAgLTUwNyw3ICs1MDcsNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1h
bmFnZXJQcm94eTo6aGFzVmlkZW9JblBpY3R1cmVJblBpY3R1cmVEaWRDaGFuZ2UoYm9vbCB2YWx1
ZQogCiAjcHJhZ21hIG1hcmsgTWVzc2FnZXMgZnJvbSBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyCiAK
LXZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpzZXR1cEZ1bGxzY3JlZW5XaXRoSUQo
dWludDY0X3QgY29udGV4dElkLCB1aW50MzJfdCB2aWRlb0xheWVySUQsIGNvbnN0IFdlYkNvcmU6
OkludFJlY3QmIGluaXRpYWxSZWN0LCBmbG9hdCBob3N0aW5nRGV2aWNlU2NhbGVGYWN0b3IsIEhU
TUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSB2aWRlb0Z1bGxzY3JlZW5N
b2RlLCBib29sIGFsbG93c1BpY3R1cmVJblBpY3R1cmUsIGJvb2wgc3RhbmRieSkKK3ZvaWQgVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpzZXR1cEZ1bGxzY3JlZW5XaXRoSUQoUGxheWJhY2tT
ZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4dElkLCB1aW50MzJfdCB2aWRlb0xheWVySUQs
IGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGluaXRpYWxSZWN0LCBmbG9hdCBob3N0aW5nRGV2aWNl
U2NhbGVGYWN0b3IsIEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSB2
aWRlb0Z1bGxzY3JlZW5Nb2RlLCBib29sIGFsbG93c1BpY3R1cmVJblBpY3R1cmUsIGJvb2wgc3Rh
bmRieSkKIHsKICAgICBNRVNTQUdFX0NIRUNLX0NPTlRFWFRJRChjb250ZXh0SWQpOwogICAgIE1F
U1NBR0VfQ0hFQ0sodmlkZW9MYXllcklEKTsKQEAgLTU1MCw3ICs1NTAsNyBAQCB2b2lkIFZpZGVv
RnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6c2V0dXBGdWxsc2NyZWVuV2l0aElEKHVpbnQ2NF90IGNv
bnRleHRJZCwgdWludAogI2VuZGlmCiB9CiAKLXZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclBy
b3h5OjpzZXRIYXNWaWRlbyh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgaGFzVmlkZW8pCit2b2lk
IFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6c2V0SGFzVmlkZW8oUGxheWJhY2tTZXNzaW9u
Q29udGV4dElkZW50aWZpZXIgY29udGV4dElkLCBib29sIGhhc1ZpZGVvKQogewogICAgIE1FU1NB
R0VfQ0hFQ0tfQ09OVEVYVElEKGNvbnRleHRJZCk7CiAgICAgaWYgKG1fbW9ja1ZpZGVvUHJlc2Vu
dGF0aW9uTW9kZUVuYWJsZWQpCkBAIC01NjAsNyArNTYwLDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyUHJveHk6OnNldEhhc1ZpZGVvKHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vbCBoYXNW
aWRlbykKICAgICAgICAgaW50ZXJmYWNlLT5oYXNWaWRlb0NoYW5nZWQoaGFzVmlkZW8pOwogfQog
Ci12b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6c2V0VmlkZW9EaW1lbnNpb25zKHVp
bnQ2NF90IGNvbnRleHRJZCwgY29uc3QgRmxvYXRTaXplJiB2aWRlb0RpbWVuc2lvbnMpCit2b2lk
IFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6c2V0VmlkZW9EaW1lbnNpb25zKFBsYXliYWNr
U2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCwgY29uc3QgRmxvYXRTaXplJiB2aWRl
b0RpbWVuc2lvbnMpCiB7CiAgICAgTUVTU0FHRV9DSEVDS19DT05URVhUSUQoY29udGV4dElkKTsK
ICAgICBpZiAobV9tb2NrVmlkZW9QcmVzZW50YXRpb25Nb2RlRW5hYmxlZCkKQEAgLTU3MCw3ICs1
NzAsNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6c2V0VmlkZW9EaW1lbnNp
b25zKHVpbnQ2NF90IGNvbnRleHRJZCwgY29uc3QgRgogICAgICAgICBpbnRlcmZhY2UtPnZpZGVv
RGltZW5zaW9uc0NoYW5nZWQodmlkZW9EaW1lbnNpb25zKTsKIH0KIAotdm9pZCBWaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyUHJveHk6OmVudGVyRnVsbHNjcmVlbih1aW50NjRfdCBjb250ZXh0SWQpCit2
b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6ZW50ZXJGdWxsc2NyZWVuKFBsYXliYWNr
U2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCkKIHsKICAgICBNRVNTQUdFX0NIRUNL
X0NPTlRFWFRJRChjb250ZXh0SWQpOwogICAgIGlmIChtX21vY2tWaWRlb1ByZXNlbnRhdGlvbk1v
ZGVFbmFibGVkKSB7CkBAIC01OTQsNyArNTk0LDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyUHJveHk6OmVudGVyRnVsbHNjcmVlbih1aW50NjRfdCBjb250ZXh0SWQpCiAgICAgfQogfQog
Ci12b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6ZXhpdEZ1bGxzY3JlZW4odWludDY0
X3QgY29udGV4dElkLCBXZWJDb3JlOjpJbnRSZWN0IGZpbmFsUmVjdCkKK3ZvaWQgVmlkZW9GdWxs
c2NyZWVuTWFuYWdlclByb3h5OjpleGl0RnVsbHNjcmVlbihQbGF5YmFja1Nlc3Npb25Db250ZXh0
SWRlbnRpZmllciBjb250ZXh0SWQsIFdlYkNvcmU6OkludFJlY3QgZmluYWxSZWN0KQogewogICAg
IE1FU1NBR0VfQ0hFQ0tfQ09OVEVYVElEKGNvbnRleHRJZCk7CiAKQEAgLTYyMyw3ICs2MjMsNyBA
QCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6ZXhpdEZ1bGxzY3JlZW4odWludDY0
X3QgY29udGV4dElkLCBXZWJDb3JlOjpJbgogI2VuZGlmCiB9CiAKLXZvaWQgVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlclByb3h5OjpleGl0RnVsbHNjcmVlbldpdGhvdXRBbmltYXRpb25Ub01vZGUodWlu
dDY0X3QgY29udGV4dElkLCBXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVs
bHNjcmVlbk1vZGUgdGFyZ2V0TW9kZSkKK3ZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5
OjpleGl0RnVsbHNjcmVlbldpdGhvdXRBbmltYXRpb25Ub01vZGUoUGxheWJhY2tTZXNzaW9uQ29u
dGV4dElkZW50aWZpZXIgY29udGV4dElkLCBXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW51bXM6
OlZpZGVvRnVsbHNjcmVlbk1vZGUgdGFyZ2V0TW9kZSkKIHsKICAgICBNRVNTQUdFX0NIRUNLX0NP
TlRFWFRJRChjb250ZXh0SWQpOwogICAgIGlmIChtX21vY2tWaWRlb1ByZXNlbnRhdGlvbk1vZGVF
bmFibGVkKQpAQCAtNjQ0LDcgKzY0NCw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclBy
b3h5OjpleGl0RnVsbHNjcmVlbldpdGhvdXRBbmltYXRpb25Ub01vZGUodWludDY0X3QKIAogI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCiAKLXZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5
OjpzZXRJbmxpbmVSZWN0KHVpbnQ2NF90IGNvbnRleHRJZCwgY29uc3QgV2ViQ29yZTo6SW50UmVj
dCYgaW5saW5lUmVjdCwgYm9vbCB2aXNpYmxlKQordm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
UHJveHk6OnNldElubGluZVJlY3QoUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29u
dGV4dElkLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBpbmxpbmVSZWN0LCBib29sIHZpc2libGUp
CiB7CiAgICAgTUVTU0FHRV9DSEVDS19DT05URVhUSUQoY29udGV4dElkKTsKICAgICBpZiAobV9t
b2NrVmlkZW9QcmVzZW50YXRpb25Nb2RlRW5hYmxlZCkKQEAgLTY1Myw3ICs2NTMsNyBAQCB2b2lk
IFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6c2V0SW5saW5lUmVjdCh1aW50NjRfdCBjb250
ZXh0SWQsIGNvbnN0IFdlYkNvcgogICAgIGVuc3VyZUludGVyZmFjZShjb250ZXh0SWQpLnNldElu
bGluZVJlY3QoaW5saW5lUmVjdCwgdmlzaWJsZSk7CiB9CiAKLXZvaWQgVmlkZW9GdWxsc2NyZWVu
TWFuYWdlclByb3h5OjpzZXRIYXNWaWRlb0NvbnRlbnRMYXllcih1aW50NjRfdCBjb250ZXh0SWQs
IGJvb2wgdmFsdWUpCit2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6c2V0SGFzVmlk
ZW9Db250ZW50TGF5ZXIoUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4dElk
LCBib29sIHZhbHVlKQogewogICAgIE1FU1NBR0VfQ0hFQ0tfQ09OVEVYVElEKGNvbnRleHRJZCk7
CiAgICAgaWYgKG1fbW9ja1ZpZGVvUHJlc2VudGF0aW9uTW9kZUVuYWJsZWQpIHsKQEAgLTY3MCwx
OSArNjcwLDE5IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpzZXRIYXNWaWRl
b0NvbnRlbnRMYXllcih1aW50NjRfdCBjb250ZXh0SWQsIGJvCiAKICNlbHNlCiAKLU5PX1JFVFVS
Tl9EVUVfVE9fQVNTRVJUIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpzZXRJbmxp
bmVSZWN0KHVpbnQ2NF90LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgYm9vbCkKK05PX1JFVFVS
Tl9EVUVfVE9fQVNTRVJUIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpzZXRJbmxp
bmVSZWN0KFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0JiwgYm9vbCkKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotTk9fUkVU
VVJOX0RVRV9UT19BU1NFUlQgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OnNldEhh
c1ZpZGVvQ29udGVudExheWVyKHVpbnQ2NF90LCBib29sKQorTk9fUkVUVVJOX0RVRV9UT19BU1NF
UlQgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OnNldEhhc1ZpZGVvQ29udGVudExh
eWVyKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyLCBib29sKQogewogICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogfQogCiAjZW5kaWYKIAotdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyUHJveHk6OmNsZWFudXBGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCkKK3ZvaWQgVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpjbGVhbnVwRnVsbHNjcmVlbihQbGF5YmFja1Nlc3Np
b25Db250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQpCiB7CiAgICAgTUVTU0FHRV9DSEVDS19DT05U
RVhUSUQoY29udGV4dElkKTsKICAgICBpZiAobV9tb2NrVmlkZW9QcmVzZW50YXRpb25Nb2RlRW5h
YmxlZCkgewpAQCAtNjkzLDcgKzY5Myw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclBy
b3h5OjpjbGVhbnVwRnVsbHNjcmVlbih1aW50NjRfdCBjb250ZXh0SWQpCiAgICAgZW5zdXJlSW50
ZXJmYWNlKGNvbnRleHRJZCkuY2xlYW51cEZ1bGxzY3JlZW4oKTsKIH0KIAotdm9pZCBWaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyUHJveHk6OnByZXBhcmVkVG9SZXR1cm5Ub0lubGluZSh1aW50NjRfdCBj
b250ZXh0SWQsIGJvb2wgdmlzaWJsZSwgV2ViQ29yZTo6SW50UmVjdCBpbmxpbmVSZWN0KQordm9p
ZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OnByZXBhcmVkVG9SZXR1cm5Ub0lubGluZShQ
bGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQsIGJvb2wgdmlzaWJsZSwg
V2ViQ29yZTo6SW50UmVjdCBpbmxpbmVSZWN0KQogewogICAgIE1FU1NBR0VfQ0hFQ0tfQ09OVEVY
VElEKGNvbnRleHRJZCk7CiAgICAgbV9wYWdlLT5mdWxsc2NyZWVuTWF5UmV0dXJuVG9JbmxpbmUo
KTsKQEAgLTcxMyw3ICs3MTMsNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6
cHJlcGFyZWRUb1JldHVyblRvSW5saW5lKHVpbnQ2NF90IGNvbnRleHRJZCwgYgogI2VuZGlmCiB9
CiAKLXZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpwcmVwYXJlZFRvRXhpdEZ1bGxz
Y3JlZW4odWludDY0X3QgY29udGV4dElkKQordm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJv
eHk6OnByZXBhcmVkVG9FeGl0RnVsbHNjcmVlbihQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRp
ZmllciBjb250ZXh0SWQpCiB7CiAgICAgTUVTU0FHRV9DSEVDS19DT05URVhUSUQoY29udGV4dElk
KTsKICAgICBpZiAobV9tb2NrVmlkZW9QcmVzZW50YXRpb25Nb2RlRW5hYmxlZCkKQEAgLTcyNCw0
OSArNzI0LDQ5IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpwcmVwYXJlZFRv
RXhpdEZ1bGxzY3JlZW4odWludDY0X3QgY29udGV4dElkKQogCiAjcHJhZ21hIG1hcmsgTWVzc2Fn
ZXMgdG8gVmlkZW9GdWxsc2NyZWVuTWFuYWdlcgogCi12b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXJQcm94eTo6cmVxdWVzdEZ1bGxzY3JlZW5Nb2RlKHVpbnQ2NF90IGNvbnRleHRJZCwgV2ViQ29y
ZTo6SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlIG1vZGUsIGJvb2wg
ZmluaXNoZWRXaXRoTWVkaWEpCit2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6cmVx
dWVzdEZ1bGxzY3JlZW5Nb2RlKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRl
eHRJZCwgV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2Rl
IG1vZGUsIGJvb2wgZmluaXNoZWRXaXRoTWVkaWEpCiB7CiAgICAgbV9wYWdlLT5zZW5kKE1lc3Nh
Z2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpSZXF1ZXN0RnVsbHNjcmVlbk1vZGUoY29udGV4
dElkLCBtb2RlLCBmaW5pc2hlZFdpdGhNZWRpYSkpOwogfQogCi12b2lkIFZpZGVvRnVsbHNjcmVl
bk1hbmFnZXJQcm94eTo6cmVxdWVzdFVwZGF0ZUlubGluZVJlY3QodWludDY0X3QgY29udGV4dElk
KQordm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OnJlcXVlc3RVcGRhdGVJbmxpbmVS
ZWN0KFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCkKIHsKICAgICBt
X3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OlJlcXVlc3RVcGRh
dGVJbmxpbmVSZWN0KGNvbnRleHRJZCkpOwogfQogCi12b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXJQcm94eTo6cmVxdWVzdFZpZGVvQ29udGVudExheWVyKHVpbnQ2NF90IGNvbnRleHRJZCkKK3Zv
aWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpyZXF1ZXN0VmlkZW9Db250ZW50TGF5ZXIo
UGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4dElkKQogewogICAgIG1fcGFn
ZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6UmVxdWVzdFZpZGVvQ29u
dGVudExheWVyKGNvbnRleHRJZCkpOwogfQogCi12b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQ
cm94eTo6cmV0dXJuVmlkZW9Db250ZW50TGF5ZXIodWludDY0X3QgY29udGV4dElkKQordm9pZCBW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OnJldHVyblZpZGVvQ29udGVudExheWVyKFBsYXli
YWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCkKIHsKICAgICBtX3BhZ2UtPnNl
bmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OlJldHVyblZpZGVvQ29udGVudExh
eWVyKGNvbnRleHRJZCkpOwogfQogCi12b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6
ZGlkU2V0dXBGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCkKK3ZvaWQgVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlclByb3h5OjpkaWRTZXR1cEZ1bGxzY3JlZW4oUGxheWJhY2tTZXNzaW9uQ29udGV4
dElkZW50aWZpZXIgY29udGV4dElkKQogewogICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6Vmlk
ZW9GdWxsc2NyZWVuTWFuYWdlcjo6RGlkU2V0dXBGdWxsc2NyZWVuKGNvbnRleHRJZCkpOwogfQog
Ci12b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6d2lsbEV4aXRGdWxsc2NyZWVuKHVp
bnQ2NF90IGNvbnRleHRJZCkKK3ZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Ojp3aWxs
RXhpdEZ1bGxzY3JlZW4oUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4dElk
KQogewogICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6
V2lsbEV4aXRGdWxsc2NyZWVuKGNvbnRleHRJZCkpOwogfQogCi12b2lkIFZpZGVvRnVsbHNjcmVl
bk1hbmFnZXJQcm94eTo6ZGlkRXhpdEZ1bGxzY3JlZW4odWludDY0X3QgY29udGV4dElkKQordm9p
ZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmRpZEV4aXRGdWxsc2NyZWVuKFBsYXliYWNr
U2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCkKIHsKICAgICBtX3BhZ2UtPnNlbmQo
TWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OkRpZEV4aXRGdWxsc2NyZWVuKGNvbnRl
eHRJZCkpOwogICAgIG1fcGFnZS0+ZGlkRXhpdEZ1bGxzY3JlZW4oKTsKIH0KIAotdm9pZCBWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmRpZEVudGVyRnVsbHNjcmVlbih1aW50NjRfdCBjb250
ZXh0SWQpCit2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6ZGlkRW50ZXJGdWxsc2Ny
ZWVuKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCkKIHsKICAgICBt
X3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OkRpZEVudGVyRnVs
bHNjcmVlbihjb250ZXh0SWQpKTsKICAgICBtX3BhZ2UtPmRpZEVudGVyRnVsbHNjcmVlbigpOwog
fQogCi12b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6ZGlkQ2xlYW51cEZ1bGxzY3Jl
ZW4odWludDY0X3QgY29udGV4dElkKQordm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6
OmRpZENsZWFudXBGdWxsc2NyZWVuKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNv
bnRleHRJZCkKIHsKICAgICBhdXRvJiBbbW9kZWwsIGludGVyZmFjZV0gPSBlbnN1cmVNb2RlbEFu
ZEludGVyZmFjZShjb250ZXh0SWQpOwogCkBAIC03NzksNyArNzc5LDcgQEAgdm9pZCBWaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmRpZENsZWFudXBGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRl
eHRJZCkKICAgICByZW1vdmVDbGllbnRGb3JDb250ZXh0KGNvbnRleHRJZCk7CiB9CiAKLXZvaWQg
VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpzZXRWaWRlb0xheWVyRnJhbWUodWludDY0X3Qg
Y29udGV4dElkLCBXZWJDb3JlOjpGbG9hdFJlY3QgZnJhbWUpCit2b2lkIFZpZGVvRnVsbHNjcmVl
bk1hbmFnZXJQcm94eTo6c2V0VmlkZW9MYXllckZyYW1lKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJ
ZGVudGlmaWVyIGNvbnRleHRJZCwgV2ViQ29yZTo6RmxvYXRSZWN0IGZyYW1lKQogewogICAgIEBh
dXRvcmVsZWFzZXBvb2wgewogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCkBAIC03OTUsMTcgKzc5
NSwxNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6c2V0VmlkZW9MYXllckZy
YW1lKHVpbnQ2NF90IGNvbnRleHRJZCwgV2ViQ29yZQogICAgIH0KIH0KIAotdm9pZCBWaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyUHJveHk6OnNldFZpZGVvTGF5ZXJHcmF2aXR5KHVpbnQ2NF90IGNvbnRl
eHRJZCwgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6VmlkZW9HcmF2aXR5IGdyYXZpdHkpCit2
b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6c2V0VmlkZW9MYXllckdyYXZpdHkoUGxh
eWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4dElkLCBXZWJDb3JlOjpNZWRpYVBs
YXllckVudW1zOjpWaWRlb0dyYXZpdHkgZ3Jhdml0eSkKIHsKICAgICBtX3BhZ2UtPnNlbmQoTWVz
c2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OlNldFZpZGVvTGF5ZXJHcmF2aXR5RW51bShj
b250ZXh0SWQsICh1bnNpZ25lZClncmF2aXR5KSk7CiB9CiAKLXZvaWQgVmlkZW9GdWxsc2NyZWVu
TWFuYWdlclByb3h5OjpmdWxsc2NyZWVuTW9kZUNoYW5nZWQodWludDY0X3QgY29udGV4dElkLCBX
ZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUgbW9kZSkK
K3ZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpmdWxsc2NyZWVuTW9kZUNoYW5nZWQo
UGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4dElkLCBXZWJDb3JlOjpIVE1M
TWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUgbW9kZSkKIHsKICAgICBtX3Bh
Z2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OkZ1bGxzY3JlZW5Nb2Rl
Q2hhbmdlZChjb250ZXh0SWQsIG1vZGUpKTsKIH0KIAotdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyUHJveHk6OmZ1bGxzY3JlZW5NYXlSZXR1cm5Ub0lubGluZSh1aW50NjRfdCBjb250ZXh0SWQp
Cit2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6ZnVsbHNjcmVlbk1heVJldHVyblRv
SW5saW5lKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCkKIHsKICAg
ICBib29sIGlzVmlld1Zpc2libGUgPSBtX3BhZ2UtPmlzVmlld1Zpc2libGUoKTsKICAgICBtX3Bh
Z2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OkZ1bGxzY3JlZW5NYXlS
ZXR1cm5Ub0lubGluZShjb250ZXh0SWQsIGlzVmlld1Zpc2libGUpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2Vi
S2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDIyM2IxMmZjOTY5ZGM1
NDllYWExNzEzZTIxOGY3OGNiMzFhZmI5NTkuLjY5NDA2ZjZjOGIxZGM4MGVhODE4ZDVkMWFjNmYx
MTZkMDMwMjRlNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpAQCAtOTM0LDYgKzkzNCw3IEBACiAJCTQxRkFGNUY1MUUzQzA2NDkwMDFBRTY3
OCAvKiBXZWJSVENSZXNvbHZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDFGQUY1RjQxRTNDMDY0MTAwMUFFNjc4IC8qIFdlYlJUQ1Jlc29sdmVyLmgg
Ki87IH07CiAJCTQxRkFGNUY4MUUzQzEwMjEwMDFBRTY3OCAvKiBMaWJXZWJSVENSZXNvbHZlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFGQUY1RjYx
RTNDMEI0NzAwMUFFNjc4IC8qIExpYldlYlJUQ1Jlc29sdmVyLmggKi87IH07CiAJCTQ0NTk5ODQy
MjI4MzNFODcwMEU2MTM3MyAvKiBTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0NTk5ODQxMjI4MzNFNjAw
MEU2MTM3MyAvKiBTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUuaCAqLzsgfTsKKwkJNDQ2REM2
NEMyNEEyRDhFNTAwNjFGMzkwIC8qIFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NDZEQzY0QjI0
QTJEOEFEMDA2MUYzOTAgLyogUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIuaCAqLzsg
fTsKIAkJNDQ4MjczNDcyNDUyOEY2MDAwQTk1NDkzIC8qIENvY29hSW1hZ2UuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0ODI3MzQ2MjQ1MjhGNjAwMEE5
NTQ5MyAvKiBDb2NvYUltYWdlLmggKi87IH07CiAJCTQ0OUQ5MERBMjFGREMzMEIwMEY2NzdDMCAv
KiBMb2NhbEF1dGhlbnRpY2F0aW9uU29mdExpbmsubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NDlEOTBEODIxRkQ2M0ZFMDBGNjc3QzAgLyogTG9jYWxB
dXRoZW50aWNhdGlvblNvZnRMaW5rLm1tICovOyB9OwogCQk0NEU5MzZGRDI0NDdDMkQ4MDA5RkEz
RTMgLyogTGVnYWN5Q3VzdG9tUHJvdG9jb2xJRC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDRFOTM2RkMyNDQ3QzI1NjAwOUZBM0UzIC8qIExlZ2FjeUN1
c3RvbVByb3RvY29sSUQuaCAqLzsgfTsKQEAgLTM1MzYsNiArMzUzNyw3IEBACiAJCTQxRkNENkJG
MjNDRTA0NDAwMEM2MjU2NyAvKiBSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2Vy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZVNhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllck1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDQ1MEFF
QkYxREMzRkFFNTAwOTk0M0YyIC8qIFNoYXJlZE1lbW9yeUNvY29hLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNoYXJlZE1lbW9yeUNvY29hLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDQ1OTk4NDEyMjgzM0U2MDAwRTYxMzczIC8qIFN5bnRoZXRp
Y0VkaXRpbmdDb21tYW5kVHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTeW50aGV0aWNFZGl0aW5nQ29t
bWFuZFR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDQ2REM2NEIyNEEyRDhB
RDAwNjFGMzkwIC8qIFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0ODI3MzQ2MjQ1MjhGNjAwMEE5NTQ5
MyAvKiBDb2NvYUltYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvY29h
SW1hZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDQ5RDkwRDgyMUZENjNGRTAw
RjY3N0MwIC8qIExvY2FsQXV0aGVudGljYXRpb25Tb2Z0TGluay5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IExvY2FsQXV0aGVudGljYXRpb25Tb2Z0TGluay5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDRBNDgxQzYyMUYyRDI3QjAwRjJGOTE5IC8q
IENsaWVudENlcnRpZmljYXRlQXV0aGVudGljYXRpb25YUENDb25zdGFudHMuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gQ2xpZW50Q2VydGlmaWNhdGVBdXRoZW50aWNhdGlvblhQQ0NvbnN0YW50cy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04MzgxLDYgKzgzODMsNyBAQAogCQkJ
Y2hpbGRyZW4gPSAoCiAJCQkJQ0Q0NTcwQ0IyNDQwRkIyQTAwQTNEQ0VCIC8qIEF1ZGlvU2Vzc2lv
blJvdXRpbmdBcmJpdHJhdG9yLmNwcCAqLywKIAkJCQlDRDQ1NzBDQTI0NDBGQjJBMDBBM0RDRUIg
LyogQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3IuaCAqLywKKwkJCQk0NDZEQzY0QjI0QTJE
OEFEMDA2MUYzOTAgLyogUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIuaCAqLywKIAkJ
CQlDREEyOUExOTFDQkRCRjQxMDA5MDFDQ0YgLyogUGxheWJhY2tTZXNzaW9uTWFuYWdlci5oICov
LAogCQkJCUNEQTI5QTFDMUNCREJGNUIwMDkwMUNDRiAvKiBQbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
Lm1lc3NhZ2VzLmluICovLAogCQkJCUNEQTI5QTE4MUNCREJGNDEwMDkwMUNDRiAvKiBQbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyLm1tICovLApAQCAtMTEwMDIsNiArMTEwMDUsNyBAQAogCQkJCTJEODcx
MDE3MTgyODQxNUQwMDE4RkEwMSAvKiBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20uaCBpbiBI
ZWFkZXJzICovLAogCQkJCTJEODk0OUYxMTgyMDQ0RjYwMEU4OThBQSAvKiBQbGF0Zm9ybUNBTGF5
ZXJSZW1vdGVUaWxlZEJhY2tpbmcuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDQzQzQUJCMTI3Qjk1
REMwMDMxN0YxNiAvKiBQbGF0Zm9ybVBvcHVwTWVudURhdGEuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTQ0NkRDNjRDMjRBMkQ4RTUwMDYxRjM5MCAvKiBQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRp
Zmllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RBMjlBMUIxQ0JEQkY0MTAwOTAxQ0NGIC8qIFBs
YXliYWNrU2Vzc2lvbk1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEQTI5QTI5MUNCRUI2
N0EwMDkwMUNDRiAvKiBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyTWVzc2FnZXMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUNEQTI5QTIwMUNCRUI1RkIwMDkwMUNDRiAvKiBQbGF5YmFja1Nlc3Npb25NYW5h
Z2VyUHJveHkuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL2NvY29hL1BsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyLmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4zNzdmMTdjNTMwYmI1ZWIyMTI3OWQ2YThmYTc5NjVlYjVjMjc1ZjhjCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1BsYXliYWNr
U2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyLmgKQEAgLTAsMCArMSwzNSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL09iamVjdElkZW50aWZpZXIuaD4KKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK2VudW0gUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXJU
eXBlIHsgfTsKK3VzaW5nIFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyID0gT2JqZWN0
SWRlbnRpZmllcjxQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllclR5cGU+OworCit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUGxheWJhY2tTZXNzaW9u
TWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1BsYXliYWNrU2Vzc2lv
bk1hbmFnZXIuaAppbmRleCA1NGRlMGJkMTk1OGM0NWJiOGJiYjA4N2I0MTllNTQ1NzVhYzMzODEz
Li44ODI1N2ZkMGY4ZGRjZTk5ZWE4ZDkyNDEwZjlmYzJmNzk1ZjU3ZTc0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlci5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTcgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgfHwgKFBMQVRG
T1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkKIAogI2luY2x1ZGUg
Ik1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgIlBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVu
dGlmaWVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9FdmVudExpc3RlbmVyLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9IVE1MTWVkaWFFbGVtZW50RW51bXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRm
b3JtQ0FMYXllci5oPgpAQCAtNTcsNyArNTgsNyBAQCBjbGFzcyBQbGF5YmFja1Nlc3Npb25JbnRl
cmZhY2VDb250ZXh0IGZpbmFsCiAgICAgOiBwdWJsaWMgUmVmQ291bnRlZDxQbGF5YmFja1Nlc3Np
b25JbnRlcmZhY2VDb250ZXh0PgogICAgICwgcHVibGljIFdlYkNvcmU6OlBsYXliYWNrU2Vzc2lv
bk1vZGVsQ2xpZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFBsYXliYWNrU2Vzc2lvbklu
dGVyZmFjZUNvbnRleHQ+IGNyZWF0ZShQbGF5YmFja1Nlc3Npb25NYW5hZ2VyJiBtYW5hZ2VyLCB1
aW50NjRfdCBjb250ZXh0SWQpCisgICAgc3RhdGljIFJlZjxQbGF5YmFja1Nlc3Npb25JbnRlcmZh
Y2VDb250ZXh0PiBjcmVhdGUoUGxheWJhY2tTZXNzaW9uTWFuYWdlciYgbWFuYWdlciwgUGxheWJh
Y2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4dElkKQogICAgIHsKICAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dChtYW5hZ2Vy
LCBjb250ZXh0SWQpKTsKICAgICB9CkBAIC04NiwxMCArODcsMTAgQEAgcHJpdmF0ZToKICAgICB2
b2lkIHZvbHVtZUNoYW5nZWQoZG91YmxlKSBmaW5hbDsKICAgICB2b2lkIGlzUGljdHVyZUluUGlj
dHVyZVN1cHBvcnRlZENoYW5nZWQoYm9vbCkgZmluYWw7CiAKLSAgICBQbGF5YmFja1Nlc3Npb25J
bnRlcmZhY2VDb250ZXh0KFBsYXliYWNrU2Vzc2lvbk1hbmFnZXImLCB1aW50NjRfdCBjb250ZXh0
SWQpOworICAgIFBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQoUGxheWJhY2tTZXNzaW9u
TWFuYWdlciYsIFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyKTsKIAogICAgIFBsYXli
YWNrU2Vzc2lvbk1hbmFnZXIqIG1fbWFuYWdlcjsKLSAgICB1aW50NjRfdCBtX2NvbnRleHRJZDsK
KyAgICBQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciBtX2NvbnRleHRJZDsKIH07CiAK
IGNsYXNzIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxQbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyPiwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CkBAIC0xMDMs
NyArMTA0LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRVcFBsYXliYWNrQ29udHJvbHNNYW5h
Z2VyKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQmKTsKICAgICB2b2lkIGNsZWFyUGxheWJhY2tD
b250cm9sc01hbmFnZXIoKTsKLSAgICB1aW50NjRfdCBjb250ZXh0SWRGb3JNZWRpYUVsZW1lbnQo
V2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudCYpOworICAgIFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJ
ZGVudGlmaWVyIGNvbnRleHRJZEZvck1lZGlhRWxlbWVudChXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50Jik7CiAKICAgICBXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50KiBjdXJyZW50UGxheWJhY2tD
b250cm9sc0VsZW1lbnQoKSBjb25zdDsKIApAQCAtMTE0LDU3ICsxMTUsNTcgQEAgcHJvdGVjdGVk
OgogICAgIGV4cGxpY2l0IFBsYXliYWNrU2Vzc2lvbk1hbmFnZXIoV2ViUGFnZSYpOwogCiAgICAg
dHlwZWRlZiBzdGQ6OnR1cGxlPFJlZlB0cjxXZWJDb3JlOjpQbGF5YmFja1Nlc3Npb25Nb2RlbE1l
ZGlhRWxlbWVudD4sIFJlZlB0cjxQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0Pj4gTW9k
ZWxJbnRlcmZhY2VUdXBsZTsKLSAgICBNb2RlbEludGVyZmFjZVR1cGxlIGNyZWF0ZU1vZGVsQW5k
SW50ZXJmYWNlKHVpbnQ2NF90IGNvbnRleHRJZCk7Ci0gICAgTW9kZWxJbnRlcmZhY2VUdXBsZSYg
ZW5zdXJlTW9kZWxBbmRJbnRlcmZhY2UodWludDY0X3QgY29udGV4dElkKTsKLSAgICBXZWJDb3Jl
OjpQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudCYgZW5zdXJlTW9kZWwodWludDY0X3Qg
Y29udGV4dElkKTsKLSAgICBQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0JiBlbnN1cmVJ
bnRlcmZhY2UodWludDY0X3QgY29udGV4dElkKTsKLSAgICB2b2lkIHJlbW92ZUNvbnRleHQodWlu
dDY0X3QgY29udGV4dElkKTsKLSAgICB2b2lkIGFkZENsaWVudEZvckNvbnRleHQodWludDY0X3Qg
Y29udGV4dElkKTsKLSAgICB2b2lkIHJlbW92ZUNsaWVudEZvckNvbnRleHQodWludDY0X3QgY29u
dGV4dElkKTsKKyAgICBNb2RlbEludGVyZmFjZVR1cGxlIGNyZWF0ZU1vZGVsQW5kSW50ZXJmYWNl
KFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyKTsKKyAgICBNb2RlbEludGVyZmFjZVR1
cGxlJiBlbnN1cmVNb2RlbEFuZEludGVyZmFjZShQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRp
Zmllcik7CisgICAgV2ViQ29yZTo6UGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQmIGVu
c3VyZU1vZGVsKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyKTsKKyAgICBQbGF5YmFj
a1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0JiBlbnN1cmVJbnRlcmZhY2UoUGxheWJhY2tTZXNzaW9u
Q29udGV4dElkZW50aWZpZXIpOworICAgIHZvaWQgcmVtb3ZlQ29udGV4dChQbGF5YmFja1Nlc3Np
b25Db250ZXh0SWRlbnRpZmllcik7CisgICAgdm9pZCBhZGRDbGllbnRGb3JDb250ZXh0KFBsYXli
YWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyKTsKKyAgICB2b2lkIHJlbW92ZUNsaWVudEZvckNv
bnRleHQoUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIpOwogCiAgICAgLy8gSW50ZXJm
YWNlIHRvIFBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQKLSAgICB2b2lkIGR1cmF0aW9u
Q2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIGRvdWJsZSk7Ci0gICAgdm9pZCBjdXJyZW50VGlt
ZUNoYW5nZWQodWludDY0X3QgY29udGV4dElkLCBkb3VibGUgY3VycmVudFRpbWUsIGRvdWJsZSBh
bmNob3JUaW1lKTsKLSAgICB2b2lkIGJ1ZmZlcmVkVGltZUNoYW5nZWQodWludDY0X3QgY29udGV4
dElkLCBkb3VibGUgYnVmZmVyZWRUaW1lKTsKLSAgICB2b2lkIHBsYXliYWNrU3RhcnRlZFRpbWVD
aGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJZCwgZG91YmxlIHBsYXliYWNrU3RhcnRlZFRpbWUpOwot
ICAgIHZvaWQgcmF0ZUNoYW5nZWQodWludDY0X3QgY29udGV4dElkLCBib29sIGlzUGxheWluZywg
ZmxvYXQgcGxheWJhY2tSYXRlKTsKLSAgICB2b2lkIHNlZWthYmxlUmFuZ2VzQ2hhbmdlZCh1aW50
NjRfdCBjb250ZXh0SWQsIGNvbnN0IFdlYkNvcmU6OlRpbWVSYW5nZXMmLCBkb3VibGUgbGFzdE1v
ZGlmaWVkVGltZSwgZG91YmxlIGxpdmVVcGRhdGVJbnRlcnZhbCk7Ci0gICAgdm9pZCBjYW5QbGF5
RmFzdFJldmVyc2VDaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vbCB2YWx1ZSk7Ci0gICAg
dm9pZCBhdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQodWludDY0X3QgY29udGV4dElk
LCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6TWVkaWFTZWxlY3Rpb25PcHRpb24+JiBvcHRpb25zLCB1
aW50NjRfdCBzZWxlY3RlZEluZGV4KTsKLSAgICB2b2lkIGxlZ2libGVNZWRpYVNlbGVjdGlvbk9w
dGlvbnNDaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJZCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6Ok1l
ZGlhU2VsZWN0aW9uT3B0aW9uPiYgb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCk7Ci0g
ICAgdm9pZCBhdWRpb01lZGlhU2VsZWN0aW9uSW5kZXhDaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJ
ZCwgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCk7Ci0gICAgdm9pZCBsZWdpYmxlTWVkaWFTZWxlY3Rp
b25JbmRleENoYW5nZWQodWludDY0X3QgY29udGV4dElkLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4
KTsKLSAgICB2b2lkIGV4dGVybmFsUGxheWJhY2tDaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJZCwg
Ym9vbCBlbmFibGVkLCBXZWJDb3JlOjpQbGF5YmFja1Nlc3Npb25Nb2RlbDo6RXh0ZXJuYWxQbGF5
YmFja1RhcmdldFR5cGUsIFN0cmluZyBsb2NhbGl6ZWREZXZpY2VOYW1lKTsKLSAgICB2b2lkIHdp
cmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkQ2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIGJv
b2wpOwotICAgIHZvaWQgbXV0ZWRDaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vbCk7Ci0g
ICAgdm9pZCB2b2x1bWVDaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJZCwgZG91YmxlKTsKLSAgICB2
b2lkIGlzUGljdHVyZUluUGljdHVyZVN1cHBvcnRlZENoYW5nZWQodWludDY0X3QgY29udGV4dElk
LCBib29sKTsKKyAgICB2b2lkIGR1cmF0aW9uQ2hhbmdlZChQbGF5YmFja1Nlc3Npb25Db250ZXh0
SWRlbnRpZmllciwgZG91YmxlKTsKKyAgICB2b2lkIGN1cnJlbnRUaW1lQ2hhbmdlZChQbGF5YmFj
a1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciwgZG91YmxlIGN1cnJlbnRUaW1lLCBkb3VibGUgYW5j
aG9yVGltZSk7CisgICAgdm9pZCBidWZmZXJlZFRpbWVDaGFuZ2VkKFBsYXliYWNrU2Vzc2lvbkNv
bnRleHRJZGVudGlmaWVyLCBkb3VibGUgYnVmZmVyZWRUaW1lKTsKKyAgICB2b2lkIHBsYXliYWNr
U3RhcnRlZFRpbWVDaGFuZ2VkKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyLCBkb3Vi
bGUgcGxheWJhY2tTdGFydGVkVGltZSk7CisgICAgdm9pZCByYXRlQ2hhbmdlZChQbGF5YmFja1Nl
c3Npb25Db250ZXh0SWRlbnRpZmllciwgYm9vbCBpc1BsYXlpbmcsIGZsb2F0IHBsYXliYWNrUmF0
ZSk7CisgICAgdm9pZCBzZWVrYWJsZVJhbmdlc0NoYW5nZWQoUGxheWJhY2tTZXNzaW9uQ29udGV4
dElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlRpbWVSYW5nZXMmLCBkb3VibGUgbGFzdE1vZGlm
aWVkVGltZSwgZG91YmxlIGxpdmVVcGRhdGVJbnRlcnZhbCk7CisgICAgdm9pZCBjYW5QbGF5RmFz
dFJldmVyc2VDaGFuZ2VkKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyLCBib29sIHZh
bHVlKTsKKyAgICB2b2lkIGF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZChQbGF5YmFj
a1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciwgY29uc3QgVmVjdG9yPFdlYkNvcmU6Ok1lZGlhU2Vs
ZWN0aW9uT3B0aW9uPiYgb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCk7CisgICAgdm9p
ZCBsZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZChQbGF5YmFja1Nlc3Npb25Db250
ZXh0SWRlbnRpZmllciwgY29uc3QgVmVjdG9yPFdlYkNvcmU6Ok1lZGlhU2VsZWN0aW9uT3B0aW9u
PiYgb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCk7CisgICAgdm9pZCBhdWRpb01lZGlh
U2VsZWN0aW9uSW5kZXhDaGFuZ2VkKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyLCB1
aW50NjRfdCBzZWxlY3RlZEluZGV4KTsKKyAgICB2b2lkIGxlZ2libGVNZWRpYVNlbGVjdGlvbklu
ZGV4Q2hhbmdlZChQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciwgdWludDY0X3Qgc2Vs
ZWN0ZWRJbmRleCk7CisgICAgdm9pZCBleHRlcm5hbFBsYXliYWNrQ2hhbmdlZChQbGF5YmFja1Nl
c3Npb25Db250ZXh0SWRlbnRpZmllciwgYm9vbCBlbmFibGVkLCBXZWJDb3JlOjpQbGF5YmFja1Nl
c3Npb25Nb2RlbDo6RXh0ZXJuYWxQbGF5YmFja1RhcmdldFR5cGUsIFN0cmluZyBsb2NhbGl6ZWRE
ZXZpY2VOYW1lKTsKKyAgICB2b2lkIHdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkQ2hhbmdl
ZChQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciwgYm9vbCk7CisgICAgdm9pZCBtdXRl
ZENoYW5nZWQoUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIsIGJvb2wpOworICAgIHZv
aWQgdm9sdW1lQ2hhbmdlZChQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciwgZG91Ymxl
KTsKKyAgICB2b2lkIGlzUGljdHVyZUluUGljdHVyZVN1cHBvcnRlZENoYW5nZWQoUGxheWJhY2tT
ZXNzaW9uQ29udGV4dElkZW50aWZpZXIsIGJvb2wpOwogCiAgICAgLy8gTWVzc2FnZXMgZnJvbSBQ
bGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkKLSAgICB2b2lkIHBsYXkodWludDY0X3QgY29udGV4
dElkKTsKLSAgICB2b2lkIHBhdXNlKHVpbnQ2NF90IGNvbnRleHRJZCk7Ci0gICAgdm9pZCB0b2dn
bGVQbGF5U3RhdGUodWludDY0X3QgY29udGV4dElkKTsKLSAgICB2b2lkIGJlZ2luU2NydWJiaW5n
KHVpbnQ2NF90IGNvbnRleHRJZCk7Ci0gICAgdm9pZCBlbmRTY3J1YmJpbmcodWludDY0X3QgY29u
dGV4dElkKTsKLSAgICB2b2lkIHNlZWtUb1RpbWUodWludDY0X3QgY29udGV4dElkLCBkb3VibGUg
dGltZSwgZG91YmxlIHRvbGVyYW5jZUJlZm9yZSwgZG91YmxlIHRvbGVyYW5jZUFmdGVyKTsKLSAg
ICB2b2lkIGZhc3RTZWVrKHVpbnQ2NF90IGNvbnRleHRJZCwgZG91YmxlIHRpbWUpOwotICAgIHZv
aWQgYmVnaW5TY2FubmluZ0ZvcndhcmQodWludDY0X3QgY29udGV4dElkKTsKLSAgICB2b2lkIGJl
Z2luU2Nhbm5pbmdCYWNrd2FyZCh1aW50NjRfdCBjb250ZXh0SWQpOwotICAgIHZvaWQgZW5kU2Nh
bm5pbmcodWludDY0X3QgY29udGV4dElkKTsKLSAgICB2b2lkIHNlbGVjdEF1ZGlvTWVkaWFPcHRp
b24odWludDY0X3QgY29udGV4dElkLCB1aW50NjRfdCBpbmRleCk7Ci0gICAgdm9pZCBzZWxlY3RM
ZWdpYmxlTWVkaWFPcHRpb24odWludDY0X3QgY29udGV4dElkLCB1aW50NjRfdCBpbmRleCk7Ci0g
ICAgdm9pZCBoYW5kbGVDb250cm9sbGVkRWxlbWVudElEUmVxdWVzdCh1aW50NjRfdCBjb250ZXh0
SWQpOwotICAgIHZvaWQgdG9nZ2xlUGljdHVyZUluUGljdHVyZSh1aW50NjRfdCBjb250ZXh0SWQp
OwotICAgIHZvaWQgdG9nZ2xlTXV0ZWQodWludDY0X3QgY29udGV4dElkKTsKLSAgICB2b2lkIHNl
dE11dGVkKHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vbCBtdXRlZCk7Ci0gICAgdm9pZCBzZXRWb2x1
bWUodWludDY0X3QgY29udGV4dElkLCBkb3VibGUgdm9sdW1lKTsKLSAgICB2b2lkIHNldFBsYXlp
bmdPblNlY29uZFNjcmVlbih1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgdmFsdWUpOworICAgIHZv
aWQgcGxheShQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllcik7CisgICAgdm9pZCBwYXVz
ZShQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllcik7CisgICAgdm9pZCB0b2dnbGVQbGF5
U3RhdGUoUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIpOworICAgIHZvaWQgYmVnaW5T
Y3J1YmJpbmcoUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIpOworICAgIHZvaWQgZW5k
U2NydWJiaW5nKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyKTsKKyAgICB2b2lkIHNl
ZWtUb1RpbWUoUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIsIGRvdWJsZSB0aW1lLCBk
b3VibGUgdG9sZXJhbmNlQmVmb3JlLCBkb3VibGUgdG9sZXJhbmNlQWZ0ZXIpOworICAgIHZvaWQg
ZmFzdFNlZWsoUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIsIGRvdWJsZSB0aW1lKTsK
KyAgICB2b2lkIGJlZ2luU2Nhbm5pbmdGb3J3YXJkKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVu
dGlmaWVyKTsKKyAgICB2b2lkIGJlZ2luU2Nhbm5pbmdCYWNrd2FyZChQbGF5YmFja1Nlc3Npb25D
b250ZXh0SWRlbnRpZmllcik7CisgICAgdm9pZCBlbmRTY2FubmluZyhQbGF5YmFja1Nlc3Npb25D
b250ZXh0SWRlbnRpZmllcik7CisgICAgdm9pZCBzZWxlY3RBdWRpb01lZGlhT3B0aW9uKFBsYXli
YWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyLCB1aW50NjRfdCBpbmRleCk7CisgICAgdm9pZCBz
ZWxlY3RMZWdpYmxlTWVkaWFPcHRpb24oUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIs
IHVpbnQ2NF90IGluZGV4KTsKKyAgICB2b2lkIGhhbmRsZUNvbnRyb2xsZWRFbGVtZW50SURSZXF1
ZXN0KFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyKTsKKyAgICB2b2lkIHRvZ2dsZVBp
Y3R1cmVJblBpY3R1cmUoUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIpOworICAgIHZv
aWQgdG9nZ2xlTXV0ZWQoUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIpOworICAgIHZv
aWQgc2V0TXV0ZWQoUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIsIGJvb2wgbXV0ZWQp
OworICAgIHZvaWQgc2V0Vm9sdW1lKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyLCBk
b3VibGUgdm9sdW1lKTsKKyAgICB2b2lkIHNldFBsYXlpbmdPblNlY29uZFNjcmVlbihQbGF5YmFj
a1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciwgYm9vbCB2YWx1ZSk7CiAKICAgICBXZWJQYWdlKiBt
X3BhZ2U7Ci0gICAgSGFzaE1hcDxXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50KiwgdWludDY0X3Q+
IG1fbWVkaWFFbGVtZW50czsKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBNb2RlbEludGVyZmFjZVR1
cGxlPiBtX2NvbnRleHRNYXA7Ci0gICAgdWludDY0X3QgbV9jb250cm9sc01hbmFnZXJDb250ZXh0
SWQgeyAwIH07Ci0gICAgSGFzaENvdW50ZWRTZXQ8dWludDY0X3Q+IG1fY2xpZW50Q291bnRzOwor
ICAgIEhhc2hNYXA8V2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudCosIFBsYXliYWNrU2Vzc2lvbkNv
bnRleHRJZGVudGlmaWVyPiBtX21lZGlhRWxlbWVudHM7CisgICAgSGFzaE1hcDxQbGF5YmFja1Nl
c3Npb25Db250ZXh0SWRlbnRpZmllciwgTW9kZWxJbnRlcmZhY2VUdXBsZT4gbV9jb250ZXh0TWFw
OworICAgIFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIG1fY29udHJvbHNNYW5hZ2Vy
Q29udGV4dElkOworICAgIEhhc2hDb3VudGVkU2V0PFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVu
dGlmaWVyPiBtX2NsaWVudENvdW50czsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1BsYXliYWNrU2Vzc2lvbk1h
bmFnZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUGxheWJh
Y2tTZXNzaW9uTWFuYWdlci5tZXNzYWdlcy5pbgppbmRleCBlNWJmNmY3ZjAwNTMyYWVkZmJiMGY5
ZTM4NjgxZTgxZGMwNmEyZWMwLi4xMmM3YmFiNTAyYjA3YjBhNzM2ZTY1ZTZiYjE1Mzg3YTk0YTEy
ZWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUGxheWJhY2tT
ZXNzaW9uTWFuYWdlci5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
Y29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlci5tZXNzYWdlcy5pbgpAQCAtMSw0ICsxLDQgQEAK
LSMgQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMg
Q29weXJpZ2h0IChDKSAyMDE2LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
IwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMywyMyArMjMsMjMgQEAKIAogI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpIHx8IChQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVT
RU5UQVRJT05fTU9ERSkpCiBtZXNzYWdlcyAtPiBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyIHsKLSAg
ICBQbGF5KHVpbnQ2NF90IGNvbnRleHRJZCkKLSAgICBQYXVzZSh1aW50NjRfdCBjb250ZXh0SWQp
Ci0gICAgVG9nZ2xlUGxheVN0YXRlKHVpbnQ2NF90IGNvbnRleHRJZCkKLSAgICBCZWdpblNjcnVi
YmluZyh1aW50NjRfdCBjb250ZXh0SWQpCi0gICAgRW5kU2NydWJiaW5nKHVpbnQ2NF90IGNvbnRl
eHRJZCkKLSAgICBTZWVrVG9UaW1lKHVpbnQ2NF90IGNvbnRleHRJZCwgZG91YmxlIHRpbWUsIGRv
dWJsZSB0b2xlcmFuY2VCZWZvcmUsIGRvdWJsZSB0b2xlcmFuY2VBZnRlcikKLSAgICBGYXN0U2Vl
ayh1aW50NjRfdCBjb250ZXh0SWQsIGRvdWJsZSB0aW1lKQotICAgIEJlZ2luU2Nhbm5pbmdGb3J3
YXJkKHVpbnQ2NF90IGNvbnRleHRJZCkKLSAgICBCZWdpblNjYW5uaW5nQmFja3dhcmQodWludDY0
X3QgY29udGV4dElkKQotICAgIEVuZFNjYW5uaW5nKHVpbnQ2NF90IGNvbnRleHRJZCkKLSAgICBT
ZWxlY3RBdWRpb01lZGlhT3B0aW9uKHVpbnQ2NF90IGNvbnRleHRJZCwgdWludDY0X3QgaW5kZXgp
Ci0gICAgU2VsZWN0TGVnaWJsZU1lZGlhT3B0aW9uKHVpbnQ2NF90IGNvbnRleHRJZCwgdWludDY0
X3QgaW5kZXgpCi0gICAgSGFuZGxlQ29udHJvbGxlZEVsZW1lbnRJRFJlcXVlc3QodWludDY0X3Qg
Y29udGV4dElkKQotICAgIFRvZ2dsZVBpY3R1cmVJblBpY3R1cmUodWludDY0X3QgY29udGV4dElk
KQotICAgIFRvZ2dsZU11dGVkKHVpbnQ2NF90IGNvbnRleHRJZCkKLSAgICBTZXRNdXRlZCh1aW50
NjRfdCBjb250ZXh0SWQsIGJvb2wgbXV0ZWQpCi0gICAgU2V0Vm9sdW1lKHVpbnQ2NF90IGNvbnRl
eHRJZCwgZG91YmxlIHZvbHVtZSkKLSAgICBTZXRQbGF5aW5nT25TZWNvbmRTY3JlZW4odWludDY0
X3QgY29udGV4dElkLCBib29sIHZhbHVlKQorICAgIFBsYXkoV2ViS2l0OjpQbGF5YmFja1Nlc3Np
b25Db250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQpCisgICAgUGF1c2UoV2ViS2l0OjpQbGF5YmFj
a1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQpCisgICAgVG9nZ2xlUGxheVN0YXRl
KFdlYktpdDo6UGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4dElkKQorICAg
IEJlZ2luU2NydWJiaW5nKFdlYktpdDo6UGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIg
Y29udGV4dElkKQorICAgIEVuZFNjcnViYmluZyhXZWJLaXQ6OlBsYXliYWNrU2Vzc2lvbkNvbnRl
eHRJZGVudGlmaWVyIGNvbnRleHRJZCkKKyAgICBTZWVrVG9UaW1lKFdlYktpdDo6UGxheWJhY2tT
ZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4dElkLCBkb3VibGUgdGltZSwgZG91YmxlIHRv
bGVyYW5jZUJlZm9yZSwgZG91YmxlIHRvbGVyYW5jZUFmdGVyKQorICAgIEZhc3RTZWVrKFdlYktp
dDo6UGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4dElkLCBkb3VibGUgdGlt
ZSkKKyAgICBCZWdpblNjYW5uaW5nRm9yd2FyZChXZWJLaXQ6OlBsYXliYWNrU2Vzc2lvbkNvbnRl
eHRJZGVudGlmaWVyIGNvbnRleHRJZCkKKyAgICBCZWdpblNjYW5uaW5nQmFja3dhcmQoV2ViS2l0
OjpQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQpCisgICAgRW5kU2Nh
bm5pbmcoV2ViS2l0OjpQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQp
CisgICAgU2VsZWN0QXVkaW9NZWRpYU9wdGlvbihXZWJLaXQ6OlBsYXliYWNrU2Vzc2lvbkNvbnRl
eHRJZGVudGlmaWVyIGNvbnRleHRJZCwgdWludDY0X3QgaW5kZXgpCisgICAgU2VsZWN0TGVnaWJs
ZU1lZGlhT3B0aW9uKFdlYktpdDo6UGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29u
dGV4dElkLCB1aW50NjRfdCBpbmRleCkKKyAgICBIYW5kbGVDb250cm9sbGVkRWxlbWVudElEUmVx
dWVzdChXZWJLaXQ6OlBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCkK
KyAgICBUb2dnbGVQaWN0dXJlSW5QaWN0dXJlKFdlYktpdDo6UGxheWJhY2tTZXNzaW9uQ29udGV4
dElkZW50aWZpZXIgY29udGV4dElkKQorICAgIFRvZ2dsZU11dGVkKFdlYktpdDo6UGxheWJhY2tT
ZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4dElkKQorICAgIFNldE11dGVkKFdlYktpdDo6
UGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4dElkLCBib29sIG11dGVkKQor
ICAgIFNldFZvbHVtZShXZWJLaXQ6OlBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNv
bnRleHRJZCwgZG91YmxlIHZvbHVtZSkKKyAgICBTZXRQbGF5aW5nT25TZWNvbmRTY3JlZW4oV2Vi
S2l0OjpQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQsIGJvb2wgdmFs
dWUpCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2Nv
YS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2Nv
Y29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXIubW0KaW5kZXggMjBkZTM0MWY2ZDE3YmIxZGMzMmU4
YTE5NjcwN2I1NDRhYTkyMTk1NC4uYTE5NjI0MDJjMGI2ZTg3MDk1NDA3YmNjYjUxZjFjZDg0MTY4
NTc2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1BsYXliYWNr
U2Vzc2lvbk1hbmFnZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1Bs
YXliYWNrU2Vzc2lvbk1hbmFnZXIubW0KQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDE2LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDE2LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00NiwxNSArNDYsOSBAQAogbmFtZXNwYWNlIFdl
YktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotc3RhdGljIHVpbnQ2NF90IG5leHRD
b250ZXh0SWQoKQotewotICAgIHN0YXRpYyB1aW50NjRfdCBjb250ZXh0SWQgPSAwOwotICAgIHJl
dHVybiArK2NvbnRleHRJZDsKLX0KLQogI3ByYWdtYSBtYXJrIC0gUGxheWJhY2tTZXNzaW9uSW50
ZXJmYWNlQ29udGV4dAogCi1QbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0OjpQbGF5YmFj
a1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0KFBsYXliYWNrU2Vzc2lvbk1hbmFnZXImIG1hbmFnZXIs
IHVpbnQ2NF90IGNvbnRleHRJZCkKK1BsYXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQ6OlBs
YXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQoUGxheWJhY2tTZXNzaW9uTWFuYWdlciYgbWFu
YWdlciwgUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4dElkKQogICAgIDog
bV9tYW5hZ2VyKCZtYW5hZ2VyKQogICAgICwgbV9jb250ZXh0SWQoY29udGV4dElkKQogewpAQCAt
MTk3LDcgKzE5MSw3IEBAIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6aW52YWxpZGF0ZSgp
CiAgICAgbV9wYWdlID0gbnVsbHB0cjsKIH0KIAotUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6TW9k
ZWxJbnRlcmZhY2VUdXBsZSBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpjcmVhdGVNb2RlbEFuZElu
dGVyZmFjZSh1aW50NjRfdCBjb250ZXh0SWQpCitQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpNb2Rl
bEludGVyZmFjZVR1cGxlIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmNyZWF0ZU1vZGVsQW5kSW50
ZXJmYWNlKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCkKIHsKICAg
ICBhdXRvIG1vZGVsID0gUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ6OmNyZWF0ZSgp
OwogICAgIGF1dG8gaW50ZXJmYWNlID0gUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dDo6
Y3JlYXRlKCp0aGlzLCBjb250ZXh0SWQpOwpAQCAtMjA2LDcgKzIwMCw3IEBAIFBsYXliYWNrU2Vz
c2lvbk1hbmFnZXI6Ok1vZGVsSW50ZXJmYWNlVHVwbGUgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6
Y3JlYXRlTW9kZWxBCiAgICAgcmV0dXJuIHN0ZDo6bWFrZV90dXBsZShXVEZNb3ZlKG1vZGVsKSwg
V1RGTW92ZShpbnRlcmZhY2UpKTsKIH0KIAotUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6TW9kZWxJ
bnRlcmZhY2VUdXBsZSYgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6ZW5zdXJlTW9kZWxBbmRJbnRl
cmZhY2UodWludDY0X3QgY29udGV4dElkKQorUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6TW9kZWxJ
bnRlcmZhY2VUdXBsZSYgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6ZW5zdXJlTW9kZWxBbmRJbnRl
cmZhY2UoUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4dElkKQogewogICAg
IGF1dG8gYWRkUmVzdWx0ID0gbV9jb250ZXh0TWFwLmFkZChjb250ZXh0SWQsIE1vZGVsSW50ZXJm
YWNlVHVwbGUoKSk7CiAgICAgaWYgKGFkZFJlc3VsdC5pc05ld0VudHJ5KQpAQCAtMjE0LDE3ICsy
MDgsMTcgQEAgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6TW9kZWxJbnRlcmZhY2VUdXBsZSYgUGxh
eWJhY2tTZXNzaW9uTWFuYWdlcjo6ZW5zdXJlTW9kZWwKICAgICByZXR1cm4gYWRkUmVzdWx0Lml0
ZXJhdG9yLT52YWx1ZTsKIH0KIAotV2ViQ29yZTo6UGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVs
ZW1lbnQmIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmVuc3VyZU1vZGVsKHVpbnQ2NF90IGNvbnRl
eHRJZCkKK1dlYkNvcmU6OlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50JiBQbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyOjplbnN1cmVNb2RlbChQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRp
ZmllciBjb250ZXh0SWQpCiB7CiAgICAgcmV0dXJuICpzdGQ6OmdldDwwPihlbnN1cmVNb2RlbEFu
ZEludGVyZmFjZShjb250ZXh0SWQpKTsKIH0KIAotUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29u
dGV4dCYgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6ZW5zdXJlSW50ZXJmYWNlKHVpbnQ2NF90IGNv
bnRleHRJZCkKK1BsYXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQmIFBsYXliYWNrU2Vzc2lv
bk1hbmFnZXI6OmVuc3VyZUludGVyZmFjZShQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmll
ciBjb250ZXh0SWQpCiB7CiAgICAgcmV0dXJuICpzdGQ6OmdldDwxPihlbnN1cmVNb2RlbEFuZElu
dGVyZmFjZShjb250ZXh0SWQpKTsKIH0KIAotdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpy
ZW1vdmVDb250ZXh0KHVpbnQ2NF90IGNvbnRleHRJZCkKK3ZvaWQgUGxheWJhY2tTZXNzaW9uTWFu
YWdlcjo6cmVtb3ZlQ29udGV4dChQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciBjb250
ZXh0SWQpCiB7CiAgICAgYXV0byYgW21vZGVsLCBpbnRlcmZhY2VdID0gZW5zdXJlTW9kZWxBbmRJ
bnRlcmZhY2UoY29udGV4dElkKTsKIApAQCAtMjM2LDEyICsyMzAsMTIgQEAgdm9pZCBQbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyOjpyZW1vdmVDb250ZXh0KHVpbnQ2NF90IGNvbnRleHRJZCkKICAgICBt
X2NvbnRleHRNYXAucmVtb3ZlKGNvbnRleHRJZCk7CiB9CiAKLXZvaWQgUGxheWJhY2tTZXNzaW9u
TWFuYWdlcjo6YWRkQ2xpZW50Rm9yQ29udGV4dCh1aW50NjRfdCBjb250ZXh0SWQpCit2b2lkIFBs
YXliYWNrU2Vzc2lvbk1hbmFnZXI6OmFkZENsaWVudEZvckNvbnRleHQoUGxheWJhY2tTZXNzaW9u
Q29udGV4dElkZW50aWZpZXIgY29udGV4dElkKQogewogICAgIG1fY2xpZW50Q291bnRzLmFkZChj
b250ZXh0SWQpOwogfQogCi12b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OnJlbW92ZUNsaWVu
dEZvckNvbnRleHQodWludDY0X3QgY29udGV4dElkKQordm9pZCBQbGF5YmFja1Nlc3Npb25NYW5h
Z2VyOjpyZW1vdmVDbGllbnRGb3JDb250ZXh0KFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlm
aWVyIGNvbnRleHRJZCkKIHsKICAgICBBU1NFUlQobV9jbGllbnRDb3VudHMuY29udGFpbnMoY29u
dGV4dElkKSk7CiAgICAgaWYgKG1fY2xpZW50Q291bnRzLnJlbW92ZShjb250ZXh0SWQpKQpAQCAt
MjUyLDcgKzI0Niw3IEBAIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6c2V0VXBQbGF5YmFj
a0NvbnRyb2xzTWFuYWdlcihXZWJDb3JlOjpIVE1MTWVkaWFFbGVtCiB7CiAgICAgYXV0byBmb3Vu
ZEl0ZXJhdG9yID0gbV9tZWRpYUVsZW1lbnRzLmZpbmQoJm1lZGlhRWxlbWVudCk7CiAgICAgaWYg
KGZvdW5kSXRlcmF0b3IgIT0gbV9tZWRpYUVsZW1lbnRzLmVuZCgpKSB7Ci0gICAgICAgIHVpbnQ2
NF90IGNvbnRleHRJZCA9IGZvdW5kSXRlcmF0b3ItPnZhbHVlOworICAgICAgICBhdXRvIGNvbnRl
eHRJZCA9IGZvdW5kSXRlcmF0b3ItPnZhbHVlOwogICAgICAgICBpZiAobV9jb250cm9sc01hbmFn
ZXJDb250ZXh0SWQgPT0gY29udGV4dElkKQogICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0yNjEs
NyArMjU1LDkgQEAgdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpzZXRVcFBsYXliYWNrQ29u
dHJvbHNNYW5hZ2VyKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW0KICAgICAgICAgaWYgKHByZXZpb3Vz
Q29udGV4dElkKQogICAgICAgICAgICAgcmVtb3ZlQ2xpZW50Rm9yQ29udGV4dChwcmV2aW91c0Nv
bnRleHRJZCk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgYXV0byBjb250ZXh0SWQgPSBtX21lZGlh
RWxlbWVudHMuZW5zdXJlKCZtZWRpYUVsZW1lbnQsIFsmXSB7IHJldHVybiBuZXh0Q29udGV4dElk
KCk7IH0pLml0ZXJhdG9yLT52YWx1ZTsKKyAgICAgICAgYXV0byBjb250ZXh0SWQgPSBtX21lZGlh
RWxlbWVudHMuZW5zdXJlKCZtZWRpYUVsZW1lbnQsIFsmXSB7CisgICAgICAgICAgICByZXR1cm4g
UGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXI6OmdlbmVyYXRlKCk7CisgICAgICAgIH0p
Lml0ZXJhdG9yLT52YWx1ZTsKIAogICAgICAgICBhdXRvIHByZXZpb3VzQ29udGV4dElkID0gbV9j
b250cm9sc01hbmFnZXJDb250ZXh0SWQ7CiAgICAgICAgIG1fY29udHJvbHNNYW5hZ2VyQ29udGV4
dElkID0gY29udGV4dElkOwpAQCAtMjgzLDE2ICsyNzksMTggQEAgdm9pZCBQbGF5YmFja1Nlc3Np
b25NYW5hZ2VyOjpjbGVhclBsYXliYWNrQ29udHJvbHNNYW5hZ2VyKCkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgcmVtb3ZlQ2xpZW50Rm9yQ29udGV4dChtX2NvbnRyb2xzTWFuYWdlckNvbnRleHRJ
ZCk7Ci0gICAgbV9jb250cm9sc01hbmFnZXJDb250ZXh0SWQgPSAwOworICAgIG1fY29udHJvbHNN
YW5hZ2VyQ29udGV4dElkID0geyB9OwogCiAgICAgbV9wYWdlLT52aWRlb0NvbnRyb2xzTWFuYWdl
ckRpZENoYW5nZSgpOwogICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9u
TWFuYWdlclByb3h5OjpDbGVhclBsYXliYWNrQ29udHJvbHNNYW5hZ2VyKCkpOwogfQogCi11aW50
NjRfdCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpjb250ZXh0SWRGb3JNZWRpYUVsZW1lbnQoV2Vi
Q29yZTo6SFRNTE1lZGlhRWxlbWVudCYgbWVkaWFFbGVtZW50KQorUGxheWJhY2tTZXNzaW9uQ29u
dGV4dElkZW50aWZpZXIgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6Y29udGV4dElkRm9yTWVkaWFF
bGVtZW50KFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQmIG1lZGlhRWxlbWVudCkKIHsKLSAgICBh
dXRvIGFkZFJlc3VsdCA9IG1fbWVkaWFFbGVtZW50cy5lbnN1cmUoJm1lZGlhRWxlbWVudCwgWyZd
IHsgcmV0dXJuIG5leHRDb250ZXh0SWQoKTsgfSk7Ci0gICAgdWludDY0X3QgY29udGV4dElkID0g
YWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKKyAgICBhdXRvIGFkZFJlc3VsdCA9IG1fbWVkaWFF
bGVtZW50cy5lbnN1cmUoJm1lZGlhRWxlbWVudCwgWyZdIHsKKyAgICAgICAgcmV0dXJuIFBsYXli
YWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyOjpnZW5lcmF0ZSgpOworICAgIH0pOworICAgIGF1
dG8gY29udGV4dElkID0gYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKICAgICBlbnN1cmVNb2Rl
bChjb250ZXh0SWQpLnNldE1lZGlhRWxlbWVudCgmbWVkaWFFbGVtZW50KTsKICAgICByZXR1cm4g
Y29udGV4dElkOwogfQpAQCAtMzExLDMyICszMDksMzIgQEAgV2ViQ29yZTo6SFRNTE1lZGlhRWxl
bWVudCogUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6Y3VycmVudFBsYXliYWNrQ29udHJvbHNFbGVt
ZW4KIAogI3ByYWdtYSBtYXJrIEludGVyZmFjZSB0byBQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VD
b250ZXh0OgogCi12b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmR1cmF0aW9uQ2hhbmdlZCh1
aW50NjRfdCBjb250ZXh0SWQsIGRvdWJsZSBkdXJhdGlvbikKK3ZvaWQgUGxheWJhY2tTZXNzaW9u
TWFuYWdlcjo6ZHVyYXRpb25DaGFuZ2VkKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVy
IGNvbnRleHRJZCwgZG91YmxlIGR1cmF0aW9uKQogewogICAgIG1fcGFnZS0+c2VuZChNZXNzYWdl
czo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpEdXJhdGlvbkNoYW5nZWQoY29udGV4dElk
LCBkdXJhdGlvbikpOwogfQogCi12b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmN1cnJlbnRU
aW1lQ2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIGRvdWJsZSBjdXJyZW50VGltZSwgZG91Ymxl
IGFuY2hvclRpbWUpCit2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmN1cnJlbnRUaW1lQ2hh
bmdlZChQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQsIGRvdWJsZSBj
dXJyZW50VGltZSwgZG91YmxlIGFuY2hvclRpbWUpCiB7CiAgICAgbV9wYWdlLT5zZW5kKE1lc3Nh
Z2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OkN1cnJlbnRUaW1lQ2hhbmdlZChjb250
ZXh0SWQsIGN1cnJlbnRUaW1lLCBhbmNob3JUaW1lKSk7CiB9CiAKLXZvaWQgUGxheWJhY2tTZXNz
aW9uTWFuYWdlcjo6YnVmZmVyZWRUaW1lQ2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIGRvdWJs
ZSBidWZmZXJlZFRpbWUpCit2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmJ1ZmZlcmVkVGlt
ZUNoYW5nZWQoUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4dElkLCBkb3Vi
bGUgYnVmZmVyZWRUaW1lKQogewogICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tT
ZXNzaW9uTWFuYWdlclByb3h5OjpCdWZmZXJlZFRpbWVDaGFuZ2VkKGNvbnRleHRJZCwgYnVmZmVy
ZWRUaW1lKSk7CiB9CiAKLXZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6cGxheWJhY2tTdGFy
dGVkVGltZUNoYW5nZWQodWludDY0X3QgY29udGV4dElkLCBkb3VibGUgcGxheWJhY2tTdGFydGVk
VGltZSkKK3ZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6cGxheWJhY2tTdGFydGVkVGltZUNo
YW5nZWQoUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4dElkLCBkb3VibGUg
cGxheWJhY2tTdGFydGVkVGltZSkKIHsKICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXli
YWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6UGxheWJhY2tTdGFydGVkVGltZUNoYW5nZWQoY29udGV4
dElkLCBwbGF5YmFja1N0YXJ0ZWRUaW1lKSk7CiB9CiAKLXZvaWQgUGxheWJhY2tTZXNzaW9uTWFu
YWdlcjo6cmF0ZUNoYW5nZWQodWludDY0X3QgY29udGV4dElkLCBib29sIGlzUGxheWluZywgZmxv
YXQgcGxheWJhY2tSYXRlKQordm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpyYXRlQ2hhbmdl
ZChQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQsIGJvb2wgaXNQbGF5
aW5nLCBmbG9hdCBwbGF5YmFja1JhdGUpCiB7CiAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQ
bGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OlJhdGVDaGFuZ2VkKGNvbnRleHRJZCwgaXNQbGF5
aW5nLCBwbGF5YmFja1JhdGUpKTsKIH0KIAotdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpz
ZWVrYWJsZVJhbmdlc0NoYW5nZWQodWludDY0X3QgY29udGV4dElkLCBjb25zdCBXZWJDb3JlOjpU
aW1lUmFuZ2VzJiB0aW1lUmFuZ2VzLCBkb3VibGUgbGFzdE1vZGlmaWVkVGltZSwgZG91YmxlIGxp
dmVVcGRhdGVJbnRlcnZhbCkKK3ZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6c2Vla2FibGVS
YW5nZXNDaGFuZ2VkKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCwg
Y29uc3QgV2ViQ29yZTo6VGltZVJhbmdlcyYgdGltZVJhbmdlcywgZG91YmxlIGxhc3RNb2RpZmll
ZFRpbWUsIGRvdWJsZSBsaXZlVXBkYXRlSW50ZXJ2YWwpCiB7CiAgICAgVmVjdG9yPHN0ZDo6cGFp
cjxkb3VibGUsIGRvdWJsZT4+IHJhbmdlc1ZlY3RvcjsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgdGltZVJhbmdlcy5sZW5ndGgoKTsgaSsrKSB7CkBAIC0zNDcsMTYyICszNDUsMTYyIEBA
IHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6c2Vla2FibGVSYW5nZXNDaGFuZ2VkKHVpbnQ2
NF90IGNvbnRleHRJZCwgY29uc3QgV2ViCiAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5
YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OlNlZWthYmxlUmFuZ2VzVmVjdG9yQ2hhbmdlZChjb250
ZXh0SWQsIFdURk1vdmUocmFuZ2VzVmVjdG9yKSwgbGFzdE1vZGlmaWVkVGltZSwgbGl2ZVVwZGF0
ZUludGVydmFsKSk7CiB9CiAKLXZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6Y2FuUGxheUZh
c3RSZXZlcnNlQ2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgdmFsdWUpCit2b2lkIFBs
YXliYWNrU2Vzc2lvbk1hbmFnZXI6OmNhblBsYXlGYXN0UmV2ZXJzZUNoYW5nZWQoUGxheWJhY2tT
ZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4dElkLCBib29sIHZhbHVlKQogewogICAgIG1f
cGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpDYW5QbGF5
RmFzdFJldmVyc2VDaGFuZ2VkKGNvbnRleHRJZCwgdmFsdWUpKTsKIH0KIAotdm9pZCBQbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyOjphdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQodWludDY0
X3QgY29udGV4dElkLCBjb25zdCBWZWN0b3I8TWVkaWFTZWxlY3Rpb25PcHRpb24+JiBvcHRpb25z
LCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KQordm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjph
dWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQoUGxheWJhY2tTZXNzaW9uQ29udGV4dElk
ZW50aWZpZXIgY29udGV4dElkLCBjb25zdCBWZWN0b3I8TWVkaWFTZWxlY3Rpb25PcHRpb24+JiBv
cHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KQogewogICAgIG1fcGFnZS0+c2VuZChNZXNz
YWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpBdWRpb01lZGlhU2VsZWN0aW9uT3B0
aW9uc0NoYW5nZWQoY29udGV4dElkLCBvcHRpb25zLCBzZWxlY3RlZEluZGV4KSk7CiB9CiAKLXZv
aWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6bGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uc0No
YW5nZWQodWludDY0X3QgY29udGV4dElkLCBjb25zdCBWZWN0b3I8TWVkaWFTZWxlY3Rpb25PcHRp
b24+JiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KQordm9pZCBQbGF5YmFja1Nlc3Np
b25NYW5hZ2VyOjpsZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZChQbGF5YmFja1Nl
c3Npb25Db250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQsIGNvbnN0IFZlY3RvcjxNZWRpYVNlbGVj
dGlvbk9wdGlvbj4mIG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpCiB7CiAgICAgbV9w
YWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OkxlZ2libGVN
ZWRpYVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2VkKGNvbnRleHRJZCwgb3B0aW9ucywgc2VsZWN0ZWRJ
bmRleCkpOwogfQogCi12b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmV4dGVybmFsUGxheWJh
Y2tDaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vbCBlbmFibGVkLCBQbGF5YmFja1Nlc3Np
b25Nb2RlbDo6RXh0ZXJuYWxQbGF5YmFja1RhcmdldFR5cGUgdGFyZ2V0VHlwZSwgU3RyaW5nIGxv
Y2FsaXplZERldmljZU5hbWUpCit2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmV4dGVybmFs
UGxheWJhY2tDaGFuZ2VkKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJ
ZCwgYm9vbCBlbmFibGVkLCBQbGF5YmFja1Nlc3Npb25Nb2RlbDo6RXh0ZXJuYWxQbGF5YmFja1Rh
cmdldFR5cGUgdGFyZ2V0VHlwZSwgU3RyaW5nIGxvY2FsaXplZERldmljZU5hbWUpCiB7CiAgICAg
bV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OkV4dGVy
bmFsUGxheWJhY2tQcm9wZXJ0aWVzQ2hhbmdlZChjb250ZXh0SWQsIGVuYWJsZWQsIHN0YXRpY19j
YXN0PHVpbnQzMl90Pih0YXJnZXRUeXBlKSwgbG9jYWxpemVkRGV2aWNlTmFtZSkpOwogfQogCi12
b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmF1ZGlvTWVkaWFTZWxlY3Rpb25JbmRleENoYW5n
ZWQodWludDY0X3QgY29udGV4dElkLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KQordm9pZCBQbGF5
YmFja1Nlc3Npb25NYW5hZ2VyOjphdWRpb01lZGlhU2VsZWN0aW9uSW5kZXhDaGFuZ2VkKFBsYXli
YWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCwgdWludDY0X3Qgc2VsZWN0ZWRJ
bmRleCkKIHsKICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFn
ZXJQcm94eTo6QXVkaW9NZWRpYVNlbGVjdGlvbkluZGV4Q2hhbmdlZChjb250ZXh0SWQsIHNlbGVj
dGVkSW5kZXgpKTsKIH0KIAotdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpsZWdpYmxlTWVk
aWFTZWxlY3Rpb25JbmRleENoYW5nZWQodWludDY0X3QgY29udGV4dElkLCB1aW50NjRfdCBzZWxl
Y3RlZEluZGV4KQordm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpsZWdpYmxlTWVkaWFTZWxl
Y3Rpb25JbmRleENoYW5nZWQoUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4
dElkLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KQogewogICAgIG1fcGFnZS0+c2VuZChNZXNzYWdl
czo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpMZWdpYmxlTWVkaWFTZWxlY3Rpb25JbmRl
eENoYW5nZWQoY29udGV4dElkLCBzZWxlY3RlZEluZGV4KSk7CiB9CiAKLXZvaWQgUGxheWJhY2tT
ZXNzaW9uTWFuYWdlcjo6d2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWRDaGFuZ2VkKHVpbnQ2
NF90IGNvbnRleHRJZCwgYm9vbCBkaXNhYmxlZCkKK3ZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdl
cjo6d2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWRDaGFuZ2VkKFBsYXliYWNrU2Vzc2lvbkNv
bnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCwgYm9vbCBkaXNhYmxlZCkKIHsKICAgICBtX3BhZ2Ut
PnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6V2lyZWxlc3NWaWRl
b1BsYXliYWNrRGlzYWJsZWRDaGFuZ2VkKGNvbnRleHRJZCwgZGlzYWJsZWQpKTsKIH0KIAotdm9p
ZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjptdXRlZENoYW5nZWQodWludDY0X3QgY29udGV4dElk
LCBib29sIG11dGVkKQordm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjptdXRlZENoYW5nZWQo
UGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4dElkLCBib29sIG11dGVkKQog
ewogICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5
OjpNdXRlZENoYW5nZWQoY29udGV4dElkLCBtdXRlZCkpOwogfQogCi12b2lkIFBsYXliYWNrU2Vz
c2lvbk1hbmFnZXI6OnZvbHVtZUNoYW5nZWQodWludDY0X3QgY29udGV4dElkLCBkb3VibGUgdm9s
dW1lKQordm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjp2b2x1bWVDaGFuZ2VkKFBsYXliYWNr
U2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCwgZG91YmxlIHZvbHVtZSkKIHsKICAg
ICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6Vm9s
dW1lQ2hhbmdlZChjb250ZXh0SWQsIHZvbHVtZSkpOwogfQogCi12b2lkIFBsYXliYWNrU2Vzc2lv
bk1hbmFnZXI6OmlzUGljdHVyZUluUGljdHVyZVN1cHBvcnRlZENoYW5nZWQodWludDY0X3QgY29u
dGV4dElkLCBib29sIHN1cHBvcnRlZCkKK3ZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6aXNQ
aWN0dXJlSW5QaWN0dXJlU3VwcG9ydGVkQ2hhbmdlZChQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRl
bnRpZmllciBjb250ZXh0SWQsIGJvb2wgc3VwcG9ydGVkKQogewogICAgIG1fcGFnZS0+c2VuZChN
ZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpQaWN0dXJlSW5QaWN0dXJlU3Vw
cG9ydGVkQ2hhbmdlZChjb250ZXh0SWQsIHN1cHBvcnRlZCkpOwogfQogCiAjcHJhZ21hIG1hcmsg
TWVzc2FnZXMgZnJvbSBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6CiAKLXZvaWQgUGxheWJh
Y2tTZXNzaW9uTWFuYWdlcjo6cGxheSh1aW50NjRfdCBjb250ZXh0SWQpCit2b2lkIFBsYXliYWNr
U2Vzc2lvbk1hbmFnZXI6OnBsYXkoUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29u
dGV4dElkKQogewogICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGluZGljYXRvcihQcm9jZXNzaW5n
VXNlckdlc3R1cmUpOwogICAgIGVuc3VyZU1vZGVsKGNvbnRleHRJZCkucGxheSgpOwogfQogCi12
b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OnBhdXNlKHVpbnQ2NF90IGNvbnRleHRJZCkKK3Zv
aWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6cGF1c2UoUGxheWJhY2tTZXNzaW9uQ29udGV4dElk
ZW50aWZpZXIgY29udGV4dElkKQogewogICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGluZGljYXRv
cihQcm9jZXNzaW5nVXNlckdlc3R1cmUpOwogICAgIGVuc3VyZU1vZGVsKGNvbnRleHRJZCkucGF1
c2UoKTsKIH0KIAotdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjp0b2dnbGVQbGF5U3RhdGUo
dWludDY0X3QgY29udGV4dElkKQordm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjp0b2dnbGVQ
bGF5U3RhdGUoUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4dElkKQogewog
ICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGluZGljYXRvcihQcm9jZXNzaW5nVXNlckdlc3R1cmUp
OwogICAgIGVuc3VyZU1vZGVsKGNvbnRleHRJZCkudG9nZ2xlUGxheVN0YXRlKCk7CiB9CiAKLXZv
aWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6YmVnaW5TY3J1YmJpbmcodWludDY0X3QgY29udGV4
dElkKQordm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpiZWdpblNjcnViYmluZyhQbGF5YmFj
a1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQpCiB7CiAgICAgVXNlckdlc3R1cmVJ
bmRpY2F0b3IgaW5kaWNhdG9yKFByb2Nlc3NpbmdVc2VyR2VzdHVyZSk7CiAgICAgZW5zdXJlTW9k
ZWwoY29udGV4dElkKS5iZWdpblNjcnViYmluZygpOwogfQogCi12b2lkIFBsYXliYWNrU2Vzc2lv
bk1hbmFnZXI6OmVuZFNjcnViYmluZyh1aW50NjRfdCBjb250ZXh0SWQpCit2b2lkIFBsYXliYWNr
U2Vzc2lvbk1hbmFnZXI6OmVuZFNjcnViYmluZyhQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRp
ZmllciBjb250ZXh0SWQpCiB7CiAgICAgVXNlckdlc3R1cmVJbmRpY2F0b3IgaW5kaWNhdG9yKFBy
b2Nlc3NpbmdVc2VyR2VzdHVyZSk7CiAgICAgZW5zdXJlTW9kZWwoY29udGV4dElkKS5lbmRTY3J1
YmJpbmcoKTsKIH0KIAotdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpzZWVrVG9UaW1lKHVp
bnQ2NF90IGNvbnRleHRJZCwgZG91YmxlIHRpbWUsIGRvdWJsZSB0b2xlcmFuY2VCZWZvcmUsIGRv
dWJsZSB0b2xlcmFuY2VBZnRlcikKK3ZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6c2Vla1Rv
VGltZShQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQsIGRvdWJsZSB0
aW1lLCBkb3VibGUgdG9sZXJhbmNlQmVmb3JlLCBkb3VibGUgdG9sZXJhbmNlQWZ0ZXIpCiB7CiAg
ICAgVXNlckdlc3R1cmVJbmRpY2F0b3IgaW5kaWNhdG9yKFByb2Nlc3NpbmdVc2VyR2VzdHVyZSk7
CiAgICAgZW5zdXJlTW9kZWwoY29udGV4dElkKS5zZWVrVG9UaW1lKHRpbWUsIHRvbGVyYW5jZUJl
Zm9yZSwgdG9sZXJhbmNlQWZ0ZXIpOwogfQogCi12b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6
OmZhc3RTZWVrKHVpbnQ2NF90IGNvbnRleHRJZCwgZG91YmxlIHRpbWUpCit2b2lkIFBsYXliYWNr
U2Vzc2lvbk1hbmFnZXI6OmZhc3RTZWVrKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVy
IGNvbnRleHRJZCwgZG91YmxlIHRpbWUpCiB7CiAgICAgVXNlckdlc3R1cmVJbmRpY2F0b3IgaW5k
aWNhdG9yKFByb2Nlc3NpbmdVc2VyR2VzdHVyZSk7CiAgICAgZW5zdXJlTW9kZWwoY29udGV4dElk
KS5mYXN0U2Vlayh0aW1lKTsKIH0KIAotdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpiZWdp
blNjYW5uaW5nRm9yd2FyZCh1aW50NjRfdCBjb250ZXh0SWQpCit2b2lkIFBsYXliYWNrU2Vzc2lv
bk1hbmFnZXI6OmJlZ2luU2Nhbm5pbmdGb3J3YXJkKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVu
dGlmaWVyIGNvbnRleHRJZCkKIHsKICAgICBVc2VyR2VzdHVyZUluZGljYXRvciBpbmRpY2F0b3Io
UHJvY2Vzc2luZ1VzZXJHZXN0dXJlKTsKICAgICBlbnN1cmVNb2RlbChjb250ZXh0SWQpLmJlZ2lu
U2Nhbm5pbmdGb3J3YXJkKCk7CiB9CiAKLXZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6YmVn
aW5TY2FubmluZ0JhY2t3YXJkKHVpbnQ2NF90IGNvbnRleHRJZCkKK3ZvaWQgUGxheWJhY2tTZXNz
aW9uTWFuYWdlcjo6YmVnaW5TY2FubmluZ0JhY2t3YXJkKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJ
ZGVudGlmaWVyIGNvbnRleHRJZCkKIHsKICAgICBVc2VyR2VzdHVyZUluZGljYXRvciBpbmRpY2F0
b3IoUHJvY2Vzc2luZ1VzZXJHZXN0dXJlKTsKICAgICBlbnN1cmVNb2RlbChjb250ZXh0SWQpLmJl
Z2luU2Nhbm5pbmdCYWNrd2FyZCgpOwogfQogCi12b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6
OmVuZFNjYW5uaW5nKHVpbnQ2NF90IGNvbnRleHRJZCkKK3ZvaWQgUGxheWJhY2tTZXNzaW9uTWFu
YWdlcjo6ZW5kU2Nhbm5pbmcoUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4
dElkKQogewogICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGluZGljYXRvcihQcm9jZXNzaW5nVXNl
ckdlc3R1cmUpOwogICAgIGVuc3VyZU1vZGVsKGNvbnRleHRJZCkuZW5kU2Nhbm5pbmcoKTsKIH0K
IAotdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpzZWxlY3RBdWRpb01lZGlhT3B0aW9uKHVp
bnQ2NF90IGNvbnRleHRJZCwgdWludDY0X3QgaW5kZXgpCit2b2lkIFBsYXliYWNrU2Vzc2lvbk1h
bmFnZXI6OnNlbGVjdEF1ZGlvTWVkaWFPcHRpb24oUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50
aWZpZXIgY29udGV4dElkLCB1aW50NjRfdCBpbmRleCkKIHsKICAgICBVc2VyR2VzdHVyZUluZGlj
YXRvciBpbmRpY2F0b3IoUHJvY2Vzc2luZ1VzZXJHZXN0dXJlKTsKICAgICBlbnN1cmVNb2RlbChj
b250ZXh0SWQpLnNlbGVjdEF1ZGlvTWVkaWFPcHRpb24oaW5kZXgpOwogfQogCi12b2lkIFBsYXli
YWNrU2Vzc2lvbk1hbmFnZXI6OnNlbGVjdExlZ2libGVNZWRpYU9wdGlvbih1aW50NjRfdCBjb250
ZXh0SWQsIHVpbnQ2NF90IGluZGV4KQordm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpzZWxl
Y3RMZWdpYmxlTWVkaWFPcHRpb24oUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29u
dGV4dElkLCB1aW50NjRfdCBpbmRleCkKIHsKICAgICBVc2VyR2VzdHVyZUluZGljYXRvciBpbmRp
Y2F0b3IoUHJvY2Vzc2luZ1VzZXJHZXN0dXJlKTsKICAgICBlbnN1cmVNb2RlbChjb250ZXh0SWQp
LnNlbGVjdExlZ2libGVNZWRpYU9wdGlvbihpbmRleCk7CiB9CiAKLXZvaWQgUGxheWJhY2tTZXNz
aW9uTWFuYWdlcjo6aGFuZGxlQ29udHJvbGxlZEVsZW1lbnRJRFJlcXVlc3QodWludDY0X3QgY29u
dGV4dElkKQordm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpoYW5kbGVDb250cm9sbGVkRWxl
bWVudElEUmVxdWVzdChQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQp
CiB7CiAgICAgYXV0byBlbGVtZW50ID0gZW5zdXJlTW9kZWwoY29udGV4dElkKS5tZWRpYUVsZW1l
bnQoKTsKICAgICBpZiAoZWxlbWVudCkKICAgICAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQ
bGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OkhhbmRsZUNvbnRyb2xsZWRFbGVtZW50SURSZXNw
b25zZShjb250ZXh0SWQsIGVsZW1lbnQtPmdldElkQXR0cmlidXRlKCkpKTsKIH0KIAotdm9pZCBQ
bGF5YmFja1Nlc3Npb25NYW5hZ2VyOjp0b2dnbGVQaWN0dXJlSW5QaWN0dXJlKHVpbnQ2NF90IGNv
bnRleHRJZCkKK3ZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6dG9nZ2xlUGljdHVyZUluUGlj
dHVyZShQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQpCiB7CiAgICAg
VXNlckdlc3R1cmVJbmRpY2F0b3IgaW5kaWNhdG9yKFByb2Nlc3NpbmdVc2VyR2VzdHVyZSk7CiAg
ICAgZW5zdXJlTW9kZWwoY29udGV4dElkKS50b2dnbGVQaWN0dXJlSW5QaWN0dXJlKCk7CiB9CiAK
LXZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6dG9nZ2xlTXV0ZWQodWludDY0X3QgY29udGV4
dElkKQordm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjp0b2dnbGVNdXRlZChQbGF5YmFja1Nl
c3Npb25Db250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQpCiB7CiAgICAgVXNlckdlc3R1cmVJbmRp
Y2F0b3IgaW5kaWNhdG9yKFByb2Nlc3NpbmdVc2VyR2VzdHVyZSk7CiAgICAgZW5zdXJlTW9kZWwo
Y29udGV4dElkKS50b2dnbGVNdXRlZCgpOwogfQogCi12b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFn
ZXI6OnNldE11dGVkKHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vbCBtdXRlZCkKK3ZvaWQgUGxheWJh
Y2tTZXNzaW9uTWFuYWdlcjo6c2V0TXV0ZWQoUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZp
ZXIgY29udGV4dElkLCBib29sIG11dGVkKQogewogICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGlu
ZGljYXRvcihQcm9jZXNzaW5nVXNlckdlc3R1cmUpOwogICAgIGVuc3VyZU1vZGVsKGNvbnRleHRJ
ZCkuc2V0TXV0ZWQobXV0ZWQpOwogfQogCi12b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OnNl
dFZvbHVtZSh1aW50NjRfdCBjb250ZXh0SWQsIGRvdWJsZSB2b2x1bWUpCit2b2lkIFBsYXliYWNr
U2Vzc2lvbk1hbmFnZXI6OnNldFZvbHVtZShQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmll
ciBjb250ZXh0SWQsIGRvdWJsZSB2b2x1bWUpCiB7CiAgICAgVXNlckdlc3R1cmVJbmRpY2F0b3Ig
aW5kaWNhdG9yKFByb2Nlc3NpbmdVc2VyR2VzdHVyZSk7CiAgICAgZW5zdXJlTW9kZWwoY29udGV4
dElkKS5zZXRWb2x1bWUodm9sdW1lKTsKIH0KIAotdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
OjpzZXRQbGF5aW5nT25TZWNvbmRTY3JlZW4odWludDY0X3QgY29udGV4dElkLCBib29sIHZhbHVl
KQordm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpzZXRQbGF5aW5nT25TZWNvbmRTY3JlZW4o
UGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4dElkLCBib29sIHZhbHVlKQog
ewogICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGluZGljYXRvcihQcm9jZXNzaW5nVXNlckdlc3R1
cmUpOwogICAgIGVuc3VyZU1vZGVsKGNvbnRleHRJZCkuc2V0UGxheWluZ09uU2Vjb25kU2NyZWVu
KHZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlci5oCmluZGV4IGJjY2E3NjFhNzI0YjdmZTQ0ZGVkZTk2YjY0MGU4
ZmYwZDAzYzJkNzcuLmI4YWU2N2NhNDk4MTZmNmUxZjEzZjlmODk1YmRmNTVkNzI1NWY2OTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNj
cmVlbk1hbmFnZXIuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAj
aW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisjaW5jbHVkZSAiUGxheWJhY2tTZXNzaW9uQ29u
dGV4dElkZW50aWZpZXIuaCIKICNpbmNsdWRlICJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyTWVzc2Fn
ZXNSZXBsaWVzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9FdmVudExpc3RlbmVyLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9IVE1MTWVkaWFFbGVtZW50RW51bXMuaD4KQEAgLTYyLDcgKzYzLDcgQEAgY2xh
c3MgVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dAogICAgIDogcHVibGljIFJlZkNvdW50
ZWQ8VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dD4KICAgICAsIHB1YmxpYyBXZWJDb3Jl
OjpWaWRlb0Z1bGxzY3JlZW5Nb2RlbENsaWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxW
aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0PiBjcmVhdGUoVmlkZW9GdWxsc2NyZWVuTWFu
YWdlciYgbWFuYWdlciwgdWludDY0X3QgY29udGV4dElkKQorICAgIHN0YXRpYyBSZWY8VmlkZW9G
dWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dD4gY3JlYXRlKFZpZGVvRnVsbHNjcmVlbk1hbmFnZXIm
IG1hbmFnZXIsIFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCkKICAg
ICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZUNvbnRleHQobWFuYWdlciwgY29udGV4dElkKSk7CiAgICAgfQpAQCAtOTQsMTAgKzk1LDEwIEBA
IHByaXZhdGU6CiAgICAgdm9pZCBoYXNWaWRlb0NoYW5nZWQoYm9vbCkgb3ZlcnJpZGU7CiAgICAg
dm9pZCB2aWRlb0RpbWVuc2lvbnNDaGFuZ2VkKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYpIG92
ZXJyaWRlOwogCi0gICAgVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dChWaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyJiwgdWludDY0X3QgY29udGV4dElkKTsKKyAgICBWaWRlb0Z1bGxzY3JlZW5J
bnRlcmZhY2VDb250ZXh0KFZpZGVvRnVsbHNjcmVlbk1hbmFnZXImLCBQbGF5YmFja1Nlc3Npb25D
b250ZXh0SWRlbnRpZmllcik7CiAKICAgICBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyKiBtX21hbmFn
ZXI7Ci0gICAgdWludDY0X3QgbV9jb250ZXh0SWQ7CisgICAgUGxheWJhY2tTZXNzaW9uQ29udGV4
dElkZW50aWZpZXIgbV9jb250ZXh0SWQ7CiAgICAgc3RkOjp1bmlxdWVfcHRyPExheWVySG9zdGlu
Z0NvbnRleHQ+IG1fbGF5ZXJIb3N0aW5nQ29udGV4dDsKICAgICBBbmltYXRpb25UeXBlIG1fYW5p
bWF0aW9uVHlwZSB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3RhcmdldElzRnVsbHNjcmVlbiB7IGZh
bHNlIH07CkBAIC0xMjgsNDMgKzEyOSw0MiBAQCBwcm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQgVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlcihXZWJQYWdlJiwgUGxheWJhY2tTZXNzaW9uTWFuYWdlciYpOwog
CiAgICAgdHlwZWRlZiBzdGQ6OnR1cGxlPFJlZlB0cjxXZWJDb3JlOjpWaWRlb0Z1bGxzY3JlZW5N
b2RlbFZpZGVvRWxlbWVudD4sIFJlZlB0cjxWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0
Pj4gTW9kZWxJbnRlcmZhY2VUdXBsZTsKLSAgICBNb2RlbEludGVyZmFjZVR1cGxlIGNyZWF0ZU1v
ZGVsQW5kSW50ZXJmYWNlKHVpbnQ2NF90IGNvbnRleHRJZCk7Ci0gICAgTW9kZWxJbnRlcmZhY2VU
dXBsZSYgZW5zdXJlTW9kZWxBbmRJbnRlcmZhY2UodWludDY0X3QgY29udGV4dElkKTsKLSAgICBX
ZWJDb3JlOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudCYgZW5zdXJlTW9kZWwodWlu
dDY0X3QgY29udGV4dElkKTsKLSAgICBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0JiBl
bnN1cmVJbnRlcmZhY2UodWludDY0X3QgY29udGV4dElkKTsKLSAgICB2b2lkIHJlbW92ZUNvbnRl
eHQodWludDY0X3QgY29udGV4dElkKTsKLSAgICB2b2lkIGFkZENsaWVudEZvckNvbnRleHQodWlu
dDY0X3QgY29udGV4dElkKTsKLSAgICB2b2lkIHJlbW92ZUNsaWVudEZvckNvbnRleHQodWludDY0
X3QgY29udGV4dElkKTsKKyAgICBNb2RlbEludGVyZmFjZVR1cGxlIGNyZWF0ZU1vZGVsQW5kSW50
ZXJmYWNlKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyKTsKKyAgICBNb2RlbEludGVy
ZmFjZVR1cGxlJiBlbnN1cmVNb2RlbEFuZEludGVyZmFjZShQbGF5YmFja1Nlc3Npb25Db250ZXh0
SWRlbnRpZmllcik7CisgICAgV2ViQ29yZTo6VmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1l
bnQmIGVuc3VyZU1vZGVsKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyKTsKKyAgICBW
aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0JiBlbnN1cmVJbnRlcmZhY2UoUGxheWJhY2tT
ZXNzaW9uQ29udGV4dElkZW50aWZpZXIpOworICAgIHZvaWQgcmVtb3ZlQ29udGV4dChQbGF5YmFj
a1Nlc3Npb25Db250ZXh0SWRlbnRpZmllcik7CisgICAgdm9pZCBhZGRDbGllbnRGb3JDb250ZXh0
KFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyKTsKKyAgICB2b2lkIHJlbW92ZUNsaWVu
dEZvckNvbnRleHQoUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIpOwogCiAgICAgLy8g
SW50ZXJmYWNlIHRvIFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQKLSAgICB2b2lkIGhh
c1ZpZGVvQ2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgaGFzVmlkZW8pOwotICAgIHZv
aWQgdmlkZW9EaW1lbnNpb25zQ2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIGNvbnN0IFdlYkNv
cmU6OkZsb2F0U2l6ZSYpOworICAgIHZvaWQgaGFzVmlkZW9DaGFuZ2VkKFBsYXliYWNrU2Vzc2lv
bkNvbnRleHRJZGVudGlmaWVyLCBib29sIGhhc1ZpZGVvKTsKKyAgICB2b2lkIHZpZGVvRGltZW5z
aW9uc0NoYW5nZWQoUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIsIGNvbnN0IFdlYkNv
cmU6OkZsb2F0U2l6ZSYpOwogCiAgICAgLy8gTWVzc2FnZXMgZnJvbSBWaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyUHJveHkKLSAgICB2b2lkIHJlcXVlc3RGdWxsc2NyZWVuTW9kZSh1aW50NjRfdCBjb250
ZXh0SWQsIFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9k
ZSwgYm9vbCBmaW5pc2hlZFdpdGhNZWRpYSk7Ci0gICAgdm9pZCByZXF1ZXN0VXBkYXRlSW5saW5l
UmVjdCh1aW50NjRfdCBjb250ZXh0SWQpOwotICAgIHZvaWQgcmVxdWVzdFZpZGVvQ29udGVudExh
eWVyKHVpbnQ2NF90IGNvbnRleHRJZCk7Ci0gICAgdm9pZCByZXR1cm5WaWRlb0NvbnRlbnRMYXll
cih1aW50NjRfdCBjb250ZXh0SWQpOwotICAgIHZvaWQgZGlkU2V0dXBGdWxsc2NyZWVuKHVpbnQ2
NF90IGNvbnRleHRJZCk7Ci0gICAgdm9pZCB3aWxsRXhpdEZ1bGxzY3JlZW4odWludDY0X3QgY29u
dGV4dElkKTsKLSAgICB2b2lkIGRpZEV4aXRGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCk7
Ci0gICAgdm9pZCBkaWRFbnRlckZ1bGxzY3JlZW4odWludDY0X3QgY29udGV4dElkKTsKLSAgICB2
b2lkIGRpZENsZWFudXBGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCk7Ci0gICAgdm9pZCBz
ZXRWaWRlb0xheWVyRnJhbWVGZW5jZWQodWludDY0X3QgY29udGV4dElkLCBXZWJDb3JlOjpGbG9h
dFJlY3QgYm91bmRzLCBJUEM6OkF0dGFjaG1lbnQgZmVuY2VQb3J0KTsKLSAgICB2b2lkIHNldFZp
ZGVvTGF5ZXJHcmF2aXR5RW51bSh1aW50NjRfdCBjb250ZXh0SWQsIHVuc2lnbmVkIGdyYXZpdHkp
OwotICAgIHZvaWQgZnVsbHNjcmVlbk1vZGVDaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJZCwgV2Vi
Q29yZTo6SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlKTsKLSAgICB2
b2lkIGZ1bGxzY3JlZW5NYXlSZXR1cm5Ub0lubGluZSh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wg
aXNQYWdlVmlzaWJsZSk7Ci0gICAgdm9pZCByZXF1ZXN0Um91dGVTaGFyaW5nUG9saWN5QW5kQ29u
dGV4dFVJRCh1aW50NjRfdCBjb250ZXh0SWQsIE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyOjpSZXF1ZXN0Um91dGVTaGFyaW5nUG9saWN5QW5kQ29udGV4dFVJREFzeW5jUmVwbHkmJik7
CisgICAgdm9pZCByZXF1ZXN0RnVsbHNjcmVlbk1vZGUoUGxheWJhY2tTZXNzaW9uQ29udGV4dElk
ZW50aWZpZXIsIFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVu
TW9kZSwgYm9vbCBmaW5pc2hlZFdpdGhNZWRpYSk7CisgICAgdm9pZCByZXF1ZXN0VXBkYXRlSW5s
aW5lUmVjdChQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllcik7CisgICAgdm9pZCByZXF1
ZXN0VmlkZW9Db250ZW50TGF5ZXIoUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIpOwor
ICAgIHZvaWQgcmV0dXJuVmlkZW9Db250ZW50TGF5ZXIoUGxheWJhY2tTZXNzaW9uQ29udGV4dElk
ZW50aWZpZXIpOworICAgIHZvaWQgZGlkU2V0dXBGdWxsc2NyZWVuKFBsYXliYWNrU2Vzc2lvbkNv
bnRleHRJZGVudGlmaWVyKTsKKyAgICB2b2lkIHdpbGxFeGl0RnVsbHNjcmVlbihQbGF5YmFja1Nl
c3Npb25Db250ZXh0SWRlbnRpZmllcik7CisgICAgdm9pZCBkaWRFeGl0RnVsbHNjcmVlbihQbGF5
YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllcik7CisgICAgdm9pZCBkaWRFbnRlckZ1bGxzY3Jl
ZW4oUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIpOworICAgIHZvaWQgZGlkQ2xlYW51
cEZ1bGxzY3JlZW4oUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIpOworICAgIHZvaWQg
c2V0VmlkZW9MYXllckZyYW1lRmVuY2VkKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVy
LCBXZWJDb3JlOjpGbG9hdFJlY3QgYm91bmRzLCBJUEM6OkF0dGFjaG1lbnQgZmVuY2VQb3J0KTsK
KyAgICB2b2lkIHNldFZpZGVvTGF5ZXJHcmF2aXR5RW51bShQbGF5YmFja1Nlc3Npb25Db250ZXh0
SWRlbnRpZmllciwgdW5zaWduZWQgZ3Jhdml0eSk7CisgICAgdm9pZCBmdWxsc2NyZWVuTW9kZUNo
YW5nZWQoUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIsIFdlYkNvcmU6OkhUTUxNZWRp
YUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSk7CisgICAgdm9pZCBmdWxsc2NyZWVu
TWF5UmV0dXJuVG9JbmxpbmUoUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIsIGJvb2wg
aXNQYWdlVmlzaWJsZSk7CisgICAgdm9pZCByZXF1ZXN0Um91dGVTaGFyaW5nUG9saWN5QW5kQ29u
dGV4dFVJRChQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciwgTWVzc2FnZXM6OlZpZGVv
RnVsbHNjcmVlbk1hbmFnZXI6OlJlcXVlc3RSb3V0ZVNoYXJpbmdQb2xpY3lBbmRDb250ZXh0VUlE
QXN5bmNSZXBseSYmKTsKIAogICAgIFdlYlBhZ2UqIG1fcGFnZTsKICAgICBSZWY8UGxheWJhY2tT
ZXNzaW9uTWFuYWdlcj4gbV9wbGF5YmFja1Nlc3Npb25NYW5hZ2VyOwotICAgIEhhc2hNYXA8V2Vi
Q29yZTo6SFRNTFZpZGVvRWxlbWVudCosIHVpbnQ2NF90PiBtX3ZpZGVvRWxlbWVudHM7Ci0gICAg
SGFzaE1hcDx1aW50NjRfdCwgTW9kZWxJbnRlcmZhY2VUdXBsZT4gbV9jb250ZXh0TWFwOwotICAg
IHVpbnQ2NF90IG1fY29udHJvbHNNYW5hZ2VyQ29udGV4dElkIHsgMCB9OwotICAgIEhhc2hNYXA8
dWludDY0X3QsIGludD4gbV9jbGllbnRDb3VudHM7CisgICAgSGFzaE1hcDxXZWJDb3JlOjpIVE1M
VmlkZW9FbGVtZW50KiwgUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXI+IG1fdmlkZW9F
bGVtZW50czsKKyAgICBIYXNoTWFwPFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyLCBN
b2RlbEludGVyZmFjZVR1cGxlPiBtX2NvbnRleHRNYXA7CisgICAgUGxheWJhY2tTZXNzaW9uQ29u
dGV4dElkZW50aWZpZXIgbV9jb250cm9sc01hbmFnZXJDb250ZXh0SWQ7CisgICAgSGFzaE1hcDxQ
bGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciwgaW50PiBtX2NsaWVudENvdW50czsKIH07
Ci0gICAgCisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxFKFZJREVP
X1BSRVNFTlRBVElPTl9NT0RFKQotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1lc3NhZ2VzLmluCmlu
ZGV4IDRmOWFlM2FmMGM4MGJlZjRjNGE3YzVlOWMzNWRmYjcxMTQwZDZiYjEuLmEzZjNjMzQ2N2Vh
MTc3MGNkZmQ0ODBiN2EwMzAwMTMyNTE2OWZlZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1lc3NhZ2VzLmluCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1l
c3NhZ2VzLmluCkBAIC0yMiwxOSArMjIsMTkgQEAKIAogI2lmIEVOQUJMRShWSURFT19QUkVTRU5U
QVRJT05fTU9ERSkKIG1lc3NhZ2VzIC0+IFZpZGVvRnVsbHNjcmVlbk1hbmFnZXIgewotICAgIFJl
cXVlc3RGdWxsc2NyZWVuTW9kZSh1aW50NjRfdCBjb250ZXh0SWQsIFdlYkNvcmU6OkhUTUxNZWRp
YUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSB2aWRlb0Z1bGxzY3JlZW5Nb2RlLCBi
b29sIGZpbmlzaGVkV2l0aE1lZGlhKQotICAgIFJlcXVlc3RVcGRhdGVJbmxpbmVSZWN0KHVpbnQ2
NF90IGNvbnRleHRJZCkKLSAgICBSZXF1ZXN0VmlkZW9Db250ZW50TGF5ZXIodWludDY0X3QgY29u
dGV4dElkKQotICAgIFJldHVyblZpZGVvQ29udGVudExheWVyKHVpbnQ2NF90IGNvbnRleHRJZCkK
LSAgICBEaWRTZXR1cEZ1bGxzY3JlZW4odWludDY0X3QgY29udGV4dElkKQotICAgIFdpbGxFeGl0
RnVsbHNjcmVlbih1aW50NjRfdCBjb250ZXh0SWQpCi0gICAgRGlkRXhpdEZ1bGxzY3JlZW4odWlu
dDY0X3QgY29udGV4dElkKQotICAgIERpZEVudGVyRnVsbHNjcmVlbih1aW50NjRfdCBjb250ZXh0
SWQpCi0gICAgRGlkQ2xlYW51cEZ1bGxzY3JlZW4odWludDY0X3QgY29udGV4dElkKQotICAgIFNl
dFZpZGVvTGF5ZXJGcmFtZUZlbmNlZCh1aW50NjRfdCBjb250ZXh0SWQsIFdlYkNvcmU6OkZsb2F0
UmVjdCBib3VuZHMsIElQQzo6QXR0YWNobWVudCBmZW5jZVBvcnQpCi0gICAgU2V0VmlkZW9MYXll
ckdyYXZpdHlFbnVtKHVpbnQ2NF90IGNvbnRleHRJZCwgdW5zaWduZWQgZ3Jhdml0eSkKLSAgICBG
dWxsc2NyZWVuTW9kZUNoYW5nZWQodWludDY0X3QgY29udGV4dElkLCBXZWJDb3JlOjpIVE1MTWVk
aWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUgdmlkZW9GdWxsc2NyZWVuTW9kZSkK
LSAgICBGdWxsc2NyZWVuTWF5UmV0dXJuVG9JbmxpbmUodWludDY0X3QgY29udGV4dElkLCBib29s
IGlzUGFnZVZpc2libGUpCi0gICAgUmVxdWVzdFJvdXRlU2hhcmluZ1BvbGljeUFuZENvbnRleHRV
SUQodWludDY0X3QgY29udGV4dElkKSAtPiAoZW51bTp1aW50OF90IFdlYkNvcmU6OlJvdXRlU2hh
cmluZ1BvbGljeSByb3V0ZVNoYXJpbmdQb2xpY3ksIFN0cmluZyByb3V0aW5nQ29udGV4dFVJRCkg
QXN5bmMKKyAgICBSZXF1ZXN0RnVsbHNjcmVlbk1vZGUoV2ViS2l0OjpQbGF5YmFja1Nlc3Npb25D
b250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQsIFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRFbnVt
czo6VmlkZW9GdWxsc2NyZWVuTW9kZSB2aWRlb0Z1bGxzY3JlZW5Nb2RlLCBib29sIGZpbmlzaGVk
V2l0aE1lZGlhKQorICAgIFJlcXVlc3RVcGRhdGVJbmxpbmVSZWN0KFdlYktpdDo6UGxheWJhY2tT
ZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4dElkKQorICAgIFJlcXVlc3RWaWRlb0NvbnRl
bnRMYXllcihXZWJLaXQ6OlBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJ
ZCkKKyAgICBSZXR1cm5WaWRlb0NvbnRlbnRMYXllcihXZWJLaXQ6OlBsYXliYWNrU2Vzc2lvbkNv
bnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCkKKyAgICBEaWRTZXR1cEZ1bGxzY3JlZW4oV2ViS2l0
OjpQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQpCisgICAgV2lsbEV4
aXRGdWxsc2NyZWVuKFdlYktpdDo6UGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29u
dGV4dElkKQorICAgIERpZEV4aXRGdWxsc2NyZWVuKFdlYktpdDo6UGxheWJhY2tTZXNzaW9uQ29u
dGV4dElkZW50aWZpZXIgY29udGV4dElkKQorICAgIERpZEVudGVyRnVsbHNjcmVlbihXZWJLaXQ6
OlBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCkKKyAgICBEaWRDbGVh
bnVwRnVsbHNjcmVlbihXZWJLaXQ6OlBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNv
bnRleHRJZCkKKyAgICBTZXRWaWRlb0xheWVyRnJhbWVGZW5jZWQoV2ViS2l0OjpQbGF5YmFja1Nl
c3Npb25Db250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQsIFdlYkNvcmU6OkZsb2F0UmVjdCBib3Vu
ZHMsIElQQzo6QXR0YWNobWVudCBmZW5jZVBvcnQpCisgICAgU2V0VmlkZW9MYXllckdyYXZpdHlF
bnVtKFdlYktpdDo6UGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4dElkLCB1
bnNpZ25lZCBncmF2aXR5KQorICAgIEZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZChXZWJLaXQ6OlBsYXli
YWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCwgV2ViQ29yZTo6SFRNTE1lZGlh
RWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlIHZpZGVvRnVsbHNjcmVlbk1vZGUpCisg
ICAgRnVsbHNjcmVlbk1heVJldHVyblRvSW5saW5lKFdlYktpdDo6UGxheWJhY2tTZXNzaW9uQ29u
dGV4dElkZW50aWZpZXIgY29udGV4dElkLCBib29sIGlzUGFnZVZpc2libGUpCisgICAgUmVxdWVz
dFJvdXRlU2hhcmluZ1BvbGljeUFuZENvbnRleHRVSUQoV2ViS2l0OjpQbGF5YmFja1Nlc3Npb25D
b250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQpIC0+IChlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6Um91
dGVTaGFyaW5nUG9saWN5IHJvdXRlU2hhcmluZ1BvbGljeSwgU3RyaW5nIHJvdXRpbmdDb250ZXh0
VUlEKSBBc3luYwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tCmluZGV4IGNiY2JjMjdmNmFhMTY0
YTQwNDFlYjc2ZGVjMDY4MzRmODM5NDk5NzAuLmE5NWI3YjQ3MjdjYWJlYTcyMmQzMjBiY2E5OGUy
NWVkNDIzYWU2N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9W
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9j
b2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tCkBAIC04Miw3ICs4Miw3IEBAIHN0YXRpYyBJ
bnRSZWN0IGlubGluZVZpZGVvRnJhbWUoSFRNTFZpZGVvRWxlbWVudCYgZWxlbWVudCkKIAogI3By
YWdtYSBtYXJrIC0gVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dAogCi1WaWRlb0Z1bGxz
Y3JlZW5JbnRlcmZhY2VDb250ZXh0OjpWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0KFZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXImIG1hbmFnZXIsIHVpbnQ2NF90IGNvbnRleHRJZCkKK1ZpZGVv
RnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQ6OlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRl
eHQoVmlkZW9GdWxsc2NyZWVuTWFuYWdlciYgbWFuYWdlciwgUGxheWJhY2tTZXNzaW9uQ29udGV4
dElkZW50aWZpZXIgY29udGV4dElkKQogICAgIDogbV9tYW5hZ2VyKCZtYW5hZ2VyKQogICAgICwg
bV9jb250ZXh0SWQoY29udGV4dElkKQogewpAQCAtMTQ3LDcgKzE0Nyw3IEBAIHZvaWQgVmlkZW9G
dWxsc2NyZWVuTWFuYWdlcjo6aW52YWxpZGF0ZSgpCiAgICAgbV9wYWdlID0gbnVsbHB0cjsKIH0K
IAotVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6TW9kZWxJbnRlcmZhY2VUdXBsZSBWaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyOjpjcmVhdGVNb2RlbEFuZEludGVyZmFjZSh1aW50NjRfdCBjb250ZXh0SWQp
CitWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpNb2RlbEludGVyZmFjZVR1cGxlIFZpZGVvRnVsbHNj
cmVlbk1hbmFnZXI6OmNyZWF0ZU1vZGVsQW5kSW50ZXJmYWNlKFBsYXliYWNrU2Vzc2lvbkNvbnRl
eHRJZGVudGlmaWVyIGNvbnRleHRJZCkKIHsKICAgICBhdXRvIG1vZGVsID0gVmlkZW9GdWxsc2Ny
ZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OmNyZWF0ZSgpOwogICAgIGF1dG8gaW50ZXJmYWNlID0gVmlk
ZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dDo6Y3JlYXRlKCp0aGlzLCBjb250ZXh0SWQpOwpA
QCAtMTU5LDcgKzE1OSw3IEBAIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6Ok1vZGVsSW50ZXJmYWNl
VHVwbGUgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6Y3JlYXRlTW9kZWxBCiAgICAgcmV0dXJuIHN0
ZDo6bWFrZV90dXBsZShXVEZNb3ZlKG1vZGVsKSwgV1RGTW92ZShpbnRlcmZhY2UpKTsKIH0KIAot
VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6TW9kZWxJbnRlcmZhY2VUdXBsZSYgVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlcjo6ZW5zdXJlTW9kZWxBbmRJbnRlcmZhY2UodWludDY0X3QgY29udGV4dElkKQor
VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6TW9kZWxJbnRlcmZhY2VUdXBsZSYgVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlcjo6ZW5zdXJlTW9kZWxBbmRJbnRlcmZhY2UoUGxheWJhY2tTZXNzaW9uQ29udGV4
dElkZW50aWZpZXIgY29udGV4dElkKQogewogICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9jb250ZXh0
TWFwLmFkZChjb250ZXh0SWQsIE1vZGVsSW50ZXJmYWNlVHVwbGUoKSk7CiAgICAgaWYgKGFkZFJl
c3VsdC5pc05ld0VudHJ5KQpAQCAtMTY3LDE3ICsxNjcsMTcgQEAgVmlkZW9GdWxsc2NyZWVuTWFu
YWdlcjo6TW9kZWxJbnRlcmZhY2VUdXBsZSYgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZW5zdXJl
TW9kZWwKICAgICByZXR1cm4gYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKIH0KIAotV2ViQ29y
ZTo6VmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQmIFZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXI6OmVuc3VyZU1vZGVsKHVpbnQ2NF90IGNvbnRleHRJZCkKK1dlYkNvcmU6OlZpZGVvRnVsbHNj
cmVlbk1vZGVsVmlkZW9FbGVtZW50JiBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjplbnN1cmVNb2Rl
bChQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQpCiB7CiAgICAgcmV0
dXJuICpzdGQ6OmdldDwwPihlbnN1cmVNb2RlbEFuZEludGVyZmFjZShjb250ZXh0SWQpKTsKIH0K
IAotVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dCYgVmlkZW9GdWxsc2NyZWVuTWFuYWdl
cjo6ZW5zdXJlSW50ZXJmYWNlKHVpbnQ2NF90IGNvbnRleHRJZCkKK1ZpZGVvRnVsbHNjcmVlbklu
dGVyZmFjZUNvbnRleHQmIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmVuc3VyZUludGVyZmFjZShQ
bGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQpCiB7CiAgICAgcmV0dXJu
ICpzdGQ6OmdldDwxPihlbnN1cmVNb2RlbEFuZEludGVyZmFjZShjb250ZXh0SWQpKTsKIH0KIAot
dm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpyZW1vdmVDb250ZXh0KHVpbnQ2NF90IGNvbnRl
eHRJZCkKK3ZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6cmVtb3ZlQ29udGV4dChQbGF5YmFj
a1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQpCiB7CiAgICAgYXV0byBbbW9kZWws
IGludGVyZmFjZV0gPSBlbnN1cmVNb2RlbEFuZEludGVyZmFjZShjb250ZXh0SWQpOwogCkBAIC0x
OTEsMTQgKzE5MSwxNCBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnJlbW92ZUNvbnRl
eHQodWludDY0X3QgY29udGV4dElkKQogICAgIG1fY29udGV4dE1hcC5yZW1vdmUoY29udGV4dElk
KTsKIH0KIAotdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjphZGRDbGllbnRGb3JDb250ZXh0
KHVpbnQ2NF90IGNvbnRleHRJZCkKK3ZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6YWRkQ2xp
ZW50Rm9yQ29udGV4dChQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQp
CiB7CiAgICAgYXV0byBhZGRSZXN1bHQgPSBtX2NsaWVudENvdW50cy5hZGQoY29udGV4dElkLCAx
KTsKICAgICBpZiAoIWFkZFJlc3VsdC5pc05ld0VudHJ5KQogICAgICAgICBhZGRSZXN1bHQuaXRl
cmF0b3ItPnZhbHVlKys7CiB9CiAKLXZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6cmVtb3Zl
Q2xpZW50Rm9yQ29udGV4dCh1aW50NjRfdCBjb250ZXh0SWQpCit2b2lkIFZpZGVvRnVsbHNjcmVl
bk1hbmFnZXI6OnJlbW92ZUNsaWVudEZvckNvbnRleHQoUGxheWJhY2tTZXNzaW9uQ29udGV4dElk
ZW50aWZpZXIgY29udGV4dElkKQogewogICAgIEFTU0VSVChtX2NsaWVudENvdW50cy5jb250YWlu
cyhjb250ZXh0SWQpKTsKIApAQCAtMjQyLDcgKzI0Miw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVu
TWFuYWdlcjo6ZW50ZXJWaWRlb0Z1bGxzY3JlZW5Gb3JWaWRlb0VsZW1lbnQoSFRNTFZpZGVvRWxl
bWVuCiAgICAgQVNTRVJUKHN0YW5kYnkgfHwgbW9kZSAhPSBIVE1MTWVkaWFFbGVtZW50RW51bXM6
OlZpZGVvRnVsbHNjcmVlbk1vZGVOb25lKTsKICAgICBMT0coRnVsbHNjcmVlbiwgIlZpZGVvRnVs
bHNjcmVlbk1hbmFnZXI6OmVudGVyVmlkZW9GdWxsc2NyZWVuRm9yVmlkZW9FbGVtZW50KCVwKSIs
IHRoaXMpOwogCi0gICAgdWludDY0X3QgY29udGV4dElkID0gbV9wbGF5YmFja1Nlc3Npb25NYW5h
Z2VyLT5jb250ZXh0SWRGb3JNZWRpYUVsZW1lbnQodmlkZW9FbGVtZW50KTsKKyAgICBhdXRvIGNv
bnRleHRJZCA9IG1fcGxheWJhY2tTZXNzaW9uTWFuYWdlci0+Y29udGV4dElkRm9yTWVkaWFFbGVt
ZW50KHZpZGVvRWxlbWVudCk7CiAgICAgYXV0byBhZGRSZXN1bHQgPSBtX3ZpZGVvRWxlbWVudHMu
YWRkKCZ2aWRlb0VsZW1lbnQsIGNvbnRleHRJZCk7CiAgICAgVU5VU0VEX1BBUkFNKGFkZFJlc3Vs
dCk7CiAgICAgQVNTRVJUKGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPT0gY29udGV4dElkKTsK
QEAgLTI5NCw3ICsyOTQsNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmV4aXRWaWRl
b0Z1bGxzY3JlZW5Gb3JWaWRlb0VsZW1lbnQoV2ViQ29yZTo6SFRNTFZpZAogICAgIEFTU0VSVCht
X3BhZ2UpOwogICAgIEFTU0VSVChtX3ZpZGVvRWxlbWVudHMuY29udGFpbnMoJnZpZGVvRWxlbWVu
dCkpOwogCi0gICAgdWludDY0X3QgY29udGV4dElkID0gbV92aWRlb0VsZW1lbnRzLmdldCgmdmlk
ZW9FbGVtZW50KTsKKyAgICBhdXRvIGNvbnRleHRJZCA9IG1fdmlkZW9FbGVtZW50cy5nZXQoJnZp
ZGVvRWxlbWVudCk7CiAgICAgYXV0byYgaW50ZXJmYWNlID0gZW5zdXJlSW50ZXJmYWNlKGNvbnRl
eHRJZCk7CiAgICAgaW50ZXJmYWNlLnNldFRhcmdldElzRnVsbHNjcmVlbihmYWxzZSk7CiAgICAg
aWYgKGludGVyZmFjZS5hbmltYXRpb25TdGF0ZSgpICE9IFZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZUNvbnRleHQ6OkFuaW1hdGlvblR5cGU6Ok5vbmUpCkBAIC0zMTEsNyArMzExLDcgQEAgdm9pZCBW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpleGl0VmlkZW9GdWxsc2NyZWVuVG9Nb2RlV2l0aG91dEFu
aW1hdGlvbihXZWJDb3JlOjoKICAgICBBU1NFUlQobV9wYWdlKTsKICAgICBBU1NFUlQobV92aWRl
b0VsZW1lbnRzLmNvbnRhaW5zKCZ2aWRlb0VsZW1lbnQpKTsKIAotICAgIHVpbnQ2NF90IGNvbnRl
eHRJZCA9IG1fdmlkZW9FbGVtZW50cy5nZXQoJnZpZGVvRWxlbWVudCk7CisgICAgYXV0byBjb250
ZXh0SWQgPSBtX3ZpZGVvRWxlbWVudHMuZ2V0KCZ2aWRlb0VsZW1lbnQpOwogICAgIGF1dG8mIGlu
dGVyZmFjZSA9IGVuc3VyZUludGVyZmFjZShjb250ZXh0SWQpOwogCiAgICAgaW50ZXJmYWNlLnNl
dFRhcmdldElzRnVsbHNjcmVlbihmYWxzZSk7CkBAIC0zMjEsMTMgKzMyMSwxMyBAQCB2b2lkIFZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmV4aXRWaWRlb0Z1bGxzY3JlZW5Ub01vZGVXaXRob3V0QW5p
bWF0aW9uKFdlYkNvcmU6OgogCiAjcHJhZ21hIG1hcmsgSW50ZXJmYWNlIHRvIFZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZUNvbnRleHQ6CiAKLXZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6aGFz
VmlkZW9DaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vbCBoYXNWaWRlbykKK3ZvaWQgVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlcjo6aGFzVmlkZW9DaGFuZ2VkKFBsYXliYWNrU2Vzc2lvbkNvbnRl
eHRJZGVudGlmaWVyIGNvbnRleHRJZCwgYm9vbCBoYXNWaWRlbykKIHsKICAgICBpZiAobV9wYWdl
KQogICAgICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQ
cm94eTo6U2V0SGFzVmlkZW8oY29udGV4dElkLCBoYXNWaWRlbykpOwogfQogCi12b2lkIFZpZGVv
RnVsbHNjcmVlbk1hbmFnZXI6OnZpZGVvRGltZW5zaW9uc0NoYW5nZWQodWludDY0X3QgY29udGV4
dElkLCBjb25zdCBGbG9hdFNpemUmIHZpZGVvRGltZW5zaW9ucykKK3ZvaWQgVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlcjo6dmlkZW9EaW1lbnNpb25zQ2hhbmdlZChQbGF5YmFja1Nlc3Npb25Db250ZXh0
SWRlbnRpZmllciBjb250ZXh0SWQsIGNvbnN0IEZsb2F0U2l6ZSYgdmlkZW9EaW1lbnNpb25zKQog
ewogICAgIGlmIChtX3BhZ2UpCiAgICAgICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9G
dWxsc2NyZWVuTWFuYWdlclByb3h5OjpTZXRWaWRlb0RpbWVuc2lvbnMoY29udGV4dElkLCB2aWRl
b0RpbWVuc2lvbnMpKTsKQEAgLTMzNSwxNyArMzM1LDE3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVu
TWFuYWdlcjo6dmlkZW9EaW1lbnNpb25zQ2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIGNvbnN0
IEZsCiAKICNwcmFnbWEgbWFyayBNZXNzYWdlcyBmcm9tIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQ
cm94eToKIAotdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpyZXF1ZXN0RnVsbHNjcmVlbk1v
ZGUodWludDY0X3QgY29udGV4dElkLCBXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZp
ZGVvRnVsbHNjcmVlbk1vZGUgbW9kZSwgYm9vbCBmaW5pc2hlZFdpdGhNZWRpYSkKK3ZvaWQgVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlcjo6cmVxdWVzdEZ1bGxzY3JlZW5Nb2RlKFBsYXliYWNrU2Vzc2lv
bkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCwgV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudEVu
dW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlIG1vZGUsIGJvb2wgZmluaXNoZWRXaXRoTWVkaWEpCiB7
CiAgICAgZW5zdXJlTW9kZWwoY29udGV4dElkKS5yZXF1ZXN0RnVsbHNjcmVlbk1vZGUobW9kZSwg
ZmluaXNoZWRXaXRoTWVkaWEpOwogfQogCi12b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmZ1
bGxzY3JlZW5Nb2RlQ2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIFdlYkNvcmU6OkhUTUxNZWRp
YUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSB2aWRlb0Z1bGxzY3JlZW5Nb2RlKQor
dm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpmdWxsc2NyZWVuTW9kZUNoYW5nZWQoUGxheWJh
Y2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4dElkLCBXZWJDb3JlOjpIVE1MTWVkaWFF
bGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUgdmlkZW9GdWxsc2NyZWVuTW9kZSkKIHsK
ICAgICBlbnN1cmVNb2RlbChjb250ZXh0SWQpLmZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZCh2aWRlb0Z1
bGxzY3JlZW5Nb2RlKTsKIH0KIAotdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpyZXF1ZXN0
VXBkYXRlSW5saW5lUmVjdCh1aW50NjRfdCBjb250ZXh0SWQpCit2b2lkIFZpZGVvRnVsbHNjcmVl
bk1hbmFnZXI6OnJlcXVlc3RVcGRhdGVJbmxpbmVSZWN0KFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJ
ZGVudGlmaWVyIGNvbnRleHRJZCkKIHsKICAgICBpZiAoIW1fcGFnZSkKICAgICAgICAgcmV0dXJu
OwpAQCAtMzU1LDcgKzM1NSw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6cmVxdWVz
dFVwZGF0ZUlubGluZVJlY3QodWludDY0X3QgY29udGV4dElkKQogICAgIG1fcGFnZS0+c2VuZChN
ZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpTZXRJbmxpbmVSZWN0KGNvbnRl
eHRJZCwgaW5saW5lUmVjdCwgaW5saW5lUmVjdCAhPSBJbnRSZWN0KDAsIDAsIDAsIDApKSk7CiB9
CiAKLXZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6cmVxdWVzdFZpZGVvQ29udGVudExheWVy
KHVpbnQ2NF90IGNvbnRleHRJZCkKK3ZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6cmVxdWVz
dFZpZGVvQ29udGVudExheWVyKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRl
eHRJZCkKIHsKICAgICBhdXRvIFttb2RlbCwgaW50ZXJmYWNlXSA9IGVuc3VyZU1vZGVsQW5kSW50
ZXJmYWNlKGNvbnRleHRJZCk7CiAKQEAgLTM2OSw3ICszNjksNyBAQCB2b2lkIFZpZGVvRnVsbHNj
cmVlbk1hbmFnZXI6OnJlcXVlc3RWaWRlb0NvbnRlbnRMYXllcih1aW50NjRfdCBjb250ZXh0SWQp
CiAgICAgfSk7CiB9CiAKLXZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6cmV0dXJuVmlkZW9D
b250ZW50TGF5ZXIodWludDY0X3QgY29udGV4dElkKQordm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyOjpyZXR1cm5WaWRlb0NvbnRlbnRMYXllcihQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRp
ZmllciBjb250ZXh0SWQpCiB7CiAgICAgUmVmUHRyPFZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9F
bGVtZW50PiBtb2RlbDsKICAgICBSZWZQdHI8VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4
dD4gaW50ZXJmYWNlOwpAQCAtMzg3LDcgKzM4Nyw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFu
YWdlcjo6cmV0dXJuVmlkZW9Db250ZW50TGF5ZXIodWludDY0X3QgY29udGV4dElkKQogICAgIH0p
OwogfQogCi12b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmRpZFNldHVwRnVsbHNjcmVlbih1
aW50NjRfdCBjb250ZXh0SWQpCit2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmRpZFNldHVw
RnVsbHNjcmVlbihQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQpCiB7
CiAgICAgTE9HKEZ1bGxzY3JlZW4sICJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpkaWRTZXR1cEZ1
bGxzY3JlZW4oJXAsICV4KSIsIHRoaXMsIGNvbnRleHRJZCk7CiAKQEAgLTQxMSw3ICs0MTEsNyBA
QCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmRpZFNldHVwRnVsbHNjcmVlbih1aW50NjRf
dCBjb250ZXh0SWQpCiAjZW5kaWYKIH0KIAotdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjp3
aWxsRXhpdEZ1bGxzY3JlZW4odWludDY0X3QgY29udGV4dElkKQordm9pZCBWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyOjp3aWxsRXhpdEZ1bGxzY3JlZW4oUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50
aWZpZXIgY29udGV4dElkKQogewogICAgIExPRyhGdWxsc2NyZWVuLCAiVmlkZW9GdWxsc2NyZWVu
TWFuYWdlcjo6d2lsbEV4aXRGdWxsc2NyZWVuKCVwLCAleCkiLCB0aGlzLCBjb250ZXh0SWQpOwog
CkBAIC00MjgsNyArNDI4LDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjp3aWxsRXhp
dEZ1bGxzY3JlZW4odWludDY0X3QgY29udGV4dElkKQogICAgIH0pOwogfQogCi12b2lkIFZpZGVv
RnVsbHNjcmVlbk1hbmFnZXI6OmRpZEVudGVyRnVsbHNjcmVlbih1aW50NjRfdCBjb250ZXh0SWQp
Cit2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmRpZEVudGVyRnVsbHNjcmVlbihQbGF5YmFj
a1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQpCiB7CiAgICAgTE9HKEZ1bGxzY3Jl
ZW4sICJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpkaWRFbnRlckZ1bGxzY3JlZW4oJXAsICV4KSIs
IHRoaXMsIGNvbnRleHRJZCk7CiAKQEAgLTQ1Myw3ICs0NTMsNyBAQCB2b2lkIFZpZGVvRnVsbHNj
cmVlbk1hbmFnZXI6OmRpZEVudGVyRnVsbHNjcmVlbih1aW50NjRfdCBjb250ZXh0SWQpCiAgICAg
fSk7CiB9CiAKLXZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZGlkRXhpdEZ1bGxzY3JlZW4o
dWludDY0X3QgY29udGV4dElkKQordm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpkaWRFeGl0
RnVsbHNjcmVlbihQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQpCiB7
CiAgICAgTE9HKEZ1bGxzY3JlZW4sICJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpkaWRFeGl0RnVs
bHNjcmVlbiglcCwgJXgpIiwgdGhpcywgY29udGV4dElkKTsKIApAQCAtNDg0LDcgKzQ4NCw3IEBA
IHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZGlkRXhpdEZ1bGxzY3JlZW4odWludDY0X3Qg
Y29udGV4dElkKQogI2VuZGlmCiB9CiAgICAgCi12b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6
OmRpZENsZWFudXBGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCkKK3ZvaWQgVmlkZW9GdWxs
c2NyZWVuTWFuYWdlcjo6ZGlkQ2xlYW51cEZ1bGxzY3JlZW4oUGxheWJhY2tTZXNzaW9uQ29udGV4
dElkZW50aWZpZXIgY29udGV4dElkKQogewogICAgIExPRyhGdWxsc2NyZWVuLCAiVmlkZW9GdWxs
c2NyZWVuTWFuYWdlcjo6ZGlkQ2xlYW51cEZ1bGxzY3JlZW4oJXAsICV4KSIsIHRoaXMsIGNvbnRl
eHRJZCk7CiAKQEAgLTUxOSwxMiArNTE5LDEyIEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdl
cjo6ZGlkQ2xlYW51cEZ1bGxzY3JlZW4odWludDY0X3QgY29udGV4dElkKQogICAgIH0pOwogfQog
ICAgIAotdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpzZXRWaWRlb0xheWVyR3Jhdml0eUVu
dW0odWludDY0X3QgY29udGV4dElkLCB1bnNpZ25lZCBncmF2aXR5KQordm9pZCBWaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyOjpzZXRWaWRlb0xheWVyR3Jhdml0eUVudW0oUGxheWJhY2tTZXNzaW9uQ29u
dGV4dElkZW50aWZpZXIgY29udGV4dElkLCB1bnNpZ25lZCBncmF2aXR5KQogewogICAgIGVuc3Vy
ZU1vZGVsKGNvbnRleHRJZCkuc2V0VmlkZW9MYXllckdyYXZpdHkoKE1lZGlhUGxheWVyRW51bXM6
OlZpZGVvR3Jhdml0eSlncmF2aXR5KTsKIH0KICAgICAKLXZvaWQgVmlkZW9GdWxsc2NyZWVuTWFu
YWdlcjo6ZnVsbHNjcmVlbk1heVJldHVyblRvSW5saW5lKHVpbnQ2NF90IGNvbnRleHRJZCwgYm9v
bCBpc1BhZ2VWaXNpYmxlKQordm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpmdWxsc2NyZWVu
TWF5UmV0dXJuVG9JbmxpbmUoUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4
dElkLCBib29sIGlzUGFnZVZpc2libGUpCiB7CiAgICAgaWYgKCFtX3BhZ2UpCiAgICAgICAgIHJl
dHVybjsKQEAgLTUzNiwxMiArNTM2LDEyIEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6
ZnVsbHNjcmVlbk1heVJldHVyblRvSW5saW5lKHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vCiAgICAg
bV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OlByZXBh
cmVkVG9SZXR1cm5Ub0lubGluZShjb250ZXh0SWQsIHRydWUsIGlubGluZVZpZGVvRnJhbWUoKm1v
ZGVsLnZpZGVvRWxlbWVudCgpKSkpOwogfQogCi12b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6
OnJlcXVlc3RSb3V0ZVNoYXJpbmdQb2xpY3lBbmRDb250ZXh0VUlEKHVpbnQ2NF90IGNvbnRleHRJ
ZCwgTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OlJlcXVlc3RSb3V0ZVNoYXJpbmdQ
b2xpY3lBbmRDb250ZXh0VUlEOjpBc3luY1JlcGx5JiYgcmVwbHkpCit2b2lkIFZpZGVvRnVsbHNj
cmVlbk1hbmFnZXI6OnJlcXVlc3RSb3V0ZVNoYXJpbmdQb2xpY3lBbmRDb250ZXh0VUlEKFBsYXli
YWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCwgTWVzc2FnZXM6OlZpZGVvRnVs
bHNjcmVlbk1hbmFnZXI6OlJlcXVlc3RSb3V0ZVNoYXJpbmdQb2xpY3lBbmRDb250ZXh0VUlEOjpB
c3luY1JlcGx5JiYgcmVwbHkpCiB7CiAgICAgZW5zdXJlTW9kZWwoY29udGV4dElkKS5yZXF1ZXN0
Um91dGVTaGFyaW5nUG9saWN5QW5kQ29udGV4dFVJRChXVEZNb3ZlKHJlcGx5KSk7CiB9CiAgICAg
Ci12b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnNldFZpZGVvTGF5ZXJGcmFtZUZlbmNlZCh1
aW50NjRfdCBjb250ZXh0SWQsIFdlYkNvcmU6OkZsb2F0UmVjdCBib3VuZHMsIElQQzo6QXR0YWNo
bWVudCBmZW5jZVBvcnQpCit2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnNldFZpZGVvTGF5
ZXJGcmFtZUZlbmNlZChQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQs
IFdlYkNvcmU6OkZsb2F0UmVjdCBib3VuZHMsIElQQzo6QXR0YWNobWVudCBmZW5jZVBvcnQpCiB7
CiAgICAgTE9HKEZ1bGxzY3JlZW4sICJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpzZXRWaWRlb0xh
eWVyRnJhbWVGZW5jZWQoJXAsICV4KSIsIHRoaXMsIGNvbnRleHRJZCk7CiAK
</data>
<flag name="review"
          id="418046"
          type_id="1"
          status="+"
          setter="youennf"
    />
    <flag name="commit-queue"
          id="418100"
          type_id="3"
          status="-"
          setter="ddkilzer"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>402679</attachid>
            <date>2020-06-24 13:26:51 -0700</date>
            <delta_ts>2020-06-24 15:09:39 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-212392-20200624132918.patch</filename>
            <type>text/plain</type>
            <size>126683</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYzNDM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDRmYmU2MmRkYzJkYThlZWZh
NjQyZGM3OWY0ODBjMzJmZDk1Y2E2ZWIuLmI2ZTRmMWU1NmMxODRjYjg1YTg2YTFlNDA4MDA5NTk5
OWRjYmY3NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTg2IEBACisyMDIwLTA2LTI0ICBEYXZpZCBL
aWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIE9iamVjdElkZW50aWZp
ZXI8PiBpbnN0ZWFkIG9mIHVpbnQ2NF90IGZvciBjb250ZXh0IElEcyBpbiBWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyUHJveHkKKyAgICAgICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzIxMjM5Mj4KKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYxNzk5MDQwPgorCisgICAgICAgIFJldmlld2VkIGJ5IFlv
dWVubiBGYWJsZXQuCisKKyAgICAgICAgU3dpdGNoIGZyb20gdWludDY0X3QgdG8gV2ViS2l0OjpQ
bGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllcgorICAgICAgICBmb3IgY29udGV4dElkIHZh
bHVlcy4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5OgorICAgICAgICAo
dHlwZXNfdGhhdF9jYW5ub3RfYmVfZm9yd2FyZF9kZWNsYXJlZCk6CisgICAgICAgIC0gQWRkIFdl
YktpdDo6UGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIgdG8gbGlzdC4KKyAgICAgICAg
KiBVSVByb2Nlc3MvQ29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lmg6CisgICAgICAg
IChXZWJLaXQ6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6Y29udHJvbHNNYW5hZ2VyQ29u
dGV4dElkIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvUGxheWJhY2tTZXNzaW9u
TWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9QbGF5
YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkubW06CisgICAgICAgIChXZWJLaXQ6OlBsYXliYWNrU2Vz
c2lvbk1hbmFnZXJQcm94eTo6Y3JlYXRlTW9kZWxBbmRJbnRlcmZhY2UpOgorICAgICAgICAoV2Vi
S2l0OjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OmVuc3VyZU1vZGVsQW5kSW50ZXJmYWNl
KToKKyAgICAgICAgKFdlYktpdDo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjplbnN1cmVN
b2RlbCk6CisgICAgICAgIChXZWJLaXQ6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6ZW5z
dXJlSW50ZXJmYWNlKToKKyAgICAgICAgKFdlYktpdDo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclBy
b3h5OjphZGRDbGllbnRGb3JDb250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6UGxheWJhY2tTZXNz
aW9uTWFuYWdlclByb3h5OjpyZW1vdmVDbGllbnRGb3JDb250ZXh0KToKKyAgICAgICAgKFdlYktp
dDo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpzZXRVcFBsYXliYWNrQ29udHJvbHNNYW5h
Z2VyV2l0aElEKToKKyAgICAgICAgKFdlYktpdDo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5
OjpjbGVhclBsYXliYWNrQ29udHJvbHNNYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6UGxheWJh
Y2tTZXNzaW9uTWFuYWdlclByb3h5OjpjdXJyZW50VGltZUNoYW5nZWQpOgorICAgICAgICAoV2Vi
S2l0OjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OmJ1ZmZlcmVkVGltZUNoYW5nZWQpOgor
ICAgICAgICAoV2ViS2l0OjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OnNlZWthYmxlUmFu
Z2VzVmVjdG9yQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OlBsYXliYWNrU2Vzc2lvbk1hbmFn
ZXJQcm94eTo6Y2FuUGxheUZhc3RSZXZlcnNlQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OlBs
YXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6YXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnNDaGFu
Z2VkKToKKyAgICAgICAgKFdlYktpdDo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpsZWdp
YmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OlBsYXli
YWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6YXVkaW9NZWRpYVNlbGVjdGlvbkluZGV4Q2hhbmdlZCk6
CisgICAgICAgIChXZWJLaXQ6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6bGVnaWJsZU1l
ZGlhU2VsZWN0aW9uSW5kZXhDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6UGxheWJhY2tTZXNz
aW9uTWFuYWdlclByb3h5OjpleHRlcm5hbFBsYXliYWNrUHJvcGVydGllc0NoYW5nZWQpOgorICAg
ICAgICAoV2ViS2l0OjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OndpcmVsZXNzVmlkZW9Q
bGF5YmFja0Rpc2FibGVkQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OlBsYXliYWNrU2Vzc2lv
bk1hbmFnZXJQcm94eTo6bXV0ZWRDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6UGxheWJhY2tT
ZXNzaW9uTWFuYWdlclByb3h5Ojp2b2x1bWVDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6UGxh
eWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpkdXJhdGlvbkNoYW5nZWQpOgorICAgICAgICAoV2Vi
S2l0OjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OnBsYXliYWNrU3RhcnRlZFRpbWVDaGFu
Z2VkKToKKyAgICAgICAgKFdlYktpdDo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpyYXRl
Q2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6
cGljdHVyZUluUGljdHVyZVN1cHBvcnRlZENoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpQbGF5
YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OmhhbmRsZUNvbnRyb2xsZWRFbGVtZW50SURSZXNwb25z
ZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6
cGxheSk6CisgICAgICAgIChXZWJLaXQ6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6cGF1
c2UpOgorICAgICAgICAoV2ViS2l0OjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OnRvZ2ds
ZVBsYXlTdGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94
eTo6YmVnaW5TY3J1YmJpbmcpOgorICAgICAgICAoV2ViS2l0OjpQbGF5YmFja1Nlc3Npb25NYW5h
Z2VyUHJveHk6OmVuZFNjcnViYmluZyk6CisgICAgICAgIChXZWJLaXQ6OlBsYXliYWNrU2Vzc2lv
bk1hbmFnZXJQcm94eTo6c2Vla1RvVGltZSk6CisgICAgICAgIChXZWJLaXQ6OlBsYXliYWNrU2Vz
c2lvbk1hbmFnZXJQcm94eTo6ZmFzdFNlZWspOgorICAgICAgICAoV2ViS2l0OjpQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyUHJveHk6OmJlZ2luU2Nhbm5pbmdGb3J3YXJkKToKKyAgICAgICAgKFdlYktp
dDo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpiZWdpblNjYW5uaW5nQmFja3dhcmQpOgor
ICAgICAgICAoV2ViS2l0OjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OmVuZFNjYW5uaW5n
KToKKyAgICAgICAgKFdlYktpdDo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpzZWxlY3RB
dWRpb01lZGlhT3B0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UGxheWJhY2tTZXNzaW9uTWFuYWdl
clByb3h5OjpzZWxlY3RMZWdpYmxlTWVkaWFPcHRpb24pOgorICAgICAgICAoV2ViS2l0OjpQbGF5
YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OnRvZ2dsZVBpY3R1cmVJblBpY3R1cmUpOgorICAgICAg
ICAoV2ViS2l0OjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OnRvZ2dsZU11dGVkKToKKyAg
ICAgICAgKFdlYktpdDo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpzZXRNdXRlZCk6Cisg
ICAgICAgIChXZWJLaXQ6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6c2V0Vm9sdW1lKToK
KyAgICAgICAgKFdlYktpdDo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpzZXRQbGF5aW5n
T25TZWNvbmRTY3JlZW4pOgorICAgICAgICAtIFJlbW92ZSBNRVNTQUdFX0NIRUNLX0NPTlRFWFRJ
RCgpIHNpbmNlIGl0IGlzIG5vdyByZWR1bmRhbnQuCisgICAgICAgICogVUlQcm9jZXNzL0NvY29h
L1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2Nv
YS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQ
cm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tbToKKyAgICAgICAgKFdl
YktpdDo6VmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0OjpWaWRlb0Z1bGxzY3JlZW5Nb2RlbENv
bnRleHQpOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OnJl
cXVlc3RSb3V0ZVNoYXJpbmdQb2xpY3lBbmRDb250ZXh0VUlEKToKKyAgICAgICAgKFdlYktpdDo6
VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpjcmVhdGVNb2RlbEFuZEludGVyZmFjZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6ZW5zdXJlTW9kZWxB
bmRJbnRlcmZhY2UpOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJv
eHk6OmVuc3VyZU1vZGVsKToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdl
clByb3h5OjplbnN1cmVJbnRlcmZhY2UpOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyUHJveHk6OmZpbmRJbnRlcmZhY2UpOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmFkZENsaWVudEZvckNvbnRleHQpOgorICAgICAgICAoV2Vi
S2l0OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OnJlbW92ZUNsaWVudEZvckNvbnRleHQp
OgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OnNldHVwRnVs
bHNjcmVlbldpdGhJRCk6CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQ
cm94eTo6c2V0SGFzVmlkZW8pOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyUHJveHk6OnNldFZpZGVvRGltZW5zaW9ucyk6CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVs
bHNjcmVlbk1hbmFnZXJQcm94eTo6ZW50ZXJGdWxsc2NyZWVuKToKKyAgICAgICAgKFdlYktpdDo6
VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpleGl0RnVsbHNjcmVlbik6CisgICAgICAgIChX
ZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6ZXhpdEZ1bGxzY3JlZW5XaXRob3V0
QW5pbWF0aW9uVG9Nb2RlKToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdl
clByb3h5OjpzZXRJbmxpbmVSZWN0KToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVu
TWFuYWdlclByb3h5OjpzZXRIYXNWaWRlb0NvbnRlbnRMYXllcik6CisgICAgICAgIChXZWJLaXQ6
OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6Y2xlYW51cEZ1bGxzY3JlZW4pOgorICAgICAg
ICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OnByZXBhcmVkVG9SZXR1cm5U
b0lubGluZSk6CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6
cHJlcGFyZWRUb0V4aXRGdWxsc2NyZWVuKToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlclByb3h5OjpyZXF1ZXN0RnVsbHNjcmVlbk1vZGUpOgorICAgICAgICAoV2ViS2l0
OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OnJlcXVlc3RVcGRhdGVJbmxpbmVSZWN0KToK
KyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpyZXF1ZXN0Vmlk
ZW9Db250ZW50TGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
UHJveHk6OnJldHVyblZpZGVvQ29udGVudExheWVyKToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9G
dWxsc2NyZWVuTWFuYWdlclByb3h5OjpkaWRTZXR1cEZ1bGxzY3JlZW4pOgorICAgICAgICAoV2Vi
S2l0OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OndpbGxFeGl0RnVsbHNjcmVlbik6Cisg
ICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6ZGlkRXhpdEZ1bGxz
Y3JlZW4pOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmRp
ZEVudGVyRnVsbHNjcmVlbik6CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXJQcm94eTo6ZGlkQ2xlYW51cEZ1bGxzY3JlZW4pOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyUHJveHk6OnNldFZpZGVvTGF5ZXJGcmFtZSk6CisgICAgICAgIChXZWJL
aXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6c2V0VmlkZW9MYXllckdyYXZpdHkpOgor
ICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmZ1bGxzY3JlZW5N
b2RlQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94
eTo6ZnVsbHNjcmVlbk1heVJldHVyblRvSW5saW5lKToKKyAgICAgICAgLSBSZW1vdmUgTUVTU0FH
RV9DSEVDS19DT05URVhUSUQoKSBzaW5jZSBpdCBpcyBub3cgcmVkdW5kYW50LgorICAgICAgICAq
IFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAtIEFkZCBQbGF5YmFj
a1Nlc3Npb25Db250ZXh0SWRlbnRpZmllci5oIHRvIHRoZSBwcm9qZWN0LgorICAgICAgICAqIFdl
YlByb2Nlc3MvY29jb2EvUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIuaDogQWRkLgor
ICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlci5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvY29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlci5tZXNzYWdlcy5p
bjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXIubW06
CisgICAgICAgIChXZWJLaXQ6OlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQ6OlBsYXli
YWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyOjpjcmVhdGVNb2RlbEFuZEludGVyZmFjZSk6CisgICAgICAgIChXZWJLaXQ6
OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmVuc3VyZU1vZGVsQW5kSW50ZXJmYWNlKToKKyAgICAg
ICAgKFdlYktpdDo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6ZW5zdXJlTW9kZWwpOgorICAgICAg
ICAoV2ViS2l0OjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjplbnN1cmVJbnRlcmZhY2UpOgorICAg
ICAgICAoV2ViS2l0OjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpyZW1vdmVDb250ZXh0KToKKyAg
ICAgICAgKFdlYktpdDo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6YWRkQ2xpZW50Rm9yQ29udGV4
dCk6CisgICAgICAgIChXZWJLaXQ6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OnJlbW92ZUNsaWVu
dEZvckNvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpz
ZXRVcFBsYXliYWNrQ29udHJvbHNNYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6UGxheWJhY2tT
ZXNzaW9uTWFuYWdlcjo6Y2xlYXJQbGF5YmFja0NvbnRyb2xzTWFuYWdlcik6CisgICAgICAgIChX
ZWJLaXQ6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmNvbnRleHRJZEZvck1lZGlhRWxlbWVudCk6
CisgICAgICAgIChXZWJLaXQ6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmR1cmF0aW9uQ2hhbmdl
ZCk6CisgICAgICAgIChXZWJLaXQ6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmN1cnJlbnRUaW1l
Q2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmJ1ZmZl
cmVkVGltZUNoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpQbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
OjpwbGF5YmFja1N0YXJ0ZWRUaW1lQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OlBsYXliYWNr
U2Vzc2lvbk1hbmFnZXI6OnJhdGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6UGxheWJhY2tT
ZXNzaW9uTWFuYWdlcjo6c2Vla2FibGVSYW5nZXNDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6
UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6Y2FuUGxheUZhc3RSZXZlcnNlQ2hhbmdlZCk6CisgICAg
ICAgIChXZWJLaXQ6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmF1ZGlvTWVkaWFTZWxlY3Rpb25P
cHRpb25zQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6
OmxlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6
UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6ZXh0ZXJuYWxQbGF5YmFja0NoYW5nZWQpOgorICAgICAg
ICAoV2ViS2l0OjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjphdWRpb01lZGlhU2VsZWN0aW9uSW5k
ZXhDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6bGVn
aWJsZU1lZGlhU2VsZWN0aW9uSW5kZXhDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6UGxheWJh
Y2tTZXNzaW9uTWFuYWdlcjo6d2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWRDaGFuZ2VkKToK
KyAgICAgICAgKFdlYktpdDo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6bXV0ZWRDaGFuZ2VkKToK
KyAgICAgICAgKFdlYktpdDo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6dm9sdW1lQ2hhbmdlZCk6
CisgICAgICAgIChXZWJLaXQ6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmlzUGljdHVyZUluUGlj
dHVyZVN1cHBvcnRlZENoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpQbGF5YmFja1Nlc3Npb25N
YW5hZ2VyOjpwbGF5KToKKyAgICAgICAgKFdlYktpdDo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6
cGF1c2UpOgorICAgICAgICAoV2ViS2l0OjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjp0b2dnbGVQ
bGF5U3RhdGUpOgorICAgICAgICAoV2ViS2l0OjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpiZWdp
blNjcnViYmluZyk6CisgICAgICAgIChXZWJLaXQ6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmVu
ZFNjcnViYmluZyk6CisgICAgICAgIChXZWJLaXQ6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OnNl
ZWtUb1RpbWUpOgorICAgICAgICAoV2ViS2l0OjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpmYXN0
U2Vlayk6CisgICAgICAgIChXZWJLaXQ6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmJlZ2luU2Nh
bm5pbmdGb3J3YXJkKToKKyAgICAgICAgKFdlYktpdDo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6
YmVnaW5TY2FubmluZ0JhY2t3YXJkKToKKyAgICAgICAgKFdlYktpdDo6UGxheWJhY2tTZXNzaW9u
TWFuYWdlcjo6ZW5kU2Nhbm5pbmcpOgorICAgICAgICAoV2ViS2l0OjpQbGF5YmFja1Nlc3Npb25N
YW5hZ2VyOjpzZWxlY3RBdWRpb01lZGlhT3B0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UGxheWJh
Y2tTZXNzaW9uTWFuYWdlcjo6c2VsZWN0TGVnaWJsZU1lZGlhT3B0aW9uKToKKyAgICAgICAgKFdl
YktpdDo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6aGFuZGxlQ29udHJvbGxlZEVsZW1lbnRJRFJl
cXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjp0b2dnbGVQ
aWN0dXJlSW5QaWN0dXJlKToKKyAgICAgICAgKFdlYktpdDo6UGxheWJhY2tTZXNzaW9uTWFuYWdl
cjo6dG9nZ2xlTXV0ZWQpOgorICAgICAgICAoV2ViS2l0OjpQbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
OjpzZXRNdXRlZCk6CisgICAgICAgIChXZWJLaXQ6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OnNl
dFZvbHVtZSk6CisgICAgICAgIChXZWJLaXQ6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OnNldFBs
YXlpbmdPblNlY29uZFNjcmVlbik6CisgICAgICAgIChXZWJLaXQ6Om5leHRDb250ZXh0SWQpOiBE
ZWxldGUuCisgICAgICAgIC0gUmVwbGFjZSB3aXRoIFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVu
dGlmaWVyOjpnZW5lcmF0ZSgpLgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxs
c2NyZWVuTWFuYWdlci5oOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5JbnRlcmZh
Y2VDb250ZXh0OjpjcmVhdGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxs
c2NyZWVuTWFuYWdlci5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1Zp
ZGVvRnVsbHNjcmVlbk1hbmFnZXIubW06CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVl
bkludGVyZmFjZUNvbnRleHQ6OlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQpOgorICAg
ICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpjcmVhdGVNb2RlbEFuZEludGVy
ZmFjZSk6CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmVuc3VyZU1v
ZGVsQW5kSW50ZXJmYWNlKToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdl
cjo6ZW5zdXJlTW9kZWwpOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
OjplbnN1cmVJbnRlcmZhY2UpOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyOjpyZW1vdmVDb250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFu
YWdlcjo6YWRkQ2xpZW50Rm9yQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNj
cmVlbk1hbmFnZXI6OnJlbW92ZUNsaWVudEZvckNvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjplbnRlclZpZGVvRnVsbHNjcmVlbkZvclZpZGVvRWxlbWVu
dCk6CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmV4aXRWaWRlb0Z1
bGxzY3JlZW5Gb3JWaWRlb0VsZW1lbnQpOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyOjpleGl0VmlkZW9GdWxsc2NyZWVuVG9Nb2RlV2l0aG91dEFuaW1hdGlvbik6Cisg
ICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6Omhhc1ZpZGVvQ2hhbmdlZCk6
CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnZpZGVvRGltZW5zaW9u
c0NoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpyZXF1
ZXN0RnVsbHNjcmVlbk1vZGUpOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyOjpmdWxsc2NyZWVuTW9kZUNoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyOjpyZXF1ZXN0VXBkYXRlSW5saW5lUmVjdCk6CisgICAgICAgIChXZWJLaXQ6
OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnJlcXVlc3RWaWRlb0NvbnRlbnRMYXllcik6CisgICAg
ICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnJldHVyblZpZGVvQ29udGVudExh
eWVyKToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZGlkU2V0dXBG
dWxsc2NyZWVuKToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6d2ls
bEV4aXRGdWxsc2NyZWVuKToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdl
cjo6ZGlkRW50ZXJGdWxsc2NyZWVuKToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVu
TWFuYWdlcjo6ZGlkRXhpdEZ1bGxzY3JlZW4pOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyOjpkaWRDbGVhbnVwRnVsbHNjcmVlbik6CisgICAgICAgIChXZWJLaXQ6OlZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnNldFZpZGVvTGF5ZXJHcmF2aXR5RW51bSk6CisgICAgICAg
IChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmZ1bGxzY3JlZW5NYXlSZXR1cm5Ub0lu
bGluZSk6CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnJlcXVlc3RS
b3V0ZVNoYXJpbmdQb2xpY3lBbmRDb250ZXh0VUlEKToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9G
dWxsc2NyZWVuTWFuYWdlcjo6c2V0VmlkZW9MYXllckZyYW1lRmVuY2VkKToKKwogMjAyMC0wNi0y
MyAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdS
RVNTSU9OIChyMjQ0NjMzKTogTWFpbCBmbGFzaGVzIHdoZW4gY29weWluZyB0ZXh0IGluIGFuIGVt
YWlsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5
IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQppbmRleCBhNWZjNmNk
M2JiZGQ5ODNjY2NiZDk2MWU0OGMyOTdlNzQzMzFmNzUwLi43OTY2NDBkYTE4ZDcwZjdhNDliODY3
OTVlZTllNWRkNzhmZmYzNjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Vi
a2l0L21lc3NhZ2VzLnB5CisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2Fn
ZXMucHkKQEAgLTI0MSw2ICsyNDEsNyBAQCBkZWYgdHlwZXNfdGhhdF9jYW5ub3RfYmVfZm9yd2Fy
ZF9kZWNsYXJlZCgpOgogICAgICAgICAnV2ViS2l0OjpNRE5TUmVnaXN0ZXJJZGVudGlmaWVyJywK
ICAgICAgICAgJ1dlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllcicsCiAg
ICAgICAgICdXZWJLaXQ6Ok1lZGlhUmVjb3JkZXJJZGVudGlmaWVyJywKKyAgICAgICAgJ1dlYktp
dDo6UGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXInLAogICAgICAgICAnV2ViS2l0OjpQ
bHVnaW5Qcm9jZXNzVHlwZScsCiAgICAgICAgICdXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRp
b25JZGVudGlmaWVyJywKICAgICAgICAgJ1dlYktpdDo6UmVtb3RlQXVkaW9TZXNzaW9uSWRlbnRp
ZmllcicsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1Bs
YXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5oCmluZGV4IGIyNzU2NzM1OWQzNzBiNGZiYzIxNzk3
ZWY4ZGVmNzhjNTVhMWQ3MWMuLjBiYjA1OTE3OTg1ZDIwNzk2ZmIxZGMwYTE2ZGFmMjZmMTVmMjc2
MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXliYWNrU2Vz
c2lvbk1hbmFnZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1Bs
YXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRB
VElPTl9NT0RFKSkKIAogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgIlBs
YXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9HcmFw
aGljc0xheWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVNlbGVjdGlvbk9wdGlvbi5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1WaWV3Lmg+CkBAIC01OCw3ICs1OSw3IEBAIGNsYXNz
IFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTsKIAogY2xhc3MgUGxheWJhY2tTZXNzaW9uTW9k
ZWxDb250ZXh0IGZpbmFsOiBwdWJsaWMgUmVmQ291bnRlZDxQbGF5YmFja1Nlc3Npb25Nb2RlbENv
bnRleHQ+LCBwdWJsaWMgV2ViQ29yZTo6UGxheWJhY2tTZXNzaW9uTW9kZWwgIHsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUmVmPFBsYXliYWNrU2Vzc2lvbk1vZGVsQ29udGV4dD4gY3JlYXRlKFBsYXli
YWNrU2Vzc2lvbk1hbmFnZXJQcm94eSYgbWFuYWdlciwgdWludDY0X3QgY29udGV4dElkKQorICAg
IHN0YXRpYyBSZWY8UGxheWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0PiBjcmVhdGUoUGxheWJhY2tT
ZXNzaW9uTWFuYWdlclByb3h5JiBtYW5hZ2VyLCBQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRp
ZmllciBjb250ZXh0SWQpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQbGF5
YmFja1Nlc3Npb25Nb2RlbENvbnRleHQobWFuYWdlciwgY29udGV4dElkKSk7CiAgICAgfQpAQCAt
OTEsNyArOTIsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBWaWRlb0Z1
bGxzY3JlZW5Nb2RlbENvbnRleHQ7CiAKLSAgICBQbGF5YmFja1Nlc3Npb25Nb2RlbENvbnRleHQo
UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5JiBtYW5hZ2VyLCB1aW50NjRfdCBjb250ZXh0SWQp
CisgICAgUGxheWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0KFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQ
cm94eSYgbWFuYWdlciwgUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4dElk
KQogICAgICAgICA6IG1fbWFuYWdlcigmbWFuYWdlcikKICAgICAgICAgLCBtX2NvbnRleHRJZChj
b250ZXh0SWQpCiAgICAgewpAQCAtMTQxLDcgKzE0Miw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBp
c1BpY3R1cmVJblBpY3R1cmVBY3RpdmUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3BpY3R1cmVJ
blBpY3R1cmVBY3RpdmU7IH0KIAogICAgIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eSogbV9t
YW5hZ2VyOwotICAgIHVpbnQ2NF90IG1fY29udGV4dElkOworICAgIFBsYXliYWNrU2Vzc2lvbkNv
bnRleHRJZGVudGlmaWVyIG1fY29udGV4dElkOwogICAgIEhhc2hTZXQ8V2ViQ29yZTo6UGxheWJh
Y2tTZXNzaW9uTW9kZWxDbGllbnQqPiBtX2NsaWVudHM7CiAgICAgZG91YmxlIG1fcGxheWJhY2tT
dGFydGVkVGltZSB7IDAgfTsKICAgICBib29sIG1fcGxheWJhY2tTdGFydGVkVGltZU5lZWRzVXBk
YXRlIHsgZmFsc2UgfTsKQEAgLTE4Nyw1OSArMTg4LDU5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBk
aWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsK
IAogICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxSZWZQdHI8UGxheWJhY2tTZXNzaW9uTW9kZWxDb250
ZXh0PiwgUmVmUHRyPFBsYXRmb3JtUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlPj4gTW9kZWxJbnRl
cmZhY2VUdXBsZTsKLSAgICBNb2RlbEludGVyZmFjZVR1cGxlIGNyZWF0ZU1vZGVsQW5kSW50ZXJm
YWNlKHVpbnQ2NF90IGNvbnRleHRJZCk7Ci0gICAgTW9kZWxJbnRlcmZhY2VUdXBsZSYgZW5zdXJl
TW9kZWxBbmRJbnRlcmZhY2UodWludDY0X3QgY29udGV4dElkKTsKLSAgICBQbGF5YmFja1Nlc3Np
b25Nb2RlbENvbnRleHQmIGVuc3VyZU1vZGVsKHVpbnQ2NF90IGNvbnRleHRJZCk7Ci0gICAgUGxh
dGZvcm1QbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UmIGVuc3VyZUludGVyZmFjZSh1aW50NjRfdCBj
b250ZXh0SWQpOwotICAgIHZvaWQgYWRkQ2xpZW50Rm9yQ29udGV4dCh1aW50NjRfdCBjb250ZXh0
SWQpOwotICAgIHZvaWQgcmVtb3ZlQ2xpZW50Rm9yQ29udGV4dCh1aW50NjRfdCBjb250ZXh0SWQp
OworICAgIE1vZGVsSW50ZXJmYWNlVHVwbGUgY3JlYXRlTW9kZWxBbmRJbnRlcmZhY2UoUGxheWJh
Y2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIpOworICAgIE1vZGVsSW50ZXJmYWNlVHVwbGUmIGVu
c3VyZU1vZGVsQW5kSW50ZXJmYWNlKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyKTsK
KyAgICBQbGF5YmFja1Nlc3Npb25Nb2RlbENvbnRleHQmIGVuc3VyZU1vZGVsKFBsYXliYWNrU2Vz
c2lvbkNvbnRleHRJZGVudGlmaWVyKTsKKyAgICBQbGF0Zm9ybVBsYXliYWNrU2Vzc2lvbkludGVy
ZmFjZSYgZW5zdXJlSW50ZXJmYWNlKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyKTsK
KyAgICB2b2lkIGFkZENsaWVudEZvckNvbnRleHQoUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50
aWZpZXIpOworICAgIHZvaWQgcmVtb3ZlQ2xpZW50Rm9yQ29udGV4dChQbGF5YmFja1Nlc3Npb25D
b250ZXh0SWRlbnRpZmllcik7CiAKLSAgICB1aW50NjRfdCBjb250cm9sc01hbmFnZXJDb250ZXh0
SWQoKSBjb25zdCB7IHJldHVybiBtX2NvbnRyb2xzTWFuYWdlckNvbnRleHRJZDsgfQorICAgIFBs
YXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRyb2xzTWFuYWdlckNvbnRleHRJZCgp
IGNvbnN0IHsgcmV0dXJuIG1fY29udHJvbHNNYW5hZ2VyQ29udGV4dElkOyB9CiAKICAgICAvLyBN
ZXNzYWdlcyBmcm9tIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXIKLSAgICB2b2lkIHNldFVwUGxheWJh
Y2tDb250cm9sc01hbmFnZXJXaXRoSUQodWludDY0X3QgY29udGV4dElkKTsKKyAgICB2b2lkIHNl
dFVwUGxheWJhY2tDb250cm9sc01hbmFnZXJXaXRoSUQoUGxheWJhY2tTZXNzaW9uQ29udGV4dElk
ZW50aWZpZXIpOwogICAgIHZvaWQgY2xlYXJQbGF5YmFja0NvbnRyb2xzTWFuYWdlcigpOwotICAg
IHZvaWQgY3VycmVudFRpbWVDaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJZCwgZG91YmxlIGN1cnJl
bnRUaW1lLCBkb3VibGUgaG9zdFRpbWUpOwotICAgIHZvaWQgYnVmZmVyZWRUaW1lQ2hhbmdlZCh1
aW50NjRfdCBjb250ZXh0SWQsIGRvdWJsZSBidWZmZXJlZFRpbWUpOwotICAgIHZvaWQgc2Vla2Fi
bGVSYW5nZXNWZWN0b3JDaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJZCwgVmVjdG9yPHN0ZDo6cGFp
cjxkb3VibGUsIGRvdWJsZT4+IHJhbmdlcywgZG91YmxlIGxhc3RNb2RpZmllZFRpbWUsIGRvdWJs
ZSBsaXZlVXBkYXRlSW50ZXJ2YWwpOwotICAgIHZvaWQgY2FuUGxheUZhc3RSZXZlcnNlQ2hhbmdl
ZCh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgdmFsdWUpOwotICAgIHZvaWQgYXVkaW9NZWRpYVNl
bGVjdGlvbk9wdGlvbnNDaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJZCwgVmVjdG9yPFdlYkNvcmU6
Ok1lZGlhU2VsZWN0aW9uT3B0aW9uPiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KTsK
LSAgICB2b2lkIGxlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2VkKHVpbnQ2NF90IGNv
bnRleHRJZCwgVmVjdG9yPFdlYkNvcmU6Ok1lZGlhU2VsZWN0aW9uT3B0aW9uPiBvcHRpb25zLCB1
aW50NjRfdCBzZWxlY3RlZEluZGV4KTsKLSAgICB2b2lkIGF1ZGlvTWVkaWFTZWxlY3Rpb25JbmRl
eENoYW5nZWQodWludDY0X3QgY29udGV4dElkLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KTsKLSAg
ICB2b2lkIGxlZ2libGVNZWRpYVNlbGVjdGlvbkluZGV4Q2hhbmdlZCh1aW50NjRfdCBjb250ZXh0
SWQsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpOwotICAgIHZvaWQgZXh0ZXJuYWxQbGF5YmFja1By
b3BlcnRpZXNDaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vbCBlbmFibGVkLCB1aW50MzJf
dCB0YXJnZXRUeXBlLCBTdHJpbmcgbG9jYWxpemVkRGV2aWNlTmFtZSk7Ci0gICAgdm9pZCB3aXJl
bGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZENoYW5nZWQodWludDY0X3QgY29udGV4dElkLCBib29s
KTsKLSAgICB2b2lkIGR1cmF0aW9uQ2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIGRvdWJsZSBk
dXJhdGlvbik7Ci0gICAgdm9pZCBwbGF5YmFja1N0YXJ0ZWRUaW1lQ2hhbmdlZCh1aW50NjRfdCBj
b250ZXh0SWQsIGRvdWJsZSBwbGF5YmFja1N0YXJ0ZWRUaW1lKTsKLSAgICB2b2lkIHJhdGVDaGFu
Z2VkKHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vbCBpc1BsYXlpbmcsIGRvdWJsZSByYXRlKTsKLSAg
ICB2b2lkIGhhbmRsZUNvbnRyb2xsZWRFbGVtZW50SURSZXNwb25zZSh1aW50NjRfdCwgU3RyaW5n
KSBjb25zdDsKLSAgICB2b2lkIG11dGVkQ2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wg
bXV0ZWQpOwotICAgIHZvaWQgdm9sdW1lQ2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIGRvdWJs
ZSB2b2x1bWUpOwotICAgIHZvaWQgcGljdHVyZUluUGljdHVyZVN1cHBvcnRlZENoYW5nZWQodWlu
dDY0X3QgY29udGV4dElkLCBib29sIHBpY3R1cmVJblBpY3R1cmVTdXBwb3J0ZWQpOworICAgIHZv
aWQgY3VycmVudFRpbWVDaGFuZ2VkKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyLCBk
b3VibGUgY3VycmVudFRpbWUsIGRvdWJsZSBob3N0VGltZSk7CisgICAgdm9pZCBidWZmZXJlZFRp
bWVDaGFuZ2VkKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyLCBkb3VibGUgYnVmZmVy
ZWRUaW1lKTsKKyAgICB2b2lkIHNlZWthYmxlUmFuZ2VzVmVjdG9yQ2hhbmdlZChQbGF5YmFja1Nl
c3Npb25Db250ZXh0SWRlbnRpZmllciwgVmVjdG9yPHN0ZDo6cGFpcjxkb3VibGUsIGRvdWJsZT4+
IHJhbmdlcywgZG91YmxlIGxhc3RNb2RpZmllZFRpbWUsIGRvdWJsZSBsaXZlVXBkYXRlSW50ZXJ2
YWwpOworICAgIHZvaWQgY2FuUGxheUZhc3RSZXZlcnNlQ2hhbmdlZChQbGF5YmFja1Nlc3Npb25D
b250ZXh0SWRlbnRpZmllciwgYm9vbCB2YWx1ZSk7CisgICAgdm9pZCBhdWRpb01lZGlhU2VsZWN0
aW9uT3B0aW9uc0NoYW5nZWQoUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIsIFZlY3Rv
cjxXZWJDb3JlOjpNZWRpYVNlbGVjdGlvbk9wdGlvbj4gb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0
ZWRJbmRleCk7CisgICAgdm9pZCBsZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZChQ
bGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciwgVmVjdG9yPFdlYkNvcmU6Ok1lZGlhU2Vs
ZWN0aW9uT3B0aW9uPiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KTsKKyAgICB2b2lk
IGF1ZGlvTWVkaWFTZWxlY3Rpb25JbmRleENoYW5nZWQoUGxheWJhY2tTZXNzaW9uQ29udGV4dElk
ZW50aWZpZXIsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpOworICAgIHZvaWQgbGVnaWJsZU1lZGlh
U2VsZWN0aW9uSW5kZXhDaGFuZ2VkKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyLCB1
aW50NjRfdCBzZWxlY3RlZEluZGV4KTsKKyAgICB2b2lkIGV4dGVybmFsUGxheWJhY2tQcm9wZXJ0
aWVzQ2hhbmdlZChQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciwgYm9vbCBlbmFibGVk
LCB1aW50MzJfdCB0YXJnZXRUeXBlLCBTdHJpbmcgbG9jYWxpemVkRGV2aWNlTmFtZSk7CisgICAg
dm9pZCB3aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZENoYW5nZWQoUGxheWJhY2tTZXNzaW9u
Q29udGV4dElkZW50aWZpZXIsIGJvb2wpOworICAgIHZvaWQgZHVyYXRpb25DaGFuZ2VkKFBsYXli
YWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyLCBkb3VibGUgZHVyYXRpb24pOworICAgIHZvaWQg
cGxheWJhY2tTdGFydGVkVGltZUNoYW5nZWQoUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZp
ZXIsIGRvdWJsZSBwbGF5YmFja1N0YXJ0ZWRUaW1lKTsKKyAgICB2b2lkIHJhdGVDaGFuZ2VkKFBs
YXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyLCBib29sIGlzUGxheWluZywgZG91YmxlIHJh
dGUpOworICAgIHZvaWQgaGFuZGxlQ29udHJvbGxlZEVsZW1lbnRJRFJlc3BvbnNlKFBsYXliYWNr
U2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyLCBTdHJpbmcpIGNvbnN0OworICAgIHZvaWQgbXV0ZWRD
aGFuZ2VkKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyLCBib29sIG11dGVkKTsKKyAg
ICB2b2lkIHZvbHVtZUNoYW5nZWQoUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIsIGRv
dWJsZSB2b2x1bWUpOworICAgIHZvaWQgcGljdHVyZUluUGljdHVyZVN1cHBvcnRlZENoYW5nZWQo
UGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIsIGJvb2wgcGljdHVyZUluUGljdHVyZVN1
cHBvcnRlZCk7CiAKICAgICAvLyBNZXNzYWdlcyB0byBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyCi0g
ICAgdm9pZCBwbGF5KHVpbnQ2NF90IGNvbnRleHRJZCk7Ci0gICAgdm9pZCBwYXVzZSh1aW50NjRf
dCBjb250ZXh0SWQpOwotICAgIHZvaWQgdG9nZ2xlUGxheVN0YXRlKHVpbnQ2NF90IGNvbnRleHRJ
ZCk7Ci0gICAgdm9pZCBiZWdpblNjcnViYmluZyh1aW50NjRfdCBjb250ZXh0SWQpOwotICAgIHZv
aWQgZW5kU2NydWJiaW5nKHVpbnQ2NF90IGNvbnRleHRJZCk7Ci0gICAgdm9pZCBzZWVrVG9UaW1l
KHVpbnQ2NF90IGNvbnRleHRJZCwgZG91YmxlIHRpbWUsIGRvdWJsZSBiZWZvcmUsIGRvdWJsZSBh
ZnRlcik7Ci0gICAgdm9pZCBmYXN0U2Vlayh1aW50NjRfdCBjb250ZXh0SWQsIGRvdWJsZSB0aW1l
KTsKLSAgICB2b2lkIGJlZ2luU2Nhbm5pbmdGb3J3YXJkKHVpbnQ2NF90IGNvbnRleHRJZCk7Ci0g
ICAgdm9pZCBiZWdpblNjYW5uaW5nQmFja3dhcmQodWludDY0X3QgY29udGV4dElkKTsKLSAgICB2
b2lkIGVuZFNjYW5uaW5nKHVpbnQ2NF90IGNvbnRleHRJZCk7Ci0gICAgdm9pZCBzZWxlY3RBdWRp
b01lZGlhT3B0aW9uKHVpbnQ2NF90IGNvbnRleHRJZCwgdWludDY0X3QgaW5kZXgpOwotICAgIHZv
aWQgc2VsZWN0TGVnaWJsZU1lZGlhT3B0aW9uKHVpbnQ2NF90IGNvbnRleHRJZCwgdWludDY0X3Qg
aW5kZXgpOwotICAgIHZvaWQgdG9nZ2xlUGljdHVyZUluUGljdHVyZSh1aW50NjRfdCBjb250ZXh0
SWQpOwotICAgIHZvaWQgdG9nZ2xlTXV0ZWQodWludDY0X3QgY29udGV4dElkKTsKLSAgICB2b2lk
IHNldE11dGVkKHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vbCk7Ci0gICAgdm9pZCBzZXRWb2x1bWUo
dWludDY0X3QgY29udGV4dElkLCBkb3VibGUpOwotICAgIHZvaWQgc2V0UGxheWluZ09uU2Vjb25k
U2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vbCk7CisgICAgdm9pZCBwbGF5KFBsYXliYWNr
U2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyKTsKKyAgICB2b2lkIHBhdXNlKFBsYXliYWNrU2Vzc2lv
bkNvbnRleHRJZGVudGlmaWVyKTsKKyAgICB2b2lkIHRvZ2dsZVBsYXlTdGF0ZShQbGF5YmFja1Nl
c3Npb25Db250ZXh0SWRlbnRpZmllcik7CisgICAgdm9pZCBiZWdpblNjcnViYmluZyhQbGF5YmFj
a1Nlc3Npb25Db250ZXh0SWRlbnRpZmllcik7CisgICAgdm9pZCBlbmRTY3J1YmJpbmcoUGxheWJh
Y2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIpOworICAgIHZvaWQgc2Vla1RvVGltZShQbGF5YmFj
a1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciwgZG91YmxlIHRpbWUsIGRvdWJsZSBiZWZvcmUsIGRv
dWJsZSBhZnRlcik7CisgICAgdm9pZCBmYXN0U2VlayhQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRl
bnRpZmllciwgZG91YmxlIHRpbWUpOworICAgIHZvaWQgYmVnaW5TY2FubmluZ0ZvcndhcmQoUGxh
eWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIpOworICAgIHZvaWQgYmVnaW5TY2FubmluZ0Jh
Y2t3YXJkKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyKTsKKyAgICB2b2lkIGVuZFNj
YW5uaW5nKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyKTsKKyAgICB2b2lkIHNlbGVj
dEF1ZGlvTWVkaWFPcHRpb24oUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIsIHVpbnQ2
NF90IGluZGV4KTsKKyAgICB2b2lkIHNlbGVjdExlZ2libGVNZWRpYU9wdGlvbihQbGF5YmFja1Nl
c3Npb25Db250ZXh0SWRlbnRpZmllciwgdWludDY0X3QgaW5kZXgpOworICAgIHZvaWQgdG9nZ2xl
UGljdHVyZUluUGljdHVyZShQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllcik7CisgICAg
dm9pZCB0b2dnbGVNdXRlZChQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllcik7CisgICAg
dm9pZCBzZXRNdXRlZChQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciwgYm9vbCk7Cisg
ICAgdm9pZCBzZXRWb2x1bWUoUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIsIGRvdWJs
ZSk7CisgICAgdm9pZCBzZXRQbGF5aW5nT25TZWNvbmRTY3JlZW4oUGxheWJhY2tTZXNzaW9uQ29u
dGV4dElkZW50aWZpZXIsIGJvb2wpOwogCiAgICAgV2ViUGFnZVByb3h5KiBtX3BhZ2U7Ci0gICAg
SGFzaE1hcDx1aW50NjRfdCwgTW9kZWxJbnRlcmZhY2VUdXBsZT4gbV9jb250ZXh0TWFwOwotICAg
IHVpbnQ2NF90IG1fY29udHJvbHNNYW5hZ2VyQ29udGV4dElkIHsgMCB9OwotICAgIEhhc2hDb3Vu
dGVkU2V0PHVpbnQ2NF90PiBtX2NsaWVudENvdW50czsKKyAgICBIYXNoTWFwPFBsYXliYWNrU2Vz
c2lvbkNvbnRleHRJZGVudGlmaWVyLCBNb2RlbEludGVyZmFjZVR1cGxlPiBtX2NvbnRleHRNYXA7
CisgICAgUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIgbV9jb250cm9sc01hbmFnZXJD
b250ZXh0SWQ7CisgICAgSGFzaENvdW50ZWRTZXQ8UGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50
aWZpZXI+IG1fY2xpZW50Q291bnRzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF5YmFja1Nlc3Npb25NYW5h
Z2VyUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF5
YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KaW5kZXggYzU4ZDIwZTFiMmI5MDU4
OTUyOTIyYmU5NWQ4YWI1ODA5N2MxOWRkYy4uZDcxNTY2YjA0NTNkZjJkNjViOTI2ZDI1NThiZTVh
NzUwNjMxODE5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGxh
eWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgpA
QCAtMjIsMjUgKzIyLDI1IEBACiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKSB8fCAoUExBVEZP
Uk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKQogbWVzc2FnZXMgLT4g
UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5IHsKLSAgICBDdXJyZW50VGltZUNoYW5nZWQodWlu
dDY0X3QgY29udGV4dElkLCBkb3VibGUgY3VycmVudFRpbWUsIGRvdWJsZSBob3N0VGltZSkKLSAg
ICBCdWZmZXJlZFRpbWVDaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJZCwgZG91YmxlIGJ1ZmZlcmVk
VGltZSkKLSAgICBTZWVrYWJsZVJhbmdlc1ZlY3RvckNoYW5nZWQodWludDY0X3QgY29udGV4dElk
LCBWZWN0b3I8c3RkOjpwYWlyPGRvdWJsZSwgZG91YmxlPj4gcmFuZ2VzLCBkb3VibGUgbGFzdE1v
ZGlmaWVkVGltZSwgZG91YmxlIGxpdmVVcGRhdGVJbnRlcnZhbCkKLSAgICBDYW5QbGF5RmFzdFJl
dmVyc2VDaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vbCB2YWx1ZSkKLSAgICBBdWRpb01l
ZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQodWludDY0X3QgY29udGV4dElkLCBWZWN0b3I8V2Vi
Q29yZTo6TWVkaWFTZWxlY3Rpb25PcHRpb24+IG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5k
ZXgpCi0gICAgTGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQodWludDY0X3QgY29u
dGV4dElkLCBWZWN0b3I8V2ViQ29yZTo6TWVkaWFTZWxlY3Rpb25PcHRpb24+IG9wdGlvbnMsIHVp
bnQ2NF90IHNlbGVjdGVkSW5kZXgpCi0gICAgQXVkaW9NZWRpYVNlbGVjdGlvbkluZGV4Q2hhbmdl
ZCh1aW50NjRfdCBjb250ZXh0SWQsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpCi0gICAgTGVnaWJs
ZU1lZGlhU2VsZWN0aW9uSW5kZXhDaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJZCwgdWludDY0X3Qg
c2VsZWN0ZWRJbmRleCkKLSAgICBFeHRlcm5hbFBsYXliYWNrUHJvcGVydGllc0NoYW5nZWQodWlu
dDY0X3QgY29udGV4dElkLCBib29sIGVuYWJsZWQsIHVpbnQzMl90IHRhcmdldFR5cGUsIFN0cmlu
ZyBsb2NhbGl6ZWREZXZpY2VOYW1lKQotICAgIFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVk
Q2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgZGlzYWJsZWQpCi0gICAgRHVyYXRpb25D
aGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJZCwgZG91YmxlIGR1cmF0aW9uKQotICAgIFBsYXliYWNr
U3RhcnRlZFRpbWVDaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJZCwgZG91YmxlIHBsYXliYWNrU3Rh
cnRlZFRpbWUpCi0gICAgUmF0ZUNoYW5nZWQodWludDY0X3QgY29udGV4dElkLCBib29sIGlzUGxh
eWluZywgZG91YmxlIHJhdGUpCi0gICAgTXV0ZWRDaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJZCwg
Ym9vbCBtdXRlZCk7Ci0gICAgVm9sdW1lQ2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIGRvdWJs
ZSB2b2x1bWUpOwotICAgIFBpY3R1cmVJblBpY3R1cmVTdXBwb3J0ZWRDaGFuZ2VkKHVpbnQ2NF90
IGNvbnRleHRJRCwgYm9vbCBwaWN0dXJlSW5QaWN0dXJlU3VwcG9ydGVkKQotICAgIFNldFVwUGxh
eWJhY2tDb250cm9sc01hbmFnZXJXaXRoSUQodWludDY0X3QgY29udGV4dElkKQorICAgIEN1cnJl
bnRUaW1lQ2hhbmdlZChXZWJLaXQ6OlBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNv
bnRleHRJZCwgZG91YmxlIGN1cnJlbnRUaW1lLCBkb3VibGUgaG9zdFRpbWUpCisgICAgQnVmZmVy
ZWRUaW1lQ2hhbmdlZChXZWJLaXQ6OlBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNv
bnRleHRJZCwgZG91YmxlIGJ1ZmZlcmVkVGltZSkKKyAgICBTZWVrYWJsZVJhbmdlc1ZlY3RvckNo
YW5nZWQoV2ViS2l0OjpQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQs
IFZlY3RvcjxzdGQ6OnBhaXI8ZG91YmxlLCBkb3VibGU+PiByYW5nZXMsIGRvdWJsZSBsYXN0TW9k
aWZpZWRUaW1lLCBkb3VibGUgbGl2ZVVwZGF0ZUludGVydmFsKQorICAgIENhblBsYXlGYXN0UmV2
ZXJzZUNoYW5nZWQoV2ViS2l0OjpQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciBjb250
ZXh0SWQsIGJvb2wgdmFsdWUpCisgICAgQXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2Vk
KFdlYktpdDo6UGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4dElkLCBWZWN0
b3I8V2ViQ29yZTo6TWVkaWFTZWxlY3Rpb25PcHRpb24+IG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVj
dGVkSW5kZXgpCisgICAgTGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQoV2ViS2l0
OjpQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQsIFZlY3RvcjxXZWJD
b3JlOjpNZWRpYVNlbGVjdGlvbk9wdGlvbj4gb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRl
eCkKKyAgICBBdWRpb01lZGlhU2VsZWN0aW9uSW5kZXhDaGFuZ2VkKFdlYktpdDo6UGxheWJhY2tT
ZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4dElkLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4
KQorICAgIExlZ2libGVNZWRpYVNlbGVjdGlvbkluZGV4Q2hhbmdlZChXZWJLaXQ6OlBsYXliYWNr
U2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCwgdWludDY0X3Qgc2VsZWN0ZWRJbmRl
eCkKKyAgICBFeHRlcm5hbFBsYXliYWNrUHJvcGVydGllc0NoYW5nZWQoV2ViS2l0OjpQbGF5YmFj
a1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQsIGJvb2wgZW5hYmxlZCwgdWludDMy
X3QgdGFyZ2V0VHlwZSwgU3RyaW5nIGxvY2FsaXplZERldmljZU5hbWUpCisgICAgV2lyZWxlc3NW
aWRlb1BsYXliYWNrRGlzYWJsZWRDaGFuZ2VkKFdlYktpdDo6UGxheWJhY2tTZXNzaW9uQ29udGV4
dElkZW50aWZpZXIgY29udGV4dElkLCBib29sIGRpc2FibGVkKQorICAgIER1cmF0aW9uQ2hhbmdl
ZChXZWJLaXQ6OlBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCwgZG91
YmxlIGR1cmF0aW9uKQorICAgIFBsYXliYWNrU3RhcnRlZFRpbWVDaGFuZ2VkKFdlYktpdDo6UGxh
eWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4dElkLCBkb3VibGUgcGxheWJhY2tT
dGFydGVkVGltZSkKKyAgICBSYXRlQ2hhbmdlZChXZWJLaXQ6OlBsYXliYWNrU2Vzc2lvbkNvbnRl
eHRJZGVudGlmaWVyIGNvbnRleHRJZCwgYm9vbCBpc1BsYXlpbmcsIGRvdWJsZSByYXRlKQorICAg
IE11dGVkQ2hhbmdlZChXZWJLaXQ6OlBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNv
bnRleHRJZCwgYm9vbCBtdXRlZCk7CisgICAgVm9sdW1lQ2hhbmdlZChXZWJLaXQ6OlBsYXliYWNr
U2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCwgZG91YmxlIHZvbHVtZSk7CisgICAg
UGljdHVyZUluUGljdHVyZVN1cHBvcnRlZENoYW5nZWQoV2ViS2l0OjpQbGF5YmFja1Nlc3Npb25D
b250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQsIGJvb2wgcGljdHVyZUluUGljdHVyZVN1cHBvcnRl
ZCkKKyAgICBTZXRVcFBsYXliYWNrQ29udHJvbHNNYW5hZ2VyV2l0aElEKFdlYktpdDo6UGxheWJh
Y2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4dElkKQogICAgIENsZWFyUGxheWJhY2tD
b250cm9sc01hbmFnZXIoKQogCi0gICAgSGFuZGxlQ29udHJvbGxlZEVsZW1lbnRJRFJlc3BvbnNl
KHVpbnQ2NF90IGNvbnRleHRJZCwgU3RyaW5nIGlkKQorICAgIEhhbmRsZUNvbnRyb2xsZWRFbGVt
ZW50SURSZXNwb25zZShXZWJLaXQ6OlBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNv
bnRleHRJZCwgU3RyaW5nIGlkKQogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkubW0KaW5k
ZXggZGMxMTU5Y2QzNzhlNmMxYWRmOTQxMDVmZDEyYzUyMDY1ZTFhMWVjYS4uYTBjOGVjMDE2NTY2
ZjcwYTU5ZjZlOWQxMTY1ZDhhYWQ0ZmUzYTQ5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5tbQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTMzLDggKzMzLDYgQEAKICNpbXBvcnQgIldlYlBhZ2VQcm94eS5oIgogI2ltcG9ydCAiV2Vi
UHJvY2Vzc1Byb3h5LmgiCiAKLSNkZWZpbmUgTUVTU0FHRV9DSEVDS19DT05URVhUSUQoaWRlbnRp
ZmllcikgTUVTU0FHRV9DSEVDS19CQVNFKG1fY29udGV4dE1hcC5pc1ZhbGlkS2V5KGlkZW50aWZp
ZXIpLCBtX3BhZ2UtPnByb2Nlc3MoKS5jb25uZWN0aW9uKCkpCi0KIG5hbWVzcGFjZSBXZWJLaXQg
ewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTMyNCw3ICszMjIsNyBAQCB2b2lkIFBs
YXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6aW52YWxpZGF0ZSgpCiAgICAgICAgIGludGVyZmFj
ZS0+aW52YWxpZGF0ZSgpOwogfQogCi1QbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6Ok1vZGVs
SW50ZXJmYWNlVHVwbGUgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpjcmVhdGVNb2RlbEFu
ZEludGVyZmFjZSh1aW50NjRfdCBjb250ZXh0SWQpCitQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJv
eHk6Ok1vZGVsSW50ZXJmYWNlVHVwbGUgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpjcmVh
dGVNb2RlbEFuZEludGVyZmFjZShQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciBjb250
ZXh0SWQpCiB7CiAgICAgUmVmPFBsYXliYWNrU2Vzc2lvbk1vZGVsQ29udGV4dD4gbW9kZWwgPSBQ
bGF5YmFja1Nlc3Npb25Nb2RlbENvbnRleHQ6OmNyZWF0ZSgqdGhpcywgY29udGV4dElkKTsKICAg
ICBSZWY8UGxhdGZvcm1QbGF5YmFja1Nlc3Npb25JbnRlcmZhY2U+IGludGVyZmFjZSA9IFBsYXRm
b3JtUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlOjpjcmVhdGUobW9kZWwpOwpAQCAtMzMyLDcgKzMz
MCw3IEBAIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6TW9kZWxJbnRlcmZhY2VUdXBsZSBQ
bGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OmNyCiAgICAgcmV0dXJuIHN0ZDo6bWFrZV90dXBs
ZShXVEZNb3ZlKG1vZGVsKSwgV1RGTW92ZShpbnRlcmZhY2UpKTsKIH0KIAotUGxheWJhY2tTZXNz
aW9uTWFuYWdlclByb3h5OjpNb2RlbEludGVyZmFjZVR1cGxlJiBQbGF5YmFja1Nlc3Npb25NYW5h
Z2VyUHJveHk6OmVuc3VyZU1vZGVsQW5kSW50ZXJmYWNlKHVpbnQ2NF90IGNvbnRleHRJZCkKK1Bs
YXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6TW9kZWxJbnRlcmZhY2VUdXBsZSYgUGxheWJhY2tT
ZXNzaW9uTWFuYWdlclByb3h5OjplbnN1cmVNb2RlbEFuZEludGVyZmFjZShQbGF5YmFja1Nlc3Np
b25Db250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQpCiB7CiAgICAgYXV0byBhZGRSZXN1bHQgPSBt
X2NvbnRleHRNYXAuYWRkKGNvbnRleHRJZCwgTW9kZWxJbnRlcmZhY2VUdXBsZSgpKTsKICAgICBp
ZiAoYWRkUmVzdWx0LmlzTmV3RW50cnkpCkBAIC0zNDAsMjIgKzMzOCwyMiBAQCBQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyUHJveHk6Ok1vZGVsSW50ZXJmYWNlVHVwbGUmIFBsYXliYWNrU2Vzc2lvbk1h
bmFnZXJQcm94eTo6ZQogICAgIHJldHVybiBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlOwogfQog
Ci1QbGF5YmFja1Nlc3Npb25Nb2RlbENvbnRleHQmIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94
eTo6ZW5zdXJlTW9kZWwodWludDY0X3QgY29udGV4dElkKQorUGxheWJhY2tTZXNzaW9uTW9kZWxD
b250ZXh0JiBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OmVuc3VyZU1vZGVsKFBsYXliYWNr
U2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCkKIHsKICAgICByZXR1cm4gKnN0ZDo6
Z2V0PDA+KGVuc3VyZU1vZGVsQW5kSW50ZXJmYWNlKGNvbnRleHRJZCkpOwogfQogCi1QbGF0Zm9y
bVBsYXliYWNrU2Vzc2lvbkludGVyZmFjZSYgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Ojpl
bnN1cmVJbnRlcmZhY2UodWludDY0X3QgY29udGV4dElkKQorUGxhdGZvcm1QbGF5YmFja1Nlc3Np
b25JbnRlcmZhY2UmIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6ZW5zdXJlSW50ZXJmYWNl
KFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCkKIHsKICAgICByZXR1
cm4gKnN0ZDo6Z2V0PDE+KGVuc3VyZU1vZGVsQW5kSW50ZXJmYWNlKGNvbnRleHRJZCkpOwogfQog
Ci12b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6YWRkQ2xpZW50Rm9yQ29udGV4dCh1
aW50NjRfdCBjb250ZXh0SWQpCit2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6YWRk
Q2xpZW50Rm9yQ29udGV4dChQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciBjb250ZXh0
SWQpCiB7CiAgICAgbV9jbGllbnRDb3VudHMuYWRkKGNvbnRleHRJZCk7CiB9CiAKLXZvaWQgUGxh
eWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpyZW1vdmVDbGllbnRGb3JDb250ZXh0KHVpbnQ2NF90
IGNvbnRleHRJZCkKK3ZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpyZW1vdmVDbGll
bnRGb3JDb250ZXh0KFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCkK
IHsKICAgICBpZiAoIW1fY2xpZW50Q291bnRzLnJlbW92ZShjb250ZXh0SWQpKQogICAgICAgICBy
ZXR1cm47CkBAIC0zNjYsOSArMzY0LDggQEAgdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJv
eHk6OnJlbW92ZUNsaWVudEZvckNvbnRleHQodWludDY0X3QgY29udGV4dElkKQogCiAjcHJhZ21h
IG1hcmsgTWVzc2FnZXMgZnJvbSBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyCiAKLXZvaWQgUGxheWJh
Y2tTZXNzaW9uTWFuYWdlclByb3h5OjpzZXRVcFBsYXliYWNrQ29udHJvbHNNYW5hZ2VyV2l0aElE
KHVpbnQ2NF90IGNvbnRleHRJZCkKK3ZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Ojpz
ZXRVcFBsYXliYWNrQ29udHJvbHNNYW5hZ2VyV2l0aElEKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJ
ZGVudGlmaWVyIGNvbnRleHRJZCkKIHsKLSAgICBNRVNTQUdFX0NIRUNLX0NPTlRFWFRJRChjb250
ZXh0SWQpOwogICAgIGlmIChtX2NvbnRyb2xzTWFuYWdlckNvbnRleHRJZCA9PSBjb250ZXh0SWQp
CiAgICAgICAgIHJldHVybjsKIApAQCAtMzg4LDI1ICszODUsMjIgQEAgdm9pZCBQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyUHJveHk6OmNsZWFyUGxheWJhY2tDb250cm9sc01hbmFnZXIoKQogICAgICAg
ICByZXR1cm47CiAKICAgICByZW1vdmVDbGllbnRGb3JDb250ZXh0KG1fY29udHJvbHNNYW5hZ2Vy
Q29udGV4dElkKTsKLSAgICBtX2NvbnRyb2xzTWFuYWdlckNvbnRleHRJZCA9IDA7CisgICAgbV9j
b250cm9sc01hbmFnZXJDb250ZXh0SWQgPSB7IH07CiAgICAgbV9wYWdlLT52aWRlb0NvbnRyb2xz
TWFuYWdlckRpZENoYW5nZSgpOwogfQogCi12b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94
eTo6Y3VycmVudFRpbWVDaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJZCwgZG91YmxlIGN1cnJlbnRU
aW1lLCBkb3VibGUgaG9zdFRpbWUpCit2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6
Y3VycmVudFRpbWVDaGFuZ2VkKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRl
eHRJZCwgZG91YmxlIGN1cnJlbnRUaW1lLCBkb3VibGUgaG9zdFRpbWUpCiB7Ci0gICAgTUVTU0FH
RV9DSEVDS19DT05URVhUSUQoY29udGV4dElkKTsKICAgICBlbnN1cmVNb2RlbChjb250ZXh0SWQp
LmN1cnJlbnRUaW1lQ2hhbmdlZChjdXJyZW50VGltZSk7CiB9CiAKLXZvaWQgUGxheWJhY2tTZXNz
aW9uTWFuYWdlclByb3h5OjpidWZmZXJlZFRpbWVDaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJZCwg
ZG91YmxlIGJ1ZmZlcmVkVGltZSkKK3ZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Ojpi
dWZmZXJlZFRpbWVDaGFuZ2VkKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRl
eHRJZCwgZG91YmxlIGJ1ZmZlcmVkVGltZSkKIHsKLSAgICBNRVNTQUdFX0NIRUNLX0NPTlRFWFRJ
RChjb250ZXh0SWQpOwogICAgIGVuc3VyZU1vZGVsKGNvbnRleHRJZCkuYnVmZmVyZWRUaW1lQ2hh
bmdlZChidWZmZXJlZFRpbWUpOwogfQogCi12b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94
eTo6c2Vla2FibGVSYW5nZXNWZWN0b3JDaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJZCwgVmVjdG9y
PHN0ZDo6cGFpcjxkb3VibGUsIGRvdWJsZT4+IHJhbmdlcywgZG91YmxlIGxhc3RNb2RpZmllZFRp
bWUsIGRvdWJsZSBsaXZlVXBkYXRlSW50ZXJ2YWwpCit2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFn
ZXJQcm94eTo6c2Vla2FibGVSYW5nZXNWZWN0b3JDaGFuZ2VkKFBsYXliYWNrU2Vzc2lvbkNvbnRl
eHRJZGVudGlmaWVyIGNvbnRleHRJZCwgVmVjdG9yPHN0ZDo6cGFpcjxkb3VibGUsIGRvdWJsZT4+
IHJhbmdlcywgZG91YmxlIGxhc3RNb2RpZmllZFRpbWUsIGRvdWJsZSBsaXZlVXBkYXRlSW50ZXJ2
YWwpCiB7Ci0gICAgTUVTU0FHRV9DSEVDS19DT05URVhUSUQoY29udGV4dElkKTsKICAgICBSZWY8
VGltZVJhbmdlcz4gdGltZVJhbmdlcyA9IFRpbWVSYW5nZXM6OmNyZWF0ZSgpOwogICAgIGZvciAo
Y29uc3QgYXV0byYgcmFuZ2UgOiByYW5nZXMpIHsKICAgICAgICAgQVNTRVJUKGlzZmluaXRlKHJh
bmdlLmZpcnN0KSk7CkBAIC00MTgsOTAgKzQxMiw3NiBAQCB2b2lkIFBsYXliYWNrU2Vzc2lvbk1h
bmFnZXJQcm94eTo6c2Vla2FibGVSYW5nZXNWZWN0b3JDaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJ
ZAogICAgIGVuc3VyZU1vZGVsKGNvbnRleHRJZCkuc2Vla2FibGVSYW5nZXNDaGFuZ2VkKHRpbWVS
YW5nZXMsIGxhc3RNb2RpZmllZFRpbWUsIGxpdmVVcGRhdGVJbnRlcnZhbCk7CiB9CiAKLXZvaWQg
UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpjYW5QbGF5RmFzdFJldmVyc2VDaGFuZ2VkKHVp
bnQ2NF90IGNvbnRleHRJZCwgYm9vbCB2YWx1ZSkKK3ZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdl
clByb3h5OjpjYW5QbGF5RmFzdFJldmVyc2VDaGFuZ2VkKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJ
ZGVudGlmaWVyIGNvbnRleHRJZCwgYm9vbCB2YWx1ZSkKIHsKLSAgICBNRVNTQUdFX0NIRUNLX0NP
TlRFWFRJRChjb250ZXh0SWQpOwogICAgIGVuc3VyZU1vZGVsKGNvbnRleHRJZCkuY2FuUGxheUZh
c3RSZXZlcnNlQ2hhbmdlZCh2YWx1ZSk7CiB9CiAKLXZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdl
clByb3h5OjphdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQodWludDY0X3QgY29udGV4
dElkLCBWZWN0b3I8TWVkaWFTZWxlY3Rpb25PcHRpb24+IG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVj
dGVkSW5kZXgpCit2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6YXVkaW9NZWRpYVNl
bGVjdGlvbk9wdGlvbnNDaGFuZ2VkKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNv
bnRleHRJZCwgVmVjdG9yPE1lZGlhU2VsZWN0aW9uT3B0aW9uPiBvcHRpb25zLCB1aW50NjRfdCBz
ZWxlY3RlZEluZGV4KQogewotICAgIE1FU1NBR0VfQ0hFQ0tfQ09OVEVYVElEKGNvbnRleHRJZCk7
CiAgICAgZW5zdXJlTW9kZWwoY29udGV4dElkKS5hdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uc0No
YW5nZWQob3B0aW9ucywgc2VsZWN0ZWRJbmRleCk7CiB9CiAKLXZvaWQgUGxheWJhY2tTZXNzaW9u
TWFuYWdlclByb3h5OjpsZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZCh1aW50NjRf
dCBjb250ZXh0SWQsIFZlY3RvcjxNZWRpYVNlbGVjdGlvbk9wdGlvbj4gb3B0aW9ucywgdWludDY0
X3Qgc2VsZWN0ZWRJbmRleCkKK3ZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpsZWdp
YmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZChQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRl
bnRpZmllciBjb250ZXh0SWQsIFZlY3RvcjxNZWRpYVNlbGVjdGlvbk9wdGlvbj4gb3B0aW9ucywg
dWludDY0X3Qgc2VsZWN0ZWRJbmRleCkKIHsKLSAgICBNRVNTQUdFX0NIRUNLX0NPTlRFWFRJRChj
b250ZXh0SWQpOwogICAgIGVuc3VyZU1vZGVsKGNvbnRleHRJZCkubGVnaWJsZU1lZGlhU2VsZWN0
aW9uT3B0aW9uc0NoYW5nZWQob3B0aW9ucywgc2VsZWN0ZWRJbmRleCk7CiB9CiAKLXZvaWQgUGxh
eWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjphdWRpb01lZGlhU2VsZWN0aW9uSW5kZXhDaGFuZ2Vk
KHVpbnQ2NF90IGNvbnRleHRJZCwgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkKK3ZvaWQgUGxheWJh
Y2tTZXNzaW9uTWFuYWdlclByb3h5OjphdWRpb01lZGlhU2VsZWN0aW9uSW5kZXhDaGFuZ2VkKFBs
YXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCwgdWludDY0X3Qgc2VsZWN0
ZWRJbmRleCkKIHsKLSAgICBNRVNTQUdFX0NIRUNLX0NPTlRFWFRJRChjb250ZXh0SWQpOwogICAg
IGVuc3VyZU1vZGVsKGNvbnRleHRJZCkuYXVkaW9NZWRpYVNlbGVjdGlvbkluZGV4Q2hhbmdlZChz
ZWxlY3RlZEluZGV4KTsKIH0KIAotdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6Omxl
Z2libGVNZWRpYVNlbGVjdGlvbkluZGV4Q2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIHVpbnQ2
NF90IHNlbGVjdGVkSW5kZXgpCit2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6bGVn
aWJsZU1lZGlhU2VsZWN0aW9uSW5kZXhDaGFuZ2VkKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVu
dGlmaWVyIGNvbnRleHRJZCwgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkKIHsKLSAgICBNRVNTQUdF
X0NIRUNLX0NPTlRFWFRJRChjb250ZXh0SWQpOwogICAgIGVuc3VyZU1vZGVsKGNvbnRleHRJZCku
bGVnaWJsZU1lZGlhU2VsZWN0aW9uSW5kZXhDaGFuZ2VkKHNlbGVjdGVkSW5kZXgpOwogfQogCi12
b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6ZXh0ZXJuYWxQbGF5YmFja1Byb3BlcnRp
ZXNDaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vbCBlbmFibGVkLCB1aW50MzJfdCB0YXJn
ZXRUeXBlLCBTdHJpbmcgbG9jYWxpemVkRGV2aWNlTmFtZSkKK3ZvaWQgUGxheWJhY2tTZXNzaW9u
TWFuYWdlclByb3h5OjpleHRlcm5hbFBsYXliYWNrUHJvcGVydGllc0NoYW5nZWQoUGxheWJhY2tT
ZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4dElkLCBib29sIGVuYWJsZWQsIHVpbnQzMl90
IHRhcmdldFR5cGUsIFN0cmluZyBsb2NhbGl6ZWREZXZpY2VOYW1lKQogewotICAgIE1FU1NBR0Vf
Q0hFQ0tfQ09OVEVYVElEKGNvbnRleHRJZCk7CiAgICAgUGxheWJhY2tTZXNzaW9uTW9kZWw6OkV4
dGVybmFsUGxheWJhY2tUYXJnZXRUeXBlIHR5cGUgPSBzdGF0aWNfY2FzdDxQbGF5YmFja1Nlc3Np
b25Nb2RlbDo6RXh0ZXJuYWxQbGF5YmFja1RhcmdldFR5cGU+KHRhcmdldFR5cGUpOwogICAgIEFT
U0VSVCh0eXBlID09IFBsYXliYWNrU2Vzc2lvbk1vZGVsOjpUYXJnZXRUeXBlQWlyUGxheSB8fCB0
eXBlID09IFBsYXliYWNrU2Vzc2lvbk1vZGVsOjpUYXJnZXRUeXBlVFZPdXQgfHwgdHlwZSA9PSBQ
bGF5YmFja1Nlc3Npb25Nb2RlbDo6VGFyZ2V0VHlwZU5vbmUpOwogCiAgICAgZW5zdXJlTW9kZWwo
Y29udGV4dElkKS5leHRlcm5hbFBsYXliYWNrQ2hhbmdlZChlbmFibGVkLCB0eXBlLCBsb2NhbGl6
ZWREZXZpY2VOYW1lKTsKIH0KIAotdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6Ondp
cmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkQ2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIGJv
b2wgZGlzYWJsZWQpCit2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6d2lyZWxlc3NW
aWRlb1BsYXliYWNrRGlzYWJsZWRDaGFuZ2VkKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlm
aWVyIGNvbnRleHRJZCwgYm9vbCBkaXNhYmxlZCkKIHsKLSAgICBNRVNTQUdFX0NIRUNLX0NPTlRF
WFRJRChjb250ZXh0SWQpOwogICAgIGVuc3VyZU1vZGVsKGNvbnRleHRJZCkud2lyZWxlc3NWaWRl
b1BsYXliYWNrRGlzYWJsZWRDaGFuZ2VkKGRpc2FibGVkKTsKIH0KIAotdm9pZCBQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyUHJveHk6Om11dGVkQ2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wg
bXV0ZWQpCit2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6bXV0ZWRDaGFuZ2VkKFBs
YXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCwgYm9vbCBtdXRlZCkKIHsK
LSAgICBNRVNTQUdFX0NIRUNLX0NPTlRFWFRJRChjb250ZXh0SWQpOwogICAgIGVuc3VyZU1vZGVs
KGNvbnRleHRJZCkubXV0ZWRDaGFuZ2VkKG11dGVkKTsKIH0KIAotdm9pZCBQbGF5YmFja1Nlc3Np
b25NYW5hZ2VyUHJveHk6OnZvbHVtZUNoYW5nZWQodWludDY0X3QgY29udGV4dElkLCBkb3VibGUg
dm9sdW1lKQordm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OnZvbHVtZUNoYW5nZWQo
UGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4dElkLCBkb3VibGUgdm9sdW1l
KQogewotICAgIE1FU1NBR0VfQ0hFQ0tfQ09OVEVYVElEKGNvbnRleHRJZCk7CiAgICAgZW5zdXJl
TW9kZWwoY29udGV4dElkKS52b2x1bWVDaGFuZ2VkKHZvbHVtZSk7CiB9CiAKLXZvaWQgUGxheWJh
Y2tTZXNzaW9uTWFuYWdlclByb3h5OjpkdXJhdGlvbkNoYW5nZWQodWludDY0X3QgY29udGV4dElk
LCBkb3VibGUgZHVyYXRpb24pCit2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6ZHVy
YXRpb25DaGFuZ2VkKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCwg
ZG91YmxlIGR1cmF0aW9uKQogewotICAgIE1FU1NBR0VfQ0hFQ0tfQ09OVEVYVElEKGNvbnRleHRJ
ZCk7CiAgICAgZW5zdXJlTW9kZWwoY29udGV4dElkKS5kdXJhdGlvbkNoYW5nZWQoZHVyYXRpb24p
OwogfQogCi12b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6cGxheWJhY2tTdGFydGVk
VGltZUNoYW5nZWQodWludDY0X3QgY29udGV4dElkLCBkb3VibGUgcGxheWJhY2tTdGFydGVkVGlt
ZSkKK3ZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpwbGF5YmFja1N0YXJ0ZWRUaW1l
Q2hhbmdlZChQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQsIGRvdWJs
ZSBwbGF5YmFja1N0YXJ0ZWRUaW1lKQogewotICAgIE1FU1NBR0VfQ0hFQ0tfQ09OVEVYVElEKGNv
bnRleHRJZCk7CiAgICAgZW5zdXJlTW9kZWwoY29udGV4dElkKS5wbGF5YmFja1N0YXJ0ZWRUaW1l
Q2hhbmdlZChwbGF5YmFja1N0YXJ0ZWRUaW1lKTsKIH0KIAotdm9pZCBQbGF5YmFja1Nlc3Npb25N
YW5hZ2VyUHJveHk6OnJhdGVDaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vbCBpc1BsYXlp
bmcsIGRvdWJsZSByYXRlKQordm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OnJhdGVD
aGFuZ2VkKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCwgYm9vbCBp
c1BsYXlpbmcsIGRvdWJsZSByYXRlKQogewotICAgIE1FU1NBR0VfQ0hFQ0tfQ09OVEVYVElEKGNv
bnRleHRJZCk7CiAgICAgZW5zdXJlTW9kZWwoY29udGV4dElkKS5yYXRlQ2hhbmdlZChpc1BsYXlp
bmcsIHJhdGUpOwogfQogCi12b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6cGljdHVy
ZUluUGljdHVyZVN1cHBvcnRlZENoYW5nZWQodWludDY0X3QgY29udGV4dElkLCBib29sIHN1cHBv
cnRlZCkKK3ZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpwaWN0dXJlSW5QaWN0dXJl
U3VwcG9ydGVkQ2hhbmdlZChQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciBjb250ZXh0
SWQsIGJvb2wgc3VwcG9ydGVkKQogewotICAgIE1FU1NBR0VfQ0hFQ0tfQ09OVEVYVElEKGNvbnRl
eHRJZCk7CiAgICAgZW5zdXJlTW9kZWwoY29udGV4dElkKS5waWN0dXJlSW5QaWN0dXJlU3VwcG9y
dGVkQ2hhbmdlZChzdXBwb3J0ZWQpOwogfQogCi12b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQ
cm94eTo6aGFuZGxlQ29udHJvbGxlZEVsZW1lbnRJRFJlc3BvbnNlKHVpbnQ2NF90IGNvbnRleHRJ
ZCwgU3RyaW5nIGlkZW50aWZpZXIpIGNvbnN0Cit2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQ
cm94eTo6aGFuZGxlQ29udHJvbGxlZEVsZW1lbnRJRFJlc3BvbnNlKFBsYXliYWNrU2Vzc2lvbkNv
bnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCwgU3RyaW5nIGlkZW50aWZpZXIpIGNvbnN0CiB7Ci0g
ICAgTUVTU0FHRV9DSEVDS19DT05URVhUSUQoY29udGV4dElkKTsKICNpZiBQTEFURk9STShNQUMp
CiAgICAgaWYgKGNvbnRleHRJZCA9PSBtX2NvbnRyb2xzTWFuYWdlckNvbnRleHRJZCkKICAgICAg
ICAgbV9wYWdlLT5oYW5kbGVDb250cm9sbGVkRWxlbWVudElEUmVzcG9uc2UoaWRlbnRpZmllcik7
CkBAIC01MTQsODcgKzQ5NCw4NyBAQCB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6
aGFuZGxlQ29udHJvbGxlZEVsZW1lbnRJRFJlc3BvbnNlKHVpbnQ2NF90IGNvbgogCiAjcHJhZ21h
IG1hcmsgTWVzc2FnZXMgdG8gUGxheWJhY2tTZXNzaW9uTWFuYWdlcgogCi12b2lkIFBsYXliYWNr
U2Vzc2lvbk1hbmFnZXJQcm94eTo6cGxheSh1aW50NjRfdCBjb250ZXh0SWQpCit2b2lkIFBsYXli
YWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6cGxheShQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRp
ZmllciBjb250ZXh0SWQpCiB7CiAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyOjpQbGF5KGNvbnRleHRJZCkpOwogfQogCi12b2lkIFBsYXliYWNrU2Vzc2lv
bk1hbmFnZXJQcm94eTo6cGF1c2UodWludDY0X3QgY29udGV4dElkKQordm9pZCBQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyUHJveHk6OnBhdXNlKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVy
IGNvbnRleHRJZCkKIHsKICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lv
bk1hbmFnZXI6OlBhdXNlKGNvbnRleHRJZCkpOwogfQogCi12b2lkIFBsYXliYWNrU2Vzc2lvbk1h
bmFnZXJQcm94eTo6dG9nZ2xlUGxheVN0YXRlKHVpbnQ2NF90IGNvbnRleHRJZCkKK3ZvaWQgUGxh
eWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Ojp0b2dnbGVQbGF5U3RhdGUoUGxheWJhY2tTZXNzaW9u
Q29udGV4dElkZW50aWZpZXIgY29udGV4dElkKQogewogICAgIG1fcGFnZS0+c2VuZChNZXNzYWdl
czo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6VG9nZ2xlUGxheVN0YXRlKGNvbnRleHRJZCkpOwog
fQogCi12b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6YmVnaW5TY3J1YmJpbmcodWlu
dDY0X3QgY29udGV4dElkKQordm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OmJlZ2lu
U2NydWJiaW5nKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCkKIHsK
ICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OkJlZ2lu
U2NydWJiaW5nKGNvbnRleHRJZCkpOwogfQogCi12b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQ
cm94eTo6ZW5kU2NydWJiaW5nKHVpbnQ2NF90IGNvbnRleHRJZCkKK3ZvaWQgUGxheWJhY2tTZXNz
aW9uTWFuYWdlclByb3h5OjplbmRTY3J1YmJpbmcoUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50
aWZpZXIgY29udGV4dElkKQogewogICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tT
ZXNzaW9uTWFuYWdlcjo6RW5kU2NydWJiaW5nKGNvbnRleHRJZCkpOwogfQogCi12b2lkIFBsYXli
YWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6c2Vla1RvVGltZSh1aW50NjRfdCBjb250ZXh0SWQsIGRv
dWJsZSB0aW1lLCBkb3VibGUgdG9sZXJhbmNlQmVmb3JlLCBkb3VibGUgdG9sZXJhbmNlQWZ0ZXIp
Cit2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6c2Vla1RvVGltZShQbGF5YmFja1Nl
c3Npb25Db250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQsIGRvdWJsZSB0aW1lLCBkb3VibGUgdG9s
ZXJhbmNlQmVmb3JlLCBkb3VibGUgdG9sZXJhbmNlQWZ0ZXIpCiB7CiAgICAgbV9wYWdlLT5zZW5k
KE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpTZWVrVG9UaW1lKGNvbnRleHRJZCwg
dGltZSwgdG9sZXJhbmNlQmVmb3JlLCB0b2xlcmFuY2VBZnRlcikpOwogfQogCi12b2lkIFBsYXli
YWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6ZmFzdFNlZWsodWludDY0X3QgY29udGV4dElkLCBkb3Vi
bGUgdGltZSkKK3ZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpmYXN0U2VlayhQbGF5
YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQsIGRvdWJsZSB0aW1lKQogewog
ICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6RmFzdFNl
ZWsoY29udGV4dElkLCB0aW1lKSk7CiB9CiAKLXZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlclBy
b3h5OjpiZWdpblNjYW5uaW5nRm9yd2FyZCh1aW50NjRfdCBjb250ZXh0SWQpCit2b2lkIFBsYXli
YWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6YmVnaW5TY2FubmluZ0ZvcndhcmQoUGxheWJhY2tTZXNz
aW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4dElkKQogewogICAgIG1fcGFnZS0+c2VuZChNZXNz
YWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6QmVnaW5TY2FubmluZ0ZvcndhcmQoY29udGV4
dElkKSk7CiB9CiAKLXZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpiZWdpblNjYW5u
aW5nQmFja3dhcmQodWludDY0X3QgY29udGV4dElkKQordm9pZCBQbGF5YmFja1Nlc3Npb25NYW5h
Z2VyUHJveHk6OmJlZ2luU2Nhbm5pbmdCYWNrd2FyZChQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRl
bnRpZmllciBjb250ZXh0SWQpCiB7CiAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyOjpCZWdpblNjYW5uaW5nQmFja3dhcmQoY29udGV4dElkKSk7CiB9CiAK
LXZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjplbmRTY2FubmluZyh1aW50NjRfdCBj
b250ZXh0SWQpCit2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6ZW5kU2Nhbm5pbmco
UGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4dElkKQogewogICAgIG1fcGFn
ZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6RW5kU2Nhbm5pbmcoY29u
dGV4dElkKSk7CiB9CiAKLXZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpzZWxlY3RB
dWRpb01lZGlhT3B0aW9uKHVpbnQ2NF90IGNvbnRleHRJZCwgdWludDY0X3QgaW5kZXgpCit2b2lk
IFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6c2VsZWN0QXVkaW9NZWRpYU9wdGlvbihQbGF5
YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQsIHVpbnQ2NF90IGluZGV4KQog
ewogICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6U2Vs
ZWN0QXVkaW9NZWRpYU9wdGlvbihjb250ZXh0SWQsIGluZGV4KSk7CiB9CiAKLXZvaWQgUGxheWJh
Y2tTZXNzaW9uTWFuYWdlclByb3h5OjpzZWxlY3RMZWdpYmxlTWVkaWFPcHRpb24odWludDY0X3Qg
Y29udGV4dElkLCB1aW50NjRfdCBpbmRleCkKK3ZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlclBy
b3h5OjpzZWxlY3RMZWdpYmxlTWVkaWFPcHRpb24oUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50
aWZpZXIgY29udGV4dElkLCB1aW50NjRfdCBpbmRleCkKIHsKICAgICBtX3BhZ2UtPnNlbmQoTWVz
c2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OlNlbGVjdExlZ2libGVNZWRpYU9wdGlvbihj
b250ZXh0SWQsIGluZGV4KSk7CiB9CiAKLXZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5
Ojp0b2dnbGVQaWN0dXJlSW5QaWN0dXJlKHVpbnQ2NF90IGNvbnRleHRJZCkKK3ZvaWQgUGxheWJh
Y2tTZXNzaW9uTWFuYWdlclByb3h5Ojp0b2dnbGVQaWN0dXJlSW5QaWN0dXJlKFBsYXliYWNrU2Vz
c2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCkKIHsKICAgICBtX3BhZ2UtPnNlbmQoTWVz
c2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OlRvZ2dsZVBpY3R1cmVJblBpY3R1cmUoY29u
dGV4dElkKSk7CiB9CiAKLXZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Ojp0b2dnbGVN
dXRlZCh1aW50NjRfdCBjb250ZXh0SWQpCit2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94
eTo6dG9nZ2xlTXV0ZWQoUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4dElk
KQogewogICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6
VG9nZ2xlTXV0ZWQoY29udGV4dElkKSk7CiB9CiAKLXZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdl
clByb3h5OjpzZXRNdXRlZCh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgbXV0ZWQpCit2b2lkIFBs
YXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6c2V0TXV0ZWQoUGxheWJhY2tTZXNzaW9uQ29udGV4
dElkZW50aWZpZXIgY29udGV4dElkLCBib29sIG11dGVkKQogewogICAgIG1fcGFnZS0+c2VuZChN
ZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6U2V0TXV0ZWQoY29udGV4dElkLCBtdXRl
ZCkpOwogfQogCi12b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6c2V0Vm9sdW1lKHVp
bnQ2NF90IGNvbnRleHRJZCwgZG91YmxlIHZvbHVtZSkKK3ZvaWQgUGxheWJhY2tTZXNzaW9uTWFu
YWdlclByb3h5OjpzZXRWb2x1bWUoUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29u
dGV4dElkLCBkb3VibGUgdm9sdW1lKQogewogICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxh
eWJhY2tTZXNzaW9uTWFuYWdlcjo6U2V0Vm9sdW1lKGNvbnRleHRJZCwgdm9sdW1lKSk7CiB9CiAK
LXZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpzZXRQbGF5aW5nT25TZWNvbmRTY3Jl
ZW4odWludDY0X3QgY29udGV4dElkLCBib29sIHZhbHVlKQordm9pZCBQbGF5YmFja1Nlc3Npb25N
YW5hZ2VyUHJveHk6OnNldFBsYXlpbmdPblNlY29uZFNjcmVlbihQbGF5YmFja1Nlc3Npb25Db250
ZXh0SWRlbnRpZmllciBjb250ZXh0SWQsIGJvb2wgdmFsdWUpCiB7CiAgICAgaWYgKG1fcGFnZSkK
ICAgICAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpT
ZXRQbGF5aW5nT25TZWNvbmRTY3JlZW4oY29udGV4dElkLCB2YWx1ZSkpOwpAQCAtNjE3LDYgKzU5
Nyw0IEBAIFBsYXRmb3JtUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlKiBQbGF5YmFja1Nlc3Npb25N
YW5hZ2VyUHJveHk6OmNvbnRyb2xzTWFuYWdlckluCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAog
Ci0jdW5kZWYgTUVTU0FHRV9DSEVDS19DT05URVhUSUQKLQogI2VuZGlmIC8vIFBMQVRGT1JNKElP
U19GQU1JTFkpIHx8IChQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05f
TU9ERSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1Zp
ZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oCmluZGV4IDQyZTJkODVkN2IxYTM3YWFkMDI0YWRh
ODQ5Y2E5NTYzYzc1ZmVmNjQuLmQyM2U4OGEyNGI5ZmE0MzYxM2Q1M2Y5M2RjMThiYTQ4MzBlYThj
OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNj
cmVlbk1hbmFnZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1Zp
ZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgRU5BQkxF
KFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKQogCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgi
CisjaW5jbHVkZSAiUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIuaCIKICNpbmNsdWRl
IDxXZWJDb3JlL0F1ZGlvU2Vzc2lvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NMYXll
ci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1WaWV3Lmg+CkBAIC02Myw3ICs2NCw3IEBA
IGNsYXNzIFZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dCBmaW5hbAogICAgICwgcHVibGljIFdl
YkNvcmU6OlZpZGVvRnVsbHNjcmVlbk1vZGVsCiAgICAgLCBwdWJsaWMgV2ViQ29yZTo6VmlkZW9G
dWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIgIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFZpZGVv
RnVsbHNjcmVlbk1vZGVsQ29udGV4dD4gY3JlYXRlKFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94
eSYgbWFuYWdlciwgUGxheWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0JiBwbGF5YmFja1Nlc3Npb25N
b2RlbCwgdWludDY0X3QgY29udGV4dElkKQorICAgIHN0YXRpYyBSZWY8VmlkZW9GdWxsc2NyZWVu
TW9kZWxDb250ZXh0PiBjcmVhdGUoVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5JiBtYW5hZ2Vy
LCBQbGF5YmFja1Nlc3Npb25Nb2RlbENvbnRleHQmIHBsYXliYWNrU2Vzc2lvbk1vZGVsLCBQbGF5
YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQpCiAgICAgewogICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQobWFuYWdlciwg
cGxheWJhY2tTZXNzaW9uTW9kZWwsIGNvbnRleHRJZCkpOwogICAgIH0KQEAgLTc1LDcgKzc2LDcg
QEAgcHVibGljOgogICAgIHZvaWQgc2V0TGF5ZXJIb3N0VmlldyhSZXRhaW5QdHI8UGxhdGZvcm1W
aWV3PiYmIGxheWVySG9zdFZpZXcpIHsgbV9sYXllckhvc3RWaWV3ID0gV1RGTW92ZShsYXllckhv
c3RWaWV3KTsgfQogCiBwcml2YXRlOgotICAgIFZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dChW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkmLCBQbGF5YmFja1Nlc3Npb25Nb2RlbENvbnRleHQm
LCB1aW50NjRfdCk7CisgICAgVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0KFZpZGVvRnVsbHNj
cmVlbk1hbmFnZXJQcm94eSYsIFBsYXliYWNrU2Vzc2lvbk1vZGVsQ29udGV4dCYsIFBsYXliYWNr
U2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyKTsKIAogICAgIC8vIFZpZGVvRnVsbHNjcmVlbk1vZGVs
CiAgICAgdm9pZCBhZGRDbGllbnQoV2ViQ29yZTo6VmlkZW9GdWxsc2NyZWVuTW9kZWxDbGllbnQm
KSBvdmVycmlkZTsKQEAgLTExMCw3ICsxMTEsNyBAQCBwcml2YXRlOgogCiAgICAgVmlkZW9GdWxs
c2NyZWVuTWFuYWdlclByb3h5KiBtX21hbmFnZXI7CiAgICAgUmVmPFBsYXliYWNrU2Vzc2lvbk1v
ZGVsQ29udGV4dD4gbV9wbGF5YmFja1Nlc3Npb25Nb2RlbDsKLSAgICB1aW50NjRfdCBtX2NvbnRl
eHRJZDsKKyAgICBQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciBtX2NvbnRleHRJZDsK
ICAgICBSZXRhaW5QdHI8UGxhdGZvcm1WaWV3PiBtX2xheWVySG9zdFZpZXc7CiAgICAgSGFzaFNl
dDxXZWJDb3JlOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlbENsaWVudCo+IG1fY2xpZW50czsKICAgICBX
ZWJDb3JlOjpGbG9hdFNpemUgbV92aWRlb0RpbWVuc2lvbnM7CkBAIC0xMzIsNyArMTMzLDcgQEAg
cHVibGljOgogCiAgICAgdm9pZCBzZXRNb2NrVmlkZW9QcmVzZW50YXRpb25Nb2RlRW5hYmxlZChi
b29sIGVuYWJsZWQpIHsgbV9tb2NrVmlkZW9QcmVzZW50YXRpb25Nb2RlRW5hYmxlZCA9IGVuYWJs
ZWQ7IH0KIAotICAgIHZvaWQgcmVxdWVzdFJvdXRlU2hhcmluZ1BvbGljeUFuZENvbnRleHRVSUQo
dWludDY0X3QgY29udGV4dElkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlJvdXRl
U2hhcmluZ1BvbGljeSwgU3RyaW5nKT4mJik7CisgICAgdm9pZCByZXF1ZXN0Um91dGVTaGFyaW5n
UG9saWN5QW5kQ29udGV4dFVJRChQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpSb3V0ZVNoYXJpbmdQb2xpY3ksIFN0cmluZyk+
JiYpOwogCiAgICAgYm9vbCBpc1BsYXlpbmdWaWRlb0luRW5oYW5jZWRGdWxsc2NyZWVuKCkgY29u
c3Q7CiAKQEAgLTE0Nyw1MSArMTQ4LDUxIEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZWNlaXZl
TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsKIAogICAg
IHR5cGVkZWYgc3RkOjp0dXBsZTxSZWZQdHI8VmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0Piwg
UmVmUHRyPFBsYXRmb3JtVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlPj4gTW9kZWxJbnRlcmZhY2VU
dXBsZTsKLSAgICBNb2RlbEludGVyZmFjZVR1cGxlIGNyZWF0ZU1vZGVsQW5kSW50ZXJmYWNlKHVp
bnQ2NF90IGNvbnRleHRJZCk7Ci0gICAgTW9kZWxJbnRlcmZhY2VUdXBsZSYgZW5zdXJlTW9kZWxB
bmRJbnRlcmZhY2UodWludDY0X3QgY29udGV4dElkKTsKLSAgICBWaWRlb0Z1bGxzY3JlZW5Nb2Rl
bENvbnRleHQmIGVuc3VyZU1vZGVsKHVpbnQ2NF90IGNvbnRleHRJZCk7Ci0gICAgUGxhdGZvcm1W
aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2UmIGVuc3VyZUludGVyZmFjZSh1aW50NjRfdCBjb250ZXh0
SWQpOwotICAgIFBsYXRmb3JtVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlKiBmaW5kSW50ZXJmYWNl
KHVpbnQ2NF90IGNvbnRleHRJZCk7Ci0gICAgdm9pZCBhZGRDbGllbnRGb3JDb250ZXh0KHVpbnQ2
NF90IGNvbnRleHRJZCk7Ci0gICAgdm9pZCByZW1vdmVDbGllbnRGb3JDb250ZXh0KHVpbnQ2NF90
IGNvbnRleHRJZCk7CisgICAgTW9kZWxJbnRlcmZhY2VUdXBsZSBjcmVhdGVNb2RlbEFuZEludGVy
ZmFjZShQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllcik7CisgICAgTW9kZWxJbnRlcmZh
Y2VUdXBsZSYgZW5zdXJlTW9kZWxBbmRJbnRlcmZhY2UoUGxheWJhY2tTZXNzaW9uQ29udGV4dElk
ZW50aWZpZXIpOworICAgIFZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dCYgZW5zdXJlTW9kZWwo
UGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIpOworICAgIFBsYXRmb3JtVmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlJiBlbnN1cmVJbnRlcmZhY2UoUGxheWJhY2tTZXNzaW9uQ29udGV4dElk
ZW50aWZpZXIpOworICAgIFBsYXRmb3JtVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlKiBmaW5kSW50
ZXJmYWNlKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyKTsKKyAgICB2b2lkIGFkZENs
aWVudEZvckNvbnRleHQoUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIpOworICAgIHZv
aWQgcmVtb3ZlQ2xpZW50Rm9yQ29udGV4dChQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmll
cik7CiAKICAgICB2b2lkIGhhc1ZpZGVvSW5QaWN0dXJlSW5QaWN0dXJlRGlkQ2hhbmdlKGJvb2wp
OwogCiAgICAgLy8gTWVzc2FnZXMgZnJvbSBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyCi0gICAgdm9p
ZCBzZXR1cEZ1bGxzY3JlZW5XaXRoSUQodWludDY0X3QgY29udGV4dElkLCB1aW50MzJfdCB2aWRl
b0xheWVySUQsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGluaXRpYWxSZWN0LCBmbG9hdCBob3N0
aW5nU2NhbGVGYWN0b3IsIFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxs
c2NyZWVuTW9kZSwgYm9vbCBhbGxvd3NQaWN0dXJlSW5QaWN0dXJlLCBib29sIHN0YW5kYnkpOwot
ICAgIHZvaWQgc2V0SW5saW5lUmVjdCh1aW50NjRfdCBjb250ZXh0SWQsIGNvbnN0IFdlYkNvcmU6
OkludFJlY3QmIGlubGluZVJlY3QsIGJvb2wgdmlzaWJsZSk7Ci0gICAgdm9pZCBzZXRIYXNWaWRl
b0NvbnRlbnRMYXllcih1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgdmFsdWUpOwotICAgIHZvaWQg
c2V0SGFzVmlkZW8odWludDY0X3QgY29udGV4dElkLCBib29sKTsKLSAgICB2b2lkIHNldFZpZGVv
RGltZW5zaW9ucyh1aW50NjRfdCBjb250ZXh0SWQsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYp
OwotICAgIHZvaWQgZW50ZXJGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCk7Ci0gICAgdm9p
ZCBleGl0RnVsbHNjcmVlbih1aW50NjRfdCBjb250ZXh0SWQsIFdlYkNvcmU6OkludFJlY3QgZmlu
YWxSZWN0KTsKLSAgICB2b2lkIGNsZWFudXBGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCk7
Ci0gICAgdm9pZCBwcmVwYXJlZFRvUmV0dXJuVG9JbmxpbmUodWludDY0X3QgY29udGV4dElkLCBi
b29sIHZpc2libGUsIFdlYkNvcmU6OkludFJlY3QgaW5saW5lUmVjdCk7Ci0gICAgdm9pZCBwcmVw
YXJlZFRvRXhpdEZ1bGxzY3JlZW4odWludDY0X3QgY29udGV4dElkKTsKLSAgICB2b2lkIGV4aXRG
dWxsc2NyZWVuV2l0aG91dEFuaW1hdGlvblRvTW9kZSh1aW50NjRfdCBjb250ZXh0SWQsIFdlYkNv
cmU6OkhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSk7CisgICAgdm9p
ZCBzZXR1cEZ1bGxzY3JlZW5XaXRoSUQoUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIs
IHVpbnQzMl90IHZpZGVvTGF5ZXJJRCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgaW5pdGlhbFJl
Y3QsIGZsb2F0IGhvc3RpbmdTY2FsZUZhY3RvciwgV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudEVu
dW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlLCBib29sIGFsbG93c1BpY3R1cmVJblBpY3R1cmUsIGJv
b2wgc3RhbmRieSk7CisgICAgdm9pZCBzZXRJbmxpbmVSZWN0KFBsYXliYWNrU2Vzc2lvbkNvbnRl
eHRJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBpbmxpbmVSZWN0LCBib29sIHZp
c2libGUpOworICAgIHZvaWQgc2V0SGFzVmlkZW9Db250ZW50TGF5ZXIoUGxheWJhY2tTZXNzaW9u
Q29udGV4dElkZW50aWZpZXIsIGJvb2wgdmFsdWUpOworICAgIHZvaWQgc2V0SGFzVmlkZW8oUGxh
eWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIsIGJvb2wpOworICAgIHZvaWQgc2V0VmlkZW9E
aW1lbnNpb25zKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyLCBjb25zdCBXZWJDb3Jl
OjpGbG9hdFNpemUmKTsKKyAgICB2b2lkIGVudGVyRnVsbHNjcmVlbihQbGF5YmFja1Nlc3Npb25D
b250ZXh0SWRlbnRpZmllcik7CisgICAgdm9pZCBleGl0RnVsbHNjcmVlbihQbGF5YmFja1Nlc3Np
b25Db250ZXh0SWRlbnRpZmllciwgV2ViQ29yZTo6SW50UmVjdCBmaW5hbFJlY3QpOworICAgIHZv
aWQgY2xlYW51cEZ1bGxzY3JlZW4oUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIpOwor
ICAgIHZvaWQgcHJlcGFyZWRUb1JldHVyblRvSW5saW5lKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJ
ZGVudGlmaWVyLCBib29sIHZpc2libGUsIFdlYkNvcmU6OkludFJlY3QgaW5saW5lUmVjdCk7Cisg
ICAgdm9pZCBwcmVwYXJlZFRvRXhpdEZ1bGxzY3JlZW4oUGxheWJhY2tTZXNzaW9uQ29udGV4dElk
ZW50aWZpZXIpOworICAgIHZvaWQgZXhpdEZ1bGxzY3JlZW5XaXRob3V0QW5pbWF0aW9uVG9Nb2Rl
KFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyLCBXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUpOwogCiAgICAgLy8gTWVzc2FnZXMgdG8gVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlcgotICAgIHZvaWQgcmVxdWVzdEZ1bGxzY3JlZW5Nb2RlKHVpbnQ2
NF90IGNvbnRleHRJZCwgV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxz
Y3JlZW5Nb2RlLCBib29sIGZpbmlzaGVkV2l0aE1lZGlhID0gZmFsc2UpOwotICAgIHZvaWQgcmVx
dWVzdFVwZGF0ZUlubGluZVJlY3QodWludDY0X3QgY29udGV4dElkKTsKLSAgICB2b2lkIHJlcXVl
c3RWaWRlb0NvbnRlbnRMYXllcih1aW50NjRfdCBjb250ZXh0SWQpOwotICAgIHZvaWQgcmV0dXJu
VmlkZW9Db250ZW50TGF5ZXIodWludDY0X3QgY29udGV4dElkKTsKLSAgICB2b2lkIGRpZFNldHVw
RnVsbHNjcmVlbih1aW50NjRfdCBjb250ZXh0SWQpOwotICAgIHZvaWQgd2lsbEV4aXRGdWxsc2Ny
ZWVuKHVpbnQ2NF90IGNvbnRleHRJZCk7Ci0gICAgdm9pZCBkaWRFeGl0RnVsbHNjcmVlbih1aW50
NjRfdCBjb250ZXh0SWQpOwotICAgIHZvaWQgZGlkRW50ZXJGdWxsc2NyZWVuKHVpbnQ2NF90IGNv
bnRleHRJZCk7Ci0gICAgdm9pZCBkaWRDbGVhbnVwRnVsbHNjcmVlbih1aW50NjRfdCBjb250ZXh0
SWQpOwotICAgIHZvaWQgc2V0VmlkZW9MYXllckZyYW1lKHVpbnQ2NF90IGNvbnRleHRJZCwgV2Vi
Q29yZTo6RmxvYXRSZWN0KTsKLSAgICB2b2lkIHNldFZpZGVvTGF5ZXJHcmF2aXR5KHVpbnQ2NF90
IGNvbnRleHRJZCwgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6VmlkZW9HcmF2aXR5KTsKLSAg
ICB2b2lkIGZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIFdlYkNvcmU6
OkhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSk7Ci0gICAgdm9pZCBm
dWxsc2NyZWVuTWF5UmV0dXJuVG9JbmxpbmUodWludDY0X3QgY29udGV4dElkKTsKKyAgICB2b2lk
IHJlcXVlc3RGdWxsc2NyZWVuTW9kZShQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciwg
V2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlLCBib29s
IGZpbmlzaGVkV2l0aE1lZGlhID0gZmFsc2UpOworICAgIHZvaWQgcmVxdWVzdFVwZGF0ZUlubGlu
ZVJlY3QoUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIpOworICAgIHZvaWQgcmVxdWVz
dFZpZGVvQ29udGVudExheWVyKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyKTsKKyAg
ICB2b2lkIHJldHVyblZpZGVvQ29udGVudExheWVyKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVu
dGlmaWVyKTsKKyAgICB2b2lkIGRpZFNldHVwRnVsbHNjcmVlbihQbGF5YmFja1Nlc3Npb25Db250
ZXh0SWRlbnRpZmllcik7CisgICAgdm9pZCB3aWxsRXhpdEZ1bGxzY3JlZW4oUGxheWJhY2tTZXNz
aW9uQ29udGV4dElkZW50aWZpZXIpOworICAgIHZvaWQgZGlkRXhpdEZ1bGxzY3JlZW4oUGxheWJh
Y2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIpOworICAgIHZvaWQgZGlkRW50ZXJGdWxsc2NyZWVu
KFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyKTsKKyAgICB2b2lkIGRpZENsZWFudXBG
dWxsc2NyZWVuKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyKTsKKyAgICB2b2lkIHNl
dFZpZGVvTGF5ZXJGcmFtZShQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciwgV2ViQ29y
ZTo6RmxvYXRSZWN0KTsKKyAgICB2b2lkIHNldFZpZGVvTGF5ZXJHcmF2aXR5KFBsYXliYWNrU2Vz
c2lvbkNvbnRleHRJZGVudGlmaWVyLCBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpWaWRlb0dy
YXZpdHkpOworICAgIHZvaWQgZnVsbHNjcmVlbk1vZGVDaGFuZ2VkKFBsYXliYWNrU2Vzc2lvbkNv
bnRleHRJZGVudGlmaWVyLCBXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVs
bHNjcmVlbk1vZGUpOworICAgIHZvaWQgZnVsbHNjcmVlbk1heVJldHVyblRvSW5saW5lKFBsYXli
YWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyKTsKIAogICAgIGJvb2wgbV9tb2NrVmlkZW9QcmVz
ZW50YXRpb25Nb2RlRW5hYmxlZCB7IGZhbHNlIH07CiAKICAgICBXZWJQYWdlUHJveHkqIG1fcGFn
ZTsKICAgICBSZWY8UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5PiBtX3BsYXliYWNrU2Vzc2lv
bk1hbmFnZXJQcm94eTsKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBNb2RlbEludGVyZmFjZVR1cGxl
PiBtX2NvbnRleHRNYXA7Ci0gICAgdWludDY0X3QgbV9jb250cm9sc01hbmFnZXJDb250ZXh0SWQg
eyAwIH07Ci0gICAgSGFzaE1hcDx1aW50NjRfdCwgaW50PiBtX2NsaWVudENvdW50czsKKyAgICBI
YXNoTWFwPFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyLCBNb2RlbEludGVyZmFjZVR1
cGxlPiBtX2NvbnRleHRNYXA7CisgICAgUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIg
bV9jb250cm9sc01hbmFnZXJDb250ZXh0SWQ7CisgICAgSGFzaE1hcDxQbGF5YmFja1Nlc3Npb25D
b250ZXh0SWRlbnRpZmllciwgaW50PiBtX2NsaWVudENvdW50czsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCmluZGV4
IGY2Y2NkODdhZTM1ZjM5NmQwZmQwN2MyNDc1OTU0YTU4N2VmNjNmYTUuLjQxMDY2Y2I2MTg1YWFj
NzkxNjVjZWFlNWIwZWVjODg5ZWJjZTUwNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJv
eHkubWVzc2FnZXMuaW4KQEAgLTIyLDE2ICsyMiwxNiBAQAogCiAjaWYgRU5BQkxFKFZJREVPX1BS
RVNFTlRBVElPTl9NT0RFKQogbWVzc2FnZXMgLT4gVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5
IHsKLSAgICBTZXRIYXNWaWRlbyh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgaGFzVmlkZW8pCi0g
ICAgU2V0VmlkZW9EaW1lbnNpb25zKHVpbnQ2NF90IGNvbnRleHRJZCwgV2ViQ29yZTo6RmxvYXRT
aXplIHZpZGVvRGltZW5zaW9ucykKLSAgICBTZXR1cEZ1bGxzY3JlZW5XaXRoSUQodWludDY0X3Qg
Y29udGV4dElkLCB1aW50MzJfdCB2aWRlb0xheWVySUQsIFdlYkNvcmU6OkludFJlY3QgaW5pdGlh
bFJlY3QsIGZsb2F0IGhvc3RpbmdTY2FsZUZhY3RvciwgV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVu
dEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlIHZpZGVvRnVsbHNjcmVlbk1vZGUsIGJvb2wgYWxs
b3dzUGljdHVyZUluUGljdHVyZSwgYm9vbCBzdGFuZGJ5KQotICAgIEVudGVyRnVsbHNjcmVlbih1
aW50NjRfdCBjb250ZXh0SWQpCi0gICAgRXhpdEZ1bGxzY3JlZW4odWludDY0X3QgY29udGV4dElk
LCBXZWJDb3JlOjpJbnRSZWN0IGZpbmFsUmVjdCkKLSAgICBTZXRJbmxpbmVSZWN0KHVpbnQ2NF90
IGNvbnRleHRJZCwgV2ViQ29yZTo6SW50UmVjdCBpbmxpbmVSZWN0LCBib29sIHZpc2libGUpCi0g
ICAgU2V0SGFzVmlkZW9Db250ZW50TGF5ZXIodWludDY0X3QgY29udGV4dElkLCBib29sIHZhbHVl
KQotICAgIENsZWFudXBGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCkKLSAgICBQcmVwYXJl
ZFRvUmV0dXJuVG9JbmxpbmUodWludDY0X3QgY29udGV4dElkLCBib29sIHZpc2libGUsIFdlYkNv
cmU6OkludFJlY3QgaW5saW5lUmVjdCkKLSAgICBQcmVwYXJlZFRvRXhpdEZ1bGxzY3JlZW4odWlu
dDY0X3QgY29udGV4dElkKQotICAgIEV4aXRGdWxsc2NyZWVuV2l0aG91dEFuaW1hdGlvblRvTW9k
ZSh1aW50NjRfdCBjb250ZXh0SWQsIFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRFbnVtczo6Vmlk
ZW9GdWxsc2NyZWVuTW9kZSB2aWRlb0Z1bGxzY3JlZW5Nb2RlKQorICAgIFNldEhhc1ZpZGVvKFdl
YktpdDo6UGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4dElkLCBib29sIGhh
c1ZpZGVvKQorICAgIFNldFZpZGVvRGltZW5zaW9ucyhXZWJLaXQ6OlBsYXliYWNrU2Vzc2lvbkNv
bnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCwgV2ViQ29yZTo6RmxvYXRTaXplIHZpZGVvRGltZW5z
aW9ucykKKyAgICBTZXR1cEZ1bGxzY3JlZW5XaXRoSUQoV2ViS2l0OjpQbGF5YmFja1Nlc3Npb25D
b250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQsIHVpbnQzMl90IHZpZGVvTGF5ZXJJRCwgV2ViQ29y
ZTo6SW50UmVjdCBpbml0aWFsUmVjdCwgZmxvYXQgaG9zdGluZ1NjYWxlRmFjdG9yLCBXZWJDb3Jl
OjpIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUgdmlkZW9GdWxsc2Ny
ZWVuTW9kZSwgYm9vbCBhbGxvd3NQaWN0dXJlSW5QaWN0dXJlLCBib29sIHN0YW5kYnkpCisgICAg
RW50ZXJGdWxsc2NyZWVuKFdlYktpdDo6UGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIg
Y29udGV4dElkKQorICAgIEV4aXRGdWxsc2NyZWVuKFdlYktpdDo6UGxheWJhY2tTZXNzaW9uQ29u
dGV4dElkZW50aWZpZXIgY29udGV4dElkLCBXZWJDb3JlOjpJbnRSZWN0IGZpbmFsUmVjdCkKKyAg
ICBTZXRJbmxpbmVSZWN0KFdlYktpdDo6UGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIg
Y29udGV4dElkLCBXZWJDb3JlOjpJbnRSZWN0IGlubGluZVJlY3QsIGJvb2wgdmlzaWJsZSkKKyAg
ICBTZXRIYXNWaWRlb0NvbnRlbnRMYXllcihXZWJLaXQ6OlBsYXliYWNrU2Vzc2lvbkNvbnRleHRJ
ZGVudGlmaWVyIGNvbnRleHRJZCwgYm9vbCB2YWx1ZSkKKyAgICBDbGVhbnVwRnVsbHNjcmVlbihX
ZWJLaXQ6OlBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCkKKyAgICBQ
cmVwYXJlZFRvUmV0dXJuVG9JbmxpbmUoV2ViS2l0OjpQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRl
bnRpZmllciBjb250ZXh0SWQsIGJvb2wgdmlzaWJsZSwgV2ViQ29yZTo6SW50UmVjdCBpbmxpbmVS
ZWN0KQorICAgIFByZXBhcmVkVG9FeGl0RnVsbHNjcmVlbihXZWJLaXQ6OlBsYXliYWNrU2Vzc2lv
bkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCkKKyAgICBFeGl0RnVsbHNjcmVlbldpdGhvdXRB
bmltYXRpb25Ub01vZGUoV2ViS2l0OjpQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciBj
b250ZXh0SWQsIFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVu
TW9kZSB2aWRlb0Z1bGxzY3JlZW5Nb2RlKQogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHku
bW0KaW5kZXggMDI0YTk5YmE5MzkzZTU0MTEzNzU1NDM4ZDQ1NWU3Y2MxNDRjZTEwZi4uMzQ2MmI0
MTlmZWE0OWYzNzJkYzZmY2QyYjQ1OGE3YTVkMTNhZGM4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94
eS5tbQpAQCAtMTIyLDcgKzEyMiw2IEBAIEBlbmQKICNlbmRpZgogCiAjZGVmaW5lIE1FU1NBR0Vf
Q0hFQ0soYXNzZXJ0aW9uKSBNRVNTQUdFX0NIRUNLX0JBU0UoYXNzZXJ0aW9uLCBtX3BhZ2UtPnBy
b2Nlc3MoKS5jb25uZWN0aW9uKCkpCi0jZGVmaW5lIE1FU1NBR0VfQ0hFQ0tfQ09OVEVYVElEKGlk
ZW50aWZpZXIpIE1FU1NBR0VfQ0hFQ0tfQkFTRShtX2NvbnRleHRNYXAuaXNWYWxpZEtleShpZGVu
dGlmaWVyKSwgbV9wYWdlLT5wcm9jZXNzKCkuY29ubmVjdGlvbigpKQogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtMTU5LDcgKzE1OCw3IEBAIHZvaWQg
VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjphcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZSgp
CiAKICNwcmFnbWEgbWFyayAtIFZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dAogCi1WaWRlb0Z1
bGxzY3JlZW5Nb2RlbENvbnRleHQ6OlZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dChWaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyUHJveHkmIG1hbmFnZXIsIFBsYXliYWNrU2Vzc2lvbk1vZGVsQ29udGV4
dCYgcGxheWJhY2tTZXNzaW9uTW9kZWwsIHVpbnQ2NF90IGNvbnRleHRJZCkKK1ZpZGVvRnVsbHNj
cmVlbk1vZGVsQ29udGV4dDo6VmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0KFZpZGVvRnVsbHNj
cmVlbk1hbmFnZXJQcm94eSYgbWFuYWdlciwgUGxheWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0JiBw
bGF5YmFja1Nlc3Npb25Nb2RlbCwgUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29u
dGV4dElkKQogICAgIDogbV9tYW5hZ2VyKCZtYW5hZ2VyKQogICAgICwgbV9wbGF5YmFja1Nlc3Np
b25Nb2RlbChwbGF5YmFja1Nlc3Npb25Nb2RlbCkKICAgICAsIG1fY29udGV4dElkKGNvbnRleHRJ
ZCkKQEAgLTQwNCwxMiArNDAzLDEyIEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5
OjphcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZSgpCiAgICAgICAgIGludGVyZmFjZS0+YXBwbGlj
YXRpb25EaWRCZWNvbWVBY3RpdmUoKTsKIH0KIAotdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
UHJveHk6OnJlcXVlc3RSb3V0ZVNoYXJpbmdQb2xpY3lBbmRDb250ZXh0VUlEKHVpbnQ2NF90IGNv
bnRleHRJZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpSb3V0ZVNoYXJpbmdQb2xp
Y3ksIFN0cmluZyk+JiYgY2FsbGJhY2spCit2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94
eTo6cmVxdWVzdFJvdXRlU2hhcmluZ1BvbGljeUFuZENvbnRleHRVSUQoUGxheWJhY2tTZXNzaW9u
Q29udGV4dElkZW50aWZpZXIgY29udGV4dElkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNv
cmU6OlJvdXRlU2hhcmluZ1BvbGljeSwgU3RyaW5nKT4mJiBjYWxsYmFjaykKIHsKICAgICBtX3Bh
Z2UtPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6
UmVxdWVzdFJvdXRlU2hhcmluZ1BvbGljeUFuZENvbnRleHRVSUQoY29udGV4dElkKSwgV1RGTW92
ZShjYWxsYmFjaykpOwogfQogCi1WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6Ok1vZGVsSW50
ZXJmYWNlVHVwbGUgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpjcmVhdGVNb2RlbEFuZElu
dGVyZmFjZSh1aW50NjRfdCBjb250ZXh0SWQpCitWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6
Ok1vZGVsSW50ZXJmYWNlVHVwbGUgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpjcmVhdGVN
b2RlbEFuZEludGVyZmFjZShQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciBjb250ZXh0
SWQpCiB7CiAgICAgYXV0byYgcGxheWJhY2tTZXNzaW9uTW9kZWwgPSBtX3BsYXliYWNrU2Vzc2lv
bk1hbmFnZXJQcm94eS0+ZW5zdXJlTW9kZWwoY29udGV4dElkKTsKICAgICBSZWY8VmlkZW9GdWxs
c2NyZWVuTW9kZWxDb250ZXh0PiBtb2RlbCA9IFZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dDo6
Y3JlYXRlKCp0aGlzLCBwbGF5YmFja1Nlc3Npb25Nb2RlbCwgY29udGV4dElkKTsKQEAgLTQyMyw3
ICs0MjIsNyBAQCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6Ok1vZGVsSW50ZXJmYWNlVHVw
bGUgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpjcgogICAgIHJldHVybiBzdGQ6Om1ha2Vf
dHVwbGUoV1RGTW92ZShtb2RlbCksIFdURk1vdmUoaW50ZXJmYWNlKSk7CiB9CiAKLVZpZGVvRnVs
bHNjcmVlbk1hbmFnZXJQcm94eTo6TW9kZWxJbnRlcmZhY2VUdXBsZSYgVmlkZW9GdWxsc2NyZWVu
TWFuYWdlclByb3h5OjplbnN1cmVNb2RlbEFuZEludGVyZmFjZSh1aW50NjRfdCBjb250ZXh0SWQp
CitWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6Ok1vZGVsSW50ZXJmYWNlVHVwbGUmIFZpZGVv
RnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6ZW5zdXJlTW9kZWxBbmRJbnRlcmZhY2UoUGxheWJhY2tT
ZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4dElkKQogewogICAgIGF1dG8gYWRkUmVzdWx0
ID0gbV9jb250ZXh0TWFwLmFkZChjb250ZXh0SWQsIE1vZGVsSW50ZXJmYWNlVHVwbGUoKSk7CiAg
ICAgaWYgKGFkZFJlc3VsdC5pc05ld0VudHJ5KQpAQCAtNDMxLDE3ICs0MzAsMTcgQEAgVmlkZW9G
dWxsc2NyZWVuTWFuYWdlclByb3h5OjpNb2RlbEludGVyZmFjZVR1cGxlJiBWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyUHJveHk6OmUKICAgICByZXR1cm4gYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsK
IH0KIAotVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0JiBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
UHJveHk6OmVuc3VyZU1vZGVsKHVpbnQ2NF90IGNvbnRleHRJZCkKK1ZpZGVvRnVsbHNjcmVlbk1v
ZGVsQ29udGV4dCYgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjplbnN1cmVNb2RlbChQbGF5
YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQpCiB7CiAgICAgcmV0dXJuICpz
dGQ6OmdldDwwPihlbnN1cmVNb2RlbEFuZEludGVyZmFjZShjb250ZXh0SWQpKTsKIH0KIAotUGxh
dGZvcm1WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2UmIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94
eTo6ZW5zdXJlSW50ZXJmYWNlKHVpbnQ2NF90IGNvbnRleHRJZCkKK1BsYXRmb3JtVmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlJiBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmVuc3VyZUludGVy
ZmFjZShQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQpCiB7CiAgICAg
cmV0dXJuICpzdGQ6OmdldDwxPihlbnN1cmVNb2RlbEFuZEludGVyZmFjZShjb250ZXh0SWQpKTsK
IH0KIAotUGxhdGZvcm1WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2UqIFZpZGVvRnVsbHNjcmVlbk1h
bmFnZXJQcm94eTo6ZmluZEludGVyZmFjZSh1aW50NjRfdCBjb250ZXh0SWQpCitQbGF0Zm9ybVZp
ZGVvRnVsbHNjcmVlbkludGVyZmFjZSogVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpmaW5k
SW50ZXJmYWNlKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCkKIHsK
ICAgICBhdXRvIGl0ID0gbV9jb250ZXh0TWFwLmZpbmQoY29udGV4dElkKTsKICAgICBpZiAoaXQg
PT0gbV9jb250ZXh0TWFwLmVuZCgpKQpAQCAtNDUwLDE0ICs0NDksMTQgQEAgUGxhdGZvcm1WaWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2UqIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6ZmluZElu
dGVyZmFjZSh1aW4KICAgICByZXR1cm4gc3RkOjpnZXQ8MT4oaXQtPnZhbHVlKS5nZXQoKTsKIH0K
IAotdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmFkZENsaWVudEZvckNvbnRleHQo
dWludDY0X3QgY29udGV4dElkKQordm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmFk
ZENsaWVudEZvckNvbnRleHQoUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4
dElkKQogewogICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9jbGllbnRDb3VudHMuYWRkKGNvbnRleHRJ
ZCwgMSk7CiAgICAgaWYgKCFhZGRSZXN1bHQuaXNOZXdFbnRyeSkKICAgICAgICAgYWRkUmVzdWx0
Lml0ZXJhdG9yLT52YWx1ZSsrOwogfQogCi12b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94
eTo6cmVtb3ZlQ2xpZW50Rm9yQ29udGV4dCh1aW50NjRfdCBjb250ZXh0SWQpCit2b2lkIFZpZGVv
RnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6cmVtb3ZlQ2xpZW50Rm9yQ29udGV4dChQbGF5YmFja1Nl
c3Npb25Db250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQpCiB7CiAgICAgQVNTRVJUKG1fY2xpZW50
Q291bnRzLmNvbnRhaW5zKGNvbnRleHRJZCkpOwogCkBAIC01MDcsOSArNTA2LDggQEAgdm9pZCBW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6Omhhc1ZpZGVvSW5QaWN0dXJlSW5QaWN0dXJlRGlk
Q2hhbmdlKGJvb2wgdmFsdWUKIAogI3ByYWdtYSBtYXJrIE1lc3NhZ2VzIGZyb20gVmlkZW9GdWxs
c2NyZWVuTWFuYWdlcgogCi12b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6c2V0dXBG
dWxsc2NyZWVuV2l0aElEKHVpbnQ2NF90IGNvbnRleHRJZCwgdWludDMyX3QgdmlkZW9MYXllcklE
LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBpbml0aWFsUmVjdCwgZmxvYXQgaG9zdGluZ0Rldmlj
ZVNjYWxlRmFjdG9yLCBIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUg
dmlkZW9GdWxsc2NyZWVuTW9kZSwgYm9vbCBhbGxvd3NQaWN0dXJlSW5QaWN0dXJlLCBib29sIHN0
YW5kYnkpCit2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6c2V0dXBGdWxsc2NyZWVu
V2l0aElEKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCwgdWludDMy
X3QgdmlkZW9MYXllcklELCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBpbml0aWFsUmVjdCwgZmxv
YXQgaG9zdGluZ0RldmljZVNjYWxlRmFjdG9yLCBIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVv
RnVsbHNjcmVlbk1vZGUgdmlkZW9GdWxsc2NyZWVuTW9kZSwgYm9vbCBhbGxvd3NQaWN0dXJlSW5Q
aWN0dXJlLCBib29sIHN0YW5kYnkpCiB7Ci0gICAgTUVTU0FHRV9DSEVDS19DT05URVhUSUQoY29u
dGV4dElkKTsKICAgICBNRVNTQUdFX0NIRUNLKHZpZGVvTGF5ZXJJRCk7CiAKICAgICBhdXRvJiBb
bW9kZWwsIGludGVyZmFjZV0gPSBlbnN1cmVNb2RlbEFuZEludGVyZmFjZShjb250ZXh0SWQpOwpA
QCAtNTUwLDkgKzU0OCw4IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpzZXR1
cEZ1bGxzY3JlZW5XaXRoSUQodWludDY0X3QgY29udGV4dElkLCB1aW50CiAjZW5kaWYKIH0KIAot
dm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OnNldEhhc1ZpZGVvKHVpbnQ2NF90IGNv
bnRleHRJZCwgYm9vbCBoYXNWaWRlbykKK3ZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5
OjpzZXRIYXNWaWRlbyhQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQs
IGJvb2wgaGFzVmlkZW8pCiB7Ci0gICAgTUVTU0FHRV9DSEVDS19DT05URVhUSUQoY29udGV4dElk
KTsKICAgICBpZiAobV9tb2NrVmlkZW9QcmVzZW50YXRpb25Nb2RlRW5hYmxlZCkKICAgICAgICAg
cmV0dXJuOwogCkBAIC01NjAsOSArNTU3LDggQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
UHJveHk6OnNldEhhc1ZpZGVvKHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vbCBoYXNWaWRlbykKICAg
ICAgICAgaW50ZXJmYWNlLT5oYXNWaWRlb0NoYW5nZWQoaGFzVmlkZW8pOwogfQogCi12b2lkIFZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6c2V0VmlkZW9EaW1lbnNpb25zKHVpbnQ2NF90IGNv
bnRleHRJZCwgY29uc3QgRmxvYXRTaXplJiB2aWRlb0RpbWVuc2lvbnMpCit2b2lkIFZpZGVvRnVs
bHNjcmVlbk1hbmFnZXJQcm94eTo6c2V0VmlkZW9EaW1lbnNpb25zKFBsYXliYWNrU2Vzc2lvbkNv
bnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCwgY29uc3QgRmxvYXRTaXplJiB2aWRlb0RpbWVuc2lv
bnMpCiB7Ci0gICAgTUVTU0FHRV9DSEVDS19DT05URVhUSUQoY29udGV4dElkKTsKICAgICBpZiAo
bV9tb2NrVmlkZW9QcmVzZW50YXRpb25Nb2RlRW5hYmxlZCkKICAgICAgICAgcmV0dXJuOwogCkBA
IC01NzAsOSArNTY2LDggQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OnNldFZp
ZGVvRGltZW5zaW9ucyh1aW50NjRfdCBjb250ZXh0SWQsIGNvbnN0IEYKICAgICAgICAgaW50ZXJm
YWNlLT52aWRlb0RpbWVuc2lvbnNDaGFuZ2VkKHZpZGVvRGltZW5zaW9ucyk7CiB9CiAKLXZvaWQg
VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjplbnRlckZ1bGxzY3JlZW4odWludDY0X3QgY29u
dGV4dElkKQordm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmVudGVyRnVsbHNjcmVl
bihQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQpCiB7Ci0gICAgTUVT
U0FHRV9DSEVDS19DT05URVhUSUQoY29udGV4dElkKTsKICAgICBpZiAobV9tb2NrVmlkZW9QcmVz
ZW50YXRpb25Nb2RlRW5hYmxlZCkgewogICAgICAgICBkaWRFbnRlckZ1bGxzY3JlZW4oY29udGV4
dElkKTsKICAgICAgICAgc2V0VmlkZW9MYXllckZyYW1lKGNvbnRleHRJZCwgezAsIDAsIDIwMCwg
MTUwfSk7CkBAIC01OTQsMTAgKzU4OSw4IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclBy
b3h5OjplbnRlckZ1bGxzY3JlZW4odWludDY0X3QgY29udGV4dElkKQogICAgIH0KIH0KIAotdm9p
ZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmV4aXRGdWxsc2NyZWVuKHVpbnQ2NF90IGNv
bnRleHRJZCwgV2ViQ29yZTo6SW50UmVjdCBmaW5hbFJlY3QpCit2b2lkIFZpZGVvRnVsbHNjcmVl
bk1hbmFnZXJQcm94eTo6ZXhpdEZ1bGxzY3JlZW4oUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50
aWZpZXIgY29udGV4dElkLCBXZWJDb3JlOjpJbnRSZWN0IGZpbmFsUmVjdCkKIHsKLSAgICBNRVNT
QUdFX0NIRUNLX0NPTlRFWFRJRChjb250ZXh0SWQpOwotCiAgICAgQVNTRVJUKG1fY29udGV4dE1h
cC5jb250YWlucyhjb250ZXh0SWQpKTsKICAgICBpZiAoIW1fY29udGV4dE1hcC5jb250YWlucyhj
b250ZXh0SWQpKQogICAgICAgICByZXR1cm47CkBAIC02MjMsOSArNjE2LDggQEAgdm9pZCBWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmV4aXRGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJ
ZCwgV2ViQ29yZTo6SW4KICNlbmRpZgogfQogCi12b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQ
cm94eTo6ZXhpdEZ1bGxzY3JlZW5XaXRob3V0QW5pbWF0aW9uVG9Nb2RlKHVpbnQ2NF90IGNvbnRl
eHRJZCwgV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2Rl
IHRhcmdldE1vZGUpCit2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6ZXhpdEZ1bGxz
Y3JlZW5XaXRob3V0QW5pbWF0aW9uVG9Nb2RlKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlm
aWVyIGNvbnRleHRJZCwgV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxz
Y3JlZW5Nb2RlIHRhcmdldE1vZGUpCiB7Ci0gICAgTUVTU0FHRV9DSEVDS19DT05URVhUSUQoY29u
dGV4dElkKTsKICAgICBpZiAobV9tb2NrVmlkZW9QcmVzZW50YXRpb25Nb2RlRW5hYmxlZCkKICAg
ICAgICAgcmV0dXJuOwogCkBAIC02NDQsMTggKzYzNiwxNiBAQCB2b2lkIFZpZGVvRnVsbHNjcmVl
bk1hbmFnZXJQcm94eTo6ZXhpdEZ1bGxzY3JlZW5XaXRob3V0QW5pbWF0aW9uVG9Nb2RlKHVpbnQ2
NF90CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCi12b2lkIFZpZGVvRnVsbHNjcmVlbk1h
bmFnZXJQcm94eTo6c2V0SW5saW5lUmVjdCh1aW50NjRfdCBjb250ZXh0SWQsIGNvbnN0IFdlYkNv
cmU6OkludFJlY3QmIGlubGluZVJlY3QsIGJvb2wgdmlzaWJsZSkKK3ZvaWQgVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlclByb3h5OjpzZXRJbmxpbmVSZWN0KFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVu
dGlmaWVyIGNvbnRleHRJZCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgaW5saW5lUmVjdCwgYm9v
bCB2aXNpYmxlKQogewotICAgIE1FU1NBR0VfQ0hFQ0tfQ09OVEVYVElEKGNvbnRleHRJZCk7CiAg
ICAgaWYgKG1fbW9ja1ZpZGVvUHJlc2VudGF0aW9uTW9kZUVuYWJsZWQpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIGVuc3VyZUludGVyZmFjZShjb250ZXh0SWQpLnNldElubGluZVJlY3QoaW5saW5l
UmVjdCwgdmlzaWJsZSk7CiB9CiAKLXZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Ojpz
ZXRIYXNWaWRlb0NvbnRlbnRMYXllcih1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgdmFsdWUpCit2
b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6c2V0SGFzVmlkZW9Db250ZW50TGF5ZXIo
UGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4dElkLCBib29sIHZhbHVlKQog
ewotICAgIE1FU1NBR0VfQ0hFQ0tfQ09OVEVYVElEKGNvbnRleHRJZCk7CiAgICAgaWYgKG1fbW9j
a1ZpZGVvUHJlc2VudGF0aW9uTW9kZUVuYWJsZWQpIHsKICAgICAgICAgaWYgKHZhbHVlKQogICAg
ICAgICAgICAgZGlkU2V0dXBGdWxsc2NyZWVuKGNvbnRleHRJZCk7CkBAIC02NzAsMjEgKzY2MCwy
MCBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6c2V0SGFzVmlkZW9Db250ZW50
TGF5ZXIodWludDY0X3QgY29udGV4dElkLCBibwogCiAjZWxzZQogCi1OT19SRVRVUk5fRFVFX1RP
X0FTU0VSVCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6c2V0SW5saW5lUmVjdCh1
aW50NjRfdCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGJvb2wpCitOT19SRVRVUk5fRFVFX1RP
X0FTU0VSVCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6c2V0SW5saW5lUmVjdChQ
bGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYs
IGJvb2wpCiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLU5PX1JFVFVSTl9EVUVf
VE9fQVNTRVJUIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpzZXRIYXNWaWRlb0Nv
bnRlbnRMYXllcih1aW50NjRfdCwgYm9vbCkKK05PX1JFVFVSTl9EVUVfVE9fQVNTRVJUIHZvaWQg
VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpzZXRIYXNWaWRlb0NvbnRlbnRMYXllcihQbGF5
YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciwgYm9vbCkKIHsKICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKIH0KIAogI2VuZGlmCiAKLXZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5
OjpjbGVhbnVwRnVsbHNjcmVlbih1aW50NjRfdCBjb250ZXh0SWQpCit2b2lkIFZpZGVvRnVsbHNj
cmVlbk1hbmFnZXJQcm94eTo6Y2xlYW51cEZ1bGxzY3JlZW4oUGxheWJhY2tTZXNzaW9uQ29udGV4
dElkZW50aWZpZXIgY29udGV4dElkKQogewotICAgIE1FU1NBR0VfQ0hFQ0tfQ09OVEVYVElEKGNv
bnRleHRJZCk7CiAgICAgaWYgKG1fbW9ja1ZpZGVvUHJlc2VudGF0aW9uTW9kZUVuYWJsZWQpIHsK
ICAgICAgICAgZGlkQ2xlYW51cEZ1bGxzY3JlZW4oY29udGV4dElkKTsKICAgICAgICAgcmV0dXJu
OwpAQCAtNjkzLDkgKzY4Miw4IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Ojpj
bGVhbnVwRnVsbHNjcmVlbih1aW50NjRfdCBjb250ZXh0SWQpCiAgICAgZW5zdXJlSW50ZXJmYWNl
KGNvbnRleHRJZCkuY2xlYW51cEZ1bGxzY3JlZW4oKTsKIH0KIAotdm9pZCBWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyUHJveHk6OnByZXBhcmVkVG9SZXR1cm5Ub0lubGluZSh1aW50NjRfdCBjb250ZXh0
SWQsIGJvb2wgdmlzaWJsZSwgV2ViQ29yZTo6SW50UmVjdCBpbmxpbmVSZWN0KQordm9pZCBWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OnByZXBhcmVkVG9SZXR1cm5Ub0lubGluZShQbGF5YmFj
a1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQsIGJvb2wgdmlzaWJsZSwgV2ViQ29y
ZTo6SW50UmVjdCBpbmxpbmVSZWN0KQogewotICAgIE1FU1NBR0VfQ0hFQ0tfQ09OVEVYVElEKGNv
bnRleHRJZCk7CiAgICAgbV9wYWdlLT5mdWxsc2NyZWVuTWF5UmV0dXJuVG9JbmxpbmUoKTsKIAog
I2lmICFQTEFURk9STShJT1NfRkFNSUxZKQpAQCAtNzEzLDkgKzcwMSw4IEBAIHZvaWQgVmlkZW9G
dWxsc2NyZWVuTWFuYWdlclByb3h5OjpwcmVwYXJlZFRvUmV0dXJuVG9JbmxpbmUodWludDY0X3Qg
Y29udGV4dElkLCBiCiAjZW5kaWYKIH0KIAotdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJv
eHk6OnByZXBhcmVkVG9FeGl0RnVsbHNjcmVlbih1aW50NjRfdCBjb250ZXh0SWQpCit2b2lkIFZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6cHJlcGFyZWRUb0V4aXRGdWxsc2NyZWVuKFBsYXli
YWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCkKIHsKLSAgICBNRVNTQUdFX0NI
RUNLX0NPTlRFWFRJRChjb250ZXh0SWQpOwogICAgIGlmIChtX21vY2tWaWRlb1ByZXNlbnRhdGlv
bk1vZGVFbmFibGVkKQogICAgICAgICByZXR1cm47CiAKQEAgLTcyNCw0OSArNzExLDQ5IEBAIHZv
aWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpwcmVwYXJlZFRvRXhpdEZ1bGxzY3JlZW4o
dWludDY0X3QgY29udGV4dElkKQogCiAjcHJhZ21hIG1hcmsgTWVzc2FnZXMgdG8gVmlkZW9GdWxs
c2NyZWVuTWFuYWdlcgogCi12b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6cmVxdWVz
dEZ1bGxzY3JlZW5Nb2RlKHVpbnQ2NF90IGNvbnRleHRJZCwgV2ViQ29yZTo6SFRNTE1lZGlhRWxl
bWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlIG1vZGUsIGJvb2wgZmluaXNoZWRXaXRoTWVk
aWEpCit2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6cmVxdWVzdEZ1bGxzY3JlZW5N
b2RlKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCwgV2ViQ29yZTo6
SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlIG1vZGUsIGJvb2wgZmlu
aXNoZWRXaXRoTWVkaWEpCiB7CiAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyOjpSZXF1ZXN0RnVsbHNjcmVlbk1vZGUoY29udGV4dElkLCBtb2RlLCBmaW5p
c2hlZFdpdGhNZWRpYSkpOwogfQogCi12b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6
cmVxdWVzdFVwZGF0ZUlubGluZVJlY3QodWludDY0X3QgY29udGV4dElkKQordm9pZCBWaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyUHJveHk6OnJlcXVlc3RVcGRhdGVJbmxpbmVSZWN0KFBsYXliYWNrU2Vz
c2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCkKIHsKICAgICBtX3BhZ2UtPnNlbmQoTWVz
c2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OlJlcXVlc3RVcGRhdGVJbmxpbmVSZWN0KGNv
bnRleHRJZCkpOwogfQogCi12b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6cmVxdWVz
dFZpZGVvQ29udGVudExheWVyKHVpbnQ2NF90IGNvbnRleHRJZCkKK3ZvaWQgVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlclByb3h5OjpyZXF1ZXN0VmlkZW9Db250ZW50TGF5ZXIoUGxheWJhY2tTZXNzaW9u
Q29udGV4dElkZW50aWZpZXIgY29udGV4dElkKQogewogICAgIG1fcGFnZS0+c2VuZChNZXNzYWdl
czo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6UmVxdWVzdFZpZGVvQ29udGVudExheWVyKGNvbnRl
eHRJZCkpOwogfQogCi12b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6cmV0dXJuVmlk
ZW9Db250ZW50TGF5ZXIodWludDY0X3QgY29udGV4dElkKQordm9pZCBWaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyUHJveHk6OnJldHVyblZpZGVvQ29udGVudExheWVyKFBsYXliYWNrU2Vzc2lvbkNvbnRl
eHRJZGVudGlmaWVyIGNvbnRleHRJZCkKIHsKICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXI6OlJldHVyblZpZGVvQ29udGVudExheWVyKGNvbnRleHRJZCkp
OwogfQogCi12b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6ZGlkU2V0dXBGdWxsc2Ny
ZWVuKHVpbnQ2NF90IGNvbnRleHRJZCkKK3ZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5
OjpkaWRTZXR1cEZ1bGxzY3JlZW4oUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29u
dGV4dElkKQogewogICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFu
YWdlcjo6RGlkU2V0dXBGdWxsc2NyZWVuKGNvbnRleHRJZCkpOwogfQogCi12b2lkIFZpZGVvRnVs
bHNjcmVlbk1hbmFnZXJQcm94eTo6d2lsbEV4aXRGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJ
ZCkKK3ZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Ojp3aWxsRXhpdEZ1bGxzY3JlZW4o
UGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4dElkKQogewogICAgIG1fcGFn
ZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6V2lsbEV4aXRGdWxsc2Ny
ZWVuKGNvbnRleHRJZCkpOwogfQogCi12b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6
ZGlkRXhpdEZ1bGxzY3JlZW4odWludDY0X3QgY29udGV4dElkKQordm9pZCBWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyUHJveHk6OmRpZEV4aXRGdWxsc2NyZWVuKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJ
ZGVudGlmaWVyIGNvbnRleHRJZCkKIHsKICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVv
RnVsbHNjcmVlbk1hbmFnZXI6OkRpZEV4aXRGdWxsc2NyZWVuKGNvbnRleHRJZCkpOwogICAgIG1f
cGFnZS0+ZGlkRXhpdEZ1bGxzY3JlZW4oKTsKIH0KIAotdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyUHJveHk6OmRpZEVudGVyRnVsbHNjcmVlbih1aW50NjRfdCBjb250ZXh0SWQpCit2b2lkIFZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6ZGlkRW50ZXJGdWxsc2NyZWVuKFBsYXliYWNrU2Vz
c2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCkKIHsKICAgICBtX3BhZ2UtPnNlbmQoTWVz
c2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OkRpZEVudGVyRnVsbHNjcmVlbihjb250ZXh0
SWQpKTsKICAgICBtX3BhZ2UtPmRpZEVudGVyRnVsbHNjcmVlbigpOwogfQogCi12b2lkIFZpZGVv
RnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6ZGlkQ2xlYW51cEZ1bGxzY3JlZW4odWludDY0X3QgY29u
dGV4dElkKQordm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmRpZENsZWFudXBGdWxs
c2NyZWVuKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCkKIHsKICAg
ICBhdXRvJiBbbW9kZWwsIGludGVyZmFjZV0gPSBlbnN1cmVNb2RlbEFuZEludGVyZmFjZShjb250
ZXh0SWQpOwogCkBAIC03NzksNyArNzY2LDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
UHJveHk6OmRpZENsZWFudXBGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCkKICAgICByZW1v
dmVDbGllbnRGb3JDb250ZXh0KGNvbnRleHRJZCk7CiB9CiAKLXZvaWQgVmlkZW9GdWxsc2NyZWVu
TWFuYWdlclByb3h5OjpzZXRWaWRlb0xheWVyRnJhbWUodWludDY0X3QgY29udGV4dElkLCBXZWJD
b3JlOjpGbG9hdFJlY3QgZnJhbWUpCit2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6
c2V0VmlkZW9MYXllckZyYW1lKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRl
eHRJZCwgV2ViQ29yZTo6RmxvYXRSZWN0IGZyYW1lKQogewogICAgIEBhdXRvcmVsZWFzZXBvb2wg
ewogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCkBAIC03OTUsMTcgKzc4MiwxNyBAQCB2b2lkIFZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6c2V0VmlkZW9MYXllckZyYW1lKHVpbnQ2NF90IGNv
bnRleHRJZCwgV2ViQ29yZQogICAgIH0KIH0KIAotdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
UHJveHk6OnNldFZpZGVvTGF5ZXJHcmF2aXR5KHVpbnQ2NF90IGNvbnRleHRJZCwgV2ViQ29yZTo6
TWVkaWFQbGF5ZXJFbnVtczo6VmlkZW9HcmF2aXR5IGdyYXZpdHkpCit2b2lkIFZpZGVvRnVsbHNj
cmVlbk1hbmFnZXJQcm94eTo6c2V0VmlkZW9MYXllckdyYXZpdHkoUGxheWJhY2tTZXNzaW9uQ29u
dGV4dElkZW50aWZpZXIgY29udGV4dElkLCBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpWaWRl
b0dyYXZpdHkgZ3Jhdml0eSkKIHsKICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVs
bHNjcmVlbk1hbmFnZXI6OlNldFZpZGVvTGF5ZXJHcmF2aXR5RW51bShjb250ZXh0SWQsICh1bnNp
Z25lZClncmF2aXR5KSk7CiB9CiAKLXZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Ojpm
dWxsc2NyZWVuTW9kZUNoYW5nZWQodWludDY0X3QgY29udGV4dElkLCBXZWJDb3JlOjpIVE1MTWVk
aWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUgbW9kZSkKK3ZvaWQgVmlkZW9GdWxs
c2NyZWVuTWFuYWdlclByb3h5OjpmdWxsc2NyZWVuTW9kZUNoYW5nZWQoUGxheWJhY2tTZXNzaW9u
Q29udGV4dElkZW50aWZpZXIgY29udGV4dElkLCBXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW51
bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUgbW9kZSkKIHsKICAgICBtX3BhZ2UtPnNlbmQoTWVzc2Fn
ZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OkZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZChjb250ZXh0
SWQsIG1vZGUpKTsKIH0KIAotdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmZ1bGxz
Y3JlZW5NYXlSZXR1cm5Ub0lubGluZSh1aW50NjRfdCBjb250ZXh0SWQpCit2b2lkIFZpZGVvRnVs
bHNjcmVlbk1hbmFnZXJQcm94eTo6ZnVsbHNjcmVlbk1heVJldHVyblRvSW5saW5lKFBsYXliYWNr
U2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCkKIHsKICAgICBib29sIGlzVmlld1Zp
c2libGUgPSBtX3BhZ2UtPmlzVmlld1Zpc2libGUoKTsKICAgICBtX3BhZ2UtPnNlbmQoTWVzc2Fn
ZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OkZ1bGxzY3JlZW5NYXlSZXR1cm5Ub0lubGluZShj
b250ZXh0SWQsIGlzVmlld1Zpc2libGUpKTsKQEAgLTgxNSw3ICs4MDIsNiBAQCB2b2lkIFZpZGVv
RnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6ZnVsbHNjcmVlbk1heVJldHVyblRvSW5saW5lKHVpbnQ2
NF90IGNvbnRleHRJZAogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAotI3VuZGVmIE1FU1NBR0Vf
Q0hFQ0tfQ09OVEVYVElECiAjdW5kZWYgTUVTU0FHRV9DSEVDSwogCiAjZW5kaWYgLy8gRU5BQkxF
KFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMjIzYjEyZmM5NjlkYzU0OWVhYTE3MTNlMjE4Zjc4
Y2IzMWFmYjk1OS4uNjk0MDZmNmM4YjFkYzgwZWE4MThkNWQxYWM2ZjExNmQwMzAyNGU2NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC05
MzQsNiArOTM0LDcgQEAKIAkJNDFGQUY1RjUxRTNDMDY0OTAwMUFFNjc4IC8qIFdlYlJUQ1Jlc29s
dmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUZB
RjVGNDFFM0MwNjQxMDAxQUU2NzggLyogV2ViUlRDUmVzb2x2ZXIuaCAqLzsgfTsKIAkJNDFGQUY1
RjgxRTNDMTAyMTAwMUFFNjc4IC8qIExpYldlYlJUQ1Jlc29sdmVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUZBRjVGNjFFM0MwQjQ3MDAxQUU2Nzgg
LyogTGliV2ViUlRDUmVzb2x2ZXIuaCAqLzsgfTsKIAkJNDQ1OTk4NDIyMjgzM0U4NzAwRTYxMzcz
IC8qIFN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDQ1OTk4NDEyMjgzM0U2MDAwRTYxMzczIC8qIFN5bnRo
ZXRpY0VkaXRpbmdDb21tYW5kVHlwZS5oICovOyB9OworCQk0NDZEQzY0QzI0QTJEOEU1MDA2MUYz
OTAgLyogUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0NkRDNjRCMjRBMkQ4QUQwMDYxRjM5MCAv
KiBQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllci5oICovOyB9OwogCQk0NDgyNzM0NzI0
NTI4RjYwMDBBOTU0OTMgLyogQ29jb2FJbWFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDQ4MjczNDYyNDUyOEY2MDAwQTk1NDkzIC8qIENvY29hSW1h
Z2UuaCAqLzsgfTsKIAkJNDQ5RDkwREEyMUZEQzMwQjAwRjY3N0MwIC8qIExvY2FsQXV0aGVudGlj
YXRpb25Tb2Z0TGluay5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQ0OUQ5MEQ4MjFGRDYzRkUwMEY2NzdDMCAvKiBMb2NhbEF1dGhlbnRpY2F0aW9uU29m
dExpbmsubW0gKi87IH07CiAJCTQ0RTkzNkZEMjQ0N0MyRDgwMDlGQTNFMyAvKiBMZWdhY3lDdXN0
b21Qcm90b2NvbElELmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0NEU5MzZGQzI0NDdDMjU2MDA5RkEzRTMgLyogTGVnYWN5Q3VzdG9tUHJvdG9jb2xJRC5o
ICovOyB9OwpAQCAtMzUzNiw2ICszNTM3LDcgQEAKIAkJNDFGQ0Q2QkYyM0NFMDQ0MDAwQzYyNTY3
IC8qIFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NDUwQUVCRjFEQzNGQUU1MDA5OTQz
RjIgLyogU2hhcmVkTWVtb3J5Q29jb2EuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gU2hhcmVkTWVtb3J5Q29jb2EuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0NDU5OTg0MTIyODMzRTYwMDBFNjEzNzMgLyogU3ludGhldGljRWRpdGluZ0NvbW1hbmRU
eXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NDZEQzY0QjI0QTJEOEFEMDA2MUYzOTAgLyogUGxh
eWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNDQ4MjczNDYyNDUyOEY2MDAwQTk1NDkzIC8qIENvY29hSW1hZ2Uu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29jb2FJbWFnZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0NDlEOTBEODIxRkQ2M0ZFMDBGNjc3QzAgLyogTG9jYWxB
dXRoZW50aWNhdGlvblNvZnRMaW5rLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gTG9jYWxBdXRoZW50aWNhdGlvblNvZnRMaW5rLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0NEE0ODFDNjIxRjJEMjdCMDBGMkY5MTkgLyogQ2xpZW50Q2VydGlmaWNh
dGVBdXRoZW50aWNhdGlvblhQQ0NvbnN0YW50cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDbGll
bnRDZXJ0aWZpY2F0ZUF1dGhlbnRpY2F0aW9uWFBDQ29uc3RhbnRzLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTgzODEsNiArODM4Myw3IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJ
CQlDRDQ1NzBDQjI0NDBGQjJBMDBBM0RDRUIgLyogQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0
b3IuY3BwICovLAogCQkJCUNENDU3MENBMjQ0MEZCMkEwMEEzRENFQiAvKiBBdWRpb1Nlc3Npb25S
b3V0aW5nQXJiaXRyYXRvci5oICovLAorCQkJCTQ0NkRDNjRCMjRBMkQ4QUQwMDYxRjM5MCAvKiBQ
bGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllci5oICovLAogCQkJCUNEQTI5QTE5MUNCREJG
NDEwMDkwMUNDRiAvKiBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyLmggKi8sCiAJCQkJQ0RBMjlBMUMx
Q0JEQkY1QjAwOTAxQ0NGIC8qIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXIubWVzc2FnZXMuaW4gKi8s
CiAJCQkJQ0RBMjlBMTgxQ0JEQkY0MTAwOTAxQ0NGIC8qIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXIu
bW0gKi8sCkBAIC0xMTAwMiw2ICsxMTAwNSw3IEBACiAJCQkJMkQ4NzEwMTcxODI4NDE1RDAwMThG
QTAxIC8qIFBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MkQ4OTQ5RjExODIwNDRGNjAwRTg5OEFBIC8qIFBsYXRmb3JtQ0FMYXllclJlbW90ZVRpbGVkQmFj
a2luZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNDNDNBQkIxMjdCOTVEQzAwMzE3RjE2IC8qIFBs
YXRmb3JtUG9wdXBNZW51RGF0YS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDQ2REM2NEMyNEEyRDhF
NTAwNjFGMzkwIC8qIFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlDREEyOUExQjFDQkRCRjQxMDA5MDFDQ0YgLyogUGxheWJhY2tTZXNzaW9uTWFu
YWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RBMjlBMjkxQ0JFQjY3QTAwOTAxQ0NGIC8qIFBs
YXliYWNrU2Vzc2lvbk1hbmFnZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RBMjlB
MjAxQ0JFQjVGQjAwOTAxQ0NGIC8qIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5oIGluIEhl
YWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUGxh
eWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9jb2NvYS9QbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllci5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM3
N2YxN2M1MzBiYjVlYjIxMjc5ZDZhOGZhNzk2NWViNWMyNzVmOGMKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUGxheWJhY2tTZXNzaW9uQ29udGV4dElk
ZW50aWZpZXIuaApAQCAtMCwwICsxLDM1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpbmNsdWRlIDx3dGYvT2JqZWN0SWRlbnRpZmllci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsK
KworZW51bSBQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllclR5cGUgeyB9OwordXNpbmcg
UGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIgPSBPYmplY3RJZGVudGlmaWVyPFBsYXli
YWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyVHlwZT47CisKK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyLmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlci5oCmluZGV4
IDU0ZGUwYmQxOTU4YzQ1YmI4YmJiMDg3YjQxOWU1NDU3NWFjMzM4MTMuLjg4MjU3ZmQwZjhkZGNl
OTllYThkOTI0MTBmOWZjMmY3OTVmNTdlNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9jb2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL2NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXIuaApAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI4LDYgKzI4
LDcgQEAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFC
TEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKQogCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVy
LmgiCisjaW5jbHVkZSAiUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIuaCIKICNpbmNs
dWRlIDxXZWJDb3JlL0V2ZW50TGlzdGVuZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0hUTUxNZWRp
YUVsZW1lbnRFbnVtcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1DQUxheWVyLmg+CkBA
IC01Nyw3ICs1OCw3IEBAIGNsYXNzIFBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQgZmlu
YWwKICAgICA6IHB1YmxpYyBSZWZDb3VudGVkPFBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRl
eHQ+CiAgICAgLCBwdWJsaWMgV2ViQ29yZTo6UGxheWJhY2tTZXNzaW9uTW9kZWxDbGllbnQgewog
cHVibGljOgotICAgIHN0YXRpYyBSZWY8UGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dD4g
Y3JlYXRlKFBsYXliYWNrU2Vzc2lvbk1hbmFnZXImIG1hbmFnZXIsIHVpbnQ2NF90IGNvbnRleHRJ
ZCkKKyAgICBzdGF0aWMgUmVmPFBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQ+IGNyZWF0
ZShQbGF5YmFja1Nlc3Npb25NYW5hZ2VyJiBtYW5hZ2VyLCBQbGF5YmFja1Nlc3Npb25Db250ZXh0
SWRlbnRpZmllciBjb250ZXh0SWQpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0KG1hbmFnZXIsIGNvbnRleHRJZCkpOwog
ICAgIH0KQEAgLTg2LDEwICs4NywxMCBAQCBwcml2YXRlOgogICAgIHZvaWQgdm9sdW1lQ2hhbmdl
ZChkb3VibGUpIGZpbmFsOwogICAgIHZvaWQgaXNQaWN0dXJlSW5QaWN0dXJlU3VwcG9ydGVkQ2hh
bmdlZChib29sKSBmaW5hbDsKIAotICAgIFBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQo
UGxheWJhY2tTZXNzaW9uTWFuYWdlciYsIHVpbnQ2NF90IGNvbnRleHRJZCk7CisgICAgUGxheWJh
Y2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dChQbGF5YmFja1Nlc3Npb25NYW5hZ2VyJiwgUGxheWJh
Y2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIpOwogCiAgICAgUGxheWJhY2tTZXNzaW9uTWFuYWdl
ciogbV9tYW5hZ2VyOwotICAgIHVpbnQ2NF90IG1fY29udGV4dElkOworICAgIFBsYXliYWNrU2Vz
c2lvbkNvbnRleHRJZGVudGlmaWVyIG1fY29udGV4dElkOwogfTsKIAogY2xhc3MgUGxheWJhY2tT
ZXNzaW9uTWFuYWdlciA6IHB1YmxpYyBSZWZDb3VudGVkPFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI+
LCBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKQEAgLTEwMyw3ICsxMDQsNyBAQCBwdWJs
aWM6CiAKICAgICB2b2lkIHNldFVwUGxheWJhY2tDb250cm9sc01hbmFnZXIoV2ViQ29yZTo6SFRN
TE1lZGlhRWxlbWVudCYpOwogICAgIHZvaWQgY2xlYXJQbGF5YmFja0NvbnRyb2xzTWFuYWdlcigp
OwotICAgIHVpbnQ2NF90IGNvbnRleHRJZEZvck1lZGlhRWxlbWVudChXZWJDb3JlOjpIVE1MTWVk
aWFFbGVtZW50Jik7CisgICAgUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4
dElkRm9yTWVkaWFFbGVtZW50KFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQmKTsKIAogICAgIFdl
YkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQqIGN1cnJlbnRQbGF5YmFja0NvbnRyb2xzRWxlbWVudCgp
IGNvbnN0OwogCkBAIC0xMTQsNTcgKzExNSw1NyBAQCBwcm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQg
UGxheWJhY2tTZXNzaW9uTWFuYWdlcihXZWJQYWdlJik7CiAKICAgICB0eXBlZGVmIHN0ZDo6dHVw
bGU8UmVmUHRyPFdlYkNvcmU6OlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50PiwgUmVm
UHRyPFBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQ+PiBNb2RlbEludGVyZmFjZVR1cGxl
OwotICAgIE1vZGVsSW50ZXJmYWNlVHVwbGUgY3JlYXRlTW9kZWxBbmRJbnRlcmZhY2UodWludDY0
X3QgY29udGV4dElkKTsKLSAgICBNb2RlbEludGVyZmFjZVR1cGxlJiBlbnN1cmVNb2RlbEFuZElu
dGVyZmFjZSh1aW50NjRfdCBjb250ZXh0SWQpOwotICAgIFdlYkNvcmU6OlBsYXliYWNrU2Vzc2lv
bk1vZGVsTWVkaWFFbGVtZW50JiBlbnN1cmVNb2RlbCh1aW50NjRfdCBjb250ZXh0SWQpOwotICAg
IFBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQmIGVuc3VyZUludGVyZmFjZSh1aW50NjRf
dCBjb250ZXh0SWQpOwotICAgIHZvaWQgcmVtb3ZlQ29udGV4dCh1aW50NjRfdCBjb250ZXh0SWQp
OwotICAgIHZvaWQgYWRkQ2xpZW50Rm9yQ29udGV4dCh1aW50NjRfdCBjb250ZXh0SWQpOwotICAg
IHZvaWQgcmVtb3ZlQ2xpZW50Rm9yQ29udGV4dCh1aW50NjRfdCBjb250ZXh0SWQpOworICAgIE1v
ZGVsSW50ZXJmYWNlVHVwbGUgY3JlYXRlTW9kZWxBbmRJbnRlcmZhY2UoUGxheWJhY2tTZXNzaW9u
Q29udGV4dElkZW50aWZpZXIpOworICAgIE1vZGVsSW50ZXJmYWNlVHVwbGUmIGVuc3VyZU1vZGVs
QW5kSW50ZXJmYWNlKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyKTsKKyAgICBXZWJD
b3JlOjpQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudCYgZW5zdXJlTW9kZWwoUGxheWJh
Y2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIpOworICAgIFBsYXliYWNrU2Vzc2lvbkludGVyZmFj
ZUNvbnRleHQmIGVuc3VyZUludGVyZmFjZShQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmll
cik7CisgICAgdm9pZCByZW1vdmVDb250ZXh0KFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlm
aWVyKTsKKyAgICB2b2lkIGFkZENsaWVudEZvckNvbnRleHQoUGxheWJhY2tTZXNzaW9uQ29udGV4
dElkZW50aWZpZXIpOworICAgIHZvaWQgcmVtb3ZlQ2xpZW50Rm9yQ29udGV4dChQbGF5YmFja1Nl
c3Npb25Db250ZXh0SWRlbnRpZmllcik7CiAKICAgICAvLyBJbnRlcmZhY2UgdG8gUGxheWJhY2tT
ZXNzaW9uSW50ZXJmYWNlQ29udGV4dAotICAgIHZvaWQgZHVyYXRpb25DaGFuZ2VkKHVpbnQ2NF90
IGNvbnRleHRJZCwgZG91YmxlKTsKLSAgICB2b2lkIGN1cnJlbnRUaW1lQ2hhbmdlZCh1aW50NjRf
dCBjb250ZXh0SWQsIGRvdWJsZSBjdXJyZW50VGltZSwgZG91YmxlIGFuY2hvclRpbWUpOwotICAg
IHZvaWQgYnVmZmVyZWRUaW1lQ2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIGRvdWJsZSBidWZm
ZXJlZFRpbWUpOwotICAgIHZvaWQgcGxheWJhY2tTdGFydGVkVGltZUNoYW5nZWQodWludDY0X3Qg
Y29udGV4dElkLCBkb3VibGUgcGxheWJhY2tTdGFydGVkVGltZSk7Ci0gICAgdm9pZCByYXRlQ2hh
bmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgaXNQbGF5aW5nLCBmbG9hdCBwbGF5YmFja1Jh
dGUpOwotICAgIHZvaWQgc2Vla2FibGVSYW5nZXNDaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJZCwg
Y29uc3QgV2ViQ29yZTo6VGltZVJhbmdlcyYsIGRvdWJsZSBsYXN0TW9kaWZpZWRUaW1lLCBkb3Vi
bGUgbGl2ZVVwZGF0ZUludGVydmFsKTsKLSAgICB2b2lkIGNhblBsYXlGYXN0UmV2ZXJzZUNoYW5n
ZWQodWludDY0X3QgY29udGV4dElkLCBib29sIHZhbHVlKTsKLSAgICB2b2lkIGF1ZGlvTWVkaWFT
ZWxlY3Rpb25PcHRpb25zQ2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIGNvbnN0IFZlY3RvcjxX
ZWJDb3JlOjpNZWRpYVNlbGVjdGlvbk9wdGlvbj4mIG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVk
SW5kZXgpOwotICAgIHZvaWQgbGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQodWlu
dDY0X3QgY29udGV4dElkLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6TWVkaWFTZWxlY3Rpb25PcHRp
b24+JiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KTsKLSAgICB2b2lkIGF1ZGlvTWVk
aWFTZWxlY3Rpb25JbmRleENoYW5nZWQodWludDY0X3QgY29udGV4dElkLCB1aW50NjRfdCBzZWxl
Y3RlZEluZGV4KTsKLSAgICB2b2lkIGxlZ2libGVNZWRpYVNlbGVjdGlvbkluZGV4Q2hhbmdlZCh1
aW50NjRfdCBjb250ZXh0SWQsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpOwotICAgIHZvaWQgZXh0
ZXJuYWxQbGF5YmFja0NoYW5nZWQodWludDY0X3QgY29udGV4dElkLCBib29sIGVuYWJsZWQsIFdl
YkNvcmU6OlBsYXliYWNrU2Vzc2lvbk1vZGVsOjpFeHRlcm5hbFBsYXliYWNrVGFyZ2V0VHlwZSwg
U3RyaW5nIGxvY2FsaXplZERldmljZU5hbWUpOwotICAgIHZvaWQgd2lyZWxlc3NWaWRlb1BsYXli
YWNrRGlzYWJsZWRDaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vbCk7Ci0gICAgdm9pZCBt
dXRlZENoYW5nZWQodWludDY0X3QgY29udGV4dElkLCBib29sKTsKLSAgICB2b2lkIHZvbHVtZUNo
YW5nZWQodWludDY0X3QgY29udGV4dElkLCBkb3VibGUpOwotICAgIHZvaWQgaXNQaWN0dXJlSW5Q
aWN0dXJlU3VwcG9ydGVkQ2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wpOworICAgIHZv
aWQgZHVyYXRpb25DaGFuZ2VkKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyLCBkb3Vi
bGUpOworICAgIHZvaWQgY3VycmVudFRpbWVDaGFuZ2VkKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJ
ZGVudGlmaWVyLCBkb3VibGUgY3VycmVudFRpbWUsIGRvdWJsZSBhbmNob3JUaW1lKTsKKyAgICB2
b2lkIGJ1ZmZlcmVkVGltZUNoYW5nZWQoUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIs
IGRvdWJsZSBidWZmZXJlZFRpbWUpOworICAgIHZvaWQgcGxheWJhY2tTdGFydGVkVGltZUNoYW5n
ZWQoUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIsIGRvdWJsZSBwbGF5YmFja1N0YXJ0
ZWRUaW1lKTsKKyAgICB2b2lkIHJhdGVDaGFuZ2VkKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVu
dGlmaWVyLCBib29sIGlzUGxheWluZywgZmxvYXQgcGxheWJhY2tSYXRlKTsKKyAgICB2b2lkIHNl
ZWthYmxlUmFuZ2VzQ2hhbmdlZChQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciwgY29u
c3QgV2ViQ29yZTo6VGltZVJhbmdlcyYsIGRvdWJsZSBsYXN0TW9kaWZpZWRUaW1lLCBkb3VibGUg
bGl2ZVVwZGF0ZUludGVydmFsKTsKKyAgICB2b2lkIGNhblBsYXlGYXN0UmV2ZXJzZUNoYW5nZWQo
UGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIsIGJvb2wgdmFsdWUpOworICAgIHZvaWQg
YXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2VkKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJ
ZGVudGlmaWVyLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6TWVkaWFTZWxlY3Rpb25PcHRpb24+JiBv
cHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KTsKKyAgICB2b2lkIGxlZ2libGVNZWRpYVNl
bGVjdGlvbk9wdGlvbnNDaGFuZ2VkKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyLCBj
b25zdCBWZWN0b3I8V2ViQ29yZTo6TWVkaWFTZWxlY3Rpb25PcHRpb24+JiBvcHRpb25zLCB1aW50
NjRfdCBzZWxlY3RlZEluZGV4KTsKKyAgICB2b2lkIGF1ZGlvTWVkaWFTZWxlY3Rpb25JbmRleENo
YW5nZWQoUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIsIHVpbnQ2NF90IHNlbGVjdGVk
SW5kZXgpOworICAgIHZvaWQgbGVnaWJsZU1lZGlhU2VsZWN0aW9uSW5kZXhDaGFuZ2VkKFBsYXli
YWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KTsKKyAg
ICB2b2lkIGV4dGVybmFsUGxheWJhY2tDaGFuZ2VkKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVu
dGlmaWVyLCBib29sIGVuYWJsZWQsIFdlYkNvcmU6OlBsYXliYWNrU2Vzc2lvbk1vZGVsOjpFeHRl
cm5hbFBsYXliYWNrVGFyZ2V0VHlwZSwgU3RyaW5nIGxvY2FsaXplZERldmljZU5hbWUpOworICAg
IHZvaWQgd2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWRDaGFuZ2VkKFBsYXliYWNrU2Vzc2lv
bkNvbnRleHRJZGVudGlmaWVyLCBib29sKTsKKyAgICB2b2lkIG11dGVkQ2hhbmdlZChQbGF5YmFj
a1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciwgYm9vbCk7CisgICAgdm9pZCB2b2x1bWVDaGFuZ2Vk
KFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyLCBkb3VibGUpOworICAgIHZvaWQgaXNQ
aWN0dXJlSW5QaWN0dXJlU3VwcG9ydGVkQ2hhbmdlZChQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRl
bnRpZmllciwgYm9vbCk7CiAKICAgICAvLyBNZXNzYWdlcyBmcm9tIFBsYXliYWNrU2Vzc2lvbk1h
bmFnZXJQcm94eQotICAgIHZvaWQgcGxheSh1aW50NjRfdCBjb250ZXh0SWQpOwotICAgIHZvaWQg
cGF1c2UodWludDY0X3QgY29udGV4dElkKTsKLSAgICB2b2lkIHRvZ2dsZVBsYXlTdGF0ZSh1aW50
NjRfdCBjb250ZXh0SWQpOwotICAgIHZvaWQgYmVnaW5TY3J1YmJpbmcodWludDY0X3QgY29udGV4
dElkKTsKLSAgICB2b2lkIGVuZFNjcnViYmluZyh1aW50NjRfdCBjb250ZXh0SWQpOwotICAgIHZv
aWQgc2Vla1RvVGltZSh1aW50NjRfdCBjb250ZXh0SWQsIGRvdWJsZSB0aW1lLCBkb3VibGUgdG9s
ZXJhbmNlQmVmb3JlLCBkb3VibGUgdG9sZXJhbmNlQWZ0ZXIpOwotICAgIHZvaWQgZmFzdFNlZWso
dWludDY0X3QgY29udGV4dElkLCBkb3VibGUgdGltZSk7Ci0gICAgdm9pZCBiZWdpblNjYW5uaW5n
Rm9yd2FyZCh1aW50NjRfdCBjb250ZXh0SWQpOwotICAgIHZvaWQgYmVnaW5TY2FubmluZ0JhY2t3
YXJkKHVpbnQ2NF90IGNvbnRleHRJZCk7Ci0gICAgdm9pZCBlbmRTY2FubmluZyh1aW50NjRfdCBj
b250ZXh0SWQpOwotICAgIHZvaWQgc2VsZWN0QXVkaW9NZWRpYU9wdGlvbih1aW50NjRfdCBjb250
ZXh0SWQsIHVpbnQ2NF90IGluZGV4KTsKLSAgICB2b2lkIHNlbGVjdExlZ2libGVNZWRpYU9wdGlv
bih1aW50NjRfdCBjb250ZXh0SWQsIHVpbnQ2NF90IGluZGV4KTsKLSAgICB2b2lkIGhhbmRsZUNv
bnRyb2xsZWRFbGVtZW50SURSZXF1ZXN0KHVpbnQ2NF90IGNvbnRleHRJZCk7Ci0gICAgdm9pZCB0
b2dnbGVQaWN0dXJlSW5QaWN0dXJlKHVpbnQ2NF90IGNvbnRleHRJZCk7Ci0gICAgdm9pZCB0b2dn
bGVNdXRlZCh1aW50NjRfdCBjb250ZXh0SWQpOwotICAgIHZvaWQgc2V0TXV0ZWQodWludDY0X3Qg
Y29udGV4dElkLCBib29sIG11dGVkKTsKLSAgICB2b2lkIHNldFZvbHVtZSh1aW50NjRfdCBjb250
ZXh0SWQsIGRvdWJsZSB2b2x1bWUpOwotICAgIHZvaWQgc2V0UGxheWluZ09uU2Vjb25kU2NyZWVu
KHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vbCB2YWx1ZSk7CisgICAgdm9pZCBwbGF5KFBsYXliYWNr
U2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyKTsKKyAgICB2b2lkIHBhdXNlKFBsYXliYWNrU2Vzc2lv
bkNvbnRleHRJZGVudGlmaWVyKTsKKyAgICB2b2lkIHRvZ2dsZVBsYXlTdGF0ZShQbGF5YmFja1Nl
c3Npb25Db250ZXh0SWRlbnRpZmllcik7CisgICAgdm9pZCBiZWdpblNjcnViYmluZyhQbGF5YmFj
a1Nlc3Npb25Db250ZXh0SWRlbnRpZmllcik7CisgICAgdm9pZCBlbmRTY3J1YmJpbmcoUGxheWJh
Y2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIpOworICAgIHZvaWQgc2Vla1RvVGltZShQbGF5YmFj
a1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciwgZG91YmxlIHRpbWUsIGRvdWJsZSB0b2xlcmFuY2VC
ZWZvcmUsIGRvdWJsZSB0b2xlcmFuY2VBZnRlcik7CisgICAgdm9pZCBmYXN0U2VlayhQbGF5YmFj
a1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciwgZG91YmxlIHRpbWUpOworICAgIHZvaWQgYmVnaW5T
Y2FubmluZ0ZvcndhcmQoUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIpOworICAgIHZv
aWQgYmVnaW5TY2FubmluZ0JhY2t3YXJkKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVy
KTsKKyAgICB2b2lkIGVuZFNjYW5uaW5nKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVy
KTsKKyAgICB2b2lkIHNlbGVjdEF1ZGlvTWVkaWFPcHRpb24oUGxheWJhY2tTZXNzaW9uQ29udGV4
dElkZW50aWZpZXIsIHVpbnQ2NF90IGluZGV4KTsKKyAgICB2b2lkIHNlbGVjdExlZ2libGVNZWRp
YU9wdGlvbihQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciwgdWludDY0X3QgaW5kZXgp
OworICAgIHZvaWQgaGFuZGxlQ29udHJvbGxlZEVsZW1lbnRJRFJlcXVlc3QoUGxheWJhY2tTZXNz
aW9uQ29udGV4dElkZW50aWZpZXIpOworICAgIHZvaWQgdG9nZ2xlUGljdHVyZUluUGljdHVyZShQ
bGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllcik7CisgICAgdm9pZCB0b2dnbGVNdXRlZChQ
bGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllcik7CisgICAgdm9pZCBzZXRNdXRlZChQbGF5
YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciwgYm9vbCBtdXRlZCk7CisgICAgdm9pZCBzZXRW
b2x1bWUoUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIsIGRvdWJsZSB2b2x1bWUpOwor
ICAgIHZvaWQgc2V0UGxheWluZ09uU2Vjb25kU2NyZWVuKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJ
ZGVudGlmaWVyLCBib29sIHZhbHVlKTsKIAogICAgIFdlYlBhZ2UqIG1fcGFnZTsKLSAgICBIYXNo
TWFwPFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQqLCB1aW50NjRfdD4gbV9tZWRpYUVsZW1lbnRz
OwotICAgIEhhc2hNYXA8dWludDY0X3QsIE1vZGVsSW50ZXJmYWNlVHVwbGU+IG1fY29udGV4dE1h
cDsKLSAgICB1aW50NjRfdCBtX2NvbnRyb2xzTWFuYWdlckNvbnRleHRJZCB7IDAgfTsKLSAgICBI
YXNoQ291bnRlZFNldDx1aW50NjRfdD4gbV9jbGllbnRDb3VudHM7CisgICAgSGFzaE1hcDxXZWJD
b3JlOjpIVE1MTWVkaWFFbGVtZW50KiwgUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXI+
IG1fbWVkaWFFbGVtZW50czsKKyAgICBIYXNoTWFwPFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVu
dGlmaWVyLCBNb2RlbEludGVyZmFjZVR1cGxlPiBtX2NvbnRleHRNYXA7CisgICAgUGxheWJhY2tT
ZXNzaW9uQ29udGV4dElkZW50aWZpZXIgbV9jb250cm9sc01hbmFnZXJDb250ZXh0SWQ7CisgICAg
SGFzaENvdW50ZWRTZXQ8UGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXI+IG1fY2xpZW50
Q291bnRzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlci5tZXNzYWdlcy5p
biBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
Lm1lc3NhZ2VzLmluCmluZGV4IGU1YmY2ZjdmMDA1MzJhZWRmYmIwZjllMzg2ODFlODFkYzA2YTJl
YzAuLjEyYzdiYWI1MDJiMDdiMGE3MzZlNjVlNmJiMTUzODdhOTRhMTJlZDIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyLm1l
c3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9QbGF5YmFja1Nl
c3Npb25NYW5hZ2VyLm1lc3NhZ2VzLmluCkBAIC0xLDQgKzEsNCBAQAotIyBDb3B5cmlnaHQgKEMp
IDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIw
MTYtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
IyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTIzLDIzICsyMywyMyBAQAogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkK
IG1lc3NhZ2VzIC0+IFBsYXliYWNrU2Vzc2lvbk1hbmFnZXIgewotICAgIFBsYXkodWludDY0X3Qg
Y29udGV4dElkKQotICAgIFBhdXNlKHVpbnQ2NF90IGNvbnRleHRJZCkKLSAgICBUb2dnbGVQbGF5
U3RhdGUodWludDY0X3QgY29udGV4dElkKQotICAgIEJlZ2luU2NydWJiaW5nKHVpbnQ2NF90IGNv
bnRleHRJZCkKLSAgICBFbmRTY3J1YmJpbmcodWludDY0X3QgY29udGV4dElkKQotICAgIFNlZWtU
b1RpbWUodWludDY0X3QgY29udGV4dElkLCBkb3VibGUgdGltZSwgZG91YmxlIHRvbGVyYW5jZUJl
Zm9yZSwgZG91YmxlIHRvbGVyYW5jZUFmdGVyKQotICAgIEZhc3RTZWVrKHVpbnQ2NF90IGNvbnRl
eHRJZCwgZG91YmxlIHRpbWUpCi0gICAgQmVnaW5TY2FubmluZ0ZvcndhcmQodWludDY0X3QgY29u
dGV4dElkKQotICAgIEJlZ2luU2Nhbm5pbmdCYWNrd2FyZCh1aW50NjRfdCBjb250ZXh0SWQpCi0g
ICAgRW5kU2Nhbm5pbmcodWludDY0X3QgY29udGV4dElkKQotICAgIFNlbGVjdEF1ZGlvTWVkaWFP
cHRpb24odWludDY0X3QgY29udGV4dElkLCB1aW50NjRfdCBpbmRleCkKLSAgICBTZWxlY3RMZWdp
YmxlTWVkaWFPcHRpb24odWludDY0X3QgY29udGV4dElkLCB1aW50NjRfdCBpbmRleCkKLSAgICBI
YW5kbGVDb250cm9sbGVkRWxlbWVudElEUmVxdWVzdCh1aW50NjRfdCBjb250ZXh0SWQpCi0gICAg
VG9nZ2xlUGljdHVyZUluUGljdHVyZSh1aW50NjRfdCBjb250ZXh0SWQpCi0gICAgVG9nZ2xlTXV0
ZWQodWludDY0X3QgY29udGV4dElkKQotICAgIFNldE11dGVkKHVpbnQ2NF90IGNvbnRleHRJZCwg
Ym9vbCBtdXRlZCkKLSAgICBTZXRWb2x1bWUodWludDY0X3QgY29udGV4dElkLCBkb3VibGUgdm9s
dW1lKQotICAgIFNldFBsYXlpbmdPblNlY29uZFNjcmVlbih1aW50NjRfdCBjb250ZXh0SWQsIGJv
b2wgdmFsdWUpCisgICAgUGxheShXZWJLaXQ6OlBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlm
aWVyIGNvbnRleHRJZCkKKyAgICBQYXVzZShXZWJLaXQ6OlBsYXliYWNrU2Vzc2lvbkNvbnRleHRJ
ZGVudGlmaWVyIGNvbnRleHRJZCkKKyAgICBUb2dnbGVQbGF5U3RhdGUoV2ViS2l0OjpQbGF5YmFj
a1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQpCisgICAgQmVnaW5TY3J1YmJpbmco
V2ViS2l0OjpQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQpCisgICAg
RW5kU2NydWJiaW5nKFdlYktpdDo6UGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29u
dGV4dElkKQorICAgIFNlZWtUb1RpbWUoV2ViS2l0OjpQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRl
bnRpZmllciBjb250ZXh0SWQsIGRvdWJsZSB0aW1lLCBkb3VibGUgdG9sZXJhbmNlQmVmb3JlLCBk
b3VibGUgdG9sZXJhbmNlQWZ0ZXIpCisgICAgRmFzdFNlZWsoV2ViS2l0OjpQbGF5YmFja1Nlc3Np
b25Db250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQsIGRvdWJsZSB0aW1lKQorICAgIEJlZ2luU2Nh
bm5pbmdGb3J3YXJkKFdlYktpdDo6UGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29u
dGV4dElkKQorICAgIEJlZ2luU2Nhbm5pbmdCYWNrd2FyZChXZWJLaXQ6OlBsYXliYWNrU2Vzc2lv
bkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCkKKyAgICBFbmRTY2FubmluZyhXZWJLaXQ6OlBs
YXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCkKKyAgICBTZWxlY3RBdWRp
b01lZGlhT3B0aW9uKFdlYktpdDo6UGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29u
dGV4dElkLCB1aW50NjRfdCBpbmRleCkKKyAgICBTZWxlY3RMZWdpYmxlTWVkaWFPcHRpb24oV2Vi
S2l0OjpQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQsIHVpbnQ2NF90
IGluZGV4KQorICAgIEhhbmRsZUNvbnRyb2xsZWRFbGVtZW50SURSZXF1ZXN0KFdlYktpdDo6UGxh
eWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4dElkKQorICAgIFRvZ2dsZVBpY3R1
cmVJblBpY3R1cmUoV2ViS2l0OjpQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciBjb250
ZXh0SWQpCisgICAgVG9nZ2xlTXV0ZWQoV2ViS2l0OjpQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRl
bnRpZmllciBjb250ZXh0SWQpCisgICAgU2V0TXV0ZWQoV2ViS2l0OjpQbGF5YmFja1Nlc3Npb25D
b250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQsIGJvb2wgbXV0ZWQpCisgICAgU2V0Vm9sdW1lKFdl
YktpdDo6UGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4dElkLCBkb3VibGUg
dm9sdW1lKQorICAgIFNldFBsYXlpbmdPblNlY29uZFNjcmVlbihXZWJLaXQ6OlBsYXliYWNrU2Vz
c2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCwgYm9vbCB2YWx1ZSkKIH0KICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1BsYXliYWNrU2Vzc2lv
bk1hbmFnZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUGxheWJhY2tTZXNz
aW9uTWFuYWdlci5tbQppbmRleCAyMGRlMzQxZjZkMTdiYjFkYzMyZThhMTk2NzA3YjU0NGFhOTIx
OTU0Li5hMTk2MjQwMmMwYjZlODcwOTU0MDdiY2NiNTFmMWNkODQxNjg1NzY5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlci5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUGxheWJhY2tTZXNzaW9uTWFu
YWdlci5tbQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTQ2LDE1ICs0Niw5IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogCi1zdGF0aWMgdWludDY0X3QgbmV4dENvbnRleHRJZCgpCi17Ci0g
ICAgc3RhdGljIHVpbnQ2NF90IGNvbnRleHRJZCA9IDA7Ci0gICAgcmV0dXJuICsrY29udGV4dElk
OwotfQotCiAjcHJhZ21hIG1hcmsgLSBQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0CiAK
LVBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQ6OlBsYXliYWNrU2Vzc2lvbkludGVyZmFj
ZUNvbnRleHQoUGxheWJhY2tTZXNzaW9uTWFuYWdlciYgbWFuYWdlciwgdWludDY0X3QgY29udGV4
dElkKQorUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dDo6UGxheWJhY2tTZXNzaW9uSW50
ZXJmYWNlQ29udGV4dChQbGF5YmFja1Nlc3Npb25NYW5hZ2VyJiBtYW5hZ2VyLCBQbGF5YmFja1Nl
c3Npb25Db250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQpCiAgICAgOiBtX21hbmFnZXIoJm1hbmFn
ZXIpCiAgICAgLCBtX2NvbnRleHRJZChjb250ZXh0SWQpCiB7CkBAIC0xOTcsNyArMTkxLDcgQEAg
dm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjppbnZhbGlkYXRlKCkKICAgICBtX3BhZ2UgPSBu
dWxscHRyOwogfQogCi1QbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpNb2RlbEludGVyZmFjZVR1cGxl
IFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmNyZWF0ZU1vZGVsQW5kSW50ZXJmYWNlKHVpbnQ2NF90
IGNvbnRleHRJZCkKK1BsYXliYWNrU2Vzc2lvbk1hbmFnZXI6Ok1vZGVsSW50ZXJmYWNlVHVwbGUg
UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6Y3JlYXRlTW9kZWxBbmRJbnRlcmZhY2UoUGxheWJhY2tT
ZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4dElkKQogewogICAgIGF1dG8gbW9kZWwgPSBQ
bGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudDo6Y3JlYXRlKCk7CiAgICAgYXV0byBpbnRl
cmZhY2UgPSBQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0OjpjcmVhdGUoKnRoaXMsIGNv
bnRleHRJZCk7CkBAIC0yMDYsNyArMjAwLDcgQEAgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6TW9k
ZWxJbnRlcmZhY2VUdXBsZSBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpjcmVhdGVNb2RlbEEKICAg
ICByZXR1cm4gc3RkOjptYWtlX3R1cGxlKFdURk1vdmUobW9kZWwpLCBXVEZNb3ZlKGludGVyZmFj
ZSkpOwogfQogCi1QbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpNb2RlbEludGVyZmFjZVR1cGxlJiBQ
bGF5YmFja1Nlc3Npb25NYW5hZ2VyOjplbnN1cmVNb2RlbEFuZEludGVyZmFjZSh1aW50NjRfdCBj
b250ZXh0SWQpCitQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpNb2RlbEludGVyZmFjZVR1cGxlJiBQ
bGF5YmFja1Nlc3Npb25NYW5hZ2VyOjplbnN1cmVNb2RlbEFuZEludGVyZmFjZShQbGF5YmFja1Nl
c3Npb25Db250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQpCiB7CiAgICAgYXV0byBhZGRSZXN1bHQg
PSBtX2NvbnRleHRNYXAuYWRkKGNvbnRleHRJZCwgTW9kZWxJbnRlcmZhY2VUdXBsZSgpKTsKICAg
ICBpZiAoYWRkUmVzdWx0LmlzTmV3RW50cnkpCkBAIC0yMTQsMTcgKzIwOCwxNyBAQCBQbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyOjpNb2RlbEludGVyZmFjZVR1cGxlJiBQbGF5YmFja1Nlc3Npb25NYW5h
Z2VyOjplbnN1cmVNb2RlbAogICAgIHJldHVybiBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlOwog
fQogCi1XZWJDb3JlOjpQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudCYgUGxheWJhY2tT
ZXNzaW9uTWFuYWdlcjo6ZW5zdXJlTW9kZWwodWludDY0X3QgY29udGV4dElkKQorV2ViQ29yZTo6
UGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQmIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6
OmVuc3VyZU1vZGVsKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCkK
IHsKICAgICByZXR1cm4gKnN0ZDo6Z2V0PDA+KGVuc3VyZU1vZGVsQW5kSW50ZXJmYWNlKGNvbnRl
eHRJZCkpOwogfQogCi1QbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0JiBQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyOjplbnN1cmVJbnRlcmZhY2UodWludDY0X3QgY29udGV4dElkKQorUGxheWJh
Y2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dCYgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6ZW5zdXJl
SW50ZXJmYWNlKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCkKIHsK
ICAgICByZXR1cm4gKnN0ZDo6Z2V0PDE+KGVuc3VyZU1vZGVsQW5kSW50ZXJmYWNlKGNvbnRleHRJ
ZCkpOwogfQogCi12b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OnJlbW92ZUNvbnRleHQodWlu
dDY0X3QgY29udGV4dElkKQordm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpyZW1vdmVDb250
ZXh0KFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCkKIHsKICAgICBh
dXRvJiBbbW9kZWwsIGludGVyZmFjZV0gPSBlbnN1cmVNb2RlbEFuZEludGVyZmFjZShjb250ZXh0
SWQpOwogCkBAIC0yMzYsMTIgKzIzMCwxMiBAQCB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6
OnJlbW92ZUNvbnRleHQodWludDY0X3QgY29udGV4dElkKQogICAgIG1fY29udGV4dE1hcC5yZW1v
dmUoY29udGV4dElkKTsKIH0KIAotdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjphZGRDbGll
bnRGb3JDb250ZXh0KHVpbnQ2NF90IGNvbnRleHRJZCkKK3ZvaWQgUGxheWJhY2tTZXNzaW9uTWFu
YWdlcjo6YWRkQ2xpZW50Rm9yQ29udGV4dChQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmll
ciBjb250ZXh0SWQpCiB7CiAgICAgbV9jbGllbnRDb3VudHMuYWRkKGNvbnRleHRJZCk7CiB9CiAK
LXZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6cmVtb3ZlQ2xpZW50Rm9yQ29udGV4dCh1aW50
NjRfdCBjb250ZXh0SWQpCit2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OnJlbW92ZUNsaWVu
dEZvckNvbnRleHQoUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4dElkKQog
ewogICAgIEFTU0VSVChtX2NsaWVudENvdW50cy5jb250YWlucyhjb250ZXh0SWQpKTsKICAgICBp
ZiAobV9jbGllbnRDb3VudHMucmVtb3ZlKGNvbnRleHRJZCkpCkBAIC0yNTIsNyArMjQ2LDcgQEAg
dm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpzZXRVcFBsYXliYWNrQ29udHJvbHNNYW5hZ2Vy
KFdlYkNvcmU6OkhUTUxNZWRpYUVsZW0KIHsKICAgICBhdXRvIGZvdW5kSXRlcmF0b3IgPSBtX21l
ZGlhRWxlbWVudHMuZmluZCgmbWVkaWFFbGVtZW50KTsKICAgICBpZiAoZm91bmRJdGVyYXRvciAh
PSBtX21lZGlhRWxlbWVudHMuZW5kKCkpIHsKLSAgICAgICAgdWludDY0X3QgY29udGV4dElkID0g
Zm91bmRJdGVyYXRvci0+dmFsdWU7CisgICAgICAgIGF1dG8gY29udGV4dElkID0gZm91bmRJdGVy
YXRvci0+dmFsdWU7CiAgICAgICAgIGlmIChtX2NvbnRyb2xzTWFuYWdlckNvbnRleHRJZCA9PSBj
b250ZXh0SWQpCiAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTI2MSw3ICsyNTUsOSBAQCB2b2lk
IFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OnNldFVwUGxheWJhY2tDb250cm9sc01hbmFnZXIoV2Vi
Q29yZTo6SFRNTE1lZGlhRWxlbQogICAgICAgICBpZiAocHJldmlvdXNDb250ZXh0SWQpCiAgICAg
ICAgICAgICByZW1vdmVDbGllbnRGb3JDb250ZXh0KHByZXZpb3VzQ29udGV4dElkKTsKICAgICB9
IGVsc2UgewotICAgICAgICBhdXRvIGNvbnRleHRJZCA9IG1fbWVkaWFFbGVtZW50cy5lbnN1cmUo
Jm1lZGlhRWxlbWVudCwgWyZdIHsgcmV0dXJuIG5leHRDb250ZXh0SWQoKTsgfSkuaXRlcmF0b3It
PnZhbHVlOworICAgICAgICBhdXRvIGNvbnRleHRJZCA9IG1fbWVkaWFFbGVtZW50cy5lbnN1cmUo
Jm1lZGlhRWxlbWVudCwgWyZdIHsKKyAgICAgICAgICAgIHJldHVybiBQbGF5YmFja1Nlc3Npb25D
b250ZXh0SWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsKKyAgICAgICAgfSkuaXRlcmF0b3ItPnZhbHVl
OwogCiAgICAgICAgIGF1dG8gcHJldmlvdXNDb250ZXh0SWQgPSBtX2NvbnRyb2xzTWFuYWdlckNv
bnRleHRJZDsKICAgICAgICAgbV9jb250cm9sc01hbmFnZXJDb250ZXh0SWQgPSBjb250ZXh0SWQ7
CkBAIC0yODMsMTYgKzI3OSwxOCBAQCB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmNsZWFy
UGxheWJhY2tDb250cm9sc01hbmFnZXIoKQogICAgICAgICByZXR1cm47CiAKICAgICByZW1vdmVD
bGllbnRGb3JDb250ZXh0KG1fY29udHJvbHNNYW5hZ2VyQ29udGV4dElkKTsKLSAgICBtX2NvbnRy
b2xzTWFuYWdlckNvbnRleHRJZCA9IDA7CisgICAgbV9jb250cm9sc01hbmFnZXJDb250ZXh0SWQg
PSB7IH07CiAKICAgICBtX3BhZ2UtPnZpZGVvQ29udHJvbHNNYW5hZ2VyRGlkQ2hhbmdlKCk7CiAg
ICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OkNs
ZWFyUGxheWJhY2tDb250cm9sc01hbmFnZXIoKSk7CiB9CiAKLXVpbnQ2NF90IFBsYXliYWNrU2Vz
c2lvbk1hbmFnZXI6OmNvbnRleHRJZEZvck1lZGlhRWxlbWVudChXZWJDb3JlOjpIVE1MTWVkaWFF
bGVtZW50JiBtZWRpYUVsZW1lbnQpCitQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciBQ
bGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpjb250ZXh0SWRGb3JNZWRpYUVsZW1lbnQoV2ViQ29yZTo6
SFRNTE1lZGlhRWxlbWVudCYgbWVkaWFFbGVtZW50KQogewotICAgIGF1dG8gYWRkUmVzdWx0ID0g
bV9tZWRpYUVsZW1lbnRzLmVuc3VyZSgmbWVkaWFFbGVtZW50LCBbJl0geyByZXR1cm4gbmV4dENv
bnRleHRJZCgpOyB9KTsKLSAgICB1aW50NjRfdCBjb250ZXh0SWQgPSBhZGRSZXN1bHQuaXRlcmF0
b3ItPnZhbHVlOworICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9tZWRpYUVsZW1lbnRzLmVuc3VyZSgm
bWVkaWFFbGVtZW50LCBbJl0geworICAgICAgICByZXR1cm4gUGxheWJhY2tTZXNzaW9uQ29udGV4
dElkZW50aWZpZXI6OmdlbmVyYXRlKCk7CisgICAgfSk7CisgICAgYXV0byBjb250ZXh0SWQgPSBh
ZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlOwogICAgIGVuc3VyZU1vZGVsKGNvbnRleHRJZCkuc2V0
TWVkaWFFbGVtZW50KCZtZWRpYUVsZW1lbnQpOwogICAgIHJldHVybiBjb250ZXh0SWQ7CiB9CkBA
IC0zMTEsMzIgKzMwOSwzMiBAQCBXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50KiBQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyOjpjdXJyZW50UGxheWJhY2tDb250cm9sc0VsZW1lbgogCiAjcHJhZ21hIG1h
cmsgSW50ZXJmYWNlIHRvIFBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQ6CiAKLXZvaWQg
UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6ZHVyYXRpb25DaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJ
ZCwgZG91YmxlIGR1cmF0aW9uKQordm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpkdXJhdGlv
bkNoYW5nZWQoUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4dElkLCBkb3Vi
bGUgZHVyYXRpb24pCiB7CiAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Np
b25NYW5hZ2VyUHJveHk6OkR1cmF0aW9uQ2hhbmdlZChjb250ZXh0SWQsIGR1cmF0aW9uKSk7CiB9
CiAKLXZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6Y3VycmVudFRpbWVDaGFuZ2VkKHVpbnQ2
NF90IGNvbnRleHRJZCwgZG91YmxlIGN1cnJlbnRUaW1lLCBkb3VibGUgYW5jaG9yVGltZSkKK3Zv
aWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6Y3VycmVudFRpbWVDaGFuZ2VkKFBsYXliYWNrU2Vz
c2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCwgZG91YmxlIGN1cnJlbnRUaW1lLCBkb3Vi
bGUgYW5jaG9yVGltZSkKIHsKICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vz
c2lvbk1hbmFnZXJQcm94eTo6Q3VycmVudFRpbWVDaGFuZ2VkKGNvbnRleHRJZCwgY3VycmVudFRp
bWUsIGFuY2hvclRpbWUpKTsKIH0KIAotdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpidWZm
ZXJlZFRpbWVDaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJZCwgZG91YmxlIGJ1ZmZlcmVkVGltZSkK
K3ZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6YnVmZmVyZWRUaW1lQ2hhbmdlZChQbGF5YmFj
a1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQsIGRvdWJsZSBidWZmZXJlZFRpbWUp
CiB7CiAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJv
eHk6OkJ1ZmZlcmVkVGltZUNoYW5nZWQoY29udGV4dElkLCBidWZmZXJlZFRpbWUpKTsKIH0KIAot
dm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpwbGF5YmFja1N0YXJ0ZWRUaW1lQ2hhbmdlZCh1
aW50NjRfdCBjb250ZXh0SWQsIGRvdWJsZSBwbGF5YmFja1N0YXJ0ZWRUaW1lKQordm9pZCBQbGF5
YmFja1Nlc3Npb25NYW5hZ2VyOjpwbGF5YmFja1N0YXJ0ZWRUaW1lQ2hhbmdlZChQbGF5YmFja1Nl
c3Npb25Db250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQsIGRvdWJsZSBwbGF5YmFja1N0YXJ0ZWRU
aW1lKQogewogICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdl
clByb3h5OjpQbGF5YmFja1N0YXJ0ZWRUaW1lQ2hhbmdlZChjb250ZXh0SWQsIHBsYXliYWNrU3Rh
cnRlZFRpbWUpKTsKIH0KIAotdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpyYXRlQ2hhbmdl
ZCh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgaXNQbGF5aW5nLCBmbG9hdCBwbGF5YmFja1JhdGUp
Cit2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OnJhdGVDaGFuZ2VkKFBsYXliYWNrU2Vzc2lv
bkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCwgYm9vbCBpc1BsYXlpbmcsIGZsb2F0IHBsYXli
YWNrUmF0ZSkKIHsKICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1h
bmFnZXJQcm94eTo6UmF0ZUNoYW5nZWQoY29udGV4dElkLCBpc1BsYXlpbmcsIHBsYXliYWNrUmF0
ZSkpOwogfQogCi12b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OnNlZWthYmxlUmFuZ2VzQ2hh
bmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIGNvbnN0IFdlYkNvcmU6OlRpbWVSYW5nZXMmIHRpbWVS
YW5nZXMsIGRvdWJsZSBsYXN0TW9kaWZpZWRUaW1lLCBkb3VibGUgbGl2ZVVwZGF0ZUludGVydmFs
KQordm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpzZWVrYWJsZVJhbmdlc0NoYW5nZWQoUGxh
eWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4dElkLCBjb25zdCBXZWJDb3JlOjpU
aW1lUmFuZ2VzJiB0aW1lUmFuZ2VzLCBkb3VibGUgbGFzdE1vZGlmaWVkVGltZSwgZG91YmxlIGxp
dmVVcGRhdGVJbnRlcnZhbCkKIHsKICAgICBWZWN0b3I8c3RkOjpwYWlyPGRvdWJsZSwgZG91Ymxl
Pj4gcmFuZ2VzVmVjdG9yOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0aW1lUmFuZ2Vz
Lmxlbmd0aCgpOyBpKyspIHsKQEAgLTM0NywxNjIgKzM0NSwxNjIgQEAgdm9pZCBQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyOjpzZWVrYWJsZVJhbmdlc0NoYW5nZWQodWludDY0X3QgY29udGV4dElkLCBj
b25zdCBXZWIKICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFn
ZXJQcm94eTo6U2Vla2FibGVSYW5nZXNWZWN0b3JDaGFuZ2VkKGNvbnRleHRJZCwgV1RGTW92ZShy
YW5nZXNWZWN0b3IpLCBsYXN0TW9kaWZpZWRUaW1lLCBsaXZlVXBkYXRlSW50ZXJ2YWwpKTsKIH0K
IAotdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpjYW5QbGF5RmFzdFJldmVyc2VDaGFuZ2Vk
KHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vbCB2YWx1ZSkKK3ZvaWQgUGxheWJhY2tTZXNzaW9uTWFu
YWdlcjo6Y2FuUGxheUZhc3RSZXZlcnNlQ2hhbmdlZChQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRl
bnRpZmllciBjb250ZXh0SWQsIGJvb2wgdmFsdWUpCiB7CiAgICAgbV9wYWdlLT5zZW5kKE1lc3Nh
Z2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OkNhblBsYXlGYXN0UmV2ZXJzZUNoYW5n
ZWQoY29udGV4dElkLCB2YWx1ZSkpOwogfQogCi12b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6
OmF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIGNv
bnN0IFZlY3RvcjxNZWRpYVNlbGVjdGlvbk9wdGlvbj4mIG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVj
dGVkSW5kZXgpCit2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmF1ZGlvTWVkaWFTZWxlY3Rp
b25PcHRpb25zQ2hhbmdlZChQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciBjb250ZXh0
SWQsIGNvbnN0IFZlY3RvcjxNZWRpYVNlbGVjdGlvbk9wdGlvbj4mIG9wdGlvbnMsIHVpbnQ2NF90
IHNlbGVjdGVkSW5kZXgpCiB7CiAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyUHJveHk6OkF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZChjb250
ZXh0SWQsIG9wdGlvbnMsIHNlbGVjdGVkSW5kZXgpKTsKIH0KIAotdm9pZCBQbGF5YmFja1Nlc3Np
b25NYW5hZ2VyOjpsZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZCh1aW50NjRfdCBj
b250ZXh0SWQsIGNvbnN0IFZlY3RvcjxNZWRpYVNlbGVjdGlvbk9wdGlvbj4mIG9wdGlvbnMsIHVp
bnQ2NF90IHNlbGVjdGVkSW5kZXgpCit2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmxlZ2li
bGVNZWRpYVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2VkKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVu
dGlmaWVyIGNvbnRleHRJZCwgY29uc3QgVmVjdG9yPE1lZGlhU2VsZWN0aW9uT3B0aW9uPiYgb3B0
aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkKIHsKICAgICBtX3BhZ2UtPnNlbmQoTWVzc2Fn
ZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0
aW9uc0NoYW5nZWQoY29udGV4dElkLCBvcHRpb25zLCBzZWxlY3RlZEluZGV4KSk7CiB9CiAKLXZv
aWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6ZXh0ZXJuYWxQbGF5YmFja0NoYW5nZWQodWludDY0
X3QgY29udGV4dElkLCBib29sIGVuYWJsZWQsIFBsYXliYWNrU2Vzc2lvbk1vZGVsOjpFeHRlcm5h
bFBsYXliYWNrVGFyZ2V0VHlwZSB0YXJnZXRUeXBlLCBTdHJpbmcgbG9jYWxpemVkRGV2aWNlTmFt
ZSkKK3ZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6ZXh0ZXJuYWxQbGF5YmFja0NoYW5nZWQo
UGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4dElkLCBib29sIGVuYWJsZWQs
IFBsYXliYWNrU2Vzc2lvbk1vZGVsOjpFeHRlcm5hbFBsYXliYWNrVGFyZ2V0VHlwZSB0YXJnZXRU
eXBlLCBTdHJpbmcgbG9jYWxpemVkRGV2aWNlTmFtZSkKIHsKICAgICBtX3BhZ2UtPnNlbmQoTWVz
c2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6RXh0ZXJuYWxQbGF5YmFja1Byb3Bl
cnRpZXNDaGFuZ2VkKGNvbnRleHRJZCwgZW5hYmxlZCwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHRh
cmdldFR5cGUpLCBsb2NhbGl6ZWREZXZpY2VOYW1lKSk7CiB9CiAKLXZvaWQgUGxheWJhY2tTZXNz
aW9uTWFuYWdlcjo6YXVkaW9NZWRpYVNlbGVjdGlvbkluZGV4Q2hhbmdlZCh1aW50NjRfdCBjb250
ZXh0SWQsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpCit2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFn
ZXI6OmF1ZGlvTWVkaWFTZWxlY3Rpb25JbmRleENoYW5nZWQoUGxheWJhY2tTZXNzaW9uQ29udGV4
dElkZW50aWZpZXIgY29udGV4dElkLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KQogewogICAgIG1f
cGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpBdWRpb01l
ZGlhU2VsZWN0aW9uSW5kZXhDaGFuZ2VkKGNvbnRleHRJZCwgc2VsZWN0ZWRJbmRleCkpOwogfQog
Ci12b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmxlZ2libGVNZWRpYVNlbGVjdGlvbkluZGV4
Q2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpCit2b2lk
IFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmxlZ2libGVNZWRpYVNlbGVjdGlvbkluZGV4Q2hhbmdl
ZChQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQsIHVpbnQ2NF90IHNl
bGVjdGVkSW5kZXgpCiB7CiAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Np
b25NYW5hZ2VyUHJveHk6OkxlZ2libGVNZWRpYVNlbGVjdGlvbkluZGV4Q2hhbmdlZChjb250ZXh0
SWQsIHNlbGVjdGVkSW5kZXgpKTsKIH0KIAotdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjp3
aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZENoYW5nZWQodWludDY0X3QgY29udGV4dElkLCBi
b29sIGRpc2FibGVkKQordm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjp3aXJlbGVzc1ZpZGVv
UGxheWJhY2tEaXNhYmxlZENoYW5nZWQoUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIg
Y29udGV4dElkLCBib29sIGRpc2FibGVkKQogewogICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6
UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxl
ZENoYW5nZWQoY29udGV4dElkLCBkaXNhYmxlZCkpOwogfQogCi12b2lkIFBsYXliYWNrU2Vzc2lv
bk1hbmFnZXI6Om11dGVkQ2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgbXV0ZWQpCit2
b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6Om11dGVkQ2hhbmdlZChQbGF5YmFja1Nlc3Npb25D
b250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQsIGJvb2wgbXV0ZWQpCiB7CiAgICAgbV9wYWdlLT5z
ZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6Ok11dGVkQ2hhbmdlZChj
b250ZXh0SWQsIG11dGVkKSk7CiB9CiAKLXZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6dm9s
dW1lQ2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIGRvdWJsZSB2b2x1bWUpCit2b2lkIFBsYXli
YWNrU2Vzc2lvbk1hbmFnZXI6OnZvbHVtZUNoYW5nZWQoUGxheWJhY2tTZXNzaW9uQ29udGV4dElk
ZW50aWZpZXIgY29udGV4dElkLCBkb3VibGUgdm9sdW1lKQogewogICAgIG1fcGFnZS0+c2VuZChN
ZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpWb2x1bWVDaGFuZ2VkKGNvbnRl
eHRJZCwgdm9sdW1lKSk7CiB9CiAKLXZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6aXNQaWN0
dXJlSW5QaWN0dXJlU3VwcG9ydGVkQ2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgc3Vw
cG9ydGVkKQordm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjppc1BpY3R1cmVJblBpY3R1cmVT
dXBwb3J0ZWRDaGFuZ2VkKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJ
ZCwgYm9vbCBzdXBwb3J0ZWQpCiB7CiAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyUHJveHk6OlBpY3R1cmVJblBpY3R1cmVTdXBwb3J0ZWRDaGFuZ2VkKGNv
bnRleHRJZCwgc3VwcG9ydGVkKSk7CiB9CiAKICNwcmFnbWEgbWFyayBNZXNzYWdlcyBmcm9tIFBs
YXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eToKIAotdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
OjpwbGF5KHVpbnQ2NF90IGNvbnRleHRJZCkKK3ZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6
cGxheShQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQpCiB7CiAgICAg
VXNlckdlc3R1cmVJbmRpY2F0b3IgaW5kaWNhdG9yKFByb2Nlc3NpbmdVc2VyR2VzdHVyZSk7CiAg
ICAgZW5zdXJlTW9kZWwoY29udGV4dElkKS5wbGF5KCk7CiB9CiAKLXZvaWQgUGxheWJhY2tTZXNz
aW9uTWFuYWdlcjo6cGF1c2UodWludDY0X3QgY29udGV4dElkKQordm9pZCBQbGF5YmFja1Nlc3Np
b25NYW5hZ2VyOjpwYXVzZShQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciBjb250ZXh0
SWQpCiB7CiAgICAgVXNlckdlc3R1cmVJbmRpY2F0b3IgaW5kaWNhdG9yKFByb2Nlc3NpbmdVc2Vy
R2VzdHVyZSk7CiAgICAgZW5zdXJlTW9kZWwoY29udGV4dElkKS5wYXVzZSgpOwogfQogCi12b2lk
IFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OnRvZ2dsZVBsYXlTdGF0ZSh1aW50NjRfdCBjb250ZXh0
SWQpCit2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OnRvZ2dsZVBsYXlTdGF0ZShQbGF5YmFj
a1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQpCiB7CiAgICAgVXNlckdlc3R1cmVJ
bmRpY2F0b3IgaW5kaWNhdG9yKFByb2Nlc3NpbmdVc2VyR2VzdHVyZSk7CiAgICAgZW5zdXJlTW9k
ZWwoY29udGV4dElkKS50b2dnbGVQbGF5U3RhdGUoKTsKIH0KIAotdm9pZCBQbGF5YmFja1Nlc3Np
b25NYW5hZ2VyOjpiZWdpblNjcnViYmluZyh1aW50NjRfdCBjb250ZXh0SWQpCit2b2lkIFBsYXli
YWNrU2Vzc2lvbk1hbmFnZXI6OmJlZ2luU2NydWJiaW5nKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJ
ZGVudGlmaWVyIGNvbnRleHRJZCkKIHsKICAgICBVc2VyR2VzdHVyZUluZGljYXRvciBpbmRpY2F0
b3IoUHJvY2Vzc2luZ1VzZXJHZXN0dXJlKTsKICAgICBlbnN1cmVNb2RlbChjb250ZXh0SWQpLmJl
Z2luU2NydWJiaW5nKCk7CiB9CiAKLXZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6ZW5kU2Ny
dWJiaW5nKHVpbnQ2NF90IGNvbnRleHRJZCkKK3ZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6
ZW5kU2NydWJiaW5nKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCkK
IHsKICAgICBVc2VyR2VzdHVyZUluZGljYXRvciBpbmRpY2F0b3IoUHJvY2Vzc2luZ1VzZXJHZXN0
dXJlKTsKICAgICBlbnN1cmVNb2RlbChjb250ZXh0SWQpLmVuZFNjcnViYmluZygpOwogfQogCi12
b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OnNlZWtUb1RpbWUodWludDY0X3QgY29udGV4dElk
LCBkb3VibGUgdGltZSwgZG91YmxlIHRvbGVyYW5jZUJlZm9yZSwgZG91YmxlIHRvbGVyYW5jZUFm
dGVyKQordm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpzZWVrVG9UaW1lKFBsYXliYWNrU2Vz
c2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCwgZG91YmxlIHRpbWUsIGRvdWJsZSB0b2xl
cmFuY2VCZWZvcmUsIGRvdWJsZSB0b2xlcmFuY2VBZnRlcikKIHsKICAgICBVc2VyR2VzdHVyZUlu
ZGljYXRvciBpbmRpY2F0b3IoUHJvY2Vzc2luZ1VzZXJHZXN0dXJlKTsKICAgICBlbnN1cmVNb2Rl
bChjb250ZXh0SWQpLnNlZWtUb1RpbWUodGltZSwgdG9sZXJhbmNlQmVmb3JlLCB0b2xlcmFuY2VB
ZnRlcik7CiB9CiAKLXZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6ZmFzdFNlZWsodWludDY0
X3QgY29udGV4dElkLCBkb3VibGUgdGltZSkKK3ZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6
ZmFzdFNlZWsoUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4dElkLCBkb3Vi
bGUgdGltZSkKIHsKICAgICBVc2VyR2VzdHVyZUluZGljYXRvciBpbmRpY2F0b3IoUHJvY2Vzc2lu
Z1VzZXJHZXN0dXJlKTsKICAgICBlbnN1cmVNb2RlbChjb250ZXh0SWQpLmZhc3RTZWVrKHRpbWUp
OwogfQogCi12b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmJlZ2luU2Nhbm5pbmdGb3J3YXJk
KHVpbnQ2NF90IGNvbnRleHRJZCkKK3ZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6YmVnaW5T
Y2FubmluZ0ZvcndhcmQoUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4dElk
KQogewogICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGluZGljYXRvcihQcm9jZXNzaW5nVXNlckdl
c3R1cmUpOwogICAgIGVuc3VyZU1vZGVsKGNvbnRleHRJZCkuYmVnaW5TY2FubmluZ0ZvcndhcmQo
KTsKIH0KIAotdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpiZWdpblNjYW5uaW5nQmFja3dh
cmQodWludDY0X3QgY29udGV4dElkKQordm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpiZWdp
blNjYW5uaW5nQmFja3dhcmQoUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4
dElkKQogewogICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGluZGljYXRvcihQcm9jZXNzaW5nVXNl
ckdlc3R1cmUpOwogICAgIGVuc3VyZU1vZGVsKGNvbnRleHRJZCkuYmVnaW5TY2FubmluZ0JhY2t3
YXJkKCk7CiB9CiAKLXZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6ZW5kU2Nhbm5pbmcodWlu
dDY0X3QgY29udGV4dElkKQordm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjplbmRTY2Fubmlu
ZyhQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQpCiB7CiAgICAgVXNl
ckdlc3R1cmVJbmRpY2F0b3IgaW5kaWNhdG9yKFByb2Nlc3NpbmdVc2VyR2VzdHVyZSk7CiAgICAg
ZW5zdXJlTW9kZWwoY29udGV4dElkKS5lbmRTY2FubmluZygpOwogfQogCi12b2lkIFBsYXliYWNr
U2Vzc2lvbk1hbmFnZXI6OnNlbGVjdEF1ZGlvTWVkaWFPcHRpb24odWludDY0X3QgY29udGV4dElk
LCB1aW50NjRfdCBpbmRleCkKK3ZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6c2VsZWN0QXVk
aW9NZWRpYU9wdGlvbihQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQs
IHVpbnQ2NF90IGluZGV4KQogewogICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGluZGljYXRvcihQ
cm9jZXNzaW5nVXNlckdlc3R1cmUpOwogICAgIGVuc3VyZU1vZGVsKGNvbnRleHRJZCkuc2VsZWN0
QXVkaW9NZWRpYU9wdGlvbihpbmRleCk7CiB9CiAKLXZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdl
cjo6c2VsZWN0TGVnaWJsZU1lZGlhT3B0aW9uKHVpbnQ2NF90IGNvbnRleHRJZCwgdWludDY0X3Qg
aW5kZXgpCit2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OnNlbGVjdExlZ2libGVNZWRpYU9w
dGlvbihQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQsIHVpbnQ2NF90
IGluZGV4KQogewogICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGluZGljYXRvcihQcm9jZXNzaW5n
VXNlckdlc3R1cmUpOwogICAgIGVuc3VyZU1vZGVsKGNvbnRleHRJZCkuc2VsZWN0TGVnaWJsZU1l
ZGlhT3B0aW9uKGluZGV4KTsKIH0KIAotdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpoYW5k
bGVDb250cm9sbGVkRWxlbWVudElEUmVxdWVzdCh1aW50NjRfdCBjb250ZXh0SWQpCit2b2lkIFBs
YXliYWNrU2Vzc2lvbk1hbmFnZXI6OmhhbmRsZUNvbnRyb2xsZWRFbGVtZW50SURSZXF1ZXN0KFBs
YXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCkKIHsKICAgICBhdXRvIGVs
ZW1lbnQgPSBlbnN1cmVNb2RlbChjb250ZXh0SWQpLm1lZGlhRWxlbWVudCgpOwogICAgIGlmIChl
bGVtZW50KQogICAgICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1h
bmFnZXJQcm94eTo6SGFuZGxlQ29udHJvbGxlZEVsZW1lbnRJRFJlc3BvbnNlKGNvbnRleHRJZCwg
ZWxlbWVudC0+Z2V0SWRBdHRyaWJ1dGUoKSkpOwogfQogCi12b2lkIFBsYXliYWNrU2Vzc2lvbk1h
bmFnZXI6OnRvZ2dsZVBpY3R1cmVJblBpY3R1cmUodWludDY0X3QgY29udGV4dElkKQordm9pZCBQ
bGF5YmFja1Nlc3Npb25NYW5hZ2VyOjp0b2dnbGVQaWN0dXJlSW5QaWN0dXJlKFBsYXliYWNrU2Vz
c2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCkKIHsKICAgICBVc2VyR2VzdHVyZUluZGlj
YXRvciBpbmRpY2F0b3IoUHJvY2Vzc2luZ1VzZXJHZXN0dXJlKTsKICAgICBlbnN1cmVNb2RlbChj
b250ZXh0SWQpLnRvZ2dsZVBpY3R1cmVJblBpY3R1cmUoKTsKIH0KIAotdm9pZCBQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyOjp0b2dnbGVNdXRlZCh1aW50NjRfdCBjb250ZXh0SWQpCit2b2lkIFBsYXli
YWNrU2Vzc2lvbk1hbmFnZXI6OnRvZ2dsZU11dGVkKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVu
dGlmaWVyIGNvbnRleHRJZCkKIHsKICAgICBVc2VyR2VzdHVyZUluZGljYXRvciBpbmRpY2F0b3Io
UHJvY2Vzc2luZ1VzZXJHZXN0dXJlKTsKICAgICBlbnN1cmVNb2RlbChjb250ZXh0SWQpLnRvZ2ds
ZU11dGVkKCk7CiB9CiAKLXZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6c2V0TXV0ZWQodWlu
dDY0X3QgY29udGV4dElkLCBib29sIG11dGVkKQordm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
OjpzZXRNdXRlZChQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQsIGJv
b2wgbXV0ZWQpCiB7CiAgICAgVXNlckdlc3R1cmVJbmRpY2F0b3IgaW5kaWNhdG9yKFByb2Nlc3Np
bmdVc2VyR2VzdHVyZSk7CiAgICAgZW5zdXJlTW9kZWwoY29udGV4dElkKS5zZXRNdXRlZChtdXRl
ZCk7CiB9CiAKLXZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6c2V0Vm9sdW1lKHVpbnQ2NF90
IGNvbnRleHRJZCwgZG91YmxlIHZvbHVtZSkKK3ZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6
c2V0Vm9sdW1lKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCwgZG91
YmxlIHZvbHVtZSkKIHsKICAgICBVc2VyR2VzdHVyZUluZGljYXRvciBpbmRpY2F0b3IoUHJvY2Vz
c2luZ1VzZXJHZXN0dXJlKTsKICAgICBlbnN1cmVNb2RlbChjb250ZXh0SWQpLnNldFZvbHVtZSh2
b2x1bWUpOwogfQogCi12b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OnNldFBsYXlpbmdPblNl
Y29uZFNjcmVlbih1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgdmFsdWUpCit2b2lkIFBsYXliYWNr
U2Vzc2lvbk1hbmFnZXI6OnNldFBsYXlpbmdPblNlY29uZFNjcmVlbihQbGF5YmFja1Nlc3Npb25D
b250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQsIGJvb2wgdmFsdWUpCiB7CiAgICAgVXNlckdlc3R1
cmVJbmRpY2F0b3IgaW5kaWNhdG9yKFByb2Nlc3NpbmdVc2VyR2VzdHVyZSk7CiAgICAgZW5zdXJl
TW9kZWwoY29udGV4dElkKS5zZXRQbGF5aW5nT25TZWNvbmRTY3JlZW4odmFsdWUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyLmgKaW5kZXggYmNjYTc2MWE3MjRiN2ZlNDRkZWRlOTZiNjQwZThmZjBkMDNjMmQ3Ny4uYjhh
ZTY3Y2E0OTgxNmY2ZTFmMTNmOWY4OTViZGY1NWQ3MjU1ZjY5OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5oCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI5
LDYgKzI5LDcgQEAKIAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJNZXNzYWdl
UmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllci5o
IgogI2luY2x1ZGUgIlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJNZXNzYWdlc1JlcGxpZXMuaCIKICNp
bmNsdWRlIDxXZWJDb3JlL0V2ZW50TGlzdGVuZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0hUTUxN
ZWRpYUVsZW1lbnRFbnVtcy5oPgpAQCAtNjIsNyArNjMsNyBAQCBjbGFzcyBWaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2VDb250ZXh0CiAgICAgOiBwdWJsaWMgUmVmQ291bnRlZDxWaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2VDb250ZXh0PgogICAgICwgcHVibGljIFdlYkNvcmU6OlZpZGVvRnVsbHNjcmVl
bk1vZGVsQ2xpZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFZpZGVvRnVsbHNjcmVlbklu
dGVyZmFjZUNvbnRleHQ+IGNyZWF0ZShWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyJiBtYW5hZ2VyLCB1
aW50NjRfdCBjb250ZXh0SWQpCisgICAgc3RhdGljIFJlZjxWaWRlb0Z1bGxzY3JlZW5JbnRlcmZh
Y2VDb250ZXh0PiBjcmVhdGUoVmlkZW9GdWxsc2NyZWVuTWFuYWdlciYgbWFuYWdlciwgUGxheWJh
Y2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4dElkKQogICAgIHsKICAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dChtYW5hZ2Vy
LCBjb250ZXh0SWQpKTsKICAgICB9CkBAIC05NCwxMCArOTUsMTAgQEAgcHJpdmF0ZToKICAgICB2
b2lkIGhhc1ZpZGVvQ2hhbmdlZChib29sKSBvdmVycmlkZTsKICAgICB2b2lkIHZpZGVvRGltZW5z
aW9uc0NoYW5nZWQoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJikgb3ZlcnJpZGU7CiAKLSAgICBW
aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0KFZpZGVvRnVsbHNjcmVlbk1hbmFnZXImLCB1
aW50NjRfdCBjb250ZXh0SWQpOworICAgIFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQo
VmlkZW9GdWxsc2NyZWVuTWFuYWdlciYsIFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVy
KTsKIAogICAgIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXIqIG1fbWFuYWdlcjsKLSAgICB1aW50NjRf
dCBtX2NvbnRleHRJZDsKKyAgICBQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciBtX2Nv
bnRleHRJZDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TGF5ZXJIb3N0aW5nQ29udGV4dD4gbV9sYXll
ckhvc3RpbmdDb250ZXh0OwogICAgIEFuaW1hdGlvblR5cGUgbV9hbmltYXRpb25UeXBlIHsgZmFs
c2UgfTsKICAgICBib29sIG1fdGFyZ2V0SXNGdWxsc2NyZWVuIHsgZmFsc2UgfTsKQEAgLTEyOCw0
MyArMTI5LDQyIEBAIHByb3RlY3RlZDoKICAgICBleHBsaWNpdCBWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyKFdlYlBhZ2UmLCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyJik7CiAKICAgICB0eXBlZGVmIHN0
ZDo6dHVwbGU8UmVmUHRyPFdlYkNvcmU6OlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50
PiwgUmVmUHRyPFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQ+PiBNb2RlbEludGVyZmFj
ZVR1cGxlOwotICAgIE1vZGVsSW50ZXJmYWNlVHVwbGUgY3JlYXRlTW9kZWxBbmRJbnRlcmZhY2Uo
dWludDY0X3QgY29udGV4dElkKTsKLSAgICBNb2RlbEludGVyZmFjZVR1cGxlJiBlbnN1cmVNb2Rl
bEFuZEludGVyZmFjZSh1aW50NjRfdCBjb250ZXh0SWQpOwotICAgIFdlYkNvcmU6OlZpZGVvRnVs
bHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50JiBlbnN1cmVNb2RlbCh1aW50NjRfdCBjb250ZXh0SWQp
OwotICAgIFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQmIGVuc3VyZUludGVyZmFjZSh1
aW50NjRfdCBjb250ZXh0SWQpOwotICAgIHZvaWQgcmVtb3ZlQ29udGV4dCh1aW50NjRfdCBjb250
ZXh0SWQpOwotICAgIHZvaWQgYWRkQ2xpZW50Rm9yQ29udGV4dCh1aW50NjRfdCBjb250ZXh0SWQp
OwotICAgIHZvaWQgcmVtb3ZlQ2xpZW50Rm9yQ29udGV4dCh1aW50NjRfdCBjb250ZXh0SWQpOwor
ICAgIE1vZGVsSW50ZXJmYWNlVHVwbGUgY3JlYXRlTW9kZWxBbmRJbnRlcmZhY2UoUGxheWJhY2tT
ZXNzaW9uQ29udGV4dElkZW50aWZpZXIpOworICAgIE1vZGVsSW50ZXJmYWNlVHVwbGUmIGVuc3Vy
ZU1vZGVsQW5kSW50ZXJmYWNlKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyKTsKKyAg
ICBXZWJDb3JlOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudCYgZW5zdXJlTW9kZWwo
UGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIpOworICAgIFZpZGVvRnVsbHNjcmVlbklu
dGVyZmFjZUNvbnRleHQmIGVuc3VyZUludGVyZmFjZShQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRl
bnRpZmllcik7CisgICAgdm9pZCByZW1vdmVDb250ZXh0KFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJ
ZGVudGlmaWVyKTsKKyAgICB2b2lkIGFkZENsaWVudEZvckNvbnRleHQoUGxheWJhY2tTZXNzaW9u
Q29udGV4dElkZW50aWZpZXIpOworICAgIHZvaWQgcmVtb3ZlQ2xpZW50Rm9yQ29udGV4dChQbGF5
YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllcik7CiAKICAgICAvLyBJbnRlcmZhY2UgdG8gVmlk
ZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dAotICAgIHZvaWQgaGFzVmlkZW9DaGFuZ2VkKHVp
bnQ2NF90IGNvbnRleHRJZCwgYm9vbCBoYXNWaWRlbyk7Ci0gICAgdm9pZCB2aWRlb0RpbWVuc2lv
bnNDaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJZCwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJik7
CisgICAgdm9pZCBoYXNWaWRlb0NoYW5nZWQoUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZp
ZXIsIGJvb2wgaGFzVmlkZW8pOworICAgIHZvaWQgdmlkZW9EaW1lbnNpb25zQ2hhbmdlZChQbGF5
YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJik7
CiAKICAgICAvLyBNZXNzYWdlcyBmcm9tIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eQotICAg
IHZvaWQgcmVxdWVzdEZ1bGxzY3JlZW5Nb2RlKHVpbnQ2NF90IGNvbnRleHRJZCwgV2ViQ29yZTo6
SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlLCBib29sIGZpbmlzaGVk
V2l0aE1lZGlhKTsKLSAgICB2b2lkIHJlcXVlc3RVcGRhdGVJbmxpbmVSZWN0KHVpbnQ2NF90IGNv
bnRleHRJZCk7Ci0gICAgdm9pZCByZXF1ZXN0VmlkZW9Db250ZW50TGF5ZXIodWludDY0X3QgY29u
dGV4dElkKTsKLSAgICB2b2lkIHJldHVyblZpZGVvQ29udGVudExheWVyKHVpbnQ2NF90IGNvbnRl
eHRJZCk7Ci0gICAgdm9pZCBkaWRTZXR1cEZ1bGxzY3JlZW4odWludDY0X3QgY29udGV4dElkKTsK
LSAgICB2b2lkIHdpbGxFeGl0RnVsbHNjcmVlbih1aW50NjRfdCBjb250ZXh0SWQpOwotICAgIHZv
aWQgZGlkRXhpdEZ1bGxzY3JlZW4odWludDY0X3QgY29udGV4dElkKTsKLSAgICB2b2lkIGRpZEVu
dGVyRnVsbHNjcmVlbih1aW50NjRfdCBjb250ZXh0SWQpOwotICAgIHZvaWQgZGlkQ2xlYW51cEZ1
bGxzY3JlZW4odWludDY0X3QgY29udGV4dElkKTsKLSAgICB2b2lkIHNldFZpZGVvTGF5ZXJGcmFt
ZUZlbmNlZCh1aW50NjRfdCBjb250ZXh0SWQsIFdlYkNvcmU6OkZsb2F0UmVjdCBib3VuZHMsIElQ
Qzo6QXR0YWNobWVudCBmZW5jZVBvcnQpOwotICAgIHZvaWQgc2V0VmlkZW9MYXllckdyYXZpdHlF
bnVtKHVpbnQ2NF90IGNvbnRleHRJZCwgdW5zaWduZWQgZ3Jhdml0eSk7Ci0gICAgdm9pZCBmdWxs
c2NyZWVuTW9kZUNoYW5nZWQodWludDY0X3QgY29udGV4dElkLCBXZWJDb3JlOjpIVE1MTWVkaWFF
bGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUpOwotICAgIHZvaWQgZnVsbHNjcmVlbk1h
eVJldHVyblRvSW5saW5lKHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vbCBpc1BhZ2VWaXNpYmxlKTsK
LSAgICB2b2lkIHJlcXVlc3RSb3V0ZVNoYXJpbmdQb2xpY3lBbmRDb250ZXh0VUlEKHVpbnQ2NF90
IGNvbnRleHRJZCwgTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OlJlcXVlc3RSb3V0
ZVNoYXJpbmdQb2xpY3lBbmRDb250ZXh0VUlEQXN5bmNSZXBseSYmKTsKKyAgICB2b2lkIHJlcXVl
c3RGdWxsc2NyZWVuTW9kZShQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciwgV2ViQ29y
ZTo6SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlLCBib29sIGZpbmlz
aGVkV2l0aE1lZGlhKTsKKyAgICB2b2lkIHJlcXVlc3RVcGRhdGVJbmxpbmVSZWN0KFBsYXliYWNr
U2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyKTsKKyAgICB2b2lkIHJlcXVlc3RWaWRlb0NvbnRlbnRM
YXllcihQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllcik7CisgICAgdm9pZCByZXR1cm5W
aWRlb0NvbnRlbnRMYXllcihQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllcik7CisgICAg
dm9pZCBkaWRTZXR1cEZ1bGxzY3JlZW4oUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIp
OworICAgIHZvaWQgd2lsbEV4aXRGdWxsc2NyZWVuKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVu
dGlmaWVyKTsKKyAgICB2b2lkIGRpZEV4aXRGdWxsc2NyZWVuKFBsYXliYWNrU2Vzc2lvbkNvbnRl
eHRJZGVudGlmaWVyKTsKKyAgICB2b2lkIGRpZEVudGVyRnVsbHNjcmVlbihQbGF5YmFja1Nlc3Np
b25Db250ZXh0SWRlbnRpZmllcik7CisgICAgdm9pZCBkaWRDbGVhbnVwRnVsbHNjcmVlbihQbGF5
YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllcik7CisgICAgdm9pZCBzZXRWaWRlb0xheWVyRnJh
bWVGZW5jZWQoUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIsIFdlYkNvcmU6OkZsb2F0
UmVjdCBib3VuZHMsIElQQzo6QXR0YWNobWVudCBmZW5jZVBvcnQpOworICAgIHZvaWQgc2V0Vmlk
ZW9MYXllckdyYXZpdHlFbnVtKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyLCB1bnNp
Z25lZCBncmF2aXR5KTsKKyAgICB2b2lkIGZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZChQbGF5YmFja1Nl
c3Npb25Db250ZXh0SWRlbnRpZmllciwgV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudEVudW1zOjpW
aWRlb0Z1bGxzY3JlZW5Nb2RlKTsKKyAgICB2b2lkIGZ1bGxzY3JlZW5NYXlSZXR1cm5Ub0lubGlu
ZShQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciwgYm9vbCBpc1BhZ2VWaXNpYmxlKTsK
KyAgICB2b2lkIHJlcXVlc3RSb3V0ZVNoYXJpbmdQb2xpY3lBbmRDb250ZXh0VUlEKFBsYXliYWNr
U2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyLCBNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdl
cjo6UmVxdWVzdFJvdXRlU2hhcmluZ1BvbGljeUFuZENvbnRleHRVSURBc3luY1JlcGx5JiYpOwog
CiAgICAgV2ViUGFnZSogbV9wYWdlOwogICAgIFJlZjxQbGF5YmFja1Nlc3Npb25NYW5hZ2VyPiBt
X3BsYXliYWNrU2Vzc2lvbk1hbmFnZXI7Ci0gICAgSGFzaE1hcDxXZWJDb3JlOjpIVE1MVmlkZW9F
bGVtZW50KiwgdWludDY0X3Q+IG1fdmlkZW9FbGVtZW50czsKLSAgICBIYXNoTWFwPHVpbnQ2NF90
LCBNb2RlbEludGVyZmFjZVR1cGxlPiBtX2NvbnRleHRNYXA7Ci0gICAgdWludDY0X3QgbV9jb250
cm9sc01hbmFnZXJDb250ZXh0SWQgeyAwIH07Ci0gICAgSGFzaE1hcDx1aW50NjRfdCwgaW50PiBt
X2NsaWVudENvdW50czsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQqLCBQ
bGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllcj4gbV92aWRlb0VsZW1lbnRzOworICAgIEhh
c2hNYXA8UGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIsIE1vZGVsSW50ZXJmYWNlVHVw
bGU+IG1fY29udGV4dE1hcDsKKyAgICBQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciBt
X2NvbnRyb2xzTWFuYWdlckNvbnRleHRJZDsKKyAgICBIYXNoTWFwPFBsYXliYWNrU2Vzc2lvbkNv
bnRleHRJZGVudGlmaWVyLCBpbnQ+IG1fY2xpZW50Q291bnRzOwogfTsKLSAgICAKKwogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01P
REUpCi0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2Nv
Y29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubWVzc2FnZXMuaW4KaW5kZXggNGY5YWUzYWYwYzgw
YmVmNGM0YTdjNWU5YzM1ZGZiNzExNDBkNmJiMS4uYTNmM2MzNDY3ZWExNzcwY2RmZDQ4MGI3YTAz
MDAxMzI1MTY5ZmVmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29h
L1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubWVzc2FnZXMuaW4KQEAgLTIy
LDE5ICsyMiwxOSBAQAogCiAjaWYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKQogbWVz
c2FnZXMgLT4gVmlkZW9GdWxsc2NyZWVuTWFuYWdlciB7Ci0gICAgUmVxdWVzdEZ1bGxzY3JlZW5N
b2RlKHVpbnQ2NF90IGNvbnRleHRJZCwgV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudEVudW1zOjpW
aWRlb0Z1bGxzY3JlZW5Nb2RlIHZpZGVvRnVsbHNjcmVlbk1vZGUsIGJvb2wgZmluaXNoZWRXaXRo
TWVkaWEpCi0gICAgUmVxdWVzdFVwZGF0ZUlubGluZVJlY3QodWludDY0X3QgY29udGV4dElkKQot
ICAgIFJlcXVlc3RWaWRlb0NvbnRlbnRMYXllcih1aW50NjRfdCBjb250ZXh0SWQpCi0gICAgUmV0
dXJuVmlkZW9Db250ZW50TGF5ZXIodWludDY0X3QgY29udGV4dElkKQotICAgIERpZFNldHVwRnVs
bHNjcmVlbih1aW50NjRfdCBjb250ZXh0SWQpCi0gICAgV2lsbEV4aXRGdWxsc2NyZWVuKHVpbnQ2
NF90IGNvbnRleHRJZCkKLSAgICBEaWRFeGl0RnVsbHNjcmVlbih1aW50NjRfdCBjb250ZXh0SWQp
Ci0gICAgRGlkRW50ZXJGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCkKLSAgICBEaWRDbGVh
bnVwRnVsbHNjcmVlbih1aW50NjRfdCBjb250ZXh0SWQpCi0gICAgU2V0VmlkZW9MYXllckZyYW1l
RmVuY2VkKHVpbnQ2NF90IGNvbnRleHRJZCwgV2ViQ29yZTo6RmxvYXRSZWN0IGJvdW5kcywgSVBD
OjpBdHRhY2htZW50IGZlbmNlUG9ydCkKLSAgICBTZXRWaWRlb0xheWVyR3Jhdml0eUVudW0odWlu
dDY0X3QgY29udGV4dElkLCB1bnNpZ25lZCBncmF2aXR5KQotICAgIEZ1bGxzY3JlZW5Nb2RlQ2hh
bmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRFbnVtczo6
VmlkZW9GdWxsc2NyZWVuTW9kZSB2aWRlb0Z1bGxzY3JlZW5Nb2RlKQotICAgIEZ1bGxzY3JlZW5N
YXlSZXR1cm5Ub0lubGluZSh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgaXNQYWdlVmlzaWJsZSkK
LSAgICBSZXF1ZXN0Um91dGVTaGFyaW5nUG9saWN5QW5kQ29udGV4dFVJRCh1aW50NjRfdCBjb250
ZXh0SWQpIC0+IChlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6Um91dGVTaGFyaW5nUG9saWN5IHJvdXRl
U2hhcmluZ1BvbGljeSwgU3RyaW5nIHJvdXRpbmdDb250ZXh0VUlEKSBBc3luYworICAgIFJlcXVl
c3RGdWxsc2NyZWVuTW9kZShXZWJLaXQ6OlBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVy
IGNvbnRleHRJZCwgV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlIHZpZGVvRnVsbHNjcmVlbk1vZGUsIGJvb2wgZmluaXNoZWRXaXRoTWVkaWEpCisgICAg
UmVxdWVzdFVwZGF0ZUlubGluZVJlY3QoV2ViS2l0OjpQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRl
bnRpZmllciBjb250ZXh0SWQpCisgICAgUmVxdWVzdFZpZGVvQ29udGVudExheWVyKFdlYktpdDo6
UGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4dElkKQorICAgIFJldHVyblZp
ZGVvQ29udGVudExheWVyKFdlYktpdDo6UGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIg
Y29udGV4dElkKQorICAgIERpZFNldHVwRnVsbHNjcmVlbihXZWJLaXQ6OlBsYXliYWNrU2Vzc2lv
bkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCkKKyAgICBXaWxsRXhpdEZ1bGxzY3JlZW4oV2Vi
S2l0OjpQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQpCisgICAgRGlk
RXhpdEZ1bGxzY3JlZW4oV2ViS2l0OjpQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciBj
b250ZXh0SWQpCisgICAgRGlkRW50ZXJGdWxsc2NyZWVuKFdlYktpdDo6UGxheWJhY2tTZXNzaW9u
Q29udGV4dElkZW50aWZpZXIgY29udGV4dElkKQorICAgIERpZENsZWFudXBGdWxsc2NyZWVuKFdl
YktpdDo6UGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4dElkKQorICAgIFNl
dFZpZGVvTGF5ZXJGcmFtZUZlbmNlZChXZWJLaXQ6OlBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVu
dGlmaWVyIGNvbnRleHRJZCwgV2ViQ29yZTo6RmxvYXRSZWN0IGJvdW5kcywgSVBDOjpBdHRhY2ht
ZW50IGZlbmNlUG9ydCkKKyAgICBTZXRWaWRlb0xheWVyR3Jhdml0eUVudW0oV2ViS2l0OjpQbGF5
YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQsIHVuc2lnbmVkIGdyYXZpdHkp
CisgICAgRnVsbHNjcmVlbk1vZGVDaGFuZ2VkKFdlYktpdDo6UGxheWJhY2tTZXNzaW9uQ29udGV4
dElkZW50aWZpZXIgY29udGV4dElkLCBXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZp
ZGVvRnVsbHNjcmVlbk1vZGUgdmlkZW9GdWxsc2NyZWVuTW9kZSkKKyAgICBGdWxsc2NyZWVuTWF5
UmV0dXJuVG9JbmxpbmUoV2ViS2l0OjpQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciBj
b250ZXh0SWQsIGJvb2wgaXNQYWdlVmlzaWJsZSkKKyAgICBSZXF1ZXN0Um91dGVTaGFyaW5nUG9s
aWN5QW5kQ29udGV4dFVJRChXZWJLaXQ6OlBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVy
IGNvbnRleHRJZCkgLT4gKGVudW06dWludDhfdCBXZWJDb3JlOjpSb3V0ZVNoYXJpbmdQb2xpY3kg
cm91dGVTaGFyaW5nUG9saWN5LCBTdHJpbmcgcm91dGluZ0NvbnRleHRVSUQpIEFzeW5jCiB9CiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVv
RnVsbHNjcmVlbk1hbmFnZXIubW0KaW5kZXggY2JjYmMyN2Y2YWExNjRhNDA0MWViNzZkZWMwNjgz
NGY4Mzk0OTk3MC4uYTk1YjdiNDcyN2NhYmVhNzIyZDMyMGJjYTk4ZTI1ZWQ0MjNhZTY3ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1h
bmFnZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNj
cmVlbk1hbmFnZXIubW0KQEAgLTgyLDcgKzgyLDcgQEAgc3RhdGljIEludFJlY3QgaW5saW5lVmlk
ZW9GcmFtZShIVE1MVmlkZW9FbGVtZW50JiBlbGVtZW50KQogCiAjcHJhZ21hIG1hcmsgLSBWaWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0CiAKLVZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNv
bnRleHQ6OlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQoVmlkZW9GdWxsc2NyZWVuTWFu
YWdlciYgbWFuYWdlciwgdWludDY0X3QgY29udGV4dElkKQorVmlkZW9GdWxsc2NyZWVuSW50ZXJm
YWNlQ29udGV4dDo6VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dChWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyJiBtYW5hZ2VyLCBQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciBjb250
ZXh0SWQpCiAgICAgOiBtX21hbmFnZXIoJm1hbmFnZXIpCiAgICAgLCBtX2NvbnRleHRJZChjb250
ZXh0SWQpCiB7CkBAIC0xNDcsNyArMTQ3LDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
OjppbnZhbGlkYXRlKCkKICAgICBtX3BhZ2UgPSBudWxscHRyOwogfQogCi1WaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyOjpNb2RlbEludGVyZmFjZVR1cGxlIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmNy
ZWF0ZU1vZGVsQW5kSW50ZXJmYWNlKHVpbnQ2NF90IGNvbnRleHRJZCkKK1ZpZGVvRnVsbHNjcmVl
bk1hbmFnZXI6Ok1vZGVsSW50ZXJmYWNlVHVwbGUgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6Y3Jl
YXRlTW9kZWxBbmRJbnRlcmZhY2UoUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29u
dGV4dElkKQogewogICAgIGF1dG8gbW9kZWwgPSBWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxl
bWVudDo6Y3JlYXRlKCk7CiAgICAgYXV0byBpbnRlcmZhY2UgPSBWaWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2VDb250ZXh0OjpjcmVhdGUoKnRoaXMsIGNvbnRleHRJZCk7CkBAIC0xNTksNyArMTU5LDcg
QEAgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6TW9kZWxJbnRlcmZhY2VUdXBsZSBWaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyOjpjcmVhdGVNb2RlbEEKICAgICByZXR1cm4gc3RkOjptYWtlX3R1cGxlKFdU
Rk1vdmUobW9kZWwpLCBXVEZNb3ZlKGludGVyZmFjZSkpOwogfQogCi1WaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyOjpNb2RlbEludGVyZmFjZVR1cGxlJiBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjplbnN1
cmVNb2RlbEFuZEludGVyZmFjZSh1aW50NjRfdCBjb250ZXh0SWQpCitWaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyOjpNb2RlbEludGVyZmFjZVR1cGxlJiBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjplbnN1
cmVNb2RlbEFuZEludGVyZmFjZShQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciBjb250
ZXh0SWQpCiB7CiAgICAgYXV0byBhZGRSZXN1bHQgPSBtX2NvbnRleHRNYXAuYWRkKGNvbnRleHRJ
ZCwgTW9kZWxJbnRlcmZhY2VUdXBsZSgpKTsKICAgICBpZiAoYWRkUmVzdWx0LmlzTmV3RW50cnkp
CkBAIC0xNjcsMTcgKzE2NywxNyBAQCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpNb2RlbEludGVy
ZmFjZVR1cGxlJiBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjplbnN1cmVNb2RlbAogICAgIHJldHVy
biBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlOwogfQogCi1XZWJDb3JlOjpWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlbFZpZGVvRWxlbWVudCYgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZW5zdXJlTW9kZWwo
dWludDY0X3QgY29udGV4dElkKQorV2ViQ29yZTo6VmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0Vs
ZW1lbnQmIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmVuc3VyZU1vZGVsKFBsYXliYWNrU2Vzc2lv
bkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCkKIHsKICAgICByZXR1cm4gKnN0ZDo6Z2V0PDA+
KGVuc3VyZU1vZGVsQW5kSW50ZXJmYWNlKGNvbnRleHRJZCkpOwogfQogCi1WaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2VDb250ZXh0JiBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjplbnN1cmVJbnRlcmZh
Y2UodWludDY0X3QgY29udGV4dElkKQorVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dCYg
VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZW5zdXJlSW50ZXJmYWNlKFBsYXliYWNrU2Vzc2lvbkNv
bnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCkKIHsKICAgICByZXR1cm4gKnN0ZDo6Z2V0PDE+KGVu
c3VyZU1vZGVsQW5kSW50ZXJmYWNlKGNvbnRleHRJZCkpOwogfQogCi12b2lkIFZpZGVvRnVsbHNj
cmVlbk1hbmFnZXI6OnJlbW92ZUNvbnRleHQodWludDY0X3QgY29udGV4dElkKQordm9pZCBWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyOjpyZW1vdmVDb250ZXh0KFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJ
ZGVudGlmaWVyIGNvbnRleHRJZCkKIHsKICAgICBhdXRvIFttb2RlbCwgaW50ZXJmYWNlXSA9IGVu
c3VyZU1vZGVsQW5kSW50ZXJmYWNlKGNvbnRleHRJZCk7CiAKQEAgLTE5MSwxNCArMTkxLDE0IEBA
IHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6cmVtb3ZlQ29udGV4dCh1aW50NjRfdCBjb250
ZXh0SWQpCiAgICAgbV9jb250ZXh0TWFwLnJlbW92ZShjb250ZXh0SWQpOwogfQogCi12b2lkIFZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmFkZENsaWVudEZvckNvbnRleHQodWludDY0X3QgY29udGV4
dElkKQordm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjphZGRDbGllbnRGb3JDb250ZXh0KFBs
YXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCkKIHsKICAgICBhdXRvIGFk
ZFJlc3VsdCA9IG1fY2xpZW50Q291bnRzLmFkZChjb250ZXh0SWQsIDEpOwogICAgIGlmICghYWRk
UmVzdWx0LmlzTmV3RW50cnkpCiAgICAgICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUrKzsK
IH0KIAotdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpyZW1vdmVDbGllbnRGb3JDb250ZXh0
KHVpbnQ2NF90IGNvbnRleHRJZCkKK3ZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6cmVtb3Zl
Q2xpZW50Rm9yQ29udGV4dChQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciBjb250ZXh0
SWQpCiB7CiAgICAgQVNTRVJUKG1fY2xpZW50Q291bnRzLmNvbnRhaW5zKGNvbnRleHRJZCkpOwog
CkBAIC0yNDIsNyArMjQyLDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjplbnRlclZp
ZGVvRnVsbHNjcmVlbkZvclZpZGVvRWxlbWVudChIVE1MVmlkZW9FbGVtZW4KICAgICBBU1NFUlQo
c3RhbmRieSB8fCBtb2RlICE9IEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVu
TW9kZU5vbmUpOwogICAgIExPRyhGdWxsc2NyZWVuLCAiVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6
ZW50ZXJWaWRlb0Z1bGxzY3JlZW5Gb3JWaWRlb0VsZW1lbnQoJXApIiwgdGhpcyk7CiAKLSAgICB1
aW50NjRfdCBjb250ZXh0SWQgPSBtX3BsYXliYWNrU2Vzc2lvbk1hbmFnZXItPmNvbnRleHRJZEZv
ck1lZGlhRWxlbWVudCh2aWRlb0VsZW1lbnQpOworICAgIGF1dG8gY29udGV4dElkID0gbV9wbGF5
YmFja1Nlc3Npb25NYW5hZ2VyLT5jb250ZXh0SWRGb3JNZWRpYUVsZW1lbnQodmlkZW9FbGVtZW50
KTsKICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fdmlkZW9FbGVtZW50cy5hZGQoJnZpZGVvRWxlbWVu
dCwgY29udGV4dElkKTsKICAgICBVTlVTRURfUEFSQU0oYWRkUmVzdWx0KTsKICAgICBBU1NFUlQo
YWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9PSBjb250ZXh0SWQpOwpAQCAtMjk0LDcgKzI5NCw3
IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZXhpdFZpZGVvRnVsbHNjcmVlbkZvclZp
ZGVvRWxlbWVudChXZWJDb3JlOjpIVE1MVmlkCiAgICAgQVNTRVJUKG1fcGFnZSk7CiAgICAgQVNT
RVJUKG1fdmlkZW9FbGVtZW50cy5jb250YWlucygmdmlkZW9FbGVtZW50KSk7CiAKLSAgICB1aW50
NjRfdCBjb250ZXh0SWQgPSBtX3ZpZGVvRWxlbWVudHMuZ2V0KCZ2aWRlb0VsZW1lbnQpOworICAg
IGF1dG8gY29udGV4dElkID0gbV92aWRlb0VsZW1lbnRzLmdldCgmdmlkZW9FbGVtZW50KTsKICAg
ICBhdXRvJiBpbnRlcmZhY2UgPSBlbnN1cmVJbnRlcmZhY2UoY29udGV4dElkKTsKICAgICBpbnRl
cmZhY2Uuc2V0VGFyZ2V0SXNGdWxsc2NyZWVuKGZhbHNlKTsKICAgICBpZiAoaW50ZXJmYWNlLmFu
aW1hdGlvblN0YXRlKCkgIT0gVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dDo6QW5pbWF0
aW9uVHlwZTo6Tm9uZSkKQEAgLTMxMSw3ICszMTEsNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1h
bmFnZXI6OmV4aXRWaWRlb0Z1bGxzY3JlZW5Ub01vZGVXaXRob3V0QW5pbWF0aW9uKFdlYkNvcmU6
OgogICAgIEFTU0VSVChtX3BhZ2UpOwogICAgIEFTU0VSVChtX3ZpZGVvRWxlbWVudHMuY29udGFp
bnMoJnZpZGVvRWxlbWVudCkpOwogCi0gICAgdWludDY0X3QgY29udGV4dElkID0gbV92aWRlb0Vs
ZW1lbnRzLmdldCgmdmlkZW9FbGVtZW50KTsKKyAgICBhdXRvIGNvbnRleHRJZCA9IG1fdmlkZW9F
bGVtZW50cy5nZXQoJnZpZGVvRWxlbWVudCk7CiAgICAgYXV0byYgaW50ZXJmYWNlID0gZW5zdXJl
SW50ZXJmYWNlKGNvbnRleHRJZCk7CiAKICAgICBpbnRlcmZhY2Uuc2V0VGFyZ2V0SXNGdWxsc2Ny
ZWVuKGZhbHNlKTsKQEAgLTMyMSwxMyArMzIxLDEzIEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFu
YWdlcjo6ZXhpdFZpZGVvRnVsbHNjcmVlblRvTW9kZVdpdGhvdXRBbmltYXRpb24oV2ViQ29yZTo6
CiAKICNwcmFnbWEgbWFyayBJbnRlcmZhY2UgdG8gVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29u
dGV4dDoKIAotdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpoYXNWaWRlb0NoYW5nZWQodWlu
dDY0X3QgY29udGV4dElkLCBib29sIGhhc1ZpZGVvKQordm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyOjpoYXNWaWRlb0NoYW5nZWQoUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29u
dGV4dElkLCBib29sIGhhc1ZpZGVvKQogewogICAgIGlmIChtX3BhZ2UpCiAgICAgICAgIG1fcGFn
ZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpTZXRIYXNWaWRl
byhjb250ZXh0SWQsIGhhc1ZpZGVvKSk7CiB9CiAKLXZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdl
cjo6dmlkZW9EaW1lbnNpb25zQ2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIGNvbnN0IEZsb2F0
U2l6ZSYgdmlkZW9EaW1lbnNpb25zKQordm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjp2aWRl
b0RpbWVuc2lvbnNDaGFuZ2VkKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRl
eHRJZCwgY29uc3QgRmxvYXRTaXplJiB2aWRlb0RpbWVuc2lvbnMpCiB7CiAgICAgaWYgKG1fcGFn
ZSkKICAgICAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
UHJveHk6OlNldFZpZGVvRGltZW5zaW9ucyhjb250ZXh0SWQsIHZpZGVvRGltZW5zaW9ucykpOwpA
QCAtMzM1LDE3ICszMzUsMTcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjp2aWRlb0Rp
bWVuc2lvbnNDaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJZCwgY29uc3QgRmwKIAogI3ByYWdtYSBt
YXJrIE1lc3NhZ2VzIGZyb20gVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OgogCi12b2lkIFZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnJlcXVlc3RGdWxsc2NyZWVuTW9kZSh1aW50NjRfdCBjb250
ZXh0SWQsIFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9k
ZSBtb2RlLCBib29sIGZpbmlzaGVkV2l0aE1lZGlhKQordm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyOjpyZXF1ZXN0RnVsbHNjcmVlbk1vZGUoUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZp
ZXIgY29udGV4dElkLCBXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNj
cmVlbk1vZGUgbW9kZSwgYm9vbCBmaW5pc2hlZFdpdGhNZWRpYSkKIHsKICAgICBlbnN1cmVNb2Rl
bChjb250ZXh0SWQpLnJlcXVlc3RGdWxsc2NyZWVuTW9kZShtb2RlLCBmaW5pc2hlZFdpdGhNZWRp
YSk7CiB9CiAKLXZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZnVsbHNjcmVlbk1vZGVDaGFu
Z2VkKHVpbnQ2NF90IGNvbnRleHRJZCwgV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudEVudW1zOjpW
aWRlb0Z1bGxzY3JlZW5Nb2RlIHZpZGVvRnVsbHNjcmVlbk1vZGUpCit2b2lkIFZpZGVvRnVsbHNj
cmVlbk1hbmFnZXI6OmZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZChQbGF5YmFja1Nlc3Npb25Db250ZXh0
SWRlbnRpZmllciBjb250ZXh0SWQsIFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRFbnVtczo6Vmlk
ZW9GdWxsc2NyZWVuTW9kZSB2aWRlb0Z1bGxzY3JlZW5Nb2RlKQogewogICAgIGVuc3VyZU1vZGVs
KGNvbnRleHRJZCkuZnVsbHNjcmVlbk1vZGVDaGFuZ2VkKHZpZGVvRnVsbHNjcmVlbk1vZGUpOwog
fQogCi12b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnJlcXVlc3RVcGRhdGVJbmxpbmVSZWN0
KHVpbnQ2NF90IGNvbnRleHRJZCkKK3ZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6cmVxdWVz
dFVwZGF0ZUlubGluZVJlY3QoUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4
dElkKQogewogICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm47CkBAIC0zNTUsNyArMzU1
LDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpyZXF1ZXN0VXBkYXRlSW5saW5lUmVj
dCh1aW50NjRfdCBjb250ZXh0SWQpCiAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyUHJveHk6OlNldElubGluZVJlY3QoY29udGV4dElkLCBpbmxpbmVSZWN0
LCBpbmxpbmVSZWN0ICE9IEludFJlY3QoMCwgMCwgMCwgMCkpKTsKIH0KIAotdm9pZCBWaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyOjpyZXF1ZXN0VmlkZW9Db250ZW50TGF5ZXIodWludDY0X3QgY29udGV4
dElkKQordm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpyZXF1ZXN0VmlkZW9Db250ZW50TGF5
ZXIoUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIgY29udGV4dElkKQogewogICAgIGF1
dG8gW21vZGVsLCBpbnRlcmZhY2VdID0gZW5zdXJlTW9kZWxBbmRJbnRlcmZhY2UoY29udGV4dElk
KTsKIApAQCAtMzY5LDcgKzM2OSw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6cmVx
dWVzdFZpZGVvQ29udGVudExheWVyKHVpbnQ2NF90IGNvbnRleHRJZCkKICAgICB9KTsKIH0KIAot
dm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpyZXR1cm5WaWRlb0NvbnRlbnRMYXllcih1aW50
NjRfdCBjb250ZXh0SWQpCit2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnJldHVyblZpZGVv
Q29udGVudExheWVyKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCkK
IHsKICAgICBSZWZQdHI8VmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ+IG1vZGVsOwog
ICAgIFJlZlB0cjxWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0PiBpbnRlcmZhY2U7CkBA
IC0zODcsNyArMzg3LDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpyZXR1cm5WaWRl
b0NvbnRlbnRMYXllcih1aW50NjRfdCBjb250ZXh0SWQpCiAgICAgfSk7CiB9CiAKLXZvaWQgVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZGlkU2V0dXBGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJ
ZCkKK3ZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZGlkU2V0dXBGdWxsc2NyZWVuKFBsYXli
YWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCkKIHsKICAgICBMT0coRnVsbHNj
cmVlbiwgIlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmRpZFNldHVwRnVsbHNjcmVlbiglcCwgJXgp
IiwgdGhpcywgY29udGV4dElkKTsKIApAQCAtNDExLDcgKzQxMSw3IEBAIHZvaWQgVmlkZW9GdWxs
c2NyZWVuTWFuYWdlcjo6ZGlkU2V0dXBGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCkKICNl
bmRpZgogfQogCi12b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OndpbGxFeGl0RnVsbHNjcmVl
bih1aW50NjRfdCBjb250ZXh0SWQpCit2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OndpbGxF
eGl0RnVsbHNjcmVlbihQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQp
CiB7CiAgICAgTE9HKEZ1bGxzY3JlZW4sICJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjp3aWxsRXhp
dEZ1bGxzY3JlZW4oJXAsICV4KSIsIHRoaXMsIGNvbnRleHRJZCk7CiAKQEAgLTQyOCw3ICs0Mjgs
NyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OndpbGxFeGl0RnVsbHNjcmVlbih1aW50
NjRfdCBjb250ZXh0SWQpCiAgICAgfSk7CiB9CiAKLXZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdl
cjo6ZGlkRW50ZXJGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCkKK3ZvaWQgVmlkZW9GdWxs
c2NyZWVuTWFuYWdlcjo6ZGlkRW50ZXJGdWxsc2NyZWVuKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJ
ZGVudGlmaWVyIGNvbnRleHRJZCkKIHsKICAgICBMT0coRnVsbHNjcmVlbiwgIlZpZGVvRnVsbHNj
cmVlbk1hbmFnZXI6OmRpZEVudGVyRnVsbHNjcmVlbiglcCwgJXgpIiwgdGhpcywgY29udGV4dElk
KTsKIApAQCAtNDUzLDcgKzQ1Myw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZGlk
RW50ZXJGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCkKICAgICB9KTsKIH0KIAotdm9pZCBW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpkaWRFeGl0RnVsbHNjcmVlbih1aW50NjRfdCBjb250ZXh0
SWQpCit2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmRpZEV4aXRGdWxsc2NyZWVuKFBsYXli
YWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCkKIHsKICAgICBMT0coRnVsbHNj
cmVlbiwgIlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmRpZEV4aXRGdWxsc2NyZWVuKCVwLCAleCki
LCB0aGlzLCBjb250ZXh0SWQpOwogCkBAIC00ODQsNyArNDg0LDcgQEAgdm9pZCBWaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyOjpkaWRFeGl0RnVsbHNjcmVlbih1aW50NjRfdCBjb250ZXh0SWQpCiAjZW5k
aWYKIH0KICAgICAKLXZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZGlkQ2xlYW51cEZ1bGxz
Y3JlZW4odWludDY0X3QgY29udGV4dElkKQordm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpk
aWRDbGVhbnVwRnVsbHNjcmVlbihQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciBjb250
ZXh0SWQpCiB7CiAgICAgTE9HKEZ1bGxzY3JlZW4sICJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpk
aWRDbGVhbnVwRnVsbHNjcmVlbiglcCwgJXgpIiwgdGhpcywgY29udGV4dElkKTsKIApAQCAtNTE5
LDEyICs1MTksMTIgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpkaWRDbGVhbnVwRnVs
bHNjcmVlbih1aW50NjRfdCBjb250ZXh0SWQpCiAgICAgfSk7CiB9CiAgICAgCi12b2lkIFZpZGVv
RnVsbHNjcmVlbk1hbmFnZXI6OnNldFZpZGVvTGF5ZXJHcmF2aXR5RW51bSh1aW50NjRfdCBjb250
ZXh0SWQsIHVuc2lnbmVkIGdyYXZpdHkpCit2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnNl
dFZpZGVvTGF5ZXJHcmF2aXR5RW51bShQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciBj
b250ZXh0SWQsIHVuc2lnbmVkIGdyYXZpdHkpCiB7CiAgICAgZW5zdXJlTW9kZWwoY29udGV4dElk
KS5zZXRWaWRlb0xheWVyR3Jhdml0eSgoTWVkaWFQbGF5ZXJFbnVtczo6VmlkZW9HcmF2aXR5KWdy
YXZpdHkpOwogfQogICAgIAotdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpmdWxsc2NyZWVu
TWF5UmV0dXJuVG9JbmxpbmUodWludDY0X3QgY29udGV4dElkLCBib29sIGlzUGFnZVZpc2libGUp
Cit2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmZ1bGxzY3JlZW5NYXlSZXR1cm5Ub0lubGlu
ZShQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllciBjb250ZXh0SWQsIGJvb2wgaXNQYWdl
VmlzaWJsZSkKIHsKICAgICBpZiAoIW1fcGFnZSkKICAgICAgICAgcmV0dXJuOwpAQCAtNTM2LDEy
ICs1MzYsMTIgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpmdWxsc2NyZWVuTWF5UmV0
dXJuVG9JbmxpbmUodWludDY0X3QgY29udGV4dElkLCBib28KICAgICBtX3BhZ2UtPnNlbmQoTWVz
c2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6UHJlcGFyZWRUb1JldHVyblRvSW5s
aW5lKGNvbnRleHRJZCwgdHJ1ZSwgaW5saW5lVmlkZW9GcmFtZSgqbW9kZWwudmlkZW9FbGVtZW50
KCkpKSk7CiB9CiAKLXZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6cmVxdWVzdFJvdXRlU2hh
cmluZ1BvbGljeUFuZENvbnRleHRVSUQodWludDY0X3QgY29udGV4dElkLCBNZXNzYWdlczo6Vmlk
ZW9GdWxsc2NyZWVuTWFuYWdlcjo6UmVxdWVzdFJvdXRlU2hhcmluZ1BvbGljeUFuZENvbnRleHRV
SUQ6OkFzeW5jUmVwbHkmJiByZXBseSkKK3ZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6cmVx
dWVzdFJvdXRlU2hhcmluZ1BvbGljeUFuZENvbnRleHRVSUQoUGxheWJhY2tTZXNzaW9uQ29udGV4
dElkZW50aWZpZXIgY29udGV4dElkLCBNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6
UmVxdWVzdFJvdXRlU2hhcmluZ1BvbGljeUFuZENvbnRleHRVSUQ6OkFzeW5jUmVwbHkmJiByZXBs
eSkKIHsKICAgICBlbnN1cmVNb2RlbChjb250ZXh0SWQpLnJlcXVlc3RSb3V0ZVNoYXJpbmdQb2xp
Y3lBbmRDb250ZXh0VUlEKFdURk1vdmUocmVwbHkpKTsKIH0KICAgICAKLXZvaWQgVmlkZW9GdWxs
c2NyZWVuTWFuYWdlcjo6c2V0VmlkZW9MYXllckZyYW1lRmVuY2VkKHVpbnQ2NF90IGNvbnRleHRJ
ZCwgV2ViQ29yZTo6RmxvYXRSZWN0IGJvdW5kcywgSVBDOjpBdHRhY2htZW50IGZlbmNlUG9ydCkK
K3ZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6c2V0VmlkZW9MYXllckZyYW1lRmVuY2VkKFBs
YXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyIGNvbnRleHRJZCwgV2ViQ29yZTo6RmxvYXRS
ZWN0IGJvdW5kcywgSVBDOjpBdHRhY2htZW50IGZlbmNlUG9ydCkKIHsKICAgICBMT0coRnVsbHNj
cmVlbiwgIlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnNldFZpZGVvTGF5ZXJGcmFtZUZlbmNlZCgl
cCwgJXgpIiwgdGhpcywgY29udGV4dElkKTsKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>