<?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>226138</bug_id>
          
          <creation_ts>2021-05-22 00:04:53 -0700</creation_ts>
          <short_desc>Adopt CheckedLock in more places</short_desc>
          <delta_ts>2021-05-22 14:41:17 -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>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>226133</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>achristensen</cc>
    
    <cc>apinheiro</cc>
    
    <cc>benjamin</cc>
    
    <cc>calvaris</cc>
    
    <cc>cfleizach</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>glenn</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>jer.noble</cc>
    
    <cc>kkinnunen</cc>
    
    <cc>philipj</cc>
    
    <cc>pnormand</cc>
    
    <cc>samuel_white</cc>
    
    <cc>sam</cc>
    
    <cc>sergio</cc>
    
    <cc>vjaquez</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1762781</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-22 00:04:53 -0700</bug_when>
    <thetext>Adopt CheckedLock in more places to benefit from Clang Thread Safety Analysis.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762782</commentid>
    <comment_count>1</comment_count>
      <attachid>429406</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-22 00:07:38 -0700</bug_when>
    <thetext>Created attachment 429406
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762784</commentid>
    <comment_count>2</comment_count>
      <attachid>429407</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-22 00:20:20 -0700</bug_when>
    <thetext>Created attachment 429407
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762814</commentid>
    <comment_count>3</comment_count>
      <attachid>429413</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-22 08:40:01 -0700</bug_when>
    <thetext>Created attachment 429413
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762820</commentid>
    <comment_count>4</comment_count>
      <attachid>429416</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-22 10:08:23 -0700</bug_when>
    <thetext>Created attachment 429416
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762822</commentid>
    <comment_count>5</comment_count>
      <attachid>429417</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-22 10:21:07 -0700</bug_when>
    <thetext>Created attachment 429417
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762834</commentid>
    <comment_count>6</comment_count>
      <attachid>429424</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-22 12:48:46 -0700</bug_when>
    <thetext>Created attachment 429424
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762839</commentid>
    <comment_count>7</comment_count>
      <attachid>429424</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-22 14:40:15 -0700</bug_when>
    <thetext>Comment on attachment 429424
Patch

Clearing flags on attachment: 429424

Committed r277922 (238055@main): &lt;https://commits.webkit.org/238055@main&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762840</commentid>
    <comment_count>8</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-22 14:40:18 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762841</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-05-22 14:41:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/78355807&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429406</attachid>
            <date>2021-05-22 00:07:38 -0700</date>
            <delta_ts>2021-05-22 01:09:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226138-20210522000737.patch</filename>
            <type>text/plain</type>
            <size>46274</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3OTEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGEyYzczMjViYjFkMWRhNTJlODUzZDk5
Yzk1YjhkOGJiYzU5MjdlMjYuLjQwNjIxMjJjNDg5OTdiYjkzZTBiMjAzMmI0YjI5NWUzMGYxODJj
NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjEtMDUtMjIgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBBZG9wdCBDaGVja2VkTG9jayBpbiBtb3JlIHBsYWNlcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2MTM4CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRvcHQgQ2hl
Y2tlZExvY2sgaW4gbW9yZSBwbGFjZXMgdG8gYmVuZWZpdCBmcm9tIENsYW5nIFRocmVhZCBTYWZl
dHkgQW5hbHlzaXMuCisKKyAgICAgICAgKiB3dGYvQXNzZXJ0aW9ucy5jcHA6CisgICAgICAgICog
d3RmL1RpbWluZ1Njb3BlLmNwcDoKKyAgICAgICAgKiB3dGYvdGhyZWFkcy9CaW5hcnlTZW1hcGhv
cmUuY3BwOgorICAgICAgICAoV1RGOjpCaW5hcnlTZW1hcGhvcmU6OndhaXRVbnRpbCk6CisgICAg
ICAgICogd3RmL3RocmVhZHMvQmluYXJ5U2VtYXBob3JlLmg6CisKIDIwMjEtMDUtMjEgIENocmlz
IER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXBsYWNlIExvY2tIb2xkZXIg
d2l0aCBMb2NrZXIgaW4gbG9jYWwgdmFyaWFibGVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTgwZmRiNTQ4OGE2
OTJmZmU2OGFjNjhiNTFiZmJhOWUwY2ExNjNhOS4uZmZiMDEzNGUzNzZlZWI2NTViMTg5NWJiZmRi
MDc3MWJiNzMyMmM5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcwIEBACisyMDIxLTA1LTIyICBD
aHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQWRvcHQgQ2hlY2tlZExv
Y2sgaW4gbW9yZSBwbGFjZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIyNjEzOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEFkb3B0IENoZWNrZWRMb2NrIGluIG1vcmUgcGxhY2VzIHRvIGJlbmVmaXQgZnJv
bSBDbGFuZyBUaHJlYWQgU2FmZXR5IEFuYWx5c2lzLgorCisgICAgICAgICogTW9kdWxlcy93ZWJk
YXRhYmFzZS9EYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6cGVyZm9y
bUNsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlOjpzY2hlZHVsZVRyYW5zYWN0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlOjppblByb2dyZXNzVHJhbnNhY3Rpb25Db21w
bGV0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6Omhhc1BlbmRpbmdUcmFuc2FjdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6cnVuVHJhbnNhY3Rpb24pOgorICAgICAg
ICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRh
dGFiYXNlOjpXVEZfR1VBUkRFRF9CWV9MT0NLKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFi
YXNlL0RhdGFiYXNlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZU1hbmFn
ZXI6OmFkZFByb3Bvc2VkRGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VNYW5h
Z2VyOjpyZW1vdmVQcm9wb3NlZERhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNl
TWFuYWdlcjo6ZnVsbFBhdGhGb3JEYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFz
ZU1hbmFnZXI6OmRldGFpbHNGb3JOYW1lQW5kT3JpZ2luKToKKyAgICAgICAgKiBNb2R1bGVzL3dl
YmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJh
c2UvRGF0YWJhc2VUaHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUaHJlYWQ6
OmRhdGFiYXNlVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVGhyZWFkOjpyZWNv
cmREYXRhYmFzZU9wZW4pOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUaHJlYWQ6OnJlY29y
ZERhdGFiYXNlQ2xvc2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVGhyZWFkOjpoYXNQ
ZW5kaW5nRGF0YWJhc2VBY3Rpdml0eSBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRh
YmFzZS9EYXRhYmFzZVRocmVhZC5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvU1FM
Q2FsbGJhY2tXcmFwcGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpTUUxDYWxsYmFja1dyYXBwZXI6
OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTENhbGxiYWNrV3JhcHBlcjo6dW53cmFwKToK
KyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uOjplbnF1ZXVlU3RhdGVtZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uOjpjaGVja0FuZEhhbmRsZUNsb3NlZERhdGFiYXNlKToK
KyAgICAgICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uOjpnZXROZXh0U3RhdGVtZW50KToKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uLmg6CisgICAgICAgICog
TW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbkJhY2tlbmQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1FMVHJhbnNhY3Rpb25CYWNrZW5kOjpkb0NsZWFudXApOgorICAgICAgICAqIGFj
Y2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmg6CisgICAgICAgIChXZWJD
b3JlOjpBWElzb2xhdGVkVHJlZTo6V1RGX0dVQVJERURfQllfTE9DSyk6CisgICAgICAgICogcGxh
dGZvcm0vQWJvcnRhYmxlVGFza1F1ZXVlLmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vY29j
b2EvQXVkaW9EZXN0aW5hdGlvbkNvY29hLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVz
dGluYXRpb25Db2NvYTo6cmVuZGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9jb2NvYS9B
dWRpb0Rlc3RpbmF0aW9uQ29jb2EuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9nc3RyZWFt
ZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlv
L2dzdHJlYW1lci9BdWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkF1ZGlvU291cmNlUHJvdmlkZXJHU3RyZWFtZXI6OnByb3ZpZGVJbnB1dCk6CisgICAg
ICAgIChXZWJDb3JlOjpBdWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVyOjpoYW5kbGVTYW1wbGUp
OgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Tb3VyY2VQcm92aWRlckdTdHJlYW1lcjo6Y2xlYXJB
ZGFwdGVycyk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvU291cmNl
UHJvdmlkZXJHU3RyZWFtZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIv
V2ViS2l0V2ViQXVkaW9Tb3VyY2VHU3RyZWFtZXIuY3BwOgorICAgICAgICAod2ViS2l0V2ViQXVk
aW9TcmNSZW5kZXJJdGVyYXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpBVkZXcmFwcGVyOjphZGRUb01hcCk6CisgICAgICAgIChXZWJDb3JlOjpBVkZX
cmFwcGVyOjpyZW1vdmVGcm9tTWFwIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFWRldyYXBw
ZXI6OmF2ZldyYXBwZXJGb3JDYWxsYmFja0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6QVZG
V3JhcHBlcjo6cGVyaW9kaWNUaW1lT2JzZXJ2ZXJDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3Jl
OjpBVkZXcmFwcGVyOjpwcm9jZXNzTm90aWZpY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkFW
RldyYXBwZXI6OmxvYWRQbGF5YWJsZUNvbXBsZXRpb25DYWxsYmFjayk6CisgICAgICAgIChXZWJD
b3JlOjpBVkZXcmFwcGVyOjpsb2FkTWV0YWRhdGFDb21wbGV0aW9uQ2FsbGJhY2spOgorICAgICAg
ICAoV2ViQ29yZTo6QVZGV3JhcHBlcjo6c2Vla0NvbXBsZXRlZENhbGxiYWNrKToKKyAgICAgICAg
KFdlYkNvcmU6OkFWRldyYXBwZXI6OnByb2Nlc3NDdWUpOgorICAgICAgICAoV2ViQ29yZTo6QVZG
V3JhcHBlcjo6bGVnaWJsZU91dHB1dENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkFWRldy
YXBwZXI6OnByb2Nlc3NTaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVzb3VyY2UpOgorICAgICAgICAo
V2ViQ29yZTo6QVZGV3JhcHBlcjo6cmVzb3VyY2VMb2FkZXJTaG91bGRXYWl0Rm9yTG9hZGluZ09m
UmVxdWVzdGVkUmVzb3VyY2UpOgorCiAyMDIxLTA1LTIxICBDaHJpcyBEdW1leiAgPGNkdW1lekBh
cHBsZS5jb20+CiAKICAgICAgICAgUmVwbGFjZSBMb2NrSG9sZGVyIHdpdGggTG9ja2VyIGluIGxv
Y2FsIHZhcmlhYmxlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBhOGI4NGIxZDQ0MDllZGU3OWVjYThkNmJkMGQ4ODYx
YmZjY2RjOGM0Li40MjJkYmQ2YzhlMTcyM2NlZmY5Mjc0NDhiYmEyZDM4NTM1NTkyZDcxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIxLTA1LTIyICBDaHJpcyBEdW1leiAgPGNkdW1lekBh
cHBsZS5jb20+CisKKyAgICAgICAgQWRvcHQgQ2hlY2tlZExvY2sgaW4gbW9yZSBwbGFjZXMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjEzOAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkb3B0IENoZWNr
ZWRMb2NrIGluIG1vcmUgcGxhY2VzIHRvIGJlbmVmaXQgZnJvbSBDbGFuZyBUaHJlYWQgU2FmZXR5
IEFuYWx5c2lzLgorCisgICAgICAgICogUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3BwOgorICAg
ICAgICAoSVBDOjpDb25uZWN0aW9uOjpTeW5jTWVzc2FnZVN0YXRlOjplbnF1ZXVlTWF0Y2hpbmdN
ZXNzYWdlcyk6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OlN5bmNNZXNzYWdlU3RhdGU6OnBy
b2Nlc3NJbmNvbWluZ01lc3NhZ2UpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpTeW5jTWVz
c2FnZVN0YXRlOjpkaXNwYXRjaE1lc3NhZ2VzKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6
U3luY01lc3NhZ2VTdGF0ZTo6ZGlzcGF0Y2hNZXNzYWdlc0FuZFJlc2V0RGlkU2NoZWR1bGVEaXNw
YXRjaE1lc3NhZ2VzRm9yQ29ubmVjdGlvbik6CisKIDIwMjEtMDUtMjEgIENocmlzIER1bWV6ICA8
Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXBsYWNlIExvY2tIb2xkZXIgd2l0aCBMb2Nr
ZXIgaW4gbG9jYWwgdmFyaWFibGVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Bc3NlcnRp
b25zLmNwcCBiL1NvdXJjZS9XVEYvd3RmL0Fzc2VydGlvbnMuY3BwCmluZGV4IDU4OTVmMzA1ZmRk
ODFmYWM0ZDIwMTA0NGFhM2RlNWQ3YzdjMzBlNGMuLjBkZjMwODMyYmJiNGU1MWFlZGNiNThkNjdj
NGZhNzBhMjY1ZWVmMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0Fzc2VydGlvbnMuY3Bw
CisrKyBiL1NvdXJjZS9XVEYvd3RmL0Fzc2VydGlvbnMuY3BwCkBAIC0zMSw4ICszMSw4IEBACiAj
aW5jbHVkZSA8bXV0ZXg+CiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDxzdHJpbmcuaD4K
KyNpbmNsdWRlIDx3dGYvQ2hlY2tlZExvY2suaD4KICNpbmNsdWRlIDx3dGYvQ29tcGlsZXIuaD4K
LSNpbmNsdWRlIDx3dGYvTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9Mb2NrZXIuaD4KICNpbmNsdWRl
IDx3dGYvTG9nZ2luZ0FjY3VtdWxhdG9yLmg+CiAjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+
CkBAIC0zNjgsMjUgKzM2OCwyNSBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIGdldEFuZFJlc2V0QWNj
dW11bGF0ZWRMb2dzKCk7CiAKIHByaXZhdGU6Ci0gICAgTG9jayBhY2N1bXVsYXRvckxvY2s7Ci0g
ICAgU3RyaW5nQnVpbGRlciBsb2dnaW5nQWNjdW11bGF0b3I7CisgICAgQ2hlY2tlZExvY2sgYWNj
dW11bGF0b3JMb2NrOworICAgIFN0cmluZ0J1aWxkZXIgbG9nZ2luZ0FjY3VtdWxhdG9yIFdURl9H
VUFSREVEX0JZX0xPQ0soYWNjdW11bGF0b3JMb2NrKTsKIH07CiAKIHZvaWQgV1RGTG9nZ2luZ0Fj
Y3VtdWxhdG9yOjphY2N1bXVsYXRlKGNvbnN0IFN0cmluZyYgbG9nKQogewotICAgIExvY2tlcjxM
b2NrPiBsb2NrZXIoYWNjdW11bGF0b3JMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgYWNjdW11
bGF0b3JMb2NrIH07CiAgICAgbG9nZ2luZ0FjY3VtdWxhdG9yLmFwcGVuZChsb2cpOwogfQogCiB2
b2lkIFdURkxvZ2dpbmdBY2N1bXVsYXRvcjo6cmVzZXRBY2N1bXVsYXRlZExvZ3MoKQogewotICAg
IExvY2tlcjxMb2NrPiBsb2NrZXIoYWNjdW11bGF0b3JMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2Vy
IHsgYWNjdW11bGF0b3JMb2NrIH07CiAgICAgbG9nZ2luZ0FjY3VtdWxhdG9yLmNsZWFyKCk7CiB9
CiAKIFN0cmluZyBXVEZMb2dnaW5nQWNjdW11bGF0b3I6OmdldEFuZFJlc2V0QWNjdW11bGF0ZWRM
b2dzKCkKIHsKLSAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKGFjY3VtdWxhdG9yTG9jayk7CisgICAg
TG9ja2VyIGxvY2tlciB7IGFjY3VtdWxhdG9yTG9jayB9OwogICAgIFN0cmluZyByZXN1bHQgPSBs
b2dnaW5nQWNjdW11bGF0b3IudG9TdHJpbmcoKTsKICAgICBsb2dnaW5nQWNjdW11bGF0b3IuY2xl
YXIoKTsKICAgICByZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVGlt
aW5nU2NvcGUuY3BwIGIvU291cmNlL1dURi93dGYvVGltaW5nU2NvcGUuY3BwCmluZGV4IGUyYjAy
YzYwMzc0NDRjYTYwZjc4ODIzYTIxODIwNjk2ODY5ZjdkNTguLjYzMTE2NjQwYWRlZjRjZDkyMGUy
MTk3ZDc1ZmU1NDE2NGE4ZWM0NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1RpbWluZ1Nj
b3BlLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9UaW1pbmdTY29wZS5jcHAKQEAgLTI2LDggKzI2
LDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlIDx3dGYvVGltaW5nU2NvcGUuaD4K
IAorI2luY2x1ZGUgPHd0Zi9DaGVja2VkTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+
Ci0jaW5jbHVkZSA8d3RmL0xvY2suaD4KIAogbmFtZXNwYWNlIFdURiB7CiAKQEAgLTU5LDggKzU5
LDggQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICBIYXNoTWFwPGNvbnN0IGNoYXIq
LCBDYWxsRGF0YT4gdG90YWxzOwotICAgIExvY2sgbG9jazsKKyAgICBIYXNoTWFwPGNvbnN0IGNo
YXIqLCBDYWxsRGF0YT4gdG90YWxzIFdURl9HVUFSREVEX0JZX0xPQ0sobG9jayk7CisgICAgQ2hl
Y2tlZExvY2sgbG9jazsKIH07CiAKIFN0YXRlJiBzdGF0ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi90aHJlYWRzL0JpbmFyeVNlbWFwaG9yZS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90aHJl
YWRzL0JpbmFyeVNlbWFwaG9yZS5jcHAKaW5kZXggNzhiZjM0Yzk2NjY5OTYwZjEzYzQyYWE0N2Uw
NzRlOGMwNzk3YzI5ZS4uYWQ0MzliZjgzZjU3OWMwODAxYTkxZDY1MWI0ZTA5ZDE1YjIwMGRiZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGhyZWFkcy9CaW5hcnlTZW1hcGhvcmUuY3BwCisr
KyBiL1NvdXJjZS9XVEYvd3RmL3RocmVhZHMvQmluYXJ5U2VtYXBob3JlLmNwcApAQCAtMzgsNyAr
MzgsMTAgQEAgdm9pZCBCaW5hcnlTZW1hcGhvcmU6OnNpZ25hbCgpCiBib29sIEJpbmFyeVNlbWFw
aG9yZTo6d2FpdFVudGlsKGNvbnN0IFRpbWVXaXRoRHluYW1pY0Nsb2NrVHlwZSYgYWJzb2x1dGVU
aW1lKQogewogICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKLSAgICBib29sIHNhdGlzZmll
ZCA9IG1fY29uZGl0aW9uLndhaXRVbnRpbChtX2xvY2ssIGFic29sdXRlVGltZSwgWyZdIHsgcmV0
dXJuIG1faXNTZXQ7IH0pOworICAgIGJvb2wgc2F0aXNmaWVkID0gbV9jb25kaXRpb24ud2FpdFVu
dGlsKG1fbG9jaywgYWJzb2x1dGVUaW1lLCBbJl0geworICAgICAgICBhc3NlcnRJc0hlbGQobV9s
b2NrKTsKKyAgICAgICAgcmV0dXJuIG1faXNTZXQ7CisgICAgfSk7CiAgICAgaWYgKHNhdGlzZmll
ZCkKICAgICAgICAgbV9pc1NldCA9IGZhbHNlOwogICAgIHJldHVybiBzYXRpc2ZpZWQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90aHJlYWRzL0JpbmFyeVNlbWFwaG9yZS5oIGIvU291cmNl
L1dURi93dGYvdGhyZWFkcy9CaW5hcnlTZW1hcGhvcmUuaAppbmRleCA5N2NjYmRlMDgyMDUyYzc3
MGFhM2RiNGU4YmVlNmUxYzllMGUwYmFiLi4zMjg2NTE4ZTcyMzM1MzMxMGQ2ODg2YTlhOGZhYWU3
MmMxMTFkNjllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90aHJlYWRzL0JpbmFyeVNlbWFw
aG9yZS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RocmVhZHMvQmluYXJ5U2VtYXBob3JlLmgKQEAg
LTI1LDggKzI1LDggQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlIDx3dGYvQ29uZGl0aW9u
Lmg+Ci0jaW5jbHVkZSA8d3RmL0xvY2suaD4KKyNpbmNsdWRlIDx3dGYvQ2hlY2tlZENvbmRpdGlv
bi5oPgorI2luY2x1ZGUgPHd0Zi9DaGVja2VkTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5
YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9UaW1lV2l0aER5bmFtaWNDbG9ja1R5cGUuaD4KIApAQCAt
NTIsOSArNTIsOSBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIGJvb2wgbV9pc1Nl
dCB7IGZhbHNlIH07Ci0gICAgTG9jayBtX2xvY2s7Ci0gICAgQ29uZGl0aW9uIG1fY29uZGl0aW9u
OworICAgIGJvb2wgbV9pc1NldCBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fbG9jaykgeyBmYWxzZSB9
OworICAgIENoZWNrZWRMb2NrIG1fbG9jazsKKyAgICBDaGVja2VkQ29uZGl0aW9uIG1fY29uZGl0
aW9uOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwCmluZGV4IDZiYjgwODg5NmQ3YWNmMTRjOWRhYjQw
YmI1MTUzYTY2ZDcwMDQyMDEuLjcwMDc0YzdhN2FiNDIzOTk5ZjNkZjkwNDFmNGViY2EwOTRjNzFk
NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJh
c2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2Uu
Y3BwCkBAIC0yODIsNyArMjgyLDcgQEAgdm9pZCBEYXRhYmFzZTo6cGVyZm9ybUNsb3NlKCkKICAg
ICBBU1NFUlQoZGF0YWJhc2VUaHJlYWQoKS5nZXRUaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50
KCkpOwogCiAgICAgewotICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV90cmFuc2FjdGlvbkluUHJv
Z3Jlc3NNdXRleCB9OworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV90cmFuc2FjdGlvbkluUHJv
Z3Jlc3NMb2NrIH07CiAKICAgICAgICAgLy8gQ2xlYW4gdXAgdHJhbnNhY3Rpb25zIHRoYXQgaGF2
ZSBub3QgYmVlbiBzY2hlZHVsZWQgeWV0OgogICAgICAgICAvLyBUcmFuc2FjdGlvbiBwaGFzZSAx
IGNsZWFudXAuIFNlZSBjb21tZW50IG9uICJXaGF0IGhhcHBlbnMgaWYgYQpAQCAtNTE4LDcgKzUx
OCw3IEBAIGJvb2wgRGF0YWJhc2U6OmdldEFjdHVhbFZlcnNpb25Gb3JUcmFuc2FjdGlvbihTdHJp
bmcgJmFjdHVhbFZlcnNpb24pCiAKIHZvaWQgRGF0YWJhc2U6OnNjaGVkdWxlVHJhbnNhY3Rpb24o
KQogewotICAgIEFTU0VSVCghbV90cmFuc2FjdGlvbkluUHJvZ3Jlc3NNdXRleC50cnlMb2NrKCkp
OyAvLyBMb2NrZWQgYnkgY2FsbGVyLgorICAgIEFTU0VSVChtX3RyYW5zYWN0aW9uSW5Qcm9ncmVz
c0xvY2suaXNIZWxkKCkpOwogCiAgICAgaWYgKCFtX2lzVHJhbnNhY3Rpb25RdWV1ZUVuYWJsZWQg
fHwgbV90cmFuc2FjdGlvblF1ZXVlLmlzRW1wdHkoKSkgewogICAgICAgICBtX3RyYW5zYWN0aW9u
SW5Qcm9ncmVzcyA9IGZhbHNlOwpAQCAtNTQ0LDE0ICs1NDQsMTQgQEAgdm9pZCBEYXRhYmFzZTo6
c2NoZWR1bGVUcmFuc2FjdGlvblN0ZXAoU1FMVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uKQogCiB2
b2lkIERhdGFiYXNlOjppblByb2dyZXNzVHJhbnNhY3Rpb25Db21wbGV0ZWQoKQogewotICAgIExv
Y2tlciBsb2NrZXIgeyBtX3RyYW5zYWN0aW9uSW5Qcm9ncmVzc011dGV4IH07CisgICAgTG9ja2Vy
IGxvY2tlciB7IG1fdHJhbnNhY3Rpb25JblByb2dyZXNzTG9jayB9OwogICAgIG1fdHJhbnNhY3Rp
b25JblByb2dyZXNzID0gZmFsc2U7CiAgICAgc2NoZWR1bGVUcmFuc2FjdGlvbigpOwogfQogCiBi
b29sIERhdGFiYXNlOjpoYXNQZW5kaW5nVHJhbnNhY3Rpb24oKQogewotICAgIExvY2tlciBsb2Nr
ZXIgeyBtX3RyYW5zYWN0aW9uSW5Qcm9ncmVzc011dGV4IH07CisgICAgTG9ja2VyIGxvY2tlciB7
IG1fdHJhbnNhY3Rpb25JblByb2dyZXNzTG9jayB9OwogICAgIHJldHVybiBtX3RyYW5zYWN0aW9u
SW5Qcm9ncmVzcyB8fCAhbV90cmFuc2FjdGlvblF1ZXVlLmlzRW1wdHkoKTsKIH0KIApAQCAtNjgx
LDcgKzY4MSw3IEBAIHZvaWQgRGF0YWJhc2U6OnJlc2V0QXV0aG9yaXplcigpCiB2b2lkIERhdGFi
YXNlOjpydW5UcmFuc2FjdGlvbihSZWZQdHI8U1FMVHJhbnNhY3Rpb25DYWxsYmFjaz4mJiBjYWxs
YmFjaywgUmVmUHRyPFNRTFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjaz4mJiBlcnJvckNhbGxiYWNr
LCBSZWZQdHI8Vm9pZENhbGxiYWNrPiYmIHN1Y2Nlc3NDYWxsYmFjaywgUmVmUHRyPFNRTFRyYW5z
YWN0aW9uV3JhcHBlcj4mJiB3cmFwcGVyLCBib29sIHJlYWRPbmx5KQogewogICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7Ci0gICAgTG9ja2VyIGxvY2tlciB7IG1fdHJhbnNhY3Rpb25JblByb2dy
ZXNzTXV0ZXggfTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV90cmFuc2FjdGlvbkluUHJvZ3Jlc3NM
b2NrIH07CiAgICAgaWYgKCFtX2lzVHJhbnNhY3Rpb25RdWV1ZUVuYWJsZWQpIHsKICAgICAgICAg
aWYgKGVycm9yQ2FsbGJhY2spIHsKICAgICAgICAgICAgIG1fZG9jdW1lbnQtPmV2ZW50TG9vcCgp
LnF1ZXVlVGFzayhUYXNrU291cmNlOjpOZXR3b3JraW5nLCBbZXJyb3JDYWxsYmFjayA9IG1ha2VS
ZWYoKmVycm9yQ2FsbGJhY2spXSgpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0
YWJhc2UvRGF0YWJhc2UuaAppbmRleCAwZDJhOTVhYmM1YzcxZGY0NDVlNjFlMDI3YzE4NDk0OTAy
Zjg3Mzk4Li5hZDIxMzM4YTc4N2Y5M2NkODQ3N2RkMmZhMGVjNDQzOGQ5MzI1ZDUzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5oCkBAIC0zMCw4ICsz
MCw4IEBACiAKICNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgogI2luY2x1ZGUgIlNRTGl0ZURhdGFi
YXNlLmgiCisjaW5jbHVkZSA8d3RmL0NoZWNrZWRMb2NrLmg+CiAjaW5jbHVkZSA8d3RmL0RlcXVl
Lmg+Ci0jaW5jbHVkZSA8d3RmL0xvY2suaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0x
MzksNyArMTM5LDcgQEAgcHJpdmF0ZToKICAgICBib29sIGdldEFjdHVhbFZlcnNpb25Gb3JUcmFu
c2FjdGlvbihTdHJpbmcmIHZlcnNpb24pOwogICAgIHZvaWQgc2V0RXN0aW1hdGVkU2l6ZSh1bnNp
Z25lZCBsb25nIGxvbmcpOwogCi0gICAgdm9pZCBzY2hlZHVsZVRyYW5zYWN0aW9uKCk7CisgICAg
dm9pZCBzY2hlZHVsZVRyYW5zYWN0aW9uKCkgV1RGX1JFUVVJUkVTX0xPQ0sobV90cmFuc2FjdGlv
bkluUHJvZ3Jlc3NMb2NrKTsKIAogICAgIHZvaWQgcnVuVHJhbnNhY3Rpb24oUmVmUHRyPFNRTFRy
YW5zYWN0aW9uQ2FsbGJhY2s+JiYsIFJlZlB0cjxTUUxUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2s+
JiYsIFJlZlB0cjxWb2lkQ2FsbGJhY2s+JiYgc3VjY2Vzc0NhbGxiYWNrLCBSZWZQdHI8U1FMVHJh
bnNhY3Rpb25XcmFwcGVyPiYmLCBib29sIHJlYWRPbmx5KTsKIApAQCAtMTY5LDEwICsxNjksMTAg
QEAgcHJpdmF0ZToKIAogICAgIFJlZjxEYXRhYmFzZUF1dGhvcml6ZXI+IG1fZGF0YWJhc2VBdXRo
b3JpemVyOwogCi0gICAgRGVxdWU8UmVmPFNRTFRyYW5zYWN0aW9uPj4gbV90cmFuc2FjdGlvblF1
ZXVlOwotICAgIExvY2sgbV90cmFuc2FjdGlvbkluUHJvZ3Jlc3NNdXRleDsKLSAgICBib29sIG1f
dHJhbnNhY3Rpb25JblByb2dyZXNzIHsgZmFsc2UgfTsKLSAgICBib29sIG1faXNUcmFuc2FjdGlv
blF1ZXVlRW5hYmxlZCB7IHRydWUgfTsKKyAgICBEZXF1ZTxSZWY8U1FMVHJhbnNhY3Rpb24+PiBt
X3RyYW5zYWN0aW9uUXVldWUgV1RGX0dVQVJERURfQllfTE9DSyhtX3RyYW5zYWN0aW9uSW5Qcm9n
cmVzc0xvY2spOworICAgIENoZWNrZWRMb2NrIG1fdHJhbnNhY3Rpb25JblByb2dyZXNzTG9jazsK
KyAgICBib29sIG1fdHJhbnNhY3Rpb25JblByb2dyZXNzIFdURl9HVUFSREVEX0JZX0xPQ0sobV90
cmFuc2FjdGlvbkluUHJvZ3Jlc3NMb2NrKSB7IGZhbHNlIH07CisgICAgYm9vbCBtX2lzVHJhbnNh
Y3Rpb25RdWV1ZUVuYWJsZWQgV1RGX0dVQVJERURfQllfTE9DSyhtX3RyYW5zYWN0aW9uSW5Qcm9n
cmVzc0xvY2spIHsgdHJ1ZSB9OwogCiAgICAgZnJpZW5kIGNsYXNzIENoYW5nZVZlcnNpb25XcmFw
cGVyOwogICAgIGZyaWVuZCBjbGFzcyBEYXRhYmFzZU1hbmFnZXI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5jcHAKaW5kZXgg
OTUwYjQ1ZmM3MWFhYjE2ZjE0ZTE1ZTJhMGFmZjExZjEyODUyMmE4NS4uMmM5YWE1MmExMDg5NTNl
NDg3NmQ0NWQwYzRjZDk5Mjk1ZTIyYTJiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmNwcApAQCAtMTgxLDEzICsxODEs
MTMgQEAgRXhjZXB0aW9uT3I8UmVmPERhdGFiYXNlPj4gRGF0YWJhc2VNYW5hZ2VyOjp0cnlUb09w
ZW5EYXRhYmFzZUJhY2tlbmQoRG9jdW1lbnQmIGQKIAogdm9pZCBEYXRhYmFzZU1hbmFnZXI6OmFk
ZFByb3Bvc2VkRGF0YWJhc2UoUHJvcG9zZWREYXRhYmFzZSYgZGF0YWJhc2UpCiB7Ci0gICAgTG9j
a2VyIGxvY2tlciB7IG1fcHJvcG9zZWREYXRhYmFzZXNNdXRleCB9OworICAgIExvY2tlciBsb2Nr
ZXIgeyBtX3Byb3Bvc2VkRGF0YWJhc2VzTG9jayB9OwogICAgIG1fcHJvcG9zZWREYXRhYmFzZXMu
YWRkKCZkYXRhYmFzZSk7CiB9CiAKIHZvaWQgRGF0YWJhc2VNYW5hZ2VyOjpyZW1vdmVQcm9wb3Nl
ZERhdGFiYXNlKFByb3Bvc2VkRGF0YWJhc2UmIGRhdGFiYXNlKQogewotICAgIExvY2tlciBsb2Nr
ZXIgeyBtX3Byb3Bvc2VkRGF0YWJhc2VzTXV0ZXggfTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9w
cm9wb3NlZERhdGFiYXNlc0xvY2sgfTsKICAgICBtX3Byb3Bvc2VkRGF0YWJhc2VzLnJlbW92ZSgm
ZGF0YWJhc2UpOwogfQogCkBAIC0yNDEsNyArMjQxLDcgQEAgdm9pZCBEYXRhYmFzZU1hbmFnZXI6
OnN0b3BEYXRhYmFzZXMoRG9jdW1lbnQmIGRvY3VtZW50LCBEYXRhYmFzZVRhc2tTeW5jaHJvbml6
ZXIKIFN0cmluZyBEYXRhYmFzZU1hbmFnZXI6OmZ1bGxQYXRoRm9yRGF0YWJhc2UoU2VjdXJpdHlP
cmlnaW4mIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBuYW1lLCBib29sIGNyZWF0ZUlmRG9lc05vdEV4
aXN0KQogewogICAgIHsKLSAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fcHJvcG9zZWREYXRhYmFz
ZXNNdXRleCB9OworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9wcm9wb3NlZERhdGFiYXNlc0xv
Y2sgfTsKICAgICAgICAgZm9yIChhdXRvKiBwcm9wb3NlZERhdGFiYXNlIDogbV9wcm9wb3NlZERh
dGFiYXNlcykgewogICAgICAgICAgICAgaWYgKHByb3Bvc2VkRGF0YWJhc2UtPmRldGFpbHMoKS5u
YW1lKCkgPT0gbmFtZSAmJiBwcm9wb3NlZERhdGFiYXNlLT5vcmlnaW4oKS5lcXVhbCgmb3JpZ2lu
KSkKICAgICAgICAgICAgICAgICByZXR1cm4gU3RyaW5nKCk7CkBAIC0yNTMsNyArMjUzLDcgQEAg
U3RyaW5nIERhdGFiYXNlTWFuYWdlcjo6ZnVsbFBhdGhGb3JEYXRhYmFzZShTZWN1cml0eU9yaWdp
biYgb3JpZ2luLCBjb25zdCBTdHJpbmcKIERhdGFiYXNlRGV0YWlscyBEYXRhYmFzZU1hbmFnZXI6
OmRldGFpbHNGb3JOYW1lQW5kT3JpZ2luKGNvbnN0IFN0cmluZyYgbmFtZSwgU2VjdXJpdHlPcmln
aW4mIG9yaWdpbikKIHsKICAgICB7Ci0gICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3Byb3Bvc2Vk
RGF0YWJhc2VzTXV0ZXggfTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fcHJvcG9zZWREYXRh
YmFzZXNMb2NrIH07CiAgICAgICAgIGZvciAoYXV0byogcHJvcG9zZWREYXRhYmFzZSA6IG1fcHJv
cG9zZWREYXRhYmFzZXMpIHsKICAgICAgICAgICAgIGlmIChwcm9wb3NlZERhdGFiYXNlLT5kZXRh
aWxzKCkubmFtZSgpID09IG5hbWUgJiYgcHJvcG9zZWREYXRhYmFzZS0+b3JpZ2luKCkuZXF1YWwo
Jm9yaWdpbikpIHsKICAgICAgICAgICAgICAgICBBU1NFUlQoJnByb3Bvc2VkRGF0YWJhc2UtPmRl
dGFpbHMoKS50aHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkgfHwgaXNNYWluVGhyZWFkKCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFz
ZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VN
YW5hZ2VyLmgKaW5kZXggYWE0M2ViZWY4OWMyODg0YjExNzhjMmY5ZmZlOWYxYmYwMWZhODgxYi4u
OTIxM2E0ZDRiOTIzNTllMTk1NWY2MTBiY2ZmOGY3Njg3OTg4OTQ4YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5oCkBAIC0y
OCw4ICsyOCw4IEBACiAjaW5jbHVkZSAiRGF0YWJhc2VEZXRhaWxzLmgiCiAjaW5jbHVkZSAiRXhj
ZXB0aW9uT3IuaCIKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9D
aGVja2VkTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL0xv
Y2suaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC04Nyw4ICs4Nyw4IEBAIHByaXZhdGU6
CiAgICAgRGF0YWJhc2VNYW5hZ2VyQ2xpZW50KiBtX2NsaWVudCB7IG51bGxwdHIgfTsKICAgICBi
b29sIG1fZGF0YWJhc2VJc0F2YWlsYWJsZSB7IHRydWUgfTsKIAotICAgIExvY2sgbV9wcm9wb3Nl
ZERhdGFiYXNlc011dGV4OwotICAgIEhhc2hTZXQ8UHJvcG9zZWREYXRhYmFzZSo+IG1fcHJvcG9z
ZWREYXRhYmFzZXM7CisgICAgQ2hlY2tlZExvY2sgbV9wcm9wb3NlZERhdGFiYXNlc0xvY2s7Cisg
ICAgSGFzaFNldDxQcm9wb3NlZERhdGFiYXNlKj4gbV9wcm9wb3NlZERhdGFiYXNlcyBXVEZfR1VB
UkRFRF9CWV9MT0NLKG1fcHJvcG9zZWREYXRhYmFzZXNMb2NrKTsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJh
c2UvRGF0YWJhc2VUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFz
ZS9EYXRhYmFzZVRocmVhZC5jcHAKaW5kZXggZTZkN2Q2NmEwOGQ4YWM3NTgzODY3YzA3MGIxM2M0
M2IxNjY5OWZmOS4uZTA3MDMzYWM1OTViNDIwZmJkYWFjOGJmYjNhMGE5MDFhZWJjNDY3MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRocmVh
ZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRo
cmVhZC5jcHAKQEAgLTExMCw3ICsxMTAsNyBAQCB2b2lkIERhdGFiYXNlVGhyZWFkOjpkYXRhYmFz
ZVRocmVhZCgpCiAgICAgLy8gaW5jb25zaXN0ZW50IG9yIGxvY2tlZCBzdGF0ZS4KICAgICBEYXRh
YmFzZVNldCBvcGVuU2V0Q29weTsKICAgICB7Ci0gICAgICAgIExvY2tlciBsb2NrZXIgeyBtX29w
ZW5EYXRhYmFzZVNldE11dGV4IH07CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX29wZW5EYXRh
YmFzZVNldExvY2sgfTsKICAgICAgICAgaWYgKG1fb3BlbkRhdGFiYXNlU2V0LnNpemUoKSA+IDAp
IHsKICAgICAgICAgICAgIC8vIEFzIHRoZSBjYWxsIHRvIGNsb3NlIHdpbGwgbW9kaWZ5IHRoZSBv
cmlnaW5hbCBzZXQsIHdlIG11c3QgdGFrZSBhIGNvcHkgdG8gaXRlcmF0ZSBvdmVyLgogICAgICAg
ICAgICAgb3BlblNldENvcHkuc3dhcChtX29wZW5EYXRhYmFzZVNldCk7CkBAIC0xMzQsNyArMTM0
LDcgQEAgdm9pZCBEYXRhYmFzZVRocmVhZDo6ZGF0YWJhc2VUaHJlYWQoKQogCiB2b2lkIERhdGFi
YXNlVGhyZWFkOjpyZWNvcmREYXRhYmFzZU9wZW4oRGF0YWJhc2UmIGRhdGFiYXNlKQogewotICAg
IExvY2tlciBsb2NrZXIgeyBtX29wZW5EYXRhYmFzZVNldE11dGV4IH07CisgICAgTG9ja2VyIGxv
Y2tlciB7IG1fb3BlbkRhdGFiYXNlU2V0TG9jayB9OwogCiAgICAgQVNTRVJUKG1fdGhyZWFkID09
ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAgICAgQVNTRVJUKCFtX29wZW5EYXRhYmFzZVNldC5jb250
YWlucygmZGF0YWJhc2UpKTsKQEAgLTE0Myw3ICsxNDMsNyBAQCB2b2lkIERhdGFiYXNlVGhyZWFk
OjpyZWNvcmREYXRhYmFzZU9wZW4oRGF0YWJhc2UmIGRhdGFiYXNlKQogCiB2b2lkIERhdGFiYXNl
VGhyZWFkOjpyZWNvcmREYXRhYmFzZUNsb3NlZChEYXRhYmFzZSYgZGF0YWJhc2UpCiB7Ci0gICAg
TG9ja2VyIGxvY2tlciB7IG1fb3BlbkRhdGFiYXNlU2V0TXV0ZXggfTsKKyAgICBMb2NrZXIgbG9j
a2VyIHsgbV9vcGVuRGF0YWJhc2VTZXRMb2NrIH07CiAKICAgICBBU1NFUlQobV90aHJlYWQgPT0g
JlRocmVhZDo6Y3VycmVudCgpKTsKICAgICBBU1NFUlQobV9xdWV1ZS5raWxsZWQoKSB8fCBtX29w
ZW5EYXRhYmFzZVNldC5jb250YWlucygmZGF0YWJhc2UpKTsKQEAgLTE3Miw3ICsxNzIsNyBAQCB2
b2lkIERhdGFiYXNlVGhyZWFkOjp1bnNjaGVkdWxlRGF0YWJhc2VUYXNrcyhEYXRhYmFzZSYgZGF0
YWJhc2UpCiAKIGJvb2wgRGF0YWJhc2VUaHJlYWQ6Omhhc1BlbmRpbmdEYXRhYmFzZUFjdGl2aXR5
KCkgY29uc3QKIHsKLSAgICBMb2NrZXIgbG9ja2VyIHsgbV9vcGVuRGF0YWJhc2VTZXRNdXRleCB9
OworICAgIExvY2tlciBsb2NrZXIgeyBtX29wZW5EYXRhYmFzZVNldExvY2sgfTsKICAgICBmb3Ig
KGF1dG8mIGRhdGFiYXNlIDogbV9vcGVuRGF0YWJhc2VTZXQpIHsKICAgICAgICAgaWYgKGRhdGFi
YXNlLT5oYXNQZW5kaW5nQ3JlYXRpb25FdmVudCgpIHx8IGRhdGFiYXNlLT5oYXNQZW5kaW5nVHJh
bnNhY3Rpb24oKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRocmVhZC5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRocmVhZC5oCmluZGV4IGJkNmM5NzQx
ZWU5YWFiY2E0OWY5YzRkOGNhNmVjOTk5YzBmM2U3ZTQuLjVkYzQxMWNjNTYzM2M0NmRhMTYxYWUw
MmJhNDk5YTliMGI1YTc0MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
ZGF0YWJhc2UvRGF0YWJhc2VUaHJlYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmRhdGFiYXNlL0RhdGFiYXNlVGhyZWFkLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNwcmFnbWEgb25j
ZQogCiAjaW5jbHVkZSA8bWVtb3J5PgorI2luY2x1ZGUgPHd0Zi9DaGVja2VkTG9jay5oPgogI2lu
Y2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL01lc3NhZ2VRdWV1ZS5oPgogI2lu
Y2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTc1LDggKzc2LDggQEAgcHJpdmF0ZToKIAogICAgIC8v
IFRoaXMgc2V0IGtlZXBzIHRyYWNrIG9mIHRoZSBvcGVuIGRhdGFiYXNlcyB0aGF0IGhhdmUgYmVl
biB1c2VkIG9uIHRoaXMgdGhyZWFkLgogICAgIHVzaW5nIERhdGFiYXNlU2V0ID0gSGFzaFNldDxS
ZWZQdHI8RGF0YWJhc2U+PjsKLSAgICBtdXRhYmxlIExvY2sgbV9vcGVuRGF0YWJhc2VTZXRNdXRl
eDsKLSAgICBEYXRhYmFzZVNldCBtX29wZW5EYXRhYmFzZVNldDsKKyAgICBtdXRhYmxlIENoZWNr
ZWRMb2NrIG1fb3BlbkRhdGFiYXNlU2V0TG9jazsKKyAgICBEYXRhYmFzZVNldCBtX29wZW5EYXRh
YmFzZVNldCBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fb3BlbkRhdGFiYXNlU2V0TG9jayk7CiAKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8U1FMVHJhbnNhY3Rpb25Db29yZGluYXRvcj4gbV90cmFuc2FjdGlv
bkNvb3JkaW5hdG9yOwogICAgIERhdGFiYXNlVGFza1N5bmNocm9uaXplciogbV9jbGVhbnVwU3lu
YyB7IG51bGxwdHIgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0
YWJhc2UvU1FMQ2FsbGJhY2tXcmFwcGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRh
dGFiYXNlL1NRTENhbGxiYWNrV3JhcHBlci5oCmluZGV4IDI3MjE0NDEzNzUyNTkzZWQwOGEyNjYy
OTQwZmNhODdhOTI0MzZjNWIuLmMyZWQzNjZlM2MwOGZlOWUxOWZmN2NlYzk5OTU1ZWQ0NDAxMzk5
NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMQ2Fs
bGJhY2tXcmFwcGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9T
UUxDYWxsYmFja1dyYXBwZXIuaApAQCAtMjksNyArMjksNyBAQAogI3ByYWdtYSBvbmNlCiAKICNp
bmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSA8d3RmL0xvY2suaD4K
KyNpbmNsdWRlIDx3dGYvQ2hlY2tlZExvY2suaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBA
IC01OCw3ICs1OCw3IEBAIHB1YmxpYzoKICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
c2NyaXB0RXhlY3V0aW9uQ29udGV4dFB0cjsKICAgICAgICAgVCogY2FsbGJhY2s7CiAgICAgICAg
IHsKLSAgICAgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX211dGV4IH07CisgICAgICAgICAgICBM
b2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAgICAgICAgICAgICBpZiAoIW1fY2FsbGJhY2spIHsK
ICAgICAgICAgICAgICAgICBBU1NFUlQoIW1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuOwpAQCAtODMsMTkgKzgzLDIwIEBAIHB1YmxpYzoKIAogICAgIFJl
ZlB0cjxUPiB1bndyYXAoKQogICAgIHsKLSAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbXV0ZXgg
fTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogICAgICAgICBBU1NFUlQoIW1f
Y2FsbGJhY2sgfHwgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5pc0NvbnRleHRUaHJlYWQoKSk7
CiAgICAgICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IG51bGxwdHI7CiAgICAgICAgIHJl
dHVybiBXVEZNb3ZlKG1fY2FsbGJhY2spOwogICAgIH0KIAogICAgIC8vIFVzZWZ1bCBmb3Igb3B0
aW1pemF0aW9ucyBvbmx5LCBwbGVhc2UgdGVzdCB0aGUgcmV0dXJuIHZhbHVlIG9mIHVud3JhcCB0
byBiZSBzdXJlLgotICAgIGJvb2wgaGFzQ2FsbGJhY2soKSBjb25zdCB7IHJldHVybiBtX2NhbGxi
YWNrOyB9CisgICAgLy8gRklYTUU6IFRoaXMgaXMgbm90IHRocmVhZC1zYWZlLgorICAgIGJvb2wg
aGFzQ2FsbGJhY2soKSBjb25zdCBXVEZfSUdOT1JFU19USFJFQURfU0FGRVRZX0FOQUxZU0lTIHsg
cmV0dXJuIG1fY2FsbGJhY2s7IH0KIAogcHJpdmF0ZToKLSAgICBMb2NrIG1fbXV0ZXg7Ci0gICAg
UmVmUHRyPFQ+IG1fY2FsbGJhY2s7Ci0gICAgUmVmUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ+
IG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKKyAgICBDaGVja2VkTG9jayBtX2xvY2s7CisgICAg
UmVmUHRyPFQ+IG1fY2FsbGJhY2sgV1RGX0dVQVJERURfQllfTE9DSyhtX2xvY2spOworICAgIFJl
ZlB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0PiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQgV1RG
X0dVQVJERURfQllfTE9DSyhtX2xvY2spOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2Fj
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0
aW9uLmNwcAppbmRleCBlNzQyMWM3N2M1MzI3MDExZjU4YmYxMjYxNmY5ZTA0ZGI1MWI2NjZlLi5k
MTRlYmZjNTc5Y2VhNjM4MzRhODc5M2EzNWVkZWNkNTY0ODY5YWU3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uLmNwcApAQCAt
MTQ0LDcgKzE0NCw3IEBAIHZvaWQgU1FMVHJhbnNhY3Rpb246OmNhbGxFcnJvckNhbGxiYWNrRHVl
VG9JbnRlcnJ1cHRpb24oKQogCiB2b2lkIFNRTFRyYW5zYWN0aW9uOjplbnF1ZXVlU3RhdGVtZW50
KHN0ZDo6dW5pcXVlX3B0cjxTUUxTdGF0ZW1lbnQ+IHN0YXRlbWVudCkKIHsKLSAgICBMb2NrZXIg
bG9ja2VyIHsgbV9zdGF0ZW1lbnRNdXRleCB9OworICAgIExvY2tlciBsb2NrZXIgeyBtX3N0YXRl
bWVudExvY2sgfTsKICAgICBtX3N0YXRlbWVudFF1ZXVlLmFwcGVuZChXVEZNb3ZlKHN0YXRlbWVu
dCkpOwogfQogCkBAIC0xOTAsNyArMTkwLDcgQEAgdm9pZCBTUUxUcmFuc2FjdGlvbjo6Y2hlY2tB
bmRIYW5kbGVDbG9zZWREYXRhYmFzZSgpCiAgICAgLy8gSWYgdGhlIGRhdGFiYXNlIHdhcyBzdG9w
cGVkLCBkb24ndCBkbyBhbnl0aGluZyBhbmQgY2FuY2VsIHF1ZXVlZCB3b3JrCiAgICAgTE9HKFN0
b3JhZ2VBUEksICJEYXRhYmFzZSB3YXMgc3RvcHBlZCBvciBpbnRlcnJ1cHRlZCAtIGNhbmNlbGxp
bmcgd29yayBmb3IgdGhpcyB0cmFuc2FjdGlvbiIpOwogCi0gICAgTG9ja2VyIGxvY2tlciB7IG1f
c3RhdGVtZW50TXV0ZXggfTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9zdGF0ZW1lbnRMb2NrIH07
CiAgICAgbV9zdGF0ZW1lbnRRdWV1ZS5jbGVhcigpOwogICAgIG1fbmV4dFN0ZXAgPSBudWxscHRy
OwogCkBAIC01MTYsNyArNTE2LDcgQEAgdm9pZCBTUUxUcmFuc2FjdGlvbjo6Z2V0TmV4dFN0YXRl
bWVudCgpCiB7CiAgICAgbV9jdXJyZW50U3RhdGVtZW50ID0gbnVsbHB0cjsKIAotICAgIExvY2tl
ciBsb2NrZXIgeyBtX3N0YXRlbWVudE11dGV4IH07CisgICAgTG9ja2VyIGxvY2tlciB7IG1fc3Rh
dGVtZW50TG9jayB9OwogICAgIGlmICghbV9zdGF0ZW1lbnRRdWV1ZS5pc0VtcHR5KCkpCiAgICAg
ICAgIG1fY3VycmVudFN0YXRlbWVudCA9IG1fc3RhdGVtZW50UXVldWUudGFrZUZpcnN0KCk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5z
YWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0
aW9uLmgKaW5kZXggNTQwZjZlMzFmZjNiM2UyOTEyYTk4ZTdmMmQ4MDc5YmE1OTAwYTJiYy4uMzFl
MTBiNzIzODQxOWNmYzBiNzJjYjUxNzA4ZTA2YTliY2VlZjBlNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb24uaApAQCAtMzMsNiAr
MzMsNyBAQAogI2luY2x1ZGUgIlNRTFRyYW5zYWN0aW9uQmFja2VuZC5oIgogI2luY2x1ZGUgIlNR
TFRyYW5zYWN0aW9uU3RhdGVNYWNoaW5lLmgiCiAjaW5jbHVkZSAiU1FMVmFsdWUuaCIKKyNpbmNs
dWRlIDx3dGYvQ2hlY2tlZExvY2suaD4KICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRl
IDx3dGYvTG9jay5oPgogCkBAIC0xMzgsOCArMTM5LDggQEAgcHJpdmF0ZToKICAgICBib29sIG1f
cmVhZE9ubHkgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9oYXNWZXJzaW9uTWlzbWF0Y2ggeyBmYWxz
ZSB9OwogCi0gICAgTG9jayBtX3N0YXRlbWVudE11dGV4OwotICAgIERlcXVlPHN0ZDo6dW5pcXVl
X3B0cjxTUUxTdGF0ZW1lbnQ+PiBtX3N0YXRlbWVudFF1ZXVlOworICAgIENoZWNrZWRMb2NrIG1f
c3RhdGVtZW50TG9jazsKKyAgICBEZXF1ZTxzdGQ6OnVuaXF1ZV9wdHI8U1FMU3RhdGVtZW50Pj4g
bV9zdGF0ZW1lbnRRdWV1ZSBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fc3RhdGVtZW50TG9jayk7CiAK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8U1FMU3RhdGVtZW50PiBtX2N1cnJlbnRTdGF0ZW1lbnQ7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNh
Y3Rpb25CYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FM
VHJhbnNhY3Rpb25CYWNrZW5kLmNwcAppbmRleCBhMDQzZjdjYTMyNmJlOGMwZTliYzk4M2JjMzdi
YmY0NTE4ZTkwNjE0Li42MmIyN2NkYjMzMjUxNGQ2YTQ5NzEwYTA3MWQ0MTE3NWE3MGRiZGRlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0
aW9uQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9T
UUxUcmFuc2FjdGlvbkJhY2tlbmQuY3BwCkBAIC0zNTcsNyArMzU3LDcgQEAgdm9pZCBTUUxUcmFu
c2FjdGlvbkJhY2tlbmQ6OmRvQ2xlYW51cCgpCiAKICAgICBtX2Zyb250ZW5kLnJlbGVhc2VPcmln
aW5Mb2NrSWZOZWVkZWQoKTsKIAotICAgIExvY2tlciBsb2NrZXIgeyBtX2Zyb250ZW5kLm1fc3Rh
dGVtZW50TXV0ZXggfTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9mcm9udGVuZC5tX3N0YXRlbWVu
dExvY2sgfTsKICAgICBtX2Zyb250ZW5kLm1fc3RhdGVtZW50UXVldWUuY2xlYXIoKTsKIAogICAg
IGlmIChtX2Zyb250ZW5kLm1fc3FsaXRlVHJhbnNhY3Rpb24pIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmggYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5o
CmluZGV4IDI4NDVjNzEyNGM5Njg1ZGU5NDY0OGQ2NjM5NjVmYzYyZTE3ZDdkN2UuLjgxYWI5M2M2
YjliYjQ2YWNmYWNhNDJiOThkMTViMDQxZmRmOTJjNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuaApA
QCAtMzYxLDcgKzM2MSw3IEBAIHB1YmxpYzoKICAgICAvLyBCb3RoIHNldFJvb3ROb2RlSUQgYW5k
IHNldEZvY3VzZWROb2RlSUQgYXJlIGNhbGxlZCBkdXJpbmcgdGhlIGdlbmVyYXRpb24KICAgICAv
LyBvZiB0aGUgSXNvbGF0ZWRUcmVlLgogICAgIC8vIEZvY3VzZWQgbm9kZSB1cGRhdGVzIGluIEFY
T2JqZWN0Q2FjaGUgdXNlIHNldEZvY3VzTm9kZUlELgotICAgIHZvaWQgc2V0Um9vdE5vZGUoQVhJ
c29sYXRlZE9iamVjdCopOworICAgIHZvaWQgc2V0Um9vdE5vZGUoQVhJc29sYXRlZE9iamVjdCop
IFdURl9SRVFVSVJFU19MT0NLKG1fY2hhbmdlTG9nTG9jayk7CiAgICAgdm9pZCBzZXRGb2N1c2Vk
Tm9kZUlEKEFYSUQpOwogCiAgICAgLy8gQ2FsbGVkIG9uIEFYIHRocmVhZCBmcm9tIFdlYkFjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVyIG1ldGhvZHMuCkBAIC0zODEsNyArMzgxLDcgQEAgcHJpdmF0
ZToKICAgICAvLyBDYWxsIG9uIG1haW4gdGhyZWFkCiAgICAgUmVmPEFYSXNvbGF0ZWRPYmplY3Q+
IGNyZWF0ZVN1YnRyZWUoQVhDb3JlT2JqZWN0JiwgQVhJRCBwYXJlbnRJRCwgYm9vbCBhdHRhY2hX
cmFwcGVyKTsKICAgICAvLyBDYWxsZWQgb24gbWFpbiB0aHJlYWQgdG8gdXBkYXRlIGJvdGggbV9u
b2RlTWFwIGFuZCBtX3BlbmRpbmdDaGlsZHJlblVwZGF0ZXMuCi0gICAgdm9pZCB1cGRhdGVDaGls
ZHJlbklEcyhBWElEIHBhcmVudElELCBWZWN0b3I8QVhJRD4mJiBjaGlsZHJlbklEcyk7CisgICAg
dm9pZCB1cGRhdGVDaGlsZHJlbklEcyhBWElEIHBhcmVudElELCBWZWN0b3I8QVhJRD4mJiBjaGls
ZHJlbklEcykgV1RGX1JFUVVJUkVTX0xPQ0sobV9jaGFuZ2VMb2dMb2NrKTsKIAogICAgIEFYSXNv
bGF0ZWRUcmVlSUQgbV90cmVlSUQ7CiAgICAgQVhPYmplY3RDYWNoZSogbV9heE9iamVjdENhY2hl
IHsgbnVsbHB0ciB9OwpAQCAtMzkzLDE1ICszOTMsMTUgQEAgcHJpdmF0ZToKICAgICBIYXNoTWFw
PEFYSUQsIFJlZjxBWElzb2xhdGVkT2JqZWN0Pj4gbV9yZWFkZXJUaHJlYWROb2RlTWFwOwogCiAg
ICAgLy8gV3JpdHRlbiB0byBieSBtYWluIHRocmVhZCB1bmRlciBsb2NrLCBhY2Nlc3NlZCBhbmQg
YXBwbGllZCBieSBBWCB0aHJlYWQuCi0gICAgUmVmUHRyPEFYSXNvbGF0ZWRPYmplY3Q+IG1fcm9v
dE5vZGU7Ci0gICAgVmVjdG9yPE5vZGVDaGFuZ2U+IG1fcGVuZGluZ0FwcGVuZHM7IC8vIE5vZGVz
IHRvIGJlIGFkZGVkIHRvIHRoZSB0cmVlIGFuZCBwbGF0Zm9ybS13cmFwcGVkLgotICAgIFZlY3Rv
cjxBWFByb3BlcnR5Q2hhbmdlPiBtX3BlbmRpbmdQcm9wZXJ0eUNoYW5nZXM7Ci0gICAgVmVjdG9y
PEFYSUQ+IG1fcGVuZGluZ05vZGVSZW1vdmFsczsgLy8gTm9kZXMgdG8gYmUgcmVtb3ZlZCBmcm9t
IHRoZSB0cmVlLgotICAgIFZlY3RvcjxBWElEPiBtX3BlbmRpbmdTdWJ0cmVlUmVtb3ZhbHM7IC8v
IE5vZGVzIHdob3NlIHN1YnRyZWVzIGFyZSB0byBiZSByZW1vdmVkIGZyb20gdGhlIHRyZWUuCi0g
ICAgVmVjdG9yPHN0ZDo6cGFpcjxBWElELCBWZWN0b3I8QVhJRD4+PiBtX3BlbmRpbmdDaGlsZHJl
blVwZGF0ZXM7Ci0gICAgQVhJRCBtX3BlbmRpbmdGb2N1c2VkTm9kZUlEIHsgSW52YWxpZEFYSUQg
fTsKKyAgICBSZWZQdHI8QVhJc29sYXRlZE9iamVjdD4gbV9yb290Tm9kZSBXVEZfR1VBUkRFRF9C
WV9MT0NLKG1fY2hhbmdlTG9nTG9jayk7CisgICAgVmVjdG9yPE5vZGVDaGFuZ2U+IG1fcGVuZGlu
Z0FwcGVuZHMgV1RGX0dVQVJERURfQllfTE9DSyhtX2NoYW5nZUxvZ0xvY2spOyAvLyBOb2RlcyB0
byBiZSBhZGRlZCB0byB0aGUgdHJlZSBhbmQgcGxhdGZvcm0td3JhcHBlZC4KKyAgICBWZWN0b3I8
QVhQcm9wZXJ0eUNoYW5nZT4gbV9wZW5kaW5nUHJvcGVydHlDaGFuZ2VzIFdURl9HVUFSREVEX0JZ
X0xPQ0sobV9jaGFuZ2VMb2dMb2NrKTsKKyAgICBWZWN0b3I8QVhJRD4gbV9wZW5kaW5nTm9kZVJl
bW92YWxzIFdURl9HVUFSREVEX0JZX0xPQ0sobV9jaGFuZ2VMb2dMb2NrKTsgLy8gTm9kZXMgdG8g
YmUgcmVtb3ZlZCBmcm9tIHRoZSB0cmVlLgorICAgIFZlY3RvcjxBWElEPiBtX3BlbmRpbmdTdWJ0
cmVlUmVtb3ZhbHMgV1RGX0dVQVJERURfQllfTE9DSyhtX2NoYW5nZUxvZ0xvY2spOyAvLyBOb2Rl
cyB3aG9zZSBzdWJ0cmVlcyBhcmUgdG8gYmUgcmVtb3ZlZCBmcm9tIHRoZSB0cmVlLgorICAgIFZl
Y3RvcjxzdGQ6OnBhaXI8QVhJRCwgVmVjdG9yPEFYSUQ+Pj4gbV9wZW5kaW5nQ2hpbGRyZW5VcGRh
dGVzIFdURl9HVUFSREVEX0JZX0xPQ0sobV9jaGFuZ2VMb2dMb2NrKTsKKyAgICBBWElEIG1fcGVu
ZGluZ0ZvY3VzZWROb2RlSUQgV1RGX0dVQVJERURfQllfTE9DSyhtX2NoYW5nZUxvZ0xvY2spIHsg
SW52YWxpZEFYSUQgfTsKICAgICBBWElEIG1fZm9jdXNlZE5vZGVJRCB7IEludmFsaWRBWElEIH07
Ci0gICAgTG9jayBtX2NoYW5nZUxvZ0xvY2s7CisgICAgQ2hlY2tlZExvY2sgbV9jaGFuZ2VMb2dM
b2NrOwogfTsKIAogaW5saW5lIEFYT2JqZWN0Q2FjaGUqIEFYSXNvbGF0ZWRUcmVlOjpheE9iamVj
dENhY2hlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Fib3J0
YWJsZVRhc2tRdWV1ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQWJvcnRhYmxlVGFza1F1
ZXVlLmgKaW5kZXggODI2OTlkZTYwZjA1NjUxZDZjNzA4MTYxYThhMzhhYzcxOTI5YTY2Yy4uMDY5
YjFkZTkyOTNlNDNiN2U3YjdhZjcwNmVjNzg5MmQzMmRiZDBmMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vQWJvcnRhYmxlVGFza1F1ZXVlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vQWJvcnRhYmxlVGFza1F1ZXVlLmgKQEAgLTIwLDEwICsyMCwxMCBAQAogCiAj
cHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgPHd0Zi9Db25kaXRpb24uaD4KKyNpbmNsdWRlIDx3dGYv
Q2hlY2tlZENvbmRpdGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9DaGVja2VkTG9jay5oPgogI2luY2x1
ZGUgPHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgotI2luY2x1ZGUgPHd0
Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGli
RXh0cmFzLmg+CiAKQEAgLTczLDcgKzczLDcgQEAgcHVibGljOgogICAgIH5BYm9ydGFibGVUYXNr
UXVldWUoKQogICAgIHsKICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICAgICAg
QVNTRVJUKCFtX211dGV4LmlzSGVsZCgpKTsKKyAgICAgICAgQVNTRVJUKCFtX2xvY2suaXNIZWxk
KCkpOwogICAgICAgICBBU1NFUlQobV9jaGFubmVsLmlzRW1wdHkoKSk7CiAgICAgfQogCkBAIC05
NCw3ICs5NCw3IEBAIHB1YmxpYzoKICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAog
ICAgICAgICB7Ci0gICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9tdXRleCB9OworICAgICAg
ICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogICAgICAgICAgICAgbV9hYm9ydGluZyA9
IHRydWU7CiAgICAgICAgICAgICBjYW5jZWxBbGxUYXNrcygpOwogICAgICAgICB9CkBAIC0xMDgs
NyArMTA4LDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKIAotICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9tdXRleCB9OworICAgICAgICBMb2NrZXIg
bG9ja2VyIHsgbV9sb2NrIH07CiAgICAgICAgIEFTU0VSVChtX2Fib3J0aW5nKTsKICAgICAgICAg
bV9hYm9ydGluZyA9IGZhbHNlOwogICAgIH0KQEAgLTEyMyw3ICsxMjMsNyBAQCBwdWJsaWM6CiAg
ICAgewogICAgICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKIAotICAgICAgICBMb2NrZXIg
bG9ja2VyIHsgbV9tdXRleCB9OworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAg
ICAgICAgIGlmIChtX2Fib3J0aW5nKQogICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0xNDMsMTkg
KzE0MywxOSBAQCBwdWJsaWM6CiAgICAgICAgIC8vIERvbid0IGRlYWRsb2NrIHRoZSBtYWluIHRo
cmVhZCB3aXRoIGl0c2VsZi4KICAgICAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAKLSAg
ICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbXV0ZXggfTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7
IG1fbG9jayB9OwogICAgICAgICBpZiAobV9hYm9ydGluZykKICAgICAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8Uj4gcmVzcG9uc2UgPSBXVEY6Om51bGxv
cHQ7CiAgICAgICAgIHBvc3RUYXNrKFt0aGlzLCAmcmVzcG9uc2UsICZtYWluVGhyZWFkVGFza0hh
bmRsZXJdKCkgewogICAgICAgICAgICAgUiByZXNwb25zZVZhbHVlID0gbWFpblRocmVhZFRhc2tI
YW5kbGVyKCk7Ci0gICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9tdXRleCB9OworICAgICAg
ICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogICAgICAgICAgICAgaWYgKCFtX2Fib3J0
aW5nKQogICAgICAgICAgICAgICAgIHJlc3BvbnNlID0gV1RGTW92ZShyZXNwb25zZVZhbHVlKTsK
ICAgICAgICAgICAgIG1fYWJvcnRlZE9yUmVzcG9uc2VTZXQubm90aWZ5QWxsKCk7CiAgICAgICAg
IH0pOwotICAgICAgICBtX2Fib3J0ZWRPclJlc3BvbnNlU2V0LndhaXQobV9tdXRleCwgW3RoaXMs
ICZyZXNwb25zZV0oKSB7CisgICAgICAgIG1fYWJvcnRlZE9yUmVzcG9uc2VTZXQud2FpdChtX2xv
Y2ssIFt0aGlzLCAmcmVzcG9uc2VdKCkgewogICAgICAgICAgICAgcmV0dXJuIG1fYWJvcnRpbmcg
fHwgcmVzcG9uc2U7CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm4gcmVzcG9uc2U7CkBAIC0x
OTcsNyArMTk3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGlmIChpc0NhbmNlbGxlZCgpKQog
ICAgICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICAgICAgTG9ja2VyIGxvY2sgeyBtX3Rh
c2tRdWV1ZS0+bV9tdXRleCB9OworICAgICAgICAgICAgTG9ja2VyIGxvY2sgeyBtX3Rhc2tRdWV1
ZS0+bV9sb2NrIH07CiAgICAgICAgICAgICBBU1NFUlQodGhpcyA9PSBtX3Rhc2tRdWV1ZS0+bV9j
aGFubmVsLmZpcnN0KCkucHRyKCkpOwogICAgICAgICAgICAgbV90YXNrUXVldWUtPm1fY2hhbm5l
bC5yZW1vdmVGaXJzdCgpOwogICAgICAgICAgICAgbG9jay51bmxvY2tFYXJseSgpOwpAQCAtMjEz
LDI3ICsyMTMsMjcgQEAgcHJpdmF0ZToKICAgICAgICAgeyB9CiAgICAgfTsKIAotICAgIHZvaWQg
cG9zdFRhc2soV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgY2FsbGJhY2spCisgICAgdm9pZCBwb3N0
VGFzayhXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBjYWxsYmFjaykgV1RGX1JFUVVJUkVTX0xPQ0so
bV9sb2NrKQogICAgIHsKLSAgICAgICAgQVNTRVJUKG1fbXV0ZXguaXNIZWxkKCkpOworICAgICAg
ICBBU1NFUlQobV9sb2NrLmlzSGVsZCgpKTsKICAgICAgICAgUmVmPFRhc2s+IHRhc2sgPSBUYXNr
OjpjcmVhdGUodGhpcywgV1RGTW92ZShjYWxsYmFjaykpOwogICAgICAgICBtX2NoYW5uZWwuYXBw
ZW5kKHRhc2suY29weVJlZigpKTsKICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt0
YXNrID0gV1RGTW92ZSh0YXNrKV0oKSB7IHRhc2stPmRpc3BhdGNoKCk7IH0pOwogICAgIH0KIAot
ICAgIHZvaWQgY2FuY2VsQWxsVGFza3MoKQorICAgIHZvaWQgY2FuY2VsQWxsVGFza3MoKSBXVEZf
UkVRVUlSRVNfTE9DSyhtX2xvY2spCiAgICAgewogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOwotICAgICAgICBBU1NFUlQobV9tdXRleC5pc0hlbGQoKSk7CisgICAgICAgIEFTU0VSVCht
X2xvY2suaXNIZWxkKCkpOwogICAgICAgICBmb3IgKFJlZjxUYXNrPiYgdGFzayA6IG1fY2hhbm5l
bCkKICAgICAgICAgICAgIHRhc2stPmNhbmNlbCgpOwogICAgICAgICBtX2NoYW5uZWwuY2xlYXIo
KTsKICAgICB9CiAKLSAgICBib29sIG1fYWJvcnRpbmcgeyBmYWxzZSB9OwotICAgIExvY2sgbV9t
dXRleDsKLSAgICBDb25kaXRpb24gbV9hYm9ydGVkT3JSZXNwb25zZVNldDsKLSAgICBXVEY6OkRl
cXVlPFJlZjxUYXNrPj4gbV9jaGFubmVsOworICAgIGJvb2wgbV9hYm9ydGluZyBXVEZfR1VBUkRF
RF9CWV9MT0NLKG1fbG9jaykgeyBmYWxzZSB9OworICAgIENoZWNrZWRMb2NrIG1fbG9jazsKKyAg
ICBDaGVja2VkQ29uZGl0aW9uIG1fYWJvcnRlZE9yUmVzcG9uc2VTZXQ7CisgICAgV1RGOjpEZXF1
ZTxSZWY8VGFzaz4+IG1fY2hhbm5lbCBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fbG9jayk7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0Rlc3RpbmF0aW9uQ29jb2EuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9EZXN0aW5hdGlvbkNvY29hLmNwcAppbmRleCBj
MGUwOGNhOTU2ZTVlODU0MDc5MGI1YmM3NGEzOWZlNmE0OWM3MjM2Li4zOTJjMzYxNDA0ZmMyYzk1
MGViYjkzODg5YTYyOWNiNWEzNzFlNDJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0Rlc3RpbmF0aW9uQ29jb2EuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvRGVzdGluYXRpb25Db2NvYS5jcHAKQEAg
LTIxOSwxMCArMjE5LDEwIEBAIE9TU3RhdHVzIEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6cmVuZGVy
KGRvdWJsZSBzYW1wbGVUaW1lLCB1aW50NjRfdCBob3N0VGltZSwgVUluCiAgICAgfQogCiAgICAg
Ly8gV2hlbiB0aGVyZSBpcyBhIEF1ZGlvV29ya2xldCwgd2UgZG8gcmVuZGVyaW5nIG9uIHRoZSBB
dWRpb1dvcmtsZXRUaHJlYWQuCi0gICAgYXV0byBsb2NrZXIgPSB0cnlIb2xkTG9jayhtX2Rpc3Bh
dGNoVG9SZW5kZXJUaHJlYWRMb2NrKTsKLSAgICBpZiAoIWxvY2tlcikKKyAgICBpZiAoIW1fZGlz
cGF0Y2hUb1JlbmRlclRocmVhZExvY2sudHJ5TG9jaygpKQogICAgICAgICByZXR1cm4gLTE7CiAK
KyAgICBMb2NrZXIgbG9ja2VyIHsgQWRvcHRMb2NrVGFnIHsgfSwgbV9kaXNwYXRjaFRvUmVuZGVy
VGhyZWFkTG9jayB9OwogICAgIGlmICghbV9kaXNwYXRjaFRvUmVuZGVyVGhyZWFkKQogICAgICAg
ICByZW5kZXJPblJlbmRlcmluZ1RoZWFkSWZQbGF5aW5nKGZyYW1lc1RvUmVuZGVyKTsKICAgICBl
bHNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1
ZGlvRGVzdGluYXRpb25Db2NvYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29j
b2EvQXVkaW9EZXN0aW5hdGlvbkNvY29hLmgKaW5kZXggNjk5MDUzNGE1M2IzY2EyYTUxMTc3MWJi
MzRhMzk2M2EyMjJlMmQ0YS4uOWMzYmQ3YTRmOTc0NjVjOTFiY2UzNjM1N2E4NzNkOGIwYzBmYmIz
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9E
ZXN0aW5hdGlvbkNvY29hLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29j
b2EvQXVkaW9EZXN0aW5hdGlvbkNvY29hLmgKQEAgLTkxLDggKzkxLDggQEAgcHJpdmF0ZToKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8TXVsdGlDaGFubmVsUmVzYW1wbGVyPiBtX3Jlc2FtcGxlcjsKICAg
ICBBdWRpb0lPUG9zaXRpb24gbV9vdXRwdXRUaW1lc3RhbXA7CiAKLSAgICBMb2NrIG1fZGlzcGF0
Y2hUb1JlbmRlclRocmVhZExvY2s7Ci0gICAgRnVuY3Rpb248dm9pZChGdW5jdGlvbjx2b2lkKCk+
JiYpPiBtX2Rpc3BhdGNoVG9SZW5kZXJUaHJlYWQ7CisgICAgQ2hlY2tlZExvY2sgbV9kaXNwYXRj
aFRvUmVuZGVyVGhyZWFkTG9jazsKKyAgICBGdW5jdGlvbjx2b2lkKEZ1bmN0aW9uPHZvaWQoKT4m
Jik+IG1fZGlzcGF0Y2hUb1JlbmRlclRocmVhZCBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fZGlzcGF0
Y2hUb1JlbmRlclRocmVhZExvY2spOwogCiAgICAgZmxvYXQgbV9jb250ZXh0U2FtcGxlUmF0ZTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1
ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyLmgKaW5kZXggZmZkM2U4MGU1MDZm
ZmU5Zjc1YWQwYTg1MDA1NzFjM2Q2YTBlNjc5ZC4uODQwZjBhNzFlOWMxNTcwZDc3NDZkNDIyMTkx
YWEyOGRiYmNiMTcyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
Z3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5oCkBA
IC01OCw4ICs1OCw2IEBAIHByaXZhdGU6CiAgICAgR1JlZlB0cjxHc3RFbGVtZW50PiBtX3NyYzsK
ICAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiBtX3N0YXJ0dXBDb21wbGV0aW9uSGFu
ZGxlcjsKICAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiBtX3N0b3BDb21wbGV0aW9u
SGFuZGxlcjsKLSAgICBMb2NrIG1fc2V0U3RhdGVMb2NrOwotICAgIENvbmRpdGlvbiBtX3NldFN0
YXRlQ29uZGl0aW9uOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvU291cmNlUHJvdmlk
ZXJHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVy
L0F1ZGlvU291cmNlUHJvdmlkZXJHU3RyZWFtZXIuY3BwCmluZGV4IDY5MGMxZGI5NzU5Mjk0ZTRj
YjA3NDQ0MDM0MTFiZjlkNTY1ZTJhNmEuLmY3NzVhMzJmZDQ3ODAyZWU1Mzg4NTcxNjNlZDc3OWEx
MjEzOGNkNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJl
YW1lci9BdWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9Tb3VyY2VQcm92aWRlckdTdHJlYW1lci5j
cHAKQEAgLTE1OSw5ICsxNTksMTAgQEAgdm9pZCBBdWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVy
Ojpjb25maWd1cmVBdWRpb0JpbihHc3RFbGVtZW50KiBhdWRpb0JpbiwgR3N0RWwKIHZvaWQgQXVk
aW9Tb3VyY2VQcm92aWRlckdTdHJlYW1lcjo6cHJvdmlkZUlucHV0KEF1ZGlvQnVzKiBidXMsIHNp
emVfdCBmcmFtZXNUb1Byb2Nlc3MpCiB7CiAgICAgR1NUX1RSQUNFKCJGZXRjaGluZyBidWZmZXJz
IGZyb20gYWRhcHRlcnMiKTsKLSAgICBhdXRvIGxvY2tlciA9IHRyeUhvbGRMb2NrKG1fYWRhcHRl
ck11dGV4KTsKLSAgICBpZiAoIWxvY2tlcikKKyAgICBpZiAoIW1fYWRhcHRlckxvY2sudHJ5TG9j
aygpKQogICAgICAgICByZXR1cm47CisKKyAgICBMb2NrZXIgbG9ja2VyIHsgQWRvcHRMb2NrVGFn
IHsgfSwgbV9hZGFwdGVyTG9jayB9OwogICAgIGZvciAoYXV0byYgaXQgOiBtX2FkYXB0ZXJzKQog
ICAgICAgICBjb3B5R1N0cmVhbWVyQnVmZmVyc1RvQXVkaW9DaGFubmVsKGl0LnZhbHVlLmdldCgp
LCBidXMsIGl0LmtleSAtIDEsIGZyYW1lc1RvUHJvY2Vzcyk7CiB9CkBAIC0xODIsNyArMTgzLDcg
QEAgR3N0Rmxvd1JldHVybiBBdWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVyOjpoYW5kbGVTYW1w
bGUoR3N0QXBwU2luayogc2luaywgYm9vbAogCiAgICAgR1NUX1RSQUNFKCJTdG9yaW5nIGF1ZGlv
IHNhbXBsZSAlIiBHU1RfUFRSX0ZPUk1BVCwgc2FtcGxlLmdldCgpKTsKICAgICB7Ci0gICAgICAg
IExvY2tlciBsb2NrZXIgeyBtX2FkYXB0ZXJNdXRleCB9OworICAgICAgICBMb2NrZXIgbG9ja2Vy
IHsgbV9hZGFwdGVyTG9jayB9OwogICAgICAgICBHUXVhcmsgcXVhcmsgPSBnX3F1YXJrX2Zyb21f
c3RhdGljX3N0cmluZygiY2hhbm5lbC1pZCIpOwogICAgICAgICBpbnQgY2hhbm5lbElkID0gR1BP
SU5URVJfVE9fSU5UKGdfb2JqZWN0X2dldF9xZGF0YShHX09CSkVDVChzaW5rKSwgcXVhcmspKTsK
ICAgICAgICAgR1NUX0RFQlVHKCJDaGFubmVsIElEOiAlZCIsIGNoYW5uZWxJZCk7CkBAIC0zODQs
NyArMzg1LDcgQEAgdm9pZCBBdWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVyOjpkZWludGVybGVh
dmVQYWRzQ29uZmlndXJlZCgpCiAKIHZvaWQgQXVkaW9Tb3VyY2VQcm92aWRlckdTdHJlYW1lcjo6
Y2xlYXJBZGFwdGVycygpCiB7Ci0gICAgTG9ja2VyIGxvY2tlciB7IG1fYWRhcHRlck11dGV4IH07
CisgICAgTG9ja2VyIGxvY2tlciB7IG1fYWRhcHRlckxvY2sgfTsKICAgICBmb3IgKGF1dG8mIGFk
YXB0ZXIgOiBtX2FkYXB0ZXJzLnZhbHVlcygpKQogICAgICAgICBnc3RfYWRhcHRlcl9jbGVhcihh
ZGFwdGVyLmdldCgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL2dzdHJlYW1lci9BdWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9Tb3VyY2VQcm92aWRlckdTdHJlYW1l
ci5oCmluZGV4IGI4ZDg0N2QyZDJmYzY5MzdlMzA1NGQyODY3NjM3NzdiOGEyNjFjZDcuLjVhM2Fm
NmNmODkzMGMyNzFjYzQxMGUzODYxMTFhY2U5OGQ0ZWMxZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVh
bWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlv
U291cmNlUHJvdmlkZXJHU3RyZWFtZXIuaApAQCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUgIkdS
ZWZQdHJHU3RyZWFtZXIuaCIKICNpbmNsdWRlICJNYWluVGhyZWFkTm90aWZpZXIuaCIKICNpbmNs
dWRlIDxnc3QvZ3N0Lmg+CisjaW5jbHVkZSA8d3RmL0NoZWNrZWRMb2NrLmg+CiAjaW5jbHVkZSA8
d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KIApAQCAtODEsMTEg
KzgyLDExIEBAIHByaXZhdGU6CiAgICAgR1JlZlB0cjxHc3RFbGVtZW50PiBtX2F1ZGlvU2lua0Jp
bjsKICAgICBXZWFrUHRyPEF1ZGlvU291cmNlUHJvdmlkZXJDbGllbnQ+IG1fY2xpZW50OwogICAg
IGludCBtX2RlaW50ZXJsZWF2ZVNvdXJjZVBhZHMgeyAwIH07Ci0gICAgSGFzaE1hcDxpbnQsIEdS
ZWZQdHI8R3N0QWRhcHRlcj4+IG1fYWRhcHRlcnM7CisgICAgSGFzaE1hcDxpbnQsIEdSZWZQdHI8
R3N0QWRhcHRlcj4+IG1fYWRhcHRlcnMgV1RGX0dVQVJERURfQllfTE9DSyhtX2FkYXB0ZXJMb2Nr
KTsKICAgICB1bnNpZ25lZCBsb25nIG1fZGVpbnRlcmxlYXZlUGFkQWRkZWRIYW5kbGVySWQgeyAw
IH07CiAgICAgdW5zaWduZWQgbG9uZyBtX2RlaW50ZXJsZWF2ZU5vTW9yZVBhZHNIYW5kbGVySWQg
eyAwIH07CiAgICAgdW5zaWduZWQgbG9uZyBtX2RlaW50ZXJsZWF2ZVBhZFJlbW92ZWRIYW5kbGVy
SWQgeyAwIH07Ci0gICAgTG9jayBtX2FkYXB0ZXJNdXRleDsKKyAgICBDaGVja2VkTG9jayBtX2Fk
YXB0ZXJMb2NrOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vZ3N0cmVhbWVyL1dlYktpdFdlYkF1ZGlvU291cmNlR1N0cmVhbWVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9XZWJLaXRXZWJBdWRpb1NvdXJjZUdT
dHJlYW1lci5jcHAKaW5kZXggZmQzNDRmMDI1ZmFlMjljNGQ3NDk5MTUzZDhiNjQyOGI1ODJmOGMy
OS4uNmVmODM1MjgzZmYzNTNhOGZlMTIyN2IwNzBhMWRkZDU2ZDRhM2Y4ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL1dlYktpdFdlYkF1ZGlvU291
cmNlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3Ry
ZWFtZXIvV2ViS2l0V2ViQXVkaW9Tb3VyY2VHU3RyZWFtZXIuY3BwCkBAIC04MSw4ICs4MSw4IEBA
IHN0cnVjdCBfV2ViS2l0V2ViQXVkaW9TcmNQcml2YXRlIHsKIAogICAgIGJvb2wgaGFzUmVuZGVy
ZWRBdWRpYmxlRnJhbWUgeyBmYWxzZSB9OwogCi0gICAgTG9jayBkaXNwYXRjaFRvUmVuZGVyVGhy
ZWFkTG9jazsKLSAgICBGdW5jdGlvbjx2b2lkKEZ1bmN0aW9uPHZvaWQoKT4mJik+IGRpc3BhdGNo
VG9SZW5kZXJUaHJlYWRGdW5jdGlvbjsKKyAgICBDaGVja2VkTG9jayBkaXNwYXRjaFRvUmVuZGVy
VGhyZWFkTG9jazsKKyAgICBGdW5jdGlvbjx2b2lkKEZ1bmN0aW9uPHZvaWQoKT4mJik+IGRpc3Bh
dGNoVG9SZW5kZXJUaHJlYWRGdW5jdGlvbiBXVEZfR1VBUkRFRF9CWV9MT0NLKGRpc3BhdGNoVG9S
ZW5kZXJUaHJlYWRMb2NrKTsKIAogICAgIGJvb2wgZGlzcGF0Y2hEb25lIFdURl9HVUFSREVEX0JZ
X0xPQ0soZGlzcGF0Y2hMb2NrKTsKICAgICBDaGVja2VkTG9jayBkaXNwYXRjaExvY2s7CkBAIC00
MDgsMTAgKzQwOCwxMSBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJBdWRpb1NyY1JlbmRlckl0ZXJh
dGlvbihXZWJLaXRXZWJBdWRpb1NyYyogc3JjKQogICAgICAgICBwcml2LT5kaXNwYXRjaERvbmUg
PSBmYWxzZTsKICAgICB9CiAKLSAgICBhdXRvIGxvY2tlciA9IHRyeUhvbGRMb2NrKHByaXYtPmRp
c3BhdGNoVG9SZW5kZXJUaHJlYWRMb2NrKTsKLSAgICBpZiAoIWxvY2tlcikKKyAgICBpZiAoIXBy
aXYtPmRpc3BhdGNoVG9SZW5kZXJUaHJlYWRMb2NrLnRyeUxvY2soKSkKICAgICAgICAgcmV0dXJu
OwogCisgICAgTG9ja2VyIGxvY2tlciB7IEFkb3B0TG9ja1RhZyB7IH0sIHByaXYtPmRpc3BhdGNo
VG9SZW5kZXJUaHJlYWRMb2NrIH07CisKICAgICBpZiAoIXByaXYtPmRpc3BhdGNoVG9SZW5kZXJU
aHJlYWRGdW5jdGlvbikKICAgICAgICAgd2ViS2l0V2ViQXVkaW9TcmNSZW5kZXJBbmRQdXNoRnJh
bWVzKEdSZWZQdHI8R3N0RWxlbWVudD4oR1NUX0VMRU1FTlRfQ0FTVChzcmMpKSwgV1RGTW92ZSgq
Y2hhbm5lbEJ1ZmZlckxpc3QpKTsKICAgICBlbHNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25DRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwCmluZGV4IDQz
Njk2ODhlMTlhNDI3ZWM4YWU0ZjYxZDUwMjdhZTczYjJlNGZhZjEuLjU5YTlmYzI1MGE1OGFlNjFk
MzI5NTQ1MTBlOWY1OTI2YWIyNWFiMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25DRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcApAQCAtMTY3LDkgKzE2
Nyw5IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgaW5saW5lIHZvaWQqIGNhbGxiYWNrQ29udGV4
dCgpIGNvbnN0IHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KG1fb2JqZWN0SUQpOyB9
CiAKLSAgICBzdGF0aWMgTG9jayYgbWFwTG9jaygpOwotICAgIHN0YXRpYyBIYXNoTWFwPHVpbnRw
dHJfdCwgQVZGV3JhcHBlcio+JiBtYXAoKTsKLSAgICBzdGF0aWMgQVZGV3JhcHBlciogYXZmV3Jh
cHBlckZvckNhbGxiYWNrQ29udGV4dCh2b2lkKik7CisgICAgc3RhdGljIExvY2sgbWFwTG9jazsK
KyAgICBzdGF0aWMgSGFzaE1hcDx1aW50cHRyX3QsIEFWRldyYXBwZXIqPiYgbWFwKCkgV1RGX1JF
UVVJUkVTX0xPQ0sobWFwTG9jayk7CisgICAgc3RhdGljIEFWRldyYXBwZXIqIGF2ZldyYXBwZXJG
b3JDYWxsYmFja0NvbnRleHQodm9pZCopIFdURl9SRVFVSVJFU19MT0NLKG1hcExvY2spOwogICAg
IHZvaWQgYWRkVG9NYXAoKTsKICAgICB2b2lkIHJlbW92ZUZyb21NYXAoKSBjb25zdDsKICNpZiBI
QVZFKEFWRk9VTkRBVElPTl9MT0FERVJfREVMRUdBVEUpCkBAIC0xNDE2LDEyICsxNDE2LDYgQEAg
QVZGV3JhcHBlcjo6fkFWRldyYXBwZXIoKQogICAgIG1fYXZQbGF5ZXIgPSAwOwogfQogCi1Mb2Nr
JiBBVkZXcmFwcGVyOjptYXBMb2NrKCkKLXsKLSAgICBzdGF0aWMgTG9jayBtYXBMb2NrOwotICAg
IHJldHVybiBtYXBMb2NrOwotfQotCiBIYXNoTWFwPHVpbnRwdHJfdCwgQVZGV3JhcHBlcio+JiBB
VkZXcmFwcGVyOjptYXAoKQogewogICAgIHN0YXRpYyBIYXNoTWFwPHVpbnRwdHJfdCwgQVZGV3Jh
cHBlcio+JiBtYXAgPSAqbmV3IEhhc2hNYXA8dWludHB0cl90LCBBVkZXcmFwcGVyKj47CkBAIC0x
NDMwLDcgKzE0MjQsNyBAQCBIYXNoTWFwPHVpbnRwdHJfdCwgQVZGV3JhcHBlcio+JiBBVkZXcmFw
cGVyOjptYXAoKQogCiB2b2lkIEFWRldyYXBwZXI6OmFkZFRvTWFwKCkKIHsKLSAgICBMb2NrZXIg
bG9ja2VyIHsgbWFwTG9jaygpIH07CisgICAgTG9ja2VyIGxvY2tlciB7IG1hcExvY2sgfTsKICAg
ICAKICAgICAvLyBIYXNoTWFwIGRvZXNuJ3QgbGlrZSBhIGtleSBvZiAwLCBhbmQgYWxzbyBtYWtl
IHN1cmUgd2UgYXJlbid0CiAgICAgLy8gdXNpbmcgYW4gb2JqZWN0IElEIHRoYXQncyBhbHJlYWR5
IGluIHVzZS4KQEAgLTE0NDYsMTMgKzE0NDAsMTMgQEAgdm9pZCBBVkZXcmFwcGVyOjpyZW1vdmVG
cm9tTWFwKCkgY29uc3QKIHsKICAgICBMT0coTWVkaWEsICJBVkZXcmFwcGVyOjpyZW1vdmVGcm9t
TWFwKCVwICVkKSIsIHRoaXMsIG1fb2JqZWN0SUQpOwogCi0gICAgTG9ja2VyIGxvY2tlciB7IG1h
cExvY2soKSB9OworICAgIExvY2tlciBsb2NrZXIgeyBtYXBMb2NrIH07CiAgICAgbWFwKCkucmVt
b3ZlKG1fb2JqZWN0SUQpOwogfQogCiBBVkZXcmFwcGVyKiBBVkZXcmFwcGVyOjphdmZXcmFwcGVy
Rm9yQ2FsbGJhY2tDb250ZXh0KHZvaWQqIGNvbnRleHQpCiB7Ci0gICAgLy8gQXNzdW1lcyBjYWxs
ZXIgaGFzIGxvY2tlZCBtYXBMb2NrKCkuCisgICAgLy8gQXNzdW1lcyBjYWxsZXIgaGFzIGxvY2tl
ZCBtYXBMb2NrLgogICAgIEhhc2hNYXA8dWludHB0cl90LCBBVkZXcmFwcGVyKj46Oml0ZXJhdG9y
IGl0ID0gbWFwKCkuZmluZChyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oY29udGV4dCkpOwog
ICAgIGlmIChpdCA9PSBtYXAoKS5lbmQoKSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC0xNjUwLDcg
KzE2NDQsNyBAQCB2b2lkIEFWRldyYXBwZXI6OmNyZWF0ZVBsYXllckl0ZW0oKQogCiB2b2lkIEFW
RldyYXBwZXI6OnBlcmlvZGljVGltZU9ic2VydmVyQ2FsbGJhY2soQVZDRlBsYXllclJlZiwgQ01U
aW1lIGNtVGltZSwgdm9pZCogY29udGV4dCkKIHsKLSAgICBMb2NrZXIgbG9ja2VyIHsgbWFwTG9j
aygpIH07CisgICAgTG9ja2VyIGxvY2tlciB7IG1hcExvY2sgfTsKICAgICBBVkZXcmFwcGVyKiBz
ZWxmID0gYXZmV3JhcHBlckZvckNhbGxiYWNrQ29udGV4dChjb250ZXh0KTsKICAgICBpZiAoIXNl
bGYpIHsKICAgICAgICAgTE9HKE1lZGlhLCAiQVZGV3JhcHBlcjo6cGVyaW9kaWNUaW1lT2JzZXJ2
ZXJDYWxsYmFjayBpbnZva2VkIGZvciBkZWxldGVkIEFWRldyYXBwZXIgJWQiLCByZWludGVycHJl
dF9jYXN0PHVpbnRwdHJfdD4oY29udGV4dCkpOwpAQCAtMTY4Miw3ICsxNjc2LDcgQEAgdm9pZCBB
VkZXcmFwcGVyOjpwcm9jZXNzTm90aWZpY2F0aW9uKHZvaWQqIGNvbnRleHQpCiAKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8Tm90aWZpY2F0aW9uQ2FsbGJhY2tEYXRhPiBub3RpZmljYXRpb25EYXRhIHsg
c3RhdGljX2Nhc3Q8Tm90aWZpY2F0aW9uQ2FsbGJhY2tEYXRhKj4oY29udGV4dCkgfTsKIAotICAg
IExvY2tlciBsb2NrZXIgeyBtYXBMb2NrKCkgfTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbWFwTG9j
ayB9OwogICAgIEFWRldyYXBwZXIqIHNlbGYgPSBhdmZXcmFwcGVyRm9yQ2FsbGJhY2tDb250ZXh0
KG5vdGlmaWNhdGlvbkRhdGEtPm1fY29udGV4dCk7CiAgICAgaWYgKCFzZWxmKSB7CiAgICAgICAg
IExPRyhNZWRpYSwgIkFWRldyYXBwZXI6OnByb2Nlc3NOb3RpZmljYXRpb24gaW52b2tlZCBmb3Ig
ZGVsZXRlZCBBVkZXcmFwcGVyICVkIiwgcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGNvbnRl
eHQpKTsKQEAgLTE3MzcsNyArMTczMSw3IEBAIHZvaWQgQVZGV3JhcHBlcjo6bm90aWZpY2F0aW9u
Q2FsbGJhY2soQ0ZOb3RpZmljYXRpb25DZW50ZXJSZWYsIHZvaWQqIG9ic2VydmVyLCBDCiAKIHZv
aWQgQVZGV3JhcHBlcjo6bG9hZFBsYXlhYmxlQ29tcGxldGlvbkNhbGxiYWNrKEFWQ0ZBc3NldFJl
Ziwgdm9pZCogY29udGV4dCkKIHsKLSAgICBMb2NrZXIgbG9ja2VyIHsgbWFwTG9jaygpIH07Cisg
ICAgTG9ja2VyIGxvY2tlciB7IG1hcExvY2sgfTsKICAgICBBVkZXcmFwcGVyKiBzZWxmID0gYXZm
V3JhcHBlckZvckNhbGxiYWNrQ29udGV4dChjb250ZXh0KTsKICAgICBpZiAoIXNlbGYpIHsKICAg
ICAgICAgTE9HKE1lZGlhLCAiQVZGV3JhcHBlcjo6bG9hZFBsYXlhYmxlQ29tcGxldGlvbkNhbGxi
YWNrIGludm9rZWQgZm9yIGRlbGV0ZWQgQVZGV3JhcHBlciAlZCIsIHJlaW50ZXJwcmV0X2Nhc3Q8
dWludHB0cl90Pihjb250ZXh0KSk7CkBAIC0xNzY0LDcgKzE3NTgsNyBAQCB2b2lkIEFWRldyYXBw
ZXI6OmNoZWNrUGxheWFiaWxpdHkoKQogCiB2b2lkIEFWRldyYXBwZXI6OmxvYWRNZXRhZGF0YUNv
bXBsZXRpb25DYWxsYmFjayhBVkNGQXNzZXRSZWYsIHZvaWQqIGNvbnRleHQpCiB7Ci0gICAgTG9j
a2VyIGxvY2tlciB7IG1hcExvY2soKSB9OworICAgIExvY2tlciBsb2NrZXIgeyBtYXBMb2NrIH07
CiAgICAgQVZGV3JhcHBlciogc2VsZiA9IGF2ZldyYXBwZXJGb3JDYWxsYmFja0NvbnRleHQoY29u
dGV4dCk7CiAgICAgaWYgKCFzZWxmKSB7CiAgICAgICAgIExPRyhNZWRpYSwgIkFWRldyYXBwZXI6
OmxvYWRNZXRhZGF0YUNvbXBsZXRpb25DYWxsYmFjayBpbnZva2VkIGZvciBkZWxldGVkIEFWRldy
YXBwZXIgJWQiLCByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oY29udGV4dCkpOwpAQCAtMTc4
NCw3ICsxNzc4LDcgQEAgdm9pZCBBVkZXcmFwcGVyOjpiZWdpbkxvYWRpbmdNZXRhZGF0YSgpCiAK
IHZvaWQgQVZGV3JhcHBlcjo6c2Vla0NvbXBsZXRlZENhbGxiYWNrKEFWQ0ZQbGF5ZXJJdGVtUmVm
LCBCb29sZWFuIGZpbmlzaGVkLCB2b2lkKiBjb250ZXh0KQogewotICAgIExvY2tlciBsb2NrZXIg
eyBtYXBMb2NrKCkgfTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbWFwTG9jayB9OwogICAgIEFWRldy
YXBwZXIqIHNlbGYgPSBhdmZXcmFwcGVyRm9yQ2FsbGJhY2tDb250ZXh0KGNvbnRleHQpOwogICAg
IGlmICghc2VsZikgewogICAgICAgICBMT0coTWVkaWEsICJBVkZXcmFwcGVyOjpzZWVrQ29tcGxl
dGVkQ2FsbGJhY2sgaW52b2tlZCBmb3IgZGVsZXRlZCBBVkZXcmFwcGVyICVkIiwgcmVpbnRlcnBy
ZXRfY2FzdDx1aW50cHRyX3Q+KGNvbnRleHQpKTsKQEAgLTE4MjgsNyArMTgyMiw3IEBAIHZvaWQg
QVZGV3JhcHBlcjo6cHJvY2Vzc0N1ZSh2b2lkKiBjb250ZXh0KQogCiAgICAgc3RkOjp1bmlxdWVf
cHRyPExlZ2libGVPdXRwdXREYXRhPiBsZWdpYmxlT3V0cHV0RGF0YShyZWludGVycHJldF9jYXN0
PExlZ2libGVPdXRwdXREYXRhKj4oY29udGV4dCkpOwogCi0gICAgTG9ja2VyIGxvY2tlciB7IG1h
cExvY2soKSB9OworICAgIExvY2tlciBsb2NrZXIgeyBtYXBMb2NrIH07CiAgICAgQVZGV3JhcHBl
ciogc2VsZiA9IGF2ZldyYXBwZXJGb3JDYWxsYmFja0NvbnRleHQobGVnaWJsZU91dHB1dERhdGEt
Pm1fY29udGV4dCk7CiAgICAgaWYgKCFzZWxmKSB7CiAgICAgICAgIExPRyhNZWRpYSwgIkFWRldy
YXBwZXI6OnByb2Nlc3NDdWUgaW52b2tlZCBmb3IgZGVsZXRlZCBBVkZXcmFwcGVyICVkIiwgcmVp
bnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGNvbnRleHQpKTsKQEAgLTE4NDQsNyArMTgzOCw3IEBA
IHZvaWQgQVZGV3JhcHBlcjo6cHJvY2Vzc0N1ZSh2b2lkKiBjb250ZXh0KQogdm9pZCBBVkZXcmFw
cGVyOjpsZWdpYmxlT3V0cHV0Q2FsbGJhY2sodm9pZCogY29udGV4dCwgQVZDRlBsYXllckl0ZW1M
ZWdpYmxlT3V0cHV0UmVmIGxlZ2libGVPdXRwdXQsIENGQXJyYXlSZWYgYXR0cmlidXRlZFN0cmlu
Z3MsIENGQXJyYXlSZWYgbmF0aXZlU2FtcGxlQnVmZmVycywgQ01UaW1lIGl0ZW1UaW1lKQogewog
ICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwotICAgIExvY2tlciBsb2NrZXIgeyBtYXBMb2Nr
KCkgfTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbWFwTG9jayB9OwogICAgIEFWRldyYXBwZXIqIHNl
bGYgPSBhdmZXcmFwcGVyRm9yQ2FsbGJhY2tDb250ZXh0KGNvbnRleHQpOwogICAgIGlmICghc2Vs
ZikgewogICAgICAgICBMT0coTWVkaWEsICJBVkZXcmFwcGVyOjpsZWdpYmxlT3V0cHV0Q2FsbGJh
Y2sgaW52b2tlZCBmb3IgZGVsZXRlZCBBVkZXcmFwcGVyICVkIiwgcmVpbnRlcnByZXRfY2FzdDx1
aW50cHRyX3Q+KGNvbnRleHQpKTsKQEAgLTE4ODMsNyArMTg3Nyw3IEBAIHZvaWQgQVZGV3JhcHBl
cjo6cHJvY2Vzc1Nob3VsZFdhaXRGb3JMb2FkaW5nT2ZSZXNvdXJjZSh2b2lkKiBjb250ZXh0KQog
CiAgICAgc3RkOjp1bmlxdWVfcHRyPExvYWRSZXF1ZXN0RGF0YT4gbG9hZFJlcXVlc3REYXRhKHJl
aW50ZXJwcmV0X2Nhc3Q8TG9hZFJlcXVlc3REYXRhKj4oY29udGV4dCkpOwogCi0gICAgTG9ja2Vy
IGxvY2tlciB7IG1hcExvY2soKSB9OworICAgIExvY2tlciBsb2NrZXIgeyBtYXBMb2NrIH07CiAg
ICAgQVZGV3JhcHBlciogc2VsZiA9IGF2ZldyYXBwZXJGb3JDYWxsYmFja0NvbnRleHQobG9hZFJl
cXVlc3REYXRhLT5tX2NvbnRleHQpOwogICAgIGlmICghc2VsZikgewogICAgICAgICBMT0coTWVk
aWEsICJBVkZXcmFwcGVyOjpwcm9jZXNzU2hvdWxkV2FpdEZvckxvYWRpbmdPZlJlc291cmNlIGlu
dm9rZWQgZm9yIGRlbGV0ZWQgQVZGV3JhcHBlciAlZCIsIHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0
cl90Pihjb250ZXh0KSk7CkBAIC0xOTM4LDcgKzE5MzIsNyBAQCBib29sIEFWRldyYXBwZXI6OnNo
b3VsZFdhaXRGb3JMb2FkaW5nT2ZSZXNvdXJjZShBVkNGQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1
ZXN0UgogQm9vbGVhbiBBVkZXcmFwcGVyOjpyZXNvdXJjZUxvYWRlclNob3VsZFdhaXRGb3JMb2Fk
aW5nT2ZSZXF1ZXN0ZWRSZXNvdXJjZShBVkNGQXNzZXRSZXNvdXJjZUxvYWRlclJlZiByZXNvdXJj
ZUxvYWRlciwgQVZDRkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdFJlZiBsb2FkaW5nUmVxdWVz
dCwgdm9pZCAqY29udGV4dCkKIHsKICAgICBBU1NFUlQoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUo
KSAhPSBkaXNwYXRjaF9nZXRfY3VycmVudF9xdWV1ZSgpKTsKLSAgICBMb2NrZXIgbG9ja2VyIHsg
bWFwTG9jaygpIH07CisgICAgTG9ja2VyIGxvY2tlciB7IG1hcExvY2sgfTsKICAgICBBVkZXcmFw
cGVyKiBzZWxmID0gYXZmV3JhcHBlckZvckNhbGxiYWNrQ29udGV4dChjb250ZXh0KTsKICAgICBp
ZiAoIXNlbGYpIHsKICAgICAgICAgTE9HKE1lZGlhLCAiQVZGV3JhcHBlcjo6cmVzb3VyY2VMb2Fk
ZXJTaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVxdWVzdGVkUmVzb3VyY2UgaW52b2tlZCBmb3IgZGVs
ZXRlZCBBVkZXcmFwcGVyICVkIiwgcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGNvbnRleHQp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3Bw
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHAKaW5kZXggNDEwODg2
MGU5NmYxOWQ0MjBhNWUzMzQ1YjU4NzU3MTMwZDRlYzY3OC4uMTY1YzQ1NjA1MjJjZjg5MmQ1YjUx
MTRiYzQ5ZTRlODA0NDNiMDE3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVj
dGlvbi5jcHAKQEAgLTEwOCwxMCArMTA4LDEwIEBAIHByaXZhdGU6CiAgICAgQmluYXJ5U2VtYXBo
b3JlIG1fd2FpdEZvclN5bmNSZXBseVNlbWFwaG9yZTsKIAogICAgIC8vIFByb3RlY3RzIG1fZGlk
U2NoZWR1bGVEaXNwYXRjaE1lc3NhZ2VzV29ya1NldCBhbmQgbV9tZXNzYWdlc1RvRGlzcGF0Y2hX
aGlsZVdhaXRpbmdGb3JTeW5jUmVwbHkuCi0gICAgTG9jayBtX211dGV4OworICAgIENoZWNrZWRM
b2NrIG1fbG9jazsKIAogICAgIC8vIFRoZSBzZXQgb2YgY29ubmVjdGlvbnMgZm9yIHdoaWNoIHdl
J3ZlIHNjaGVkdWxlZCBhIGNhbGwgdG8gZGlzcGF0Y2hNZXNzYWdlQW5kUmVzZXREaWRTY2hlZHVs
ZURpc3BhdGNoTWVzc2FnZXNGb3JDb25uZWN0aW9uLgotICAgIEhhc2hTZXQ8UmVmUHRyPENvbm5l
Y3Rpb24+PiBtX2RpZFNjaGVkdWxlRGlzcGF0Y2hNZXNzYWdlc1dvcmtTZXQ7CisgICAgSGFzaFNl
dDxSZWZQdHI8Q29ubmVjdGlvbj4+IG1fZGlkU2NoZWR1bGVEaXNwYXRjaE1lc3NhZ2VzV29ya1Nl
dCBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fbG9jayk7CiAKICAgICBzdHJ1Y3QgQ29ubmVjdGlvbkFu
ZEluY29taW5nTWVzc2FnZSB7CiAgICAgICAgIFJlZjxDb25uZWN0aW9uPiBjb25uZWN0aW9uOwpA
QCAtMTIzLDcgKzEyMyw3IEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAgICB9OwogICAgIERlcXVl
PENvbm5lY3Rpb25BbmRJbmNvbWluZ01lc3NhZ2U+IG1fbWVzc2FnZXNCZWluZ0Rpc3BhdGNoZWQ7
IC8vIE9ubHkgdXNlZCBvbiB0aGUgbWFpbiB0aHJlYWQuCi0gICAgRGVxdWU8Q29ubmVjdGlvbkFu
ZEluY29taW5nTWVzc2FnZT4gbV9tZXNzYWdlc1RvRGlzcGF0Y2hXaGlsZVdhaXRpbmdGb3JTeW5j
UmVwbHk7CisgICAgRGVxdWU8Q29ubmVjdGlvbkFuZEluY29taW5nTWVzc2FnZT4gbV9tZXNzYWdl
c1RvRGlzcGF0Y2hXaGlsZVdhaXRpbmdGb3JTeW5jUmVwbHkgV1RGX0dVQVJERURfQllfTE9DSyht
X2xvY2spOwogfTsKIAogQ29ubmVjdGlvbjo6U3luY01lc3NhZ2VTdGF0ZSYgQ29ubmVjdGlvbjo6
U3luY01lc3NhZ2VTdGF0ZTo6c2luZ2xldG9uKCkKQEAgLTE1MSw3ICsxNTEsNyBAQCB2b2lkIENv
bm5lY3Rpb246OlN5bmNNZXNzYWdlU3RhdGU6OmVucXVldWVNYXRjaGluZ01lc3NhZ2VzKENvbm5l
Y3Rpb24mIGNvbm5lY3RpbwogICAgICAgICB9CiAgICAgICAgIGNvbm5lY3Rpb25BbmRNZXNzYWdl
cyA9IFdURk1vdmUocmVzdCk7CiAgICAgfTsKLSAgICBMb2NrZXIgbG9ja2VyIHsgbV9tdXRleCB9
OworICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKICAgICBlbnF1ZXVlTWF0Y2hpbmdNZXNz
YWdlc0luQ29udGFpbmVyKG1fbWVzc2FnZXNCZWluZ0Rpc3BhdGNoZWQpOwogICAgIGVucXVldWVN
YXRjaGluZ01lc3NhZ2VzSW5Db250YWluZXIobV9tZXNzYWdlc1RvRGlzcGF0Y2hXaGlsZVdhaXRp
bmdGb3JTeW5jUmVwbHkpOwogfQpAQCAtMTcxLDcgKzE3MSw3IEBAIGJvb2wgQ29ubmVjdGlvbjo6
U3luY01lc3NhZ2VTdGF0ZTo6cHJvY2Vzc0luY29taW5nTWVzc2FnZShDb25uZWN0aW9uJiBjb25u
ZWN0aW9uCiAKICAgICBib29sIHNob3VsZERpc3BhdGNoOwogICAgIHsKLSAgICAgICAgTG9ja2Vy
IGxvY2tlciB7IG1fbXV0ZXggfTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9Owog
ICAgICAgICBzaG91bGREaXNwYXRjaCA9IG1fZGlkU2NoZWR1bGVEaXNwYXRjaE1lc3NhZ2VzV29y
a1NldC5hZGQoJmNvbm5lY3Rpb24pLmlzTmV3RW50cnk7CiAgICAgICAgIEFTU0VSVChjb25uZWN0
aW9uLm1faW5jb21pbmdNZXNzYWdlc0xvY2suaXNIZWxkKCkpOwogICAgICAgICBpZiAobWVzc2Fn
ZS0+c2hvdWxkTWFpbnRhaW5PcmRlcmluZ1dpdGhBc3luY01lc3NhZ2VzKCkpIHsKQEAgLTE5OCw3
ICsxOTgsNyBAQCB2b2lkIENvbm5lY3Rpb246OlN5bmNNZXNzYWdlU3RhdGU6OmRpc3BhdGNoTWVz
c2FnZXMoRnVuY3Rpb248dm9pZChNZXNzYWdlTmFtZSwgdQogICAgIEFTU0VSVChSdW5Mb29wOjpp
c01haW4oKSk7CiAKICAgICB7Ci0gICAgICAgIExvY2tlciBsb2NrZXIgeyBtX211dGV4IH07Cisg
ICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKICAgICAgICAgaWYgKG1fbWVzc2FnZXNC
ZWluZ0Rpc3BhdGNoZWQuaXNFbXB0eSgpKQogICAgICAgICAgICAgbV9tZXNzYWdlc0JlaW5nRGlz
cGF0Y2hlZCA9IHN0ZDo6ZXhjaGFuZ2UobV9tZXNzYWdlc1RvRGlzcGF0Y2hXaGlsZVdhaXRpbmdG
b3JTeW5jUmVwbHksIHsgfSk7CiAgICAgICAgIGVsc2UgewpAQCAtMjIwLDcgKzIyMCw3IEBAIHZv
aWQgQ29ubmVjdGlvbjo6U3luY01lc3NhZ2VTdGF0ZTo6ZGlzcGF0Y2hNZXNzYWdlc0FuZFJlc2V0
RGlkU2NoZWR1bGVEaXNwYXRjaE1lCiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAog
ICAgIHsKLSAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbXV0ZXggfTsKKyAgICAgICAgTG9ja2Vy
IGxvY2tlciB7IG1fbG9jayB9OwogICAgICAgICBBU1NFUlQobV9kaWRTY2hlZHVsZURpc3BhdGNo
TWVzc2FnZXNXb3JrU2V0LmNvbnRhaW5zKCZjb25uZWN0aW9uKSk7CiAgICAgICAgIG1fZGlkU2No
ZWR1bGVEaXNwYXRjaE1lc3NhZ2VzV29ya1NldC5yZW1vdmUoJmNvbm5lY3Rpb24pOwogICAgICAg
ICBBU1NFUlQobV9tZXNzYWdlc0JlaW5nRGlzcGF0Y2hlZC5pc0VtcHR5KCkpOwo=
</data>
<flag name="commit-queue"
          id="450597"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429407</attachid>
            <date>2021-05-22 00:20:20 -0700</date>
            <delta_ts>2021-05-22 08:39:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226138-20210522002019.patch</filename>
            <type>text/plain</type>
            <size>46480</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3OTEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGEyYzczMjViYjFkMWRhNTJlODUzZDk5
Yzk1YjhkOGJiYzU5MjdlMjYuLjQwNjIxMjJjNDg5OTdiYjkzZTBiMjAzMmI0YjI5NWUzMGYxODJj
NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjEtMDUtMjIgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBBZG9wdCBDaGVja2VkTG9jayBpbiBtb3JlIHBsYWNlcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2MTM4CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRvcHQgQ2hl
Y2tlZExvY2sgaW4gbW9yZSBwbGFjZXMgdG8gYmVuZWZpdCBmcm9tIENsYW5nIFRocmVhZCBTYWZl
dHkgQW5hbHlzaXMuCisKKyAgICAgICAgKiB3dGYvQXNzZXJ0aW9ucy5jcHA6CisgICAgICAgICog
d3RmL1RpbWluZ1Njb3BlLmNwcDoKKyAgICAgICAgKiB3dGYvdGhyZWFkcy9CaW5hcnlTZW1hcGhv
cmUuY3BwOgorICAgICAgICAoV1RGOjpCaW5hcnlTZW1hcGhvcmU6OndhaXRVbnRpbCk6CisgICAg
ICAgICogd3RmL3RocmVhZHMvQmluYXJ5U2VtYXBob3JlLmg6CisKIDIwMjEtMDUtMjEgIENocmlz
IER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXBsYWNlIExvY2tIb2xkZXIg
d2l0aCBMb2NrZXIgaW4gbG9jYWwgdmFyaWFibGVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTgwZmRiNTQ4OGE2
OTJmZmU2OGFjNjhiNTFiZmJhOWUwY2ExNjNhOS4uZmZiMDEzNGUzNzZlZWI2NTViMTg5NWJiZmRi
MDc3MWJiNzMyMmM5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcwIEBACisyMDIxLTA1LTIyICBD
aHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQWRvcHQgQ2hlY2tlZExv
Y2sgaW4gbW9yZSBwbGFjZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIyNjEzOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEFkb3B0IENoZWNrZWRMb2NrIGluIG1vcmUgcGxhY2VzIHRvIGJlbmVmaXQgZnJv
bSBDbGFuZyBUaHJlYWQgU2FmZXR5IEFuYWx5c2lzLgorCisgICAgICAgICogTW9kdWxlcy93ZWJk
YXRhYmFzZS9EYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6cGVyZm9y
bUNsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlOjpzY2hlZHVsZVRyYW5zYWN0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlOjppblByb2dyZXNzVHJhbnNhY3Rpb25Db21w
bGV0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6Omhhc1BlbmRpbmdUcmFuc2FjdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6cnVuVHJhbnNhY3Rpb24pOgorICAgICAg
ICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRh
dGFiYXNlOjpXVEZfR1VBUkRFRF9CWV9MT0NLKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFi
YXNlL0RhdGFiYXNlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZU1hbmFn
ZXI6OmFkZFByb3Bvc2VkRGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VNYW5h
Z2VyOjpyZW1vdmVQcm9wb3NlZERhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNl
TWFuYWdlcjo6ZnVsbFBhdGhGb3JEYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFz
ZU1hbmFnZXI6OmRldGFpbHNGb3JOYW1lQW5kT3JpZ2luKToKKyAgICAgICAgKiBNb2R1bGVzL3dl
YmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJh
c2UvRGF0YWJhc2VUaHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUaHJlYWQ6
OmRhdGFiYXNlVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVGhyZWFkOjpyZWNv
cmREYXRhYmFzZU9wZW4pOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUaHJlYWQ6OnJlY29y
ZERhdGFiYXNlQ2xvc2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVGhyZWFkOjpoYXNQ
ZW5kaW5nRGF0YWJhc2VBY3Rpdml0eSBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRh
YmFzZS9EYXRhYmFzZVRocmVhZC5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvU1FM
Q2FsbGJhY2tXcmFwcGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpTUUxDYWxsYmFja1dyYXBwZXI6
OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTENhbGxiYWNrV3JhcHBlcjo6dW53cmFwKToK
KyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uOjplbnF1ZXVlU3RhdGVtZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uOjpjaGVja0FuZEhhbmRsZUNsb3NlZERhdGFiYXNlKToK
KyAgICAgICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uOjpnZXROZXh0U3RhdGVtZW50KToKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uLmg6CisgICAgICAgICog
TW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbkJhY2tlbmQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1FMVHJhbnNhY3Rpb25CYWNrZW5kOjpkb0NsZWFudXApOgorICAgICAgICAqIGFj
Y2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmg6CisgICAgICAgIChXZWJD
b3JlOjpBWElzb2xhdGVkVHJlZTo6V1RGX0dVQVJERURfQllfTE9DSyk6CisgICAgICAgICogcGxh
dGZvcm0vQWJvcnRhYmxlVGFza1F1ZXVlLmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vY29j
b2EvQXVkaW9EZXN0aW5hdGlvbkNvY29hLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVz
dGluYXRpb25Db2NvYTo6cmVuZGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9jb2NvYS9B
dWRpb0Rlc3RpbmF0aW9uQ29jb2EuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9nc3RyZWFt
ZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlv
L2dzdHJlYW1lci9BdWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkF1ZGlvU291cmNlUHJvdmlkZXJHU3RyZWFtZXI6OnByb3ZpZGVJbnB1dCk6CisgICAg
ICAgIChXZWJDb3JlOjpBdWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVyOjpoYW5kbGVTYW1wbGUp
OgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Tb3VyY2VQcm92aWRlckdTdHJlYW1lcjo6Y2xlYXJB
ZGFwdGVycyk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvU291cmNl
UHJvdmlkZXJHU3RyZWFtZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIv
V2ViS2l0V2ViQXVkaW9Tb3VyY2VHU3RyZWFtZXIuY3BwOgorICAgICAgICAod2ViS2l0V2ViQXVk
aW9TcmNSZW5kZXJJdGVyYXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpBVkZXcmFwcGVyOjphZGRUb01hcCk6CisgICAgICAgIChXZWJDb3JlOjpBVkZX
cmFwcGVyOjpyZW1vdmVGcm9tTWFwIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFWRldyYXBw
ZXI6OmF2ZldyYXBwZXJGb3JDYWxsYmFja0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6QVZG
V3JhcHBlcjo6cGVyaW9kaWNUaW1lT2JzZXJ2ZXJDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3Jl
OjpBVkZXcmFwcGVyOjpwcm9jZXNzTm90aWZpY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkFW
RldyYXBwZXI6OmxvYWRQbGF5YWJsZUNvbXBsZXRpb25DYWxsYmFjayk6CisgICAgICAgIChXZWJD
b3JlOjpBVkZXcmFwcGVyOjpsb2FkTWV0YWRhdGFDb21wbGV0aW9uQ2FsbGJhY2spOgorICAgICAg
ICAoV2ViQ29yZTo6QVZGV3JhcHBlcjo6c2Vla0NvbXBsZXRlZENhbGxiYWNrKToKKyAgICAgICAg
KFdlYkNvcmU6OkFWRldyYXBwZXI6OnByb2Nlc3NDdWUpOgorICAgICAgICAoV2ViQ29yZTo6QVZG
V3JhcHBlcjo6bGVnaWJsZU91dHB1dENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkFWRldy
YXBwZXI6OnByb2Nlc3NTaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVzb3VyY2UpOgorICAgICAgICAo
V2ViQ29yZTo6QVZGV3JhcHBlcjo6cmVzb3VyY2VMb2FkZXJTaG91bGRXYWl0Rm9yTG9hZGluZ09m
UmVxdWVzdGVkUmVzb3VyY2UpOgorCiAyMDIxLTA1LTIxICBDaHJpcyBEdW1leiAgPGNkdW1lekBh
cHBsZS5jb20+CiAKICAgICAgICAgUmVwbGFjZSBMb2NrSG9sZGVyIHdpdGggTG9ja2VyIGluIGxv
Y2FsIHZhcmlhYmxlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBhOGI4NGIxZDQ0MDllZGU3OWVjYThkNmJkMGQ4ODYx
YmZjY2RjOGM0Li40MjJkYmQ2YzhlMTcyM2NlZmY5Mjc0NDhiYmEyZDM4NTM1NTkyZDcxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIxLTA1LTIyICBDaHJpcyBEdW1leiAgPGNkdW1lekBh
cHBsZS5jb20+CisKKyAgICAgICAgQWRvcHQgQ2hlY2tlZExvY2sgaW4gbW9yZSBwbGFjZXMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjEzOAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkb3B0IENoZWNr
ZWRMb2NrIGluIG1vcmUgcGxhY2VzIHRvIGJlbmVmaXQgZnJvbSBDbGFuZyBUaHJlYWQgU2FmZXR5
IEFuYWx5c2lzLgorCisgICAgICAgICogUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3BwOgorICAg
ICAgICAoSVBDOjpDb25uZWN0aW9uOjpTeW5jTWVzc2FnZVN0YXRlOjplbnF1ZXVlTWF0Y2hpbmdN
ZXNzYWdlcyk6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OlN5bmNNZXNzYWdlU3RhdGU6OnBy
b2Nlc3NJbmNvbWluZ01lc3NhZ2UpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpTeW5jTWVz
c2FnZVN0YXRlOjpkaXNwYXRjaE1lc3NhZ2VzKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6
U3luY01lc3NhZ2VTdGF0ZTo6ZGlzcGF0Y2hNZXNzYWdlc0FuZFJlc2V0RGlkU2NoZWR1bGVEaXNw
YXRjaE1lc3NhZ2VzRm9yQ29ubmVjdGlvbik6CisKIDIwMjEtMDUtMjEgIENocmlzIER1bWV6ICA8
Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXBsYWNlIExvY2tIb2xkZXIgd2l0aCBMb2Nr
ZXIgaW4gbG9jYWwgdmFyaWFibGVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Bc3NlcnRp
b25zLmNwcCBiL1NvdXJjZS9XVEYvd3RmL0Fzc2VydGlvbnMuY3BwCmluZGV4IDU4OTVmMzA1ZmRk
ODFmYWM0ZDIwMTA0NGFhM2RlNWQ3YzdjMzBlNGMuLjBkZjMwODMyYmJiNGU1MWFlZGNiNThkNjdj
NGZhNzBhMjY1ZWVmMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0Fzc2VydGlvbnMuY3Bw
CisrKyBiL1NvdXJjZS9XVEYvd3RmL0Fzc2VydGlvbnMuY3BwCkBAIC0zMSw4ICszMSw4IEBACiAj
aW5jbHVkZSA8bXV0ZXg+CiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDxzdHJpbmcuaD4K
KyNpbmNsdWRlIDx3dGYvQ2hlY2tlZExvY2suaD4KICNpbmNsdWRlIDx3dGYvQ29tcGlsZXIuaD4K
LSNpbmNsdWRlIDx3dGYvTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9Mb2NrZXIuaD4KICNpbmNsdWRl
IDx3dGYvTG9nZ2luZ0FjY3VtdWxhdG9yLmg+CiAjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+
CkBAIC0zNjgsMjUgKzM2OCwyNSBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIGdldEFuZFJlc2V0QWNj
dW11bGF0ZWRMb2dzKCk7CiAKIHByaXZhdGU6Ci0gICAgTG9jayBhY2N1bXVsYXRvckxvY2s7Ci0g
ICAgU3RyaW5nQnVpbGRlciBsb2dnaW5nQWNjdW11bGF0b3I7CisgICAgQ2hlY2tlZExvY2sgYWNj
dW11bGF0b3JMb2NrOworICAgIFN0cmluZ0J1aWxkZXIgbG9nZ2luZ0FjY3VtdWxhdG9yIFdURl9H
VUFSREVEX0JZX0xPQ0soYWNjdW11bGF0b3JMb2NrKTsKIH07CiAKIHZvaWQgV1RGTG9nZ2luZ0Fj
Y3VtdWxhdG9yOjphY2N1bXVsYXRlKGNvbnN0IFN0cmluZyYgbG9nKQogewotICAgIExvY2tlcjxM
b2NrPiBsb2NrZXIoYWNjdW11bGF0b3JMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgYWNjdW11
bGF0b3JMb2NrIH07CiAgICAgbG9nZ2luZ0FjY3VtdWxhdG9yLmFwcGVuZChsb2cpOwogfQogCiB2
b2lkIFdURkxvZ2dpbmdBY2N1bXVsYXRvcjo6cmVzZXRBY2N1bXVsYXRlZExvZ3MoKQogewotICAg
IExvY2tlcjxMb2NrPiBsb2NrZXIoYWNjdW11bGF0b3JMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2Vy
IHsgYWNjdW11bGF0b3JMb2NrIH07CiAgICAgbG9nZ2luZ0FjY3VtdWxhdG9yLmNsZWFyKCk7CiB9
CiAKIFN0cmluZyBXVEZMb2dnaW5nQWNjdW11bGF0b3I6OmdldEFuZFJlc2V0QWNjdW11bGF0ZWRM
b2dzKCkKIHsKLSAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKGFjY3VtdWxhdG9yTG9jayk7CisgICAg
TG9ja2VyIGxvY2tlciB7IGFjY3VtdWxhdG9yTG9jayB9OwogICAgIFN0cmluZyByZXN1bHQgPSBs
b2dnaW5nQWNjdW11bGF0b3IudG9TdHJpbmcoKTsKICAgICBsb2dnaW5nQWNjdW11bGF0b3IuY2xl
YXIoKTsKICAgICByZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVGlt
aW5nU2NvcGUuY3BwIGIvU291cmNlL1dURi93dGYvVGltaW5nU2NvcGUuY3BwCmluZGV4IGUyYjAy
YzYwMzc0NDRjYTYwZjc4ODIzYTIxODIwNjk2ODY5ZjdkNTguLjYzMTE2NjQwYWRlZjRjZDkyMGUy
MTk3ZDc1ZmU1NDE2NGE4ZWM0NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1RpbWluZ1Nj
b3BlLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9UaW1pbmdTY29wZS5jcHAKQEAgLTI2LDggKzI2
LDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlIDx3dGYvVGltaW5nU2NvcGUuaD4K
IAorI2luY2x1ZGUgPHd0Zi9DaGVja2VkTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+
Ci0jaW5jbHVkZSA8d3RmL0xvY2suaD4KIAogbmFtZXNwYWNlIFdURiB7CiAKQEAgLTU5LDggKzU5
LDggQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICBIYXNoTWFwPGNvbnN0IGNoYXIq
LCBDYWxsRGF0YT4gdG90YWxzOwotICAgIExvY2sgbG9jazsKKyAgICBIYXNoTWFwPGNvbnN0IGNo
YXIqLCBDYWxsRGF0YT4gdG90YWxzIFdURl9HVUFSREVEX0JZX0xPQ0sobG9jayk7CisgICAgQ2hl
Y2tlZExvY2sgbG9jazsKIH07CiAKIFN0YXRlJiBzdGF0ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi90aHJlYWRzL0JpbmFyeVNlbWFwaG9yZS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90aHJl
YWRzL0JpbmFyeVNlbWFwaG9yZS5jcHAKaW5kZXggNzhiZjM0Yzk2NjY5OTYwZjEzYzQyYWE0N2Uw
NzRlOGMwNzk3YzI5ZS4uYWQ0MzliZjgzZjU3OWMwODAxYTkxZDY1MWI0ZTA5ZDE1YjIwMGRiZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGhyZWFkcy9CaW5hcnlTZW1hcGhvcmUuY3BwCisr
KyBiL1NvdXJjZS9XVEYvd3RmL3RocmVhZHMvQmluYXJ5U2VtYXBob3JlLmNwcApAQCAtMzgsNyAr
MzgsMTAgQEAgdm9pZCBCaW5hcnlTZW1hcGhvcmU6OnNpZ25hbCgpCiBib29sIEJpbmFyeVNlbWFw
aG9yZTo6d2FpdFVudGlsKGNvbnN0IFRpbWVXaXRoRHluYW1pY0Nsb2NrVHlwZSYgYWJzb2x1dGVU
aW1lKQogewogICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKLSAgICBib29sIHNhdGlzZmll
ZCA9IG1fY29uZGl0aW9uLndhaXRVbnRpbChtX2xvY2ssIGFic29sdXRlVGltZSwgWyZdIHsgcmV0
dXJuIG1faXNTZXQ7IH0pOworICAgIGJvb2wgc2F0aXNmaWVkID0gbV9jb25kaXRpb24ud2FpdFVu
dGlsKG1fbG9jaywgYWJzb2x1dGVUaW1lLCBbJl0geworICAgICAgICBhc3NlcnRJc0hlbGQobV9s
b2NrKTsKKyAgICAgICAgcmV0dXJuIG1faXNTZXQ7CisgICAgfSk7CiAgICAgaWYgKHNhdGlzZmll
ZCkKICAgICAgICAgbV9pc1NldCA9IGZhbHNlOwogICAgIHJldHVybiBzYXRpc2ZpZWQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90aHJlYWRzL0JpbmFyeVNlbWFwaG9yZS5oIGIvU291cmNl
L1dURi93dGYvdGhyZWFkcy9CaW5hcnlTZW1hcGhvcmUuaAppbmRleCA5N2NjYmRlMDgyMDUyYzc3
MGFhM2RiNGU4YmVlNmUxYzllMGUwYmFiLi4zMjg2NTE4ZTcyMzM1MzMxMGQ2ODg2YTlhOGZhYWU3
MmMxMTFkNjllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90aHJlYWRzL0JpbmFyeVNlbWFw
aG9yZS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RocmVhZHMvQmluYXJ5U2VtYXBob3JlLmgKQEAg
LTI1LDggKzI1LDggQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlIDx3dGYvQ29uZGl0aW9u
Lmg+Ci0jaW5jbHVkZSA8d3RmL0xvY2suaD4KKyNpbmNsdWRlIDx3dGYvQ2hlY2tlZENvbmRpdGlv
bi5oPgorI2luY2x1ZGUgPHd0Zi9DaGVja2VkTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5
YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9UaW1lV2l0aER5bmFtaWNDbG9ja1R5cGUuaD4KIApAQCAt
NTIsOSArNTIsOSBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIGJvb2wgbV9pc1Nl
dCB7IGZhbHNlIH07Ci0gICAgTG9jayBtX2xvY2s7Ci0gICAgQ29uZGl0aW9uIG1fY29uZGl0aW9u
OworICAgIGJvb2wgbV9pc1NldCBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fbG9jaykgeyBmYWxzZSB9
OworICAgIENoZWNrZWRMb2NrIG1fbG9jazsKKyAgICBDaGVja2VkQ29uZGl0aW9uIG1fY29uZGl0
aW9uOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwCmluZGV4IDZiYjgwODg5NmQ3YWNmMTRjOWRhYjQw
YmI1MTUzYTY2ZDcwMDQyMDEuLjcwMDc0YzdhN2FiNDIzOTk5ZjNkZjkwNDFmNGViY2EwOTRjNzFk
NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJh
c2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2Uu
Y3BwCkBAIC0yODIsNyArMjgyLDcgQEAgdm9pZCBEYXRhYmFzZTo6cGVyZm9ybUNsb3NlKCkKICAg
ICBBU1NFUlQoZGF0YWJhc2VUaHJlYWQoKS5nZXRUaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50
KCkpOwogCiAgICAgewotICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV90cmFuc2FjdGlvbkluUHJv
Z3Jlc3NNdXRleCB9OworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV90cmFuc2FjdGlvbkluUHJv
Z3Jlc3NMb2NrIH07CiAKICAgICAgICAgLy8gQ2xlYW4gdXAgdHJhbnNhY3Rpb25zIHRoYXQgaGF2
ZSBub3QgYmVlbiBzY2hlZHVsZWQgeWV0OgogICAgICAgICAvLyBUcmFuc2FjdGlvbiBwaGFzZSAx
IGNsZWFudXAuIFNlZSBjb21tZW50IG9uICJXaGF0IGhhcHBlbnMgaWYgYQpAQCAtNTE4LDcgKzUx
OCw3IEBAIGJvb2wgRGF0YWJhc2U6OmdldEFjdHVhbFZlcnNpb25Gb3JUcmFuc2FjdGlvbihTdHJp
bmcgJmFjdHVhbFZlcnNpb24pCiAKIHZvaWQgRGF0YWJhc2U6OnNjaGVkdWxlVHJhbnNhY3Rpb24o
KQogewotICAgIEFTU0VSVCghbV90cmFuc2FjdGlvbkluUHJvZ3Jlc3NNdXRleC50cnlMb2NrKCkp
OyAvLyBMb2NrZWQgYnkgY2FsbGVyLgorICAgIEFTU0VSVChtX3RyYW5zYWN0aW9uSW5Qcm9ncmVz
c0xvY2suaXNIZWxkKCkpOwogCiAgICAgaWYgKCFtX2lzVHJhbnNhY3Rpb25RdWV1ZUVuYWJsZWQg
fHwgbV90cmFuc2FjdGlvblF1ZXVlLmlzRW1wdHkoKSkgewogICAgICAgICBtX3RyYW5zYWN0aW9u
SW5Qcm9ncmVzcyA9IGZhbHNlOwpAQCAtNTQ0LDE0ICs1NDQsMTQgQEAgdm9pZCBEYXRhYmFzZTo6
c2NoZWR1bGVUcmFuc2FjdGlvblN0ZXAoU1FMVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uKQogCiB2
b2lkIERhdGFiYXNlOjppblByb2dyZXNzVHJhbnNhY3Rpb25Db21wbGV0ZWQoKQogewotICAgIExv
Y2tlciBsb2NrZXIgeyBtX3RyYW5zYWN0aW9uSW5Qcm9ncmVzc011dGV4IH07CisgICAgTG9ja2Vy
IGxvY2tlciB7IG1fdHJhbnNhY3Rpb25JblByb2dyZXNzTG9jayB9OwogICAgIG1fdHJhbnNhY3Rp
b25JblByb2dyZXNzID0gZmFsc2U7CiAgICAgc2NoZWR1bGVUcmFuc2FjdGlvbigpOwogfQogCiBi
b29sIERhdGFiYXNlOjpoYXNQZW5kaW5nVHJhbnNhY3Rpb24oKQogewotICAgIExvY2tlciBsb2Nr
ZXIgeyBtX3RyYW5zYWN0aW9uSW5Qcm9ncmVzc011dGV4IH07CisgICAgTG9ja2VyIGxvY2tlciB7
IG1fdHJhbnNhY3Rpb25JblByb2dyZXNzTG9jayB9OwogICAgIHJldHVybiBtX3RyYW5zYWN0aW9u
SW5Qcm9ncmVzcyB8fCAhbV90cmFuc2FjdGlvblF1ZXVlLmlzRW1wdHkoKTsKIH0KIApAQCAtNjgx
LDcgKzY4MSw3IEBAIHZvaWQgRGF0YWJhc2U6OnJlc2V0QXV0aG9yaXplcigpCiB2b2lkIERhdGFi
YXNlOjpydW5UcmFuc2FjdGlvbihSZWZQdHI8U1FMVHJhbnNhY3Rpb25DYWxsYmFjaz4mJiBjYWxs
YmFjaywgUmVmUHRyPFNRTFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjaz4mJiBlcnJvckNhbGxiYWNr
LCBSZWZQdHI8Vm9pZENhbGxiYWNrPiYmIHN1Y2Nlc3NDYWxsYmFjaywgUmVmUHRyPFNRTFRyYW5z
YWN0aW9uV3JhcHBlcj4mJiB3cmFwcGVyLCBib29sIHJlYWRPbmx5KQogewogICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7Ci0gICAgTG9ja2VyIGxvY2tlciB7IG1fdHJhbnNhY3Rpb25JblByb2dy
ZXNzTXV0ZXggfTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV90cmFuc2FjdGlvbkluUHJvZ3Jlc3NM
b2NrIH07CiAgICAgaWYgKCFtX2lzVHJhbnNhY3Rpb25RdWV1ZUVuYWJsZWQpIHsKICAgICAgICAg
aWYgKGVycm9yQ2FsbGJhY2spIHsKICAgICAgICAgICAgIG1fZG9jdW1lbnQtPmV2ZW50TG9vcCgp
LnF1ZXVlVGFzayhUYXNrU291cmNlOjpOZXR3b3JraW5nLCBbZXJyb3JDYWxsYmFjayA9IG1ha2VS
ZWYoKmVycm9yQ2FsbGJhY2spXSgpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0
YWJhc2UvRGF0YWJhc2UuaAppbmRleCAwZDJhOTVhYmM1YzcxZGY0NDVlNjFlMDI3YzE4NDk0OTAy
Zjg3Mzk4Li5hZDIxMzM4YTc4N2Y5M2NkODQ3N2RkMmZhMGVjNDQzOGQ5MzI1ZDUzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5oCkBAIC0zMCw4ICsz
MCw4IEBACiAKICNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgogI2luY2x1ZGUgIlNRTGl0ZURhdGFi
YXNlLmgiCisjaW5jbHVkZSA8d3RmL0NoZWNrZWRMb2NrLmg+CiAjaW5jbHVkZSA8d3RmL0RlcXVl
Lmg+Ci0jaW5jbHVkZSA8d3RmL0xvY2suaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0x
MzksNyArMTM5LDcgQEAgcHJpdmF0ZToKICAgICBib29sIGdldEFjdHVhbFZlcnNpb25Gb3JUcmFu
c2FjdGlvbihTdHJpbmcmIHZlcnNpb24pOwogICAgIHZvaWQgc2V0RXN0aW1hdGVkU2l6ZSh1bnNp
Z25lZCBsb25nIGxvbmcpOwogCi0gICAgdm9pZCBzY2hlZHVsZVRyYW5zYWN0aW9uKCk7CisgICAg
dm9pZCBzY2hlZHVsZVRyYW5zYWN0aW9uKCkgV1RGX1JFUVVJUkVTX0xPQ0sobV90cmFuc2FjdGlv
bkluUHJvZ3Jlc3NMb2NrKTsKIAogICAgIHZvaWQgcnVuVHJhbnNhY3Rpb24oUmVmUHRyPFNRTFRy
YW5zYWN0aW9uQ2FsbGJhY2s+JiYsIFJlZlB0cjxTUUxUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2s+
JiYsIFJlZlB0cjxWb2lkQ2FsbGJhY2s+JiYgc3VjY2Vzc0NhbGxiYWNrLCBSZWZQdHI8U1FMVHJh
bnNhY3Rpb25XcmFwcGVyPiYmLCBib29sIHJlYWRPbmx5KTsKIApAQCAtMTY5LDEwICsxNjksMTAg
QEAgcHJpdmF0ZToKIAogICAgIFJlZjxEYXRhYmFzZUF1dGhvcml6ZXI+IG1fZGF0YWJhc2VBdXRo
b3JpemVyOwogCi0gICAgRGVxdWU8UmVmPFNRTFRyYW5zYWN0aW9uPj4gbV90cmFuc2FjdGlvblF1
ZXVlOwotICAgIExvY2sgbV90cmFuc2FjdGlvbkluUHJvZ3Jlc3NNdXRleDsKLSAgICBib29sIG1f
dHJhbnNhY3Rpb25JblByb2dyZXNzIHsgZmFsc2UgfTsKLSAgICBib29sIG1faXNUcmFuc2FjdGlv
blF1ZXVlRW5hYmxlZCB7IHRydWUgfTsKKyAgICBEZXF1ZTxSZWY8U1FMVHJhbnNhY3Rpb24+PiBt
X3RyYW5zYWN0aW9uUXVldWUgV1RGX0dVQVJERURfQllfTE9DSyhtX3RyYW5zYWN0aW9uSW5Qcm9n
cmVzc0xvY2spOworICAgIENoZWNrZWRMb2NrIG1fdHJhbnNhY3Rpb25JblByb2dyZXNzTG9jazsK
KyAgICBib29sIG1fdHJhbnNhY3Rpb25JblByb2dyZXNzIFdURl9HVUFSREVEX0JZX0xPQ0sobV90
cmFuc2FjdGlvbkluUHJvZ3Jlc3NMb2NrKSB7IGZhbHNlIH07CisgICAgYm9vbCBtX2lzVHJhbnNh
Y3Rpb25RdWV1ZUVuYWJsZWQgV1RGX0dVQVJERURfQllfTE9DSyhtX3RyYW5zYWN0aW9uSW5Qcm9n
cmVzc0xvY2spIHsgdHJ1ZSB9OwogCiAgICAgZnJpZW5kIGNsYXNzIENoYW5nZVZlcnNpb25XcmFw
cGVyOwogICAgIGZyaWVuZCBjbGFzcyBEYXRhYmFzZU1hbmFnZXI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5jcHAKaW5kZXgg
OTUwYjQ1ZmM3MWFhYjE2ZjE0ZTE1ZTJhMGFmZjExZjEyODUyMmE4NS4uMmM5YWE1MmExMDg5NTNl
NDg3NmQ0NWQwYzRjZDk5Mjk1ZTIyYTJiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmNwcApAQCAtMTgxLDEzICsxODEs
MTMgQEAgRXhjZXB0aW9uT3I8UmVmPERhdGFiYXNlPj4gRGF0YWJhc2VNYW5hZ2VyOjp0cnlUb09w
ZW5EYXRhYmFzZUJhY2tlbmQoRG9jdW1lbnQmIGQKIAogdm9pZCBEYXRhYmFzZU1hbmFnZXI6OmFk
ZFByb3Bvc2VkRGF0YWJhc2UoUHJvcG9zZWREYXRhYmFzZSYgZGF0YWJhc2UpCiB7Ci0gICAgTG9j
a2VyIGxvY2tlciB7IG1fcHJvcG9zZWREYXRhYmFzZXNNdXRleCB9OworICAgIExvY2tlciBsb2Nr
ZXIgeyBtX3Byb3Bvc2VkRGF0YWJhc2VzTG9jayB9OwogICAgIG1fcHJvcG9zZWREYXRhYmFzZXMu
YWRkKCZkYXRhYmFzZSk7CiB9CiAKIHZvaWQgRGF0YWJhc2VNYW5hZ2VyOjpyZW1vdmVQcm9wb3Nl
ZERhdGFiYXNlKFByb3Bvc2VkRGF0YWJhc2UmIGRhdGFiYXNlKQogewotICAgIExvY2tlciBsb2Nr
ZXIgeyBtX3Byb3Bvc2VkRGF0YWJhc2VzTXV0ZXggfTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9w
cm9wb3NlZERhdGFiYXNlc0xvY2sgfTsKICAgICBtX3Byb3Bvc2VkRGF0YWJhc2VzLnJlbW92ZSgm
ZGF0YWJhc2UpOwogfQogCkBAIC0yNDEsNyArMjQxLDcgQEAgdm9pZCBEYXRhYmFzZU1hbmFnZXI6
OnN0b3BEYXRhYmFzZXMoRG9jdW1lbnQmIGRvY3VtZW50LCBEYXRhYmFzZVRhc2tTeW5jaHJvbml6
ZXIKIFN0cmluZyBEYXRhYmFzZU1hbmFnZXI6OmZ1bGxQYXRoRm9yRGF0YWJhc2UoU2VjdXJpdHlP
cmlnaW4mIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBuYW1lLCBib29sIGNyZWF0ZUlmRG9lc05vdEV4
aXN0KQogewogICAgIHsKLSAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fcHJvcG9zZWREYXRhYmFz
ZXNNdXRleCB9OworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9wcm9wb3NlZERhdGFiYXNlc0xv
Y2sgfTsKICAgICAgICAgZm9yIChhdXRvKiBwcm9wb3NlZERhdGFiYXNlIDogbV9wcm9wb3NlZERh
dGFiYXNlcykgewogICAgICAgICAgICAgaWYgKHByb3Bvc2VkRGF0YWJhc2UtPmRldGFpbHMoKS5u
YW1lKCkgPT0gbmFtZSAmJiBwcm9wb3NlZERhdGFiYXNlLT5vcmlnaW4oKS5lcXVhbCgmb3JpZ2lu
KSkKICAgICAgICAgICAgICAgICByZXR1cm4gU3RyaW5nKCk7CkBAIC0yNTMsNyArMjUzLDcgQEAg
U3RyaW5nIERhdGFiYXNlTWFuYWdlcjo6ZnVsbFBhdGhGb3JEYXRhYmFzZShTZWN1cml0eU9yaWdp
biYgb3JpZ2luLCBjb25zdCBTdHJpbmcKIERhdGFiYXNlRGV0YWlscyBEYXRhYmFzZU1hbmFnZXI6
OmRldGFpbHNGb3JOYW1lQW5kT3JpZ2luKGNvbnN0IFN0cmluZyYgbmFtZSwgU2VjdXJpdHlPcmln
aW4mIG9yaWdpbikKIHsKICAgICB7Ci0gICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3Byb3Bvc2Vk
RGF0YWJhc2VzTXV0ZXggfTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fcHJvcG9zZWREYXRh
YmFzZXNMb2NrIH07CiAgICAgICAgIGZvciAoYXV0byogcHJvcG9zZWREYXRhYmFzZSA6IG1fcHJv
cG9zZWREYXRhYmFzZXMpIHsKICAgICAgICAgICAgIGlmIChwcm9wb3NlZERhdGFiYXNlLT5kZXRh
aWxzKCkubmFtZSgpID09IG5hbWUgJiYgcHJvcG9zZWREYXRhYmFzZS0+b3JpZ2luKCkuZXF1YWwo
Jm9yaWdpbikpIHsKICAgICAgICAgICAgICAgICBBU1NFUlQoJnByb3Bvc2VkRGF0YWJhc2UtPmRl
dGFpbHMoKS50aHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkgfHwgaXNNYWluVGhyZWFkKCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFz
ZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VN
YW5hZ2VyLmgKaW5kZXggYWE0M2ViZWY4OWMyODg0YjExNzhjMmY5ZmZlOWYxYmYwMWZhODgxYi4u
OTIxM2E0ZDRiOTIzNTllMTk1NWY2MTBiY2ZmOGY3Njg3OTg4OTQ4YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5oCkBAIC0y
OCw4ICsyOCw4IEBACiAjaW5jbHVkZSAiRGF0YWJhc2VEZXRhaWxzLmgiCiAjaW5jbHVkZSAiRXhj
ZXB0aW9uT3IuaCIKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9D
aGVja2VkTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL0xv
Y2suaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC04Nyw4ICs4Nyw4IEBAIHByaXZhdGU6
CiAgICAgRGF0YWJhc2VNYW5hZ2VyQ2xpZW50KiBtX2NsaWVudCB7IG51bGxwdHIgfTsKICAgICBi
b29sIG1fZGF0YWJhc2VJc0F2YWlsYWJsZSB7IHRydWUgfTsKIAotICAgIExvY2sgbV9wcm9wb3Nl
ZERhdGFiYXNlc011dGV4OwotICAgIEhhc2hTZXQ8UHJvcG9zZWREYXRhYmFzZSo+IG1fcHJvcG9z
ZWREYXRhYmFzZXM7CisgICAgQ2hlY2tlZExvY2sgbV9wcm9wb3NlZERhdGFiYXNlc0xvY2s7Cisg
ICAgSGFzaFNldDxQcm9wb3NlZERhdGFiYXNlKj4gbV9wcm9wb3NlZERhdGFiYXNlcyBXVEZfR1VB
UkRFRF9CWV9MT0NLKG1fcHJvcG9zZWREYXRhYmFzZXNMb2NrKTsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJh
c2UvRGF0YWJhc2VUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFz
ZS9EYXRhYmFzZVRocmVhZC5jcHAKaW5kZXggZTZkN2Q2NmEwOGQ4YWM3NTgzODY3YzA3MGIxM2M0
M2IxNjY5OWZmOS4uZTA3MDMzYWM1OTViNDIwZmJkYWFjOGJmYjNhMGE5MDFhZWJjNDY3MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRocmVh
ZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRo
cmVhZC5jcHAKQEAgLTExMCw3ICsxMTAsNyBAQCB2b2lkIERhdGFiYXNlVGhyZWFkOjpkYXRhYmFz
ZVRocmVhZCgpCiAgICAgLy8gaW5jb25zaXN0ZW50IG9yIGxvY2tlZCBzdGF0ZS4KICAgICBEYXRh
YmFzZVNldCBvcGVuU2V0Q29weTsKICAgICB7Ci0gICAgICAgIExvY2tlciBsb2NrZXIgeyBtX29w
ZW5EYXRhYmFzZVNldE11dGV4IH07CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX29wZW5EYXRh
YmFzZVNldExvY2sgfTsKICAgICAgICAgaWYgKG1fb3BlbkRhdGFiYXNlU2V0LnNpemUoKSA+IDAp
IHsKICAgICAgICAgICAgIC8vIEFzIHRoZSBjYWxsIHRvIGNsb3NlIHdpbGwgbW9kaWZ5IHRoZSBv
cmlnaW5hbCBzZXQsIHdlIG11c3QgdGFrZSBhIGNvcHkgdG8gaXRlcmF0ZSBvdmVyLgogICAgICAg
ICAgICAgb3BlblNldENvcHkuc3dhcChtX29wZW5EYXRhYmFzZVNldCk7CkBAIC0xMzQsNyArMTM0
LDcgQEAgdm9pZCBEYXRhYmFzZVRocmVhZDo6ZGF0YWJhc2VUaHJlYWQoKQogCiB2b2lkIERhdGFi
YXNlVGhyZWFkOjpyZWNvcmREYXRhYmFzZU9wZW4oRGF0YWJhc2UmIGRhdGFiYXNlKQogewotICAg
IExvY2tlciBsb2NrZXIgeyBtX29wZW5EYXRhYmFzZVNldE11dGV4IH07CisgICAgTG9ja2VyIGxv
Y2tlciB7IG1fb3BlbkRhdGFiYXNlU2V0TG9jayB9OwogCiAgICAgQVNTRVJUKG1fdGhyZWFkID09
ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAgICAgQVNTRVJUKCFtX29wZW5EYXRhYmFzZVNldC5jb250
YWlucygmZGF0YWJhc2UpKTsKQEAgLTE0Myw3ICsxNDMsNyBAQCB2b2lkIERhdGFiYXNlVGhyZWFk
OjpyZWNvcmREYXRhYmFzZU9wZW4oRGF0YWJhc2UmIGRhdGFiYXNlKQogCiB2b2lkIERhdGFiYXNl
VGhyZWFkOjpyZWNvcmREYXRhYmFzZUNsb3NlZChEYXRhYmFzZSYgZGF0YWJhc2UpCiB7Ci0gICAg
TG9ja2VyIGxvY2tlciB7IG1fb3BlbkRhdGFiYXNlU2V0TXV0ZXggfTsKKyAgICBMb2NrZXIgbG9j
a2VyIHsgbV9vcGVuRGF0YWJhc2VTZXRMb2NrIH07CiAKICAgICBBU1NFUlQobV90aHJlYWQgPT0g
JlRocmVhZDo6Y3VycmVudCgpKTsKICAgICBBU1NFUlQobV9xdWV1ZS5raWxsZWQoKSB8fCBtX29w
ZW5EYXRhYmFzZVNldC5jb250YWlucygmZGF0YWJhc2UpKTsKQEAgLTE3Miw3ICsxNzIsNyBAQCB2
b2lkIERhdGFiYXNlVGhyZWFkOjp1bnNjaGVkdWxlRGF0YWJhc2VUYXNrcyhEYXRhYmFzZSYgZGF0
YWJhc2UpCiAKIGJvb2wgRGF0YWJhc2VUaHJlYWQ6Omhhc1BlbmRpbmdEYXRhYmFzZUFjdGl2aXR5
KCkgY29uc3QKIHsKLSAgICBMb2NrZXIgbG9ja2VyIHsgbV9vcGVuRGF0YWJhc2VTZXRNdXRleCB9
OworICAgIExvY2tlciBsb2NrZXIgeyBtX29wZW5EYXRhYmFzZVNldExvY2sgfTsKICAgICBmb3Ig
KGF1dG8mIGRhdGFiYXNlIDogbV9vcGVuRGF0YWJhc2VTZXQpIHsKICAgICAgICAgaWYgKGRhdGFi
YXNlLT5oYXNQZW5kaW5nQ3JlYXRpb25FdmVudCgpIHx8IGRhdGFiYXNlLT5oYXNQZW5kaW5nVHJh
bnNhY3Rpb24oKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRocmVhZC5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRocmVhZC5oCmluZGV4IGJkNmM5NzQx
ZWU5YWFiY2E0OWY5YzRkOGNhNmVjOTk5YzBmM2U3ZTQuLjVkYzQxMWNjNTYzM2M0NmRhMTYxYWUw
MmJhNDk5YTliMGI1YTc0MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
ZGF0YWJhc2UvRGF0YWJhc2VUaHJlYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmRhdGFiYXNlL0RhdGFiYXNlVGhyZWFkLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNwcmFnbWEgb25j
ZQogCiAjaW5jbHVkZSA8bWVtb3J5PgorI2luY2x1ZGUgPHd0Zi9DaGVja2VkTG9jay5oPgogI2lu
Y2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL01lc3NhZ2VRdWV1ZS5oPgogI2lu
Y2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTc1LDggKzc2LDggQEAgcHJpdmF0ZToKIAogICAgIC8v
IFRoaXMgc2V0IGtlZXBzIHRyYWNrIG9mIHRoZSBvcGVuIGRhdGFiYXNlcyB0aGF0IGhhdmUgYmVl
biB1c2VkIG9uIHRoaXMgdGhyZWFkLgogICAgIHVzaW5nIERhdGFiYXNlU2V0ID0gSGFzaFNldDxS
ZWZQdHI8RGF0YWJhc2U+PjsKLSAgICBtdXRhYmxlIExvY2sgbV9vcGVuRGF0YWJhc2VTZXRNdXRl
eDsKLSAgICBEYXRhYmFzZVNldCBtX29wZW5EYXRhYmFzZVNldDsKKyAgICBtdXRhYmxlIENoZWNr
ZWRMb2NrIG1fb3BlbkRhdGFiYXNlU2V0TG9jazsKKyAgICBEYXRhYmFzZVNldCBtX29wZW5EYXRh
YmFzZVNldCBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fb3BlbkRhdGFiYXNlU2V0TG9jayk7CiAKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8U1FMVHJhbnNhY3Rpb25Db29yZGluYXRvcj4gbV90cmFuc2FjdGlv
bkNvb3JkaW5hdG9yOwogICAgIERhdGFiYXNlVGFza1N5bmNocm9uaXplciogbV9jbGVhbnVwU3lu
YyB7IG51bGxwdHIgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0
YWJhc2UvU1FMQ2FsbGJhY2tXcmFwcGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRh
dGFiYXNlL1NRTENhbGxiYWNrV3JhcHBlci5oCmluZGV4IDI3MjE0NDEzNzUyNTkzZWQwOGEyNjYy
OTQwZmNhODdhOTI0MzZjNWIuLmMyZWQzNjZlM2MwOGZlOWUxOWZmN2NlYzk5OTU1ZWQ0NDAxMzk5
NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMQ2Fs
bGJhY2tXcmFwcGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9T
UUxDYWxsYmFja1dyYXBwZXIuaApAQCAtMjksNyArMjksNyBAQAogI3ByYWdtYSBvbmNlCiAKICNp
bmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSA8d3RmL0xvY2suaD4K
KyNpbmNsdWRlIDx3dGYvQ2hlY2tlZExvY2suaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBA
IC01OCw3ICs1OCw3IEBAIHB1YmxpYzoKICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
c2NyaXB0RXhlY3V0aW9uQ29udGV4dFB0cjsKICAgICAgICAgVCogY2FsbGJhY2s7CiAgICAgICAg
IHsKLSAgICAgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX211dGV4IH07CisgICAgICAgICAgICBM
b2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAgICAgICAgICAgICBpZiAoIW1fY2FsbGJhY2spIHsK
ICAgICAgICAgICAgICAgICBBU1NFUlQoIW1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuOwpAQCAtODMsMTkgKzgzLDIwIEBAIHB1YmxpYzoKIAogICAgIFJl
ZlB0cjxUPiB1bndyYXAoKQogICAgIHsKLSAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbXV0ZXgg
fTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogICAgICAgICBBU1NFUlQoIW1f
Y2FsbGJhY2sgfHwgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5pc0NvbnRleHRUaHJlYWQoKSk7
CiAgICAgICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IG51bGxwdHI7CiAgICAgICAgIHJl
dHVybiBXVEZNb3ZlKG1fY2FsbGJhY2spOwogICAgIH0KIAogICAgIC8vIFVzZWZ1bCBmb3Igb3B0
aW1pemF0aW9ucyBvbmx5LCBwbGVhc2UgdGVzdCB0aGUgcmV0dXJuIHZhbHVlIG9mIHVud3JhcCB0
byBiZSBzdXJlLgotICAgIGJvb2wgaGFzQ2FsbGJhY2soKSBjb25zdCB7IHJldHVybiBtX2NhbGxi
YWNrOyB9CisgICAgLy8gRklYTUU6IFRoaXMgaXMgbm90IHRocmVhZC1zYWZlLgorICAgIGJvb2wg
aGFzQ2FsbGJhY2soKSBjb25zdCBXVEZfSUdOT1JFU19USFJFQURfU0FGRVRZX0FOQUxZU0lTIHsg
cmV0dXJuIG1fY2FsbGJhY2s7IH0KIAogcHJpdmF0ZToKLSAgICBMb2NrIG1fbXV0ZXg7Ci0gICAg
UmVmUHRyPFQ+IG1fY2FsbGJhY2s7Ci0gICAgUmVmUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ+
IG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKKyAgICBDaGVja2VkTG9jayBtX2xvY2s7CisgICAg
UmVmUHRyPFQ+IG1fY2FsbGJhY2sgV1RGX0dVQVJERURfQllfTE9DSyhtX2xvY2spOworICAgIFJl
ZlB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0PiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQgV1RG
X0dVQVJERURfQllfTE9DSyhtX2xvY2spOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2Fj
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0
aW9uLmNwcAppbmRleCBlNzQyMWM3N2M1MzI3MDExZjU4YmYxMjYxNmY5ZTA0ZGI1MWI2NjZlLi5k
MTRlYmZjNTc5Y2VhNjM4MzRhODc5M2EzNWVkZWNkNTY0ODY5YWU3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uLmNwcApAQCAt
MTQ0LDcgKzE0NCw3IEBAIHZvaWQgU1FMVHJhbnNhY3Rpb246OmNhbGxFcnJvckNhbGxiYWNrRHVl
VG9JbnRlcnJ1cHRpb24oKQogCiB2b2lkIFNRTFRyYW5zYWN0aW9uOjplbnF1ZXVlU3RhdGVtZW50
KHN0ZDo6dW5pcXVlX3B0cjxTUUxTdGF0ZW1lbnQ+IHN0YXRlbWVudCkKIHsKLSAgICBMb2NrZXIg
bG9ja2VyIHsgbV9zdGF0ZW1lbnRNdXRleCB9OworICAgIExvY2tlciBsb2NrZXIgeyBtX3N0YXRl
bWVudExvY2sgfTsKICAgICBtX3N0YXRlbWVudFF1ZXVlLmFwcGVuZChXVEZNb3ZlKHN0YXRlbWVu
dCkpOwogfQogCkBAIC0xOTAsNyArMTkwLDcgQEAgdm9pZCBTUUxUcmFuc2FjdGlvbjo6Y2hlY2tB
bmRIYW5kbGVDbG9zZWREYXRhYmFzZSgpCiAgICAgLy8gSWYgdGhlIGRhdGFiYXNlIHdhcyBzdG9w
cGVkLCBkb24ndCBkbyBhbnl0aGluZyBhbmQgY2FuY2VsIHF1ZXVlZCB3b3JrCiAgICAgTE9HKFN0
b3JhZ2VBUEksICJEYXRhYmFzZSB3YXMgc3RvcHBlZCBvciBpbnRlcnJ1cHRlZCAtIGNhbmNlbGxp
bmcgd29yayBmb3IgdGhpcyB0cmFuc2FjdGlvbiIpOwogCi0gICAgTG9ja2VyIGxvY2tlciB7IG1f
c3RhdGVtZW50TXV0ZXggfTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9zdGF0ZW1lbnRMb2NrIH07
CiAgICAgbV9zdGF0ZW1lbnRRdWV1ZS5jbGVhcigpOwogICAgIG1fbmV4dFN0ZXAgPSBudWxscHRy
OwogCkBAIC01MTYsNyArNTE2LDcgQEAgdm9pZCBTUUxUcmFuc2FjdGlvbjo6Z2V0TmV4dFN0YXRl
bWVudCgpCiB7CiAgICAgbV9jdXJyZW50U3RhdGVtZW50ID0gbnVsbHB0cjsKIAotICAgIExvY2tl
ciBsb2NrZXIgeyBtX3N0YXRlbWVudE11dGV4IH07CisgICAgTG9ja2VyIGxvY2tlciB7IG1fc3Rh
dGVtZW50TG9jayB9OwogICAgIGlmICghbV9zdGF0ZW1lbnRRdWV1ZS5pc0VtcHR5KCkpCiAgICAg
ICAgIG1fY3VycmVudFN0YXRlbWVudCA9IG1fc3RhdGVtZW50UXVldWUudGFrZUZpcnN0KCk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5z
YWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0
aW9uLmgKaW5kZXggNTQwZjZlMzFmZjNiM2UyOTEyYTk4ZTdmMmQ4MDc5YmE1OTAwYTJiYy4uMzFl
MTBiNzIzODQxOWNmYzBiNzJjYjUxNzA4ZTA2YTliY2VlZjBlNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb24uaApAQCAtMzMsNiAr
MzMsNyBAQAogI2luY2x1ZGUgIlNRTFRyYW5zYWN0aW9uQmFja2VuZC5oIgogI2luY2x1ZGUgIlNR
TFRyYW5zYWN0aW9uU3RhdGVNYWNoaW5lLmgiCiAjaW5jbHVkZSAiU1FMVmFsdWUuaCIKKyNpbmNs
dWRlIDx3dGYvQ2hlY2tlZExvY2suaD4KICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRl
IDx3dGYvTG9jay5oPgogCkBAIC0xMzgsOCArMTM5LDggQEAgcHJpdmF0ZToKICAgICBib29sIG1f
cmVhZE9ubHkgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9oYXNWZXJzaW9uTWlzbWF0Y2ggeyBmYWxz
ZSB9OwogCi0gICAgTG9jayBtX3N0YXRlbWVudE11dGV4OwotICAgIERlcXVlPHN0ZDo6dW5pcXVl
X3B0cjxTUUxTdGF0ZW1lbnQ+PiBtX3N0YXRlbWVudFF1ZXVlOworICAgIENoZWNrZWRMb2NrIG1f
c3RhdGVtZW50TG9jazsKKyAgICBEZXF1ZTxzdGQ6OnVuaXF1ZV9wdHI8U1FMU3RhdGVtZW50Pj4g
bV9zdGF0ZW1lbnRRdWV1ZSBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fc3RhdGVtZW50TG9jayk7CiAK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8U1FMU3RhdGVtZW50PiBtX2N1cnJlbnRTdGF0ZW1lbnQ7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNh
Y3Rpb25CYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FM
VHJhbnNhY3Rpb25CYWNrZW5kLmNwcAppbmRleCBhMDQzZjdjYTMyNmJlOGMwZTliYzk4M2JjMzdi
YmY0NTE4ZTkwNjE0Li42MmIyN2NkYjMzMjUxNGQ2YTQ5NzEwYTA3MWQ0MTE3NWE3MGRiZGRlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0
aW9uQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9T
UUxUcmFuc2FjdGlvbkJhY2tlbmQuY3BwCkBAIC0zNTcsNyArMzU3LDcgQEAgdm9pZCBTUUxUcmFu
c2FjdGlvbkJhY2tlbmQ6OmRvQ2xlYW51cCgpCiAKICAgICBtX2Zyb250ZW5kLnJlbGVhc2VPcmln
aW5Mb2NrSWZOZWVkZWQoKTsKIAotICAgIExvY2tlciBsb2NrZXIgeyBtX2Zyb250ZW5kLm1fc3Rh
dGVtZW50TXV0ZXggfTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9mcm9udGVuZC5tX3N0YXRlbWVu
dExvY2sgfTsKICAgICBtX2Zyb250ZW5kLm1fc3RhdGVtZW50UXVldWUuY2xlYXIoKTsKIAogICAg
IGlmIChtX2Zyb250ZW5kLm1fc3FsaXRlVHJhbnNhY3Rpb24pIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmggYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5o
CmluZGV4IDI4NDVjNzEyNGM5Njg1ZGU5NDY0OGQ2NjM5NjVmYzYyZTE3ZDdkN2UuLjgxYWI5M2M2
YjliYjQ2YWNmYWNhNDJiOThkMTViMDQxZmRmOTJjNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuaApA
QCAtMzYxLDcgKzM2MSw3IEBAIHB1YmxpYzoKICAgICAvLyBCb3RoIHNldFJvb3ROb2RlSUQgYW5k
IHNldEZvY3VzZWROb2RlSUQgYXJlIGNhbGxlZCBkdXJpbmcgdGhlIGdlbmVyYXRpb24KICAgICAv
LyBvZiB0aGUgSXNvbGF0ZWRUcmVlLgogICAgIC8vIEZvY3VzZWQgbm9kZSB1cGRhdGVzIGluIEFY
T2JqZWN0Q2FjaGUgdXNlIHNldEZvY3VzTm9kZUlELgotICAgIHZvaWQgc2V0Um9vdE5vZGUoQVhJ
c29sYXRlZE9iamVjdCopOworICAgIHZvaWQgc2V0Um9vdE5vZGUoQVhJc29sYXRlZE9iamVjdCop
IFdURl9SRVFVSVJFU19MT0NLKG1fY2hhbmdlTG9nTG9jayk7CiAgICAgdm9pZCBzZXRGb2N1c2Vk
Tm9kZUlEKEFYSUQpOwogCiAgICAgLy8gQ2FsbGVkIG9uIEFYIHRocmVhZCBmcm9tIFdlYkFjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVyIG1ldGhvZHMuCkBAIC0zODEsNyArMzgxLDcgQEAgcHJpdmF0
ZToKICAgICAvLyBDYWxsIG9uIG1haW4gdGhyZWFkCiAgICAgUmVmPEFYSXNvbGF0ZWRPYmplY3Q+
IGNyZWF0ZVN1YnRyZWUoQVhDb3JlT2JqZWN0JiwgQVhJRCBwYXJlbnRJRCwgYm9vbCBhdHRhY2hX
cmFwcGVyKTsKICAgICAvLyBDYWxsZWQgb24gbWFpbiB0aHJlYWQgdG8gdXBkYXRlIGJvdGggbV9u
b2RlTWFwIGFuZCBtX3BlbmRpbmdDaGlsZHJlblVwZGF0ZXMuCi0gICAgdm9pZCB1cGRhdGVDaGls
ZHJlbklEcyhBWElEIHBhcmVudElELCBWZWN0b3I8QVhJRD4mJiBjaGlsZHJlbklEcyk7CisgICAg
dm9pZCB1cGRhdGVDaGlsZHJlbklEcyhBWElEIHBhcmVudElELCBWZWN0b3I8QVhJRD4mJiBjaGls
ZHJlbklEcykgV1RGX1JFUVVJUkVTX0xPQ0sobV9jaGFuZ2VMb2dMb2NrKTsKIAogICAgIEFYSXNv
bGF0ZWRUcmVlSUQgbV90cmVlSUQ7CiAgICAgQVhPYmplY3RDYWNoZSogbV9heE9iamVjdENhY2hl
IHsgbnVsbHB0ciB9OwpAQCAtMzkzLDE1ICszOTMsMTUgQEAgcHJpdmF0ZToKICAgICBIYXNoTWFw
PEFYSUQsIFJlZjxBWElzb2xhdGVkT2JqZWN0Pj4gbV9yZWFkZXJUaHJlYWROb2RlTWFwOwogCiAg
ICAgLy8gV3JpdHRlbiB0byBieSBtYWluIHRocmVhZCB1bmRlciBsb2NrLCBhY2Nlc3NlZCBhbmQg
YXBwbGllZCBieSBBWCB0aHJlYWQuCi0gICAgUmVmUHRyPEFYSXNvbGF0ZWRPYmplY3Q+IG1fcm9v
dE5vZGU7Ci0gICAgVmVjdG9yPE5vZGVDaGFuZ2U+IG1fcGVuZGluZ0FwcGVuZHM7IC8vIE5vZGVz
IHRvIGJlIGFkZGVkIHRvIHRoZSB0cmVlIGFuZCBwbGF0Zm9ybS13cmFwcGVkLgotICAgIFZlY3Rv
cjxBWFByb3BlcnR5Q2hhbmdlPiBtX3BlbmRpbmdQcm9wZXJ0eUNoYW5nZXM7Ci0gICAgVmVjdG9y
PEFYSUQ+IG1fcGVuZGluZ05vZGVSZW1vdmFsczsgLy8gTm9kZXMgdG8gYmUgcmVtb3ZlZCBmcm9t
IHRoZSB0cmVlLgotICAgIFZlY3RvcjxBWElEPiBtX3BlbmRpbmdTdWJ0cmVlUmVtb3ZhbHM7IC8v
IE5vZGVzIHdob3NlIHN1YnRyZWVzIGFyZSB0byBiZSByZW1vdmVkIGZyb20gdGhlIHRyZWUuCi0g
ICAgVmVjdG9yPHN0ZDo6cGFpcjxBWElELCBWZWN0b3I8QVhJRD4+PiBtX3BlbmRpbmdDaGlsZHJl
blVwZGF0ZXM7Ci0gICAgQVhJRCBtX3BlbmRpbmdGb2N1c2VkTm9kZUlEIHsgSW52YWxpZEFYSUQg
fTsKKyAgICBSZWZQdHI8QVhJc29sYXRlZE9iamVjdD4gbV9yb290Tm9kZSBXVEZfR1VBUkRFRF9C
WV9MT0NLKG1fY2hhbmdlTG9nTG9jayk7CisgICAgVmVjdG9yPE5vZGVDaGFuZ2U+IG1fcGVuZGlu
Z0FwcGVuZHMgV1RGX0dVQVJERURfQllfTE9DSyhtX2NoYW5nZUxvZ0xvY2spOyAvLyBOb2RlcyB0
byBiZSBhZGRlZCB0byB0aGUgdHJlZSBhbmQgcGxhdGZvcm0td3JhcHBlZC4KKyAgICBWZWN0b3I8
QVhQcm9wZXJ0eUNoYW5nZT4gbV9wZW5kaW5nUHJvcGVydHlDaGFuZ2VzIFdURl9HVUFSREVEX0JZ
X0xPQ0sobV9jaGFuZ2VMb2dMb2NrKTsKKyAgICBWZWN0b3I8QVhJRD4gbV9wZW5kaW5nTm9kZVJl
bW92YWxzIFdURl9HVUFSREVEX0JZX0xPQ0sobV9jaGFuZ2VMb2dMb2NrKTsgLy8gTm9kZXMgdG8g
YmUgcmVtb3ZlZCBmcm9tIHRoZSB0cmVlLgorICAgIFZlY3RvcjxBWElEPiBtX3BlbmRpbmdTdWJ0
cmVlUmVtb3ZhbHMgV1RGX0dVQVJERURfQllfTE9DSyhtX2NoYW5nZUxvZ0xvY2spOyAvLyBOb2Rl
cyB3aG9zZSBzdWJ0cmVlcyBhcmUgdG8gYmUgcmVtb3ZlZCBmcm9tIHRoZSB0cmVlLgorICAgIFZl
Y3RvcjxzdGQ6OnBhaXI8QVhJRCwgVmVjdG9yPEFYSUQ+Pj4gbV9wZW5kaW5nQ2hpbGRyZW5VcGRh
dGVzIFdURl9HVUFSREVEX0JZX0xPQ0sobV9jaGFuZ2VMb2dMb2NrKTsKKyAgICBBWElEIG1fcGVu
ZGluZ0ZvY3VzZWROb2RlSUQgV1RGX0dVQVJERURfQllfTE9DSyhtX2NoYW5nZUxvZ0xvY2spIHsg
SW52YWxpZEFYSUQgfTsKICAgICBBWElEIG1fZm9jdXNlZE5vZGVJRCB7IEludmFsaWRBWElEIH07
Ci0gICAgTG9jayBtX2NoYW5nZUxvZ0xvY2s7CisgICAgQ2hlY2tlZExvY2sgbV9jaGFuZ2VMb2dM
b2NrOwogfTsKIAogaW5saW5lIEFYT2JqZWN0Q2FjaGUqIEFYSXNvbGF0ZWRUcmVlOjpheE9iamVj
dENhY2hlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Fib3J0
YWJsZVRhc2tRdWV1ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQWJvcnRhYmxlVGFza1F1
ZXVlLmgKaW5kZXggODI2OTlkZTYwZjA1NjUxZDZjNzA4MTYxYThhMzhhYzcxOTI5YTY2Yy4uZjg0
OTFmMDEyZTVkNjY4MjYwYzUwMzdkNDlkZjhkNjcwZjhmNTlmMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vQWJvcnRhYmxlVGFza1F1ZXVlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vQWJvcnRhYmxlVGFza1F1ZXVlLmgKQEAgLTIwLDEwICsyMCwxMCBAQAogCiAj
cHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgPHd0Zi9Db25kaXRpb24uaD4KKyNpbmNsdWRlIDx3dGYv
Q2hlY2tlZENvbmRpdGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9DaGVja2VkTG9jay5oPgogI2luY2x1
ZGUgPHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgotI2luY2x1ZGUgPHd0
Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGli
RXh0cmFzLmg+CiAKQEAgLTczLDcgKzczLDcgQEAgcHVibGljOgogICAgIH5BYm9ydGFibGVUYXNr
UXVldWUoKQogICAgIHsKICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICAgICAg
QVNTRVJUKCFtX211dGV4LmlzSGVsZCgpKTsKKyAgICAgICAgQVNTRVJUKCFtX2xvY2suaXNIZWxk
KCkpOwogICAgICAgICBBU1NFUlQobV9jaGFubmVsLmlzRW1wdHkoKSk7CiAgICAgfQogCkBAIC05
NCw3ICs5NCw3IEBAIHB1YmxpYzoKICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAog
ICAgICAgICB7Ci0gICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9tdXRleCB9OworICAgICAg
ICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogICAgICAgICAgICAgbV9hYm9ydGluZyA9
IHRydWU7CiAgICAgICAgICAgICBjYW5jZWxBbGxUYXNrcygpOwogICAgICAgICB9CkBAIC0xMDgs
NyArMTA4LDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKIAotICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9tdXRleCB9OworICAgICAgICBMb2NrZXIg
bG9ja2VyIHsgbV9sb2NrIH07CiAgICAgICAgIEFTU0VSVChtX2Fib3J0aW5nKTsKICAgICAgICAg
bV9hYm9ydGluZyA9IGZhbHNlOwogICAgIH0KQEAgLTEyMyw3ICsxMjMsNyBAQCBwdWJsaWM6CiAg
ICAgewogICAgICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKIAotICAgICAgICBMb2NrZXIg
bG9ja2VyIHsgbV9tdXRleCB9OworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAg
ICAgICAgIGlmIChtX2Fib3J0aW5nKQogICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0xNDMsMTkg
KzE0MywxOSBAQCBwdWJsaWM6CiAgICAgICAgIC8vIERvbid0IGRlYWRsb2NrIHRoZSBtYWluIHRo
cmVhZCB3aXRoIGl0c2VsZi4KICAgICAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAKLSAg
ICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbXV0ZXggfTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7
IG1fbG9jayB9OwogICAgICAgICBpZiAobV9hYm9ydGluZykKICAgICAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8Uj4gcmVzcG9uc2UgPSBXVEY6Om51bGxv
cHQ7CiAgICAgICAgIHBvc3RUYXNrKFt0aGlzLCAmcmVzcG9uc2UsICZtYWluVGhyZWFkVGFza0hh
bmRsZXJdKCkgewogICAgICAgICAgICAgUiByZXNwb25zZVZhbHVlID0gbWFpblRocmVhZFRhc2tI
YW5kbGVyKCk7Ci0gICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9tdXRleCB9OworICAgICAg
ICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogICAgICAgICAgICAgaWYgKCFtX2Fib3J0
aW5nKQogICAgICAgICAgICAgICAgIHJlc3BvbnNlID0gV1RGTW92ZShyZXNwb25zZVZhbHVlKTsK
ICAgICAgICAgICAgIG1fYWJvcnRlZE9yUmVzcG9uc2VTZXQubm90aWZ5QWxsKCk7CiAgICAgICAg
IH0pOwotICAgICAgICBtX2Fib3J0ZWRPclJlc3BvbnNlU2V0LndhaXQobV9tdXRleCwgW3RoaXMs
ICZyZXNwb25zZV0oKSB7CisgICAgICAgIG1fYWJvcnRlZE9yUmVzcG9uc2VTZXQud2FpdChtX2xv
Y2ssIFt0aGlzLCAmcmVzcG9uc2VdKCkgewogICAgICAgICAgICAgcmV0dXJuIG1fYWJvcnRpbmcg
fHwgcmVzcG9uc2U7CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm4gcmVzcG9uc2U7CkBAIC0x
OTcsMTAgKzE5NywxMSBAQCBwcml2YXRlOgogICAgICAgICAgICAgaWYgKGlzQ2FuY2VsbGVkKCkp
CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgICAgICBMb2NrZXIgbG9jayB7IG1f
dGFza1F1ZXVlLT5tX211dGV4IH07Ci0gICAgICAgICAgICBBU1NFUlQodGhpcyA9PSBtX3Rhc2tR
dWV1ZS0+bV9jaGFubmVsLmZpcnN0KCkucHRyKCkpOwotICAgICAgICAgICAgbV90YXNrUXVldWUt
Pm1fY2hhbm5lbC5yZW1vdmVGaXJzdCgpOwotICAgICAgICAgICAgbG9jay51bmxvY2tFYXJseSgp
OworICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIExvY2tlciBsb2NrIHsgbV90YXNrUXVl
dWUtPm1fbG9jayB9OworICAgICAgICAgICAgICAgIEFTU0VSVCh0aGlzID09IG1fdGFza1F1ZXVl
LT5tX2NoYW5uZWwuZmlyc3QoKS5wdHIoKSk7CisgICAgICAgICAgICAgICAgbV90YXNrUXVldWUt
Pm1fY2hhbm5lbC5yZW1vdmVGaXJzdCgpOworICAgICAgICAgICAgfQogICAgICAgICAgICAgbV90
YXNrQ2FsbGJhY2soKTsKICAgICAgICAgfQogCkBAIC0yMTMsMjcgKzIxNCwyNyBAQCBwcml2YXRl
OgogICAgICAgICB7IH0KICAgICB9OwogCi0gICAgdm9pZCBwb3N0VGFzayhXVEY6OkZ1bmN0aW9u
PHZvaWQoKT4mJiBjYWxsYmFjaykKKyAgICB2b2lkIHBvc3RUYXNrKFdURjo6RnVuY3Rpb248dm9p
ZCgpPiYmIGNhbGxiYWNrKSBXVEZfUkVRVUlSRVNfTE9DSyhtX2xvY2spCiAgICAgewotICAgICAg
ICBBU1NFUlQobV9tdXRleC5pc0hlbGQoKSk7CisgICAgICAgIEFTU0VSVChtX2xvY2suaXNIZWxk
KCkpOwogICAgICAgICBSZWY8VGFzaz4gdGFzayA9IFRhc2s6OmNyZWF0ZSh0aGlzLCBXVEZNb3Zl
KGNhbGxiYWNrKSk7CiAgICAgICAgIG1fY2hhbm5lbC5hcHBlbmQodGFzay5jb3B5UmVmKCkpOwog
ICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Rhc2sgPSBXVEZNb3ZlKHRhc2spXSgp
IHsgdGFzay0+ZGlzcGF0Y2goKTsgfSk7CiAgICAgfQogCi0gICAgdm9pZCBjYW5jZWxBbGxUYXNr
cygpCisgICAgdm9pZCBjYW5jZWxBbGxUYXNrcygpIFdURl9SRVFVSVJFU19MT0NLKG1fbG9jaykK
ICAgICB7CiAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgICAgIEFTU0VSVCht
X211dGV4LmlzSGVsZCgpKTsKKyAgICAgICAgQVNTRVJUKG1fbG9jay5pc0hlbGQoKSk7CiAgICAg
ICAgIGZvciAoUmVmPFRhc2s+JiB0YXNrIDogbV9jaGFubmVsKQogICAgICAgICAgICAgdGFzay0+
Y2FuY2VsKCk7CiAgICAgICAgIG1fY2hhbm5lbC5jbGVhcigpOwogICAgIH0KIAotICAgIGJvb2wg
bV9hYm9ydGluZyB7IGZhbHNlIH07Ci0gICAgTG9jayBtX211dGV4OwotICAgIENvbmRpdGlvbiBt
X2Fib3J0ZWRPclJlc3BvbnNlU2V0OwotICAgIFdURjo6RGVxdWU8UmVmPFRhc2s+PiBtX2NoYW5u
ZWw7CisgICAgYm9vbCBtX2Fib3J0aW5nIFdURl9HVUFSREVEX0JZX0xPQ0sobV9sb2NrKSB7IGZh
bHNlIH07CisgICAgQ2hlY2tlZExvY2sgbV9sb2NrOworICAgIENoZWNrZWRDb25kaXRpb24gbV9h
Ym9ydGVkT3JSZXNwb25zZVNldDsKKyAgICBXVEY6OkRlcXVlPFJlZjxUYXNrPj4gbV9jaGFubmVs
IFdURl9HVUFSREVEX0JZX0xPQ0sobV9sb2NrKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlv
RGVzdGluYXRpb25Db2NvYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2Nv
YS9BdWRpb0Rlc3RpbmF0aW9uQ29jb2EuY3BwCmluZGV4IGMwZTA4Y2E5NTZlNWU4NTQwNzkwYjVi
Yzc0YTM5ZmU2YTQ5YzcyMzYuLjM5MmMzNjE0MDRmYzJjOTUwZWJiOTM4ODlhNjI5Y2I1YTM3MWU0
MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlv
RGVzdGluYXRpb25Db2NvYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
Y29jb2EvQXVkaW9EZXN0aW5hdGlvbkNvY29hLmNwcApAQCAtMjE5LDEwICsyMTksMTAgQEAgT1NT
dGF0dXMgQXVkaW9EZXN0aW5hdGlvbkNvY29hOjpyZW5kZXIoZG91YmxlIHNhbXBsZVRpbWUsIHVp
bnQ2NF90IGhvc3RUaW1lLCBVSW4KICAgICB9CiAKICAgICAvLyBXaGVuIHRoZXJlIGlzIGEgQXVk
aW9Xb3JrbGV0LCB3ZSBkbyByZW5kZXJpbmcgb24gdGhlIEF1ZGlvV29ya2xldFRocmVhZC4KLSAg
ICBhdXRvIGxvY2tlciA9IHRyeUhvbGRMb2NrKG1fZGlzcGF0Y2hUb1JlbmRlclRocmVhZExvY2sp
OwotICAgIGlmICghbG9ja2VyKQorICAgIGlmICghbV9kaXNwYXRjaFRvUmVuZGVyVGhyZWFkTG9j
ay50cnlMb2NrKCkpCiAgICAgICAgIHJldHVybiAtMTsKIAorICAgIExvY2tlciBsb2NrZXIgeyBB
ZG9wdExvY2tUYWcgeyB9LCBtX2Rpc3BhdGNoVG9SZW5kZXJUaHJlYWRMb2NrIH07CiAgICAgaWYg
KCFtX2Rpc3BhdGNoVG9SZW5kZXJUaHJlYWQpCiAgICAgICAgIHJlbmRlck9uUmVuZGVyaW5nVGhl
YWRJZlBsYXlpbmcoZnJhbWVzVG9SZW5kZXIpOwogICAgIGVsc2UgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9EZXN0aW5hdGlvbkNvY29hLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0Rlc3RpbmF0aW9uQ29j
b2EuaAppbmRleCA2OTkwNTM0YTUzYjNjYTJhNTExNzcxYmIzNGEzOTYzYTIyMmUyZDRhLi45YzNi
ZDdhNGY5NzQ2NWM5MWJjZTM2MzU3YTg3M2Q4YjBjMGZiYjMxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0Rlc3RpbmF0aW9uQ29jb2EuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0Rlc3RpbmF0aW9uQ29j
b2EuaApAQCAtOTEsOCArOTEsOCBAQCBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxNdWx0
aUNoYW5uZWxSZXNhbXBsZXI+IG1fcmVzYW1wbGVyOwogICAgIEF1ZGlvSU9Qb3NpdGlvbiBtX291
dHB1dFRpbWVzdGFtcDsKIAotICAgIExvY2sgbV9kaXNwYXRjaFRvUmVuZGVyVGhyZWFkTG9jazsK
LSAgICBGdW5jdGlvbjx2b2lkKEZ1bmN0aW9uPHZvaWQoKT4mJik+IG1fZGlzcGF0Y2hUb1JlbmRl
clRocmVhZDsKKyAgICBDaGVja2VkTG9jayBtX2Rpc3BhdGNoVG9SZW5kZXJUaHJlYWRMb2NrOwor
ICAgIEZ1bmN0aW9uPHZvaWQoRnVuY3Rpb248dm9pZCgpPiYmKT4gbV9kaXNwYXRjaFRvUmVuZGVy
VGhyZWFkIFdURl9HVUFSREVEX0JZX0xPQ0sobV9kaXNwYXRjaFRvUmVuZGVyVGhyZWFkTG9jayk7
CiAKICAgICBmbG9hdCBtX2NvbnRleHRTYW1wbGVSYXRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1l
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGlu
YXRpb25HU3RyZWFtZXIuaAppbmRleCBmZmQzZTgwZTUwNmZmZTlmNzVhZDBhODUwMDU3MWMzZDZh
MGU2NzlkLi44NDBmMGE3MWU5YzE1NzBkNzc0NmQ0MjIxOTFhYTI4ZGJiY2IxNzJhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5h
dGlvbkdTdHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJl
YW1lci9BdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyLmgKQEAgLTU4LDggKzU4LDYgQEAgcHJpdmF0
ZToKICAgICBHUmVmUHRyPEdzdEVsZW1lbnQ+IG1fc3JjOwogICAgIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+IG1fc3RhcnR1cENvbXBsZXRpb25IYW5kbGVyOwogICAgIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoYm9vbCk+IG1fc3RvcENvbXBsZXRpb25IYW5kbGVyOwotICAgIExvY2sgbV9z
ZXRTdGF0ZUxvY2s7Ci0gICAgQ29uZGl0aW9uIG1fc2V0U3RhdGVDb25kaXRpb247CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9nc3RyZWFtZXIvQXVkaW9Tb3VyY2VQcm92aWRlckdTdHJlYW1lci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9Tb3VyY2VQcm92aWRlckdT
dHJlYW1lci5jcHAKaW5kZXggNjkwYzFkYjk3NTkyOTRlNGNiMDc0NDQwMzQxMWJmOWQ1NjVlMmE2
YS4uZjc3NWEzMmZkNDc4MDJlZTUzODg1NzE2M2VkNzc5YTEyMTM4Y2Q0NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvU291cmNlUHJvdmlk
ZXJHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJl
YW1lci9BdWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVyLmNwcApAQCAtMTU5LDkgKzE1OSwxMCBA
QCB2b2lkIEF1ZGlvU291cmNlUHJvdmlkZXJHU3RyZWFtZXI6OmNvbmZpZ3VyZUF1ZGlvQmluKEdz
dEVsZW1lbnQqIGF1ZGlvQmluLCBHc3RFbAogdm9pZCBBdWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVh
bWVyOjpwcm92aWRlSW5wdXQoQXVkaW9CdXMqIGJ1cywgc2l6ZV90IGZyYW1lc1RvUHJvY2VzcykK
IHsKICAgICBHU1RfVFJBQ0UoIkZldGNoaW5nIGJ1ZmZlcnMgZnJvbSBhZGFwdGVycyIpOwotICAg
IGF1dG8gbG9ja2VyID0gdHJ5SG9sZExvY2sobV9hZGFwdGVyTXV0ZXgpOwotICAgIGlmICghbG9j
a2VyKQorICAgIGlmICghbV9hZGFwdGVyTG9jay50cnlMb2NrKCkpCiAgICAgICAgIHJldHVybjsK
KworICAgIExvY2tlciBsb2NrZXIgeyBBZG9wdExvY2tUYWcgeyB9LCBtX2FkYXB0ZXJMb2NrIH07
CiAgICAgZm9yIChhdXRvJiBpdCA6IG1fYWRhcHRlcnMpCiAgICAgICAgIGNvcHlHU3RyZWFtZXJC
dWZmZXJzVG9BdWRpb0NoYW5uZWwoaXQudmFsdWUuZ2V0KCksIGJ1cywgaXQua2V5IC0gMSwgZnJh
bWVzVG9Qcm9jZXNzKTsKIH0KQEAgLTE4Miw3ICsxODMsNyBAQCBHc3RGbG93UmV0dXJuIEF1ZGlv
U291cmNlUHJvdmlkZXJHU3RyZWFtZXI6OmhhbmRsZVNhbXBsZShHc3RBcHBTaW5rKiBzaW5rLCBi
b29sCiAKICAgICBHU1RfVFJBQ0UoIlN0b3JpbmcgYXVkaW8gc2FtcGxlICUiIEdTVF9QVFJfRk9S
TUFULCBzYW1wbGUuZ2V0KCkpOwogICAgIHsKLSAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fYWRh
cHRlck11dGV4IH07CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2FkYXB0ZXJMb2NrIH07CiAg
ICAgICAgIEdRdWFyayBxdWFyayA9IGdfcXVhcmtfZnJvbV9zdGF0aWNfc3RyaW5nKCJjaGFubmVs
LWlkIik7CiAgICAgICAgIGludCBjaGFubmVsSWQgPSBHUE9JTlRFUl9UT19JTlQoZ19vYmplY3Rf
Z2V0X3FkYXRhKEdfT0JKRUNUKHNpbmspLCBxdWFyaykpOwogICAgICAgICBHU1RfREVCVUcoIkNo
YW5uZWwgSUQ6ICVkIiwgY2hhbm5lbElkKTsKQEAgLTM4NCw3ICszODUsNyBAQCB2b2lkIEF1ZGlv
U291cmNlUHJvdmlkZXJHU3RyZWFtZXI6OmRlaW50ZXJsZWF2ZVBhZHNDb25maWd1cmVkKCkKIAog
dm9pZCBBdWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVyOjpjbGVhckFkYXB0ZXJzKCkKIHsKLSAg
ICBMb2NrZXIgbG9ja2VyIHsgbV9hZGFwdGVyTXV0ZXggfTsKKyAgICBMb2NrZXIgbG9ja2VyIHsg
bV9hZGFwdGVyTG9jayB9OwogICAgIGZvciAoYXV0byYgYWRhcHRlciA6IG1fYWRhcHRlcnMudmFs
dWVzKCkpCiAgICAgICAgIGdzdF9hZGFwdGVyX2NsZWFyKGFkYXB0ZXIuZ2V0KCkpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvU291
cmNlUHJvdmlkZXJHU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dz
dHJlYW1lci9BdWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVyLmgKaW5kZXggYjhkODQ3ZDJkMmZj
NjkzN2UzMDU0ZDI4Njc2Mzc3N2I4YTI2MWNkNy4uNWEzYWY2Y2Y4OTMwYzI3MWNjNDEwZTM4NjEx
MWFjZTk4ZDRlYzFlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
Z3N0cmVhbWVyL0F1ZGlvU291cmNlUHJvdmlkZXJHU3RyZWFtZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9Tb3VyY2VQcm92aWRlckdTdHJlYW1l
ci5oCkBAIC0yNSw2ICsyNSw3IEBACiAjaW5jbHVkZSAiR1JlZlB0ckdTdHJlYW1lci5oIgogI2lu
Y2x1ZGUgIk1haW5UaHJlYWROb3RpZmllci5oIgogI2luY2x1ZGUgPGdzdC9nc3QuaD4KKyNpbmNs
dWRlIDx3dGYvQ2hlY2tlZExvY2suaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1
ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogCkBAIC04MSwxMSArODIsMTEgQEAgcHJpdmF0ZToKICAg
ICBHUmVmUHRyPEdzdEVsZW1lbnQ+IG1fYXVkaW9TaW5rQmluOwogICAgIFdlYWtQdHI8QXVkaW9T
b3VyY2VQcm92aWRlckNsaWVudD4gbV9jbGllbnQ7CiAgICAgaW50IG1fZGVpbnRlcmxlYXZlU291
cmNlUGFkcyB7IDAgfTsKLSAgICBIYXNoTWFwPGludCwgR1JlZlB0cjxHc3RBZGFwdGVyPj4gbV9h
ZGFwdGVyczsKKyAgICBIYXNoTWFwPGludCwgR1JlZlB0cjxHc3RBZGFwdGVyPj4gbV9hZGFwdGVy
cyBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fYWRhcHRlckxvY2spOwogICAgIHVuc2lnbmVkIGxvbmcg
bV9kZWludGVybGVhdmVQYWRBZGRlZEhhbmRsZXJJZCB7IDAgfTsKICAgICB1bnNpZ25lZCBsb25n
IG1fZGVpbnRlcmxlYXZlTm9Nb3JlUGFkc0hhbmRsZXJJZCB7IDAgfTsKICAgICB1bnNpZ25lZCBs
b25nIG1fZGVpbnRlcmxlYXZlUGFkUmVtb3ZlZEhhbmRsZXJJZCB7IDAgfTsKLSAgICBMb2NrIG1f
YWRhcHRlck11dGV4OworICAgIENoZWNrZWRMb2NrIG1fYWRhcHRlckxvY2s7CiB9OwogCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvV2ViS2l0
V2ViQXVkaW9Tb3VyY2VHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vZ3N0cmVhbWVyL1dlYktpdFdlYkF1ZGlvU291cmNlR1N0cmVhbWVyLmNwcAppbmRleCBmZDM0
NGYwMjVmYWUyOWM0ZDc0OTkxNTNkOGI2NDI4YjU4MmY4YzI5Li42ZWY4MzUyODNmZjM1M2E4ZmUx
MjI3YjA3MGExZGRkNTZkNGEzZjhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9nc3RyZWFtZXIvV2ViS2l0V2ViQXVkaW9Tb3VyY2VHU3RyZWFtZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9XZWJLaXRXZWJBdWRpb1Nv
dXJjZUdTdHJlYW1lci5jcHAKQEAgLTgxLDggKzgxLDggQEAgc3RydWN0IF9XZWJLaXRXZWJBdWRp
b1NyY1ByaXZhdGUgewogCiAgICAgYm9vbCBoYXNSZW5kZXJlZEF1ZGlibGVGcmFtZSB7IGZhbHNl
IH07CiAKLSAgICBMb2NrIGRpc3BhdGNoVG9SZW5kZXJUaHJlYWRMb2NrOwotICAgIEZ1bmN0aW9u
PHZvaWQoRnVuY3Rpb248dm9pZCgpPiYmKT4gZGlzcGF0Y2hUb1JlbmRlclRocmVhZEZ1bmN0aW9u
OworICAgIENoZWNrZWRMb2NrIGRpc3BhdGNoVG9SZW5kZXJUaHJlYWRMb2NrOworICAgIEZ1bmN0
aW9uPHZvaWQoRnVuY3Rpb248dm9pZCgpPiYmKT4gZGlzcGF0Y2hUb1JlbmRlclRocmVhZEZ1bmN0
aW9uIFdURl9HVUFSREVEX0JZX0xPQ0soZGlzcGF0Y2hUb1JlbmRlclRocmVhZExvY2spOwogCiAg
ICAgYm9vbCBkaXNwYXRjaERvbmUgV1RGX0dVQVJERURfQllfTE9DSyhkaXNwYXRjaExvY2spOwog
ICAgIENoZWNrZWRMb2NrIGRpc3BhdGNoTG9jazsKQEAgLTQwOCwxMCArNDA4LDExIEBAIHN0YXRp
YyB2b2lkIHdlYktpdFdlYkF1ZGlvU3JjUmVuZGVySXRlcmF0aW9uKFdlYktpdFdlYkF1ZGlvU3Jj
KiBzcmMpCiAgICAgICAgIHByaXYtPmRpc3BhdGNoRG9uZSA9IGZhbHNlOwogICAgIH0KIAotICAg
IGF1dG8gbG9ja2VyID0gdHJ5SG9sZExvY2socHJpdi0+ZGlzcGF0Y2hUb1JlbmRlclRocmVhZExv
Y2spOwotICAgIGlmICghbG9ja2VyKQorICAgIGlmICghcHJpdi0+ZGlzcGF0Y2hUb1JlbmRlclRo
cmVhZExvY2sudHJ5TG9jaygpKQogICAgICAgICByZXR1cm47CiAKKyAgICBMb2NrZXIgbG9ja2Vy
IHsgQWRvcHRMb2NrVGFnIHsgfSwgcHJpdi0+ZGlzcGF0Y2hUb1JlbmRlclRocmVhZExvY2sgfTsK
KwogICAgIGlmICghcHJpdi0+ZGlzcGF0Y2hUb1JlbmRlclRocmVhZEZ1bmN0aW9uKQogICAgICAg
ICB3ZWJLaXRXZWJBdWRpb1NyY1JlbmRlckFuZFB1c2hGcmFtZXMoR1JlZlB0cjxHc3RFbGVtZW50
PihHU1RfRUxFTUVOVF9DQVNUKHNyYykpLCBXVEZNb3ZlKCpjaGFubmVsQnVmZmVyTGlzdCkpOwog
ICAgIGVsc2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAKaW5kZXggNDM2OTY4OGUxOWE0MjdlYzhhZTRmNjFk
NTAyN2FlNzNiMmU0ZmFmMS4uNTlhOWZjMjUwYTU4YWU2MWQzMjk1NDUxMGU5ZjU5MjZhYjI1YWIy
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uQ0YuY3BwCkBAIC0xNjcsOSArMTY3LDkgQEAgcHVibGljOgogcHJpdmF0
ZToKICAgICBpbmxpbmUgdm9pZCogY2FsbGJhY2tDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDx2b2lkKj4obV9vYmplY3RJRCk7IH0KIAotICAgIHN0YXRpYyBMb2NrJiBt
YXBMb2NrKCk7Ci0gICAgc3RhdGljIEhhc2hNYXA8dWludHB0cl90LCBBVkZXcmFwcGVyKj4mIG1h
cCgpOwotICAgIHN0YXRpYyBBVkZXcmFwcGVyKiBhdmZXcmFwcGVyRm9yQ2FsbGJhY2tDb250ZXh0
KHZvaWQqKTsKKyAgICBzdGF0aWMgTG9jayBtYXBMb2NrOworICAgIHN0YXRpYyBIYXNoTWFwPHVp
bnRwdHJfdCwgQVZGV3JhcHBlcio+JiBtYXAoKSBXVEZfUkVRVUlSRVNfTE9DSyhtYXBMb2NrKTsK
KyAgICBzdGF0aWMgQVZGV3JhcHBlciogYXZmV3JhcHBlckZvckNhbGxiYWNrQ29udGV4dCh2b2lk
KikgV1RGX1JFUVVJUkVTX0xPQ0sobWFwTG9jayk7CiAgICAgdm9pZCBhZGRUb01hcCgpOwogICAg
IHZvaWQgcmVtb3ZlRnJvbU1hcCgpIGNvbnN0OwogI2lmIEhBVkUoQVZGT1VOREFUSU9OX0xPQURF
Ul9ERUxFR0FURSkKQEAgLTE0MTYsMTIgKzE0MTYsNiBAQCBBVkZXcmFwcGVyOjp+QVZGV3JhcHBl
cigpCiAgICAgbV9hdlBsYXllciA9IDA7CiB9CiAKLUxvY2smIEFWRldyYXBwZXI6Om1hcExvY2so
KQotewotICAgIHN0YXRpYyBMb2NrIG1hcExvY2s7Ci0gICAgcmV0dXJuIG1hcExvY2s7Ci19Ci0K
IEhhc2hNYXA8dWludHB0cl90LCBBVkZXcmFwcGVyKj4mIEFWRldyYXBwZXI6Om1hcCgpCiB7CiAg
ICAgc3RhdGljIEhhc2hNYXA8dWludHB0cl90LCBBVkZXcmFwcGVyKj4mIG1hcCA9ICpuZXcgSGFz
aE1hcDx1aW50cHRyX3QsIEFWRldyYXBwZXIqPjsKQEAgLTE0MzAsNyArMTQyNCw3IEBAIEhhc2hN
YXA8dWludHB0cl90LCBBVkZXcmFwcGVyKj4mIEFWRldyYXBwZXI6Om1hcCgpCiAKIHZvaWQgQVZG
V3JhcHBlcjo6YWRkVG9NYXAoKQogewotICAgIExvY2tlciBsb2NrZXIgeyBtYXBMb2NrKCkgfTsK
KyAgICBMb2NrZXIgbG9ja2VyIHsgbWFwTG9jayB9OwogICAgIAogICAgIC8vIEhhc2hNYXAgZG9l
c24ndCBsaWtlIGEga2V5IG9mIDAsIGFuZCBhbHNvIG1ha2Ugc3VyZSB3ZSBhcmVuJ3QKICAgICAv
LyB1c2luZyBhbiBvYmplY3QgSUQgdGhhdCdzIGFscmVhZHkgaW4gdXNlLgpAQCAtMTQ0NiwxMyAr
MTQ0MCwxMyBAQCB2b2lkIEFWRldyYXBwZXI6OnJlbW92ZUZyb21NYXAoKSBjb25zdAogewogICAg
IExPRyhNZWRpYSwgIkFWRldyYXBwZXI6OnJlbW92ZUZyb21NYXAoJXAgJWQpIiwgdGhpcywgbV9v
YmplY3RJRCk7CiAKLSAgICBMb2NrZXIgbG9ja2VyIHsgbWFwTG9jaygpIH07CisgICAgTG9ja2Vy
IGxvY2tlciB7IG1hcExvY2sgfTsKICAgICBtYXAoKS5yZW1vdmUobV9vYmplY3RJRCk7CiB9CiAK
IEFWRldyYXBwZXIqIEFWRldyYXBwZXI6OmF2ZldyYXBwZXJGb3JDYWxsYmFja0NvbnRleHQodm9p
ZCogY29udGV4dCkKIHsKLSAgICAvLyBBc3N1bWVzIGNhbGxlciBoYXMgbG9ja2VkIG1hcExvY2so
KS4KKyAgICAvLyBBc3N1bWVzIGNhbGxlciBoYXMgbG9ja2VkIG1hcExvY2suCiAgICAgSGFzaE1h
cDx1aW50cHRyX3QsIEFWRldyYXBwZXIqPjo6aXRlcmF0b3IgaXQgPSBtYXAoKS5maW5kKHJlaW50
ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pihjb250ZXh0KSk7CiAgICAgaWYgKGl0ID09IG1hcCgpLmVu
ZCgpKQogICAgICAgICByZXR1cm4gMDsKQEAgLTE2NTAsNyArMTY0NCw3IEBAIHZvaWQgQVZGV3Jh
cHBlcjo6Y3JlYXRlUGxheWVySXRlbSgpCiAKIHZvaWQgQVZGV3JhcHBlcjo6cGVyaW9kaWNUaW1l
T2JzZXJ2ZXJDYWxsYmFjayhBVkNGUGxheWVyUmVmLCBDTVRpbWUgY21UaW1lLCB2b2lkKiBjb250
ZXh0KQogewotICAgIExvY2tlciBsb2NrZXIgeyBtYXBMb2NrKCkgfTsKKyAgICBMb2NrZXIgbG9j
a2VyIHsgbWFwTG9jayB9OwogICAgIEFWRldyYXBwZXIqIHNlbGYgPSBhdmZXcmFwcGVyRm9yQ2Fs
bGJhY2tDb250ZXh0KGNvbnRleHQpOwogICAgIGlmICghc2VsZikgewogICAgICAgICBMT0coTWVk
aWEsICJBVkZXcmFwcGVyOjpwZXJpb2RpY1RpbWVPYnNlcnZlckNhbGxiYWNrIGludm9rZWQgZm9y
IGRlbGV0ZWQgQVZGV3JhcHBlciAlZCIsIHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pihjb250
ZXh0KSk7CkBAIC0xNjgyLDcgKzE2NzYsNyBAQCB2b2lkIEFWRldyYXBwZXI6OnByb2Nlc3NOb3Rp
ZmljYXRpb24odm9pZCogY29udGV4dCkKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxOb3RpZmljYXRp
b25DYWxsYmFja0RhdGE+IG5vdGlmaWNhdGlvbkRhdGEgeyBzdGF0aWNfY2FzdDxOb3RpZmljYXRp
b25DYWxsYmFja0RhdGEqPihjb250ZXh0KSB9OwogCi0gICAgTG9ja2VyIGxvY2tlciB7IG1hcExv
Y2soKSB9OworICAgIExvY2tlciBsb2NrZXIgeyBtYXBMb2NrIH07CiAgICAgQVZGV3JhcHBlciog
c2VsZiA9IGF2ZldyYXBwZXJGb3JDYWxsYmFja0NvbnRleHQobm90aWZpY2F0aW9uRGF0YS0+bV9j
b250ZXh0KTsKICAgICBpZiAoIXNlbGYpIHsKICAgICAgICAgTE9HKE1lZGlhLCAiQVZGV3JhcHBl
cjo6cHJvY2Vzc05vdGlmaWNhdGlvbiBpbnZva2VkIGZvciBkZWxldGVkIEFWRldyYXBwZXIgJWQi
LCByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oY29udGV4dCkpOwpAQCAtMTczNyw3ICsxNzMx
LDcgQEAgdm9pZCBBVkZXcmFwcGVyOjpub3RpZmljYXRpb25DYWxsYmFjayhDRk5vdGlmaWNhdGlv
bkNlbnRlclJlZiwgdm9pZCogb2JzZXJ2ZXIsIEMKIAogdm9pZCBBVkZXcmFwcGVyOjpsb2FkUGxh
eWFibGVDb21wbGV0aW9uQ2FsbGJhY2soQVZDRkFzc2V0UmVmLCB2b2lkKiBjb250ZXh0KQogewot
ICAgIExvY2tlciBsb2NrZXIgeyBtYXBMb2NrKCkgfTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbWFw
TG9jayB9OwogICAgIEFWRldyYXBwZXIqIHNlbGYgPSBhdmZXcmFwcGVyRm9yQ2FsbGJhY2tDb250
ZXh0KGNvbnRleHQpOwogICAgIGlmICghc2VsZikgewogICAgICAgICBMT0coTWVkaWEsICJBVkZX
cmFwcGVyOjpsb2FkUGxheWFibGVDb21wbGV0aW9uQ2FsbGJhY2sgaW52b2tlZCBmb3IgZGVsZXRl
ZCBBVkZXcmFwcGVyICVkIiwgcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGNvbnRleHQpKTsK
QEAgLTE3NjQsNyArMTc1OCw3IEBAIHZvaWQgQVZGV3JhcHBlcjo6Y2hlY2tQbGF5YWJpbGl0eSgp
CiAKIHZvaWQgQVZGV3JhcHBlcjo6bG9hZE1ldGFkYXRhQ29tcGxldGlvbkNhbGxiYWNrKEFWQ0ZB
c3NldFJlZiwgdm9pZCogY29udGV4dCkKIHsKLSAgICBMb2NrZXIgbG9ja2VyIHsgbWFwTG9jaygp
IH07CisgICAgTG9ja2VyIGxvY2tlciB7IG1hcExvY2sgfTsKICAgICBBVkZXcmFwcGVyKiBzZWxm
ID0gYXZmV3JhcHBlckZvckNhbGxiYWNrQ29udGV4dChjb250ZXh0KTsKICAgICBpZiAoIXNlbGYp
IHsKICAgICAgICAgTE9HKE1lZGlhLCAiQVZGV3JhcHBlcjo6bG9hZE1ldGFkYXRhQ29tcGxldGlv
bkNhbGxiYWNrIGludm9rZWQgZm9yIGRlbGV0ZWQgQVZGV3JhcHBlciAlZCIsIHJlaW50ZXJwcmV0
X2Nhc3Q8dWludHB0cl90Pihjb250ZXh0KSk7CkBAIC0xNzg0LDcgKzE3NzgsNyBAQCB2b2lkIEFW
RldyYXBwZXI6OmJlZ2luTG9hZGluZ01ldGFkYXRhKCkKIAogdm9pZCBBVkZXcmFwcGVyOjpzZWVr
Q29tcGxldGVkQ2FsbGJhY2soQVZDRlBsYXllckl0ZW1SZWYsIEJvb2xlYW4gZmluaXNoZWQsIHZv
aWQqIGNvbnRleHQpCiB7Ci0gICAgTG9ja2VyIGxvY2tlciB7IG1hcExvY2soKSB9OworICAgIExv
Y2tlciBsb2NrZXIgeyBtYXBMb2NrIH07CiAgICAgQVZGV3JhcHBlciogc2VsZiA9IGF2ZldyYXBw
ZXJGb3JDYWxsYmFja0NvbnRleHQoY29udGV4dCk7CiAgICAgaWYgKCFzZWxmKSB7CiAgICAgICAg
IExPRyhNZWRpYSwgIkFWRldyYXBwZXI6OnNlZWtDb21wbGV0ZWRDYWxsYmFjayBpbnZva2VkIGZv
ciBkZWxldGVkIEFWRldyYXBwZXIgJWQiLCByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oY29u
dGV4dCkpOwpAQCAtMTgyOCw3ICsxODIyLDcgQEAgdm9pZCBBVkZXcmFwcGVyOjpwcm9jZXNzQ3Vl
KHZvaWQqIGNvbnRleHQpCiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TGVnaWJsZU91dHB1dERhdGE+
IGxlZ2libGVPdXRwdXREYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8TGVnaWJsZU91dHB1dERhdGEqPihj
b250ZXh0KSk7CiAKLSAgICBMb2NrZXIgbG9ja2VyIHsgbWFwTG9jaygpIH07CisgICAgTG9ja2Vy
IGxvY2tlciB7IG1hcExvY2sgfTsKICAgICBBVkZXcmFwcGVyKiBzZWxmID0gYXZmV3JhcHBlckZv
ckNhbGxiYWNrQ29udGV4dChsZWdpYmxlT3V0cHV0RGF0YS0+bV9jb250ZXh0KTsKICAgICBpZiAo
IXNlbGYpIHsKICAgICAgICAgTE9HKE1lZGlhLCAiQVZGV3JhcHBlcjo6cHJvY2Vzc0N1ZSBpbnZv
a2VkIGZvciBkZWxldGVkIEFWRldyYXBwZXIgJWQiLCByZWludGVycHJldF9jYXN0PHVpbnRwdHJf
dD4oY29udGV4dCkpOwpAQCAtMTg0NCw3ICsxODM4LDcgQEAgdm9pZCBBVkZXcmFwcGVyOjpwcm9j
ZXNzQ3VlKHZvaWQqIGNvbnRleHQpCiB2b2lkIEFWRldyYXBwZXI6OmxlZ2libGVPdXRwdXRDYWxs
YmFjayh2b2lkKiBjb250ZXh0LCBBVkNGUGxheWVySXRlbUxlZ2libGVPdXRwdXRSZWYgbGVnaWJs
ZU91dHB1dCwgQ0ZBcnJheVJlZiBhdHRyaWJ1dGVkU3RyaW5ncywgQ0ZBcnJheVJlZiBuYXRpdmVT
YW1wbGVCdWZmZXJzLCBDTVRpbWUgaXRlbVRpbWUpCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJl
YWQoKSk7Ci0gICAgTG9ja2VyIGxvY2tlciB7IG1hcExvY2soKSB9OworICAgIExvY2tlciBsb2Nr
ZXIgeyBtYXBMb2NrIH07CiAgICAgQVZGV3JhcHBlciogc2VsZiA9IGF2ZldyYXBwZXJGb3JDYWxs
YmFja0NvbnRleHQoY29udGV4dCk7CiAgICAgaWYgKCFzZWxmKSB7CiAgICAgICAgIExPRyhNZWRp
YSwgIkFWRldyYXBwZXI6OmxlZ2libGVPdXRwdXRDYWxsYmFjayBpbnZva2VkIGZvciBkZWxldGVk
IEFWRldyYXBwZXIgJWQiLCByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oY29udGV4dCkpOwpA
QCAtMTg4Myw3ICsxODc3LDcgQEAgdm9pZCBBVkZXcmFwcGVyOjpwcm9jZXNzU2hvdWxkV2FpdEZv
ckxvYWRpbmdPZlJlc291cmNlKHZvaWQqIGNvbnRleHQpCiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
TG9hZFJlcXVlc3REYXRhPiBsb2FkUmVxdWVzdERhdGEocmVpbnRlcnByZXRfY2FzdDxMb2FkUmVx
dWVzdERhdGEqPihjb250ZXh0KSk7CiAKLSAgICBMb2NrZXIgbG9ja2VyIHsgbWFwTG9jaygpIH07
CisgICAgTG9ja2VyIGxvY2tlciB7IG1hcExvY2sgfTsKICAgICBBVkZXcmFwcGVyKiBzZWxmID0g
YXZmV3JhcHBlckZvckNhbGxiYWNrQ29udGV4dChsb2FkUmVxdWVzdERhdGEtPm1fY29udGV4dCk7
CiAgICAgaWYgKCFzZWxmKSB7CiAgICAgICAgIExPRyhNZWRpYSwgIkFWRldyYXBwZXI6OnByb2Nl
c3NTaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVzb3VyY2UgaW52b2tlZCBmb3IgZGVsZXRlZCBBVkZX
cmFwcGVyICVkIiwgcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGNvbnRleHQpKTsKQEAgLTE5
MzgsNyArMTkzMiw3IEBAIGJvb2wgQVZGV3JhcHBlcjo6c2hvdWxkV2FpdEZvckxvYWRpbmdPZlJl
c291cmNlKEFWQ0ZBc3NldFJlc291cmNlTG9hZGluZ1JlcXVlc3RSCiBCb29sZWFuIEFWRldyYXBw
ZXI6OnJlc291cmNlTG9hZGVyU2hvdWxkV2FpdEZvckxvYWRpbmdPZlJlcXVlc3RlZFJlc291cmNl
KEFWQ0ZBc3NldFJlc291cmNlTG9hZGVyUmVmIHJlc291cmNlTG9hZGVyLCBBVkNGQXNzZXRSZXNv
dXJjZUxvYWRpbmdSZXF1ZXN0UmVmIGxvYWRpbmdSZXF1ZXN0LCB2b2lkICpjb250ZXh0KQogewog
ICAgIEFTU0VSVChkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpICE9IGRpc3BhdGNoX2dldF9jdXJy
ZW50X3F1ZXVlKCkpOwotICAgIExvY2tlciBsb2NrZXIgeyBtYXBMb2NrKCkgfTsKKyAgICBMb2Nr
ZXIgbG9ja2VyIHsgbWFwTG9jayB9OwogICAgIEFWRldyYXBwZXIqIHNlbGYgPSBhdmZXcmFwcGVy
Rm9yQ2FsbGJhY2tDb250ZXh0KGNvbnRleHQpOwogICAgIGlmICghc2VsZikgewogICAgICAgICBM
T0coTWVkaWEsICJBVkZXcmFwcGVyOjpyZXNvdXJjZUxvYWRlclNob3VsZFdhaXRGb3JMb2FkaW5n
T2ZSZXF1ZXN0ZWRSZXNvdXJjZSBpbnZva2VkIGZvciBkZWxldGVkIEFWRldyYXBwZXIgJWQiLCBy
ZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oY29udGV4dCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9Db25uZWN0aW9uLmNwcAppbmRleCA0MTA4ODYwZTk2ZjE5ZDQyMGE1ZTMzNDViNTg3
NTcxMzBkNGVjNjc4Li4xNjVjNDU2MDUyMmNmODkyZDViNTExNGJjNDllNGU4MDQ0M2IwMTc2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcApAQCAtMTA4LDEwICsx
MDgsMTAgQEAgcHJpdmF0ZToKICAgICBCaW5hcnlTZW1hcGhvcmUgbV93YWl0Rm9yU3luY1JlcGx5
U2VtYXBob3JlOwogCiAgICAgLy8gUHJvdGVjdHMgbV9kaWRTY2hlZHVsZURpc3BhdGNoTWVzc2Fn
ZXNXb3JrU2V0IGFuZCBtX21lc3NhZ2VzVG9EaXNwYXRjaFdoaWxlV2FpdGluZ0ZvclN5bmNSZXBs
eS4KLSAgICBMb2NrIG1fbXV0ZXg7CisgICAgQ2hlY2tlZExvY2sgbV9sb2NrOwogCiAgICAgLy8g
VGhlIHNldCBvZiBjb25uZWN0aW9ucyBmb3Igd2hpY2ggd2UndmUgc2NoZWR1bGVkIGEgY2FsbCB0
byBkaXNwYXRjaE1lc3NhZ2VBbmRSZXNldERpZFNjaGVkdWxlRGlzcGF0Y2hNZXNzYWdlc0ZvckNv
bm5lY3Rpb24uCi0gICAgSGFzaFNldDxSZWZQdHI8Q29ubmVjdGlvbj4+IG1fZGlkU2NoZWR1bGVE
aXNwYXRjaE1lc3NhZ2VzV29ya1NldDsKKyAgICBIYXNoU2V0PFJlZlB0cjxDb25uZWN0aW9uPj4g
bV9kaWRTY2hlZHVsZURpc3BhdGNoTWVzc2FnZXNXb3JrU2V0IFdURl9HVUFSREVEX0JZX0xPQ0so
bV9sb2NrKTsKIAogICAgIHN0cnVjdCBDb25uZWN0aW9uQW5kSW5jb21pbmdNZXNzYWdlIHsKICAg
ICAgICAgUmVmPENvbm5lY3Rpb24+IGNvbm5lY3Rpb247CkBAIC0xMjMsNyArMTIzLDcgQEAgcHJp
dmF0ZToKICAgICAgICAgfQogICAgIH07CiAgICAgRGVxdWU8Q29ubmVjdGlvbkFuZEluY29taW5n
TWVzc2FnZT4gbV9tZXNzYWdlc0JlaW5nRGlzcGF0Y2hlZDsgLy8gT25seSB1c2VkIG9uIHRoZSBt
YWluIHRocmVhZC4KLSAgICBEZXF1ZTxDb25uZWN0aW9uQW5kSW5jb21pbmdNZXNzYWdlPiBtX21l
c3NhZ2VzVG9EaXNwYXRjaFdoaWxlV2FpdGluZ0ZvclN5bmNSZXBseTsKKyAgICBEZXF1ZTxDb25u
ZWN0aW9uQW5kSW5jb21pbmdNZXNzYWdlPiBtX21lc3NhZ2VzVG9EaXNwYXRjaFdoaWxlV2FpdGlu
Z0ZvclN5bmNSZXBseSBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fbG9jayk7CiB9OwogCiBDb25uZWN0
aW9uOjpTeW5jTWVzc2FnZVN0YXRlJiBDb25uZWN0aW9uOjpTeW5jTWVzc2FnZVN0YXRlOjpzaW5n
bGV0b24oKQpAQCAtMTUxLDcgKzE1MSw3IEBAIHZvaWQgQ29ubmVjdGlvbjo6U3luY01lc3NhZ2VT
dGF0ZTo6ZW5xdWV1ZU1hdGNoaW5nTWVzc2FnZXMoQ29ubmVjdGlvbiYgY29ubmVjdGlvCiAgICAg
ICAgIH0KICAgICAgICAgY29ubmVjdGlvbkFuZE1lc3NhZ2VzID0gV1RGTW92ZShyZXN0KTsKICAg
ICB9OwotICAgIExvY2tlciBsb2NrZXIgeyBtX211dGV4IH07CisgICAgTG9ja2VyIGxvY2tlciB7
IG1fbG9jayB9OwogICAgIGVucXVldWVNYXRjaGluZ01lc3NhZ2VzSW5Db250YWluZXIobV9tZXNz
YWdlc0JlaW5nRGlzcGF0Y2hlZCk7CiAgICAgZW5xdWV1ZU1hdGNoaW5nTWVzc2FnZXNJbkNvbnRh
aW5lcihtX21lc3NhZ2VzVG9EaXNwYXRjaFdoaWxlV2FpdGluZ0ZvclN5bmNSZXBseSk7CiB9CkBA
IC0xNzEsNyArMTcxLDcgQEAgYm9vbCBDb25uZWN0aW9uOjpTeW5jTWVzc2FnZVN0YXRlOjpwcm9j
ZXNzSW5jb21pbmdNZXNzYWdlKENvbm5lY3Rpb24mIGNvbm5lY3Rpb24KIAogICAgIGJvb2wgc2hv
dWxkRGlzcGF0Y2g7CiAgICAgewotICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9tdXRleCB9Owor
ICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAgICAgICAgIHNob3VsZERpc3BhdGNo
ID0gbV9kaWRTY2hlZHVsZURpc3BhdGNoTWVzc2FnZXNXb3JrU2V0LmFkZCgmY29ubmVjdGlvbiku
aXNOZXdFbnRyeTsKICAgICAgICAgQVNTRVJUKGNvbm5lY3Rpb24ubV9pbmNvbWluZ01lc3NhZ2Vz
TG9jay5pc0hlbGQoKSk7CiAgICAgICAgIGlmIChtZXNzYWdlLT5zaG91bGRNYWludGFpbk9yZGVy
aW5nV2l0aEFzeW5jTWVzc2FnZXMoKSkgewpAQCAtMTk4LDcgKzE5OCw3IEBAIHZvaWQgQ29ubmVj
dGlvbjo6U3luY01lc3NhZ2VTdGF0ZTo6ZGlzcGF0Y2hNZXNzYWdlcyhGdW5jdGlvbjx2b2lkKE1l
c3NhZ2VOYW1lLCB1CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAogICAgIHsKLSAg
ICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbXV0ZXggfTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7
IG1fbG9jayB9OwogICAgICAgICBpZiAobV9tZXNzYWdlc0JlaW5nRGlzcGF0Y2hlZC5pc0VtcHR5
KCkpCiAgICAgICAgICAgICBtX21lc3NhZ2VzQmVpbmdEaXNwYXRjaGVkID0gc3RkOjpleGNoYW5n
ZShtX21lc3NhZ2VzVG9EaXNwYXRjaFdoaWxlV2FpdGluZ0ZvclN5bmNSZXBseSwgeyB9KTsKICAg
ICAgICAgZWxzZSB7CkBAIC0yMjAsNyArMjIwLDcgQEAgdm9pZCBDb25uZWN0aW9uOjpTeW5jTWVz
c2FnZVN0YXRlOjpkaXNwYXRjaE1lc3NhZ2VzQW5kUmVzZXREaWRTY2hlZHVsZURpc3BhdGNoTWUK
ICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCiAgICAgewotICAgICAgICBMb2NrZXIg
bG9ja2VyIHsgbV9tdXRleCB9OworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAg
ICAgICAgIEFTU0VSVChtX2RpZFNjaGVkdWxlRGlzcGF0Y2hNZXNzYWdlc1dvcmtTZXQuY29udGFp
bnMoJmNvbm5lY3Rpb24pKTsKICAgICAgICAgbV9kaWRTY2hlZHVsZURpc3BhdGNoTWVzc2FnZXNX
b3JrU2V0LnJlbW92ZSgmY29ubmVjdGlvbik7CiAgICAgICAgIEFTU0VSVChtX21lc3NhZ2VzQmVp
bmdEaXNwYXRjaGVkLmlzRW1wdHkoKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429413</attachid>
            <date>2021-05-22 08:40:01 -0700</date>
            <delta_ts>2021-05-22 10:08:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226138-20210522084001.patch</filename>
            <type>text/plain</type>
            <size>46514</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3OTEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGEyYzczMjViYjFkMWRhNTJlODUzZDk5
Yzk1YjhkOGJiYzU5MjdlMjYuLjQwNjIxMjJjNDg5OTdiYjkzZTBiMjAzMmI0YjI5NWUzMGYxODJj
NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjEtMDUtMjIgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBBZG9wdCBDaGVja2VkTG9jayBpbiBtb3JlIHBsYWNlcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2MTM4CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRvcHQgQ2hl
Y2tlZExvY2sgaW4gbW9yZSBwbGFjZXMgdG8gYmVuZWZpdCBmcm9tIENsYW5nIFRocmVhZCBTYWZl
dHkgQW5hbHlzaXMuCisKKyAgICAgICAgKiB3dGYvQXNzZXJ0aW9ucy5jcHA6CisgICAgICAgICog
d3RmL1RpbWluZ1Njb3BlLmNwcDoKKyAgICAgICAgKiB3dGYvdGhyZWFkcy9CaW5hcnlTZW1hcGhv
cmUuY3BwOgorICAgICAgICAoV1RGOjpCaW5hcnlTZW1hcGhvcmU6OndhaXRVbnRpbCk6CisgICAg
ICAgICogd3RmL3RocmVhZHMvQmluYXJ5U2VtYXBob3JlLmg6CisKIDIwMjEtMDUtMjEgIENocmlz
IER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXBsYWNlIExvY2tIb2xkZXIg
d2l0aCBMb2NrZXIgaW4gbG9jYWwgdmFyaWFibGVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTgwZmRiNTQ4OGE2
OTJmZmU2OGFjNjhiNTFiZmJhOWUwY2ExNjNhOS4uZmZiMDEzNGUzNzZlZWI2NTViMTg5NWJiZmRi
MDc3MWJiNzMyMmM5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcwIEBACisyMDIxLTA1LTIyICBD
aHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQWRvcHQgQ2hlY2tlZExv
Y2sgaW4gbW9yZSBwbGFjZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIyNjEzOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEFkb3B0IENoZWNrZWRMb2NrIGluIG1vcmUgcGxhY2VzIHRvIGJlbmVmaXQgZnJv
bSBDbGFuZyBUaHJlYWQgU2FmZXR5IEFuYWx5c2lzLgorCisgICAgICAgICogTW9kdWxlcy93ZWJk
YXRhYmFzZS9EYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6cGVyZm9y
bUNsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlOjpzY2hlZHVsZVRyYW5zYWN0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlOjppblByb2dyZXNzVHJhbnNhY3Rpb25Db21w
bGV0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6Omhhc1BlbmRpbmdUcmFuc2FjdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6cnVuVHJhbnNhY3Rpb24pOgorICAgICAg
ICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRh
dGFiYXNlOjpXVEZfR1VBUkRFRF9CWV9MT0NLKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFi
YXNlL0RhdGFiYXNlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZU1hbmFn
ZXI6OmFkZFByb3Bvc2VkRGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VNYW5h
Z2VyOjpyZW1vdmVQcm9wb3NlZERhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNl
TWFuYWdlcjo6ZnVsbFBhdGhGb3JEYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFz
ZU1hbmFnZXI6OmRldGFpbHNGb3JOYW1lQW5kT3JpZ2luKToKKyAgICAgICAgKiBNb2R1bGVzL3dl
YmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJh
c2UvRGF0YWJhc2VUaHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUaHJlYWQ6
OmRhdGFiYXNlVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVGhyZWFkOjpyZWNv
cmREYXRhYmFzZU9wZW4pOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUaHJlYWQ6OnJlY29y
ZERhdGFiYXNlQ2xvc2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVGhyZWFkOjpoYXNQ
ZW5kaW5nRGF0YWJhc2VBY3Rpdml0eSBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRh
YmFzZS9EYXRhYmFzZVRocmVhZC5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvU1FM
Q2FsbGJhY2tXcmFwcGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpTUUxDYWxsYmFja1dyYXBwZXI6
OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTENhbGxiYWNrV3JhcHBlcjo6dW53cmFwKToK
KyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uOjplbnF1ZXVlU3RhdGVtZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uOjpjaGVja0FuZEhhbmRsZUNsb3NlZERhdGFiYXNlKToK
KyAgICAgICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uOjpnZXROZXh0U3RhdGVtZW50KToKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uLmg6CisgICAgICAgICog
TW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbkJhY2tlbmQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1FMVHJhbnNhY3Rpb25CYWNrZW5kOjpkb0NsZWFudXApOgorICAgICAgICAqIGFj
Y2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmg6CisgICAgICAgIChXZWJD
b3JlOjpBWElzb2xhdGVkVHJlZTo6V1RGX0dVQVJERURfQllfTE9DSyk6CisgICAgICAgICogcGxh
dGZvcm0vQWJvcnRhYmxlVGFza1F1ZXVlLmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vY29j
b2EvQXVkaW9EZXN0aW5hdGlvbkNvY29hLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVz
dGluYXRpb25Db2NvYTo6cmVuZGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9jb2NvYS9B
dWRpb0Rlc3RpbmF0aW9uQ29jb2EuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9nc3RyZWFt
ZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlv
L2dzdHJlYW1lci9BdWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkF1ZGlvU291cmNlUHJvdmlkZXJHU3RyZWFtZXI6OnByb3ZpZGVJbnB1dCk6CisgICAg
ICAgIChXZWJDb3JlOjpBdWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVyOjpoYW5kbGVTYW1wbGUp
OgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Tb3VyY2VQcm92aWRlckdTdHJlYW1lcjo6Y2xlYXJB
ZGFwdGVycyk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvU291cmNl
UHJvdmlkZXJHU3RyZWFtZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIv
V2ViS2l0V2ViQXVkaW9Tb3VyY2VHU3RyZWFtZXIuY3BwOgorICAgICAgICAod2ViS2l0V2ViQXVk
aW9TcmNSZW5kZXJJdGVyYXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpBVkZXcmFwcGVyOjphZGRUb01hcCk6CisgICAgICAgIChXZWJDb3JlOjpBVkZX
cmFwcGVyOjpyZW1vdmVGcm9tTWFwIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFWRldyYXBw
ZXI6OmF2ZldyYXBwZXJGb3JDYWxsYmFja0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6QVZG
V3JhcHBlcjo6cGVyaW9kaWNUaW1lT2JzZXJ2ZXJDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3Jl
OjpBVkZXcmFwcGVyOjpwcm9jZXNzTm90aWZpY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkFW
RldyYXBwZXI6OmxvYWRQbGF5YWJsZUNvbXBsZXRpb25DYWxsYmFjayk6CisgICAgICAgIChXZWJD
b3JlOjpBVkZXcmFwcGVyOjpsb2FkTWV0YWRhdGFDb21wbGV0aW9uQ2FsbGJhY2spOgorICAgICAg
ICAoV2ViQ29yZTo6QVZGV3JhcHBlcjo6c2Vla0NvbXBsZXRlZENhbGxiYWNrKToKKyAgICAgICAg
KFdlYkNvcmU6OkFWRldyYXBwZXI6OnByb2Nlc3NDdWUpOgorICAgICAgICAoV2ViQ29yZTo6QVZG
V3JhcHBlcjo6bGVnaWJsZU91dHB1dENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkFWRldy
YXBwZXI6OnByb2Nlc3NTaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVzb3VyY2UpOgorICAgICAgICAo
V2ViQ29yZTo6QVZGV3JhcHBlcjo6cmVzb3VyY2VMb2FkZXJTaG91bGRXYWl0Rm9yTG9hZGluZ09m
UmVxdWVzdGVkUmVzb3VyY2UpOgorCiAyMDIxLTA1LTIxICBDaHJpcyBEdW1leiAgPGNkdW1lekBh
cHBsZS5jb20+CiAKICAgICAgICAgUmVwbGFjZSBMb2NrSG9sZGVyIHdpdGggTG9ja2VyIGluIGxv
Y2FsIHZhcmlhYmxlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBhOGI4NGIxZDQ0MDllZGU3OWVjYThkNmJkMGQ4ODYx
YmZjY2RjOGM0Li40MjJkYmQ2YzhlMTcyM2NlZmY5Mjc0NDhiYmEyZDM4NTM1NTkyZDcxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIxLTA1LTIyICBDaHJpcyBEdW1leiAgPGNkdW1lekBh
cHBsZS5jb20+CisKKyAgICAgICAgQWRvcHQgQ2hlY2tlZExvY2sgaW4gbW9yZSBwbGFjZXMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjEzOAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkb3B0IENoZWNr
ZWRMb2NrIGluIG1vcmUgcGxhY2VzIHRvIGJlbmVmaXQgZnJvbSBDbGFuZyBUaHJlYWQgU2FmZXR5
IEFuYWx5c2lzLgorCisgICAgICAgICogUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3BwOgorICAg
ICAgICAoSVBDOjpDb25uZWN0aW9uOjpTeW5jTWVzc2FnZVN0YXRlOjplbnF1ZXVlTWF0Y2hpbmdN
ZXNzYWdlcyk6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OlN5bmNNZXNzYWdlU3RhdGU6OnBy
b2Nlc3NJbmNvbWluZ01lc3NhZ2UpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpTeW5jTWVz
c2FnZVN0YXRlOjpkaXNwYXRjaE1lc3NhZ2VzKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6
U3luY01lc3NhZ2VTdGF0ZTo6ZGlzcGF0Y2hNZXNzYWdlc0FuZFJlc2V0RGlkU2NoZWR1bGVEaXNw
YXRjaE1lc3NhZ2VzRm9yQ29ubmVjdGlvbik6CisKIDIwMjEtMDUtMjEgIENocmlzIER1bWV6ICA8
Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXBsYWNlIExvY2tIb2xkZXIgd2l0aCBMb2Nr
ZXIgaW4gbG9jYWwgdmFyaWFibGVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Bc3NlcnRp
b25zLmNwcCBiL1NvdXJjZS9XVEYvd3RmL0Fzc2VydGlvbnMuY3BwCmluZGV4IDU4OTVmMzA1ZmRk
ODFmYWM0ZDIwMTA0NGFhM2RlNWQ3YzdjMzBlNGMuLjBkZjMwODMyYmJiNGU1MWFlZGNiNThkNjdj
NGZhNzBhMjY1ZWVmMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0Fzc2VydGlvbnMuY3Bw
CisrKyBiL1NvdXJjZS9XVEYvd3RmL0Fzc2VydGlvbnMuY3BwCkBAIC0zMSw4ICszMSw4IEBACiAj
aW5jbHVkZSA8bXV0ZXg+CiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDxzdHJpbmcuaD4K
KyNpbmNsdWRlIDx3dGYvQ2hlY2tlZExvY2suaD4KICNpbmNsdWRlIDx3dGYvQ29tcGlsZXIuaD4K
LSNpbmNsdWRlIDx3dGYvTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9Mb2NrZXIuaD4KICNpbmNsdWRl
IDx3dGYvTG9nZ2luZ0FjY3VtdWxhdG9yLmg+CiAjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+
CkBAIC0zNjgsMjUgKzM2OCwyNSBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIGdldEFuZFJlc2V0QWNj
dW11bGF0ZWRMb2dzKCk7CiAKIHByaXZhdGU6Ci0gICAgTG9jayBhY2N1bXVsYXRvckxvY2s7Ci0g
ICAgU3RyaW5nQnVpbGRlciBsb2dnaW5nQWNjdW11bGF0b3I7CisgICAgQ2hlY2tlZExvY2sgYWNj
dW11bGF0b3JMb2NrOworICAgIFN0cmluZ0J1aWxkZXIgbG9nZ2luZ0FjY3VtdWxhdG9yIFdURl9H
VUFSREVEX0JZX0xPQ0soYWNjdW11bGF0b3JMb2NrKTsKIH07CiAKIHZvaWQgV1RGTG9nZ2luZ0Fj
Y3VtdWxhdG9yOjphY2N1bXVsYXRlKGNvbnN0IFN0cmluZyYgbG9nKQogewotICAgIExvY2tlcjxM
b2NrPiBsb2NrZXIoYWNjdW11bGF0b3JMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgYWNjdW11
bGF0b3JMb2NrIH07CiAgICAgbG9nZ2luZ0FjY3VtdWxhdG9yLmFwcGVuZChsb2cpOwogfQogCiB2
b2lkIFdURkxvZ2dpbmdBY2N1bXVsYXRvcjo6cmVzZXRBY2N1bXVsYXRlZExvZ3MoKQogewotICAg
IExvY2tlcjxMb2NrPiBsb2NrZXIoYWNjdW11bGF0b3JMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2Vy
IHsgYWNjdW11bGF0b3JMb2NrIH07CiAgICAgbG9nZ2luZ0FjY3VtdWxhdG9yLmNsZWFyKCk7CiB9
CiAKIFN0cmluZyBXVEZMb2dnaW5nQWNjdW11bGF0b3I6OmdldEFuZFJlc2V0QWNjdW11bGF0ZWRM
b2dzKCkKIHsKLSAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKGFjY3VtdWxhdG9yTG9jayk7CisgICAg
TG9ja2VyIGxvY2tlciB7IGFjY3VtdWxhdG9yTG9jayB9OwogICAgIFN0cmluZyByZXN1bHQgPSBs
b2dnaW5nQWNjdW11bGF0b3IudG9TdHJpbmcoKTsKICAgICBsb2dnaW5nQWNjdW11bGF0b3IuY2xl
YXIoKTsKICAgICByZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVGlt
aW5nU2NvcGUuY3BwIGIvU291cmNlL1dURi93dGYvVGltaW5nU2NvcGUuY3BwCmluZGV4IGUyYjAy
YzYwMzc0NDRjYTYwZjc4ODIzYTIxODIwNjk2ODY5ZjdkNTguLjYzMTE2NjQwYWRlZjRjZDkyMGUy
MTk3ZDc1ZmU1NDE2NGE4ZWM0NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1RpbWluZ1Nj
b3BlLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9UaW1pbmdTY29wZS5jcHAKQEAgLTI2LDggKzI2
LDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlIDx3dGYvVGltaW5nU2NvcGUuaD4K
IAorI2luY2x1ZGUgPHd0Zi9DaGVja2VkTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+
Ci0jaW5jbHVkZSA8d3RmL0xvY2suaD4KIAogbmFtZXNwYWNlIFdURiB7CiAKQEAgLTU5LDggKzU5
LDggQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICBIYXNoTWFwPGNvbnN0IGNoYXIq
LCBDYWxsRGF0YT4gdG90YWxzOwotICAgIExvY2sgbG9jazsKKyAgICBIYXNoTWFwPGNvbnN0IGNo
YXIqLCBDYWxsRGF0YT4gdG90YWxzIFdURl9HVUFSREVEX0JZX0xPQ0sobG9jayk7CisgICAgQ2hl
Y2tlZExvY2sgbG9jazsKIH07CiAKIFN0YXRlJiBzdGF0ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi90aHJlYWRzL0JpbmFyeVNlbWFwaG9yZS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90aHJl
YWRzL0JpbmFyeVNlbWFwaG9yZS5jcHAKaW5kZXggNzhiZjM0Yzk2NjY5OTYwZjEzYzQyYWE0N2Uw
NzRlOGMwNzk3YzI5ZS4uYWQ0MzliZjgzZjU3OWMwODAxYTkxZDY1MWI0ZTA5ZDE1YjIwMGRiZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGhyZWFkcy9CaW5hcnlTZW1hcGhvcmUuY3BwCisr
KyBiL1NvdXJjZS9XVEYvd3RmL3RocmVhZHMvQmluYXJ5U2VtYXBob3JlLmNwcApAQCAtMzgsNyAr
MzgsMTAgQEAgdm9pZCBCaW5hcnlTZW1hcGhvcmU6OnNpZ25hbCgpCiBib29sIEJpbmFyeVNlbWFw
aG9yZTo6d2FpdFVudGlsKGNvbnN0IFRpbWVXaXRoRHluYW1pY0Nsb2NrVHlwZSYgYWJzb2x1dGVU
aW1lKQogewogICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKLSAgICBib29sIHNhdGlzZmll
ZCA9IG1fY29uZGl0aW9uLndhaXRVbnRpbChtX2xvY2ssIGFic29sdXRlVGltZSwgWyZdIHsgcmV0
dXJuIG1faXNTZXQ7IH0pOworICAgIGJvb2wgc2F0aXNmaWVkID0gbV9jb25kaXRpb24ud2FpdFVu
dGlsKG1fbG9jaywgYWJzb2x1dGVUaW1lLCBbJl0geworICAgICAgICBhc3NlcnRJc0hlbGQobV9s
b2NrKTsKKyAgICAgICAgcmV0dXJuIG1faXNTZXQ7CisgICAgfSk7CiAgICAgaWYgKHNhdGlzZmll
ZCkKICAgICAgICAgbV9pc1NldCA9IGZhbHNlOwogICAgIHJldHVybiBzYXRpc2ZpZWQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90aHJlYWRzL0JpbmFyeVNlbWFwaG9yZS5oIGIvU291cmNl
L1dURi93dGYvdGhyZWFkcy9CaW5hcnlTZW1hcGhvcmUuaAppbmRleCA5N2NjYmRlMDgyMDUyYzc3
MGFhM2RiNGU4YmVlNmUxYzllMGUwYmFiLi4zMjg2NTE4ZTcyMzM1MzMxMGQ2ODg2YTlhOGZhYWU3
MmMxMTFkNjllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90aHJlYWRzL0JpbmFyeVNlbWFw
aG9yZS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RocmVhZHMvQmluYXJ5U2VtYXBob3JlLmgKQEAg
LTI1LDggKzI1LDggQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlIDx3dGYvQ29uZGl0aW9u
Lmg+Ci0jaW5jbHVkZSA8d3RmL0xvY2suaD4KKyNpbmNsdWRlIDx3dGYvQ2hlY2tlZENvbmRpdGlv
bi5oPgorI2luY2x1ZGUgPHd0Zi9DaGVja2VkTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5
YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9UaW1lV2l0aER5bmFtaWNDbG9ja1R5cGUuaD4KIApAQCAt
NTIsOSArNTIsOSBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIGJvb2wgbV9pc1Nl
dCB7IGZhbHNlIH07Ci0gICAgTG9jayBtX2xvY2s7Ci0gICAgQ29uZGl0aW9uIG1fY29uZGl0aW9u
OworICAgIGJvb2wgbV9pc1NldCBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fbG9jaykgeyBmYWxzZSB9
OworICAgIENoZWNrZWRMb2NrIG1fbG9jazsKKyAgICBDaGVja2VkQ29uZGl0aW9uIG1fY29uZGl0
aW9uOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwCmluZGV4IDZiYjgwODg5NmQ3YWNmMTRjOWRhYjQw
YmI1MTUzYTY2ZDcwMDQyMDEuLjcwMDc0YzdhN2FiNDIzOTk5ZjNkZjkwNDFmNGViY2EwOTRjNzFk
NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJh
c2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2Uu
Y3BwCkBAIC0yODIsNyArMjgyLDcgQEAgdm9pZCBEYXRhYmFzZTo6cGVyZm9ybUNsb3NlKCkKICAg
ICBBU1NFUlQoZGF0YWJhc2VUaHJlYWQoKS5nZXRUaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50
KCkpOwogCiAgICAgewotICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV90cmFuc2FjdGlvbkluUHJv
Z3Jlc3NNdXRleCB9OworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV90cmFuc2FjdGlvbkluUHJv
Z3Jlc3NMb2NrIH07CiAKICAgICAgICAgLy8gQ2xlYW4gdXAgdHJhbnNhY3Rpb25zIHRoYXQgaGF2
ZSBub3QgYmVlbiBzY2hlZHVsZWQgeWV0OgogICAgICAgICAvLyBUcmFuc2FjdGlvbiBwaGFzZSAx
IGNsZWFudXAuIFNlZSBjb21tZW50IG9uICJXaGF0IGhhcHBlbnMgaWYgYQpAQCAtNTE4LDcgKzUx
OCw3IEBAIGJvb2wgRGF0YWJhc2U6OmdldEFjdHVhbFZlcnNpb25Gb3JUcmFuc2FjdGlvbihTdHJp
bmcgJmFjdHVhbFZlcnNpb24pCiAKIHZvaWQgRGF0YWJhc2U6OnNjaGVkdWxlVHJhbnNhY3Rpb24o
KQogewotICAgIEFTU0VSVCghbV90cmFuc2FjdGlvbkluUHJvZ3Jlc3NNdXRleC50cnlMb2NrKCkp
OyAvLyBMb2NrZWQgYnkgY2FsbGVyLgorICAgIEFTU0VSVChtX3RyYW5zYWN0aW9uSW5Qcm9ncmVz
c0xvY2suaXNIZWxkKCkpOwogCiAgICAgaWYgKCFtX2lzVHJhbnNhY3Rpb25RdWV1ZUVuYWJsZWQg
fHwgbV90cmFuc2FjdGlvblF1ZXVlLmlzRW1wdHkoKSkgewogICAgICAgICBtX3RyYW5zYWN0aW9u
SW5Qcm9ncmVzcyA9IGZhbHNlOwpAQCAtNTQ0LDE0ICs1NDQsMTQgQEAgdm9pZCBEYXRhYmFzZTo6
c2NoZWR1bGVUcmFuc2FjdGlvblN0ZXAoU1FMVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uKQogCiB2
b2lkIERhdGFiYXNlOjppblByb2dyZXNzVHJhbnNhY3Rpb25Db21wbGV0ZWQoKQogewotICAgIExv
Y2tlciBsb2NrZXIgeyBtX3RyYW5zYWN0aW9uSW5Qcm9ncmVzc011dGV4IH07CisgICAgTG9ja2Vy
IGxvY2tlciB7IG1fdHJhbnNhY3Rpb25JblByb2dyZXNzTG9jayB9OwogICAgIG1fdHJhbnNhY3Rp
b25JblByb2dyZXNzID0gZmFsc2U7CiAgICAgc2NoZWR1bGVUcmFuc2FjdGlvbigpOwogfQogCiBi
b29sIERhdGFiYXNlOjpoYXNQZW5kaW5nVHJhbnNhY3Rpb24oKQogewotICAgIExvY2tlciBsb2Nr
ZXIgeyBtX3RyYW5zYWN0aW9uSW5Qcm9ncmVzc011dGV4IH07CisgICAgTG9ja2VyIGxvY2tlciB7
IG1fdHJhbnNhY3Rpb25JblByb2dyZXNzTG9jayB9OwogICAgIHJldHVybiBtX3RyYW5zYWN0aW9u
SW5Qcm9ncmVzcyB8fCAhbV90cmFuc2FjdGlvblF1ZXVlLmlzRW1wdHkoKTsKIH0KIApAQCAtNjgx
LDcgKzY4MSw3IEBAIHZvaWQgRGF0YWJhc2U6OnJlc2V0QXV0aG9yaXplcigpCiB2b2lkIERhdGFi
YXNlOjpydW5UcmFuc2FjdGlvbihSZWZQdHI8U1FMVHJhbnNhY3Rpb25DYWxsYmFjaz4mJiBjYWxs
YmFjaywgUmVmUHRyPFNRTFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjaz4mJiBlcnJvckNhbGxiYWNr
LCBSZWZQdHI8Vm9pZENhbGxiYWNrPiYmIHN1Y2Nlc3NDYWxsYmFjaywgUmVmUHRyPFNRTFRyYW5z
YWN0aW9uV3JhcHBlcj4mJiB3cmFwcGVyLCBib29sIHJlYWRPbmx5KQogewogICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7Ci0gICAgTG9ja2VyIGxvY2tlciB7IG1fdHJhbnNhY3Rpb25JblByb2dy
ZXNzTXV0ZXggfTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV90cmFuc2FjdGlvbkluUHJvZ3Jlc3NM
b2NrIH07CiAgICAgaWYgKCFtX2lzVHJhbnNhY3Rpb25RdWV1ZUVuYWJsZWQpIHsKICAgICAgICAg
aWYgKGVycm9yQ2FsbGJhY2spIHsKICAgICAgICAgICAgIG1fZG9jdW1lbnQtPmV2ZW50TG9vcCgp
LnF1ZXVlVGFzayhUYXNrU291cmNlOjpOZXR3b3JraW5nLCBbZXJyb3JDYWxsYmFjayA9IG1ha2VS
ZWYoKmVycm9yQ2FsbGJhY2spXSgpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0
YWJhc2UvRGF0YWJhc2UuaAppbmRleCAwZDJhOTVhYmM1YzcxZGY0NDVlNjFlMDI3YzE4NDk0OTAy
Zjg3Mzk4Li5hZDIxMzM4YTc4N2Y5M2NkODQ3N2RkMmZhMGVjNDQzOGQ5MzI1ZDUzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5oCkBAIC0zMCw4ICsz
MCw4IEBACiAKICNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgogI2luY2x1ZGUgIlNRTGl0ZURhdGFi
YXNlLmgiCisjaW5jbHVkZSA8d3RmL0NoZWNrZWRMb2NrLmg+CiAjaW5jbHVkZSA8d3RmL0RlcXVl
Lmg+Ci0jaW5jbHVkZSA8d3RmL0xvY2suaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0x
MzksNyArMTM5LDcgQEAgcHJpdmF0ZToKICAgICBib29sIGdldEFjdHVhbFZlcnNpb25Gb3JUcmFu
c2FjdGlvbihTdHJpbmcmIHZlcnNpb24pOwogICAgIHZvaWQgc2V0RXN0aW1hdGVkU2l6ZSh1bnNp
Z25lZCBsb25nIGxvbmcpOwogCi0gICAgdm9pZCBzY2hlZHVsZVRyYW5zYWN0aW9uKCk7CisgICAg
dm9pZCBzY2hlZHVsZVRyYW5zYWN0aW9uKCkgV1RGX1JFUVVJUkVTX0xPQ0sobV90cmFuc2FjdGlv
bkluUHJvZ3Jlc3NMb2NrKTsKIAogICAgIHZvaWQgcnVuVHJhbnNhY3Rpb24oUmVmUHRyPFNRTFRy
YW5zYWN0aW9uQ2FsbGJhY2s+JiYsIFJlZlB0cjxTUUxUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2s+
JiYsIFJlZlB0cjxWb2lkQ2FsbGJhY2s+JiYgc3VjY2Vzc0NhbGxiYWNrLCBSZWZQdHI8U1FMVHJh
bnNhY3Rpb25XcmFwcGVyPiYmLCBib29sIHJlYWRPbmx5KTsKIApAQCAtMTY5LDEwICsxNjksMTAg
QEAgcHJpdmF0ZToKIAogICAgIFJlZjxEYXRhYmFzZUF1dGhvcml6ZXI+IG1fZGF0YWJhc2VBdXRo
b3JpemVyOwogCi0gICAgRGVxdWU8UmVmPFNRTFRyYW5zYWN0aW9uPj4gbV90cmFuc2FjdGlvblF1
ZXVlOwotICAgIExvY2sgbV90cmFuc2FjdGlvbkluUHJvZ3Jlc3NNdXRleDsKLSAgICBib29sIG1f
dHJhbnNhY3Rpb25JblByb2dyZXNzIHsgZmFsc2UgfTsKLSAgICBib29sIG1faXNUcmFuc2FjdGlv
blF1ZXVlRW5hYmxlZCB7IHRydWUgfTsKKyAgICBEZXF1ZTxSZWY8U1FMVHJhbnNhY3Rpb24+PiBt
X3RyYW5zYWN0aW9uUXVldWUgV1RGX0dVQVJERURfQllfTE9DSyhtX3RyYW5zYWN0aW9uSW5Qcm9n
cmVzc0xvY2spOworICAgIENoZWNrZWRMb2NrIG1fdHJhbnNhY3Rpb25JblByb2dyZXNzTG9jazsK
KyAgICBib29sIG1fdHJhbnNhY3Rpb25JblByb2dyZXNzIFdURl9HVUFSREVEX0JZX0xPQ0sobV90
cmFuc2FjdGlvbkluUHJvZ3Jlc3NMb2NrKSB7IGZhbHNlIH07CisgICAgYm9vbCBtX2lzVHJhbnNh
Y3Rpb25RdWV1ZUVuYWJsZWQgV1RGX0dVQVJERURfQllfTE9DSyhtX3RyYW5zYWN0aW9uSW5Qcm9n
cmVzc0xvY2spIHsgdHJ1ZSB9OwogCiAgICAgZnJpZW5kIGNsYXNzIENoYW5nZVZlcnNpb25XcmFw
cGVyOwogICAgIGZyaWVuZCBjbGFzcyBEYXRhYmFzZU1hbmFnZXI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5jcHAKaW5kZXgg
OTUwYjQ1ZmM3MWFhYjE2ZjE0ZTE1ZTJhMGFmZjExZjEyODUyMmE4NS4uMmM5YWE1MmExMDg5NTNl
NDg3NmQ0NWQwYzRjZDk5Mjk1ZTIyYTJiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmNwcApAQCAtMTgxLDEzICsxODEs
MTMgQEAgRXhjZXB0aW9uT3I8UmVmPERhdGFiYXNlPj4gRGF0YWJhc2VNYW5hZ2VyOjp0cnlUb09w
ZW5EYXRhYmFzZUJhY2tlbmQoRG9jdW1lbnQmIGQKIAogdm9pZCBEYXRhYmFzZU1hbmFnZXI6OmFk
ZFByb3Bvc2VkRGF0YWJhc2UoUHJvcG9zZWREYXRhYmFzZSYgZGF0YWJhc2UpCiB7Ci0gICAgTG9j
a2VyIGxvY2tlciB7IG1fcHJvcG9zZWREYXRhYmFzZXNNdXRleCB9OworICAgIExvY2tlciBsb2Nr
ZXIgeyBtX3Byb3Bvc2VkRGF0YWJhc2VzTG9jayB9OwogICAgIG1fcHJvcG9zZWREYXRhYmFzZXMu
YWRkKCZkYXRhYmFzZSk7CiB9CiAKIHZvaWQgRGF0YWJhc2VNYW5hZ2VyOjpyZW1vdmVQcm9wb3Nl
ZERhdGFiYXNlKFByb3Bvc2VkRGF0YWJhc2UmIGRhdGFiYXNlKQogewotICAgIExvY2tlciBsb2Nr
ZXIgeyBtX3Byb3Bvc2VkRGF0YWJhc2VzTXV0ZXggfTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9w
cm9wb3NlZERhdGFiYXNlc0xvY2sgfTsKICAgICBtX3Byb3Bvc2VkRGF0YWJhc2VzLnJlbW92ZSgm
ZGF0YWJhc2UpOwogfQogCkBAIC0yNDEsNyArMjQxLDcgQEAgdm9pZCBEYXRhYmFzZU1hbmFnZXI6
OnN0b3BEYXRhYmFzZXMoRG9jdW1lbnQmIGRvY3VtZW50LCBEYXRhYmFzZVRhc2tTeW5jaHJvbml6
ZXIKIFN0cmluZyBEYXRhYmFzZU1hbmFnZXI6OmZ1bGxQYXRoRm9yRGF0YWJhc2UoU2VjdXJpdHlP
cmlnaW4mIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBuYW1lLCBib29sIGNyZWF0ZUlmRG9lc05vdEV4
aXN0KQogewogICAgIHsKLSAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fcHJvcG9zZWREYXRhYmFz
ZXNNdXRleCB9OworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9wcm9wb3NlZERhdGFiYXNlc0xv
Y2sgfTsKICAgICAgICAgZm9yIChhdXRvKiBwcm9wb3NlZERhdGFiYXNlIDogbV9wcm9wb3NlZERh
dGFiYXNlcykgewogICAgICAgICAgICAgaWYgKHByb3Bvc2VkRGF0YWJhc2UtPmRldGFpbHMoKS5u
YW1lKCkgPT0gbmFtZSAmJiBwcm9wb3NlZERhdGFiYXNlLT5vcmlnaW4oKS5lcXVhbCgmb3JpZ2lu
KSkKICAgICAgICAgICAgICAgICByZXR1cm4gU3RyaW5nKCk7CkBAIC0yNTMsNyArMjUzLDcgQEAg
U3RyaW5nIERhdGFiYXNlTWFuYWdlcjo6ZnVsbFBhdGhGb3JEYXRhYmFzZShTZWN1cml0eU9yaWdp
biYgb3JpZ2luLCBjb25zdCBTdHJpbmcKIERhdGFiYXNlRGV0YWlscyBEYXRhYmFzZU1hbmFnZXI6
OmRldGFpbHNGb3JOYW1lQW5kT3JpZ2luKGNvbnN0IFN0cmluZyYgbmFtZSwgU2VjdXJpdHlPcmln
aW4mIG9yaWdpbikKIHsKICAgICB7Ci0gICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3Byb3Bvc2Vk
RGF0YWJhc2VzTXV0ZXggfTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fcHJvcG9zZWREYXRh
YmFzZXNMb2NrIH07CiAgICAgICAgIGZvciAoYXV0byogcHJvcG9zZWREYXRhYmFzZSA6IG1fcHJv
cG9zZWREYXRhYmFzZXMpIHsKICAgICAgICAgICAgIGlmIChwcm9wb3NlZERhdGFiYXNlLT5kZXRh
aWxzKCkubmFtZSgpID09IG5hbWUgJiYgcHJvcG9zZWREYXRhYmFzZS0+b3JpZ2luKCkuZXF1YWwo
Jm9yaWdpbikpIHsKICAgICAgICAgICAgICAgICBBU1NFUlQoJnByb3Bvc2VkRGF0YWJhc2UtPmRl
dGFpbHMoKS50aHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkgfHwgaXNNYWluVGhyZWFkKCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFz
ZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VN
YW5hZ2VyLmgKaW5kZXggYWE0M2ViZWY4OWMyODg0YjExNzhjMmY5ZmZlOWYxYmYwMWZhODgxYi4u
OTIxM2E0ZDRiOTIzNTllMTk1NWY2MTBiY2ZmOGY3Njg3OTg4OTQ4YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5oCkBAIC0y
OCw4ICsyOCw4IEBACiAjaW5jbHVkZSAiRGF0YWJhc2VEZXRhaWxzLmgiCiAjaW5jbHVkZSAiRXhj
ZXB0aW9uT3IuaCIKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9D
aGVja2VkTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL0xv
Y2suaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC04Nyw4ICs4Nyw4IEBAIHByaXZhdGU6
CiAgICAgRGF0YWJhc2VNYW5hZ2VyQ2xpZW50KiBtX2NsaWVudCB7IG51bGxwdHIgfTsKICAgICBi
b29sIG1fZGF0YWJhc2VJc0F2YWlsYWJsZSB7IHRydWUgfTsKIAotICAgIExvY2sgbV9wcm9wb3Nl
ZERhdGFiYXNlc011dGV4OwotICAgIEhhc2hTZXQ8UHJvcG9zZWREYXRhYmFzZSo+IG1fcHJvcG9z
ZWREYXRhYmFzZXM7CisgICAgQ2hlY2tlZExvY2sgbV9wcm9wb3NlZERhdGFiYXNlc0xvY2s7Cisg
ICAgSGFzaFNldDxQcm9wb3NlZERhdGFiYXNlKj4gbV9wcm9wb3NlZERhdGFiYXNlcyBXVEZfR1VB
UkRFRF9CWV9MT0NLKG1fcHJvcG9zZWREYXRhYmFzZXNMb2NrKTsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJh
c2UvRGF0YWJhc2VUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFz
ZS9EYXRhYmFzZVRocmVhZC5jcHAKaW5kZXggZTZkN2Q2NmEwOGQ4YWM3NTgzODY3YzA3MGIxM2M0
M2IxNjY5OWZmOS4uZTA3MDMzYWM1OTViNDIwZmJkYWFjOGJmYjNhMGE5MDFhZWJjNDY3MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRocmVh
ZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRo
cmVhZC5jcHAKQEAgLTExMCw3ICsxMTAsNyBAQCB2b2lkIERhdGFiYXNlVGhyZWFkOjpkYXRhYmFz
ZVRocmVhZCgpCiAgICAgLy8gaW5jb25zaXN0ZW50IG9yIGxvY2tlZCBzdGF0ZS4KICAgICBEYXRh
YmFzZVNldCBvcGVuU2V0Q29weTsKICAgICB7Ci0gICAgICAgIExvY2tlciBsb2NrZXIgeyBtX29w
ZW5EYXRhYmFzZVNldE11dGV4IH07CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX29wZW5EYXRh
YmFzZVNldExvY2sgfTsKICAgICAgICAgaWYgKG1fb3BlbkRhdGFiYXNlU2V0LnNpemUoKSA+IDAp
IHsKICAgICAgICAgICAgIC8vIEFzIHRoZSBjYWxsIHRvIGNsb3NlIHdpbGwgbW9kaWZ5IHRoZSBv
cmlnaW5hbCBzZXQsIHdlIG11c3QgdGFrZSBhIGNvcHkgdG8gaXRlcmF0ZSBvdmVyLgogICAgICAg
ICAgICAgb3BlblNldENvcHkuc3dhcChtX29wZW5EYXRhYmFzZVNldCk7CkBAIC0xMzQsNyArMTM0
LDcgQEAgdm9pZCBEYXRhYmFzZVRocmVhZDo6ZGF0YWJhc2VUaHJlYWQoKQogCiB2b2lkIERhdGFi
YXNlVGhyZWFkOjpyZWNvcmREYXRhYmFzZU9wZW4oRGF0YWJhc2UmIGRhdGFiYXNlKQogewotICAg
IExvY2tlciBsb2NrZXIgeyBtX29wZW5EYXRhYmFzZVNldE11dGV4IH07CisgICAgTG9ja2VyIGxv
Y2tlciB7IG1fb3BlbkRhdGFiYXNlU2V0TG9jayB9OwogCiAgICAgQVNTRVJUKG1fdGhyZWFkID09
ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAgICAgQVNTRVJUKCFtX29wZW5EYXRhYmFzZVNldC5jb250
YWlucygmZGF0YWJhc2UpKTsKQEAgLTE0Myw3ICsxNDMsNyBAQCB2b2lkIERhdGFiYXNlVGhyZWFk
OjpyZWNvcmREYXRhYmFzZU9wZW4oRGF0YWJhc2UmIGRhdGFiYXNlKQogCiB2b2lkIERhdGFiYXNl
VGhyZWFkOjpyZWNvcmREYXRhYmFzZUNsb3NlZChEYXRhYmFzZSYgZGF0YWJhc2UpCiB7Ci0gICAg
TG9ja2VyIGxvY2tlciB7IG1fb3BlbkRhdGFiYXNlU2V0TXV0ZXggfTsKKyAgICBMb2NrZXIgbG9j
a2VyIHsgbV9vcGVuRGF0YWJhc2VTZXRMb2NrIH07CiAKICAgICBBU1NFUlQobV90aHJlYWQgPT0g
JlRocmVhZDo6Y3VycmVudCgpKTsKICAgICBBU1NFUlQobV9xdWV1ZS5raWxsZWQoKSB8fCBtX29w
ZW5EYXRhYmFzZVNldC5jb250YWlucygmZGF0YWJhc2UpKTsKQEAgLTE3Miw3ICsxNzIsNyBAQCB2
b2lkIERhdGFiYXNlVGhyZWFkOjp1bnNjaGVkdWxlRGF0YWJhc2VUYXNrcyhEYXRhYmFzZSYgZGF0
YWJhc2UpCiAKIGJvb2wgRGF0YWJhc2VUaHJlYWQ6Omhhc1BlbmRpbmdEYXRhYmFzZUFjdGl2aXR5
KCkgY29uc3QKIHsKLSAgICBMb2NrZXIgbG9ja2VyIHsgbV9vcGVuRGF0YWJhc2VTZXRNdXRleCB9
OworICAgIExvY2tlciBsb2NrZXIgeyBtX29wZW5EYXRhYmFzZVNldExvY2sgfTsKICAgICBmb3Ig
KGF1dG8mIGRhdGFiYXNlIDogbV9vcGVuRGF0YWJhc2VTZXQpIHsKICAgICAgICAgaWYgKGRhdGFi
YXNlLT5oYXNQZW5kaW5nQ3JlYXRpb25FdmVudCgpIHx8IGRhdGFiYXNlLT5oYXNQZW5kaW5nVHJh
bnNhY3Rpb24oKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRocmVhZC5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRocmVhZC5oCmluZGV4IGJkNmM5NzQx
ZWU5YWFiY2E0OWY5YzRkOGNhNmVjOTk5YzBmM2U3ZTQuLjVkYzQxMWNjNTYzM2M0NmRhMTYxYWUw
MmJhNDk5YTliMGI1YTc0MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
ZGF0YWJhc2UvRGF0YWJhc2VUaHJlYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmRhdGFiYXNlL0RhdGFiYXNlVGhyZWFkLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNwcmFnbWEgb25j
ZQogCiAjaW5jbHVkZSA8bWVtb3J5PgorI2luY2x1ZGUgPHd0Zi9DaGVja2VkTG9jay5oPgogI2lu
Y2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL01lc3NhZ2VRdWV1ZS5oPgogI2lu
Y2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTc1LDggKzc2LDggQEAgcHJpdmF0ZToKIAogICAgIC8v
IFRoaXMgc2V0IGtlZXBzIHRyYWNrIG9mIHRoZSBvcGVuIGRhdGFiYXNlcyB0aGF0IGhhdmUgYmVl
biB1c2VkIG9uIHRoaXMgdGhyZWFkLgogICAgIHVzaW5nIERhdGFiYXNlU2V0ID0gSGFzaFNldDxS
ZWZQdHI8RGF0YWJhc2U+PjsKLSAgICBtdXRhYmxlIExvY2sgbV9vcGVuRGF0YWJhc2VTZXRNdXRl
eDsKLSAgICBEYXRhYmFzZVNldCBtX29wZW5EYXRhYmFzZVNldDsKKyAgICBtdXRhYmxlIENoZWNr
ZWRMb2NrIG1fb3BlbkRhdGFiYXNlU2V0TG9jazsKKyAgICBEYXRhYmFzZVNldCBtX29wZW5EYXRh
YmFzZVNldCBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fb3BlbkRhdGFiYXNlU2V0TG9jayk7CiAKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8U1FMVHJhbnNhY3Rpb25Db29yZGluYXRvcj4gbV90cmFuc2FjdGlv
bkNvb3JkaW5hdG9yOwogICAgIERhdGFiYXNlVGFza1N5bmNocm9uaXplciogbV9jbGVhbnVwU3lu
YyB7IG51bGxwdHIgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0
YWJhc2UvU1FMQ2FsbGJhY2tXcmFwcGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRh
dGFiYXNlL1NRTENhbGxiYWNrV3JhcHBlci5oCmluZGV4IDI3MjE0NDEzNzUyNTkzZWQwOGEyNjYy
OTQwZmNhODdhOTI0MzZjNWIuLmMyZWQzNjZlM2MwOGZlOWUxOWZmN2NlYzk5OTU1ZWQ0NDAxMzk5
NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMQ2Fs
bGJhY2tXcmFwcGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9T
UUxDYWxsYmFja1dyYXBwZXIuaApAQCAtMjksNyArMjksNyBAQAogI3ByYWdtYSBvbmNlCiAKICNp
bmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSA8d3RmL0xvY2suaD4K
KyNpbmNsdWRlIDx3dGYvQ2hlY2tlZExvY2suaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBA
IC01OCw3ICs1OCw3IEBAIHB1YmxpYzoKICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
c2NyaXB0RXhlY3V0aW9uQ29udGV4dFB0cjsKICAgICAgICAgVCogY2FsbGJhY2s7CiAgICAgICAg
IHsKLSAgICAgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX211dGV4IH07CisgICAgICAgICAgICBM
b2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAgICAgICAgICAgICBpZiAoIW1fY2FsbGJhY2spIHsK
ICAgICAgICAgICAgICAgICBBU1NFUlQoIW1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuOwpAQCAtODMsMTkgKzgzLDIwIEBAIHB1YmxpYzoKIAogICAgIFJl
ZlB0cjxUPiB1bndyYXAoKQogICAgIHsKLSAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbXV0ZXgg
fTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogICAgICAgICBBU1NFUlQoIW1f
Y2FsbGJhY2sgfHwgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5pc0NvbnRleHRUaHJlYWQoKSk7
CiAgICAgICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IG51bGxwdHI7CiAgICAgICAgIHJl
dHVybiBXVEZNb3ZlKG1fY2FsbGJhY2spOwogICAgIH0KIAogICAgIC8vIFVzZWZ1bCBmb3Igb3B0
aW1pemF0aW9ucyBvbmx5LCBwbGVhc2UgdGVzdCB0aGUgcmV0dXJuIHZhbHVlIG9mIHVud3JhcCB0
byBiZSBzdXJlLgotICAgIGJvb2wgaGFzQ2FsbGJhY2soKSBjb25zdCB7IHJldHVybiBtX2NhbGxi
YWNrOyB9CisgICAgLy8gRklYTUU6IFRoaXMgaXMgbm90IHRocmVhZC1zYWZlLgorICAgIGJvb2wg
aGFzQ2FsbGJhY2soKSBjb25zdCBXVEZfSUdOT1JFU19USFJFQURfU0FGRVRZX0FOQUxZU0lTIHsg
cmV0dXJuIG1fY2FsbGJhY2s7IH0KIAogcHJpdmF0ZToKLSAgICBMb2NrIG1fbXV0ZXg7Ci0gICAg
UmVmUHRyPFQ+IG1fY2FsbGJhY2s7Ci0gICAgUmVmUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ+
IG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKKyAgICBDaGVja2VkTG9jayBtX2xvY2s7CisgICAg
UmVmUHRyPFQ+IG1fY2FsbGJhY2sgV1RGX0dVQVJERURfQllfTE9DSyhtX2xvY2spOworICAgIFJl
ZlB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0PiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQgV1RG
X0dVQVJERURfQllfTE9DSyhtX2xvY2spOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2Fj
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0
aW9uLmNwcAppbmRleCBlNzQyMWM3N2M1MzI3MDExZjU4YmYxMjYxNmY5ZTA0ZGI1MWI2NjZlLi5k
MTRlYmZjNTc5Y2VhNjM4MzRhODc5M2EzNWVkZWNkNTY0ODY5YWU3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uLmNwcApAQCAt
MTQ0LDcgKzE0NCw3IEBAIHZvaWQgU1FMVHJhbnNhY3Rpb246OmNhbGxFcnJvckNhbGxiYWNrRHVl
VG9JbnRlcnJ1cHRpb24oKQogCiB2b2lkIFNRTFRyYW5zYWN0aW9uOjplbnF1ZXVlU3RhdGVtZW50
KHN0ZDo6dW5pcXVlX3B0cjxTUUxTdGF0ZW1lbnQ+IHN0YXRlbWVudCkKIHsKLSAgICBMb2NrZXIg
bG9ja2VyIHsgbV9zdGF0ZW1lbnRNdXRleCB9OworICAgIExvY2tlciBsb2NrZXIgeyBtX3N0YXRl
bWVudExvY2sgfTsKICAgICBtX3N0YXRlbWVudFF1ZXVlLmFwcGVuZChXVEZNb3ZlKHN0YXRlbWVu
dCkpOwogfQogCkBAIC0xOTAsNyArMTkwLDcgQEAgdm9pZCBTUUxUcmFuc2FjdGlvbjo6Y2hlY2tB
bmRIYW5kbGVDbG9zZWREYXRhYmFzZSgpCiAgICAgLy8gSWYgdGhlIGRhdGFiYXNlIHdhcyBzdG9w
cGVkLCBkb24ndCBkbyBhbnl0aGluZyBhbmQgY2FuY2VsIHF1ZXVlZCB3b3JrCiAgICAgTE9HKFN0
b3JhZ2VBUEksICJEYXRhYmFzZSB3YXMgc3RvcHBlZCBvciBpbnRlcnJ1cHRlZCAtIGNhbmNlbGxp
bmcgd29yayBmb3IgdGhpcyB0cmFuc2FjdGlvbiIpOwogCi0gICAgTG9ja2VyIGxvY2tlciB7IG1f
c3RhdGVtZW50TXV0ZXggfTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9zdGF0ZW1lbnRMb2NrIH07
CiAgICAgbV9zdGF0ZW1lbnRRdWV1ZS5jbGVhcigpOwogICAgIG1fbmV4dFN0ZXAgPSBudWxscHRy
OwogCkBAIC01MTYsNyArNTE2LDcgQEAgdm9pZCBTUUxUcmFuc2FjdGlvbjo6Z2V0TmV4dFN0YXRl
bWVudCgpCiB7CiAgICAgbV9jdXJyZW50U3RhdGVtZW50ID0gbnVsbHB0cjsKIAotICAgIExvY2tl
ciBsb2NrZXIgeyBtX3N0YXRlbWVudE11dGV4IH07CisgICAgTG9ja2VyIGxvY2tlciB7IG1fc3Rh
dGVtZW50TG9jayB9OwogICAgIGlmICghbV9zdGF0ZW1lbnRRdWV1ZS5pc0VtcHR5KCkpCiAgICAg
ICAgIG1fY3VycmVudFN0YXRlbWVudCA9IG1fc3RhdGVtZW50UXVldWUudGFrZUZpcnN0KCk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5z
YWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0
aW9uLmgKaW5kZXggNTQwZjZlMzFmZjNiM2UyOTEyYTk4ZTdmMmQ4MDc5YmE1OTAwYTJiYy4uMzFl
MTBiNzIzODQxOWNmYzBiNzJjYjUxNzA4ZTA2YTliY2VlZjBlNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb24uaApAQCAtMzMsNiAr
MzMsNyBAQAogI2luY2x1ZGUgIlNRTFRyYW5zYWN0aW9uQmFja2VuZC5oIgogI2luY2x1ZGUgIlNR
TFRyYW5zYWN0aW9uU3RhdGVNYWNoaW5lLmgiCiAjaW5jbHVkZSAiU1FMVmFsdWUuaCIKKyNpbmNs
dWRlIDx3dGYvQ2hlY2tlZExvY2suaD4KICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRl
IDx3dGYvTG9jay5oPgogCkBAIC0xMzgsOCArMTM5LDggQEAgcHJpdmF0ZToKICAgICBib29sIG1f
cmVhZE9ubHkgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9oYXNWZXJzaW9uTWlzbWF0Y2ggeyBmYWxz
ZSB9OwogCi0gICAgTG9jayBtX3N0YXRlbWVudE11dGV4OwotICAgIERlcXVlPHN0ZDo6dW5pcXVl
X3B0cjxTUUxTdGF0ZW1lbnQ+PiBtX3N0YXRlbWVudFF1ZXVlOworICAgIENoZWNrZWRMb2NrIG1f
c3RhdGVtZW50TG9jazsKKyAgICBEZXF1ZTxzdGQ6OnVuaXF1ZV9wdHI8U1FMU3RhdGVtZW50Pj4g
bV9zdGF0ZW1lbnRRdWV1ZSBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fc3RhdGVtZW50TG9jayk7CiAK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8U1FMU3RhdGVtZW50PiBtX2N1cnJlbnRTdGF0ZW1lbnQ7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNh
Y3Rpb25CYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FM
VHJhbnNhY3Rpb25CYWNrZW5kLmNwcAppbmRleCBhMDQzZjdjYTMyNmJlOGMwZTliYzk4M2JjMzdi
YmY0NTE4ZTkwNjE0Li42MmIyN2NkYjMzMjUxNGQ2YTQ5NzEwYTA3MWQ0MTE3NWE3MGRiZGRlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0
aW9uQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9T
UUxUcmFuc2FjdGlvbkJhY2tlbmQuY3BwCkBAIC0zNTcsNyArMzU3LDcgQEAgdm9pZCBTUUxUcmFu
c2FjdGlvbkJhY2tlbmQ6OmRvQ2xlYW51cCgpCiAKICAgICBtX2Zyb250ZW5kLnJlbGVhc2VPcmln
aW5Mb2NrSWZOZWVkZWQoKTsKIAotICAgIExvY2tlciBsb2NrZXIgeyBtX2Zyb250ZW5kLm1fc3Rh
dGVtZW50TXV0ZXggfTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9mcm9udGVuZC5tX3N0YXRlbWVu
dExvY2sgfTsKICAgICBtX2Zyb250ZW5kLm1fc3RhdGVtZW50UXVldWUuY2xlYXIoKTsKIAogICAg
IGlmIChtX2Zyb250ZW5kLm1fc3FsaXRlVHJhbnNhY3Rpb24pIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmggYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5o
CmluZGV4IDI4NDVjNzEyNGM5Njg1ZGU5NDY0OGQ2NjM5NjVmYzYyZTE3ZDdkN2UuLjgxYWI5M2M2
YjliYjQ2YWNmYWNhNDJiOThkMTViMDQxZmRmOTJjNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuaApA
QCAtMzYxLDcgKzM2MSw3IEBAIHB1YmxpYzoKICAgICAvLyBCb3RoIHNldFJvb3ROb2RlSUQgYW5k
IHNldEZvY3VzZWROb2RlSUQgYXJlIGNhbGxlZCBkdXJpbmcgdGhlIGdlbmVyYXRpb24KICAgICAv
LyBvZiB0aGUgSXNvbGF0ZWRUcmVlLgogICAgIC8vIEZvY3VzZWQgbm9kZSB1cGRhdGVzIGluIEFY
T2JqZWN0Q2FjaGUgdXNlIHNldEZvY3VzTm9kZUlELgotICAgIHZvaWQgc2V0Um9vdE5vZGUoQVhJ
c29sYXRlZE9iamVjdCopOworICAgIHZvaWQgc2V0Um9vdE5vZGUoQVhJc29sYXRlZE9iamVjdCop
IFdURl9SRVFVSVJFU19MT0NLKG1fY2hhbmdlTG9nTG9jayk7CiAgICAgdm9pZCBzZXRGb2N1c2Vk
Tm9kZUlEKEFYSUQpOwogCiAgICAgLy8gQ2FsbGVkIG9uIEFYIHRocmVhZCBmcm9tIFdlYkFjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVyIG1ldGhvZHMuCkBAIC0zODEsNyArMzgxLDcgQEAgcHJpdmF0
ZToKICAgICAvLyBDYWxsIG9uIG1haW4gdGhyZWFkCiAgICAgUmVmPEFYSXNvbGF0ZWRPYmplY3Q+
IGNyZWF0ZVN1YnRyZWUoQVhDb3JlT2JqZWN0JiwgQVhJRCBwYXJlbnRJRCwgYm9vbCBhdHRhY2hX
cmFwcGVyKTsKICAgICAvLyBDYWxsZWQgb24gbWFpbiB0aHJlYWQgdG8gdXBkYXRlIGJvdGggbV9u
b2RlTWFwIGFuZCBtX3BlbmRpbmdDaGlsZHJlblVwZGF0ZXMuCi0gICAgdm9pZCB1cGRhdGVDaGls
ZHJlbklEcyhBWElEIHBhcmVudElELCBWZWN0b3I8QVhJRD4mJiBjaGlsZHJlbklEcyk7CisgICAg
dm9pZCB1cGRhdGVDaGlsZHJlbklEcyhBWElEIHBhcmVudElELCBWZWN0b3I8QVhJRD4mJiBjaGls
ZHJlbklEcykgV1RGX1JFUVVJUkVTX0xPQ0sobV9jaGFuZ2VMb2dMb2NrKTsKIAogICAgIEFYSXNv
bGF0ZWRUcmVlSUQgbV90cmVlSUQ7CiAgICAgQVhPYmplY3RDYWNoZSogbV9heE9iamVjdENhY2hl
IHsgbnVsbHB0ciB9OwpAQCAtMzkzLDE1ICszOTMsMTUgQEAgcHJpdmF0ZToKICAgICBIYXNoTWFw
PEFYSUQsIFJlZjxBWElzb2xhdGVkT2JqZWN0Pj4gbV9yZWFkZXJUaHJlYWROb2RlTWFwOwogCiAg
ICAgLy8gV3JpdHRlbiB0byBieSBtYWluIHRocmVhZCB1bmRlciBsb2NrLCBhY2Nlc3NlZCBhbmQg
YXBwbGllZCBieSBBWCB0aHJlYWQuCi0gICAgUmVmUHRyPEFYSXNvbGF0ZWRPYmplY3Q+IG1fcm9v
dE5vZGU7Ci0gICAgVmVjdG9yPE5vZGVDaGFuZ2U+IG1fcGVuZGluZ0FwcGVuZHM7IC8vIE5vZGVz
IHRvIGJlIGFkZGVkIHRvIHRoZSB0cmVlIGFuZCBwbGF0Zm9ybS13cmFwcGVkLgotICAgIFZlY3Rv
cjxBWFByb3BlcnR5Q2hhbmdlPiBtX3BlbmRpbmdQcm9wZXJ0eUNoYW5nZXM7Ci0gICAgVmVjdG9y
PEFYSUQ+IG1fcGVuZGluZ05vZGVSZW1vdmFsczsgLy8gTm9kZXMgdG8gYmUgcmVtb3ZlZCBmcm9t
IHRoZSB0cmVlLgotICAgIFZlY3RvcjxBWElEPiBtX3BlbmRpbmdTdWJ0cmVlUmVtb3ZhbHM7IC8v
IE5vZGVzIHdob3NlIHN1YnRyZWVzIGFyZSB0byBiZSByZW1vdmVkIGZyb20gdGhlIHRyZWUuCi0g
ICAgVmVjdG9yPHN0ZDo6cGFpcjxBWElELCBWZWN0b3I8QVhJRD4+PiBtX3BlbmRpbmdDaGlsZHJl
blVwZGF0ZXM7Ci0gICAgQVhJRCBtX3BlbmRpbmdGb2N1c2VkTm9kZUlEIHsgSW52YWxpZEFYSUQg
fTsKKyAgICBSZWZQdHI8QVhJc29sYXRlZE9iamVjdD4gbV9yb290Tm9kZSBXVEZfR1VBUkRFRF9C
WV9MT0NLKG1fY2hhbmdlTG9nTG9jayk7CisgICAgVmVjdG9yPE5vZGVDaGFuZ2U+IG1fcGVuZGlu
Z0FwcGVuZHMgV1RGX0dVQVJERURfQllfTE9DSyhtX2NoYW5nZUxvZ0xvY2spOyAvLyBOb2RlcyB0
byBiZSBhZGRlZCB0byB0aGUgdHJlZSBhbmQgcGxhdGZvcm0td3JhcHBlZC4KKyAgICBWZWN0b3I8
QVhQcm9wZXJ0eUNoYW5nZT4gbV9wZW5kaW5nUHJvcGVydHlDaGFuZ2VzIFdURl9HVUFSREVEX0JZ
X0xPQ0sobV9jaGFuZ2VMb2dMb2NrKTsKKyAgICBWZWN0b3I8QVhJRD4gbV9wZW5kaW5nTm9kZVJl
bW92YWxzIFdURl9HVUFSREVEX0JZX0xPQ0sobV9jaGFuZ2VMb2dMb2NrKTsgLy8gTm9kZXMgdG8g
YmUgcmVtb3ZlZCBmcm9tIHRoZSB0cmVlLgorICAgIFZlY3RvcjxBWElEPiBtX3BlbmRpbmdTdWJ0
cmVlUmVtb3ZhbHMgV1RGX0dVQVJERURfQllfTE9DSyhtX2NoYW5nZUxvZ0xvY2spOyAvLyBOb2Rl
cyB3aG9zZSBzdWJ0cmVlcyBhcmUgdG8gYmUgcmVtb3ZlZCBmcm9tIHRoZSB0cmVlLgorICAgIFZl
Y3RvcjxzdGQ6OnBhaXI8QVhJRCwgVmVjdG9yPEFYSUQ+Pj4gbV9wZW5kaW5nQ2hpbGRyZW5VcGRh
dGVzIFdURl9HVUFSREVEX0JZX0xPQ0sobV9jaGFuZ2VMb2dMb2NrKTsKKyAgICBBWElEIG1fcGVu
ZGluZ0ZvY3VzZWROb2RlSUQgV1RGX0dVQVJERURfQllfTE9DSyhtX2NoYW5nZUxvZ0xvY2spIHsg
SW52YWxpZEFYSUQgfTsKICAgICBBWElEIG1fZm9jdXNlZE5vZGVJRCB7IEludmFsaWRBWElEIH07
Ci0gICAgTG9jayBtX2NoYW5nZUxvZ0xvY2s7CisgICAgQ2hlY2tlZExvY2sgbV9jaGFuZ2VMb2dM
b2NrOwogfTsKIAogaW5saW5lIEFYT2JqZWN0Q2FjaGUqIEFYSXNvbGF0ZWRUcmVlOjpheE9iamVj
dENhY2hlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Fib3J0
YWJsZVRhc2tRdWV1ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQWJvcnRhYmxlVGFza1F1
ZXVlLmgKaW5kZXggODI2OTlkZTYwZjA1NjUxZDZjNzA4MTYxYThhMzhhYzcxOTI5YTY2Yy4uZjg0
OTFmMDEyZTVkNjY4MjYwYzUwMzdkNDlkZjhkNjcwZjhmNTlmMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vQWJvcnRhYmxlVGFza1F1ZXVlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vQWJvcnRhYmxlVGFza1F1ZXVlLmgKQEAgLTIwLDEwICsyMCwxMCBAQAogCiAj
cHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgPHd0Zi9Db25kaXRpb24uaD4KKyNpbmNsdWRlIDx3dGYv
Q2hlY2tlZENvbmRpdGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9DaGVja2VkTG9jay5oPgogI2luY2x1
ZGUgPHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgotI2luY2x1ZGUgPHd0
Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGli
RXh0cmFzLmg+CiAKQEAgLTczLDcgKzczLDcgQEAgcHVibGljOgogICAgIH5BYm9ydGFibGVUYXNr
UXVldWUoKQogICAgIHsKICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICAgICAg
QVNTRVJUKCFtX211dGV4LmlzSGVsZCgpKTsKKyAgICAgICAgQVNTRVJUKCFtX2xvY2suaXNIZWxk
KCkpOwogICAgICAgICBBU1NFUlQobV9jaGFubmVsLmlzRW1wdHkoKSk7CiAgICAgfQogCkBAIC05
NCw3ICs5NCw3IEBAIHB1YmxpYzoKICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAog
ICAgICAgICB7Ci0gICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9tdXRleCB9OworICAgICAg
ICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogICAgICAgICAgICAgbV9hYm9ydGluZyA9
IHRydWU7CiAgICAgICAgICAgICBjYW5jZWxBbGxUYXNrcygpOwogICAgICAgICB9CkBAIC0xMDgs
NyArMTA4LDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKIAotICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9tdXRleCB9OworICAgICAgICBMb2NrZXIg
bG9ja2VyIHsgbV9sb2NrIH07CiAgICAgICAgIEFTU0VSVChtX2Fib3J0aW5nKTsKICAgICAgICAg
bV9hYm9ydGluZyA9IGZhbHNlOwogICAgIH0KQEAgLTEyMyw3ICsxMjMsNyBAQCBwdWJsaWM6CiAg
ICAgewogICAgICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKIAotICAgICAgICBMb2NrZXIg
bG9ja2VyIHsgbV9tdXRleCB9OworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAg
ICAgICAgIGlmIChtX2Fib3J0aW5nKQogICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0xNDMsMTkg
KzE0MywxOSBAQCBwdWJsaWM6CiAgICAgICAgIC8vIERvbid0IGRlYWRsb2NrIHRoZSBtYWluIHRo
cmVhZCB3aXRoIGl0c2VsZi4KICAgICAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAKLSAg
ICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbXV0ZXggfTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7
IG1fbG9jayB9OwogICAgICAgICBpZiAobV9hYm9ydGluZykKICAgICAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8Uj4gcmVzcG9uc2UgPSBXVEY6Om51bGxv
cHQ7CiAgICAgICAgIHBvc3RUYXNrKFt0aGlzLCAmcmVzcG9uc2UsICZtYWluVGhyZWFkVGFza0hh
bmRsZXJdKCkgewogICAgICAgICAgICAgUiByZXNwb25zZVZhbHVlID0gbWFpblRocmVhZFRhc2tI
YW5kbGVyKCk7Ci0gICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9tdXRleCB9OworICAgICAg
ICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogICAgICAgICAgICAgaWYgKCFtX2Fib3J0
aW5nKQogICAgICAgICAgICAgICAgIHJlc3BvbnNlID0gV1RGTW92ZShyZXNwb25zZVZhbHVlKTsK
ICAgICAgICAgICAgIG1fYWJvcnRlZE9yUmVzcG9uc2VTZXQubm90aWZ5QWxsKCk7CiAgICAgICAg
IH0pOwotICAgICAgICBtX2Fib3J0ZWRPclJlc3BvbnNlU2V0LndhaXQobV9tdXRleCwgW3RoaXMs
ICZyZXNwb25zZV0oKSB7CisgICAgICAgIG1fYWJvcnRlZE9yUmVzcG9uc2VTZXQud2FpdChtX2xv
Y2ssIFt0aGlzLCAmcmVzcG9uc2VdKCkgewogICAgICAgICAgICAgcmV0dXJuIG1fYWJvcnRpbmcg
fHwgcmVzcG9uc2U7CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm4gcmVzcG9uc2U7CkBAIC0x
OTcsMTAgKzE5NywxMSBAQCBwcml2YXRlOgogICAgICAgICAgICAgaWYgKGlzQ2FuY2VsbGVkKCkp
CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgICAgICBMb2NrZXIgbG9jayB7IG1f
dGFza1F1ZXVlLT5tX211dGV4IH07Ci0gICAgICAgICAgICBBU1NFUlQodGhpcyA9PSBtX3Rhc2tR
dWV1ZS0+bV9jaGFubmVsLmZpcnN0KCkucHRyKCkpOwotICAgICAgICAgICAgbV90YXNrUXVldWUt
Pm1fY2hhbm5lbC5yZW1vdmVGaXJzdCgpOwotICAgICAgICAgICAgbG9jay51bmxvY2tFYXJseSgp
OworICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIExvY2tlciBsb2NrIHsgbV90YXNrUXVl
dWUtPm1fbG9jayB9OworICAgICAgICAgICAgICAgIEFTU0VSVCh0aGlzID09IG1fdGFza1F1ZXVl
LT5tX2NoYW5uZWwuZmlyc3QoKS5wdHIoKSk7CisgICAgICAgICAgICAgICAgbV90YXNrUXVldWUt
Pm1fY2hhbm5lbC5yZW1vdmVGaXJzdCgpOworICAgICAgICAgICAgfQogICAgICAgICAgICAgbV90
YXNrQ2FsbGJhY2soKTsKICAgICAgICAgfQogCkBAIC0yMTMsMjcgKzIxNCwyNyBAQCBwcml2YXRl
OgogICAgICAgICB7IH0KICAgICB9OwogCi0gICAgdm9pZCBwb3N0VGFzayhXVEY6OkZ1bmN0aW9u
PHZvaWQoKT4mJiBjYWxsYmFjaykKKyAgICB2b2lkIHBvc3RUYXNrKFdURjo6RnVuY3Rpb248dm9p
ZCgpPiYmIGNhbGxiYWNrKSBXVEZfUkVRVUlSRVNfTE9DSyhtX2xvY2spCiAgICAgewotICAgICAg
ICBBU1NFUlQobV9tdXRleC5pc0hlbGQoKSk7CisgICAgICAgIEFTU0VSVChtX2xvY2suaXNIZWxk
KCkpOwogICAgICAgICBSZWY8VGFzaz4gdGFzayA9IFRhc2s6OmNyZWF0ZSh0aGlzLCBXVEZNb3Zl
KGNhbGxiYWNrKSk7CiAgICAgICAgIG1fY2hhbm5lbC5hcHBlbmQodGFzay5jb3B5UmVmKCkpOwog
ICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Rhc2sgPSBXVEZNb3ZlKHRhc2spXSgp
IHsgdGFzay0+ZGlzcGF0Y2goKTsgfSk7CiAgICAgfQogCi0gICAgdm9pZCBjYW5jZWxBbGxUYXNr
cygpCisgICAgdm9pZCBjYW5jZWxBbGxUYXNrcygpIFdURl9SRVFVSVJFU19MT0NLKG1fbG9jaykK
ICAgICB7CiAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgICAgIEFTU0VSVCht
X211dGV4LmlzSGVsZCgpKTsKKyAgICAgICAgQVNTRVJUKG1fbG9jay5pc0hlbGQoKSk7CiAgICAg
ICAgIGZvciAoUmVmPFRhc2s+JiB0YXNrIDogbV9jaGFubmVsKQogICAgICAgICAgICAgdGFzay0+
Y2FuY2VsKCk7CiAgICAgICAgIG1fY2hhbm5lbC5jbGVhcigpOwogICAgIH0KIAotICAgIGJvb2wg
bV9hYm9ydGluZyB7IGZhbHNlIH07Ci0gICAgTG9jayBtX211dGV4OwotICAgIENvbmRpdGlvbiBt
X2Fib3J0ZWRPclJlc3BvbnNlU2V0OwotICAgIFdURjo6RGVxdWU8UmVmPFRhc2s+PiBtX2NoYW5u
ZWw7CisgICAgYm9vbCBtX2Fib3J0aW5nIFdURl9HVUFSREVEX0JZX0xPQ0sobV9sb2NrKSB7IGZh
bHNlIH07CisgICAgQ2hlY2tlZExvY2sgbV9sb2NrOworICAgIENoZWNrZWRDb25kaXRpb24gbV9h
Ym9ydGVkT3JSZXNwb25zZVNldDsKKyAgICBXVEY6OkRlcXVlPFJlZjxUYXNrPj4gbV9jaGFubmVs
IFdURl9HVUFSREVEX0JZX0xPQ0sobV9sb2NrKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlv
RGVzdGluYXRpb25Db2NvYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2Nv
YS9BdWRpb0Rlc3RpbmF0aW9uQ29jb2EuY3BwCmluZGV4IGMwZTA4Y2E5NTZlNWU4NTQwNzkwYjVi
Yzc0YTM5ZmU2YTQ5YzcyMzYuLjM5MmMzNjE0MDRmYzJjOTUwZWJiOTM4ODlhNjI5Y2I1YTM3MWU0
MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlv
RGVzdGluYXRpb25Db2NvYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
Y29jb2EvQXVkaW9EZXN0aW5hdGlvbkNvY29hLmNwcApAQCAtMjE5LDEwICsyMTksMTAgQEAgT1NT
dGF0dXMgQXVkaW9EZXN0aW5hdGlvbkNvY29hOjpyZW5kZXIoZG91YmxlIHNhbXBsZVRpbWUsIHVp
bnQ2NF90IGhvc3RUaW1lLCBVSW4KICAgICB9CiAKICAgICAvLyBXaGVuIHRoZXJlIGlzIGEgQXVk
aW9Xb3JrbGV0LCB3ZSBkbyByZW5kZXJpbmcgb24gdGhlIEF1ZGlvV29ya2xldFRocmVhZC4KLSAg
ICBhdXRvIGxvY2tlciA9IHRyeUhvbGRMb2NrKG1fZGlzcGF0Y2hUb1JlbmRlclRocmVhZExvY2sp
OwotICAgIGlmICghbG9ja2VyKQorICAgIGlmICghbV9kaXNwYXRjaFRvUmVuZGVyVGhyZWFkTG9j
ay50cnlMb2NrKCkpCiAgICAgICAgIHJldHVybiAtMTsKIAorICAgIExvY2tlciBsb2NrZXIgeyBB
ZG9wdExvY2tUYWcgeyB9LCBtX2Rpc3BhdGNoVG9SZW5kZXJUaHJlYWRMb2NrIH07CiAgICAgaWYg
KCFtX2Rpc3BhdGNoVG9SZW5kZXJUaHJlYWQpCiAgICAgICAgIHJlbmRlck9uUmVuZGVyaW5nVGhl
YWRJZlBsYXlpbmcoZnJhbWVzVG9SZW5kZXIpOwogICAgIGVsc2UgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9EZXN0aW5hdGlvbkNvY29hLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0Rlc3RpbmF0aW9uQ29j
b2EuaAppbmRleCA2OTkwNTM0YTUzYjNjYTJhNTExNzcxYmIzNGEzOTYzYTIyMmUyZDRhLi45YzNi
ZDdhNGY5NzQ2NWM5MWJjZTM2MzU3YTg3M2Q4YjBjMGZiYjMxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0Rlc3RpbmF0aW9uQ29jb2EuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0Rlc3RpbmF0aW9uQ29j
b2EuaApAQCAtOTEsOCArOTEsOCBAQCBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxNdWx0
aUNoYW5uZWxSZXNhbXBsZXI+IG1fcmVzYW1wbGVyOwogICAgIEF1ZGlvSU9Qb3NpdGlvbiBtX291
dHB1dFRpbWVzdGFtcDsKIAotICAgIExvY2sgbV9kaXNwYXRjaFRvUmVuZGVyVGhyZWFkTG9jazsK
LSAgICBGdW5jdGlvbjx2b2lkKEZ1bmN0aW9uPHZvaWQoKT4mJik+IG1fZGlzcGF0Y2hUb1JlbmRl
clRocmVhZDsKKyAgICBDaGVja2VkTG9jayBtX2Rpc3BhdGNoVG9SZW5kZXJUaHJlYWRMb2NrOwor
ICAgIEZ1bmN0aW9uPHZvaWQoRnVuY3Rpb248dm9pZCgpPiYmKT4gbV9kaXNwYXRjaFRvUmVuZGVy
VGhyZWFkIFdURl9HVUFSREVEX0JZX0xPQ0sobV9kaXNwYXRjaFRvUmVuZGVyVGhyZWFkTG9jayk7
CiAKICAgICBmbG9hdCBtX2NvbnRleHRTYW1wbGVSYXRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1l
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGlu
YXRpb25HU3RyZWFtZXIuaAppbmRleCBmZmQzZTgwZTUwNmZmZTlmNzVhZDBhODUwMDU3MWMzZDZh
MGU2NzlkLi44NDBmMGE3MWU5YzE1NzBkNzc0NmQ0MjIxOTFhYTI4ZGJiY2IxNzJhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5h
dGlvbkdTdHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJl
YW1lci9BdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyLmgKQEAgLTU4LDggKzU4LDYgQEAgcHJpdmF0
ZToKICAgICBHUmVmUHRyPEdzdEVsZW1lbnQ+IG1fc3JjOwogICAgIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+IG1fc3RhcnR1cENvbXBsZXRpb25IYW5kbGVyOwogICAgIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoYm9vbCk+IG1fc3RvcENvbXBsZXRpb25IYW5kbGVyOwotICAgIExvY2sgbV9z
ZXRTdGF0ZUxvY2s7Ci0gICAgQ29uZGl0aW9uIG1fc2V0U3RhdGVDb25kaXRpb247CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9nc3RyZWFtZXIvQXVkaW9Tb3VyY2VQcm92aWRlckdTdHJlYW1lci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9Tb3VyY2VQcm92aWRlckdT
dHJlYW1lci5jcHAKaW5kZXggNjkwYzFkYjk3NTkyOTRlNGNiMDc0NDQwMzQxMWJmOWQ1NjVlMmE2
YS4uZjc3NWEzMmZkNDc4MDJlZTUzODg1NzE2M2VkNzc5YTEyMTM4Y2Q0NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvU291cmNlUHJvdmlk
ZXJHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJl
YW1lci9BdWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVyLmNwcApAQCAtMTU5LDkgKzE1OSwxMCBA
QCB2b2lkIEF1ZGlvU291cmNlUHJvdmlkZXJHU3RyZWFtZXI6OmNvbmZpZ3VyZUF1ZGlvQmluKEdz
dEVsZW1lbnQqIGF1ZGlvQmluLCBHc3RFbAogdm9pZCBBdWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVh
bWVyOjpwcm92aWRlSW5wdXQoQXVkaW9CdXMqIGJ1cywgc2l6ZV90IGZyYW1lc1RvUHJvY2VzcykK
IHsKICAgICBHU1RfVFJBQ0UoIkZldGNoaW5nIGJ1ZmZlcnMgZnJvbSBhZGFwdGVycyIpOwotICAg
IGF1dG8gbG9ja2VyID0gdHJ5SG9sZExvY2sobV9hZGFwdGVyTXV0ZXgpOwotICAgIGlmICghbG9j
a2VyKQorICAgIGlmICghbV9hZGFwdGVyTG9jay50cnlMb2NrKCkpCiAgICAgICAgIHJldHVybjsK
KworICAgIExvY2tlciBsb2NrZXIgeyBBZG9wdExvY2tUYWcgeyB9LCBtX2FkYXB0ZXJMb2NrIH07
CiAgICAgZm9yIChhdXRvJiBpdCA6IG1fYWRhcHRlcnMpCiAgICAgICAgIGNvcHlHU3RyZWFtZXJC
dWZmZXJzVG9BdWRpb0NoYW5uZWwoaXQudmFsdWUuZ2V0KCksIGJ1cywgaXQua2V5IC0gMSwgZnJh
bWVzVG9Qcm9jZXNzKTsKIH0KQEAgLTE4Miw3ICsxODMsNyBAQCBHc3RGbG93UmV0dXJuIEF1ZGlv
U291cmNlUHJvdmlkZXJHU3RyZWFtZXI6OmhhbmRsZVNhbXBsZShHc3RBcHBTaW5rKiBzaW5rLCBi
b29sCiAKICAgICBHU1RfVFJBQ0UoIlN0b3JpbmcgYXVkaW8gc2FtcGxlICUiIEdTVF9QVFJfRk9S
TUFULCBzYW1wbGUuZ2V0KCkpOwogICAgIHsKLSAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fYWRh
cHRlck11dGV4IH07CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2FkYXB0ZXJMb2NrIH07CiAg
ICAgICAgIEdRdWFyayBxdWFyayA9IGdfcXVhcmtfZnJvbV9zdGF0aWNfc3RyaW5nKCJjaGFubmVs
LWlkIik7CiAgICAgICAgIGludCBjaGFubmVsSWQgPSBHUE9JTlRFUl9UT19JTlQoZ19vYmplY3Rf
Z2V0X3FkYXRhKEdfT0JKRUNUKHNpbmspLCBxdWFyaykpOwogICAgICAgICBHU1RfREVCVUcoIkNo
YW5uZWwgSUQ6ICVkIiwgY2hhbm5lbElkKTsKQEAgLTM4NCw3ICszODUsNyBAQCB2b2lkIEF1ZGlv
U291cmNlUHJvdmlkZXJHU3RyZWFtZXI6OmRlaW50ZXJsZWF2ZVBhZHNDb25maWd1cmVkKCkKIAog
dm9pZCBBdWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVyOjpjbGVhckFkYXB0ZXJzKCkKIHsKLSAg
ICBMb2NrZXIgbG9ja2VyIHsgbV9hZGFwdGVyTXV0ZXggfTsKKyAgICBMb2NrZXIgbG9ja2VyIHsg
bV9hZGFwdGVyTG9jayB9OwogICAgIGZvciAoYXV0byYgYWRhcHRlciA6IG1fYWRhcHRlcnMudmFs
dWVzKCkpCiAgICAgICAgIGdzdF9hZGFwdGVyX2NsZWFyKGFkYXB0ZXIuZ2V0KCkpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvU291
cmNlUHJvdmlkZXJHU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dz
dHJlYW1lci9BdWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVyLmgKaW5kZXggYjhkODQ3ZDJkMmZj
NjkzN2UzMDU0ZDI4Njc2Mzc3N2I4YTI2MWNkNy4uNWEzYWY2Y2Y4OTMwYzI3MWNjNDEwZTM4NjEx
MWFjZTk4ZDRlYzFlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
Z3N0cmVhbWVyL0F1ZGlvU291cmNlUHJvdmlkZXJHU3RyZWFtZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9Tb3VyY2VQcm92aWRlckdTdHJlYW1l
ci5oCkBAIC0yNSw2ICsyNSw3IEBACiAjaW5jbHVkZSAiR1JlZlB0ckdTdHJlYW1lci5oIgogI2lu
Y2x1ZGUgIk1haW5UaHJlYWROb3RpZmllci5oIgogI2luY2x1ZGUgPGdzdC9nc3QuaD4KKyNpbmNs
dWRlIDx3dGYvQ2hlY2tlZExvY2suaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1
ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogCkBAIC04MSwxMSArODIsMTEgQEAgcHJpdmF0ZToKICAg
ICBHUmVmUHRyPEdzdEVsZW1lbnQ+IG1fYXVkaW9TaW5rQmluOwogICAgIFdlYWtQdHI8QXVkaW9T
b3VyY2VQcm92aWRlckNsaWVudD4gbV9jbGllbnQ7CiAgICAgaW50IG1fZGVpbnRlcmxlYXZlU291
cmNlUGFkcyB7IDAgfTsKLSAgICBIYXNoTWFwPGludCwgR1JlZlB0cjxHc3RBZGFwdGVyPj4gbV9h
ZGFwdGVyczsKKyAgICBIYXNoTWFwPGludCwgR1JlZlB0cjxHc3RBZGFwdGVyPj4gbV9hZGFwdGVy
cyBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fYWRhcHRlckxvY2spOwogICAgIHVuc2lnbmVkIGxvbmcg
bV9kZWludGVybGVhdmVQYWRBZGRlZEhhbmRsZXJJZCB7IDAgfTsKICAgICB1bnNpZ25lZCBsb25n
IG1fZGVpbnRlcmxlYXZlTm9Nb3JlUGFkc0hhbmRsZXJJZCB7IDAgfTsKICAgICB1bnNpZ25lZCBs
b25nIG1fZGVpbnRlcmxlYXZlUGFkUmVtb3ZlZEhhbmRsZXJJZCB7IDAgfTsKLSAgICBMb2NrIG1f
YWRhcHRlck11dGV4OworICAgIENoZWNrZWRMb2NrIG1fYWRhcHRlckxvY2s7CiB9OwogCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvV2ViS2l0
V2ViQXVkaW9Tb3VyY2VHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vZ3N0cmVhbWVyL1dlYktpdFdlYkF1ZGlvU291cmNlR1N0cmVhbWVyLmNwcAppbmRleCBmZDM0
NGYwMjVmYWUyOWM0ZDc0OTkxNTNkOGI2NDI4YjU4MmY4YzI5Li42ZWY4MzUyODNmZjM1M2E4ZmUx
MjI3YjA3MGExZGRkNTZkNGEzZjhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9nc3RyZWFtZXIvV2ViS2l0V2ViQXVkaW9Tb3VyY2VHU3RyZWFtZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9XZWJLaXRXZWJBdWRpb1Nv
dXJjZUdTdHJlYW1lci5jcHAKQEAgLTgxLDggKzgxLDggQEAgc3RydWN0IF9XZWJLaXRXZWJBdWRp
b1NyY1ByaXZhdGUgewogCiAgICAgYm9vbCBoYXNSZW5kZXJlZEF1ZGlibGVGcmFtZSB7IGZhbHNl
IH07CiAKLSAgICBMb2NrIGRpc3BhdGNoVG9SZW5kZXJUaHJlYWRMb2NrOwotICAgIEZ1bmN0aW9u
PHZvaWQoRnVuY3Rpb248dm9pZCgpPiYmKT4gZGlzcGF0Y2hUb1JlbmRlclRocmVhZEZ1bmN0aW9u
OworICAgIENoZWNrZWRMb2NrIGRpc3BhdGNoVG9SZW5kZXJUaHJlYWRMb2NrOworICAgIEZ1bmN0
aW9uPHZvaWQoRnVuY3Rpb248dm9pZCgpPiYmKT4gZGlzcGF0Y2hUb1JlbmRlclRocmVhZEZ1bmN0
aW9uIFdURl9HVUFSREVEX0JZX0xPQ0soZGlzcGF0Y2hUb1JlbmRlclRocmVhZExvY2spOwogCiAg
ICAgYm9vbCBkaXNwYXRjaERvbmUgV1RGX0dVQVJERURfQllfTE9DSyhkaXNwYXRjaExvY2spOwog
ICAgIENoZWNrZWRMb2NrIGRpc3BhdGNoTG9jazsKQEAgLTQwOCwxMCArNDA4LDExIEBAIHN0YXRp
YyB2b2lkIHdlYktpdFdlYkF1ZGlvU3JjUmVuZGVySXRlcmF0aW9uKFdlYktpdFdlYkF1ZGlvU3Jj
KiBzcmMpCiAgICAgICAgIHByaXYtPmRpc3BhdGNoRG9uZSA9IGZhbHNlOwogICAgIH0KIAotICAg
IGF1dG8gbG9ja2VyID0gdHJ5SG9sZExvY2socHJpdi0+ZGlzcGF0Y2hUb1JlbmRlclRocmVhZExv
Y2spOwotICAgIGlmICghbG9ja2VyKQorICAgIGlmICghcHJpdi0+ZGlzcGF0Y2hUb1JlbmRlclRo
cmVhZExvY2sudHJ5TG9jaygpKQogICAgICAgICByZXR1cm47CiAKKyAgICBMb2NrZXIgbG9ja2Vy
IHsgQWRvcHRMb2NrVGFnIHsgfSwgcHJpdi0+ZGlzcGF0Y2hUb1JlbmRlclRocmVhZExvY2sgfTsK
KwogICAgIGlmICghcHJpdi0+ZGlzcGF0Y2hUb1JlbmRlclRocmVhZEZ1bmN0aW9uKQogICAgICAg
ICB3ZWJLaXRXZWJBdWRpb1NyY1JlbmRlckFuZFB1c2hGcmFtZXMoR1JlZlB0cjxHc3RFbGVtZW50
PihHU1RfRUxFTUVOVF9DQVNUKHNyYykpLCBXVEZNb3ZlKCpjaGFubmVsQnVmZmVyTGlzdCkpOwog
ICAgIGVsc2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAKaW5kZXggNDM2OTY4OGUxOWE0MjdlYzhhZTRmNjFk
NTAyN2FlNzNiMmU0ZmFmMS4uZjYwZWU4OTFjYTkzZDk3YjY2OWI1OGIzNTk5ODUzMjZmNDZlNWEz
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uQ0YuY3BwCkBAIC0xNjcsOSArMTY3LDkgQEAgcHVibGljOgogcHJpdmF0
ZToKICAgICBpbmxpbmUgdm9pZCogY2FsbGJhY2tDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDx2b2lkKj4obV9vYmplY3RJRCk7IH0KIAotICAgIHN0YXRpYyBMb2NrJiBt
YXBMb2NrKCk7Ci0gICAgc3RhdGljIEhhc2hNYXA8dWludHB0cl90LCBBVkZXcmFwcGVyKj4mIG1h
cCgpOwotICAgIHN0YXRpYyBBVkZXcmFwcGVyKiBhdmZXcmFwcGVyRm9yQ2FsbGJhY2tDb250ZXh0
KHZvaWQqKTsKKyAgICBzdGF0aWMgTG9jayBtYXBMb2NrOworICAgIHN0YXRpYyBIYXNoTWFwPHVp
bnRwdHJfdCwgQVZGV3JhcHBlcio+JiBtYXAoKSBXVEZfUkVRVUlSRVNfTE9DSyhtYXBMb2NrKTsK
KyAgICBzdGF0aWMgQVZGV3JhcHBlciogYXZmV3JhcHBlckZvckNhbGxiYWNrQ29udGV4dCh2b2lk
KikgV1RGX1JFUVVJUkVTX0xPQ0sobWFwTG9jayk7CiAgICAgdm9pZCBhZGRUb01hcCgpOwogICAg
IHZvaWQgcmVtb3ZlRnJvbU1hcCgpIGNvbnN0OwogI2lmIEhBVkUoQVZGT1VOREFUSU9OX0xPQURF
Ul9ERUxFR0FURSkKQEAgLTE0MTYsMTIgKzE0MTYsNyBAQCBBVkZXcmFwcGVyOjp+QVZGV3JhcHBl
cigpCiAgICAgbV9hdlBsYXllciA9IDA7CiB9CiAKLUxvY2smIEFWRldyYXBwZXI6Om1hcExvY2so
KQotewotICAgIHN0YXRpYyBMb2NrIG1hcExvY2s7Ci0gICAgcmV0dXJuIG1hcExvY2s7Ci19Ci0K
K0NoZWNrZWRMb2NrIEFWRldyYXBwZXI6Om1hcExvY2s7CiBIYXNoTWFwPHVpbnRwdHJfdCwgQVZG
V3JhcHBlcio+JiBBVkZXcmFwcGVyOjptYXAoKQogewogICAgIHN0YXRpYyBIYXNoTWFwPHVpbnRw
dHJfdCwgQVZGV3JhcHBlcio+JiBtYXAgPSAqbmV3IEhhc2hNYXA8dWludHB0cl90LCBBVkZXcmFw
cGVyKj47CkBAIC0xNDMwLDcgKzE0MjUsNyBAQCBIYXNoTWFwPHVpbnRwdHJfdCwgQVZGV3JhcHBl
cio+JiBBVkZXcmFwcGVyOjptYXAoKQogCiB2b2lkIEFWRldyYXBwZXI6OmFkZFRvTWFwKCkKIHsK
LSAgICBMb2NrZXIgbG9ja2VyIHsgbWFwTG9jaygpIH07CisgICAgTG9ja2VyIGxvY2tlciB7IG1h
cExvY2sgfTsKICAgICAKICAgICAvLyBIYXNoTWFwIGRvZXNuJ3QgbGlrZSBhIGtleSBvZiAwLCBh
bmQgYWxzbyBtYWtlIHN1cmUgd2UgYXJlbid0CiAgICAgLy8gdXNpbmcgYW4gb2JqZWN0IElEIHRo
YXQncyBhbHJlYWR5IGluIHVzZS4KQEAgLTE0NDYsMTMgKzE0NDEsMTMgQEAgdm9pZCBBVkZXcmFw
cGVyOjpyZW1vdmVGcm9tTWFwKCkgY29uc3QKIHsKICAgICBMT0coTWVkaWEsICJBVkZXcmFwcGVy
OjpyZW1vdmVGcm9tTWFwKCVwICVkKSIsIHRoaXMsIG1fb2JqZWN0SUQpOwogCi0gICAgTG9ja2Vy
IGxvY2tlciB7IG1hcExvY2soKSB9OworICAgIExvY2tlciBsb2NrZXIgeyBtYXBMb2NrIH07CiAg
ICAgbWFwKCkucmVtb3ZlKG1fb2JqZWN0SUQpOwogfQogCiBBVkZXcmFwcGVyKiBBVkZXcmFwcGVy
OjphdmZXcmFwcGVyRm9yQ2FsbGJhY2tDb250ZXh0KHZvaWQqIGNvbnRleHQpCiB7Ci0gICAgLy8g
QXNzdW1lcyBjYWxsZXIgaGFzIGxvY2tlZCBtYXBMb2NrKCkuCisgICAgLy8gQXNzdW1lcyBjYWxs
ZXIgaGFzIGxvY2tlZCBtYXBMb2NrLgogICAgIEhhc2hNYXA8dWludHB0cl90LCBBVkZXcmFwcGVy
Kj46Oml0ZXJhdG9yIGl0ID0gbWFwKCkuZmluZChyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4o
Y29udGV4dCkpOwogICAgIGlmIChpdCA9PSBtYXAoKS5lbmQoKSkKICAgICAgICAgcmV0dXJuIDA7
CkBAIC0xNjUwLDcgKzE2NDUsNyBAQCB2b2lkIEFWRldyYXBwZXI6OmNyZWF0ZVBsYXllckl0ZW0o
KQogCiB2b2lkIEFWRldyYXBwZXI6OnBlcmlvZGljVGltZU9ic2VydmVyQ2FsbGJhY2soQVZDRlBs
YXllclJlZiwgQ01UaW1lIGNtVGltZSwgdm9pZCogY29udGV4dCkKIHsKLSAgICBMb2NrZXIgbG9j
a2VyIHsgbWFwTG9jaygpIH07CisgICAgTG9ja2VyIGxvY2tlciB7IG1hcExvY2sgfTsKICAgICBB
VkZXcmFwcGVyKiBzZWxmID0gYXZmV3JhcHBlckZvckNhbGxiYWNrQ29udGV4dChjb250ZXh0KTsK
ICAgICBpZiAoIXNlbGYpIHsKICAgICAgICAgTE9HKE1lZGlhLCAiQVZGV3JhcHBlcjo6cGVyaW9k
aWNUaW1lT2JzZXJ2ZXJDYWxsYmFjayBpbnZva2VkIGZvciBkZWxldGVkIEFWRldyYXBwZXIgJWQi
LCByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oY29udGV4dCkpOwpAQCAtMTY4Miw3ICsxNjc3
LDcgQEAgdm9pZCBBVkZXcmFwcGVyOjpwcm9jZXNzTm90aWZpY2F0aW9uKHZvaWQqIGNvbnRleHQp
CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Tm90aWZpY2F0aW9uQ2FsbGJhY2tEYXRhPiBub3RpZmlj
YXRpb25EYXRhIHsgc3RhdGljX2Nhc3Q8Tm90aWZpY2F0aW9uQ2FsbGJhY2tEYXRhKj4oY29udGV4
dCkgfTsKIAotICAgIExvY2tlciBsb2NrZXIgeyBtYXBMb2NrKCkgfTsKKyAgICBMb2NrZXIgbG9j
a2VyIHsgbWFwTG9jayB9OwogICAgIEFWRldyYXBwZXIqIHNlbGYgPSBhdmZXcmFwcGVyRm9yQ2Fs
bGJhY2tDb250ZXh0KG5vdGlmaWNhdGlvbkRhdGEtPm1fY29udGV4dCk7CiAgICAgaWYgKCFzZWxm
KSB7CiAgICAgICAgIExPRyhNZWRpYSwgIkFWRldyYXBwZXI6OnByb2Nlc3NOb3RpZmljYXRpb24g
aW52b2tlZCBmb3IgZGVsZXRlZCBBVkZXcmFwcGVyICVkIiwgcmVpbnRlcnByZXRfY2FzdDx1aW50
cHRyX3Q+KGNvbnRleHQpKTsKQEAgLTE3MzcsNyArMTczMiw3IEBAIHZvaWQgQVZGV3JhcHBlcjo6
bm90aWZpY2F0aW9uQ2FsbGJhY2soQ0ZOb3RpZmljYXRpb25DZW50ZXJSZWYsIHZvaWQqIG9ic2Vy
dmVyLCBDCiAKIHZvaWQgQVZGV3JhcHBlcjo6bG9hZFBsYXlhYmxlQ29tcGxldGlvbkNhbGxiYWNr
KEFWQ0ZBc3NldFJlZiwgdm9pZCogY29udGV4dCkKIHsKLSAgICBMb2NrZXIgbG9ja2VyIHsgbWFw
TG9jaygpIH07CisgICAgTG9ja2VyIGxvY2tlciB7IG1hcExvY2sgfTsKICAgICBBVkZXcmFwcGVy
KiBzZWxmID0gYXZmV3JhcHBlckZvckNhbGxiYWNrQ29udGV4dChjb250ZXh0KTsKICAgICBpZiAo
IXNlbGYpIHsKICAgICAgICAgTE9HKE1lZGlhLCAiQVZGV3JhcHBlcjo6bG9hZFBsYXlhYmxlQ29t
cGxldGlvbkNhbGxiYWNrIGludm9rZWQgZm9yIGRlbGV0ZWQgQVZGV3JhcHBlciAlZCIsIHJlaW50
ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pihjb250ZXh0KSk7CkBAIC0xNzY0LDcgKzE3NTksNyBAQCB2
b2lkIEFWRldyYXBwZXI6OmNoZWNrUGxheWFiaWxpdHkoKQogCiB2b2lkIEFWRldyYXBwZXI6Omxv
YWRNZXRhZGF0YUNvbXBsZXRpb25DYWxsYmFjayhBVkNGQXNzZXRSZWYsIHZvaWQqIGNvbnRleHQp
CiB7Ci0gICAgTG9ja2VyIGxvY2tlciB7IG1hcExvY2soKSB9OworICAgIExvY2tlciBsb2NrZXIg
eyBtYXBMb2NrIH07CiAgICAgQVZGV3JhcHBlciogc2VsZiA9IGF2ZldyYXBwZXJGb3JDYWxsYmFj
a0NvbnRleHQoY29udGV4dCk7CiAgICAgaWYgKCFzZWxmKSB7CiAgICAgICAgIExPRyhNZWRpYSwg
IkFWRldyYXBwZXI6OmxvYWRNZXRhZGF0YUNvbXBsZXRpb25DYWxsYmFjayBpbnZva2VkIGZvciBk
ZWxldGVkIEFWRldyYXBwZXIgJWQiLCByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oY29udGV4
dCkpOwpAQCAtMTc4NCw3ICsxNzc5LDcgQEAgdm9pZCBBVkZXcmFwcGVyOjpiZWdpbkxvYWRpbmdN
ZXRhZGF0YSgpCiAKIHZvaWQgQVZGV3JhcHBlcjo6c2Vla0NvbXBsZXRlZENhbGxiYWNrKEFWQ0ZQ
bGF5ZXJJdGVtUmVmLCBCb29sZWFuIGZpbmlzaGVkLCB2b2lkKiBjb250ZXh0KQogewotICAgIExv
Y2tlciBsb2NrZXIgeyBtYXBMb2NrKCkgfTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbWFwTG9jayB9
OwogICAgIEFWRldyYXBwZXIqIHNlbGYgPSBhdmZXcmFwcGVyRm9yQ2FsbGJhY2tDb250ZXh0KGNv
bnRleHQpOwogICAgIGlmICghc2VsZikgewogICAgICAgICBMT0coTWVkaWEsICJBVkZXcmFwcGVy
OjpzZWVrQ29tcGxldGVkQ2FsbGJhY2sgaW52b2tlZCBmb3IgZGVsZXRlZCBBVkZXcmFwcGVyICVk
IiwgcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGNvbnRleHQpKTsKQEAgLTE4MjgsNyArMTgy
Myw3IEBAIHZvaWQgQVZGV3JhcHBlcjo6cHJvY2Vzc0N1ZSh2b2lkKiBjb250ZXh0KQogCiAgICAg
c3RkOjp1bmlxdWVfcHRyPExlZ2libGVPdXRwdXREYXRhPiBsZWdpYmxlT3V0cHV0RGF0YShyZWlu
dGVycHJldF9jYXN0PExlZ2libGVPdXRwdXREYXRhKj4oY29udGV4dCkpOwogCi0gICAgTG9ja2Vy
IGxvY2tlciB7IG1hcExvY2soKSB9OworICAgIExvY2tlciBsb2NrZXIgeyBtYXBMb2NrIH07CiAg
ICAgQVZGV3JhcHBlciogc2VsZiA9IGF2ZldyYXBwZXJGb3JDYWxsYmFja0NvbnRleHQobGVnaWJs
ZU91dHB1dERhdGEtPm1fY29udGV4dCk7CiAgICAgaWYgKCFzZWxmKSB7CiAgICAgICAgIExPRyhN
ZWRpYSwgIkFWRldyYXBwZXI6OnByb2Nlc3NDdWUgaW52b2tlZCBmb3IgZGVsZXRlZCBBVkZXcmFw
cGVyICVkIiwgcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGNvbnRleHQpKTsKQEAgLTE4NDQs
NyArMTgzOSw3IEBAIHZvaWQgQVZGV3JhcHBlcjo6cHJvY2Vzc0N1ZSh2b2lkKiBjb250ZXh0KQog
dm9pZCBBVkZXcmFwcGVyOjpsZWdpYmxlT3V0cHV0Q2FsbGJhY2sodm9pZCogY29udGV4dCwgQVZD
RlBsYXllckl0ZW1MZWdpYmxlT3V0cHV0UmVmIGxlZ2libGVPdXRwdXQsIENGQXJyYXlSZWYgYXR0
cmlidXRlZFN0cmluZ3MsIENGQXJyYXlSZWYgbmF0aXZlU2FtcGxlQnVmZmVycywgQ01UaW1lIGl0
ZW1UaW1lKQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwotICAgIExvY2tlciBsb2Nr
ZXIgeyBtYXBMb2NrKCkgfTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbWFwTG9jayB9OwogICAgIEFW
RldyYXBwZXIqIHNlbGYgPSBhdmZXcmFwcGVyRm9yQ2FsbGJhY2tDb250ZXh0KGNvbnRleHQpOwog
ICAgIGlmICghc2VsZikgewogICAgICAgICBMT0coTWVkaWEsICJBVkZXcmFwcGVyOjpsZWdpYmxl
T3V0cHV0Q2FsbGJhY2sgaW52b2tlZCBmb3IgZGVsZXRlZCBBVkZXcmFwcGVyICVkIiwgcmVpbnRl
cnByZXRfY2FzdDx1aW50cHRyX3Q+KGNvbnRleHQpKTsKQEAgLTE4ODMsNyArMTg3OCw3IEBAIHZv
aWQgQVZGV3JhcHBlcjo6cHJvY2Vzc1Nob3VsZFdhaXRGb3JMb2FkaW5nT2ZSZXNvdXJjZSh2b2lk
KiBjb250ZXh0KQogCiAgICAgc3RkOjp1bmlxdWVfcHRyPExvYWRSZXF1ZXN0RGF0YT4gbG9hZFJl
cXVlc3REYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8TG9hZFJlcXVlc3REYXRhKj4oY29udGV4dCkpOwog
Ci0gICAgTG9ja2VyIGxvY2tlciB7IG1hcExvY2soKSB9OworICAgIExvY2tlciBsb2NrZXIgeyBt
YXBMb2NrIH07CiAgICAgQVZGV3JhcHBlciogc2VsZiA9IGF2ZldyYXBwZXJGb3JDYWxsYmFja0Nv
bnRleHQobG9hZFJlcXVlc3REYXRhLT5tX2NvbnRleHQpOwogICAgIGlmICghc2VsZikgewogICAg
ICAgICBMT0coTWVkaWEsICJBVkZXcmFwcGVyOjpwcm9jZXNzU2hvdWxkV2FpdEZvckxvYWRpbmdP
ZlJlc291cmNlIGludm9rZWQgZm9yIGRlbGV0ZWQgQVZGV3JhcHBlciAlZCIsIHJlaW50ZXJwcmV0
X2Nhc3Q8dWludHB0cl90Pihjb250ZXh0KSk7CkBAIC0xOTM4LDcgKzE5MzMsNyBAQCBib29sIEFW
RldyYXBwZXI6OnNob3VsZFdhaXRGb3JMb2FkaW5nT2ZSZXNvdXJjZShBVkNGQXNzZXRSZXNvdXJj
ZUxvYWRpbmdSZXF1ZXN0UgogQm9vbGVhbiBBVkZXcmFwcGVyOjpyZXNvdXJjZUxvYWRlclNob3Vs
ZFdhaXRGb3JMb2FkaW5nT2ZSZXF1ZXN0ZWRSZXNvdXJjZShBVkNGQXNzZXRSZXNvdXJjZUxvYWRl
clJlZiByZXNvdXJjZUxvYWRlciwgQVZDRkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdFJlZiBs
b2FkaW5nUmVxdWVzdCwgdm9pZCAqY29udGV4dCkKIHsKICAgICBBU1NFUlQoZGlzcGF0Y2hfZ2V0
X21haW5fcXVldWUoKSAhPSBkaXNwYXRjaF9nZXRfY3VycmVudF9xdWV1ZSgpKTsKLSAgICBMb2Nr
ZXIgbG9ja2VyIHsgbWFwTG9jaygpIH07CisgICAgTG9ja2VyIGxvY2tlciB7IG1hcExvY2sgfTsK
ICAgICBBVkZXcmFwcGVyKiBzZWxmID0gYXZmV3JhcHBlckZvckNhbGxiYWNrQ29udGV4dChjb250
ZXh0KTsKICAgICBpZiAoIXNlbGYpIHsKICAgICAgICAgTE9HKE1lZGlhLCAiQVZGV3JhcHBlcjo6
cmVzb3VyY2VMb2FkZXJTaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVxdWVzdGVkUmVzb3VyY2UgaW52
b2tlZCBmb3IgZGVsZXRlZCBBVkZXcmFwcGVyICVkIiwgcmVpbnRlcnByZXRfY2FzdDx1aW50cHRy
X3Q+KGNvbnRleHQpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nv
bm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHAK
aW5kZXggNDEwODg2MGU5NmYxOWQ0MjBhNWUzMzQ1YjU4NzU3MTMwZDRlYzY3OC4uMTY1YzQ1NjA1
MjJjZjg5MmQ1YjUxMTRiYzQ5ZTRlODA0NDNiMDE3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvQ29ubmVjdGlvbi5jcHAKQEAgLTEwOCwxMCArMTA4LDEwIEBAIHByaXZhdGU6CiAgICAg
QmluYXJ5U2VtYXBob3JlIG1fd2FpdEZvclN5bmNSZXBseVNlbWFwaG9yZTsKIAogICAgIC8vIFBy
b3RlY3RzIG1fZGlkU2NoZWR1bGVEaXNwYXRjaE1lc3NhZ2VzV29ya1NldCBhbmQgbV9tZXNzYWdl
c1RvRGlzcGF0Y2hXaGlsZVdhaXRpbmdGb3JTeW5jUmVwbHkuCi0gICAgTG9jayBtX211dGV4Owor
ICAgIENoZWNrZWRMb2NrIG1fbG9jazsKIAogICAgIC8vIFRoZSBzZXQgb2YgY29ubmVjdGlvbnMg
Zm9yIHdoaWNoIHdlJ3ZlIHNjaGVkdWxlZCBhIGNhbGwgdG8gZGlzcGF0Y2hNZXNzYWdlQW5kUmVz
ZXREaWRTY2hlZHVsZURpc3BhdGNoTWVzc2FnZXNGb3JDb25uZWN0aW9uLgotICAgIEhhc2hTZXQ8
UmVmUHRyPENvbm5lY3Rpb24+PiBtX2RpZFNjaGVkdWxlRGlzcGF0Y2hNZXNzYWdlc1dvcmtTZXQ7
CisgICAgSGFzaFNldDxSZWZQdHI8Q29ubmVjdGlvbj4+IG1fZGlkU2NoZWR1bGVEaXNwYXRjaE1l
c3NhZ2VzV29ya1NldCBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fbG9jayk7CiAKICAgICBzdHJ1Y3Qg
Q29ubmVjdGlvbkFuZEluY29taW5nTWVzc2FnZSB7CiAgICAgICAgIFJlZjxDb25uZWN0aW9uPiBj
b25uZWN0aW9uOwpAQCAtMTIzLDcgKzEyMyw3IEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAgICB9
OwogICAgIERlcXVlPENvbm5lY3Rpb25BbmRJbmNvbWluZ01lc3NhZ2U+IG1fbWVzc2FnZXNCZWlu
Z0Rpc3BhdGNoZWQ7IC8vIE9ubHkgdXNlZCBvbiB0aGUgbWFpbiB0aHJlYWQuCi0gICAgRGVxdWU8
Q29ubmVjdGlvbkFuZEluY29taW5nTWVzc2FnZT4gbV9tZXNzYWdlc1RvRGlzcGF0Y2hXaGlsZVdh
aXRpbmdGb3JTeW5jUmVwbHk7CisgICAgRGVxdWU8Q29ubmVjdGlvbkFuZEluY29taW5nTWVzc2Fn
ZT4gbV9tZXNzYWdlc1RvRGlzcGF0Y2hXaGlsZVdhaXRpbmdGb3JTeW5jUmVwbHkgV1RGX0dVQVJE
RURfQllfTE9DSyhtX2xvY2spOwogfTsKIAogQ29ubmVjdGlvbjo6U3luY01lc3NhZ2VTdGF0ZSYg
Q29ubmVjdGlvbjo6U3luY01lc3NhZ2VTdGF0ZTo6c2luZ2xldG9uKCkKQEAgLTE1MSw3ICsxNTEs
NyBAQCB2b2lkIENvbm5lY3Rpb246OlN5bmNNZXNzYWdlU3RhdGU6OmVucXVldWVNYXRjaGluZ01l
c3NhZ2VzKENvbm5lY3Rpb24mIGNvbm5lY3RpbwogICAgICAgICB9CiAgICAgICAgIGNvbm5lY3Rp
b25BbmRNZXNzYWdlcyA9IFdURk1vdmUocmVzdCk7CiAgICAgfTsKLSAgICBMb2NrZXIgbG9ja2Vy
IHsgbV9tdXRleCB9OworICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKICAgICBlbnF1ZXVl
TWF0Y2hpbmdNZXNzYWdlc0luQ29udGFpbmVyKG1fbWVzc2FnZXNCZWluZ0Rpc3BhdGNoZWQpOwog
ICAgIGVucXVldWVNYXRjaGluZ01lc3NhZ2VzSW5Db250YWluZXIobV9tZXNzYWdlc1RvRGlzcGF0
Y2hXaGlsZVdhaXRpbmdGb3JTeW5jUmVwbHkpOwogfQpAQCAtMTcxLDcgKzE3MSw3IEBAIGJvb2wg
Q29ubmVjdGlvbjo6U3luY01lc3NhZ2VTdGF0ZTo6cHJvY2Vzc0luY29taW5nTWVzc2FnZShDb25u
ZWN0aW9uJiBjb25uZWN0aW9uCiAKICAgICBib29sIHNob3VsZERpc3BhdGNoOwogICAgIHsKLSAg
ICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbXV0ZXggfTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7
IG1fbG9jayB9OwogICAgICAgICBzaG91bGREaXNwYXRjaCA9IG1fZGlkU2NoZWR1bGVEaXNwYXRj
aE1lc3NhZ2VzV29ya1NldC5hZGQoJmNvbm5lY3Rpb24pLmlzTmV3RW50cnk7CiAgICAgICAgIEFT
U0VSVChjb25uZWN0aW9uLm1faW5jb21pbmdNZXNzYWdlc0xvY2suaXNIZWxkKCkpOwogICAgICAg
ICBpZiAobWVzc2FnZS0+c2hvdWxkTWFpbnRhaW5PcmRlcmluZ1dpdGhBc3luY01lc3NhZ2VzKCkp
IHsKQEAgLTE5OCw3ICsxOTgsNyBAQCB2b2lkIENvbm5lY3Rpb246OlN5bmNNZXNzYWdlU3RhdGU6
OmRpc3BhdGNoTWVzc2FnZXMoRnVuY3Rpb248dm9pZChNZXNzYWdlTmFtZSwgdQogICAgIEFTU0VS
VChSdW5Mb29wOjppc01haW4oKSk7CiAKICAgICB7Ci0gICAgICAgIExvY2tlciBsb2NrZXIgeyBt
X211dGV4IH07CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKICAgICAgICAgaWYg
KG1fbWVzc2FnZXNCZWluZ0Rpc3BhdGNoZWQuaXNFbXB0eSgpKQogICAgICAgICAgICAgbV9tZXNz
YWdlc0JlaW5nRGlzcGF0Y2hlZCA9IHN0ZDo6ZXhjaGFuZ2UobV9tZXNzYWdlc1RvRGlzcGF0Y2hX
aGlsZVdhaXRpbmdGb3JTeW5jUmVwbHksIHsgfSk7CiAgICAgICAgIGVsc2UgewpAQCAtMjIwLDcg
KzIyMCw3IEBAIHZvaWQgQ29ubmVjdGlvbjo6U3luY01lc3NhZ2VTdGF0ZTo6ZGlzcGF0Y2hNZXNz
YWdlc0FuZFJlc2V0RGlkU2NoZWR1bGVEaXNwYXRjaE1lCiAgICAgQVNTRVJUKFJ1bkxvb3A6Omlz
TWFpbigpKTsKIAogICAgIHsKLSAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbXV0ZXggfTsKKyAg
ICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogICAgICAgICBBU1NFUlQobV9kaWRTY2hl
ZHVsZURpc3BhdGNoTWVzc2FnZXNXb3JrU2V0LmNvbnRhaW5zKCZjb25uZWN0aW9uKSk7CiAgICAg
ICAgIG1fZGlkU2NoZWR1bGVEaXNwYXRjaE1lc3NhZ2VzV29ya1NldC5yZW1vdmUoJmNvbm5lY3Rp
b24pOwogICAgICAgICBBU1NFUlQobV9tZXNzYWdlc0JlaW5nRGlzcGF0Y2hlZC5pc0VtcHR5KCkp
Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429416</attachid>
            <date>2021-05-22 10:08:23 -0700</date>
            <delta_ts>2021-05-22 10:23:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226138-20210522100822.patch</filename>
            <type>text/plain</type>
            <size>61854</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3OTIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGE3NjJlZTkzM2E4MjE0MjcwNGU3YzRk
NzZiNmQ1ZGQxYWFmNGZlNTEuLjUxNGUwMzFlY2Y4OTUzZTkzOTU4MDY4MWJiZDI1MDMwYWMyOGMy
NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjEtMDUtMjIgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBBZG9wdCBDaGVja2VkTG9jayBpbiBtb3JlIHBsYWNlcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2MTM4CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRvcHQgQ2hl
Y2tlZExvY2sgaW4gbW9yZSBwbGFjZXMgdG8gYmVuZWZpdCBmcm9tIENsYW5nIFRocmVhZCBTYWZl
dHkgQW5hbHlzaXMuCisKKyAgICAgICAgKiB3dGYvQXNzZXJ0aW9ucy5jcHA6CisgICAgICAgICog
d3RmL1RpbWluZ1Njb3BlLmNwcDoKKyAgICAgICAgKiB3dGYvdGhyZWFkcy9CaW5hcnlTZW1hcGhv
cmUuY3BwOgorICAgICAgICAoV1RGOjpCaW5hcnlTZW1hcGhvcmU6OndhaXRVbnRpbCk6CisgICAg
ICAgICogd3RmL3RocmVhZHMvQmluYXJ5U2VtYXBob3JlLmg6CisKIDIwMjEtMDUtMjIgIENocmlz
IER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXBsYWNlIExvY2tIb2xkZXIg
d2l0aCBMb2NrZXIgaW4gbG9jYWwgdmFyaWFibGVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTk4YWQ5YjhiMjg5
M2ZiZGI3MDRlNTdhNzMzNTRmYThkMDM5MjdhZC4uMGU2YmE1NTk3NmZkZWYzOGRjMzczYzY4ZDAz
YTE0ZjQ3ODkyNjcyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcwIEBACisyMDIxLTA1LTIyICBD
aHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQWRvcHQgQ2hlY2tlZExv
Y2sgaW4gbW9yZSBwbGFjZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIyNjEzOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEFkb3B0IENoZWNrZWRMb2NrIGluIG1vcmUgcGxhY2VzIHRvIGJlbmVmaXQgZnJv
bSBDbGFuZyBUaHJlYWQgU2FmZXR5IEFuYWx5c2lzLgorCisgICAgICAgICogTW9kdWxlcy93ZWJk
YXRhYmFzZS9EYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6cGVyZm9y
bUNsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlOjpzY2hlZHVsZVRyYW5zYWN0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlOjppblByb2dyZXNzVHJhbnNhY3Rpb25Db21w
bGV0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6Omhhc1BlbmRpbmdUcmFuc2FjdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6cnVuVHJhbnNhY3Rpb24pOgorICAgICAg
ICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRh
dGFiYXNlOjpXVEZfR1VBUkRFRF9CWV9MT0NLKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFi
YXNlL0RhdGFiYXNlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZU1hbmFn
ZXI6OmFkZFByb3Bvc2VkRGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VNYW5h
Z2VyOjpyZW1vdmVQcm9wb3NlZERhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNl
TWFuYWdlcjo6ZnVsbFBhdGhGb3JEYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFz
ZU1hbmFnZXI6OmRldGFpbHNGb3JOYW1lQW5kT3JpZ2luKToKKyAgICAgICAgKiBNb2R1bGVzL3dl
YmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJh
c2UvRGF0YWJhc2VUaHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUaHJlYWQ6
OmRhdGFiYXNlVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVGhyZWFkOjpyZWNv
cmREYXRhYmFzZU9wZW4pOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUaHJlYWQ6OnJlY29y
ZERhdGFiYXNlQ2xvc2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVGhyZWFkOjpoYXNQ
ZW5kaW5nRGF0YWJhc2VBY3Rpdml0eSBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRh
YmFzZS9EYXRhYmFzZVRocmVhZC5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvU1FM
Q2FsbGJhY2tXcmFwcGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpTUUxDYWxsYmFja1dyYXBwZXI6
OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTENhbGxiYWNrV3JhcHBlcjo6dW53cmFwKToK
KyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uOjplbnF1ZXVlU3RhdGVtZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uOjpjaGVja0FuZEhhbmRsZUNsb3NlZERhdGFiYXNlKToK
KyAgICAgICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uOjpnZXROZXh0U3RhdGVtZW50KToKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uLmg6CisgICAgICAgICog
TW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbkJhY2tlbmQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1FMVHJhbnNhY3Rpb25CYWNrZW5kOjpkb0NsZWFudXApOgorICAgICAgICAqIGFj
Y2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmg6CisgICAgICAgIChXZWJD
b3JlOjpBWElzb2xhdGVkVHJlZTo6V1RGX0dVQVJERURfQllfTE9DSyk6CisgICAgICAgICogcGxh
dGZvcm0vQWJvcnRhYmxlVGFza1F1ZXVlLmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vY29j
b2EvQXVkaW9EZXN0aW5hdGlvbkNvY29hLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVz
dGluYXRpb25Db2NvYTo6cmVuZGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9jb2NvYS9B
dWRpb0Rlc3RpbmF0aW9uQ29jb2EuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9nc3RyZWFt
ZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlv
L2dzdHJlYW1lci9BdWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkF1ZGlvU291cmNlUHJvdmlkZXJHU3RyZWFtZXI6OnByb3ZpZGVJbnB1dCk6CisgICAg
ICAgIChXZWJDb3JlOjpBdWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVyOjpoYW5kbGVTYW1wbGUp
OgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Tb3VyY2VQcm92aWRlckdTdHJlYW1lcjo6Y2xlYXJB
ZGFwdGVycyk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvU291cmNl
UHJvdmlkZXJHU3RyZWFtZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIv
V2ViS2l0V2ViQXVkaW9Tb3VyY2VHU3RyZWFtZXIuY3BwOgorICAgICAgICAod2ViS2l0V2ViQXVk
aW9TcmNSZW5kZXJJdGVyYXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpBVkZXcmFwcGVyOjphZGRUb01hcCk6CisgICAgICAgIChXZWJDb3JlOjpBVkZX
cmFwcGVyOjpyZW1vdmVGcm9tTWFwIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFWRldyYXBw
ZXI6OmF2ZldyYXBwZXJGb3JDYWxsYmFja0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6QVZG
V3JhcHBlcjo6cGVyaW9kaWNUaW1lT2JzZXJ2ZXJDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3Jl
OjpBVkZXcmFwcGVyOjpwcm9jZXNzTm90aWZpY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkFW
RldyYXBwZXI6OmxvYWRQbGF5YWJsZUNvbXBsZXRpb25DYWxsYmFjayk6CisgICAgICAgIChXZWJD
b3JlOjpBVkZXcmFwcGVyOjpsb2FkTWV0YWRhdGFDb21wbGV0aW9uQ2FsbGJhY2spOgorICAgICAg
ICAoV2ViQ29yZTo6QVZGV3JhcHBlcjo6c2Vla0NvbXBsZXRlZENhbGxiYWNrKToKKyAgICAgICAg
KFdlYkNvcmU6OkFWRldyYXBwZXI6OnByb2Nlc3NDdWUpOgorICAgICAgICAoV2ViQ29yZTo6QVZG
V3JhcHBlcjo6bGVnaWJsZU91dHB1dENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkFWRldy
YXBwZXI6OnByb2Nlc3NTaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVzb3VyY2UpOgorICAgICAgICAo
V2ViQ29yZTo6QVZGV3JhcHBlcjo6cmVzb3VyY2VMb2FkZXJTaG91bGRXYWl0Rm9yTG9hZGluZ09m
UmVxdWVzdGVkUmVzb3VyY2UpOgorCiAyMDIxLTA1LTIyICBDaHJpcyBEdW1leiAgPGNkdW1lekBh
cHBsZS5jb20+CiAKICAgICAgICAgUmVwbGFjZSBMb2NrSG9sZGVyIHdpdGggTG9ja2VyIGluIGxv
Y2FsIHZhcmlhYmxlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBlMjBmNDQyNGIyYzBjZDIyODFhNWU2ZWJiN2JmOTI4
OGY5MmVhZDhiLi4xNTVjMDM4MDc1YjRmZjY2YmU4NWQ3YjNmOGE3NzgyYzBlNWZkM2VkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIxLTA1LTIyICBDaHJpcyBEdW1leiAgPGNkdW1lekBh
cHBsZS5jb20+CisKKyAgICAgICAgQWRvcHQgQ2hlY2tlZExvY2sgaW4gbW9yZSBwbGFjZXMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjEzOAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkb3B0IENoZWNr
ZWRMb2NrIGluIG1vcmUgcGxhY2VzIHRvIGJlbmVmaXQgZnJvbSBDbGFuZyBUaHJlYWQgU2FmZXR5
IEFuYWx5c2lzLgorCisgICAgICAgICogUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3BwOgorICAg
ICAgICAoSVBDOjpDb25uZWN0aW9uOjpTeW5jTWVzc2FnZVN0YXRlOjplbnF1ZXVlTWF0Y2hpbmdN
ZXNzYWdlcyk6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OlN5bmNNZXNzYWdlU3RhdGU6OnBy
b2Nlc3NJbmNvbWluZ01lc3NhZ2UpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpTeW5jTWVz
c2FnZVN0YXRlOjpkaXNwYXRjaE1lc3NhZ2VzKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6
U3luY01lc3NhZ2VTdGF0ZTo6ZGlzcGF0Y2hNZXNzYWdlc0FuZFJlc2V0RGlkU2NoZWR1bGVEaXNw
YXRjaE1lc3NhZ2VzRm9yQ29ubmVjdGlvbik6CisKIDIwMjEtMDUtMjIgIENocmlzIER1bWV6ICA8
Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXBsYWNlIExvY2tIb2xkZXIgd2l0aCBMb2Nr
ZXIgaW4gbG9jYWwgdmFyaWFibGVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Bc3NlcnRp
b25zLmNwcCBiL1NvdXJjZS9XVEYvd3RmL0Fzc2VydGlvbnMuY3BwCmluZGV4IDU4OTVmMzA1ZmRk
ODFmYWM0ZDIwMTA0NGFhM2RlNWQ3YzdjMzBlNGMuLjBkZjMwODMyYmJiNGU1MWFlZGNiNThkNjdj
NGZhNzBhMjY1ZWVmMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0Fzc2VydGlvbnMuY3Bw
CisrKyBiL1NvdXJjZS9XVEYvd3RmL0Fzc2VydGlvbnMuY3BwCkBAIC0zMSw4ICszMSw4IEBACiAj
aW5jbHVkZSA8bXV0ZXg+CiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDxzdHJpbmcuaD4K
KyNpbmNsdWRlIDx3dGYvQ2hlY2tlZExvY2suaD4KICNpbmNsdWRlIDx3dGYvQ29tcGlsZXIuaD4K
LSNpbmNsdWRlIDx3dGYvTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9Mb2NrZXIuaD4KICNpbmNsdWRl
IDx3dGYvTG9nZ2luZ0FjY3VtdWxhdG9yLmg+CiAjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+
CkBAIC0zNjgsMjUgKzM2OCwyNSBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIGdldEFuZFJlc2V0QWNj
dW11bGF0ZWRMb2dzKCk7CiAKIHByaXZhdGU6Ci0gICAgTG9jayBhY2N1bXVsYXRvckxvY2s7Ci0g
ICAgU3RyaW5nQnVpbGRlciBsb2dnaW5nQWNjdW11bGF0b3I7CisgICAgQ2hlY2tlZExvY2sgYWNj
dW11bGF0b3JMb2NrOworICAgIFN0cmluZ0J1aWxkZXIgbG9nZ2luZ0FjY3VtdWxhdG9yIFdURl9H
VUFSREVEX0JZX0xPQ0soYWNjdW11bGF0b3JMb2NrKTsKIH07CiAKIHZvaWQgV1RGTG9nZ2luZ0Fj
Y3VtdWxhdG9yOjphY2N1bXVsYXRlKGNvbnN0IFN0cmluZyYgbG9nKQogewotICAgIExvY2tlcjxM
b2NrPiBsb2NrZXIoYWNjdW11bGF0b3JMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgYWNjdW11
bGF0b3JMb2NrIH07CiAgICAgbG9nZ2luZ0FjY3VtdWxhdG9yLmFwcGVuZChsb2cpOwogfQogCiB2
b2lkIFdURkxvZ2dpbmdBY2N1bXVsYXRvcjo6cmVzZXRBY2N1bXVsYXRlZExvZ3MoKQogewotICAg
IExvY2tlcjxMb2NrPiBsb2NrZXIoYWNjdW11bGF0b3JMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2Vy
IHsgYWNjdW11bGF0b3JMb2NrIH07CiAgICAgbG9nZ2luZ0FjY3VtdWxhdG9yLmNsZWFyKCk7CiB9
CiAKIFN0cmluZyBXVEZMb2dnaW5nQWNjdW11bGF0b3I6OmdldEFuZFJlc2V0QWNjdW11bGF0ZWRM
b2dzKCkKIHsKLSAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKGFjY3VtdWxhdG9yTG9jayk7CisgICAg
TG9ja2VyIGxvY2tlciB7IGFjY3VtdWxhdG9yTG9jayB9OwogICAgIFN0cmluZyByZXN1bHQgPSBs
b2dnaW5nQWNjdW11bGF0b3IudG9TdHJpbmcoKTsKICAgICBsb2dnaW5nQWNjdW11bGF0b3IuY2xl
YXIoKTsKICAgICByZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVGlt
aW5nU2NvcGUuY3BwIGIvU291cmNlL1dURi93dGYvVGltaW5nU2NvcGUuY3BwCmluZGV4IGUyYjAy
YzYwMzc0NDRjYTYwZjc4ODIzYTIxODIwNjk2ODY5ZjdkNTguLjYzMTE2NjQwYWRlZjRjZDkyMGUy
MTk3ZDc1ZmU1NDE2NGE4ZWM0NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1RpbWluZ1Nj
b3BlLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9UaW1pbmdTY29wZS5jcHAKQEAgLTI2LDggKzI2
LDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlIDx3dGYvVGltaW5nU2NvcGUuaD4K
IAorI2luY2x1ZGUgPHd0Zi9DaGVja2VkTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+
Ci0jaW5jbHVkZSA8d3RmL0xvY2suaD4KIAogbmFtZXNwYWNlIFdURiB7CiAKQEAgLTU5LDggKzU5
LDggQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICBIYXNoTWFwPGNvbnN0IGNoYXIq
LCBDYWxsRGF0YT4gdG90YWxzOwotICAgIExvY2sgbG9jazsKKyAgICBIYXNoTWFwPGNvbnN0IGNo
YXIqLCBDYWxsRGF0YT4gdG90YWxzIFdURl9HVUFSREVEX0JZX0xPQ0sobG9jayk7CisgICAgQ2hl
Y2tlZExvY2sgbG9jazsKIH07CiAKIFN0YXRlJiBzdGF0ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi90aHJlYWRzL0JpbmFyeVNlbWFwaG9yZS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90aHJl
YWRzL0JpbmFyeVNlbWFwaG9yZS5jcHAKaW5kZXggNzhiZjM0Yzk2NjY5OTYwZjEzYzQyYWE0N2Uw
NzRlOGMwNzk3YzI5ZS4uYWQ0MzliZjgzZjU3OWMwODAxYTkxZDY1MWI0ZTA5ZDE1YjIwMGRiZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGhyZWFkcy9CaW5hcnlTZW1hcGhvcmUuY3BwCisr
KyBiL1NvdXJjZS9XVEYvd3RmL3RocmVhZHMvQmluYXJ5U2VtYXBob3JlLmNwcApAQCAtMzgsNyAr
MzgsMTAgQEAgdm9pZCBCaW5hcnlTZW1hcGhvcmU6OnNpZ25hbCgpCiBib29sIEJpbmFyeVNlbWFw
aG9yZTo6d2FpdFVudGlsKGNvbnN0IFRpbWVXaXRoRHluYW1pY0Nsb2NrVHlwZSYgYWJzb2x1dGVU
aW1lKQogewogICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKLSAgICBib29sIHNhdGlzZmll
ZCA9IG1fY29uZGl0aW9uLndhaXRVbnRpbChtX2xvY2ssIGFic29sdXRlVGltZSwgWyZdIHsgcmV0
dXJuIG1faXNTZXQ7IH0pOworICAgIGJvb2wgc2F0aXNmaWVkID0gbV9jb25kaXRpb24ud2FpdFVu
dGlsKG1fbG9jaywgYWJzb2x1dGVUaW1lLCBbJl0geworICAgICAgICBhc3NlcnRJc0hlbGQobV9s
b2NrKTsKKyAgICAgICAgcmV0dXJuIG1faXNTZXQ7CisgICAgfSk7CiAgICAgaWYgKHNhdGlzZmll
ZCkKICAgICAgICAgbV9pc1NldCA9IGZhbHNlOwogICAgIHJldHVybiBzYXRpc2ZpZWQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90aHJlYWRzL0JpbmFyeVNlbWFwaG9yZS5oIGIvU291cmNl
L1dURi93dGYvdGhyZWFkcy9CaW5hcnlTZW1hcGhvcmUuaAppbmRleCA5N2NjYmRlMDgyMDUyYzc3
MGFhM2RiNGU4YmVlNmUxYzllMGUwYmFiLi4zMjg2NTE4ZTcyMzM1MzMxMGQ2ODg2YTlhOGZhYWU3
MmMxMTFkNjllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90aHJlYWRzL0JpbmFyeVNlbWFw
aG9yZS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RocmVhZHMvQmluYXJ5U2VtYXBob3JlLmgKQEAg
LTI1LDggKzI1LDggQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlIDx3dGYvQ29uZGl0aW9u
Lmg+Ci0jaW5jbHVkZSA8d3RmL0xvY2suaD4KKyNpbmNsdWRlIDx3dGYvQ2hlY2tlZENvbmRpdGlv
bi5oPgorI2luY2x1ZGUgPHd0Zi9DaGVja2VkTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5
YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9UaW1lV2l0aER5bmFtaWNDbG9ja1R5cGUuaD4KIApAQCAt
NTIsOSArNTIsOSBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIGJvb2wgbV9pc1Nl
dCB7IGZhbHNlIH07Ci0gICAgTG9jayBtX2xvY2s7Ci0gICAgQ29uZGl0aW9uIG1fY29uZGl0aW9u
OworICAgIGJvb2wgbV9pc1NldCBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fbG9jaykgeyBmYWxzZSB9
OworICAgIENoZWNrZWRMb2NrIG1fbG9jazsKKyAgICBDaGVja2VkQ29uZGl0aW9uIG1fY29uZGl0
aW9uOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwCmluZGV4IDZiYjgwODg5NmQ3YWNmMTRjOWRhYjQw
YmI1MTUzYTY2ZDcwMDQyMDEuLjcwMDc0YzdhN2FiNDIzOTk5ZjNkZjkwNDFmNGViY2EwOTRjNzFk
NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJh
c2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2Uu
Y3BwCkBAIC0yODIsNyArMjgyLDcgQEAgdm9pZCBEYXRhYmFzZTo6cGVyZm9ybUNsb3NlKCkKICAg
ICBBU1NFUlQoZGF0YWJhc2VUaHJlYWQoKS5nZXRUaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50
KCkpOwogCiAgICAgewotICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV90cmFuc2FjdGlvbkluUHJv
Z3Jlc3NNdXRleCB9OworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV90cmFuc2FjdGlvbkluUHJv
Z3Jlc3NMb2NrIH07CiAKICAgICAgICAgLy8gQ2xlYW4gdXAgdHJhbnNhY3Rpb25zIHRoYXQgaGF2
ZSBub3QgYmVlbiBzY2hlZHVsZWQgeWV0OgogICAgICAgICAvLyBUcmFuc2FjdGlvbiBwaGFzZSAx
IGNsZWFudXAuIFNlZSBjb21tZW50IG9uICJXaGF0IGhhcHBlbnMgaWYgYQpAQCAtNTE4LDcgKzUx
OCw3IEBAIGJvb2wgRGF0YWJhc2U6OmdldEFjdHVhbFZlcnNpb25Gb3JUcmFuc2FjdGlvbihTdHJp
bmcgJmFjdHVhbFZlcnNpb24pCiAKIHZvaWQgRGF0YWJhc2U6OnNjaGVkdWxlVHJhbnNhY3Rpb24o
KQogewotICAgIEFTU0VSVCghbV90cmFuc2FjdGlvbkluUHJvZ3Jlc3NNdXRleC50cnlMb2NrKCkp
OyAvLyBMb2NrZWQgYnkgY2FsbGVyLgorICAgIEFTU0VSVChtX3RyYW5zYWN0aW9uSW5Qcm9ncmVz
c0xvY2suaXNIZWxkKCkpOwogCiAgICAgaWYgKCFtX2lzVHJhbnNhY3Rpb25RdWV1ZUVuYWJsZWQg
fHwgbV90cmFuc2FjdGlvblF1ZXVlLmlzRW1wdHkoKSkgewogICAgICAgICBtX3RyYW5zYWN0aW9u
SW5Qcm9ncmVzcyA9IGZhbHNlOwpAQCAtNTQ0LDE0ICs1NDQsMTQgQEAgdm9pZCBEYXRhYmFzZTo6
c2NoZWR1bGVUcmFuc2FjdGlvblN0ZXAoU1FMVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uKQogCiB2
b2lkIERhdGFiYXNlOjppblByb2dyZXNzVHJhbnNhY3Rpb25Db21wbGV0ZWQoKQogewotICAgIExv
Y2tlciBsb2NrZXIgeyBtX3RyYW5zYWN0aW9uSW5Qcm9ncmVzc011dGV4IH07CisgICAgTG9ja2Vy
IGxvY2tlciB7IG1fdHJhbnNhY3Rpb25JblByb2dyZXNzTG9jayB9OwogICAgIG1fdHJhbnNhY3Rp
b25JblByb2dyZXNzID0gZmFsc2U7CiAgICAgc2NoZWR1bGVUcmFuc2FjdGlvbigpOwogfQogCiBi
b29sIERhdGFiYXNlOjpoYXNQZW5kaW5nVHJhbnNhY3Rpb24oKQogewotICAgIExvY2tlciBsb2Nr
ZXIgeyBtX3RyYW5zYWN0aW9uSW5Qcm9ncmVzc011dGV4IH07CisgICAgTG9ja2VyIGxvY2tlciB7
IG1fdHJhbnNhY3Rpb25JblByb2dyZXNzTG9jayB9OwogICAgIHJldHVybiBtX3RyYW5zYWN0aW9u
SW5Qcm9ncmVzcyB8fCAhbV90cmFuc2FjdGlvblF1ZXVlLmlzRW1wdHkoKTsKIH0KIApAQCAtNjgx
LDcgKzY4MSw3IEBAIHZvaWQgRGF0YWJhc2U6OnJlc2V0QXV0aG9yaXplcigpCiB2b2lkIERhdGFi
YXNlOjpydW5UcmFuc2FjdGlvbihSZWZQdHI8U1FMVHJhbnNhY3Rpb25DYWxsYmFjaz4mJiBjYWxs
YmFjaywgUmVmUHRyPFNRTFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjaz4mJiBlcnJvckNhbGxiYWNr
LCBSZWZQdHI8Vm9pZENhbGxiYWNrPiYmIHN1Y2Nlc3NDYWxsYmFjaywgUmVmUHRyPFNRTFRyYW5z
YWN0aW9uV3JhcHBlcj4mJiB3cmFwcGVyLCBib29sIHJlYWRPbmx5KQogewogICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7Ci0gICAgTG9ja2VyIGxvY2tlciB7IG1fdHJhbnNhY3Rpb25JblByb2dy
ZXNzTXV0ZXggfTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV90cmFuc2FjdGlvbkluUHJvZ3Jlc3NM
b2NrIH07CiAgICAgaWYgKCFtX2lzVHJhbnNhY3Rpb25RdWV1ZUVuYWJsZWQpIHsKICAgICAgICAg
aWYgKGVycm9yQ2FsbGJhY2spIHsKICAgICAgICAgICAgIG1fZG9jdW1lbnQtPmV2ZW50TG9vcCgp
LnF1ZXVlVGFzayhUYXNrU291cmNlOjpOZXR3b3JraW5nLCBbZXJyb3JDYWxsYmFjayA9IG1ha2VS
ZWYoKmVycm9yQ2FsbGJhY2spXSgpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0
YWJhc2UvRGF0YWJhc2UuaAppbmRleCAwZDJhOTVhYmM1YzcxZGY0NDVlNjFlMDI3YzE4NDk0OTAy
Zjg3Mzk4Li5hZDIxMzM4YTc4N2Y5M2NkODQ3N2RkMmZhMGVjNDQzOGQ5MzI1ZDUzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5oCkBAIC0zMCw4ICsz
MCw4IEBACiAKICNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgogI2luY2x1ZGUgIlNRTGl0ZURhdGFi
YXNlLmgiCisjaW5jbHVkZSA8d3RmL0NoZWNrZWRMb2NrLmg+CiAjaW5jbHVkZSA8d3RmL0RlcXVl
Lmg+Ci0jaW5jbHVkZSA8d3RmL0xvY2suaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0x
MzksNyArMTM5LDcgQEAgcHJpdmF0ZToKICAgICBib29sIGdldEFjdHVhbFZlcnNpb25Gb3JUcmFu
c2FjdGlvbihTdHJpbmcmIHZlcnNpb24pOwogICAgIHZvaWQgc2V0RXN0aW1hdGVkU2l6ZSh1bnNp
Z25lZCBsb25nIGxvbmcpOwogCi0gICAgdm9pZCBzY2hlZHVsZVRyYW5zYWN0aW9uKCk7CisgICAg
dm9pZCBzY2hlZHVsZVRyYW5zYWN0aW9uKCkgV1RGX1JFUVVJUkVTX0xPQ0sobV90cmFuc2FjdGlv
bkluUHJvZ3Jlc3NMb2NrKTsKIAogICAgIHZvaWQgcnVuVHJhbnNhY3Rpb24oUmVmUHRyPFNRTFRy
YW5zYWN0aW9uQ2FsbGJhY2s+JiYsIFJlZlB0cjxTUUxUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2s+
JiYsIFJlZlB0cjxWb2lkQ2FsbGJhY2s+JiYgc3VjY2Vzc0NhbGxiYWNrLCBSZWZQdHI8U1FMVHJh
bnNhY3Rpb25XcmFwcGVyPiYmLCBib29sIHJlYWRPbmx5KTsKIApAQCAtMTY5LDEwICsxNjksMTAg
QEAgcHJpdmF0ZToKIAogICAgIFJlZjxEYXRhYmFzZUF1dGhvcml6ZXI+IG1fZGF0YWJhc2VBdXRo
b3JpemVyOwogCi0gICAgRGVxdWU8UmVmPFNRTFRyYW5zYWN0aW9uPj4gbV90cmFuc2FjdGlvblF1
ZXVlOwotICAgIExvY2sgbV90cmFuc2FjdGlvbkluUHJvZ3Jlc3NNdXRleDsKLSAgICBib29sIG1f
dHJhbnNhY3Rpb25JblByb2dyZXNzIHsgZmFsc2UgfTsKLSAgICBib29sIG1faXNUcmFuc2FjdGlv
blF1ZXVlRW5hYmxlZCB7IHRydWUgfTsKKyAgICBEZXF1ZTxSZWY8U1FMVHJhbnNhY3Rpb24+PiBt
X3RyYW5zYWN0aW9uUXVldWUgV1RGX0dVQVJERURfQllfTE9DSyhtX3RyYW5zYWN0aW9uSW5Qcm9n
cmVzc0xvY2spOworICAgIENoZWNrZWRMb2NrIG1fdHJhbnNhY3Rpb25JblByb2dyZXNzTG9jazsK
KyAgICBib29sIG1fdHJhbnNhY3Rpb25JblByb2dyZXNzIFdURl9HVUFSREVEX0JZX0xPQ0sobV90
cmFuc2FjdGlvbkluUHJvZ3Jlc3NMb2NrKSB7IGZhbHNlIH07CisgICAgYm9vbCBtX2lzVHJhbnNh
Y3Rpb25RdWV1ZUVuYWJsZWQgV1RGX0dVQVJERURfQllfTE9DSyhtX3RyYW5zYWN0aW9uSW5Qcm9n
cmVzc0xvY2spIHsgdHJ1ZSB9OwogCiAgICAgZnJpZW5kIGNsYXNzIENoYW5nZVZlcnNpb25XcmFw
cGVyOwogICAgIGZyaWVuZCBjbGFzcyBEYXRhYmFzZU1hbmFnZXI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5jcHAKaW5kZXgg
OTUwYjQ1ZmM3MWFhYjE2ZjE0ZTE1ZTJhMGFmZjExZjEyODUyMmE4NS4uMmM5YWE1MmExMDg5NTNl
NDg3NmQ0NWQwYzRjZDk5Mjk1ZTIyYTJiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmNwcApAQCAtMTgxLDEzICsxODEs
MTMgQEAgRXhjZXB0aW9uT3I8UmVmPERhdGFiYXNlPj4gRGF0YWJhc2VNYW5hZ2VyOjp0cnlUb09w
ZW5EYXRhYmFzZUJhY2tlbmQoRG9jdW1lbnQmIGQKIAogdm9pZCBEYXRhYmFzZU1hbmFnZXI6OmFk
ZFByb3Bvc2VkRGF0YWJhc2UoUHJvcG9zZWREYXRhYmFzZSYgZGF0YWJhc2UpCiB7Ci0gICAgTG9j
a2VyIGxvY2tlciB7IG1fcHJvcG9zZWREYXRhYmFzZXNNdXRleCB9OworICAgIExvY2tlciBsb2Nr
ZXIgeyBtX3Byb3Bvc2VkRGF0YWJhc2VzTG9jayB9OwogICAgIG1fcHJvcG9zZWREYXRhYmFzZXMu
YWRkKCZkYXRhYmFzZSk7CiB9CiAKIHZvaWQgRGF0YWJhc2VNYW5hZ2VyOjpyZW1vdmVQcm9wb3Nl
ZERhdGFiYXNlKFByb3Bvc2VkRGF0YWJhc2UmIGRhdGFiYXNlKQogewotICAgIExvY2tlciBsb2Nr
ZXIgeyBtX3Byb3Bvc2VkRGF0YWJhc2VzTXV0ZXggfTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9w
cm9wb3NlZERhdGFiYXNlc0xvY2sgfTsKICAgICBtX3Byb3Bvc2VkRGF0YWJhc2VzLnJlbW92ZSgm
ZGF0YWJhc2UpOwogfQogCkBAIC0yNDEsNyArMjQxLDcgQEAgdm9pZCBEYXRhYmFzZU1hbmFnZXI6
OnN0b3BEYXRhYmFzZXMoRG9jdW1lbnQmIGRvY3VtZW50LCBEYXRhYmFzZVRhc2tTeW5jaHJvbml6
ZXIKIFN0cmluZyBEYXRhYmFzZU1hbmFnZXI6OmZ1bGxQYXRoRm9yRGF0YWJhc2UoU2VjdXJpdHlP
cmlnaW4mIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBuYW1lLCBib29sIGNyZWF0ZUlmRG9lc05vdEV4
aXN0KQogewogICAgIHsKLSAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fcHJvcG9zZWREYXRhYmFz
ZXNNdXRleCB9OworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9wcm9wb3NlZERhdGFiYXNlc0xv
Y2sgfTsKICAgICAgICAgZm9yIChhdXRvKiBwcm9wb3NlZERhdGFiYXNlIDogbV9wcm9wb3NlZERh
dGFiYXNlcykgewogICAgICAgICAgICAgaWYgKHByb3Bvc2VkRGF0YWJhc2UtPmRldGFpbHMoKS5u
YW1lKCkgPT0gbmFtZSAmJiBwcm9wb3NlZERhdGFiYXNlLT5vcmlnaW4oKS5lcXVhbCgmb3JpZ2lu
KSkKICAgICAgICAgICAgICAgICByZXR1cm4gU3RyaW5nKCk7CkBAIC0yNTMsNyArMjUzLDcgQEAg
U3RyaW5nIERhdGFiYXNlTWFuYWdlcjo6ZnVsbFBhdGhGb3JEYXRhYmFzZShTZWN1cml0eU9yaWdp
biYgb3JpZ2luLCBjb25zdCBTdHJpbmcKIERhdGFiYXNlRGV0YWlscyBEYXRhYmFzZU1hbmFnZXI6
OmRldGFpbHNGb3JOYW1lQW5kT3JpZ2luKGNvbnN0IFN0cmluZyYgbmFtZSwgU2VjdXJpdHlPcmln
aW4mIG9yaWdpbikKIHsKICAgICB7Ci0gICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3Byb3Bvc2Vk
RGF0YWJhc2VzTXV0ZXggfTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fcHJvcG9zZWREYXRh
YmFzZXNMb2NrIH07CiAgICAgICAgIGZvciAoYXV0byogcHJvcG9zZWREYXRhYmFzZSA6IG1fcHJv
cG9zZWREYXRhYmFzZXMpIHsKICAgICAgICAgICAgIGlmIChwcm9wb3NlZERhdGFiYXNlLT5kZXRh
aWxzKCkubmFtZSgpID09IG5hbWUgJiYgcHJvcG9zZWREYXRhYmFzZS0+b3JpZ2luKCkuZXF1YWwo
Jm9yaWdpbikpIHsKICAgICAgICAgICAgICAgICBBU1NFUlQoJnByb3Bvc2VkRGF0YWJhc2UtPmRl
dGFpbHMoKS50aHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkgfHwgaXNNYWluVGhyZWFkKCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFz
ZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VN
YW5hZ2VyLmgKaW5kZXggYWE0M2ViZWY4OWMyODg0YjExNzhjMmY5ZmZlOWYxYmYwMWZhODgxYi4u
OTIxM2E0ZDRiOTIzNTllMTk1NWY2MTBiY2ZmOGY3Njg3OTg4OTQ4YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5oCkBAIC0y
OCw4ICsyOCw4IEBACiAjaW5jbHVkZSAiRGF0YWJhc2VEZXRhaWxzLmgiCiAjaW5jbHVkZSAiRXhj
ZXB0aW9uT3IuaCIKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9D
aGVja2VkTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL0xv
Y2suaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC04Nyw4ICs4Nyw4IEBAIHByaXZhdGU6
CiAgICAgRGF0YWJhc2VNYW5hZ2VyQ2xpZW50KiBtX2NsaWVudCB7IG51bGxwdHIgfTsKICAgICBi
b29sIG1fZGF0YWJhc2VJc0F2YWlsYWJsZSB7IHRydWUgfTsKIAotICAgIExvY2sgbV9wcm9wb3Nl
ZERhdGFiYXNlc011dGV4OwotICAgIEhhc2hTZXQ8UHJvcG9zZWREYXRhYmFzZSo+IG1fcHJvcG9z
ZWREYXRhYmFzZXM7CisgICAgQ2hlY2tlZExvY2sgbV9wcm9wb3NlZERhdGFiYXNlc0xvY2s7Cisg
ICAgSGFzaFNldDxQcm9wb3NlZERhdGFiYXNlKj4gbV9wcm9wb3NlZERhdGFiYXNlcyBXVEZfR1VB
UkRFRF9CWV9MT0NLKG1fcHJvcG9zZWREYXRhYmFzZXNMb2NrKTsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJh
c2UvRGF0YWJhc2VUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFz
ZS9EYXRhYmFzZVRocmVhZC5jcHAKaW5kZXggZTZkN2Q2NmEwOGQ4YWM3NTgzODY3YzA3MGIxM2M0
M2IxNjY5OWZmOS4uZTA3MDMzYWM1OTViNDIwZmJkYWFjOGJmYjNhMGE5MDFhZWJjNDY3MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRocmVh
ZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRo
cmVhZC5jcHAKQEAgLTExMCw3ICsxMTAsNyBAQCB2b2lkIERhdGFiYXNlVGhyZWFkOjpkYXRhYmFz
ZVRocmVhZCgpCiAgICAgLy8gaW5jb25zaXN0ZW50IG9yIGxvY2tlZCBzdGF0ZS4KICAgICBEYXRh
YmFzZVNldCBvcGVuU2V0Q29weTsKICAgICB7Ci0gICAgICAgIExvY2tlciBsb2NrZXIgeyBtX29w
ZW5EYXRhYmFzZVNldE11dGV4IH07CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX29wZW5EYXRh
YmFzZVNldExvY2sgfTsKICAgICAgICAgaWYgKG1fb3BlbkRhdGFiYXNlU2V0LnNpemUoKSA+IDAp
IHsKICAgICAgICAgICAgIC8vIEFzIHRoZSBjYWxsIHRvIGNsb3NlIHdpbGwgbW9kaWZ5IHRoZSBv
cmlnaW5hbCBzZXQsIHdlIG11c3QgdGFrZSBhIGNvcHkgdG8gaXRlcmF0ZSBvdmVyLgogICAgICAg
ICAgICAgb3BlblNldENvcHkuc3dhcChtX29wZW5EYXRhYmFzZVNldCk7CkBAIC0xMzQsNyArMTM0
LDcgQEAgdm9pZCBEYXRhYmFzZVRocmVhZDo6ZGF0YWJhc2VUaHJlYWQoKQogCiB2b2lkIERhdGFi
YXNlVGhyZWFkOjpyZWNvcmREYXRhYmFzZU9wZW4oRGF0YWJhc2UmIGRhdGFiYXNlKQogewotICAg
IExvY2tlciBsb2NrZXIgeyBtX29wZW5EYXRhYmFzZVNldE11dGV4IH07CisgICAgTG9ja2VyIGxv
Y2tlciB7IG1fb3BlbkRhdGFiYXNlU2V0TG9jayB9OwogCiAgICAgQVNTRVJUKG1fdGhyZWFkID09
ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAgICAgQVNTRVJUKCFtX29wZW5EYXRhYmFzZVNldC5jb250
YWlucygmZGF0YWJhc2UpKTsKQEAgLTE0Myw3ICsxNDMsNyBAQCB2b2lkIERhdGFiYXNlVGhyZWFk
OjpyZWNvcmREYXRhYmFzZU9wZW4oRGF0YWJhc2UmIGRhdGFiYXNlKQogCiB2b2lkIERhdGFiYXNl
VGhyZWFkOjpyZWNvcmREYXRhYmFzZUNsb3NlZChEYXRhYmFzZSYgZGF0YWJhc2UpCiB7Ci0gICAg
TG9ja2VyIGxvY2tlciB7IG1fb3BlbkRhdGFiYXNlU2V0TXV0ZXggfTsKKyAgICBMb2NrZXIgbG9j
a2VyIHsgbV9vcGVuRGF0YWJhc2VTZXRMb2NrIH07CiAKICAgICBBU1NFUlQobV90aHJlYWQgPT0g
JlRocmVhZDo6Y3VycmVudCgpKTsKICAgICBBU1NFUlQobV9xdWV1ZS5raWxsZWQoKSB8fCBtX29w
ZW5EYXRhYmFzZVNldC5jb250YWlucygmZGF0YWJhc2UpKTsKQEAgLTE3Miw3ICsxNzIsNyBAQCB2
b2lkIERhdGFiYXNlVGhyZWFkOjp1bnNjaGVkdWxlRGF0YWJhc2VUYXNrcyhEYXRhYmFzZSYgZGF0
YWJhc2UpCiAKIGJvb2wgRGF0YWJhc2VUaHJlYWQ6Omhhc1BlbmRpbmdEYXRhYmFzZUFjdGl2aXR5
KCkgY29uc3QKIHsKLSAgICBMb2NrZXIgbG9ja2VyIHsgbV9vcGVuRGF0YWJhc2VTZXRNdXRleCB9
OworICAgIExvY2tlciBsb2NrZXIgeyBtX29wZW5EYXRhYmFzZVNldExvY2sgfTsKICAgICBmb3Ig
KGF1dG8mIGRhdGFiYXNlIDogbV9vcGVuRGF0YWJhc2VTZXQpIHsKICAgICAgICAgaWYgKGRhdGFi
YXNlLT5oYXNQZW5kaW5nQ3JlYXRpb25FdmVudCgpIHx8IGRhdGFiYXNlLT5oYXNQZW5kaW5nVHJh
bnNhY3Rpb24oKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRocmVhZC5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRocmVhZC5oCmluZGV4IGJkNmM5NzQx
ZWU5YWFiY2E0OWY5YzRkOGNhNmVjOTk5YzBmM2U3ZTQuLjVkYzQxMWNjNTYzM2M0NmRhMTYxYWUw
MmJhNDk5YTliMGI1YTc0MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
ZGF0YWJhc2UvRGF0YWJhc2VUaHJlYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmRhdGFiYXNlL0RhdGFiYXNlVGhyZWFkLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNwcmFnbWEgb25j
ZQogCiAjaW5jbHVkZSA8bWVtb3J5PgorI2luY2x1ZGUgPHd0Zi9DaGVja2VkTG9jay5oPgogI2lu
Y2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL01lc3NhZ2VRdWV1ZS5oPgogI2lu
Y2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTc1LDggKzc2LDggQEAgcHJpdmF0ZToKIAogICAgIC8v
IFRoaXMgc2V0IGtlZXBzIHRyYWNrIG9mIHRoZSBvcGVuIGRhdGFiYXNlcyB0aGF0IGhhdmUgYmVl
biB1c2VkIG9uIHRoaXMgdGhyZWFkLgogICAgIHVzaW5nIERhdGFiYXNlU2V0ID0gSGFzaFNldDxS
ZWZQdHI8RGF0YWJhc2U+PjsKLSAgICBtdXRhYmxlIExvY2sgbV9vcGVuRGF0YWJhc2VTZXRNdXRl
eDsKLSAgICBEYXRhYmFzZVNldCBtX29wZW5EYXRhYmFzZVNldDsKKyAgICBtdXRhYmxlIENoZWNr
ZWRMb2NrIG1fb3BlbkRhdGFiYXNlU2V0TG9jazsKKyAgICBEYXRhYmFzZVNldCBtX29wZW5EYXRh
YmFzZVNldCBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fb3BlbkRhdGFiYXNlU2V0TG9jayk7CiAKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8U1FMVHJhbnNhY3Rpb25Db29yZGluYXRvcj4gbV90cmFuc2FjdGlv
bkNvb3JkaW5hdG9yOwogICAgIERhdGFiYXNlVGFza1N5bmNocm9uaXplciogbV9jbGVhbnVwU3lu
YyB7IG51bGxwdHIgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0
YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0
YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcAppbmRleCBhNjhiM2Y4MjVhOGU0OGIxZDYxNmQ2NTk0
Y2RiZTZlMWU2Zjc1YTM2Li5kYmRlMTI3OWQ2N2I4ZDIxZTFkOWY5YmM0NDMxOGFiZjBkMDcxYTJj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNl
VHJhY2tlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRh
YmFzZVRyYWNrZXIuY3BwCkBAIC0xMDQsNyArMTA0LDcgQEAgU3RyaW5nIERhdGFiYXNlVHJhY2tl
cjo6dHJhY2tlckRhdGFiYXNlUGF0aCgpIGNvbnN0CiAKIHZvaWQgRGF0YWJhc2VUcmFja2VyOjpv
cGVuVHJhY2tlckRhdGFiYXNlKFRyYWNrZXJDcmVhdGlvbkFjdGlvbiBjcmVhdGVBY3Rpb24pCiB7
Ci0gICAgQVNTRVJUKCFtX2RhdGFiYXNlR3VhcmQudHJ5TG9jaygpKTsKKyAgICBBU1NFUlQobV9k
YXRhYmFzZUd1YXJkLmlzSGVsZCgpKTsKIAogICAgIGlmIChtX2RhdGFiYXNlLmlzT3BlbigpKQog
ICAgICAgICByZXR1cm47CkBAIC0xNDMsNyArMTQzLDcgQEAgdm9pZCBEYXRhYmFzZVRyYWNrZXI6
Om9wZW5UcmFja2VyRGF0YWJhc2UoVHJhY2tlckNyZWF0aW9uQWN0aW9uIGNyZWF0ZUFjdGlvbikK
IAogRXhjZXB0aW9uT3I8dm9pZD4gRGF0YWJhc2VUcmFja2VyOjpoYXNBZGVxdWF0ZVF1b3RhRm9y
T3JpZ2luKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2luLCB1aW50NjRfdCBlc3RpbWF0
ZWRTaXplKQogewotICAgIEFTU0VSVCghbV9kYXRhYmFzZUd1YXJkLnRyeUxvY2soKSk7CisgICAg
QVNTRVJUKG1fZGF0YWJhc2VHdWFyZC5pc0hlbGQoKSk7CiAgICAgYXV0byB1c2FnZSA9IHRoaXMt
PnVzYWdlKG9yaWdpbik7CiAKICAgICAvLyBJZiB0aGUgZGF0YWJhc2Ugd2lsbCBmaXQsIGFsbG93
IGl0cyBjcmVhdGlvbi4KQEAgLTIzMCw3ICsyMzAsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBEYXRh
YmFzZVRyYWNrZXI6OnJldHJ5Q2FuRXN0YWJsaXNoRGF0YWJhc2UoRGF0YWJhc2VDb250ZXh0JiBj
bwogCiBib29sIERhdGFiYXNlVHJhY2tlcjo6aGFzRW50cnlGb3JPcmlnaW5Ob0xvY2soY29uc3Qg
U2VjdXJpdHlPcmlnaW5EYXRhJiBvcmlnaW4pCiB7Ci0gICAgQVNTRVJUKCFtX2RhdGFiYXNlR3Vh
cmQudHJ5TG9jaygpKTsKKyAgICBBU1NFUlQobV9kYXRhYmFzZUd1YXJkLmlzSGVsZCgpKTsKICAg
ICBvcGVuVHJhY2tlckRhdGFiYXNlKERvbnRDcmVhdGVJZkRvZXNOb3RFeGlzdCk7CiAgICAgaWYg
KCFtX2RhdGFiYXNlLmlzT3BlbigpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yNDgsNyAr
MjQ4LDcgQEAgYm9vbCBEYXRhYmFzZVRyYWNrZXI6Omhhc0VudHJ5Rm9yT3JpZ2luTm9Mb2NrKGNv
bnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2luKQogCiBib29sIERhdGFiYXNlVHJhY2tlcjo6
aGFzRW50cnlGb3JEYXRhYmFzZShjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbiwgY29u
c3QgU3RyaW5nJiBkYXRhYmFzZUlkZW50aWZpZXIpCiB7Ci0gICAgQVNTRVJUKCFtX2RhdGFiYXNl
R3VhcmQudHJ5TG9jaygpKTsKKyAgICBBU1NFUlQobV9kYXRhYmFzZUd1YXJkLmlzSGVsZCgpKTsK
ICAgICBvcGVuVHJhY2tlckRhdGFiYXNlKERvbnRDcmVhdGVJZkRvZXNOb3RFeGlzdCk7CiAgICAg
aWYgKCFtX2RhdGFiYXNlLmlzT3BlbigpKSB7CiAgICAgICAgIC8vIE5vICJ0cmFja2VyIGRhdGFi
YXNlIi4gSGVuY2UsIG5vIGVudHJ5IGZvciB0aGUgZGF0YWJhc2Ugb2YgaW50ZXJlc3QuCkBAIC0z
MTMsNyArMzEzLDcgQEAgc3RhdGljIFN0cmluZyBnZW5lcmF0ZURhdGFiYXNlRmlsZU5hbWUoKQog
CiBTdHJpbmcgRGF0YWJhc2VUcmFja2VyOjpmdWxsUGF0aEZvckRhdGFiYXNlTm9Mb2NrKGNvbnN0
IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wgY3Jl
YXRlSWZOb3RFeGlzdHMpCiB7Ci0gICAgQVNTRVJUKCFtX2RhdGFiYXNlR3VhcmQudHJ5TG9jaygp
KTsKKyAgICBBU1NFUlQobV9kYXRhYmFzZUd1YXJkLmlzSGVsZCgpKTsKIAogICAgIFN0cmluZyBv
cmlnaW5JZGVudGlmaWVyID0gb3JpZ2luLmRhdGFiYXNlSWRlbnRpZmllcigpOwogICAgIFN0cmlu
ZyBvcmlnaW5QYXRoID0gdGhpcy0+b3JpZ2luUGF0aChvcmlnaW4pOwpAQCAtMzkyLDcgKzM5Miw3
IEBAIFZlY3RvcjxTZWN1cml0eU9yaWdpbkRhdGE+IERhdGFiYXNlVHJhY2tlcjo6b3JpZ2lucygp
CiAKIFZlY3RvcjxTdHJpbmc+IERhdGFiYXNlVHJhY2tlcjo6ZGF0YWJhc2VOYW1lc05vTG9jayhj
b25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbikKIHsKLSAgICBBU1NFUlQoIW1fZGF0YWJh
c2VHdWFyZC50cnlMb2NrKCkpOworICAgIEFTU0VSVChtX2RhdGFiYXNlR3VhcmQuaXNIZWxkKCkp
OwogICAgIG9wZW5UcmFja2VyRGF0YWJhc2UoRG9udENyZWF0ZUlmRG9lc05vdEV4aXN0KTsKICAg
ICBpZiAoIW1fZGF0YWJhc2UuaXNPcGVuKCkpCiAgICAgICAgIHJldHVybiB7IH07CkBAIC02MzQs
NyArNjM0LDcgQEAgUmVmUHRyPE9yaWdpbkxvY2s+IERhdGFiYXNlVHJhY2tlcjo6b3JpZ2luTG9j
a0Zvcihjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWcKIAogdm9pZCBEYXRhYmFzZVRyYWNr
ZXI6OmRlbGV0ZU9yaWdpbkxvY2tGb3IoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBvcmlnaW4p
CiB7Ci0gICAgQVNTRVJUKCFtX2RhdGFiYXNlR3VhcmQudHJ5TG9jaygpKTsKKyAgICBBU1NFUlQo
bV9kYXRhYmFzZUd1YXJkLmlzSGVsZCgpKTsKIAogICAgIC8vIFRoZXJlIGlzIG5vdCBhbHdheXMg
YW4gaW5zdGFuY2Ugb2YgYW4gT3JpZ2luTG9jayBhc3NvY2lhdGVkIHdpdGggYW4gb3JpZ2luLgog
ICAgIC8vIEZvciBleGFtcGxlLCBpZiB0aGUgT3JpZ2luTG9jayBsb2NrIGZpbGUgd2FzIGNyZWF0
ZWQgYnkgYSBwcmV2aW91cyBydW4gb2YKQEAgLTY2Niw3ICs2NjYsNyBAQCB1aW50NjRfdCBEYXRh
YmFzZVRyYWNrZXI6OnVzYWdlKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2luKQogCiB1
aW50NjRfdCBEYXRhYmFzZVRyYWNrZXI6OnF1b3RhTm9Mb2NrKGNvbnN0IFNlY3VyaXR5T3JpZ2lu
RGF0YSYgb3JpZ2luKQogewotICAgIEFTU0VSVCghbV9kYXRhYmFzZUd1YXJkLnRyeUxvY2soKSk7
CisgICAgQVNTRVJUKG1fZGF0YWJhc2VHdWFyZC5pc0hlbGQoKSk7CiAgICAgdWludDY0X3QgcXVv
dGEgPSAwOwogCiAgICAgb3BlblRyYWNrZXJEYXRhYmFzZShEb250Q3JlYXRlSWZEb2VzTm90RXhp
c3QpOwpAQCAtNzQyLDcgKzc0Miw3IEBAIHZvaWQgRGF0YWJhc2VUcmFja2VyOjpzZXRRdW90YShj
b25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbiwgdWludDY0X3QgcXVvdGEpCiAKIGJvb2wg
RGF0YWJhc2VUcmFja2VyOjphZGREYXRhYmFzZShjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9y
aWdpbiwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHBhdGgpCiB7Ci0gICAgQVNT
RVJUKCFtX2RhdGFiYXNlR3VhcmQudHJ5TG9jaygpKTsKKyAgICBBU1NFUlQobV9kYXRhYmFzZUd1
YXJkLmlzSGVsZCgpKTsKICAgICBvcGVuVHJhY2tlckRhdGFiYXNlKENyZWF0ZUlmRG9lc05vdEV4
aXN0KTsKICAgICBpZiAoIW1fZGF0YWJhc2UuaXNPcGVuKCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKQEAgLTk0NiwxNCArOTQ2LDE0IEBAIGJvb2wgRGF0YWJhc2VUcmFja2VyOjpkZWxldGVPcmln
aW4oY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBvcmlnaW4sIERlbGV0aW9uTW9kCiAKIGJvb2wg
RGF0YWJhc2VUcmFja2VyOjppc0RlbGV0aW5nRGF0YWJhc2VPck9yaWdpbkZvcihjb25zdCBTZWN1
cml0eU9yaWdpbkRhdGEmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBuYW1lKQogewotICAgIEFTU0VS
VCghbV9kYXRhYmFzZUd1YXJkLnRyeUxvY2soKSk7CisgICAgQVNTRVJUKG1fZGF0YWJhc2VHdWFy
ZC5pc0hlbGQoKSk7CiAgICAgLy8gQ2FuJ3QgY3JlYXRlIGEgZGF0YWJhc2Ugd2hpbGUgc29tZW9u
ZSBlbHNlIGlzIGRlbGV0aW5nIGl0OyB0aGVyZSdzIGEgcmlzayBvZiBsZWF2aW5nIHVudHJhY2tl
ZCBkYXRhYmFzZSBkZWJyaXMgb24gdGhlIGRpc2suCiAgICAgcmV0dXJuIGlzRGVsZXRpbmdEYXRh
YmFzZShvcmlnaW4sIG5hbWUpIHx8IGlzRGVsZXRpbmdPcmlnaW4ob3JpZ2luKTsKIH0KIAogdm9p
ZCBEYXRhYmFzZVRyYWNrZXI6OnJlY29yZENyZWF0aW5nRGF0YWJhc2UoY29uc3QgU2VjdXJpdHlP
cmlnaW5EYXRhJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKLSAgICBBU1NFUlQoIW1f
ZGF0YWJhc2VHdWFyZC50cnlMb2NrKCkpOworICAgIEFTU0VSVChtX2RhdGFiYXNlR3VhcmQuaXNI
ZWxkKCkpOwogCiAgICAgLy8gV2UgZG9uJ3QgdXNlIEhhc2hNYXA6OmVuc3VyZSBoZXJlIHRvIGF2
b2lkIG1ha2luZyBhbiBpc29sYXRlZCBjb3B5IG9mIHRoZSBvcmlnaW4gZXZlcnkgdGltZS4KICAg
ICBhdXRvKiBuYW1lU2V0ID0gbV9iZWluZ0NyZWF0ZWQuZ2V0KG9yaWdpbik7CkBAIC05NjcsNyAr
OTY3LDcgQEAgdm9pZCBEYXRhYmFzZVRyYWNrZXI6OnJlY29yZENyZWF0aW5nRGF0YWJhc2UoY29u
c3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBvcmlnaW4sIGMKIAogdm9pZCBEYXRhYmFzZVRyYWNrZXI6
OmRvbmVDcmVhdGluZ0RhdGFiYXNlKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2luLCBj
b25zdCBTdHJpbmcmIG5hbWUpCiB7Ci0gICAgQVNTRVJUKCFtX2RhdGFiYXNlR3VhcmQudHJ5TG9j
aygpKTsKKyAgICBBU1NFUlQobV9kYXRhYmFzZUd1YXJkLmlzSGVsZCgpKTsKIAogICAgIEFTU0VS
VChtX2JlaW5nQ3JlYXRlZC5jb250YWlucyhvcmlnaW4pKTsKIApAQCAtOTg0LDcgKzk4NCw3IEBA
IHZvaWQgRGF0YWJhc2VUcmFja2VyOjpkb25lQ3JlYXRpbmdEYXRhYmFzZShjb25zdCBTZWN1cml0
eU9yaWdpbkRhdGEmIG9yaWdpbiwgY29uCiAKIGJvb2wgRGF0YWJhc2VUcmFja2VyOjpjcmVhdGlu
Z0RhdGFiYXNlKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2luLCBjb25zdCBTdHJpbmcm
IG5hbWUpCiB7Ci0gICAgQVNTRVJUKCFtX2RhdGFiYXNlR3VhcmQudHJ5TG9jaygpKTsKKyAgICBB
U1NFUlQobV9kYXRhYmFzZUd1YXJkLmlzSGVsZCgpKTsKIAogICAgIGF1dG8gaXRlcmF0b3IgPSBt
X2JlaW5nQ3JlYXRlZC5maW5kKG9yaWdpbik7CiAgICAgcmV0dXJuIGl0ZXJhdG9yICE9IG1fYmVp
bmdDcmVhdGVkLmVuZCgpICYmIGl0ZXJhdG9yLT52YWx1ZS0+Y29udGFpbnMobmFtZSk7CkBAIC05
OTIsMTMgKzk5MiwxMyBAQCBib29sIERhdGFiYXNlVHJhY2tlcjo6Y3JlYXRpbmdEYXRhYmFzZShj
b25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbiwgY29uc3QgUwogCiBib29sIERhdGFiYXNl
VHJhY2tlcjo6Y2FuRGVsZXRlRGF0YWJhc2UoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBvcmln
aW4sIGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKLSAgICBBU1NFUlQoIW1fZGF0YWJhc2VHdWFyZC50
cnlMb2NrKCkpOworICAgIEFTU0VSVChtX2RhdGFiYXNlR3VhcmQuaXNIZWxkKCkpOwogICAgIHJl
dHVybiAhY3JlYXRpbmdEYXRhYmFzZShvcmlnaW4sIG5hbWUpICYmICFpc0RlbGV0aW5nRGF0YWJh
c2Uob3JpZ2luLCBuYW1lKTsKIH0KIAogdm9pZCBEYXRhYmFzZVRyYWNrZXI6OnJlY29yZERlbGV0
aW5nRGF0YWJhc2UoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBvcmlnaW4sIGNvbnN0IFN0cmlu
ZyYgbmFtZSkKIHsKLSAgICBBU1NFUlQoIW1fZGF0YWJhc2VHdWFyZC50cnlMb2NrKCkpOworICAg
IEFTU0VSVChtX2RhdGFiYXNlR3VhcmQuaXNIZWxkKCkpOwogICAgIEFTU0VSVChjYW5EZWxldGVE
YXRhYmFzZShvcmlnaW4sIG5hbWUpKTsKIAogICAgIC8vIFdlIGRvbid0IHVzZSBIYXNoTWFwOjpl
bnN1cmUgaGVyZSB0byBhdm9pZCBtYWtpbmcgYW4gaXNvbGF0ZWQgY29weSBvZiB0aGUgb3JpZ2lu
IGV2ZXJ5IHRpbWUuCkBAIC0xMDE0LDcgKzEwMTQsNyBAQCB2b2lkIERhdGFiYXNlVHJhY2tlcjo6
cmVjb3JkRGVsZXRpbmdEYXRhYmFzZShjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbiwg
YwogCiB2b2lkIERhdGFiYXNlVHJhY2tlcjo6ZG9uZURlbGV0aW5nRGF0YWJhc2UoY29uc3QgU2Vj
dXJpdHlPcmlnaW5EYXRhJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKLSAgICBBU1NF
UlQoIW1fZGF0YWJhc2VHdWFyZC50cnlMb2NrKCkpOworICAgIEFTU0VSVChtX2RhdGFiYXNlR3Vh
cmQuaXNIZWxkKCkpOwogICAgIEFTU0VSVChtX2JlaW5nRGVsZXRlZC5jb250YWlucyhvcmlnaW4p
KTsKIAogICAgIGF1dG8gaXRlcmF0b3IgPSBtX2JlaW5nRGVsZXRlZC5maW5kKG9yaWdpbik7CkBA
IC0xMDI5LDMzICsxMDI5LDMzIEBAIHZvaWQgRGF0YWJhc2VUcmFja2VyOjpkb25lRGVsZXRpbmdE
YXRhYmFzZShjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbiwgY29uCiAKIGJvb2wgRGF0
YWJhc2VUcmFja2VyOjppc0RlbGV0aW5nRGF0YWJhc2UoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRh
JiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKLSAgICBBU1NFUlQoIW1fZGF0YWJhc2VH
dWFyZC50cnlMb2NrKCkpOworICAgIEFTU0VSVChtX2RhdGFiYXNlR3VhcmQuaXNIZWxkKCkpOwog
ICAgIGF1dG8qIG5hbWVTZXQgPSBtX2JlaW5nRGVsZXRlZC5nZXQob3JpZ2luKTsKICAgICByZXR1
cm4gbmFtZVNldCAmJiBuYW1lU2V0LT5jb250YWlucyhuYW1lKTsKIH0KIAogYm9vbCBEYXRhYmFz
ZVRyYWNrZXI6OmNhbkRlbGV0ZU9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdp
bikKIHsKLSAgICBBU1NFUlQoIW1fZGF0YWJhc2VHdWFyZC50cnlMb2NrKCkpOworICAgIEFTU0VS
VChtX2RhdGFiYXNlR3VhcmQuaXNIZWxkKCkpOwogICAgIHJldHVybiAhKGlzRGVsZXRpbmdPcmln
aW4ob3JpZ2luKSB8fCBtX2JlaW5nQ3JlYXRlZC5nZXQob3JpZ2luKSk7CiB9CiAKIGJvb2wgRGF0
YWJhc2VUcmFja2VyOjppc0RlbGV0aW5nT3JpZ2luKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYg
b3JpZ2luKQogewotICAgIEFTU0VSVCghbV9kYXRhYmFzZUd1YXJkLnRyeUxvY2soKSk7CisgICAg
QVNTRVJUKG1fZGF0YWJhc2VHdWFyZC5pc0hlbGQoKSk7CiAgICAgcmV0dXJuIG1fb3JpZ2luc0Jl
aW5nRGVsZXRlZC5jb250YWlucyhvcmlnaW4pOwogfQogCiB2b2lkIERhdGFiYXNlVHJhY2tlcjo6
cmVjb3JkRGVsZXRpbmdPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBvcmlnaW4pCiB7
Ci0gICAgQVNTRVJUKCFtX2RhdGFiYXNlR3VhcmQudHJ5TG9jaygpKTsKKyAgICBBU1NFUlQobV9k
YXRhYmFzZUd1YXJkLmlzSGVsZCgpKTsKICAgICBBU1NFUlQoIWlzRGVsZXRpbmdPcmlnaW4ob3Jp
Z2luKSk7CiAgICAgbV9vcmlnaW5zQmVpbmdEZWxldGVkLmFkZChvcmlnaW4uaXNvbGF0ZWRDb3B5
KCkpOwogfQogCiB2b2lkIERhdGFiYXNlVHJhY2tlcjo6ZG9uZURlbGV0aW5nT3JpZ2luKGNvbnN0
IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2luKQogewotICAgIEFTU0VSVCghbV9kYXRhYmFzZUd1
YXJkLnRyeUxvY2soKSk7CisgICAgQVNTRVJUKG1fZGF0YWJhc2VHdWFyZC5pc0hlbGQoKSk7CiAg
ICAgQVNTRVJUKGlzRGVsZXRpbmdPcmlnaW4ob3JpZ2luKSk7CiAgICAgbV9vcmlnaW5zQmVpbmdE
ZWxldGVkLnJlbW92ZShvcmlnaW4pOwogfQpAQCAtMTMzMCw3ICsxMzMwLDcgQEAgc3RhdGljIGJv
b2wgbm90aWZpY2F0aW9uU2NoZWR1bGVkID0gZmFsc2U7CiAKIHZvaWQgRGF0YWJhc2VUcmFja2Vy
OjpzY2hlZHVsZUZvck5vdGlmaWNhdGlvbigpCiB7Ci0gICAgQVNTRVJUKCFub3RpZmljYXRpb25M
b2NrLnRyeUxvY2soKSk7CisgICAgQVNTRVJUKG5vdGlmaWNhdGlvbkxvY2suaXNIZWxkKCkpOwog
CiAgICAgaWYgKCFub3RpZmljYXRpb25TY2hlZHVsZWQpIHsKICAgICAgICAgY2FsbE9uTWFpblRo
cmVhZChbXSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNl
L0RhdGFiYXNlVHJhY2tlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9E
YXRhYmFzZVRyYWNrZXIuaAppbmRleCAzY2EwYTQ2NTUwMTQ1ZDAwYjIyMjUxMGE2MTkzYjU4MGE5
OWUzNzkxLi45OTMzYjgwNTNjYmEyYmRlMTk0MzY2YzE2NjM0Y2FmMThiMDFiYjM0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2Vy
LmgKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJTUUxpdGVEYXRhYmFzZS5oIgogI2luY2x1
ZGUgIlNlY3VyaXR5T3JpZ2luRGF0YS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luSGFzaC5o
IgorI2luY2x1ZGUgPHd0Zi9DaGVja2VkTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoQ291bnRl
ZFNldC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQu
aD4KQEAgLTEwMyw3ICsxMDQsNyBAQCBwdWJsaWM6CiAgICAgLy8gTW9iaWxlU2FmYXJpIHdpbGwg
Z3JhYiB0aGlzIG11dGV4IG9uIHRoZSBtYWluIHRocmVhZCBiZWZvcmUgZGlzcGF0Y2hpbmcgdGhl
IHRhc2sgdG8gCiAgICAgLy8gY2xlYW4gdXAgemVybyBieXRlIGRhdGFiYXNlIGZpbGVzLiAgQW55
IG9wZXJhdGlvbnMgdG8gb3BlbiBuZXcgZGF0YWJhc2Ugd2lsbCBoYXZlIHRvCiAgICAgLy8gd2Fp
dCBmb3IgdGhhdCB0YXNrIHRvIGZpbmlzaCBieSB3YWl0aW5nIG9uIHRoaXMgbXV0ZXguCi0gICAg
c3RhdGljIExvY2smIG9wZW5EYXRhYmFzZU11dGV4KCk7CisgICAgc3RhdGljIENoZWNrZWRMb2Nr
JiBvcGVuRGF0YWJhc2VNdXRleCgpIFdURl9SRVRVUk5TX0xPQ0sobV9vcGVuRGF0YWJhc2VNYXBH
dWFyZCk7CiAgICAgCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgZW1wdHlEYXRhYmFz
ZUZpbGVzUmVtb3ZhbFRhc2tXaWxsQmVTY2hlZHVsZWQoKTsKICAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgdm9pZCBlbXB0eURhdGFiYXNlRmlsZXNSZW1vdmFsVGFza0RpZEZpbmlzaCgpOwpAQCAt
MTE5LDI2ICsxMjAsMjYgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBleHBsaWNpdCBEYXRhYmFz
ZVRyYWNrZXIoY29uc3QgU3RyaW5nJiBkYXRhYmFzZVBhdGgpOwogCi0gICAgRXhjZXB0aW9uT3I8
dm9pZD4gaGFzQWRlcXVhdGVRdW90YUZvck9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEm
LCB1aW50NjRfdCBlc3RpbWF0ZWRTaXplKTsKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiBoYXNBZGVx
dWF0ZVF1b3RhRm9yT3JpZ2luKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYsIHVpbnQ2NF90IGVz
dGltYXRlZFNpemUpIFdURl9SRVFVSVJFU19MT0NLKG1fZGF0YWJhc2VHdWFyZCk7CiAKLSAgICBi
b29sIGhhc0VudHJ5Rm9yT3JpZ2luTm9Mb2NrKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYpOwot
ICAgIFN0cmluZyBmdWxsUGF0aEZvckRhdGFiYXNlTm9Mb2NrKGNvbnN0IFNlY3VyaXR5T3JpZ2lu
RGF0YSYsIGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCBjcmVhdGVJZkRvZXNOb3RFeGlzdCk7Ci0g
ICAgVmVjdG9yPFN0cmluZz4gZGF0YWJhc2VOYW1lc05vTG9jayhjb25zdCBTZWN1cml0eU9yaWdp
bkRhdGEmKTsKLSAgICB1aW50NjRfdCBxdW90YU5vTG9jayhjb25zdCBTZWN1cml0eU9yaWdpbkRh
dGEmKTsKKyAgICBib29sIGhhc0VudHJ5Rm9yT3JpZ2luTm9Mb2NrKGNvbnN0IFNlY3VyaXR5T3Jp
Z2luRGF0YSYpIFdURl9SRVFVSVJFU19MT0NLKG1fZGF0YWJhc2VHdWFyZCk7CisgICAgU3RyaW5n
IGZ1bGxQYXRoRm9yRGF0YWJhc2VOb0xvY2soY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiwgY29u
c3QgU3RyaW5nJiBuYW1lLCBib29sIGNyZWF0ZUlmRG9lc05vdEV4aXN0KSBXVEZfUkVRVUlSRVNf
TE9DSyhtX2RhdGFiYXNlR3VhcmQpOworICAgIFZlY3RvcjxTdHJpbmc+IGRhdGFiYXNlTmFtZXNO
b0xvY2soY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJikgV1RGX1JFUVVJUkVTX0xPQ0sobV9kYXRh
YmFzZUd1YXJkKSBXVEZfUkVRVUlSRVNfTE9DSyhtX2RhdGFiYXNlR3VhcmQpOworICAgIHVpbnQ2
NF90IHF1b3RhTm9Mb2NrKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYpIFdURl9SRVFVSVJFU19M
T0NLKG1fZGF0YWJhc2VHdWFyZCk7CiAKLSAgICBTdHJpbmcgdHJhY2tlckRhdGFiYXNlUGF0aCgp
IGNvbnN0OworICAgIFN0cmluZyB0cmFja2VyRGF0YWJhc2VQYXRoKCkgY29uc3QgV1RGX1JFUVVJ
UkVTX0xPQ0sobV9kYXRhYmFzZUd1YXJkKTsKIAogICAgIGVudW0gVHJhY2tlckNyZWF0aW9uQWN0
aW9uIHsKICAgICAgICAgRG9udENyZWF0ZUlmRG9lc05vdEV4aXN0LAogICAgICAgICBDcmVhdGVJ
ZkRvZXNOb3RFeGlzdAogICAgIH07Ci0gICAgdm9pZCBvcGVuVHJhY2tlckRhdGFiYXNlKFRyYWNr
ZXJDcmVhdGlvbkFjdGlvbik7CisgICAgdm9pZCBvcGVuVHJhY2tlckRhdGFiYXNlKFRyYWNrZXJD
cmVhdGlvbkFjdGlvbikgV1RGX1JFUVVJUkVTX0xPQ0sobV9kYXRhYmFzZUd1YXJkKTsKIAogICAg
IFN0cmluZyBvcmlnaW5QYXRoKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYpIGNvbnN0OwogCi0g
ICAgYm9vbCBoYXNFbnRyeUZvckRhdGFiYXNlKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYsIGNv
bnN0IFN0cmluZyYgZGF0YWJhc2VJZGVudGlmaWVyKTsKKyAgICBib29sIGhhc0VudHJ5Rm9yRGF0
YWJhc2UoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZUlk
ZW50aWZpZXIpIFdURl9SRVFVSVJFU19MT0NLKG1fZGF0YWJhc2VHdWFyZCk7CiAKLSAgICBib29s
IGFkZERhdGFiYXNlKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYsIGNvbnN0IFN0cmluZyYgbmFt
ZSwgY29uc3QgU3RyaW5nJiBwYXRoKTsKKyAgICBib29sIGFkZERhdGFiYXNlKGNvbnN0IFNlY3Vy
aXR5T3JpZ2luRGF0YSYsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBwYXRoKSBX
VEZfUkVRVUlSRVNfTE9DSyhtX2RhdGFiYXNlR3VhcmQpOwogCiAgICAgZW51bSBjbGFzcyBEZWxl
dGlvbk1vZGUgewogICAgICAgICBJbW1lZGlhdGUsCkBAIC0xNTUsNDEgKzE1Niw0MSBAQCBwcml2
YXRlOgogICAgIGJvb2wgZGVsZXRlT3JpZ2luKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYsIERl
bGV0aW9uTW9kZSk7CiAgICAgYm9vbCBkZWxldGVEYXRhYmFzZUZpbGUoY29uc3QgU2VjdXJpdHlP
cmlnaW5EYXRhJiwgY29uc3QgU3RyaW5nJiBuYW1lLCBEZWxldGlvbk1vZGUpOwogCi0gICAgdm9p
ZCBkZWxldGVPcmlnaW5Mb2NrRm9yKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYpOworICAgIHZv
aWQgZGVsZXRlT3JpZ2luTG9ja0Zvcihjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmKSBXVEZfUkVR
VUlSRVNfTE9DSyhtX2RhdGFiYXNlR3VhcmQpOwogCiAgICAgdXNpbmcgRGF0YWJhc2VTZXQgPSBI
YXNoU2V0PERhdGFiYXNlKj47CiAgICAgdXNpbmcgRGF0YWJhc2VOYW1lTWFwID0gSGFzaE1hcDxT
dHJpbmcsIERhdGFiYXNlU2V0Kj47CiAgICAgdXNpbmcgRGF0YWJhc2VPcmlnaW5NYXAgPSBIYXNo
TWFwPFNlY3VyaXR5T3JpZ2luRGF0YSwgRGF0YWJhc2VOYW1lTWFwKj47CiAKLSAgICBMb2NrIG1f
b3BlbkRhdGFiYXNlTWFwR3VhcmQ7Ci0gICAgbXV0YWJsZSBzdGQ6OnVuaXF1ZV9wdHI8RGF0YWJh
c2VPcmlnaW5NYXA+IG1fb3BlbkRhdGFiYXNlTWFwOworICAgIENoZWNrZWRMb2NrIG1fb3BlbkRh
dGFiYXNlTWFwR3VhcmQ7CisgICAgbXV0YWJsZSBzdGQ6OnVuaXF1ZV9wdHI8RGF0YWJhc2VPcmln
aW5NYXA+IG1fb3BlbkRhdGFiYXNlTWFwIFdURl9HVUFSREVEX0JZX0xPQ0sobV9vcGVuRGF0YWJh
c2VNYXBHdWFyZCk7CiAKICAgICAvLyBUaGlzIGxvY2sgcHJvdGVjdHMgbV9kYXRhYmFzZSwgbV9v
cmlnaW5Mb2NrTWFwLCBtX2RhdGFiYXNlRGlyZWN0b3J5UGF0aCwgbV9vcmlnaW5zQmVpbmdEZWxl
dGVkLCBtX2JlaW5nQ3JlYXRlZCwgYW5kIG1fYmVpbmdEZWxldGVkLgotICAgIExvY2sgbV9kYXRh
YmFzZUd1YXJkOwotICAgIFNRTGl0ZURhdGFiYXNlIG1fZGF0YWJhc2U7CisgICAgQ2hlY2tlZExv
Y2sgbV9kYXRhYmFzZUd1YXJkOworICAgIFNRTGl0ZURhdGFiYXNlIG1fZGF0YWJhc2UgV1RGX0dV
QVJERURfQllfTE9DSyhtX2RhdGFiYXNlR3VhcmQpOwogCiAgICAgdXNpbmcgT3JpZ2luTG9ja01h
cCA9IEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8T3JpZ2luTG9jaz4+OwotICAgIE9yaWdpbkxvY2tN
YXAgbV9vcmlnaW5Mb2NrTWFwOworICAgIE9yaWdpbkxvY2tNYXAgbV9vcmlnaW5Mb2NrTWFwIFdU
Rl9HVUFSREVEX0JZX0xPQ0sobV9kYXRhYmFzZUd1YXJkKTsKIAogICAgIFN0cmluZyBtX2RhdGFi
YXNlRGlyZWN0b3J5UGF0aDsKIAogICAgIERhdGFiYXNlTWFuYWdlckNsaWVudCogbV9jbGllbnQg
eyBudWxscHRyIH07CiAKLSAgICBIYXNoTWFwPFNlY3VyaXR5T3JpZ2luRGF0YSwgc3RkOjp1bmlx
dWVfcHRyPEhhc2hDb3VudGVkU2V0PFN0cmluZz4+PiBtX2JlaW5nQ3JlYXRlZDsKLSAgICBIYXNo
TWFwPFNlY3VyaXR5T3JpZ2luRGF0YSwgc3RkOjp1bmlxdWVfcHRyPEhhc2hTZXQ8U3RyaW5nPj4+
IG1fYmVpbmdEZWxldGVkOwotICAgIEhhc2hTZXQ8U2VjdXJpdHlPcmlnaW5EYXRhPiBtX29yaWdp
bnNCZWluZ0RlbGV0ZWQ7Ci0gICAgYm9vbCBpc0RlbGV0aW5nRGF0YWJhc2VPck9yaWdpbkZvcihj
b25zdCBTZWN1cml0eU9yaWdpbkRhdGEmLCBjb25zdCBTdHJpbmcmIG5hbWUpOwotICAgIHZvaWQg
cmVjb3JkQ3JlYXRpbmdEYXRhYmFzZShjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmLCBjb25zdCBT
dHJpbmcmIG5hbWUpOwotICAgIHZvaWQgZG9uZUNyZWF0aW5nRGF0YWJhc2UoY29uc3QgU2VjdXJp
dHlPcmlnaW5EYXRhJiwgY29uc3QgU3RyaW5nJiBuYW1lKTsKLSAgICBib29sIGNyZWF0aW5nRGF0
YWJhc2UoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiwgY29uc3QgU3RyaW5nJiBuYW1lKTsKLSAg
ICBib29sIGNhbkRlbGV0ZURhdGFiYXNlKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYsIGNvbnN0
IFN0cmluZyYgbmFtZSk7Ci0gICAgdm9pZCByZWNvcmREZWxldGluZ0RhdGFiYXNlKGNvbnN0IFNl
Y3VyaXR5T3JpZ2luRGF0YSYsIGNvbnN0IFN0cmluZyYgbmFtZSk7Ci0gICAgdm9pZCBkb25lRGVs
ZXRpbmdEYXRhYmFzZShjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmLCBjb25zdCBTdHJpbmcmIG5h
bWUpOwotICAgIGJvb2wgaXNEZWxldGluZ0RhdGFiYXNlKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0
YSYsIGNvbnN0IFN0cmluZyYgbmFtZSk7Ci0gICAgYm9vbCBjYW5EZWxldGVPcmlnaW4oY29uc3Qg
U2VjdXJpdHlPcmlnaW5EYXRhJik7Ci0gICAgYm9vbCBpc0RlbGV0aW5nT3JpZ2luKGNvbnN0IFNl
Y3VyaXR5T3JpZ2luRGF0YSYpOwotICAgIHZvaWQgcmVjb3JkRGVsZXRpbmdPcmlnaW4oY29uc3Qg
U2VjdXJpdHlPcmlnaW5EYXRhJik7Ci0gICAgdm9pZCBkb25lRGVsZXRpbmdPcmlnaW4oY29uc3Qg
U2VjdXJpdHlPcmlnaW5EYXRhJik7CisgICAgSGFzaE1hcDxTZWN1cml0eU9yaWdpbkRhdGEsIHN0
ZDo6dW5pcXVlX3B0cjxIYXNoQ291bnRlZFNldDxTdHJpbmc+Pj4gbV9iZWluZ0NyZWF0ZWQgV1RG
X0dVQVJERURfQllfTE9DSyhtX2RhdGFiYXNlR3VhcmQpOworICAgIEhhc2hNYXA8U2VjdXJpdHlP
cmlnaW5EYXRhLCBzdGQ6OnVuaXF1ZV9wdHI8SGFzaFNldDxTdHJpbmc+Pj4gbV9iZWluZ0RlbGV0
ZWQgV1RGX0dVQVJERURfQllfTE9DSyhtX2RhdGFiYXNlR3VhcmQpOworICAgIEhhc2hTZXQ8U2Vj
dXJpdHlPcmlnaW5EYXRhPiBtX29yaWdpbnNCZWluZ0RlbGV0ZWQgV1RGX0dVQVJERURfQllfTE9D
SyhtX2RhdGFiYXNlR3VhcmQpOworICAgIGJvb2wgaXNEZWxldGluZ0RhdGFiYXNlT3JPcmlnaW5G
b3IoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiwgY29uc3QgU3RyaW5nJiBuYW1lKSBXVEZfUkVR
VUlSRVNfTE9DSyhtX2RhdGFiYXNlR3VhcmQpOworICAgIHZvaWQgcmVjb3JkQ3JlYXRpbmdEYXRh
YmFzZShjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmLCBjb25zdCBTdHJpbmcmIG5hbWUpIFdURl9S
RVFVSVJFU19MT0NLKG1fZGF0YWJhc2VHdWFyZCk7CisgICAgdm9pZCBkb25lQ3JlYXRpbmdEYXRh
YmFzZShjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmLCBjb25zdCBTdHJpbmcmIG5hbWUpIFdURl9S
RVFVSVJFU19MT0NLKG1fZGF0YWJhc2VHdWFyZCk7CisgICAgYm9vbCBjcmVhdGluZ0RhdGFiYXNl
KGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYsIGNvbnN0IFN0cmluZyYgbmFtZSkgV1RGX1JFUVVJ
UkVTX0xPQ0sobV9kYXRhYmFzZUd1YXJkKTsKKyAgICBib29sIGNhbkRlbGV0ZURhdGFiYXNlKGNv
bnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYsIGNvbnN0IFN0cmluZyYgbmFtZSkgV1RGX1JFUVVJUkVT
X0xPQ0sobV9kYXRhYmFzZUd1YXJkKTsKKyAgICB2b2lkIHJlY29yZERlbGV0aW5nRGF0YWJhc2Uo
Y29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiwgY29uc3QgU3RyaW5nJiBuYW1lKSBXVEZfUkVRVUlS
RVNfTE9DSyhtX2RhdGFiYXNlR3VhcmQpOworICAgIHZvaWQgZG9uZURlbGV0aW5nRGF0YWJhc2Uo
Y29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiwgY29uc3QgU3RyaW5nJiBuYW1lKSBXVEZfUkVRVUlS
RVNfTE9DSyhtX2RhdGFiYXNlR3VhcmQpOworICAgIGJvb2wgaXNEZWxldGluZ0RhdGFiYXNlKGNv
bnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYsIGNvbnN0IFN0cmluZyYgbmFtZSkgV1RGX1JFUVVJUkVT
X0xPQ0sobV9kYXRhYmFzZUd1YXJkKTsKKyAgICBib29sIGNhbkRlbGV0ZU9yaWdpbihjb25zdCBT
ZWN1cml0eU9yaWdpbkRhdGEmKSBXVEZfUkVRVUlSRVNfTE9DSyhtX2RhdGFiYXNlR3VhcmQpOwor
ICAgIGJvb2wgaXNEZWxldGluZ09yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmKSBXVEZf
UkVRVUlSRVNfTE9DSyhtX2RhdGFiYXNlR3VhcmQpOworICAgIHZvaWQgcmVjb3JkRGVsZXRpbmdP
cmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJikgV1RGX1JFUVVJUkVTX0xPQ0sobV9kYXRh
YmFzZUd1YXJkKTsKKyAgICB2b2lkIGRvbmVEZWxldGluZ09yaWdpbihjb25zdCBTZWN1cml0eU9y
aWdpbkRhdGEmKSBXVEZfUkVRVUlSRVNfTE9DSyhtX2RhdGFiYXNlR3VhcmQpOwogCiAgICAgc3Rh
dGljIHZvaWQgc2NoZWR1bGVGb3JOb3RpZmljYXRpb24oKTsKICAgICBzdGF0aWMgdm9pZCBub3Rp
ZnlEYXRhYmFzZXNDaGFuZ2VkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmRhdGFiYXNlL1NRTENhbGxiYWNrV3JhcHBlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJkYXRhYmFzZS9TUUxDYWxsYmFja1dyYXBwZXIuaAppbmRleCAyNzIxNDQxMzc1MjU5M2Vk
MDhhMjY2Mjk0MGZjYTg3YTkyNDM2YzViLi5jMmVkMzY2ZTNjMDhmZTllMTlmZjdjZWM5OTk1NWVk
NDQwMTM5OTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNl
L1NRTENhbGxiYWNrV3JhcHBlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0
YWJhc2UvU1FMQ2FsbGJhY2tXcmFwcGVyLmgKQEAgLTI5LDcgKzI5LDcgQEAKICNwcmFnbWEgb25j
ZQogCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgPHd0Zi9M
b2NrLmg+CisjaW5jbHVkZSA8d3RmL0NoZWNrZWRMb2NrLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIApAQCAtNTgsNyArNTgsNyBAQCBwdWJsaWM6CiAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHRQdHI7CiAgICAgICAgIFQqIGNhbGxiYWNrOwog
ICAgICAgICB7Ci0gICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9tdXRleCB9OworICAgICAg
ICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogICAgICAgICAgICAgaWYgKCFtX2NhbGxi
YWNrKSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKCFtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQp
OwogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTgzLDE5ICs4MywyMCBAQCBwdWJsaWM6CiAK
ICAgICBSZWZQdHI8VD4gdW53cmFwKCkKICAgICB7Ci0gICAgICAgIExvY2tlciBsb2NrZXIgeyBt
X211dGV4IH07CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKICAgICAgICAgQVNT
RVJUKCFtX2NhbGxiYWNrIHx8IG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+aXNDb250ZXh0VGhy
ZWFkKCkpOwogICAgICAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBudWxscHRyOwogICAg
ICAgICByZXR1cm4gV1RGTW92ZShtX2NhbGxiYWNrKTsKICAgICB9CiAKICAgICAvLyBVc2VmdWwg
Zm9yIG9wdGltaXphdGlvbnMgb25seSwgcGxlYXNlIHRlc3QgdGhlIHJldHVybiB2YWx1ZSBvZiB1
bndyYXAgdG8gYmUgc3VyZS4KLSAgICBib29sIGhhc0NhbGxiYWNrKCkgY29uc3QgeyByZXR1cm4g
bV9jYWxsYmFjazsgfQorICAgIC8vIEZJWE1FOiBUaGlzIGlzIG5vdCB0aHJlYWQtc2FmZS4KKyAg
ICBib29sIGhhc0NhbGxiYWNrKCkgY29uc3QgV1RGX0lHTk9SRVNfVEhSRUFEX1NBRkVUWV9BTkFM
WVNJUyB7IHJldHVybiBtX2NhbGxiYWNrOyB9CiAKIHByaXZhdGU6Ci0gICAgTG9jayBtX211dGV4
OwotICAgIFJlZlB0cjxUPiBtX2NhbGxiYWNrOwotICAgIFJlZlB0cjxTY3JpcHRFeGVjdXRpb25D
b250ZXh0PiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CisgICAgQ2hlY2tlZExvY2sgbV9sb2Nr
OworICAgIFJlZlB0cjxUPiBtX2NhbGxiYWNrIFdURl9HVUFSREVEX0JZX0xPQ0sobV9sb2NrKTsK
KyAgICBSZWZQdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4gbV9zY3JpcHRFeGVjdXRpb25Db250
ZXh0IFdURl9HVUFSREVEX0JZX0xPQ0sobV9sb2NrKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FM
VHJhbnNhY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxU
cmFuc2FjdGlvbi5jcHAKaW5kZXggZTc0MjFjNzdjNTMyNzAxMWY1OGJmMTI2MTZmOWUwNGRiNTFi
NjY2ZS4uZDE0ZWJmYzU3OWNlYTYzODM0YTg3OTNhMzVlZGVjZDU2NDg2OWFlNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbi5j
cHAKQEAgLTE0NCw3ICsxNDQsNyBAQCB2b2lkIFNRTFRyYW5zYWN0aW9uOjpjYWxsRXJyb3JDYWxs
YmFja0R1ZVRvSW50ZXJydXB0aW9uKCkKIAogdm9pZCBTUUxUcmFuc2FjdGlvbjo6ZW5xdWV1ZVN0
YXRlbWVudChzdGQ6OnVuaXF1ZV9wdHI8U1FMU3RhdGVtZW50PiBzdGF0ZW1lbnQpCiB7Ci0gICAg
TG9ja2VyIGxvY2tlciB7IG1fc3RhdGVtZW50TXV0ZXggfTsKKyAgICBMb2NrZXIgbG9ja2VyIHsg
bV9zdGF0ZW1lbnRMb2NrIH07CiAgICAgbV9zdGF0ZW1lbnRRdWV1ZS5hcHBlbmQoV1RGTW92ZShz
dGF0ZW1lbnQpKTsKIH0KIApAQCAtMTkwLDcgKzE5MCw3IEBAIHZvaWQgU1FMVHJhbnNhY3Rpb246
OmNoZWNrQW5kSGFuZGxlQ2xvc2VkRGF0YWJhc2UoKQogICAgIC8vIElmIHRoZSBkYXRhYmFzZSB3
YXMgc3RvcHBlZCwgZG9uJ3QgZG8gYW55dGhpbmcgYW5kIGNhbmNlbCBxdWV1ZWQgd29yawogICAg
IExPRyhTdG9yYWdlQVBJLCAiRGF0YWJhc2Ugd2FzIHN0b3BwZWQgb3IgaW50ZXJydXB0ZWQgLSBj
YW5jZWxsaW5nIHdvcmsgZm9yIHRoaXMgdHJhbnNhY3Rpb24iKTsKIAotICAgIExvY2tlciBsb2Nr
ZXIgeyBtX3N0YXRlbWVudE11dGV4IH07CisgICAgTG9ja2VyIGxvY2tlciB7IG1fc3RhdGVtZW50
TG9jayB9OwogICAgIG1fc3RhdGVtZW50UXVldWUuY2xlYXIoKTsKICAgICBtX25leHRTdGVwID0g
bnVsbHB0cjsKIApAQCAtNTE2LDcgKzUxNiw3IEBAIHZvaWQgU1FMVHJhbnNhY3Rpb246OmdldE5l
eHRTdGF0ZW1lbnQoKQogewogICAgIG1fY3VycmVudFN0YXRlbWVudCA9IG51bGxwdHI7CiAKLSAg
ICBMb2NrZXIgbG9ja2VyIHsgbV9zdGF0ZW1lbnRNdXRleCB9OworICAgIExvY2tlciBsb2NrZXIg
eyBtX3N0YXRlbWVudExvY2sgfTsKICAgICBpZiAoIW1fc3RhdGVtZW50UXVldWUuaXNFbXB0eSgp
KQogICAgICAgICBtX2N1cnJlbnRTdGF0ZW1lbnQgPSBtX3N0YXRlbWVudFF1ZXVlLnRha2VGaXJz
dCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9T
UUxUcmFuc2FjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxU
cmFuc2FjdGlvbi5oCmluZGV4IDU0MGY2ZTMxZmYzYjNlMjkxMmE5OGU3ZjJkODA3OWJhNTkwMGEy
YmMuLjMxZTEwYjcyMzg0MTljZmMwYjcyY2I1MTcwOGUwNmE5YmNlZWYwZTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb24uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uLmgKQEAg
LTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJTUUxUcmFuc2FjdGlvbkJhY2tlbmQuaCIKICNpbmNs
dWRlICJTUUxUcmFuc2FjdGlvblN0YXRlTWFjaGluZS5oIgogI2luY2x1ZGUgIlNRTFZhbHVlLmgi
CisjaW5jbHVkZSA8d3RmL0NoZWNrZWRMb2NrLmg+CiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAj
aW5jbHVkZSA8d3RmL0xvY2suaD4KIApAQCAtMTM4LDggKzEzOSw4IEBAIHByaXZhdGU6CiAgICAg
Ym9vbCBtX3JlYWRPbmx5IHsgZmFsc2UgfTsKICAgICBib29sIG1faGFzVmVyc2lvbk1pc21hdGNo
IHsgZmFsc2UgfTsKIAotICAgIExvY2sgbV9zdGF0ZW1lbnRNdXRleDsKLSAgICBEZXF1ZTxzdGQ6
OnVuaXF1ZV9wdHI8U1FMU3RhdGVtZW50Pj4gbV9zdGF0ZW1lbnRRdWV1ZTsKKyAgICBDaGVja2Vk
TG9jayBtX3N0YXRlbWVudExvY2s7CisgICAgRGVxdWU8c3RkOjp1bmlxdWVfcHRyPFNRTFN0YXRl
bWVudD4+IG1fc3RhdGVtZW50UXVldWUgV1RGX0dVQVJERURfQllfTE9DSyhtX3N0YXRlbWVudExv
Y2spOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFNRTFN0YXRlbWVudD4gbV9jdXJyZW50U3RhdGVt
ZW50OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NR
TFRyYW5zYWN0aW9uQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFi
YXNlL1NRTFRyYW5zYWN0aW9uQmFja2VuZC5jcHAKaW5kZXggYTA0M2Y3Y2EzMjZiZThjMGU5YmM5
ODNiYzM3YmJmNDUxOGU5MDYxNC4uNjJiMjdjZGIzMzI1MTRkNmE0OTcxMGEwNzFkNDExNzVhNzBk
YmRkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxU
cmFuc2FjdGlvbkJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0
YWJhc2UvU1FMVHJhbnNhY3Rpb25CYWNrZW5kLmNwcApAQCAtMzU3LDcgKzM1Nyw3IEBAIHZvaWQg
U1FMVHJhbnNhY3Rpb25CYWNrZW5kOjpkb0NsZWFudXAoKQogCiAgICAgbV9mcm9udGVuZC5yZWxl
YXNlT3JpZ2luTG9ja0lmTmVlZGVkKCk7CiAKLSAgICBMb2NrZXIgbG9ja2VyIHsgbV9mcm9udGVu
ZC5tX3N0YXRlbWVudE11dGV4IH07CisgICAgTG9ja2VyIGxvY2tlciB7IG1fZnJvbnRlbmQubV9z
dGF0ZW1lbnRMb2NrIH07CiAgICAgbV9mcm9udGVuZC5tX3N0YXRlbWVudFF1ZXVlLmNsZWFyKCk7
CiAKICAgICBpZiAobV9mcm9udGVuZC5tX3NxbGl0ZVRyYW5zYWN0aW9uKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJl
ZS5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRl
ZFRyZWUuaAppbmRleCAyODQ1YzcxMjRjOTY4NWRlOTQ2NDhkNjYzOTY1ZmM2MmUxN2Q3ZDdlLi44
MWFiOTNjNmI5YmI0NmFjZmFjYTQyYjk4ZDE1YjA0MWZkZjkyYzc1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRU
cmVlLmgKQEAgLTM2MSw3ICszNjEsNyBAQCBwdWJsaWM6CiAgICAgLy8gQm90aCBzZXRSb290Tm9k
ZUlEIGFuZCBzZXRGb2N1c2VkTm9kZUlEIGFyZSBjYWxsZWQgZHVyaW5nIHRoZSBnZW5lcmF0aW9u
CiAgICAgLy8gb2YgdGhlIElzb2xhdGVkVHJlZS4KICAgICAvLyBGb2N1c2VkIG5vZGUgdXBkYXRl
cyBpbiBBWE9iamVjdENhY2hlIHVzZSBzZXRGb2N1c05vZGVJRC4KLSAgICB2b2lkIHNldFJvb3RO
b2RlKEFYSXNvbGF0ZWRPYmplY3QqKTsKKyAgICB2b2lkIHNldFJvb3ROb2RlKEFYSXNvbGF0ZWRP
YmplY3QqKSBXVEZfUkVRVUlSRVNfTE9DSyhtX2NoYW5nZUxvZ0xvY2spOwogICAgIHZvaWQgc2V0
Rm9jdXNlZE5vZGVJRChBWElEKTsKIAogICAgIC8vIENhbGxlZCBvbiBBWCB0aHJlYWQgZnJvbSBX
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBtZXRob2RzLgpAQCAtMzgxLDcgKzM4MSw3IEBA
IHByaXZhdGU6CiAgICAgLy8gQ2FsbCBvbiBtYWluIHRocmVhZAogICAgIFJlZjxBWElzb2xhdGVk
T2JqZWN0PiBjcmVhdGVTdWJ0cmVlKEFYQ29yZU9iamVjdCYsIEFYSUQgcGFyZW50SUQsIGJvb2wg
YXR0YWNoV3JhcHBlcik7CiAgICAgLy8gQ2FsbGVkIG9uIG1haW4gdGhyZWFkIHRvIHVwZGF0ZSBi
b3RoIG1fbm9kZU1hcCBhbmQgbV9wZW5kaW5nQ2hpbGRyZW5VcGRhdGVzLgotICAgIHZvaWQgdXBk
YXRlQ2hpbGRyZW5JRHMoQVhJRCBwYXJlbnRJRCwgVmVjdG9yPEFYSUQ+JiYgY2hpbGRyZW5JRHMp
OworICAgIHZvaWQgdXBkYXRlQ2hpbGRyZW5JRHMoQVhJRCBwYXJlbnRJRCwgVmVjdG9yPEFYSUQ+
JiYgY2hpbGRyZW5JRHMpIFdURl9SRVFVSVJFU19MT0NLKG1fY2hhbmdlTG9nTG9jayk7CiAKICAg
ICBBWElzb2xhdGVkVHJlZUlEIG1fdHJlZUlEOwogICAgIEFYT2JqZWN0Q2FjaGUqIG1fYXhPYmpl
Y3RDYWNoZSB7IG51bGxwdHIgfTsKQEAgLTM5MywxNSArMzkzLDE1IEBAIHByaXZhdGU6CiAgICAg
SGFzaE1hcDxBWElELCBSZWY8QVhJc29sYXRlZE9iamVjdD4+IG1fcmVhZGVyVGhyZWFkTm9kZU1h
cDsKIAogICAgIC8vIFdyaXR0ZW4gdG8gYnkgbWFpbiB0aHJlYWQgdW5kZXIgbG9jaywgYWNjZXNz
ZWQgYW5kIGFwcGxpZWQgYnkgQVggdGhyZWFkLgotICAgIFJlZlB0cjxBWElzb2xhdGVkT2JqZWN0
PiBtX3Jvb3ROb2RlOwotICAgIFZlY3RvcjxOb2RlQ2hhbmdlPiBtX3BlbmRpbmdBcHBlbmRzOyAv
LyBOb2RlcyB0byBiZSBhZGRlZCB0byB0aGUgdHJlZSBhbmQgcGxhdGZvcm0td3JhcHBlZC4KLSAg
ICBWZWN0b3I8QVhQcm9wZXJ0eUNoYW5nZT4gbV9wZW5kaW5nUHJvcGVydHlDaGFuZ2VzOwotICAg
IFZlY3RvcjxBWElEPiBtX3BlbmRpbmdOb2RlUmVtb3ZhbHM7IC8vIE5vZGVzIHRvIGJlIHJlbW92
ZWQgZnJvbSB0aGUgdHJlZS4KLSAgICBWZWN0b3I8QVhJRD4gbV9wZW5kaW5nU3VidHJlZVJlbW92
YWxzOyAvLyBOb2RlcyB3aG9zZSBzdWJ0cmVlcyBhcmUgdG8gYmUgcmVtb3ZlZCBmcm9tIHRoZSB0
cmVlLgotICAgIFZlY3RvcjxzdGQ6OnBhaXI8QVhJRCwgVmVjdG9yPEFYSUQ+Pj4gbV9wZW5kaW5n
Q2hpbGRyZW5VcGRhdGVzOwotICAgIEFYSUQgbV9wZW5kaW5nRm9jdXNlZE5vZGVJRCB7IEludmFs
aWRBWElEIH07CisgICAgUmVmUHRyPEFYSXNvbGF0ZWRPYmplY3Q+IG1fcm9vdE5vZGUgV1RGX0dV
QVJERURfQllfTE9DSyhtX2NoYW5nZUxvZ0xvY2spOworICAgIFZlY3RvcjxOb2RlQ2hhbmdlPiBt
X3BlbmRpbmdBcHBlbmRzIFdURl9HVUFSREVEX0JZX0xPQ0sobV9jaGFuZ2VMb2dMb2NrKTsgLy8g
Tm9kZXMgdG8gYmUgYWRkZWQgdG8gdGhlIHRyZWUgYW5kIHBsYXRmb3JtLXdyYXBwZWQuCisgICAg
VmVjdG9yPEFYUHJvcGVydHlDaGFuZ2U+IG1fcGVuZGluZ1Byb3BlcnR5Q2hhbmdlcyBXVEZfR1VB
UkRFRF9CWV9MT0NLKG1fY2hhbmdlTG9nTG9jayk7CisgICAgVmVjdG9yPEFYSUQ+IG1fcGVuZGlu
Z05vZGVSZW1vdmFscyBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fY2hhbmdlTG9nTG9jayk7IC8vIE5v
ZGVzIHRvIGJlIHJlbW92ZWQgZnJvbSB0aGUgdHJlZS4KKyAgICBWZWN0b3I8QVhJRD4gbV9wZW5k
aW5nU3VidHJlZVJlbW92YWxzIFdURl9HVUFSREVEX0JZX0xPQ0sobV9jaGFuZ2VMb2dMb2NrKTsg
Ly8gTm9kZXMgd2hvc2Ugc3VidHJlZXMgYXJlIHRvIGJlIHJlbW92ZWQgZnJvbSB0aGUgdHJlZS4K
KyAgICBWZWN0b3I8c3RkOjpwYWlyPEFYSUQsIFZlY3RvcjxBWElEPj4+IG1fcGVuZGluZ0NoaWxk
cmVuVXBkYXRlcyBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fY2hhbmdlTG9nTG9jayk7CisgICAgQVhJ
RCBtX3BlbmRpbmdGb2N1c2VkTm9kZUlEIFdURl9HVUFSREVEX0JZX0xPQ0sobV9jaGFuZ2VMb2dM
b2NrKSB7IEludmFsaWRBWElEIH07CiAgICAgQVhJRCBtX2ZvY3VzZWROb2RlSUQgeyBJbnZhbGlk
QVhJRCB9OwotICAgIExvY2sgbV9jaGFuZ2VMb2dMb2NrOworICAgIENoZWNrZWRMb2NrIG1fY2hh
bmdlTG9nTG9jazsKIH07CiAKIGlubGluZSBBWE9iamVjdENhY2hlKiBBWElzb2xhdGVkVHJlZTo6
YXhPYmplY3RDYWNoZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9BYm9ydGFibGVUYXNrUXVldWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Fib3J0YWJs
ZVRhc2tRdWV1ZS5oCmluZGV4IDgyNjk5ZGU2MGYwNTY1MWQ2YzcwODE2MWE4YTM4YWM3MTkyOWE2
NmMuLmY4NDkxZjAxMmU1ZDY2ODI2MGM1MDM3ZDQ5ZGY4ZDY3MGY4ZjU5ZjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Fib3J0YWJsZVRhc2tRdWV1ZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0Fib3J0YWJsZVRhc2tRdWV1ZS5oCkBAIC0yMCwxMCArMjAsMTAg
QEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlIDx3dGYvQ29uZGl0aW9uLmg+CisjaW5jbHVk
ZSA8d3RmL0NoZWNrZWRDb25kaXRpb24uaD4KKyNpbmNsdWRlIDx3dGYvQ2hlY2tlZExvY2suaD4K
ICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KLSNpbmNs
dWRlIDx3dGYvTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAjaW5jbHVkZSA8d3Rm
L1N0ZExpYkV4dHJhcy5oPgogCkBAIC03Myw3ICs3Myw3IEBAIHB1YmxpYzoKICAgICB+QWJvcnRh
YmxlVGFza1F1ZXVlKCkKICAgICB7CiAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0g
ICAgICAgIEFTU0VSVCghbV9tdXRleC5pc0hlbGQoKSk7CisgICAgICAgIEFTU0VSVCghbV9sb2Nr
LmlzSGVsZCgpKTsKICAgICAgICAgQVNTRVJUKG1fY2hhbm5lbC5pc0VtcHR5KCkpOwogICAgIH0K
IApAQCAtOTQsNyArOTQsNyBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CiAKICAgICAgICAgewotICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbXV0ZXggfTsK
KyAgICAgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKICAgICAgICAgICAgIG1fYWJv
cnRpbmcgPSB0cnVlOwogICAgICAgICAgICAgY2FuY2VsQWxsVGFza3MoKTsKICAgICAgICAgfQpA
QCAtMTA4LDcgKzEwOCw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CiAKLSAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbXV0ZXggfTsKKyAgICAgICAg
TG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogICAgICAgICBBU1NFUlQobV9hYm9ydGluZyk7CiAg
ICAgICAgIG1fYWJvcnRpbmcgPSBmYWxzZTsKICAgICB9CkBAIC0xMjMsNyArMTIzLDcgQEAgcHVi
bGljOgogICAgIHsKICAgICAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAKLSAgICAgICAg
TG9ja2VyIGxvY2tlciB7IG1fbXV0ZXggfTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9j
ayB9OwogICAgICAgICBpZiAobV9hYm9ydGluZykKICAgICAgICAgICAgIHJldHVybjsKIApAQCAt
MTQzLDE5ICsxNDMsMTkgQEAgcHVibGljOgogICAgICAgICAvLyBEb24ndCBkZWFkbG9jayB0aGUg
bWFpbiB0aHJlYWQgd2l0aCBpdHNlbGYuCiAgICAgICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkp
OwogCi0gICAgICAgIExvY2tlciBsb2NrZXIgeyBtX211dGV4IH07CisgICAgICAgIExvY2tlciBs
b2NrZXIgeyBtX2xvY2sgfTsKICAgICAgICAgaWYgKG1fYWJvcnRpbmcpCiAgICAgICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlvbmFsPFI+IHJlc3BvbnNlID0gV1RG
OjpudWxsb3B0OwogICAgICAgICBwb3N0VGFzayhbdGhpcywgJnJlc3BvbnNlLCAmbWFpblRocmVh
ZFRhc2tIYW5kbGVyXSgpIHsKICAgICAgICAgICAgIFIgcmVzcG9uc2VWYWx1ZSA9IG1haW5UaHJl
YWRUYXNrSGFuZGxlcigpOwotICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbXV0ZXggfTsK
KyAgICAgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKICAgICAgICAgICAgIGlmICgh
bV9hYm9ydGluZykKICAgICAgICAgICAgICAgICByZXNwb25zZSA9IFdURk1vdmUocmVzcG9uc2VW
YWx1ZSk7CiAgICAgICAgICAgICBtX2Fib3J0ZWRPclJlc3BvbnNlU2V0Lm5vdGlmeUFsbCgpOwog
ICAgICAgICB9KTsKLSAgICAgICAgbV9hYm9ydGVkT3JSZXNwb25zZVNldC53YWl0KG1fbXV0ZXgs
IFt0aGlzLCAmcmVzcG9uc2VdKCkgeworICAgICAgICBtX2Fib3J0ZWRPclJlc3BvbnNlU2V0Lndh
aXQobV9sb2NrLCBbdGhpcywgJnJlc3BvbnNlXSgpIHsKICAgICAgICAgICAgIHJldHVybiBtX2Fi
b3J0aW5nIHx8IHJlc3BvbnNlOwogICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuIHJlc3BvbnNl
OwpAQCAtMTk3LDEwICsxOTcsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGlmIChpc0NhbmNl
bGxlZCgpKQogICAgICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICAgICAgTG9ja2VyIGxv
Y2sgeyBtX3Rhc2tRdWV1ZS0+bV9tdXRleCB9OwotICAgICAgICAgICAgQVNTRVJUKHRoaXMgPT0g
bV90YXNrUXVldWUtPm1fY2hhbm5lbC5maXJzdCgpLnB0cigpKTsKLSAgICAgICAgICAgIG1fdGFz
a1F1ZXVlLT5tX2NoYW5uZWwucmVtb3ZlRmlyc3QoKTsKLSAgICAgICAgICAgIGxvY2sudW5sb2Nr
RWFybHkoKTsKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBMb2NrZXIgbG9jayB7IG1f
dGFza1F1ZXVlLT5tX2xvY2sgfTsKKyAgICAgICAgICAgICAgICBBU1NFUlQodGhpcyA9PSBtX3Rh
c2tRdWV1ZS0+bV9jaGFubmVsLmZpcnN0KCkucHRyKCkpOworICAgICAgICAgICAgICAgIG1fdGFz
a1F1ZXVlLT5tX2NoYW5uZWwucmVtb3ZlRmlyc3QoKTsKKyAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIG1fdGFza0NhbGxiYWNrKCk7CiAgICAgICAgIH0KIApAQCAtMjEzLDI3ICsyMTQsMjcgQEAg
cHJpdmF0ZToKICAgICAgICAgeyB9CiAgICAgfTsKIAotICAgIHZvaWQgcG9zdFRhc2soV1RGOjpG
dW5jdGlvbjx2b2lkKCk+JiYgY2FsbGJhY2spCisgICAgdm9pZCBwb3N0VGFzayhXVEY6OkZ1bmN0
aW9uPHZvaWQoKT4mJiBjYWxsYmFjaykgV1RGX1JFUVVJUkVTX0xPQ0sobV9sb2NrKQogICAgIHsK
LSAgICAgICAgQVNTRVJUKG1fbXV0ZXguaXNIZWxkKCkpOworICAgICAgICBBU1NFUlQobV9sb2Nr
LmlzSGVsZCgpKTsKICAgICAgICAgUmVmPFRhc2s+IHRhc2sgPSBUYXNrOjpjcmVhdGUodGhpcywg
V1RGTW92ZShjYWxsYmFjaykpOwogICAgICAgICBtX2NoYW5uZWwuYXBwZW5kKHRhc2suY29weVJl
ZigpKTsKICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt0YXNrID0gV1RGTW92ZSh0
YXNrKV0oKSB7IHRhc2stPmRpc3BhdGNoKCk7IH0pOwogICAgIH0KIAotICAgIHZvaWQgY2FuY2Vs
QWxsVGFza3MoKQorICAgIHZvaWQgY2FuY2VsQWxsVGFza3MoKSBXVEZfUkVRVUlSRVNfTE9DSyht
X2xvY2spCiAgICAgewogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgICAgICBB
U1NFUlQobV9tdXRleC5pc0hlbGQoKSk7CisgICAgICAgIEFTU0VSVChtX2xvY2suaXNIZWxkKCkp
OwogICAgICAgICBmb3IgKFJlZjxUYXNrPiYgdGFzayA6IG1fY2hhbm5lbCkKICAgICAgICAgICAg
IHRhc2stPmNhbmNlbCgpOwogICAgICAgICBtX2NoYW5uZWwuY2xlYXIoKTsKICAgICB9CiAKLSAg
ICBib29sIG1fYWJvcnRpbmcgeyBmYWxzZSB9OwotICAgIExvY2sgbV9tdXRleDsKLSAgICBDb25k
aXRpb24gbV9hYm9ydGVkT3JSZXNwb25zZVNldDsKLSAgICBXVEY6OkRlcXVlPFJlZjxUYXNrPj4g
bV9jaGFubmVsOworICAgIGJvb2wgbV9hYm9ydGluZyBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fbG9j
aykgeyBmYWxzZSB9OworICAgIENoZWNrZWRMb2NrIG1fbG9jazsKKyAgICBDaGVja2VkQ29uZGl0
aW9uIG1fYWJvcnRlZE9yUmVzcG9uc2VTZXQ7CisgICAgV1RGOjpEZXF1ZTxSZWY8VGFzaz4+IG1f
Y2hhbm5lbCBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fbG9jayk7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2Nv
YS9BdWRpb0Rlc3RpbmF0aW9uQ29jb2EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vY29jb2EvQXVkaW9EZXN0aW5hdGlvbkNvY29hLmNwcAppbmRleCBjMGUwOGNhOTU2ZTVlODU0
MDc5MGI1YmM3NGEzOWZlNmE0OWM3MjM2Li4zOTJjMzYxNDA0ZmMyYzk1MGViYjkzODg5YTYyOWNi
NWEzNzFlNDJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2Nv
YS9BdWRpb0Rlc3RpbmF0aW9uQ29jb2EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL2NvY29hL0F1ZGlvRGVzdGluYXRpb25Db2NvYS5jcHAKQEAgLTIxOSwxMCArMjE5LDEw
IEBAIE9TU3RhdHVzIEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6cmVuZGVyKGRvdWJsZSBzYW1wbGVU
aW1lLCB1aW50NjRfdCBob3N0VGltZSwgVUluCiAgICAgfQogCiAgICAgLy8gV2hlbiB0aGVyZSBp
cyBhIEF1ZGlvV29ya2xldCwgd2UgZG8gcmVuZGVyaW5nIG9uIHRoZSBBdWRpb1dvcmtsZXRUaHJl
YWQuCi0gICAgYXV0byBsb2NrZXIgPSB0cnlIb2xkTG9jayhtX2Rpc3BhdGNoVG9SZW5kZXJUaHJl
YWRMb2NrKTsKLSAgICBpZiAoIWxvY2tlcikKKyAgICBpZiAoIW1fZGlzcGF0Y2hUb1JlbmRlclRo
cmVhZExvY2sudHJ5TG9jaygpKQogICAgICAgICByZXR1cm4gLTE7CiAKKyAgICBMb2NrZXIgbG9j
a2VyIHsgQWRvcHRMb2NrVGFnIHsgfSwgbV9kaXNwYXRjaFRvUmVuZGVyVGhyZWFkTG9jayB9Owog
ICAgIGlmICghbV9kaXNwYXRjaFRvUmVuZGVyVGhyZWFkKQogICAgICAgICByZW5kZXJPblJlbmRl
cmluZ1RoZWFkSWZQbGF5aW5nKGZyYW1lc1RvUmVuZGVyKTsKICAgICBlbHNlIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvRGVzdGluYXRpb25D
b2NvYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9EZXN0aW5h
dGlvbkNvY29hLmgKaW5kZXggNjk5MDUzNGE1M2IzY2EyYTUxMTc3MWJiMzRhMzk2M2EyMjJlMmQ0
YS4uOWMzYmQ3YTRmOTc0NjVjOTFiY2UzNjM1N2E4NzNkOGIwYzBmYmIzMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9EZXN0aW5hdGlvbkNvY29h
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9EZXN0aW5h
dGlvbkNvY29hLmgKQEAgLTkxLDggKzkxLDggQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8TXVsdGlDaGFubmVsUmVzYW1wbGVyPiBtX3Jlc2FtcGxlcjsKICAgICBBdWRpb0lPUG9zaXRp
b24gbV9vdXRwdXRUaW1lc3RhbXA7CiAKLSAgICBMb2NrIG1fZGlzcGF0Y2hUb1JlbmRlclRocmVh
ZExvY2s7Ci0gICAgRnVuY3Rpb248dm9pZChGdW5jdGlvbjx2b2lkKCk+JiYpPiBtX2Rpc3BhdGNo
VG9SZW5kZXJUaHJlYWQ7CisgICAgQ2hlY2tlZExvY2sgbV9kaXNwYXRjaFRvUmVuZGVyVGhyZWFk
TG9jazsKKyAgICBGdW5jdGlvbjx2b2lkKEZ1bmN0aW9uPHZvaWQoKT4mJik+IG1fZGlzcGF0Y2hU
b1JlbmRlclRocmVhZCBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fZGlzcGF0Y2hUb1JlbmRlclRocmVh
ZExvY2spOwogCiAgICAgZmxvYXQgbV9jb250ZXh0U2FtcGxlUmF0ZTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25H
U3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRp
b0Rlc3RpbmF0aW9uR1N0cmVhbWVyLmgKaW5kZXggZmZkM2U4MGU1MDZmZmU5Zjc1YWQwYTg1MDA1
NzFjM2Q2YTBlNjc5ZC4uODQwZjBhNzFlOWMxNTcwZDc3NDZkNDIyMTkxYWEyOGRiYmNiMTcyYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlv
RGVzdGluYXRpb25HU3RyZWFtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5oCkBAIC01OCw4ICs1OCw2IEBA
IHByaXZhdGU6CiAgICAgR1JlZlB0cjxHc3RFbGVtZW50PiBtX3NyYzsKICAgICBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wpPiBtX3N0YXJ0dXBDb21wbGV0aW9uSGFuZGxlcjsKICAgICBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiBtX3N0b3BDb21wbGV0aW9uSGFuZGxlcjsKLSAgICBM
b2NrIG1fc2V0U3RhdGVMb2NrOwotICAgIENvbmRpdGlvbiBtX3NldFN0YXRlQ29uZGl0aW9uOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvU291cmNlUHJvdmlkZXJHU3RyZWFtZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvU291cmNlUHJv
dmlkZXJHU3RyZWFtZXIuY3BwCmluZGV4IDY5MGMxZGI5NzU5Mjk0ZTRjYjA3NDQ0MDM0MTFiZjlk
NTY1ZTJhNmEuLmY3NzVhMzJmZDQ3ODAyZWU1Mzg4NTcxNjNlZDc3OWExMjEzOGNkNDcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb1NvdXJj
ZVByb3ZpZGVyR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9nc3RyZWFtZXIvQXVkaW9Tb3VyY2VQcm92aWRlckdTdHJlYW1lci5jcHAKQEAgLTE1OSw5ICsx
NTksMTAgQEAgdm9pZCBBdWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVyOjpjb25maWd1cmVBdWRp
b0JpbihHc3RFbGVtZW50KiBhdWRpb0JpbiwgR3N0RWwKIHZvaWQgQXVkaW9Tb3VyY2VQcm92aWRl
ckdTdHJlYW1lcjo6cHJvdmlkZUlucHV0KEF1ZGlvQnVzKiBidXMsIHNpemVfdCBmcmFtZXNUb1By
b2Nlc3MpCiB7CiAgICAgR1NUX1RSQUNFKCJGZXRjaGluZyBidWZmZXJzIGZyb20gYWRhcHRlcnMi
KTsKLSAgICBhdXRvIGxvY2tlciA9IHRyeUhvbGRMb2NrKG1fYWRhcHRlck11dGV4KTsKLSAgICBp
ZiAoIWxvY2tlcikKKyAgICBpZiAoIW1fYWRhcHRlckxvY2sudHJ5TG9jaygpKQogICAgICAgICBy
ZXR1cm47CisKKyAgICBMb2NrZXIgbG9ja2VyIHsgQWRvcHRMb2NrVGFnIHsgfSwgbV9hZGFwdGVy
TG9jayB9OwogICAgIGZvciAoYXV0byYgaXQgOiBtX2FkYXB0ZXJzKQogICAgICAgICBjb3B5R1N0
cmVhbWVyQnVmZmVyc1RvQXVkaW9DaGFubmVsKGl0LnZhbHVlLmdldCgpLCBidXMsIGl0LmtleSAt
IDEsIGZyYW1lc1RvUHJvY2Vzcyk7CiB9CkBAIC0xODIsNyArMTgzLDcgQEAgR3N0Rmxvd1JldHVy
biBBdWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVyOjpoYW5kbGVTYW1wbGUoR3N0QXBwU2luayog
c2luaywgYm9vbAogCiAgICAgR1NUX1RSQUNFKCJTdG9yaW5nIGF1ZGlvIHNhbXBsZSAlIiBHU1Rf
UFRSX0ZPUk1BVCwgc2FtcGxlLmdldCgpKTsKICAgICB7Ci0gICAgICAgIExvY2tlciBsb2NrZXIg
eyBtX2FkYXB0ZXJNdXRleCB9OworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9hZGFwdGVyTG9j
ayB9OwogICAgICAgICBHUXVhcmsgcXVhcmsgPSBnX3F1YXJrX2Zyb21fc3RhdGljX3N0cmluZygi
Y2hhbm5lbC1pZCIpOwogICAgICAgICBpbnQgY2hhbm5lbElkID0gR1BPSU5URVJfVE9fSU5UKGdf
b2JqZWN0X2dldF9xZGF0YShHX09CSkVDVChzaW5rKSwgcXVhcmspKTsKICAgICAgICAgR1NUX0RF
QlVHKCJDaGFubmVsIElEOiAlZCIsIGNoYW5uZWxJZCk7CkBAIC0zODQsNyArMzg1LDcgQEAgdm9p
ZCBBdWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVyOjpkZWludGVybGVhdmVQYWRzQ29uZmlndXJl
ZCgpCiAKIHZvaWQgQXVkaW9Tb3VyY2VQcm92aWRlckdTdHJlYW1lcjo6Y2xlYXJBZGFwdGVycygp
CiB7Ci0gICAgTG9ja2VyIGxvY2tlciB7IG1fYWRhcHRlck11dGV4IH07CisgICAgTG9ja2VyIGxv
Y2tlciB7IG1fYWRhcHRlckxvY2sgfTsKICAgICBmb3IgKGF1dG8mIGFkYXB0ZXIgOiBtX2FkYXB0
ZXJzLnZhbHVlcygpKQogICAgICAgICBnc3RfYWRhcHRlcl9jbGVhcihhZGFwdGVyLmdldCgpKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9B
dWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9nc3RyZWFtZXIvQXVkaW9Tb3VyY2VQcm92aWRlckdTdHJlYW1lci5oCmluZGV4IGI4ZDg0
N2QyZDJmYzY5MzdlMzA1NGQyODY3NjM3NzdiOGEyNjFjZDcuLjVhM2FmNmNmODkzMGMyNzFjYzQx
MGUzODYxMTFhY2U5OGQ0ZWMxZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL2dzdHJlYW1lci9BdWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvU291cmNlUHJvdmlkZXJH
U3RyZWFtZXIuaApAQCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUgIkdSZWZQdHJHU3RyZWFtZXIu
aCIKICNpbmNsdWRlICJNYWluVGhyZWFkTm90aWZpZXIuaCIKICNpbmNsdWRlIDxnc3QvZ3N0Lmg+
CisjaW5jbHVkZSA8d3RmL0NoZWNrZWRMb2NrLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4K
ICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KIApAQCAtODEsMTEgKzgyLDExIEBAIHByaXZh
dGU6CiAgICAgR1JlZlB0cjxHc3RFbGVtZW50PiBtX2F1ZGlvU2lua0JpbjsKICAgICBXZWFrUHRy
PEF1ZGlvU291cmNlUHJvdmlkZXJDbGllbnQ+IG1fY2xpZW50OwogICAgIGludCBtX2RlaW50ZXJs
ZWF2ZVNvdXJjZVBhZHMgeyAwIH07Ci0gICAgSGFzaE1hcDxpbnQsIEdSZWZQdHI8R3N0QWRhcHRl
cj4+IG1fYWRhcHRlcnM7CisgICAgSGFzaE1hcDxpbnQsIEdSZWZQdHI8R3N0QWRhcHRlcj4+IG1f
YWRhcHRlcnMgV1RGX0dVQVJERURfQllfTE9DSyhtX2FkYXB0ZXJMb2NrKTsKICAgICB1bnNpZ25l
ZCBsb25nIG1fZGVpbnRlcmxlYXZlUGFkQWRkZWRIYW5kbGVySWQgeyAwIH07CiAgICAgdW5zaWdu
ZWQgbG9uZyBtX2RlaW50ZXJsZWF2ZU5vTW9yZVBhZHNIYW5kbGVySWQgeyAwIH07CiAgICAgdW5z
aWduZWQgbG9uZyBtX2RlaW50ZXJsZWF2ZVBhZFJlbW92ZWRIYW5kbGVySWQgeyAwIH07Ci0gICAg
TG9jayBtX2FkYXB0ZXJNdXRleDsKKyAgICBDaGVja2VkTG9jayBtX2FkYXB0ZXJMb2NrOwogfTsK
IAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVy
L1dlYktpdFdlYkF1ZGlvU291cmNlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL2dzdHJlYW1lci9XZWJLaXRXZWJBdWRpb1NvdXJjZUdTdHJlYW1lci5jcHAKaW5k
ZXggZmQzNDRmMDI1ZmFlMjljNGQ3NDk5MTUzZDhiNjQyOGI1ODJmOGMyOS4uNmVmODM1MjgzZmYz
NTNhOGZlMTIyN2IwNzBhMWRkZDU2ZDRhM2Y4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL1dlYktpdFdlYkF1ZGlvU291cmNlR1N0cmVhbWVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvV2ViS2l0V2Vi
QXVkaW9Tb3VyY2VHU3RyZWFtZXIuY3BwCkBAIC04MSw4ICs4MSw4IEBAIHN0cnVjdCBfV2ViS2l0
V2ViQXVkaW9TcmNQcml2YXRlIHsKIAogICAgIGJvb2wgaGFzUmVuZGVyZWRBdWRpYmxlRnJhbWUg
eyBmYWxzZSB9OwogCi0gICAgTG9jayBkaXNwYXRjaFRvUmVuZGVyVGhyZWFkTG9jazsKLSAgICBG
dW5jdGlvbjx2b2lkKEZ1bmN0aW9uPHZvaWQoKT4mJik+IGRpc3BhdGNoVG9SZW5kZXJUaHJlYWRG
dW5jdGlvbjsKKyAgICBDaGVja2VkTG9jayBkaXNwYXRjaFRvUmVuZGVyVGhyZWFkTG9jazsKKyAg
ICBGdW5jdGlvbjx2b2lkKEZ1bmN0aW9uPHZvaWQoKT4mJik+IGRpc3BhdGNoVG9SZW5kZXJUaHJl
YWRGdW5jdGlvbiBXVEZfR1VBUkRFRF9CWV9MT0NLKGRpc3BhdGNoVG9SZW5kZXJUaHJlYWRMb2Nr
KTsKIAogICAgIGJvb2wgZGlzcGF0Y2hEb25lIFdURl9HVUFSREVEX0JZX0xPQ0soZGlzcGF0Y2hM
b2NrKTsKICAgICBDaGVja2VkTG9jayBkaXNwYXRjaExvY2s7CkBAIC00MDgsMTAgKzQwOCwxMSBA
QCBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJBdWRpb1NyY1JlbmRlckl0ZXJhdGlvbihXZWJLaXRXZWJB
dWRpb1NyYyogc3JjKQogICAgICAgICBwcml2LT5kaXNwYXRjaERvbmUgPSBmYWxzZTsKICAgICB9
CiAKLSAgICBhdXRvIGxvY2tlciA9IHRyeUhvbGRMb2NrKHByaXYtPmRpc3BhdGNoVG9SZW5kZXJU
aHJlYWRMb2NrKTsKLSAgICBpZiAoIWxvY2tlcikKKyAgICBpZiAoIXByaXYtPmRpc3BhdGNoVG9S
ZW5kZXJUaHJlYWRMb2NrLnRyeUxvY2soKSkKICAgICAgICAgcmV0dXJuOwogCisgICAgTG9ja2Vy
IGxvY2tlciB7IEFkb3B0TG9ja1RhZyB7IH0sIHByaXYtPmRpc3BhdGNoVG9SZW5kZXJUaHJlYWRM
b2NrIH07CisKICAgICBpZiAoIXByaXYtPmRpc3BhdGNoVG9SZW5kZXJUaHJlYWRGdW5jdGlvbikK
ICAgICAgICAgd2ViS2l0V2ViQXVkaW9TcmNSZW5kZXJBbmRQdXNoRnJhbWVzKEdSZWZQdHI8R3N0
RWxlbWVudD4oR1NUX0VMRU1FTlRfQ0FTVChzcmMpKSwgV1RGTW92ZSgqY2hhbm5lbEJ1ZmZlckxp
c3QpKTsKICAgICBlbHNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwCmluZGV4IDQzNjk2ODhlMTlhNDI3ZWM4
YWU0ZjYxZDUwMjdhZTczYjJlNGZhZjEuLmY2MGVlODkxY2E5M2Q5N2I2NjliNThiMzU5OTg1MzI2
ZjQ2ZTVhMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcApAQCAtMTY3LDkgKzE2Nyw5IEBAIHB1YmxpYzoK
IHByaXZhdGU6CiAgICAgaW5saW5lIHZvaWQqIGNhbGxiYWNrQ29udGV4dCgpIGNvbnN0IHsgcmV0
dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KG1fb2JqZWN0SUQpOyB9CiAKLSAgICBzdGF0aWMg
TG9jayYgbWFwTG9jaygpOwotICAgIHN0YXRpYyBIYXNoTWFwPHVpbnRwdHJfdCwgQVZGV3JhcHBl
cio+JiBtYXAoKTsKLSAgICBzdGF0aWMgQVZGV3JhcHBlciogYXZmV3JhcHBlckZvckNhbGxiYWNr
Q29udGV4dCh2b2lkKik7CisgICAgc3RhdGljIExvY2sgbWFwTG9jazsKKyAgICBzdGF0aWMgSGFz
aE1hcDx1aW50cHRyX3QsIEFWRldyYXBwZXIqPiYgbWFwKCkgV1RGX1JFUVVJUkVTX0xPQ0sobWFw
TG9jayk7CisgICAgc3RhdGljIEFWRldyYXBwZXIqIGF2ZldyYXBwZXJGb3JDYWxsYmFja0NvbnRl
eHQodm9pZCopIFdURl9SRVFVSVJFU19MT0NLKG1hcExvY2spOwogICAgIHZvaWQgYWRkVG9NYXAo
KTsKICAgICB2b2lkIHJlbW92ZUZyb21NYXAoKSBjb25zdDsKICNpZiBIQVZFKEFWRk9VTkRBVElP
Tl9MT0FERVJfREVMRUdBVEUpCkBAIC0xNDE2LDEyICsxNDE2LDcgQEAgQVZGV3JhcHBlcjo6fkFW
RldyYXBwZXIoKQogICAgIG1fYXZQbGF5ZXIgPSAwOwogfQogCi1Mb2NrJiBBVkZXcmFwcGVyOjpt
YXBMb2NrKCkKLXsKLSAgICBzdGF0aWMgTG9jayBtYXBMb2NrOwotICAgIHJldHVybiBtYXBMb2Nr
OwotfQotCitDaGVja2VkTG9jayBBVkZXcmFwcGVyOjptYXBMb2NrOwogSGFzaE1hcDx1aW50cHRy
X3QsIEFWRldyYXBwZXIqPiYgQVZGV3JhcHBlcjo6bWFwKCkKIHsKICAgICBzdGF0aWMgSGFzaE1h
cDx1aW50cHRyX3QsIEFWRldyYXBwZXIqPiYgbWFwID0gKm5ldyBIYXNoTWFwPHVpbnRwdHJfdCwg
QVZGV3JhcHBlcio+OwpAQCAtMTQzMCw3ICsxNDI1LDcgQEAgSGFzaE1hcDx1aW50cHRyX3QsIEFW
RldyYXBwZXIqPiYgQVZGV3JhcHBlcjo6bWFwKCkKIAogdm9pZCBBVkZXcmFwcGVyOjphZGRUb01h
cCgpCiB7Ci0gICAgTG9ja2VyIGxvY2tlciB7IG1hcExvY2soKSB9OworICAgIExvY2tlciBsb2Nr
ZXIgeyBtYXBMb2NrIH07CiAgICAgCiAgICAgLy8gSGFzaE1hcCBkb2Vzbid0IGxpa2UgYSBrZXkg
b2YgMCwgYW5kIGFsc28gbWFrZSBzdXJlIHdlIGFyZW4ndAogICAgIC8vIHVzaW5nIGFuIG9iamVj
dCBJRCB0aGF0J3MgYWxyZWFkeSBpbiB1c2UuCkBAIC0xNDQ2LDEzICsxNDQxLDEzIEBAIHZvaWQg
QVZGV3JhcHBlcjo6cmVtb3ZlRnJvbU1hcCgpIGNvbnN0CiB7CiAgICAgTE9HKE1lZGlhLCAiQVZG
V3JhcHBlcjo6cmVtb3ZlRnJvbU1hcCglcCAlZCkiLCB0aGlzLCBtX29iamVjdElEKTsKIAotICAg
IExvY2tlciBsb2NrZXIgeyBtYXBMb2NrKCkgfTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbWFwTG9j
ayB9OwogICAgIG1hcCgpLnJlbW92ZShtX29iamVjdElEKTsKIH0KIAogQVZGV3JhcHBlciogQVZG
V3JhcHBlcjo6YXZmV3JhcHBlckZvckNhbGxiYWNrQ29udGV4dCh2b2lkKiBjb250ZXh0KQogewot
ICAgIC8vIEFzc3VtZXMgY2FsbGVyIGhhcyBsb2NrZWQgbWFwTG9jaygpLgorICAgIC8vIEFzc3Vt
ZXMgY2FsbGVyIGhhcyBsb2NrZWQgbWFwTG9jay4KICAgICBIYXNoTWFwPHVpbnRwdHJfdCwgQVZG
V3JhcHBlcio+OjppdGVyYXRvciBpdCA9IG1hcCgpLmZpbmQocmVpbnRlcnByZXRfY2FzdDx1aW50
cHRyX3Q+KGNvbnRleHQpKTsKICAgICBpZiAoaXQgPT0gbWFwKCkuZW5kKCkpCiAgICAgICAgIHJl
dHVybiAwOwpAQCAtMTY1MCw3ICsxNjQ1LDcgQEAgdm9pZCBBVkZXcmFwcGVyOjpjcmVhdGVQbGF5
ZXJJdGVtKCkKIAogdm9pZCBBVkZXcmFwcGVyOjpwZXJpb2RpY1RpbWVPYnNlcnZlckNhbGxiYWNr
KEFWQ0ZQbGF5ZXJSZWYsIENNVGltZSBjbVRpbWUsIHZvaWQqIGNvbnRleHQpCiB7Ci0gICAgTG9j
a2VyIGxvY2tlciB7IG1hcExvY2soKSB9OworICAgIExvY2tlciBsb2NrZXIgeyBtYXBMb2NrIH07
CiAgICAgQVZGV3JhcHBlciogc2VsZiA9IGF2ZldyYXBwZXJGb3JDYWxsYmFja0NvbnRleHQoY29u
dGV4dCk7CiAgICAgaWYgKCFzZWxmKSB7CiAgICAgICAgIExPRyhNZWRpYSwgIkFWRldyYXBwZXI6
OnBlcmlvZGljVGltZU9ic2VydmVyQ2FsbGJhY2sgaW52b2tlZCBmb3IgZGVsZXRlZCBBVkZXcmFw
cGVyICVkIiwgcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGNvbnRleHQpKTsKQEAgLTE2ODIs
NyArMTY3Nyw3IEBAIHZvaWQgQVZGV3JhcHBlcjo6cHJvY2Vzc05vdGlmaWNhdGlvbih2b2lkKiBj
b250ZXh0KQogCiAgICAgc3RkOjp1bmlxdWVfcHRyPE5vdGlmaWNhdGlvbkNhbGxiYWNrRGF0YT4g
bm90aWZpY2F0aW9uRGF0YSB7IHN0YXRpY19jYXN0PE5vdGlmaWNhdGlvbkNhbGxiYWNrRGF0YSo+
KGNvbnRleHQpIH07CiAKLSAgICBMb2NrZXIgbG9ja2VyIHsgbWFwTG9jaygpIH07CisgICAgTG9j
a2VyIGxvY2tlciB7IG1hcExvY2sgfTsKICAgICBBVkZXcmFwcGVyKiBzZWxmID0gYXZmV3JhcHBl
ckZvckNhbGxiYWNrQ29udGV4dChub3RpZmljYXRpb25EYXRhLT5tX2NvbnRleHQpOwogICAgIGlm
ICghc2VsZikgewogICAgICAgICBMT0coTWVkaWEsICJBVkZXcmFwcGVyOjpwcm9jZXNzTm90aWZp
Y2F0aW9uIGludm9rZWQgZm9yIGRlbGV0ZWQgQVZGV3JhcHBlciAlZCIsIHJlaW50ZXJwcmV0X2Nh
c3Q8dWludHB0cl90Pihjb250ZXh0KSk7CkBAIC0xNzM3LDcgKzE3MzIsNyBAQCB2b2lkIEFWRldy
YXBwZXI6Om5vdGlmaWNhdGlvbkNhbGxiYWNrKENGTm90aWZpY2F0aW9uQ2VudGVyUmVmLCB2b2lk
KiBvYnNlcnZlciwgQwogCiB2b2lkIEFWRldyYXBwZXI6OmxvYWRQbGF5YWJsZUNvbXBsZXRpb25D
YWxsYmFjayhBVkNGQXNzZXRSZWYsIHZvaWQqIGNvbnRleHQpCiB7Ci0gICAgTG9ja2VyIGxvY2tl
ciB7IG1hcExvY2soKSB9OworICAgIExvY2tlciBsb2NrZXIgeyBtYXBMb2NrIH07CiAgICAgQVZG
V3JhcHBlciogc2VsZiA9IGF2ZldyYXBwZXJGb3JDYWxsYmFja0NvbnRleHQoY29udGV4dCk7CiAg
ICAgaWYgKCFzZWxmKSB7CiAgICAgICAgIExPRyhNZWRpYSwgIkFWRldyYXBwZXI6OmxvYWRQbGF5
YWJsZUNvbXBsZXRpb25DYWxsYmFjayBpbnZva2VkIGZvciBkZWxldGVkIEFWRldyYXBwZXIgJWQi
LCByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oY29udGV4dCkpOwpAQCAtMTc2NCw3ICsxNzU5
LDcgQEAgdm9pZCBBVkZXcmFwcGVyOjpjaGVja1BsYXlhYmlsaXR5KCkKIAogdm9pZCBBVkZXcmFw
cGVyOjpsb2FkTWV0YWRhdGFDb21wbGV0aW9uQ2FsbGJhY2soQVZDRkFzc2V0UmVmLCB2b2lkKiBj
b250ZXh0KQogewotICAgIExvY2tlciBsb2NrZXIgeyBtYXBMb2NrKCkgfTsKKyAgICBMb2NrZXIg
bG9ja2VyIHsgbWFwTG9jayB9OwogICAgIEFWRldyYXBwZXIqIHNlbGYgPSBhdmZXcmFwcGVyRm9y
Q2FsbGJhY2tDb250ZXh0KGNvbnRleHQpOwogICAgIGlmICghc2VsZikgewogICAgICAgICBMT0co
TWVkaWEsICJBVkZXcmFwcGVyOjpsb2FkTWV0YWRhdGFDb21wbGV0aW9uQ2FsbGJhY2sgaW52b2tl
ZCBmb3IgZGVsZXRlZCBBVkZXcmFwcGVyICVkIiwgcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+
KGNvbnRleHQpKTsKQEAgLTE3ODQsNyArMTc3OSw3IEBAIHZvaWQgQVZGV3JhcHBlcjo6YmVnaW5M
b2FkaW5nTWV0YWRhdGEoKQogCiB2b2lkIEFWRldyYXBwZXI6OnNlZWtDb21wbGV0ZWRDYWxsYmFj
ayhBVkNGUGxheWVySXRlbVJlZiwgQm9vbGVhbiBmaW5pc2hlZCwgdm9pZCogY29udGV4dCkKIHsK
LSAgICBMb2NrZXIgbG9ja2VyIHsgbWFwTG9jaygpIH07CisgICAgTG9ja2VyIGxvY2tlciB7IG1h
cExvY2sgfTsKICAgICBBVkZXcmFwcGVyKiBzZWxmID0gYXZmV3JhcHBlckZvckNhbGxiYWNrQ29u
dGV4dChjb250ZXh0KTsKICAgICBpZiAoIXNlbGYpIHsKICAgICAgICAgTE9HKE1lZGlhLCAiQVZG
V3JhcHBlcjo6c2Vla0NvbXBsZXRlZENhbGxiYWNrIGludm9rZWQgZm9yIGRlbGV0ZWQgQVZGV3Jh
cHBlciAlZCIsIHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pihjb250ZXh0KSk7CkBAIC0xODI4
LDcgKzE4MjMsNyBAQCB2b2lkIEFWRldyYXBwZXI6OnByb2Nlc3NDdWUodm9pZCogY29udGV4dCkK
IAogICAgIHN0ZDo6dW5pcXVlX3B0cjxMZWdpYmxlT3V0cHV0RGF0YT4gbGVnaWJsZU91dHB1dERh
dGEocmVpbnRlcnByZXRfY2FzdDxMZWdpYmxlT3V0cHV0RGF0YSo+KGNvbnRleHQpKTsKIAotICAg
IExvY2tlciBsb2NrZXIgeyBtYXBMb2NrKCkgfTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbWFwTG9j
ayB9OwogICAgIEFWRldyYXBwZXIqIHNlbGYgPSBhdmZXcmFwcGVyRm9yQ2FsbGJhY2tDb250ZXh0
KGxlZ2libGVPdXRwdXREYXRhLT5tX2NvbnRleHQpOwogICAgIGlmICghc2VsZikgewogICAgICAg
ICBMT0coTWVkaWEsICJBVkZXcmFwcGVyOjpwcm9jZXNzQ3VlIGludm9rZWQgZm9yIGRlbGV0ZWQg
QVZGV3JhcHBlciAlZCIsIHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pihjb250ZXh0KSk7CkBA
IC0xODQ0LDcgKzE4MzksNyBAQCB2b2lkIEFWRldyYXBwZXI6OnByb2Nlc3NDdWUodm9pZCogY29u
dGV4dCkKIHZvaWQgQVZGV3JhcHBlcjo6bGVnaWJsZU91dHB1dENhbGxiYWNrKHZvaWQqIGNvbnRl
eHQsIEFWQ0ZQbGF5ZXJJdGVtTGVnaWJsZU91dHB1dFJlZiBsZWdpYmxlT3V0cHV0LCBDRkFycmF5
UmVmIGF0dHJpYnV0ZWRTdHJpbmdzLCBDRkFycmF5UmVmIG5hdGl2ZVNhbXBsZUJ1ZmZlcnMsIENN
VGltZSBpdGVtVGltZSkKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKLSAgICBMb2Nr
ZXIgbG9ja2VyIHsgbWFwTG9jaygpIH07CisgICAgTG9ja2VyIGxvY2tlciB7IG1hcExvY2sgfTsK
ICAgICBBVkZXcmFwcGVyKiBzZWxmID0gYXZmV3JhcHBlckZvckNhbGxiYWNrQ29udGV4dChjb250
ZXh0KTsKICAgICBpZiAoIXNlbGYpIHsKICAgICAgICAgTE9HKE1lZGlhLCAiQVZGV3JhcHBlcjo6
bGVnaWJsZU91dHB1dENhbGxiYWNrIGludm9rZWQgZm9yIGRlbGV0ZWQgQVZGV3JhcHBlciAlZCIs
IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pihjb250ZXh0KSk7CkBAIC0xODgzLDcgKzE4Nzgs
NyBAQCB2b2lkIEFWRldyYXBwZXI6OnByb2Nlc3NTaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVzb3Vy
Y2Uodm9pZCogY29udGV4dCkKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxMb2FkUmVxdWVzdERhdGE+
IGxvYWRSZXF1ZXN0RGF0YShyZWludGVycHJldF9jYXN0PExvYWRSZXF1ZXN0RGF0YSo+KGNvbnRl
eHQpKTsKIAotICAgIExvY2tlciBsb2NrZXIgeyBtYXBMb2NrKCkgfTsKKyAgICBMb2NrZXIgbG9j
a2VyIHsgbWFwTG9jayB9OwogICAgIEFWRldyYXBwZXIqIHNlbGYgPSBhdmZXcmFwcGVyRm9yQ2Fs
bGJhY2tDb250ZXh0KGxvYWRSZXF1ZXN0RGF0YS0+bV9jb250ZXh0KTsKICAgICBpZiAoIXNlbGYp
IHsKICAgICAgICAgTE9HKE1lZGlhLCAiQVZGV3JhcHBlcjo6cHJvY2Vzc1Nob3VsZFdhaXRGb3JM
b2FkaW5nT2ZSZXNvdXJjZSBpbnZva2VkIGZvciBkZWxldGVkIEFWRldyYXBwZXIgJWQiLCByZWlu
dGVycHJldF9jYXN0PHVpbnRwdHJfdD4oY29udGV4dCkpOwpAQCAtMTkzOCw3ICsxOTMzLDcgQEAg
Ym9vbCBBVkZXcmFwcGVyOjpzaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVzb3VyY2UoQVZDRkFzc2V0
UmVzb3VyY2VMb2FkaW5nUmVxdWVzdFIKIEJvb2xlYW4gQVZGV3JhcHBlcjo6cmVzb3VyY2VMb2Fk
ZXJTaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVxdWVzdGVkUmVzb3VyY2UoQVZDRkFzc2V0UmVzb3Vy
Y2VMb2FkZXJSZWYgcmVzb3VyY2VMb2FkZXIsIEFWQ0ZBc3NldFJlc291cmNlTG9hZGluZ1JlcXVl
c3RSZWYgbG9hZGluZ1JlcXVlc3QsIHZvaWQgKmNvbnRleHQpCiB7CiAgICAgQVNTRVJUKGRpc3Bh
dGNoX2dldF9tYWluX3F1ZXVlKCkgIT0gZGlzcGF0Y2hfZ2V0X2N1cnJlbnRfcXVldWUoKSk7Ci0g
ICAgTG9ja2VyIGxvY2tlciB7IG1hcExvY2soKSB9OworICAgIExvY2tlciBsb2NrZXIgeyBtYXBM
b2NrIH07CiAgICAgQVZGV3JhcHBlciogc2VsZiA9IGF2ZldyYXBwZXJGb3JDYWxsYmFja0NvbnRl
eHQoY29udGV4dCk7CiAgICAgaWYgKCFzZWxmKSB7CiAgICAgICAgIExPRyhNZWRpYSwgIkFWRldy
YXBwZXI6OnJlc291cmNlTG9hZGVyU2hvdWxkV2FpdEZvckxvYWRpbmdPZlJlcXVlc3RlZFJlc291
cmNlIGludm9rZWQgZm9yIGRlbGV0ZWQgQVZGV3JhcHBlciAlZCIsIHJlaW50ZXJwcmV0X2Nhc3Q8
dWludHB0cl90Pihjb250ZXh0KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9Db25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rp
b24uY3BwCmluZGV4IDQxMDg4NjBlOTZmMTlkNDIwYTVlMzM0NWI1ODc1NzEzMGQ0ZWM2NzguLjE2
NWM0NTYwNTIyY2Y4OTJkNWI1MTE0YmM0OWU0ZTgwNDQzYjAxNzYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3BwCkBAIC0xMDgsMTAgKzEwOCwxMCBAQCBwcml2YXRl
OgogICAgIEJpbmFyeVNlbWFwaG9yZSBtX3dhaXRGb3JTeW5jUmVwbHlTZW1hcGhvcmU7CiAKICAg
ICAvLyBQcm90ZWN0cyBtX2RpZFNjaGVkdWxlRGlzcGF0Y2hNZXNzYWdlc1dvcmtTZXQgYW5kIG1f
bWVzc2FnZXNUb0Rpc3BhdGNoV2hpbGVXYWl0aW5nRm9yU3luY1JlcGx5LgotICAgIExvY2sgbV9t
dXRleDsKKyAgICBDaGVja2VkTG9jayBtX2xvY2s7CiAKICAgICAvLyBUaGUgc2V0IG9mIGNvbm5l
Y3Rpb25zIGZvciB3aGljaCB3ZSd2ZSBzY2hlZHVsZWQgYSBjYWxsIHRvIGRpc3BhdGNoTWVzc2Fn
ZUFuZFJlc2V0RGlkU2NoZWR1bGVEaXNwYXRjaE1lc3NhZ2VzRm9yQ29ubmVjdGlvbi4KLSAgICBI
YXNoU2V0PFJlZlB0cjxDb25uZWN0aW9uPj4gbV9kaWRTY2hlZHVsZURpc3BhdGNoTWVzc2FnZXNX
b3JrU2V0OworICAgIEhhc2hTZXQ8UmVmUHRyPENvbm5lY3Rpb24+PiBtX2RpZFNjaGVkdWxlRGlz
cGF0Y2hNZXNzYWdlc1dvcmtTZXQgV1RGX0dVQVJERURfQllfTE9DSyhtX2xvY2spOwogCiAgICAg
c3RydWN0IENvbm5lY3Rpb25BbmRJbmNvbWluZ01lc3NhZ2UgewogICAgICAgICBSZWY8Q29ubmVj
dGlvbj4gY29ubmVjdGlvbjsKQEAgLTEyMyw3ICsxMjMsNyBAQCBwcml2YXRlOgogICAgICAgICB9
CiAgICAgfTsKICAgICBEZXF1ZTxDb25uZWN0aW9uQW5kSW5jb21pbmdNZXNzYWdlPiBtX21lc3Nh
Z2VzQmVpbmdEaXNwYXRjaGVkOyAvLyBPbmx5IHVzZWQgb24gdGhlIG1haW4gdGhyZWFkLgotICAg
IERlcXVlPENvbm5lY3Rpb25BbmRJbmNvbWluZ01lc3NhZ2U+IG1fbWVzc2FnZXNUb0Rpc3BhdGNo
V2hpbGVXYWl0aW5nRm9yU3luY1JlcGx5OworICAgIERlcXVlPENvbm5lY3Rpb25BbmRJbmNvbWlu
Z01lc3NhZ2U+IG1fbWVzc2FnZXNUb0Rpc3BhdGNoV2hpbGVXYWl0aW5nRm9yU3luY1JlcGx5IFdU
Rl9HVUFSREVEX0JZX0xPQ0sobV9sb2NrKTsKIH07CiAKIENvbm5lY3Rpb246OlN5bmNNZXNzYWdl
U3RhdGUmIENvbm5lY3Rpb246OlN5bmNNZXNzYWdlU3RhdGU6OnNpbmdsZXRvbigpCkBAIC0xNTEs
NyArMTUxLDcgQEAgdm9pZCBDb25uZWN0aW9uOjpTeW5jTWVzc2FnZVN0YXRlOjplbnF1ZXVlTWF0
Y2hpbmdNZXNzYWdlcyhDb25uZWN0aW9uJiBjb25uZWN0aW8KICAgICAgICAgfQogICAgICAgICBj
b25uZWN0aW9uQW5kTWVzc2FnZXMgPSBXVEZNb3ZlKHJlc3QpOwogICAgIH07Ci0gICAgTG9ja2Vy
IGxvY2tlciB7IG1fbXV0ZXggfTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAgICAg
ZW5xdWV1ZU1hdGNoaW5nTWVzc2FnZXNJbkNvbnRhaW5lcihtX21lc3NhZ2VzQmVpbmdEaXNwYXRj
aGVkKTsKICAgICBlbnF1ZXVlTWF0Y2hpbmdNZXNzYWdlc0luQ29udGFpbmVyKG1fbWVzc2FnZXNU
b0Rpc3BhdGNoV2hpbGVXYWl0aW5nRm9yU3luY1JlcGx5KTsKIH0KQEAgLTE3MSw3ICsxNzEsNyBA
QCBib29sIENvbm5lY3Rpb246OlN5bmNNZXNzYWdlU3RhdGU6OnByb2Nlc3NJbmNvbWluZ01lc3Nh
Z2UoQ29ubmVjdGlvbiYgY29ubmVjdGlvbgogCiAgICAgYm9vbCBzaG91bGREaXNwYXRjaDsKICAg
ICB7Ci0gICAgICAgIExvY2tlciBsb2NrZXIgeyBtX211dGV4IH07CisgICAgICAgIExvY2tlciBs
b2NrZXIgeyBtX2xvY2sgfTsKICAgICAgICAgc2hvdWxkRGlzcGF0Y2ggPSBtX2RpZFNjaGVkdWxl
RGlzcGF0Y2hNZXNzYWdlc1dvcmtTZXQuYWRkKCZjb25uZWN0aW9uKS5pc05ld0VudHJ5OwogICAg
ICAgICBBU1NFUlQoY29ubmVjdGlvbi5tX2luY29taW5nTWVzc2FnZXNMb2NrLmlzSGVsZCgpKTsK
ICAgICAgICAgaWYgKG1lc3NhZ2UtPnNob3VsZE1haW50YWluT3JkZXJpbmdXaXRoQXN5bmNNZXNz
YWdlcygpKSB7CkBAIC0xOTgsNyArMTk4LDcgQEAgdm9pZCBDb25uZWN0aW9uOjpTeW5jTWVzc2Fn
ZVN0YXRlOjpkaXNwYXRjaE1lc3NhZ2VzKEZ1bmN0aW9uPHZvaWQoTWVzc2FnZU5hbWUsIHUKICAg
ICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCiAgICAgewotICAgICAgICBMb2NrZXIgbG9j
a2VyIHsgbV9tdXRleCB9OworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAgICAg
ICAgIGlmIChtX21lc3NhZ2VzQmVpbmdEaXNwYXRjaGVkLmlzRW1wdHkoKSkKICAgICAgICAgICAg
IG1fbWVzc2FnZXNCZWluZ0Rpc3BhdGNoZWQgPSBzdGQ6OmV4Y2hhbmdlKG1fbWVzc2FnZXNUb0Rp
c3BhdGNoV2hpbGVXYWl0aW5nRm9yU3luY1JlcGx5LCB7IH0pOwogICAgICAgICBlbHNlIHsKQEAg
LTIyMCw3ICsyMjAsNyBAQCB2b2lkIENvbm5lY3Rpb246OlN5bmNNZXNzYWdlU3RhdGU6OmRpc3Bh
dGNoTWVzc2FnZXNBbmRSZXNldERpZFNjaGVkdWxlRGlzcGF0Y2hNZQogICAgIEFTU0VSVChSdW5M
b29wOjppc01haW4oKSk7CiAKICAgICB7Ci0gICAgICAgIExvY2tlciBsb2NrZXIgeyBtX211dGV4
IH07CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKICAgICAgICAgQVNTRVJUKG1f
ZGlkU2NoZWR1bGVEaXNwYXRjaE1lc3NhZ2VzV29ya1NldC5jb250YWlucygmY29ubmVjdGlvbikp
OwogICAgICAgICBtX2RpZFNjaGVkdWxlRGlzcGF0Y2hNZXNzYWdlc1dvcmtTZXQucmVtb3ZlKCZj
b25uZWN0aW9uKTsKICAgICAgICAgQVNTRVJUKG1fbWVzc2FnZXNCZWluZ0Rpc3BhdGNoZWQuaXNF
bXB0eSgpKTsK
</data>
<flag name="commit-queue"
          id="450606"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429417</attachid>
            <date>2021-05-22 10:21:07 -0700</date>
            <delta_ts>2021-05-22 13:23:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226138-20210522102106.patch</filename>
            <type>text/plain</type>
            <size>62308</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3OTIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGE3NjJlZTkzM2E4MjE0MjcwNGU3YzRk
NzZiNmQ1ZGQxYWFmNGZlNTEuLjUxNGUwMzFlY2Y4OTUzZTkzOTU4MDY4MWJiZDI1MDMwYWMyOGMy
NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjEtMDUtMjIgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBBZG9wdCBDaGVja2VkTG9jayBpbiBtb3JlIHBsYWNlcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2MTM4CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRvcHQgQ2hl
Y2tlZExvY2sgaW4gbW9yZSBwbGFjZXMgdG8gYmVuZWZpdCBmcm9tIENsYW5nIFRocmVhZCBTYWZl
dHkgQW5hbHlzaXMuCisKKyAgICAgICAgKiB3dGYvQXNzZXJ0aW9ucy5jcHA6CisgICAgICAgICog
d3RmL1RpbWluZ1Njb3BlLmNwcDoKKyAgICAgICAgKiB3dGYvdGhyZWFkcy9CaW5hcnlTZW1hcGhv
cmUuY3BwOgorICAgICAgICAoV1RGOjpCaW5hcnlTZW1hcGhvcmU6OndhaXRVbnRpbCk6CisgICAg
ICAgICogd3RmL3RocmVhZHMvQmluYXJ5U2VtYXBob3JlLmg6CisKIDIwMjEtMDUtMjIgIENocmlz
IER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXBsYWNlIExvY2tIb2xkZXIg
d2l0aCBMb2NrZXIgaW4gbG9jYWwgdmFyaWFibGVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTk4YWQ5YjhiMjg5
M2ZiZGI3MDRlNTdhNzMzNTRmYThkMDM5MjdhZC4uMGU2YmE1NTk3NmZkZWYzOGRjMzczYzY4ZDAz
YTE0ZjQ3ODkyNjcyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcwIEBACisyMDIxLTA1LTIyICBD
aHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQWRvcHQgQ2hlY2tlZExv
Y2sgaW4gbW9yZSBwbGFjZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIyNjEzOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEFkb3B0IENoZWNrZWRMb2NrIGluIG1vcmUgcGxhY2VzIHRvIGJlbmVmaXQgZnJv
bSBDbGFuZyBUaHJlYWQgU2FmZXR5IEFuYWx5c2lzLgorCisgICAgICAgICogTW9kdWxlcy93ZWJk
YXRhYmFzZS9EYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6cGVyZm9y
bUNsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlOjpzY2hlZHVsZVRyYW5zYWN0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlOjppblByb2dyZXNzVHJhbnNhY3Rpb25Db21w
bGV0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6Omhhc1BlbmRpbmdUcmFuc2FjdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6cnVuVHJhbnNhY3Rpb24pOgorICAgICAg
ICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRh
dGFiYXNlOjpXVEZfR1VBUkRFRF9CWV9MT0NLKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFi
YXNlL0RhdGFiYXNlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZU1hbmFn
ZXI6OmFkZFByb3Bvc2VkRGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VNYW5h
Z2VyOjpyZW1vdmVQcm9wb3NlZERhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNl
TWFuYWdlcjo6ZnVsbFBhdGhGb3JEYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFz
ZU1hbmFnZXI6OmRldGFpbHNGb3JOYW1lQW5kT3JpZ2luKToKKyAgICAgICAgKiBNb2R1bGVzL3dl
YmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJh
c2UvRGF0YWJhc2VUaHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUaHJlYWQ6
OmRhdGFiYXNlVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVGhyZWFkOjpyZWNv
cmREYXRhYmFzZU9wZW4pOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUaHJlYWQ6OnJlY29y
ZERhdGFiYXNlQ2xvc2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVGhyZWFkOjpoYXNQ
ZW5kaW5nRGF0YWJhc2VBY3Rpdml0eSBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRh
YmFzZS9EYXRhYmFzZVRocmVhZC5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvU1FM
Q2FsbGJhY2tXcmFwcGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpTUUxDYWxsYmFja1dyYXBwZXI6
OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTENhbGxiYWNrV3JhcHBlcjo6dW53cmFwKToK
KyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uOjplbnF1ZXVlU3RhdGVtZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uOjpjaGVja0FuZEhhbmRsZUNsb3NlZERhdGFiYXNlKToK
KyAgICAgICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uOjpnZXROZXh0U3RhdGVtZW50KToKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uLmg6CisgICAgICAgICog
TW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbkJhY2tlbmQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1FMVHJhbnNhY3Rpb25CYWNrZW5kOjpkb0NsZWFudXApOgorICAgICAgICAqIGFj
Y2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmg6CisgICAgICAgIChXZWJD
b3JlOjpBWElzb2xhdGVkVHJlZTo6V1RGX0dVQVJERURfQllfTE9DSyk6CisgICAgICAgICogcGxh
dGZvcm0vQWJvcnRhYmxlVGFza1F1ZXVlLmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vY29j
b2EvQXVkaW9EZXN0aW5hdGlvbkNvY29hLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVz
dGluYXRpb25Db2NvYTo6cmVuZGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9jb2NvYS9B
dWRpb0Rlc3RpbmF0aW9uQ29jb2EuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9nc3RyZWFt
ZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlv
L2dzdHJlYW1lci9BdWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkF1ZGlvU291cmNlUHJvdmlkZXJHU3RyZWFtZXI6OnByb3ZpZGVJbnB1dCk6CisgICAg
ICAgIChXZWJDb3JlOjpBdWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVyOjpoYW5kbGVTYW1wbGUp
OgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Tb3VyY2VQcm92aWRlckdTdHJlYW1lcjo6Y2xlYXJB
ZGFwdGVycyk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvU291cmNl
UHJvdmlkZXJHU3RyZWFtZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIv
V2ViS2l0V2ViQXVkaW9Tb3VyY2VHU3RyZWFtZXIuY3BwOgorICAgICAgICAod2ViS2l0V2ViQXVk
aW9TcmNSZW5kZXJJdGVyYXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpBVkZXcmFwcGVyOjphZGRUb01hcCk6CisgICAgICAgIChXZWJDb3JlOjpBVkZX
cmFwcGVyOjpyZW1vdmVGcm9tTWFwIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFWRldyYXBw
ZXI6OmF2ZldyYXBwZXJGb3JDYWxsYmFja0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6QVZG
V3JhcHBlcjo6cGVyaW9kaWNUaW1lT2JzZXJ2ZXJDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3Jl
OjpBVkZXcmFwcGVyOjpwcm9jZXNzTm90aWZpY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkFW
RldyYXBwZXI6OmxvYWRQbGF5YWJsZUNvbXBsZXRpb25DYWxsYmFjayk6CisgICAgICAgIChXZWJD
b3JlOjpBVkZXcmFwcGVyOjpsb2FkTWV0YWRhdGFDb21wbGV0aW9uQ2FsbGJhY2spOgorICAgICAg
ICAoV2ViQ29yZTo6QVZGV3JhcHBlcjo6c2Vla0NvbXBsZXRlZENhbGxiYWNrKToKKyAgICAgICAg
KFdlYkNvcmU6OkFWRldyYXBwZXI6OnByb2Nlc3NDdWUpOgorICAgICAgICAoV2ViQ29yZTo6QVZG
V3JhcHBlcjo6bGVnaWJsZU91dHB1dENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkFWRldy
YXBwZXI6OnByb2Nlc3NTaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVzb3VyY2UpOgorICAgICAgICAo
V2ViQ29yZTo6QVZGV3JhcHBlcjo6cmVzb3VyY2VMb2FkZXJTaG91bGRXYWl0Rm9yTG9hZGluZ09m
UmVxdWVzdGVkUmVzb3VyY2UpOgorCiAyMDIxLTA1LTIyICBDaHJpcyBEdW1leiAgPGNkdW1lekBh
cHBsZS5jb20+CiAKICAgICAgICAgUmVwbGFjZSBMb2NrSG9sZGVyIHdpdGggTG9ja2VyIGluIGxv
Y2FsIHZhcmlhYmxlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBlMjBmNDQyNGIyYzBjZDIyODFhNWU2ZWJiN2JmOTI4
OGY5MmVhZDhiLi4xNTVjMDM4MDc1YjRmZjY2YmU4NWQ3YjNmOGE3NzgyYzBlNWZkM2VkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIxLTA1LTIyICBDaHJpcyBEdW1leiAgPGNkdW1lekBh
cHBsZS5jb20+CisKKyAgICAgICAgQWRvcHQgQ2hlY2tlZExvY2sgaW4gbW9yZSBwbGFjZXMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjEzOAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkb3B0IENoZWNr
ZWRMb2NrIGluIG1vcmUgcGxhY2VzIHRvIGJlbmVmaXQgZnJvbSBDbGFuZyBUaHJlYWQgU2FmZXR5
IEFuYWx5c2lzLgorCisgICAgICAgICogUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3BwOgorICAg
ICAgICAoSVBDOjpDb25uZWN0aW9uOjpTeW5jTWVzc2FnZVN0YXRlOjplbnF1ZXVlTWF0Y2hpbmdN
ZXNzYWdlcyk6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OlN5bmNNZXNzYWdlU3RhdGU6OnBy
b2Nlc3NJbmNvbWluZ01lc3NhZ2UpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpTeW5jTWVz
c2FnZVN0YXRlOjpkaXNwYXRjaE1lc3NhZ2VzKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6
U3luY01lc3NhZ2VTdGF0ZTo6ZGlzcGF0Y2hNZXNzYWdlc0FuZFJlc2V0RGlkU2NoZWR1bGVEaXNw
YXRjaE1lc3NhZ2VzRm9yQ29ubmVjdGlvbik6CisKIDIwMjEtMDUtMjIgIENocmlzIER1bWV6ICA8
Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXBsYWNlIExvY2tIb2xkZXIgd2l0aCBMb2Nr
ZXIgaW4gbG9jYWwgdmFyaWFibGVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Bc3NlcnRp
b25zLmNwcCBiL1NvdXJjZS9XVEYvd3RmL0Fzc2VydGlvbnMuY3BwCmluZGV4IDU4OTVmMzA1ZmRk
ODFmYWM0ZDIwMTA0NGFhM2RlNWQ3YzdjMzBlNGMuLjBkZjMwODMyYmJiNGU1MWFlZGNiNThkNjdj
NGZhNzBhMjY1ZWVmMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0Fzc2VydGlvbnMuY3Bw
CisrKyBiL1NvdXJjZS9XVEYvd3RmL0Fzc2VydGlvbnMuY3BwCkBAIC0zMSw4ICszMSw4IEBACiAj
aW5jbHVkZSA8bXV0ZXg+CiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDxzdHJpbmcuaD4K
KyNpbmNsdWRlIDx3dGYvQ2hlY2tlZExvY2suaD4KICNpbmNsdWRlIDx3dGYvQ29tcGlsZXIuaD4K
LSNpbmNsdWRlIDx3dGYvTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9Mb2NrZXIuaD4KICNpbmNsdWRl
IDx3dGYvTG9nZ2luZ0FjY3VtdWxhdG9yLmg+CiAjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+
CkBAIC0zNjgsMjUgKzM2OCwyNSBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIGdldEFuZFJlc2V0QWNj
dW11bGF0ZWRMb2dzKCk7CiAKIHByaXZhdGU6Ci0gICAgTG9jayBhY2N1bXVsYXRvckxvY2s7Ci0g
ICAgU3RyaW5nQnVpbGRlciBsb2dnaW5nQWNjdW11bGF0b3I7CisgICAgQ2hlY2tlZExvY2sgYWNj
dW11bGF0b3JMb2NrOworICAgIFN0cmluZ0J1aWxkZXIgbG9nZ2luZ0FjY3VtdWxhdG9yIFdURl9H
VUFSREVEX0JZX0xPQ0soYWNjdW11bGF0b3JMb2NrKTsKIH07CiAKIHZvaWQgV1RGTG9nZ2luZ0Fj
Y3VtdWxhdG9yOjphY2N1bXVsYXRlKGNvbnN0IFN0cmluZyYgbG9nKQogewotICAgIExvY2tlcjxM
b2NrPiBsb2NrZXIoYWNjdW11bGF0b3JMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgYWNjdW11
bGF0b3JMb2NrIH07CiAgICAgbG9nZ2luZ0FjY3VtdWxhdG9yLmFwcGVuZChsb2cpOwogfQogCiB2
b2lkIFdURkxvZ2dpbmdBY2N1bXVsYXRvcjo6cmVzZXRBY2N1bXVsYXRlZExvZ3MoKQogewotICAg
IExvY2tlcjxMb2NrPiBsb2NrZXIoYWNjdW11bGF0b3JMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2Vy
IHsgYWNjdW11bGF0b3JMb2NrIH07CiAgICAgbG9nZ2luZ0FjY3VtdWxhdG9yLmNsZWFyKCk7CiB9
CiAKIFN0cmluZyBXVEZMb2dnaW5nQWNjdW11bGF0b3I6OmdldEFuZFJlc2V0QWNjdW11bGF0ZWRM
b2dzKCkKIHsKLSAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKGFjY3VtdWxhdG9yTG9jayk7CisgICAg
TG9ja2VyIGxvY2tlciB7IGFjY3VtdWxhdG9yTG9jayB9OwogICAgIFN0cmluZyByZXN1bHQgPSBs
b2dnaW5nQWNjdW11bGF0b3IudG9TdHJpbmcoKTsKICAgICBsb2dnaW5nQWNjdW11bGF0b3IuY2xl
YXIoKTsKICAgICByZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVGlt
aW5nU2NvcGUuY3BwIGIvU291cmNlL1dURi93dGYvVGltaW5nU2NvcGUuY3BwCmluZGV4IGUyYjAy
YzYwMzc0NDRjYTYwZjc4ODIzYTIxODIwNjk2ODY5ZjdkNTguLjYzMTE2NjQwYWRlZjRjZDkyMGUy
MTk3ZDc1ZmU1NDE2NGE4ZWM0NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1RpbWluZ1Nj
b3BlLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9UaW1pbmdTY29wZS5jcHAKQEAgLTI2LDggKzI2
LDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlIDx3dGYvVGltaW5nU2NvcGUuaD4K
IAorI2luY2x1ZGUgPHd0Zi9DaGVja2VkTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+
Ci0jaW5jbHVkZSA8d3RmL0xvY2suaD4KIAogbmFtZXNwYWNlIFdURiB7CiAKQEAgLTU5LDggKzU5
LDggQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICBIYXNoTWFwPGNvbnN0IGNoYXIq
LCBDYWxsRGF0YT4gdG90YWxzOwotICAgIExvY2sgbG9jazsKKyAgICBIYXNoTWFwPGNvbnN0IGNo
YXIqLCBDYWxsRGF0YT4gdG90YWxzIFdURl9HVUFSREVEX0JZX0xPQ0sobG9jayk7CisgICAgQ2hl
Y2tlZExvY2sgbG9jazsKIH07CiAKIFN0YXRlJiBzdGF0ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi90aHJlYWRzL0JpbmFyeVNlbWFwaG9yZS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90aHJl
YWRzL0JpbmFyeVNlbWFwaG9yZS5jcHAKaW5kZXggNzhiZjM0Yzk2NjY5OTYwZjEzYzQyYWE0N2Uw
NzRlOGMwNzk3YzI5ZS4uYWQ0MzliZjgzZjU3OWMwODAxYTkxZDY1MWI0ZTA5ZDE1YjIwMGRiZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGhyZWFkcy9CaW5hcnlTZW1hcGhvcmUuY3BwCisr
KyBiL1NvdXJjZS9XVEYvd3RmL3RocmVhZHMvQmluYXJ5U2VtYXBob3JlLmNwcApAQCAtMzgsNyAr
MzgsMTAgQEAgdm9pZCBCaW5hcnlTZW1hcGhvcmU6OnNpZ25hbCgpCiBib29sIEJpbmFyeVNlbWFw
aG9yZTo6d2FpdFVudGlsKGNvbnN0IFRpbWVXaXRoRHluYW1pY0Nsb2NrVHlwZSYgYWJzb2x1dGVU
aW1lKQogewogICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKLSAgICBib29sIHNhdGlzZmll
ZCA9IG1fY29uZGl0aW9uLndhaXRVbnRpbChtX2xvY2ssIGFic29sdXRlVGltZSwgWyZdIHsgcmV0
dXJuIG1faXNTZXQ7IH0pOworICAgIGJvb2wgc2F0aXNmaWVkID0gbV9jb25kaXRpb24ud2FpdFVu
dGlsKG1fbG9jaywgYWJzb2x1dGVUaW1lLCBbJl0geworICAgICAgICBhc3NlcnRJc0hlbGQobV9s
b2NrKTsKKyAgICAgICAgcmV0dXJuIG1faXNTZXQ7CisgICAgfSk7CiAgICAgaWYgKHNhdGlzZmll
ZCkKICAgICAgICAgbV9pc1NldCA9IGZhbHNlOwogICAgIHJldHVybiBzYXRpc2ZpZWQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90aHJlYWRzL0JpbmFyeVNlbWFwaG9yZS5oIGIvU291cmNl
L1dURi93dGYvdGhyZWFkcy9CaW5hcnlTZW1hcGhvcmUuaAppbmRleCA5N2NjYmRlMDgyMDUyYzc3
MGFhM2RiNGU4YmVlNmUxYzllMGUwYmFiLi4zMjg2NTE4ZTcyMzM1MzMxMGQ2ODg2YTlhOGZhYWU3
MmMxMTFkNjllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90aHJlYWRzL0JpbmFyeVNlbWFw
aG9yZS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RocmVhZHMvQmluYXJ5U2VtYXBob3JlLmgKQEAg
LTI1LDggKzI1LDggQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlIDx3dGYvQ29uZGl0aW9u
Lmg+Ci0jaW5jbHVkZSA8d3RmL0xvY2suaD4KKyNpbmNsdWRlIDx3dGYvQ2hlY2tlZENvbmRpdGlv
bi5oPgorI2luY2x1ZGUgPHd0Zi9DaGVja2VkTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5
YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9UaW1lV2l0aER5bmFtaWNDbG9ja1R5cGUuaD4KIApAQCAt
NTIsOSArNTIsOSBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIGJvb2wgbV9pc1Nl
dCB7IGZhbHNlIH07Ci0gICAgTG9jayBtX2xvY2s7Ci0gICAgQ29uZGl0aW9uIG1fY29uZGl0aW9u
OworICAgIGJvb2wgbV9pc1NldCBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fbG9jaykgeyBmYWxzZSB9
OworICAgIENoZWNrZWRMb2NrIG1fbG9jazsKKyAgICBDaGVja2VkQ29uZGl0aW9uIG1fY29uZGl0
aW9uOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwCmluZGV4IDZiYjgwODg5NmQ3YWNmMTRjOWRhYjQw
YmI1MTUzYTY2ZDcwMDQyMDEuLjcwMDc0YzdhN2FiNDIzOTk5ZjNkZjkwNDFmNGViY2EwOTRjNzFk
NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJh
c2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2Uu
Y3BwCkBAIC0yODIsNyArMjgyLDcgQEAgdm9pZCBEYXRhYmFzZTo6cGVyZm9ybUNsb3NlKCkKICAg
ICBBU1NFUlQoZGF0YWJhc2VUaHJlYWQoKS5nZXRUaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50
KCkpOwogCiAgICAgewotICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV90cmFuc2FjdGlvbkluUHJv
Z3Jlc3NNdXRleCB9OworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV90cmFuc2FjdGlvbkluUHJv
Z3Jlc3NMb2NrIH07CiAKICAgICAgICAgLy8gQ2xlYW4gdXAgdHJhbnNhY3Rpb25zIHRoYXQgaGF2
ZSBub3QgYmVlbiBzY2hlZHVsZWQgeWV0OgogICAgICAgICAvLyBUcmFuc2FjdGlvbiBwaGFzZSAx
IGNsZWFudXAuIFNlZSBjb21tZW50IG9uICJXaGF0IGhhcHBlbnMgaWYgYQpAQCAtNTE4LDcgKzUx
OCw3IEBAIGJvb2wgRGF0YWJhc2U6OmdldEFjdHVhbFZlcnNpb25Gb3JUcmFuc2FjdGlvbihTdHJp
bmcgJmFjdHVhbFZlcnNpb24pCiAKIHZvaWQgRGF0YWJhc2U6OnNjaGVkdWxlVHJhbnNhY3Rpb24o
KQogewotICAgIEFTU0VSVCghbV90cmFuc2FjdGlvbkluUHJvZ3Jlc3NNdXRleC50cnlMb2NrKCkp
OyAvLyBMb2NrZWQgYnkgY2FsbGVyLgorICAgIEFTU0VSVChtX3RyYW5zYWN0aW9uSW5Qcm9ncmVz
c0xvY2suaXNIZWxkKCkpOwogCiAgICAgaWYgKCFtX2lzVHJhbnNhY3Rpb25RdWV1ZUVuYWJsZWQg
fHwgbV90cmFuc2FjdGlvblF1ZXVlLmlzRW1wdHkoKSkgewogICAgICAgICBtX3RyYW5zYWN0aW9u
SW5Qcm9ncmVzcyA9IGZhbHNlOwpAQCAtNTQ0LDE0ICs1NDQsMTQgQEAgdm9pZCBEYXRhYmFzZTo6
c2NoZWR1bGVUcmFuc2FjdGlvblN0ZXAoU1FMVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uKQogCiB2
b2lkIERhdGFiYXNlOjppblByb2dyZXNzVHJhbnNhY3Rpb25Db21wbGV0ZWQoKQogewotICAgIExv
Y2tlciBsb2NrZXIgeyBtX3RyYW5zYWN0aW9uSW5Qcm9ncmVzc011dGV4IH07CisgICAgTG9ja2Vy
IGxvY2tlciB7IG1fdHJhbnNhY3Rpb25JblByb2dyZXNzTG9jayB9OwogICAgIG1fdHJhbnNhY3Rp
b25JblByb2dyZXNzID0gZmFsc2U7CiAgICAgc2NoZWR1bGVUcmFuc2FjdGlvbigpOwogfQogCiBi
b29sIERhdGFiYXNlOjpoYXNQZW5kaW5nVHJhbnNhY3Rpb24oKQogewotICAgIExvY2tlciBsb2Nr
ZXIgeyBtX3RyYW5zYWN0aW9uSW5Qcm9ncmVzc011dGV4IH07CisgICAgTG9ja2VyIGxvY2tlciB7
IG1fdHJhbnNhY3Rpb25JblByb2dyZXNzTG9jayB9OwogICAgIHJldHVybiBtX3RyYW5zYWN0aW9u
SW5Qcm9ncmVzcyB8fCAhbV90cmFuc2FjdGlvblF1ZXVlLmlzRW1wdHkoKTsKIH0KIApAQCAtNjgx
LDcgKzY4MSw3IEBAIHZvaWQgRGF0YWJhc2U6OnJlc2V0QXV0aG9yaXplcigpCiB2b2lkIERhdGFi
YXNlOjpydW5UcmFuc2FjdGlvbihSZWZQdHI8U1FMVHJhbnNhY3Rpb25DYWxsYmFjaz4mJiBjYWxs
YmFjaywgUmVmUHRyPFNRTFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjaz4mJiBlcnJvckNhbGxiYWNr
LCBSZWZQdHI8Vm9pZENhbGxiYWNrPiYmIHN1Y2Nlc3NDYWxsYmFjaywgUmVmUHRyPFNRTFRyYW5z
YWN0aW9uV3JhcHBlcj4mJiB3cmFwcGVyLCBib29sIHJlYWRPbmx5KQogewogICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7Ci0gICAgTG9ja2VyIGxvY2tlciB7IG1fdHJhbnNhY3Rpb25JblByb2dy
ZXNzTXV0ZXggfTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV90cmFuc2FjdGlvbkluUHJvZ3Jlc3NM
b2NrIH07CiAgICAgaWYgKCFtX2lzVHJhbnNhY3Rpb25RdWV1ZUVuYWJsZWQpIHsKICAgICAgICAg
aWYgKGVycm9yQ2FsbGJhY2spIHsKICAgICAgICAgICAgIG1fZG9jdW1lbnQtPmV2ZW50TG9vcCgp
LnF1ZXVlVGFzayhUYXNrU291cmNlOjpOZXR3b3JraW5nLCBbZXJyb3JDYWxsYmFjayA9IG1ha2VS
ZWYoKmVycm9yQ2FsbGJhY2spXSgpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0
YWJhc2UvRGF0YWJhc2UuaAppbmRleCAwZDJhOTVhYmM1YzcxZGY0NDVlNjFlMDI3YzE4NDk0OTAy
Zjg3Mzk4Li5hZDIxMzM4YTc4N2Y5M2NkODQ3N2RkMmZhMGVjNDQzOGQ5MzI1ZDUzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5oCkBAIC0zMCw4ICsz
MCw4IEBACiAKICNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgogI2luY2x1ZGUgIlNRTGl0ZURhdGFi
YXNlLmgiCisjaW5jbHVkZSA8d3RmL0NoZWNrZWRMb2NrLmg+CiAjaW5jbHVkZSA8d3RmL0RlcXVl
Lmg+Ci0jaW5jbHVkZSA8d3RmL0xvY2suaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0x
MzksNyArMTM5LDcgQEAgcHJpdmF0ZToKICAgICBib29sIGdldEFjdHVhbFZlcnNpb25Gb3JUcmFu
c2FjdGlvbihTdHJpbmcmIHZlcnNpb24pOwogICAgIHZvaWQgc2V0RXN0aW1hdGVkU2l6ZSh1bnNp
Z25lZCBsb25nIGxvbmcpOwogCi0gICAgdm9pZCBzY2hlZHVsZVRyYW5zYWN0aW9uKCk7CisgICAg
dm9pZCBzY2hlZHVsZVRyYW5zYWN0aW9uKCkgV1RGX1JFUVVJUkVTX0xPQ0sobV90cmFuc2FjdGlv
bkluUHJvZ3Jlc3NMb2NrKTsKIAogICAgIHZvaWQgcnVuVHJhbnNhY3Rpb24oUmVmUHRyPFNRTFRy
YW5zYWN0aW9uQ2FsbGJhY2s+JiYsIFJlZlB0cjxTUUxUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2s+
JiYsIFJlZlB0cjxWb2lkQ2FsbGJhY2s+JiYgc3VjY2Vzc0NhbGxiYWNrLCBSZWZQdHI8U1FMVHJh
bnNhY3Rpb25XcmFwcGVyPiYmLCBib29sIHJlYWRPbmx5KTsKIApAQCAtMTY5LDEwICsxNjksMTAg
QEAgcHJpdmF0ZToKIAogICAgIFJlZjxEYXRhYmFzZUF1dGhvcml6ZXI+IG1fZGF0YWJhc2VBdXRo
b3JpemVyOwogCi0gICAgRGVxdWU8UmVmPFNRTFRyYW5zYWN0aW9uPj4gbV90cmFuc2FjdGlvblF1
ZXVlOwotICAgIExvY2sgbV90cmFuc2FjdGlvbkluUHJvZ3Jlc3NNdXRleDsKLSAgICBib29sIG1f
dHJhbnNhY3Rpb25JblByb2dyZXNzIHsgZmFsc2UgfTsKLSAgICBib29sIG1faXNUcmFuc2FjdGlv
blF1ZXVlRW5hYmxlZCB7IHRydWUgfTsKKyAgICBEZXF1ZTxSZWY8U1FMVHJhbnNhY3Rpb24+PiBt
X3RyYW5zYWN0aW9uUXVldWUgV1RGX0dVQVJERURfQllfTE9DSyhtX3RyYW5zYWN0aW9uSW5Qcm9n
cmVzc0xvY2spOworICAgIENoZWNrZWRMb2NrIG1fdHJhbnNhY3Rpb25JblByb2dyZXNzTG9jazsK
KyAgICBib29sIG1fdHJhbnNhY3Rpb25JblByb2dyZXNzIFdURl9HVUFSREVEX0JZX0xPQ0sobV90
cmFuc2FjdGlvbkluUHJvZ3Jlc3NMb2NrKSB7IGZhbHNlIH07CisgICAgYm9vbCBtX2lzVHJhbnNh
Y3Rpb25RdWV1ZUVuYWJsZWQgV1RGX0dVQVJERURfQllfTE9DSyhtX3RyYW5zYWN0aW9uSW5Qcm9n
cmVzc0xvY2spIHsgdHJ1ZSB9OwogCiAgICAgZnJpZW5kIGNsYXNzIENoYW5nZVZlcnNpb25XcmFw
cGVyOwogICAgIGZyaWVuZCBjbGFzcyBEYXRhYmFzZU1hbmFnZXI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5jcHAKaW5kZXgg
OTUwYjQ1ZmM3MWFhYjE2ZjE0ZTE1ZTJhMGFmZjExZjEyODUyMmE4NS4uMmM5YWE1MmExMDg5NTNl
NDg3NmQ0NWQwYzRjZDk5Mjk1ZTIyYTJiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmNwcApAQCAtMTgxLDEzICsxODEs
MTMgQEAgRXhjZXB0aW9uT3I8UmVmPERhdGFiYXNlPj4gRGF0YWJhc2VNYW5hZ2VyOjp0cnlUb09w
ZW5EYXRhYmFzZUJhY2tlbmQoRG9jdW1lbnQmIGQKIAogdm9pZCBEYXRhYmFzZU1hbmFnZXI6OmFk
ZFByb3Bvc2VkRGF0YWJhc2UoUHJvcG9zZWREYXRhYmFzZSYgZGF0YWJhc2UpCiB7Ci0gICAgTG9j
a2VyIGxvY2tlciB7IG1fcHJvcG9zZWREYXRhYmFzZXNNdXRleCB9OworICAgIExvY2tlciBsb2Nr
ZXIgeyBtX3Byb3Bvc2VkRGF0YWJhc2VzTG9jayB9OwogICAgIG1fcHJvcG9zZWREYXRhYmFzZXMu
YWRkKCZkYXRhYmFzZSk7CiB9CiAKIHZvaWQgRGF0YWJhc2VNYW5hZ2VyOjpyZW1vdmVQcm9wb3Nl
ZERhdGFiYXNlKFByb3Bvc2VkRGF0YWJhc2UmIGRhdGFiYXNlKQogewotICAgIExvY2tlciBsb2Nr
ZXIgeyBtX3Byb3Bvc2VkRGF0YWJhc2VzTXV0ZXggfTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9w
cm9wb3NlZERhdGFiYXNlc0xvY2sgfTsKICAgICBtX3Byb3Bvc2VkRGF0YWJhc2VzLnJlbW92ZSgm
ZGF0YWJhc2UpOwogfQogCkBAIC0yNDEsNyArMjQxLDcgQEAgdm9pZCBEYXRhYmFzZU1hbmFnZXI6
OnN0b3BEYXRhYmFzZXMoRG9jdW1lbnQmIGRvY3VtZW50LCBEYXRhYmFzZVRhc2tTeW5jaHJvbml6
ZXIKIFN0cmluZyBEYXRhYmFzZU1hbmFnZXI6OmZ1bGxQYXRoRm9yRGF0YWJhc2UoU2VjdXJpdHlP
cmlnaW4mIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBuYW1lLCBib29sIGNyZWF0ZUlmRG9lc05vdEV4
aXN0KQogewogICAgIHsKLSAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fcHJvcG9zZWREYXRhYmFz
ZXNNdXRleCB9OworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9wcm9wb3NlZERhdGFiYXNlc0xv
Y2sgfTsKICAgICAgICAgZm9yIChhdXRvKiBwcm9wb3NlZERhdGFiYXNlIDogbV9wcm9wb3NlZERh
dGFiYXNlcykgewogICAgICAgICAgICAgaWYgKHByb3Bvc2VkRGF0YWJhc2UtPmRldGFpbHMoKS5u
YW1lKCkgPT0gbmFtZSAmJiBwcm9wb3NlZERhdGFiYXNlLT5vcmlnaW4oKS5lcXVhbCgmb3JpZ2lu
KSkKICAgICAgICAgICAgICAgICByZXR1cm4gU3RyaW5nKCk7CkBAIC0yNTMsNyArMjUzLDcgQEAg
U3RyaW5nIERhdGFiYXNlTWFuYWdlcjo6ZnVsbFBhdGhGb3JEYXRhYmFzZShTZWN1cml0eU9yaWdp
biYgb3JpZ2luLCBjb25zdCBTdHJpbmcKIERhdGFiYXNlRGV0YWlscyBEYXRhYmFzZU1hbmFnZXI6
OmRldGFpbHNGb3JOYW1lQW5kT3JpZ2luKGNvbnN0IFN0cmluZyYgbmFtZSwgU2VjdXJpdHlPcmln
aW4mIG9yaWdpbikKIHsKICAgICB7Ci0gICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3Byb3Bvc2Vk
RGF0YWJhc2VzTXV0ZXggfTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fcHJvcG9zZWREYXRh
YmFzZXNMb2NrIH07CiAgICAgICAgIGZvciAoYXV0byogcHJvcG9zZWREYXRhYmFzZSA6IG1fcHJv
cG9zZWREYXRhYmFzZXMpIHsKICAgICAgICAgICAgIGlmIChwcm9wb3NlZERhdGFiYXNlLT5kZXRh
aWxzKCkubmFtZSgpID09IG5hbWUgJiYgcHJvcG9zZWREYXRhYmFzZS0+b3JpZ2luKCkuZXF1YWwo
Jm9yaWdpbikpIHsKICAgICAgICAgICAgICAgICBBU1NFUlQoJnByb3Bvc2VkRGF0YWJhc2UtPmRl
dGFpbHMoKS50aHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkgfHwgaXNNYWluVGhyZWFkKCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFz
ZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VN
YW5hZ2VyLmgKaW5kZXggYWE0M2ViZWY4OWMyODg0YjExNzhjMmY5ZmZlOWYxYmYwMWZhODgxYi4u
OTIxM2E0ZDRiOTIzNTllMTk1NWY2MTBiY2ZmOGY3Njg3OTg4OTQ4YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5oCkBAIC0y
OCw4ICsyOCw4IEBACiAjaW5jbHVkZSAiRGF0YWJhc2VEZXRhaWxzLmgiCiAjaW5jbHVkZSAiRXhj
ZXB0aW9uT3IuaCIKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9D
aGVja2VkTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL0xv
Y2suaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC04Nyw4ICs4Nyw4IEBAIHByaXZhdGU6
CiAgICAgRGF0YWJhc2VNYW5hZ2VyQ2xpZW50KiBtX2NsaWVudCB7IG51bGxwdHIgfTsKICAgICBi
b29sIG1fZGF0YWJhc2VJc0F2YWlsYWJsZSB7IHRydWUgfTsKIAotICAgIExvY2sgbV9wcm9wb3Nl
ZERhdGFiYXNlc011dGV4OwotICAgIEhhc2hTZXQ8UHJvcG9zZWREYXRhYmFzZSo+IG1fcHJvcG9z
ZWREYXRhYmFzZXM7CisgICAgQ2hlY2tlZExvY2sgbV9wcm9wb3NlZERhdGFiYXNlc0xvY2s7Cisg
ICAgSGFzaFNldDxQcm9wb3NlZERhdGFiYXNlKj4gbV9wcm9wb3NlZERhdGFiYXNlcyBXVEZfR1VB
UkRFRF9CWV9MT0NLKG1fcHJvcG9zZWREYXRhYmFzZXNMb2NrKTsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJh
c2UvRGF0YWJhc2VUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFz
ZS9EYXRhYmFzZVRocmVhZC5jcHAKaW5kZXggZTZkN2Q2NmEwOGQ4YWM3NTgzODY3YzA3MGIxM2M0
M2IxNjY5OWZmOS4uZTA3MDMzYWM1OTViNDIwZmJkYWFjOGJmYjNhMGE5MDFhZWJjNDY3MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRocmVh
ZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRo
cmVhZC5jcHAKQEAgLTExMCw3ICsxMTAsNyBAQCB2b2lkIERhdGFiYXNlVGhyZWFkOjpkYXRhYmFz
ZVRocmVhZCgpCiAgICAgLy8gaW5jb25zaXN0ZW50IG9yIGxvY2tlZCBzdGF0ZS4KICAgICBEYXRh
YmFzZVNldCBvcGVuU2V0Q29weTsKICAgICB7Ci0gICAgICAgIExvY2tlciBsb2NrZXIgeyBtX29w
ZW5EYXRhYmFzZVNldE11dGV4IH07CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX29wZW5EYXRh
YmFzZVNldExvY2sgfTsKICAgICAgICAgaWYgKG1fb3BlbkRhdGFiYXNlU2V0LnNpemUoKSA+IDAp
IHsKICAgICAgICAgICAgIC8vIEFzIHRoZSBjYWxsIHRvIGNsb3NlIHdpbGwgbW9kaWZ5IHRoZSBv
cmlnaW5hbCBzZXQsIHdlIG11c3QgdGFrZSBhIGNvcHkgdG8gaXRlcmF0ZSBvdmVyLgogICAgICAg
ICAgICAgb3BlblNldENvcHkuc3dhcChtX29wZW5EYXRhYmFzZVNldCk7CkBAIC0xMzQsNyArMTM0
LDcgQEAgdm9pZCBEYXRhYmFzZVRocmVhZDo6ZGF0YWJhc2VUaHJlYWQoKQogCiB2b2lkIERhdGFi
YXNlVGhyZWFkOjpyZWNvcmREYXRhYmFzZU9wZW4oRGF0YWJhc2UmIGRhdGFiYXNlKQogewotICAg
IExvY2tlciBsb2NrZXIgeyBtX29wZW5EYXRhYmFzZVNldE11dGV4IH07CisgICAgTG9ja2VyIGxv
Y2tlciB7IG1fb3BlbkRhdGFiYXNlU2V0TG9jayB9OwogCiAgICAgQVNTRVJUKG1fdGhyZWFkID09
ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAgICAgQVNTRVJUKCFtX29wZW5EYXRhYmFzZVNldC5jb250
YWlucygmZGF0YWJhc2UpKTsKQEAgLTE0Myw3ICsxNDMsNyBAQCB2b2lkIERhdGFiYXNlVGhyZWFk
OjpyZWNvcmREYXRhYmFzZU9wZW4oRGF0YWJhc2UmIGRhdGFiYXNlKQogCiB2b2lkIERhdGFiYXNl
VGhyZWFkOjpyZWNvcmREYXRhYmFzZUNsb3NlZChEYXRhYmFzZSYgZGF0YWJhc2UpCiB7Ci0gICAg
TG9ja2VyIGxvY2tlciB7IG1fb3BlbkRhdGFiYXNlU2V0TXV0ZXggfTsKKyAgICBMb2NrZXIgbG9j
a2VyIHsgbV9vcGVuRGF0YWJhc2VTZXRMb2NrIH07CiAKICAgICBBU1NFUlQobV90aHJlYWQgPT0g
JlRocmVhZDo6Y3VycmVudCgpKTsKICAgICBBU1NFUlQobV9xdWV1ZS5raWxsZWQoKSB8fCBtX29w
ZW5EYXRhYmFzZVNldC5jb250YWlucygmZGF0YWJhc2UpKTsKQEAgLTE3Miw3ICsxNzIsNyBAQCB2
b2lkIERhdGFiYXNlVGhyZWFkOjp1bnNjaGVkdWxlRGF0YWJhc2VUYXNrcyhEYXRhYmFzZSYgZGF0
YWJhc2UpCiAKIGJvb2wgRGF0YWJhc2VUaHJlYWQ6Omhhc1BlbmRpbmdEYXRhYmFzZUFjdGl2aXR5
KCkgY29uc3QKIHsKLSAgICBMb2NrZXIgbG9ja2VyIHsgbV9vcGVuRGF0YWJhc2VTZXRNdXRleCB9
OworICAgIExvY2tlciBsb2NrZXIgeyBtX29wZW5EYXRhYmFzZVNldExvY2sgfTsKICAgICBmb3Ig
KGF1dG8mIGRhdGFiYXNlIDogbV9vcGVuRGF0YWJhc2VTZXQpIHsKICAgICAgICAgaWYgKGRhdGFi
YXNlLT5oYXNQZW5kaW5nQ3JlYXRpb25FdmVudCgpIHx8IGRhdGFiYXNlLT5oYXNQZW5kaW5nVHJh
bnNhY3Rpb24oKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRocmVhZC5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRocmVhZC5oCmluZGV4IGJkNmM5NzQx
ZWU5YWFiY2E0OWY5YzRkOGNhNmVjOTk5YzBmM2U3ZTQuLjVkYzQxMWNjNTYzM2M0NmRhMTYxYWUw
MmJhNDk5YTliMGI1YTc0MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
ZGF0YWJhc2UvRGF0YWJhc2VUaHJlYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmRhdGFiYXNlL0RhdGFiYXNlVGhyZWFkLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNwcmFnbWEgb25j
ZQogCiAjaW5jbHVkZSA8bWVtb3J5PgorI2luY2x1ZGUgPHd0Zi9DaGVja2VkTG9jay5oPgogI2lu
Y2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL01lc3NhZ2VRdWV1ZS5oPgogI2lu
Y2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTc1LDggKzc2LDggQEAgcHJpdmF0ZToKIAogICAgIC8v
IFRoaXMgc2V0IGtlZXBzIHRyYWNrIG9mIHRoZSBvcGVuIGRhdGFiYXNlcyB0aGF0IGhhdmUgYmVl
biB1c2VkIG9uIHRoaXMgdGhyZWFkLgogICAgIHVzaW5nIERhdGFiYXNlU2V0ID0gSGFzaFNldDxS
ZWZQdHI8RGF0YWJhc2U+PjsKLSAgICBtdXRhYmxlIExvY2sgbV9vcGVuRGF0YWJhc2VTZXRNdXRl
eDsKLSAgICBEYXRhYmFzZVNldCBtX29wZW5EYXRhYmFzZVNldDsKKyAgICBtdXRhYmxlIENoZWNr
ZWRMb2NrIG1fb3BlbkRhdGFiYXNlU2V0TG9jazsKKyAgICBEYXRhYmFzZVNldCBtX29wZW5EYXRh
YmFzZVNldCBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fb3BlbkRhdGFiYXNlU2V0TG9jayk7CiAKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8U1FMVHJhbnNhY3Rpb25Db29yZGluYXRvcj4gbV90cmFuc2FjdGlv
bkNvb3JkaW5hdG9yOwogICAgIERhdGFiYXNlVGFza1N5bmNocm9uaXplciogbV9jbGVhbnVwU3lu
YyB7IG51bGxwdHIgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0
YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0
YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcAppbmRleCBhNjhiM2Y4MjVhOGU0OGIxZDYxNmQ2NTk0
Y2RiZTZlMWU2Zjc1YTM2Li40NWIyN2Y5ZDM1MTljMTE5OTI0NzY2ZWM0YzI3ZTQwMTM0MjkyMDQ5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNl
VHJhY2tlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRh
YmFzZVRyYWNrZXIuY3BwCkBAIC0xMDQsNyArMTA0LDcgQEAgU3RyaW5nIERhdGFiYXNlVHJhY2tl
cjo6dHJhY2tlckRhdGFiYXNlUGF0aCgpIGNvbnN0CiAKIHZvaWQgRGF0YWJhc2VUcmFja2VyOjpv
cGVuVHJhY2tlckRhdGFiYXNlKFRyYWNrZXJDcmVhdGlvbkFjdGlvbiBjcmVhdGVBY3Rpb24pCiB7
Ci0gICAgQVNTRVJUKCFtX2RhdGFiYXNlR3VhcmQudHJ5TG9jaygpKTsKKyAgICBBU1NFUlQobV9k
YXRhYmFzZUd1YXJkLmlzSGVsZCgpKTsKIAogICAgIGlmIChtX2RhdGFiYXNlLmlzT3BlbigpKQog
ICAgICAgICByZXR1cm47CkBAIC0xNDMsNyArMTQzLDcgQEAgdm9pZCBEYXRhYmFzZVRyYWNrZXI6
Om9wZW5UcmFja2VyRGF0YWJhc2UoVHJhY2tlckNyZWF0aW9uQWN0aW9uIGNyZWF0ZUFjdGlvbikK
IAogRXhjZXB0aW9uT3I8dm9pZD4gRGF0YWJhc2VUcmFja2VyOjpoYXNBZGVxdWF0ZVF1b3RhRm9y
T3JpZ2luKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2luLCB1aW50NjRfdCBlc3RpbWF0
ZWRTaXplKQogewotICAgIEFTU0VSVCghbV9kYXRhYmFzZUd1YXJkLnRyeUxvY2soKSk7CisgICAg
QVNTRVJUKG1fZGF0YWJhc2VHdWFyZC5pc0hlbGQoKSk7CiAgICAgYXV0byB1c2FnZSA9IHRoaXMt
PnVzYWdlKG9yaWdpbik7CiAKICAgICAvLyBJZiB0aGUgZGF0YWJhc2Ugd2lsbCBmaXQsIGFsbG93
IGl0cyBjcmVhdGlvbi4KQEAgLTIzMCw3ICsyMzAsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBEYXRh
YmFzZVRyYWNrZXI6OnJldHJ5Q2FuRXN0YWJsaXNoRGF0YWJhc2UoRGF0YWJhc2VDb250ZXh0JiBj
bwogCiBib29sIERhdGFiYXNlVHJhY2tlcjo6aGFzRW50cnlGb3JPcmlnaW5Ob0xvY2soY29uc3Qg
U2VjdXJpdHlPcmlnaW5EYXRhJiBvcmlnaW4pCiB7Ci0gICAgQVNTRVJUKCFtX2RhdGFiYXNlR3Vh
cmQudHJ5TG9jaygpKTsKKyAgICBBU1NFUlQobV9kYXRhYmFzZUd1YXJkLmlzSGVsZCgpKTsKICAg
ICBvcGVuVHJhY2tlckRhdGFiYXNlKERvbnRDcmVhdGVJZkRvZXNOb3RFeGlzdCk7CiAgICAgaWYg
KCFtX2RhdGFiYXNlLmlzT3BlbigpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yNDgsNyAr
MjQ4LDcgQEAgYm9vbCBEYXRhYmFzZVRyYWNrZXI6Omhhc0VudHJ5Rm9yT3JpZ2luTm9Mb2NrKGNv
bnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2luKQogCiBib29sIERhdGFiYXNlVHJhY2tlcjo6
aGFzRW50cnlGb3JEYXRhYmFzZShjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbiwgY29u
c3QgU3RyaW5nJiBkYXRhYmFzZUlkZW50aWZpZXIpCiB7Ci0gICAgQVNTRVJUKCFtX2RhdGFiYXNl
R3VhcmQudHJ5TG9jaygpKTsKKyAgICBBU1NFUlQobV9kYXRhYmFzZUd1YXJkLmlzSGVsZCgpKTsK
ICAgICBvcGVuVHJhY2tlckRhdGFiYXNlKERvbnRDcmVhdGVJZkRvZXNOb3RFeGlzdCk7CiAgICAg
aWYgKCFtX2RhdGFiYXNlLmlzT3BlbigpKSB7CiAgICAgICAgIC8vIE5vICJ0cmFja2VyIGRhdGFi
YXNlIi4gSGVuY2UsIG5vIGVudHJ5IGZvciB0aGUgZGF0YWJhc2Ugb2YgaW50ZXJlc3QuCkBAIC0z
MTMsNyArMzEzLDcgQEAgc3RhdGljIFN0cmluZyBnZW5lcmF0ZURhdGFiYXNlRmlsZU5hbWUoKQog
CiBTdHJpbmcgRGF0YWJhc2VUcmFja2VyOjpmdWxsUGF0aEZvckRhdGFiYXNlTm9Mb2NrKGNvbnN0
IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wgY3Jl
YXRlSWZOb3RFeGlzdHMpCiB7Ci0gICAgQVNTRVJUKCFtX2RhdGFiYXNlR3VhcmQudHJ5TG9jaygp
KTsKKyAgICBBU1NFUlQobV9kYXRhYmFzZUd1YXJkLmlzSGVsZCgpKTsKIAogICAgIFN0cmluZyBv
cmlnaW5JZGVudGlmaWVyID0gb3JpZ2luLmRhdGFiYXNlSWRlbnRpZmllcigpOwogICAgIFN0cmlu
ZyBvcmlnaW5QYXRoID0gdGhpcy0+b3JpZ2luUGF0aChvcmlnaW4pOwpAQCAtMzkyLDcgKzM5Miw3
IEBAIFZlY3RvcjxTZWN1cml0eU9yaWdpbkRhdGE+IERhdGFiYXNlVHJhY2tlcjo6b3JpZ2lucygp
CiAKIFZlY3RvcjxTdHJpbmc+IERhdGFiYXNlVHJhY2tlcjo6ZGF0YWJhc2VOYW1lc05vTG9jayhj
b25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbikKIHsKLSAgICBBU1NFUlQoIW1fZGF0YWJh
c2VHdWFyZC50cnlMb2NrKCkpOworICAgIEFTU0VSVChtX2RhdGFiYXNlR3VhcmQuaXNIZWxkKCkp
OwogICAgIG9wZW5UcmFja2VyRGF0YWJhc2UoRG9udENyZWF0ZUlmRG9lc05vdEV4aXN0KTsKICAg
ICBpZiAoIW1fZGF0YWJhc2UuaXNPcGVuKCkpCiAgICAgICAgIHJldHVybiB7IH07CkBAIC02MzQs
NyArNjM0LDcgQEAgUmVmUHRyPE9yaWdpbkxvY2s+IERhdGFiYXNlVHJhY2tlcjo6b3JpZ2luTG9j
a0Zvcihjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWcKIAogdm9pZCBEYXRhYmFzZVRyYWNr
ZXI6OmRlbGV0ZU9yaWdpbkxvY2tGb3IoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBvcmlnaW4p
CiB7Ci0gICAgQVNTRVJUKCFtX2RhdGFiYXNlR3VhcmQudHJ5TG9jaygpKTsKKyAgICBBU1NFUlQo
bV9kYXRhYmFzZUd1YXJkLmlzSGVsZCgpKTsKIAogICAgIC8vIFRoZXJlIGlzIG5vdCBhbHdheXMg
YW4gaW5zdGFuY2Ugb2YgYW4gT3JpZ2luTG9jayBhc3NvY2lhdGVkIHdpdGggYW4gb3JpZ2luLgog
ICAgIC8vIEZvciBleGFtcGxlLCBpZiB0aGUgT3JpZ2luTG9jayBsb2NrIGZpbGUgd2FzIGNyZWF0
ZWQgYnkgYSBwcmV2aW91cyBydW4gb2YKQEAgLTY2Niw3ICs2NjYsNyBAQCB1aW50NjRfdCBEYXRh
YmFzZVRyYWNrZXI6OnVzYWdlKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2luKQogCiB1
aW50NjRfdCBEYXRhYmFzZVRyYWNrZXI6OnF1b3RhTm9Mb2NrKGNvbnN0IFNlY3VyaXR5T3JpZ2lu
RGF0YSYgb3JpZ2luKQogewotICAgIEFTU0VSVCghbV9kYXRhYmFzZUd1YXJkLnRyeUxvY2soKSk7
CisgICAgQVNTRVJUKG1fZGF0YWJhc2VHdWFyZC5pc0hlbGQoKSk7CiAgICAgdWludDY0X3QgcXVv
dGEgPSAwOwogCiAgICAgb3BlblRyYWNrZXJEYXRhYmFzZShEb250Q3JlYXRlSWZEb2VzTm90RXhp
c3QpOwpAQCAtNzQyLDcgKzc0Miw3IEBAIHZvaWQgRGF0YWJhc2VUcmFja2VyOjpzZXRRdW90YShj
b25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbiwgdWludDY0X3QgcXVvdGEpCiAKIGJvb2wg
RGF0YWJhc2VUcmFja2VyOjphZGREYXRhYmFzZShjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9y
aWdpbiwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHBhdGgpCiB7Ci0gICAgQVNT
RVJUKCFtX2RhdGFiYXNlR3VhcmQudHJ5TG9jaygpKTsKKyAgICBBU1NFUlQobV9kYXRhYmFzZUd1
YXJkLmlzSGVsZCgpKTsKICAgICBvcGVuVHJhY2tlckRhdGFiYXNlKENyZWF0ZUlmRG9lc05vdEV4
aXN0KTsKICAgICBpZiAoIW1fZGF0YWJhc2UuaXNPcGVuKCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKQEAgLTk0NiwxNCArOTQ2LDE0IEBAIGJvb2wgRGF0YWJhc2VUcmFja2VyOjpkZWxldGVPcmln
aW4oY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBvcmlnaW4sIERlbGV0aW9uTW9kCiAKIGJvb2wg
RGF0YWJhc2VUcmFja2VyOjppc0RlbGV0aW5nRGF0YWJhc2VPck9yaWdpbkZvcihjb25zdCBTZWN1
cml0eU9yaWdpbkRhdGEmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBuYW1lKQogewotICAgIEFTU0VS
VCghbV9kYXRhYmFzZUd1YXJkLnRyeUxvY2soKSk7CisgICAgQVNTRVJUKG1fZGF0YWJhc2VHdWFy
ZC5pc0hlbGQoKSk7CiAgICAgLy8gQ2FuJ3QgY3JlYXRlIGEgZGF0YWJhc2Ugd2hpbGUgc29tZW9u
ZSBlbHNlIGlzIGRlbGV0aW5nIGl0OyB0aGVyZSdzIGEgcmlzayBvZiBsZWF2aW5nIHVudHJhY2tl
ZCBkYXRhYmFzZSBkZWJyaXMgb24gdGhlIGRpc2suCiAgICAgcmV0dXJuIGlzRGVsZXRpbmdEYXRh
YmFzZShvcmlnaW4sIG5hbWUpIHx8IGlzRGVsZXRpbmdPcmlnaW4ob3JpZ2luKTsKIH0KIAogdm9p
ZCBEYXRhYmFzZVRyYWNrZXI6OnJlY29yZENyZWF0aW5nRGF0YWJhc2UoY29uc3QgU2VjdXJpdHlP
cmlnaW5EYXRhJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKLSAgICBBU1NFUlQoIW1f
ZGF0YWJhc2VHdWFyZC50cnlMb2NrKCkpOworICAgIEFTU0VSVChtX2RhdGFiYXNlR3VhcmQuaXNI
ZWxkKCkpOwogCiAgICAgLy8gV2UgZG9uJ3QgdXNlIEhhc2hNYXA6OmVuc3VyZSBoZXJlIHRvIGF2
b2lkIG1ha2luZyBhbiBpc29sYXRlZCBjb3B5IG9mIHRoZSBvcmlnaW4gZXZlcnkgdGltZS4KICAg
ICBhdXRvKiBuYW1lU2V0ID0gbV9iZWluZ0NyZWF0ZWQuZ2V0KG9yaWdpbik7CkBAIC05NjcsNyAr
OTY3LDcgQEAgdm9pZCBEYXRhYmFzZVRyYWNrZXI6OnJlY29yZENyZWF0aW5nRGF0YWJhc2UoY29u
c3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBvcmlnaW4sIGMKIAogdm9pZCBEYXRhYmFzZVRyYWNrZXI6
OmRvbmVDcmVhdGluZ0RhdGFiYXNlKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2luLCBj
b25zdCBTdHJpbmcmIG5hbWUpCiB7Ci0gICAgQVNTRVJUKCFtX2RhdGFiYXNlR3VhcmQudHJ5TG9j
aygpKTsKKyAgICBBU1NFUlQobV9kYXRhYmFzZUd1YXJkLmlzSGVsZCgpKTsKIAogICAgIEFTU0VS
VChtX2JlaW5nQ3JlYXRlZC5jb250YWlucyhvcmlnaW4pKTsKIApAQCAtOTg0LDcgKzk4NCw3IEBA
IHZvaWQgRGF0YWJhc2VUcmFja2VyOjpkb25lQ3JlYXRpbmdEYXRhYmFzZShjb25zdCBTZWN1cml0
eU9yaWdpbkRhdGEmIG9yaWdpbiwgY29uCiAKIGJvb2wgRGF0YWJhc2VUcmFja2VyOjpjcmVhdGlu
Z0RhdGFiYXNlKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2luLCBjb25zdCBTdHJpbmcm
IG5hbWUpCiB7Ci0gICAgQVNTRVJUKCFtX2RhdGFiYXNlR3VhcmQudHJ5TG9jaygpKTsKKyAgICBB
U1NFUlQobV9kYXRhYmFzZUd1YXJkLmlzSGVsZCgpKTsKIAogICAgIGF1dG8gaXRlcmF0b3IgPSBt
X2JlaW5nQ3JlYXRlZC5maW5kKG9yaWdpbik7CiAgICAgcmV0dXJuIGl0ZXJhdG9yICE9IG1fYmVp
bmdDcmVhdGVkLmVuZCgpICYmIGl0ZXJhdG9yLT52YWx1ZS0+Y29udGFpbnMobmFtZSk7CkBAIC05
OTIsMTMgKzk5MiwxMyBAQCBib29sIERhdGFiYXNlVHJhY2tlcjo6Y3JlYXRpbmdEYXRhYmFzZShj
b25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbiwgY29uc3QgUwogCiBib29sIERhdGFiYXNl
VHJhY2tlcjo6Y2FuRGVsZXRlRGF0YWJhc2UoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBvcmln
aW4sIGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKLSAgICBBU1NFUlQoIW1fZGF0YWJhc2VHdWFyZC50
cnlMb2NrKCkpOworICAgIEFTU0VSVChtX2RhdGFiYXNlR3VhcmQuaXNIZWxkKCkpOwogICAgIHJl
dHVybiAhY3JlYXRpbmdEYXRhYmFzZShvcmlnaW4sIG5hbWUpICYmICFpc0RlbGV0aW5nRGF0YWJh
c2Uob3JpZ2luLCBuYW1lKTsKIH0KIAogdm9pZCBEYXRhYmFzZVRyYWNrZXI6OnJlY29yZERlbGV0
aW5nRGF0YWJhc2UoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBvcmlnaW4sIGNvbnN0IFN0cmlu
ZyYgbmFtZSkKIHsKLSAgICBBU1NFUlQoIW1fZGF0YWJhc2VHdWFyZC50cnlMb2NrKCkpOworICAg
IEFTU0VSVChtX2RhdGFiYXNlR3VhcmQuaXNIZWxkKCkpOwogICAgIEFTU0VSVChjYW5EZWxldGVE
YXRhYmFzZShvcmlnaW4sIG5hbWUpKTsKIAogICAgIC8vIFdlIGRvbid0IHVzZSBIYXNoTWFwOjpl
bnN1cmUgaGVyZSB0byBhdm9pZCBtYWtpbmcgYW4gaXNvbGF0ZWQgY29weSBvZiB0aGUgb3JpZ2lu
IGV2ZXJ5IHRpbWUuCkBAIC0xMDE0LDcgKzEwMTQsNyBAQCB2b2lkIERhdGFiYXNlVHJhY2tlcjo6
cmVjb3JkRGVsZXRpbmdEYXRhYmFzZShjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbiwg
YwogCiB2b2lkIERhdGFiYXNlVHJhY2tlcjo6ZG9uZURlbGV0aW5nRGF0YWJhc2UoY29uc3QgU2Vj
dXJpdHlPcmlnaW5EYXRhJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKLSAgICBBU1NF
UlQoIW1fZGF0YWJhc2VHdWFyZC50cnlMb2NrKCkpOworICAgIEFTU0VSVChtX2RhdGFiYXNlR3Vh
cmQuaXNIZWxkKCkpOwogICAgIEFTU0VSVChtX2JlaW5nRGVsZXRlZC5jb250YWlucyhvcmlnaW4p
KTsKIAogICAgIGF1dG8gaXRlcmF0b3IgPSBtX2JlaW5nRGVsZXRlZC5maW5kKG9yaWdpbik7CkBA
IC0xMDI5LDMzICsxMDI5LDMzIEBAIHZvaWQgRGF0YWJhc2VUcmFja2VyOjpkb25lRGVsZXRpbmdE
YXRhYmFzZShjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbiwgY29uCiAKIGJvb2wgRGF0
YWJhc2VUcmFja2VyOjppc0RlbGV0aW5nRGF0YWJhc2UoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRh
JiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKLSAgICBBU1NFUlQoIW1fZGF0YWJhc2VH
dWFyZC50cnlMb2NrKCkpOworICAgIEFTU0VSVChtX2RhdGFiYXNlR3VhcmQuaXNIZWxkKCkpOwog
ICAgIGF1dG8qIG5hbWVTZXQgPSBtX2JlaW5nRGVsZXRlZC5nZXQob3JpZ2luKTsKICAgICByZXR1
cm4gbmFtZVNldCAmJiBuYW1lU2V0LT5jb250YWlucyhuYW1lKTsKIH0KIAogYm9vbCBEYXRhYmFz
ZVRyYWNrZXI6OmNhbkRlbGV0ZU9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdp
bikKIHsKLSAgICBBU1NFUlQoIW1fZGF0YWJhc2VHdWFyZC50cnlMb2NrKCkpOworICAgIEFTU0VS
VChtX2RhdGFiYXNlR3VhcmQuaXNIZWxkKCkpOwogICAgIHJldHVybiAhKGlzRGVsZXRpbmdPcmln
aW4ob3JpZ2luKSB8fCBtX2JlaW5nQ3JlYXRlZC5nZXQob3JpZ2luKSk7CiB9CiAKIGJvb2wgRGF0
YWJhc2VUcmFja2VyOjppc0RlbGV0aW5nT3JpZ2luKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYg
b3JpZ2luKQogewotICAgIEFTU0VSVCghbV9kYXRhYmFzZUd1YXJkLnRyeUxvY2soKSk7CisgICAg
QVNTRVJUKG1fZGF0YWJhc2VHdWFyZC5pc0hlbGQoKSk7CiAgICAgcmV0dXJuIG1fb3JpZ2luc0Jl
aW5nRGVsZXRlZC5jb250YWlucyhvcmlnaW4pOwogfQogCiB2b2lkIERhdGFiYXNlVHJhY2tlcjo6
cmVjb3JkRGVsZXRpbmdPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBvcmlnaW4pCiB7
Ci0gICAgQVNTRVJUKCFtX2RhdGFiYXNlR3VhcmQudHJ5TG9jaygpKTsKKyAgICBBU1NFUlQobV9k
YXRhYmFzZUd1YXJkLmlzSGVsZCgpKTsKICAgICBBU1NFUlQoIWlzRGVsZXRpbmdPcmlnaW4ob3Jp
Z2luKSk7CiAgICAgbV9vcmlnaW5zQmVpbmdEZWxldGVkLmFkZChvcmlnaW4uaXNvbGF0ZWRDb3B5
KCkpOwogfQogCiB2b2lkIERhdGFiYXNlVHJhY2tlcjo6ZG9uZURlbGV0aW5nT3JpZ2luKGNvbnN0
IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2luKQogewotICAgIEFTU0VSVCghbV9kYXRhYmFzZUd1
YXJkLnRyeUxvY2soKSk7CisgICAgQVNTRVJUKG1fZGF0YWJhc2VHdWFyZC5pc0hlbGQoKSk7CiAg
ICAgQVNTRVJUKGlzRGVsZXRpbmdPcmlnaW4ob3JpZ2luKSk7CiAgICAgbV9vcmlnaW5zQmVpbmdE
ZWxldGVkLnJlbW92ZShvcmlnaW4pOwogfQpAQCAtMTE2Nyw3ICsxMTY3LDggQEAgYm9vbCBEYXRh
YmFzZVRyYWNrZXI6OmRlbGV0ZURhdGFiYXNlRmlsZShjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEm
IG9yaWdpbiwgY29uc3QKICAgICAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCi12b2lkIERh
dGFiYXNlVHJhY2tlcjo6cmVtb3ZlRGVsZXRlZE9wZW5lZERhdGFiYXNlcygpCisvLyBGSVhNRTog
VGhpcyB1c2VzIG1fZGF0YWJhc2Ugd2l0aG91dCBsb2NraW5nIG1fZGF0YWJhc2VHdWFyZC4KK3Zv
aWQgRGF0YWJhc2VUcmFja2VyOjpyZW1vdmVEZWxldGVkT3BlbmVkRGF0YWJhc2VzKCkgV1RGX0lH
Tk9SRVNfVEhSRUFEX1NBRkVUWV9BTkFMWVNJUwogewogICAgIC8vIFRoaXMgaXMgY2FsbGVkIHdo
ZW4gYW5vdGhlciBhcHAgaGFzIGRlbGV0ZWQgYSBkYXRhYmFzZS4gIEdvIHRocm91Z2ggYWxsIG9w
ZW5lZCBkYXRhYmFzZXMgaW4gdGhpcwogICAgIC8vIHRyYWNrZXIgYW5kIGNsb3NlIGFueSB0aGF0
J3Mgbm8gbG9uZ2VyIGJlaW5nIHRyYWNrZWQgaW4gdGhlIGRhdGFiYXNlLgpAQCAtMTE3NiwxMCAr
MTE3NywxMCBAQCB2b2lkIERhdGFiYXNlVHJhY2tlcjo6cmVtb3ZlRGVsZXRlZE9wZW5lZERhdGFi
YXNlcygpCiAgICAgICAgIC8vIEFjcXVpcmUgdGhlIGxvY2sgYmVmb3JlIGNhbGxpbmcgb3BlblRy
YWNrZXJEYXRhYmFzZS4KICAgICAgICAgTG9ja2VyIGxvY2tEYXRhYmFzZSB7IG1fZGF0YWJhc2VH
dWFyZCB9OwogICAgICAgICBvcGVuVHJhY2tlckRhdGFiYXNlKERvbnRDcmVhdGVJZkRvZXNOb3RF
eGlzdCk7Ci0gICAgfQogCi0gICAgaWYgKCFtX2RhdGFiYXNlLmlzT3BlbigpKQotICAgICAgICBy
ZXR1cm47CisgICAgICAgIGlmICghbV9kYXRhYmFzZS5pc09wZW4oKSkKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICB9CiAgICAgCiAgICAgLy8gS2VlcCB0cmFjayBvZiB3aGljaCBvcGVuZWQgZGF0
YWJhc2VzIGhhdmUgYmVlbiBkZWxldGVkLgogICAgIFZlY3RvcjxSZWZQdHI8RGF0YWJhc2U+PiBk
ZWxldGVkRGF0YWJhc2VzOwpAQCAtMTMzMCw3ICsxMzMxLDcgQEAgc3RhdGljIGJvb2wgbm90aWZp
Y2F0aW9uU2NoZWR1bGVkID0gZmFsc2U7CiAKIHZvaWQgRGF0YWJhc2VUcmFja2VyOjpzY2hlZHVs
ZUZvck5vdGlmaWNhdGlvbigpCiB7Ci0gICAgQVNTRVJUKCFub3RpZmljYXRpb25Mb2NrLnRyeUxv
Y2soKSk7CisgICAgQVNTRVJUKG5vdGlmaWNhdGlvbkxvY2suaXNIZWxkKCkpOwogCiAgICAgaWYg
KCFub3RpZmljYXRpb25TY2hlZHVsZWQpIHsKICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbXSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNl
VHJhY2tlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRy
YWNrZXIuaAppbmRleCAzY2EwYTQ2NTUwMTQ1ZDAwYjIyMjUxMGE2MTkzYjU4MGE5OWUzNzkxLi5k
ZDljNWQ4Nzc2YmQxZGMzODk2NmU3NWY1NGYxMzFhZGQ3NjY4YjM0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmgKQEAgLTMz
LDYgKzMzLDcgQEAKICNpbmNsdWRlICJTUUxpdGVEYXRhYmFzZS5oIgogI2luY2x1ZGUgIlNlY3Vy
aXR5T3JpZ2luRGF0YS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luSGFzaC5oIgorI2luY2x1
ZGUgPHd0Zi9DaGVja2VkTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoQ291bnRlZFNldC5oPgog
I2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KQEAgLTEx
OSwyNiArMTIwLDI2IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgRGF0YWJhc2VU
cmFja2VyKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VQYXRoKTsKIAotICAgIEV4Y2VwdGlvbk9yPHZv
aWQ+IGhhc0FkZXF1YXRlUXVvdGFGb3JPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiwg
dWludDY0X3QgZXN0aW1hdGVkU2l6ZSk7CisgICAgRXhjZXB0aW9uT3I8dm9pZD4gaGFzQWRlcXVh
dGVRdW90YUZvck9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmLCB1aW50NjRfdCBlc3Rp
bWF0ZWRTaXplKSBXVEZfUkVRVUlSRVNfTE9DSyhtX2RhdGFiYXNlR3VhcmQpOwogCi0gICAgYm9v
bCBoYXNFbnRyeUZvck9yaWdpbk5vTG9jayhjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmKTsKLSAg
ICBTdHJpbmcgZnVsbFBhdGhGb3JEYXRhYmFzZU5vTG9jayhjb25zdCBTZWN1cml0eU9yaWdpbkRh
dGEmLCBjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wgY3JlYXRlSWZEb2VzTm90RXhpc3QpOwotICAg
IFZlY3RvcjxTdHJpbmc+IGRhdGFiYXNlTmFtZXNOb0xvY2soY29uc3QgU2VjdXJpdHlPcmlnaW5E
YXRhJik7Ci0gICAgdWludDY0X3QgcXVvdGFOb0xvY2soY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRh
Jik7CisgICAgYm9vbCBoYXNFbnRyeUZvck9yaWdpbk5vTG9jayhjb25zdCBTZWN1cml0eU9yaWdp
bkRhdGEmKSBXVEZfUkVRVUlSRVNfTE9DSyhtX2RhdGFiYXNlR3VhcmQpOworICAgIFN0cmluZyBm
dWxsUGF0aEZvckRhdGFiYXNlTm9Mb2NrKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYsIGNvbnN0
IFN0cmluZyYgbmFtZSwgYm9vbCBjcmVhdGVJZkRvZXNOb3RFeGlzdCkgV1RGX1JFUVVJUkVTX0xP
Q0sobV9kYXRhYmFzZUd1YXJkKTsKKyAgICBWZWN0b3I8U3RyaW5nPiBkYXRhYmFzZU5hbWVzTm9M
b2NrKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYpIFdURl9SRVFVSVJFU19MT0NLKG1fZGF0YWJh
c2VHdWFyZCkgV1RGX1JFUVVJUkVTX0xPQ0sobV9kYXRhYmFzZUd1YXJkKTsKKyAgICB1aW50NjRf
dCBxdW90YU5vTG9jayhjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmKSBXVEZfUkVRVUlSRVNfTE9D
SyhtX2RhdGFiYXNlR3VhcmQpOwogCi0gICAgU3RyaW5nIHRyYWNrZXJEYXRhYmFzZVBhdGgoKSBj
b25zdDsKKyAgICBTdHJpbmcgdHJhY2tlckRhdGFiYXNlUGF0aCgpIGNvbnN0IFdURl9SRVFVSVJF
U19MT0NLKG1fZGF0YWJhc2VHdWFyZCk7CiAKICAgICBlbnVtIFRyYWNrZXJDcmVhdGlvbkFjdGlv
biB7CiAgICAgICAgIERvbnRDcmVhdGVJZkRvZXNOb3RFeGlzdCwKICAgICAgICAgQ3JlYXRlSWZE
b2VzTm90RXhpc3QKICAgICB9OwotICAgIHZvaWQgb3BlblRyYWNrZXJEYXRhYmFzZShUcmFja2Vy
Q3JlYXRpb25BY3Rpb24pOworICAgIHZvaWQgb3BlblRyYWNrZXJEYXRhYmFzZShUcmFja2VyQ3Jl
YXRpb25BY3Rpb24pIFdURl9SRVFVSVJFU19MT0NLKG1fZGF0YWJhc2VHdWFyZCk7CiAKICAgICBT
dHJpbmcgb3JpZ2luUGF0aChjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmKSBjb25zdDsKIAotICAg
IGJvb2wgaGFzRW50cnlGb3JEYXRhYmFzZShjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmLCBjb25z
dCBTdHJpbmcmIGRhdGFiYXNlSWRlbnRpZmllcik7CisgICAgYm9vbCBoYXNFbnRyeUZvckRhdGFi
YXNlKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYsIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VJZGVu
dGlmaWVyKSBXVEZfUkVRVUlSRVNfTE9DSyhtX2RhdGFiYXNlR3VhcmQpOwogCi0gICAgYm9vbCBh
ZGREYXRhYmFzZShjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmLCBjb25zdCBTdHJpbmcmIG5hbWUs
IGNvbnN0IFN0cmluZyYgcGF0aCk7CisgICAgYm9vbCBhZGREYXRhYmFzZShjb25zdCBTZWN1cml0
eU9yaWdpbkRhdGEmLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgcGF0aCkgV1RG
X1JFUVVJUkVTX0xPQ0sobV9kYXRhYmFzZUd1YXJkKTsKIAogICAgIGVudW0gY2xhc3MgRGVsZXRp
b25Nb2RlIHsKICAgICAgICAgSW1tZWRpYXRlLApAQCAtMTU1LDQxICsxNTYsNDEgQEAgcHJpdmF0
ZToKICAgICBib29sIGRlbGV0ZU9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmLCBEZWxl
dGlvbk1vZGUpOwogICAgIGJvb2wgZGVsZXRlRGF0YWJhc2VGaWxlKGNvbnN0IFNlY3VyaXR5T3Jp
Z2luRGF0YSYsIGNvbnN0IFN0cmluZyYgbmFtZSwgRGVsZXRpb25Nb2RlKTsKIAotICAgIHZvaWQg
ZGVsZXRlT3JpZ2luTG9ja0Zvcihjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmKTsKKyAgICB2b2lk
IGRlbGV0ZU9yaWdpbkxvY2tGb3IoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJikgV1RGX1JFUVVJ
UkVTX0xPQ0sobV9kYXRhYmFzZUd1YXJkKTsKIAogICAgIHVzaW5nIERhdGFiYXNlU2V0ID0gSGFz
aFNldDxEYXRhYmFzZSo+OwogICAgIHVzaW5nIERhdGFiYXNlTmFtZU1hcCA9IEhhc2hNYXA8U3Ry
aW5nLCBEYXRhYmFzZVNldCo+OwogICAgIHVzaW5nIERhdGFiYXNlT3JpZ2luTWFwID0gSGFzaE1h
cDxTZWN1cml0eU9yaWdpbkRhdGEsIERhdGFiYXNlTmFtZU1hcCo+OwogCi0gICAgTG9jayBtX29w
ZW5EYXRhYmFzZU1hcEd1YXJkOwotICAgIG11dGFibGUgc3RkOjp1bmlxdWVfcHRyPERhdGFiYXNl
T3JpZ2luTWFwPiBtX29wZW5EYXRhYmFzZU1hcDsKKyAgICBDaGVja2VkTG9jayBtX29wZW5EYXRh
YmFzZU1hcEd1YXJkOworICAgIG11dGFibGUgc3RkOjp1bmlxdWVfcHRyPERhdGFiYXNlT3JpZ2lu
TWFwPiBtX29wZW5EYXRhYmFzZU1hcCBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fb3BlbkRhdGFiYXNl
TWFwR3VhcmQpOwogCiAgICAgLy8gVGhpcyBsb2NrIHByb3RlY3RzIG1fZGF0YWJhc2UsIG1fb3Jp
Z2luTG9ja01hcCwgbV9kYXRhYmFzZURpcmVjdG9yeVBhdGgsIG1fb3JpZ2luc0JlaW5nRGVsZXRl
ZCwgbV9iZWluZ0NyZWF0ZWQsIGFuZCBtX2JlaW5nRGVsZXRlZC4KLSAgICBMb2NrIG1fZGF0YWJh
c2VHdWFyZDsKLSAgICBTUUxpdGVEYXRhYmFzZSBtX2RhdGFiYXNlOworICAgIENoZWNrZWRMb2Nr
IG1fZGF0YWJhc2VHdWFyZDsKKyAgICBTUUxpdGVEYXRhYmFzZSBtX2RhdGFiYXNlIFdURl9HVUFS
REVEX0JZX0xPQ0sobV9kYXRhYmFzZUd1YXJkKTsKIAogICAgIHVzaW5nIE9yaWdpbkxvY2tNYXAg
PSBIYXNoTWFwPFN0cmluZywgUmVmUHRyPE9yaWdpbkxvY2s+PjsKLSAgICBPcmlnaW5Mb2NrTWFw
IG1fb3JpZ2luTG9ja01hcDsKKyAgICBPcmlnaW5Mb2NrTWFwIG1fb3JpZ2luTG9ja01hcCBXVEZf
R1VBUkRFRF9CWV9MT0NLKG1fZGF0YWJhc2VHdWFyZCk7CiAKICAgICBTdHJpbmcgbV9kYXRhYmFz
ZURpcmVjdG9yeVBhdGg7CiAKICAgICBEYXRhYmFzZU1hbmFnZXJDbGllbnQqIG1fY2xpZW50IHsg
bnVsbHB0ciB9OwogCi0gICAgSGFzaE1hcDxTZWN1cml0eU9yaWdpbkRhdGEsIHN0ZDo6dW5pcXVl
X3B0cjxIYXNoQ291bnRlZFNldDxTdHJpbmc+Pj4gbV9iZWluZ0NyZWF0ZWQ7Ci0gICAgSGFzaE1h
cDxTZWN1cml0eU9yaWdpbkRhdGEsIHN0ZDo6dW5pcXVlX3B0cjxIYXNoU2V0PFN0cmluZz4+PiBt
X2JlaW5nRGVsZXRlZDsKLSAgICBIYXNoU2V0PFNlY3VyaXR5T3JpZ2luRGF0YT4gbV9vcmlnaW5z
QmVpbmdEZWxldGVkOwotICAgIGJvb2wgaXNEZWxldGluZ0RhdGFiYXNlT3JPcmlnaW5Gb3IoY29u
c3QgU2VjdXJpdHlPcmlnaW5EYXRhJiwgY29uc3QgU3RyaW5nJiBuYW1lKTsKLSAgICB2b2lkIHJl
Y29yZENyZWF0aW5nRGF0YWJhc2UoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiwgY29uc3QgU3Ry
aW5nJiBuYW1lKTsKLSAgICB2b2lkIGRvbmVDcmVhdGluZ0RhdGFiYXNlKGNvbnN0IFNlY3VyaXR5
T3JpZ2luRGF0YSYsIGNvbnN0IFN0cmluZyYgbmFtZSk7Ci0gICAgYm9vbCBjcmVhdGluZ0RhdGFi
YXNlKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYsIGNvbnN0IFN0cmluZyYgbmFtZSk7Ci0gICAg
Ym9vbCBjYW5EZWxldGVEYXRhYmFzZShjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmLCBjb25zdCBT
dHJpbmcmIG5hbWUpOwotICAgIHZvaWQgcmVjb3JkRGVsZXRpbmdEYXRhYmFzZShjb25zdCBTZWN1
cml0eU9yaWdpbkRhdGEmLCBjb25zdCBTdHJpbmcmIG5hbWUpOwotICAgIHZvaWQgZG9uZURlbGV0
aW5nRGF0YWJhc2UoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiwgY29uc3QgU3RyaW5nJiBuYW1l
KTsKLSAgICBib29sIGlzRGVsZXRpbmdEYXRhYmFzZShjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEm
LCBjb25zdCBTdHJpbmcmIG5hbWUpOwotICAgIGJvb2wgY2FuRGVsZXRlT3JpZ2luKGNvbnN0IFNl
Y3VyaXR5T3JpZ2luRGF0YSYpOwotICAgIGJvb2wgaXNEZWxldGluZ09yaWdpbihjb25zdCBTZWN1
cml0eU9yaWdpbkRhdGEmKTsKLSAgICB2b2lkIHJlY29yZERlbGV0aW5nT3JpZ2luKGNvbnN0IFNl
Y3VyaXR5T3JpZ2luRGF0YSYpOwotICAgIHZvaWQgZG9uZURlbGV0aW5nT3JpZ2luKGNvbnN0IFNl
Y3VyaXR5T3JpZ2luRGF0YSYpOworICAgIEhhc2hNYXA8U2VjdXJpdHlPcmlnaW5EYXRhLCBzdGQ6
OnVuaXF1ZV9wdHI8SGFzaENvdW50ZWRTZXQ8U3RyaW5nPj4+IG1fYmVpbmdDcmVhdGVkIFdURl9H
VUFSREVEX0JZX0xPQ0sobV9kYXRhYmFzZUd1YXJkKTsKKyAgICBIYXNoTWFwPFNlY3VyaXR5T3Jp
Z2luRGF0YSwgc3RkOjp1bmlxdWVfcHRyPEhhc2hTZXQ8U3RyaW5nPj4+IG1fYmVpbmdEZWxldGVk
IFdURl9HVUFSREVEX0JZX0xPQ0sobV9kYXRhYmFzZUd1YXJkKTsKKyAgICBIYXNoU2V0PFNlY3Vy
aXR5T3JpZ2luRGF0YT4gbV9vcmlnaW5zQmVpbmdEZWxldGVkIFdURl9HVUFSREVEX0JZX0xPQ0so
bV9kYXRhYmFzZUd1YXJkKTsKKyAgICBib29sIGlzRGVsZXRpbmdEYXRhYmFzZU9yT3JpZ2luRm9y
KGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYsIGNvbnN0IFN0cmluZyYgbmFtZSkgV1RGX1JFUVVJ
UkVTX0xPQ0sobV9kYXRhYmFzZUd1YXJkKTsKKyAgICB2b2lkIHJlY29yZENyZWF0aW5nRGF0YWJh
c2UoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiwgY29uc3QgU3RyaW5nJiBuYW1lKSBXVEZfUkVR
VUlSRVNfTE9DSyhtX2RhdGFiYXNlR3VhcmQpOworICAgIHZvaWQgZG9uZUNyZWF0aW5nRGF0YWJh
c2UoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiwgY29uc3QgU3RyaW5nJiBuYW1lKSBXVEZfUkVR
VUlSRVNfTE9DSyhtX2RhdGFiYXNlR3VhcmQpOworICAgIGJvb2wgY3JlYXRpbmdEYXRhYmFzZShj
b25zdCBTZWN1cml0eU9yaWdpbkRhdGEmLCBjb25zdCBTdHJpbmcmIG5hbWUpIFdURl9SRVFVSVJF
U19MT0NLKG1fZGF0YWJhc2VHdWFyZCk7CisgICAgYm9vbCBjYW5EZWxldGVEYXRhYmFzZShjb25z
dCBTZWN1cml0eU9yaWdpbkRhdGEmLCBjb25zdCBTdHJpbmcmIG5hbWUpIFdURl9SRVFVSVJFU19M
T0NLKG1fZGF0YWJhc2VHdWFyZCk7CisgICAgdm9pZCByZWNvcmREZWxldGluZ0RhdGFiYXNlKGNv
bnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYsIGNvbnN0IFN0cmluZyYgbmFtZSkgV1RGX1JFUVVJUkVT
X0xPQ0sobV9kYXRhYmFzZUd1YXJkKTsKKyAgICB2b2lkIGRvbmVEZWxldGluZ0RhdGFiYXNlKGNv
bnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYsIGNvbnN0IFN0cmluZyYgbmFtZSkgV1RGX1JFUVVJUkVT
X0xPQ0sobV9kYXRhYmFzZUd1YXJkKTsKKyAgICBib29sIGlzRGVsZXRpbmdEYXRhYmFzZShjb25z
dCBTZWN1cml0eU9yaWdpbkRhdGEmLCBjb25zdCBTdHJpbmcmIG5hbWUpIFdURl9SRVFVSVJFU19M
T0NLKG1fZGF0YWJhc2VHdWFyZCk7CisgICAgYm9vbCBjYW5EZWxldGVPcmlnaW4oY29uc3QgU2Vj
dXJpdHlPcmlnaW5EYXRhJikgV1RGX1JFUVVJUkVTX0xPQ0sobV9kYXRhYmFzZUd1YXJkKTsKKyAg
ICBib29sIGlzRGVsZXRpbmdPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJikgV1RGX1JF
UVVJUkVTX0xPQ0sobV9kYXRhYmFzZUd1YXJkKTsKKyAgICB2b2lkIHJlY29yZERlbGV0aW5nT3Jp
Z2luKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYpIFdURl9SRVFVSVJFU19MT0NLKG1fZGF0YWJh
c2VHdWFyZCk7CisgICAgdm9pZCBkb25lRGVsZXRpbmdPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmln
aW5EYXRhJikgV1RGX1JFUVVJUkVTX0xPQ0sobV9kYXRhYmFzZUd1YXJkKTsKIAogICAgIHN0YXRp
YyB2b2lkIHNjaGVkdWxlRm9yTm90aWZpY2F0aW9uKCk7CiAgICAgc3RhdGljIHZvaWQgbm90aWZ5
RGF0YWJhc2VzQ2hhbmdlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJkYXRhYmFzZS9TUUxDYWxsYmFja1dyYXBwZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZGF0YWJhc2UvU1FMQ2FsbGJhY2tXcmFwcGVyLmgKaW5kZXggMjcyMTQ0MTM3NTI1OTNlZDA4
YTI2NjI5NDBmY2E4N2E5MjQzNmM1Yi4uYzJlZDM2NmUzYzA4ZmU5ZTE5ZmY3Y2VjOTk5NTVlZDQ0
MDEzOTk0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9T
UUxDYWxsYmFja1dyYXBwZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFi
YXNlL1NRTENhbGxiYWNrV3JhcHBlci5oCkBAIC0yOSw3ICsyOSw3IEBACiAjcHJhZ21hIG9uY2UK
IAogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlIDx3dGYvTG9j
ay5oPgorI2luY2x1ZGUgPHd0Zi9DaGVja2VkTG9jay5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgogICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0UHRyOwogICAgICAgICBUKiBjYWxsYmFjazsKICAg
ICAgICAgewotICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbXV0ZXggfTsKKyAgICAgICAg
ICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKICAgICAgICAgICAgIGlmICghbV9jYWxsYmFj
aykgewogICAgICAgICAgICAgICAgIEFTU0VSVCghbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KTsK
ICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC04MywxOSArODMsMjAgQEAgcHVibGljOgogCiAg
ICAgUmVmUHRyPFQ+IHVud3JhcCgpCiAgICAgewotICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9t
dXRleCB9OworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAgICAgICAgIEFTU0VS
VCghbV9jYWxsYmFjayB8fCBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmlzQ29udGV4dFRocmVh
ZCgpKTsKICAgICAgICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0ID0gbnVsbHB0cjsKICAgICAg
ICAgcmV0dXJuIFdURk1vdmUobV9jYWxsYmFjayk7CiAgICAgfQogCiAgICAgLy8gVXNlZnVsIGZv
ciBvcHRpbWl6YXRpb25zIG9ubHksIHBsZWFzZSB0ZXN0IHRoZSByZXR1cm4gdmFsdWUgb2YgdW53
cmFwIHRvIGJlIHN1cmUuCi0gICAgYm9vbCBoYXNDYWxsYmFjaygpIGNvbnN0IHsgcmV0dXJuIG1f
Y2FsbGJhY2s7IH0KKyAgICAvLyBGSVhNRTogVGhpcyBpcyBub3QgdGhyZWFkLXNhZmUuCisgICAg
Ym9vbCBoYXNDYWxsYmFjaygpIGNvbnN0IFdURl9JR05PUkVTX1RIUkVBRF9TQUZFVFlfQU5BTFlT
SVMgeyByZXR1cm4gbV9jYWxsYmFjazsgfQogCiBwcml2YXRlOgotICAgIExvY2sgbV9tdXRleDsK
LSAgICBSZWZQdHI8VD4gbV9jYWxsYmFjazsKLSAgICBSZWZQdHI8U2NyaXB0RXhlY3V0aW9uQ29u
dGV4dD4gbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0OworICAgIENoZWNrZWRMb2NrIG1fbG9jazsK
KyAgICBSZWZQdHI8VD4gbV9jYWxsYmFjayBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fbG9jayk7Cisg
ICAgUmVmUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ+IG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fbG9jayk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRy
YW5zYWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJh
bnNhY3Rpb24uY3BwCmluZGV4IGU3NDIxYzc3YzUzMjcwMTFmNThiZjEyNjE2ZjllMDRkYjUxYjY2
NmUuLmQxNGViZmM1NzljZWE2MzgzNGE4NzkzYTM1ZWRlY2Q1NjQ4NjlhZTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb24uY3Bw
CkBAIC0xNDQsNyArMTQ0LDcgQEAgdm9pZCBTUUxUcmFuc2FjdGlvbjo6Y2FsbEVycm9yQ2FsbGJh
Y2tEdWVUb0ludGVycnVwdGlvbigpCiAKIHZvaWQgU1FMVHJhbnNhY3Rpb246OmVucXVldWVTdGF0
ZW1lbnQoc3RkOjp1bmlxdWVfcHRyPFNRTFN0YXRlbWVudD4gc3RhdGVtZW50KQogewotICAgIExv
Y2tlciBsb2NrZXIgeyBtX3N0YXRlbWVudE11dGV4IH07CisgICAgTG9ja2VyIGxvY2tlciB7IG1f
c3RhdGVtZW50TG9jayB9OwogICAgIG1fc3RhdGVtZW50UXVldWUuYXBwZW5kKFdURk1vdmUoc3Rh
dGVtZW50KSk7CiB9CiAKQEAgLTE5MCw3ICsxOTAsNyBAQCB2b2lkIFNRTFRyYW5zYWN0aW9uOjpj
aGVja0FuZEhhbmRsZUNsb3NlZERhdGFiYXNlKCkKICAgICAvLyBJZiB0aGUgZGF0YWJhc2Ugd2Fz
IHN0b3BwZWQsIGRvbid0IGRvIGFueXRoaW5nIGFuZCBjYW5jZWwgcXVldWVkIHdvcmsKICAgICBM
T0coU3RvcmFnZUFQSSwgIkRhdGFiYXNlIHdhcyBzdG9wcGVkIG9yIGludGVycnVwdGVkIC0gY2Fu
Y2VsbGluZyB3b3JrIGZvciB0aGlzIHRyYW5zYWN0aW9uIik7CiAKLSAgICBMb2NrZXIgbG9ja2Vy
IHsgbV9zdGF0ZW1lbnRNdXRleCB9OworICAgIExvY2tlciBsb2NrZXIgeyBtX3N0YXRlbWVudExv
Y2sgfTsKICAgICBtX3N0YXRlbWVudFF1ZXVlLmNsZWFyKCk7CiAgICAgbV9uZXh0U3RlcCA9IG51
bGxwdHI7CiAKQEAgLTUxNiw3ICs1MTYsNyBAQCB2b2lkIFNRTFRyYW5zYWN0aW9uOjpnZXROZXh0
U3RhdGVtZW50KCkKIHsKICAgICBtX2N1cnJlbnRTdGF0ZW1lbnQgPSBudWxscHRyOwogCi0gICAg
TG9ja2VyIGxvY2tlciB7IG1fc3RhdGVtZW50TXV0ZXggfTsKKyAgICBMb2NrZXIgbG9ja2VyIHsg
bV9zdGF0ZW1lbnRMb2NrIH07CiAgICAgaWYgKCFtX3N0YXRlbWVudFF1ZXVlLmlzRW1wdHkoKSkK
ICAgICAgICAgbV9jdXJyZW50U3RhdGVtZW50ID0gbV9zdGF0ZW1lbnRRdWV1ZS50YWtlRmlyc3Qo
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FM
VHJhbnNhY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJh
bnNhY3Rpb24uaAppbmRleCA1NDBmNmUzMWZmM2IzZTI5MTJhOThlN2YyZDgwNzliYTU5MDBhMmJj
Li4zMWUxMGI3MjM4NDE5Y2ZjMGI3MmNiNTE3MDhlMDZhOWJjZWVmMGU0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbi5oCkBAIC0z
Myw2ICszMyw3IEBACiAjaW5jbHVkZSAiU1FMVHJhbnNhY3Rpb25CYWNrZW5kLmgiCiAjaW5jbHVk
ZSAiU1FMVHJhbnNhY3Rpb25TdGF0ZU1hY2hpbmUuaCIKICNpbmNsdWRlICJTUUxWYWx1ZS5oIgor
I2luY2x1ZGUgPHd0Zi9DaGVja2VkTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgogI2lu
Y2x1ZGUgPHd0Zi9Mb2NrLmg+CiAKQEAgLTEzOCw4ICsxMzksOCBAQCBwcml2YXRlOgogICAgIGJv
b2wgbV9yZWFkT25seSB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2hhc1ZlcnNpb25NaXNtYXRjaCB7
IGZhbHNlIH07CiAKLSAgICBMb2NrIG1fc3RhdGVtZW50TXV0ZXg7Ci0gICAgRGVxdWU8c3RkOjp1
bmlxdWVfcHRyPFNRTFN0YXRlbWVudD4+IG1fc3RhdGVtZW50UXVldWU7CisgICAgQ2hlY2tlZExv
Y2sgbV9zdGF0ZW1lbnRMb2NrOworICAgIERlcXVlPHN0ZDo6dW5pcXVlX3B0cjxTUUxTdGF0ZW1l
bnQ+PiBtX3N0YXRlbWVudFF1ZXVlIFdURl9HVUFSREVEX0JZX0xPQ0sobV9zdGF0ZW1lbnRMb2Nr
KTsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxTUUxTdGF0ZW1lbnQ+IG1fY3VycmVudFN0YXRlbWVu
dDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxU
cmFuc2FjdGlvbkJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFz
ZS9TUUxUcmFuc2FjdGlvbkJhY2tlbmQuY3BwCmluZGV4IGEwNDNmN2NhMzI2YmU4YzBlOWJjOTgz
YmMzN2JiZjQ1MThlOTA2MTQuLjYyYjI3Y2RiMzMyNTE0ZDZhNDk3MTBhMDcxZDQxMTc1YTcwZGJk
ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJh
bnNhY3Rpb25CYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFi
YXNlL1NRTFRyYW5zYWN0aW9uQmFja2VuZC5jcHAKQEAgLTM1Nyw3ICszNTcsNyBAQCB2b2lkIFNR
TFRyYW5zYWN0aW9uQmFja2VuZDo6ZG9DbGVhbnVwKCkKIAogICAgIG1fZnJvbnRlbmQucmVsZWFz
ZU9yaWdpbkxvY2tJZk5lZWRlZCgpOwogCi0gICAgTG9ja2VyIGxvY2tlciB7IG1fZnJvbnRlbmQu
bV9zdGF0ZW1lbnRNdXRleCB9OworICAgIExvY2tlciBsb2NrZXIgeyBtX2Zyb250ZW5kLm1fc3Rh
dGVtZW50TG9jayB9OwogICAgIG1fZnJvbnRlbmQubV9zdGF0ZW1lbnRRdWV1ZS5jbGVhcigpOwog
CiAgICAgaWYgKG1fZnJvbnRlbmQubV9zcWxpdGVUcmFuc2FjdGlvbikgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUu
aCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRU
cmVlLmgKaW5kZXggMjg0NWM3MTI0Yzk2ODVkZTk0NjQ4ZDY2Mzk2NWZjNjJlMTdkN2Q3ZS4uODFh
YjkzYzZiOWJiNDZhY2ZhY2E0MmI5OGQxNWIwNDFmZGY5MmM3NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJl
ZS5oCkBAIC0zNjEsNyArMzYxLDcgQEAgcHVibGljOgogICAgIC8vIEJvdGggc2V0Um9vdE5vZGVJ
RCBhbmQgc2V0Rm9jdXNlZE5vZGVJRCBhcmUgY2FsbGVkIGR1cmluZyB0aGUgZ2VuZXJhdGlvbgog
ICAgIC8vIG9mIHRoZSBJc29sYXRlZFRyZWUuCiAgICAgLy8gRm9jdXNlZCBub2RlIHVwZGF0ZXMg
aW4gQVhPYmplY3RDYWNoZSB1c2Ugc2V0Rm9jdXNOb2RlSUQuCi0gICAgdm9pZCBzZXRSb290Tm9k
ZShBWElzb2xhdGVkT2JqZWN0Kik7CisgICAgdm9pZCBzZXRSb290Tm9kZShBWElzb2xhdGVkT2Jq
ZWN0KikgV1RGX1JFUVVJUkVTX0xPQ0sobV9jaGFuZ2VMb2dMb2NrKTsKICAgICB2b2lkIHNldEZv
Y3VzZWROb2RlSUQoQVhJRCk7CiAKICAgICAvLyBDYWxsZWQgb24gQVggdGhyZWFkIGZyb20gV2Vi
QWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgbWV0aG9kcy4KQEAgLTM4MSw3ICszODEsNyBAQCBw
cml2YXRlOgogICAgIC8vIENhbGwgb24gbWFpbiB0aHJlYWQKICAgICBSZWY8QVhJc29sYXRlZE9i
amVjdD4gY3JlYXRlU3VidHJlZShBWENvcmVPYmplY3QmLCBBWElEIHBhcmVudElELCBib29sIGF0
dGFjaFdyYXBwZXIpOwogICAgIC8vIENhbGxlZCBvbiBtYWluIHRocmVhZCB0byB1cGRhdGUgYm90
aCBtX25vZGVNYXAgYW5kIG1fcGVuZGluZ0NoaWxkcmVuVXBkYXRlcy4KLSAgICB2b2lkIHVwZGF0
ZUNoaWxkcmVuSURzKEFYSUQgcGFyZW50SUQsIFZlY3RvcjxBWElEPiYmIGNoaWxkcmVuSURzKTsK
KyAgICB2b2lkIHVwZGF0ZUNoaWxkcmVuSURzKEFYSUQgcGFyZW50SUQsIFZlY3RvcjxBWElEPiYm
IGNoaWxkcmVuSURzKSBXVEZfUkVRVUlSRVNfTE9DSyhtX2NoYW5nZUxvZ0xvY2spOwogCiAgICAg
QVhJc29sYXRlZFRyZWVJRCBtX3RyZWVJRDsKICAgICBBWE9iamVjdENhY2hlKiBtX2F4T2JqZWN0
Q2FjaGUgeyBudWxscHRyIH07CkBAIC0zOTMsMTUgKzM5MywxNSBAQCBwcml2YXRlOgogICAgIEhh
c2hNYXA8QVhJRCwgUmVmPEFYSXNvbGF0ZWRPYmplY3Q+PiBtX3JlYWRlclRocmVhZE5vZGVNYXA7
CiAKICAgICAvLyBXcml0dGVuIHRvIGJ5IG1haW4gdGhyZWFkIHVuZGVyIGxvY2ssIGFjY2Vzc2Vk
IGFuZCBhcHBsaWVkIGJ5IEFYIHRocmVhZC4KLSAgICBSZWZQdHI8QVhJc29sYXRlZE9iamVjdD4g
bV9yb290Tm9kZTsKLSAgICBWZWN0b3I8Tm9kZUNoYW5nZT4gbV9wZW5kaW5nQXBwZW5kczsgLy8g
Tm9kZXMgdG8gYmUgYWRkZWQgdG8gdGhlIHRyZWUgYW5kIHBsYXRmb3JtLXdyYXBwZWQuCi0gICAg
VmVjdG9yPEFYUHJvcGVydHlDaGFuZ2U+IG1fcGVuZGluZ1Byb3BlcnR5Q2hhbmdlczsKLSAgICBW
ZWN0b3I8QVhJRD4gbV9wZW5kaW5nTm9kZVJlbW92YWxzOyAvLyBOb2RlcyB0byBiZSByZW1vdmVk
IGZyb20gdGhlIHRyZWUuCi0gICAgVmVjdG9yPEFYSUQ+IG1fcGVuZGluZ1N1YnRyZWVSZW1vdmFs
czsgLy8gTm9kZXMgd2hvc2Ugc3VidHJlZXMgYXJlIHRvIGJlIHJlbW92ZWQgZnJvbSB0aGUgdHJl
ZS4KLSAgICBWZWN0b3I8c3RkOjpwYWlyPEFYSUQsIFZlY3RvcjxBWElEPj4+IG1fcGVuZGluZ0No
aWxkcmVuVXBkYXRlczsKLSAgICBBWElEIG1fcGVuZGluZ0ZvY3VzZWROb2RlSUQgeyBJbnZhbGlk
QVhJRCB9OworICAgIFJlZlB0cjxBWElzb2xhdGVkT2JqZWN0PiBtX3Jvb3ROb2RlIFdURl9HVUFS
REVEX0JZX0xPQ0sobV9jaGFuZ2VMb2dMb2NrKTsKKyAgICBWZWN0b3I8Tm9kZUNoYW5nZT4gbV9w
ZW5kaW5nQXBwZW5kcyBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fY2hhbmdlTG9nTG9jayk7IC8vIE5v
ZGVzIHRvIGJlIGFkZGVkIHRvIHRoZSB0cmVlIGFuZCBwbGF0Zm9ybS13cmFwcGVkLgorICAgIFZl
Y3RvcjxBWFByb3BlcnR5Q2hhbmdlPiBtX3BlbmRpbmdQcm9wZXJ0eUNoYW5nZXMgV1RGX0dVQVJE
RURfQllfTE9DSyhtX2NoYW5nZUxvZ0xvY2spOworICAgIFZlY3RvcjxBWElEPiBtX3BlbmRpbmdO
b2RlUmVtb3ZhbHMgV1RGX0dVQVJERURfQllfTE9DSyhtX2NoYW5nZUxvZ0xvY2spOyAvLyBOb2Rl
cyB0byBiZSByZW1vdmVkIGZyb20gdGhlIHRyZWUuCisgICAgVmVjdG9yPEFYSUQ+IG1fcGVuZGlu
Z1N1YnRyZWVSZW1vdmFscyBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fY2hhbmdlTG9nTG9jayk7IC8v
IE5vZGVzIHdob3NlIHN1YnRyZWVzIGFyZSB0byBiZSByZW1vdmVkIGZyb20gdGhlIHRyZWUuCisg
ICAgVmVjdG9yPHN0ZDo6cGFpcjxBWElELCBWZWN0b3I8QVhJRD4+PiBtX3BlbmRpbmdDaGlsZHJl
blVwZGF0ZXMgV1RGX0dVQVJERURfQllfTE9DSyhtX2NoYW5nZUxvZ0xvY2spOworICAgIEFYSUQg
bV9wZW5kaW5nRm9jdXNlZE5vZGVJRCBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fY2hhbmdlTG9nTG9j
aykgeyBJbnZhbGlkQVhJRCB9OwogICAgIEFYSUQgbV9mb2N1c2VkTm9kZUlEIHsgSW52YWxpZEFY
SUQgfTsKLSAgICBMb2NrIG1fY2hhbmdlTG9nTG9jazsKKyAgICBDaGVja2VkTG9jayBtX2NoYW5n
ZUxvZ0xvY2s7CiB9OwogCiBpbmxpbmUgQVhPYmplY3RDYWNoZSogQVhJc29sYXRlZFRyZWU6OmF4
T2JqZWN0Q2FjaGUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
QWJvcnRhYmxlVGFza1F1ZXVlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9BYm9ydGFibGVU
YXNrUXVldWUuaAppbmRleCA4MjY5OWRlNjBmMDU2NTFkNmM3MDgxNjFhOGEzOGFjNzE5MjlhNjZj
Li5mODQ5MWYwMTJlNWQ2NjgyNjBjNTAzN2Q0OWRmOGQ2NzBmOGY1OWYyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9BYm9ydGFibGVUYXNrUXVldWUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9BYm9ydGFibGVUYXNrUXVldWUuaApAQCAtMjAsMTAgKzIwLDEwIEBA
CiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSA8d3RmL0NvbmRpdGlvbi5oPgorI2luY2x1ZGUg
PHd0Zi9DaGVja2VkQ29uZGl0aW9uLmg+CisjaW5jbHVkZSA8d3RmL0NoZWNrZWRMb2NrLmg+CiAj
aW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+Ci0jaW5jbHVk
ZSA8d3RmL0xvY2suaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogI2luY2x1ZGUgPHd0Zi9T
dGRMaWJFeHRyYXMuaD4KIApAQCAtNzMsNyArNzMsNyBAQCBwdWJsaWM6CiAgICAgfkFib3J0YWJs
ZVRhc2tRdWV1ZSgpCiAgICAgewogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAg
ICAgICBBU1NFUlQoIW1fbXV0ZXguaXNIZWxkKCkpOworICAgICAgICBBU1NFUlQoIW1fbG9jay5p
c0hlbGQoKSk7CiAgICAgICAgIEFTU0VSVChtX2NoYW5uZWwuaXNFbXB0eSgpKTsKICAgICB9CiAK
QEAgLTk0LDcgKzk0LDcgQEAgcHVibGljOgogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OwogCiAgICAgICAgIHsKLSAgICAgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX211dGV4IH07Cisg
ICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAgICAgICAgICAgICBtX2Fib3J0
aW5nID0gdHJ1ZTsKICAgICAgICAgICAgIGNhbmNlbEFsbFRhc2tzKCk7CiAgICAgICAgIH0KQEAg
LTEwOCw3ICsxMDgsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOwogCi0gICAgICAgIExvY2tlciBsb2NrZXIgeyBtX211dGV4IH07CisgICAgICAgIExv
Y2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKICAgICAgICAgQVNTRVJUKG1fYWJvcnRpbmcpOwogICAg
ICAgICBtX2Fib3J0aW5nID0gZmFsc2U7CiAgICAgfQpAQCAtMTIzLDcgKzEyMyw3IEBAIHB1Ymxp
YzoKICAgICB7CiAgICAgICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogCi0gICAgICAgIExv
Y2tlciBsb2NrZXIgeyBtX211dGV4IH07CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sg
fTsKICAgICAgICAgaWYgKG1fYWJvcnRpbmcpCiAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTE0
MywxOSArMTQzLDE5IEBAIHB1YmxpYzoKICAgICAgICAgLy8gRG9uJ3QgZGVhZGxvY2sgdGhlIG1h
aW4gdGhyZWFkIHdpdGggaXRzZWxmLgogICAgICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsK
IAotICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9tdXRleCB9OworICAgICAgICBMb2NrZXIgbG9j
a2VyIHsgbV9sb2NrIH07CiAgICAgICAgIGlmIChtX2Fib3J0aW5nKQogICAgICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDxSPiByZXNwb25zZSA9IFdURjo6
bnVsbG9wdDsKICAgICAgICAgcG9zdFRhc2soW3RoaXMsICZyZXNwb25zZSwgJm1haW5UaHJlYWRU
YXNrSGFuZGxlcl0oKSB7CiAgICAgICAgICAgICBSIHJlc3BvbnNlVmFsdWUgPSBtYWluVGhyZWFk
VGFza0hhbmRsZXIoKTsKLSAgICAgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX211dGV4IH07Cisg
ICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAgICAgICAgICAgICBpZiAoIW1f
YWJvcnRpbmcpCiAgICAgICAgICAgICAgICAgcmVzcG9uc2UgPSBXVEZNb3ZlKHJlc3BvbnNlVmFs
dWUpOwogICAgICAgICAgICAgbV9hYm9ydGVkT3JSZXNwb25zZVNldC5ub3RpZnlBbGwoKTsKICAg
ICAgICAgfSk7Ci0gICAgICAgIG1fYWJvcnRlZE9yUmVzcG9uc2VTZXQud2FpdChtX211dGV4LCBb
dGhpcywgJnJlc3BvbnNlXSgpIHsKKyAgICAgICAgbV9hYm9ydGVkT3JSZXNwb25zZVNldC53YWl0
KG1fbG9jaywgW3RoaXMsICZyZXNwb25zZV0oKSB7CiAgICAgICAgICAgICByZXR1cm4gbV9hYm9y
dGluZyB8fCByZXNwb25zZTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybiByZXNwb25zZTsK
QEAgLTE5NywxMCArMTk3LDExIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBpZiAoaXNDYW5jZWxs
ZWQoKSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgICAgIExvY2tlciBsb2Nr
IHsgbV90YXNrUXVldWUtPm1fbXV0ZXggfTsKLSAgICAgICAgICAgIEFTU0VSVCh0aGlzID09IG1f
dGFza1F1ZXVlLT5tX2NoYW5uZWwuZmlyc3QoKS5wdHIoKSk7Ci0gICAgICAgICAgICBtX3Rhc2tR
dWV1ZS0+bV9jaGFubmVsLnJlbW92ZUZpcnN0KCk7Ci0gICAgICAgICAgICBsb2NrLnVubG9ja0Vh
cmx5KCk7CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgTG9ja2VyIGxvY2sgeyBtX3Rh
c2tRdWV1ZS0+bV9sb2NrIH07CisgICAgICAgICAgICAgICAgQVNTRVJUKHRoaXMgPT0gbV90YXNr
UXVldWUtPm1fY2hhbm5lbC5maXJzdCgpLnB0cigpKTsKKyAgICAgICAgICAgICAgICBtX3Rhc2tR
dWV1ZS0+bV9jaGFubmVsLnJlbW92ZUZpcnN0KCk7CisgICAgICAgICAgICB9CiAgICAgICAgICAg
ICBtX3Rhc2tDYWxsYmFjaygpOwogICAgICAgICB9CiAKQEAgLTIxMywyNyArMjE0LDI3IEBAIHBy
aXZhdGU6CiAgICAgICAgIHsgfQogICAgIH07CiAKLSAgICB2b2lkIHBvc3RUYXNrKFdURjo6RnVu
Y3Rpb248dm9pZCgpPiYmIGNhbGxiYWNrKQorICAgIHZvaWQgcG9zdFRhc2soV1RGOjpGdW5jdGlv
bjx2b2lkKCk+JiYgY2FsbGJhY2spIFdURl9SRVFVSVJFU19MT0NLKG1fbG9jaykKICAgICB7Ci0g
ICAgICAgIEFTU0VSVChtX211dGV4LmlzSGVsZCgpKTsKKyAgICAgICAgQVNTRVJUKG1fbG9jay5p
c0hlbGQoKSk7CiAgICAgICAgIFJlZjxUYXNrPiB0YXNrID0gVGFzazo6Y3JlYXRlKHRoaXMsIFdU
Rk1vdmUoY2FsbGJhY2spKTsKICAgICAgICAgbV9jaGFubmVsLmFwcGVuZCh0YXNrLmNvcHlSZWYo
KSk7CiAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbdGFzayA9IFdURk1vdmUodGFz
ayldKCkgeyB0YXNrLT5kaXNwYXRjaCgpOyB9KTsKICAgICB9CiAKLSAgICB2b2lkIGNhbmNlbEFs
bFRhc2tzKCkKKyAgICB2b2lkIGNhbmNlbEFsbFRhc2tzKCkgV1RGX1JFUVVJUkVTX0xPQ0sobV9s
b2NrKQogICAgIHsKICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICAgICAgQVNT
RVJUKG1fbXV0ZXguaXNIZWxkKCkpOworICAgICAgICBBU1NFUlQobV9sb2NrLmlzSGVsZCgpKTsK
ICAgICAgICAgZm9yIChSZWY8VGFzaz4mIHRhc2sgOiBtX2NoYW5uZWwpCiAgICAgICAgICAgICB0
YXNrLT5jYW5jZWwoKTsKICAgICAgICAgbV9jaGFubmVsLmNsZWFyKCk7CiAgICAgfQogCi0gICAg
Ym9vbCBtX2Fib3J0aW5nIHsgZmFsc2UgfTsKLSAgICBMb2NrIG1fbXV0ZXg7Ci0gICAgQ29uZGl0
aW9uIG1fYWJvcnRlZE9yUmVzcG9uc2VTZXQ7Ci0gICAgV1RGOjpEZXF1ZTxSZWY8VGFzaz4+IG1f
Y2hhbm5lbDsKKyAgICBib29sIG1fYWJvcnRpbmcgV1RGX0dVQVJERURfQllfTE9DSyhtX2xvY2sp
IHsgZmFsc2UgfTsKKyAgICBDaGVja2VkTG9jayBtX2xvY2s7CisgICAgQ2hlY2tlZENvbmRpdGlv
biBtX2Fib3J0ZWRPclJlc3BvbnNlU2V0OworICAgIFdURjo6RGVxdWU8UmVmPFRhc2s+PiBtX2No
YW5uZWwgV1RGX0dVQVJERURfQllfTE9DSyhtX2xvY2spOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2Ev
QXVkaW9EZXN0aW5hdGlvbkNvY29hLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L2NvY29hL0F1ZGlvRGVzdGluYXRpb25Db2NvYS5jcHAKaW5kZXggYzBlMDhjYTk1NmU1ZTg1NDA3
OTBiNWJjNzRhMzlmZTZhNDljNzIzNi4uMzkyYzM2MTQwNGZjMmM5NTBlYmI5Mzg4OWE2MjljYjVh
MzcxZTQyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2Ev
QXVkaW9EZXN0aW5hdGlvbkNvY29hLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9jb2NvYS9BdWRpb0Rlc3RpbmF0aW9uQ29jb2EuY3BwCkBAIC0yMTksMTAgKzIxOSwxMCBA
QCBPU1N0YXR1cyBBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6OnJlbmRlcihkb3VibGUgc2FtcGxlVGlt
ZSwgdWludDY0X3QgaG9zdFRpbWUsIFVJbgogICAgIH0KIAogICAgIC8vIFdoZW4gdGhlcmUgaXMg
YSBBdWRpb1dvcmtsZXQsIHdlIGRvIHJlbmRlcmluZyBvbiB0aGUgQXVkaW9Xb3JrbGV0VGhyZWFk
LgotICAgIGF1dG8gbG9ja2VyID0gdHJ5SG9sZExvY2sobV9kaXNwYXRjaFRvUmVuZGVyVGhyZWFk
TG9jayk7Ci0gICAgaWYgKCFsb2NrZXIpCisgICAgaWYgKCFtX2Rpc3BhdGNoVG9SZW5kZXJUaHJl
YWRMb2NrLnRyeUxvY2soKSkKICAgICAgICAgcmV0dXJuIC0xOwogCisgICAgTG9ja2VyIGxvY2tl
ciB7IEFkb3B0TG9ja1RhZyB7IH0sIG1fZGlzcGF0Y2hUb1JlbmRlclRocmVhZExvY2sgfTsKICAg
ICBpZiAoIW1fZGlzcGF0Y2hUb1JlbmRlclRocmVhZCkKICAgICAgICAgcmVuZGVyT25SZW5kZXJp
bmdUaGVhZElmUGxheWluZyhmcmFtZXNUb1JlbmRlcik7CiAgICAgZWxzZSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0Rlc3RpbmF0aW9uQ29j
b2EuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvRGVzdGluYXRp
b25Db2NvYS5oCmluZGV4IDY5OTA1MzRhNTNiM2NhMmE1MTE3NzFiYjM0YTM5NjNhMjIyZTJkNGEu
LjljM2JkN2E0Zjk3NDY1YzkxYmNlMzYzNTdhODczZDhiMGMwZmJiMzEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvRGVzdGluYXRpb25Db2NvYS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvRGVzdGluYXRp
b25Db2NvYS5oCkBAIC05MSw4ICs5MSw4IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRy
PE11bHRpQ2hhbm5lbFJlc2FtcGxlcj4gbV9yZXNhbXBsZXI7CiAgICAgQXVkaW9JT1Bvc2l0aW9u
IG1fb3V0cHV0VGltZXN0YW1wOwogCi0gICAgTG9jayBtX2Rpc3BhdGNoVG9SZW5kZXJUaHJlYWRM
b2NrOwotICAgIEZ1bmN0aW9uPHZvaWQoRnVuY3Rpb248dm9pZCgpPiYmKT4gbV9kaXNwYXRjaFRv
UmVuZGVyVGhyZWFkOworICAgIENoZWNrZWRMb2NrIG1fZGlzcGF0Y2hUb1JlbmRlclRocmVhZExv
Y2s7CisgICAgRnVuY3Rpb248dm9pZChGdW5jdGlvbjx2b2lkKCk+JiYpPiBtX2Rpc3BhdGNoVG9S
ZW5kZXJUaHJlYWQgV1RGX0dVQVJERURfQllfTE9DSyhtX2Rpc3BhdGNoVG9SZW5kZXJUaHJlYWRM
b2NrKTsKIAogICAgIGZsb2F0IG1fY29udGV4dFNhbXBsZVJhdGU7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0aW9uR1N0
cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9E
ZXN0aW5hdGlvbkdTdHJlYW1lci5oCmluZGV4IGZmZDNlODBlNTA2ZmZlOWY3NWFkMGE4NTAwNTcx
YzNkNmEwZTY3OWQuLjg0MGYwYTcxZTljMTU3MGQ3NzQ2ZDQyMjE5MWFhMjhkYmJjYjE3MmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rl
c3RpbmF0aW9uR1N0cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
Z3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuaApAQCAtNTgsOCArNTgsNiBAQCBw
cml2YXRlOgogICAgIEdSZWZQdHI8R3N0RWxlbWVudD4gbV9zcmM7CiAgICAgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4gbV9zdGFydHVwQ29tcGxldGlvbkhhbmRsZXI7CiAgICAgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sKT4gbV9zdG9wQ29tcGxldGlvbkhhbmRsZXI7Ci0gICAgTG9j
ayBtX3NldFN0YXRlTG9jazsKLSAgICBDb25kaXRpb24gbV9zZXRTdGF0ZUNvbmRpdGlvbjsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb1NvdXJjZVByb3Zp
ZGVyR1N0cmVhbWVyLmNwcAppbmRleCA2OTBjMWRiOTc1OTI5NGU0Y2IwNzQ0NDAzNDExYmY5ZDU2
NWUyYTZhLi5mNzc1YTMyZmQ0NzgwMmVlNTM4ODU3MTYzZWQ3NzlhMTIxMzhjZDQ3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9Tb3VyY2VQ
cm92aWRlckdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
Z3N0cmVhbWVyL0F1ZGlvU291cmNlUHJvdmlkZXJHU3RyZWFtZXIuY3BwCkBAIC0xNTksOSArMTU5
LDEwIEBAIHZvaWQgQXVkaW9Tb3VyY2VQcm92aWRlckdTdHJlYW1lcjo6Y29uZmlndXJlQXVkaW9C
aW4oR3N0RWxlbWVudCogYXVkaW9CaW4sIEdzdEVsCiB2b2lkIEF1ZGlvU291cmNlUHJvdmlkZXJH
U3RyZWFtZXI6OnByb3ZpZGVJbnB1dChBdWRpb0J1cyogYnVzLCBzaXplX3QgZnJhbWVzVG9Qcm9j
ZXNzKQogewogICAgIEdTVF9UUkFDRSgiRmV0Y2hpbmcgYnVmZmVycyBmcm9tIGFkYXB0ZXJzIik7
Ci0gICAgYXV0byBsb2NrZXIgPSB0cnlIb2xkTG9jayhtX2FkYXB0ZXJNdXRleCk7Ci0gICAgaWYg
KCFsb2NrZXIpCisgICAgaWYgKCFtX2FkYXB0ZXJMb2NrLnRyeUxvY2soKSkKICAgICAgICAgcmV0
dXJuOworCisgICAgTG9ja2VyIGxvY2tlciB7IEFkb3B0TG9ja1RhZyB7IH0sIG1fYWRhcHRlckxv
Y2sgfTsKICAgICBmb3IgKGF1dG8mIGl0IDogbV9hZGFwdGVycykKICAgICAgICAgY29weUdTdHJl
YW1lckJ1ZmZlcnNUb0F1ZGlvQ2hhbm5lbChpdC52YWx1ZS5nZXQoKSwgYnVzLCBpdC5rZXkgLSAx
LCBmcmFtZXNUb1Byb2Nlc3MpOwogfQpAQCAtMTgyLDcgKzE4Myw3IEBAIEdzdEZsb3dSZXR1cm4g
QXVkaW9Tb3VyY2VQcm92aWRlckdTdHJlYW1lcjo6aGFuZGxlU2FtcGxlKEdzdEFwcFNpbmsqIHNp
bmssIGJvb2wKIAogICAgIEdTVF9UUkFDRSgiU3RvcmluZyBhdWRpbyBzYW1wbGUgJSIgR1NUX1BU
Ul9GT1JNQVQsIHNhbXBsZS5nZXQoKSk7CiAgICAgewotICAgICAgICBMb2NrZXIgbG9ja2VyIHsg
bV9hZGFwdGVyTXV0ZXggfTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fYWRhcHRlckxvY2sg
fTsKICAgICAgICAgR1F1YXJrIHF1YXJrID0gZ19xdWFya19mcm9tX3N0YXRpY19zdHJpbmcoImNo
YW5uZWwtaWQiKTsKICAgICAgICAgaW50IGNoYW5uZWxJZCA9IEdQT0lOVEVSX1RPX0lOVChnX29i
amVjdF9nZXRfcWRhdGEoR19PQkpFQ1Qoc2luayksIHF1YXJrKSk7CiAgICAgICAgIEdTVF9ERUJV
RygiQ2hhbm5lbCBJRDogJWQiLCBjaGFubmVsSWQpOwpAQCAtMzg0LDcgKzM4NSw3IEBAIHZvaWQg
QXVkaW9Tb3VyY2VQcm92aWRlckdTdHJlYW1lcjo6ZGVpbnRlcmxlYXZlUGFkc0NvbmZpZ3VyZWQo
KQogCiB2b2lkIEF1ZGlvU291cmNlUHJvdmlkZXJHU3RyZWFtZXI6OmNsZWFyQWRhcHRlcnMoKQog
ewotICAgIExvY2tlciBsb2NrZXIgeyBtX2FkYXB0ZXJNdXRleCB9OworICAgIExvY2tlciBsb2Nr
ZXIgeyBtX2FkYXB0ZXJMb2NrIH07CiAgICAgZm9yIChhdXRvJiBhZGFwdGVyIDogbV9hZGFwdGVy
cy52YWx1ZXMoKSkKICAgICAgICAgZ3N0X2FkYXB0ZXJfY2xlYXIoYWRhcHRlci5nZXQoKSk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVk
aW9Tb3VyY2VQcm92aWRlckdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vZ3N0cmVhbWVyL0F1ZGlvU291cmNlUHJvdmlkZXJHU3RyZWFtZXIuaAppbmRleCBiOGQ4NDdk
MmQyZmM2OTM3ZTMwNTRkMjg2NzYzNzc3YjhhMjYxY2Q3Li41YTNhZjZjZjg5MzBjMjcxY2M0MTBl
Mzg2MTExYWNlOThkNGVjMWU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9nc3RyZWFtZXIvQXVkaW9Tb3VyY2VQcm92aWRlckdTdHJlYW1lci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb1NvdXJjZVByb3ZpZGVyR1N0
cmVhbWVyLmgKQEAgLTI1LDYgKzI1LDcgQEAKICNpbmNsdWRlICJHUmVmUHRyR1N0cmVhbWVyLmgi
CiAjaW5jbHVkZSAiTWFpblRocmVhZE5vdGlmaWVyLmgiCiAjaW5jbHVkZSA8Z3N0L2dzdC5oPgor
I2luY2x1ZGUgPHd0Zi9DaGVja2VkTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAj
aW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAKQEAgLTgxLDExICs4MiwxMSBAQCBwcml2YXRl
OgogICAgIEdSZWZQdHI8R3N0RWxlbWVudD4gbV9hdWRpb1NpbmtCaW47CiAgICAgV2Vha1B0cjxB
dWRpb1NvdXJjZVByb3ZpZGVyQ2xpZW50PiBtX2NsaWVudDsKICAgICBpbnQgbV9kZWludGVybGVh
dmVTb3VyY2VQYWRzIHsgMCB9OwotICAgIEhhc2hNYXA8aW50LCBHUmVmUHRyPEdzdEFkYXB0ZXI+
PiBtX2FkYXB0ZXJzOworICAgIEhhc2hNYXA8aW50LCBHUmVmUHRyPEdzdEFkYXB0ZXI+PiBtX2Fk
YXB0ZXJzIFdURl9HVUFSREVEX0JZX0xPQ0sobV9hZGFwdGVyTG9jayk7CiAgICAgdW5zaWduZWQg
bG9uZyBtX2RlaW50ZXJsZWF2ZVBhZEFkZGVkSGFuZGxlcklkIHsgMCB9OwogICAgIHVuc2lnbmVk
IGxvbmcgbV9kZWludGVybGVhdmVOb01vcmVQYWRzSGFuZGxlcklkIHsgMCB9OwogICAgIHVuc2ln
bmVkIGxvbmcgbV9kZWludGVybGVhdmVQYWRSZW1vdmVkSGFuZGxlcklkIHsgMCB9OwotICAgIExv
Y2sgbV9hZGFwdGVyTXV0ZXg7CisgICAgQ2hlY2tlZExvY2sgbV9hZGFwdGVyTG9jazsKIH07CiAK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9X
ZWJLaXRXZWJBdWRpb1NvdXJjZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9nc3RyZWFtZXIvV2ViS2l0V2ViQXVkaW9Tb3VyY2VHU3RyZWFtZXIuY3BwCmluZGV4
IGZkMzQ0ZjAyNWZhZTI5YzRkNzQ5OTE1M2Q4YjY0MjhiNTgyZjhjMjkuLjZlZjgzNTI4M2ZmMzUz
YThmZTEyMjdiMDcwYTFkZGQ1NmQ0YTNmOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9XZWJLaXRXZWJBdWRpb1NvdXJjZUdTdHJlYW1lci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL1dlYktpdFdlYkF1
ZGlvU291cmNlR1N0cmVhbWVyLmNwcApAQCAtODEsOCArODEsOCBAQCBzdHJ1Y3QgX1dlYktpdFdl
YkF1ZGlvU3JjUHJpdmF0ZSB7CiAKICAgICBib29sIGhhc1JlbmRlcmVkQXVkaWJsZUZyYW1lIHsg
ZmFsc2UgfTsKIAotICAgIExvY2sgZGlzcGF0Y2hUb1JlbmRlclRocmVhZExvY2s7Ci0gICAgRnVu
Y3Rpb248dm9pZChGdW5jdGlvbjx2b2lkKCk+JiYpPiBkaXNwYXRjaFRvUmVuZGVyVGhyZWFkRnVu
Y3Rpb247CisgICAgQ2hlY2tlZExvY2sgZGlzcGF0Y2hUb1JlbmRlclRocmVhZExvY2s7CisgICAg
RnVuY3Rpb248dm9pZChGdW5jdGlvbjx2b2lkKCk+JiYpPiBkaXNwYXRjaFRvUmVuZGVyVGhyZWFk
RnVuY3Rpb24gV1RGX0dVQVJERURfQllfTE9DSyhkaXNwYXRjaFRvUmVuZGVyVGhyZWFkTG9jayk7
CiAKICAgICBib29sIGRpc3BhdGNoRG9uZSBXVEZfR1VBUkRFRF9CWV9MT0NLKGRpc3BhdGNoTG9j
ayk7CiAgICAgQ2hlY2tlZExvY2sgZGlzcGF0Y2hMb2NrOwpAQCAtNDA4LDEwICs0MDgsMTEgQEAg
c3RhdGljIHZvaWQgd2ViS2l0V2ViQXVkaW9TcmNSZW5kZXJJdGVyYXRpb24oV2ViS2l0V2ViQXVk
aW9TcmMqIHNyYykKICAgICAgICAgcHJpdi0+ZGlzcGF0Y2hEb25lID0gZmFsc2U7CiAgICAgfQog
Ci0gICAgYXV0byBsb2NrZXIgPSB0cnlIb2xkTG9jayhwcml2LT5kaXNwYXRjaFRvUmVuZGVyVGhy
ZWFkTG9jayk7Ci0gICAgaWYgKCFsb2NrZXIpCisgICAgaWYgKCFwcml2LT5kaXNwYXRjaFRvUmVu
ZGVyVGhyZWFkTG9jay50cnlMb2NrKCkpCiAgICAgICAgIHJldHVybjsKIAorICAgIExvY2tlciBs
b2NrZXIgeyBBZG9wdExvY2tUYWcgeyB9LCBwcml2LT5kaXNwYXRjaFRvUmVuZGVyVGhyZWFkTG9j
ayB9OworCiAgICAgaWYgKCFwcml2LT5kaXNwYXRjaFRvUmVuZGVyVGhyZWFkRnVuY3Rpb24pCiAg
ICAgICAgIHdlYktpdFdlYkF1ZGlvU3JjUmVuZGVyQW5kUHVzaEZyYW1lcyhHUmVmUHRyPEdzdEVs
ZW1lbnQ+KEdTVF9FTEVNRU5UX0NBU1Qoc3JjKSksIFdURk1vdmUoKmNoYW5uZWxCdWZmZXJMaXN0
KSk7CiAgICAgZWxzZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcAppbmRleCA0MzY5Njg4ZTE5YTQyN2VjOGFl
NGY2MWQ1MDI3YWU3M2IyZTRmYWYxLi5mNjBlZTg5MWNhOTNkOTdiNjY5YjU4YjM1OTk4NTMyNmY0
NmU1YTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAKQEAgLTE2Nyw5ICsxNjcsOSBAQCBwdWJsaWM6CiBw
cml2YXRlOgogICAgIGlubGluZSB2b2lkKiBjYWxsYmFja0NvbnRleHQoKSBjb25zdCB7IHJldHVy
biByZWludGVycHJldF9jYXN0PHZvaWQqPihtX29iamVjdElEKTsgfQogCi0gICAgc3RhdGljIExv
Y2smIG1hcExvY2soKTsKLSAgICBzdGF0aWMgSGFzaE1hcDx1aW50cHRyX3QsIEFWRldyYXBwZXIq
PiYgbWFwKCk7Ci0gICAgc3RhdGljIEFWRldyYXBwZXIqIGF2ZldyYXBwZXJGb3JDYWxsYmFja0Nv
bnRleHQodm9pZCopOworICAgIHN0YXRpYyBMb2NrIG1hcExvY2s7CisgICAgc3RhdGljIEhhc2hN
YXA8dWludHB0cl90LCBBVkZXcmFwcGVyKj4mIG1hcCgpIFdURl9SRVFVSVJFU19MT0NLKG1hcExv
Y2spOworICAgIHN0YXRpYyBBVkZXcmFwcGVyKiBhdmZXcmFwcGVyRm9yQ2FsbGJhY2tDb250ZXh0
KHZvaWQqKSBXVEZfUkVRVUlSRVNfTE9DSyhtYXBMb2NrKTsKICAgICB2b2lkIGFkZFRvTWFwKCk7
CiAgICAgdm9pZCByZW1vdmVGcm9tTWFwKCkgY29uc3Q7CiAjaWYgSEFWRShBVkZPVU5EQVRJT05f
TE9BREVSX0RFTEVHQVRFKQpAQCAtMTQxNiwxMiArMTQxNiw3IEBAIEFWRldyYXBwZXI6On5BVkZX
cmFwcGVyKCkKICAgICBtX2F2UGxheWVyID0gMDsKIH0KIAotTG9jayYgQVZGV3JhcHBlcjo6bWFw
TG9jaygpCi17Ci0gICAgc3RhdGljIExvY2sgbWFwTG9jazsKLSAgICByZXR1cm4gbWFwTG9jazsK
LX0KLQorQ2hlY2tlZExvY2sgQVZGV3JhcHBlcjo6bWFwTG9jazsKIEhhc2hNYXA8dWludHB0cl90
LCBBVkZXcmFwcGVyKj4mIEFWRldyYXBwZXI6Om1hcCgpCiB7CiAgICAgc3RhdGljIEhhc2hNYXA8
dWludHB0cl90LCBBVkZXcmFwcGVyKj4mIG1hcCA9ICpuZXcgSGFzaE1hcDx1aW50cHRyX3QsIEFW
RldyYXBwZXIqPjsKQEAgLTE0MzAsNyArMTQyNSw3IEBAIEhhc2hNYXA8dWludHB0cl90LCBBVkZX
cmFwcGVyKj4mIEFWRldyYXBwZXI6Om1hcCgpCiAKIHZvaWQgQVZGV3JhcHBlcjo6YWRkVG9NYXAo
KQogewotICAgIExvY2tlciBsb2NrZXIgeyBtYXBMb2NrKCkgfTsKKyAgICBMb2NrZXIgbG9ja2Vy
IHsgbWFwTG9jayB9OwogICAgIAogICAgIC8vIEhhc2hNYXAgZG9lc24ndCBsaWtlIGEga2V5IG9m
IDAsIGFuZCBhbHNvIG1ha2Ugc3VyZSB3ZSBhcmVuJ3QKICAgICAvLyB1c2luZyBhbiBvYmplY3Qg
SUQgdGhhdCdzIGFscmVhZHkgaW4gdXNlLgpAQCAtMTQ0NiwxMyArMTQ0MSwxMyBAQCB2b2lkIEFW
RldyYXBwZXI6OnJlbW92ZUZyb21NYXAoKSBjb25zdAogewogICAgIExPRyhNZWRpYSwgIkFWRldy
YXBwZXI6OnJlbW92ZUZyb21NYXAoJXAgJWQpIiwgdGhpcywgbV9vYmplY3RJRCk7CiAKLSAgICBM
b2NrZXIgbG9ja2VyIHsgbWFwTG9jaygpIH07CisgICAgTG9ja2VyIGxvY2tlciB7IG1hcExvY2sg
fTsKICAgICBtYXAoKS5yZW1vdmUobV9vYmplY3RJRCk7CiB9CiAKIEFWRldyYXBwZXIqIEFWRldy
YXBwZXI6OmF2ZldyYXBwZXJGb3JDYWxsYmFja0NvbnRleHQodm9pZCogY29udGV4dCkKIHsKLSAg
ICAvLyBBc3N1bWVzIGNhbGxlciBoYXMgbG9ja2VkIG1hcExvY2soKS4KKyAgICAvLyBBc3N1bWVz
IGNhbGxlciBoYXMgbG9ja2VkIG1hcExvY2suCiAgICAgSGFzaE1hcDx1aW50cHRyX3QsIEFWRldy
YXBwZXIqPjo6aXRlcmF0b3IgaXQgPSBtYXAoKS5maW5kKHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0
cl90Pihjb250ZXh0KSk7CiAgICAgaWYgKGl0ID09IG1hcCgpLmVuZCgpKQogICAgICAgICByZXR1
cm4gMDsKQEAgLTE2NTAsNyArMTY0NSw3IEBAIHZvaWQgQVZGV3JhcHBlcjo6Y3JlYXRlUGxheWVy
SXRlbSgpCiAKIHZvaWQgQVZGV3JhcHBlcjo6cGVyaW9kaWNUaW1lT2JzZXJ2ZXJDYWxsYmFjayhB
VkNGUGxheWVyUmVmLCBDTVRpbWUgY21UaW1lLCB2b2lkKiBjb250ZXh0KQogewotICAgIExvY2tl
ciBsb2NrZXIgeyBtYXBMb2NrKCkgfTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbWFwTG9jayB9Owog
ICAgIEFWRldyYXBwZXIqIHNlbGYgPSBhdmZXcmFwcGVyRm9yQ2FsbGJhY2tDb250ZXh0KGNvbnRl
eHQpOwogICAgIGlmICghc2VsZikgewogICAgICAgICBMT0coTWVkaWEsICJBVkZXcmFwcGVyOjpw
ZXJpb2RpY1RpbWVPYnNlcnZlckNhbGxiYWNrIGludm9rZWQgZm9yIGRlbGV0ZWQgQVZGV3JhcHBl
ciAlZCIsIHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pihjb250ZXh0KSk7CkBAIC0xNjgyLDcg
KzE2NzcsNyBAQCB2b2lkIEFWRldyYXBwZXI6OnByb2Nlc3NOb3RpZmljYXRpb24odm9pZCogY29u
dGV4dCkKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxOb3RpZmljYXRpb25DYWxsYmFja0RhdGE+IG5v
dGlmaWNhdGlvbkRhdGEgeyBzdGF0aWNfY2FzdDxOb3RpZmljYXRpb25DYWxsYmFja0RhdGEqPihj
b250ZXh0KSB9OwogCi0gICAgTG9ja2VyIGxvY2tlciB7IG1hcExvY2soKSB9OworICAgIExvY2tl
ciBsb2NrZXIgeyBtYXBMb2NrIH07CiAgICAgQVZGV3JhcHBlciogc2VsZiA9IGF2ZldyYXBwZXJG
b3JDYWxsYmFja0NvbnRleHQobm90aWZpY2F0aW9uRGF0YS0+bV9jb250ZXh0KTsKICAgICBpZiAo
IXNlbGYpIHsKICAgICAgICAgTE9HKE1lZGlhLCAiQVZGV3JhcHBlcjo6cHJvY2Vzc05vdGlmaWNh
dGlvbiBpbnZva2VkIGZvciBkZWxldGVkIEFWRldyYXBwZXIgJWQiLCByZWludGVycHJldF9jYXN0
PHVpbnRwdHJfdD4oY29udGV4dCkpOwpAQCAtMTczNyw3ICsxNzMyLDcgQEAgdm9pZCBBVkZXcmFw
cGVyOjpub3RpZmljYXRpb25DYWxsYmFjayhDRk5vdGlmaWNhdGlvbkNlbnRlclJlZiwgdm9pZCog
b2JzZXJ2ZXIsIEMKIAogdm9pZCBBVkZXcmFwcGVyOjpsb2FkUGxheWFibGVDb21wbGV0aW9uQ2Fs
bGJhY2soQVZDRkFzc2V0UmVmLCB2b2lkKiBjb250ZXh0KQogewotICAgIExvY2tlciBsb2NrZXIg
eyBtYXBMb2NrKCkgfTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbWFwTG9jayB9OwogICAgIEFWRldy
YXBwZXIqIHNlbGYgPSBhdmZXcmFwcGVyRm9yQ2FsbGJhY2tDb250ZXh0KGNvbnRleHQpOwogICAg
IGlmICghc2VsZikgewogICAgICAgICBMT0coTWVkaWEsICJBVkZXcmFwcGVyOjpsb2FkUGxheWFi
bGVDb21wbGV0aW9uQ2FsbGJhY2sgaW52b2tlZCBmb3IgZGVsZXRlZCBBVkZXcmFwcGVyICVkIiwg
cmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGNvbnRleHQpKTsKQEAgLTE3NjQsNyArMTc1OSw3
IEBAIHZvaWQgQVZGV3JhcHBlcjo6Y2hlY2tQbGF5YWJpbGl0eSgpCiAKIHZvaWQgQVZGV3JhcHBl
cjo6bG9hZE1ldGFkYXRhQ29tcGxldGlvbkNhbGxiYWNrKEFWQ0ZBc3NldFJlZiwgdm9pZCogY29u
dGV4dCkKIHsKLSAgICBMb2NrZXIgbG9ja2VyIHsgbWFwTG9jaygpIH07CisgICAgTG9ja2VyIGxv
Y2tlciB7IG1hcExvY2sgfTsKICAgICBBVkZXcmFwcGVyKiBzZWxmID0gYXZmV3JhcHBlckZvckNh
bGxiYWNrQ29udGV4dChjb250ZXh0KTsKICAgICBpZiAoIXNlbGYpIHsKICAgICAgICAgTE9HKE1l
ZGlhLCAiQVZGV3JhcHBlcjo6bG9hZE1ldGFkYXRhQ29tcGxldGlvbkNhbGxiYWNrIGludm9rZWQg
Zm9yIGRlbGV0ZWQgQVZGV3JhcHBlciAlZCIsIHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pihj
b250ZXh0KSk7CkBAIC0xNzg0LDcgKzE3NzksNyBAQCB2b2lkIEFWRldyYXBwZXI6OmJlZ2luTG9h
ZGluZ01ldGFkYXRhKCkKIAogdm9pZCBBVkZXcmFwcGVyOjpzZWVrQ29tcGxldGVkQ2FsbGJhY2so
QVZDRlBsYXllckl0ZW1SZWYsIEJvb2xlYW4gZmluaXNoZWQsIHZvaWQqIGNvbnRleHQpCiB7Ci0g
ICAgTG9ja2VyIGxvY2tlciB7IG1hcExvY2soKSB9OworICAgIExvY2tlciBsb2NrZXIgeyBtYXBM
b2NrIH07CiAgICAgQVZGV3JhcHBlciogc2VsZiA9IGF2ZldyYXBwZXJGb3JDYWxsYmFja0NvbnRl
eHQoY29udGV4dCk7CiAgICAgaWYgKCFzZWxmKSB7CiAgICAgICAgIExPRyhNZWRpYSwgIkFWRldy
YXBwZXI6OnNlZWtDb21wbGV0ZWRDYWxsYmFjayBpbnZva2VkIGZvciBkZWxldGVkIEFWRldyYXBw
ZXIgJWQiLCByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oY29udGV4dCkpOwpAQCAtMTgyOCw3
ICsxODIzLDcgQEAgdm9pZCBBVkZXcmFwcGVyOjpwcm9jZXNzQ3VlKHZvaWQqIGNvbnRleHQpCiAK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8TGVnaWJsZU91dHB1dERhdGE+IGxlZ2libGVPdXRwdXREYXRh
KHJlaW50ZXJwcmV0X2Nhc3Q8TGVnaWJsZU91dHB1dERhdGEqPihjb250ZXh0KSk7CiAKLSAgICBM
b2NrZXIgbG9ja2VyIHsgbWFwTG9jaygpIH07CisgICAgTG9ja2VyIGxvY2tlciB7IG1hcExvY2sg
fTsKICAgICBBVkZXcmFwcGVyKiBzZWxmID0gYXZmV3JhcHBlckZvckNhbGxiYWNrQ29udGV4dChs
ZWdpYmxlT3V0cHV0RGF0YS0+bV9jb250ZXh0KTsKICAgICBpZiAoIXNlbGYpIHsKICAgICAgICAg
TE9HKE1lZGlhLCAiQVZGV3JhcHBlcjo6cHJvY2Vzc0N1ZSBpbnZva2VkIGZvciBkZWxldGVkIEFW
RldyYXBwZXIgJWQiLCByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oY29udGV4dCkpOwpAQCAt
MTg0NCw3ICsxODM5LDcgQEAgdm9pZCBBVkZXcmFwcGVyOjpwcm9jZXNzQ3VlKHZvaWQqIGNvbnRl
eHQpCiB2b2lkIEFWRldyYXBwZXI6OmxlZ2libGVPdXRwdXRDYWxsYmFjayh2b2lkKiBjb250ZXh0
LCBBVkNGUGxheWVySXRlbUxlZ2libGVPdXRwdXRSZWYgbGVnaWJsZU91dHB1dCwgQ0ZBcnJheVJl
ZiBhdHRyaWJ1dGVkU3RyaW5ncywgQ0ZBcnJheVJlZiBuYXRpdmVTYW1wbGVCdWZmZXJzLCBDTVRp
bWUgaXRlbVRpbWUpCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7Ci0gICAgTG9ja2Vy
IGxvY2tlciB7IG1hcExvY2soKSB9OworICAgIExvY2tlciBsb2NrZXIgeyBtYXBMb2NrIH07CiAg
ICAgQVZGV3JhcHBlciogc2VsZiA9IGF2ZldyYXBwZXJGb3JDYWxsYmFja0NvbnRleHQoY29udGV4
dCk7CiAgICAgaWYgKCFzZWxmKSB7CiAgICAgICAgIExPRyhNZWRpYSwgIkFWRldyYXBwZXI6Omxl
Z2libGVPdXRwdXRDYWxsYmFjayBpbnZva2VkIGZvciBkZWxldGVkIEFWRldyYXBwZXIgJWQiLCBy
ZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oY29udGV4dCkpOwpAQCAtMTg4Myw3ICsxODc4LDcg
QEAgdm9pZCBBVkZXcmFwcGVyOjpwcm9jZXNzU2hvdWxkV2FpdEZvckxvYWRpbmdPZlJlc291cmNl
KHZvaWQqIGNvbnRleHQpCiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TG9hZFJlcXVlc3REYXRhPiBs
b2FkUmVxdWVzdERhdGEocmVpbnRlcnByZXRfY2FzdDxMb2FkUmVxdWVzdERhdGEqPihjb250ZXh0
KSk7CiAKLSAgICBMb2NrZXIgbG9ja2VyIHsgbWFwTG9jaygpIH07CisgICAgTG9ja2VyIGxvY2tl
ciB7IG1hcExvY2sgfTsKICAgICBBVkZXcmFwcGVyKiBzZWxmID0gYXZmV3JhcHBlckZvckNhbGxi
YWNrQ29udGV4dChsb2FkUmVxdWVzdERhdGEtPm1fY29udGV4dCk7CiAgICAgaWYgKCFzZWxmKSB7
CiAgICAgICAgIExPRyhNZWRpYSwgIkFWRldyYXBwZXI6OnByb2Nlc3NTaG91bGRXYWl0Rm9yTG9h
ZGluZ09mUmVzb3VyY2UgaW52b2tlZCBmb3IgZGVsZXRlZCBBVkZXcmFwcGVyICVkIiwgcmVpbnRl
cnByZXRfY2FzdDx1aW50cHRyX3Q+KGNvbnRleHQpKTsKQEAgLTE5MzgsNyArMTkzMyw3IEBAIGJv
b2wgQVZGV3JhcHBlcjo6c2hvdWxkV2FpdEZvckxvYWRpbmdPZlJlc291cmNlKEFWQ0ZBc3NldFJl
c291cmNlTG9hZGluZ1JlcXVlc3RSCiBCb29sZWFuIEFWRldyYXBwZXI6OnJlc291cmNlTG9hZGVy
U2hvdWxkV2FpdEZvckxvYWRpbmdPZlJlcXVlc3RlZFJlc291cmNlKEFWQ0ZBc3NldFJlc291cmNl
TG9hZGVyUmVmIHJlc291cmNlTG9hZGVyLCBBVkNGQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0
UmVmIGxvYWRpbmdSZXF1ZXN0LCB2b2lkICpjb250ZXh0KQogewogICAgIEFTU0VSVChkaXNwYXRj
aF9nZXRfbWFpbl9xdWV1ZSgpICE9IGRpc3BhdGNoX2dldF9jdXJyZW50X3F1ZXVlKCkpOwotICAg
IExvY2tlciBsb2NrZXIgeyBtYXBMb2NrKCkgfTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbWFwTG9j
ayB9OwogICAgIEFWRldyYXBwZXIqIHNlbGYgPSBhdmZXcmFwcGVyRm9yQ2FsbGJhY2tDb250ZXh0
KGNvbnRleHQpOwogICAgIGlmICghc2VsZikgewogICAgICAgICBMT0coTWVkaWEsICJBVkZXcmFw
cGVyOjpyZXNvdXJjZUxvYWRlclNob3VsZFdhaXRGb3JMb2FkaW5nT2ZSZXF1ZXN0ZWRSZXNvdXJj
ZSBpbnZva2VkIGZvciBkZWxldGVkIEFWRldyYXBwZXIgJWQiLCByZWludGVycHJldF9jYXN0PHVp
bnRwdHJfdD4oY29udGV4dCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9u
LmNwcAppbmRleCA0MTA4ODYwZTk2ZjE5ZDQyMGE1ZTMzNDViNTg3NTcxMzBkNGVjNjc4Li4xNjVj
NDU2MDUyMmNmODkyZDViNTExNGJjNDllNGU4MDQ0M2IwMTc2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcApAQCAtMTA4LDEwICsxMDgsMTAgQEAgcHJpdmF0ZToK
ICAgICBCaW5hcnlTZW1hcGhvcmUgbV93YWl0Rm9yU3luY1JlcGx5U2VtYXBob3JlOwogCiAgICAg
Ly8gUHJvdGVjdHMgbV9kaWRTY2hlZHVsZURpc3BhdGNoTWVzc2FnZXNXb3JrU2V0IGFuZCBtX21l
c3NhZ2VzVG9EaXNwYXRjaFdoaWxlV2FpdGluZ0ZvclN5bmNSZXBseS4KLSAgICBMb2NrIG1fbXV0
ZXg7CisgICAgQ2hlY2tlZExvY2sgbV9sb2NrOwogCiAgICAgLy8gVGhlIHNldCBvZiBjb25uZWN0
aW9ucyBmb3Igd2hpY2ggd2UndmUgc2NoZWR1bGVkIGEgY2FsbCB0byBkaXNwYXRjaE1lc3NhZ2VB
bmRSZXNldERpZFNjaGVkdWxlRGlzcGF0Y2hNZXNzYWdlc0ZvckNvbm5lY3Rpb24uCi0gICAgSGFz
aFNldDxSZWZQdHI8Q29ubmVjdGlvbj4+IG1fZGlkU2NoZWR1bGVEaXNwYXRjaE1lc3NhZ2VzV29y
a1NldDsKKyAgICBIYXNoU2V0PFJlZlB0cjxDb25uZWN0aW9uPj4gbV9kaWRTY2hlZHVsZURpc3Bh
dGNoTWVzc2FnZXNXb3JrU2V0IFdURl9HVUFSREVEX0JZX0xPQ0sobV9sb2NrKTsKIAogICAgIHN0
cnVjdCBDb25uZWN0aW9uQW5kSW5jb21pbmdNZXNzYWdlIHsKICAgICAgICAgUmVmPENvbm5lY3Rp
b24+IGNvbm5lY3Rpb247CkBAIC0xMjMsNyArMTIzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgfQog
ICAgIH07CiAgICAgRGVxdWU8Q29ubmVjdGlvbkFuZEluY29taW5nTWVzc2FnZT4gbV9tZXNzYWdl
c0JlaW5nRGlzcGF0Y2hlZDsgLy8gT25seSB1c2VkIG9uIHRoZSBtYWluIHRocmVhZC4KLSAgICBE
ZXF1ZTxDb25uZWN0aW9uQW5kSW5jb21pbmdNZXNzYWdlPiBtX21lc3NhZ2VzVG9EaXNwYXRjaFdo
aWxlV2FpdGluZ0ZvclN5bmNSZXBseTsKKyAgICBEZXF1ZTxDb25uZWN0aW9uQW5kSW5jb21pbmdN
ZXNzYWdlPiBtX21lc3NhZ2VzVG9EaXNwYXRjaFdoaWxlV2FpdGluZ0ZvclN5bmNSZXBseSBXVEZf
R1VBUkRFRF9CWV9MT0NLKG1fbG9jayk7CiB9OwogCiBDb25uZWN0aW9uOjpTeW5jTWVzc2FnZVN0
YXRlJiBDb25uZWN0aW9uOjpTeW5jTWVzc2FnZVN0YXRlOjpzaW5nbGV0b24oKQpAQCAtMTUxLDcg
KzE1MSw3IEBAIHZvaWQgQ29ubmVjdGlvbjo6U3luY01lc3NhZ2VTdGF0ZTo6ZW5xdWV1ZU1hdGNo
aW5nTWVzc2FnZXMoQ29ubmVjdGlvbiYgY29ubmVjdGlvCiAgICAgICAgIH0KICAgICAgICAgY29u
bmVjdGlvbkFuZE1lc3NhZ2VzID0gV1RGTW92ZShyZXN0KTsKICAgICB9OwotICAgIExvY2tlciBs
b2NrZXIgeyBtX211dGV4IH07CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogICAgIGVu
cXVldWVNYXRjaGluZ01lc3NhZ2VzSW5Db250YWluZXIobV9tZXNzYWdlc0JlaW5nRGlzcGF0Y2hl
ZCk7CiAgICAgZW5xdWV1ZU1hdGNoaW5nTWVzc2FnZXNJbkNvbnRhaW5lcihtX21lc3NhZ2VzVG9E
aXNwYXRjaFdoaWxlV2FpdGluZ0ZvclN5bmNSZXBseSk7CiB9CkBAIC0xNzEsNyArMTcxLDcgQEAg
Ym9vbCBDb25uZWN0aW9uOjpTeW5jTWVzc2FnZVN0YXRlOjpwcm9jZXNzSW5jb21pbmdNZXNzYWdl
KENvbm5lY3Rpb24mIGNvbm5lY3Rpb24KIAogICAgIGJvb2wgc2hvdWxkRGlzcGF0Y2g7CiAgICAg
ewotICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9tdXRleCB9OworICAgICAgICBMb2NrZXIgbG9j
a2VyIHsgbV9sb2NrIH07CiAgICAgICAgIHNob3VsZERpc3BhdGNoID0gbV9kaWRTY2hlZHVsZURp
c3BhdGNoTWVzc2FnZXNXb3JrU2V0LmFkZCgmY29ubmVjdGlvbikuaXNOZXdFbnRyeTsKICAgICAg
ICAgQVNTRVJUKGNvbm5lY3Rpb24ubV9pbmNvbWluZ01lc3NhZ2VzTG9jay5pc0hlbGQoKSk7CiAg
ICAgICAgIGlmIChtZXNzYWdlLT5zaG91bGRNYWludGFpbk9yZGVyaW5nV2l0aEFzeW5jTWVzc2Fn
ZXMoKSkgewpAQCAtMTk4LDcgKzE5OCw3IEBAIHZvaWQgQ29ubmVjdGlvbjo6U3luY01lc3NhZ2VT
dGF0ZTo6ZGlzcGF0Y2hNZXNzYWdlcyhGdW5jdGlvbjx2b2lkKE1lc3NhZ2VOYW1lLCB1CiAgICAg
QVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAogICAgIHsKLSAgICAgICAgTG9ja2VyIGxvY2tl
ciB7IG1fbXV0ZXggfTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogICAgICAg
ICBpZiAobV9tZXNzYWdlc0JlaW5nRGlzcGF0Y2hlZC5pc0VtcHR5KCkpCiAgICAgICAgICAgICBt
X21lc3NhZ2VzQmVpbmdEaXNwYXRjaGVkID0gc3RkOjpleGNoYW5nZShtX21lc3NhZ2VzVG9EaXNw
YXRjaFdoaWxlV2FpdGluZ0ZvclN5bmNSZXBseSwgeyB9KTsKICAgICAgICAgZWxzZSB7CkBAIC0y
MjAsNyArMjIwLDcgQEAgdm9pZCBDb25uZWN0aW9uOjpTeW5jTWVzc2FnZVN0YXRlOjpkaXNwYXRj
aE1lc3NhZ2VzQW5kUmVzZXREaWRTY2hlZHVsZURpc3BhdGNoTWUKICAgICBBU1NFUlQoUnVuTG9v
cDo6aXNNYWluKCkpOwogCiAgICAgewotICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9tdXRleCB9
OworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAgICAgICAgIEFTU0VSVChtX2Rp
ZFNjaGVkdWxlRGlzcGF0Y2hNZXNzYWdlc1dvcmtTZXQuY29udGFpbnMoJmNvbm5lY3Rpb24pKTsK
ICAgICAgICAgbV9kaWRTY2hlZHVsZURpc3BhdGNoTWVzc2FnZXNXb3JrU2V0LnJlbW92ZSgmY29u
bmVjdGlvbik7CiAgICAgICAgIEFTU0VSVChtX21lc3NhZ2VzQmVpbmdEaXNwYXRjaGVkLmlzRW1w
dHkoKSk7Cg==
</data>
<flag name="commit-queue"
          id="450615"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429424</attachid>
            <date>2021-05-22 12:48:46 -0700</date>
            <delta_ts>2021-05-22 14:40:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226138-20210522124845.patch</filename>
            <type>text/plain</type>
            <size>62306</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3OTIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGE3NjJlZTkzM2E4MjE0MjcwNGU3YzRk
NzZiNmQ1ZGQxYWFmNGZlNTEuLmI3MGEzZjNlODEzNzI3MjcwNWEwNGJlZDIzOTZjZTBmYzllYmY3
NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjEtMDUtMjIgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBBZG9wdCBDaGVja2VkTG9jayBpbiBtb3JlIHBsYWNlcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2MTM4CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgQWRvcHQgQ2hlY2tl
ZExvY2sgaW4gbW9yZSBwbGFjZXMgdG8gYmVuZWZpdCBmcm9tIENsYW5nIFRocmVhZCBTYWZldHkg
QW5hbHlzaXMuCisKKyAgICAgICAgKiB3dGYvQXNzZXJ0aW9ucy5jcHA6CisgICAgICAgICogd3Rm
L1RpbWluZ1Njb3BlLmNwcDoKKyAgICAgICAgKiB3dGYvdGhyZWFkcy9CaW5hcnlTZW1hcGhvcmUu
Y3BwOgorICAgICAgICAoV1RGOjpCaW5hcnlTZW1hcGhvcmU6OndhaXRVbnRpbCk6CisgICAgICAg
ICogd3RmL3RocmVhZHMvQmluYXJ5U2VtYXBob3JlLmg6CisKIDIwMjEtMDUtMjIgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXBsYWNlIExvY2tIb2xkZXIgd2l0
aCBMb2NrZXIgaW4gbG9jYWwgdmFyaWFibGVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTk4YWQ5YjhiMjg5M2Zi
ZGI3MDRlNTdhNzMzNTRmYThkMDM5MjdhZC4uMzM0MTdjZjA0MzA1YWExODk2NTQxYWU2YTEwNWIx
NmE0MWIzMmY1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcwIEBACisyMDIxLTA1LTIyICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQWRvcHQgQ2hlY2tlZExvY2sg
aW4gbW9yZSBwbGFjZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIyNjEzOAorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAg
ICAgIEFkb3B0IENoZWNrZWRMb2NrIGluIG1vcmUgcGxhY2VzIHRvIGJlbmVmaXQgZnJvbSBDbGFu
ZyBUaHJlYWQgU2FmZXR5IEFuYWx5c2lzLgorCisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFz
ZS9EYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6cGVyZm9ybUNsb3Nl
KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlOjpzY2hlZHVsZVRyYW5zYWN0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlOjppblByb2dyZXNzVHJhbnNhY3Rpb25Db21wbGV0ZWQp
OgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6Omhhc1BlbmRpbmdUcmFuc2FjdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6cnVuVHJhbnNhY3Rpb24pOgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNl
OjpXVEZfR1VBUkRFRF9CWV9MT0NLKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0Rh
dGFiYXNlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6OmFk
ZFByb3Bvc2VkRGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjpy
ZW1vdmVQcm9wb3NlZERhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlTWFuYWdl
cjo6ZnVsbFBhdGhGb3JEYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZU1hbmFn
ZXI6OmRldGFpbHNGb3JOYW1lQW5kT3JpZ2luKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFi
YXNlL0RhdGFiYXNlTWFuYWdlci5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0
YWJhc2VUaHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUaHJlYWQ6OmRhdGFi
YXNlVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVGhyZWFkOjpyZWNvcmREYXRh
YmFzZU9wZW4pOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUaHJlYWQ6OnJlY29yZERhdGFi
YXNlQ2xvc2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVGhyZWFkOjpoYXNQZW5kaW5n
RGF0YWJhc2VBY3Rpdml0eSBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9E
YXRhYmFzZVRocmVhZC5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvU1FMQ2FsbGJh
Y2tXcmFwcGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpTUUxDYWxsYmFja1dyYXBwZXI6OmNsZWFy
KToKKyAgICAgICAgKFdlYkNvcmU6OlNRTENhbGxiYWNrV3JhcHBlcjo6dW53cmFwKToKKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNRTFRyYW5zYWN0aW9uOjplbnF1ZXVlU3RhdGVtZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OlNRTFRyYW5zYWN0aW9uOjpjaGVja0FuZEhhbmRsZUNsb3NlZERhdGFiYXNlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uOjpnZXROZXh0U3RhdGVtZW50KToKKyAgICAgICAg
KiBNb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uLmg6CisgICAgICAgICogTW9kdWxl
cy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbkJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1FMVHJhbnNhY3Rpb25CYWNrZW5kOjpkb0NsZWFudXApOgorICAgICAgICAqIGFjY2Vzc2li
aWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmg6CisgICAgICAgIChXZWJDb3JlOjpB
WElzb2xhdGVkVHJlZTo6V1RGX0dVQVJERURfQllfTE9DSyk6CisgICAgICAgICogcGxhdGZvcm0v
QWJvcnRhYmxlVGFza1F1ZXVlLmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVk
aW9EZXN0aW5hdGlvbkNvY29hLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRp
b25Db2NvYTo6cmVuZGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0Rl
c3RpbmF0aW9uQ29jb2EuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVk
aW9EZXN0aW5hdGlvbkdTdHJlYW1lci5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2dzdHJl
YW1lci9BdWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkF1ZGlvU291cmNlUHJvdmlkZXJHU3RyZWFtZXI6OnByb3ZpZGVJbnB1dCk6CisgICAgICAgIChX
ZWJDb3JlOjpBdWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVyOjpoYW5kbGVTYW1wbGUpOgorICAg
ICAgICAoV2ViQ29yZTo6QXVkaW9Tb3VyY2VQcm92aWRlckdTdHJlYW1lcjo6Y2xlYXJBZGFwdGVy
cyk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvU291cmNlUHJvdmlk
ZXJHU3RyZWFtZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvV2ViS2l0
V2ViQXVkaW9Tb3VyY2VHU3RyZWFtZXIuY3BwOgorICAgICAgICAod2ViS2l0V2ViQXVkaW9TcmNS
ZW5kZXJJdGVyYXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBVkZXcmFwcGVyOjphZGRUb01hcCk6CisgICAgICAgIChXZWJDb3JlOjpBVkZXcmFwcGVy
OjpyZW1vdmVGcm9tTWFwIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFWRldyYXBwZXI6OmF2
ZldyYXBwZXJGb3JDYWxsYmFja0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6QVZGV3JhcHBl
cjo6cGVyaW9kaWNUaW1lT2JzZXJ2ZXJDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpBVkZX
cmFwcGVyOjpwcm9jZXNzTm90aWZpY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkFWRldyYXBw
ZXI6OmxvYWRQbGF5YWJsZUNvbXBsZXRpb25DYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpB
VkZXcmFwcGVyOjpsb2FkTWV0YWRhdGFDb21wbGV0aW9uQ2FsbGJhY2spOgorICAgICAgICAoV2Vi
Q29yZTo6QVZGV3JhcHBlcjo6c2Vla0NvbXBsZXRlZENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNv
cmU6OkFWRldyYXBwZXI6OnByb2Nlc3NDdWUpOgorICAgICAgICAoV2ViQ29yZTo6QVZGV3JhcHBl
cjo6bGVnaWJsZU91dHB1dENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkFWRldyYXBwZXI6
OnByb2Nlc3NTaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29y
ZTo6QVZGV3JhcHBlcjo6cmVzb3VyY2VMb2FkZXJTaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVxdWVz
dGVkUmVzb3VyY2UpOgorCiAyMDIxLTA1LTIyICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5j
b20+CiAKICAgICAgICAgUmVwbGFjZSBMb2NrSG9sZGVyIHdpdGggTG9ja2VyIGluIGxvY2FsIHZh
cmlhYmxlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwppbmRleCBlMjBmNDQyNGIyYzBjZDIyODFhNWU2ZWJiN2JmOTI4OGY5MmVh
ZDhiLi5mY2FjODQ1MWM4YTkzNDUyMDhhYjcxYTkzNzhhODE3N2U4MTY4ODg4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE4IEBACisyMDIxLTA1LTIyICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5j
b20+CisKKyAgICAgICAgQWRvcHQgQ2hlY2tlZExvY2sgaW4gbW9yZSBwbGFjZXMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjEzOAorCisgICAgICAg
IFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIEFkb3B0IENoZWNrZWRMb2NrIGlu
IG1vcmUgcGxhY2VzIHRvIGJlbmVmaXQgZnJvbSBDbGFuZyBUaHJlYWQgU2FmZXR5IEFuYWx5c2lz
LgorCisgICAgICAgICogUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3BwOgorICAgICAgICAoSVBD
OjpDb25uZWN0aW9uOjpTeW5jTWVzc2FnZVN0YXRlOjplbnF1ZXVlTWF0Y2hpbmdNZXNzYWdlcyk6
CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OlN5bmNNZXNzYWdlU3RhdGU6OnByb2Nlc3NJbmNv
bWluZ01lc3NhZ2UpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpTeW5jTWVzc2FnZVN0YXRl
OjpkaXNwYXRjaE1lc3NhZ2VzKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6U3luY01lc3Nh
Z2VTdGF0ZTo6ZGlzcGF0Y2hNZXNzYWdlc0FuZFJlc2V0RGlkU2NoZWR1bGVEaXNwYXRjaE1lc3Nh
Z2VzRm9yQ29ubmVjdGlvbik6CisKIDIwMjEtMDUtMjIgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFw
cGxlLmNvbT4KIAogICAgICAgICBSZXBsYWNlIExvY2tIb2xkZXIgd2l0aCBMb2NrZXIgaW4gbG9j
YWwgdmFyaWFibGVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Bc3NlcnRpb25zLmNwcCBi
L1NvdXJjZS9XVEYvd3RmL0Fzc2VydGlvbnMuY3BwCmluZGV4IDU4OTVmMzA1ZmRkODFmYWM0ZDIw
MTA0NGFhM2RlNWQ3YzdjMzBlNGMuLjBkZjMwODMyYmJiNGU1MWFlZGNiNThkNjdjNGZhNzBhMjY1
ZWVmMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0Fzc2VydGlvbnMuY3BwCisrKyBiL1Nv
dXJjZS9XVEYvd3RmL0Fzc2VydGlvbnMuY3BwCkBAIC0zMSw4ICszMSw4IEBACiAjaW5jbHVkZSA8
bXV0ZXg+CiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRl
IDx3dGYvQ2hlY2tlZExvY2suaD4KICNpbmNsdWRlIDx3dGYvQ29tcGlsZXIuaD4KLSNpbmNsdWRl
IDx3dGYvTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9Mb2NrZXIuaD4KICNpbmNsdWRlIDx3dGYvTG9n
Z2luZ0FjY3VtdWxhdG9yLmg+CiAjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CkBAIC0zNjgs
MjUgKzM2OCwyNSBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIGdldEFuZFJlc2V0QWNjdW11bGF0ZWRM
b2dzKCk7CiAKIHByaXZhdGU6Ci0gICAgTG9jayBhY2N1bXVsYXRvckxvY2s7Ci0gICAgU3RyaW5n
QnVpbGRlciBsb2dnaW5nQWNjdW11bGF0b3I7CisgICAgQ2hlY2tlZExvY2sgYWNjdW11bGF0b3JM
b2NrOworICAgIFN0cmluZ0J1aWxkZXIgbG9nZ2luZ0FjY3VtdWxhdG9yIFdURl9HVUFSREVEX0JZ
X0xPQ0soYWNjdW11bGF0b3JMb2NrKTsKIH07CiAKIHZvaWQgV1RGTG9nZ2luZ0FjY3VtdWxhdG9y
OjphY2N1bXVsYXRlKGNvbnN0IFN0cmluZyYgbG9nKQogewotICAgIExvY2tlcjxMb2NrPiBsb2Nr
ZXIoYWNjdW11bGF0b3JMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgYWNjdW11bGF0b3JMb2Nr
IH07CiAgICAgbG9nZ2luZ0FjY3VtdWxhdG9yLmFwcGVuZChsb2cpOwogfQogCiB2b2lkIFdURkxv
Z2dpbmdBY2N1bXVsYXRvcjo6cmVzZXRBY2N1bXVsYXRlZExvZ3MoKQogewotICAgIExvY2tlcjxM
b2NrPiBsb2NrZXIoYWNjdW11bGF0b3JMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgYWNjdW11
bGF0b3JMb2NrIH07CiAgICAgbG9nZ2luZ0FjY3VtdWxhdG9yLmNsZWFyKCk7CiB9CiAKIFN0cmlu
ZyBXVEZMb2dnaW5nQWNjdW11bGF0b3I6OmdldEFuZFJlc2V0QWNjdW11bGF0ZWRMb2dzKCkKIHsK
LSAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKGFjY3VtdWxhdG9yTG9jayk7CisgICAgTG9ja2VyIGxv
Y2tlciB7IGFjY3VtdWxhdG9yTG9jayB9OwogICAgIFN0cmluZyByZXN1bHQgPSBsb2dnaW5nQWNj
dW11bGF0b3IudG9TdHJpbmcoKTsKICAgICBsb2dnaW5nQWNjdW11bGF0b3IuY2xlYXIoKTsKICAg
ICByZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVGltaW5nU2NvcGUu
Y3BwIGIvU291cmNlL1dURi93dGYvVGltaW5nU2NvcGUuY3BwCmluZGV4IGUyYjAyYzYwMzc0NDRj
YTYwZjc4ODIzYTIxODIwNjk2ODY5ZjdkNTguLjYzMTE2NjQwYWRlZjRjZDkyMGUyMTk3ZDc1ZmU1
NDE2NGE4ZWM0NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1RpbWluZ1Njb3BlLmNwcAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi9UaW1pbmdTY29wZS5jcHAKQEAgLTI2LDggKzI2LDggQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlIDx3dGYvVGltaW5nU2NvcGUuaD4KIAorI2luY2x1
ZGUgPHd0Zi9DaGVja2VkTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVk
ZSA8d3RmL0xvY2suaD4KIAogbmFtZXNwYWNlIFdURiB7CiAKQEAgLTU5LDggKzU5LDggQEAgcHVi
bGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICBIYXNoTWFwPGNvbnN0IGNoYXIqLCBDYWxsRGF0
YT4gdG90YWxzOwotICAgIExvY2sgbG9jazsKKyAgICBIYXNoTWFwPGNvbnN0IGNoYXIqLCBDYWxs
RGF0YT4gdG90YWxzIFdURl9HVUFSREVEX0JZX0xPQ0sobG9jayk7CisgICAgQ2hlY2tlZExvY2sg
bG9jazsKIH07CiAKIFN0YXRlJiBzdGF0ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90
aHJlYWRzL0JpbmFyeVNlbWFwaG9yZS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90aHJlYWRzL0JpbmFy
eVNlbWFwaG9yZS5jcHAKaW5kZXggNzhiZjM0Yzk2NjY5OTYwZjEzYzQyYWE0N2UwNzRlOGMwNzk3
YzI5ZS4uYWQ0MzliZjgzZjU3OWMwODAxYTkxZDY1MWI0ZTA5ZDE1YjIwMGRiZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvdGhyZWFkcy9CaW5hcnlTZW1hcGhvcmUuY3BwCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL3RocmVhZHMvQmluYXJ5U2VtYXBob3JlLmNwcApAQCAtMzgsNyArMzgsMTAgQEAg
dm9pZCBCaW5hcnlTZW1hcGhvcmU6OnNpZ25hbCgpCiBib29sIEJpbmFyeVNlbWFwaG9yZTo6d2Fp
dFVudGlsKGNvbnN0IFRpbWVXaXRoRHluYW1pY0Nsb2NrVHlwZSYgYWJzb2x1dGVUaW1lKQogewog
ICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKLSAgICBib29sIHNhdGlzZmllZCA9IG1fY29u
ZGl0aW9uLndhaXRVbnRpbChtX2xvY2ssIGFic29sdXRlVGltZSwgWyZdIHsgcmV0dXJuIG1faXNT
ZXQ7IH0pOworICAgIGJvb2wgc2F0aXNmaWVkID0gbV9jb25kaXRpb24ud2FpdFVudGlsKG1fbG9j
aywgYWJzb2x1dGVUaW1lLCBbJl0geworICAgICAgICBhc3NlcnRJc0hlbGQobV9sb2NrKTsKKyAg
ICAgICAgcmV0dXJuIG1faXNTZXQ7CisgICAgfSk7CiAgICAgaWYgKHNhdGlzZmllZCkKICAgICAg
ICAgbV9pc1NldCA9IGZhbHNlOwogICAgIHJldHVybiBzYXRpc2ZpZWQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi90aHJlYWRzL0JpbmFyeVNlbWFwaG9yZS5oIGIvU291cmNlL1dURi93dGYv
dGhyZWFkcy9CaW5hcnlTZW1hcGhvcmUuaAppbmRleCA5N2NjYmRlMDgyMDUyYzc3MGFhM2RiNGU4
YmVlNmUxYzllMGUwYmFiLi4zMjg2NTE4ZTcyMzM1MzMxMGQ2ODg2YTlhOGZhYWU3MmMxMTFkNjll
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90aHJlYWRzL0JpbmFyeVNlbWFwaG9yZS5oCisr
KyBiL1NvdXJjZS9XVEYvd3RmL3RocmVhZHMvQmluYXJ5U2VtYXBob3JlLmgKQEAgLTI1LDggKzI1
LDggQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlIDx3dGYvQ29uZGl0aW9uLmg+Ci0jaW5j
bHVkZSA8d3RmL0xvY2suaD4KKyNpbmNsdWRlIDx3dGYvQ2hlY2tlZENvbmRpdGlvbi5oPgorI2lu
Y2x1ZGUgPHd0Zi9DaGVja2VkTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgog
I2luY2x1ZGUgPHd0Zi9UaW1lV2l0aER5bmFtaWNDbG9ja1R5cGUuaD4KIApAQCAtNTIsOSArNTIs
OSBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIGJvb2wgbV9pc1NldCB7IGZhbHNl
IH07Ci0gICAgTG9jayBtX2xvY2s7Ci0gICAgQ29uZGl0aW9uIG1fY29uZGl0aW9uOworICAgIGJv
b2wgbV9pc1NldCBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fbG9jaykgeyBmYWxzZSB9OworICAgIENo
ZWNrZWRMb2NrIG1fbG9jazsKKyAgICBDaGVja2VkQ29uZGl0aW9uIG1fY29uZGl0aW9uOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0
YWJhc2UvRGF0YWJhc2UuY3BwCmluZGV4IDZiYjgwODg5NmQ3YWNmMTRjOWRhYjQwYmI1MTUzYTY2
ZDcwMDQyMDEuLjcwMDc0YzdhN2FiNDIzOTk5ZjNkZjkwNDFmNGViY2EwOTRjNzFkNjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwCkBAIC0y
ODIsNyArMjgyLDcgQEAgdm9pZCBEYXRhYmFzZTo6cGVyZm9ybUNsb3NlKCkKICAgICBBU1NFUlQo
ZGF0YWJhc2VUaHJlYWQoKS5nZXRUaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogCiAg
ICAgewotICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV90cmFuc2FjdGlvbkluUHJvZ3Jlc3NNdXRl
eCB9OworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV90cmFuc2FjdGlvbkluUHJvZ3Jlc3NMb2Nr
IH07CiAKICAgICAgICAgLy8gQ2xlYW4gdXAgdHJhbnNhY3Rpb25zIHRoYXQgaGF2ZSBub3QgYmVl
biBzY2hlZHVsZWQgeWV0OgogICAgICAgICAvLyBUcmFuc2FjdGlvbiBwaGFzZSAxIGNsZWFudXAu
IFNlZSBjb21tZW50IG9uICJXaGF0IGhhcHBlbnMgaWYgYQpAQCAtNTE4LDcgKzUxOCw3IEBAIGJv
b2wgRGF0YWJhc2U6OmdldEFjdHVhbFZlcnNpb25Gb3JUcmFuc2FjdGlvbihTdHJpbmcgJmFjdHVh
bFZlcnNpb24pCiAKIHZvaWQgRGF0YWJhc2U6OnNjaGVkdWxlVHJhbnNhY3Rpb24oKQogewotICAg
IEFTU0VSVCghbV90cmFuc2FjdGlvbkluUHJvZ3Jlc3NNdXRleC50cnlMb2NrKCkpOyAvLyBMb2Nr
ZWQgYnkgY2FsbGVyLgorICAgIEFTU0VSVChtX3RyYW5zYWN0aW9uSW5Qcm9ncmVzc0xvY2suaXNI
ZWxkKCkpOwogCiAgICAgaWYgKCFtX2lzVHJhbnNhY3Rpb25RdWV1ZUVuYWJsZWQgfHwgbV90cmFu
c2FjdGlvblF1ZXVlLmlzRW1wdHkoKSkgewogICAgICAgICBtX3RyYW5zYWN0aW9uSW5Qcm9ncmVz
cyA9IGZhbHNlOwpAQCAtNTQ0LDE0ICs1NDQsMTQgQEAgdm9pZCBEYXRhYmFzZTo6c2NoZWR1bGVU
cmFuc2FjdGlvblN0ZXAoU1FMVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uKQogCiB2b2lkIERhdGFi
YXNlOjppblByb2dyZXNzVHJhbnNhY3Rpb25Db21wbGV0ZWQoKQogewotICAgIExvY2tlciBsb2Nr
ZXIgeyBtX3RyYW5zYWN0aW9uSW5Qcm9ncmVzc011dGV4IH07CisgICAgTG9ja2VyIGxvY2tlciB7
IG1fdHJhbnNhY3Rpb25JblByb2dyZXNzTG9jayB9OwogICAgIG1fdHJhbnNhY3Rpb25JblByb2dy
ZXNzID0gZmFsc2U7CiAgICAgc2NoZWR1bGVUcmFuc2FjdGlvbigpOwogfQogCiBib29sIERhdGFi
YXNlOjpoYXNQZW5kaW5nVHJhbnNhY3Rpb24oKQogewotICAgIExvY2tlciBsb2NrZXIgeyBtX3Ry
YW5zYWN0aW9uSW5Qcm9ncmVzc011dGV4IH07CisgICAgTG9ja2VyIGxvY2tlciB7IG1fdHJhbnNh
Y3Rpb25JblByb2dyZXNzTG9jayB9OwogICAgIHJldHVybiBtX3RyYW5zYWN0aW9uSW5Qcm9ncmVz
cyB8fCAhbV90cmFuc2FjdGlvblF1ZXVlLmlzRW1wdHkoKTsKIH0KIApAQCAtNjgxLDcgKzY4MSw3
IEBAIHZvaWQgRGF0YWJhc2U6OnJlc2V0QXV0aG9yaXplcigpCiB2b2lkIERhdGFiYXNlOjpydW5U
cmFuc2FjdGlvbihSZWZQdHI8U1FMVHJhbnNhY3Rpb25DYWxsYmFjaz4mJiBjYWxsYmFjaywgUmVm
UHRyPFNRTFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjaz4mJiBlcnJvckNhbGxiYWNrLCBSZWZQdHI8
Vm9pZENhbGxiYWNrPiYmIHN1Y2Nlc3NDYWxsYmFjaywgUmVmUHRyPFNRTFRyYW5zYWN0aW9uV3Jh
cHBlcj4mJiB3cmFwcGVyLCBib29sIHJlYWRPbmx5KQogewogICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7Ci0gICAgTG9ja2VyIGxvY2tlciB7IG1fdHJhbnNhY3Rpb25JblByb2dyZXNzTXV0ZXgg
fTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV90cmFuc2FjdGlvbkluUHJvZ3Jlc3NMb2NrIH07CiAg
ICAgaWYgKCFtX2lzVHJhbnNhY3Rpb25RdWV1ZUVuYWJsZWQpIHsKICAgICAgICAgaWYgKGVycm9y
Q2FsbGJhY2spIHsKICAgICAgICAgICAgIG1fZG9jdW1lbnQtPmV2ZW50TG9vcCgpLnF1ZXVlVGFz
ayhUYXNrU291cmNlOjpOZXR3b3JraW5nLCBbZXJyb3JDYWxsYmFjayA9IG1ha2VSZWYoKmVycm9y
Q2FsbGJhY2spXSgpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0
YWJhc2UvRGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0
YWJhc2UuaAppbmRleCAwZDJhOTVhYmM1YzcxZGY0NDVlNjFlMDI3YzE4NDk0OTAyZjg3Mzk4Li5h
ZDIxMzM4YTc4N2Y5M2NkODQ3N2RkMmZhMGVjNDQzOGQ5MzI1ZDUzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5oCkBAIC0zMCw4ICszMCw4IEBACiAK
ICNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgogI2luY2x1ZGUgIlNRTGl0ZURhdGFiYXNlLmgiCisj
aW5jbHVkZSA8d3RmL0NoZWNrZWRMb2NrLmg+CiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+Ci0jaW5j
bHVkZSA8d3RmL0xvY2suaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xMzksNyArMTM5
LDcgQEAgcHJpdmF0ZToKICAgICBib29sIGdldEFjdHVhbFZlcnNpb25Gb3JUcmFuc2FjdGlvbihT
dHJpbmcmIHZlcnNpb24pOwogICAgIHZvaWQgc2V0RXN0aW1hdGVkU2l6ZSh1bnNpZ25lZCBsb25n
IGxvbmcpOwogCi0gICAgdm9pZCBzY2hlZHVsZVRyYW5zYWN0aW9uKCk7CisgICAgdm9pZCBzY2hl
ZHVsZVRyYW5zYWN0aW9uKCkgV1RGX1JFUVVJUkVTX0xPQ0sobV90cmFuc2FjdGlvbkluUHJvZ3Jl
c3NMb2NrKTsKIAogICAgIHZvaWQgcnVuVHJhbnNhY3Rpb24oUmVmUHRyPFNRTFRyYW5zYWN0aW9u
Q2FsbGJhY2s+JiYsIFJlZlB0cjxTUUxUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2s+JiYsIFJlZlB0
cjxWb2lkQ2FsbGJhY2s+JiYgc3VjY2Vzc0NhbGxiYWNrLCBSZWZQdHI8U1FMVHJhbnNhY3Rpb25X
cmFwcGVyPiYmLCBib29sIHJlYWRPbmx5KTsKIApAQCAtMTY5LDEwICsxNjksMTAgQEAgcHJpdmF0
ZToKIAogICAgIFJlZjxEYXRhYmFzZUF1dGhvcml6ZXI+IG1fZGF0YWJhc2VBdXRob3JpemVyOwog
Ci0gICAgRGVxdWU8UmVmPFNRTFRyYW5zYWN0aW9uPj4gbV90cmFuc2FjdGlvblF1ZXVlOwotICAg
IExvY2sgbV90cmFuc2FjdGlvbkluUHJvZ3Jlc3NNdXRleDsKLSAgICBib29sIG1fdHJhbnNhY3Rp
b25JblByb2dyZXNzIHsgZmFsc2UgfTsKLSAgICBib29sIG1faXNUcmFuc2FjdGlvblF1ZXVlRW5h
YmxlZCB7IHRydWUgfTsKKyAgICBEZXF1ZTxSZWY8U1FMVHJhbnNhY3Rpb24+PiBtX3RyYW5zYWN0
aW9uUXVldWUgV1RGX0dVQVJERURfQllfTE9DSyhtX3RyYW5zYWN0aW9uSW5Qcm9ncmVzc0xvY2sp
OworICAgIENoZWNrZWRMb2NrIG1fdHJhbnNhY3Rpb25JblByb2dyZXNzTG9jazsKKyAgICBib29s
IG1fdHJhbnNhY3Rpb25JblByb2dyZXNzIFdURl9HVUFSREVEX0JZX0xPQ0sobV90cmFuc2FjdGlv
bkluUHJvZ3Jlc3NMb2NrKSB7IGZhbHNlIH07CisgICAgYm9vbCBtX2lzVHJhbnNhY3Rpb25RdWV1
ZUVuYWJsZWQgV1RGX0dVQVJERURfQllfTE9DSyhtX3RyYW5zYWN0aW9uSW5Qcm9ncmVzc0xvY2sp
IHsgdHJ1ZSB9OwogCiAgICAgZnJpZW5kIGNsYXNzIENoYW5nZVZlcnNpb25XcmFwcGVyOwogICAg
IGZyaWVuZCBjbGFzcyBEYXRhYmFzZU1hbmFnZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5jcHAKaW5kZXggOTUwYjQ1ZmM3
MWFhYjE2ZjE0ZTE1ZTJhMGFmZjExZjEyODUyMmE4NS4uMmM5YWE1MmExMDg5NTNlNDg3NmQ0NWQw
YzRjZDk5Mjk1ZTIyYTJiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJk
YXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmNwcApAQCAtMTgxLDEzICsxODEsMTMgQEAgRXhj
ZXB0aW9uT3I8UmVmPERhdGFiYXNlPj4gRGF0YWJhc2VNYW5hZ2VyOjp0cnlUb09wZW5EYXRhYmFz
ZUJhY2tlbmQoRG9jdW1lbnQmIGQKIAogdm9pZCBEYXRhYmFzZU1hbmFnZXI6OmFkZFByb3Bvc2Vk
RGF0YWJhc2UoUHJvcG9zZWREYXRhYmFzZSYgZGF0YWJhc2UpCiB7Ci0gICAgTG9ja2VyIGxvY2tl
ciB7IG1fcHJvcG9zZWREYXRhYmFzZXNNdXRleCB9OworICAgIExvY2tlciBsb2NrZXIgeyBtX3By
b3Bvc2VkRGF0YWJhc2VzTG9jayB9OwogICAgIG1fcHJvcG9zZWREYXRhYmFzZXMuYWRkKCZkYXRh
YmFzZSk7CiB9CiAKIHZvaWQgRGF0YWJhc2VNYW5hZ2VyOjpyZW1vdmVQcm9wb3NlZERhdGFiYXNl
KFByb3Bvc2VkRGF0YWJhc2UmIGRhdGFiYXNlKQogewotICAgIExvY2tlciBsb2NrZXIgeyBtX3By
b3Bvc2VkRGF0YWJhc2VzTXV0ZXggfTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9wcm9wb3NlZERh
dGFiYXNlc0xvY2sgfTsKICAgICBtX3Byb3Bvc2VkRGF0YWJhc2VzLnJlbW92ZSgmZGF0YWJhc2Up
OwogfQogCkBAIC0yNDEsNyArMjQxLDcgQEAgdm9pZCBEYXRhYmFzZU1hbmFnZXI6OnN0b3BEYXRh
YmFzZXMoRG9jdW1lbnQmIGRvY3VtZW50LCBEYXRhYmFzZVRhc2tTeW5jaHJvbml6ZXIKIFN0cmlu
ZyBEYXRhYmFzZU1hbmFnZXI6OmZ1bGxQYXRoRm9yRGF0YWJhc2UoU2VjdXJpdHlPcmlnaW4mIG9y
aWdpbiwgY29uc3QgU3RyaW5nJiBuYW1lLCBib29sIGNyZWF0ZUlmRG9lc05vdEV4aXN0KQogewog
ICAgIHsKLSAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fcHJvcG9zZWREYXRhYmFzZXNNdXRleCB9
OworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9wcm9wb3NlZERhdGFiYXNlc0xvY2sgfTsKICAg
ICAgICAgZm9yIChhdXRvKiBwcm9wb3NlZERhdGFiYXNlIDogbV9wcm9wb3NlZERhdGFiYXNlcykg
ewogICAgICAgICAgICAgaWYgKHByb3Bvc2VkRGF0YWJhc2UtPmRldGFpbHMoKS5uYW1lKCkgPT0g
bmFtZSAmJiBwcm9wb3NlZERhdGFiYXNlLT5vcmlnaW4oKS5lcXVhbCgmb3JpZ2luKSkKICAgICAg
ICAgICAgICAgICByZXR1cm4gU3RyaW5nKCk7CkBAIC0yNTMsNyArMjUzLDcgQEAgU3RyaW5nIERh
dGFiYXNlTWFuYWdlcjo6ZnVsbFBhdGhGb3JEYXRhYmFzZShTZWN1cml0eU9yaWdpbiYgb3JpZ2lu
LCBjb25zdCBTdHJpbmcKIERhdGFiYXNlRGV0YWlscyBEYXRhYmFzZU1hbmFnZXI6OmRldGFpbHNG
b3JOYW1lQW5kT3JpZ2luKGNvbnN0IFN0cmluZyYgbmFtZSwgU2VjdXJpdHlPcmlnaW4mIG9yaWdp
bikKIHsKICAgICB7Ci0gICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3Byb3Bvc2VkRGF0YWJhc2Vz
TXV0ZXggfTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fcHJvcG9zZWREYXRhYmFzZXNMb2Nr
IH07CiAgICAgICAgIGZvciAoYXV0byogcHJvcG9zZWREYXRhYmFzZSA6IG1fcHJvcG9zZWREYXRh
YmFzZXMpIHsKICAgICAgICAgICAgIGlmIChwcm9wb3NlZERhdGFiYXNlLT5kZXRhaWxzKCkubmFt
ZSgpID09IG5hbWUgJiYgcHJvcG9zZWREYXRhYmFzZS0+b3JpZ2luKCkuZXF1YWwoJm9yaWdpbikp
IHsKICAgICAgICAgICAgICAgICBBU1NFUlQoJnByb3Bvc2VkRGF0YWJhc2UtPmRldGFpbHMoKS50
aHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkgfHwgaXNNYWluVGhyZWFkKCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmgK
aW5kZXggYWE0M2ViZWY4OWMyODg0YjExNzhjMmY5ZmZlOWYxYmYwMWZhODgxYi4uOTIxM2E0ZDRi
OTIzNTllMTk1NWY2MTBiY2ZmOGY3Njg3OTg4OTQ4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5oCkBAIC0yOCw4ICsyOCw4
IEBACiAjaW5jbHVkZSAiRGF0YWJhc2VEZXRhaWxzLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uT3Iu
aCIKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9DaGVja2VkTG9j
ay5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL0xvY2suaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC04Nyw4ICs4Nyw4IEBAIHByaXZhdGU6CiAgICAgRGF0
YWJhc2VNYW5hZ2VyQ2xpZW50KiBtX2NsaWVudCB7IG51bGxwdHIgfTsKICAgICBib29sIG1fZGF0
YWJhc2VJc0F2YWlsYWJsZSB7IHRydWUgfTsKIAotICAgIExvY2sgbV9wcm9wb3NlZERhdGFiYXNl
c011dGV4OwotICAgIEhhc2hTZXQ8UHJvcG9zZWREYXRhYmFzZSo+IG1fcHJvcG9zZWREYXRhYmFz
ZXM7CisgICAgQ2hlY2tlZExvY2sgbV9wcm9wb3NlZERhdGFiYXNlc0xvY2s7CisgICAgSGFzaFNl
dDxQcm9wb3NlZERhdGFiYXNlKj4gbV9wcm9wb3NlZERhdGFiYXNlcyBXVEZfR1VBUkRFRF9CWV9M
T0NLKG1fcHJvcG9zZWREYXRhYmFzZXNMb2NrKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJh
c2VUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFz
ZVRocmVhZC5jcHAKaW5kZXggZTZkN2Q2NmEwOGQ4YWM3NTgzODY3YzA3MGIxM2M0M2IxNjY5OWZm
OS4uZTA3MDMzYWM1OTViNDIwZmJkYWFjOGJmYjNhMGE5MDFhZWJjNDY3MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRocmVhZC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRocmVhZC5jcHAK
QEAgLTExMCw3ICsxMTAsNyBAQCB2b2lkIERhdGFiYXNlVGhyZWFkOjpkYXRhYmFzZVRocmVhZCgp
CiAgICAgLy8gaW5jb25zaXN0ZW50IG9yIGxvY2tlZCBzdGF0ZS4KICAgICBEYXRhYmFzZVNldCBv
cGVuU2V0Q29weTsKICAgICB7Ci0gICAgICAgIExvY2tlciBsb2NrZXIgeyBtX29wZW5EYXRhYmFz
ZVNldE11dGV4IH07CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX29wZW5EYXRhYmFzZVNldExv
Y2sgfTsKICAgICAgICAgaWYgKG1fb3BlbkRhdGFiYXNlU2V0LnNpemUoKSA+IDApIHsKICAgICAg
ICAgICAgIC8vIEFzIHRoZSBjYWxsIHRvIGNsb3NlIHdpbGwgbW9kaWZ5IHRoZSBvcmlnaW5hbCBz
ZXQsIHdlIG11c3QgdGFrZSBhIGNvcHkgdG8gaXRlcmF0ZSBvdmVyLgogICAgICAgICAgICAgb3Bl
blNldENvcHkuc3dhcChtX29wZW5EYXRhYmFzZVNldCk7CkBAIC0xMzQsNyArMTM0LDcgQEAgdm9p
ZCBEYXRhYmFzZVRocmVhZDo6ZGF0YWJhc2VUaHJlYWQoKQogCiB2b2lkIERhdGFiYXNlVGhyZWFk
OjpyZWNvcmREYXRhYmFzZU9wZW4oRGF0YWJhc2UmIGRhdGFiYXNlKQogewotICAgIExvY2tlciBs
b2NrZXIgeyBtX29wZW5EYXRhYmFzZVNldE11dGV4IH07CisgICAgTG9ja2VyIGxvY2tlciB7IG1f
b3BlbkRhdGFiYXNlU2V0TG9jayB9OwogCiAgICAgQVNTRVJUKG1fdGhyZWFkID09ICZUaHJlYWQ6
OmN1cnJlbnQoKSk7CiAgICAgQVNTRVJUKCFtX29wZW5EYXRhYmFzZVNldC5jb250YWlucygmZGF0
YWJhc2UpKTsKQEAgLTE0Myw3ICsxNDMsNyBAQCB2b2lkIERhdGFiYXNlVGhyZWFkOjpyZWNvcmRE
YXRhYmFzZU9wZW4oRGF0YWJhc2UmIGRhdGFiYXNlKQogCiB2b2lkIERhdGFiYXNlVGhyZWFkOjpy
ZWNvcmREYXRhYmFzZUNsb3NlZChEYXRhYmFzZSYgZGF0YWJhc2UpCiB7Ci0gICAgTG9ja2VyIGxv
Y2tlciB7IG1fb3BlbkRhdGFiYXNlU2V0TXV0ZXggfTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9v
cGVuRGF0YWJhc2VTZXRMb2NrIH07CiAKICAgICBBU1NFUlQobV90aHJlYWQgPT0gJlRocmVhZDo6
Y3VycmVudCgpKTsKICAgICBBU1NFUlQobV9xdWV1ZS5raWxsZWQoKSB8fCBtX29wZW5EYXRhYmFz
ZVNldC5jb250YWlucygmZGF0YWJhc2UpKTsKQEAgLTE3Miw3ICsxNzIsNyBAQCB2b2lkIERhdGFi
YXNlVGhyZWFkOjp1bnNjaGVkdWxlRGF0YWJhc2VUYXNrcyhEYXRhYmFzZSYgZGF0YWJhc2UpCiAK
IGJvb2wgRGF0YWJhc2VUaHJlYWQ6Omhhc1BlbmRpbmdEYXRhYmFzZUFjdGl2aXR5KCkgY29uc3QK
IHsKLSAgICBMb2NrZXIgbG9ja2VyIHsgbV9vcGVuRGF0YWJhc2VTZXRNdXRleCB9OworICAgIExv
Y2tlciBsb2NrZXIgeyBtX29wZW5EYXRhYmFzZVNldExvY2sgfTsKICAgICBmb3IgKGF1dG8mIGRh
dGFiYXNlIDogbV9vcGVuRGF0YWJhc2VTZXQpIHsKICAgICAgICAgaWYgKGRhdGFiYXNlLT5oYXNQ
ZW5kaW5nQ3JlYXRpb25FdmVudCgpIHx8IGRhdGFiYXNlLT5oYXNQZW5kaW5nVHJhbnNhY3Rpb24o
KSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRocmVhZC5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRocmVhZC5oCmluZGV4IGJkNmM5NzQxZWU5YWFiY2E0
OWY5YzRkOGNhNmVjOTk5YzBmM2U3ZTQuLjVkYzQxMWNjNTYzM2M0NmRhMTYxYWUwMmJhNDk5YTli
MGI1YTc0MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2Uv
RGF0YWJhc2VUaHJlYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNl
L0RhdGFiYXNlVGhyZWFkLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5j
bHVkZSA8bWVtb3J5PgorI2luY2x1ZGUgPHd0Zi9DaGVja2VkTG9jay5oPgogI2luY2x1ZGUgPHd0
Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL01lc3NhZ2VRdWV1ZS5oPgogI2luY2x1ZGUgPHd0
Zi9SZWZQdHIuaD4KQEAgLTc1LDggKzc2LDggQEAgcHJpdmF0ZToKIAogICAgIC8vIFRoaXMgc2V0
IGtlZXBzIHRyYWNrIG9mIHRoZSBvcGVuIGRhdGFiYXNlcyB0aGF0IGhhdmUgYmVlbiB1c2VkIG9u
IHRoaXMgdGhyZWFkLgogICAgIHVzaW5nIERhdGFiYXNlU2V0ID0gSGFzaFNldDxSZWZQdHI8RGF0
YWJhc2U+PjsKLSAgICBtdXRhYmxlIExvY2sgbV9vcGVuRGF0YWJhc2VTZXRNdXRleDsKLSAgICBE
YXRhYmFzZVNldCBtX29wZW5EYXRhYmFzZVNldDsKKyAgICBtdXRhYmxlIENoZWNrZWRMb2NrIG1f
b3BlbkRhdGFiYXNlU2V0TG9jazsKKyAgICBEYXRhYmFzZVNldCBtX29wZW5EYXRhYmFzZVNldCBX
VEZfR1VBUkRFRF9CWV9MT0NLKG1fb3BlbkRhdGFiYXNlU2V0TG9jayk7CiAKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8U1FMVHJhbnNhY3Rpb25Db29yZGluYXRvcj4gbV90cmFuc2FjdGlvbkNvb3JkaW5h
dG9yOwogICAgIERhdGFiYXNlVGFza1N5bmNocm9uaXplciogbV9jbGVhbnVwU3luYyB7IG51bGxw
dHIgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0
YWJhc2VUcmFja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0
YWJhc2VUcmFja2VyLmNwcAppbmRleCBhNjhiM2Y4MjVhOGU0OGIxZDYxNmQ2NTk0Y2RiZTZlMWU2
Zjc1YTM2Li40NWIyN2Y5ZDM1MTljMTE5OTI0NzY2ZWM0YzI3ZTQwMTM0MjkyMDQ5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNr
ZXIuY3BwCkBAIC0xMDQsNyArMTA0LDcgQEAgU3RyaW5nIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tl
ckRhdGFiYXNlUGF0aCgpIGNvbnN0CiAKIHZvaWQgRGF0YWJhc2VUcmFja2VyOjpvcGVuVHJhY2tl
ckRhdGFiYXNlKFRyYWNrZXJDcmVhdGlvbkFjdGlvbiBjcmVhdGVBY3Rpb24pCiB7Ci0gICAgQVNT
RVJUKCFtX2RhdGFiYXNlR3VhcmQudHJ5TG9jaygpKTsKKyAgICBBU1NFUlQobV9kYXRhYmFzZUd1
YXJkLmlzSGVsZCgpKTsKIAogICAgIGlmIChtX2RhdGFiYXNlLmlzT3BlbigpKQogICAgICAgICBy
ZXR1cm47CkBAIC0xNDMsNyArMTQzLDcgQEAgdm9pZCBEYXRhYmFzZVRyYWNrZXI6Om9wZW5UcmFj
a2VyRGF0YWJhc2UoVHJhY2tlckNyZWF0aW9uQWN0aW9uIGNyZWF0ZUFjdGlvbikKIAogRXhjZXB0
aW9uT3I8dm9pZD4gRGF0YWJhc2VUcmFja2VyOjpoYXNBZGVxdWF0ZVF1b3RhRm9yT3JpZ2luKGNv
bnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2luLCB1aW50NjRfdCBlc3RpbWF0ZWRTaXplKQog
ewotICAgIEFTU0VSVCghbV9kYXRhYmFzZUd1YXJkLnRyeUxvY2soKSk7CisgICAgQVNTRVJUKG1f
ZGF0YWJhc2VHdWFyZC5pc0hlbGQoKSk7CiAgICAgYXV0byB1c2FnZSA9IHRoaXMtPnVzYWdlKG9y
aWdpbik7CiAKICAgICAvLyBJZiB0aGUgZGF0YWJhc2Ugd2lsbCBmaXQsIGFsbG93IGl0cyBjcmVh
dGlvbi4KQEAgLTIzMCw3ICsyMzAsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBEYXRhYmFzZVRyYWNr
ZXI6OnJldHJ5Q2FuRXN0YWJsaXNoRGF0YWJhc2UoRGF0YWJhc2VDb250ZXh0JiBjbwogCiBib29s
IERhdGFiYXNlVHJhY2tlcjo6aGFzRW50cnlGb3JPcmlnaW5Ob0xvY2soY29uc3QgU2VjdXJpdHlP
cmlnaW5EYXRhJiBvcmlnaW4pCiB7Ci0gICAgQVNTRVJUKCFtX2RhdGFiYXNlR3VhcmQudHJ5TG9j
aygpKTsKKyAgICBBU1NFUlQobV9kYXRhYmFzZUd1YXJkLmlzSGVsZCgpKTsKICAgICBvcGVuVHJh
Y2tlckRhdGFiYXNlKERvbnRDcmVhdGVJZkRvZXNOb3RFeGlzdCk7CiAgICAgaWYgKCFtX2RhdGFi
YXNlLmlzT3BlbigpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yNDgsNyArMjQ4LDcgQEAg
Ym9vbCBEYXRhYmFzZVRyYWNrZXI6Omhhc0VudHJ5Rm9yT3JpZ2luTm9Mb2NrKGNvbnN0IFNlY3Vy
aXR5T3JpZ2luRGF0YSYgb3JpZ2luKQogCiBib29sIERhdGFiYXNlVHJhY2tlcjo6aGFzRW50cnlG
b3JEYXRhYmFzZShjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbiwgY29uc3QgU3RyaW5n
JiBkYXRhYmFzZUlkZW50aWZpZXIpCiB7Ci0gICAgQVNTRVJUKCFtX2RhdGFiYXNlR3VhcmQudHJ5
TG9jaygpKTsKKyAgICBBU1NFUlQobV9kYXRhYmFzZUd1YXJkLmlzSGVsZCgpKTsKICAgICBvcGVu
VHJhY2tlckRhdGFiYXNlKERvbnRDcmVhdGVJZkRvZXNOb3RFeGlzdCk7CiAgICAgaWYgKCFtX2Rh
dGFiYXNlLmlzT3BlbigpKSB7CiAgICAgICAgIC8vIE5vICJ0cmFja2VyIGRhdGFiYXNlIi4gSGVu
Y2UsIG5vIGVudHJ5IGZvciB0aGUgZGF0YWJhc2Ugb2YgaW50ZXJlc3QuCkBAIC0zMTMsNyArMzEz
LDcgQEAgc3RhdGljIFN0cmluZyBnZW5lcmF0ZURhdGFiYXNlRmlsZU5hbWUoKQogCiBTdHJpbmcg
RGF0YWJhc2VUcmFja2VyOjpmdWxsUGF0aEZvckRhdGFiYXNlTm9Mb2NrKGNvbnN0IFNlY3VyaXR5
T3JpZ2luRGF0YSYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wgY3JlYXRlSWZOb3RF
eGlzdHMpCiB7Ci0gICAgQVNTRVJUKCFtX2RhdGFiYXNlR3VhcmQudHJ5TG9jaygpKTsKKyAgICBB
U1NFUlQobV9kYXRhYmFzZUd1YXJkLmlzSGVsZCgpKTsKIAogICAgIFN0cmluZyBvcmlnaW5JZGVu
dGlmaWVyID0gb3JpZ2luLmRhdGFiYXNlSWRlbnRpZmllcigpOwogICAgIFN0cmluZyBvcmlnaW5Q
YXRoID0gdGhpcy0+b3JpZ2luUGF0aChvcmlnaW4pOwpAQCAtMzkyLDcgKzM5Miw3IEBAIFZlY3Rv
cjxTZWN1cml0eU9yaWdpbkRhdGE+IERhdGFiYXNlVHJhY2tlcjo6b3JpZ2lucygpCiAKIFZlY3Rv
cjxTdHJpbmc+IERhdGFiYXNlVHJhY2tlcjo6ZGF0YWJhc2VOYW1lc05vTG9jayhjb25zdCBTZWN1
cml0eU9yaWdpbkRhdGEmIG9yaWdpbikKIHsKLSAgICBBU1NFUlQoIW1fZGF0YWJhc2VHdWFyZC50
cnlMb2NrKCkpOworICAgIEFTU0VSVChtX2RhdGFiYXNlR3VhcmQuaXNIZWxkKCkpOwogICAgIG9w
ZW5UcmFja2VyRGF0YWJhc2UoRG9udENyZWF0ZUlmRG9lc05vdEV4aXN0KTsKICAgICBpZiAoIW1f
ZGF0YWJhc2UuaXNPcGVuKCkpCiAgICAgICAgIHJldHVybiB7IH07CkBAIC02MzQsNyArNjM0LDcg
QEAgUmVmUHRyPE9yaWdpbkxvY2s+IERhdGFiYXNlVHJhY2tlcjo6b3JpZ2luTG9ja0Zvcihjb25z
dCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWcKIAogdm9pZCBEYXRhYmFzZVRyYWNrZXI6OmRlbGV0
ZU9yaWdpbkxvY2tGb3IoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBvcmlnaW4pCiB7Ci0gICAg
QVNTRVJUKCFtX2RhdGFiYXNlR3VhcmQudHJ5TG9jaygpKTsKKyAgICBBU1NFUlQobV9kYXRhYmFz
ZUd1YXJkLmlzSGVsZCgpKTsKIAogICAgIC8vIFRoZXJlIGlzIG5vdCBhbHdheXMgYW4gaW5zdGFu
Y2Ugb2YgYW4gT3JpZ2luTG9jayBhc3NvY2lhdGVkIHdpdGggYW4gb3JpZ2luLgogICAgIC8vIEZv
ciBleGFtcGxlLCBpZiB0aGUgT3JpZ2luTG9jayBsb2NrIGZpbGUgd2FzIGNyZWF0ZWQgYnkgYSBw
cmV2aW91cyBydW4gb2YKQEAgLTY2Niw3ICs2NjYsNyBAQCB1aW50NjRfdCBEYXRhYmFzZVRyYWNr
ZXI6OnVzYWdlKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2luKQogCiB1aW50NjRfdCBE
YXRhYmFzZVRyYWNrZXI6OnF1b3RhTm9Mb2NrKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3Jp
Z2luKQogewotICAgIEFTU0VSVCghbV9kYXRhYmFzZUd1YXJkLnRyeUxvY2soKSk7CisgICAgQVNT
RVJUKG1fZGF0YWJhc2VHdWFyZC5pc0hlbGQoKSk7CiAgICAgdWludDY0X3QgcXVvdGEgPSAwOwog
CiAgICAgb3BlblRyYWNrZXJEYXRhYmFzZShEb250Q3JlYXRlSWZEb2VzTm90RXhpc3QpOwpAQCAt
NzQyLDcgKzc0Miw3IEBAIHZvaWQgRGF0YWJhc2VUcmFja2VyOjpzZXRRdW90YShjb25zdCBTZWN1
cml0eU9yaWdpbkRhdGEmIG9yaWdpbiwgdWludDY0X3QgcXVvdGEpCiAKIGJvb2wgRGF0YWJhc2VU
cmFja2VyOjphZGREYXRhYmFzZShjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbiwgY29u
c3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHBhdGgpCiB7Ci0gICAgQVNTRVJUKCFtX2Rh
dGFiYXNlR3VhcmQudHJ5TG9jaygpKTsKKyAgICBBU1NFUlQobV9kYXRhYmFzZUd1YXJkLmlzSGVs
ZCgpKTsKICAgICBvcGVuVHJhY2tlckRhdGFiYXNlKENyZWF0ZUlmRG9lc05vdEV4aXN0KTsKICAg
ICBpZiAoIW1fZGF0YWJhc2UuaXNPcGVuKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTk0
NiwxNCArOTQ2LDE0IEBAIGJvb2wgRGF0YWJhc2VUcmFja2VyOjpkZWxldGVPcmlnaW4oY29uc3Qg
U2VjdXJpdHlPcmlnaW5EYXRhJiBvcmlnaW4sIERlbGV0aW9uTW9kCiAKIGJvb2wgRGF0YWJhc2VU
cmFja2VyOjppc0RlbGV0aW5nRGF0YWJhc2VPck9yaWdpbkZvcihjb25zdCBTZWN1cml0eU9yaWdp
bkRhdGEmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBuYW1lKQogewotICAgIEFTU0VSVCghbV9kYXRh
YmFzZUd1YXJkLnRyeUxvY2soKSk7CisgICAgQVNTRVJUKG1fZGF0YWJhc2VHdWFyZC5pc0hlbGQo
KSk7CiAgICAgLy8gQ2FuJ3QgY3JlYXRlIGEgZGF0YWJhc2Ugd2hpbGUgc29tZW9uZSBlbHNlIGlz
IGRlbGV0aW5nIGl0OyB0aGVyZSdzIGEgcmlzayBvZiBsZWF2aW5nIHVudHJhY2tlZCBkYXRhYmFz
ZSBkZWJyaXMgb24gdGhlIGRpc2suCiAgICAgcmV0dXJuIGlzRGVsZXRpbmdEYXRhYmFzZShvcmln
aW4sIG5hbWUpIHx8IGlzRGVsZXRpbmdPcmlnaW4ob3JpZ2luKTsKIH0KIAogdm9pZCBEYXRhYmFz
ZVRyYWNrZXI6OnJlY29yZENyZWF0aW5nRGF0YWJhc2UoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRh
JiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKLSAgICBBU1NFUlQoIW1fZGF0YWJhc2VH
dWFyZC50cnlMb2NrKCkpOworICAgIEFTU0VSVChtX2RhdGFiYXNlR3VhcmQuaXNIZWxkKCkpOwog
CiAgICAgLy8gV2UgZG9uJ3QgdXNlIEhhc2hNYXA6OmVuc3VyZSBoZXJlIHRvIGF2b2lkIG1ha2lu
ZyBhbiBpc29sYXRlZCBjb3B5IG9mIHRoZSBvcmlnaW4gZXZlcnkgdGltZS4KICAgICBhdXRvKiBu
YW1lU2V0ID0gbV9iZWluZ0NyZWF0ZWQuZ2V0KG9yaWdpbik7CkBAIC05NjcsNyArOTY3LDcgQEAg
dm9pZCBEYXRhYmFzZVRyYWNrZXI6OnJlY29yZENyZWF0aW5nRGF0YWJhc2UoY29uc3QgU2VjdXJp
dHlPcmlnaW5EYXRhJiBvcmlnaW4sIGMKIAogdm9pZCBEYXRhYmFzZVRyYWNrZXI6OmRvbmVDcmVh
dGluZ0RhdGFiYXNlKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2luLCBjb25zdCBTdHJp
bmcmIG5hbWUpCiB7Ci0gICAgQVNTRVJUKCFtX2RhdGFiYXNlR3VhcmQudHJ5TG9jaygpKTsKKyAg
ICBBU1NFUlQobV9kYXRhYmFzZUd1YXJkLmlzSGVsZCgpKTsKIAogICAgIEFTU0VSVChtX2JlaW5n
Q3JlYXRlZC5jb250YWlucyhvcmlnaW4pKTsKIApAQCAtOTg0LDcgKzk4NCw3IEBAIHZvaWQgRGF0
YWJhc2VUcmFja2VyOjpkb25lQ3JlYXRpbmdEYXRhYmFzZShjb25zdCBTZWN1cml0eU9yaWdpbkRh
dGEmIG9yaWdpbiwgY29uCiAKIGJvb2wgRGF0YWJhc2VUcmFja2VyOjpjcmVhdGluZ0RhdGFiYXNl
KGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIG5hbWUpCiB7
Ci0gICAgQVNTRVJUKCFtX2RhdGFiYXNlR3VhcmQudHJ5TG9jaygpKTsKKyAgICBBU1NFUlQobV9k
YXRhYmFzZUd1YXJkLmlzSGVsZCgpKTsKIAogICAgIGF1dG8gaXRlcmF0b3IgPSBtX2JlaW5nQ3Jl
YXRlZC5maW5kKG9yaWdpbik7CiAgICAgcmV0dXJuIGl0ZXJhdG9yICE9IG1fYmVpbmdDcmVhdGVk
LmVuZCgpICYmIGl0ZXJhdG9yLT52YWx1ZS0+Y29udGFpbnMobmFtZSk7CkBAIC05OTIsMTMgKzk5
MiwxMyBAQCBib29sIERhdGFiYXNlVHJhY2tlcjo6Y3JlYXRpbmdEYXRhYmFzZShjb25zdCBTZWN1
cml0eU9yaWdpbkRhdGEmIG9yaWdpbiwgY29uc3QgUwogCiBib29sIERhdGFiYXNlVHJhY2tlcjo6
Y2FuRGVsZXRlRGF0YWJhc2UoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBvcmlnaW4sIGNvbnN0
IFN0cmluZyYgbmFtZSkKIHsKLSAgICBBU1NFUlQoIW1fZGF0YWJhc2VHdWFyZC50cnlMb2NrKCkp
OworICAgIEFTU0VSVChtX2RhdGFiYXNlR3VhcmQuaXNIZWxkKCkpOwogICAgIHJldHVybiAhY3Jl
YXRpbmdEYXRhYmFzZShvcmlnaW4sIG5hbWUpICYmICFpc0RlbGV0aW5nRGF0YWJhc2Uob3JpZ2lu
LCBuYW1lKTsKIH0KIAogdm9pZCBEYXRhYmFzZVRyYWNrZXI6OnJlY29yZERlbGV0aW5nRGF0YWJh
c2UoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbmFtZSkK
IHsKLSAgICBBU1NFUlQoIW1fZGF0YWJhc2VHdWFyZC50cnlMb2NrKCkpOworICAgIEFTU0VSVCht
X2RhdGFiYXNlR3VhcmQuaXNIZWxkKCkpOwogICAgIEFTU0VSVChjYW5EZWxldGVEYXRhYmFzZShv
cmlnaW4sIG5hbWUpKTsKIAogICAgIC8vIFdlIGRvbid0IHVzZSBIYXNoTWFwOjplbnN1cmUgaGVy
ZSB0byBhdm9pZCBtYWtpbmcgYW4gaXNvbGF0ZWQgY29weSBvZiB0aGUgb3JpZ2luIGV2ZXJ5IHRp
bWUuCkBAIC0xMDE0LDcgKzEwMTQsNyBAQCB2b2lkIERhdGFiYXNlVHJhY2tlcjo6cmVjb3JkRGVs
ZXRpbmdEYXRhYmFzZShjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbiwgYwogCiB2b2lk
IERhdGFiYXNlVHJhY2tlcjo6ZG9uZURlbGV0aW5nRGF0YWJhc2UoY29uc3QgU2VjdXJpdHlPcmln
aW5EYXRhJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKLSAgICBBU1NFUlQoIW1fZGF0
YWJhc2VHdWFyZC50cnlMb2NrKCkpOworICAgIEFTU0VSVChtX2RhdGFiYXNlR3VhcmQuaXNIZWxk
KCkpOwogICAgIEFTU0VSVChtX2JlaW5nRGVsZXRlZC5jb250YWlucyhvcmlnaW4pKTsKIAogICAg
IGF1dG8gaXRlcmF0b3IgPSBtX2JlaW5nRGVsZXRlZC5maW5kKG9yaWdpbik7CkBAIC0xMDI5LDMz
ICsxMDI5LDMzIEBAIHZvaWQgRGF0YWJhc2VUcmFja2VyOjpkb25lRGVsZXRpbmdEYXRhYmFzZShj
b25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbiwgY29uCiAKIGJvb2wgRGF0YWJhc2VUcmFj
a2VyOjppc0RlbGV0aW5nRGF0YWJhc2UoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBvcmlnaW4s
IGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKLSAgICBBU1NFUlQoIW1fZGF0YWJhc2VHdWFyZC50cnlM
b2NrKCkpOworICAgIEFTU0VSVChtX2RhdGFiYXNlR3VhcmQuaXNIZWxkKCkpOwogICAgIGF1dG8q
IG5hbWVTZXQgPSBtX2JlaW5nRGVsZXRlZC5nZXQob3JpZ2luKTsKICAgICByZXR1cm4gbmFtZVNl
dCAmJiBuYW1lU2V0LT5jb250YWlucyhuYW1lKTsKIH0KIAogYm9vbCBEYXRhYmFzZVRyYWNrZXI6
OmNhbkRlbGV0ZU9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbikKIHsKLSAg
ICBBU1NFUlQoIW1fZGF0YWJhc2VHdWFyZC50cnlMb2NrKCkpOworICAgIEFTU0VSVChtX2RhdGFi
YXNlR3VhcmQuaXNIZWxkKCkpOwogICAgIHJldHVybiAhKGlzRGVsZXRpbmdPcmlnaW4ob3JpZ2lu
KSB8fCBtX2JlaW5nQ3JlYXRlZC5nZXQob3JpZ2luKSk7CiB9CiAKIGJvb2wgRGF0YWJhc2VUcmFj
a2VyOjppc0RlbGV0aW5nT3JpZ2luKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2luKQog
ewotICAgIEFTU0VSVCghbV9kYXRhYmFzZUd1YXJkLnRyeUxvY2soKSk7CisgICAgQVNTRVJUKG1f
ZGF0YWJhc2VHdWFyZC5pc0hlbGQoKSk7CiAgICAgcmV0dXJuIG1fb3JpZ2luc0JlaW5nRGVsZXRl
ZC5jb250YWlucyhvcmlnaW4pOwogfQogCiB2b2lkIERhdGFiYXNlVHJhY2tlcjo6cmVjb3JkRGVs
ZXRpbmdPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBvcmlnaW4pCiB7Ci0gICAgQVNT
RVJUKCFtX2RhdGFiYXNlR3VhcmQudHJ5TG9jaygpKTsKKyAgICBBU1NFUlQobV9kYXRhYmFzZUd1
YXJkLmlzSGVsZCgpKTsKICAgICBBU1NFUlQoIWlzRGVsZXRpbmdPcmlnaW4ob3JpZ2luKSk7CiAg
ICAgbV9vcmlnaW5zQmVpbmdEZWxldGVkLmFkZChvcmlnaW4uaXNvbGF0ZWRDb3B5KCkpOwogfQog
CiB2b2lkIERhdGFiYXNlVHJhY2tlcjo6ZG9uZURlbGV0aW5nT3JpZ2luKGNvbnN0IFNlY3VyaXR5
T3JpZ2luRGF0YSYgb3JpZ2luKQogewotICAgIEFTU0VSVCghbV9kYXRhYmFzZUd1YXJkLnRyeUxv
Y2soKSk7CisgICAgQVNTRVJUKG1fZGF0YWJhc2VHdWFyZC5pc0hlbGQoKSk7CiAgICAgQVNTRVJU
KGlzRGVsZXRpbmdPcmlnaW4ob3JpZ2luKSk7CiAgICAgbV9vcmlnaW5zQmVpbmdEZWxldGVkLnJl
bW92ZShvcmlnaW4pOwogfQpAQCAtMTE2Nyw3ICsxMTY3LDggQEAgYm9vbCBEYXRhYmFzZVRyYWNr
ZXI6OmRlbGV0ZURhdGFiYXNlRmlsZShjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbiwg
Y29uc3QKICAgICAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCi12b2lkIERhdGFiYXNlVHJh
Y2tlcjo6cmVtb3ZlRGVsZXRlZE9wZW5lZERhdGFiYXNlcygpCisvLyBGSVhNRTogVGhpcyB1c2Vz
IG1fZGF0YWJhc2Ugd2l0aG91dCBsb2NraW5nIG1fZGF0YWJhc2VHdWFyZC4KK3ZvaWQgRGF0YWJh
c2VUcmFja2VyOjpyZW1vdmVEZWxldGVkT3BlbmVkRGF0YWJhc2VzKCkgV1RGX0lHTk9SRVNfVEhS
RUFEX1NBRkVUWV9BTkFMWVNJUwogewogICAgIC8vIFRoaXMgaXMgY2FsbGVkIHdoZW4gYW5vdGhl
ciBhcHAgaGFzIGRlbGV0ZWQgYSBkYXRhYmFzZS4gIEdvIHRocm91Z2ggYWxsIG9wZW5lZCBkYXRh
YmFzZXMgaW4gdGhpcwogICAgIC8vIHRyYWNrZXIgYW5kIGNsb3NlIGFueSB0aGF0J3Mgbm8gbG9u
Z2VyIGJlaW5nIHRyYWNrZWQgaW4gdGhlIGRhdGFiYXNlLgpAQCAtMTE3NiwxMCArMTE3NywxMCBA
QCB2b2lkIERhdGFiYXNlVHJhY2tlcjo6cmVtb3ZlRGVsZXRlZE9wZW5lZERhdGFiYXNlcygpCiAg
ICAgICAgIC8vIEFjcXVpcmUgdGhlIGxvY2sgYmVmb3JlIGNhbGxpbmcgb3BlblRyYWNrZXJEYXRh
YmFzZS4KICAgICAgICAgTG9ja2VyIGxvY2tEYXRhYmFzZSB7IG1fZGF0YWJhc2VHdWFyZCB9Owog
ICAgICAgICBvcGVuVHJhY2tlckRhdGFiYXNlKERvbnRDcmVhdGVJZkRvZXNOb3RFeGlzdCk7Ci0g
ICAgfQogCi0gICAgaWYgKCFtX2RhdGFiYXNlLmlzT3BlbigpKQotICAgICAgICByZXR1cm47Cisg
ICAgICAgIGlmICghbV9kYXRhYmFzZS5pc09wZW4oKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICB9CiAgICAgCiAgICAgLy8gS2VlcCB0cmFjayBvZiB3aGljaCBvcGVuZWQgZGF0YWJhc2VzIGhh
dmUgYmVlbiBkZWxldGVkLgogICAgIFZlY3RvcjxSZWZQdHI8RGF0YWJhc2U+PiBkZWxldGVkRGF0
YWJhc2VzOwpAQCAtMTMzMCw3ICsxMzMxLDcgQEAgc3RhdGljIGJvb2wgbm90aWZpY2F0aW9uU2No
ZWR1bGVkID0gZmFsc2U7CiAKIHZvaWQgRGF0YWJhc2VUcmFja2VyOjpzY2hlZHVsZUZvck5vdGlm
aWNhdGlvbigpCiB7Ci0gICAgQVNTRVJUKCFub3RpZmljYXRpb25Mb2NrLnRyeUxvY2soKSk7Cisg
ICAgQVNTRVJUKG5vdGlmaWNhdGlvbkxvY2suaXNIZWxkKCkpOwogCiAgICAgaWYgKCFub3RpZmlj
YXRpb25TY2hlZHVsZWQpIHsKICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbXSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuaApp
bmRleCAzY2EwYTQ2NTUwMTQ1ZDAwYjIyMjUxMGE2MTkzYjU4MGE5OWUzNzkxLi5kZDljNWQ4Nzc2
YmQxZGMzODk2NmU3NWY1NGYxMzFhZGQ3NjY4YjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmgKQEAgLTMzLDYgKzMzLDcg
QEAKICNpbmNsdWRlICJTUUxpdGVEYXRhYmFzZS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2lu
RGF0YS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luSGFzaC5oIgorI2luY2x1ZGUgPHd0Zi9D
aGVja2VkTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoQ291bnRlZFNldC5oPgogI2luY2x1ZGUg
PHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KQEAgLTExOSwyNiArMTIw
LDI2IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgRGF0YWJhc2VUcmFja2VyKGNv
bnN0IFN0cmluZyYgZGF0YWJhc2VQYXRoKTsKIAotICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGhhc0Fk
ZXF1YXRlUXVvdGFGb3JPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiwgdWludDY0X3Qg
ZXN0aW1hdGVkU2l6ZSk7CisgICAgRXhjZXB0aW9uT3I8dm9pZD4gaGFzQWRlcXVhdGVRdW90YUZv
ck9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmLCB1aW50NjRfdCBlc3RpbWF0ZWRTaXpl
KSBXVEZfUkVRVUlSRVNfTE9DSyhtX2RhdGFiYXNlR3VhcmQpOwogCi0gICAgYm9vbCBoYXNFbnRy
eUZvck9yaWdpbk5vTG9jayhjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmKTsKLSAgICBTdHJpbmcg
ZnVsbFBhdGhGb3JEYXRhYmFzZU5vTG9jayhjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmLCBjb25z
dCBTdHJpbmcmIG5hbWUsIGJvb2wgY3JlYXRlSWZEb2VzTm90RXhpc3QpOwotICAgIFZlY3RvcjxT
dHJpbmc+IGRhdGFiYXNlTmFtZXNOb0xvY2soY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJik7Ci0g
ICAgdWludDY0X3QgcXVvdGFOb0xvY2soY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJik7CisgICAg
Ym9vbCBoYXNFbnRyeUZvck9yaWdpbk5vTG9jayhjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmKSBX
VEZfUkVRVUlSRVNfTE9DSyhtX2RhdGFiYXNlR3VhcmQpOworICAgIFN0cmluZyBmdWxsUGF0aEZv
ckRhdGFiYXNlTm9Mb2NrKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYsIGNvbnN0IFN0cmluZyYg
bmFtZSwgYm9vbCBjcmVhdGVJZkRvZXNOb3RFeGlzdCkgV1RGX1JFUVVJUkVTX0xPQ0sobV9kYXRh
YmFzZUd1YXJkKTsKKyAgICBWZWN0b3I8U3RyaW5nPiBkYXRhYmFzZU5hbWVzTm9Mb2NrKGNvbnN0
IFNlY3VyaXR5T3JpZ2luRGF0YSYpIFdURl9SRVFVSVJFU19MT0NLKG1fZGF0YWJhc2VHdWFyZCkg
V1RGX1JFUVVJUkVTX0xPQ0sobV9kYXRhYmFzZUd1YXJkKTsKKyAgICB1aW50NjRfdCBxdW90YU5v
TG9jayhjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmKSBXVEZfUkVRVUlSRVNfTE9DSyhtX2RhdGFi
YXNlR3VhcmQpOwogCi0gICAgU3RyaW5nIHRyYWNrZXJEYXRhYmFzZVBhdGgoKSBjb25zdDsKKyAg
ICBTdHJpbmcgdHJhY2tlckRhdGFiYXNlUGF0aCgpIGNvbnN0IFdURl9SRVFVSVJFU19MT0NLKG1f
ZGF0YWJhc2VHdWFyZCk7CiAKICAgICBlbnVtIFRyYWNrZXJDcmVhdGlvbkFjdGlvbiB7CiAgICAg
ICAgIERvbnRDcmVhdGVJZkRvZXNOb3RFeGlzdCwKICAgICAgICAgQ3JlYXRlSWZEb2VzTm90RXhp
c3QKICAgICB9OwotICAgIHZvaWQgb3BlblRyYWNrZXJEYXRhYmFzZShUcmFja2VyQ3JlYXRpb25B
Y3Rpb24pOworICAgIHZvaWQgb3BlblRyYWNrZXJEYXRhYmFzZShUcmFja2VyQ3JlYXRpb25BY3Rp
b24pIFdURl9SRVFVSVJFU19MT0NLKG1fZGF0YWJhc2VHdWFyZCk7CiAKICAgICBTdHJpbmcgb3Jp
Z2luUGF0aChjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmKSBjb25zdDsKIAotICAgIGJvb2wgaGFz
RW50cnlGb3JEYXRhYmFzZShjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmLCBjb25zdCBTdHJpbmcm
IGRhdGFiYXNlSWRlbnRpZmllcik7CisgICAgYm9vbCBoYXNFbnRyeUZvckRhdGFiYXNlKGNvbnN0
IFNlY3VyaXR5T3JpZ2luRGF0YSYsIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VJZGVudGlmaWVyKSBX
VEZfUkVRVUlSRVNfTE9DSyhtX2RhdGFiYXNlR3VhcmQpOwogCi0gICAgYm9vbCBhZGREYXRhYmFz
ZShjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0
cmluZyYgcGF0aCk7CisgICAgYm9vbCBhZGREYXRhYmFzZShjb25zdCBTZWN1cml0eU9yaWdpbkRh
dGEmLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgcGF0aCkgV1RGX1JFUVVJUkVT
X0xPQ0sobV9kYXRhYmFzZUd1YXJkKTsKIAogICAgIGVudW0gY2xhc3MgRGVsZXRpb25Nb2RlIHsK
ICAgICAgICAgSW1tZWRpYXRlLApAQCAtMTU1LDQxICsxNTYsNDEgQEAgcHJpdmF0ZToKICAgICBi
b29sIGRlbGV0ZU9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmLCBEZWxldGlvbk1vZGUp
OwogICAgIGJvb2wgZGVsZXRlRGF0YWJhc2VGaWxlKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYs
IGNvbnN0IFN0cmluZyYgbmFtZSwgRGVsZXRpb25Nb2RlKTsKIAotICAgIHZvaWQgZGVsZXRlT3Jp
Z2luTG9ja0Zvcihjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmKTsKKyAgICB2b2lkIGRlbGV0ZU9y
aWdpbkxvY2tGb3IoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJikgV1RGX1JFUVVJUkVTX0xPQ0so
bV9kYXRhYmFzZUd1YXJkKTsKIAogICAgIHVzaW5nIERhdGFiYXNlU2V0ID0gSGFzaFNldDxEYXRh
YmFzZSo+OwogICAgIHVzaW5nIERhdGFiYXNlTmFtZU1hcCA9IEhhc2hNYXA8U3RyaW5nLCBEYXRh
YmFzZVNldCo+OwogICAgIHVzaW5nIERhdGFiYXNlT3JpZ2luTWFwID0gSGFzaE1hcDxTZWN1cml0
eU9yaWdpbkRhdGEsIERhdGFiYXNlTmFtZU1hcCo+OwogCi0gICAgTG9jayBtX29wZW5EYXRhYmFz
ZU1hcEd1YXJkOwotICAgIG11dGFibGUgc3RkOjp1bmlxdWVfcHRyPERhdGFiYXNlT3JpZ2luTWFw
PiBtX29wZW5EYXRhYmFzZU1hcDsKKyAgICBDaGVja2VkTG9jayBtX29wZW5EYXRhYmFzZU1hcEd1
YXJkOworICAgIG11dGFibGUgc3RkOjp1bmlxdWVfcHRyPERhdGFiYXNlT3JpZ2luTWFwPiBtX29w
ZW5EYXRhYmFzZU1hcCBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fb3BlbkRhdGFiYXNlTWFwR3VhcmQp
OwogCiAgICAgLy8gVGhpcyBsb2NrIHByb3RlY3RzIG1fZGF0YWJhc2UsIG1fb3JpZ2luTG9ja01h
cCwgbV9kYXRhYmFzZURpcmVjdG9yeVBhdGgsIG1fb3JpZ2luc0JlaW5nRGVsZXRlZCwgbV9iZWlu
Z0NyZWF0ZWQsIGFuZCBtX2JlaW5nRGVsZXRlZC4KLSAgICBMb2NrIG1fZGF0YWJhc2VHdWFyZDsK
LSAgICBTUUxpdGVEYXRhYmFzZSBtX2RhdGFiYXNlOworICAgIENoZWNrZWRMb2NrIG1fZGF0YWJh
c2VHdWFyZDsKKyAgICBTUUxpdGVEYXRhYmFzZSBtX2RhdGFiYXNlIFdURl9HVUFSREVEX0JZX0xP
Q0sobV9kYXRhYmFzZUd1YXJkKTsKIAogICAgIHVzaW5nIE9yaWdpbkxvY2tNYXAgPSBIYXNoTWFw
PFN0cmluZywgUmVmUHRyPE9yaWdpbkxvY2s+PjsKLSAgICBPcmlnaW5Mb2NrTWFwIG1fb3JpZ2lu
TG9ja01hcDsKKyAgICBPcmlnaW5Mb2NrTWFwIG1fb3JpZ2luTG9ja01hcCBXVEZfR1VBUkRFRF9C
WV9MT0NLKG1fZGF0YWJhc2VHdWFyZCk7CiAKICAgICBTdHJpbmcgbV9kYXRhYmFzZURpcmVjdG9y
eVBhdGg7CiAKICAgICBEYXRhYmFzZU1hbmFnZXJDbGllbnQqIG1fY2xpZW50IHsgbnVsbHB0ciB9
OwogCi0gICAgSGFzaE1hcDxTZWN1cml0eU9yaWdpbkRhdGEsIHN0ZDo6dW5pcXVlX3B0cjxIYXNo
Q291bnRlZFNldDxTdHJpbmc+Pj4gbV9iZWluZ0NyZWF0ZWQ7Ci0gICAgSGFzaE1hcDxTZWN1cml0
eU9yaWdpbkRhdGEsIHN0ZDo6dW5pcXVlX3B0cjxIYXNoU2V0PFN0cmluZz4+PiBtX2JlaW5nRGVs
ZXRlZDsKLSAgICBIYXNoU2V0PFNlY3VyaXR5T3JpZ2luRGF0YT4gbV9vcmlnaW5zQmVpbmdEZWxl
dGVkOwotICAgIGJvb2wgaXNEZWxldGluZ0RhdGFiYXNlT3JPcmlnaW5Gb3IoY29uc3QgU2VjdXJp
dHlPcmlnaW5EYXRhJiwgY29uc3QgU3RyaW5nJiBuYW1lKTsKLSAgICB2b2lkIHJlY29yZENyZWF0
aW5nRGF0YWJhc2UoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiwgY29uc3QgU3RyaW5nJiBuYW1l
KTsKLSAgICB2b2lkIGRvbmVDcmVhdGluZ0RhdGFiYXNlKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0
YSYsIGNvbnN0IFN0cmluZyYgbmFtZSk7Ci0gICAgYm9vbCBjcmVhdGluZ0RhdGFiYXNlKGNvbnN0
IFNlY3VyaXR5T3JpZ2luRGF0YSYsIGNvbnN0IFN0cmluZyYgbmFtZSk7Ci0gICAgYm9vbCBjYW5E
ZWxldGVEYXRhYmFzZShjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmLCBjb25zdCBTdHJpbmcmIG5h
bWUpOwotICAgIHZvaWQgcmVjb3JkRGVsZXRpbmdEYXRhYmFzZShjb25zdCBTZWN1cml0eU9yaWdp
bkRhdGEmLCBjb25zdCBTdHJpbmcmIG5hbWUpOwotICAgIHZvaWQgZG9uZURlbGV0aW5nRGF0YWJh
c2UoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiwgY29uc3QgU3RyaW5nJiBuYW1lKTsKLSAgICBi
b29sIGlzRGVsZXRpbmdEYXRhYmFzZShjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmLCBjb25zdCBT
dHJpbmcmIG5hbWUpOwotICAgIGJvb2wgY2FuRGVsZXRlT3JpZ2luKGNvbnN0IFNlY3VyaXR5T3Jp
Z2luRGF0YSYpOwotICAgIGJvb2wgaXNEZWxldGluZ09yaWdpbihjb25zdCBTZWN1cml0eU9yaWdp
bkRhdGEmKTsKLSAgICB2b2lkIHJlY29yZERlbGV0aW5nT3JpZ2luKGNvbnN0IFNlY3VyaXR5T3Jp
Z2luRGF0YSYpOwotICAgIHZvaWQgZG9uZURlbGV0aW5nT3JpZ2luKGNvbnN0IFNlY3VyaXR5T3Jp
Z2luRGF0YSYpOworICAgIEhhc2hNYXA8U2VjdXJpdHlPcmlnaW5EYXRhLCBzdGQ6OnVuaXF1ZV9w
dHI8SGFzaENvdW50ZWRTZXQ8U3RyaW5nPj4+IG1fYmVpbmdDcmVhdGVkIFdURl9HVUFSREVEX0JZ
X0xPQ0sobV9kYXRhYmFzZUd1YXJkKTsKKyAgICBIYXNoTWFwPFNlY3VyaXR5T3JpZ2luRGF0YSwg
c3RkOjp1bmlxdWVfcHRyPEhhc2hTZXQ8U3RyaW5nPj4+IG1fYmVpbmdEZWxldGVkIFdURl9HVUFS
REVEX0JZX0xPQ0sobV9kYXRhYmFzZUd1YXJkKTsKKyAgICBIYXNoU2V0PFNlY3VyaXR5T3JpZ2lu
RGF0YT4gbV9vcmlnaW5zQmVpbmdEZWxldGVkIFdURl9HVUFSREVEX0JZX0xPQ0sobV9kYXRhYmFz
ZUd1YXJkKTsKKyAgICBib29sIGlzRGVsZXRpbmdEYXRhYmFzZU9yT3JpZ2luRm9yKGNvbnN0IFNl
Y3VyaXR5T3JpZ2luRGF0YSYsIGNvbnN0IFN0cmluZyYgbmFtZSkgV1RGX1JFUVVJUkVTX0xPQ0so
bV9kYXRhYmFzZUd1YXJkKTsKKyAgICB2b2lkIHJlY29yZENyZWF0aW5nRGF0YWJhc2UoY29uc3Qg
U2VjdXJpdHlPcmlnaW5EYXRhJiwgY29uc3QgU3RyaW5nJiBuYW1lKSBXVEZfUkVRVUlSRVNfTE9D
SyhtX2RhdGFiYXNlR3VhcmQpOworICAgIHZvaWQgZG9uZUNyZWF0aW5nRGF0YWJhc2UoY29uc3Qg
U2VjdXJpdHlPcmlnaW5EYXRhJiwgY29uc3QgU3RyaW5nJiBuYW1lKSBXVEZfUkVRVUlSRVNfTE9D
SyhtX2RhdGFiYXNlR3VhcmQpOworICAgIGJvb2wgY3JlYXRpbmdEYXRhYmFzZShjb25zdCBTZWN1
cml0eU9yaWdpbkRhdGEmLCBjb25zdCBTdHJpbmcmIG5hbWUpIFdURl9SRVFVSVJFU19MT0NLKG1f
ZGF0YWJhc2VHdWFyZCk7CisgICAgYm9vbCBjYW5EZWxldGVEYXRhYmFzZShjb25zdCBTZWN1cml0
eU9yaWdpbkRhdGEmLCBjb25zdCBTdHJpbmcmIG5hbWUpIFdURl9SRVFVSVJFU19MT0NLKG1fZGF0
YWJhc2VHdWFyZCk7CisgICAgdm9pZCByZWNvcmREZWxldGluZ0RhdGFiYXNlKGNvbnN0IFNlY3Vy
aXR5T3JpZ2luRGF0YSYsIGNvbnN0IFN0cmluZyYgbmFtZSkgV1RGX1JFUVVJUkVTX0xPQ0sobV9k
YXRhYmFzZUd1YXJkKTsKKyAgICB2b2lkIGRvbmVEZWxldGluZ0RhdGFiYXNlKGNvbnN0IFNlY3Vy
aXR5T3JpZ2luRGF0YSYsIGNvbnN0IFN0cmluZyYgbmFtZSkgV1RGX1JFUVVJUkVTX0xPQ0sobV9k
YXRhYmFzZUd1YXJkKTsKKyAgICBib29sIGlzRGVsZXRpbmdEYXRhYmFzZShjb25zdCBTZWN1cml0
eU9yaWdpbkRhdGEmLCBjb25zdCBTdHJpbmcmIG5hbWUpIFdURl9SRVFVSVJFU19MT0NLKG1fZGF0
YWJhc2VHdWFyZCk7CisgICAgYm9vbCBjYW5EZWxldGVPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmln
aW5EYXRhJikgV1RGX1JFUVVJUkVTX0xPQ0sobV9kYXRhYmFzZUd1YXJkKTsKKyAgICBib29sIGlz
RGVsZXRpbmdPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJikgV1RGX1JFUVVJUkVTX0xP
Q0sobV9kYXRhYmFzZUd1YXJkKTsKKyAgICB2b2lkIHJlY29yZERlbGV0aW5nT3JpZ2luKGNvbnN0
IFNlY3VyaXR5T3JpZ2luRGF0YSYpIFdURl9SRVFVSVJFU19MT0NLKG1fZGF0YWJhc2VHdWFyZCk7
CisgICAgdm9pZCBkb25lRGVsZXRpbmdPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJikg
V1RGX1JFUVVJUkVTX0xPQ0sobV9kYXRhYmFzZUd1YXJkKTsKIAogICAgIHN0YXRpYyB2b2lkIHNj
aGVkdWxlRm9yTm90aWZpY2F0aW9uKCk7CiAgICAgc3RhdGljIHZvaWQgbm90aWZ5RGF0YWJhc2Vz
Q2hhbmdlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFz
ZS9TUUxDYWxsYmFja1dyYXBwZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJh
c2UvU1FMQ2FsbGJhY2tXcmFwcGVyLmgKaW5kZXggMjcyMTQ0MTM3NTI1OTNlZDA4YTI2NjI5NDBm
Y2E4N2E5MjQzNmM1Yi4uYzJlZDM2NmUzYzA4ZmU5ZTE5ZmY3Y2VjOTk5NTVlZDQ0MDEzOTk0MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxDYWxsYmFj
a1dyYXBwZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTENh
bGxiYWNrV3JhcHBlci5oCkBAIC0yOSw3ICsyOSw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1
ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlIDx3dGYvTG9jay5oPgorI2lu
Y2x1ZGUgPHd0Zi9DaGVja2VkTG9jay5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTU4
LDcgKzU4LDcgQEAgcHVibGljOgogICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0UHRyOwogICAgICAgICBUKiBjYWxsYmFjazsKICAgICAgICAgewot
ICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbXV0ZXggfTsKKyAgICAgICAgICAgIExvY2tl
ciBsb2NrZXIgeyBtX2xvY2sgfTsKICAgICAgICAgICAgIGlmICghbV9jYWxsYmFjaykgewogICAg
ICAgICAgICAgICAgIEFTU0VSVCghbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKICAgICAgICAg
ICAgICAgICByZXR1cm47CkBAIC04MywxOSArODMsMjAgQEAgcHVibGljOgogCiAgICAgUmVmUHRy
PFQ+IHVud3JhcCgpCiAgICAgewotICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9tdXRleCB9Owor
ICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAgICAgICAgIEFTU0VSVCghbV9jYWxs
YmFjayB8fCBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmlzQ29udGV4dFRocmVhZCgpKTsKICAg
ICAgICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0ID0gbnVsbHB0cjsKICAgICAgICAgcmV0dXJu
IFdURk1vdmUobV9jYWxsYmFjayk7CiAgICAgfQogCiAgICAgLy8gVXNlZnVsIGZvciBvcHRpbWl6
YXRpb25zIG9ubHksIHBsZWFzZSB0ZXN0IHRoZSByZXR1cm4gdmFsdWUgb2YgdW53cmFwIHRvIGJl
IHN1cmUuCi0gICAgYm9vbCBoYXNDYWxsYmFjaygpIGNvbnN0IHsgcmV0dXJuIG1fY2FsbGJhY2s7
IH0KKyAgICAvLyBGSVhNRTogVGhpcyBpcyBub3QgdGhyZWFkLXNhZmUuCisgICAgYm9vbCBoYXND
YWxsYmFjaygpIGNvbnN0IFdURl9JR05PUkVTX1RIUkVBRF9TQUZFVFlfQU5BTFlTSVMgeyByZXR1
cm4gbV9jYWxsYmFjazsgfQogCiBwcml2YXRlOgotICAgIExvY2sgbV9tdXRleDsKLSAgICBSZWZQ
dHI8VD4gbV9jYWxsYmFjazsKLSAgICBSZWZQdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4gbV9z
Y3JpcHRFeGVjdXRpb25Db250ZXh0OworICAgIENoZWNrZWRMb2NrIG1fbG9jazsKKyAgICBSZWZQ
dHI8VD4gbV9jYWxsYmFjayBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fbG9jayk7CisgICAgUmVmUHRy
PFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ+IG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCBXVEZfR1VB
UkRFRF9CWV9MT0NLKG1fbG9jayk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb24u
Y3BwCmluZGV4IGU3NDIxYzc3YzUzMjcwMTFmNThiZjEyNjE2ZjllMDRkYjUxYjY2NmUuLmQxNGVi
ZmM1NzljZWE2MzgzNGE4NzkzYTM1ZWRlY2Q1NjQ4NjlhZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb24uY3BwCkBAIC0xNDQs
NyArMTQ0LDcgQEAgdm9pZCBTUUxUcmFuc2FjdGlvbjo6Y2FsbEVycm9yQ2FsbGJhY2tEdWVUb0lu
dGVycnVwdGlvbigpCiAKIHZvaWQgU1FMVHJhbnNhY3Rpb246OmVucXVldWVTdGF0ZW1lbnQoc3Rk
Ojp1bmlxdWVfcHRyPFNRTFN0YXRlbWVudD4gc3RhdGVtZW50KQogewotICAgIExvY2tlciBsb2Nr
ZXIgeyBtX3N0YXRlbWVudE11dGV4IH07CisgICAgTG9ja2VyIGxvY2tlciB7IG1fc3RhdGVtZW50
TG9jayB9OwogICAgIG1fc3RhdGVtZW50UXVldWUuYXBwZW5kKFdURk1vdmUoc3RhdGVtZW50KSk7
CiB9CiAKQEAgLTE5MCw3ICsxOTAsNyBAQCB2b2lkIFNRTFRyYW5zYWN0aW9uOjpjaGVja0FuZEhh
bmRsZUNsb3NlZERhdGFiYXNlKCkKICAgICAvLyBJZiB0aGUgZGF0YWJhc2Ugd2FzIHN0b3BwZWQs
IGRvbid0IGRvIGFueXRoaW5nIGFuZCBjYW5jZWwgcXVldWVkIHdvcmsKICAgICBMT0coU3RvcmFn
ZUFQSSwgIkRhdGFiYXNlIHdhcyBzdG9wcGVkIG9yIGludGVycnVwdGVkIC0gY2FuY2VsbGluZyB3
b3JrIGZvciB0aGlzIHRyYW5zYWN0aW9uIik7CiAKLSAgICBMb2NrZXIgbG9ja2VyIHsgbV9zdGF0
ZW1lbnRNdXRleCB9OworICAgIExvY2tlciBsb2NrZXIgeyBtX3N0YXRlbWVudExvY2sgfTsKICAg
ICBtX3N0YXRlbWVudFF1ZXVlLmNsZWFyKCk7CiAgICAgbV9uZXh0U3RlcCA9IG51bGxwdHI7CiAK
QEAgLTUxNiw3ICs1MTYsNyBAQCB2b2lkIFNRTFRyYW5zYWN0aW9uOjpnZXROZXh0U3RhdGVtZW50
KCkKIHsKICAgICBtX2N1cnJlbnRTdGF0ZW1lbnQgPSBudWxscHRyOwogCi0gICAgTG9ja2VyIGxv
Y2tlciB7IG1fc3RhdGVtZW50TXV0ZXggfTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9zdGF0ZW1l
bnRMb2NrIH07CiAgICAgaWYgKCFtX3N0YXRlbWVudFF1ZXVlLmlzRW1wdHkoKSkKICAgICAgICAg
bV9jdXJyZW50U3RhdGVtZW50ID0gbV9zdGF0ZW1lbnRRdWV1ZS50YWtlRmlyc3QoKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rp
b24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb24u
aAppbmRleCA1NDBmNmUzMWZmM2IzZTI5MTJhOThlN2YyZDgwNzliYTU5MDBhMmJjLi4zMWUxMGI3
MjM4NDE5Y2ZjMGI3MmNiNTE3MDhlMDZhOWJjZWVmMGU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbi5oCkBAIC0zMyw2ICszMyw3
IEBACiAjaW5jbHVkZSAiU1FMVHJhbnNhY3Rpb25CYWNrZW5kLmgiCiAjaW5jbHVkZSAiU1FMVHJh
bnNhY3Rpb25TdGF0ZU1hY2hpbmUuaCIKICNpbmNsdWRlICJTUUxWYWx1ZS5oIgorI2luY2x1ZGUg
PHd0Zi9DaGVja2VkTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0
Zi9Mb2NrLmg+CiAKQEAgLTEzOCw4ICsxMzksOCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9yZWFk
T25seSB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2hhc1ZlcnNpb25NaXNtYXRjaCB7IGZhbHNlIH07
CiAKLSAgICBMb2NrIG1fc3RhdGVtZW50TXV0ZXg7Ci0gICAgRGVxdWU8c3RkOjp1bmlxdWVfcHRy
PFNRTFN0YXRlbWVudD4+IG1fc3RhdGVtZW50UXVldWU7CisgICAgQ2hlY2tlZExvY2sgbV9zdGF0
ZW1lbnRMb2NrOworICAgIERlcXVlPHN0ZDo6dW5pcXVlX3B0cjxTUUxTdGF0ZW1lbnQ+PiBtX3N0
YXRlbWVudFF1ZXVlIFdURl9HVUFSREVEX0JZX0xPQ0sobV9zdGF0ZW1lbnRMb2NrKTsKIAogICAg
IHN0ZDo6dW5pcXVlX3B0cjxTUUxTdGF0ZW1lbnQ+IG1fY3VycmVudFN0YXRlbWVudDsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlv
bkJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFu
c2FjdGlvbkJhY2tlbmQuY3BwCmluZGV4IGEwNDNmN2NhMzI2YmU4YzBlOWJjOTgzYmMzN2JiZjQ1
MThlOTA2MTQuLjYyYjI3Y2RiMzMyNTE0ZDZhNDk3MTBhMDcxZDQxMTc1YTcwZGJkZGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb25C
YWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRy
YW5zYWN0aW9uQmFja2VuZC5jcHAKQEAgLTM1Nyw3ICszNTcsNyBAQCB2b2lkIFNRTFRyYW5zYWN0
aW9uQmFja2VuZDo6ZG9DbGVhbnVwKCkKIAogICAgIG1fZnJvbnRlbmQucmVsZWFzZU9yaWdpbkxv
Y2tJZk5lZWRlZCgpOwogCi0gICAgTG9ja2VyIGxvY2tlciB7IG1fZnJvbnRlbmQubV9zdGF0ZW1l
bnRNdXRleCB9OworICAgIExvY2tlciBsb2NrZXIgeyBtX2Zyb250ZW5kLm1fc3RhdGVtZW50TG9j
ayB9OwogICAgIG1fZnJvbnRlbmQubV9zdGF0ZW1lbnRRdWV1ZS5jbGVhcigpOwogCiAgICAgaWYg
KG1fZnJvbnRlbmQubV9zcWxpdGVUcmFuc2FjdGlvbikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuaCBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmgKaW5k
ZXggMjg0NWM3MTI0Yzk2ODVkZTk0NjQ4ZDY2Mzk2NWZjNjJlMTdkN2Q3ZS4uODFhYjkzYzZiOWJi
NDZhY2ZhY2E0MmI5OGQxNWIwNDFmZGY5MmM3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5oCkBAIC0z
NjEsNyArMzYxLDcgQEAgcHVibGljOgogICAgIC8vIEJvdGggc2V0Um9vdE5vZGVJRCBhbmQgc2V0
Rm9jdXNlZE5vZGVJRCBhcmUgY2FsbGVkIGR1cmluZyB0aGUgZ2VuZXJhdGlvbgogICAgIC8vIG9m
IHRoZSBJc29sYXRlZFRyZWUuCiAgICAgLy8gRm9jdXNlZCBub2RlIHVwZGF0ZXMgaW4gQVhPYmpl
Y3RDYWNoZSB1c2Ugc2V0Rm9jdXNOb2RlSUQuCi0gICAgdm9pZCBzZXRSb290Tm9kZShBWElzb2xh
dGVkT2JqZWN0Kik7CisgICAgdm9pZCBzZXRSb290Tm9kZShBWElzb2xhdGVkT2JqZWN0KikgV1RG
X1JFUVVJUkVTX0xPQ0sobV9jaGFuZ2VMb2dMb2NrKTsKICAgICB2b2lkIHNldEZvY3VzZWROb2Rl
SUQoQVhJRCk7CiAKICAgICAvLyBDYWxsZWQgb24gQVggdGhyZWFkIGZyb20gV2ViQWNjZXNzaWJp
bGl0eU9iamVjdFdyYXBwZXIgbWV0aG9kcy4KQEAgLTM4MSw3ICszODEsNyBAQCBwcml2YXRlOgog
ICAgIC8vIENhbGwgb24gbWFpbiB0aHJlYWQKICAgICBSZWY8QVhJc29sYXRlZE9iamVjdD4gY3Jl
YXRlU3VidHJlZShBWENvcmVPYmplY3QmLCBBWElEIHBhcmVudElELCBib29sIGF0dGFjaFdyYXBw
ZXIpOwogICAgIC8vIENhbGxlZCBvbiBtYWluIHRocmVhZCB0byB1cGRhdGUgYm90aCBtX25vZGVN
YXAgYW5kIG1fcGVuZGluZ0NoaWxkcmVuVXBkYXRlcy4KLSAgICB2b2lkIHVwZGF0ZUNoaWxkcmVu
SURzKEFYSUQgcGFyZW50SUQsIFZlY3RvcjxBWElEPiYmIGNoaWxkcmVuSURzKTsKKyAgICB2b2lk
IHVwZGF0ZUNoaWxkcmVuSURzKEFYSUQgcGFyZW50SUQsIFZlY3RvcjxBWElEPiYmIGNoaWxkcmVu
SURzKSBXVEZfUkVRVUlSRVNfTE9DSyhtX2NoYW5nZUxvZ0xvY2spOwogCiAgICAgQVhJc29sYXRl
ZFRyZWVJRCBtX3RyZWVJRDsKICAgICBBWE9iamVjdENhY2hlKiBtX2F4T2JqZWN0Q2FjaGUgeyBu
dWxscHRyIH07CkBAIC0zOTMsMTUgKzM5MywxNSBAQCBwcml2YXRlOgogICAgIEhhc2hNYXA8QVhJ
RCwgUmVmPEFYSXNvbGF0ZWRPYmplY3Q+PiBtX3JlYWRlclRocmVhZE5vZGVNYXA7CiAKICAgICAv
LyBXcml0dGVuIHRvIGJ5IG1haW4gdGhyZWFkIHVuZGVyIGxvY2ssIGFjY2Vzc2VkIGFuZCBhcHBs
aWVkIGJ5IEFYIHRocmVhZC4KLSAgICBSZWZQdHI8QVhJc29sYXRlZE9iamVjdD4gbV9yb290Tm9k
ZTsKLSAgICBWZWN0b3I8Tm9kZUNoYW5nZT4gbV9wZW5kaW5nQXBwZW5kczsgLy8gTm9kZXMgdG8g
YmUgYWRkZWQgdG8gdGhlIHRyZWUgYW5kIHBsYXRmb3JtLXdyYXBwZWQuCi0gICAgVmVjdG9yPEFY
UHJvcGVydHlDaGFuZ2U+IG1fcGVuZGluZ1Byb3BlcnR5Q2hhbmdlczsKLSAgICBWZWN0b3I8QVhJ
RD4gbV9wZW5kaW5nTm9kZVJlbW92YWxzOyAvLyBOb2RlcyB0byBiZSByZW1vdmVkIGZyb20gdGhl
IHRyZWUuCi0gICAgVmVjdG9yPEFYSUQ+IG1fcGVuZGluZ1N1YnRyZWVSZW1vdmFsczsgLy8gTm9k
ZXMgd2hvc2Ugc3VidHJlZXMgYXJlIHRvIGJlIHJlbW92ZWQgZnJvbSB0aGUgdHJlZS4KLSAgICBW
ZWN0b3I8c3RkOjpwYWlyPEFYSUQsIFZlY3RvcjxBWElEPj4+IG1fcGVuZGluZ0NoaWxkcmVuVXBk
YXRlczsKLSAgICBBWElEIG1fcGVuZGluZ0ZvY3VzZWROb2RlSUQgeyBJbnZhbGlkQVhJRCB9Owor
ICAgIFJlZlB0cjxBWElzb2xhdGVkT2JqZWN0PiBtX3Jvb3ROb2RlIFdURl9HVUFSREVEX0JZX0xP
Q0sobV9jaGFuZ2VMb2dMb2NrKTsKKyAgICBWZWN0b3I8Tm9kZUNoYW5nZT4gbV9wZW5kaW5nQXBw
ZW5kcyBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fY2hhbmdlTG9nTG9jayk7IC8vIE5vZGVzIHRvIGJl
IGFkZGVkIHRvIHRoZSB0cmVlIGFuZCBwbGF0Zm9ybS13cmFwcGVkLgorICAgIFZlY3RvcjxBWFBy
b3BlcnR5Q2hhbmdlPiBtX3BlbmRpbmdQcm9wZXJ0eUNoYW5nZXMgV1RGX0dVQVJERURfQllfTE9D
SyhtX2NoYW5nZUxvZ0xvY2spOworICAgIFZlY3RvcjxBWElEPiBtX3BlbmRpbmdOb2RlUmVtb3Zh
bHMgV1RGX0dVQVJERURfQllfTE9DSyhtX2NoYW5nZUxvZ0xvY2spOyAvLyBOb2RlcyB0byBiZSBy
ZW1vdmVkIGZyb20gdGhlIHRyZWUuCisgICAgVmVjdG9yPEFYSUQ+IG1fcGVuZGluZ1N1YnRyZWVS
ZW1vdmFscyBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fY2hhbmdlTG9nTG9jayk7IC8vIE5vZGVzIHdo
b3NlIHN1YnRyZWVzIGFyZSB0byBiZSByZW1vdmVkIGZyb20gdGhlIHRyZWUuCisgICAgVmVjdG9y
PHN0ZDo6cGFpcjxBWElELCBWZWN0b3I8QVhJRD4+PiBtX3BlbmRpbmdDaGlsZHJlblVwZGF0ZXMg
V1RGX0dVQVJERURfQllfTE9DSyhtX2NoYW5nZUxvZ0xvY2spOworICAgIEFYSUQgbV9wZW5kaW5n
Rm9jdXNlZE5vZGVJRCBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fY2hhbmdlTG9nTG9jaykgeyBJbnZh
bGlkQVhJRCB9OwogICAgIEFYSUQgbV9mb2N1c2VkTm9kZUlEIHsgSW52YWxpZEFYSUQgfTsKLSAg
ICBMb2NrIG1fY2hhbmdlTG9nTG9jazsKKyAgICBDaGVja2VkTG9jayBtX2NoYW5nZUxvZ0xvY2s7
CiB9OwogCiBpbmxpbmUgQVhPYmplY3RDYWNoZSogQVhJc29sYXRlZFRyZWU6OmF4T2JqZWN0Q2Fj
aGUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQWJvcnRhYmxl
VGFza1F1ZXVlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9BYm9ydGFibGVUYXNrUXVldWUu
aAppbmRleCA4MjY5OWRlNjBmMDU2NTFkNmM3MDgxNjFhOGEzOGFjNzE5MjlhNjZjLi5mODQ5MWYw
MTJlNWQ2NjgyNjBjNTAzN2Q0OWRmOGQ2NzBmOGY1OWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9BYm9ydGFibGVUYXNrUXVldWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9BYm9ydGFibGVUYXNrUXVldWUuaApAQCAtMjAsMTAgKzIwLDEwIEBACiAKICNwcmFn
bWEgb25jZQogCi0jaW5jbHVkZSA8d3RmL0NvbmRpdGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9DaGVj
a2VkQ29uZGl0aW9uLmg+CisjaW5jbHVkZSA8d3RmL0NoZWNrZWRMb2NrLmg+CiAjaW5jbHVkZSA8
d3RmL0RlcXVlLmg+CiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+Ci0jaW5jbHVkZSA8d3RmL0xv
Y2suaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRy
YXMuaD4KIApAQCAtNzMsNyArNzMsNyBAQCBwdWJsaWM6CiAgICAgfkFib3J0YWJsZVRhc2tRdWV1
ZSgpCiAgICAgewogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgICAgICBBU1NF
UlQoIW1fbXV0ZXguaXNIZWxkKCkpOworICAgICAgICBBU1NFUlQoIW1fbG9jay5pc0hlbGQoKSk7
CiAgICAgICAgIEFTU0VSVChtX2NoYW5uZWwuaXNFbXB0eSgpKTsKICAgICB9CiAKQEAgLTk0LDcg
Kzk0LDcgQEAgcHVibGljOgogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX211dGV4IH07CisgICAgICAgICAg
ICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAgICAgICAgICAgICBtX2Fib3J0aW5nID0gdHJ1
ZTsKICAgICAgICAgICAgIGNhbmNlbEFsbFRhc2tzKCk7CiAgICAgICAgIH0KQEAgLTEwOCw3ICsx
MDgsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwog
Ci0gICAgICAgIExvY2tlciBsb2NrZXIgeyBtX211dGV4IH07CisgICAgICAgIExvY2tlciBsb2Nr
ZXIgeyBtX2xvY2sgfTsKICAgICAgICAgQVNTRVJUKG1fYWJvcnRpbmcpOwogICAgICAgICBtX2Fi
b3J0aW5nID0gZmFsc2U7CiAgICAgfQpAQCAtMTIzLDcgKzEyMyw3IEBAIHB1YmxpYzoKICAgICB7
CiAgICAgICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogCi0gICAgICAgIExvY2tlciBsb2Nr
ZXIgeyBtX211dGV4IH07CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKICAgICAg
ICAgaWYgKG1fYWJvcnRpbmcpCiAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTE0MywxOSArMTQz
LDE5IEBAIHB1YmxpYzoKICAgICAgICAgLy8gRG9uJ3QgZGVhZGxvY2sgdGhlIG1haW4gdGhyZWFk
IHdpdGggaXRzZWxmLgogICAgICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKIAotICAgICAg
ICBMb2NrZXIgbG9ja2VyIHsgbV9tdXRleCB9OworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9s
b2NrIH07CiAgICAgICAgIGlmIChtX2Fib3J0aW5nKQogICAgICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDxSPiByZXNwb25zZSA9IFdURjo6bnVsbG9wdDsK
ICAgICAgICAgcG9zdFRhc2soW3RoaXMsICZyZXNwb25zZSwgJm1haW5UaHJlYWRUYXNrSGFuZGxl
cl0oKSB7CiAgICAgICAgICAgICBSIHJlc3BvbnNlVmFsdWUgPSBtYWluVGhyZWFkVGFza0hhbmRs
ZXIoKTsKLSAgICAgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX211dGV4IH07CisgICAgICAgICAg
ICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAgICAgICAgICAgICBpZiAoIW1fYWJvcnRpbmcp
CiAgICAgICAgICAgICAgICAgcmVzcG9uc2UgPSBXVEZNb3ZlKHJlc3BvbnNlVmFsdWUpOwogICAg
ICAgICAgICAgbV9hYm9ydGVkT3JSZXNwb25zZVNldC5ub3RpZnlBbGwoKTsKICAgICAgICAgfSk7
Ci0gICAgICAgIG1fYWJvcnRlZE9yUmVzcG9uc2VTZXQud2FpdChtX211dGV4LCBbdGhpcywgJnJl
c3BvbnNlXSgpIHsKKyAgICAgICAgbV9hYm9ydGVkT3JSZXNwb25zZVNldC53YWl0KG1fbG9jaywg
W3RoaXMsICZyZXNwb25zZV0oKSB7CiAgICAgICAgICAgICByZXR1cm4gbV9hYm9ydGluZyB8fCBy
ZXNwb25zZTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybiByZXNwb25zZTsKQEAgLTE5Nywx
MCArMTk3LDExIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBpZiAoaXNDYW5jZWxsZWQoKSkKICAg
ICAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgICAgIExvY2tlciBsb2NrIHsgbV90YXNr
UXVldWUtPm1fbXV0ZXggfTsKLSAgICAgICAgICAgIEFTU0VSVCh0aGlzID09IG1fdGFza1F1ZXVl
LT5tX2NoYW5uZWwuZmlyc3QoKS5wdHIoKSk7Ci0gICAgICAgICAgICBtX3Rhc2tRdWV1ZS0+bV9j
aGFubmVsLnJlbW92ZUZpcnN0KCk7Ci0gICAgICAgICAgICBsb2NrLnVubG9ja0Vhcmx5KCk7Cisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgTG9ja2VyIGxvY2sgeyBtX3Rhc2tRdWV1ZS0+
bV9sb2NrIH07CisgICAgICAgICAgICAgICAgQVNTRVJUKHRoaXMgPT0gbV90YXNrUXVldWUtPm1f
Y2hhbm5lbC5maXJzdCgpLnB0cigpKTsKKyAgICAgICAgICAgICAgICBtX3Rhc2tRdWV1ZS0+bV9j
aGFubmVsLnJlbW92ZUZpcnN0KCk7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBtX3Rhc2tD
YWxsYmFjaygpOwogICAgICAgICB9CiAKQEAgLTIxMywyNyArMjE0LDI3IEBAIHByaXZhdGU6CiAg
ICAgICAgIHsgfQogICAgIH07CiAKLSAgICB2b2lkIHBvc3RUYXNrKFdURjo6RnVuY3Rpb248dm9p
ZCgpPiYmIGNhbGxiYWNrKQorICAgIHZvaWQgcG9zdFRhc2soV1RGOjpGdW5jdGlvbjx2b2lkKCk+
JiYgY2FsbGJhY2spIFdURl9SRVFVSVJFU19MT0NLKG1fbG9jaykKICAgICB7Ci0gICAgICAgIEFT
U0VSVChtX211dGV4LmlzSGVsZCgpKTsKKyAgICAgICAgQVNTRVJUKG1fbG9jay5pc0hlbGQoKSk7
CiAgICAgICAgIFJlZjxUYXNrPiB0YXNrID0gVGFzazo6Y3JlYXRlKHRoaXMsIFdURk1vdmUoY2Fs
bGJhY2spKTsKICAgICAgICAgbV9jaGFubmVsLmFwcGVuZCh0YXNrLmNvcHlSZWYoKSk7CiAgICAg
ICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbdGFzayA9IFdURk1vdmUodGFzayldKCkgeyB0
YXNrLT5kaXNwYXRjaCgpOyB9KTsKICAgICB9CiAKLSAgICB2b2lkIGNhbmNlbEFsbFRhc2tzKCkK
KyAgICB2b2lkIGNhbmNlbEFsbFRhc2tzKCkgV1RGX1JFUVVJUkVTX0xPQ0sobV9sb2NrKQogICAg
IHsKICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICAgICAgQVNTRVJUKG1fbXV0
ZXguaXNIZWxkKCkpOworICAgICAgICBBU1NFUlQobV9sb2NrLmlzSGVsZCgpKTsKICAgICAgICAg
Zm9yIChSZWY8VGFzaz4mIHRhc2sgOiBtX2NoYW5uZWwpCiAgICAgICAgICAgICB0YXNrLT5jYW5j
ZWwoKTsKICAgICAgICAgbV9jaGFubmVsLmNsZWFyKCk7CiAgICAgfQogCi0gICAgYm9vbCBtX2Fi
b3J0aW5nIHsgZmFsc2UgfTsKLSAgICBMb2NrIG1fbXV0ZXg7Ci0gICAgQ29uZGl0aW9uIG1fYWJv
cnRlZE9yUmVzcG9uc2VTZXQ7Ci0gICAgV1RGOjpEZXF1ZTxSZWY8VGFzaz4+IG1fY2hhbm5lbDsK
KyAgICBib29sIG1fYWJvcnRpbmcgV1RGX0dVQVJERURfQllfTE9DSyhtX2xvY2spIHsgZmFsc2Ug
fTsKKyAgICBDaGVja2VkTG9jayBtX2xvY2s7CisgICAgQ2hlY2tlZENvbmRpdGlvbiBtX2Fib3J0
ZWRPclJlc3BvbnNlU2V0OworICAgIFdURjo6RGVxdWU8UmVmPFRhc2s+PiBtX2NoYW5uZWwgV1RG
X0dVQVJERURfQllfTE9DSyhtX2xvY2spOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9EZXN0
aW5hdGlvbkNvY29hLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1
ZGlvRGVzdGluYXRpb25Db2NvYS5jcHAKaW5kZXggYzBlMDhjYTk1NmU1ZTg1NDA3OTBiNWJjNzRh
MzlmZTZhNDljNzIzNi4uMzkyYzM2MTQwNGZjMmM5NTBlYmI5Mzg4OWE2MjljYjVhMzcxZTQyYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9EZXN0
aW5hdGlvbkNvY29hLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2Nv
YS9BdWRpb0Rlc3RpbmF0aW9uQ29jb2EuY3BwCkBAIC0yMTksMTAgKzIxOSwxMCBAQCBPU1N0YXR1
cyBBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6OnJlbmRlcihkb3VibGUgc2FtcGxlVGltZSwgdWludDY0
X3QgaG9zdFRpbWUsIFVJbgogICAgIH0KIAogICAgIC8vIFdoZW4gdGhlcmUgaXMgYSBBdWRpb1dv
cmtsZXQsIHdlIGRvIHJlbmRlcmluZyBvbiB0aGUgQXVkaW9Xb3JrbGV0VGhyZWFkLgotICAgIGF1
dG8gbG9ja2VyID0gdHJ5SG9sZExvY2sobV9kaXNwYXRjaFRvUmVuZGVyVGhyZWFkTG9jayk7Ci0g
ICAgaWYgKCFsb2NrZXIpCisgICAgaWYgKCFtX2Rpc3BhdGNoVG9SZW5kZXJUaHJlYWRMb2NrLnRy
eUxvY2soKSkKICAgICAgICAgcmV0dXJuIC0xOwogCisgICAgTG9ja2VyIGxvY2tlciB7IEFkb3B0
TG9ja1RhZyB7IH0sIG1fZGlzcGF0Y2hUb1JlbmRlclRocmVhZExvY2sgfTsKICAgICBpZiAoIW1f
ZGlzcGF0Y2hUb1JlbmRlclRocmVhZCkKICAgICAgICAgcmVuZGVyT25SZW5kZXJpbmdUaGVhZElm
UGxheWluZyhmcmFtZXNUb1JlbmRlcik7CiAgICAgZWxzZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0Rlc3RpbmF0aW9uQ29jb2EuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvRGVzdGluYXRpb25Db2NvYS5o
CmluZGV4IDY5OTA1MzRhNTNiM2NhMmE1MTE3NzFiYjM0YTM5NjNhMjIyZTJkNGEuLjljM2JkN2E0
Zjk3NDY1YzkxYmNlMzYzNTdhODczZDhiMGMwZmJiMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvRGVzdGluYXRpb25Db2NvYS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvRGVzdGluYXRpb25Db2NvYS5o
CkBAIC05MSw4ICs5MSw4IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPE11bHRpQ2hh
bm5lbFJlc2FtcGxlcj4gbV9yZXNhbXBsZXI7CiAgICAgQXVkaW9JT1Bvc2l0aW9uIG1fb3V0cHV0
VGltZXN0YW1wOwogCi0gICAgTG9jayBtX2Rpc3BhdGNoVG9SZW5kZXJUaHJlYWRMb2NrOwotICAg
IEZ1bmN0aW9uPHZvaWQoRnVuY3Rpb248dm9pZCgpPiYmKT4gbV9kaXNwYXRjaFRvUmVuZGVyVGhy
ZWFkOworICAgIENoZWNrZWRMb2NrIG1fZGlzcGF0Y2hUb1JlbmRlclRocmVhZExvY2s7CisgICAg
RnVuY3Rpb248dm9pZChGdW5jdGlvbjx2b2lkKCk+JiYpPiBtX2Rpc3BhdGNoVG9SZW5kZXJUaHJl
YWQgV1RGX0dVQVJERURfQllfTE9DSyhtX2Rpc3BhdGNoVG9SZW5kZXJUaHJlYWRMb2NrKTsKIAog
ICAgIGZsb2F0IG1fY29udGV4dFNhbXBsZVJhdGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlv
bkdTdHJlYW1lci5oCmluZGV4IGZmZDNlODBlNTA2ZmZlOWY3NWFkMGE4NTAwNTcxYzNkNmEwZTY3
OWQuLjg0MGYwYTcxZTljMTU3MGQ3NzQ2ZDQyMjE5MWFhMjhkYmJjYjE3MmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0aW9u
R1N0cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVy
L0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuaApAQCAtNTgsOCArNTgsNiBAQCBwcml2YXRlOgog
ICAgIEdSZWZQdHI8R3N0RWxlbWVudD4gbV9zcmM7CiAgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChib29sKT4gbV9zdGFydHVwQ29tcGxldGlvbkhhbmRsZXI7CiAgICAgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChib29sKT4gbV9zdG9wQ29tcGxldGlvbkhhbmRsZXI7Ci0gICAgTG9jayBtX3NldFN0
YXRlTG9jazsKLSAgICBDb25kaXRpb24gbV9zZXRTdGF0ZUNvbmRpdGlvbjsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL2dzdHJlYW1lci9BdWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVh
bWVyLmNwcAppbmRleCA2OTBjMWRiOTc1OTI5NGU0Y2IwNzQ0NDAzNDExYmY5ZDU2NWUyYTZhLi5m
Nzc1YTMyZmQ0NzgwMmVlNTM4ODU3MTYzZWQ3NzlhMTIxMzhjZDQ3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9Tb3VyY2VQcm92aWRlckdT
dHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVy
L0F1ZGlvU291cmNlUHJvdmlkZXJHU3RyZWFtZXIuY3BwCkBAIC0xNTksOSArMTU5LDEwIEBAIHZv
aWQgQXVkaW9Tb3VyY2VQcm92aWRlckdTdHJlYW1lcjo6Y29uZmlndXJlQXVkaW9CaW4oR3N0RWxl
bWVudCogYXVkaW9CaW4sIEdzdEVsCiB2b2lkIEF1ZGlvU291cmNlUHJvdmlkZXJHU3RyZWFtZXI6
OnByb3ZpZGVJbnB1dChBdWRpb0J1cyogYnVzLCBzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKQogewog
ICAgIEdTVF9UUkFDRSgiRmV0Y2hpbmcgYnVmZmVycyBmcm9tIGFkYXB0ZXJzIik7Ci0gICAgYXV0
byBsb2NrZXIgPSB0cnlIb2xkTG9jayhtX2FkYXB0ZXJNdXRleCk7Ci0gICAgaWYgKCFsb2NrZXIp
CisgICAgaWYgKCFtX2FkYXB0ZXJMb2NrLnRyeUxvY2soKSkKICAgICAgICAgcmV0dXJuOworCisg
ICAgTG9ja2VyIGxvY2tlciB7IEFkb3B0TG9ja1RhZyB7IH0sIG1fYWRhcHRlckxvY2sgfTsKICAg
ICBmb3IgKGF1dG8mIGl0IDogbV9hZGFwdGVycykKICAgICAgICAgY29weUdTdHJlYW1lckJ1ZmZl
cnNUb0F1ZGlvQ2hhbm5lbChpdC52YWx1ZS5nZXQoKSwgYnVzLCBpdC5rZXkgLSAxLCBmcmFtZXNU
b1Byb2Nlc3MpOwogfQpAQCAtMTgyLDcgKzE4Myw3IEBAIEdzdEZsb3dSZXR1cm4gQXVkaW9Tb3Vy
Y2VQcm92aWRlckdTdHJlYW1lcjo6aGFuZGxlU2FtcGxlKEdzdEFwcFNpbmsqIHNpbmssIGJvb2wK
IAogICAgIEdTVF9UUkFDRSgiU3RvcmluZyBhdWRpbyBzYW1wbGUgJSIgR1NUX1BUUl9GT1JNQVQs
IHNhbXBsZS5nZXQoKSk7CiAgICAgewotICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9hZGFwdGVy
TXV0ZXggfTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fYWRhcHRlckxvY2sgfTsKICAgICAg
ICAgR1F1YXJrIHF1YXJrID0gZ19xdWFya19mcm9tX3N0YXRpY19zdHJpbmcoImNoYW5uZWwtaWQi
KTsKICAgICAgICAgaW50IGNoYW5uZWxJZCA9IEdQT0lOVEVSX1RPX0lOVChnX29iamVjdF9nZXRf
cWRhdGEoR19PQkpFQ1Qoc2luayksIHF1YXJrKSk7CiAgICAgICAgIEdTVF9ERUJVRygiQ2hhbm5l
bCBJRDogJWQiLCBjaGFubmVsSWQpOwpAQCAtMzg0LDcgKzM4NSw3IEBAIHZvaWQgQXVkaW9Tb3Vy
Y2VQcm92aWRlckdTdHJlYW1lcjo6ZGVpbnRlcmxlYXZlUGFkc0NvbmZpZ3VyZWQoKQogCiB2b2lk
IEF1ZGlvU291cmNlUHJvdmlkZXJHU3RyZWFtZXI6OmNsZWFyQWRhcHRlcnMoKQogewotICAgIExv
Y2tlciBsb2NrZXIgeyBtX2FkYXB0ZXJNdXRleCB9OworICAgIExvY2tlciBsb2NrZXIgeyBtX2Fk
YXB0ZXJMb2NrIH07CiAgICAgZm9yIChhdXRvJiBhZGFwdGVyIDogbV9hZGFwdGVycy52YWx1ZXMo
KSkKICAgICAgICAgZ3N0X2FkYXB0ZXJfY2xlYXIoYWRhcHRlci5nZXQoKSk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9Tb3VyY2VQ
cm92aWRlckdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVh
bWVyL0F1ZGlvU291cmNlUHJvdmlkZXJHU3RyZWFtZXIuaAppbmRleCBiOGQ4NDdkMmQyZmM2OTM3
ZTMwNTRkMjg2NzYzNzc3YjhhMjYxY2Q3Li41YTNhZjZjZjg5MzBjMjcxY2M0MTBlMzg2MTExYWNl
OThkNGVjMWU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3Ry
ZWFtZXIvQXVkaW9Tb3VyY2VQcm92aWRlckdTdHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVyLmgK
QEAgLTI1LDYgKzI1LDcgQEAKICNpbmNsdWRlICJHUmVmUHRyR1N0cmVhbWVyLmgiCiAjaW5jbHVk
ZSAiTWFpblRocmVhZE5vdGlmaWVyLmgiCiAjaW5jbHVkZSA8Z3N0L2dzdC5oPgorI2luY2x1ZGUg
PHd0Zi9DaGVja2VkTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8
d3RmL05vbmNvcHlhYmxlLmg+CiAKQEAgLTgxLDExICs4MiwxMSBAQCBwcml2YXRlOgogICAgIEdS
ZWZQdHI8R3N0RWxlbWVudD4gbV9hdWRpb1NpbmtCaW47CiAgICAgV2Vha1B0cjxBdWRpb1NvdXJj
ZVByb3ZpZGVyQ2xpZW50PiBtX2NsaWVudDsKICAgICBpbnQgbV9kZWludGVybGVhdmVTb3VyY2VQ
YWRzIHsgMCB9OwotICAgIEhhc2hNYXA8aW50LCBHUmVmUHRyPEdzdEFkYXB0ZXI+PiBtX2FkYXB0
ZXJzOworICAgIEhhc2hNYXA8aW50LCBHUmVmUHRyPEdzdEFkYXB0ZXI+PiBtX2FkYXB0ZXJzIFdU
Rl9HVUFSREVEX0JZX0xPQ0sobV9hZGFwdGVyTG9jayk7CiAgICAgdW5zaWduZWQgbG9uZyBtX2Rl
aW50ZXJsZWF2ZVBhZEFkZGVkSGFuZGxlcklkIHsgMCB9OwogICAgIHVuc2lnbmVkIGxvbmcgbV9k
ZWludGVybGVhdmVOb01vcmVQYWRzSGFuZGxlcklkIHsgMCB9OwogICAgIHVuc2lnbmVkIGxvbmcg
bV9kZWludGVybGVhdmVQYWRSZW1vdmVkSGFuZGxlcklkIHsgMCB9OwotICAgIExvY2sgbV9hZGFw
dGVyTXV0ZXg7CisgICAgQ2hlY2tlZExvY2sgbV9hZGFwdGVyTG9jazsKIH07CiAKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9XZWJLaXRXZWJB
dWRpb1NvdXJjZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9n
c3RyZWFtZXIvV2ViS2l0V2ViQXVkaW9Tb3VyY2VHU3RyZWFtZXIuY3BwCmluZGV4IGZkMzQ0ZjAy
NWZhZTI5YzRkNzQ5OTE1M2Q4YjY0MjhiNTgyZjhjMjkuLjZlZjgzNTI4M2ZmMzUzYThmZTEyMjdi
MDcwYTFkZGQ1NmQ0YTNmOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL2dzdHJlYW1lci9XZWJLaXRXZWJBdWRpb1NvdXJjZUdTdHJlYW1lci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL1dlYktpdFdlYkF1ZGlvU291cmNl
R1N0cmVhbWVyLmNwcApAQCAtODEsOCArODEsOCBAQCBzdHJ1Y3QgX1dlYktpdFdlYkF1ZGlvU3Jj
UHJpdmF0ZSB7CiAKICAgICBib29sIGhhc1JlbmRlcmVkQXVkaWJsZUZyYW1lIHsgZmFsc2UgfTsK
IAotICAgIExvY2sgZGlzcGF0Y2hUb1JlbmRlclRocmVhZExvY2s7Ci0gICAgRnVuY3Rpb248dm9p
ZChGdW5jdGlvbjx2b2lkKCk+JiYpPiBkaXNwYXRjaFRvUmVuZGVyVGhyZWFkRnVuY3Rpb247Cisg
ICAgQ2hlY2tlZExvY2sgZGlzcGF0Y2hUb1JlbmRlclRocmVhZExvY2s7CisgICAgRnVuY3Rpb248
dm9pZChGdW5jdGlvbjx2b2lkKCk+JiYpPiBkaXNwYXRjaFRvUmVuZGVyVGhyZWFkRnVuY3Rpb24g
V1RGX0dVQVJERURfQllfTE9DSyhkaXNwYXRjaFRvUmVuZGVyVGhyZWFkTG9jayk7CiAKICAgICBi
b29sIGRpc3BhdGNoRG9uZSBXVEZfR1VBUkRFRF9CWV9MT0NLKGRpc3BhdGNoTG9jayk7CiAgICAg
Q2hlY2tlZExvY2sgZGlzcGF0Y2hMb2NrOwpAQCAtNDA4LDEwICs0MDgsMTEgQEAgc3RhdGljIHZv
aWQgd2ViS2l0V2ViQXVkaW9TcmNSZW5kZXJJdGVyYXRpb24oV2ViS2l0V2ViQXVkaW9TcmMqIHNy
YykKICAgICAgICAgcHJpdi0+ZGlzcGF0Y2hEb25lID0gZmFsc2U7CiAgICAgfQogCi0gICAgYXV0
byBsb2NrZXIgPSB0cnlIb2xkTG9jayhwcml2LT5kaXNwYXRjaFRvUmVuZGVyVGhyZWFkTG9jayk7
Ci0gICAgaWYgKCFsb2NrZXIpCisgICAgaWYgKCFwcml2LT5kaXNwYXRjaFRvUmVuZGVyVGhyZWFk
TG9jay50cnlMb2NrKCkpCiAgICAgICAgIHJldHVybjsKIAorICAgIExvY2tlciBsb2NrZXIgeyBB
ZG9wdExvY2tUYWcgeyB9LCBwcml2LT5kaXNwYXRjaFRvUmVuZGVyVGhyZWFkTG9jayB9OworCiAg
ICAgaWYgKCFwcml2LT5kaXNwYXRjaFRvUmVuZGVyVGhyZWFkRnVuY3Rpb24pCiAgICAgICAgIHdl
YktpdFdlYkF1ZGlvU3JjUmVuZGVyQW5kUHVzaEZyYW1lcyhHUmVmUHRyPEdzdEVsZW1lbnQ+KEdT
VF9FTEVNRU5UX0NBU1Qoc3JjKSksIFdURk1vdmUoKmNoYW5uZWxCdWZmZXJMaXN0KSk7CiAgICAg
ZWxzZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbkNGLmNwcAppbmRleCA0MzY5Njg4ZTE5YTQyN2VjOGFlNGY2MWQ1MDI3
YWU3M2IyZTRmYWYxLi44NTM0YjFmMGQ1NDBjODYzMTNlOTk1ZjAxZGM3Nzg5NWYwZGRmM2U2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
Y2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25DRi5jcHAKQEAgLTE2Nyw5ICsxNjcsOSBAQCBwdWJsaWM6CiBwcml2YXRlOgog
ICAgIGlubGluZSB2b2lkKiBjYWxsYmFja0NvbnRleHQoKSBjb25zdCB7IHJldHVybiByZWludGVy
cHJldF9jYXN0PHZvaWQqPihtX29iamVjdElEKTsgfQogCi0gICAgc3RhdGljIExvY2smIG1hcExv
Y2soKTsKLSAgICBzdGF0aWMgSGFzaE1hcDx1aW50cHRyX3QsIEFWRldyYXBwZXIqPiYgbWFwKCk7
Ci0gICAgc3RhdGljIEFWRldyYXBwZXIqIGF2ZldyYXBwZXJGb3JDYWxsYmFja0NvbnRleHQodm9p
ZCopOworICAgIHN0YXRpYyBDaGVja2VkTG9jayBtYXBMb2NrOworICAgIHN0YXRpYyBIYXNoTWFw
PHVpbnRwdHJfdCwgQVZGV3JhcHBlcio+JiBtYXAoKSBXVEZfUkVRVUlSRVNfTE9DSyhtYXBMb2Nr
KTsKKyAgICBzdGF0aWMgQVZGV3JhcHBlciogYXZmV3JhcHBlckZvckNhbGxiYWNrQ29udGV4dCh2
b2lkKikgV1RGX1JFUVVJUkVTX0xPQ0sobWFwTG9jayk7CiAgICAgdm9pZCBhZGRUb01hcCgpOwog
ICAgIHZvaWQgcmVtb3ZlRnJvbU1hcCgpIGNvbnN0OwogI2lmIEhBVkUoQVZGT1VOREFUSU9OX0xP
QURFUl9ERUxFR0FURSkKQEAgLTE0MTYsMTIgKzE0MTYsNyBAQCBBVkZXcmFwcGVyOjp+QVZGV3Jh
cHBlcigpCiAgICAgbV9hdlBsYXllciA9IDA7CiB9CiAKLUxvY2smIEFWRldyYXBwZXI6Om1hcExv
Y2soKQotewotICAgIHN0YXRpYyBMb2NrIG1hcExvY2s7Ci0gICAgcmV0dXJuIG1hcExvY2s7Ci19
Ci0KK0NoZWNrZWRMb2NrIEFWRldyYXBwZXI6Om1hcExvY2s7CiBIYXNoTWFwPHVpbnRwdHJfdCwg
QVZGV3JhcHBlcio+JiBBVkZXcmFwcGVyOjptYXAoKQogewogICAgIHN0YXRpYyBIYXNoTWFwPHVp
bnRwdHJfdCwgQVZGV3JhcHBlcio+JiBtYXAgPSAqbmV3IEhhc2hNYXA8dWludHB0cl90LCBBVkZX
cmFwcGVyKj47CkBAIC0xNDMwLDcgKzE0MjUsNyBAQCBIYXNoTWFwPHVpbnRwdHJfdCwgQVZGV3Jh
cHBlcio+JiBBVkZXcmFwcGVyOjptYXAoKQogCiB2b2lkIEFWRldyYXBwZXI6OmFkZFRvTWFwKCkK
IHsKLSAgICBMb2NrZXIgbG9ja2VyIHsgbWFwTG9jaygpIH07CisgICAgTG9ja2VyIGxvY2tlciB7
IG1hcExvY2sgfTsKICAgICAKICAgICAvLyBIYXNoTWFwIGRvZXNuJ3QgbGlrZSBhIGtleSBvZiAw
LCBhbmQgYWxzbyBtYWtlIHN1cmUgd2UgYXJlbid0CiAgICAgLy8gdXNpbmcgYW4gb2JqZWN0IElE
IHRoYXQncyBhbHJlYWR5IGluIHVzZS4KQEAgLTE0NDYsMTMgKzE0NDEsMTMgQEAgdm9pZCBBVkZX
cmFwcGVyOjpyZW1vdmVGcm9tTWFwKCkgY29uc3QKIHsKICAgICBMT0coTWVkaWEsICJBVkZXcmFw
cGVyOjpyZW1vdmVGcm9tTWFwKCVwICVkKSIsIHRoaXMsIG1fb2JqZWN0SUQpOwogCi0gICAgTG9j
a2VyIGxvY2tlciB7IG1hcExvY2soKSB9OworICAgIExvY2tlciBsb2NrZXIgeyBtYXBMb2NrIH07
CiAgICAgbWFwKCkucmVtb3ZlKG1fb2JqZWN0SUQpOwogfQogCiBBVkZXcmFwcGVyKiBBVkZXcmFw
cGVyOjphdmZXcmFwcGVyRm9yQ2FsbGJhY2tDb250ZXh0KHZvaWQqIGNvbnRleHQpCiB7Ci0gICAg
Ly8gQXNzdW1lcyBjYWxsZXIgaGFzIGxvY2tlZCBtYXBMb2NrKCkuCisgICAgLy8gQXNzdW1lcyBj
YWxsZXIgaGFzIGxvY2tlZCBtYXBMb2NrLgogICAgIEhhc2hNYXA8dWludHB0cl90LCBBVkZXcmFw
cGVyKj46Oml0ZXJhdG9yIGl0ID0gbWFwKCkuZmluZChyZWludGVycHJldF9jYXN0PHVpbnRwdHJf
dD4oY29udGV4dCkpOwogICAgIGlmIChpdCA9PSBtYXAoKS5lbmQoKSkKICAgICAgICAgcmV0dXJu
IDA7CkBAIC0xNjUwLDcgKzE2NDUsNyBAQCB2b2lkIEFWRldyYXBwZXI6OmNyZWF0ZVBsYXllckl0
ZW0oKQogCiB2b2lkIEFWRldyYXBwZXI6OnBlcmlvZGljVGltZU9ic2VydmVyQ2FsbGJhY2soQVZD
RlBsYXllclJlZiwgQ01UaW1lIGNtVGltZSwgdm9pZCogY29udGV4dCkKIHsKLSAgICBMb2NrZXIg
bG9ja2VyIHsgbWFwTG9jaygpIH07CisgICAgTG9ja2VyIGxvY2tlciB7IG1hcExvY2sgfTsKICAg
ICBBVkZXcmFwcGVyKiBzZWxmID0gYXZmV3JhcHBlckZvckNhbGxiYWNrQ29udGV4dChjb250ZXh0
KTsKICAgICBpZiAoIXNlbGYpIHsKICAgICAgICAgTE9HKE1lZGlhLCAiQVZGV3JhcHBlcjo6cGVy
aW9kaWNUaW1lT2JzZXJ2ZXJDYWxsYmFjayBpbnZva2VkIGZvciBkZWxldGVkIEFWRldyYXBwZXIg
JWQiLCByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oY29udGV4dCkpOwpAQCAtMTY4Miw3ICsx
Njc3LDcgQEAgdm9pZCBBVkZXcmFwcGVyOjpwcm9jZXNzTm90aWZpY2F0aW9uKHZvaWQqIGNvbnRl
eHQpCiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Tm90aWZpY2F0aW9uQ2FsbGJhY2tEYXRhPiBub3Rp
ZmljYXRpb25EYXRhIHsgc3RhdGljX2Nhc3Q8Tm90aWZpY2F0aW9uQ2FsbGJhY2tEYXRhKj4oY29u
dGV4dCkgfTsKIAotICAgIExvY2tlciBsb2NrZXIgeyBtYXBMb2NrKCkgfTsKKyAgICBMb2NrZXIg
bG9ja2VyIHsgbWFwTG9jayB9OwogICAgIEFWRldyYXBwZXIqIHNlbGYgPSBhdmZXcmFwcGVyRm9y
Q2FsbGJhY2tDb250ZXh0KG5vdGlmaWNhdGlvbkRhdGEtPm1fY29udGV4dCk7CiAgICAgaWYgKCFz
ZWxmKSB7CiAgICAgICAgIExPRyhNZWRpYSwgIkFWRldyYXBwZXI6OnByb2Nlc3NOb3RpZmljYXRp
b24gaW52b2tlZCBmb3IgZGVsZXRlZCBBVkZXcmFwcGVyICVkIiwgcmVpbnRlcnByZXRfY2FzdDx1
aW50cHRyX3Q+KGNvbnRleHQpKTsKQEAgLTE3MzcsNyArMTczMiw3IEBAIHZvaWQgQVZGV3JhcHBl
cjo6bm90aWZpY2F0aW9uQ2FsbGJhY2soQ0ZOb3RpZmljYXRpb25DZW50ZXJSZWYsIHZvaWQqIG9i
c2VydmVyLCBDCiAKIHZvaWQgQVZGV3JhcHBlcjo6bG9hZFBsYXlhYmxlQ29tcGxldGlvbkNhbGxi
YWNrKEFWQ0ZBc3NldFJlZiwgdm9pZCogY29udGV4dCkKIHsKLSAgICBMb2NrZXIgbG9ja2VyIHsg
bWFwTG9jaygpIH07CisgICAgTG9ja2VyIGxvY2tlciB7IG1hcExvY2sgfTsKICAgICBBVkZXcmFw
cGVyKiBzZWxmID0gYXZmV3JhcHBlckZvckNhbGxiYWNrQ29udGV4dChjb250ZXh0KTsKICAgICBp
ZiAoIXNlbGYpIHsKICAgICAgICAgTE9HKE1lZGlhLCAiQVZGV3JhcHBlcjo6bG9hZFBsYXlhYmxl
Q29tcGxldGlvbkNhbGxiYWNrIGludm9rZWQgZm9yIGRlbGV0ZWQgQVZGV3JhcHBlciAlZCIsIHJl
aW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pihjb250ZXh0KSk7CkBAIC0xNzY0LDcgKzE3NTksNyBA
QCB2b2lkIEFWRldyYXBwZXI6OmNoZWNrUGxheWFiaWxpdHkoKQogCiB2b2lkIEFWRldyYXBwZXI6
OmxvYWRNZXRhZGF0YUNvbXBsZXRpb25DYWxsYmFjayhBVkNGQXNzZXRSZWYsIHZvaWQqIGNvbnRl
eHQpCiB7Ci0gICAgTG9ja2VyIGxvY2tlciB7IG1hcExvY2soKSB9OworICAgIExvY2tlciBsb2Nr
ZXIgeyBtYXBMb2NrIH07CiAgICAgQVZGV3JhcHBlciogc2VsZiA9IGF2ZldyYXBwZXJGb3JDYWxs
YmFja0NvbnRleHQoY29udGV4dCk7CiAgICAgaWYgKCFzZWxmKSB7CiAgICAgICAgIExPRyhNZWRp
YSwgIkFWRldyYXBwZXI6OmxvYWRNZXRhZGF0YUNvbXBsZXRpb25DYWxsYmFjayBpbnZva2VkIGZv
ciBkZWxldGVkIEFWRldyYXBwZXIgJWQiLCByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oY29u
dGV4dCkpOwpAQCAtMTc4NCw3ICsxNzc5LDcgQEAgdm9pZCBBVkZXcmFwcGVyOjpiZWdpbkxvYWRp
bmdNZXRhZGF0YSgpCiAKIHZvaWQgQVZGV3JhcHBlcjo6c2Vla0NvbXBsZXRlZENhbGxiYWNrKEFW
Q0ZQbGF5ZXJJdGVtUmVmLCBCb29sZWFuIGZpbmlzaGVkLCB2b2lkKiBjb250ZXh0KQogewotICAg
IExvY2tlciBsb2NrZXIgeyBtYXBMb2NrKCkgfTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbWFwTG9j
ayB9OwogICAgIEFWRldyYXBwZXIqIHNlbGYgPSBhdmZXcmFwcGVyRm9yQ2FsbGJhY2tDb250ZXh0
KGNvbnRleHQpOwogICAgIGlmICghc2VsZikgewogICAgICAgICBMT0coTWVkaWEsICJBVkZXcmFw
cGVyOjpzZWVrQ29tcGxldGVkQ2FsbGJhY2sgaW52b2tlZCBmb3IgZGVsZXRlZCBBVkZXcmFwcGVy
ICVkIiwgcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGNvbnRleHQpKTsKQEAgLTE4MjgsNyAr
MTgyMyw3IEBAIHZvaWQgQVZGV3JhcHBlcjo6cHJvY2Vzc0N1ZSh2b2lkKiBjb250ZXh0KQogCiAg
ICAgc3RkOjp1bmlxdWVfcHRyPExlZ2libGVPdXRwdXREYXRhPiBsZWdpYmxlT3V0cHV0RGF0YShy
ZWludGVycHJldF9jYXN0PExlZ2libGVPdXRwdXREYXRhKj4oY29udGV4dCkpOwogCi0gICAgTG9j
a2VyIGxvY2tlciB7IG1hcExvY2soKSB9OworICAgIExvY2tlciBsb2NrZXIgeyBtYXBMb2NrIH07
CiAgICAgQVZGV3JhcHBlciogc2VsZiA9IGF2ZldyYXBwZXJGb3JDYWxsYmFja0NvbnRleHQobGVn
aWJsZU91dHB1dERhdGEtPm1fY29udGV4dCk7CiAgICAgaWYgKCFzZWxmKSB7CiAgICAgICAgIExP
RyhNZWRpYSwgIkFWRldyYXBwZXI6OnByb2Nlc3NDdWUgaW52b2tlZCBmb3IgZGVsZXRlZCBBVkZX
cmFwcGVyICVkIiwgcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGNvbnRleHQpKTsKQEAgLTE4
NDQsNyArMTgzOSw3IEBAIHZvaWQgQVZGV3JhcHBlcjo6cHJvY2Vzc0N1ZSh2b2lkKiBjb250ZXh0
KQogdm9pZCBBVkZXcmFwcGVyOjpsZWdpYmxlT3V0cHV0Q2FsbGJhY2sodm9pZCogY29udGV4dCwg
QVZDRlBsYXllckl0ZW1MZWdpYmxlT3V0cHV0UmVmIGxlZ2libGVPdXRwdXQsIENGQXJyYXlSZWYg
YXR0cmlidXRlZFN0cmluZ3MsIENGQXJyYXlSZWYgbmF0aXZlU2FtcGxlQnVmZmVycywgQ01UaW1l
IGl0ZW1UaW1lKQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwotICAgIExvY2tlciBs
b2NrZXIgeyBtYXBMb2NrKCkgfTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbWFwTG9jayB9OwogICAg
IEFWRldyYXBwZXIqIHNlbGYgPSBhdmZXcmFwcGVyRm9yQ2FsbGJhY2tDb250ZXh0KGNvbnRleHQp
OwogICAgIGlmICghc2VsZikgewogICAgICAgICBMT0coTWVkaWEsICJBVkZXcmFwcGVyOjpsZWdp
YmxlT3V0cHV0Q2FsbGJhY2sgaW52b2tlZCBmb3IgZGVsZXRlZCBBVkZXcmFwcGVyICVkIiwgcmVp
bnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGNvbnRleHQpKTsKQEAgLTE4ODMsNyArMTg3OCw3IEBA
IHZvaWQgQVZGV3JhcHBlcjo6cHJvY2Vzc1Nob3VsZFdhaXRGb3JMb2FkaW5nT2ZSZXNvdXJjZSh2
b2lkKiBjb250ZXh0KQogCiAgICAgc3RkOjp1bmlxdWVfcHRyPExvYWRSZXF1ZXN0RGF0YT4gbG9h
ZFJlcXVlc3REYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8TG9hZFJlcXVlc3REYXRhKj4oY29udGV4dCkp
OwogCi0gICAgTG9ja2VyIGxvY2tlciB7IG1hcExvY2soKSB9OworICAgIExvY2tlciBsb2NrZXIg
eyBtYXBMb2NrIH07CiAgICAgQVZGV3JhcHBlciogc2VsZiA9IGF2ZldyYXBwZXJGb3JDYWxsYmFj
a0NvbnRleHQobG9hZFJlcXVlc3REYXRhLT5tX2NvbnRleHQpOwogICAgIGlmICghc2VsZikgewog
ICAgICAgICBMT0coTWVkaWEsICJBVkZXcmFwcGVyOjpwcm9jZXNzU2hvdWxkV2FpdEZvckxvYWRp
bmdPZlJlc291cmNlIGludm9rZWQgZm9yIGRlbGV0ZWQgQVZGV3JhcHBlciAlZCIsIHJlaW50ZXJw
cmV0X2Nhc3Q8dWludHB0cl90Pihjb250ZXh0KSk7CkBAIC0xOTM4LDcgKzE5MzMsNyBAQCBib29s
IEFWRldyYXBwZXI6OnNob3VsZFdhaXRGb3JMb2FkaW5nT2ZSZXNvdXJjZShBVkNGQXNzZXRSZXNv
dXJjZUxvYWRpbmdSZXF1ZXN0UgogQm9vbGVhbiBBVkZXcmFwcGVyOjpyZXNvdXJjZUxvYWRlclNo
b3VsZFdhaXRGb3JMb2FkaW5nT2ZSZXF1ZXN0ZWRSZXNvdXJjZShBVkNGQXNzZXRSZXNvdXJjZUxv
YWRlclJlZiByZXNvdXJjZUxvYWRlciwgQVZDRkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdFJl
ZiBsb2FkaW5nUmVxdWVzdCwgdm9pZCAqY29udGV4dCkKIHsKICAgICBBU1NFUlQoZGlzcGF0Y2hf
Z2V0X21haW5fcXVldWUoKSAhPSBkaXNwYXRjaF9nZXRfY3VycmVudF9xdWV1ZSgpKTsKLSAgICBM
b2NrZXIgbG9ja2VyIHsgbWFwTG9jaygpIH07CisgICAgTG9ja2VyIGxvY2tlciB7IG1hcExvY2sg
fTsKICAgICBBVkZXcmFwcGVyKiBzZWxmID0gYXZmV3JhcHBlckZvckNhbGxiYWNrQ29udGV4dChj
b250ZXh0KTsKICAgICBpZiAoIXNlbGYpIHsKICAgICAgICAgTE9HKE1lZGlhLCAiQVZGV3JhcHBl
cjo6cmVzb3VyY2VMb2FkZXJTaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVxdWVzdGVkUmVzb3VyY2Ug
aW52b2tlZCBmb3IgZGVsZXRlZCBBVkZXcmFwcGVyICVkIiwgcmVpbnRlcnByZXRfY2FzdDx1aW50
cHRyX3Q+KGNvbnRleHQpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L0Nvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5j
cHAKaW5kZXggNDEwODg2MGU5NmYxOWQ0MjBhNWUzMzQ1YjU4NzU3MTMwZDRlYzY3OC4uMTY1YzQ1
NjA1MjJjZjg5MmQ1YjUxMTRiYzQ5ZTRlODA0NDNiMDE3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHAKQEAgLTEwOCwxMCArMTA4LDEwIEBAIHByaXZhdGU6CiAg
ICAgQmluYXJ5U2VtYXBob3JlIG1fd2FpdEZvclN5bmNSZXBseVNlbWFwaG9yZTsKIAogICAgIC8v
IFByb3RlY3RzIG1fZGlkU2NoZWR1bGVEaXNwYXRjaE1lc3NhZ2VzV29ya1NldCBhbmQgbV9tZXNz
YWdlc1RvRGlzcGF0Y2hXaGlsZVdhaXRpbmdGb3JTeW5jUmVwbHkuCi0gICAgTG9jayBtX211dGV4
OworICAgIENoZWNrZWRMb2NrIG1fbG9jazsKIAogICAgIC8vIFRoZSBzZXQgb2YgY29ubmVjdGlv
bnMgZm9yIHdoaWNoIHdlJ3ZlIHNjaGVkdWxlZCBhIGNhbGwgdG8gZGlzcGF0Y2hNZXNzYWdlQW5k
UmVzZXREaWRTY2hlZHVsZURpc3BhdGNoTWVzc2FnZXNGb3JDb25uZWN0aW9uLgotICAgIEhhc2hT
ZXQ8UmVmUHRyPENvbm5lY3Rpb24+PiBtX2RpZFNjaGVkdWxlRGlzcGF0Y2hNZXNzYWdlc1dvcmtT
ZXQ7CisgICAgSGFzaFNldDxSZWZQdHI8Q29ubmVjdGlvbj4+IG1fZGlkU2NoZWR1bGVEaXNwYXRj
aE1lc3NhZ2VzV29ya1NldCBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fbG9jayk7CiAKICAgICBzdHJ1
Y3QgQ29ubmVjdGlvbkFuZEluY29taW5nTWVzc2FnZSB7CiAgICAgICAgIFJlZjxDb25uZWN0aW9u
PiBjb25uZWN0aW9uOwpAQCAtMTIzLDcgKzEyMyw3IEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAg
ICB9OwogICAgIERlcXVlPENvbm5lY3Rpb25BbmRJbmNvbWluZ01lc3NhZ2U+IG1fbWVzc2FnZXNC
ZWluZ0Rpc3BhdGNoZWQ7IC8vIE9ubHkgdXNlZCBvbiB0aGUgbWFpbiB0aHJlYWQuCi0gICAgRGVx
dWU8Q29ubmVjdGlvbkFuZEluY29taW5nTWVzc2FnZT4gbV9tZXNzYWdlc1RvRGlzcGF0Y2hXaGls
ZVdhaXRpbmdGb3JTeW5jUmVwbHk7CisgICAgRGVxdWU8Q29ubmVjdGlvbkFuZEluY29taW5nTWVz
c2FnZT4gbV9tZXNzYWdlc1RvRGlzcGF0Y2hXaGlsZVdhaXRpbmdGb3JTeW5jUmVwbHkgV1RGX0dV
QVJERURfQllfTE9DSyhtX2xvY2spOwogfTsKIAogQ29ubmVjdGlvbjo6U3luY01lc3NhZ2VTdGF0
ZSYgQ29ubmVjdGlvbjo6U3luY01lc3NhZ2VTdGF0ZTo6c2luZ2xldG9uKCkKQEAgLTE1MSw3ICsx
NTEsNyBAQCB2b2lkIENvbm5lY3Rpb246OlN5bmNNZXNzYWdlU3RhdGU6OmVucXVldWVNYXRjaGlu
Z01lc3NhZ2VzKENvbm5lY3Rpb24mIGNvbm5lY3RpbwogICAgICAgICB9CiAgICAgICAgIGNvbm5l
Y3Rpb25BbmRNZXNzYWdlcyA9IFdURk1vdmUocmVzdCk7CiAgICAgfTsKLSAgICBMb2NrZXIgbG9j
a2VyIHsgbV9tdXRleCB9OworICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKICAgICBlbnF1
ZXVlTWF0Y2hpbmdNZXNzYWdlc0luQ29udGFpbmVyKG1fbWVzc2FnZXNCZWluZ0Rpc3BhdGNoZWQp
OwogICAgIGVucXVldWVNYXRjaGluZ01lc3NhZ2VzSW5Db250YWluZXIobV9tZXNzYWdlc1RvRGlz
cGF0Y2hXaGlsZVdhaXRpbmdGb3JTeW5jUmVwbHkpOwogfQpAQCAtMTcxLDcgKzE3MSw3IEBAIGJv
b2wgQ29ubmVjdGlvbjo6U3luY01lc3NhZ2VTdGF0ZTo6cHJvY2Vzc0luY29taW5nTWVzc2FnZShD
b25uZWN0aW9uJiBjb25uZWN0aW9uCiAKICAgICBib29sIHNob3VsZERpc3BhdGNoOwogICAgIHsK
LSAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbXV0ZXggfTsKKyAgICAgICAgTG9ja2VyIGxvY2tl
ciB7IG1fbG9jayB9OwogICAgICAgICBzaG91bGREaXNwYXRjaCA9IG1fZGlkU2NoZWR1bGVEaXNw
YXRjaE1lc3NhZ2VzV29ya1NldC5hZGQoJmNvbm5lY3Rpb24pLmlzTmV3RW50cnk7CiAgICAgICAg
IEFTU0VSVChjb25uZWN0aW9uLm1faW5jb21pbmdNZXNzYWdlc0xvY2suaXNIZWxkKCkpOwogICAg
ICAgICBpZiAobWVzc2FnZS0+c2hvdWxkTWFpbnRhaW5PcmRlcmluZ1dpdGhBc3luY01lc3NhZ2Vz
KCkpIHsKQEAgLTE5OCw3ICsxOTgsNyBAQCB2b2lkIENvbm5lY3Rpb246OlN5bmNNZXNzYWdlU3Rh
dGU6OmRpc3BhdGNoTWVzc2FnZXMoRnVuY3Rpb248dm9pZChNZXNzYWdlTmFtZSwgdQogICAgIEFT
U0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKICAgICB7Ci0gICAgICAgIExvY2tlciBsb2NrZXIg
eyBtX211dGV4IH07CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKICAgICAgICAg
aWYgKG1fbWVzc2FnZXNCZWluZ0Rpc3BhdGNoZWQuaXNFbXB0eSgpKQogICAgICAgICAgICAgbV9t
ZXNzYWdlc0JlaW5nRGlzcGF0Y2hlZCA9IHN0ZDo6ZXhjaGFuZ2UobV9tZXNzYWdlc1RvRGlzcGF0
Y2hXaGlsZVdhaXRpbmdGb3JTeW5jUmVwbHksIHsgfSk7CiAgICAgICAgIGVsc2UgewpAQCAtMjIw
LDcgKzIyMCw3IEBAIHZvaWQgQ29ubmVjdGlvbjo6U3luY01lc3NhZ2VTdGF0ZTo6ZGlzcGF0Y2hN
ZXNzYWdlc0FuZFJlc2V0RGlkU2NoZWR1bGVEaXNwYXRjaE1lCiAgICAgQVNTRVJUKFJ1bkxvb3A6
OmlzTWFpbigpKTsKIAogICAgIHsKLSAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbXV0ZXggfTsK
KyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogICAgICAgICBBU1NFUlQobV9kaWRT
Y2hlZHVsZURpc3BhdGNoTWVzc2FnZXNXb3JrU2V0LmNvbnRhaW5zKCZjb25uZWN0aW9uKSk7CiAg
ICAgICAgIG1fZGlkU2NoZWR1bGVEaXNwYXRjaE1lc3NhZ2VzV29ya1NldC5yZW1vdmUoJmNvbm5l
Y3Rpb24pOwogICAgICAgICBBU1NFUlQobV9tZXNzYWdlc0JlaW5nRGlzcGF0Y2hlZC5pc0VtcHR5
KCkpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>